数字信号处理课设基于MATLAB的FFT算法的设计(6)

2019-03-28 22:10

唐山学院课程设计

title('原始图像');

function pushbutton2_Callback(hObject, eventdata, handles)

[filename, pathname]=uigetfile({'*.jpg;*.tif;*.bmp;*.gif' },'File Selector'); image=imread(strcat(pathname,filename)); if ndims(image)==3

image=rgb2gray(image); end

scrsz=get(0,'ScreenSize'); set(gcf,'Name','快速傅里叶变换'); axes(handles.axes2); imshow(image); title('灰度图像');

function pushbutton3_Callback(hObject, eventdata, handles)

[filename, pathname]=uigetfile({'*.jpg;*.tif;*.bmp;*.gif' },'File Selector'); image=imread(strcat(pathname,filename)); if ndims(image)==3

image=rgb2gray(image); end

scrsz=get(0,'ScreenSize'); set(gcf,'Name','快速傅里叶变换'); [r,c]=size(image); array=image; t=log2(r); t1=floor(t); t2=ceil(t); if t1~=t2

array(2^t2,c)=0; end

[r1,c1]=size(array); t=log2(c1);

25

唐山学院课程设计

t3=floor(t); t4=ceil(t); if t3~=t4

array(r1,2^t4)=0; end

[r1,c1]=size(array); n=r1/2;

data_col=zeros(1,n,'double'); %按列方向计算时用到的 for m=1:n

data_col(m)=exp(-1i*2*pi*(m-1)/r1); end n=c1/2;

data_row=zeros(1,n,'double'); %按行方向计算时用到 for m=1:n

data_row(m)=exp(-1i*2*pi*(m-1)/r1); end

array=transform_fft2(array); Ft=fftshift(array); S1=log(1+abs(Ft)); axes(handles.axes3); imshow(S1,[]);

title('自建FFT2函数结果'); function array=transform_fft2(array) array=double(array); [r1 c1]=size(array); for j=1:r1

array(j,:)=transform_fft(array(j,:)); end for j=1:c1

array(:,j)=transform_fft((array(:,j)));

26

唐山学院课程设计

end

function array1=transform_fft(array) N=length(array); n=N/2;

w=zeros(1,n,'double'); for m=1:n

w(m)=exp(-1i*2*pi*(m-1)/N); end p=log2(N);

array1=zeros(1,N,'double'); for q=1:p t1=2^(q-1); t2=2^(p-1); for k=0:(t2/t1-1) for j=0:(t1-1) if mod(q,2)==1

data1=array(k*t1+j+1); data2=array(k*t1+j+t2+1); array1(k*t1*2+j+1)=data1+data2;

array1(k*t1*2+j+t1+1)=(data1-data2)*w(k*t1+1); else

data1=array1(k*t1+j+1); data2=array1(k*t1+j+t2+1); array(k*t1*2+j+1)=data1+data2;

array(k*t1*2+j+t1+1)=(data1-data2)*w(k*t1+1); end end end end

if mod(p,2)==1

27

唐山学院课程设计

return else

array1=array; return end

function pushbutton4_Callback(hObject, eventdata, handles)

[filename, pathname]=uigetfile({'*.jpg;*.tif;*.bmp;*.gif' },'File Selector'); image=imread(strcat(pathname,filename)); if ndims(image)==3

image=rgb2gray(image); end

scrsz=get(0,'ScreenSize'); set(gcf,'Name','快速傅里叶变换'); [r,c]=size(image); array=image; t=log2(r); t1=floor(t); t2=ceil(t); if t1~=t2

array(2^t2,c)=0; end

[r1,c1]=size(array); t=log2(c1); t3=floor(t); t4=ceil(t); if t3~=t4

array(r1,2^t4)=0; end

[r1,c1]=size(array); n=r1/2;

28

唐山学院课程设计

data_col=zeros(1,n,'double'); %按列方向计算时用到的 for m=1:n

data_col(m)=exp(-1i*2*pi*(m-1)/r1); end n=c1/2;

data_row=zeros(1,n,'double'); %按行方向计算时用到 for m=1:n

data_row(m)=exp(-1i*2*pi*(m-1)/r1); end

array=transform_fft2(array); array=transform_ifft2(array); array=abs(array); array=array(1:r,1:c); axes(handles.axes4); imshow(array,[]); title('自建IFFT2结果'); return

function array=transform_fft2(array) array=double(array); [r1 c1]=size(array); for j=1:r1

array(j,:)=transform_fft(array(j,:)); end for j=1:c1

array(:,j)=transform_fft((array(:,j))); end

function array1=transform_fft(array) N=length(array); n=N/2;

w=zeros(1,n,'double');

29


数字信号处理课设基于MATLAB的FFT算法的设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:个人网站联盟服务协议书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: