就是在处理每一个像素的时候 还要考虑它周围的像素,根据周围像素和一个算法生成当前像素的值
一般是一个滑动窗口,窗口包括的像素个数一般是奇数个,比如3*3,5*5,窗口中间是要处理的像素
就是这种相乘求和的方式
关于卷积后图像会缩小:事先补0
左图是一般平均,每个像素的值加起来除以所有像素的个数,取得的数值赋值给中间像素
右边是加权求和平均,根据距离中间像素的远近设置权值,相加后除以总权值,赋值给中间像素
举个例子,用上图左边的框框来算
发现变小了这个图,而且遍历的时候只能从(2,2)开始,所以一般原图处理之前先加一圈0
优点:去噪——那个90的噪声没了
缺点:边缘模糊——灰度变得多了起来——高斯模糊
这是一个天文望远镜拍摄的图片,希望保留较大的天体去掉较小的天体
先平均滤波去噪,得到中间的图,会发现小的行星都糊了
然后图像二值化,就可以得到保留下来的较大天体
比如Order-Statistics Filters次序统计滤波器,中值滤波是最常用的次序统计滤波器
做法:像素排序,从小到大,取中间值填补当前像素
例子:
2, 取205填充
为什么能有效去除椒盐噪声?(也就是冲击噪声
一般冲击噪声都是比较极端的值,非黑即白,所以一般不会被选中作为中值,由此就可以去掉了
突出细节-增强被模糊的细节、强调边缘和噪点(值差别较大的位置),reemphasize灰度值平滑的区域
差分法:差分强调的是相邻像素的差别,绝对值越小说明差别越小,绝对值越大说明差别越大
假如这是图片上某一溜儿的灰度值,灰度级为0~7
一阶差分:右值减左值——一般用于边缘检测;因为在边缘处,差的绝对值是比较大的,检测值大的位置就是边缘,这样就可以把边缘提取出来。一阶导数通常对灰度阶跃(边缘)有更强的响应。
——在灰度阶跃或斜坡开始时一定是非零的-沿着斜坡一定是非零的
First-order derivatives generally have a stronger response to a gray-level step (edge)
二阶差分:在一阶的基础上再次右值减左值——一般用于图像锐化;因为经过两次差分之后,仍然留下的比较大的数值是特征点部分。二阶导数对细节有更强的响应
——在灰度级台阶或斜坡的开始和结束时必须为非零-在坡度恒定的斜坡上必须为零,所以在二阶差分的时候非零的只有一类,就是在变化开始和结束的时候,也就是特征点处
Second-order derivatives have a stronger response to fine detail
二阶导数与一阶对比
-对直线的响应强于对步进的响应,对点的响应强于对直线的响应
-比一阶导数更适合图像增强
-实现和扩展更简单
拉普拉斯算子(laplacian)
所以这样的话,滤波器应该长成下图这样(也叫拉普拉斯算子),周围一圈的值减去四倍中间的值。
但是要注意这里算出的结果只是差分结果(特征值也叫Mask),并不是中间像素要被赋值的结果,赋值的结果应该是原本中间像素的值再加上(减去)Mask。至于是加还是减我们来分析一下。
假如中间是一个灰度较大的值,周围灰度都很小,那么这个点就是一个特征点,需要被保存,现在经过拉普拉斯计算的值就是一个负的很大的值。因为我们是要增强特征点,所以原来的灰度大我们要让他更大,所以应该是原本灰度减差分结果。
反之,差分值会是个正的很大的值,原来灰度很小,为了增强它,我们要让他更小,因此得出的结论仍然是原本灰度减差分结果。
所以下图形式的拉普拉斯算子,应该是原灰度加上差分值。理由同上,因此我们可以得出结论中间为负数的拉普拉斯算子应该是减去,中间为正的拉普拉斯算子应该是加上,如右图公式
那么上面两种拉普拉斯算子的形式可以很好的保留横着和竖着的特征,但是斜着的效果不好,所以还有以下两种形式
要注意:经过上面的拉普拉斯矩阵处理之后我们得到的仅仅是图片特征,并不是图片,所以如果想得到完整的矩阵可以直接加上(减去)中间的像素,如下的两个
以前印刷业经常用到的锐化方法,先将一张图平滑,也就是模糊掉,然后用原图减去模糊的图得到特征图Mask,然后原图加特征图得到锐化图
当然也可以原图减去特征——淡化非锐化掩膜的作用
平滑是低通滤波,平坦的过,尖锐的被刷掉
锐化是高通滤波,尖锐的过,平坦的被刷掉
原理:
边缘是指在图像上像素灰度变化最显著的地方,边缘检测算子则利用图像边缘灰度的突变来检测边缘。Sobel算子包含两组3X3的滤波器,分别对水平和垂直方向上的边缘敏感。
让两个方向模板分别沿着X轴、Y轴与图像做卷积,方向是从上到下和从左到右。将模板的中心和图像上的某个像素重合,并将该像素周围的点与模板上的系数相乘,如(3)和(4)所示,其中G(x)和G(y)分别表示横向及纵向边缘检测的图像梯度值。
G(X) = (X3 + 2X6 + X9)-(X1 + 2X4 + X7)
G(Y) = (X1 +2X2 +X3) - (X7 + 2X8 + X9)
图像上每个像素点的横向及纵向梯度值通过如下公式结合,来计算该点梯度值G的大小:
G = √Gx2+Gy2
为了减少运算时间,提高运算效率,可以使用绝对值求和近似的方法代替开平方:
G = ¦Gx¦ + ¦Gy ¦
最后选取合适的阈值,将像素点的灰度值与阈值进行比较,若大于阈值,则改点为图像的边缘点。