matlab proje sunumu

25
Bilgisayarlı Görüntü İşleme Proje Ödevi Fourier Dönüşümü İle Görüntü İşleme Ahmet İĞDİR & Abdullah Serkan CANİPEK ( ) = 0 + =1 ( cos + sin )

Upload: abdullah-serkan-canipek

Post on 15-Apr-2017

191 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Matlab Proje Sunumu

Bilgisayarlı Görüntü İşleme Proje Ödevi

Fourier Dönüşümü İle Görüntü İşlemeAhmet İĞDİR & Abdullah Serkan CANİPEK

𝑓 (𝑥 )=𝑎0+∑𝑛=1

(𝑎𝑛cos𝑛𝜋 𝑥𝐿 +𝑏𝑛sin

𝑛𝜋 𝑥𝐿 )

Page 2: Matlab Proje Sunumu

Fourier Dönüşümü İle Görüntü İşeleme

Fourier Dönüşümü bir görüntüyü sinüs ve kosinüs bileşenlerine ayırabilmek için kullanılan önemli bir görüntü işleme aracıdır. Spektral Analiz ve Frekans Analizi olarak da adlandırılabilen Fourier Dönüşümü, görüntü analizi, görüntü filtreleme, görüntü yeniden yapılandırma ve görüntü sıkıştırma gibi geniş bir uygulama yelpazesinde kullanılmaktadır. Bu projede analiz ve filtreleme açısından fourier dönüşümü incelenmiştir. Fourier dönüşümünde kullanılan bazı temel kavramlar açıklandıktan sonra örneklerle dönüşüm işlemlerinin girdi ve çıktıları incelenmiş sonrasında ise filtreleme işlemleri incelenmiştir.

Page 3: Matlab Proje Sunumu

Domain Dönüşümü

Bir sinyalin farklı parametrelerde ifade edilmesi işlemine dönüşüm, ilk halindeki parametrelere geri dönüştürülmesine de ters dönüşüm denilebilir. Fourier dönüşümü ise bir sinyalin uzay domaninden frekans domanine dönüştürülmesi işlemidir.

Page 4: Matlab Proje Sunumu

Frekans Uzayı

Matematiksel fonksiyon veya sinyallerin zaman yerine frekansa bağlı şekilde tanımlanıp analiz edilmesini ifade eden terimdir. Bir zaman uzayı grafiği sinyalin zamana göre nasıl değiştiğini gösterirken bir frekans uzayı grafiği sinyalin bir frekans aralığı boyunca verilen her bir frekans bandı içinde ne kadar değiştiğini gösterir.

Page 5: Matlab Proje Sunumu

İmge uzayında yapılabilecek işlemlerin yanında, frekans düzlemindeki bilgi de imge işlemede sıkça kullanılmaktadır. İmge uzayında yapılan konvülüsyon işlemi her bir piksel için tekrarlanmakla birlikte, çekirdek elemanına bağlı olarak hesapsal yükü oldukça fazla olabilmektedir. Frekans uzayına geçildiğinde konvülüsyon işlemi çarpma işlemine dönüşeceğinden, bu uzayda yapılacak süzgeçleme işlemlerinde frekans uzayına geçiş ve geri dönüş işlemleri için hesapsal yükten bahsedilebilir. Ayrıca frekans uzayında imgedeki piksellerin dağılımına ilişkin bilgileri gözlemlemek de mümkündür.Frekans uzayına geçiş için genellikle Fourier dönüşümü kullanılmaktadır.

Page 6: Matlab Proje Sunumu

Fourier Dönüşümü; görüntü işlemenin çok önemli konularından biridir. Uzaysal domainde başarılması zor işlemleri, frekans domain’inde başaracak yapıda olan bu dönüşüm, görüntüyü oluşturan frekans bileşenlerini birbirinden ayırt edebildiği için değişik derecelerden alçak ve yüksek geçiren filtreleme işlemleri kolaylıkla başarılabilir. Frekans Uzayında imge işleme aşamaları ;

Page 7: Matlab Proje Sunumu

Matlab ile Fourier Dönüşümü

fft : Tek boyutlu dft yapar. Çıkış vektörüdür.İfft : Dft vektörünün tersini alır.fft2 : 2 Boyutlu Dft yapar. Çıkış matrisidir.İfft2 : Dft matrisinin tersini alır.fftshift : DC değerini merkeze alma gibi bir transformasyonu kaydırır.

Page 8: Matlab Proje Sunumu

Oluşturulan Farklı görüntülerinin fourier dönüşümünün izlenmesi;

a=[zeros(128,64) ones(128,64)];imshow(a)figureaf = fftshift (fft2(a));imshow (mat2gray (log(1+abs(af))))

1

Page 9: Matlab Proje Sunumu

Oluşturulan Farklı görüntülerinin fourier dönüşümünün izlenmesi;

a=[zeros(128,16) ones(128,16) zeros(128,16) ones(128,16) zeros(128,16) ones(128,16) zeros(128,16) ones(128,16)];imshow(a)figureaf = fftshift (fft2(a));imshow (mat2gray (log(1+abs(af))))

2

Page 10: Matlab Proje Sunumu

Oluşturulan Farklı görüntülerinin fourier dönüşümünün izlenmesi;

a=[zeros(128,16) ones(128,16) zeros(128,16) ones(128,16) zeros(128,16) ones(128,16) zeros(128,16) ones(128,16)];a=imrotate(a,45);imshow(a)figureaf = fftshift (fft2(a));imshow (mat2gray (log(1+abs(af))))

3

Page 11: Matlab Proje Sunumu

Oluşturulan Farklı görüntülerinin fourier dönüşümünün izlenmesi;

a=[zeros(128,16) ones(128,16) zeros(128,16) ones(128,16) zeros(128,16) ones(128,16) zeros(128,16) ones(128,16)];a=imrotate(a,90);imshow(a)figureaf = fftshift (fft2(a));imshow (mat2gray (log(1+abs(af))))

4

Page 12: Matlab Proje Sunumu

Oluşturulan Farklı görüntülerinin fourier dönüşümünün izlenmesi;

a=zeros(256,256);a(78:178, 78:178)=1;imshow(a)figureaf=fftshift(fft2(a));imshow(mat2gray(log(1+abs(af))))

5

Page 13: Matlab Proje Sunumu

Oluşturulan Farklı görüntülerinin fourier dönüşümünün izlenmesi;

cm=imread('C:\Users\ahmetpc\Desktop\kalem.jpg');imshow(cm)figurecf=fftshift(fft2(cm));imshow(mat2gray(log(1+abs(cf))))figure

6

Page 14: Matlab Proje Sunumu

Frekans Uzayı’nda Filtreleme

MATLAB ’da frekans uzayı filtreleme için:

1. İmgenin AFD’ sini alınır (fft2 fonksiyonu).

2. Karmaşık imgeye kaydırma işlemi uygulanır (fftshift fonksiyonu).

3. Kaydırılmış F(u, v)’ yi H(u, v) ile noktasal çarpılır

4. Karmaşık imgeye tekrar kaydırma işlemi uygulanır (fftshift)

5. Karmaşık imgenin ters AFD’sini alınır (ifft2 fonksiyonu)

6. Elde edilen sonucun gerçek kısmını süzgeçlenmiş imge olarak kullanılır (real fonksiyonu)

Page 15: Matlab Proje Sunumu

Alçak Geçiren FiltreBir görüntünün Fourier dönüşüm matrisi F elimizde mevcutsa ve bunun DC katsayısını merkeze kaydırdığımızda, dolayısıyla düşük frekanslı bileşen katsayıları da merkeze kaymış olacaktır. Bu durumda bir alçak geçiren filtre matrisi (c) ile bu F dönüşüm matrisini uygun bir şekilde işleme tabi tutarak (elementer çarpım işlemi .* ( F.*c)), merkezdeki ve yakınındaki (alçak frekanslı bileşenler) değerler korunur ve merkezden uzak değerler (yüksek frekanslı bileşenler) ya küçülür veya yok olur. Böylece alçak geçiren filtre işlemi gerçekleşmiş olur. Bu filtrelenmiş FFT (DFT) matrisin inversi F -1 (F.c) alınarak uzaysal domaine dönülmüş olur. Filtrenin yarıçapı ne kadar küçükse elenen yüksek frekanslı bileşenler o kadar büyük olur. Resim bulanıklaşır.

Page 16: Matlab Proje Sunumu

Alçak Geçiren Filtrecm=imread('C:\Users\ahmetpc\Desktop\filtre.jpg');imshow(cm)figurecf=fftshift(fft2(cm));imshow(mat2gray(log(1+abs(cf))))figure512*512 boyutunda gray modda bir görselin frekans uzayında görüntüsü elde edildi.

Page 17: Matlab Proje Sunumu

Alçak Geçiren Filtre[x,y]=meshgrid(-256:255,-256:255);z=sqrt(x.^2+y.^2);imshow(z)c=(z<30);cf1=cf.*c;imshow(mat2gray(log(1+abs(cf1))));figures=ifft2(cf1);imshow(mat2gray((1+abs(s))));figure

Buradan merkeze kaydırılmış transform matrisini (cf) bir daire matrisi ile çarparak ( * sembolu MATLAB’da iki matrisin element-wise çarpımına eşittir) elde edilen görsele c=(z<30); alçak geçiren filtre uygulanarak yoğun bir bulanıklık etkisi gözlenir

Page 18: Matlab Proje Sunumu

Alçak Geçiren Filtre

Page 19: Matlab Proje Sunumu

Yüksek Geçiren Filtrec=(z>15); filtresi uygulandığında filtre çapı büyütüldüğünde ise kenarlar daha belirgin hale gelmektedir.

Page 20: Matlab Proje Sunumu

BUTTERWORTH Filtreİdeal alçak ve yüksek geçiren filtreleme en kolay filtreleme teknikleridir. Ancak sonuç görüntüde nesneler çevresinde istenmeyen halkalar oluşur. Bundan kaçınmanın bir yolu, daha az keskin kesimli bir dairesel filtre matrisi kullanmaktır. Popüler bir seçim Butterworth Filtrelerdir. Butteworth Filtreleri tarif etmeden önce, ideal filtrelere tekrar bakarsak; Bunlar radyal transform merkezine göre simetrik olduğundan, onları sadece merkeze göre tanımlayabiliriz. Oysa biz merkezden olan x uzaklığının bir fonksiyonu olarak ta Filtre tanımlayabiliriz.Butterworth filtreler MATLAB’da kolaylıkla gerçekleştirilirler. Örnek olarak Filtre boyutu; 512x512 olan D = 15 ve n=2 değerli, bir alçak geçiren filtre için; [x,y]= meshgrid(-256:255, -128:127);

bl=1./(1+((x.^2+y.^2)/15).^2);

Page 21: Matlab Proje Sunumu

BUTTERWORTH Filtre (Alçak geçiren)

a=imread('C:\Users\ahmetpc\Desktop\filtre.jpg');imshow(a)figurecf=fftshift(fft2(a)); [x,y]=meshgrid(-256:255,-256:255); bl=1./(1+((x.^2+y.^2)/100).^1);

cfbl=cf.* bl; b=ifft2(cfbl);imshow(uint8(abs(b)))

Page 22: Matlab Proje Sunumu

BUTTERWORTH Filtre (Yüksek geçiren)

a=imread('C:\Users\ahmetpc\Desktop\filtre.jpg');imshow(a)figurecf=fftshift(fft2(a)); [x,y]=meshgrid(-256:255,-256:255); bl=1./(1+((x.^2+y.^2)/100).^1);cfbl=cf.* (1-bl); b=ifft2(cfbl);imshow(uint8(abs(b)))

Page 23: Matlab Proje Sunumu

GAUSSIAN FiltreGaussian filtreler pürüzsülük açısından en iyisidir. Sonra ideal filtreler gelir. Butterwarth filtreler bu açıdan ortadır. MATLAB da Gaussian filtre oluşturmak için fspecial fonksiyonu kullanılırGaussian filtreler uzaysal domainde alçak geçiren filtreler olarak kullanılıyordu. Frekans domaininde bir Gaussian filtreleme yapmak için; bir gaussian filtre matrisi oluşturulur ve dönüştürülmüş görüntü matrisi ile çarpılır. Sonucun inversini alınır. Uzaysal domaindeki gaussian filtreler gibi, frekans domanindeki gausian filtrelerde lineer filtrelerdir ve oldukça iyi sonuçlar veririler

Page 24: Matlab Proje Sunumu

GAUSSIAN Filtrea=imread('C:\Users\ahmetpc\Desktop\filtre.jpg');imshow(a)figurecf=fftshift(fft2(a));imshow(cf)figureg1=mat2gray(fspecial('gaussian',256,10));cg1=cf.*g1;cg=ifft2(cg1);imshow(cg)

Burada sigma değeri için 10 kullanılmış olup bu değer değiştirilerek daha fazla yada daha az bulanıklık etkisi oluşturulabilir.

Page 25: Matlab Proje Sunumu

KAYNAKÇA 1. https://www.cs.unm.edu/~brayer/vision/fourier.html2. http://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm3. https://www.mathworks.com/help/matlab/ref/fft.html4. https://www.mathworks.com/help/matlab/fourier-analysis-and-filtering.html5. http://stackoverflow.com/questions/28814547/matlab-low-pass-filter-using-fft6. http://stackoverflow.com/questions/10758315/understanding-matlab-fft-example?rq=17. http://stackoverflow.com/questions/34367889/matlab-fft-for-gaussian-function

Ahmet İğdir & Abdullah Serkan CANİPEK

Bilecik Şeyh Edebali ÜniversitesiElektrik – Elektronik Mühendisliği