增将处理目的在于突出图像中的感兴趣部分,而抑制不感兴趣的部分。
卷积积分与邻域处理
卷积的数学形式为:
表征了f与经过翻转和平移的g的重叠部分的累积。
两函数的傅里叶变换的乘积,等于他们卷积后的傅里叶变换。
邻域处理:通过平移卷积模板g[i,j],使其中心移动到像素点[x,y]处,并计算模板与像素点[x,y]邻域加权结果。
MATLAB中提供了执行二维卷积计算的函数conv2()
图像处理工具箱中还提供了基于卷积的图像滤波函数filter2()。其二者是等价的。
更常用imfilter()函数来实现,因为上面只能处理灰度图片,而且图片大小会发生改变。
g = imfilter(f, w, option1, option2, ...)
f为要滤波的图像,w为使用的模板,option1,option2为可选参数。见p90
滤波的模板可以由函数fspecial()创建。
h = fspecial(type, parameters)
图像的简单平滑
简单平滑就是对图像一定领域内的像素灰度求平均值,从而把噪声分担到邻域各像素中去。
卷积模板如图,选取9作为衰减因子
h1 = fspecial('average',[3 3]);
g1 = imfilter(i, h1, 'conv', 'replicate');
简单平滑往往以牺牲图片清晰度为代价,图像对比度下降较多。
高斯平滑
平滑线性滤波器就是利用模板对邻域内像素灰度进行加权平均,故又称均值滤波器。其衰减因子一般为所有权值的和。
高斯平滑是另一种平滑线性滤波器,模板中越靠近邻域中心的位置,权值越大,权值符合高斯分布。如下
函数实现:
h = fspecial('gaussian', 7, 2);
g = imfilter(i, h, 'conv');
高斯平滑在保留全局特征方面有很大改进,但仅仅应用高斯平滑,除噪效果往往并不·理想。
中值滤波
统计排序滤波器是通过对采样窗口内奇数个像素的灰度数值进行排序,并取出中间位置的灰度作为中心像素的灰度。
由于中值排序传感器可以直接去除噪声,因此其可以有效的消除离散型噪声点,尤其对于处理椒盐噪声效果显著。
函数实现:
I2 = medfilt2(I1, [m n])
m,n为模板大小。
J = imnoise(I, type, parameters)
这个函数可以添加噪声,可选‘gaussian’或者‘salt&pepper’。
双边滤波
双边滤波是一种非线性的滤波方法。
在高斯平滑中,权重只和像素之间的空间距离有关,而与像素点无关。双边滤波在权重中加入了像素值相似度的取值。
权重如下式:
双边滤波在过渡区域与高斯平滑差别不大,而在边缘区域信息可以很好的保留下来。
拉普拉斯锐化
与图像的平滑相反,锐化是为了强调图像的边缘和细节。因此可以采取相反的手段,提高邻域内像素的灰度差。
拉普拉斯锐化是利用拉普拉斯算子对图像进行边缘增强的一种方法。
模板如下:
其基本原理为,中心像素灰度高于邻域内平均灰度时,结果为正,像素值会增加;反之结果为负,像素值会更加减少。
matlab编码实现:
h = fspecial('unsharp',alpha)
要注意,Laplacian算子是Laplacian锐化模板的取反。在使用锐化时,就是应用unsharp滤波器的。
如果直接自行编写模板,是行不通的,因为应用unsharp算子时,还会进行与源图像的叠加,才会完成锐化。
参考资料:
双边滤波器的实现http://blog.csdn.net/abcjennifer/article/details/7616663
以上内容来自《数字图像处理:原理与实践(matlab版)》左飞著,电子工业出版社。此为学习笔记。