当前位置:
文档之家› laplace(拉普拉斯)锐化matlab程序
laplace(拉普拉斯)锐化matlab程序
(1) 计算并画出此图像的中心化频率谱。 (2) 分别用低通滤波和高通滤波对此图像进行频域处理。 (2) 用拉普拉斯算子对此图像锐化。
1. matlab 代码如下: clear; clc; Data=imread('C:\Users\Administrator\Desktop\ex.JPG'); DataGray=rgb2gray(Data); figure(1),imshow(Data); title('原始图像'); %**************计算并画出此图像的中心化频率谱************* Data1=double(DataGray); FFT2=fft2(Data1); FFTcenter=fftshift(FFT2);%频谱中心化 FFT2abs=abs(FFT2); FFTresult=256*log2(FFT2abs/max(max(FFT2abs))+1); figure(2),subplot(1,2,1); imshow(FFTresult),title('原图频谱'); FFTc_abs=abs(FFTcenter); FFTc_result=256*log2(FFTc_abs/max(max(FFTc_abs))+1); subplot(1,2,2); imshow(FFTc_result),title('中心化频谱'); %*******分别用低通滤波和高通滤波对此图像进行频域处理**** [m,n]=size(FFTcenter); x_center=round(m/2); y_center=round(n/2); d=10;%半径取 10 LF=FFTcenter; HF=FFTcenter; %**************低通滤波器************* fori=1:m; for j=1:n distance=sqrt((i-x_center)^2+(j-y_center)^2); if distance<=d flag=1;
可以从锐化增强后的图像中看出原图像中很多模糊的细节。
于是,当 K 逐渐增大时,这个滤波器将逐渐接近于陷波滤波器,并且去掉 F(0,0)点,将会产 生只有平均值为 0 的图像,所以,存在一个 K 值,使得经过 K 次高通滤波之后就会产生一副 像素不变的图像。 (b)决定 K 的取值可有下式可以得出:
因为 u,v 都是整数,对于上式第二个条件只需要对于所以的 u,v 不全为 0,我们希望滤波 器对于所有的值都是能 1,于是要求指数部分对于所以 u,v 不全为 0 的地方滤波效果接近 于 0,也就是说此时的 K 就是我们所要的最小值������������������������ 。 4.22 答: (a) 用 0 延拓图像即用 0 值填充来增加图像像素大小, 但并不是其灰度容量拓展, 因此, 填充图像的平均灰度值就会低于原来的图像。也就是说,填充之后的 F(0,0)将会比原来的图 像的 F(0,0)(F(0,0)代表相应图像的平均值)小,因此,我们看到的右图中的 F(0,0)更低,同 理其他地方也会比原来对应的地方灰度值小, 并且覆盖一个很窄范围的值, 所以右图中的整 体对比度比原图低; (b)用 0 值填充的图像在源图像边界处引入了较大差异的不连续的值,这个过程突出了水 平和垂直边界的地方, 即图像在这些地方具有较大的像素落差, 这些比较突出的变化导致了 横轴和纵轴方向上的信号显著增加。
于是,传递函数如下:
(b)为了证明上面的传递函数是一个高通滤波器,我们可以参考如下类似的滤波器的传递 函数:
方便起见,我们考虑一个变量。当 u 从 0 增加到 M,H(u,v)从最大值 2j(复数)然后减少, 当 u=M/2 时(转移方程的中心)最小;当 u 继续增加,H(u,v)继续增加,且当 u=M 时,又 取得最大值。同样,考虑两个变量也得到类似的结果。这种特性就是我们的高通滤波器,于 是我们就可以得到我们推导出的滤波器 H(u,v)是高通滤波器。 4.16 答:(a)解决这个问题的关键在于是将经过 K 次高通滤波后看作是 1 减去 K 次低通滤波器之 后的结果,即:
第二次作业
201321050326 程小龙 习题: 4.8 答:参考教材 4.4-1 式,高通滤波器可以看成是 1 减去相应低通滤波器,从低通滤波器的性 质可以看出, 在空间域上低通滤波器在原点是存在一个尖峰, 且大于 0, 1 是看成直流分量, 因此,傅里叶逆变换之后的高通滤波器在空间域上原点就会出现负的尖峰。 4.15 答: (a)该问题给出了在 x 方向上的差分,同理给出 y 方向的差分,于是滤波方程在空间域 上有如下表示: 从教材 4.6-2 式可以得到:
else flag=0; end LF(i,j)=flag*FFTcenter(i,j); end end %逆变换转换成对应图像 LF=uint8(real(ifft2(ifftshift(LF)))); figure(3),subplot(1,2,1);imshow(LF); title('低通滤波后图像'); %**************高通滤波器************* fori=1:m; for j=1:n distance=sqrt((i-x_center)^2+(j-y_center)^2); if distance>d flag=1; else flag=0; end HF(i,j)=flag*FFTcenter(i,j); end end HF=uint8(real(ifft2(ifftshift(HF)))); subplot(1,2,2),imshow(HF);title('高通滤波后图像'); %*****************用拉普拉斯算子对此图像锐化************* Laplace=[0 -1 0;-1 4 -1; 0 -1 0 ]; LaplaceImage=conv2(Data1,Laplace,'same'); figure(4),subplot(1,2,1); imshow(uint8(LaplaceImage)); title('Laplace 图像'); DataLap=imadd(Data1,immultiply(LaplaceImage,1));%原图像与拉普拉斯图像叠加 subplot(1,2,2),imshow(uint8(DataLap)); title('锐化增强后的图像'); 2. 处理结果如下: