Giới thiệu dự án

Trong kỷ nguyên số hóa và tự động hóa công nghiệp 4.0, an ninh thông tin và kiểm soát truy cập vật lý đã trở thành ưu tiên hàng đầu của mọi tổ chức. Theo các báo cáo nghiên cứu thị trường sinh trắc học toàn cầu, các phương thức xác thực truyền thống như mật mã, thẻ từ (RFID), mã PIN hay khóa cơ học đang bộc lộ những điểm yếu chí mạng: khả năng bị đánh cắp, sao chép, làm giả hoặc quên lãng. Ngay cả các phương thức sinh trắc học phổ biến như nhận dạng dấu vân tay hay nhận diện khuôn mặt 2D cũng đối mặt với nhiều rủi ro: cảm biến vân tay dễ bị bám bẩn gây suy giảm độ nhạy quang học, suy giảm tuổi thọ phần cứng sau thời gian dài tiếp xúc và dễ bị đánh lừa bởi khuôn silicon giả lập; trong khi nhận dạng khuôn mặt lại chịu ảnh hưởng lớn từ điều kiện ánh sáng, góc chụp, mỹ phẩm, phẫu thuật thẩm mỹ và quá trình lão hóa tự nhiên.

       +-----------------------------------------------------------+
       |           HỆ THỐNG NHẬN DẠNG MỐNG MẮT NGƯỜI               |
       |             (Human Iris Recognition System)               |
       +-----------------------------------------------------------+
                                     |
            +------------------------+------------------------+
            |                                                 |
            v                                                 v
+-----------------------+                         +-----------------------+
|    XỬ LÝ TRÊN MÁY TÍNH|                         |   ĐIỀU KHIỂN PHẦN CỨNG|
|    (MATLAB R2014b)    | -- Giao tiếp UART USB ->|    (ARDUINO UNO R3)   |
|  - Circular Hough     |                         |  - ATmega328P 16MHz   |
|  - Daugman Model      |                         |  - Digital I/O        |
|  - 2D Gabor Wavelet   |                         |  - LED/Relay Actuator |
|  - Hamming Distance   |                         |                       |
+-----------------------+                         +-----------------------+

Vấn đề thực tiễn (Problem Statement)

Nhận dạng mống mắt (Iris Recognition) được công nhận là một trong những công nghệ sinh trắc học có độ tin cậy và tính bảo mật cao nhất hiện nay. Cấu trúc mô mống mắt người hình thành ổn định từ tháng thứ 8 của thai kỳ, hoàn thiện cấu trúc phức tạp trong năm đầu đời và hầu như không thay đổi trong suốt vòng đời của một cá nhân. Xác suất xuất hiện hai mống mắt trùng lặp hoàn toàn giữa hai cá thể khác nhau trên thế giới được ước tính xấp xỉ $10^{-78}$. Tuy nhiên, việc triển khai công nghệ này vào các hệ thống nhúng điều khiển thực tế gặp phải rào cản lớn về chi phí phần cứng chuyên dụng, độ phức tạp của thuật toán trích chọn đặc trưng và yêu cầu giao tiếp thời gian thực với các cơ cấu chấp hành.

Đồ án tốt nghiệp "Nhận dạng mống mắt người" (Human Iris Recognition System) do nhóm nghiên cứu Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP.HCM thực hiện, giải quyết triệt để bài toán này thông qua giải pháp kết hợp thuật toán xử lý ảnh số nâng cao trên MATLAB và nhúng tín hiệu điều khiển kiểm soát truy cập xuống vi điều khiển Arduino Uno R3.

Mục tiêu dự án

  1. Nghiên cứu và làm chủ lý thuyết sinh trắc học mống mắt: Phân tích chi tiết cấu trúc giải phẫu học của mắt người, vùng đồng tử (pupil), màng mống mắt (iris) và màng cứng (sclera).
  2. Xây dựng thuật toán phân đoạn và chuẩn hóa mống mắt: Ứng dụng biến đổi Hough hình tròn (Circular Hough Transform) kết hợp đạo hàm Gradient Gaussian để định vị chính xác biên trong và biên ngoài mống mắt; áp dụng mô hình tấm cao su Daugman (Daugman's Rubber Sheet Model) để chuẩn hóa vùng vành khăn mống mắt sang hệ tọa độ cực phẳng.
  3. Trích xuất đặc trưng và so sánh mẫu sinh trắc: Ứng dụng bộ lọc 2D Gabor Wavelet để mã hóa thông tin pha thành chuỗi nhị phân 2048-bit (IrisCode), sử dụng khoảng cách Hamming (Hamming Distance - HD) với ngưỡng quyết định tối ưu $\text{HD} < 0.40$.
  4. Thiết kế phần cứng và nhúng điều khiển: Tích hợp giao tiếp phần cứng giữa MATLAB và board vi điều khiển Arduino Uno R3 (ATmega328P) thông qua cổng UART nối tiếp để điều khiển cơ cấu hiển thị/chấp hành LED báo trạng thái an ninh.
  5. Thực nghiệm và đánh giá toàn diện: Kiểm chứng hệ thống trên cơ sở dữ liệu chuẩn quốc tế CASIA Iris Image Database Version 1.0 và tập dữ liệu ảnh chụp thực tế bằng camera quang học 13MP.

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án áp dụng phương pháp tiếp cận module hóa phân tầng: tầng xử lý tính toán số học nặng (Heavy Computation Layer) chạy trên nền tảng máy tính trạm/laptop với phần mềm MATLAB R2014b, giao tiếp truyền thông nối tiếp qua thư viện phần cứng MATLAB Support Package for Arduino Hardware để truyền lệnh sang tầng điều khiển chấp hành biên (Edge Actuation Layer) trên chip ATmega328P. Hệ thống kỳ vọng đạt tỷ lệ định vị mống mắt trên 95%, tỷ lệ nhận dạng chính xác trên 85-90% với tập ảnh chuẩn và thời gian phản hồi điều khiển ngoại vi dưới 100ms sau khi hoàn tất so khớp.

Phạm vi và giới hạn

  • Phạm vi nghiên cứu: Xử lý dữ liệu ảnh mắt tĩnh (ảnh đơn sắc 8-bit Gray Scale) lấy từ cơ sở dữ liệu CASIA v1.0 và ảnh chụp từ camera quang học chất lượng cao của điện thoại di động Samsung Galaxy J7 Prime (13MP).
  • Giới hạn kỹ thuật: Chưa tích hợp camera hồng ngoại chuyên dụng (Near-Infrared - NIR) và cơ chế tự động theo dõi mắt trực tiếp từ luồng video thời gian thực; hệ thống xử lý so khớp dựa trên giả định mắt nhìn trực diện hoặc góc nghiêng lệch không vượt quá $\pm 10^\circ$.

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

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

Bảng so sánh định lượng giữa các phương pháp sinh trắc học hiện nay:

Tiêu chí so sánh Nhận dạng mống mắt (Đề tài) Nhận dạng vân tay Nhận dạng khuôn mặt 2D Nhận dạng giọng nói
Độ chính xác (Accuracy) Cực cao ($>99.5%$) Cao ($95 - 98%$) Trung bình ($85 - 92%$) Trung bình ($80 - 88%$)
Tỷ lệ lỗi chấp nhận sai (FAR) $\approx 10^{-6}$ $\approx 10^{-3}$ $\approx 10^{-2}$ $\approx 10^{-2}$
Tính bất biến theo thời gian Trọn đời (sau 1 tuổi) Bị mòn, chấn thương Thay đổi theo tuổi tác Thay đổi theo bệnh lý/tuổi
Khả năng làm giả (Spoofing) Rất khó Dễ (khuôn silicon/gel) Trung bình (ảnh/video 2D) Dễ (ghi âm/giả giọng)
Phương thức thu thập Không tiếp xúc Tiếp xúc trực tiếp Không tiếp xúc Không tiếp xúc
Độ bền thiết bị cảm biến Cao (không ma sát) Dễ trầy xước/bẩn Cao Cao

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc phải có):
    • Thuật toán phân đoạn tự động vùng đồng tử và mống mắt bằng Circular Hough Transform.
    • Thuật toán chuẩn hóa mống mắt theo mô hình Daugman (kích thước chuẩn $100 \times 420$ pixel).
    • Mã hóa pha đặc trưng bằng bộ lọc 2D Gabor thành ma trận nhị phân 2048-bit.
    • Phân loại xác thực bằng khoảng cách Hamming với ngưỡng $\text{HD} \le 0.40$.
    • Giao tiếp điều khiển Arduino Uno qua USB-UART để kích hoạt LED trạng thái.
  • Should Have (Nên có):
    • Cơ chế phát hiện và loại bỏ nhiễu mí mắt trên/dưới bằng Parabolic Hough Transform.
    • Giao diện người dùng đồ họa (GUI) trên MATLAB để trực quan hóa quá trình quét.
  • Could Have (Có thể có):
    • Hỗ trợ nạp trực tiếp tập dữ liệu ảnh từ camera USB hoặc webcam thời gian thực.
  • Won't Have (Chưa thực hiện trong phiên bản này):
    • Nhúng toàn bộ mạng nơ-ron hoặc thuật toán Hough trực tiếp lên vi điều khiển 8-bit ATmega328P (do hạn chế 2KB SRAM).
graph TD
    A[Ảnh mắt đầu vào - RGB/Grayscale] --> B[Tiền xử lý: Chuyển xám, Lọc nhiễu Gaussian]
    B --> C[Phân đoạn mống mắt: Circular Hough Transform]
    C --> D[Xác định tâm & Bán kính Đồng tử / Mống mắt]
    D --> E[Chuẩn hóa vùng vành khăn: Daugman Rubber Sheet Model]
    E --> F[Trích xuất đặc trưng: Bộ lọc 2D Gabor Wavelet]
    F --> G[Lượng tử hóa pha -> Chuỗi nhị phân IrisCode 2048-bit]
    G --> H[So khớp đặc trưng: Tính Khoảng cách Hamming HD]
    H --> I{Khoảng cách HD < 0.40?}
    I -- Đúng --> J[Mống mắt hợp lệ: Gửi mã kích hoạt LED Xanh qua UART]
    I -- Sai --> K[Mống mắt không hợp lệ: Gửi mã kích hoạt LED Đỏ qua UART]
    J --> L[Board Arduino Uno R3: Điều khiển Chân D11/D12]
    K --> L

Thiết kế hệ thống

Technology Stack & Kiến trúc phần cứng/phần mềm

  • Tầng thuật toán và phân tích ảnh: MATLAB R2014b (64-bit), Image Processing Toolbox, Signal Processing Toolbox, MATLAB Support Package for Arduino Hardware.
  • Tầng xử lý điều khiển nhúng: Kit Arduino Uno R3, Vi điều khiển 8-bit ATmega328P (Tần số dao động thạch anh 16MHz, Bộ nhớ Flash 32KB, SRAM 2KB, EEPROM 1KB), Cầu chuyển đổi giao tiếp USB-to-UART ATmega16U2.
  • Tầng thiết bị chấp hành ngoại vi:
    • Chân Digital I/O Pin 11 kết nối LED Xanh dương (Báo trạng thái xác thực thành công - Access Granted).
    • Chân Digital I/O Pin 12 kết nối LED Đỏ (Báo trạng thái từ chối truy cập - Access Denied).
    • Điện trở hạn dòng $220,\Omega$ bảo vệ LED, nguồn cấp $5\text{V}$ trực tiếp từ bus USB.

Cơ chế lưu trữ dữ liệu đặc trưng mống mắt (Database Schema)

Hệ thống sử dụng tệp định dạng .mat để lưu trữ ma trận cơ sở dữ liệu mẫu sinh trắc học đã huấn luyện:

  • feature_matrix: Ma trận cấu trúc kích thước $N \times 2048$, trong đó $N$ là tổng số mẫu ảnh mống mắt huấn luyện ($N = 70$ cho tập CASIA; $N = 20$ cho tập ảnh tự thu thập).
  • mask_matrix: Ma trận mặt nạ bít $N \times 2048$ biểu thị các điểm ảnh hợp lệ (loại trừ điểm ảnh bị mí mắt, lông mi hoặc đốm sáng che khuất).
  • label_vector: Mảng chuỗi ký tự chứa danh tính (ID/Tên người dùng) tương ứng với từng hàng trong ma trận đặc trưng.

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

Quy trình phát triển dự án được thực hiện theo mô hình V-Model cải tiến kết hợp tạo mẫu nhanh (Prototyping) qua 18 tuần nghiên cứu:

Giai đoạn Thời gian Nội dung công việc chi tiết Sản phẩm bàn giao (Deliverables)
Phase 1 Tuần 1 - 4 Nghiên cứu tài liệu sinh trắc học; khảo sát tập lệnh MATLAB & kiến trúc phần cứng Arduino Uno R3. Báo cáo cơ sở lý thuyết; sơ đồ nguyên lý mạch phần cứng.
Phase 2 Tuần 5 - 7 Cài đặt gói mở rộng MATLAB Support Package; lập trình điều khiển nhúng chân I/O trên Arduino. Mã nguồn giao tiếp UART giữa MATLAB và kit Arduino.
Phase 3 Tuần 8 - 10 Thu thập cơ sở dữ liệu ảnh CASIA và tự chụp; tiền xử lý và cắt lọc vùng quan tâm (ROI). Bộ dữ liệu ảnh mống mắt chuẩn hóa $100 \times 420$ pixel.
Phase 4 Tuần 11 - 14 Lập trình thuật toán Hough, Daugman Rubber Sheet, 2D Gabor Filter và Hamming Distance. Pipeline thuật toán hoàn chỉnh; tệp lưu trữ cơ sở dữ liệu .mat.
Phase 5 Tuần 15 - 18 Kiểm thử tích hợp toàn hệ thống, đánh giá sai số FAR/FRR và hoàn thiện thuyết minh đồ án. Đồ án tốt nghiệp hoàn chỉnh; mô hình demo hoạt động thực tế.

Implementation và kết quả

Chi tiết các thuật toán cốt lõi

1. Thuật toán định vị và phân đoạn mống mắt (Iris Localization)

Đầu tiên, hệ thống áp dụng bộ lọc làm mịn Gaussian để khử nhiễu tần số cao, sau đó tính toán lược đồ Gradient cường độ ảnh:

$$\nabla G(x, y) = \left( \frac{\partial G}{\partial x}, \frac{\partial G}{\partial y} \right), \quad G(x, y) = \frac{1}{2\pi \sigma^2} e^{-\frac{(x-x_0)^2 + (y-y_0)^2}{2\sigma^2}}$$

Thuật toán Circular Hough Transform dò tìm các tham số tâm $(x_c, y_c)$ và bán kính $r$ thỏa mãn phương trình đường tròn:

$$(x_j - x_c)^2 + (y_j - y_c)^2 = r^2$$

Để tránh việc mí mắt ngang gây nhiễu biên đường tròn mống mắt, hệ thống chỉ trích xuất các thành phần Gradient theo phương thẳng đứng (Vertical Gradient) cho việc định vị biên ngoài của mống mắt.

% Đoạn mã định vị tâm và bán kính đồng tử / mống mắt bằng Hough Transform
function [row, col, r] = findcircle(image, lthresh, hthresh, radius_range)
    % image: Ma trận ảnh xám đầu vào
    % radius_range: Khoảng bán kính tìm kiếm [min_rad, max_rad]
    [gradient_x, gradient_y] = gradient(double(image));
    gradient_mag = sqrt(gradient_x.^2 + gradient_y.^2);
    edge_map = (gradient_mag > lthresh) & (gradient_mag < hthresh);
    
    % Khởi tạo không gian tích lũy Hough 3D
    accumulator = zeros(size(image, 1), size(image, 2), max(radius_range));
    [edge_y, edge_x] = find(edge_map);
    
    for k = 1:length(edge_x)
        x = edge_x(k); y = edge_y(k);
        for r_val = radius_range(1):radius_range(2)
            for theta = 0:pi/18:2*pi
                xc = round(x - r_val * cos(theta));
                yc = round(y - r_val * sin(theta));
                if (xc >= 1 && xc <= size(image, 2) && yc >= 1 && yc <= size(image, 1))
                    accumulator(yc, xc, r_val) = accumulator(yc, xc, r_val) + 1;
                end
            end
        end
    end
    [~, max_idx] = max(accumulator(:));
    [row, col, r] = ind2sub(size(accumulator), max_idx);
end

2. Chuẩn hóa mống mắt theo mô hình tấm cao su Daugman (Rubber Sheet Model)

Chuyển đổi hình chiếu từ hệ tọa độ Cartesian $(x,y)$ sang hệ tọa độ cực phẳng $(r, \theta)$ bất biến với độ giãn nở đồng tử:

$$I(x(r, \theta), y(r, \theta)) \longrightarrow I(r, \theta)$$

Trong đó: $$x(r, \theta) = (1 - r) x_p(\theta) + r x_i(\theta), \quad y(r, \theta) = (1 - r) y_p(\theta) + r y_i(\theta)$$

Với $(x_p, y_p)$ và $(x_i, y_i)$ lần lượt là tọa độ trên biên của đồng tử và mống mắt tại góc $\theta \in [0, 2\pi]$, $r \in [0, 1]$. Kỹ thuật nội suy song tuyến tính (Bilinear Interpolation) được áp dụng để tính toán mức xám của từng pixel trong ma trận cực kích thước $100 \times 420$.

% Chuẩn hóa vành khăn mống mắt sang dải chữ nhật tọa độ cực
function polar_array = daugman_normalization(eye_img, xp, yp, rp, xi, yi, ri, radpixels, angpixels)
    polar_array = zeros(radpixels, angpixels);
    theta = 0:(2*pi)/angpixels:2*pi - (2*pi)/angpixels;
    
    for rad = 1:radpixels
        r = (rad - 1) / (radpixels - 1);
        x_inner = xp + rp * cos(theta);
        y_inner = yp + rp * sin(theta);
        x_outer = xi + ri * cos(theta);
        y_outer = yi + ri * sin(theta);
        
        x = (1 - r) * x_inner + r * x_outer;
        y = (1 - r) * y_inner + r * y_outer;
        
        % Nội suy song tuyến tính để trích xuất giá trị độ sáng
        polar_array(rad, :) = interp2(double(eye_img), x, y, 'linear', 0);
    end
end

3. Trích xuất đặc trưng bằng bộ lọc 2D Gabor Wavelet & Khoảng cách Hamming

Hệ thống sử dụng bộ lọc 2D Gabor đối xứng chẵn (Real Part) và đối xứng lẻ (Imaginary Part) để giải điều chế pha của các mẫu mô mống mắt:

$$G(x, y) = e^{-\pi \left( \frac{(x-x_0)^2}{\alpha^2} + \frac{(y-y_0)^2}{\beta^2} \right)} e^{-2\pi i (\mu_0 x + \nu_0 y)}$$

Tín hiệu đầu ra được lượng tử hóa pha 4 góc phần tư thành 2 bit dữ liệu cho mỗi điểm ảnh, tạo nên chuỗi nhị phân $2048\text{ bits}$ ($256\text{ bytes}$).

Khoảng cách Hamming chuẩn hóa được tính toán bằng công thức:

$$\text{HD} = \frac{1}{N - \sum \text{Mask}{\text{noise}}} \sum{j=1}^{N} \left( \text{Code}_A(j) \oplus \text{Code}_B(j) \right) \cap \text{Mask}_A(j) \cap \text{Mask}_B(j)$$

% So khớp hai chuỗi IrisCode bằng khoảng cách Hamming có mặt nạ
function hd = compute_hamming_distance(templateA, maskA, templateB, maskB)
    % Thực hiện phép XOR trên template và AND trên mask
    xor_result = xor(templateA, templateB);
    valid_mask = maskA & maskB;
    bits_diff = sum(sum(xor_result & valid_mask));
    total_valid_bits = sum(sum(valid_mask));
    
    if total_valid_bits == 0
        hd = 1.0; % Không có bit hợp lệ
    else
        hd = bits_diff / total_valid_bits;
    end
end

4. Giao tiếp điều khiển nhúng xuống kit Arduino Uno

Sau khi tính toán khoảng cách $\text{HD}$, MATLAB gửi lệnh điều khiển trạng thái chân số (Digital Pin) thông qua đối tượng giao tiếp phần cứng:

% Đoạn mã kết nối phần cứng và điều khiển ngoại vi trên MATLAB
clear all; close all;
% Khởi tạo đối tượng kết nối Arduino
a = arduino('COM3', 'Uno');

% Đọc ảnh mống mắt cần xác thực
input_img = imread('test_iris.jpg');
template_test = extract_iris_features(input_img);

min_hd = 1.0;
matched_id = -1;
for i = 1:size(database_templates, 1)
    hd = compute_hamming_distance(template_test, test_mask, database_templates(i, :), db_masks(i, :));
    if (hd < min_hd)
        min_hd = hd;
        matched_id = i;
    end
end

% Đánh giá ngưỡng quyết định và điều khiển phần cứng
if (min_hd < 0.40)
    disp(['Xác thực thành công! ID: ', num2str(matched_id), ' - HD: ', num2str(min_hd)]);
    writeDigitalPin(a, 'D11', 1); % Bật LED Xanh (Pin 11)
    writeDigitalPin(a, 'D12', 0); % Tắt LED Đỏ (Pin 12)
else
    disp(['Từ chối truy cập! Không tìm thấy mống mắt phù hợp - HD: ', num2str(min_hd)]);
    writeDigitalPin(a, 'D11', 0); % Tắt LED Xanh
    writeDigitalPin(a, 'D12', 1); % Bật LED Đỏ (Pin 12)
end

Kiểm thử và đánh giá kết quả

Hệ thống được kiểm thử thực tế trên hai tập dữ liệu độc lập với các kịch bản kiểm thử nghiêm ngặt:

[BỘ DỮ LIỆU THỰC NGHIỆM]
  ├── CASIA-Iris v1.0 (70 ảnh / 10 người / 7 ảnh mỗi người)
  └── Custom Smartphone Dataset (20 ảnh / 4 người / 5 ảnh mỗi người)

Bảng thống kê hiệu năng nhận dạng thực tế:

Bộ dữ liệu thử nghiệm Số lượng mẫu kiểm thử Tỷ lệ định vị mống mắt thành công Tỷ lệ nhận dạng đúng (Accuracy) Tỷ lệ chấp nhận sai (FAR) Tỷ lệ từ chối sai (FRR) Thời gian xử lý trung bình / mẫu
CASIA Iris Database v1.0 70 ảnh $98.57%$ (69/70) $97.14%$ (68/70) $0.00%$ $2.86%$ $1.24\text{ s}$
Ảnh chụp thực tế (Samsung J7) 20 ảnh $85.00%$ (17/20) $80.00%$ (16/20) $5.00%$ $15.00%$ $1.68\text{ s}$
Tổng thể hệ thống 90 ảnh 95.55% 93.33% 1.11% 5.55% 1.33 s

Phân tích nguyên nhân sai số trong thử nghiệm thực tế

  1. Nhiễu do phản xạ quang học (Specular Reflection): Ảnh chụp bằng camera điện thoại dưới ánh sáng trắng tự nhiên xuất hiện các điểm lóa sáng ngay trên bề mặt giác mạc, làm gián đoạn đường tròn Gradient khi chạy thuật toán Circular Hough Transform.
  2. Che khuất do mí mắt và lông mi (Occlusion): Đối với người châu Á có mắt nhỏ hoặc khi người chụp nheo mắt, vùng mi trên che khuất hơn $30%$ diện tích vành khăn mống mắt, làm suy giảm lượng thông tin pha hữu ích.
  3. Độ lệch trục quang học (Off-axis Gaze): Góc nhìn không vuông góc $90^\circ$ dẫn đến hình elip méo thay vì hình tròn đồng tâm, làm sai lệch mô hình biến đổi tấm cao su.

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

  1. Kiến trúc đồng thiết kế Phần mềm - Phần cứng tối ưu (PC-Edge Co-Design): Giải quyết xuất sắc điểm nghẽn bộ nhớ của các vi điều khiển nhúng giá rẻ (ATmega328P chỉ có 2KB RAM và 32KB Flash) bằng cách chuyển giao toàn bộ tính toán ma trận phức tạp cho MATLAB, trong khi vẫn duy trì khả năng điều khiển thiết bị vật lý thời gian thực qua giao tiếp UART chuẩn hóa.
  2. Cải tiến thuật toán định vị Hough đa phân giải: Ứng dụng phân tích đạo hàm gradient theo phương đứng kết hợp lọc ngưỡng thích nghi giúp tăng tốc độ xử lý định vị biên mống mắt lên $35%$ so với phương pháp vét cạn (Brute-force) truyền thống.
  3. Mã hóa đặc trưng tối ưu hóa dung lượng: Nén cấu trúc vân mống mắt phức tạp thành mẫu nhị phân cố định chỉ $256\text{ bytes}$ ($2048\text{ bits}$), cho phép tốc độ so sánh hàng nghìn mẫu trong vài mili-giây bằng toán tử logic cấp thấp XOR / AND.

Bảng so sánh với các công trình nghiên cứu cùng thời điểm:

Tiêu chí Giải pháp trong đồ án Hệ thống Daugman nguyên bản (C++) Mô hình nhúng thuần STM32F4
Nền tảng thực thi MATLAB R2014b + Arduino Uno C/C++ trên Linux Workstation Vi điều khiển ARM Cortex-M4
Chi phí phần cứng Thấp ($< 15\text{ USD}$ cho kit Arduino) Rất cao ($> 1500\text{ USD}$) Trung bình ($50 - 80\text{ USD}$)
Độ phức tạp triển khai Dễ dàng mở rộng, kiểm thử trực quan Đòi hỏi trình biên dịch chuyên sâu Đòi hỏi tối ưu hóa bộ nhớ DSP
Tốc độ so khớp đặc trưng $< 5\text{ ms}$ / mẫu $< 1\text{ ms}$ / mẫu $15 - 20\text{ ms}$ / mẫu
Độ chính xác tổng thể $93.33%$ $99.80%$ $88.50%$

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

Tình huống ứng dụng thực tế (Real-world Use Cases)

  • Kiểm soát ra vào khu vực an ninh cao cấp (Access Control): Ứng dụng tại các phòng thí nghiệm y sinh, trung tâm dữ liệu (Data Center), kho quỹ ngân hàng và các khu vực giới hạn của cơ quan chính phủ.
  • Chấm công sinh trắc học không tiếp xúc: Giải pháp thay thế hoàn hảo cho máy chấm công vân tay trong môi trường y tế hoặc nhà xưởng nhiều bụi bẩn, hóa chất độc hại, hạn chế tối đa nguy cơ lây nhiễm chéo vi khuẩn/virus.
  • Kích hoạt thiết bị an toàn công nghiệp: Chỉ cho phép kỹ sư/vận hành viên có chứng chỉ chuyên môn mở khóa hệ thống điều khiển máy móc nguy hiểm (như lò phản ứng, hệ thống cắt laser cao tần).
timeline
    title Lộ trình thương mại hóa và phát triển hệ thống
    Phase 1 : Hoàn thiện thuật toán cốt lõi : Thử nghiệm thành công trên MATLAB và Arduino
    Phase 2 : Nâng cấp cảm biến NIR : Tích hợp Camera hồng ngoại và đèn LED bước sóng 850nm
    Phase 3 : Chuyển dịch sang SoC Nhúng : Porting thuật toán C++ lên Raspberry Pi 4 / Jetson Nano
    Phase 4 : Tích hợp Deep Learning : Áp dụng MobileNetV3 / U-Net để phân đoạn mống mắt
    Phase 5 : Đóng gói sản phẩm thương mại : Sản xuất bo mạch công nghiệp, đạt chuẩn kháng nước IP65

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit & ROI)

  • Chi phí phần cứng mẫu (BOM Cost):
    • Kit Arduino Uno R3: $\approx 150.000\text{ VNĐ}$
    • Module LED + Điện trở + Dây nối: $\approx 20.000\text{ VNĐ}$
    • Module Camera quang học / USB Webcam: $\approx 350.000\text{ VNĐ}$
    • Tổng chi phí phần cứng: $\approx 520.000\text{ VNĐ}$ ($\approx 22\text{ USD}$) — Thấp hơn $95%$ so với các đầu đọc mống mắt công nghiệp chuyên dụng trên thị trường ($> 500\text{ USD}$).
  • Thời gian hoàn vốn (ROI): Giảm thiểu $100%$ chi phí in ấn thẻ từ/thẻ chip bị mất hàng năm, triệt tiêu hoàn toàn gian lận chấm công hộ (Buddy Punching), mang lại hiệu quả hoàn vốn chỉ trong vòng 3 - 6 tháng triển khai tại các doanh nghiệp vừa và nhỏ.

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

Hạn chế kỹ thuật hiện tại

  • Phụ thuộc vào chất lượng nguồn sáng: Hệ thống sử dụng nguồn sáng khả kiến (Visible Light) thông thường, dẫn đến hiện tượng chói lóa trên giác mạc và đồng tử co nhỏ trong môi trường quá sáng, làm giảm tỷ lệ nhận diện đối với mống mắt sẫm màu.
  • Thời gian đáp ứng của giao tiếp máy tính: Tốc độ xử lý ảnh tĩnh trên MATLAB (~$1.3\text{s}$/mẫu) chưa đạt mức tối ưu cho các cổng kiểm soát lưu lượng người qua lại lớn (yêu cầu $< 0.5\text{s}$).
  • Hạn chế phần cứng điều khiển 8-bit: Chip ATmega328P chỉ đóng vai trò nhận tín hiệu nhị phân chấp hành từ máy tính, chưa thể tự thực thi các tác vụ xử lý ma trận ảnh cục bộ.

Hướng nâng cấp trong tương lai

  1. Trang bị hệ thống chiếu sáng hồng ngoại gần (Near-Infrared Illumination - NIR, $\lambda = 700 - 900\text{ nm}$): Giúp làm nổi bật cấu trúc vân của mống mắt sẫm màu của người châu Á mà không gây chói mắt đối tượng.
  2. Chuyển đổi sang hệ thống nhúng SoC công suất cao: Chuyển giao toàn bộ mã nguồn thuật toán sang C++/Python trên nền tảng Raspberry Pi 4 hoặc NVIDIA Jetson Nano, loại bỏ hoàn toàn sự phụ thuộc vào máy tính trạm cồng kềnh.
  3. Ứng dụng Trí tuệ Nhân tạo (Deep Learning): Tích hợp mạng nơ-ron tích chập (CNN như U-Net, YOLOv8) để tự động khoanh vùng mắt và phân đoạn mống mắt chuẩn xác ngay cả trong điều kiện mắt chuyển động hoặc bị che khuất một phần.

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

+-------------------------------------------------------------------------+
|                           ĐỐI TƯỢNG HƯỞNG LỢI                           |
+-------------------------------------------------------------------------+
       |                  |                    |                  |
       v                  v                    v                  v
 [SINH VIÊN]        [LẬP TRÌNH VIÊN]     [DOANH NGHIỆP]    [NHÀ NGHIÊN CỨU]
 Nắm vững toán      Thừa kế kiến trúc    Sở hữu giải pháp  Tài liệu thực 
 xử lý ảnh &        phần cứng - phần     bảo mật sinh trắc nghiệm tham khảo
 nhúng điều khiển   mềm tối ưu           chi phí cực thấp  sinh trắc học
  • Sinh viên ngành Kỹ thuật Điện - Điện tử, Tự động hóa & CNTT: Tài liệu học tập thực tế, minh họa trực quan cách áp dụng các biến đổi toán học nâng cao (Hough, Fourier, Gabor, Daugman) vào một sản phẩm kỹ thuật điều khiển nhúng cụ thể.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Tham khảo mô hình giao tiếp đồng bộ giữa phần mềm xử lý dữ liệu lớn (MATLAB) và phần cứng vi điều khiển (Arduino) qua kênh UART tốc độ cao.
  • Doanh nghiệp vừa và nhỏ (SMEs): Tiếp cận giải pháp xác thực an ninh kiểm soát cửa ra vào chi phí thấp, dễ bảo trì, thay thế linh kiện nội địa với độ an toàn sinh trắc học vượt trội.
  • Cộng đồng nghiên cứu thị giác máy tính: Cung cấp các số liệu thực nghiệm đo lường hiệu năng của biến đổi Hough và bộ lọc 2D Gabor trên tập dữ liệu ảnh mống mắt người thực tế.

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

1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai hệ thống là gì?

Để vận hành hệ thống ổn định, máy tính cần trang bị CPU tối thiểu Intel Core i3 (khuyến nghị Core i5 thế hệ 4 trở lên), RAM tối thiểu 4GB (khuyến nghị 8GB), cổng USB 2.0/3.0 kết nối Arduino và cài đặt hệ điều hành Windows 7/8/10 hoặc Linux. Về phần cứng nhúng, chỉ cần 01 board Arduino Uno R3 (hoặc Arduino Nano/Mega2560) cùng module LED và dây cắm chuẩn.

2. Giới hạn khả năng mở rộng (Scalability) của hệ thống khi cơ sở dữ liệu lên đến hàng ngàn người?

Trong kiến trúc hiện tại, việc so khớp khoảng cách Hamming được thực hiện tuần tự qua toán tử logic nhị phân XOR. Với cơ sở dữ liệu $10.000$ mẫu, thời gian tính toán ma trận chỉ mất khoảng $15 - 25\text{ ms}$ trên CPU máy tính. Tuy nhiên, để mở rộng quy mô lớn hơn ($> 100.000$ người), cần chuyển đổi cấu trúc dữ liệu sang cây tìm kiếm KD-Tree hoặc áp dụng thuật toán lập chỉ mục không gian (Spatial Indexing) để tránh việc duyệt vét cạn toàn bộ cơ sở dữ liệu.

3. Hệ thống có thể tích hợp với các khóa cửa điện tử hoặc rơ-le công nghiệp hiện có không?

Hoàn toàn có thể. Tín hiệu đầu ra từ các chân Digital I/O (Pin 11, 12) của Arduino Uno có thể kết nối trực tiếp đến module Relay 5V Opto cách ly quang (Optocoupler). Rơ-le này sẽ đóng/ngắt nguồn điện $12\text{V}/24\text{V}$ cấp cho khóa từ (Magnetic Lock), khóa chốt thả (Dropbolt Lock) hoặc kích hoạt cổng chia làn Barrier tự động.

4. Chi phí bảo trì và độ bền của thiết bị như thế nào so với máy quét vân tay?

Hệ thống nhận dạng mống mắt là công nghệ hoàn toàn không tiếp xúc (Non-contact), do đó cảm biến quang học không phải chịu lực ép cơ học, không bị mài mòn, không bám dính mồ hôi, dầu mỡ từ ngón tay người dùng. Chi phí bảo trì gần như bằng 0 trong suốt 3 - 5 năm vận hành, ngoại trừ việc vệ sinh bụi bẩn định kỳ trên bề mặt ống kính quang học.

5. Tại sao khoảng cách Hamming $\text{HD} = 0.40$ lại được chọn làm ngưỡng quyết định?

Theo lý thuyết xác suất thống kê sinh trắc học của John Daugman, khi so sánh hai mẫu mống mắt từ hai người hoàn toàn khác nhau, các bit độc lập sẽ có xác suất trùng khớp là $50%$ ($\text{HD} \approx 0.50$). Khi so sánh hai ảnh của cùng một mống mắt dưới điều kiện ánh sáng và góc chụp hoàn hảo, $\text{HD} \approx 0.00$. Thực nghiệm trên hàng triệu mẫu thử cho thấy khoảng cách giữa hai mẫu cùng một người thường dao động từ $0.08$ đến $0.32$. Ngưỡng $\text{HD} = 0.40$ là điểm phân định lý tưởng (Equal Error Rate - EER), đảm bảo cân bằng tối ưu giữa tỷ lệ chấp nhận sai (FAR $\approx 0%$) và tỷ lệ từ chối sai (FRR $< 3%$).


Kết luận

Đồ án tốt nghiệp "Nhận dạng mống mắt người" của sinh viên Nguyễn Viết Hải và Lê Hồng Hải dưới sự hướng dẫn của ThS. Nguyễn Duy Thảo tại Trường Đại học Sư phạm Kỹ thuật TP.HCM đã hoàn thành xuất sắc các mục tiêu nghiên cứu và ứng dụng đặt ra:

  • Về mặt học thuật: Làm chủ và hiện thực hóa thành công chuỗi thuật toán xử lý ảnh sinh trắc học phức tạp bao gồm Circular Hough Transform, Mô hình tấm cao su Daugman, Bộ lọc sóng 2D Gabor Wavelet và Thuật toán so khớp khoảng cách Hamming.
  • Về mặt kỹ thuật: Xây dựng thành công mô hình tích hợp đồng bộ giữa phần mềm tính toán khoa học MATLAB R2014b và phần cứng vi điều khiển Arduino Uno R3, đạt độ chính xác nhận dạng $97.14%$ trên tập dữ liệu chuẩn CASIA và $80.00%$ trên tập ảnh chụp thực tế.
  • Về mặt giá trị thực tiễn: Chứng minh tính khả thi vượt bậc của việc ứng dụng công nghệ nhận dạng mống mắt độ bảo mật cao vào các hệ thống kiểm soát an ninh vật lý với chi phí phần cứng cực kỳ tiết kiệm.

Công trình mở ra tiền đề vững chắc cho việc tiếp tục nghiên cứu, nâng cấp lên các hệ thống nhúng thông minh hoàn chỉnh chạy trên nền tảng phần cứng hiệu năng cao (Edge AI), góp phần thúc đẩy sự phát triển của các giải pháp an ninh sinh trắc học Make-in-Vietnam trong tương lai.