AtasoyWeb - Hüseyin Atasoy
AtasoyWeb
Hüseyin Atasoy'un Programlama Günlüğü

Gabor Filtresi

Gabor filtresi, gerekli parametreler ve bu parametrelerin filtreli görüntü üzerindeki etkileri.

İlgili Bağlantılar: GaborFiltresi.dll, Görüntü Filtreleri, Araç Plakası Konum Tespiti

Geçenlerde filtrenin internet üzerinden denenmesine olanak tanıyan bir sayfa ile karşılaşmıştım. Filtre gerçekten ilginç sonuçlar üretiyor. Bugünlerde, ilerde çok işime yarayacağını düşündüğüm bu yöntemin bir kütüphanesini yazmaya çalışıyorum. [ -> GaborFiltresi.dll ]

Gabor filtresi, görüntü analizinde kullanılan önemli yöntemlerden bir tanesi. Filtre yardımıyla bir görüntü üzerinde belli bir yöne uzanan ayrıtlar tespit edilebilmektedir. Bu özelliği sayesinde plaka tanıma, parmak izi tanıma, iris tanıma, yüz tanıma gibi görüntü işleme tekniklerine dayalı pek çok yöntem için önemli bir adım niteliğindedir...

Gabor Filtresi, Komplex

Filtreye ait çekirdek matris yukarıdaki fonksiyon yardımıyla hesaplanır. Bu fonksiyon bir komplex sayı döndürür. Çarpımın gerçel ve imajinal bileşenleri ayrı ayrı hesaplanabilir. Aşağıdaki ifade dönüş değerinin gerçel, bir sonraki de imajinal kısmıdır.

Gabor Filtresi, Gerçel
Gabor Filtresi, İmajinal

Her iki fonksiyon kullanılarak hem reel hem de imajinal değerler hesaplanıp, bu değerlerin karelerinin toplamının karekökleri alınarak elde edilecek sonuç kullanılabilir. Ancak genelde sadece reel değerlerin hesaplanması yeterli olmaktadır.

Şimdi fonksiyondaki ifadeleri, işlenmek üzere alınan parametreleri ve bu parametrelerdeki değişimlerin sonuca etkilerini inceleyelim.

x Ve y Değerleri

Çekirdek matris hesaplanırken kullanılır. Çekirdek matris genelde bir kare matristir. nxn boyutundaki bu matris hem x hem y değerlerine, [-((n-1)/2), ((n-1)/2)] kapalı aralığındaki değerler verilerek elde edilir. Ancak matris dolaşılırken x ve y değerleri değil, elemanların satır ve sütun numaraları kullanılmalıdır. Matrisin boyutu için en uygun değerin nasıl hesaplandığını, dalga boyu ve en/boy oranı değerlerini anlattıktan sonra vermek sanırım daha mantıklı olacak...

x' Ve y' Değerleri

Gabor Filtresi, x üssü
Gabor Filtresi, y üssü

Gabor filtresini anlatan kaynaklarda bu iki eşitlik ile ilgili bilgiye rastlayamamıştım. Biraz kurcalayınca aslında bu eşitliklere, daha önce lineer cebir dersinde öğrendiğimiz koordinat dönüşüm(transformation) işlemleri ile ulaşıldığını farkettim. Bir vektörün koordinatları bir dönüşüm matrisi yardımıyla değiştirilir. Yukarıdaki eşitlik elde edilirken kullanılan dönüşüm matrisi, iki boyutlu rotasyon matrisi adı verilen aşağıdaki matristir:
Rotasyon matrisi

Dönüşüm aşağıdaki işlem ile gerçekleştirilir:
Rotasyon matrisi ile koordinat dönüşümü

Teta açısı pozitifken saat yönünün tersine döndürme(rotasyon) yapan bu matriste, açı negatif alınırsa döndürme işlemi saat yönünde yapılır.

Ancak bilgisayarda bir görüntü düşünüldüğünde, örneğin bir picturebox göz önünde bulundurulduğunda, +y yönü koordinat düzlemine göre -y(aşağı doğru) yönüdür. Bu yüzden genelde saat yönünde döndürme tercih edilir ve bunu sağlamak için teta, -teta olarak alınır. cos(-teta)=cos(teta) ve sin(-teta)=-sin(teta) olduğundan, dönüşüm matrisinde -sin(teta) ve sin(teta) ifadelerinin yerleri değişir. Çarpım sonucunda, x ve y koordinatlarından saat yönünde teta kadar dönmüş x' ve y' koordinatları elde edilir.

Yönelim Açısı (Teta)

Bu açı, tespit edilmek istenen ayrıtların yönünü belirler. Açı 0 değerinde iken, x eksenine dik olan ayrıtlar tespit edilir. Bu durum size ters gelirse teta açısı yerine teta+90 açısını kullanıp, teta 0 iken yatay ayrıtların tespit edilmesini sağlayabilirsiniz. Açı arttırıldıkça, rotasyon matrisinin döndürme yönüne göre artan açılara sahip ayrıtlar tespit edilir.

Standart Sapma (Sigma)

Fonksiyondaki 2. çarpan bir gaussian fonksiyondur. Bu değer, 2. çarpanın standart sapma değeridir ve band genişliği ile dalga boyu paramatreleri kullanılarak hesaplanabilir.

Dalga Boyu (Landa)

Cosinüs çarpanının dalga boyunu belirler. Birimi pixeldir. Bu parametreye 2 veya 2den büyük değerler verilmelidir.

Band Genişliği ve Standart Sapma İle Dalga Boyu Arasındaki İlişki

Band genişliği sıfırdan büyük bir reel sayıdır. Düşük band genişliği, dolayısıyla büyük standart sapma, filtreli görüntüdeki paralel şeritlerin sayısının artmasına sebep olur. Band genişliği, standart sapma ve dalga boyu arasında aşağıdaki gibi bir ilişki vardır:
Band genişliği

Bu eşitlik kullanılarak standart sapmanın dalga boyuna oranı bulunabilir:
Standart sapmanın dalga boyuna oranı

Bu eşitlik, band genişliği, standart sapma ve dalga boyu değerlerinin herhangi ikisi kullanılarak, diğerinin hesaplanabilmesini sağlar. Genelde band genişliği 1 alınır. Bu durumda standart sapma, dalga boyu ve band genişliği değerleri kulanılarak sigma=0.56*landa olarak bulunur.

En/Boy Oranı (Gama)

Gaussian fonksiyonu, çan eğrisi biçiminde bir grafik meydana getirir. En/boy oranı bu eğrinin eninin boyuna oranıdır. Bu değer, elde edilecek filtreli görüntüye aynı şekilde yansır. Yani değer değiştirildikçe, elde edilecek ayrıtların en/boy oranı aynı oranda değişir.

Faz Açısı (Fi)

Cosinüs çarpanının faz açısıdır. Bu değer 0 ve 180 iken, gaussian eğrisi merkezde(x=0) konumlanır. Farklı faz açıları, grafiği x eksenine göre sola veya sağa kaydırır ve eğrinin y eksenine göre asimetrik olmasına sebep olur. Asimetriklik aynen filtreli görüntüye yansır. Yani filtreli görüntüde, ayrıtları temsil eden paralel şeritler parlaklık bakımından asimetrik olur.

Dalga boyuna 2 değeri verilmişken, faz açısına 90 veya -90 değeri verilmemelidir. Çünkü bu durumda çekirdek matrisin elemanlarına gabor fonksiyonunun sıfırdan geçiş noktaları denk gelir ve elde edilecek çekirdek matris, filtrelenmesi istenen görüntünün tüm pixellerini sıfırlar.

Çekirdek Matrisin Boyutunun Hesaplanması

Çekirdek matrisin boyutunu elle girmek mümkündür. Matris kare alındığında, boyutu belirleyen en uygun n değeri 8*sigma/gama ifadesine en yakın küçük tamsayı seçilerek belirlenebilir.

Çekirdek Matrisin Görüntü Üzerinde Gezdirilmesi

Filtre görüntü üzerinde gezdirilirken, çekirdek matrisin elemanları ile filtrelenecek görüntüde matrisin örttüğü aynı boyuttaki pixel matrisinin elemanları birbirleri ile çarpılır ve bu çarpımlar toplanır. Elde edilen toplam değerinin karesinin karekökü (yani aslında mutlak değeri) alınır ve bu son değer, görüntü üzerinde o an işlenen pixel matrisinin tam ortasındaki pixele yerleştirilir. Tüm pixeller gezildiğinde, filtreli görüntü elde edilmiş olur.

Normalizasyon

Denemelerimde, ilk başlarda bu adımı gözardı ettiğim için filtreli görüntüyü internet üzerindeki online uygulamanın çıktısına benzetememiştim.

Normalizasyon, pixellerin değerlerinin 0-255 aralığına genişletilmesi işlemidir. Eğer bu adım atlanırsa, pixeller dar bir aralıktan değer alabileceğinden, çok parlak veya çok sönük görüntüler elde edilebilir. Bunu önlemek amacıyla filtreli görüntüdeki en parlak pixelin 255 değerine sahip olmasının sağlanması ve bu yüzden en parlak pixelin değeriyle çarpılması gereken katsayının hesaplanıp(=255/EnParlakPixelDeğeri) diğer tüm pixellerin bu katsayıyla çarpılması gerekir. Böylece normalizasyon tamamlanır ve görüntü gabor filtresinden geçirilmiş olur...

Harici Bağlantılar

Yazar: Hüseyin Atasoy
Posted: 08/02/2011 17:44
Keywords: gabor filtresi, ayrıt belirleme

Leave Comment

 
You are replying to comment #-1. Click here if you want to cancel replying.

 

Comments (6)

C.Hamza K
Reply
18/03/2011 20:26
#1

Yaptığınız iş gerçekten takdire şayan. Fakat Kaynaklar kısmında verdiğiniz wiki sayfalarını okuyabiliyorsanız, yani ingilizceniz var ise ülkemiz insanlarının faydalanmaları için hazır okumuşken çevirip wiki' ye eklerseniz çok dah faydalı bir iş yapmış olursunuz. Saygılar

Hüseyin Atasoy
Reply
18/03/2011 23:23
#2

Teşekkür ederim.
Aslında iyi olurdu ama buraya bile yazmak için zaman ayırmakta zorlanıyorum.
Muhtemelen bu sayfaya bir arama sonucunda geldiniz. Önemli olan da bu işte. Eğer bilgi arandığında bulunabiliyorsa, bu bilginin nerede yer aldığının çok önemi yok sanırım...

Cevat Serin
Reply
02/06/2011 18:38
#3

Hüseyin bey merhaba. Uzunca bir süredir Gabor filtresini ve FFT'u anlamaya çalışıyorum, henüz bitiremedim :) Şu örneğinizin sonucuna baktığınızda aklıma ilk gelen soru şu oluyor. Bu sonuc resmini nasıl kullanabiliriz. Yani ben örneğin şekil tanımak istiyorum veya plaka tanımak istiyorum. Resimde Plaka veya şekiller her açıda olabilir. Gabora açı yazarken hangi açıyı yazağım. Diyelimki açıyı çözdüm gelen sonucu nasıl kullanacağım veya algılamalıyım. Belirgin çizgiyi baz alıp diğerleri gürültüdür mü demeliyim? Not: Lütfen cevabınızı e-posta adresime gönderirseniz sevinirim. Web'e herzaman bakamıyorum. İyi çalışmalar.

Hüseyin Atasoy
Reply
03/06/2011 17:59
#4

Bu filtre yardımıyla araç plakası konum tespitinin nasıl yapıldığını şu yazıda anlatmaya çalışmıştım.
Aynı sayfadan programın kaynak kodlarına da ulaşabilirsiniz.
İyi çalışmalar.

Abdurrahman
Reply
27/06/2011 23:49
#5

merhaba hocam
gabor filtresinde kullandığınız  teta sigma  landa gama değerlerini nasıl ayarlıyoruz? siz kendi kütüphanenizde hangi değerleri kullandıınız yazabilir misiniz?

Hüseyin Atasoy
Reply
28/06/2011 07:57
#6

Yazıda bu değerlerin filtreli görüntü üzerindeki etkilerinden bahsetmiştim. Bu etkileri şu sayfadaki program yardımıyla gözlemleyebilirsiniz.
Kütüphanedeki değerler sabit değil, kütüphaneyi kullanacak programcı tarafından girilmeli.

 
Şu an bu sayfada 1, blog genelinde 11 çevrimiçi ziyaretçi bulunuyor. Ziyaretçiler bugün toplam 1941 sayfa görüntüledi.
 
Sayfa 50 sorgu ile 0.066 saniyede oluşturuldu.
Atasoy Blog v4 © 2008-2024 Hüseyin Atasoy