文档介绍:频率域数字图像处理??(1) 语法: F=ff2(f) ?(2) 填充: F= fft(f,P,Q ) 结果函数填充至 P×Q ?(3) 傅立叶频谱: S= abs(F ) ?例:傅立叶变换?f=imread(''); ?F=ff2(f); ?S=abs(F ); ?imshow(S ,[ ]) ?转移中心?Fc=fftshift(F ); ?imshow(abs(Fc ),[ ]) ?增强显示?S2=log(1+abs(Fc)); ?imshow(S2,[ ]) ?颠倒居中?F=ifftshift(Fc ) ?傅立叶逆变换?f=ifft2(F) ? f= real(f =ifft2(F)) ? ?步骤: ?(1)使用函数 paddedsize 获取填充参数; ?PQ= paddedsize(size(f )); ?(2)得到使用填充的傅立叶变换?F=fft2(f,PQ(1),PQ(2)); ?(3)生成一个大小为 PQ(1)× PQ (2)的滤波函数; ?(4)将变换乘以滤波函数; ?G=H. *F ?(5)获得 G的傅立页变换的实部?g =real(ifft2(G)); ?(6)将左上部的矩形修剪为原始大小?g=g(1:size(f,1),1:size(f,2)); ??给定一个空间滤波器 h,生成一个频率域滤波器 H明显的方法是 H=fft2(h,PQ(1),PQ(2)) 。? PQ 值取决于待处理图像的大小。?此外工具箱中提供了 freqz2 函数。其语法如下: ? H=freqz2(h,R,C) 其中 R,C为H的行和列数。?如果 freqz2 无参数,则 H的绝对值会在 matlab 桌面上显示为三维透视图。? 空间域滤波与频率域滤波比较??(1)建立用于实现频率域滤波器的网格数组?工具: dftuv (距离计算机其他类似应用所需要的网格数组) ?使用方法: [U,V]= dftuv(m,n ); ?(2)低通滤波器? f=imread('') ? PQ= paddedsize(size(f )); ?[U,V]=dftuv(PQ(1),PQ(2)); ? D0= * PQ(2); ? F=fft(f,PQ(1),PQ(2)); ? H=exp(-(U.^2+V.^2)/(2 * D0^2)) ?g= dftfilt(f,H ); ? figure,imshow(fftshift(H ),[ ]) ? figure,imshow(log(1+abs(fftshift(F))),[ ])% 频谱显示? figure,imshow(g ),[ ]) ?(3)线框图与表面图?给定二维函数,绘制线框图的函数是 mesh 语法: mesh(H )该函数将绘制一个 x=1:M 和 y=1 :N的线框图。其中[M , N]= size(H )如果 M,N 很大,则可以用下面的语法: mesh(H(1:k:end,1:k:end)) Matlab 默认采用彩色线绘制网格线。更改用下面: colormap([0 0 0]) 黑色关闭(打开)网格和坐标轴: grid off(on ) axis off(on ) 查看点由函数 view 控制。 view(az,el ) az 和 el分别代表方位角和仰角,箭头表示正 f方向。默认值 az =- , el=30 要确定当前视图的几何结构,可键入: [ az,el ]=view; 要将查看点设置为默认值,可键入 view (3) 单击图形窗口工具条上的 Rotate 3D 按钮,然后单击并拖动图形窗口,可交互式地修改查看点。?绘制表面图: surf ?语法: surf(H ) ?将彩色转换为灰色: colormap(gray ) ?使用命令: shading interp 进行插值,可平滑小面描影并删除网格线。?若目标是绘制两个变量的解析函数,则可以使用函数 meshgrid 产生坐标值,并由这些坐标值产生 mesh 或 surf 中使用的离散矩阵。