一、平滑模糊处理
以Dalsa sherlock软件为例,一起来了解一下视觉检测中平滑模糊的图像处理方法。
1、观察灰度分布来描述一幅图像称为空间域,观察图像变化的频率被称为频域。
2、频域分析:低频对应区域的图像强度变化缓慢,高频对应的变化快。低通滤波器去除了图像的高频部分,高通滤波器去除了图像的低频部分
平滑模糊处理(低通)
高斯滤波,中值滤波,均值滤波都属于低通滤波,一副图像的边缘、跳跃部分以及颗粒噪声代表图像信号的高频分量,而大面积的背景区则代表图像信号的低频信号,用滤波的方式滤除其高频部分就能去掉噪声。
在Sherlock中,采用低通处理来平滑图像的算法包括:Lowpass,Lowpass5X5,Gaussian ,Gaussian5X5,GaussianWXH,Median,Smooth。
低通滤波:Lowpass Lowpass5X5
在Sherlock中的这两个算法,直接理解为低通滤波,根据文档中的描述,这两个算法分别是对3x3和5x5大小尺寸内进行均值平滑图像,可重复多次执行,未能理解与smooth算法的区别。
(1)均值滤波:Smooth
均值滤波最简单的低通滤波,根据设定的尺寸,将相邻像素取平均值,Sherlock中使用的是3x3大小的尺寸,每个点的像素值由其原像素值和其周围的8个像素值的平均值取代。
例如下图,在3x3大小的过滤尺寸内,中心点原来的像素值为1,相邻像素取平均值为2,则经过均值滤波处理过,中心点的像素为2。
(2)中值滤波:Median
根据设定的尺寸,将区域内的像素进行排序,中心点的像素值由过滤尺寸内的位于中间的像素值取代,中值滤波对于去除小的噪点或者脉冲噪声效果非常好,中值滤波会改变图像的结构,图像的强度被改变。
(3)高斯滤波:Gaussian Gaussian5X5 GaussianWXH
高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到,模糊了图像的细节。常用于出去噪点,平滑边缘。
高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。
Gaussian:使用一个3X3大小,滤波器系数是一个标准差为0.85的二维高斯分布,可多次执行
Gaussian5X5:使用一个5X5大小,滤波器系数是一个标准差为1的二维高斯分布,可多次执行,但是增加执行次数会增大标准差的值,近似于重复次数的平方根。
注意:每次重复使用之后,都会图像的边界留出2个像素保持像素不变,如果对图像边界有影响,注意设定边界的灰度值
GaussianWXH:使用一个可以设定尺寸大小,确定权重的标准差也可以设定,一个大的高斯过滤器可以用重复多次的小的高斯来实现。例如重复执行一个3x3或者5x5高斯,执行次数N*1.4或者N*2.8为过滤的尺寸,例如3x3执行9次,过滤的尺寸大约是9*1.4,与一个13X13高斯差不多。
标准差σ
Sigma 越大,分布越均匀,周围的权重越大,模糊程度越大。
Sigma越小,分布越集中,靠近中心的权重越大,模糊程度越小。
均值 高斯
二、锐化 强化处理
图像的锐化处理,使图像边缘更清晰,细节增强。
Sherlock中用于锐化图像的算法有各种卷积:1X3,1X5,1X7,3X3,5X1,5X5,7X1,Chatter Edge,Gradient,Highpass ,Sharpen
◆ 1X3,1X5,1X7,3X3,5X1,5X5,7X1
分别是选择不同尺寸的卷积核,每个位置的像素与相邻像素通过设定的卷积核进行卷积运算。
假如目标像素点和它周边的值(上下左右前后的临点,具体的比邻范围依赖于算子的大小,3*3的算子比邻范围为1,5*5的为2,以此类推)得有较大差异,那么就可以通过这个算子对原图矩阵中的这个位置进行卷积运算,得出的值和该像素点原来的灰度值会产生显著的差异。当这种前后差异超过我们预设的范围后,就将这个像素点标记为255(白色),其余点标记为0(黑色),这样就得到了一黑色为背景,白色线条作为边缘或形状的边缘提取效果图。锐化算子:通过卷积运算,可以增大矩阵每一个元素与周边元素的方差,轻则起到锐化作用,重则成了边缘提取。反之,则是去噪过程。
上图为算法的参数就是设置卷积核的参数
◆ Chatter Edge
用于对噪音的或者模糊的边缘的提取,过滤尺寸可以自定义。输出的是二值化的或者修剪灰度比例的图像。由于机械振动引起的图像跳动,如下图:
使用一个可以调整过滤内核尺寸的差分过滤器,例如过滤尺寸为4的内核为{-1,0,0,1}或者过滤尺寸为6的内核为{-1,0,0,0,0,1}。这个过滤器在水平方向,垂直方向或者两者都有的方向扫描输入图像,得到输出图像。
应用一个过滤尺寸为16的,“X”方向过滤的过滤器,增强图中对比度比较低的边缘。
任何输出低于边缘阈值的值设定为0.等于或者大于边缘阈值的值输出为全白,如果keep gray above设为True,保留原来的值。Filter size (卷积内核尺寸)可以设为2-255,由于卷积是线形操作,我们可以把这个差分过滤分成两个矩形(取样积分器)过滤器。一个过滤器相对于另一个过滤器偏移一个像素。一个矩形过滤器是低通滤波器,用来去除噪音。-1,…。,1这些是用来增强边缘的。
Filter direction 设定过滤器的方向。“X”表示过滤器是水平的,“Y”表示过滤器是垂直的,这两个都会使过滤器扫描穿过输入图像,得到输出图像。如果是“either”,两个方向的过滤都应用。如果keep gray above设为false, X和Y的过滤结果通过逻辑OR合并处理。如果keep gray above设为true,输出是X和Y方向的最大值。
Transition type 设定边缘对比度变化。“Dark-to-light” 放大由暗到亮的边缘,“light-to-dark”放大由亮到暗的边缘。“either”两种对比度变化都被放大。
下侧的图像显示了一个非常缓慢和扩散过渡的边缘,右侧的图像显示了应用了一个过滤尺寸为10的chatter edges结果的图像。
◆Gradient 梯度锐化,线性ROI使用的
根据由距离分开的像素,使用线性梯度增强边缘
output = abs[ (n - separation/2) - (n + separation/2) ]
◆Highpass Highpass5x5 高通滤波
◆Sharpen
在图像增强过程中,通常利用各类图像平滑算法消除噪声。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现(平滑可以认为是去除噪声,这样也就模糊了图像的边缘信息)。
为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。
微分运算是求信号的变化率,由傅立叶变换的微分性质可知,微分运算具有较强高频分量作用。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。但要注意能够进行锐化处理的图像必须有较高的性噪比,否则锐化后图像性噪比反而更低,从而使得噪声增加的比信号还要多,因此一般是先去除或减轻噪声后再进行锐化处理。