资源描述:
《用MATLAB实现频域平滑滤波以及图像去噪代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用MATLAB实现频域平滑滤波以及图像去噪代码浏览次数:2981次悬赏分:50
2、解决时间:2008-11-814:21
3、提问者:unitis是数字图象处理的实验,麻烦高人给个写好的代码,希望能在重要语句后面附上一定的说明,只要能在MATLAB上运行成功,必然给分。具体的实验指导书上的要求如下:频域平滑滤波实验步骤1.打开Matlab编程环境;2.利用’imread’函数读入图像数据;3.利用’imshow’显示所读入的图像数据;4.将图像数据由’uint8’格式转换为’double’格式,并将各点数据乘以(-1)x+y以
4、便FFT变换后的结果中低频数据处于图像中央;5.用’fft2’函数对图像数据进行二维FFT变换,得到频率域图像数据;6.计算频率域图像的幅值并进行对数变换,利用’imshow’显示频率域图像;7.在频率图像上去除滤波半径以外的数据(置0);8.计算频率域图像的幅值并进行对数变换,利用’imshow’显示处理过的频域图像数据;9.用’ifft2’函数对图像数据进行二维FFT逆变换,并用’real’函数取其实部,得到处理过的空间域图像数据;10.将图像数据各点数据乘以(-1)x+y;11.利用’imshow’显示处理结果图像
5、数据;12.利用’imwrite’函数保存图像处理结果数据。图像去噪实验步骤:1.打开Matlab编程环境;2.利用’imread’函数读入包含噪声的原始图像数据;3.利用’imshow’显示所读入的图像数据;4.以3X3大小为处理掩模,编写代码实现中值滤波算法,并对原始噪声图像进行滤波处理;5.利用’imshow’显示处理结果图像数据;6.利用’imwrite’函数保存图像处理结果数据。即使不是按这些步骤来的也没关系,只要是那个功能,能实现就OK,谢谢大家最佳答案%%%%%%%%spatialfrequency(SF)
6、filteringbylowpassfilter%%%%%%%%%theSFfilterisunselectivetoorientation(doughnut-shapedintheSF%domain).[FileName,PathName,FilterIndex]=uigetfile;filename=fullfile(PathName,FileName);[Xmap]=imread(filename,fmt);%readimageL=double(X);%transformtodouble%%%%%%%%%%%%%n
7、eedtoadd(-1)x+ytoL%calculatethenumberofpointsforFFT(powerof2)fftsize=2.^ceil(log2(size(L)));%2dfftY=fft2(X,fftsize(1),fftsize(2));Y=fftshift(Y);%obtainfrequency(cycles/pixel)f0=floor([mn]/2)+1;fy=((m:-1:1)-f0(1)+1)/m;fx=((1:n)-f0(2))/n;[mfxmfy]=meshgrid(fx,fy);%c
8、alculateradiusSF=sqrt(mfx.^2+mfy.^2);%SF-bandpassandorientation-unselectivefilterfilt=SF>k0;A_filtered=filt.*A;%SFfilteringL_filtered=real(ifft2(ifftshift(A_filtered)));%IFFTL_filtered=L_filtered(1:size(L,1),1:size(L,2));%%%%%%%%%%needtoadd(-1)x+ytoL_filtered%sho
9、wfigure(1);clfreset;colormapgray;%plotimagesubplot(2,2,1);imagesc(L);colorbar;axissquare;set(gca,'TickDir','out');title('originalimage');xlabel('x');ylabel('y');imwrite(L,fullfile(FilePath,'originalimage.bmp'),'bmp');%plotamplitudeA=abs(A);A=log10(A);%spectralamp
10、litudesubplot(2,2,2);imagesc(fx,fy,A);axisxy;axissquare;set(gca,'TickDir','out');title('amplitudespectrum');xlabel('fx(cyc/pix)');ylabel('fy(cyc/pix)');imwrite