Các sản phẩm màn hình cảm ứng đã được áp dụng rộng rãi vào nhiều lĩnh vực: giáo dục, y tế, quảng cáo sản phẩm, hội họp… Giúp người dùng đạt hiệu quả cao trong công việc như giúp giáo viê
Trang 1BÁO CÁO NGHIÊN CỨU KHOA HỌC
ĐỀ TÀI:
TƯƠNG TÁC TRỰC QUAN GIỮA NGƯỜI VÀ MÁY TÍNH BẰNG
CẢM BIẾN QUANG
NGUYỄN THÁI NHÂN NGUYỄN XUÂN THẢO
BIÊN HÒA, THÁNG 12/2013
Trang 2BÁO CÁO NGHIÊN CỨU KHOA HỌC
ĐỀ TÀI:
TƯƠNG TÁC TRỰC QUAN GIỮA NGƯỜI VÀ MÁY TÍNH BẰNG
CẢM BIẾN QUANG
SVTH : NGUYỄN THÁI NHÂN NGUYỄN XUÂN THẢO GVHD: ThS NGUYỄN PHÁT NHỰT
Trang 3MỤC LỤC Trang phụ bìa
Lời cảm ơn
Mục lục
Danh mục từ viết tắt
Danh mục hình ảnh
Chương I PHẦN MỞ ĐẦU 1
1.1 Dẫn nhập 1
1.2 Tổng quan tình hình nghiên cứu 2
1.3 Mục tiêu nghiên cứu 6
1.4 Lựa chọn phương pháp nghiên cứu 6
1.5 Đối tượng và phạm vi nghiên cứu 10
1.6 Những mặt tích cực và hạn chế của đề tài 11
1.7 Kết cấu của đề tài 11
Chương II NỘI DUNG THỰC HIỆN 12
2.1 Quy trình thực hiện 12
2.2 Tìm hiểu về thiết bị Camera Kinect 13
2.3 Đồng bộ hóa ảnh 24
2.4 Quét vùng tương tác 25
2.5 Theo dõi khung xương 28
2.6 Theo dõi vùng tương tác và nhận diện thao tác chạm tay 31
2.7 Chuyển thao tác chạm qua tọa độ màn hình máy tính 34
2.8 Xử lý con trỏ Windows 35
2.9 Thiết kế hệ thống 37
2.10 Thử nghiệm chương trình 40
2.11 Tự đánh giá sản phẩm 45
Chương III KẾT LUẬN 48
3.1 Kết quả nghiên cứu 48
Trang 43.3 Hướng phát triển 50
Tài liệu tham khảo
Trang 5DANH MỤC TỪ VIẾT TẮT
API Application Programming Interface
CMOS Complementary metal-Oxide-Semiconductor
CL Code Laboratories
CPU Central Processing Unit
NI Nature Interface
JNA Java Native Access
JNI Java Native Interface
NI Natural Interaction
OPENNI Open Natural Interaction
OPENCV Open Sourse ComPuter Vision
RBG Red, Green, Blue
SDK Software Development Kit
SoC System on chip
TOF Time Of Flight
3D 3 Dimensional
Trang 6DANH MỤC HÌNH ẢNH
Hình 1.1: Mô hình mô phỏng hệ thống Ubi 3
Hình 1.2: Sản phẩm Touchless Touch 4
Hình 1.3: Sản phẩm tường tương tác của công ty Vntouch 5
Hình 1.4: Nhận diện bàn tay (OpenNI) 7
Hình 1.5: Mẫu màu da trên bàn tay 8
Hình 1.6: Minh họa về mật độ điểm ảnh trên bàn tay 9
Hình 1.7: Mô phỏng khung xương 10
Hình 2.1: Quy trình thực hiện 12
Hình 2.2: Hình camera Kinect 13
Hình 2.3: Hình cấu tạo của Kinect 14
Hình 2.4: Cấu tạo bên trong Kinect 15
Hình 2.5: Công nghệ xử lý ảnh của PrimeSense 16
Hình 2.6: Giải pháp độc quyền Light Coding của PrimeSense 17
Hình 2.7: Góc chiếu Kinect 20
Hình 2.8: Ảnh độ sâu 20
Hình 2.9: Thông tin các bit lưu trữ độ sâu 21
Hình 2.10: Ví dụ về đo độ sâu 21
Hình 2.11: Đối tượng cơ thể áp dụng cho học máy 22
Hình 2.12: Nhận dạng khung xương từ ảnh độ sâu 23
Hình 2.13: Trục tọa độ khung xương 24
Hình 2.14: Ví dụ minh họa Rectangle kích thước 550x400 26
Hình 2.15: Rectangle trên phần mềm 27
Hình 2.16: Quá trình nhận diện các khớp xương 28
Hình 2.17: Khớp xương trên cơ thể được đánh tên 29
Hình 2.18: Khung xương với 20 khớp xương 29
Hình 2.19: Khung xương với 10 điểm khớp xương 30
Hình 2.20: Mô phỏng cách nhận dạng thao tác chạm 32
Trang 7Hình 2.22: Lưu đồ giải thuật 34
Hình 2.23: Minh họa hệ tọa độ màn hình 34
Hình 2.24: Ví dụ minh họa về sự tương phản 35
Hình 2.25: Lưu đồ chức năng chuột 36
Hình 2.26: Mô hình thiết kế bàn tương tác 37
Hình 2.27: Mô hình thiết kế đặt Kinect cố định ở sàn nhà 38
Hình 2.28: Mô hình thiết kế Kinect đặt cố định trên trần nhà 39
Hình 2.29: Màn chiếu che bảng phấn 40
Hình 2.30: Kéo màn chiếu lên 40
Hình 2.31: Viết chữ trên bảng phấn khi máy chiếu vẫn đang chiếu 40
Hình 2.32: Hình nền Windows chiếu lên màn chiếu che bảng phấn 41
Hình 2.33: Chạm tay vào shorcut bài giảng và mở bài giảng 41
Hình 2.34: Chạm tay vào shorcut DEV C++ và hình giao diện chương trình 41
Hình 2.35: Chạm tay vào shorcut Paint và giao diện Paint 42
Hình 3.36: Thanh Taskbar trên đó có 3 chương trình được kích hoạt 42
Hình 2.37: Thao tác chuyển qua Paint 42
Hình 2.38: Màn hình Paint 43
Hình 2.39: Viết chữ trên Paint 43
Hình 2.40: Nhấn nút xóa trên Paint 43
Hình 2.41: Xóa chữ vừa viết trên Paint 44
Hình 2.42: Xóa hết trên Paint 44
Hình 2.43: Nhấn trở về bài giảng 44
Hình 2.44: Quay lại bài giảng 45
Hình 3.1: Điều khiển game Angry Birds 48
Hình 3.2: Chơi game có tính giáo dục dành cho trẻ em 49
Hình 3.3: Mô hình bàn tương tác sử dung cảm biến Kinect 50
Hình 3.4: Tường tương tác 50
Trang 8Chương I PHẦN MỞ ĐẦU 1.1 Dẫn nhập
Ngày nay các thiết bị cảm ứng đã không còn quá xa lạ, nó ngày càng trở nên
đa dạng và phổ biến Các sản phẩm màn hình cảm ứng đã được áp dụng rộng rãi vào nhiều lĩnh vực: giáo dục, y tế, quảng cáo sản phẩm, hội họp… Giúp người dùng đạt hiệu quả cao trong công việc như giúp giáo viên hướng dẫn trên lớp học đạt kết quả cao so với phương pháp dạy truyền thống, các cửa hàng hiển thị thông tin sản phẩm giúp khách khách hàng dễ dàng lựa chọn, còn trong y tế sẽ giúp các bác sĩ có cái nhìn tổng quát hơn về bệnh nhân Từ đó mang lại hiệu quả và thu lại nhiều phản hồi tích cực
Ở Việt Nam, các sản phẩm với màn hình cảm ứng cũng dần được áp dụng nhằm nâng cao hiệu quả của công việc Ví dụ như đã có nhiều trường mầm non tiêu chuẩn quốc tế áp dụng công nghệ thông tin vào giảng dạy, dẫn đến chất lượng trong hiệu quả giảng dạy thay đổi một cách đáng kể Đặc biệt là việc sử dụng “bảng thông minh” tạo ra sự tương tác hai chiều giữa học sinh và bài giảng, nhằm tối ưu hóa khả năng phát triển nhận thức, tư duy trong quá trình học tập của người học Điển hình một số trường đã tiên phong trong việc sử dụng “bảng thông minh”: Trường mầm non quốc tế MappleBear Canada, Trường mầm non Hạnh Phúc Tân Bình, Trường mầm non Quốc tế EQ
Hạn chế của“bảng thông minh” là giá thành khá cao.Ví dụ giá thành của các sản phẩm bảng thông minh có thể lên đến hơn vài ngàn USD Tuy nhiên trước sự phát triển của công nghệ xử lý ảnh đã mở ra một giải pháp mới giúp người dùng tương tác, dùng tay chạm lên màn chiếu không cảm ứng để điều khiển máy tính như màn hình cảm ứng Và đây cũng là lý do nhóm nghiên cứu “Tương tác trực quan giữa người và máy tính bằng cảm biến quang” nhằm giúp tiết kiệm chi phí lắp đặt bảng thông minh mà vẫn đáp ứng được các tính năng của “bảng thông minh” giúp
Trang 9Một số bài toán thực tế như bên dưới cho thấy nếu có một loại màn chiếu thông minh với giá thành rẻ, sẽ giảm thiểu các bất tiện cho giáo viên cũng như giảm kinh phí đầu tư bảng phấn cho các cơ sở đào tạo đồng thời loại trừ nguy cơ bệnh phổi từ việc giáo viên phải hít bụi phấn
Bài toán 1: Sự mất nhiều thời gian của việc di chuyển liên tục của giáo viên
từ máy tính đến bảng phấn
Bài toán 2: Sự khó khăn khi bảng phấn bị che khuất bởi màn chiếu
Bài toán 3: Sự bất tiện khi đang cầm phấn mà muốn điều khiển máy tính
1.2 Tổng quan tình hình nghiên cứu
1.2.1 Trên thế giới
Hệ thống “Ubi interactive”
Ubi interactive là một công ty thành lập ở Đức đặt trụ sở ở Munich liên kết với Microsoft để phát triển hệ thống điều khiển cử chỉ trong không gian ba chiều bằng cảm biến Kinect Công nghệ này đã gây chú ý trên thế giới và được Microsoft gọi là tương lai của màn hình kĩ thuật số tại hội nghị Đối Tác Thế Giới năm 2012
Hệ thống hoạt động nhờ sử dụng cảm biến độ sâu được gắn bên trên máy chiếu hoặc đính kèm vào màn hình Cảm biến sẽ nhận diện các thao tác tay của người dùng, sau đó phần mềm Ubi sẽ phiên dịch hành động của người dùng thành dòng lệnh của máy tính, sau đó đưa chúng vào các ứng dụng để tương tác Chính vì thế, Ubi có thể dùng với hầu như tất cả ứng dụng đang được hiển thị lên màn hình Đây là một giải pháp tiết kiệm bởi nó có thể hoạt động với những phần mềm và phần cứng sẵn có mà không cần phải chỉnh sửa gì nhiều [14]
Trang 10Hình 1.1: Mô hình mô phỏng hệ thống Ubi
Ưu điểm
- Nhận diện thao tác chạm ngón tay của người dùng
- Hoạt động ổn định với nhiều ứng dụng trên hệ điều hành
Trang 11Hệ thống tương tác với máy tính nhờ thiết bị cảm biến độ sâu được gắn ở góc màn hình chiếu và cách màn hình 40cm, bằng chân đứng hoặc được đính kèm với màn hình Cảm biến nhận diện các hành vi của người dùng và xử lý ở máy tính[13]
Hình 1.2: Sản phẩm Touchless Touch
Ưu điểm
- Hỗ trợ 128 điểm cảm ứng chuẩn
- Cảm ứng từ 90 – 200 inch nên không gian tương tác khá rộng
- Hỗ trợ tương tác đa điểm
Khuyết điểm
- Cần nhiều Kinect, nếu mặt phẳng lớn cần tới bốn Kinect
- Ứng dụng chỉ chính xác khi Kinect được lắp đúng vị trí, không phù hợp với các phòng có không gian nhỏ hẹp
1.2.2 Trong nước
Hệ thống “Tường tương tác” của công ty Vntouch
Phần mềm do kỹ sư Trần Tùng Mậu cùng đội ngũ kỹ sư của công ty Vntouch- Multitouch Technology Việt Nam đã tạo ra sản phẩm “tường tương tác”
là phương tiện dành cho giải trí và quảng cáo Tường tương tác gây cảm giác mới
Trang 12lạ, sống động chân thực, nó biến người tham gia thành một phần của thế giới tương tác
Một camera hồng ngoại phủ lên màn hình một lớp sóng laser, khi người dùng chạm tay vào màn hình thì một cảm biến sẽ thu về ảnh bàn tay và xử lý trên máy tính Các thông tin thao tác của bàn tay sẽ được chuyển qua các hiệu ứng đồ họa[15]
- Hệ thống chỉ áp dụng cho một mục đích quảng cáo sản phẩm
- Sản phẩm chưa có nhiều chức năng được xử lý trên máy tính
Cho đến nay, những công trình được đề cập phía trên đều chưa có một công
Hình 1.3: Sản phẩm tường tương tác của công ty Vntouch
Trang 13phần còn hạn chế Chương trình chỉ có thể thực hiện được những chức năng cơ bản thông qua việc nhận diện thao tác chạm tay lên mặt phẳng tương tác Bên cạnh đó, hầu hết các dự án trên vẫn đang còn trong quá trình phát triển vẫn chưa hoàn thiện
và còn gặp nhiều vấn đề cần phải giải quyết Qua đó nhóm tác giải muốn nghiên cứu, hướng tới một chương trình có thể khắc phục được những khuyết điểm của các
hệ thống trên như: nhận dạng tốt hơn và nhanh hơn, thực hiện được nhiều chức năng Tìm cách giải quyết bài toán làm cách nào có thể sử dụng màn chiếu thay thế hoàn toàn các thao tác trên bảng phấn như viết bằng tay, bôi xóa bằng tay một cách linh hoạt
1.3 Mục tiêu nghiên cứu
Xây dựng một phần mềm chạy trên máy tính có khả năng thu nhận hình ảnh bàn tay của giáo viên thao tác trên màn chiếu, từ đó thông qua kỹ thuật xử lý ảnh để hiển thị lên màn chiếu những đường nét được tạo ra từ hoạt động của bàn tay Để thực hiện điều này cần:
- Tìm hiểu về cách hoạt động và chức năng của bảng thông minh (SmartBoard)
- Tìm hiểu về thiết bị Kinect và các bộ thư viện hỗ trợ lập trình
- Nghiên cứu thuật toán, phương pháp nhận dạng thao tác chạm trên mặt phẳng tương tác
- Khoanh vùng cần tương tác và chuyển sang tọa độ màn hình máy tính
- Chuyển các thao tác chạm thành các sự kiện con trỏ chuột trái và chuột phải trên hệ điều hành Windows
1.4 Lựa chọn phương pháp nghiên cứu
1.4.1 Nhận diện bàn tay OpenNI(Hand Tracking)
Phương pháp này thông qua Kinect sẽ tách ngưỡng người qua ảnh độ sâu rồi
từ đó khoanh vùng rồi nhận diện hai bàn tay[5]
Trang 14Hình 1.4: Nhận diện bàn tay (OpenNI)
Ưu điểm
- Nhận diện được và lấy giá trị bàn tay
- Sử dụng ở khoảng cách chấp nhận được
Khuyết điểm
- Ở khoảng cách xa trên 1.4 mét không nhận diện tốt
- Chỉ hỗ trợ khi bàn tay để đối diện Kinect
- Thời gian nhận diện và theo dõi các thao tác chậm hơn so với thời gian thực
1.4.2 Phát hiện dựa vào màu da
Phát hiện màu da là quá trình của việc tìm kiếm các pixel có thông số trùng với thông số của màu da trong ảnh hoặc video Quá trình này thường được sử dụng như là một bước tiền xử lý để tìm thấy các khu vực có sự xuất hiện khuôn mặt hoặc tay chân con người trong hình ảnh Phân loại màu da là xác định một ranh giới quyết định lớp màu da trong không gian màu dựa trên một cơ sở dữ liệu màu da cụ thể Trong phương pháp, nhóm nghiên cứu xác định màu da dựa vào các thông số
R, G, B để tính toán các số liệu cụ thể[3] Hình 1.5 cho thấy mỗi điều kiện khác nhau thì hình ảnh màu thu được hoàn toàn khác nhau Ví dụ 1.5(a) môi trường ánh
Trang 15sáng bình thường, 1.5(b) môi trường ánh sáng mạnh, 1.5(c) môi trường ánh sáng yếu
Hình 1.5: Mẫu màu da trên bàn tay được chụp trong 3 môi trường với điều
kiện ánh sáng khác nhau
Ưu điểm
- Phát hiện chạm, theo dõi được cử chỉ của bàn tay
- Đây là một phương phổ biến được áp dụng ở nhiều đề tài nghiên cứu
Khuyết điểm
- Đây vẫn còn là xử lý ảnh phức tạp nên phát hiện và xử lý không ổn định
- Vì đây là phương pháp xử lý trên điểm ảnh nên cần có ảnh bàn tay với kích
thước đủ lớn để có thể nhận dạng được
- Phụ thuộc rất nhiều vào điều kiện môi trường xung quanh
1.4.3 Xử lý điểm ảnh trong Kinect
Đầu tiên ta sẽ lưu vào mảng giá trị độ sâu của bàn tay thông qua công thức tính khoảng cách của Kinect rồi so sánh các giá trị độ sâu điểm ảnh trên bàn tay so với giá trị vừa được lưu trữ trên toàn mảng đã lưu từ trước nếu thỏa điều kiện thì xác nhận tay đã chạm mặt phẳng[6]
Trang 16Hình 1.6: Minh họa về mật độ điểm ảnh trên bàn tay
Ưu điểm
- Nhận diện nhanh, đáp ứng thời gian thực
- Có thể thao tác trước mặt và sau lưng
Khuyết điểm
- Do phụ thuộc vào các tia hồng ngoại để đo đạc độ sâu nên cảm biến bị ảnh hưởng bởi môi trường có nhiều tia hồng ngoại (như ánh sáng mặt trời) sẽ dẫn đến thu nhận bản đồ độ sâu không ổn định
1.4.4 Phương pháp theo dõi khung xương SDK(Skeleton Tracking)
Cảm biến Kinect phát hiện ra khung xương hình ảnh toàn bộ cơ thể người Sau khi có khung xương của toàn thể cơ thể người, chương trình cần thực hiện rút trích phần khớp xương của hình ảnh bàn tay cho các bài toán đã đặt ra ở phần dẫn nhập Từ đó lấy ra các giá trị độ sâu hình ảnh tay rồi so sánh với giá trị trên toàn mặt phẳng hay các điểm lân cận bàn tay đã thu vào một mảng từ trước, nếu thỏa mãn điều kiện đặt ra là trong hai ngưỡng Max và Min thì ghi nhận tay đã chạm vào mặt phẳng[4]
Trang 17Hình 1.7: Mô phỏng khung xương
Ưu điểm
- Phát hiện khung xương rất nhạy và nhanh
- Nhận diện được nhiều người, phù hợp cho đa chạm
- Phù hợp với các ứng dụng liên quan đến nhận diện con người
1.5 Đối tượng và phạm vi nghiên cứu
1.5.1 Đối tượng nghiên cứu
Giáo viên giảng dạy và các phòng học có màn chiếu (projector)
1.5.2 Phạm vi nghiên cứu
Xây dựng chương trình giúp cho việc tương tác với màn chiếu dễ dàng hơn phù hợp với công việc giảng dạy
Trang 181.6 Những mặt tích cực và hạn chế của đề tài
1.6.1 Tích cực
Việc gộp các chức năng của một màn chiếu thông thường với các chức năng của bảng phấn thành một loại bảng thông minh là một phương pháp mới biến một màn chiếu cứng nhắc thành một màn hình cảm ứng tiện lợi và an toàn với sự hỗ trợ của cảm biến Kinect
1.6.2 Hạn chế
Do giới hạn của Kinect nên để việc tương tác có độ chính xác cao thì Kinect được đặt cách màn chiếu trong vòng 1,7 mét trở xuống
1.7 Kết cấu của đề tài
Báo cáo gồm ba phần chính: phần mở đầu, phần nội dung và phần kết luận
Chương I: Phần mở đầu
- Nêu lý do chọn đề tài, tìm hiểu các đề tài có liên quan ở trong và ngoài nước để xem các ưu và nhược điểm, từ đó đưa ra mục tiêu nghiên cứu và phương pháp
Chương II: Nội dung thực hiện
- Tìm hiểu về Kinect, cách cấu tạo, nguyên lý hoạt động, các công nghệ bên trong và thư viện hỗ trợ để đưa ra cách xác định tay chạm mặt phẳng
- Xác định vùng cần tương tác và tính toán chuyển hệ tọa độ sao cho phù hợp với tọa độ trên màn hình máy tính
- Thử nghiệm chương trình và đưa ra số liệu khảo sát
Chương III: Kết luận
- So sánh kết quả thực hiện với mục tiêu đề ra
- Kết luận chương trình
Trang 19Chương II: NỘI DUNG THỰC HIỆN 2.1 Quy trình thực hiện
Bước 1: Tìm hiểu về thiết bị Kinect, nguyên lý hoạt động và các công nghệ bên
trong Kinect
Bước 2: Đồng bộ hóa ảnh màu và ảnh độ sâu Việc tính toán được thực hiện ở ảnh
độ sâu nhưng ảnh màu cung cấp hình ảnh trực quan hơn giúp người dùng dễ dàng quan sát và chọn vùng tương tác
Bước 3: Quét vùng cần tương tác trên màn chiếu
Hình 2.1: Quy trình thực hiện Bước 4: Theo dõi khung xương con người để thực hiện rút trích khớp xương bàn
tay
Bước 5: Theo dõi vùng tương tác và nhận diện các thao tác chạm tay
Trang 20Bước 6: Chuyển thao tác chạm tay từ tọa độ trong vùng chọn tương tác sang tọa độ
màn hình máy tính
Bước 7: Xử lý các sự kiện con trỏ chuột Windows
2.2 Tìm hiểu về thiết bị Camera Kinect
2.2.1 Sự ra đời và phát triển của Kinect
Hình 2.2: Hình camera Kinect Kinect lần đầu tiên được công bố vào ngày 01/06/2009 dưới tên mã “Project Natal” theo tên thành phố của người thực hiện dự án Ở hội nghị thường niên E3, Kinect ban đầu được Microsoft phát triển dành riêng cho hệ máy Xbox 360 mang đến trải nghiệm game sống động hơn, sau này được phát triển để viết các ứng dụng cần sự tương tác [2]
Sản phẩm này được bán lần đầu tiên tại Bắc Mỹ vào tháng 11 năm 2010, tiếp theo là Úc, New Zealand, Singapore, Nhật Bản và nhanh chóng xuất hiện ở khắp các thị trường trên toàn thế giới Kinect là một thiết bị giải trí tiên tiến, được Microsoft phát triển và là tiên phong trong lĩnh vực thực tế ảo Sau đó, còn gây sốt
và trở thành một trong những thiết bị bán chạy nhất thế giới vì giá thành khá rẻ (130USD) mà có khả năng cung cấp thông tin 3D với chất lượng chấp nhận được[1]
Kinect là một thành tựu có ứng dụng rộng rãi không chỉ dành riêng cho chơi game mà còn nhiều ứng dụng khác trong xử lý ảnh như: theo dõi cử chỉ con người
và viết ứng dụng trả lời các cử chỉ đó, có thể sử dụng để điều khiển robot, sử dụng bản đồ độ sâu để viết các ứng dụng liên quan, xây dựng lên các ứng dụng mô hình
Trang 213D, có thể nén kích thước ảnh màu nhỏ hơn nhiều so với kích thước ban đầu để phục vụ cho đời sống cũng trong giáo dục, y tế
2.2.2 Các thành phần chính của Kinect
Hình 2.3: Hình cấu tạo của Kinect Thiết bị cảm biến Kinect là một thanh ngang kết nối với trục nhỏ bằng một trục cơ đứng Thiết bị bao gồm hai camera một cảm biến IR, microphone nhận diện giọng nói và một số bộ phận phụ được vận hành bởi một phần mềm độc quyền của Microsoft và công nghệ 3D camera của hãng PrimeSence giúp thiết bị có thể bắt chuyển động 3D toàn cơ thể, nhận diện khuôn mặt, nhận diện giọng nói[2]
Các thành phần bên trong Kinect gồm có: RGB camera, Depth camera (3D Depth Sensors), động cơ điều khiển góc (Motorized Tilt), dãy microphone (Multi-array Mic), chip PS 1080 của Prime Sensor
- RBG camera: Là một camera thu về ảnh màu có tốc độ 30 fps/s
- Depth camera: Phát ra tia hồng ngoại là một luồng ánh sáng có cấu trúc giúp đo đạc độ sâu dựa theo cấu trúc được phản xạ lại
- Motorized Tilt: Giúp điều khiển nâng lên hạ xuống góc Kinect để có một góc nhìn tốt nhất
Trang 22- Muti-array Mic: Dùng để hỗ trợ nhận diện giọng nói gồm nhiều thứ tiếng được hỗ trợ, giúp điều khiển thiết bị
- Prime Sensor: Dùng để xử lý trực tiếp độ sâu và kết quả thu về nhanh, chính xác và ổn định
Hình 2.4: Cấu tạo bên trong Kinect
2.2.3 Các công nghệ bên trong của Kinect
2.2.3.1 Công nghệ PrimeSensor
Công nghệ PrimeSensor là công nghệ của công ty PrimeSense Đây là giải pháp công nghệ dành cho các cảm biến kỹ thuật số cho phép thiết bị khả năng quan sát không gian 3 chiều (3D), nhưng dữ liệu hình ảnh lại được xử lý ở cảm biến CMOS Công nghệ này có khả năng ghi nhận độ sâu, ảnh màu và cả âm thanh xung quanh thành một dòng hình ảnh đồng bộ giống như thông tin con người thu được từ các giác quan Những dữ liệu sau đó được đồng bộ hóa và biên dịch thành những thông tin: xác định cơ thể của một người, nhận dạng các hành vi của người đó, phân loại các đối tượng, vị trí các bức tường và sàn nhà[11]
Trang 23Hình 2.5: Công nghệ xử lý ảnh của PrimeSense
2.2.3.2 System on a chip (SoC)
Đây là giải pháp, một hệ thống điện tử được xây dựng trên một đế silicon với
ý tưởng sẽ tích hợp tất cả các thành phần của một hệ thống máy tính lên trên một vi mạch đơn Một hệ thống điển hình bao gồm một loạt các mạch tích hợp cho phép thực hiện các nhiệm vụ khác nhau Hệ thống có thế tích hợp: bộ vi xử lý (microprocessor), bộ nhớ (RAM,ROM), khối truyền thông nối tiếp UART, các cổng song song Công nghệ System on a chip (SoC) của PrimeSense sử dụng cảm biến hình ảnh CMOS và PrimeSense Soc’s Carmine (PS1080) thực hiện các thuật toán phức tạp tính toán song song để giải mã ánh sáng nhận được trong không gian tạo ra một bản đồ độ sâu đồng bộ với hình ảnh màu sắc Dữ liệu đồng bộ về video màu, độ sâu và dòng âm thanh được truyền qua một cổng kết nối USB 2.0 Hệ thống (SoC) yêu cầu một cấu hình CPU tối thiểu để cho các thuật toán[7]
2.2.3.3 PrimeSense Light Coding
Trang 24Giải pháp Light Coding của công ty PrimeSense là giải pháp công nghệ cho cảm biến độ sâu có khả năng thu về độ sâu ba chiều (3D) với độ chính xác cao Về nguyên tắc, Light Coding hoạt động bằng cách mã hóa vùng không gian quan sát thông qua cảm biến tiêu chuẩn off-the-shelf CMOS – camera phát ra những tia hồng ngoại “vô hình” với mắt người
Hình 2.6: Giải pháp độc quyền Light Coding của PrimeSense Giải pháp đã tạo ra một sự bước ngoặc lớn xây dựng một hệ thống đa cảm
Trang 25Giải pháp đã được ứng dụng rộng rãi trên thế giới, với hơn 20 triệu thiết bị trong đó Kinect Sensor là một điển hình[11]
2.2.4 Thư viện hỗ trợ Kinect
Ngay từ đầu ra mắt sản phẩm Kinect của Microsoft đã được thu hút được sự quan tâm từ nhiều nhà nghiên cứu Kinect ngoài việc sử dụng chơi game mà còn có khả năng phát triển trong nhiều lĩnh vực y học, robot, quảng cáo Để lấy các thông
số cần thiết của Kinect đòi hỏi khả năng lập trình tốt, am hiểu cấu hình thiết bị Do
đó thư viện Kinect SDK ra đời nhằm giúp cho các lập trình viên dễ dàng lấy các thông tin, khai thác sâu các tính năng của Kinect
Kinect SDK
Kinect SDK được Microsoft phát triển ngày 16 tháng 6 năm 2011, sau hai năm sau khi công bố sản phẩm Kinect, tuy ra muộn hơn các thư viện mã nguồn mở khác nhưng thư viện lại hỗ trợ tối đa người lập trình phát huy hết tính năng của Kinect
Kinect chạy trên Windows SDK, tương thích Windows 7 trở lên, bao gồm các trình điều khiển, cảm biến API mạnh mẽ cho bộ cảm biến cử động, giao diện người dùng tự nhiên, tài liệu tham khảo cài đặt cho các ứng dụng và thiết bị Kinect SDK cung cấp các hướng dẫn cho các nhà phát triển để xây dựng các ứng dụng với C++, C#, VB trên Microsoft Visual Studio 2010 trở lên[9]
Hiện giờ Microsoft đã phát triển tới phiên bản Kinect SDK 1.8, được phát hành vào ngày 17 tháng 9 năm 2013 hỗ trợ tốt hơn để phát triển phần mềm, được cung cấp bộ công cụ phát triển theo nhiều ngôn ngữ C++, C#, Visual Basic Hơn nữa còn có một diễn đàn hỗ trợ cho Kinect[12]
Các tính năng của SDK 1.8
- Loại bỏ nền cũ: Ứng dụng API hình nền xanh với chế độ một người dùng được thay bởi kỹ thuật mới giúp thay đổi hình nền xung quanh người mà vẫn đảm bảo sự ổn định và tính chính xác
Trang 26- Tạo máy chủ Web cho Kinect Data Streams: Được thiết kế để cho các ứng dụng HTML5 chạy trong trình duyệt kết nối với các cảm biến thông qua một máy chủ đang chạy trên máy cục bộ Các thành phần của máy chủ là một khuôn mẫu có thể sử dụng hay sửa đổi khi cần thiết
- Chụp màu và theo dõi khung xương tốt hơn với Kinect Fusion: Kinect Fusion cung cấp cho đối tượng quét 3D và tạo ra mô hình sử dụng một cảm biến Kinect cho Windows Với phiên bản này, người dùng có thể quét một cảnh, đồng thời có thể tạo và tương tác với một mô hình 3D chi tiết của cảnh vật đó
- Hỗ trợ thêm ngôn ngữ mới cho Speed Recognition: Loại bỏ tiếng ồn và tiếng vang, hỗ trợ nhận diện thêm nhiều ngôn ngữ mới
- Theo dõi khung xương ở chế độ ngồi: Có thể nhận biết người chơi đang đứng hay đang ngồi và có hiệu suất cao hơn chế độ mặc định
- Thời gian chạy cải tiến và chất lượng hình ảnh tốt hơn
- Hỗ trợ cho máy ảo, xây dựng hai cảm biến Kinect chạy song song
- Raw Sensor Stream - Cảm biến động: Các nhà phát triển có thể truy cập dữ liệu thô từ bộ cảm biến sâu, camera cảm biến màu sắc Cho phép xây dựng các cảm biến cấp độ thấp hơn thông qua cảm biến Kinect[10]
2.2.5 Tính toán độ sâu Kinect
Đây là một trong những đặc tính quan trọng nhất đó là về giá trị độ sâu hay giá trị khoảng cách tới vật thể trong thế giới thực
Góc quan sát của cảm biến là hình nón giống tất cả các camera thông thường Tuy nhiên với khoảng cách dưới 80cm thì camera hồng ngoại không thể tập trung vào một điểm trên lưới các điểm hồng ngoại Thông số mặc định được sử dụng để cho một kết quả ổn định là giữa 3 feet (0,8 mét) và 12 feet (3,5 mét) tính từ cảm biến đến đối tượng Chỉ số khoảng cách được thu về từ cảm biến là milimet[4]
Trang 27Hình 2.8: Ảnh độ sâu
Hình 2.7: Góc chiếu Kinect Thư viện hỗ trợ Kinect SDK của Microsoft không cung cấp cho nhà phát triển quyền truy cập sâu vào dữ liệu được thu về từ camera hồng ngoại Kinect SDK
sẽ xử lý trước các dữ liệu lấy về từ camera hồng ngoại tạo ảnh độ sâu tùy ý Các dữ liệu độ sâu được thu về từ cảm biến tạo thành một frame ảnh độ sâu (DepthImageFrame), các frame ảnh độ sâu đó đã được xử lý trước bởi lớp DepthImageStream
Mỗi một điểm ảnh độ sâu gồm 16 bits chứa giá trị độ sâu và thông tin người
Trang 28diện được 6 người Mười ba bits còn lại chứa thông tin về giá trị độ sâu của điểm ảnh đó
Hình 2.9: Thông tin các bit lưu trữ độ sâu Projector sẽ chiếu một chùm sáng hồng ngoại, tập hợp đốm sáng được phát
ra là cố định Những đốm sáng này được tạo ra nhờ một nguồn sáng truyền qua lưới nhiễu xạ(difraction gratings) Tập hợp các đốm sáng này được IR camera chụp lại, thông qua giải thuật đặc biệt được tích hợp trong PS1080 SoC cho bản đồ độ sâu Bản chất của giải thuật này là các phép toán hình học dựa trên quan hệ giữa hai cảm biến IR camera và Projector[1]
Hình 2.10: Ví dụ về đo độ sâu Nhìn vào hình ta có thể thấy cách tính toán độ sâu của Kinect nhờ laser hồng ngoại đặc biệt bằng một hình ba chiều sau đó các sử dụng bù đắp mỗi điểm để tạo ra bản đồ độ sâu 11 bit
Khi IR projector phát laser hồng ngoại tới mặt phẳng thì IR camera thu lại
Trang 29lệch (disparity map), giá trị này càng lớn thì khoảng cách hay giá trị độ sâu ảnh (depth) càng lớn, các đốm sáng còn lại được xây dựng bằng phương pháp nội suy với độ chính xác theo công thức Nicolas Burrus [8], có giá trị chênh lệch d:
Trong đó:
- d: Số nguyên biểu diễn dưới dạng 11 bit
- Z: Giá trị biến thiên
2.2.6 Phân tích kỹ thuật máy học nhận diện khung xương
Máy học là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu
và xây dựng các kỹ thuật, cho phép các hệ thống “học” tự động từ dữ liệu để giải quyết các vấn đề cụ thể Để tạo ra một cảm biến Kinect có thể nhận và theo dõi cơ thể người Kinect đã áp dụng dụng kỹ thuật máy học đối với 100.000 hình ảnh độ sâu được cho là cơ thể người – những bức ảnh này được thu về từ những máy ảnh phát hiện chuyển động của con người
Hình 2.11: Đối tượng cơ thể áp dụng cho học máy Tuy nhiên, với một hình ảnh thực sự thì cần sử dụng đến hàng chục kỹ thuật
xử lý ảnh để có thể nhận diện ra một cơ thể con người Để có thể nhận diện hết tất
Trang 30lớn Vì vậy đã có đến hơn một triệu lần cho máy học để có thể nhận dạng cơ thể người
Quá trình máy học của cảm biến Kinect cần đến 24.000 giờ xử lý trên CPU, nhưng nó chỉ có thể mất một ngày với việc xử nhiều CPU cùng xử lý cùng một lúc[6]
2.2.7 Giới thiệu khung xương
Trục tọa độ của khung xương
Tất cả các khớp xương được biểu diễn như là một mô hình ba chiều(x, y, z)
và quy ước sử dụng hệ trục tọa độ thuận tay phải Trục z sẽ luôn mang giá trị dương– biểu diễn độ sâu của khung xương
Mỗi khớp xương riêng biệt đều được xác định bởi một vị trí được xác định bên trong thành phần cấu trúc của thư viện Kinect SDK Cấu trúc của mỗi khớp xương được đại diện ba thuộc tính chính:
- JointType
- Positions (Vị trí)
- Tracking State (Mô tả trạng thái theo dõi)
Hình 2.12: Nhận dạng khung xương từ ảnh độ sâu
Trang 31Hình 2.13: Trục tọa độ khung xương Thuộc tính JointType là một giá trị kiểu liệt kê JointType, trong đó có tên của đầy đủ 20 khớp xương Từng vị trí khớp đại diện cho một đối tượng của SkeletonPoint Thuộc tính Positions(vị trí) là một loại SkeletonPoint, đại diện cho
hệ tọa độ(x, y, z) và các giá trị của khớp xương đó Thuộc tính JointTrackingState
sẽ mô tả trạng thái các khớp xương với các nhãn: Tracked (theo dõi), Inferred (nội suy) hoặc Not Tracked (không thể theo dõi)[6]
2.3 Đồng bộ hóa ảnh
Việc theo dõi ảnh màu và tính toán ở ảnh độ sau gọi tắt là đồng bộ hóa ảnh màu và ảnh độ sâu sẽ giúp cho người dùng quét vùng tương tác dễ dàng và chính xác hơn Ảnh màu cho cái nhìn chính xác về không gian phía trước và việc xử lý thì lại diễn ra trên ảnh độ sâu Vì vậy việc đồng bộ hóa là điều cần thiết Ảnh màu và ảnh độ sâu được thu về từ Kinect có sự chênh lệch nhau về tọa độ điểm ảnh vì thiết
kế của Kinect để camera màu và camera hồng ngoại đặt cách nhau khoảng cách nên ảnh thu về có giá trị khác nhau[7]