参考自:http://blog.csdn.net/yangtrees/article/details/8740933 等
1.图像卷积(模板)
(1).使用模板处理图像相关概念:
模板:矩阵方块,其数学含义是一种卷积运算。
卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相 乘,所有乘积之和作为区域中心像素的新值。
卷积核:卷积时使用到的权用一个矩阵表示,该矩阵是一个权矩阵。
卷积示例:
3 * 3 的像素区域R与卷积核G的卷积运算:
R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9
(2).使用模板处理图像的问题(越界问题):
边界问题:当处理图像边界像素时,卷积核与图像使用区域不能匹配,卷积核的中心与边界像素点对应,卷积运算将出现问题。
处理办法:
A. 忽略边界像素,即处理后的图像将丢掉这些像素。
B. 保留原边界像素,即copy边界像素到处理后的图像。
(3).常用模板:
我们来看一下一维卷积的概念.
连续空间的卷积定义: f(x)与g(x)的卷积是 f(t-x)g(x) 在t从负无穷到正无穷的积分值. t-x要在f(x)定义域内,所以看上去很大的积分实际上还是在一定范围的. 实际的过程就是f(x)
先做一个Y轴的反转,然后再沿X轴平移t就是f(t-x),然后再把g(x)拿来,两者乘积的值再积分.想象一下如果g(x)或者f(x)是个单位的阶越函数. 那么就是f(t-x)与g(x)相交部分的面积.这就是卷积了.
把积分符号换成求和就是离散空间的卷积定义了.那么在图像中卷积卷积地是什么意思呢,就是图像就是图像f(x),模板是g(x),然后将模版g(x)在模版中移动,每到一个位置,就把f(x)与g(x)的定义域相交的元素卷积定义上是线性系统分析经常用到的.线性系统就是一个系统的输入和输出的关系是线性关系.就是说整个系统可以分解成N多的无关独立变化,整个系统就是这些变化的累加. 如
x1->y1, x2->y2; 那么A*x1 + B*x2 -> A*y1 + B*y2 这就是线性系统. 表示一个线性系统可以用积分的形式
就是f(t,x)表示的是A B之类的线性系数.看上去很像卷积呀,对,如果f(t,x) = F(t-x) 不就是了吗.从f(t,x)变成F(t-x)实际上是说明f(t,x)是个线性移不变,就是说变量的差不变化的时候, 那么函数的值不变化. 实际上说明一个事情就是说线性移不变系统的输出可以通过输入和表示系统线性特征的函数卷积得到.
卷积示例:
A =
1 3 3 5 2
2 4 1 1 3
3 5 5 2 4
4 4 2 3 1
5 6 3 4 2
G =
1 2 3
4 5 6
7 8 9
首先对卷积模板G旋转180°。matlab代码:rot90(G,2) 即 将a逆时针转2次90度。
依次对full,same,value进行解释:
K>> B=conv2(A,G,'full'); OR B=conv2(A,G);
B =
1 5 12 20 21 19 6
6 25 48 68 59 49 21
18 66 114 146 127 96 48
30 91 142 133 107 76 54
42 111 184 173 139 89 48
48 109 154 140 95 69 21
35 82 114 106 73 52 18
K>> B=conv2(A,G,'same')
B =
25 48 68 59 49
66 114 146 127 96
91 142 133 107 76
111 184 173 139 89
109 154 140 95 69
K>> B=conv2(A,G,'valid')
B =
114 146 127
142 133 107
184 173 139
2.图像滤波
<2>非线性滤波:非线性滤波器的原始数据与滤波结果是一种逻辑关系,即用逻辑运算实现,如最大值滤波器、最小值滤波器、中值滤波器等,是通过比较一定邻域内的灰度值大小来实现的,没有固定的模板,因而也就没有特定的转移函数(因为没有模板作傅里叶变换),另外,膨胀和腐蚀也是通过最大值、最小值滤波器实现的。五种常见的非线性滤波算子,这五种滤波算子对不同的图像都会有不同的作用,最常用的是中值滤波,因为它的效果最好且信息损失的最少。
(1).极大值滤波
极大值滤波就是选取像素点领域的最大值作为改点的像素值,有效率去了灰度值比较低的噪声,也可作为形态学里面的膨胀操作。
极大值滤波可以表示为: Maximum(A)=max[A(x+i,y+j)] (x,y)属于M
注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。
(2).极小值滤波(与极大值滤波相反)
(3).中点滤波
中点滤波常用于去除图像中的短尾噪声,例如高斯噪声和均匀分布噪声。终点滤波器的输出时给定窗口内灰度的极大值和极小值的平均值;
Midpoint(A)=(max[A(x+i,y+j)]+min[A(x+i,y+j)])/2 (x,y)属于M
注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。
(4).中值滤波
中值滤波可以消除图像中的长尾噪声,例如负指数噪声和椒盐噪声。在消除噪声时,中值滤波对图像噪声的模糊极小(受模板大小的影响),中值滤波实质上是用模板内所包括像素灰度的中值来取代模板中心像素的灰度。中值滤波在消除图像内椒盐噪声和保持图像的空域细节方面,其性能优于均值滤波。
Median(A)=Median[A(x+i,y+j)] (x,y)属于M
注:(x+i,y+j)是定义在图像上的坐标,(i,j)是定义在模板M上的坐标。M即为运算的模板。
(5).加权中值滤波(中值滤波的改进)
加权中值滤波是在中值滤波的基础上加以改进,其性能在一定程度上优于中值滤波。
下面是自己在算法上的改进:以例子说明
若说选模板的大小为5,那么这个模板就唯一确定为:
1 1 5 1 1
1 1 5 1 1
5 5 5 5 5
1 1 5 1 1
1 1 5 1 1
上图中的数字表式改点像素在序列中出现的次数。然后根据模板平滑图像。实验证明该方法好于传统中值滤波。当然还有其他方法;
附:噪声
(高斯噪声:是指噪声服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少,且这个规律服从高斯分布。高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除。
椒盐噪声:类似把椒盐撒在图像上,因此得名,是一种在图像上出现很多白点或黑点的噪声,如电视里的雪花噪声等。椒盐噪声可以认为是一种逻辑噪声,用线性滤波器滤除的结果不好,一般采用中值滤波器滤波可以得到较好的结果。)
图像滤波相对比较容易理解,在这里就不一一作图说明了。
关系:
图像卷积:一种实现手段,不管是滤波还是别的什么,可以说是数学在图像处理的一种延伸。
图像滤波:一种图像处理方法,来实现不同目的。
图像平滑:实际上就是低通滤波。
尾话:转自http://blog.csdn.net/haoji007/article/details/53911940
图像处理中滤波(filtering)与卷积(convolution)的区别
图像处理中滤波和卷积是常用到的操作。很多人认为卷积就是滤波,两者并无区别,其实不然。两者在原理上相似,但是在实现的细节上存在一些区别。这篇博文主要叙述这两者之间的区别。
简单来说,滤波操作就是图像对应像素与掩膜(mask)的乘积之和。
比如有一张图片和一个掩膜,如下图:
其中G(i,j)是图片中(i,j)位置像素经过滤波后的像素值。
当掩膜中心m5位置移动到图像(i,j)像素位置时,图像(i,j)位置像素称为锚点。
滤波步骤:
- 对原始图像的边缘进行某种方式的填充(一般为0填充)。
- 将掩膜划过整幅图像,计算图像中每个像素点的滤波结果。
2、卷积
- 180度翻转卷积核。
- 不做边界填充,直接对图像进行相应位置乘积和。
自我总结一下:
一、滤波其实也是对图像进行平滑操作,滤波后的图像与原图像大小相同。【适当的话,进行边界扩充,得到滤波后的效果会比没有进行边界扩充得到的效果好一些】。
二、卷积操作首先是将卷积模板进行旋转180度,之后进行卷积操作。其卷积后的结果与原图像大小不一致,如上文我自己整理的那样。