Bu belirli kaydırma / ölçek değişmez şablon eşleştirme için hangi görüntü işleme teknikleri idealdir?


17

Başlangıçta burada tartıştığım bir sorun gelişti ve biraz daha çalışıp yeni bilgilere ulaştığımda biraz daha basit hale gelmiş olabilir.

Sonuç olarak, burada gösterilen bu modeli bilgisayar görme / görüntü işleme teknikleri kullanarak tespit edebilmek istiyorum. Gördüğünüz gibi, ideal desen dört 'ping'ten' oluşur. Nesne tanıma şöyle olmalıdır:

  • Vardiya Değişmezliği
    • Yatay olarak, görüntü döngüsel olacaktır. (yani, Sağa it, soldan çıkar ve tersi).
    • (Neyse ki) Dikey olarak, döngüsel değildir. (yani, yukarı veya aşağı itin ve duracaktır).
  • Ölçek Değişmez (Pingler gördüğünüz gibi 'kalınlık' olarak değişebilir.)

Bu konuda devam edebilirdim ama ne demek istediğimi kapsayan resimler ekledim, lütfen aşağıya bakın:

resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin

Tabii ki, bu aileden de görülebileceği gibi farklı bir 'ölçekte' olabilirler:

resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin

Ve son olarak, aslında ne alabileceğimin, gürültünün olacağı bazı 'gerçekçi' senaryolar var, satırlar aşağıya doğru giderken 'soluyor' ve elbette görüntünün bol miktarda sahte çizgisi, eserleri olacak , vb.

resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin

Ve elbette, büyük bir final olarak, bu 'aşırı' senaryonun belirgin olasılığı vardır:

resim açıklamasını buraya girin

Bu yüzden, bir kez daha, gördüğüm gibi vardiya ve ölçek değişmez olmam gereken desenimin oluşumunu en iyi tespit etmek için burada hangi bilgisayar-makine-görme tekniklerini kullanmam gerektiğine dair bir rehberlik istiyorum ve gerçekçi senaryolar için de iyi sonuçlar alabiliyoruz. (İyi haber rotasyonel değişmez olması gerekmiyor). Şimdiye kadar ortaya koyabildiğim tek fikir 2-boyutlu bir korelasyon.

Şunu da eklemeliyim ki, gerçekte renkli görüntülerim YOKTUR - sadece sayıların bir rakamını alacağım, bu yüzden 'gri tonlama' hakkında konuştuğumuzu düşünüyorum.

Şimdiden teşekkürler!

PS Onun değeri için muhtemelen açık C V kullanacağız.

DÜZENLEME # 1:

Yorumlara dayanarak, burada istediğiniz bilgileri ekledim:

Verileri tanımlayan özellikler için aşağıdakileri varsayabiliriz:

  • Her pingin yatay uzunluğu değişebilir, ancak üst ve alt sınırlarını biliyorum. Bu sınırdaki herhangi bir şey için EVET, dışarıdaki hiçbir şey için HAYIR. (Örnek, pinglerin uzunluğunun örneğin 1 ila 3 saniye arasında olabileceğini biliyorum).

  • Tüm pinglerin EVET için 'görünür' olması gerekir, ancak son satır eksik olabilir ve yine de 'EVET' demek isteyebilirsiniz. Aksi takdirde HAYIR.

  • Her pingin dikey uzunluğu ('kalınlığı') değişebilir, ancak yine üst ve alt sınırı da bilir. (Bu görüntülerde gördüklerinize benzer). Bu sınırdaki herhangi bir şey için EVET. Dışında bir şey için HAYIR.

  • Her ping arasındaki yükseklik EVET için her zaman aynı olmalıdır. Değilse, HAYIR. (Örnek olarak, tüm pinglerin birbirine göre aynı yükseklikte, dikey eksende ~ 110 olduğunu görebilirsiniz). Yani 110 +/- 5 EVET olabilir, başka bir şey HAYIR olmalıdır.

Bu konuda düşünüyorum - ama başka ne ekleyebilirim bana bildirin ... (Ayrıca, burada gösterilen her şey bir EVET, btw olarak kayıt olmalıdır).


Ne zaman diyorsun detect this pattern shown here? Sadece kırmızı / sarı çizgiyi izole etmekle mi ilgileniyorsunuz yoksa bu çizgiler arasındaki ilişkiyi hesaplayan bir ifade mi istiyorsunuz? Yalnızca satır bulmak yalnızca bir eşik veya bölümleme gerektirebilir. Gerçekten ne istiyorsun?
Dipan Mehta

@DipanMehta Karışıklık için üzgünüm. Yapmak istediğim şudur: İlk önce renklere dikkat etmeyin, (sadece çizildiklerini söyleyin), sahip olacağım sadece bir sayı matrisi, bu yüzden gri tonlamalı. İkinci şey, renk olmadığı için, sadece tekrar gördüğünüz 4 ping ile orada gördüğünüz 'kalıbı' önemsiyorum. Böylece dedektör, yukarıdaki resimlerde gösterildiği gibi bu görüntü şablonunun varyantlarını görecek ve 'evet, bu desen var' diyecektir. Karışıklık için özür dilerim, başka bir şeyi açıklığa kavuşturabiliyorsam bana bildirin. Teşekkürler!
Spacey

Tamam, eğer doğru anlarsam, üstte ilk satır olduğu göz önüne alındığında, dengenin de aynı yerde olup olmadığını öğrenmek istersiniz. öyleyse, o kalıbın var olduğu sonucuna varacaksınız! Sağ?
Dipan Mehta

@DipanMehta Evet, yukarıda gösterilen örüntünün var olup olmadığını, ölçek değişmezliği ile başa çıkacak kadar sağlam ve kaydırma değişmezliği ile başa çıkacak kadar sağlam olduğunu tespit edebileceksiniz. bu mantıklı mı? Teşekkürler,
Spacey

1
Anladığım şey, üzerinde çalıştığınız gerçek sistemdeki kaynak verilere erişiminizin olup olmadığıdır. Bunu yaparsanız, sıfırladığınız ara spektrogram biçimi yerine orijinal veriler üzerinde doğrudan çalışan daha iyi bir yaklaşım olabilir.
Jason R

Yanıtlar:


6

Genel olarak, bu sorunun çözülmesine yönelik iki temel yaklaşım vardır:

a. şablon eşleme veya
b. parametreli bir modelle eşleştirme.

Şahsen, modelin sadeliği göz önüne alındığında, bu sorun için ikinci yaklaşımı tercih ederim.

Adım 1: Ping bloklarını belirleme

İlk adım olarak, "Kutular" ayıklayın - aslında sarı / mavi kareler. Buradaki en basit yöntem, görüntüyü eşleştirmek olabilir. Gürültü arttıkça pinglere oldukça benzer olma eğilimi dışında arka planda çok fazla varyasyon görünmemektedir. Bu nedenle, eşik görüntü boyunca küresel olabilir - ve bence görüntüler arasında işe yarayacak iyi bir eşik elde edebileceksiniz. Ancak, eşik akıllı olmalı, böylece Otsu'nun yöntemi gibi bir şey kullanabilirsiniz. Daha fazla referans için bu ve buna bakın .

Blokların iyileştirilmesi

Ping'in içindeki bazı piksellerin de mavi olduğu ping ön planına benzeyen sahte noktaları kaldırmak için yapabileceğiniz iyi şeylerden biri. Burada "Açılış" adı verilen morfolojik bir operasyona ihtiyacınız var. İşte HIPR'nin referanslarından biri . Bu tür işlemler, benzer şekillerin korunmasına ve diğerlerinin kaldırılmasına yardımcı olan akıllı bir şekil gerektirir. Sizin durumunuzda yatay çizgiler seçebilirsiniz. Bunun sonunda, pingleri birbirine dokunmadan düzgün bir şekilde ayıran arka plan ve ön plan pikselleriniz olur.

2. Adım: Blokları işaretleyin / kaydedin

Artık mümkün olan en temiz lekelere sahip olduğunuza göre, bunları 1,2,3,4 veya A, B, C, D vb. Olarak işaretleme zamanı. Bu genellikle basit bir algoritma olarak adlandırılır. Her pikselden geçin ve herhangi bir işaretli bölgeye dokunuyorsa ve aynı zamanda ön plandaysa, o segmente atayın, başka bir tane oluşturun. 4'ten fazla önemli segment bulursanız, en alakalı olanları seçmeniz gerekir. Herhangi bir teorik algoritma yerine biraz sezgisel tarama uygulayın.

Adım 3: Parametrelerin modellenmesi

Şimdi, karşılık gelen 4 pingin en büyük 4 adayını aldığımızda, sınırlayıcı kutuları tanımlayabilirsiniz - esas olarak sol üst ve sağ alt köşeleri (veya bloğun üst ve alt sıralarının yanı sıra sol ve sağ çoğu piksel) . Sınırlayıcı kutuyu bulun, her ping kutusunun centroidini cezalandırabilirsiniz.

Cben nerede ben{1,2,3,4}C1C1

böylece merkezler arası mesafeler hesaplanabilir:

C1ben[x,y]={C1[x]-Cben[x],C1[y]-Cben[y]}

Lben nerede ben{1,2,3,4}

Aslında 8 parametre vecoter'ınız var:

1.{C1[x],C1[y]}2..4C1ben[x,y]5..8Lben

Adım 4: Sınıflandırma
Son adımda, şimdi bir ping-pattern evet veya hayır olup olmadığına dair bir sınıflandırmaya ihtiyacımız var.

Böyle bir şey için, güzel bir Bayesci sınıflandırıcı çerçevesine sahip olabilirsiniz.

Sahip olduğunuz iki Hipotez var

H0: Ping deseni var.
H1: Ping deseni mevcut değil

C1,ben[x]

Birincisi , resme ait olduklarını bildiğiniz birçok resim üzerinde çalışıyorsunuz. Şimdi, çeşitli histogramları çizebilir veya yoğunluk tahmin yönteminin bazı yöntemlerini uygulayabilirsiniz. Duda Hart'ın Desen Sınıflandırmasını okuyun.

C1,ben[x]μ=20,σ=0,1

C1,ben'H0P[C1,ben[x]|'H0]

Şimdi, test verilerinden

P['H0|C1,ben[x]=x1]C1[x]x1'H0

Böylece, hesaplayabilirsiniz

P['H0 |C1,ben[x]]=P[C1,ben[x]|'H0]*P['H0]P[C1,ben[x]]

Bu ifadeyi vektör ifadesi için birleştirmeniz ve parametre tahmininin tam olarak yapılması için çok çaba sarf etmeniz gerekir. Ama sizi burada temel bir yaklaşımla bırakıyorum.

Lütfen kendi matematiğinizi yapın, bu uzun olacak, ancak yine de oldukça sezgisel olmalıdır.

P['H0|tüm parametreler]>1/2

DÜZENLE
110 +/- 5 piksele özgü ölçütleri zaten tanımladığınızdan, son adım daha basit olabilir. Sınıflandırma kriterleriniz sabitse, muhtemelen tüm bu olasılıkları hesaplamanıza gerek yoktur.


Çok teşekkür ederim! Bunu sindirip sana geri dönmem gerekecek.
Spacey

3

Bu sorun görünüyor darbe tekrarlama aralığı algılama + tahmini sorunu gibi bana. Bu cevabı zaman içinde geliştirmem gerekecek, ancak bu problemde iyi çalışan algoritmalar bir kafes üzerindeki maksimum olasılıktır .


Teşekkür ederim, evet bu konudaki düşüncelerinizi duymaktan memnuniyet duyarım. Bu arada bağlantınıza bakacağım.
Spacey

Peter, bunu söylediğin gibi düşünecek vaktin oldu mu? Konuyla ilgili düşüncelerinizi duymak isterim.
Spacey

Daha sonra tekrar tamir etmeye başladı (Nisan bir yazım oldu). Yanılıyor olabilirim: Clarkson'un makalesinin problemi formüle etme şekli farklı ... biraz daha kazmama izin verin.
Peter K.
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.