Giới thiệu

Một phần của tài liệu xây dựng hệ thống tương tác giữa người và máy thông qua nhận dạng cử chỉ bàn tay (Trang 73)

Ở các chương trên đã giới thiệu những lý thuyết, thuật toán sẽ được sử dụng để xây dựng hệ thống tương tác giữa người và máy thông qua nhận dạng dáng điệu của bàn tay.

Hệ thống được thiết kế trên mô hình Server/Client như:

Hình 3.1-1: Mô hình liên kết của hệ thống

Recognition Sever sẽ nhận hình ảnh từ webcam, tiến hành xử lý và nhận dạng. Sau đó gửi kết quả nhận dạng được theo giao thức UDP trên cổng 16119. Định dạng kết quả được gửi từ server như sau:

H:code:x:y hoc G:code:x:y

Với tiền tố H có nghĩa là Hand Posture, G là Hand Gesture. Code là mã số lớp mà mẫu thuộc về. (x,y) là tọa độ của bàn tay. VD: H:0:3:54

Chương trình hiện tại làm việc với 12 lớp posture (hình dạng tay tĩnh), 6 lớp gesture (đường chuyển động/dáng điệu của tay).

0 1 2 3 4 5 6 7 8 9 10 11

0 1 2 3 4 5

Để thực hiện một gesture, ta dùng posture code 2 để báo hiệu bắt đầu và posture code 0 để kết thúc.

Hình 3.1-2: Cách thực hiện gesture số 0.

Sau khi nhận được kết quả nhận dạng từ chương trình server, chương trình client sẽ dựa vào tập tin cấu hình để phát ra các sự kiện giả lập bàn phím hoặc chuột, nhằm điều khiển một chương trình nào đó.

Hình 3.1-3: Giao diện chương trình Client.

Quá trình nhận dạng của chương trình Server như sau:

Ảnh đầu vào được xem như là một mẫu thử, dựa vào các kết quả từ giai đoạn huấn luyện. Chương trình sẽ phân loại xem posture thuộc lớp nào trong 12 lớp đã học được. Nếu chương trình bắt gặp posture code 2 (bắt đầu thực hiện gesture) nó sẽ lưu lại tất cả những vị trí của bàn tay trong lúc di chuyển vào một bộ đệm cho đến khi nhận

sẽ được tiến hành tiền xử lý và nhận dạng gesture bằng phương pháp DTW và GSS ở trên. Bộđệm sau đó sẽđược xóa trắng và lặp lại tiếp tục như trên.

Để nhận dạng hand posture xem nó thuộc về lớp nào trong 12 lớp trên thì chương trình server phải tiến hành một loạt các thao tác xử lý ảnh, các thuật toán học máy (machine learning) như biểu đồ ở dưới đây.

Hình 3.1-4: Quá trình nhận dạng posture của server.

Chương trình server sẽ xây dựng mô hình nền (background model) theo phương pháp Codebook bằng cách quan sát các ảnh đầu vào một thời gian (khoảng vài giây), sau đó dùng mô hình nền này để tách đối tượng cận cảnh (foreground) ra khỏi nền. Tiếp theo ta tiến hành phát hiện vùng màu da (skin detection) bằng phương pháp giới hạn biên ở phần lý thuyết. Việc trừ nền sẽ giúp tăng tốc skin detection vì giới hạn vùng tìm kiếm, đồng thời giúp giảm bớt sai số nhiễu từ môi trường.

Hình 3.1-5: Quá trình trừ nền

Ta dùng các phép lọc theo hình thái (morphological filtering) trên vùng màu da phát hiện ở bước trên để giảm bớt nhiễu. Sau đó, tìm khung bao chữ nhật (bounding rectangle) của nó, dùng khung bao này để lấy được mặt nạ trắng đen của tay. Tiến hành một vài phép biến đổi như tỉ lệ, tịnh tiến, quay nhằm đưa mặt nạ tay vừa khớp vào một hình tròn đơn vị có bán kính bằng 128 pixel.

Hình 3.1-6: Thực hiện morphological filtering, và chuẩn hóa mặt nạ tay thu được bằng các phép biến đổi hình học như quay, tịnh tiến, tỉ lệ.

Tiến hành rút trích đặc trưng trên mặt nạ tay đã chuẩn hóa bằng phương pháp Generic Fourier Descriptor, ta được một dãy các hệ số PFT (vector đặc trưng).

Ta dùng phương pháp tìm K láng giềng gần nhất bằng phép xấp xỉ giữa mẫu thử và các mẫu trong dữ liệu huấn luyện, rồi tính khoảng cách DTW theo vector đặc trưng giữa mẫu thử này và lần lượt K mẫu láng giềng tìm được. Ta tiến hành giảm các khoảng cách DTW này đi 27% (được chọn trong thực nghiệm) nếu mã lớp của nó trùng với mã lớp nhận được từ việc phân loại mẫu bằng phương pháp SVM. Sau đó ta chọn láng giềng có khoảng cách DTW nhỏ nhất, nếu khoảng cách này bé hơn “ngưỡng phân loại” thì lớp nhận dạng được chính là mã lớp của mẫu này, ngược lại nó sẽ trả về mã lớp là -1 (không thuộc lớp nào).

Một phần của tài liệu xây dựng hệ thống tương tác giữa người và máy thông qua nhận dạng cử chỉ bàn tay (Trang 73)