Chương 1: Giới thiệu tổng quan - Về thành phần cấu tạo của thiết bị cảm biến kinect, các thư viện hỗ trợ. - Giới thiệu các ứng dụng hỗ trợ nhận bàn tay. Chương 2: Nội dung nghiên cứu - Phát hiện làn da thông qua màu sắc. - Các thao tác với hình thái học nhị phân.
- Trích các đặc điểm bàn tay. - Kết nối robot. Chương 3: Kết quả và hướng phát triển -Kết quả nghiên cứu. -Hướng phát triển trong tương lai.
Giới hạn đề tài Đề tài tập trung vào tìm hiểu các phương pháp xử lý ảnh và nhận dạng các cử chỉ của bàn tay. -5- Giới hạn luận văn: Vì thời gian có hạn nên Luận văn chỉ dừng lại ở việc tìm hiểu lý thuyết về xử lý ảnh, nhận dạng và demo nhận dạng các cử chỉ bàn tay. Trong phần trình bày lý thuyết, em không tập trung vào vấn đề chứng minh, tối ưu các thuật toán mà trình bày các vấn đề, phương pháp và các thuật toán về xử lý ảnh và nhận dạng được sử dụng trong chương trình demo. Giới thiệu tổng quan 1.1 Giới thiệu về thiết bị Camera Kinect a) Sự ra đời và phát triển Kinect (hay còn biết với mã là Project Natal) là thiết bị thu nhận các cảm biến chuyển động, được phát triển bởi Microsoft.
Thời gian đầu, Kinect là thiết bị chuyên dụng của hệ máy Xbox 360, phục vụ cho việc chơi game (Hình 1.1 : Camera Kinect của hàng Microsoft. Các mốc thời gian ra đời, phát triển của kinect và các thành phần liên quan: 5/30/2007: Microsoft nung nấu ý tưởng về một thiết bị dùng camera ghi nhận cử động điều khiển thay cho các thiết bị truyền thống. 6/1/2009: Microsoft công bố “Project Natal” ở hội nghị thường niên E3. 6/13/2010: Trong suốt hội nghị E3, đổi tên “Project Natal” thành Kinect, chính thức là thiết bị hỗ trợ cho Xbox 360.
11/4/2010: Microsoft chính thức tung ra thị trường Kinect; cũng từ đây, nhưng kế hoạch phát triển driver nguồn mở cho Kinect của các tổ chức/hacker cũng bắt đầu thực hiện. 11/10/2010: hacker trẻ tuổi Hector đã phát triển thành công driver cho Kinect. 2/21/2011: Microsoft lên kế hoạch cho việc phát triển bộ SDK hỗ trợ cho Kinect. Kinect sử dụng webcam, thiết bị thu phát sóng hồng ngoại, và 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 giọng nói, giúp cho 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.
Trong đó, game thủ có thể thao tác như thật.2: Nhận diện hành động game thủ và điều khiển nhân vật trong game. Kinect, hỗ trợ các chức năng tương tác sau: Ghi nhận chuyển động tay (hand gesture), bao gồm các hành động xoay vòng (circle), di chuyển 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.
b) Nh ng thành phần chính của Kinect .3: Những thành phần chính của Kinect Các thành phần bên trong Kinect gồm có: bộ nhớ RAM, bộ cảm ứng Prime Sense PS1080-A2, quạt tản nhiệt, động cơ điều khiển góc ngẩng (Motorized Tilt), bộ gia tốc 3 trục, 4 microphone (Multi – Array Mic) và 3 camera: RGB camera, bộ cảm biến độ sâu (3D Depth Sensors). Các thông số kỹ thuật: - Khoảng cách hiệu quả: 0. - RGB camera: độ phân giải 640 x 480, 30 frame/s, 32 bit màu. -8- - Góc quay hiệu quả: 57º ngang, 43º dọc, ± 27º nghiêng.
- Kết nối: USB 2.0 - Sensor: RGB& Depth - Audio: 4 microphones - Platfom: VS. - Middleware: SDK - Ngôn ngữ: C++,C# - OS: Win 7 - Dimensions: 1.9" c) Thƣ viện h trợ Kinect Ngay khi mới ra đời, Kinect đã được quan tâm bởi rất nhiều nhà phát triển phần mềm, không chỉ trên mảng phát triển game cho Xbox mà còn trên mảng xử lý ảnh ứng dụng trong y học, robot, mapping, … Do đó, mà nhiều thư viện được viết cho Kinect ra đời. Cho đến thời điểm hiện tại, các thư viện đáng chú ý là Libfreenect, Code Laboratories Kinect, OpenNI và Kinect SDK. Thư viện Libfreenect: Libfreenect là thư viện được phát triển bởi OpenKinect, do một cộng đồng những người quan tâm đến phần cứng Kinect viết ra và chia sẻ.
Cộng đồng OpenKinect làm việc hoàn toàn tự nguyện và không vì mục đích lợi nhuận, họ phát triển Libfreenect thành một mã nguồn mở cho các hệ điều hành khác nhau Windows, Linux và OS X. Hiện tại, Libfreenect được đóng gói cho việc sử dụng trên Python, C, C++, C#, Java JNI, Java JNA, Javascript. Thư viện Code Laboratories Kinect: Code Laboratories (CL) là một công ty phần mềm chuyên hỗ trợ các nhà phát triển, lập trình viên khai thác các tính năng của các thiết bị xử lý ảnh. Trong số đó Kinect không phải là ngoại lệ, CL cung cấp cho người sử dụng những tính năng cơ bản nhất của Kinect về camera, audio và motor.
Thư viện OpenNI: Thư viện OpenNI được xem là thư viện mạnh nhất trước sự có mặt của Kinect SDK 1.0, thư viện này hỗ trợ đa ngôn ngữ trên nhiều platform khác nhau, giúp cho các lập trình viên có thể viết các ứng dụng trên Kinect rất dễ dàng tương tác tự nhiên Natural Interaction (NI). Mục đích chính của OpenNI là xây dựng các hàm API chuẩn, cho phép thư viện có khả năng kết hợp với các middleware nhằm làm tăng sức mạng cho Kinect. Thư viện Kinect SDK: SDK cung cấp cho nhà phát triển những bộ cảm biến có chiều sâu, camera cảm biến màu sắc và xác định nguồn âm thanh theo chùm tia. Các nhà phát triển cũng có thể theo dõi ảnh ở dạng khung sườn của một hay hai người đang di chuyển trong tầm ngắm Kinect, từ đó các nhà phát triển có thể tạo ra những ứng dụng hướng theo cử chỉ (gesture).
SDK gồm tính năng âm thanh như giảm tiếng ồn và hạn chế tiếng vang. Các nhà phát triển có thể truy cập vào công nghệ hình thành tia để nhận diện ra nguồn âm thanh hay có thể truy cập vào giao diện trình ứng dụng (API) để nhận diện giọng nói trong hệ thống Windows. -9- Các nhà phát triển có thể viết ứng dụng bằng ngôn ngữ C#, C++ và bất cứ ngôn ngữ. d) Một số ứng dụng của Kinect Mua sắm vốn là một hoạt động xã hội và những kinh nghiệm mua sắm có thể hỗ trợ nhiều người dùng cùng một lúc bằng cách tận dụng các công cụ xã hội.
Ví dụ, các hình ảnh được chụp với các sản phẩm ảo có thể được chia sẻ thông qua Facebook và Twitter để giúp thông tin đến và phản hồi từ bạn bè. Hệ thống điều khiển dựa trên camera theo dõi chuyển động, Kinect của Microsoft đã chứng minh giá trị ứng dụng cao của mình trong nhiều lĩnh vực từ y tế đến giáo dục. Gần đây nhất, Microsoft đã giới thiệu một lĩnh vực ứng dụng mới cho công nghệ này đó chính là mua sắm.4: Chiếc xe có khả năng giúp nhận biết các món hàng bạn mua. Theo đó, một chiếc xe đẩy đã được thiết kế đặc biệt, tích hợp thiết bị Kinect và cùng một màn hình hiển thị đi kèm.
Chiếc xe này có khả năng giúp nhận biết các món hàng bạn mua, tự động kiểm tra chúng với danh sách đi chợ và thậm chí có thể tự đi theo bạn loanh quanh trong siêu thị.5: Chiếc xe thử nghiệm tại hệ thống siêu thị Whole Foods Nguyên mẫu này chỉ mới là bước thử nghiệm ban đầu tại hệ thống siêu thị Whole Foods, Mỹ. Microsoft hy vọng sẽ có thể phát hiện và khắc phục các hạn chế, đồng thời hoàn thiện sản phẩm trước khi chúng được đem ra ứng dụng trong thực tế. Trong trò chơi: Vào hai ngày 6-7/12/2011 tại Kuala Lumpur (Malaysia), chuyên gia Jason Trump của Microsoft cho hay Kinect đang khiến mọi người thay đổi quan niệm không hay về game. Không còn ngồi lỳ trước màn hình máy tính, Kinect giúp mọi người chơi vận động toàn bộ cơ thể như thể đang thực hiện một bài tập thể dục.
Sử dụng Kinect, các nhà phát triển có thể tạo ra những trò chơi thú vị và mang đến những đột phá trong giáo dục. Giáo viên có thể khiến bài học sinh động hơn khi điều khiển bằng tay các hình minh họa. Chơi game sẽ giống như một quá trình liên tục khám phá, sửa sai, tìm tòi cái mới cho đến khi thành thục, nhuần nhuyễn mà không tạo cảm giác nhàm chán cho học sinh. Điều khiển màn hình máy tính không dùng chuột, bàn phím: Không cần dùng đến chuột và bàn phím, nhóm Fluid Interfaces Group của Viện công nghệ MIT (Mỹ) vẫn có thể cuộn thanh cuốn, bấm vào đường link, phóng to nội dung nhờ thiết bị chơi game Kinect.6: Điều khiển máy tính bằng Kinect.
Đại học Nam California (Mỹ) giới thiệu bộ công cụ có tên Sloow kết hợp với sensor cảm ứng của Microsoft để điều khiển hòm thư bằng hành động như mở email với động tác như đang xé phong bì, trả lời thư bằng cách hất ngón cái ra phía sau, hoặc làm động tác dán tem để gửi email đi.7: Điều khiển máy tính bằng cử chỉ.2 Các giai đoạn xử lý ảnh Quá trình xử lý ảnh được xem như là quá trình thao tác với ảnh đầu vào nhằm cho ra kết quả mong muốn. Kết quả đầu ra của quá trình xử lý ảnh là một ảnh tốt hơn hoặc là một kết luận. a) Các giai đoạn xử lý ảnh bao gồm: - Thu nhận ảnh: Ảnh được thu nhận chính là ảnh gốc để đưa vào xử lý ở các giai đoạn sau, nếu ảnh gốc có chất lượng kém thì các bước xử lý sau có hiệu quả thấp. Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, sensor, máy scanner… - Tiền xử lý: -12- Các phương pháp của tiền xử lý nhằm mục đích nâng cao chất lượng ảnh như: tăng độ tương phản, lọc nhiễu… - Phân đoạn: Phân vùng ảnh là tách một ảnh đầu vào thành các thành phần để biểu diễn, phân tích, nhận dạng ảnh.
Nếu quá trình tách thành phần ảnh quá chi tiết thì việc nhận dạng các thành phần được tách trở nên phức tạp. Ngược lại, nếu việc tách các thành phần của ảnh quá đơn giản thì kết quả nhận được sẽ sai. - Biểu diễn: Giai đoạn này tiếp theo sau giai đoạn phân đoạn, vì vậy mà ảnh đầu ra của phân đoạn chứa các đặc điểm của vùng ảnh và mã liên kết vùng lân cận. Việc chọn các tính chất để thể hiện ảnh gọi là trích đặc trưng làm cơ sở cho việc phân biệt lớp đối tượng này với lớp đối tượng khác.