Pazar, Ağustos 26, 2012

Şekil Eşleştirme - Shape Matching

ShapeMatching from bluekid on Vimeo.


Öncelikle Painti açıyoruz. Hazır Şekilleri kullanarak değişik değişik ebatlarda şekiller çiziyoruz.

  1. Sonra yazdığımız programda önce her bir şekli cvBlob'un da yardıyla ayrıştırıyoruz
  2. Her bir blob'un dış hat çizgilerini -contour-  ve  zincir kodlarını - chain code - alıyoruz 
  3. ve bunların histogramlarını çıkarıyoruz. 
  4. Her bir şeklin histogramının diğer şeklin histogramlarından uzaklığını hesaplıyoruz.
  5. Belli bir eşik değerinden az olan uzaklıklardaki şekillerin eş olduğu varsayılıyor
  6. Eş blob'ları  gösteriyoruz...
  7. En sondada bütün hepsini birlikte gösteriyoruz..
Normal Şekil eşleştirme algoritmaları ebattan bağımsız değildir. yani aynı şekildeki fakat değişik ebattaki şekilleri eşleştirmez.
Bu uygulamada ebattan bağımsız eşleştirme yapılabiliyor.
Bu haliyle sadece contour-chain code ile yapılmış basit bir uygulama, momentleri felan ekleyerek, ve histogramı çeşitlendirerek  dahada güçlendirilebilir.

Örnek program OpenCv 2.4.2 ve cvBlob kullanıldı.