Frekans domain’inde İşlemler
BMÜ-357 Sayısal Görüntü İşleme
Yrd. Doç. Dr. İlhan AYDIN
Domain Dönüşümü
Dönüşüm,
bir
sinyalin,
başka
parametrelerle
ifade
edilmesi
şeklinde düşünülebilir
.
Ters
dönüşüm
ise , sinyalin ilk halindeki parametrelerle
ifade edilebilir
şekle
geri
döndürülme işlemidir
.
Fourier transform
asyonları (dönüştürücüleri)
bir sinyalin
frekans domanine
dönüşümünü sağlar
.
Frekans uzayı
• İmge uzayında yapılabilecek işlemlerin yanında, frekans
düzlemindeki bilgi de imge işlemede sıkça kullanılmaktadır.
• Daha önce imge süzgeçleme için konvülüsyondan bahsedilmişti.
İmge uzayında yapılan bu işlem 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ü
• Bu 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 biribirinden
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.
• Önce tek boyutlu sonra iki boyutlu Fourier
dönüşümünü kısaca hatırlayalım;
Temel Bilgi notu(Fourier analizi)
Periodik ve sonlu değer alabilen her fonksiyon, değişik frekanslarda
titreşen sinüs veya cosinüslü bileşenlerin toplamından oluşur.
Tek boyutlu ayrık Fourier
dönüşümü (DFT)
Herhangi bir fonksiyon ayrıklaştırıldığında sonlu
sayıda elemanlı bir dizi şeklinde ifade edilir. Örneğn
bir kare dalganın ayrık zamanlı dizi şeklinde ifadesi;
1 1 1 1 -1 -1 -1 -1 şeklinde olabilir.
Frekans Uzayı – Ayrık Fourier Dönüşümü
Frekans Uzayı – Ayrık Fourier Dönüşümü
Frekans Uzayı – Ayrık Fourier Dönüşümü
Frekans Uzayı – Ayrık
Fourier Dönüşümü
Örnek
: f = [1, 2, 3, 4] ve N=4 için
Tek boyutlu DFT işlemiyle ilgili….
F
(n)
=
(1,1,1,1,0,0,0,0)
Fast Fourier Dönüşümü
• DFT, ayrık fonksiyonların fourier dönüşümünü
yapmak için çok önemli bir yapı olmakla
beraber, dizi eleman sayısının çok fazla olduğu
dönüşümler için uzun zaman harcamaktadır.
Özellikle resim işleme gibi data sayısı fazla olan
işlemler için yavaştır.
• Bunun yerine FFT( Hızlı fourier dönüşümü) ile
bileşen katsayıları bulunur. Burada dikkat
edilecek konunun dizinin 2’nin kuvveleri
sayısında elemandan oluşturulmasıdır.
2-D (2 Boyutlu) DFT
2 boyutlu DFT; Matris şeklinde bir diziyi giriş kabul edip, yine matris şeklinde
bir çıkış elde eder. Farz edelim ki;
f(x, y), x = 0, 1, 2, . . ,M − 1 ve y = 0, 1, 2, . . ,N − 1,
M × N boyutunda bir görüntü olsun. Bu f görüntüsünün 2-D
DFT’sindeki F(u,v) katsayıları aşağıdaki formülden hesaplanır. F’nin Fourier
dönüşümü;
F =F ( f )
Ters fourier dönüşümü ise;
f = F
-1
(F)
2-D DFT
Eğer; f(x, y) dizisi reel ise, bunun fourier dönüşümü genellikle kompleks sayılardır. Dönüştürülmüş
bir resmi frekans uzayında görmek (görsel analizi) onun spetrumunu ifade etmektir.
R(u, v) ve I(u, v) sırasıyla; F(u, v)’nin reel ve imajiner kısmını gösteriyorsa; Fourier ve güç
spektrumu aşağıdaki gibi tarif edilir. Artık frekans uzayında bir görüntüyü, fourier spektrumu veya
güç spektrumu ile ifade edebiliriz.
Orijinal
Genlik spk.
Faz spk.
Görüntünün tekrar orijinaline dönüştürülmesi
için, hem genlik hem de faz bilgisine ihtiyaç
vardır.
Frekans Uzayı – İmge İşleme Aşamaları
Eğer f(x, y) reel ise, onun fourier transformasyonu orijine göre
eşlenik (Conjugate) simetriktir. Yani
F(u, v) = F∗(−u,−v)
Dolayısıyla aşağıdaki bağıntıda orijine göre simetriktir.
|F(u, v)| = |F(−u,−v)|
• F(u, v)’nin aşağıdaki şekilde de yazılabileceğini
söyleyebiliriz.
F(u, v) = F(u +M, v) = F(u, v + N) = F(u +M, v + N)
• Başka bir deyişle, DFT hem u yönünde hem v
yönünde periyodiktir. Bu periyodiklik M ve N
değişkenleri tarafından belirlenmiştir.
• Periodiklik IDFT’de vardır.
f(x, y) = f(x +M, y) = f(x, y + N) = f(x +M, y + N)
DC katsayısı ve kaydırma (shifting)
DFT’deki DC katsayısı F(0,0) değeridir. Aşağıdaki denklemde v=u=0 konulduğunda
bulunur. Buna göre Dc katsayısının değeri orijinal görüntü matrisindeki tüm eleman
değerlerinin toplamı olarak ortaya çıkar. Bu değer yeni matrisin en üst sol
köşesindedir.
Kaydırma:
Görüntüleme amacı için; DC katsayısının matrisin orta nokta elemanı olarak
oluşması uygundur. Bunun için kaydırma yapılabilir.
Kaydırma işlemi , dönüşümden önce f(x,y) matrisinin tüm elemanlarının (-1)
x+y
ile
çarpılacağı anlamındadır.
2-D DFT’nin bazı özellikleri
F ve f’yi hesaplayan denklemlerdeki üstel ifadeleri yandaki gibi ayrıştırabiliriz.
Bunun anlamı x ve u ’ya ve y ve v ’ye göre ayrı ayrı işlem yapabiliriz. Yani iki
boyutlu DFT tek boyutlu 2 adet DFT işleminden oluşmuştur. Bunuda resimdeki
satırların ve sutunların ayrı ayrı DFT’sinin alınıp biribileriyle ilişkilendirilmesi
şeklinde düşünebiliriz.
Dönüşümün gösterilmesi
• F(x,y) görüntüsünden elde edilen F(u,v) fourier katsayılar matrisinin
elemanları kompleks sayılardır. Kompleks sayılar direkt olarak
görüntülenemez.
• Onların magnitüdleri (genlikleri) |F(u,v)|alınır . Bu bir takım double
sınıfı büyük sayılardır. Bu büyük sahada uğraşmak için;
• 1-) |F(u,v)|’deki en büyük değer m bulunur (Bu DC değerdir). Ve
|F(u,v)|/m işlemi yapılır. Böylece imshow ile görüntülenebilir.
• 2-) |F(u,v)| ‘yi görmek için mat2gray fonksiyonunu doğrudan
kullanabiliriz.
• Genelde DC değerler çok büyük değerler olacağından; Bunun
oluşturacağı görüntüde bu değer baskın çıkar. Bunun önüne geçmek
için |F(u,v)| ‘nın logaritmasının alınması daha uygundur.
log(1+ |F(u,v)|)
• Fourier transformasyonun magnitude’unun (genliğinin)
görüntülenmesi, transformasyonun spektrumu diye isimlendirilir.
MATLAB’da Fourier Dönüşümü
fft :
Tek boyutlu DFT yapar(çıkışı vektördür)
ifft :
DFT vektörünün tersini alır.
fft2:
2 boyutlu DFT yapar. Çıkışı Matristir.
İfft2:
DFT matrixinin tersini alır.
fftshift:
Bir tranformasyonu kaydırır. (örnek DC
değerini merkeze alma gibi)
MATLAB’da Fourier Dönüşümü Örnekler
1- Eleman değerleri 1 olan bir f(x,y)
matrisinin DFT’sini alalım.
>> a=ones(8);
>> fft2(a);
fft2 ile elde edilen matrisi yorumlayın?
Örnek 2
**** f(256,256) bir görüntü oluşturup, fourieir transformasyonunu yapınız.
>> a=[zeros(256,128) ones(256,128)];
>> imshow(a)
>> af = fftshift (fft2(a));
>> imshow (mat2gray (log(1+abs(af))))
örnek
İç içe 2 dikdötrtgen (siyah içinde beyaz) yaratıp bunun fourier dönüşümünü alalım.
>> a=zeros(256,256);
>> a(78:178, 78:178)=1;
>> imshow(a)
>> af=fftshift(fft2(a));
>> imshow(mat2gray(log(1+abs(af))))
Frekans Uzayı – Matlab’da Frekans Uzayı İşlemleri
• MATLAB’da frekans uzayı filtreleme için:
1. İmgenin AFD’sini al (fft2 fonksiyonu).
2. Karmaşık imgeye kaydırma işlemi uygula (fftshift
fonksiyonu).
3. Kaydırılmış F(u,v)’yi H(u,v) ile noktasal çarp.
4. Karmaşık imgeye tekrar kaydırma işlemi uygula
(fftshift).
5. Karmaşık imgenin ters AFD’sini al (ifft2 fonksiyonu).
6. Elde edilen sonucun gerçek kısmını süzgeçlenmiş
imge olarak kullan (real fonksiyonu).
Frekans Domain’de FİLTRELEME
Fourier dönüşümü bir domain dönüşüm işlemiydi. Filtreleme de bir filtre matrisinin
görüntü matrisi ile konvolusyonu olduğundan Frekans domeninde filtreleme için
fourier dönüşümü çok uygundur.
Filtre matrisi yaratmanın en çok kullanılan yolu ise; Matlab kodu aşağıda
verilen yapıdır. Burada 1.komut ile 256x256lık matris oluşturulur ( Bunların eleman
değerleri -128 den başlayıp 1’er artarak 127 ye kadar değer alır.
Burda z herbir x,y koordinatının genlik değeridir.
İdeal Alçak Geçiren Filtre
Varsayılım ki bir görüntünün Fourier dönüşüm matrisi F elimizde mevcut
olsun. 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
Frekans Domeninde ALÇAK GEÇİREN FİLTRE
>>
cm=imread('cameraman.tif');
>> imshow(cm)
>> cf=fftshift(fft2(cm));
>> imshow(mat2gray(log(1+abs(cf))))
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)
>> [x,y]=meshgrid(-128:127,-128:127);
>> z=sqrt(x.^2+y.^2);
>> c=(z<15);
>> cf1=cf.*c;
>> imshow(mat2gray(log(1+abs(cf1))));
>> s=ifft2(cf1);
>> imshow(mat2gray((1+abs(s))));
> c=(z<50);
>> cf1=cf.*c;
>> imshow(mat2gray(log(1+abs(cf1))));
>> s=ifft2(cf1);
>> imshow(mat2gray((abs(s))));
Frekans domaininde yüksek geçiren filtre
–Yüksek geçiren filtre ise, DC değeri merkeze kaydırılmış F
matrisinin merkez veya merkeze yakın eleman değerlerini
(Alçak bileşenleri) yok etmek veya zayıflatmak, merkezden
uzak eleman değerlerini ise korumak şeklindedir. Filtre matrisi
oluşturma işlemi alçak geçiren filtredeki gibidir. Tek fark
aşağıdaki deyimdedir. Buradaki 15 örnek olarak verilmiştir.
– Oluşturulan c filtre matrisi ile F fft matrisi elemanter çarpma
işlemine tabii tutulur. Filtreleme işlemi başarılmıştır.
– Bunun ters FFT’si İfft2 alınarak, filtrelenmiş görüntü uzaysal
domaine dönüştürülür.
– Yüksek geçiren filtreleme görüntüdeki nesne kenarlarının
belirginleşmesine, gövdenin ise siyahlaşmasına neden olur.
Frekans domaininde yüksek geçiren filtre
>> cm=imread ('cameraman.tif');
>> [x,y]=meshgrid (-128:127,-128:127);
>> z=sqrt(x.^2+y.^2);
>> c=(z>15);
>> cf= fftshift(fft2(cm));
>> cfh=cf.*c;
>> imshow(mat2gray(log(1+abs(cfh))));
>> cfhi=ifft2(cfh);
>> imshow(uint8(abs(cfhi)))
Frekans domainde 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.
• İdeal alçak geçiren ve yüksek geçiren filtre fonksiyonları tarifi
aşağıdaki gibi sıralanmıştı. Bu fonksiyonlarda D sabiti kesim
yarıçapı idi.
• Butterworth filtre fonksiyonları ise aşağıdaki
bağıntılarla ifade edilir.
• Burada n filtrenin derecesidir. n’nin değeri kesimin keskinliğini
verir.
Filtre Grafikleri
• Butterworth filtreler MATLAB’da kolaylıkla
gerçekleştirilirler. Örnek olarak Filtre boyutu;
256x256 olan D = 15 ve n=2 değerli, bir alçak
geçiren filtre için;
• Butterworth yüksek geçiren filtre ise 1-b1
şeklinde gerçekleştirilebilir.
But.worth 1.derece alçak
geçiren filtreleme örneği
>> a=imread('cameraman.tif');
>> cf=fftshift(fft2(a));
>> [x,y]=meshgrid(-128:127,-128:127);
>> bl=1./(1+((x.^2+y.^2)/15).^1);
>> cfbl=cf.*bl;
>> b=ifft2(cfbl);
>> imshow(uint8(abs(b)))
Üsteki şekil ideal Alçak geçiren
Filtreleme sonucu, alttaki şekil
Butterworth 1. dereceden alçak
geçiren filtreleme sonucudur.
Frekans domainde Gaussian Filtre
Gaussian filtreler pürüzsülük açısından
(yumuşaklık) 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ır.
>> a=imread('cameraman.tif');
>> cf=fftshift(fft2(a));
>> g1=mat2gray(fspecial('gaussian',256,10));
>> cg1=cf.*g1;
>> cg=ifft2(cg1);
Yanda alçak geçiren gaussian filtreleme
örnekleri görülmektedir. Yüksek geçiren
gaussian filtreleme ise >> h= 1-g1 Şeklinde
yazılır.
Gaussian filtreler uzaysal domande alçak geçiren filtreler olarak kullanılıyordu.
Frekans domaininde bir Gaussian filtreleme yapmak için; bir gaussian filtre
matrisi oluşturun ve onu dönüştürülmüş görüntü matrisi ile çarpın. Sonucun
inversini alın.
Uzaysal domandeki gaussian filtreler gibi, frekans domanindeki
gausian filtrelerde lineer filtrelerdir ve oldukça iyi sonuçlar veririler
Dostları ilə paylaş: |