傅里叶变换的Matlab代码

原文:http://blog.csdn.net/xiaofengsheng/article/details/5991680

傅里叶变换的Matlab代码:

img=imread('e:/4.jpg');  

subplot(2,2,1),imshow(img);  

f=rgb2gray(img);  

subplot(2,2,2),imshow(f);  

%二维傅里叶变换  

F=fft2(f);  

FS=fftshift(F);  

   

%频谱  

S=log(1+abs(FS));  

subplot(2,2,3);imshow(S,[]);  

%% 二维傅里叶逆变换  

fr=real(ifft2(ifftshift(FS)));  

ret=im2uint8(mat2gray(fr));  

subplot(2,2,4),imshow(ret);  

所参考的程序:

[i,lcmp]=imread('f:/tank.bmp');%=======读取图像 显示图像  

imshow(i,lcmp);              

ii=im2double(i);                   %=====将图像矩阵类型转换为double(图像计算很多是不能用整型的)  

i1 = fft2(ii);                         %======傅里叶变换  

i2 =fftshift(i1);                      %======将变换的频率图像四角移动到中心(原来良的部分在四角 现在移动中心,便于后面的处理)  

i3=log(abs(i2));                  %=====显示中心低频部分,加对数是为了更好的显示  

程序一  

figure,imshow(i3,[]);               

colormap(lcmp);  

imwrite(i3,lcmp,'f:/ffttank.bmp');  %===将上面i3输入到ffttank文件中  

i5 = real(ifft2(ifftshift(i2)));            %===频域的图反变换到空域 并取实部  

i6 = im2uint8(mat2gray(i5));         %===取其灰度图  

imwrite(i6,lcmp,'f:/tank2.bmp','bmp');  %===利用灰度图和原来取得颜色模板 还原图像  

figure,imshow(i6);  

title('反变换后的图像');  

程序二  

RGB = imread('autumn.tif');      %===读取图像  

I = rgb2gray(RGB);                  %==将其转为灰度  

imshow(I);  

J = dct2(I);                          %==二维dct变换,即离散余弦变换,  

figure,imshow(log(abs(J)),[])  %==显示出变换后的图像,此时能量集中在左上角  

colormap(jet(64)), colorbar    %====建立颜色模板  

figure;  

J(abs(J) < 10) = 0;               %==我理解为:因为dct变换只要保存左上角的低频小块就可以保持原图像信息,故其他部分(高频,其能量较小故值也小)就可以舍去  

K = idct2(J)/255;                        %===这不加255,将下句改成imshow(K,[]);也一样,只是显示的需要  

imshow(K);  

title('反变换后的图像');  

M=imread('dl011.jpg')         %读取MATLAB中的名为cameraman的图像     

subplot(3,3,1)   

imshow(M)                         %显示原始图像  

title('original')  

P1=imnoise(M,'gaussian',0.02)     %加入高斯躁声   

subplot(3,3,2)   

imshow(P1)                        %加入高斯躁声后显示图像   

title('gaussian noise');  

P2=imnoise(M,'salt & pepper',0.02) %加入椒盐躁声  

subplot(3,3,3)  

imshow(P2)                        %%加入椒盐躁声后显示图像    

title('salt & pepper noise');  

g=medfilt2(P1)                       %对高斯躁声中值滤波  

subplot(3,3,5)  

imshow(g)  

title('medfilter gaussian')  

h=medfilt2(P2)                       %对椒盐躁声中值滤波  

subplot(3,3,6)  

imshow(h)  

title('medfilter salt & pepper noise')  

l=[1 1 1                               %对高斯躁声算术均值滤波  

   1 1 1   

   1 1 1];   

l=l/9;                             

k=conv2(P1,l)                          

subplot(3,3,8)  

imshow(k,[])  

title('arithmeticfilter gaussian')  

                                           %对椒盐躁声算术均值滤波  

d=conv2(P2,l)                          

subplot(3,3,9)  

imshow(d,[])  

title('arithmeticfilter salt & pepper noise')  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值