目录
绪论
一、空域图像增强算法
(一)直接灰度变换算法
1.对数变换
2.灰度切割
(二)直方图增强
1.直方图性质
2.直方图均衡化
(三)灰度调整
(四)空域滤波增强
1.平滑滤波
(1)线性平滑滤波
(2)非线性平滑滤波
2.锐化滤波
(1)线性锐化滤波
(2)非线性锐化滤波
二、频域增强
(一)低通滤波
1.傅立叶变换低通滤波
空域:指由像素组成的空间,空域增强算法直接作用于像素值。
特点:压缩输入图像中高灰度区的对比度,扩展低灰度值区的对比度,可以使低灰度值区域的细节更容易看清。
(1)特点:增强特定范围的对比度,突出图像中特定灰度范围的亮度。
(2)方法:(a)将感兴趣的灰度级以较大值显示出来,而另外的灰度级以较小的灰度值显示;
(b)将感兴趣的灰度级以较大值显示出来,而其他灰度级保持不变。
(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,更暗。
平滑滤波可通过低通滤波实现,目的在于模糊图像或消除图像噪声。
分为线性平滑滤波和非线性平滑滤波。
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 |
非线性平滑滤波最常用的是中值滤波器,即把邻域中图像的像素按灰度级进行排序,然后选中间值作为滤波结果。
B=medfilt2(A)
B=medfilt2(A,[m n])
B=medfilt2(A,[m n],padopt)
其中,[m n]指定滤波模板的大小,默认大小为3*3;padopt用于指定图像矩阵A的边缘的延拓形式。
中值滤波器在细节保持方面较均值滤波器有所提高。
线性高通滤波器模板:
-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('拉普拉斯滤波')
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步:
信号或图像的能量主要集中在低频和中频,而噪声常出现在高频,所以,使用低通滤波器可以达到去噪的目的。
......