Giải thuật quét ảnh nhận dạng cử chỉ tay

Một phần của tài liệu ĐIỀU KHIỂN XE LĂN BẰNG CỬ CHỈ BÀN TAY (Trang 75 - 85)

8. Đề nghị: Được bảo vệ Bổ sung thêm để bảo vệ Không được bảo vệ

4.2.1Giải thuật quét ảnh nhận dạng cử chỉ tay

a) Giải thuật quét ảnh

Đối tƣợng quan tâm đƣợc phát hiện và đƣợc tracking trên từng khung hình một từ video input. Một cửa sổ sub-window có khả năng thay đổi kích thƣớc đƣợc quét từ góc trên bên trái của ảnh đến góc dƣới bên phải của ảnh. Sub-window sẽ đƣợc dịch từng pixel một để có thể quét tất cả các vùng trên ảnh.

Khi kích thƣớc bàn tay ở video input thay đổi thì kích thƣớc của sub-window cũng thay đổi theo để bàn tay ở những kích thƣớc khác nhau có thể đƣợc phát hiện (hình 4.3).

Hình 4.3 Kích thước của sub-window có thể thay đổi nhờ hệ số tỉ lệ

Đối với sub-window có khả năng thay đổi kích thƣớc, tiếp cận lý tƣởng là khởi tạo một sub-window có kích thƣớc rất nhỏ và tăng kích thƣớc này lên từng pixel một cho chiều rộng và chiều cao sau mỗi lần quét. Nhƣ thế thì có thể dò tìm tất cả các kích thƣớc bàn tay trong chuỗi ảnh đƣa vào. Tuy nhiên, cách làm này đồng nghĩa với có một lƣợng rất lớn sub-window cần đƣợc tính toán, và điều này dẫn đến hệ thống không có khả năng hoạt động ở chế độ thời gian thực. Để tránh phải tính toán quá nhiều sub-window nhƣ thế, một số lƣợng sub-window không cần thiết nên đƣợc loại bỏ. Một hệ số tỉ lệ (scale factor) nên đƣợc sử dụng để thực hiện điều này.

Giả sử frame ảnh đƣa vào có kích thƣớc WxH, chƣơng trình quét với sub-window có kích thƣớc DxR, hệ số tỉ lệ là k thì số sub-window phải sử dụng là: 0 ( . )( . ) n i i i W D k H R k    

Trong đó n là số lần quét, n thỏa điều kiện: . . i i D k W R k H      

GVHD: HUỲNH THÁI HOÀNG Trang 61 Với công thức trên có thể thấy nếu khung hình có kích thƣớc (640x480), sub-window có kích thƣớc 24x24, k=1.1 thì ta có số sub-window phải xử lý: 31 0 (640 24.1,1 )(480 24.1,1 )i i 5643816 i    

Nếu tăng kích thƣớc lên 120x120 thì số sub-window phải xử lý 14 0 (640 120.1,1 )(480 120.1,1 ) 1465737i i i    

Điều này đồng nghĩa với tốc độ xử lý tăng lên gấp 3,85 lần !.

Khi hệ thống phải xử lý nhiều bàn tay cùng lúc thì tốc độ sẽ đƣợc cải thiện đáng kể nếu quét đối tƣợng với kích thƣớc lớn.

Hình 4.4 là sơ đồ khối quá trình nhận dạng bàn tay từ ảnh trong video input

GVHD: HUỲNH THÁI HOÀNG Trang 62

Hình 4.5 Các bộ phân loại ghép cascade được nối song song với nhau

Trong thực tế để nhận dạng cùng lúc nhiều bàn tay, những bộ phân loại đƣợc ghép song song với nhau để cùng lúc xử lý nhiều bàn tay.

Khi hệ thống hoạt động các bộ phân loại đƣợc load đồng thời, mỗi bộ phân loại sẽ nhận dạng một cử chỉ riêng. Cấu trúc song song cho phép tăng tốc độ xử lý và giúp hệ thống có khả năng hoạt động thời gian thực khi phải nhận dạng nhiều cử chỉ cùng lúc.

b) Giải thuật nhận dạng cử chỉ tay

Thu ảnh positive

Bƣớc đầu tiên cũng là bƣớc rất quan trọng, ảnh hƣởng rất lớn đến toàn bộ quá trình nhận dạng sau này đó chính là bƣớc thu thập dữ liệu huấn luyện. Bởi một tập huấn luyện tốt sẽ giúp cho hệ thống trích ra những đặc trƣng quan trọng và tiêu biểu cho bàn tay từ đó giúp cho hệ thống nhận dạng thành công. Đây cũng là công đoạn tốn nhiều thời gian.

Những đặc trƣng Haar-like có thể đạt đƣợc khả năng phát hiện rất hiệu quả khuôn mặt ngƣời vốn không có hình dạng lõm (non-concave shape) (mặt ngƣời có hình dạng tƣơng đối tròn và hơi gồ ghề với vị trí cố định giữa các thành phần nhƣ mắt, mũi, miệng). Tuy nhiên bàn tay ngƣời có cấu trúc xƣơng khớp phức tạp với bâc tự do cao nên mỗi tƣ thế của bàn tay khi chiếu lên mặt phẳng 2D sẽ cho một hình dạng bàn tay khác nhau. Trong đó có nhiều hình chiếu có hình dáng lõm nhƣ bàn tay hình chữ “C” hay bàn tay hình chữ “U”.

GVHD: HUỲNH THÁI HOÀNG Trang 63 Những phần chứa hình nền chắc chắn sẽ xuất hiện cùng với ảnh bàn tay có hình dạng lõm khi canh những đặc trƣng Haar-like hình chữ nhật. Điều này sẽ gây nhiều khó khăn cho thuật toán học và đòi hỏi số lƣợng mẫu rất lớn để thuật toán có thể tìm ra đặc trƣng phù hợp cho những hình dạng nhƣ thế. Vì rõ ràng với cùng một bàn tay thì khi kết hợp với hình nền khác nhau sẽ phát sinh ra vô số ảnh. Nhƣng việc tăng số luợng ảnh huấn luyện cũng đồng nghĩa với tăng thời gian huấn luyện lên rất nhiều lần.

Hình 4.6 Bàn tay dạng lõm hình chữ “C”

Trong luận văn, ảnh bàn tay sẽ đƣợc sử dụng để điều khiển xe lăn thực hiện các nhiệm vụ nhƣ: đi tới - đi lui - rẽ trái - rẽ phải - dừng. Tổng cộng cần 5 tín hiệu điều khiển khác nhau do đó chúng tôi đã huấn luyện 5 cử chỉ để điều khiển 5 hành động của xe lăn. Các ảnh thu thập cho 5 kiểu bàn tay khác nhau cũng chính là 5 chữ cái trong bảng chữ cái dành cho ngƣời câm. Các chữ cái đó bao gồm chữ “A”, “B”, “C”, “L” và “U”. Việc lựa chọn các chữ cái này dựa trên 2 tiêu chí:

1. Tính đơn giản và thuận tiện cho ngƣời sử dụng khi điều khiển.

2. Khả năng phân biệt rạch ròi giữa các kiểu bàn tay giúp cho hệ thống dễ dàng hơn trong việc phân loại, hạn chế nhận dạng sai cử chỉ.

Các mẫu huấn luyện đƣợc thu thập dƣới nhiều điều kiện chiếu sáng khác nhau và tại các thời điểm khác nhau trong ngày.

GVHD: HUỲNH THÁI HOÀNG Trang 64

Hình 4.7 a) Bàn tay chụp dưới ánh sáng tự nhiên và b) bàn tay chụp dưới ánh sáng đèn huỳnh quang

Tất cả những ảnh thu thập đƣợc sau đó sẽ đƣợc cắt tách bàn tay ra khỏi ảnh nền và chuyển về ảnh xám. Trong quá trình cắt ảnh nên chú ý, những mẫu cắt sẽ nằm trong một hình chữ nhật có kích thƣớc xác định trƣớc ứng với từng kiểu bàn tay, hoặc có thể cắt tất cả các kiểu bàn tay bằng những hình vuông. Ví dụ, bàn tay hình nắm đấm (chữ “A”) hoặc hình chữ “L” và chữ “C” có thể cắt thành những hình vuông:

GVHD: HUỲNH THÁI HOÀNG Trang 65 Hình 4.8 a, b, c tƣơng ứng là các bàn tay hình chữ “A”, chữ “L” và chữ “C”. Trong khi đó các mẫu bàn tay chữ “B” hay chữ “U” có thể cắt bằng hình chữ nhật có tỉ lệ w:h = 1:2

Hình 4.9 Hình bàn tay được cắt trong hình chữ nhật có kích thước 1:2 (adsbygoogle = window.adsbygoogle || []).push({});

Trong hình 4.9 a, b lần lƣợt là bàn tay có dạng chữ “B” và bàn tay hình chữ “U”. Mục đích của việc cắt các mẫu bàn tay dƣới các kích thƣớc khác nhau nhƣ thế này là để loại trừ tối đa phần hình nền bên ngoài bàn tay. Đặc biệt với kiểu bàn tay có độ dài nhƣ kiểu chữ “U” thì khi cắt bằng hình vuông phần ảnh nền đi kèm với bàn tay sẽ rất lớn.

Cuối cùng tất cả các mẫu của cùng một kiểu bàn tay sẽ đƣợc thu nhỏ về cùng một kích thƣớc, gọi là độ phân giải nền (base resolution). Những mẫu chữ “C”, “A” và “L” sẽ đƣợc thu về kích thƣớc 32x32. Trong khi đó những mẫu chữ “U” và chữ “B” sẽ đƣợc thu nhỏ về kích thƣớc 15x30. Đây là công đoạn cuối cùng của việc thu ảnh positive, những ảnh này sẽ đƣợc sử dụng để huấn luyện.

Thu ảnh nền (negative)

Những ảnh nền (negative) là những ảnh không chứa đối tƣợng cần nhận dạng, còn gọi là background, hay nói cách khác đó là những ảnh không có chứa bàn tay. Khi thu thập những ảnh negative nên chú ý thu thập ảnh đa dạng về độ phân giải, kích thƣớc, khung cảnh, cũng nhƣ trong những điều kiện ánh sáng khác nhau để tạo nên tính tổng quát, giúp cho weak

GVHD: HUỲNH THÁI HOÀNG Trang 66 classifier có thể đạt đƣợc độ chính xác cao hơn khi có khả năng loại trừ nhiều ảnh nền và giảm tỉ lệ nhận dạng sai. Trong quá trình thu thập ảnh nền em có thêm những ảnh nền có chứa những bộ phận khác của cơ thể nhƣ khuôn mặt, cánh tay…hoặc những cử chỉ khác với cử chỉ cần nhận dạng. Việc thu thập ảnh nền nhƣ thế có 2 lý do:

- Những bộ phận trên cơ thể con ngƣời có cùng màu sắc với màu sắc của bàn tay. Do đó, chƣơng trình sẽ huấn luyện bộ nhận dạng phân biệt đƣợc cử chỉ với các bộ phận cơ thể tốt hơn.

- Khi huấn luyện bộ nhận dạng một kiểu bàn tay nhất định ta thêm vào tập ảnh nền những hình bàn tay của những kiểu bàn tay còn lại thì bộ nhận dạng sau huấn luyện có khả năng không bị nhầm các kiểu bàn tay với nhau.

Kết quả huấn luyện cho thấy lý do a) hoàn toàn có cơ sở khi bộ nhận dạng phân biệt tốt hơn vùng da của cơ thể với cử chỉ cần nhận dạng. Trong khi đó kết quả cho thấy lý do b) vẫn có cải thiện kết quả nhận dạng nhƣng hiệu quả chƣa cao.

Tập ảnh nền có thể tải từ thƣ viện ảnh mặt ngƣời CMU cũng nhƣ những ảnh tìm kiếm đƣợc trên Internet. Tập ảnh nền chúng tôi sử dụng khoảng trên 3000 ảnh đƣợc lấy từ nhiều nguồn khác nhau trong đó có cả những ảnh tự chụp.

Hình 4.10 Một số ảnh nền được sử dụng trong huấn luyện c) Giải thuật chống nhiễu trong nhận diện cử chỉ tay

Trong quá trình nhận dạng bàn tay, tƣ thế bàn tay luôn thay đổi do cử động của ngƣời sử dụng. Ngoài ra cộng với những thay đổi của điều kiện chiếu sáng của môi trƣờng là những yếu tố khách quan ảnh hƣởng đến quá trình nhận dạng. Và dĩ nhiên chất lƣợng điều khiển cũng giảm sút. Chính sự biến động của bàn tay làm cho quá trình nhận dạng nhiều khi không

GVHD: HUỲNH THÁI HOÀNG Trang 67 liên tục và nhận dạng nhầm. Sự đứt quãng và nhầm lẫn trong nhận dạng làm cho việc điều khiển xe lăn trở nên khó khăn nhƣ: xuất hiện vọt lố, thực hiện hành vi không mong muốn…Từ những lý do khách quan không thể tránh khỏi trong nhận dạng đòi hỏi chƣơng trình điều khiển xe lăn cũng phải có những điều chỉnh để giúp xe lăn “hiểu” đƣợc đâu là những lệnh điều khiển và đâu là nhiễu. Những điều chỉnh này có thể không lớn, nhƣng cũng có tác dụng phần nào giảm thiểu những nhiễu (nhận dạng nhầm) xảy ra trong quá trình nhận dạng và giúp quá trình điều khiển tốt hơn.

Khi điều khiển bằng cử chỉ, cử chỉ đƣợc nhận dạng sẽ đƣợc chuyển thành kí tự điều khiển và truyền xuống cho ARM (ví dụ, cử chỉ đi tới, forward, sẽ truyền kí tự “f” xuống cho ARM; cử chỉ rẽ phải, turn right, sẽ truyền kí tự “r” …). Vì quá trình điều khiển là liên tục nên kí tự điều khiển sẽ đƣợc gửi xuống liên tục. Vi điều khiển sẽ nhận đƣợc một chuỗi kí tự kéo dài vô tận cho đến chƣơng trình ngừng điều khiển. Một đoạn của chuỗi kí tự đó có thể nhƣ sau:

f f f r l f f f f f f f f f r

Trong chuỗi kí tự ở trên, chủ đích của ngƣời viết là điều khiển xe lăn đi tới với kí tự gửi xuống là “f”. Nhƣng trong quá trình nhận dạng, do có sự nhận dạng nhầm, những kí tự “r”, tƣơng ứng với lệnh rẽ phải, và “l”, tƣơng ứng với lệnh rẽ trái, đƣợc gửi xuống để điều khiển xe lăn. Để loại trừ những nhiễu ngẫu nhiên này một thuật toán đƣợc đƣa ra là: nếu một chuỗi liên tiếp gồm 5 kí tự giống nhau (những kí tự này đƣợc kiểm tra 100ms) thì xem đó là một lệnh. Nếu chỉ cần ít nhất một kí tự khác với bốn kí tự còn lại thì đó không phải là một lệnh và lệnh cũ vẫn đựợc duy trì. Với điều kiện 5 kí tự trong một chuỗi phải giống nhau đồng nghĩa với sau 500ms một lệnh nhận dạng mới có ý nghĩa dƣới vi điều khiển. Chính vì thế không nên tăng số lƣợng kí tự này lên vì sẽ làm cho quá trình điều khiển bi chậm lại.

GVHD: HUỲNH THÁI HOÀNG Trang 68

Hình 4.11 Giải thuật chống nhiễu d) Lưu đồ giải thuật gửi tín hiệu từ máy tính xuống master

Sau khi nhận dạng đƣợc cử chỉ tay, máy tính sẽ xử lý và gửi tín hiệu xuống master bằng các kí tự đại diện nhƣ sau:

Start

Khởi tạo mảng lƣu chuỗi kí tự để so sánh: F[5], S[5], R[5], L[5], B[5]. Khởi tạo mảng lƣu kí tự thu về mang[5]

Tạo biến đếm i=0

Lƣu cử chỉ nhận dạng vao vào Cmd Cmd=> mang[i]

Nếu i=5 thì gán i=0

Tạo biến đếm j=0

So sánh mang[j] với các mảng F[j], S[j],……….

J<5

Xuất “Lệnh” điều khiển Đúng

GVHD: HUỲNH THÁI HOÀNG Trang 69

Hình 4.12 Lưu đồ giải thuật gửi lệnh điều khiển xe lăn bằng cử chỉ tay xuống ARM master

Start Mở cổng COM Lệnh==”Forward” End Lệnh==”Back” Lệnh==”Left” Lệnh==”Right” Lệnh==”Stop” Gửi “f” xuống ARM Gửi “b” xuống ARM Gửi “l” xuống ARM Gửi “r” xuống ARM Gửi “s” xuống ARM Đúng Đúng Đúng Đúng Đúng (adsbygoogle = window.adsbygoogle || []).push({});

GVHD: HUỲNH THÁI HOÀNG Trang 70

Một phần của tài liệu ĐIỀU KHIỂN XE LĂN BẰNG CỬ CHỈ BÀN TAY (Trang 75 - 85)