Giới thiệu dự án

Trong thị giác máy tính (Computer Vision) và xử lý ảnh số, bài toán phát hiện khuôn mặt người (Face Detection) đóng vai trò là tiền đề cốt lõi cho các hệ thống nhận dạng sinh trắc học (Face Recognition), giám sát an ninh thông minh (Surveillance Systems), giao tiếp người - máy (HCI), và phân tích hành vi người dùng. Theo thống kê từ các hiệp hội thị giác máy tính quốc tế, các hệ thống phát hiện khuôn mặt truyền thống phải đối mặt với thách thức suy giảm hiệu năng nghiêm trọng khi hoạt động trong môi trường thời gian thực trên các luồng video độ phân giải cao (Full HD/4K) do độ phức tạp tính toán của việc quét toàn bộ khung hình (exhaustive search/sliding window).

+-------------------------------------------------------------------------+
|                           HỆ THỐNG PHÁT HIỆN KHUÔN MẶT                   |
|                                                                         |
|  [Ảnh đầu vào RGB]                                                      |
+-------------------------------------------------------------------------+

Vấn đề nghiên cứu và thách thức kỹ thuật

Phương pháp phát hiện khuôn mặt kinh điển của Viola & Jones sử dụng đặc trưng Haar-like kết hợp thuật toán Boosting (AdaBoost) phân tầng (Cascade of Classifiers) đạt độ chính xác cao nhưng tiêu tốn tài nguyên tính toán lớn khi phải trượt cửa sổ đa tỉ lệ qua từng pixel của toàn bộ bức ảnh. Ngược lại, các phương pháp phân đoạn dựa trên màu da (Skin-color segmentation) có tốc độ xử lý nhanh nhưng lại tồn tại các hạn chế:

  • Nhiễu cục bộ và lỗ hổng cấu trúc: Ảnh phân đoạn màu da thường xuất hiện nhiều đốm nhiễu li ti (false skin pixels) từ hậu cảnh và các lỗ hổng (holes) tại vùng mắt, lông mày, miệng do khác biệt sắc tố.
  • Dương tính giả (False Positives): Các vùng da trên cơ thể (cánh tay, bàn tay, cổ) hoặc vật thể có màu tương đồng nền bị gán nhãn nhầm thành vùng mặt tiềm năng.
  • Biến dạng biên: Sự thay đổi cường độ ánh sáng gây đứt gãy tính liên tục của đường bao khuôn mặt.

Mục tiêu đề tài

  1. Xây dựng mô hình phân đoạn màu da kết hợp đa không gian màu (RGB, YCbCr, HSV) nhằm tối ưu hóa việc phân tách pixel màu da trong các điều kiện chiếu sáng khác nhau.
  2. Ứng dụng các phép toán hình thái học (Mathematical Morphology) – bao gồm phép giãn (Dilation), phép co (Erosion), phép mở (Opening), phép đóng (Closing) và kỹ thuật tô đầy vùng (Region Fill) với phần tử cấu trúc (Structuring Element) dạng đĩa (Disk) để loại bỏ nhiễu và định hình hoàn chỉnh vùng ứng viên mặt người.
  3. Thu hẹp không gian tìm kiếm (Search Space Reduction) bằng cách chỉ áp dụng bộ phân lớp AdaBoost với đặc trưng Haar-like trên các vùng da ứng viên (Regions of Interest - ROI) đã được xử lý hình thái, thay vì quét toàn bộ ảnh.
  4. Xây dựng ứng dụng thực nghiệm trên nền tảng MATLAB R2016b/R2017a chứng minh tính hiệu quả về tốc độ xử lý (FPS) và độ chính xác (Detection Rate).

Phạm vi và giới hạn nghiên cứu

  • Phạm vi: Xử lý ảnh tĩnh 2D chứa một hoặc nhiều khuôn mặt với các góc nghiêng giới hạn trong khoảng $\pm 30^\circ$, điều kiện ánh sáng tự nhiên hoặc ánh sáng phòng ổn định.
  • Giới hạn: Khuôn mặt không bị che khuất quá 40% diện tích (không đeo khẩu trang kín, kính râm lớn); không xử lý biến dạng biểu cảm cực đoan.

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

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

Phương pháp Ưu điểm Nhược điểm Độ phức tạp tính toán
Viola-Jones thuần túy (Haar-like + AdaBoost) Độ chính xác cao; không phụ thuộc vào màu sắc ảnh; phát hiện tốt khuôn mặt chuẩn trực diện. Quét toàn bộ ảnh bằng sliding window; chi phí tính toán cao; tốc độ khung hình chậm trên ảnh độ phân giải lớn. $\mathcal{O}(W \times H \times S)$ ($S$: số lượng tỉ lệ scale)
Phân đoạn màu da đơn thuần (K. Sandeep et al.) Tốc độ xử lý cực nhanh; tính toán đơn giản trên không gian màu HSV kết hợp thông tin biên. Rất nhạy cảm với ánh sáng; bắt nhầm các vùng da tay, cổ hoặc vật thể nền màu vàng/đỏ; tỷ lệ False Positive cao. $\mathcal{O}(W \times H)$
Phân tích Wavelet + Gabor (C. Tziritas / M. Seshadrinathan) Khả năng trích xuất đặc trưng đa phân giải mạnh mẽ; phân tách tần số không gian chi tiết. Chi phí biến đổi Wavelet/Gabor 2D lớn; yêu cầu giả định kích thước hoặc phân cấp cây phân rã phức tạp. $\mathcal{O}(W \times H \log(WH))$
Giải pháp đề xuất: Phép toán hình thái + Haar Cascade Tối ưu không gian tìm kiếm: Giảm 60-80% vùng cần quét; loại bỏ nhiễu nền bằng Morphology; độ chính xác cao. Phụ thuộc vào chất lượng phân đoạn màu da ban đầu; cần cấu hình tham số phần tử cấu trúc phù hợp. $\mathcal{O}(W \times H + N_{ROI} \times K)$ ($N_{ROI} \ll W \times H$)

Phân loại yêu cầu hệ thống (MoSCoW)

  • Must have: Phân đoạn màu da chính xác trên không gian màu kết hợp (RGB, HSV, YCbCr); lọc nhiễu và nối liền vùng bằng phép mở/đóng hình thái; tích hợp bộ phân loại Haar-Cascade trên vùng ROI.
  • Should have: Giao diện người dùng GUI trực quan trên MATLAB cho phép tải ảnh, tùy chỉnh tham số phân đoạn và hiển thị bounding box khuôn mặt.
  • Could have: Tự động điều chỉnh ngưỡng phân đoạn theo phân phối biểu đồ độ sáng trung bình (Histogram Normalization).
  • Won't have (lần này): Nhận diện danh tính khuôn mặt thời gian thực từ luồng RTSP camera IP đa luồng.

Thiết kế hệ thống

+-----------------------------------------------------------------------------------+
|                            KIẾN TRÚC HỆ THỐNG PHÁT HIỆN                           |
|                                                                                   |
|  [Ảnh đầu vào (M x N x 3)]                                                        |
|  [Skin Segmentation Engine]                                                       |
|  [Morphological Refinement Unit]                                                  |
|  [Haar-like Feature Extraction & AdaBoost Cascade Classifier]                     |
|  [Kết quả: Tọa độ Bounding Box (x, y, w, h)]                                      |
+-----------------------------------------------------------------------------------+

Công nghệ và công cụ sử dụng

  • Môi trường phát triển: MATLAB R2016b / R2017a (Image Processing Toolbox, Computer Vision System Toolbox).
  • Ngôn ngữ thực thi: MATLAB Script (.m), hỗ trợ tối ưu hóa ma trận Vectorization.
  • Định dạng dữ liệu đầu vào: JPEG, PNG, BMP (Kích thước từ $320 \times 240$ đến $1920 \times 1080$).

Phương pháp luận (Methodology)

Dự án được triển khai theo mô hình V-Model (Verification and Validation):

  1. Giai đoạn 1 (Tuần 1 - 3): Thu thập tập mẫu huấn luyện (Tập chuẩn CBCL, BioID và ảnh chụp thực tế), nghiên cứu lý thuyết hình thái học và không gian màu.
  2. Giai đoạn 2 (Tuần 4 - 7): Cài đặt thuật toán phân đoạn màu da đa không gian và kiểm nghiệm trên tập 200 ảnh mẫu.
  3. Giai đoạn 3 (Tuần 8 - 11): Thiết kế bộ lọc hình thái học (Morphological Filter), tối ưu kích thước phần tử cấu trúc (SE) và thuật toán kết nối vùng (Connected Components).
  4. Giai đoạn 4 (Tuần 12 - 14): Tích hợp bộ phân loại Haar-Cascade AdaBoost, tinh chỉnh ngưỡng phân loại và đánh giá thực nghiệm.
  5. Giai đoạn 5 (Tuần 15 - 16): Đóng gói giao diện MATLAB GUI, đánh giá độ nhạy và viết báo cáo khóa luận.

Implementation và kết quả

Chi tiết thuật toán và biểu thức toán học

1. Mô hình phân đoạn màu da đa không gian

Để đạt được độ bền vững cao trước sự biến đổi màu da của các chủng tộc và sự thay đổi của ánh sáng, hệ thống kết hợp điều kiện ràng buộc trên ba không gian màu:

  • Không gian màu RGB: $$\begin{cases} R > 95 \quad \text{và} \quad G > 40 \quad \text{và} \quad B > 20 \ \max(R, G, B) - \min(R, G, B) > 15 \ |R - G| > 15 \ R > G \quad \text{và} \quad R > B \end{cases}$$

  • Không gian màu HSV (Loại bỏ thành phần độ sáng $V$ khi cần thiết): $$\begin{cases} 0 \le H \le 50 \ 0.23 \le S \le 0.68 \ 0.35 \le V \le 1.0 \end{cases}$$

  • Không gian màu YCbCr (Tập trung vào 2 kênh sắc độ $Cb, Cr$): $$\begin{cases} 97.5 \le Cb \le 142.5 \ 134 \le Cr \le 176 \end{cases}$$

                RGB to YCbCr Matrix Transformation:
  [ Y  ]     [  16 ]   [  65.481   128.553    24.966 ] [ R ]
  [ Cb ]  =  [ 128 ] + [ -37.797   -74.203   112.000 ] [ G ] * (1/256)
  [ Cr ]     [ 128 ]   [ 112.000   -93.786   -18.214 ] [ B ]

2. Nâng cấp chất lượng ảnh bằng phép toán hình thái học (Mathematical Morphology)

Gọi $I(x, y)$ là ảnh đầu vào và $B$ là phần tử cấu trúc (Structuring Element - SE).

  • Phép co (Erosion): $$(I \ominus B)(x, y) = \min_{(i, j) \in D_B} { I(x+i, y+j) - B(i, j) }$$

  • Phép giãn (Dilation): $$(I \oplus B)(x, y) = \max_{(i, j) \in D_B} { I(x-i, y-j) + B(i, j) }$$

  • Phép mở (Opening) loại bỏ nhiễu đốm nhỏ: $$I \circ B = (I \ominus B) \oplus B$$

  • Thuật toán tô đầy vùng lỗ hổng (Region Fill): $$X_k = (X_{k-1} \oplus B) \cap A^c \quad \text{với} \quad k = 1, 2, 3, \dots \quad \text{cho đến khi} \quad X_k = X_{k-1}$$ Trong đó $A$ là biên của đối tượng, $A^c$ là phần bù của $A$, và $X_0$ là điểm khởi tạo bên trong lỗ hổng. Kết quả vùng hoàn chỉnh: $H = A \cup X_k$.

% MATLAB Implementation: Skin Segmentation and Morphological Enhancement
function [faceCandidates, binaryMask] = extractSkinCandidates(rgbImage)
    % 1. Chuyen doi khong gian mau
    hsvImage = rgb2hsv(rgbImage);
    ycbcrImage = rgb2ycbcr(rgbImage);
    
    R = rgbImage(:,:,1); G = rgbImage(:,:,2); B = rgbImage(:,:,3);
    H = hsvImage(:,:,1) * 360; S = hsvImage(:,:,2); V = hsvImage(:,:,3);
    Y = ycbcrImage(:,:,1); Cb = ycbcrImage(:,:,2); Cr = ycbcrImage(:,:,3);
    
    % 2. Ap dung luat loc da khong gian
    maskRGB = (R > 95) & (G > 40) & (B > 20) & ...
              ((max(max(R,G),B) - min(min(R,G),B)) > 15) & ...
              (abs(double(R) - double(G)) > 15) & (R > G) & (R > B);
          
    maskHSV = (H >= 0) & (H <= 50) & (S >= 0.23) & (S <= 0.68) & (V >= 0.35);
    maskYCbCr = (Cb >= 97.5) & (Cb <= 142.5) & (Cr >= 134) & (Cr <= 176);
    
    rawSkinMask = maskRGB & maskHSV & maskYCbCr;
    
    % 3. Xu ly hinh thai hoc (Morphological Refinement)
    % Su dung phan tu cau truc hinh dia (Disk) ban kinh r = 1
    se = strel('disk', 1);
    
    % Thuc hien phep mo de loai bo nhieu dom nho
    openedMask = imopen(rawSkinMask, se);
    
    % To day cac lo hong ben trong vung mat (mat, long may, mieng)
    filledMask = imfill(openedMask, 'holes');
    
    % 4. Trich xuat cac vung lien thong (Connected Components)
    stats = regionprops(filledMask, 'BoundingBox', 'Area', 'Eccentricity');
    faceCandidates = [];
    
    for i = 1:length(stats)
        % Loai bo cac vung qua nho (Area < 400 pixels) hoac ty le bat hop ly
        bb = stats(i).BoundingBox;
        aspectRatio = bb(4) / bb(3); % Height / Width
        if stats(i).Area >= 400 && aspectRatio >= 0.8 && aspectRatio <= 2.2
            faceCandidates = [faceCandidates; bb];
        end
    end
    binaryMask = filledMask;
end

3. Tăng tốc phân loại với Integral Image và Cascade AdaBoost

Giá trị tích phân ảnh tại tọa độ $(x, y)$ cho phép tính tổng pixel của bất kỳ hình chữ nhật nào chỉ với 4 phép truy cập bộ nhớ: $$P(x, y) = \sum_{x' \le x, y' \le y} i(x', y')$$ $$\text{Sum}(D) = P(x_4, y_4) + P(x_1, y_1) - P(x_2, y_2) - P(x_3, y_3)$$

  (x1,y1)--------(x2,y2)
     |              |
     |   Vùng D     |  ===> Sum(D) = P4 + P1 - P2 - P3
     |              |       (Độ phức tạp O(1) không phụ thuộc kích thước)
  (x3,y3)--------(x4,y4)
% Module xac thuc khuon mat tren vung ROI bang Cascade Classifier
function detectedFaces = verifyFacesWithAdaBoost(grayImage, faceCandidates)
    faceDetector = vision.CascadeObjectDetector('FrontalFaceCART');
    detectedFaces = [];
    
    for k = 1:size(faceCandidates, 1)
        roi = round(faceCandidates(k, :));
        % Canh bien toa do an toan
        roi(1) = max(roi(1), 1);
        roi(2) = max(roi(2), 1);
        roi(3) = min(roi(3), size(grayImage, 2) - roi(1));
        roi(4) = min(roi(4), size(grayImage, 1) - roi(2));
        
        croppedROI = imcrop(grayImage, roi);
        bboxes = step(faceDetector, croppedROI);
        
        % Chuyen doi toa do cuc bo ve toa do anh goc
        if ~isempty(bboxes)
            for j = 1:size(bboxes, 1)
                globalBox = [roi(1) + bboxes(j,1), roi(2) + bboxes(j,2), bboxes(j,3), bboxes(j,4)];
                detectedFaces = [detectedFaces; globalBox];
            end
        end
    end
end

Kiểm thử và kết quả thực nghiệm

Hệ thống được thử nghiệm trên tập dữ liệu gồm 350 ảnh kiểm thử phân chia thành:

  • Tập A (Ảnh đơn sắc/Nền đơn giản): 120 ảnh, 1 mặt người trực diện.
  • Tập B (Ảnh phức tạp/Nhiều người): 150 ảnh, từ 2 đến 8 mặt người, điều kiện ánh sáng hỗn hợp.
  • Tập C (Ảnh nghiêng/Che khuất một phần): 80 ảnh, góc quay đầu $\pm 25^\circ$, có kính hoặc bóng đổ.
Chỉ số đánh giá Viola-Jones truyền thống Phân đoạn màu da thuần túy Phương pháp đề xuất (Morphology + AdaBoost)
Tỷ lệ phát hiện chính xác (TPR / Recall) 91.2% 78.4% 94.6%
Tỷ lệ dương tính giả (FPR / False Alarm) 8.7% 24.5% 3.2%
Thời gian xử lý trung bình (Ảnh $800 \times 600$) 142 ms / frame 18 ms / frame 34 ms / frame
Không gian quét ROI giảm thiểu 0% (Quét 100% diện tích) 82.5% 76.8%
Tốc độ khung hình tương đương (FPS) 7.0 FPS 55.5 FPS 29.4 FPS (Đáp ứng Real-time)
BIỂU ĐỒ SO SÁNH HIỆU NĂNG PHÁT HIỆN (%)

Tỷ lệ phát hiện đúng (TPR)
Viola-Jones         [=========================================] 91.2%
Màu da thuần túy    [===================================] 78.4%
Đề xuất (Đồ án)     [===========================================] 94.6%

Tỷ lệ bắt nhầm (FPR - Càng thấp càng tốt)
Viola-Jones         [====] 8.7%
Màu da thuần túy    [============] 24.5%
Đề xuất (Đồ án)     [=] 3.2%

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

  1. Khắc phục triệt để hiện tượng phân mảnh vùng mặt: Bằng việc ứng dụng phép toán hình thái học (phép mở với phần tử cấu trúc Disk kết hợp thuật toán lấp đầy lỗ hổng imfill), giải pháp đã loại bỏ hoàn toàn các vết thủng do lông mày, mắt, râu và bóng tối gây ra trên mặt nạ màu da, duy trì hình thái học tự nhiên của khuôn mặt.
  2. Cắt giảm 76.8% tải tính toán cho bộ phân lớp AdaBoost: Thay vì phải khởi tạo hàng triệu cửa sổ trượt (sliding windows) trên toàn bộ ma trận ảnh $M \times N$, hệ thống chỉ kích hoạt bộ phân loại Cascade trên các khung bao ứng viên (ROI Bounding Boxes), giúp tăng tốc độ xử lý từ 7 FPS lên gần 30 FPS trên ảnh chuẩn.
  3. Mô hình kết hợp quy tắc 3 không gian màu có độ tin cậy cao: Loại bỏ ảnh hưởng tiêu cực của kênh sáng ($Y$ trong YCbCr và $V$ trong HSV), tăng tính ổn định của mặt nạ nhị phân dưới ánh sáng chói hoặc ánh sáng yếu.

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

+------------------------------------------------------------------------------------+
|                         KỊCH BẢN TRIỂN KHAI THỰC TẾ                                |
|                                                                                    |
|                           [Xác thực ROI Face]                                      |
|  [Hệ thống chấm công]     [Camera an ninh ATM]       [Kiểm soát cửa tự động]       |
|  (Nhận diện tức thì)      (Cảnh báo giả mạo)         (Xác thực ra vào)             |
+------------------------------------------------------------------------------------+

Các kịch bản ứng dụng cụ thể

  • Hệ thống chấm công sinh trắc học và kiểm soát ra vào: Tự động phát hiện khuôn mặt nhân viên khi bước vào vùng quét của camera, loại bỏ background phức tạp trước khi gửi dữ liệu sang module Face Recognition.
  • Giám sát giao dịch an toàn tại cây ATM: Nhận diện người dùng đứng trước máy ATM, kích hoạt ghi hình độ phân giải cao tại vùng khuôn mặt và cảnh báo nếu có đối tượng che mặt hoặc đứng quá gần.
  • Hệ thống tương tác thông minh trên Smart TV/Thiết bị IoT: Phát hiện người xem trong phòng khách để tự động điều chỉnh độ sáng màn hình hoặc kích hoạt chế độ tiết kiệm năng lượng khi không có mặt người.

Yêu cầu phần cứng và môi trường triển khai

  • Cấu hình tối thiểu (Edge Device): CPU Intel Core i3 Dual-Core 2.0 GHz hoặc ARM Cortex-A53 (Raspberry Pi 3B+ trở lên), 2 GB RAM.
  • Môi trường đề xuất (Server/Desktop): Intel Core i5 Quad-Core, 4 GB RAM, Chạy MATLAB Runtime hoặc C++/OpenCV tương đương.

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

Hạn chế kỹ thuật

  • Các vật thể trong nền có phân bố màu tương đồng tuyệt đối với màu da người (ví dụ: rèm cửa màu vàng cam, sàn gỗ màu da) nếu có tỷ lệ dài/rộng tương tự khuôn mặt vẫn có thể bị trích xuất thành vùng ứng viên, làm tăng thời gian xác thực của tầng Cascade.
  • Hiệu năng phân đoạn màu da suy giảm khi khuôn mặt bị chiếu sáng bởi nguồn sáng màu đơn sắc cường độ cao (đèn LED xanh, đỏ).

Hướng phát triển tiếp theo

  • Nghiên cứu cơ chế cân bằng trắng tự động (Auto White Balance / Gray World Algorithm) trước khi phân đoạn màu da để chuẩn hóa ánh sáng.
  • Chuyển đổi mã nguồn từ MATLAB sang C++ kết hợp thư viện tối ưu hóa OpenCV và OpenMP nhằm tăng tốc xử lý lên trên 60 FPS trên các vi xử lý nhúng.
  • Tích hợp mạng nơ-ron tích chập nhẹ (Lightweight CNN như MobileNet-SSD / MTCNN) thay thế cho bộ phân lớp AdaBoost để tăng cường khả năng nhận diện các khuôn mặt bị nghiêng góc lớn ($\pm 90^\circ$).

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

  • Sinh viên & Học viên chuyên ngành CNTT/Kỹ thuật phần mềm: Nắm vững phương pháp tiếp cận kết hợp giữa xử lý ảnh cổ điển (Color Segmentation, Mathematical Morphology) và học máy (Machine Learning/AdaBoost).
  • Kỹ sư thị giác máy tính (Computer Vision Engineers): Sở hữu giải pháp tối ưu hóa tốc độ tính toán cho các bài toán xử lý video thời gian thực trên thiết bị tài nguyên thấp.
  • Doanh nghiệp phát triển thiết bị thông minh & IoT: Có được thiết kế tham chiếu tin cậy để triển khai các module nhận diện mặt người chi phí thấp, không yêu cầu GPU chuyên dụng.
  • Nhà nghiên cứu: Tài liệu cung cấp số liệu thực nghiệm định lượng, so sánh đa giải pháp xử lý vùng màu da và lọc hình thái học.

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

1. Tại sao cần thực hiện phép toán hình thái trên ảnh xám hoặc ảnh nhị phân sau khi phân đoạn màu da?

Sau khi lọc qua ngưỡng màu da, ảnh nhị phân thu được luôn chứa các đốm nhiễu ngẫu nhiên và các khoảng trống (lỗ hổng) do các chi tiết không phải da trên mặt (mắt, miệng, râu). Phép mở hình thái (Opening) sẽ xóa sạch nhiễu nền li ti, trong khi phép tô đầy (Region Fill) sẽ liên kết các mảng da bị đứt gãy thành một khối thống nhất, tạo điều kiện trích xuất chính xác đường bao ROI.

2. Kích thước và hình dạng của phần tử cấu trúc (Structuring Element) được chọn như thế nào?

Đồ án lựa chọn phần tử cấu trúc dạng đĩa (Disk) với bán kính $r = 1$ pixel. Dạng hình đĩa bảo toàn tốt tính đẳng hướng (isotropic) của các đường cong khuôn mặt so với dạng hình chữ nhật hoặc hình chữ thập, đồng thời bán kính nhỏ giúp loại bỏ nhiễu mà không làm co cụm hoặc biến dạng ranh giới biên của khuôn mặt.

3. Phương pháp này xử lý như thế nào đối với các chủng tộc có màu da khác nhau?

Không gian màu YCbCr và HSV phân tách rõ ràng thành phần độ sáng ($Y, V$) và thành phần sắc độ ($Cb, Cr, H, S$). Các nghiên cứu trắc lượng sinh học chỉ ra rằng màu da của các chủng tộc người khác nhau (Á, Âu, Phi) có phân bố sắc độ ($Cb, Cr$) tập trung trong một cụm tương đối hẹp. Bằng cách kết hợp ngưỡng rộng trên $Cb, Cr$ và $H, S$, giải pháp bao phủ được hầu hết các sắc thái màu da.

4. Hệ thống có phát hiện được khuôn mặt khi người dùng đeo kính hoặc có râu không?

Có. Khi người dùng đeo kính hoặc có râu, vùng màu da có thể bị thủng ở giữa. Thuật toán imfill (lấp đầy vùng kín) và phép đóng (Closing) sẽ tự động nối liền các khoảng trống này, đảm bảo khung bao Bounding Box của vùng ứng viên vẫn bao trọn toàn bộ khuôn mặt trước khi chuyển cho bộ phân lớp AdaBoost xác thực.

5. Sự khác biệt cốt lõi về chi phí tính toán giữa phương pháp này và Viola-Jones gốc là gì?

Viola-Jones gốc trượt cửa sổ $24 \times 24$ qua hàng trăm nghìn vị trí trên toàn ảnh ở nhiều tỷ lệ scale khác nhau. Phương pháp trong đồ án sử dụng bộ lọc màu da và hình thái học như một bộ lọc không gian (Spatial Filter), loại bỏ từ 70% đến 80% diện tích không chứa da, do đó bộ phân lớp Cascade chỉ cần kiểm tra vài chục cửa sổ ứng viên, giảm thời gian tính toán tổng thể từ 142 ms xuống còn 34 ms mỗi khung hình.


Kết luận

Đồ án tốt nghiệp "Ứng dụng phép toán hình thái cho bài toán phát hiện khuôn mặt dựa vào màu da" của sinh viên Trịnh Trung Thành (hướng dẫn bởi TS. Ngô Trường Giang) đã giải quyết trọn vẹn bài toán cân bằng giữa tốc độ xử lý thời gian thực và độ chính xác trong thị giác máy tính. Bằng việc kết hợp hài hòa giữa mô hình phân đoạn màu da đa không gian (RGB-HSV-YCbCr), các phép toán hình thái học (Morphological Operations) tinh chỉnh mặt nạ, và bộ phân loại tăng cường AdaBoost Cascade trên vùng ứng viên ROI, hệ thống đạt độ chính xác 94.6% với tốc độ 29.4 FPS trên ảnh độ phân giải tiêu chuẩn, giảm thiểu 76.8% không gian tính toán so với thuật toán Viola-Jones truyền thống. Đây là tài liệu kỹ thuật và mã nguồn tham khảo có giá trị ứng dụng thực tiễn cao cho sinh viên, kỹ sư và các nhà phát triển hệ thống nhúng thông minh.