İlgili sayfa: OtsuEsikleme.dll
'Otsu' sözcüğünü ilk duyduğumda 'ot' sözcüğünden türediğini düşünmüştüm. Ama sözcük, metodu geliştiren Nobuyuki Otsu'nun soyadıymış :). Bunu baştan söyleyeyim...
Normalde bir gri görüntüyü ikili biçime çevirmek için izlenecek yöntem oldukça basittir. Bir eşik değeri belirlenir ve bu eşik değerin üzerindeki renkler beyaza, altındaki renkler siyaha dönüştürülür. Ancak tüm görüntüler aynı niteliklere sahip değildir. Sabit bir eşik değeri tüm görüntüler üzerinde kabul edilebilir sonuçlar üretemeyebilir. Dolayısıyla eşik değerin, resmin renk dağılımına uygun olarak belirlenmesini sağlayacak bir yönteme ihtiyaç duyulur.
Otsu metodu, gri seviye görüntüler üzerinde uygulanabilen bir eşik tespit yöntemidir. Bu metod kullanılırken görüntünün arka plan ve ön plan olmak üzere iki renk sınıfından oluştuğu varsayımı yapılır. Daha sonra tüm eşik değerleri için bu iki renk sınıfının sınıf içi varyans değeri hesaplanır. Bu değerin en küçük olmasını sağlayan eşik değeri, optimum eşik değeridir.
Sınıf içi varyans değeri minimum değerinde iken sınıflar arası varyans değeri maximum değerinde olur. Sınıflar arası varyans değerinin hesaplanması daha az işlem gerektirdiğinden, yöntem koda dökülürken arka plan ve ön plan pixel sınıfları için sınıflar arası varyans hesaplanması, daha çabuk sonuç alınmasını sağlar.
Yöntem gri seviye görüntüler üzerinde çalışır ve sadece renklerin görüntü üzerinde kaçar defa bulunduğuna bakar. Bu yüzden önce görüntünün renk histogramı hesaplanır ve tüm işlemler histogram dizisi üzerinde yapılır...
Varyans belli bir sayı dizisinin, bu dizinin aritmetik ortalaması etrafındaki dağılımının yorumlanabilmesini sağlayan bir ölçüdür. Varyans büyükse değerlerin dağınık ve kendi ortalamalarından uzak oldukları yorumu yapılır. Küçükse, değerlerin kendi ortalamaları etrafında çok dağılmadıkları anlaşılır.
Varyans aşağıdaki şekilde hesaplanır:
Burada (Xi üssü) değeri ağırlıklı ortalamadır. Pr(Xi), ise olasılık fonksiyonudur. Bir görüntü üzerinde bir renk değerinin olasılığı basitçe, bu değerin resimdeki sayısının, toplam pixel sayısına bölümüdür. (Bir torbada 3 kırmızı 5 mavi top vardır. Rastgele çekilen bir topun kırmızı olma olasılığı kaçtır?, 3/(3+5) gibi).
Bir dizide bir elemanın ağırlığı, bu elemanın dizideki tüm elemanların toplamına oranıdır. Ağırlık, görüntünün kümülatif histogram dizisinin elemanları üzerinden hesaplanır. Örneğin {3,4,2,7} dizisinde 3. elemanın ağırlığı, (3+4+2)/(3+4+2+7) ifadesiyle hesaplanır.
A1 ve V1 ilk sınıfa, A2 ve V2 ikinci sınıfa ait ağırlık ve varyans değerleri iken sınıf içi varyans değeri şöyle hesaplanır:
A1*V1+A2*V2
A1 ve O1 ilk sınıfa, A2 ve O2 ikinci sınıfa ait ağırlık ve ağırlıklı ortalama değerleri iken sınıflar arası varyans değeri şu şekilde hesaplanır:
A1*A2*(O1-O2)^2
Başta bahsetmiştik; otsu metodunda sınıf içi varyansın minimum, dolayısıyla sınıflar arası varyansın maximum olması istenir. Ancak sınıflar arası varyansı hesaplamak daha az işlem gerektirdiği için daha mantıklı.
Her bir eşik değeri (0-255) için sınıf içi veya sınıflar arası varyans değeri hesaplandıktan sonra en küçük sınıf içi varyans ya da en büyük sınıflar arası varyans değerini veren eşik değeri en uygun değer olarak kabul edilir.
Son olarak yöntemin işe yaramadığı görüntüler olabildiğini de söyleyelim. Çünkü başta yapılan, renklerin iki sınıfa ayrılabileceği varsayımı doğru olmayabilir. Yöntemin, renkleri, az sayılarda tekrar edenler ve nispeten çok sayıda tekrar edenler olarak iki sınıfa ayırdığını söylemiştik. Yani, gözümüzde bir histogram grafiği calandırarak olursak, aslında histogram grafiğinin tek tepeli olduğu farzedilir. Grafik, optimum eşik değeri noktasından, çok sayıda tekrar eden renklerin yoğun olduğu bölge(yani aslında tepenin bulunduğu bölge) ve az sayıda tekrar eden renklerin yoğun olduğu bölge olmak üzere iki bölgeye bölünür. Ancak çok tepeli histograma sahip bir görüntünün arka planı ve ön planı temsil edecek iki pixel sınıfına ayrılması bu yöntem ile mümkün değildir. Bu yüzden bu yöntem böyle görüntülerde iyi sonuç verecek eşik değerleri tespit edemez.
merhaba hocam sizin otsuesikleme.dll ve bağlantılıbilesenetiketleme.dll kütüphanelerini mantığını içinde nasıl işler yaptığını detaylı açıklybilir misiniz
Sitede bahsettiğiniz iki konu ile alakalı yazılar mevcut. Metotların detaylarını şu sayfalarda bulabilirsiniz: Otsu Eşik Belirleme Metodu, Bağlantılı Bileşen Etiketleme