matlab proje sunumu
TRANSCRIPT
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
𝑛𝜋 𝑥𝐿 )
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.
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.
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.
İ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.
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ı ;
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.
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
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
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
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
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
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
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)
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.
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.
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
Alçak Geçiren Filtre
Yüksek Geçiren Filtrec=(z>15); filtresi uygulandığında filtre çapı büyütüldüğünde ise kenarlar daha belirgin hale gelmektedir.
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);
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)))
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)))
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
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.
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