Đăng ký Đăng nhập
Trang chủ Nghiên cứu và ứng dụng kinect vào việc trình chiếu tài liệu...

Tài liệu Nghiên cứu và ứng dụng kinect vào việc trình chiếu tài liệu

.PDF
60
343
146

Mô tả:

1 n Từ xưa, khi những thế hệ máy tính đầu tiên ra đời thì con người đã bắt đầu có những ước mơ xa hơn về thế giới tương lai của mình. Trong tương lai ấy, con người sẽ làm chủ được mọi thứ, có thể tương tác với máy tính thông qua hành động, cử chỉ và giọng nói của mình. Và câu hỏi được đặt ra là: Có thể thực hiện được ước mơ đó không? Nhưng ngày nay - thế kỷ 21, cùng với sự phát triển nhanh của ngành công nghệ số và các thiết bị số kỹ thuật cao, cùng với sự ra đời của thiết bị Microsoft Kinect, thì câu trả lời đó là: Có thể! Sự tương tác giữa người sử dụng với máy tính ngày càng trở nên phong phú, đa dạng. Trong những thập niên 70, bàn phím hầu như là công cụ duy nhất để điều khiển máy tính. Sau đó đến khi giao diện đồ họa phát triển, con chuột máy tính đã được phát minh và hỗ trợ việc tương tác trở nên thuận tiện hơn. Cùng với sự phát triển của công nghệ, và các thuật toán, con người có thể giao tiếp với máy tính thông qua các màn hình chạm, hành vi, cũng như giọng nói. Trong nghiên cứu này, chúng tôi sẽ thực hiện một phần ước mơ đó, bằng việc hỗ trợ sự tương tác giữa con người với máy tính thông qua thiết bị Kinect để điều khiển việc trình chiếu tài liệu bằng Slide PowerPoint và con trỏ chuột trên nền Window mà không cần đến nhiều thiết bị hỗ trợ mà chỉ cần: một thiết bị Kinect Sensor, một máy tính sử dụng hệ điều hành Windows ( từ Windows 7 trở lên). Giờ đây, không cần phải chạm tay vào bàn phím, thậm chí không cần phải cầm con chuột hoặc chạm tay vào màn hình mà chỉ cần đứng trước Kinect bằng hành động và giọng nói của mình là có thể thực hiện được những gì mà mình mong muốn. Ngày nay, hầu hết các đều biết đến hoặc đã xem qua các buổi hội nghị, tọa đàm, hay một buổi báo cáo, thậm chí là một giáo viên giảng dạy nào đó,… người ta sử dụng rất nhiều Slide PowerPoint để thuyết trình tài liệu của mình. Nắm bắt được nhu cầu phát triển trên, chúng em đã tìm ra một giải pháp mới, một phong cách mới nhằm hỗ trợ cho việc thuyết trình và tạo ra nhiều hứng thú hơn khi công việc đó giờ đây chỉ là một cử động của cơ thể hoặc ra lệnh bằng giọng nói. Đề tài mà chúng em giới thiệu ở 2 đây, được viết trên Visual Studio 2010 bằng ngôn ngữ C#, lâp trình phát triển trên nền thư viện Microsoft SDK. Bên cạnh đó, chúng tôi cũng giúp các điều khiển một số thao tác trên con trỏ chuột của Window thông qua Kinect của Microsoft. Chúng em sẽ nói rõ vấn đề trên ở những phần sau. Kinect thật sự tạo ra cơn sốt, không chỉ trong cộng đồng Game thủ mà cả trong giới nghiên cứu, lập trình viên và nhà thiết kế trên thế giới. Nhờ vào những ưu điểm của mình mà Kinect đã được ứng dụng vào nhiều lĩnh vực đời sống về giáo dục, điều khiển Window, y khoa, robot,… Trong y khoa: Hãng InfoStrat đã có sáng kiến ứng dụng Kinect cho các màn hình khổ lớn trong công tác hội chẩn. Ví dụ, với thao tác gõ nhẹ bàn tay vào “không khí” ngay phía trước màn hình hiển thị khổ lớn, các bác sỹ có thể cuộn qua các hình ảnh X-quang và những hình ảnh y khoa khác. Khi sử dụng cả 2 tay, bác sỹ có thể phóng to hay thu nhỏ hình ảnh ở từng vùng hiển thị để quan sát rõ hơn. Trong khi đó, phòng thí nghiệm Red Hill tại đại học San Francisco (California, Mỹ) đã “sáng tạo” ra một trò chơi giúp bệnh nhân Parkinson vừa thực hiện các bài vật lý trị liệu vừa giải trí để giảm ưu phiền. Trong công nghệ Robot và điều khiển tự động: Nghiên cứu tại đại học Berkeley (California, Mỹ) đã sử dụng camera trên Kinect và các cảm biến xác định độ sâu để giúp rô-bốt có được khả năng quan sát và qua đó có thể tự định hướng, phát hiện vật cản. Vài nghiên cứu trang bị Kinect trên xe nâng hàng trong nhà xưởng, kho bãi cũng đang được triển khai tại Mỹ và kết quả bước đầu khá khả quan. Theo Adept Technology, một hãng sản xuất rô-bốt cho các nhà máy thì lợi thế của Kinect là khả năng quan sát 3 chiều và điều này giúp rô-bốt cũng như xe nâng có thể quan sát tốt hơn, từ đó giảm thiểu tai nạn khi di chuyển. Trong kinh doanh, bán hàng: Hãng FaceCake Marketing Technologies đã thành công trong việc vận hành một phòng thử đồ tương tác với tên gọi Swivel. Về cơ bản, Swivel là một tấm gương tương tác, cho phép người mua hàng xem các món hàng “ảo” sẽ xuất hiện như thế nào trên một “manơcanh” (người nộm mẫu) có kích thước được “sao chụp” từ chính người 3 mua. Nói cho dễ hiểu, người mua và cửa hàng sẽ nhìn thấy nhau, và 2 bên sẽ chọn đúng kích thước món hàng cần thử. Trong nhiều tình huống, Swivel có thể đề xuất trang phục, kích thước món đồ dựa trên hình ảnh người mua được camera Kinect ghi nhận. Hãng AR Door của Nga cũng đã triển khai thành công giải pháp tương tự cho chuỗi cửa hàng bán lẻ Topshop. Cũng tại Mỹ, tại hệ thống cửa hãng thời trang Nodstrom, bên cạnh dịch vụ thử đồ ảo với Swivel, khách hàng có thể đứng trước các cửa kiếng trưng bày, sau đó dùng tay “vẽ” những lời nhận xét, đánh giá hay thậm chí đề xuất mẫu thiết kế mới. Xây dựng một chương trình điều khiển từ xa thông qua một số cử chỉ của các phần trên cơ thể người nhằm phục vụ trong việc trình chiếu Slide PowerPoint và điều khiển một số thao tác con trỏ chuột trên nền Window. Tạo ra một thế giới “ảo hóa”- giả lập cảm ứng cho người sử dụng và cách nhìn mới về một tương lai số mà ở đó con người chỉ cần “chạm” vào khoảng không và “điều khiển”. Giúp con người có thể tương tác với máy tính một cách dễ dàng hơn. Bên cạnh đó, đề tài sẽ giúp ta rút ngắn khoảng cách giữa thế thực và ảo, giao tiếp dễ dàng giữa người và máy. Ngoài ra, chương trình sẽ giúp cho người sử dụng có nhiều bài giảng, thuyết trình sinh động hơn và một cảm giác thoải mái, tự nhiên trong khi trình bày. Thông qua thiết bị Kinect Sensor để nhận dạng những cử chỉ, hành động trên cơ thể người và bằng giọng nói để điều khiển ứng dụng trình chiếu tài liệu, con trỏ Window. Từ việc bắt được những hình ảnh của những điểm trên cơ thể và giọng nói mà người dùng yêu cầu, chương trình sẽ xử lý chúng và chuyển thành những thao tác, sự kiện trên máy tính. Để thực hiện được những vấn đề trên chúng tôi cần phải: 4 Tìm hiểu đặc điểm cấu tạo và những ưu cũng như nhược điểm của thiết bị Kinect Sensor. Tìm hiểu cách thức ghi nhận hình ảnh và nhận dạng giọng nói của Kinect từ môi trường bên ngoài. Sử dụng giải thuật để xử lý hình ảnh dạng thô nhận được từ thiết bị đưa về và “chế biến” chúng thành những phương thức để máy có thể hiểu và đáp ứng được yêu cầu. Trong thời gian đảm nhận đề tài, chúng tôi cố gắng nghiên cứu và tìm hiểu một số nội dung sau: Tìm hiểu phương pháp trình chiếu tài liệu bằng Slide PowerPoint và những thao tác của con trỏ trên nền Windows. Tìm hiểu về .NET 2010 và thư viện hỗ trợ Kinect Microsoft SDK 1.0. Các đặc điểm cấu tạo và những ưu – khuyết điểm của thiết bị Kinect Sensor. Trong quá trình ghi nhận từ Kinect cho đến việc điều khiển được ứng dụng phải trải qua nhiều giai đoạn nên chúng tôi đã chia ra từng giai đoạn và xử lý: ghi nhận lại hình ảnh theo nhiều chế độ và đưa vào dữ liệu. Sau đó, dùng những giải thuật và hàm trong thư viện SDK 1.0 để xử lý và thực hiện yêu cầu. Đồng thời, cần giải quyết vấn đề nhận dạng điểm nào trên cơ thể và cách lọc âm, giảm ồn để nhận dạng một cách chính xác nhất khẩu lệnh mà người sử dụng đưa ra. Từ những Project xây dựng cho từng phần và những tính năng cụ thể, chúng tôi sẽ kết tất cả lại thành một chương trình logic hoàn chỉnh. So với những nghiên cứu khác từ thiết bị Kinect Sensor và việc hỗ trợ trình chiếu tài liệu, phần lớn là dựa trên bộ cảm biến của Kinect để bắt cử chỉ chuyển động cơ thể, một phần rất ít còn lại là điều khiển bằng giọng nói. Thì ở đây, chúng tôi đã “kết hợp” chúng lại thành “2 trong 1” - hành động và giọng nói, để tạo ra một ứng dụng. Nếu như việc trình chiếu tài liệu và điều khiển con trỏ cần phải dùng đến bàn phím và con chuột vi tính, thì giờ đây chương trình sẽ giúp người sử dụng không cần phải dùng đến những thiết bị trên, mà chỉ cần đứng trước “không gian” của Kinect 5 bằng hành động hoặc lời nói của mình để ra lệnh và bắt đầu điều khiển. Chương trình sẽ tạo ra một thế giới điều khiển “ảo” bằng cảm ứng nhưng không cần phải chạm vào màn hình hay bất cứ gì. S CC TR C Đ T ời mở đầu Trình bày lý do chọn đề tài, tổng quan đề tài, mục tiêu, phương pháp nghiên cứu, tính mới của đề tài, giới hạn và sơ lược cấu trúc của đề tài. Chương 1: Cơ sở l thuyết Lựa chọn tin học, giới thiệu về thiết bị Kinect, lịch sử phát triển của Kinect, các thư viện hỗ trợ Kinect, thư viện Microsoft SDK và những ứng dụng của Kinect. Chương 2: Nguyên l hoạt động của Kinect Cách tính toán độ sâu và nhận dạng giọng nói của Kinect, các giải pháp và phương thức lấy hình ảnh xử lý. Chương 3: Chương trình và giải thuật Giới thiệu về chương trình nghiên cứu và các giải thuật, hướng ứng dụng chương trình. Chương : Giải pháp và hoàn thiện Đưa ra những vấn đề đạt được và chưa đạt, cùng hướng giải quyết để hoàn thiện chương trình. 6 1.1. Có một vấn đề phải đối mặt trong những phòng học hiện đại ngày nay và những ứng dụng của tin học vào đời đời sống. Dự án mà nhóm chúng tôi đang nghiên cứu ở đây sẽ giúp đưa mọi người đến gần hơn với một cuộc sống tương lai số. Một ứng dụng Kinect sẽ là một giải pháp tốt . Thay vì ngồi đằng sau một màn hình máy tính hoặc phải phải tốn nhiều thời gian và công sức để điều khiển các Slide PowerPoint, thì giờ đây người sử dụng có thể đứng từ xa để điều khiển chúng. Chúng ta sẽ cùng tìm hiểu ở những chương tiếp theo. 1.2. 1.2.1. ình 1.1 – Thiết bị Kinect Kinect (hay còn biết với mã là Project Natal) là 1 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. 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 [4]: - 5/30/2007: Microsoft nung nấu tưởng về 1 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à 1 thiết bị hỗ trợ cho Xbox 360. 7 - 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 ector đã 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, tuy nhiên đến nay (6/2011), các API hỗ trợ từ thư viện này còn rất sơ khai. 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 hình 1.2, game thủ có thể đấm bốc như thật. Hình 1.2 – Nhận diện hành động game thủ và điều khiển nhân vật trong game Kinect được bán rộng rãi lần đầu tại Bắc Mỹ vào tháng 11 năm 2010, sau đó là Úc, New Zealand, Singapore, Nhật Bản và nhanh chóng có mặt trên khắp các cửa hàng đồ chơi trên toàn thế giới. Kinect là một thiết bị giải trí tiên tiến, đi tiên phong trong lĩnh vực thực tế ảo, nên hiện đang lập kỉ lục là thiết bị kĩ thuật số được bán chạy nhất trên toàn thế giới [5]. 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. 8 - Nhận dạng số người đang chơi - Phân biệt đối tượng dựa vào độ sâu. Hình 1.3 – Các chức năng thường dùng của Kinect Kinect có cấu tạo thon, dài, nằm ngang bao gồm 1 webcam có thể ghi nhận được hình ảnh; 1 thiết bị phát tia hồng ngoại, 1 thiết bị thu nhận tín hiện hồng ngoại 1 thiết bị ghi nhận âm thanh. Kinect dùng công nghệ xác định khoảng cách dùng camera kết hợp thiết bị thu phát tia hồng ngoại, phát triển bởi các lập trình viên Israel thuộc PrimeSense, có khả năng ghi nhận thông tin 3D của đối tượng dựa trên các thông tin, cấu trúc của các tia hồng ngoại nhận được. Có thể xem như Kinect là một 3D scanner, xây dựng cấu trúc vật thể 3D dựa trên thông tin ảnh và khoảng cách đến từng điểm của ảnh. 1.2.2. Hình 1.4 – Những thành phần chính của Kinect 9 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, 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: - RGB camera: như một camera thông thường, có độ phân giải 640 x 480 với tốc độ 30 khung hình/giây, 32 bit màu sắc. - Bộ cảm biế ộ sâu: độ sâu sẽ được lấy về thông qua sự kết hợp của 2 cảm biến: đèn chiếu hồng ngoại (IR light) và camera hồng ngoại (Depth Sensor). - Dãy hone: gồm microphone được bố trí dọc Kinect như trên hình 1.2, được ứng dụng vào các ứng dụng bằng giọng nói, 16 bit, tần số 16 Hz. - ộ u khi n gốc ngẩn: là loại động cơ DC khá nhỏ, cho phép ta điều khiển camera lên xuống để đảm bảo camera có góc nhìn tốt nhất. - PrimeSense PS1080-A2: chip này được xem như là bộ não của Kinect – tất cả các cảm biến được nối vào đây để xử l trước khi truyền ra được một chiều sâu hình ảnh và nhận dạng được giọng nói. Hình 1.5 – Cơ chế hoạt động của bộ cảm biến Prime Sense PS1080-A2 Một trong những đặc tính quan trọng nhất của Kinect đó là thu về giá trị độ sâu hay giá trị khoảng cách từ camera tới vật thể trong thế giới thực và nhận dạng được giọng nói. Phần tiếp theo sẽ nói về nguyên lý hoạt động của Kinect trong việc tính toán giá trị và cách thức nhận dạng giọng nói này. 10 1.3. 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à ibfreenect, Code Laboratories Kinect, OpenNI và Kinect SDK. 1.3.1. ibfreenect 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, ibfreenect được đóng gói cho việc sử dụng trên Python, C, C++, C#, Java JNI, Java JNA, Javascript. 1.3.2. 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. 1.3.3. Thư viện OpenN đượ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. 1.3.4. 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 11 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 (AP ) để nhận diện giọng nói trong hệ thống Windows. 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ữ .Net nào. 1.3.4.1. Kinect SDK beta Kinect SDK beta được Microsoft đưa ra vào ngày 16 tháng 6 năm 2011, là một công cụ lập trình mạnh cho các nhà phát triển. Nó cho phép lập trình viên truy xuất toàn bộ tính năng của thiết bị Kinect. Một điều bất tiện là thư viện này chỉ hỗ trợ trên công cụ lập trình của Microsoft là Visual Studio 2010 trở lên, với các ngôn ngữ là C++, C# và Visual Basic. Các tính năng nổi bật như: thu ảnh từ các sensor, skeleton tracking và điều khiển bằng giọng nói thông qua công cụ nhận biết giọng nói, Windows Speech Recornition API. Phiên bản beta chỉ cho phép sử dụng vào những mục đích phi lợi nhuận và phiên bản mới nhất được cập nhật vào ngày 1 tháng 11 năm 2011 với nhiều lỗi được sửa và chạy tốt trên Windows 8 Developer Preview. 1.3.4.2. Kinect SDK 1.0 Kinect SDK 1.0 ra đời vào tháng 2 năm 2012, SDK 1.0 có nhiều cải tiến hơn so với phiên bản beta. Bản mới này có khả năng hỗ trợ lên đến 4 bộ cảm biến Kinect cho một máy tính cho việc theo dõi khung xương của người sử dụng và chế độ theo dõi chuyển động ở khoảng cách là 40 cm ở phía trước thiết bị. Ngoài ra, đây cũng là bản được Microsoft tích hợp công nghệ nhận dạng giọng nói mới nhất nhưng chỉ hỗ trợ 4 tiếng là tiếng Anh, Mexico, Nhật và Canada và sẽ có nhiều ngôn ngữ hơn trong tương lai. Microsoft đang cố gắng hoàn thiện phần mềm nhận dạng giọng nói để giúp hệ thống nhận ra những từ địa phương trong các ngôn ngữ. 1.4. D 1.0 Kinect chạy trên Windows SDK, tương thích Windows 7, bao gồm các trình điều khiển, cảm biến AP 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 cài đặt cho các ứng dụng và thiết bị. SDK cung cấp các khả năng của 12 Kinect cho các nhà phát triển để xây dựng các ứng dụng với C++, C# hoặc Visual Basic® sử dụng Microsoft® Visual Studio® 2010. Hình 1.6 – Các điểm chuyển động trên cơ thể ă D ồ Raw Sensor Streams - Bộ ả Bế ộ : 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 và dải yếu tố microphone. Điều đó cho phép họ xây dựng các cảm biến cấp độ thấp hơn thông qua cảm biến Kinect. õ ấ ú : SDK có khẳ năng theo dõi kiến trúc xương của một hoặc hai người đang cử động trong tầm nhìn của Kinect giúp điều chỉnh các ứng dụng về cử động. Bên cạnh đó, thư viện này hỗ trợ theo dõi cùng lúc 20 khớp xương trên cơ thể. ả ă x l â bao gồm loại bỏ tiếng ồn và tiếng vang, hình thành chùm tia để xác định nguồn âm thanh, và tích hợp với các hàm AP nhận dạng giọng nói của Windows. Dễ . SDK nhanh chóng cài đặt theo tiêu chuẩn cho Windows 7 mà không đòi hỏi các cấu hình phức tạp với dung lượng nhỏ hơn 100 MB. Các nhà phát triển có thể cài đặt và chạy chỉ trong một vài phút với một cảm biến tiêu chuẩn Kinect được phổ biến rộng rãi tại kênh bán lẻ. l ẫ : SDK bao gồm hơn 100 trang tài liệu công nghệ chất lượng cao. Ngoài việc có các thông tin trợ giúp tổ hợp sẵn, tài liệu còn bao gồm những hướng dẫn chi tiết cho hầu hết các mẫu tham khảo được cung cấp với SDK. 13 Ngoài ra khi cài đặt SDK 1.0 xong, thư viện này có những Sample giúp người sử dụng Test thiết bị Kinect Sensor. Từ đó, người sử dụng có thể phát triển thành những ứng dụng vào những mục đích nghiên cứu cụ thể. 1.5. ế l Qua một thời gian nghiên cứu, chúng tôi đã rút ra những nhận xét về những thư viện hỗ trợ cho công việc xây dựng ứng dụng: Kinect SDK 1.0 hỗ trợ mạnh hơn các thư viện khác về những đặc tính sau: Đầu tiên, là đặc tính bám theo cơ thể người ổn định, do đó sẽ đáp ứng chính xác với các cử chỉ cơ thể người, tuy nhiên để phát hiện cử chỉ ta phải tự viết giải thuật. SDK 1.0 hỗ trợ cho việc xử l âm thanh, cho phép xây dựng các ứng dụng điều khiển bằng giọng nói dễ dàng hơn. Tuy nhiên, thư viện Kinect SDK 1.0 chỉ có thể hỗ trợ trên các công cụ lập trình của .NET của Microsoft. Nói về tầm nhìn xa hơn – về tính phát triển: Kinect SDK là một phương án tốt, vì cả thiết bị Kinect và thư viện SDK đều là sản phẩm của Microsoft nên việc thống nhất và các giải thuật sẽ được khai thác sâu hơn các tính năng và nhiều ứng dụng mạnh hơn, chuyên nghiệp hơn. Chính vì thế, trong phần nghiên cứu này chúng tôi chọn thư viện Kinect SDK 1.0 này để xây dựng ứng dụng. Hình 1.7 – Kiến Trúc Kinect .Net SDK 14 2.1. ả Giải pháp PrimeSensor của hãng PrimeSense có khả năng xử lý các cử chỉ dạng 3 chiều (3D), nhưng dữ liệu hình ảnh lại được từ cảm biến ảnh CMOS. Giải pháp này, có khả năng ghi nhận độ sâu, màu sắc và cả âm thanh ở chế độ thời gian thực của không gian cần kiểm soát mà không cần yêu cầu người dùng (người điều khiển hệ thống) phải mặc hay cầm bắt cứ công cụ nào khác, cũng như không bắt buột phải cân chỉnh hay truy xuất dữ liệu đã được số hóa từ máy tính trung tâm. Giải pháp System on a chip (SoC) của PrimeSense có khả năng tính toán giá trị độ sâu của mỗi điểm ảnh (pixel), dựa trên tính hiệu trả về của cảm biến CMOS. Ngoài ra, SoC này cũng trang bị cảm biến CMOS để nhận dạng màu sắc của điểm ảnh, xử lý nguồn sáng trả về dựa trên công nghệ phân mã nguồn sáng Light Coding. Về nguyên tắc, Light Coding làm việc bằng cách mã hóa vùng quan sát thông qua đèn R – đèn này “vô hình” đối với mắt người. Hình 2.1 – Giải pháp PrimeSensor Giải pháp dựa trên sự mã hóa ánh sáng từ tia hồng ngoại của camera IR light. Với việc hỗ trợ một cảm biến hồng ngoại bằng việc tạo ra 2 camera phát và nhận tia laser thì PrimeSense đã áp dụng vào rất nhiều thiết bị 3D của mình – trong đó Kinect Sensor là một điển hình. 2.2. â l sâu 15 Hình 2.2 – Các kỹ thuật đo lường chiều sâu l 2.2.1. Kỹ thuật này bao gồm 2 thành phần: 1 thành phần phát sóng tia laser, 1 thành phần nhận thông tin ảnh, nhận tia laser tương ứng. Thành phần phát nhận tia laser giúp xác định vị trí của điểm laser trên vật tương ứng với điểm nào trên ảnh màu ghi nhận được từ thành phần còn lại. Như vậy, với vị trí của điểm laser trên vật, vị trí của thành phần phát tia laser, thành phần nhận thông tin ảnh màu, laser, tạo thành tam giác. Các thông tin cơ bản của tam giác này đã có sẵn như vị trí tương đối của thành phần thu/phát tia laser và thành phần nhận ảnh, góc hợp bởi 2 thành phần này, từ đó tính được khoảng cách thực tế của điểm trên vật, và có cả màu sắc của điểm đó đựa trên ảnh màu. u điểm của kỹ thuật này độ chính xác cao, tuy nhiên giới hạn trong 1 phạm vi độ sâu nhất định do góc hợp bởi 2 thành phần này giới hạn lại. Kĩ thuật này phù hợp khi các đối tượng có kích thước nhỏ, có hoa văn và đòi hỏi độ chính xác cao. Hình 2.3 – Minh họa vị trí 2 thành phần chính trong Triangulation 16 2.2.2. l Kỹ thuật này phát ra chùm tia có cấu trúc lặp (pattern), và ghi nhận lại kết quả. Ảnh kết quả có thể áp dụng nhiều phương pháp phân tích khác nhau để xác định được độ lồi lõm của vật được chiếu. Mẫu chiếu lên đối tượng có thể là mẫu 1 chiều hoặc 2 chiều. Phương pháp phân tích do dựa vào mẫu được phát ra và kết quả thu nhận lại nên hiện nay có rất nhiều cách phân tích khác nhau, và liên tục được phát triển. Hình 2.4 – Mô phỏng kỹ thuật Structured Light Trong hình 2.4, 1 bộ phát tia laser phát chùm tia laser theo 1 chiều, camera nghiêng 1 góc xác định với đối tượng, dựa vào độ lồi lõm của đường thằng ghi nhận được mà tính toán được cấu trúc 3D của vật được quét. Chỉ 1lần chụp hình có thể tính được độ sâu của toàn bộ khuôn mặt dựa trên mẫu bị biến dạng như thế nào so với mẫu ban đầu. Cách này thường áp dụng cho các chương trình đòi hỏi tốc độ cao hoặc ứng dụng tương tác trong thời gian thực. Phụ thuộc nhiều vào thuật toán nội suy và độ nhiễu của ảnh kết quả. 2.2.3. – Of – Flight Kỹ thuật này phát ra các tia laser để cảm nhận bề mặt của đồ vật, để tính toán được khoảng cách từ thiết bị đến từng điểm của đối tượng, người ta dùng cách tính thời gian di chuyển của chùm tia laser, tên gọi Time of flight cũng xuất phát từ đó. Thiết bị thuộc nhóm này bao gồm 1 bộ phận phát tia laser và bộ cảm biến nhận tia laser. Bộ phận phát tia laser sau khi phát chùm tia laser, ghi nhận lại thời điểm phát sóng, bộ phận nhận tia khi nhận đựa tia laser nào thì ghi nhận thời điểm nhận tia đó. Khi đó, với mội điểm, 17 tương ứng 1 tia trong chùm tia phát ra, ta có khoảng thời gian “bay” t của tia laser đó. Thời gian “bay” bao gồm thời gian chạm đối tượng, và thời gian phản chiếu lại vào thiết bị nhận tia. Ta đã biết thời gian di chuyển của ánh sáng là hằng số c, đã biết thời gian bay, ta tính khoảng cách d = (c * t) / 2. Độ chính xác của thiết bị càng lớn khi khoảng thời gian giữa các lần bắt tia laser trong thiết bị nhận tia càng nhỏ. Để có thể đạt đến độ chính xác là milimet thì khoảng thời gian giữa 2 lần nhận tia phải là 3.3 picosecond. Đây là khoảng thời gian mà chưa có thiết bị nào hiện nay có thể đạt được. Khuyết điểm của kĩ thuật này là độ chính xác không cao, phụ thuộc vào thiết bị nhận. Tuy nhiên khoảng cách mà thiết bị này có thể ghi nhận có thế đến con số kilomet, do đó, phù hợp cho việc quét các đối tượng có kích thước lớn. Hình 2.5 – Mô phỏng kỹ thuật Time – Of – Flight 2.3. ộ â Hình 2.6 – Cấu tạo bên trong Kinect 18 Cặp cảm biến IR camera và IR projector sẽ phối hợp với nhau cho ra giá trị độ sâu ảnh bằng công nghệ Light Coding của PrimeSense. Để lấy các thông tin cần thiết từ kinect, ta không thể tương tác trực tiếp với driver của thiết bị, việc này đòi hỏi kĩ thuật cao và khả năng lập trình rất tốt và am hiểu cấu tạo thiết bị. ướng giải quyết là dùng một thư viện hỗ trợ để lấy dữ liệu một cách dễ dàng và được chuẩn hóa. Để hiện thực hóa 1 đối tượng 3D chúng ta cần xác định ít nhất phải có các thông tin về màu sắc độ sâu từ nhiều điểm trên đối tượng ở nhiều góc nhìn khác nhau. Phần này trình bày cách thức hoạt động của kinect, những thông tin thu nhận được, để có thể trả ra các thông tin về ảnh và độ sâu như mong muốn. Để thu nhận hình ảnh, sử dụng thiết bị thu nhận hình ảnh là 1 webcam bình thường. Để thu nhận độ sâu từng điểm ảnh, Kinect hoạt động dựa trên công nghệ Light Coding. Công nghệ Light Coding hoạt động dựa trên việc phát ra chùm tia hồng ngoại đặc trưng riêng từng tia (không thấy được dưới mắt thường). Kinect dùng 1 bộ cảm biến CMOS chuẩn, để ghi nhận lại các tia hồng ngoại bị phản xạ lại khi tiếp xúc với môi trường, dựa vào các đặc trưng mà xác định cụ thể vị trí tia hồng ngoại trong chùm tia và độ sâu của tia đo được. Sử dụng PS1080 SoC chip tính toán song song để xác định độ sâu của toàn bộ chùm tia phản xạ và xuất ra độ sâu của tất cả điểm ảnh. Hình 2.7 – Quá trình thu về bản đồ độ sâu ảnh 19 Khác với kỹ thuật Stereo Camera với việc dùng cặp camera giống nhau để xây dựng nên bản đồ độ sâu, hay kỹ thuật Time – Of – Flight (TOF) định nghĩa khoảng cách bằng ước lượng thời gian di chuyển của tia sáng đi và về trong không gian. Công việc tính toán này được thực hiện bên trong Kinect bằng chip PS1080 SoC của PrimeSense. Công nghệ mới này được cho là đáp ứng chính xác hơn, giá cả rẻ hơn cho việc sử dụng ở môi trường trong nhà. Project sẽ chiếu một chùm sáng hồng ngoại, tạo nên những đốm sáng ở không gian phía trước Kinect, tập hợp đốm sáng được phát ra này 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ạ (diffraction grating). Tập hợp các điể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 chip PS1080 SoC cho ra 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ệ hai cảm biến IR camera và Projector mà ta sẽ tìm hiểu ở phần tiếp theo. Hình 2.8 – Mẫu hình chiếu từ IR camera và Project Để hiểu cách thức Kinect ước lượng khoảng cách tới vật thể trong môi trường, ta cần phân tích một số điểm sau [1]. Ta giả sử Project phát đi một tia sáng dọc đường màu xanh lá, nó sẽ được chụp lại dưới dạng một đốm sáng bởi IR camera khi chạm vào bề mặt vật thể trong không gian. 20 Hình 2.9 – Tính toán khoảng cách tới một điểm chiếu từ Project Ta sẽ bắt đầu xét ba mặt phẳng ở ba khoảng cách khác nhau: - Mặt phẳng gần Kinect (close plane). - Mặt phẳng ở xa Kinect (Distant plane). - Mặt phẳng tham chiếu (Reference plane) ở giữa hai mặt phẳng trên. Trong đó, mặt phẳng tham chiếu ngầm được biết trước bên trong Kinect với đầy đủ thông tin về khoảng cách. Ngoài ra, ta cũng sẽ đề cập thêm đến mặt phẳng ảnh (image plane) của IR camera, là mặt phẳng hình chiếu của các điểm trong không gian thu về bởi IR camera. Ta xét ba trường hợp: Khi tia sáng màu xanh lá chạm vào 3 điểm trên 3 mặt phẳng lần lượt là A, B, C. Ba điểm này được chiếu lên mặt phẳng ảnh tương ứng là A’, B’, C’. Quan sát vị trí A’, B’và C’, ta có nhận xét: Điểm A càng gần Kinect (hay close plane càng gần Kinect) thì A’ càng xa B’ về phía bên phải. Ngược lại, điểm C càng xa Kinect (hay distant plane càng xa Kinect) thì C’ càng xa B’ về phía bên trái. Từ đó, khi ta biết trước hướng, điểm xuất phát của tia sáng từ Project và vị trí B’ là hình chiếu của điểm B trên mặt phẳng tham chiếu lên mặt phẳng ảnh, ta hoàn toàn có thể tính toán được độ sâu ảnh hay khoảng cách tới vật thể.
- Xem thêm -

Tài liệu liên quan