实验目的:
1.熟悉Matlab处理图像的基本原理,并熟练地运用进行一些基本的图像操作;
2.能够用Matlab来进行亮度变换,直方图处理以及一些简单的空间滤波;
实验内容:
去噪,灰度变换,直方图处理,空域和频域平滑锐化,同态滤波;结果分析:
1.直方图处理:
⑴显示原图直方图以及原图:
代码:
>> imread('');
>> imshow(f);
>> imhist(f);
原图以及原图直方图为:
⑵直方图均衡化:
代码:
>> f=imread('');
>> n=imnoise(f);
>> imwrite(n,'');
>> [thr,sorh,keepapp] = ddencmp('den','wv',im2double(n));
>> r=wdencmp('gbl',im2double(Noise),'sym2',2,thr,sorh,keepapp); >> r=wdencmp('gbl',im2double(n),'sym2',2,thr,sorh,keepapp);
>> imwrite(r,'');
>> imshow(f);
现在的图片以及直方图为:
结论:
直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。
这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。
通过这种方法,亮度可以更好地在直方图上分布。
这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效
地扩展常用的亮度来实现这种功能。
2.灰度变换:
代码:
>> f=imread('');
>> n=imnoise(f);
>> imwrite(n,'');
>> [thr,sorh,keepapp] = ddencmp('den','wv',im2double(n));
>> r=wdencmp('gbl',im2double(Noise),'sym2',2,thr,sorh,keepapp); >> r=wdencmp('gbl',im2double(n),'sym2',2,thr,sorh,keepapp); >> imwrite(r,'');
>> imshow(f);
变换的图像(f为图a,a1为图b,a2为图c,a3为图d):
(图a)(图b)
(图c)
(图d)
结论:
一些图片的像素过于集中于中间灰度部分,而其他部分的像素数很少,可以压缩像素数小的部分,扩展像素数集中的部分。
如果只想了解图像的某一部分,那么可以压缩其它部分,对关注的部分进行变换。
3.去噪:
代码:
>> f=imread('');
>> n=imnoise(f);
>> imwrite(n,'');
>> [thr,sorh,keepapp] = ddencmp('den','wv',im2double(n));
>> r=wdencmp('gbl',im2double(Noise),'sym2',2,thr,sorh,keepapp); >> r=wdencmp('gbl',im2double(n),'sym2',2,thr,sorh,keepapp); >> imwrite(r,'');
>> imshow(f);
>> figure,imshow(n);
>> figure,imshow(r);
图像(依次为原图,加噪后的图片以及复原的图片):
结论:
常用的软阈值函数,是为了解决硬阈值函数“一刀切”导致的影响(模小于3*sigma的小波系数全部切除,大于3*sigma全部保留,势必会在小波域产生突变,导致去噪后结果产生局部的抖动,类似于傅立叶变换中频域的阶跃会在时域产生拖尾)。
软阈值函数将模小于3*sigma的小波系数全部置零,而将模大于3*sigma的做一个比较特殊的处理,大于3*sigma的小波系数统一减去
3*sigma,小于-3*sigma的小波系数统一加3*sigma。
经过软阈值函数的作用,小波系数在小波域就比较光滑了,因此用软阈值去噪得到的图象看起来很平滑,类似于冬天通过窗户看外面一样,像有层雾罩在图像上似的。
4.空域和频域平滑锐化
代码:
⑴低通滤波器:
>> f=imread(‘’);
>> PQ=paddedsize(size(f));
>> [U, V]=dfuvc(PQ(1),PQ(2));
>> D0=*PQ(2);
>> F=fft2(f,PQ(1),PQ(2));
>> H=exp(-(U.^2+V.^2)/(2*(D0*2)));
>> g=dftfilt(f,H);
(2)高通滤波器:
>> f=imread(‘’);
>> PQ=paddedsize(size(f));
>> D0=*PQ(1);
>> H=hptilter(‘gausian’,PQ(1),PQ(2),D0);
>> g=dftfilt(f,H);
>> figure,imshow(g,[ ]);
结论:
平滑滤波是要滤除不规则的噪声或干扰的影响。
从频域的角度看,不规则的噪声具有较高的频率,可用具有低通能力的频域滤波器来滤除。
所以空域的平滑滤波对应频域的低通滤波。
锐化滤波是要增强边缘和轮廓处的强度。
边缘和轮廓处都具有较高的频率,可用具有高通能力的频域滤波器来增强。
所以,空域的锐化滤波对应频域的高通滤波。
5.同态滤波:
代码:
>>I=imread('');
>>subplot(121),imshow(I);
>>I=double(rgb2gray(I));
>>[M,N]=size(I); rL=;
>>rH=;
>>c=2;
>>d0=10;
>>I1=log(I+1);
>>FI=fft2(I1);
>>n1=floor(M/2);
>>n2=floor(N/2);
>>for i=1:M;
>>for j=1:N;
>>D(i,j)=((i-n1).^2+(j-n2).^2);
>>H(i,j)=(rH-rL).*(exp(c*(-D(i,j)./(d0^2))))+rL;
>>end;
>>end;
>>I2=ifft2(H.*FI);
>>I3=real(exp(I2));
>>subplot(122),imshow(I3,[]);
结论:
同态滤波是把频率过滤和灰度变换结合起来的一种图像处理方法,它依靠图像的照度/ 反射率模型作为频域处理的基础,利用压缩亮度范围和增强对比度来改善图像的质量。
使用这种方法可以使图像处理符合人眼对于亮度响应的非线性特性,避免了直接对图像进行傅立叶变换处理的失真。
同态滤波的基本原理是:将像元灰度值看作是照度和反射率两个组份的产物。
由于照度相对变化很小,可以看作是图像的低频成份,而反射率则是高频成份。
通过分别处理照度和反射率对像元灰度值的影响,达到揭示阴影区细节特征的目的。
同态滤波处理的基本流程如下:
S(x,y)---->Log---->DFT---->频域滤波---->IDFT---->Exp---->T(x,y)
其中S(x,y)表示原始图像;T(x,y)表示处理后的图像;Log 代表对数运算;DFT 代表傅立叶变换(实际操作中运用快速傅立叶变换FFT);IDFT 代表傅立叶逆变换(实际操作中运用快速傅立叶逆变换IFFT);Exp 代表指数运算。