Coca-Cola için algoritma geliştirme tanıma şekillendirebilir
Hala bir öğrenciydim olarak son birkaç yıl içinde çalıştığım en ilginç projelerden biri, görüntü işleme hakkında nihai bir proje oldu. Amaç Coca-Cola Tanıma Sistemi geliştirmektikutular(kelime kutular, bakalım bir dakika içinde) stresliyim unutmayın. Bir örnek aşağıda, yeşil olarak tanınan ölçek ve döndürme dikdörtgen ile görebilirsiniz.
Bazı proje kısıtları:
- Arka plan çok gürültülü olabilir.
- Can ya dönme ya da oryantasyon (makul sınırlar içinde) bile herhangi bir ölçek olabilir
- Görüntü fuziness bir dereceye (kontür değil gerçekten düz olabilir) olabilir
- -Coca Cola görüntüde şişe olabilir, ve algoritma sadece algılayabilir !
- Görüntünün parlaklık bir sürü (güvenemezsin "" renk algılama. çok çok farklı olabilir
- Can kısmen taraf veya orta (ve muhtemelen kısmen gizli şişenin arkasında !) gizli olabilir
- Kutu hiç bir şey bulmak ve bir iletinin söz yazmak zorunda kaldım ki görüntüde de olabilir, hayır.
Bu gibi zor işler bu durumda benim algoritma tamamen başarısız olduğum) ne yapabilirim ki:
Şimdi bir süre önce olduğu gibi, ve çok eğlenceli yapıyor vardı belli ki bu proje yaptım, ve iyi bir uygulama vardı. İşte benim uygulama ile ilgili bazı ayrıntılar:
Dil: C OpenCV Kütüphanesi kullanılarak yapılır.
Ön işleme: Görüntü ön işleme konusunda daha hassas bir biçimde algoritma vermek için dönüştürmek için nasıl. 2 yöntem kullanılır:
- Renk değiştiren etki alanından RGB HSV (Hue Saturation Value) ve süzme göre "kırmızı" renk tonu, doygunluk yukarıda belli bir eşik önlemek turuncu gibi renkleri ve filtreleme düşük değeri önlemek için koyu tonlar. Sonuçta tüm beyaz piksel bu eşiğin eşleşen piksel temsil eder siyah ve beyaz ikili bir görüntü oldu. Belli ki hala resmin içinde bir sürü ıvır zıvır var, ama bu çalışma için boyut sayısını) azaltır.
- Gürültü kullanarak medyan filtreleme (tüm komşular ortalama piksel değerini alarak ve bu değer piksel değiştir) gürültü azaltma filtreleme.
- Canny Edge Detection Filter 2 emsal adım sonra tüm öğeleri hatlarını kullanarak.
AlgoritmaBu görev için seçtim algoritmasında bu (harika) book on feature extraction alınıp, Generalized Hough Transform () normal Stewart platformu Dönüşümü hemen çağrıldı. Bu temelde bir kaç şey söylüyor:
- Analitik denklem durumda olan) bilmeden uzayda bir nesneyi tarif edebilirsiniz.
- Temelde ölçek faktörü ve faktör döndürme her kombinasyonu için görüntü testi olarak ölçekleme ve döndürme gibi görüntü deformasyonlara dayanıklıdır.
- Algoritma temel bir model (şablon) kullanır"".
- Her piksel dağılımı görüntüde kalan sözde merkezi (ağırlık açısından) olacak olan bu modelden öğrendiklerini dayalı nesne başka bir piksel için oy verecek.
Sonunda, sonunda bir ısı haritası oyu, örneğin burada tüm piksellerin dağılımı yapacak oy için kendi ağırlık merkezi, o kadar çok şeyiniz de oylarını aynı piksel karşılık gelen merkezi ve göreceksiniz bir zirve ısı haritası olarak aşağıda.
Bir kere, basit bir eşik-tabanlı buluşsal mı yerin merkezi pixel, sizin ortaklıkları ölçek ve döndürme ve çizim küçük dikdörtgen etrafında (nihai ölçek ve döndürme faktör olacak tabii ki göreli orijinal şablon). En azından teoride...
SonuçlarıBu yaklaşım temel durumlarda çalışırken, bazı alanlarda ciddi şekilde eksik
- son derece yavaş! Bu yeterince stresliyim. Neredeyse tam bir gün kutular bazıları çok küçük yaşından beri rotasyon ve çeviri için çok yüksek bir ölçeklendirme faktörü vardı çünkü 30 test görüntüleri, belli ki süreç için gerekli.
- Bu tamamen kaybedince şişeleri, resim, ve nedense hemen hemen her zaman bulunan şişe yerine (belki, çünkü şişe daha büyük, dolayısıyla daha fazla olsaydı piksel, böylece daha fazla oy)
- Bulanık görüntüleri oyları merkezi etrafında rastgele yerlerde piksel, böylece çok gürültülü bir ısı haritası ile sona erdi beri de hiç iyi değildi.
- Çeviri ve dönme değişmezliği elde, ama bu yönde değil, doğrudan kamera objektif bakan bir doğruluyor değildi yani.
Beni iyileştirmeye yardımcı olabilirözelalgoritması kullanaraksadeceÇözmek için OpenCV özellikleridört özelsorunlar elbette yapacaktır?
Bazı insanlar da bunun dışında bir şey öğrenmek umuyoruz, tüm sonra soruları öğrenmek:) isteyen insanlar sadece düşünüyorum
CEVAP
Alternatif bir yaklaşım özellikleri (bölümler) scale-invariant feature transform (ELEMEK) veya Speeded Up Robust Features (SÖRF) kullanarak ayıklamak için.
OpenCV 2.3.1 uygulanır.
Güzel bir kod örneği özelliklerini kullanarak bulabilirsinizFeatures2D Homography to find a known object
Hem algoritmalar, ölçekleme ve döndürme için değişmez. Özellikleri ile çalışır bu yana, aynı zamanda occlusion (yeterince bölümler görünür olduğu sürece) işleyebilir.
Görüntü kaynağı: öğretici örnek
İşleme ELEMEK için bir kaç yüz ms alır, SÖRFÜ daha hızlı, ama uygun olmayan gerçek zamanlı uygulamalar için. ORB HIZLI kullanır zayıf olan rotasyon ile ilgili değişmezliği.
Oyun 2048 için en uygun algoritma nedi...
Geçersiz kılınmış bir Sistem için en i...
Devre dışı bırakılması, web sitesi gel...
Nasıl iPhone için Windows geliştirme m...
Algoritma n k elemanları tüm kombinasy...