iPhone iOS UIImage bagaimana cara mendeteksi titik "penunjuk laser" pada umpan kamera?

9

Saya mendapat mainan robot terlacak dan saya mengendalikannya dengan iPhone. Robot mengeluarkan umpan kamera langsung dari ukuran bingkai yang diketahui dan saya menampilkannya di UIImage.

Saya telah menambahkan laser pointer ke robot dan memperbaikinya di samping sumbu robot. Saya mencoba mendeteksi titik laser pointer pada gambar dan dengan demikian mencoba menghitung kedekatan objek. Jika titik laser jauh dari pusat, saya tahu bahwa robot macet di dinding dan harus membuat cadangan.

Bagaimana saya bisa mendeteksi titik piksel putih-merah terang pada layar? Salah satu solusi adalah dengan sampel warna piksel dalam radius tertentu dari pusat dan mendeteksi warna cerah gumpalan. Adakah yang bisa menyarankan algoritma untuk kegiatan ini?

Pendekatan lain adalah melacak posisi rata-rata titik pada beberapa frame terakhir, sehingga mengurangi radius perkiraan. Jika tidak ada titik di dalam wilayah yang ditentukan sebelumnya, wilayah pencarian dapat diperluas.

Akhirnya, saya ingin bisa mengajarkan robot untuk mendeteksi karpet di sekitarnya. Karpet mencerminkan penunjuk laser dengan cara tertentu, dan saya ingin memahami berapa banyak bingkai di sekitar robot yang memiliki sifat serupa. Jika saya tahu di mana pointer laser berada di layar, saya bisa memotong persegi panjang kecil dari gambar itu dan membandingkannya satu sama lain. Apakah ada cara yang efisien untuk membandingkan beberapa gambar kecil satu sama lain untuk memahami jika siluet mereka cocok?

Saya perhatikan bahwa laser dipantulkan dari permukaan yang mengkilap, dan arah pantulan ini dapat memberi tahu saya sesuatu tentang orientasi permukaan dalam ruang, sesuai dengan hukum refraksi.

Terima kasih!

Laser Pointer dekat

Laser pointer 1

Alex Stone
sumber
1
Bisakah Anda menyalakan dan mematikan laser pointer dalam suatu pola? Seperti satu frame tidak aktif, yang berikutnya aktif, dan Anda mengurangi frame berikutnya untuk membuatnya sangat jelas.
endolith
Itu ide yang sangat bagus! Tapi saya tidak punya kendali atas laser pointer, baik itu hidup atau mati.
Alex Stone
@AlexStone Saya mencoba mencapai hal yang sama, satu-satunya perbedaan adalah saya mencoba mendeteksi sinar laser pada pupil mata. Bisakah Anda membantu saya dengan kode ios atau kode sampel apa pun yang Anda tuntut dengan pembuka dalam melacak sinar laser? Hargai bantuan Anda sebelumnya, terima kasih AJ.
AmJa

Jawaban:

10

OpenCV dapat dikompilasi untuk iOS. Meskipun mungkin bukan yang paling efisien itu memberi Anda pilihan untuk porting algoritma. Saya telah melakukan masalah pelacakan penanda yang serupa menggunakan algoritma ConDensation. Cari pelacakan marker dengan OpenCV. Ini adalah area penelitian yang SANGAT besar dan algoritma yang tepat yang Anda inginkan tergantung sepenuhnya pada aplikasi Anda. Jika saya ingat dengan benar, ada sekitar 3000 teknik pemrosesan gambar yang dilaporkan - memilih yang bagus adalah seni nyata!

Salah satu solusi adalah dengan sampel warna piksel dalam radius tertentu dari pusat dan mendeteksi warna cerah gumpalan. Adakah yang bisa menyarankan algoritma untuk kegiatan ini?

Ngomong-ngomong, ini adalah ide dasar di balik apa yang disebut filter partikel (di mana Kondensasi merupakan salah satu metode). Bagus, Anda sudah tahu ide dasarnya sendiri!

Pendekatan lain adalah melacak posisi rata-rata titik pada beberapa frame terakhir, sehingga mengurangi radius perkiraan. Jika tidak ada titik di dalam wilayah yang ditentukan sebelumnya, wilayah pencarian dapat diperluas.

Ini disebut ketekunan negara dan dapat dimodelkan dengan berbagai cara. Algoritma kondensasi menggunakan pendekatan stokastik yang tidak berbeda dengan filter Kalman tua biasa.

Apakah ada cara yang efisien untuk membandingkan beberapa gambar kecil satu sama lain untuk memahami jika siluet mereka cocok?

Yang ini sedikit lebih sulit. Anda dapat mencoba pencocokan template tetapi saya tidak tahu seberapa baik kinerjanya di iOS (perhitungan sangat berat dan kamera iOS tidak cocok untuk itu).

Paul de Lange
sumber
Paul, terima kasih atas jawaban yang sangat terperinci! Saya mendapat kerangka kerja OpenCV, dan akan mencari contoh proyek yang menggunakannya.
Alex Stone
Hai Paul, Apakah Anda punya ide tentang aplikasi sampel untuk deteksi laser melalui kamera iOS menggunakan openCV?
AmJa