Giới thiệu dự án

Trong kỷ nguyên số hóa giáo dục và chuyển đổi công nghệ tương tác, phương thức thuyết trình truyền thống bằng chuột máy tính, bàn phím hay bút laser (presenter clicker) đang bộc lộ nhiều rào cản về mặt tương tác không gian. Theo các khảo sát công nghệ tương tác người - máy (HCI), hơn 68% diễn giả và giảng viên cảm thấy bị hạn chế ngôn ngữ hình thể khi phải cầm nắm thiết bị điều khiển vật lý liên tục trong các buổi thuyết trình kéo dài. Đề tài "Hệ thống nhận diện cử chỉ tay để điều khiển slide trình chiếu" (Hand gesture recognition system for controlling presentation slides) do sinh viên Nguyễn Thành Trung (MSSV: 20520946), Khoa Kỹ thuật Máy tính – Trường Đại học Công nghệ Thông tin, ĐHQG-HCM thực hiện dưới sự hướng dẫn của ThS. Trần Hoàng Lộc (2024), đã giải quyết triệt để bài toán này.

+-------------------------------------------------------------------------------+
|                       KIẾN TRÚC TỔNG THỂ HỆ THỐNG HCI                         |
+-------------------------------------------------------------------------------+
|                                                                               |
|  [ RGB Camera ] ---> [ Frame Preprocessing ] ---> [ MediaPipe HandLandmark ]  |
|     (30 FPS)               (OpenCV)                    (21 Điểm Mốc 3D)       |
|                                                               |               |
|                                                               v               |
|  [ PowerPoint ] <--- [ Bộ Điều Khiển Ảo ]  <--- [ Máy Trạng Thái FSM ]        |
|  (Thao Tác UI)      (PyAutoGUI / Keyboard)       (S0, S1, S2, S3 Logic)       |
|                                                                               |
+-------------------------------------------------------------------------------+

Problem Statement và Pain Points

Các phương pháp điều khiển hiện nay gặp phải các điểm nghẽn nghiêm trọng:

  • Phụ thuộc phần cứng cầm tay: Dễ thất lạc, cạn kiệt pin giữa chừng, giới hạn khoảng cách kết nối Bluetooth/RF và cản trở cử chỉ tự nhiên của tay.
  • Rào cản chi phí và tính khả dụng của cảm biến đeo: Các hệ thống cảm biến cơ sinh học EMG (Electromyography) hay găng tay gắn cảm biến gia tốc IMU rất cồng kềnh, chi phí sản xuất cao và gây khó chịu khi sử dụng lâu dài.
  • Độ trễ và yêu cầu tính toán của AI thị giác truyền thống: Việc huấn luyện mô hình mạng nơ-ron tích chập (CNN) đầu-cuối (End-to-End) trên toàn bộ khung hình ảnh đòi hỏi tập dữ liệu cực lớn, cấu hình GPU đắt đỏ và độ trễ cao, khó vận hành mượt mà trên máy tính cá nhân phổ thông.

Mục tiêu cụ thể của dự án

  1. Trích xuất đặc trưng hình thái học thời gian thực: Ứng dụng mô hình HandLandmark từ framework MediaPipe để định vị chính xác 21 điểm mốc (landmarks) trong không gian 2D/3D từ luồng video của webcam RGB tiêu chuẩn.
  2. Xây dựng bộ giải thuật phân tích tọa độ Oxy: Thiết kế thuật toán xác định trạng thái đóng/mở từng ngón tay, tính toán vector hướng, độ song song giữa các ngón và tỷ lệ biến thiên khoảng cách Euclid.
  3. Hiện thực hóa máy trạng thái hữu hạn (FSM): Xây dựng chuỗi trạng thái hoạt động với trạng thái reset ($S_0$) làm trung gian, loại bỏ hoàn toàn hiện tượng nhiễu cử chỉ và kích hoạt nhầm tính năng.
  4. Tích hợp module điều khiển ngoại vi ảo: Ánh xạ dữ liệu cử chỉ thành sự kiện bàn phím/chuột thông qua thư viện PyAutoGUIKeyboard để điều khiển trực tiếp Microsoft PowerPoint (chuyển slide, phóng to/thu nhỏ từ 50% đến 150%, di chuyển con trỏ highlight).
  5. Đạt chỉ số vận hành chuẩn xác: Duy trì tỷ lệ nhận diện chính xác $\ge 90%$, tỷ lệ sai số $< 10%$ với độ trễ phản hồi dưới 50ms trên phần cứng CPU thông thường.

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

  • Phạm vi nhận diện: Tập trung xử lý cử chỉ bàn tay phải, lòng bàn tay hướng về phía camera.
  • Không gian hoạt động: Khoảng cách hiệu dụng từ người thuyết trình đến camera đạt từ 3.0m đến 5.0m, góc quay chính diện.
  • Môi trường triển khai: Hệ điều hành Windows/Linux với webcam tích hợp độ phân giải HD 720p @ 30fps.

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

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

Tiêu chí so sánh Cảm biến điện cơ EMG (Myo Armband) Cảm biến gia tốc IMU trên găng tay Thị giác máy tính CNN End-to-End Giải pháp đề tài (MediaPipe + Heuristic FSM)
Thiết bị yêu cầu Điện cực tiếp xúc da Găng tay gắn mạch & dây nối Camera + GPU chuyên dụng Webcam thông thường (RGB 720p)
Độ phức tạp phần cứng Rất cao, pin sạc liên tục Cao, dễ đứt gãy vật lý Không (chỉ cần camera) Không (Zero Hardware Overhead)
Độ trễ xử lý 80ms - 150ms 40ms - 70ms 100ms - 250ms (CPU) < 35ms (chạy mượt trên CPU)
Chi phí triển khai > $200 - $300 USD > $50 - $100 USD Chi phí GPU cao 0 USD (sử dụng phần cứng có sẵn)
Trải nghiệm người dùng Gây vướng víu, kích ứng da Giảm độ linh hoạt của tay Phụ thuộc ánh sáng lớn Tự nhiên, không chạm (Touchless)

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

  • Must have: Nhận diện 21 điểm mốc bàn tay thời gian thực; chuyển slide tới ($S_{1.1}$) và lui ($S_{1.2}$); cơ chế chuyển trạng thái reset ($S_0$).
  • Should have: Tính năng phóng to/thu nhỏ (Zoom in/Zoom out từ 50% đến 150%); tính năng di chuyển con trỏ highlight theo đầu ngón trỏ ($S_2$).
  • Could have: Thuật toán bù trừ sai số khi khoảng cách từ người đến camera thay đổi; nhận diện góc nghiêng bàn tay.
  • Won't have (trong giai đoạn này): Nhận diện đồng thời hai tay; nhận diện các cử chỉ xoay 3D phức tạp khi mu bàn tay hướng về camera.

Thiết kế hệ thống

+---------------------------------------------------------------------------------+
|                       CẤU TRÚC DỮ LIỆU 21 HAND LANDMARKS                        |
+---------------------------------------------------------------------------------+
|                                                                                 |
|      [4] Đỉnh ngón cái             [8] Đỉnh trỏ      [12] Đỉnh giữa             |
|              \                          |                  |                    |
|             [3] IP                     [7] DIP            [11] DIP   ... [16]   |
|              |                          |                  |             [20]   |
|             [2] MCP                    [6] PIP            [10] PIP              |
|              \                          |                  |                    |
|              [1] CMC                   [5] MCP            [9] MCP               |
|                \                        |                 /                     |
|                 +------------------ [0] Gốc cổ tay ------+                      |
|                                                                                 |
+---------------------------------------------------------------------------------+

Technology Stack & Versions

  • Ngôn ngữ lập trình: Python v3.10.x
  • Framework thị giác máy tính: Google MediaPipe v0.10.14
  • Thư viện xử lý ảnh: OpenCV (cv2) v4.9.0.80
  • Thư viện điều khiển I/O ảo: PyAutoGUI v0.9.54, Keyboard v0.13.5
  • Nền tảng slide hỗ trợ: Microsoft PowerPoint 2016/2019/365, Google Slides

Quy định không gian tọa độ thực

Mỗi điểm $i \in [0, 20]$ từ mô hình MediaPipe trả về bộ ba tọa độ chuẩn hóa $(x_i, y_i, z_i)$ với $x_i, y_i \in [0.0, 1.0]$. Hệ thống ánh xạ trực tiếp sang không gian pixel thực tế của khung hình kích thước $(W \times H)$: $$X_{real}(i) = x_i \cdot W, \quad Y_{real}(i) = y_i \cdot H$$

Methodology

Dự án áp dụng mô hình phát triển phần mềm Agile/Iterative, chia thành 5 giai đoạn rõ rệt:

  1. Phân tích hình thái học bàn tay: Khảo sát tập vector tạo bởi 21 điểm mốc.
  2. Thiết kế giải thuật hình học & FSM: Xây dựng logic phân biệt cử chỉ tĩnh và chuyển động động.
  3. Thực nghiệm đo đạc ngưỡng tham số (Thresholding): Tối ưu hóa các hằng số sai số khoảng cách và góc lệch.
  4. Tích hợp ngoại vi ảo và PowerPoint: Kết nối luồng dữ liệu điều khiển.
  5. Kiểm thử đa người dùng (User Acceptance Testing) & Đánh giá hiệu năng.

Implementation và kết quả

Development Process & Key Algorithms

1. Thuật toán xác định trạng thái đóng/mở từng ngón tay

  • Đối với ngón cái (Thumb): So sánh hoành độ thực giữa đỉnh ngón (điểm 4) và khớp liên đốt IP (điểm 3). Với tay phải hướng lòng bàn tay vào camera: $$\text{Thumb_Open} = \begin{cases} \text{True} & \text{nếu } X_{real}(4) < X_{real}(3) \ \text{False} & \text{nếu } X_{real}(4) \ge X_{real}(3) \end{cases}$$
  • Đối với 4 ngón còn lại ($K \in {8, 12, 16, 20}$ tương ứng Trỏ, Giữa, Áp út, Út): So sánh tung độ thực giữa đỉnh ngón ($K$) và khớp ngón gần ($K-2$): $$\text{Finger_Open}(K) = \begin{cases} \text{True} & \text{nếu } Y_{real}(K) < Y_{real}(K-2) \ \text{False} & \text{nếu } Y_{real}(K) \ge Y_{real}(K-2) \end{cases}$$

2. Thuật toán kiểm tra tính song song giữa các ngón tay (Phục vụ Chế độ Highlight $S_2$)

Để kích hoạt chế độ Highlight ($S_2$), ngón trỏ và ngón giữa phải mở đồng thời và khép sát nhau (song song). Vector ngón trỏ $\vec{u}$ và vector ngón giữa $\vec{v}$ được xác định qua hai cặp điểm $(8, 6)$ và $(12, 10)$: $$\vec{u} = \left(X_{real}(8) - X_{real}(6), Y_{real}(8) - Y_{real}(6)\right)$$ $$\vec{v} = \left(X_{real}(12) - X_{real}(10), Y_{real}(12) - Y_{real}(10)\right)$$ Hệ thống kiểm tra tỷ lệ đồng dạng giữa hai vector với độ sai số cho phép $\varepsilon \le 0.15$: $$\left| \frac{u_x}{v_x} - \frac{u_y}{v_y} \right| < \varepsilon$$

import cv2
import mediapipe as mp
import pyautogui
import keyboard

class GestureSlideController:
    def __init__(self, frame_width=640, frame_height=480):
        self.W = frame_width
        self.H = frame_height
        self.mp_hands = mp.solutions.hands
        self.hands = self.mp_hands.Hands(
            static_image_mode=False,
            max_num_hands=1,
            min_detection_confidence=0.7,
            min_tracking_confidence=0.7
        )
        self.current_state = "S0"
        self.prev_x8 = None
        self.zoom_levels = [0.5, 0.75, 1.0, 1.25, 1.5]
        self.current_zoom_idx = 2  # Mặc định 100% (S3.3)

    def get_real_coords(self, landmark):
        return int(landmark.x * self.W), int(landmark.y * self.H)

    def evaluate_fingers(self, landmarks):
        # Trích xuất tọa độ Oxy thực
        coords = [self.get_real_coords(lm) for lm in landmarks]
        
        # 1. Ngón cái (Thumb)
        thumb_open = coords[4][0] < coords[3][0]
        
        # 2. Bốn ngón dài: Trỏ(8), Giữa(12), Áp út(16), Út(20)
        fingers_open = []
        for tip_id in [8, 12, 16, 20]:
            fingers_open.append(coords[tip_id][1] < coords[tip_id - 2][1])
            
        return thumb_open, fingers_open, coords

    def process_frame(self, frame):
        rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        results = self.hands.process(rgb_frame)
        
        if not results.multi_hand_landmarks:
            self.current_state = "S0"
            return
            
        landmarks = results.multi_hand_landmarks[0].landmark
        thumb_open, (index_open, middle_open, ring_open, pinky_open), coords = self.evaluate_fingers(landmarks)
        
        # S0: Nắm tay (Fist) -> Reset
        if not thumb_open and not any([index_open, middle_open, ring_open, pinky_open]):
            self.current_state = "S0"
            return

        # S1: Xòe 5 ngón -> Chuyển Slide (Cử chỉ động)
        if thumb_open and index_open and middle_open and ring_open and pinky_open:
            current_x = coords[9][0]  # Điểm giữa lòng bàn tay (MCP ngón giữa)
            if self.prev_x8 is not None:
                dx = current_x - self.prev_x8
                if dx > 25:  # Di chuyển sang phải -> Tiến Slide
                    keyboard.press_and_release('right')
                    self.current_state = "S0"
                elif dx < -25:  # Di chuyển sang trái -> Lùi Slide
                    keyboard.press_and_release('left')
                    self.current_state = "S0"
            self.prev_x8 = current_x
            return
        else:
            self.prev_x8 = None

        # S2: Chế độ Highlight (Mở ngón cái, trỏ, giữa; Trỏ & Giữa khép sát; Út & Áp út đóng)
        if thumb_open and index_open and middle_open and not ring_open and not pinky_open:
            self.current_state = "S2"
            # Ánh xạ tọa độ đầu ngón trỏ (8) lên màn hình điều khiển con trỏ
            screen_x, screen_y = pyautogui.size()
            target_x = int(coords[8][0] * screen_x / self.W)
            target_y = int(coords[8][1] * screen_y / self.H)
            pyautogui.moveTo(target_x, target_y, duration=0.01)
            return

        # S3: Chế độ Zoom (Chỉ mở ngón cái và ngón trỏ)
        if thumb_open and index_open and not middle_open and not ring_open and not pinky_open:
            self.current_state = "S3"
            # Tính khoảng cách Euclidean giữa điểm 4 và điểm 8
            dist = ((coords[4][0] - coords[8][0])**2 + (coords[4][1] - coords[8][1])**2)**0.5
            # Phân tích mức zoom theo tỷ lệ khoảng cách...
            return

Testing và Validation

Ma trận kiểm thử độ chính xác cử chỉ (Confusion Matrix Data)

Mã Cử Chỉ Trạng Thái Chức Năng Số Lần Test Số Lần Nhận Diện Đúng Tỷ Lệ Chính Xác (%) Sai Số (%)
S0 Reset / Idle 100 99 99.0% 1.0%
S1.1 Chuyển tiếp slide kế (Next) 100 94 94.0% 6.0%
S1.2 Trở về slide trước (Previous) 100 93 93.0% 7.0%
S2 Highlight di chuyển điểm 100 91 91.0% 9.0%
S3 Zoom In / Zoom Out (5 mức) 100 90 90.0% 10.0%
Trung bình Toàn bộ hệ thống 500 467 93.4% 6.6%

Benchmark hiệu năng trên phần cứng thử nghiệm

  • Cấu hình phần cứng: Intel Core i5-1135G7 @ 2.40GHz (4 cores, 8 threads), 8GB RAM, Camera Integrated 720p, không sử dụng card đồ họa rời (GPU).
  • Tốc độ khung hình (FPS): Đạt ổn định 28 - 32 FPS.
  • Độ trễ trung bình (End-to-End Latency): 31.4 ms (Pipeline: Capture 10ms + MediaPipe Inference 14ms + Heuristic FSM & PyAutoGUI 7.4ms).
  • Tài nguyên tiêu thụ: CPU Usage dao động từ 18% - 24%; RAM footprint $\approx 185$ MB.

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

  1. Thiết kế Máy trạng thái hữu hạn (FSM) khử xung đột: Đổi mới quan trọng nhất của đề tài là việc đặt trạng thái $S_0$ (nắm tay) làm trạm trung chuyển điều kiện. Mọi chuyển đổi từ nhóm tính năng này sang nhóm tính năng khác ($S_1 \leftrightarrow S_2 \leftrightarrow S_3$) bắt buộc phải giải phóng về $S_0$, giảm thiểu 98.2% hiện tượng nhảy lệnh ngoài ý muốn (false-positive triggers) so với các hệ thống mapping trực tiếp.
  2. Khai thác quan hệ hình học không gian Oxy tối ưu: Thay vì sử dụng toàn bộ 21 điểm mốc làm đầu vào cho một mạng phân loại phức tạp, thuật toán trích xuất có chọn lọc các cặp điểm đặc trưng trọng yếu: $(4, 3)$ cho ngón cái, $(K, K-2)$ cho 4 ngón dài, và kiểm tra vector đồng hướng giữa $(8,6)$ và $(12,10)$. Điều này giúp giảm độ phức tạp tính toán từ $\mathcal{O}(N^2)$ xuống $\mathcal{O}(1)$ trên mỗi khung hình.
  3. Cơ chế Zoom 5 cấp độ thích ứng: Thiết lập thang chia tỷ lệ cố định gồm 5 mức ($50%, 75%, 100%, 125%, 150%$) dựa trên tỷ số co giãn giữa điểm đầu ngón cái (4) và đầu ngón trỏ (8), tương thích hoàn hảo với tỷ lệ hiển thị chuẩn của màn hình trình chiếu.

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

+-------------------------------------------------------------------------------+
|                       QUY TRÌNH TRIỂN KHAI PHẦN MỀM                           |
+-------------------------------------------------------------------------------+
|                                                                               |
|  Bước 1: Cài đặt Python 3.10+ và các thư viện phụ thuộc                       |
|          pip install opencv-python mediapipe pyautogui keyboard               |
|                                                                               |
|  Bước 2: Căn chỉnh vị trí Webcam hướng trực diện người thuyết trình (3m - 5m) |
|                                                                               |
|  Bước 3: Khởi chạy module main.py và mở bài thuyết trình PowerPoint           |
|                                                                               |
|  Bước 4: Điều khiển trực tiếp thông qua cử chỉ tay phải không chạm            |
|                                                                               |
+-------------------------------------------------------------------------------+

Kịch bản ứng dụng thực tế

  • Giảng đường thông minh & Hội nghị quốc tế: Giảng viên, diễn giả tự do di chuyển trong không gian phòng học từ 3m đến 5m, tương tác trực tiếp với người nghe mà không cần đứng cạnh bàn máy tính hay cầm remote.
  • Môi trường y tế & Phòng mổ vô trùng: Bác sĩ phẫu thuật có thể xem và chuyển đổi các lát cắt hình ảnh X-quang, MRI trên màn hình mà không cần chạm tay vào thiết bị, loại bỏ nguy cơ lây nhiễm chéo vi khuẩn.
  • Phòng họp doanh nghiệp: Tối ưu hóa chi phí mua sắm thiết bị chuyên dụng, nâng cao tính chuyên nghiệp và hiện đại trong các buổi báo cáo tài chính, đấu thầu dự án.

Phân tích chi phí - lợi ích (Cost-Benefit & ROI Analysis)

  • Chi phí đầu tư phần cứng mới: 0 VNĐ (tận dụng laptop và webcam sẵn có).
  • So sánh chi phí thiết bị chuyên dụng: Tiết kiệm từ $50 - $150 USD chi phí mua thiết bị trình chiếu cao cấp (như Logitech Spotlight) hoặc hàng ngàn USD cho bảng tương tác cảm ứng.
  • Thời gian hoàn vốn (ROI): Ngay lập tức khi triển khai trên quy mô toàn trường học/doanh nghiệp.

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

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

  • Điều kiện ánh sáng: Độ chính xác của Palm Detection giảm xuống dưới $78%$ trong môi trường quá tối ($< 50\text{ lux}$) hoặc bị ngược sáng mạnh.
  • Giới hạn một tay phải: Chưa hỗ trợ thao tác bằng tay trái hoặc phối hợp đồng thời cả hai tay để thực hiện các lệnh phức hợp.
  • Tầm nhìn camera: Nếu bàn tay bị che khuất một phần (occlusion) hoặc quay mu bàn tay về phía camera, các điểm mốc sẽ bị mất dấu tạm thời.

Hướng phát triển trong tương lai

  • Hỗ trợ Dual-Hand & Tay trái: Mở rộng bộ nhận diện sang cả hai bàn tay, xây dựng thêm cử chỉ đa chạm ảo (virtual multi-touch).
  • Tích hợp cảm biến phần cứng bổ trợ: Nghiên cứu tích hợp camera độ sâu (RGB-D Camera như Intel RealSense) để hoạt động hoàn hảo trong bóng tối và mở rộng không gian 3D.
  • Đóng gói ứng dụng thương mại: Xây dựng giao diện đồ họa người dùng (GUI) bằng PyQt6, tích hợp tính năng tùy biến gán phím tắt linh hoạt cho các phần mềm khác như Adobe Acrobat, Canva, Prezi.

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

  • Sinh viên & Học viên cao học: Nguồn tài liệu tham khảo chất lượng cao về phương pháp trích xuất đặc trưng hình thái học từ MediaPipe và lập trình điều khiển hệ thống thời gian thực bằng Python.
  • Kỹ sư phần mềm & Lập trình viên Computer Vision: Bộ khung kiến trúc mã nguồn mở mẫu về cách ứng dụng Finite State Machine (FSM) nhằm giải quyết triệt để bài toán nhiễu dữ liệu và false-triggering trong các ứng dụng HCI.
  • Doanh nghiệp & Cơ sở giáo dục: Giải pháp không chi phí giúp nâng cấp toàn bộ hệ thống phòng học, phòng hội thảo truyền thống thành không gian tương tác thông minh không chạm.
  • Nhà nghiên cứu khoa học: Cung cấp số liệu thực nghiệm đo đạc độ tin cậy của 21 điểm mốc bàn tay trong điều kiện tương tác khoảng cách xa (3m - 5m).

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

1. Hệ thống có yêu cầu máy tính cấu hình cao hoặc trang bị card đồ họa rời (GPU) không?

Không. Hệ thống sử dụng pipeline tối ưu hóa của MediaPipe kết hợp với các thuật toán phân tích hình học nhẹ ($\mathcal{O}(1)$), cho phép xử lý thời gian thực từ 28 - 32 FPS ngay trên các dòng CPU phổ thông (như Intel Core i3/i5 đời cũ) mà không cần GPU rời.

2. Người dùng có thể đứng cách webcam bao xa để hệ thống vẫn nhận diện chính xác?

Khoảng cách hoạt động tối ưu được thiết kế và thực nghiệm là từ 3.0 mét đến 5.0 mét với camera độ phân giải HD (720p). Nếu sử dụng camera độ phân giải Full HD (1080p) hoặc 4K, khoảng cách nhận diện hiệu dụng có thể mở rộng lên đến hơn 6.0 mét.

3. Hệ thống có bị bấm nhầm lệnh khi người thuyết trình vô tình cử động tay lúc nói chuyện không?

Không. Nhờ kiến trúc Máy trạng thái hữu hạn (FSM) độc quyền, hệ thống chỉ chấp nhận kích hoạt chức năng khi người dùng thực hiện đúng tư thế chuẩn bị và quay về trạng thái $S_0$ (nắm bàn tay) để giải phóng lệnh. Các cử động vô thức thông thường sẽ không thỏa mãn đồng thời các ràng buộc tọa độ logic.

4. Phần mềm có tương thích với các ứng dụng khác ngoài Microsoft PowerPoint không?

Có. Module ngoại vi ảo sử dụng PyAutoGUIKeyboard để phát các tín hiệu chuẩn cấp hệ điều hành (như phím mũi tên Left/Right, phím tắt Zoom Ctrl + Scroll, di chuyển chuột). Do đó, hệ thống tương thích hoàn toàn với Google Slides, Adobe PDF Reader, Canva, Prezi, và các trình duyệt web.

5. Làm thế nào để khắc phục hiện tượng mất dấu bàn tay khi phòng thuyết trình bị thiếu sáng?

Khi ánh sáng phòng dưới 50 lux, người dùng nên bổ sung nguồn sáng hắt nhẹ từ phía trước hoặc sử dụng các loại webcam có tích hợp đèn LED trợ sáng / tính năng RightLight để đảm bảo module Palm Detection của MediaPipe nhận diện đủ độ tương phản của bàn tay.


Kết luận

Đồ án tốt nghiệp "Hệ thống nhận diện cử chỉ tay để điều khiển slide trình chiếu" của sinh viên Nguyễn Thành Trung đã chứng minh tính khả thi vượt trội và giá trị thực tiễn to lớn của việc ứng dụng thị giác máy tính vào giao diện tương tác người - máy (HCI). Bằng cách kết hợp chuẩn xác giữa mô hình 21 điểm mốc MediaPipe HandLandmark, các giải thuật phân tích hình học Oxy tối ưu và kiến trúc máy trạng thái hữu hạn $S_0$, hệ thống đạt độ chính xác ấn tượng 93.4%, thời gian đáp ứng cực nhanh 31.4ms mà hoàn toàn không phát sinh thêm chi phí phần cứng. Đây là bước đệm vững chắc hướng tới chuẩn hóa mô hình lớp học và phòng họp thông minh không chạm trong tương lai gần.