Skip to content

Instantly share code, notes, and snippets.

@Mervetafrali
Created February 23, 2017 14:21
Show Gist options
  • Select an option

  • Save Mervetafrali/07b68d2cb8f1e3916c794413bf5c9b4d to your computer and use it in GitHub Desktop.

Select an option

Save Mervetafrali/07b68d2cb8f1e3916c794413bf5c9b4d to your computer and use it in GitHub Desktop.

GÖRÜNTÜ İŞLEME Otsu Metodu

1) İçindekiler

  1. İçindekiler

  2. Versiyon Geçmişi

  3. Giriş

  4. Otsu Eşikleme Yöntemi

  5. Referanslar

2) Versiyon Geçmişi

Tarih Değişiklik Kişi

24.08.2015

Otsu Eşikleme

Fatma Selin Hangişi

15.12.2016

Otsu Eşikleme

M.Sıla Genç, Gönül Toktay

19.12.2016

Düzenleme

Merve Tafralı

3) Giriş

Bu uygulamada görüntü işleme algoritmalarından Otsu eşikleme algoritması kullanılarak görüntünün ikili(binary) hale getirilmesi amaçlanmıştır.Eşikleme ya da ikili tonlama da denilebilir, bu algoritmada amaç gri olarak tonlanmış olan bir görüntünün ikili bir hale getirilmesidir. Bir görüntünün ikili hale getirilmesi demek siyah beyaz uzaya dönüştürülmesi demektir.
Otsu algoritmasının nasıl çalıştığı,neyi amaçladığı uygulamayla anlatılmıştır.

4) Otsu Eşikleme Yöntemi

Adını bu metodu geliştiren Nobuyuki Otsu’dan almıştır.Yöntem gri seviye görüntüler üzerinde çalışır ve sadece renklerin görüntü üzerinde kaçar defa bulunduğuna bakar [2]. Gri seviyedeki bir görüntüyü ikili seviyeye dönüştürülerek kullanılabilecek en uygun eşik değerinin tespitini sağlar.Bu yöntemde, renklerin görüntü üzerinde var olma sayısına bakıldığı için uygulamaların eşik belirleme adımına geçmeden önce renk histogramı hesaplanır ve tüm hesaplamalar bu histogram üzerinden yapılır. Otsu algoritması histogramda eşikleme yapılabilecek en uygun konumun bulunması için kullanılır.
Otsu algoritmasında histogramın her bir elemanını eşik gibi düşünerek her biri için “weight”,”mean” ve ”variance” diye tabir edilen veriler hem eşikten önce(background) hem de eşikten sonrası(foreground) için hesaplanır.
Her bir eleman eşik kabul edilerek her bir eleman için hesaplamalar yapılacağı için belirlenen elemandan öncesi eşik öncesi(background),belirlenen elemandan sonrası eşik sonrası(foreground) olarak adlandırılır.

Örnekler üzerinden formüllerin kullanışı ve çıkarılması:

otsuOrig

yukarıdaki şekilde 6 tonlu bir görüntü ve histogramı bulunmaktadır.

Eşik öncesi değerleri hesaplamak için kullanılan formüller(background) [1] :

Backgroung

bckground

weight(background)= seçilen histogram elemanına kadar olan elemanların piksel sayıları toplamı(kendisi dahil değil) / toplam piksel sayısı

wb

mean(background)= kendinden önceki her eleman için(histogram elemanı*histogram elemanının değeri) toplamları / seçilen histogram elemanına kadar olan elemanların piksel sayıları toplamı(kendisi dahil değil)

mb

variance(background)= kendinden önceki her eleman için histogram elemanı-mean(background * (histogram elemanı-mean(background)) * histogram elemanının değeri / seçilen histogram elemanına kadar olan elemanların piksel sayıları toplamı(kendisi dahil değil)

vb

Eşik sonrası değerleri hesaplamak için kullanılan formüller(foreground):

foreground

weight(foreground)= seçilen histogram elemanından itibaren elemanların piksel sayıları toplamı(kendisi dahil) / toplam piksel sayısı

wf

mean(foreground)= kendinden sonraki her eleman için(histogram elemanı * histogram elemanının değeri) toplamları / seçilen histogram elemanından itibaren elemanların piksel sayıları toplamı(kendisi dahil)

mf

variance(foreground)= kendinden sonraki her eleman için histogram elemanı-mean(background*(histogram elemanı-mean(background))*histogram elemanının değeri / seçilen histogram elemanından itibaren elemanların piksel sayıları toplamı(kendisi dahil)

vf

Bu üretilen “weight”,”mean” ve “variance” değerleri kullanılarak “within class variance” ve “ between class variance” değerleri hesaplanır.

Yani sınıf içi global varyans ve sınıflar arası global varyans hesaplanır.

Bu hesaplamalardan elde edilen değerler içerisinden sınıflar arasındaki yoğunluk değerleri için en iyi ayrımı en küçük sınıf içi global varyans ya da en büyük sınıflar arası global varyans değerini veren eşik değeri optimum eşik değeri seçilir.

within class variance= (weight(background) * variance(background)) +(weight(foreground) * variance(foreground))

sumExample

between class variance= weight(background) * weight(foreground) * (mean(background)-mean(foreground)) * (mean(background)-mean(foreground))

btwc

Eşik seçiminde önce sınıflar arası varyansın(between class variance) maksimum değeri değerlendirilir. Bu eşiğin öncesinde kalan (background) kısımlardaki değerler “0” diğerleri “1” yani (255) olarak görüntüler düzenlenir [3] .

Resmin orjinal hali

Resim3
  1. Adım

m1agırlık
  1. Adım

m1medyan

Son Adım

new2otsu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment