java 图像傅里叶变换_图像频域滤波与傅里叶变换
1、頻率濾波
圖像的空間域?yàn)V波:用各種模板直接與圖像進(jìn)行卷積運(yùn)算,實(shí)現(xiàn)對(duì)圖像的處理,這種方法直接對(duì)圖像空間操作,操作簡(jiǎn)單。圖像處理不僅可以在空間域進(jìn)行還可以在頻率域進(jìn)行,把空間域的圖像開(kāi)窗卷積形式,變換得到頻率域的矩陣點(diǎn)乘形式得到比較好的效果。圖像頻域?yàn)V波,先把圖像轉(zhuǎn)換到頻域空間,然后對(duì)不同的頻率點(diǎn)進(jìn)行濾波,使用信號(hào)處理的技術(shù),對(duì)圖像實(shí)現(xiàn)濾波。比如實(shí)現(xiàn)圖像的輪廓提取,在空間域?yàn)V波中我們使用一個(gè)拉普拉斯模板就可以提取,而在頻域內(nèi),我們使用一個(gè)高通濾波模板,可以實(shí)現(xiàn)輪廓的提取。
圖像特征與像素點(diǎn)數(shù)值的關(guān)系:
圖像尺寸418*564,如果把每一行所有像素,一行564個(gè)點(diǎn)的灰度作為一維向量畫(huà)圖,取前三行畫(huà)成三條曲線,就得到了下面的圖形。
subplot(2,1,1);
imshow(img), title('原始圖像');
line1 = img(1, :);
line2 = img(2, :);
line3 = img(3, :);
subplot(2,1,2);
hold on
plot(line1, 'r');
plot(line2, 'g');
plot(line3, 'b');
輸出結(jié)果如下圖。
圖像前幾行的特征如下圖(為了方便觀察提取了不止三行):
從圖像矩陣前幾行的像素特征可見(jiàn),圖像平坦的地方像素曲線也平坦,圖像亮的地方就是圖像像素劇烈變化的地方,圖像像素值發(fā)生較大差異的地方也是圖像發(fā)生突變的地方,這些位置一般就是圖像輪廓。圖像的頻率體現(xiàn)了圖像中灰度變化劇烈程度,是灰度在平面空間上的梯度。所以前面講的空域?yàn)V波,可以使用平滑來(lái)濾除噪聲實(shí)現(xiàn)平滑,從上面曲線圖像上看,可以按照信號(hào)處理思想來(lái)理解,平滑濾波就是頻率低通。對(duì)應(yīng)的,頻率高通濾波就是空域的提取邊界。
2、圖像傅里葉變換
傅里葉變換可以將一個(gè)時(shí)域信號(hào)轉(zhuǎn)換成在不同頻率下對(duì)應(yīng)的振幅及相位,其頻譜就是時(shí)域信號(hào)在頻域下的表現(xiàn),而反傅里葉變換可以將頻譜再轉(zhuǎn)換回時(shí)域的信號(hào)。
imgPath = 'E:\opencv_pic\src_pic\pic4.bmp';
img = imread(imgPath);
img=rgb2gray(img);
f=fft2(im2double(img)); %FFT
F=f; %FFT頻譜
T=log(F+1); %頻譜對(duì)數(shù)變換
subplot(1,2,1),imshow(img),title('原始圖像');
subplot(1,2,2),imshow(T,[]),title('原始圖像其頻譜圖');
輸出結(jié)果如下,幅度圖在四個(gè)角出現(xiàn)亮光。因?yàn)閷?shí)信號(hào)以fs為采樣速率的信號(hào)在 fs/2處混疊,所以實(shí)信號(hào)fft的結(jié)果中前半部分對(duì)應(yīng)[0, fs/2],后半部分對(duì)應(yīng)[ -fs/2, 0]。橫向和縱向都需要把頻率轉(zhuǎn)換到[ -fs/2, fs/2]的區(qū)間,可以使用fftshift函數(shù)。
在數(shù)字圖像處理中,常常需要將F(u,v)的原點(diǎn)移到N*N頻域的中心,以便能清楚地分析傅里葉譜的情況,平移前空域、頻域原點(diǎn)均在左上方。而fftshift的作用就是這樣,將0頻譜移到正中心。
Y = fftshift(X) 通過(guò)將零頻分量移動(dòng)到數(shù)組中心,重新排列傅里葉變換 X。
如果 X 是向量,則 fftshift 會(huì)將 X 的左右兩半部分進(jìn)行交換。
如果 X 是矩陣,則 fftshift 會(huì)將 X 的第一象限與第三象限交換,將第二象限與第四象限交換。
如果 X 是多維數(shù)組,則 fftshift 會(huì)沿每個(gè)維度交換 X 的半空間。
a =
3 4
8 9
>> fftshift(a)
ans =
6 7
1 2
平移后的圖:
傅里葉變換的能量集中在頻率很小的圓內(nèi),當(dāng)D0增大時(shí)能量衰減很快,高頻部分雖然攜帶的能量很少,但是包含豐富的邊界和細(xì)節(jié)信息,所以當(dāng)截止頻率D0變小時(shí),雖然亮度足夠(因能量損失不大),但圖像變模糊。
3、頻域?yàn)V波
傅里葉變換可以把圖像從空域變換到頻域,而傅里葉反變換可以將圖像的頻譜變換為空域圖像。可以利用圖像空域和頻域之間的對(duì)應(yīng)關(guān)系,嘗試將空域卷積濾波變換為頻域?yàn)V波,而后再將頻域?yàn)V波處理后的圖像反變換回空間域,從而達(dá)到圖像增強(qiáng)的目的。
G=imnoise(img,'gaussian', 0, 0.05);%模擬均值為0方差為0.05的高斯噪聲,
H=fft2(im2double(G)); %FFT
H=fftshift(H); %FFT頻譜平移
T=log(abs(H)); %頻譜對(duì)數(shù)變換
subplot(2,2,1), imshow(G),title('添加高斯噪聲圖像');
subplot(2,2,2),imshow(T, []),title('頻譜圖');
使用傅里葉變換得到圖像的頻域幅度,應(yīng)用傅里葉反變換得到空域圖像.
img2 = (ifft2(ifftshift(H))); %===頻域的圖反變換到空域
img3 = im2uint8(mat2gray(img2)); %===取其灰度圖
subplot(2,2,3),imshow(img3);
title('anti-Fourier');
反變換效果如下圖。
總結(jié)
以上是生活随笔為你收集整理的java 图像傅里叶变换_图像频域滤波与傅里叶变换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WIN10bios重装系统的一些小问题
- 下一篇: opencv图像傅里叶变换