Tôi vừa nói chuyện ở SecondConf nơi tôi đã chứng minh việc sử dụng camera của iPhone để theo dõi một đối tượng có màu sử dụng các trình đổ bóng OpenGL ES 2.0. Bài đăng kèm theo bài nói chuyện đó, bao gồm các trang trình bày và mã mẫu của tôi cho tất cả các bản trình diễn có thể được tìm thấy here.
Ứng dụng mẫu tôi đã viết, có mã có thể được tải xuống từ here, được dựa trên ví dụ do Apple sản xuất để trình diễn Hình ảnh lõi tại WWDC 2007. Ví dụ được mô tả trong Chapter 27 of the GPU Gems 3 book.
Ý tưởng cơ bản là bạn có thể sử dụng trình đổ bóng GLSL tùy chỉnh để xử lý hình ảnh từ camera iPhone trong thời gian thực, xác định pixel nào phù hợp với màu mục tiêu trong một ngưỡng nhất định. Sau đó, các pixel đó có tọa độ X, Y chuẩn hóa được nhúng trong các thành phần màu đỏ và xanh lục của chúng, trong khi tất cả các pixel khác được đánh dấu là màu đen. Màu sắc của toàn bộ khung hình sau đó được lấy trung bình để thu được trọng tâm của vật thể màu, mà bạn có thể theo dõi khi nó di chuyển trên màn hình của máy ảnh.
Mặc dù điều này không giải quyết trường hợp theo dõi một đối tượng phức tạp hơn như bàn chân, các trình đổ bóng như thế này sẽ có thể được viết để có thể chọn một đối tượng chuyển động như vậy.
Là bản cập nhật cho phần trên, trong hai năm kể từ khi tôi viết bài này, tôi đã phát triển an open source framework để gói gọn quá trình xử lý hình ảnh và video của OpenGL ES 2.0. Một trong những bổ sung gần đây là lớp GPUImageMotionDetector xử lý một cảnh và phát hiện bất kỳ loại chuyển động nào trong đó. Nó sẽ cung cấp cho bạn trở lại trung tâm và cường độ của chuyển động tổng thể nó phát hiện như là một phần của một khối gọi lại đơn giản. Sử dụng khuôn khổ này để làm điều này sẽ dễ dàng hơn nhiều so với việc tung ra giải pháp của riêng bạn.
Nguồn
2010-10-24 04:29:09
Wow, nhiều sự tôn trọng! Tôi sẽ sử dụng điều này nếu bạn không nhớ,) – Eimantas
Điều này thật tuyệt .. có thể xây dựng một giao diện như động xbox với điều này không? :) Im tìm kiếm một mã nhanh nhẹ để đưa vào ứng dụng iphone của tôi như http://www.soundstep.com/blog/experiments/jsdetection/ .. sẽ thật tuyệt nếu nó có thể với web di động mặc dù –
@CarlLindberg - Kinect sử dụng ánh sáng IR có cấu trúc dự kiến để thực hiện ánh xạ 3 chiều của môi trường, vì vậy bạn rõ ràng sẽ không khớp với máy ảnh màu trong thiết bị iOS. Phát hiện chuyển động thô tôi có cho đến nay không theo dõi tay hoặc ngón tay, và cho rằng bạn sẽ cần phải khám phá dòng chảy quang học hoặc kỹ thuật theo dõi đối tượng. Bắt những người làm việc trên video trực tiếp sẽ là một thách thức. –