Phân đoạn tự động video cử chỉ tay
Máy tính xuất hiện là một bước phát minh lớn của nhân loại, nó giúp con người làm việc hiệu quả hơn, bên cạnh đó để tương tác được với máy tính thì phải thông qua các thiết bị như chuột, phím, remote điều khiển hoặc máy tính bảng, gây nên bất tiện [1].
Ngày nay, các phương thức tương tác người-máy truyền thống đang được từng bước thay thế bởi các phương pháp mới giúp nâng cao hiệu suất lao động, giúp cho lĩnh vực giải trí có một góc thú vị hơn. Kỹ thuật phát hiện và nhận dạng bàn tay được ứng dụng trong lĩnh vực tương tác người-máy là một phần trong số các phương pháp tương tác mới đó, nổi lên như Toshiba trong IFA 2008 đã giới thiệu kỹ thuật nhận dạng cử chỉ bàn tay (2 cử chỉ cơ bản: di chuyển nắm tay và huớng lòng bàn tay 5 ngón về phía camera để ra hiệu lệnh dừng) điều khiển Tivi sử dụng camera 2D. Năm 2009, Hitachi cũng giới thiệu TV điều khiển theo cử chỉ sử dụng cảm biến 3D. Tiếp theo đó là Kinect của Microsoft, hay hàng loạt thế hệ TV thông minh sau đó. Ưu điểm của việc sử dụng cảm biến 3D là tỷ lệ chính xác rất cao, hiệu suất hệ thống rất cao (Kinect SDK đạt 3ms/khung hình – tương đương với việc xử lý đuợc 333fps), và không phụ thuộc vào môi truờng sử dụng (ánh sáng, màu sắc, …) có thể hoạt động trong cả bóng tối [2].
Theo Tổng cục Thống kê năm 2009, Việt Nam có khoảng 6,7 triệu người khuyết tật trên tổng số 85,5 triệu dân, tương đương 7,8% dân số. Trong đó khiếm thính khoảng 1 triệu dân chiếm tỷ lệ 1.17%, do nước ta có nhiều dân tộc và văn hóa khác nhau nên chưa có sự thống nhất về ngôn ngữ kí hiệu. Làm cho những người khiếm thính khó hòa nhập bình đẳng trong xã hội.
Nắm được xu hướng đó nên tôi chọn đề tài phân đoạn tự động video cử chỉ tay, mục đích của đề tài này là phân ra thành những đoạn chính mà người khiếm thính muốn nói. Và chi tiết hơn ở trong luận văn này sẽ đi sâu vào phương pháp dựa trên video từ Kinect và phân đoạn video bàn tay, chọn khung hình chính trong video đó và nhận dạng cử chỉ tay dựa trên khung hình chính đó, đó đó đề tài tôi chọn là : “phân đoạn tự động video cử chỉ tay”
Mục tiêu
Mục tiêu chính của đề tài này là dùng Kinect ghi lại video, tách video thành những khung hình theo từng phân cụm và sử dụng giải thuật Dynamic Time Warp [5][6] hoặc SVM để giải quyết vấn đề nhận dạng cử chỉ tay.
Nhiệm vụ
- Tìm hiểu tách đoạn video thành các cụm của bàn tay.
- Tìm hiểu việc chọn khung hình chính từ mỗi cụm.
- Tìm hiểu phân tích cử chỉ tay và các phương pháp đã có.
- Nghiên cứu phương pháp mới sử dụng Kinect và giải thuật DTW [11][12] và SVM để đưa ra giải pháp sử dụng kết hợp mang lại hiệu suất cao.
- Xây dựng chương trình Demo để kiểm tra tính hiệu quả của giải pháp.
Đối tượng
- Cách tách cụm bàn tay từ video thu thập ở Kinect.
- Các phương pháp chọn khung hình chính trong mỗi cụm.
- Các phương pháp trích chọn đặc trưng ảnh.
- Các phương pháp máy học và bài toán phân lớp.
Phạm vi nghiên cứu
Nghiên cứu các phương pháp phát hiện chuyện động đối tượng bàn tay, tách video thành các cụm bàn tay, xác định khung hình chính trong một cụm, nhận dạng cử chỉ tay dựa vào khung hình chính.
Phương pháp nghiên cứu tài liệu
- Tìm hiểu các kỹ thuật nhận dạng được bàn tay.
- Tìm hiểu các kỹ thuật chia tách đoạn video thành từng cụm.
- Tìm hiểu các kỹ thuật xử lý ảnh.
- Tìm hiểu các phương pháp nhận dạng.
- Nghiên cứu bài báo liên quan.
Phương pháp thực nghiệm
- Xây dựng chương trình demo dựa trên giải pháp đề xuất.
- Thực nghiệm trên dữ liệu đầu vào là các video thu thập và tự quay từ Kinect.
- Kiểm tra hiệu quả với các cử chỉ tay khác nhau.
Nội dung của luận văn được trình bày bao gồm các phần chính như sau:
CHƯƠNG 1. NGHIÊN CỨU TỔNG QUAN
Nội dung chương này là trình bày tổng quan về Kinect đặc biếc là Kinect, các thư viện sử dụng trong Kinect, giới thiệu về các ứng dụng của Kinect. giới thiệu về xử lý ảnh, các kỹ thuật về tiền xử lý ảnh, các mức xử lý ảnh. Và các vấn đề nghiên cứu bài toán phân đoạn cử chỉ tay trong lĩnh vực xử lý ảnh và thị giác máy tính.
CHƯƠNG 2. GIẢI PHÁP ĐỀ XUẤT
Trong chương này, các bước xử lý cụ thể của giải pháp đề xuất được trình bày cùng với công thức toán học và có hình ảnh minh họa. Quá trình thực hiện bao gồm: Pháp hiện bàn tay, tách bàn tay thành nhưng đoạn video có tính chất của một phân cụm, trong mỗi cụm chọn một khung hình chính để đại diện cho một phân đoạn, dựa trên khung hình chính đó để trích xuất đặc trưng, phân lớp các đặc trưng và nhận dạng bàn tay dựa vào đặc trưng đó.
CHƯƠNG 3. THỰC NGHIỆM VÀ KẾT QUẢ
Chương này trình bày thông tin cụ thể về dữ liệu thử nghiệm cùng với kết quả thực nghiệm phân đoạn video thành những khung hình chính. Kết quả nhận dạng khung hình chính, dựa vào máy hỗ trợ vector(support vector machine) để đánh giá mức độ hiệu quả của giải pháp đề xuất.

NGHIÊN CỨU TỔNG QUAN
GIỚI THIỆU CHUNG VỀ KINECT
Giới thiệu
Kinect là một thiết bị đầu vào, sử dụng webcam, thiết bị thu phát sóng hồng ngoại, thiết bị thu nhận âm thanh để ghi nhận tín hiệu chuyển động của game thủ và nhận dạng các lệnh điều khiển thông qua cử chỉ, giọng nói. Kinect giúp cho người dùng, các game thủ tương tác với Xbox 360 mà không cần chạm vào bất kì thiết bị điều khiển nào.
Kinect là một hệ thống các camera thường và hồng ngoại, ngoài ra được tích hợp sẵn một số thuật toán nhận dạng do hãng Microsoft phát triển cho phép sử dụng 3 luồng thông tin cơ bản về đối tượng gồm: ảnh màu thông thường (RGB image); ảnh độ sâu (Depth image); khung xương trên cơ thể người (Skeleton Tracking).
Chức năng của Kinect
Chức năng của Kinect gồm những chức năng như sau:
- Ghi nhận chuyển động tay (hand gesture), bao gồm các hành động xoay vòng (circle), vẩy tay (wave gesture), push,…
- Ghi nhận chuyển động toàn cơ thể (full body skeleton), xác định các vị trí chính của cơ thể như đầu, vai, cẳng tay, chân,…
- Điều khiển bằng giọng nói.
- Nhận dạng số người đang chơi.
- Ghi nhận ảnh độ sâu, ảnh hồng ngoại, ảnh khúc xương.

Hình 1.1. Một vài chức năng của Kinect
Cấu tạo
Microsoft Kinect cung cấp một loạt các tính năng khác nhau. Trong (hình 1.2) minh họa các cảm biến khác nhau chứa trong Kinect. Kinect cung cấp [5].

Hình 1.2. Các cảm biến khác nhau của Kinect
1. Một microphone đa mảng gồm 4 micro (16-bit audio @ 16 kHz).
2. Một camera RGB với độ phân giải tối đa 1280×1024 @ 30Hz.
3. Một bộ cảm biến độ sâu bao gồm một bộ phát hồng ngoại và một bộ cảm biến CMOS với độ phân giải tối đa 640×480 @ 30Hz.
4. Một trục nghiêng với khoảng biến thiên nghiêng dọc ± 28 độ.
Đặc tính Kinect
Bên cạnh các thuộc tính và tham số kỹ thuật kể trên, Kinect còn có một số các đặc tính như: miền quan sát, tiêu cự góc mở IR camera và RGB camera, nguồn cung cấp và cổng kết nối, môi trường hoạt động, cảm biến chiều sâu.
Miền quan sát
Kinect có thể quan sát một vùng không gian trong phạm vi ở 57o ngang, 43o dọc, ± 27o nghiêng. Khoảng cách hiệu quả của Kinect là từ 0.8–3.5m. Trong phạm vi này, các đối tượng được giữ tối thiểu biến dạng và nhiễu.

Tiêu cự góc mở IR camera và RGB camera
Khoảng cách giữa IR camera và RGB camera cách nhau 2.5 cm nên các ảnh thu về từ hai camera tại cùng một thời điểm có chút khác nhau. Vì vậy Kinect được thiết kế với góc mở của RGB camera lớn hơn, tiêu cự của RGB camera nhỏ hơn để đảm bảo khung hình RGB có thể chứa được khung hình IR.
Nguồn cung cấp và cổng kết nối
Kinect có một adapter 12V DC để cấp nguồn cho Kinect, một cổng USB để kết nối với thiết bị. Kinect 2.0 đòi hỏi phải cổng USB 3.0 trở lên vì lưu lượng truyền tải lớn.
Môi trường hoạt động
Kinect được thiết kế để sử dụng ở môi trường trong nhà. Với môi trường ngoài trời, kết quả thử nghiệm cho ảnh độ sâu không chính xác vào thời điểm ánh sáng mạnh, nhưng với ánh sáng yếu vào thời điểm buổi chiều tối thì kết quả chấp nhận được.
Cảm biến chiều sâu
Đây là đặc trưng của Kinect so với các thiết bị khác như camera, webcam. Cảm biến chiều sâu hoạt động với nguyên tắc của ánh sáng có cấu trúc. Hệ thống này gồm 2 phần bộ phát tia laser hồng ngoại(IR laser emitter) và camera hồng ngoại(IR camere. Góc thu của độ sâu Kinect là theo chiều ngang, và theo chiều dọc [5]. Phạm vi hoạt động theo độ sâu là 0.8 mét đến 3.5 mét. Cảm biến chiều sâu được tính bằng đường cao tới mặt phẳng ngang của đối tượng Kinect. Kinect depth estimate. .

Hình 1.4. Khoảng cách tính độ sâu của Kinect
Thư viện hỗ trợ Kinect
Hiện nay, có nhiều thư viện hỗ trợ Kinect, trong số đó, phải kể đến hai thư viện mạnh, thường được sử dụng là OpenNI và Kinect SDK.
Thư viện OpenNI
Trước khi thư viện Microsoft SDK xuất hiện, thư viện OpenNI được xem là thư viện mạnh nhất. Thư viện này hỗ trợ đa ngôn ngữ trên nhiều nền tảng khác nhau, giúp cho các lập trình viên có thể viết các ứng dụng tương tác tự nhiên Natural Interaction (NI) trên Kinect rất dễ dàng. OpenNI xây dựng các hàm giao diện lập trình ứng dụng API chuẩn, cho phép thư viện có khả năng kết hợp với các thành phần điều khiển nối giữa hệ điều hành và ứng dụng để làm tăng sức mạnh cho Kinect. Phiên bản mới nhất là OpenNI 2.2 [4].
Thư viện Microsoft Kinect SDK
Hai năm sau khi công bố sản phẩm Kinect, Microsoft mới phát triển Kinect SDK chạy trên hệ điều hành Windows 7 trở lên. Thư viện này hỗ trợ người lập trình phát huy tối đa các tính năng của Kinect, bao gồm các trình điều khiển, công cụ, hàm API… để tạo ra các ứng dụng tương tác tự nhiên, nhận dạng cử chỉ, theo dõi chuyển động, điều khiển bằng giọng nói… Microsoft Kinect SDK hỗ trợ các ngôn ngữ C++, C#, Visual Basic trong Microsoft Visual Studio. Phiên bản mới nhất là Microsoft Kinect SDK 2.0 với các tính năng mới cho phép các nhà phát triển có thể phát hành các ứng dụng trên Windows Store, cải thiện nhận diện cử chỉ và cơ thể người hiệu quả hơn, hỗ trợ cho môi trường và công cụ phát triển thống nhất thông qua Kinect Studio, đồng thời có nhiều cải tiến ở các công cụ Visual Gesture Builder, Kinect Studio và Kinect Fusion.
Hai thư viện OpenNI và Microsoft Kinect SDK thường được đông đảo người lập trình sử dụng. Bảng dưới đây mô tả so sánh sự hỗ trợ một vài ứng dụng thường gặp của hai thư viện [4].
Thông thường, hầu hết các chức năng được cung cấp bởi hai thư viện này tương đương nhau. Tuy nhiên vẫn có những điểm khác nhau cụ thể giữa hai thư viện này. Với ứng dụng theo vết khung xương, OpenNI yêu cầu người dùng phải giữ tư thế cho đến khi hệ thống nhận dạng đủ các khớp xương, trong khi Microsoft Kinect SDK không cần khởi tạo tư thế cụ thể [4].
Bảng 1.1. So sánh một số ứng dụng hỗ trợ của thư viện OpenNI và Microsoft SDK
| Thư viện Ứng dụng | OpenNI | Microsoft SDK |
| Hiệu chuẩn camera | ✓ | ✓ |
| Tự động hiệu chuẩn cơ thể | 🗶 | ✓ |
| Khung xương người đứng | ✓ (15 khớp) | ✓ (20 khớp) |
| Khung xương người ngồi | 🗶 | ✓ |
| Nhận dạng cử chỉ người | ✓ | ✓ |
| Phân tích cử chỉ tay | ✓ | ✓ |
| Theo dõi khuôn mặt | ✓ | ✓ |
| Phân tích bối cảnh | ✓ | ✓ |
| Quét ảnh 3D | ✓ | ✓ |
| Điều khiển động cơ | ✓ | ✓ |
Ngoài thư viện OpenNI và Microsoft Kinect SDK, còn có các thư viện khác như thư viện mã nguồn mở Libfreenect cho các hệ điều hành khác nhau Windows, Linux và OS X; thư viện Code Laboratories Kinect cung cấp cho người sử dụng những tính năng cơ bản nhất của Kinect [4].
Một số ứng dụng Kinect
Kinect ra đời đáp ứng được nhu cầu xử lý cảm biến đa dạng, nên rất có nhiều ứng dụng dựa trên cảm biến, đặc biệt là cảm biến hồng ngoại và cảm biến chiều sâu. Cụ thể là có những ứng dụng như sau:
Tương tác máy tính
Một ứng dụng rất nổi bật của Kinect là thay đổi việc tương tác với máy tính bằng chuột và bàn phím. Theo Microsoft, đây chính là thiết bị tiên phong trong việc thay đổi phương pháp tương tác giữa con người và máy tính. Người dùng có thể sử dụng giọng nói, cử chỉ tay để điều khiển máy tính, trình chiếu powerpoint và các thiết bị khác như smart tivi.


Hình 1.6. Điều khiển bằng giọng nói
Chọn trang phục ảo (Virtual Dressing Room) online
Công ty Nga AR Door paired up with Topshop, một nhà bán lẻ quần áo của Anh với cửa hàng tại 20 quốc gia trên thế giới, để xây dựng một phòng thử đồ ảo cho bộ sưu tập mới của trang phục. Thay vì bước vào một phòng thay đồ và phải chui vào quần áo, phòng thay đồ ảo cố quần áo về cho bạn. Nó chỉ đơn giản là một kiosk, ngồi ở giữa các cửa chọn sản phẩm thử đồ mà mình thích.
Các kiosk đầu tiên được thử nghiệm ở Moscow. Ngoài việc sử dụng Microsoft Kinect, nó cũng tăng cường sử dụng chức năng ảo thay thế cho thực tế (Augmented Reality), cho phép khách hàng lựa chọn một chiếc váy ra khỏi giá đỡ và thử nó, tự động nó sẽ thay thế chiếc váy trên người mà khách hàng không cần mặc hay gì cả. Các khách hàng thấy mình hoặc mình trên màn hình với một bản sao 3D của trang phục. Các khách hàng có thể quay xung quanh để xem tất cả các góc của chiếc váy, và có thể kiểm soát các chương trình bằng các cử động. Di chuyển bàn tay của bạn trên màn hình sẽ thay đổi lựa chọn trang phục theo cử động tay của bạn. Kinect là nó rất dễ dàng để sử dụng. Camera tích hợp theo dõi cơ thể của người sử dụng và xếp chồng nó với mô hình 3D của trang phục.

Hình 1.7. Ứng dụng chọn trang phục ảo
Kết hợp robot ứng dụng chỉ đường
Kinect nhanh chóng trở thành giải pháp giá thấp trong ngành công nghiệp robot và điều khiển tự động. Đại học Berkeley (California, Mỹ) sử dụng cảm biến để phát triển robot có khả năng phát hiện vật cản. Một số nơi trang bị Kinect trên xe nâng hàng trong nhà xưởng. Thậm chí, công nghệ của Microsoft hiện được coi là chuẩn mực trong phần lớn các trang bị hỗ trợ cho người khiếm thị ra đời gần đây. Công ty NSK phối hợp cùng Đại học truyền thông Electro (Nhật) chế tạo cho robot dẫn đường dựa trên bộ cảm này.

Hình 1.8. Ứng dụng chỉ đường Kinect và robot
Chăm sóc sức khỏe
Hệ thống RespondWell là một chương trình vật lý trị liệu hấp dẫn giúp người già đã bị ngã trong quá khứ phục hồi và giúp ngăn ngừa việc té ngã thình lình trong tương lai. Hệ thống có khả năng kết nối với đội ngũ chăm sóc từ xa, hướng dẫn bệnh nhân thực hiện các phác đồ điều trị vật lý tại nhà riêng một cách thuận tiện, thoải mái. Trong mỗi bài tập phục hồi chức năng, các cảm biến Kinect giám sát tiến độ và việc thực hiện của bệnh nhân, đồng thời hệ thống ảo sẽ tặng điểm thưởng cho các động tác thực hiện đúng hoặc khuyến khích và điều chỉnh kỹ thuật cho bệnh nhân thực hiện động tác trị liệu sai [4].

Hình 1.9. Một bài tập trong hệ thống RespondWell
Robot giúp việc Yaskawa’s SmartPal
Yaskawa Electric, một công ty Nhật Bản, chế tạo loại robot SmartPal VII, một robot có thể giúp dọn dẹp nhà cửa và giao tiếp với gia đình bằng cách sử dụng Kinect. Người sử dụng có thể điều khiển robot này chỉ đơn giản bằng cách di chuyển bàn tay của mình, SmartPal VII sẽ tự động xem xét làm thế nào để thực hiện theo ý chủ nhân và di chuyển đến mục tiêu một cách tối ưu [4].

Hình 1.10. Robot home assistant
Trong lĩnh vực y tế
Theo các nghiên cứu của Microsoft thì Kinect đã tạo ra một cuộc cách mạng trong lĩnh vực phẫu thuật. Một nhóm nghiên cứu tại Microsoft Research Cambridge đã sử dụng Kinect để tạo ứng dụng cho phép các bác sĩ trực tiếp sử dụng cử chỉ tay đơn giản để thay đổi, di chuyển, hoặc phóng to trên ảnh CT, MRI, và hình ảnh y tế khác thay vì phải hướng dẫn y tá hoặc sử dụng bàn phím và chuột để tránh nguy cơ nhiễm trùng. Điều này có thể giúp các bác sĩ xác định nhanh chóng hơn các vị trí thích hợp trong quá trình phẫu thuật. [4].

Hình 1.11. Các bác sĩ sử dụng Kinect trong phòng mổ
Trong lĩnh vực giải trí
Vốn là thiết bị hỗ trợ cho Xbox 360 trong việc chơi game nên hiện tại có khoảng hơn 129 trò chơi sử dụng Kinect với nhiều thể loại: thể thao, trẻ em, đua xe, đá bóng… như FIFA Soccer, Harry Potter, Angry Birds Trilogy, Adrenalin Misfits, Fruit Ninja, Blackwater, Dance Paradise… Các game này mang lại sự thoải mái tối đa cho người chơi vì toàn bộ cơ thể sẽ trở thành bộ điều khiển, điều khiển các hệ thống chơi game với một cử chỉ duy nhất. Ngoài ra người chơi có thể hô mệnh lệnh để đổi trò, tắt tiếng, kích hoạt những dịch vụ như xem phim theo yêu cầu hoặc tán gẫu thời gian thực.[4]. Phân đoạn tự động video cử chỉ tay phân đoạn tự động video cử chỉ tay
F:\DỮ LIỆU COP CỦA CHỊ YẾN\DAI HOC DA NANG\KHOA HOC MAY TINH\NGUYEN THANH NGHIA\NGUYEN THANH NGHIA


