/*今天师弟来问我,CV的书里到处都是卷积,滤波,平滑……这些概念到底是什么意思,有什么区别和联系,瞬间晕菜了,学了这么久CV,卷积,滤波,平滑……这些概念每天都念叨好几遍,可是心里也就只明白个大概的意思,赶紧google之~ 发现自己以前了解的真的很不全面,在此做一些总结,以后对这种基本概念要深刻学习了~*/
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)是个线性移不变,就是说变量的差不变化的时候, 那么函数的值不变化. 实际上说明一个事情就是说线性移不变系统的输出可以通过输入和表示系统线性特征的函数卷积得到.
2.图像滤波
<span style="font-family: 'Microsoft YaHei';"> <2>非线性滤波:非线性滤波器的原始数据与滤波结果是一种逻辑关系,即用逻辑运算实现,如最大值滤波器、最小值滤波器、中值滤波器等,是通过比较一定邻域内的灰度值大小来实现的,没有固定的模板,因而也就没有特定的转移函数(因为没有模板作傅里叶变换),另外,膨胀和腐蚀也是通过最大值、最小值滤波器实现的。</span><span style="font-family: 'Microsoft YaHei'; font-size: 10.5pt; line-height: 19.0909px; background-color: rgb(250, 247, 239);">五种常见的非线性滤波算子,这五种滤波算子对不同的图像都会有不同的作用,最常用的是中值滤波,因为它的效果最好且信息损失的最少。</span>
<p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> (1).<span style="margin: 0px; padding: 0px;">极大值滤波</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> 极大值滤波就是选取像素点领域的最大值作为改点的像素值,有效率去了灰度值比较低的噪声,也可作为形态学里面的膨胀操作。</span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> 极大值滤波可以表示为: <span style="margin: 0px; padding: 0px;">Maximum(A)=max[A(x+i,y+j)] (x,y)</span><span style="margin: 0px; padding: 0px;">属于</span><span style="margin: 0px; padding: 0px;">M</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> 注:(<span style="margin: 0px; padding: 0px;">x+i,y+j)</span><span style="margin: 0px; padding: 0px;">是定义在图像上的坐标,</span><span style="margin: 0px; padding: 0px;">(i,j)</span><span style="margin: 0px; padding: 0px;">是定义在模板</span><span style="margin: 0px; padding: 0px;">M</span><span style="margin: 0px; padding: 0px;">上的坐标。</span><span style="margin: 0px; padding: 0px;">M</span><span style="margin: 0px; padding: 0px;">即为运算的模板。</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> (2).<span style="margin: 0px; padding: 0px;">极小值滤波(与极大值滤波相反)</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> (3).<span style="margin: 0px; padding: 0px;">中点滤波</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> 中点滤波常用于去除图像中的短尾噪声,例如高斯噪声和均匀分布噪声。终点滤波器的输出时给定窗口内灰度的极大值和极小值的平均值;</span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> Midpoint(A)=(max[A(x+i,y+j)]+min[A(x+i,y+j)])/2 (x,y)<span style="margin: 0px; padding: 0px;">属于</span><span style="margin: 0px; padding: 0px;">M</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">注:(<span style="margin: 0px; padding: 0px;">x+i,y+j)</span><span style="margin: 0px; padding: 0px;">是定义在图像上的坐标,</span><span style="margin: 0px; padding: 0px;">(i,j)</span><span style="margin: 0px; padding: 0px;">是定义在模板</span><span style="margin: 0px; padding: 0px;">M</span><span style="margin: 0px; padding: 0px;">上的坐标。</span><span style="margin: 0px; padding: 0px;">M</span><span style="margin: 0px; padding: 0px;">即为运算的模板。</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> (4).<span style="margin: 0px; padding: 0px;">中值滤波</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> 中值滤波可以消除图像中的长尾噪声,例如负指数噪声和椒盐噪声。在消除噪声时,中值滤波对图像噪声的模糊极小(受模板大小的影响),中值滤波实质上是用模板内所包括像素灰度的中值来取代模板中心像素的灰度。中值滤波在消除图像内椒盐噪声和保持图像的空域细节方面,其性能优于均值滤波。</span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">Median(A)=Median[A(x+i,y+j)] (x,y)<span style="margin: 0px; padding: 0px;">属于</span><span style="margin: 0px; padding: 0px;">M </span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> 注:(<span style="margin: 0px; padding: 0px;">x+i,y+j)</span><span style="margin: 0px; padding: 0px;">是定义在图像上的坐标,</span><span style="margin: 0px; padding: 0px;">(i,j)</span><span style="margin: 0px; padding: 0px;">是定义在模板</span><span style="margin: 0px; padding: 0px;">M</span><span style="margin: 0px; padding: 0px;">上的坐标。</span><span style="margin: 0px; padding: 0px;">M</span><span style="margin: 0px; padding: 0px;">即为运算的模板。</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"><span style="font-family: 'Microsoft YaHei';"> (5).<span style="margin: 0px; padding: 0px;">加权中值滤波(中值滤波的改进)</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">加权中值滤波是在中值滤波的基础上加以改进,其性能在一定程度上优于中值滤波。</span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">下面是自己在算法上的改进:以例子说明</span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">若说选模板的大小为<span style="margin: 0px; padding: 0px;">5</span><span style="margin: 0px; padding: 0px;">,那么这个模板就唯一确定为:</span></span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">1 1 5 1 1 </span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">1 1 5 1 1 </span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">5 5 5 5 5 </span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">1 1 5 1 1 </span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">1 1 5 1 1 </span></span></p><p class="p0" style="margin: 0pt auto; padding-top: 0px; padding-bottom: 0px; font-size: 13.6364px; line-height: 19.0909px; background-color: rgb(250, 247, 239);"><span style="font-family: 'Microsoft YaHei';"><span style="margin: 0px; padding: 0px; font-size: 10.5pt;"> </span><span style="margin: 0px; padding: 0px; font-size: 10.5pt;">上图中的数字表式改点像素在序列中出现的次数。然后根据模板平滑图像。实验证明该方法好于传统中值滤波。当然还有其他方法;</span></span></p><span style="font-family: 'Microsoft YaHei';"> </span>
<span style="font-family: 'Microsoft YaHei';"> </span>
<span style="font-family: 'Microsoft YaHei';">附:噪声 (高斯噪声:是指噪声服从高斯分布,即某个强度的噪声点个数最多,离这个强度越远噪声点个数越少,且这个规律服从高斯分布。高斯噪声是一种加性噪声,即噪声直接加到原图像上,因此可以用线性滤波器滤除。 椒盐噪声:类似把椒盐撒在图像上,因此得名,是一种在图像上出现很多白点或黑点的噪声,如电视里的雪花噪声等。椒盐噪声可以认为是一种逻辑噪声,用线性滤波器滤除的结果不好,一般采用中值滤波器滤波可以得到较好的结果。)</span>
关系:
图像卷积:一种实现手段,不管是滤波还是别的什么,可以说是数学在图像处理的一种延伸。
图像滤波:一种图像处理方法,来实现不同目的。
图像平滑:实际上就是低通滤波。