Python ile Görüntü İşleme: Harris Köşe Algılama Algoritması

Bu yazıda resimlerde köşe noktalarını bulmak için kullanılan Harris köşe algılama algoritmasına değineceğiz.

Gerçekleme

Önceki görüntü işleme yazılarımızda da kullandığımız fonksiyon ve sınıfları dahil edelim:

Hedef imgemizi okuyalım ve grayscale yapıp üzerinde Gauss filtre uygulayalım:

Bu aşamada imgenin X ve Y yönlerindeki türevlerini bulmamız gerekiyor.

Bir piksel için X yönündeki türev sağındaki pikselin değeri ile solundakinin farkıdır. Aynı şekilde Y yönündeki türev de aşağıdaki piksel ile yukarıdakini farkıdır.

Oluşan türev imgeleri(gradient images) aşağıda görselleştirelim:

X yönündeki türev
Y yönündeki türev

Harris Algoritması

Kaynak

Harris algoritması bir sliding window algoritmasıdır. Yani küçük(genelde 5x5) bir window oluşturup bunu imgenin üzerinden geçirir(Resimden 5x5'lik parça alır, işler, sonra bir birim sağa kayıp aynı şeyi yapar).

Harris algoritması window üzerinde resmin türevlerini kullanarak üç değer oluşturur[Aşama 2 ve 3]. Bunlar:

  • X yönündeki türevin karesi(sxx)
  • Y yönündeki türevin karesi(syy)
  • İki yöndeki türevlerin çarpımı(sxy)

Bu 3 değer bir Image Structure Tensor denen bir matris oluşturur[Aşama 4]. Bir window içinde köşe olup olmadığına bu matrise bakıp karar veririz. Bunun için kullanılan iki yol var. Bunlardan birincisi Eigenvalue çıkarımı kullanılarak bir kriter oluşturulması. İkincisi ve daha çok kullanılan yöntem ise matrisin determinantının ve izinin çıkarılması ve bu izden Corner Response değeriniんeldesidir[Aşama 5].

Bu R değeri belirli bir eşiğin(threshold) üzerinde ise mevcut window içinde nokta vardır denir[Aşama 6].

Non-maxima suppression uygulanmamış köşeler

Bir başka yazıda görüşmek üzere.