iPhone iOS Kullanıcı Arabirimi Bir kamera beslemesinde “lazer pointer” noktasını nasıl algılayabilirim?


9

Paletli bir robot oyuncağım var ve bir iPhone ile kontrol ediyorum. Robot, bilinen bir kare boyutuna sahip canlı bir kamera beslemesi çıkarıyor ve bunu UIImage'da görüntülüyorum.

Robota bir lazer pointer ekledim ve robotun eksenine sabitledim. Görüntüdeki lazer pointer noktasını tespit etmeye ve böylece nesnenin yakınlığını hesaplamaya çalışıyorum. Lazer noktası merkezden uzakta ise, robotun duvara yapıştığını ve yedeklenmesi gerektiğini biliyorum.

Ekranda parlak beyaz-kırmızı piksellerden oluşan bir noktayı nasıl tespit edebilirim? Bir çözüm, merkezin belirli bir yarıçapındaki piksellerin rengini örneklemek ve bir damla parlak rengini tespit etmek olacaktır. Herkes bu etkinlik için bir algoritma önerebilir mi?

Başka bir yaklaşım, noktanın son birkaç kare üzerindeki ortalama konumunu takip etmek ve böylece tahmini yarıçapı azaltmak olacaktır. Önceden tanımlanmış bir bölgede nokta yoksa, arama bölgesi genişletilebilir.

Son olarak, robotun etrafındaki halıyı algılamasını öğretmek istiyorum. Halı bir lazer işaretçiyi belirli bir şekilde yansıtır ve robotun etrafında kaç kare benzer özelliklere sahip olduğunu anlamak istiyorum. Lazer işaretçisinin bir ekranın neresinde olduğunu bilirsem, o görüntüden küçük bir dikdörtgeni kırpıp bunları birbiriyle karşılaştırabilirim. Siluetleri eşleşip eşleşmediğini anlamak için birden fazla küçük resmi birbiriyle karşılaştırmanın etkili bir yolu var mı?

Lazerin parlak yüzeylerden yansıdığını fark ettim ve bu yansımanın yönü, kırılma yasalarına uygun olarak, uzayda yüzeyin yönü hakkında bir şeyler söyleyebilir.

Teşekkür ederim!

Lazer İşaretleyici kapat

Lazer işaretçi 1


1
Lazer işaretçiyi bir düzende açabilir ve kapatabilir misiniz? Bir kare gibi kapalı, diğeri açık ve daha belirgin hale getirmek için sonraki kareleri çıkarırsınız.
endolith

Bu çok iyi bir fikir! Ama lazer pointer üzerinde kontrolüm yok, ya açık ya da kapalı.
Alex Stone

@AlexStone Ben benzer bir şey elde etmeye çalışıyorum, tek fark ben göz öğrencisi üzerinde lazer ışığı tespit etmeye çalışıyorum. Lazer ışını izlemede ios kodu veya opencv ile verdiğiniz herhangi bir örnek kod konusunda bana yardımcı olabilir misiniz? Yardımınız için şimdiden teşekkür ederiz, teşekkürler AJ.
AmJa

Yanıtlar:


10

OpenCV , iOS için derlenebilir. En verimli olmasa da size algoritmayı taşıma seçeneği sunar. ConDensation algoritmasını kullanarak benzer bir marker izleme sorunu yaptım. OpenCV ile marker izlemeye bakın. ÇOK geniş bir araştırma alanıdır ve istediğiniz algoritma tamamen uygulamanıza bağlıdır. Doğru hatırlıyorsam, yaklaşık 3000 rapor edilmiş görüntü işleme tekniği vardır - iyi bir tane seçmek gerçek bir sanattır!

Bir çözüm, merkezin belirli bir yarıçapı içindeki piksellerin rengini örneklemek ve bir damla parlak rengini tespit etmek olacaktır. Herkes bu etkinlik için bir algoritma önerebilir mi?

Bu arada, bu, bir parçacık filtresi olarak adlandırılan şeyin (Yoğunlaşmanın bir yöntem olduğu) arkasındaki temel fikirdir. Aferin temel fikri kendiniz anladınız!

Başka bir yaklaşım, noktanın son birkaç kare üzerindeki ortalama konumunu takip etmek ve böylece tahmini yarıçapı azaltmak olacaktır. Önceden tanımlanmış bir bölgede nokta yoksa, arama bölgesi genişletilebilir.

Buna devletin kalıcılığı denir ve çeşitli şekillerde modellenebilir. Yoğuşma algoritması, eski Kalman filtresinden farklı olmayan stokastik bir yaklaşım kullanır.

Siluetleri eşleşip eşleşmediğini anlamak için birden fazla küçük resmi birbiriyle karşılaştırmanın etkili bir yolu var mı?

Bu biraz daha zor. Şablon eşleştirmeyi deneyebilirsiniz, ancak iOS'ta ne kadar iyi performans göstereceğini bilmiyorum (çok ağır hesaplama ve iOS kamera buna uygun değil).


Paul, inanılmaz derecede ayrıntılı bir cevap için teşekkür ederim! OpenCV çerçevem ​​var ve onu kullanan projelere örnekler arayacağım.
Alex Stone

Merhaba Paul, openCV kullanarak iOS kamera aracılığıyla lazer algılama için örnek uygulama hakkında herhangi bir fikriniz var mı?
AmJa

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.