1)对于图像来说频域中高频信息对应着空域中图像灰度变化剧烈的地方,低频信息对应着图像灰度平缓的地方,低通滤波器就是过滤掉高频信息,留下低频信息,也就是图像模糊,高通滤波器就是过滤掉低频信息,留下高频信息,也就是图像边缘增强。 2)空域可以直接滤波,为什么还要在频域进行滤波呢? 首先,因为在很多情况下,在频域滤波的效率更高,就比如你从哈尔滨去深圳,坐飞机有很多手续,但是花费的总时间少啊,你坐火车省事,但是要坐两天。还有一个原因,有时候在空域滤波没有在频域滤波操作方便。 3)这种滤波的理论基础就是空域卷积等价于频域的乘积. 4)获取频域滤波器的方法有两种: (1)从空域滤波器模板卷积获得频域滤波器 (2)直接在频域构造滤波器
下面的一个例子比较空域滤波和频域滤波:
f = imread('Fig0432(a)(square_original).tif'); subplot(1,3,1);imshow(f,[]);title('原图'); [m n]=size(f) F=fft2(f); H=lpfilter('gaussian',m,n,30); G=H.*F; g = real(ifft2(G)); subplot(1,3,2);imshow(g,[]);title('未填充图'); %计算填充大小 PQ = paddedsize(size(f)); F = fft2(f,PQ(1),PQ(2)); H = lpfilter('gaussian',PQ(1),PQ(2),10); G = H .*F; g = real(ifft2(G)); g = g(1:size(f,1),1:size(f,2)); subplot(1,3,3);imshow(g,[]);title('填充图');处理之后都是相同的最大差和最小差为 3.4561e-13和 0,可见空域处理和频域处理结果是相同的。
1)公式形式: 其中 D ( u, v ) :从点 ( u, v ) 到频率矩形中心的距离 2)图示:
1)公式形式: 这里的n为阶数,阶数越大越接近于理想滤波器,阶数越小越接近高斯滤波器。 2)图示:
1)公式形式: 2)图示: 3)高斯低通滤波器示例:
f=imread('Fig0441(a)(characters_test_pattern).tif'); subplot(1,2,1);imshow(f,[]);title('原图'); PQ=paddedsize(size(f)); [U V]=dftuv(PQ(1),PQ(2)); D0=0.05*PQ(2); F = fft2 (f,PQ(1),PQ(2)); %构造高斯低通滤波器 H=exp(-(U.^2+V.^2)/(2*(D0^2))); g=dftfilt(f,H); subplot(1,2,2);imshow(g,[]);title('高斯滤波器');可以看出图像变模糊了,这就是低通。 4)原图傅里叶变换以及频域高斯低通滤波器显示:
f=imread('Fig0441(a)(characters_test_pattern).tif'); subplot(2,2,1);imshow(f,[]);title('原图'); F = fft2 (f); Fc = fftshift(F); subplot(2,2,2);imshow(log(1 + abs(Fc)),[]);title('原图幅度谱图像'); PQ=paddedsize(size(f)); [U V]=dftuv(PQ(1),PQ(2)); D0=0.05*size(f,2); H=exp(-(U.^2+V.^2)/(2.*(D0.^2))); H = fftshift(H); subplot(2,2,3);imshow(abs(H),[]);title('滤波器幅度谱图像'); [U V]=dftuv(PQ(1),PQ(2)); D0=0.05*PQ(2); F = fft2 (f,PQ(1),PQ(2)); %构造高斯低通滤波器 H=exp(-(U.^2+V.^2)/(2*(D0.^2))); g=dftfilt(f,H); subplot(2,2,4);imshow(g,[]);title('高斯滤波器滤波后');1)通用高通频域滤波器: 2)理想高通滤波器: (1)公式: (2)图示: 3)巴特沃斯高通滤波器: (1)公式: (2)图示: 4)高斯高通滤波器: (1)公式: (2)图示:
5)高频强调滤波:就是高频让它再高点 (1)公式: (2)示例:
f=imread(’Fig0419(a)(chestXray original).tif’); PQ=paddedsize(size(f)); D0=0.05*PQ(1); HBW=hpfilter(’btw’,PQ(1),PQ(2),D0,2); H=0.5+2*HBW; gbf=dftfilt(f,H); ghf=gscale(gbf); ghe=histeq(ghf,256); imshow(ghe);