Giriş görüntüsüne Gabor filtresi uygulama


11

Belirli bir ölçekte bir Gabor filtresi uygulamaya çalıştım (lambda ve sigma değerlerime göre, bu yüzden ( 7x7 ) ve 4 yönlendirme için (0, ,ππ4 ve3ππ2 ) giriş gri skala görüntüsüne.3π4

Kodumda üç adım gerçekleştirildi:

  1. Gabor Filtresi Oluşturma

  2. Bir RGB görüntüsünü okuyun, ardından gri skalaya ve son olarak iki katına dönüştürün.

  3. Giriş görüntü için oluşturulan gabor uygulayın ( burada, benim kod doğru olup olmadığından emin değilim, bu yüzden senin fikrin ihtiyacım var )

1) -------------- Gabor filtresini oluşturun (boyut = 7x7 ve 4 yön)

%define the five parameters
theta=....; %either 0 or pi/4 or pi/2 or 3pi/4
lambda=3.5;
gamma=0.3;
sigma=2.8;
psi=0;

sigma_x = sigma;
sigma_y = sigma/gamma;

nstds = 5;
xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta)));
xmax = ceil(max(1,xmax));
ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta)));
ymax = ceil(max(1,ymax));
xmin = -xmax; ymin = -ymax;
[x,y] = meshgrid(xmin:xmax,ymin:ymax);

x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);

gb= exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);

figure(2);
imshow(gb);
title('theta=...');
%imagesc(gb);
%colormap(gray);
%title('theta=...');

resim açıklamasını buraya girin

2) ------------ Giriş görüntüsünü okuyun

I=imread('piano.jpg');
image_resize=imresize(I, [160,160]);
image_gray=rgb2gray(image_resize);
image_double=im2double(image_gray);
figure(1);
imshow(image_double);

resim açıklamasını buraya girin

3) ----- oluşturulan görüntü üzerinde yukarıdaki gabor uygulayın (bu adımdaki kod% 100 doğru olup olmadığından emin değilim, bu yüzden doğru cevabınız varsa fikrinize ve yardımınıza ihtiyacım var. )

figure(3);
filtered = conv2(image_double,gb);
imagesc(filtered);
colormap(gray);
title('theta=....');

resim açıklamasını buraya girin


Ayrıca, conv2 kullanıyorsanız lütfen 'aynı' seçeneğiyle kullanın.
Tolga Birdal

Hata: Dosya: practise1.m Satır: 3 Sütun: 7 Eşittir işaretinin solundaki ifade, atama için geçerli bir hedef değil. Bu kodu çalıştırdığımda bu hatayı buldum
Engr Rao Zaka

Bu filtre 7x7 değil mi?
jiggunjer

Yanıtlar:


1

Kodunuz doğru ve sonuçlar tutarlı. Bazı 'gizli özellikler' nedeniyle onları şaşırtabilirsin.

İlk olarak, conv2sonuç olarak görüntünün boyutu artı çekirdeğin yarısı boyutunun yarısı (yani, görüntünün boyutu artı çekirdeğin boyutunun toplam boyutu) olacak şekilde, tam evrişimi varsayılan olarak döndürür. Sonuçlarınızı yorumlarken bunun farkında olun!

İkincisi, sonuçlar çekirdeğiniz ve yerel görüntü yamanız arasında daha yüksek bir korelasyon için daha güçlü olan katsayıları temsil eder: beklendiği gibi görüntünün sınırlarını da çıkarırsınız. Özellikle güçlü dikey çizgi gösteren en soldaki sonucunuzu görün.

Son olarak, imagescvarsayılan olarak en yüksek ile en düşük katsayı arasındaki ölçeği ölçeklendirir. Bu yüzden en soldaki sonuçta esas olarak sınırı görüyorsunuz.

İçin farklı seçenekler vardır conv2anlatıldığı içinde help conv2bu davranışı kontrol etmesine izin hangi.

Ayrıca log-Gabors gibi kenarları tespit etmek için birçok farklı çekirdek tanımının bulunduğunu unutmayın.

farklı filtre türleri.

Tam bir uygulama ile ilgileniyorsanız (python'da) şu adrese bakabilirsiniz: https://pythonhosted.org/LogGabor/ (utanmaz kendinden fişli 😇).


0

Kodunuz doğru. Çok iyi yaptığınız filtre çekirdeği ile 2-B evrişim yapmanız yeterlidir.

İyi şanslar


Seni anlayamıyorum. 2-B Konvolüsyon yapıyorsunuz (conv2 fonksiyonunu kullandığınız için). Başka bir yol, frekans alanında çarpmaya gitmektir (çünkü zaman veya uzay alanındaki konvolüsyon, frekans alanındaki çarpmaya eşdeğerdir). Ancak bunu yapmanıza gerek yok, çünkü conv2 aslında aynı şeyi yapıyor (dahili olarak !!!)
Ujjwal Aryan

Kesinlikle :) ,, HMAX modelini biliyor musunuz? (S1, C1, S2, C2 katmanları ...). Şimdi C1 katmanını (S1 birimleri arasındaki maksimum işlem) hesaplamaya çalışıyorum, bu konuda bazı fikirler biliyor musunuz (matlab kodu)?
Liszt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.