1.前言:
图像增强问题的基本目标是对图像进行一定的处理,使其结果比原图更适合用于特定的应用领域。
在图像增强领域,图像增强问题主要通过时域和频域两种方法进行处理。时域方法通过直接在图像上作用算子来解决。频域上通过修改傅里叶变换系数来解决。这两种方法的优劣还是十分明显的,时域方法速度快但是会失去很多点点间的关联性信息;频域方法可以很详细的分离出点点间的相关信息,但是比较耗时,需要做傅里叶正反变换,计算量很大。
2.小波分析的优势
小波分析是对时域和频域的权衡结果。傅里叶分析在所有点的分辨率都是原始图像的尺度,对于问题本身的要求,我们可能并不需要这么大的分辨率,而单纯的进行时域分析又显得十分的粗糙。小波的灵活性在于我们可以选择任意的分解层数,尽量减少计算量。
小波变换将一份图像分解成大小、位置和方向都不同的分量。在做逆变换之前可以改变小波变换域中某些系数的大小,从而实现图像增强的目标。
3.低频系数增强,高频系数衰减
- <span style="font-size:18px;">clear all;
- load sinsin
- subplot(121);image(X); %画出原始图像
- colormap(map);
- xlabel('(a)原始图像');
- axis square
- %下面进行图像的增强处理
- %用小波函数sym4对X进行2层小波分解
- [c,s]=wavedec2(X,2,'sym4');
- sizec=size(c);
- %对分解系数进行处理以突出轮廓部分,弱化细节部分
- for i=1:sizec(2)
- if(c(i)>350)
- c(i)=2*c(i);
- else
- c(i)=0.5*c(i);
- end
- end
- xx=waverec2(c,s,'sym4'); %下面对处理后的系数进行重构
- %画出重构后的图像
- subplot(122);image(xx);
- colormap(map);
- xlabel('(b)增强图像');
- axis square</span><span style="font-size:24px;">
- </span>
4.钝化处理
所谓的钝化操作,就是保留图像的低频部分。在时域中,我们可以直接进行平滑滤波;在频域中,直接提取低频成分就好。
- clear all;
- load chess % 读入chess信号
- % 分别保存用DCT方法和小波方法的变换系数
- blur1=X;
- blur2=X;
- % 对原图像做二维离散余弦变换
- subplot(221);image(wcodemat(X,192));
- colormap(gray(256));xlabel('(a)原始图像');
- subplot(222);image(wcodemat(X,192));
- colormap(gray(256));xlabel('(b)原始图像');
- ff1=dct2(X);
- % 对变换结果在频域做BUTTERWORTH滤波
- for i=1:256
- for j=1:256
- ff1(i,j)=ff1(i,j)/(1+((i*j+j*j)/8192)^2);
- end
- end
- % 重建变换后的图像
- blur1=idct2(ff1);
- % 对图像做2层的二维小波分解
- [c,l]=wavedec2(X,2,'db3');
- csize=size(c);
- % 对低频系数进行放大处理,并抑制高频系数
- for i=1:csize(2);
- if(c(i)>300)
- c(i)=c(i)*2;
- else
- c(i)=c(i)/2;
- end
- end
- % 通过处理后的小波系数重建图像
- blur2=waverec2(c,l,'db3');
- % 显示三幅图像
- subplot(223);image(wcodemat(blur1,192));
- colormap(gray(256));xlabel('(c)采用DCT方法钝化图像');
- subplot(224);image(wcodemat(blur2,192));
- colormap(gray(256));xlabel('(d)采用小波方法钝化图像');
运行结果:
采用DCT在频域做滤波的方法得到的钝化结果更为平滑,这是因为DCT的方法分辨率很高。而小波方法在很多地方有不连续现象,因为我们对系数做放大或抑制在与之两侧有间断,而且分解层数很低,没有完全分离出频域的信息。
5.锐化处理
锐化的目标与钝化刚好相反,是为了突出高频信息,抑制低频信息。
- clear all;
- load chess; % 读入chess信号
- % 分别保存用DCT方法和小波方法的变换系数
- blur1=X;
- blur2=X;
- subplot(221);image(wcodemat(X,192));
- colormap(gray(256));xlabel('(a)原始图像');
- subplot(222);image(wcodemat(X,192));
- colormap(gray(256));xlabel('(b)原始图像');
- % 对原图像做二维离散余弦变换
- ff1=dct2(X);
- % 对变换结果在频域做BUTTERWORTH滤波
- for i=1:256
- for j=1:256
- ff1(i,j)=ff1(i,j)/(1+(32768/(i*i+j*j))^2);
- end
- end
- % 重建变换后的图像
- blur1=idct2(ff1);
- % 对图像做2层的二维小波分解
- [c,l]=wavedec2(X,2,'db3');
- csize=size(c);
- % 对低频系数进行放大处理,并抑制高频系数
- for i=1:csize(2);
- if(abs(c(i))<300)
- c(i)=c(i)*2;
- else
- c(i)=c(i)/2;
- end
- end
- % 通过处理后的小波系数重建图像
- blur2=waverec2(c,l,'db3');
- subplot(223);image(wcodemat(blur1,192));
- colormap(gray(256));xlabel('(c)采用DCT方法锐化图像');
- subplot(224);image(wcodemat(blur2,192));
- colormap(gray(256));xlabel('(d)采用小波方法锐化图像');
图像处理结果: