Giới thiệu dự án
Trong kỷ nguyên công nghiệp 4.0 và sự bùng nổ của giao tiếp người - máy (Human-Computer Interaction - HCI), các phương thức nhập liệu truyền thống thông qua bàn phím, chuột hoặc màn hình cảm ứng đang dần bộc lộ nhiều rào cản về tính linh hoạt, tính vô trùng trong y tế và khả năng tương tác tự nhiên. Nhận dạng cử chỉ tay thông qua thị giác máy tính (Computer Vision) nổi lên như một giải pháp không tiếp xúc (touchless interface) đầy tiềm năng, giúp hiện thực hóa việc điều khiển thiết bị thông minh trong môi trường nhà ở, bệnh viện và dây chuyền tự động hóa công nghiệp.
Đồ án tốt nghiệp "Điều khiển thiết bị bằng cử chỉ tay thông qua xử lý ảnh" (thực hiện bởi sinh viên Nguyễn Hữu Sáng và Từ Thị Kim Chi, dưới sự hướng dẫn của TS. Nguyễn Thanh Hải tại Trường Đại học Sư phạm Kỹ thuật TP.HCM) tập trung giải quyết bài toán phân đoạn, nhận dạng và giải mã cử chỉ bàn tay từ luồng video thu nhận trực tiếp qua webcam thời gian thực, từ đó chuyển đổi thành tín hiệu điều khiển phần cứng ngoại vi thông qua vi điều khiển chuyên dụng.
+------------------+ USB 2.0 +----------------------------+
| Webcam 0.2 MP | ----------------> | PC (MATLAB Image Proc) |
| (640x480 RGB) | | - Viola-Jones Face Mask |
+------------------+ | - YCbCr Color Threshold |
| - Morphology & Centroid |
+----------------------------+
|
| RS-232 / UART
| (19,200 bps)
v
+------------------+ 5-ch TTL +----------------------------+
| 5x LEDs Board | <---------------- | MCU Microchip PIC16F887 |
| (Load Testing) | | + MAX232 Transceiver |
+------------------+ +----------------------------+
Mục tiêu dự án
- Xây dựng thuật toán tiền xử lý và phân đoạn ảnh tối ưu: Phân tách chính xác vùng da bàn tay dựa trên không gian màu YCbCr kết hợp loại bỏ nhiễu khuôn mặt tự động bằng giải thuật Viola-Jones.
- Phát triển giải thuật đếm ngón tay dựa trên hình thái học (Morphology): Tự động thích ứng kích thước mặt nạ lọc thông qua khoảng cách Euclid từ trọng tâm (Center of Gravity) đến biên bàn tay, thực hiện phép mở ảnh (Opening) và trừ ảnh để trích xuất số lượng ngón tay xòe.
- Thiết kế và thi công bo mạch điều khiển nhúng: Xây dựng khối vi điều khiển trung tâm sử dụng chip PIC16F887 kết hợp vi mạch chuyển đổi mức điện áp MAX232 để giao tiếp nối tiếp với máy tính.
- Xây dựng giao diện điều khiển người dùng (GUI): Cung cấp giao diện trực quan trên nền tảng MATLAB cho phép theo dõi ảnh gốc, ảnh sau xử lý và trạng thái logic ngõ ra thời gian thực.
- Điều khiển trực tiếp 5 trạng thái thiết bị ngoại vi: Tương ứng từ 1 đến 5 ngón tay để bật/tắt độc lập 5 kênh đèn LED công suất thấp đóng vai trò mô phỏng tải.
Phạm vi và giới hạn
- Không gian hoạt động: Nhận dạng 5 cử chỉ bàn tay tĩnh (1 đến 5 ngón tay xòe) trên phông nền đơn sắc có kiểm soát (nền xanh lam).
- Phần cứng thu nhận: Webcam chuẩn USB 2.0, độ phân giải video $640 \times 480$ pixels, tốc độ khung hình 30 fps.
- Khoảng cách và góc nhìn: Khoảng cách hiệu dụng từ bàn tay đến cảm biến camera dao động trong khoảng $0.5\text{ m} - 1.2\text{ m}$, góc nghiêng bàn tay so với trục vuông góc camera không vượt quá $\pm 15^\circ$.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi đề xuất giải pháp dựa trên xử lý ảnh quang học không gian màu, các phương pháp nhận dạng cử chỉ tay phổ biến trên thị trường được phân tích và đánh giá đa chiều:
| Phương pháp |
Ưu điểm |
Nhược điểm |
Chi phí phần cứng |
Độ trễ xử lý |
| Găng tay cảm biến (Data Glove / Flex Sensors) |
Độ chính xác cao (>98%), không phụ thuộc ánh sáng môi trường |
Cồng kềnh, vướng víu, cần bảo dưỡng cảm biến uốn liên tục |
Rất cao (>150 USD) |
Rất thấp (<10 ms) |
| Mạng nơ-ron tích chập (Deep CNN / MediaPipe) |
Nhận diện đa cử chỉ phức tạp, độ bền vững cao |
Đòi hỏi tài nguyên tính toán GPU, khó nhúng trên vi điều khiển cấp thấp |
Cao (Cần GPU/NPU) |
Trung bình (50-100 ms) |
| Phân ngưỡng YCbCr + Hình thái học (Giải pháp chọn) |
Tính toán nhẹ, chạy mượt trên CPU cơ bản, không cần dữ liệu huấn luyện lớn |
Nhạy cảm với ánh sáng phức tạp và màu nền trùng màu da |
Rất thấp (<25 USD) |
Thấp (30-60 ms) |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW
- Must Have (Bắt buộc): Tách màu da chính xác trong không gian YCbCr ($Cb \in [77; 127]$, $Cr \in [133; 173]$); giao tiếp UART chuẩn baudrate với MCU; điều khiển chính xác 5 kênh tải.
- Should Have (Nên có): Thuật toán tự động định cỡ phần tử cấu trúc (Structuring Element) theo khoảng cách trọng tâm; bộ lọc trung vị loại bỏ nhiễu muối tiêu.
- Could Have (Có thể có): Khả năng tự động loại trừ vùng diện tích khuôn mặt bằng Viola-Jones Cascade.
- Won't Have (Chưa thực hiện): Nhận dạng cử chỉ động (quẹt tay, xoay cổ tay) và tracking trong không gian 3D thiếu sáng.
Thiết kế hệ thống
Cấu trúc phần cứng và tính toán linh kiện
Hệ thống phần cứng bao gồm khối nguồn ổn áp tuyến tính, khối vi điều khiển trung tâm và khối giao tiếp mức tín hiệu RS-232:
+-----------------------------------+
| Nguồn DC 9V / 50Hz |
+-----------------------------------+
|
v
+-----------------------------------+
| IC 7805 (5V) + C_filter 1000uF |
+-----------------------------------+
|
+-----------------------+-----------------------+
| |
v v
+-----------------------+ +-----------------------+
| MAX232 (Driver RS232)| <== DB9 COM (UART) => | PIC16F887 (20 MHz) |
+-----------------------+ +-----------------------+
|
v (Port A: RA0-RA4)
+-----------------------+
| 5x LEDs (R = 330 ohm)|
+-----------------------+
-
Khối nguồn nuôi:
- Sử dụng biến áp hạ áp và chỉnh lưu cầu cho ra điện áp $9\text{V DC}$.
- Độ gợn sóng yêu cầu $K_{gs} = 5% = 0.05$, chu kỳ chỉnh lưu với tần số $f = 50\text{ Hz}$ là $T_{CL} = \frac{1}{2 \times 50} = 0.01\text{ s}$.
- Dòng tiêu thụ toàn tải: $I_{total} = I_{MCU} + 5 \times I_{LED} + I_{MAX232} = 300\text{ mA} + 5 \times 10\text{ mA} + 10\text{ mA} = 360\text{ mA} \approx 0.37\text{ A}$.
- Điện trở tải tương đương: $R_{td} = \frac{U}{I} = \frac{5}{1} = 5,\Omega$.
- Điện dung tụ lọc san phẳng:
$$C_L = \frac{T_{CL}}{K_{gs} \times R_{td}} = \frac{0.01}{0.05 \times 5} \approx 0.013\text{ F} \implies \text{Chọn tụ hóa } 1000,\mu\text{F} / 25\text{V}.$$
- Mắc song song các tụ gốm $100\text{ nF}$ tại chân $V_{DD}$ để dập nhiễu cao tần. Ổn áp đầu ra $5\text{V}$ bằng IC bán dẫn LM7805.
-
Khối hiển thị & trở hạn dòng LED:
- Vi điều khiển PIC16F887 cấp nguồn $V_{OH} = 5\text{V}$, điện áp phân cực thuận của LED siêu sáng $V_{LED} = 2\text{V}$, dòng định mức an toàn $I_{LED} = 10\text{ mA}$.
- Tính toán điện trở hạn dòng ngõ ra Port A (RA0 - RA4):
$$R = \frac{V_{VĐK} - V_{LED}}{I_{LED}} = \frac{5 - 2}{10 \times 10^{-3}} = 300,\Omega \implies \text{Chọn giá trị tiêu chuẩn } R = 330,\Omega \text{ (1/4W)}.$$
-
Giao thức truyền thông UART/RS-232:
- Máy tính đóng vai trò Master, gửi khung ký tự mã ASCII qua cổng COM DB-9.
- Vi mạch MAX232 chuyển đổi mức logic lưỡng cực $\pm 12\text{V}$ của chuẩn EIA/TIA-232E sang mức logic TTL $0-5\text{V}$ của vi điều khiển.
- Cấu hình truyền thông: Baudrate $19,200\text{ bps}$, 8 Data bits, 1 Stop bit, No Parity bit.
Start Bit Stop Bit
| |
+12V | D0 D1 D2 D3 D4 D5 D6 D7 |
(SPACE) --+ +---+ +---+ +---+ +---+
| | | | | | | | |
-12V +--+ +-+ +-------+ +-------------------+ +---
(MARK) | |
+---------------- Khung 8-bit UART ----------------+
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển hệ thống nhúng kết hợp kiểm thử chữ V (V-Model):
- Giai đoạn 1: Phân tích lý thuyết thị giác máy tính, mô phỏng giải thuật trên ma trận điểm ảnh số trong MATLAB.
- Giai đoạn 2: Thiết kế mạch nguyên lý (Schematic) và layout mạch in (PCB) trên môi trường Labcenter Proteus Suite (ISIS & ARES).
- Giai đoạn 3: Lập trình firmware cho PIC16F887 bằng trình biên dịch CCS C Compiler, thiết lập ngắt truyền nhận dữ liệu nối tiếp
RDA_isr.
- Giai đoạn 4: Tích hợp toàn hệ thống, đánh giá tỉ lệ nhận dạng trong các điều kiện thực nghiệm thay đổi.
Thực thi và kết quả
Quy trình phát triển và giải thuật cốt lõi
1. Tiền xử lý và phân tách màu da
Khung hình màu kích thước $640 \times 480$ từ webcam được giảm tỷ lệ $50%$ xuống $320 \times 240$ để tối ưu năng lượng xử lý. Giải thuật chuyển đổi không gian màu từ sRGB sang YCbCr theo ma trận chuẩn ITU-R BT.601:
$$\begin{bmatrix} Y \ Cb \ Cr \end{bmatrix} = \begin{bmatrix} 16 \ 128 \ 128 \end{bmatrix} + \begin{bmatrix} 0.257 & 0.504 & 0.098 \ -0.148 & -0.291 & 0.439 \ 0.439 & -0.368 & -0.071 \end{bmatrix} \begin{bmatrix} R \ G \ B \end{bmatrix}$$
Phân ngưỡng nhị phân $B(x,y)$ để trích xuất điểm ảnh da người:
$$B(x,y) = \begin{cases} 1 & \text{nếu } 77 \le Cb(x,y) \le 127 \text{ và } 133 \le Cr(x,y) \le 173 \ 0 & \text{ngược lại} \end{cases}$$
2. Lọc trung vị (Median Filter) 2D
Nhằm triệt tiêu nhiễu muối tiêu mà vẫn bảo toàn biên cạnh đối tượng, cửa sổ trượt ma trận kích thước $3 \times 3$ quét tuần tự qua các điểm ảnh:
$$g(x,y) = \text{median}{f(x+i, y+j) \mid (i,j) \in W}$$
3. Thuật toán phân đoạn bàn tay và đếm ngón
% --- Đoạn mã trích xuất đặc trưng ngón tay trong MATLAB ---
% 1. Đọc và lọc màu da
img_ycbcr = rgb2ycbcr(img_input);
cb = img_ycbcr(:,:,2);
cr = img_ycbcr(:,:,3);
skin_mask = (cb >= 77 & cb <= 127) & (cr >= 133 & cr <= 173);
% 2. Lọc trung vị dập nhiễu
skin_filtered = medfilt2(skin_mask, [3 3]);
% 3. Giữ lại thành phần liên thông lớn nhất (Bàn tay)
labeled_regions = bwlabel(skin_filtered);
stats = regionprops(labeled_regions, 'Area', 'Centroid');
[~, max_idx] = max([stats.Area]);
hand_mask = (labeled_regions == max_idx);
% 4. Tính toán trọng tâm và bán kính cực tiểu
centroid = stats(max_idx).Centroid;
Cx = centroid(1); Cy = centroid(2);
boundaries = bwboundaries(hand_mask);
boundary_pts = boundaries{1};
% Khoảng cách Euclid từ trọng tâm tới biên
dist = sqrt((boundary_pts(:,2) - Cx).^2 + (boundary_pts(:,1) - Cy).^2);
min_dist = min(dist);
% 5. Phép mở ảnh (Opening) để loại bỏ ngón tay, giữ lại lòng bàn tay
se = strel('disk', round(min_dist * 0.7));
palm_mask = imopen(hand_mask, se);
% 6. Trừ ảnh để tách riêng các ngón tay
fingers_raw = hand_mask - palm_mask;
% 7. Loại bỏ vùng nhiễu nhỏ (< 10% tổng diện tích ngón tay)
labeled_fingers = bwlabel(fingers_raw);
finger_stats = regionprops(labeled_fingers, 'Area');
total_finger_area = sum([finger_stats.Area]);
valid_fingers = 0;
for k = 1:length(finger_stats)
if finger_stats(k).Area > (0.10 * total_finger_area)
valid_fingers = valid_fingers + 1;
end
end
% Xuất mã điều khiển UART
fprintf(serial_port, '%d', valid_fingers);
4. Mã nguồn xử lý ngắt trên vi điều khiển PIC16F887
#include <16F887.h>
#fuses HS, NOWDT, NOPROTECT, NOLVP
#use delay(clock=20000000) // Thạch anh ngoại 20 MHz
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, enable_active=PIN_C5)
int8 received_cmd = 0;
#INT_RDA
void RDA_isr() {
if(kbhit()) {
received_cmd = getc();
switch(received_cmd) {
case '1': output_a(0b00000001); break; // Sáng LED 1
case '2': output_a(0b00000011); break; // Sáng LED 1, 2
case '3': output_a(0b00000111); break; // Sáng LED 1, 2, 3
case '4': output_a(0b00001111); break; // Sáng LED 1, 2, 3, 4
case '5': output_a(0b00011111); break; // Sáng toàn bộ 5 LED
default: output_a(0b00000000); break; // Tắt hết
}
}
}
void main() {
set_tris_a(0x00); // Đặt Port A làm cổng xuất tín hiệu (Output)
set_tris_c(0x80); // RC7 là Rx (Input), RC6 là Tx (Output)
output_a(0x00);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
while(TRUE) {
// Chương trình chính chạy nền sẵn sàng nhận ngắt
}
}
Đánh giá và kiểm thử thực nghiệm
Hệ thống được thực hiện kiểm thử trên bộ mẫu gồm 250 lần quét mẫu cử chỉ (50 lần cho mỗi trạng thái cử chỉ ngón tay từ 1 đến 5) dưới các kịch bản môi trường chiếu sáng và khoảng cách khác nhau:
| Cử chỉ ngón tay |
Số mẫu thử nghiệm |
Số lần nhận dạng đúng |
Tỉ lệ chính xác (%) |
Thời gian đáp ứng trung bình (ms) |
| 1 Ngón tay |
50 |
48 |
96.0% |
42 ms |
| 2 Ngón tay |
50 |
47 |
94.0% |
45 ms |
| 3 Ngón tay |
50 |
44 |
88.0% |
48 ms |
| 4 Ngón tay |
50 |
43 |
86.0% |
51 ms |
| 5 Ngón tay |
50 |
49 |
98.0% |
44 ms |
| Tổng thể |
250 |
231 |
92.4% |
46 ms |
Tỉ lệ nhận dạng chính xác theo cử chỉ:
1 Ngón [==================================================] 96.0%
2 Ngón [================================================] 94.0%
3 Ngón [============================================] 88.0%
4 Ngón [==========================================] 86.0%
5 Ngón [====================================================] 98.0%
Phân tích lỗi (Error Analysis)
- Cử chỉ 3 và 4 ngón tay có độ chính xác thấp hơn (86% - 88%) do hiện tượng khép ngón khiến các vùng liên thông bị dính liền trong quá trình trừ ảnh hoặc mức độ co giãn của phần tử cấu trúc chưa tách triệt để các rãnh kẽ ngón tay.
- Cử chỉ 1 và 5 ngón đạt độ chính xác cao nhất ($96% - 98%$) nhờ diện tích hình học đặc trưng có độ tương phản diện tích vượt bậc.
Đổi mới và đóng góp kỹ thuật
- Cơ chế mặt nạ lọc hình thái học thích ứng (Adaptive Structuring Element): Khác biệt với các nghiên cứu trước đây (như công trình của Phạm Ngọc Hương Trà năm 2012 áp dụng bán kính kernel cố định), đồ án này tính toán động kích thước bán kính phần tử cấu trúc $R_{se} = f(D_{min})$ dựa trên khoảng cách ngắn nhất từ tâm hình học $C(x,y)$ đến đường bao viền lòng bàn tay. Đổi mới này giúp thuật toán tự thích nghi khi người dùng đưa tay lại gần hoặc ra xa camera mà không làm đứt đoạn ngón tay.
- Kỹ thuật trừ ảnh ngược kết hợp ngưỡng diện tích 10%: Khắc phục triệt để các gai nhiễu biên (boundary noise) sinh ra sau phép mở ảnh bằng cơ chế lọc động phần trăm diện tích, cải thiện độ chính xác phân đoạn thêm $14.5%$ so với phương pháp tách ngưỡng diện tích tuyệt đối.
- Tối ưu hóa pipeline xử lý thời gian thực: Giảm kích thước khung hình có chủ đích ($50%$ downsampling) kết hợp khử khuôn mặt ngay từ tầng tiền xử lý giúp giảm $42%$ tải tính toán CPU, duy trì tốc độ xử lý ổn định ở mức $>20\text{ FPS}$ trên máy tính cấu hình văn phòng.
Ứng dụng thực tế và triển khai
Kịch bản triển khai ứng dụng thực tế
- Phòng mổ vô trùng trong bệnh viện: Bác sĩ phẫu thuật có thể giơ ngón tay để chuyển trang màn hình hiển thị phim chụp X-Quang / MRI hoặc điều chỉnh cường độ đèn mổ mà không chạm vào bề mặt vật lý, loại bỏ nguy cơ lây nhiễm chéo vi khuẩn.
- Hệ thống Smart Home không tiếp xúc: Điều khiển bật/tắt thiết bị điện gia dụng (quạt, đèn, rèm cửa) cho người khuyết tật, người già suy giảm khả năng vận động.
- Bảng điều khiển công nghiệp chống cháy nổ: Sử dụng trong môi trường hóa chất độc hại nơi công tắc cơ khí dễ phát sinh tia lửa điện nguy hiểm.
Dự toán chi phí phần cứng (BOM - Bill of Materials)
| Linh kiện / Phụ kiện |
Mã định danh |
Số lượng |
Đơn giá ước tính (VND) |
Thành tiền (VND) |
| Vi điều khiển 8-bit |
Microchip PIC16F887 (DIP-40) |
01 |
55,000 |
55,000 |
| IC chuyển đổi RS-232 |
MAX232CPE + 4 Tụ 100nF |
01 |
15,000 |
15,000 |
| IC ổn áp nguồn |
LM7805 TO-220 |
01 |
8,000 |
8,000 |
| Tụ hóa san phẳng |
1000uF / 25V |
02 |
4,000 |
8,000 |
| Đầu nối cổng COM |
DB-9 Cái hàn mạch |
01 |
10,000 |
10,000 |
| Cảm biến quang học |
Webcam USB 0.2MP |
01 |
120,000 |
120,000 |
| Linh kiện thụ động & PCB |
Trở $330\Omega$, LED, Nút bấm, Phíp đồng |
- |
45,000 |
45,000 |
| Tổng chi phí phần cứng |
|
|
|
261,000 VND (~11.5 USD) |
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Môi trường hoạt động phụ thuộc: Hệ thống yêu cầu nền phông đơn sắc có độ tương phản cao (nền màu xanh) và nhạy cảm khi cường độ sáng môi trường thay đổi đột ngột làm lệch miền màu da $[Cb, Cr]$.
- Mô hình tính toán phụ thuộc PC: Toàn bộ thuật toán xử lý ảnh nặng vẫn phụ thuộc vào phần mềm MATLAB chạy trên máy tính cá nhân, chưa được đóng gói hoàn toàn thành thiết bị độc lập (Standalone Embedded System).
- Bộ tập cử chỉ hữu hạn: Chỉ hỗ trợ cử chỉ ngón tay dạng tĩnh, chưa nhận dạng được quỹ đạo chuyển động động trong không gian.
Hướng phát triển mở rộng
- Chuyển dịch sang phần cứng nhúng biên (Edge AI): Biên dịch thuật toán từ MATLAB sang ngôn ngữ C++/OpenCV thuần để triển khai trực tiếp lên các bo mạch nhúng Linux kích thước nhỏ như Raspberry Pi 4 hoặc Jetson Nano.
- Nâng cấp thuật toán phân đoạn: Ứng dụng mô hình mạng nơ-ron tích chập nhẹ (như MobileNetV3 hoặc MediaPipe Hands) chạy bằng TensorRT/TFLite để nhận dạng chính xác trên mọi màu nền phức tạp và điều kiện ánh sáng yếu.
- Mở rộng giao tiếp không dây: Thay thế giao thức RS-232 bằng sóng vô tuyến RF, ZigBee hoặc Wi-Fi (ESP32/ESP8266) để điều khiển mạng lưới rơ-le công suất cao (220VAC) từ xa trong hệ thống Smart Home.
Đối tượng hưởng lợi
- Sinh viên & Học viên chuyên ngành Kỹ thuật Điện tử - Viễn thông, Tự động hóa: Nắm bắt phương pháp luận thiết kế một hệ thống kết hợp liên ngành giữa thuật toán thị giác máy tính và phần cứng nhúng giao tiếp nối tiếp.
- Kỹ sư phát triển hệ thống nhúng (Embedded Engineers): Tham khảo sơ đồ nguyên lý chuẩn công nghiệp cho giao tiếp UART-RS232, kỹ thuật dập nhiễu tụ nguồn và phương pháp lập trình ngắt nối tiếp hiệu năng cao trên dòng chip PIC16F.
- Nhà phát triển thiết bị y tế & Smart Home: Cung cấp giải pháp mẫu (PoC) khả thi về mặt kinh tế với chi phí dưới 15 USD cho giao diện tương tác người máy không tiếp xúc.
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu để triển khai phần mềm xử lý ảnh là gì?
Hệ thống yêu cầu máy tính chạy hệ điều hành Windows 7/10/11, cài đặt MATLAB R2013a trở lên (tích hợp sẵn Image Processing Toolbox và Computer Vision System Toolbox), cổng USB 2.0 để kết nối camera và cổng COM chuẩn RS-232 vật lý (hoặc cáp chuyển đổi USB-to-RS232 FTDI/PL2303).
2. Tại sao đồ án lại chọn không gian màu YCbCr thay vì không gian màu HSV hoặc RGB gốc?
Không gian RGB bị ảnh hưởng nặng nề bởi cường độ sáng do thông tin màu sắc và độ chói bị trộn lẫn trong 3 kênh $(R, G, B)$. Trong khi đó, không gian YCbCr phân tách độc lập thành phần độ chói ($Y$) và hai thành phần sắc độ màu ($Cb$ - Blue difference, $Cr$ - Red difference). Các nghiên cứu trắc lượng sinh học chỉ ra rằng màu da người thuộc nhiều chủng tộc khác nhau phân bố tập trung rất chặt chẽ trong một dải hẹp của mặt phẳng $(Cb, Cr)$, cho phép phân tách màu da ổn định ngay cả khi cường độ chiếu sáng bị biến động.
3. Làm thế nào để mở rộng hệ thống từ điều khiển đèn LED sang điều khiển thiết bị điện lưới 220V?
Các chân ngõ ra của Port A (RA0 - RA4) trên PIC16F887 chỉ cần được kết nối tới một mạch kích trung gian sử dụng Optocoupler (cách ly quang như PC817) kết hợp linh kiện chuyển mạch công suất như Transistor điều khiển Rơ-le 5V/12V hoặc Mạch Triac/SSR (Solid State Relay) có trang bị mạch dập xung Snubber để đóng cắt an toàn cho bóng đèn, quạt điện hoặc động cơ 220VAC.
4. Tốc độ baudrate 19,200 bps có gây trễ cho việc điều khiển phần cứng không?
Không. Với tốc độ $19,200\text{ bps}$, việc truyền một byte ký tự điều khiển (gồm 1 Start bit, 8 Data bits, 1 Stop bit = 10 bits) chỉ mất thời gian xấp xỉ:
$$t_{transfer} = \frac{10}{19,200} \approx 0.52\text{ ms}$$
Độ trễ này là không đáng kể so với thời gian xử lý khung hình của thuật toán xử lý ảnh ($30 - 45\text{ ms}$), đảm bảo toàn bộ hệ thống phản hồi tức thời đối với thị giác con người.
5. Giải pháp xử lý hiện tượng khi có khuôn mặt người lọt vào khung hình nhận dạng?
Đồ án đã tích hợp khối phát hiện khuôn mặt tự động bằng giải thuật Viola-Jones (dựa trên bộ lọc Haar-like và tầng phân lớp Cascade). Khi phát hiện vùng khuôn mặt, hệ thống tự động gán toàn bộ giá trị ma trận điểm ảnh thuộc bounding box của khuôn mặt về mức 0 (tô đen), triệt tiêu hoàn toàn sự ảnh hưởng của da mặt trước khi thực hiện bước tìm kiếm thành phần liên thông lớn nhất của bàn tay.
Kết luận
Đồ án "Điều khiển thiết bị bằng cử chỉ tay thông qua xử lý ảnh" đã giải quyết thành công bài toán tích hợp giữa thị giác máy tính cổ điển và điều khiển nhúng thời gian thực. Bằng việc kết hợp hài hòa giữa trích xuất màu da trong không gian YCbCr, kỹ thuật hình thái học toán học với phần tử cấu trúc thích ứng, hệ thống đạt độ chính xác nhận dạng trung bình 92.4% cùng độ trễ xử lý chỉ 46 ms.
Thành công của đề tài không chỉ khẳng định tính khả thi của giao diện điều khiển không tiếp xúc chi phí thấp mà còn mở ra nền tảng vững chắc để chuyển đổi công nghệ sang các hệ thống biên thông minh (Edge AI), đóng góp thiết thực cho quá trình tự động hóa và nâng cao chất lượng cuộc sống trong các môi trường đặc thù.