目录
绪论
- 图像增强是按特定的需求突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息,带有主观色彩;
- 图像增强使处理后的图像更适合人眼视觉特性或机器分析,以便对图像实现更高级的处理和分析;
- 图像增强既希望去除噪声又希望增强边缘,但二者相矛盾,因此图像增强往往将二者折中,找到一个好的代价函数达到增强的目的
- 分为空域增强和频域增强两大类。
一、空域图像增强算法
空域:指由像素组成的空间,空域增强算法直接作用于像素值。
(一)直接灰度变换算法
1.对数变换
特点:压缩输入图像中高灰度区的对比度,扩展低灰度值区的对比度,可以使低灰度值区域的细节更容易看清。
2.灰度切割
(1)特点:增强特定范围的对比度,突出图像中特定灰度范围的亮度。
(2)方法:(a)将感兴趣的灰度级以较大值显示出来,而另外的灰度级以较小的灰度值显示;
(b)将感兴趣的灰度级以较大值显示出来,而其他灰度级保持不变。
(二)直方图增强
1.直方图性质
- 直方图反映了图像的整体灰度分布情况,直观上,若一幅图像其像素占有全部可能的灰度级且分布均匀,则该图像具有高对比度(最高灰度级/最低灰度级)和多变的灰度色调;
- 直方图不包含位置信息,只是反映灰度的数量,与灰度的位置无关,不同的图像可能具有相近或完全相同的直方图分布;
- 直方图具有可叠加性,一幅图像的灰度直方图等于其各个部分直方图的和;
- 直方图具有统计特性。
2.直方图均衡化
(1)优势
能够使处理后的图像的概率密度函数近似服从均匀分布,其结果扩张了像素值的动态范围;
(2)缺点
不能抑制噪声
(三)灰度调整
J=imadjust(I,[low_in high_in],[low_out high_out],gamma);
其中,[low_in,high_in]指定了输入图像需要映射的灰度范围,[low_out,high_out]指定了输出图像的灰度范围。
通过gamma参数可以选择映射方式,gamma=1时为线性映射,gamma<1,更亮;gamma>1,更暗。
(四)空域滤波增强
1.平滑滤波
平滑滤波可通过低通滤波实现,目的在于模糊图像或消除图像噪声。
分为线性平滑滤波和非线性平滑滤波。
(1)线性平滑滤波
a.均值滤波
b.高斯滤波 :本质上属于加权均值滤波,像素点的权值由该点到中心像素距离进行高斯加权得到。
MATLAB使用fspecial函数生成滤波模板
h=fspecial(type)
h=fspecial(type, parameters)
其中,type用于指定滤波器类型,parameters是与滤波器有关的具体函数。
type | parameters | 说明 |
average | hsize | 矩形均值滤波器,hsize格式为[m,n],用于指定矩形的大小 |
disk | radius | 生成半径为radius的圆形滤波器 |
gaussian | hsize,sigma | 标准偏差为sigma、大小为hize的高斯低通滤波器 |
laplacian | alpha | 系数为alpha的二维拉普拉斯操作 |
log | hsize,sigma | 标准偏差为sigma、大小为hsize的高斯滤波旋转对称拉普拉斯算子 |
motion | len,theta | 按角度theta移动len个像素的运动滤波器 |
prewitt | 无 | 近似计算梯度算子 |
sobel | 无 | 考虑了像素点间空间位置的近似计算梯度算子 |
e.g. 对同一幅图像采用大小不同的均值滤波器,查看滤波效果。
I=imread('eight.tif');
subplot(221)
imshow(I);title('原图')
subplot(222)
J1=filter2(fspecial('average',3),I);
imshow(uint8(J1));title('3X3');
subplot(223)
J2=filter2(fspecial('average',5),I);
imshow(uint8(J2));title('5X5');
subplot(224)
J3=filter2(fspecial('average',7),I);
imshow(uint8(J3));title('7X7');
均值滤波器虽然考虑了邻域点的作用,但未考虑空间位置的影响。实际上,邻域内离某点越近的点,对该点的影响越大,可以采用加权均值滤波模板,例如将模板的加权系数通过对二维高斯函数采样得到,相应的滤波器称为高斯滤波器。
1 | 2 | 1 |
2 | 4 | 2 |
1 | 2 | 1 |
(2)非线性平滑滤波
非线性平滑滤波最常用的是中值滤波器,即把邻域中图像的像素按灰度级进行排序,然后选中间值作为滤波结果。
B=medfilt2(A)
B=medfilt2(A,[m n])
B=medfilt2(A,[m n],padopt)
其中,[m n]指定滤波模板的大小,默认大小为3*3;padopt用于指定图像矩阵A的边缘的延拓形式。
中值滤波器在细节保持方面较均值滤波器有所提高。
2.锐化滤波
(1)线性锐化滤波
线性高通滤波器模板:
-1 | -1 | -1 |
-1 | 8 | -1 |
-1 | 8 | -1 |
拉普拉斯算子:中心系数大于0,其余系数小于0,所有系数之和为0。当拉普拉斯模板在图像中滑动时,对灰度变化较小或没有变化的区域,其滤波输出较小或为0。
e.g. 使用拉普拉斯算子对一幅图像高通滤波。
I=imread('blobs.png');
h=fspecial('laplacian');
J=filter2(h,I);
subplot(121)
imshow(I);title('原图');
subplot(122)
imshow(J);title('拉普拉斯滤波')
(2)非线性锐化滤波
- 均值滤波器可以模糊图像,其在计算过程中进行求和,在数学上对应积分;
- 非线性锐化滤波器在数学上通过微分实现,其中梯度算子是最常用的微分算子,刻画了图像沿某个方向上的灰度变化率。
- 常用的空域非线性锐化滤波算子有sobel算子、prewitt算子、log算子(拉普拉斯高斯算子),这些算子的定义主要是基于微分的基本概念。
e.g.分别使用不同的非线性锐化滤波器对图像进行滤波
I=imread('blobs.png');
h1=fspecial('sobel');
J1=filter2(h1,I);
h2=fspecial('prewitt');
J2=filter2(h2,I);
h3=fspecial('log');
J3=filter2(h3,I);
subplot(221)
imshow(I);title('原图');
subplot(222)
imshow(J1);title('sobel算子')
subplot(223)
imshow(J2);title('prewitt算子')
subplot(224)
imshow(J3);title('log算子');
默认的sobel算子和prewitt算子均为求解水平细节,即在竖直方向上进行微分计算,可通过将这两个算子的模板转置来实现竖直细节的提取。
h2_2=h2';
J2_2=filter2(h2_2,I);
figure
subplot(131)
imshow(J2);title('水平细节')
subplot(132);
imshow(J2_2);title('竖直细节')
subplot(133);
imshow(or(J2,J2_2),[]);title('全细节')
二、频域增强
频域增强是将图像先变换到其他空间,然后利用该空间的特点对变换域的数据进行处理,最后再转换为原来的图像空间中。
频域增强主要分为3步:
- 选择合适的变换方法,将图像变换到频域空间;
- 依据处理目标,在频域空间对变换系数进行处理;
- 将处理后的结果进行反变换,得到增强后的图像。
(一)低通滤波
信号或图像的能量主要集中在低频和中频,而噪声常出现在高频,所以,使用低通滤波器可以达到去噪的目的。
1.傅立叶变换低通滤波
......