Właśnie wygłaszałem wykład w SecondConf, gdzie zademonstrowałem użycie kamery iPhone'a do śledzenia kolorowego obiektu za pomocą cieniowania OpenGL ES 2.0. Temat towarzyszący tej rozmowie, w tym moje slajdy i przykładowy kod wszystkich wersji demonstracyjnych, można znaleźć pod adresem here.
Przykładowa aplikacja, którą napisałem, której kod można pobrać z here, jest oparta na przykładzie wyprodukowanym przez firmę Apple w celu zademonstrowania Core Image na WWDC 2007. Ten przykład jest opisany w Chapter 27 of the GPU Gems 3 book.
Podstawową ideą jest to, że można używać niestandardowych shaderów GLSL do przetwarzania obrazów z kamery iPhone'a w czasie rzeczywistym, określając piksele pasujące do koloru docelowego w ramach danego progu. Piksele te mają następnie znormalizowane współrzędne X i Y osadzone w ich komponentach koloru czerwonego i zielonego, podczas gdy wszystkie inne piksele są oznaczone jako czarne. Kolor całej klatki jest następnie uśredniany w celu uzyskania środka ciężkości kolorowego obiektu, który można śledzić podczas przesuwania się po widoku kamery.
Chociaż nie dotyczy to przypadku śledzenia bardziej złożonego obiektu, np. Stopy, to takie shadery powinny być napisane tak, aby wykryć taki poruszający się obiekt.
W związku z powyższym, w ciągu dwóch lat, od kiedy to napisałem, opracowałem teraz an open source framework, który obejmuje przetwarzanie obrazów i wideo w OpenGL ES 2.0. Jednym z najnowszych dodatków do tego jest klasa GPUImageMotionDetector, która przetwarza scenę i wykrywa każdy ruch w niej. Da ci on centroid i intensywność ogólnego ruchu wykrytego jako część prostego bloku wywołania zwrotnego. Korzystanie z tego rozwiązania w tym celu powinno być dużo łatwiejsze niż rozwijanie własnego rozwiązania.
Wow, dużo szacunku! Będę używał tego, jeśli nie masz nic przeciwko,) – Eimantas
To jest fajne .. czy możliwe jest zbudowanie takiego interfejsu jak Xbox? :) Poszukuję szybkiego, lekkiego kodu, który można umieścić w mojej aplikacji na iPhone'a, takiej jak http://www.soundstep.com/blog/experiments/jsdetection/. Byłoby fajnie, gdyby było to możliwe w przypadku internetu mobilnego: –
@CarlLindberg - Kinect wykorzystuje projektowane, strukturalne światło podczerwone do wykonywania mapowania 3D w środowisku 3D, więc oczywiście nie będzie to pasować do kolorowej kamery na urządzeniu z systemem iOS. Surowe wykrywanie ruchu, jakiego dotąd doświadczyłem, nie śledzi rąk ani palców, a do tego trzeba zbadać techniki optycznego przepływu lub śledzenia obiektu. Nakłonienie ich do pracy nad wideo na żywo będzie sporym wyzwaniem. –