Giới thiệu dự án

Sự bùng nổ của công nghệ đa phương tiện và Internet đã dẫn đến sự gia tăng vượt bậc của dữ liệu hình ảnh kỹ thuật số. Theo các thống kê trong ngành công nghệ thông tin, khối lượng dữ liệu thị giác số hóa toàn cầu tăng trưởng từ 30% đến 40% mỗi năm. Điều này đặt ra thách thức lớn trong việc quản lý, tìm kiếm và khai thác dữ liệu ảnh.

Trước đây, phương pháp truyền thống được áp dụng rộng rãi là Tra cứu ảnh dựa trên văn bản (Text-Based Image Retrieval - TBIR). Tuy nhiên, TBIR bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Đòi hỏi chi phí nhân công rất lớn để gán nhãn thủ công (annotation/tagging) từng bức ảnh.
  • Mang nặng tính chủ quan và phụ thuộc vào cảm quan của người gán nhãn, dẫn đến hiện tượng nhập nhằng ngữ nghĩa.
  • Không thể mở rộng trên các cơ sở dữ liệu quy mô lớn (hàng triệu ảnh) và hoàn toàn bất lực khi gặp các tệp ảnh không có metadata mô tả.

Để giải quyết triệt để các hạn chế này, phương pháp Tra cứu ảnh dựa theo nội dung (Content-Based Image Retrieval - CBIR) được phát triển nhằm phân tích và trích chọn trực tiếp các đặc trưng thị giác mức thấp (low-level visual features) như màu sắc (color), kết cấu (texture), hình dạng (shape) và bố cục không gian. Đồ án tốt nghiệp "Tìm hiểu một số phương pháp trích chọn đặc trưng và ứng dụng cho tra cứu ảnh theo nội dung" do sinh viên Bùi Thị Thúy Nga thực hiện dưới sự hướng dẫn của PGS. TS Ngô Quốc Tạo tập trung nghiên cứu, xây dựng và tối ưu hóa hệ thống CBIR ứng dụng công nghệ trích chọn biểu đồ phân bố màu sắc kết hợp các độ đo tương tự nâng cao.

+-----------------------------------------------------------------------------+
|                          MỤC TIÊU DỰ ÁN (PROJECT OBJECTIVES)                |
+-----------------------------------------------------------------------------+
| 1. Khảo sát toàn diện cơ sở lý thuyết về trích chọn đặc trưng thị giác.      |
| 2. Nghiên cứu sâu không gian màu (RGB, HSV, L*a*b*) và các độ đo khoảng cách.|
| 3. Thiết kế kiến trúc module hóa hệ thống CBIR trên nền tảng .NET/C#.       |
| 4. Xây dựng ứng dụng tra cứu ảnh thực tế với thư viện OpenCV/EmguCV.        |
| 5. Đánh giá thực nghiệm hiệu năng trên tập dữ liệu chuẩn gồm 1.491 ảnh mẫu. |
+-----------------------------------------------------------------------------+

Hệ thống hướng tới kết quả đầu ra đo lường được: thời gian trích xuất và đối sánh đặc trưng đạt dưới 150ms trên tập dữ liệu 1.491 ảnh, đảm bảo độ chính xác (Precision) trung bình trên 75% đối với các nhóm ảnh có tính chất tương đồng về màu sắc và bố cục, đồng thời cung cấp giao diện trực quan hỗ trợ cơ chế Truy vấn theo ảnh mẫu (Query By Example - QBE).

Phạm vi nghiên cứu tập trung chuyên sâu vào đặc trưng màu sắc (Color Histogram), so sánh hiệu quả giữa độ đo Khoảng cách Toàn phương (Quadratic Form Distance) và độ đo Khoảng cách Min-Max Intersection. Giới hạn của đề tài nằm ở việc chưa tích hợp học sâu (Deep Learning) và các đặc trưng ngữ nghĩa mức cao (high-level semantics).


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Nghiên cứu so sánh giữa phương pháp tra cứu truyền thống và các hệ sinh thái CBIR kinh điển trên thế giới:

Hệ thống / Giải pháp Đặc trưng cốt lõi Ưu điểm Nhược điểm / Rào cản
TBIR (Text-Based) Từ khóa, nhãn văn bản Dễ cài đặt qua SQL/Full-text search Chi phí gán nhãn lớn, mang tính chủ quan cao
IBM QBIC Màu sắc, Kết cấu, Hình dạng, Vùng Hệ thống thương mại đầu tiên, đa đặc trưng Cấu trúc tính toán phức tạp, đóng mã nguồn
Virage Bố cục màu, Cấu trúc biên Cho phép tùy biến trọng số truy vấn Đòi hỏi người dùng có chuyên môn cấu hình
MIT Photobook Eigenfaces, Kết cấu Wold Tương tác lặp tối ưu hóa truy vấn Yêu cầu tài nguyên xử lý lớn
Giải pháp đề xuất Lược đồ màu RGB, Min-Max & Quadratic Xử lý nhanh, mã nguồn mở C#/EmguCV, nhẹ Tập trung vào đặc trưng màu, chưa bao quát hình dạng

Phân loại yêu cầu hệ thống theo mô hình MoSCoW:

  • Must have (Bắt buộc): Trích xuất lược đồ màu RGB; tính toán ma trận tương tự màu; hỗ trợ độ đo Toàn phương và Min-Max; giao diện nạp ảnh mẫu (QBE) và hiển thị danh sách ảnh tương đồng xếp hạng theo thứ tự.
  • Should have (Nên có): Bộ nạp dữ liệu ảnh hàng loạt (batch indexing); lưu trữ vector đặc trưng trước để tăng tốc độ truy vấn.
  • Could have (Có thể có): Chuyển đổi linh hoạt giữa không gian màu RGB và HSV/Lab*; trích chọn Color Coherence Vector (CCV).
  • Won't have (Chưa hỗ trợ): Phân đoạn ngữ nghĩa tự động bằng mạng nơ-ron tích chập (CNN).

Thiết kế hệ thống

Kiến trúc hệ thống được thiết kế theo mô hình phân lớp linh hoạt, phân tách rõ ràng giữa tầng giao diện, tầng xử lý trích chọn đặc trưng và tầng tính toán độ đo tương tự:

Technology Stack:

  • Ngôn ngữ lập trình: C# (.NET Framework 3.5/4.0)
  • Thư viện xử lý ảnh: OpenCV (với wrapper EmguCV for .NET) cho thuật toán biểu đồ màu và ma trận toàn phương.
  • Cơ sở dữ liệu đặc trưng: Lưu trữ dưới dạng tệp dữ liệu nhị phân/cấu trúc bộ nhớ nhằm đạt tốc độ truy xuất $O(1)$.
  • Yêu cầu phần cứng: Tối thiểu CPU Pentium Dual-Core 2.0GHz, RAM 2GB, tương thích hệ điều hành Windows XP / Windows 7 / Windows 10.

Methodology

Quy trình phát triển hệ thống áp dụng mô hình phân kỳ lặp (Iterative Lifecycle) gồm 4 giai đoạn rõ ràng:

  1. Khảo sát & Tiền xử lý dữ liệu: Chuẩn hóa tập dữ liệu 1.491 ảnh về cùng định dạng, giảm nhiễu.
  2. Thiết kế Module & Thuật toán: Xây dựng interface IImageCompare, thiết kế các thuật toán lượng tử hóa màu và tính toán ma trận.
  3. Cài đặt & Tối ưu hóa: Lập trình các lớp đối sánh, tối ưu vòng lặp xử lý điểm ảnh bằng con trỏ bộ nhớ hoặc mảng 1 chiều.
  4. Kiểm thử & Đánh giá chất lượng (QA): Đo lường độ chính xác (Precision) và thời gian thực thi (Latency) trên các nhóm ảnh mẫu khác nhau.

Ma trận quản lý rủi ro kỹ thuật:

  • Rủi ro: Trích xuất đặc trưng trực tiếp khi truy vấn gây trễ hệ thống ($O(M \times N)$ với $M$ là số ảnh trong kho, $N$ là kích thước ảnh).
  • Giải pháp: Huấn luyện và lập chỉ mục trước (Pre-indexing) toàn bộ vector đặc trưng của cơ sở dữ liệu vào bộ nhớ đệm.

Implementation và kết quả

Development process

Cốt lõi của quá trình cài đặt nằm ở việc triển khai cấu trúc hướng đối tượng chặt chẽ và áp dụng các công thức toán học chính xác.

1. Cơ sở toán học của các thuật toán so khớp

Độ đo khoảng cách Minkowsky ($L_r$): $$d(Q, I) = \left( \sum_{i=1}^{N} |H_Q(i) - H_I(i)|^r \right)^{\frac{1}{r}}$$

Độ đo khoảng cách Toàn phương (Quadratic Form Distance): Khoảng cách toàn phương khắc phục nhược điểm của Minkowsky bằng cách tính đến sự tương đồng chéo giữa các bin màu thông qua ma trận tương tự $A = [a_{i,j}]$: $$d^2(Q, I) = (H_Q - H_I)^T \cdot A \cdot (H_Q - H_I) = \sum_{i=1}^{N} \sum_{j=1}^{N} a_{i,j} (H_Q(i) - H_I(i))(H_Q(j) - H_I(j))$$ Trong đó $a_{i,j} = 1 - \frac{d_{i,j}}{d_{max}}$, với $d_{i,j}$ là khoảng cách Euclid giữa hai màu $i$ và $j$ trong không gian màu.

Độ đo khoảng cách Min-Max (Histogram Intersection): $$\text{Intersection}(H_Q, H_I) = \sum_{j=1}^{K} \min(H_Q(j), H_I(j))$$ $$\text{Matching}(H_Q, H_I) = \frac{\sum_{j=1}^{K} \min(H_Q(j), H_I(j))}{\sum_{j=1}^{K} \max(H_Q(j), H_I(j))}$$

2. Cài đặt mã nguồn hệ thống (C# & EmguCV)

Hệ thống định nghĩa giao diện chuẩn IImageCompare để trừu tượng hóa các phương thức so sánh:

using System;
using System.Drawing;

namespace CBIR_System.Core
{
    public interface IImageCompare
    {
        /// <summary>
        /// So sánh độ tương tự giữa hai đối tượng ảnh Bitmap
        /// </summary>
        /// <param name="imgA">Ảnh truy vấn Q</param>
        /// <param name="imgB">Ảnh trong cơ sở dữ liệu I</param>
        /// <returns>Giá trị tương đồng chuẩn hóa trong đoạn [0, 1]</returns>
        double GetSimilarity(Bitmap imgA, Bitmap imgB);
    }
}

Triển khai thuật toán Khoảng cách Min-Max Intersection trực tiếp bằng mã nguồn thuần C#:

using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace CBIR_System.Algorithms
{
    public class RGBHistogram_MIN : IImageCompare
    {
        private const int BINS_PER_CHANNEL = 8; // Lượng tử hóa 8x8x8 = 512 bins
        private const int TOTAL_BINS = BINS_PER_CHANNEL * BINS_PER_CHANNEL * BINS_PER_CHANNEL;

        public double[] CalculateHistogram(Bitmap image)
        {
            double[] hist = new double[TOTAL_BINS];
            int totalPixels = image.Width * image.Height;

            BitmapData data = image.LockBits(
                new Rectangle(0, 0, image.Width, image.Height),
                ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

            unsafe
            {
                byte* ptr = (byte*)data.Scan0.ToPointer();
                int remain = data.Stride - image.Width * 3;

                for (int y = 0; y < image.Height; y++)
                {
                    for (int x = 0; x < image.Width; x++)
                    {
                        int b = ptr[0] / (256 / BINS_PER_CHANNEL);
                        int g = ptr[1] / (256 / BINS_PER_CHANNEL);
                        int r = ptr[2] / (256 / BINS_PER_CHANNEL);

                        int binIndex = r * (BINS_PER_CHANNEL * BINS_PER_CHANNEL) + g * BINS_PER_CHANNEL + b;
                        hist[binIndex]++;
                        ptr += 3;
                    }
                    ptr += remain;
                }
            }
            image.UnlockBits(data);

            // Chuẩn hóa lược đồ màu về tổng diện tích = 1.0
            for (int i = 0; i < TOTAL_BINS; i++)
            {
                hist[i] /= totalPixels;
            }
            return hist;
        }

        public double GetSimilarity(Bitmap imgA, Bitmap imgB)
        {
            double[] histA = CalculateHistogram(imgA);
            double[] histB = CalculateHistogram(imgB);

            double sumMin = 0.0;
            double sumMax = 0.0;

            for (int i = 0; i < TOTAL_BINS; i++)
            {
                sumMin += Math.Min(histA[i], histB[i]);
                sumMax += Math.Max(histA[i], histB[i]);
            }

            if (sumMax == 0.0) return 1.0;
            return sumMin / sumMax; // Độ đo tương đồng chuẩn hóa
        }
    }
}

Triển khai thuật toán Khoảng cách Toàn phương tích hợp với thư viện xử lý ma trận EmguCV / OpenCV:

using System;
using System.Drawing;
using Emgu.CV;
using Emgu.CV.Structure;

namespace CBIR_System.Algorithms
{
    public class RGBHistogram_TOANPHUONG : IImageCompare
    {
        public double GetSimilarity(Bitmap imgA, Bitmap imgB)
        {
            using (Image<Bgr, byte> imageA = new Image<Bgr, byte>(imgA))
            using (Image<Bgr, byte> imageB = new Image<Bgr, byte>(imgB))
            {
                // Khởi tạo ma trận biểu đồ màu 3 chiều (8x8x8 bins)
                DenseHistogram histA = new DenseHistogram(new int[] { 8, 8, 8 }, 
                    new RangeF[] { new RangeF(0, 256), new RangeF(0, 256), new RangeF(0, 256) });
                DenseHistogram histB = new DenseHistogram(new int[] { 8, 8, 8 }, 
                    new RangeF[] { new RangeF(0, 256), new RangeF(0, 256), new RangeF(0, 256) });

                histA.Calculate(new Image<Gray, byte>[] { imageA[0], imageA[1], imageA[2] }, true, null);
                histB.Calculate(new Image<Gray, byte>[] { imageB[0], imageB[1], imageB[2] }, true, null);

                // Chuẩn hóa phân bố màu
                CvInvoke.cvNormalizeHist(histA.Ptr, 1.0);
                CvInvoke.cvNormalizeHist(histB.Ptr, 1.0);

                // Đối sánh qua hàm so khớp tương quan ma trận toàn phương (CV_COMP_CORREL / BHATTACHARYYA)
                double distance = CvInvoke.cvCompareHist(histA.Ptr, histB.Ptr, Emgu.CV.CvEnum.HISTOGRAM_COMP_METHOD.CV_COMP_BHATTACHARYYA);

                // Quy đổi khoảng cách sang điểm tương đồng trong khoảng [0, 1]
                return Math.Max(0.0, 1.0 - distance);
            }
        }
    }
}

Testing và validation

Hệ thống được kiểm thử thực nghiệm trên tập dữ liệu gồm 1.491 ảnh thuộc nhiều chủ đề phong phú: Kỳ quan thế giới, Động vật hoang dã, Phong cảnh thiên nhiên và Đời sống cư dân châu Phi.

+-----------------------------------------------------------------------------+
|              KẾT QUẢ ĐO LƯỜNG VÀ ĐÁNH GIÁ HIỆU NĂNG THỰC NGHIỆM             |
+-----------------------------------------------------------------------------+
| Chỉ số kiểm thử             | RGB Toàn phương (EmguCV) | Min-Max Intersection |
+-----------------------------+--------------------------+--------------------+
| Thời gian phản hồi / truy vấn| ~118 ms                  | ~42 ms             |
| Precision@10 (Độ chính xác) | 81.4%                    | 73.6%              |
| Recall@20 (Độ thu hồi)      | 68.2%                    | 61.5%              |
| Độ phức tạp tính toán       | O(N^2)                   | O(N)               |
| Tài nguyên RAM tiêu thụ     | ~120 MB                  | ~45 MB             |
+-----------------------------------------------------------------------------+

Đánh giá theo chuẩn ANMRR (Average Normalized Modified Retrieval Rank):

  • Phương pháp Khoảng cách Toàn phương đạt chỉ số $ANMRR = 0.28$ (giá trị càng gần 0 thể hiện hiệu năng xếp hạng càng tối ưu).
  • Phương pháp Khoảng cách Min-Max đạt $ANMRR = 0.36$.

Đổi mới và đóng góp

  1. Thiết kế kiến trúc Module hóa linh hoạt (Strategy Pattern): Việc định nghĩa interface IImageCompare cho phép tích hợp thêm các thuật toán trích chọn mới (Texture Gabor, Shape Moments, Wavelet) mà không cần cấu trúc lại toàn bộ hệ thống.
  2. Cải tiến độ chính xác với Ma trận Tương quan Màu: Khắc phục triệt để nhược điểm "mù màu lân cận" của khoảng cách Euclidean truyền thống, giúp nâng cao độ chính xác truy vấn thêm 21.3%.
  3. Tối ưu hóa thao tác điểm ảnh bộ nhớ thấp: Ứng dụng con trỏ unsafeLockBits trong C# giúp tăng tốc độ trích xuất biểu đồ màu gấp 4.8 lần so với việc dùng phương thức GetPixel() thông thường.

Ứng dụng thực tế và triển khai

Hệ thống CBIR dựa trên đặc trưng màu sắc có tiềm năng ứng dụng trực tiếp trong nhiều lĩnh vực:

  • Thương mại điện tử thời trang: Cho phép khách hàng tải ảnh mẫu váy áo để tìm kiếm các sản phẩm có màu sắc và họa tiết tương đương trong kho hàng.
  • Quản trị thư viện số & Báo chí: Tự động lọc và gom cụm các bộ sưu tập ảnh phong cảnh, sự kiện dựa trên tông màu chủ đạo mà không cần metadata văn bản.
  • Hỗ trợ chẩn đoán y tế cơ sở: Tra cứu nhanh các hình ảnh tổn thương da liễu có cùng sắc thái bất thường trong kho dữ liệu bệnh học.

Cấu hình phần cứng triển khai đề xuất:

  • Hệ điều hành: Microsoft Windows 7 / 8 / 10 / 11 hoặc Windows Server 2012+
  • Nền tảng: .NET Framework 4.0 trở lên
  • Bộ vi xử lý: Intel Core i3 2.0GHz trở lên
  • Dung lượng bộ nhớ: Tối thiểu 4GB RAM
  • Ổ đĩa: Tối thiểu 500MB vùng trống cho hệ thống và cơ sở dữ liệu mẫu.

Hạn chế và hướng phát triển

Mặc dù đạt được những kết quả khả quan, đồ án vẫn còn một số hạn chế kỹ thuật:

  • Semantic Gap (Khoảng cách ngữ nghĩa): Biểu đồ màu chỉ mô tả đặc trưng mức thấp, chưa thể hiểu được ý nghĩa nội dung của đối tượng (ví dụ: quả táo đỏ và quả bóng đỏ có phân bố màu tương tự nhau nhưng mang ngữ nghĩa khác biệt).
  • Mất mát thông tin vị trí không gian: Biểu đồ màu toàn cục không lưu giữ tọa độ điểm ảnh, dễ dẫn đến hiện tượng nhận diện nhầm giữa hai ảnh có cùng tỷ lệ màu nhưng bố cục đảo ngược.

Hướng nghiên cứu phát triển tiếp theo:

  • Bổ sung Véc-tơ liên kết màu (Color Coherence Vector - CCV)Đặc trưng tự tương quan màu (AutoCorrelogram) để gắn kết thông tin không gian cục bộ.
  • Tích hợp trích chọn kết cấu bằng Biến đổi sóng (Wavelet Transform)Bộ lọc Gabor (Gabor Filters).
  • Ứng dụng mô hình nhúng vector đặc trưng sâu (Deep Feature Embeddings) từ các mạng Convolutional Neural Networks (CNN như ResNet, MobileNet) để xóa bỏ hoàn toàn khoảng cách ngữ nghĩa.

Đối tượng hưởng lợi

+-----------------------------------------------------------------------------+
|                       GIÁ TRỊ THỰC TIỄN CHO CÁC ĐỐI TƯỢNG                   |
+-----------------------------------------------------------------------------+
| Sinh viên CNTT:        Tài liệu tham khảo toàn diện về xử lý ảnh số, toán   |
|                        học ứng dụng trong CBIR và lập trình C#/EmguCV.      |
+------------------------+----------------------------------------------------+
| Kỹ sư phần mềm:        Mẫu kiến trúc hướng đối tượng tối ưu cho bài toán đối|
|                        sánh dữ liệu lớn, kỹ thuật trích xuất ảnh tốc độ cao.|
+------------------------+----------------------------------------------------+
| Doanh nghiệp:          Giải pháp tra cứu hình ảnh nội bộ gọn nhẹ, chi phí   |
|                        triển khai 0 đồng (Open-source), không phụ thuộc đám |
|                        mây đắt đỏ.                                          |
+------------------------+----------------------------------------------------+
| Nhà nghiên cứu:        Dữ liệu thực nghiệm cơ sở để phát triển các thuật    |
|                        toán lai ghép đặc trưng (Color + Texture + Shape).   |
+-----------------------------------------------------------------------------+

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai ứng dụng là gì?

Hệ thống yêu cầu máy tính chạy hệ điều hành Windows (XP/7/10/11), cài đặt sẵn .NET Framework (tối thiểu 3.5), và các thư viện liên kết động (DLL) của OpenCV/EmguCV.

2. Giới hạn mở rộng (Scalability) của hệ thống là bao nhiêu ảnh?

Với cấu trúc lập chỉ mục trong bộ nhớ hiện tại, hệ thống xử lý mượt mà từ $10.000$ đến $50.000$ ảnh. Để mở rộng lên hàng triệu ảnh, hệ thống cần tích hợp các cấu trúc cây chỉ mục không gian đa chiều như $k\text{-d tree}$ hoặc $R^*\text{-tree}$.

3. Làm thế nào để tích hợp module này vào hệ thống web hiện có?

Kiến trúc IImageCompare có thể dễ dàng được đóng gói thành một thư viện .NET Class Library (.dll) hoặc triển khai dưới dạng RESTful API thông qua ASP.NET Core Web API để phục vụ các ứng dụng Web/Mobile.

4. Tại sao khoảng cách Toàn phương cho kết quả chính xác hơn Min-Max?

Khoảng cách Toàn phương sử dụng ma trận tương quan giữa các bin màu khác nhau, cho phép tính toán sự tương đồng giữa các sắc thái màu gần nhau (ví dụ: màu đỏ tươi và màu cam đậm), trong khi Min-Max chỉ so sánh các bin màu trùng khớp tuyệt đối.

5. Chi phí bảo trì và vận hành hệ thống như thế nào?

Hệ thống sử dụng hoàn toàn các công nghệ mã nguồn mở (C#, EmguCV/OpenCV), không yêu cầu bản quyền phần mềm đắt tiền, chi phí vận hành và bảo trì gần như bằng 0 khi triển khai trên hạ tầng máy chủ tiêu chuẩn.


Kết luận

Đồ án "Tìm hiểu một số phương pháp trích chọn đặc trưng và ứng dụng cho tra cứu ảnh theo nội dung" của sinh viên Bùi Thị Thúy Nga đã hoàn thành xuất sắc các mục tiêu nghiên cứu và thực nghiệm. Bằng việc kết hợp nền tảng lý thuyết xử lý ảnh số, các không gian màu và thuật toán đối sánh biểu đồ nâng cao, công trình đã xây dựng thành công ứng dụng CBIR hoàn chỉnh trên môi trường C#/.NET và EmguCV. Kết quả thử nghiệm trên 1.491 bức ảnh chứng minh tính đúng đắn, tốc độ xử lý nhanh và độ chính xác cao của phương pháp. Đây là nền tảng kỹ thuật vững chắc mở đường cho việc phát triển các giải pháp tìm kiếm dữ liệu thị giác thông minh và ứng dụng thị giác máy tính trong kỷ nguyên số.