常用的图像滤波方法简介-基于HALCON视觉算法包

新机器视觉

共 2567字,需浏览 6分钟

 ·

2021-08-19 17:32

点击下方卡片,关注“新机器视觉”公众号

视觉/图像重磅干货,第一时间送达

来源:机器视觉算法与应用 

在机器视觉中,图像滤波器无处不在。例如,它们用于减少图像噪声,改善对比度或检测边缘。本文将向您介绍MVTec HALCON中一些最常用的滤波器,它们是如何工作的以及可以用于什么。

mean_image:均值滤波器

首先,我们读取具有背景纹理的示例图像。我们的目标是在不改变实际信息的情况下删除背景纹理。让我们从一个易于理解的通用运算符开始:mean_image。

在生成的图像中,背景纹理已被很好地去除,但是很多相关信息已经丢失。那么,此滤波器如何工作?

为了调用mean_image, 我们指定了掩码大小。

*Halcon mean_image 函数原型
mean_image(Image : ImageMean : MaskWidth, MaskHeight : )
read_image(Image,'plan_01')
mean_image(Image,Mean,3,3)

对于每个像素,将创建具有指定宽度和高度的蒙版。然后,我们在此蒙版中获取灰度值并计算平均值。将该平均值分配给中心像素。因此,图像滤波后非常均匀平滑。另一个类似的运算符是median_image。

median_image:中值滤波器

默认情况下,使用圆形蒙版。对灰度值进行排序,并将“中间”值设置为新的灰度值。因此,中位数是更可靠的平均值,离群值对其影响不大。此外,在保留锐利边缘方面要好得多。


但是,更详细的信息,例如此处显示的数字,应用滤波器后仍然很模糊。为了进行比较,这是均值滤波器的结果。

还有更多运算符可用于平滑图像。请参阅“滤波器/平滑处理”一章参考,以获取全面概述。

为了消除此图像中的背景噪音,使用滚动导向滤波器(Rolling Guidance Filter)是一种高级选择。您可以在文档中看到令人印象深刻的结果。

第(3)张图片显示了提取的纹理。要获得此图像,我们使用算术滤波器sub_image。在这里,我们将原始图像减去被滤波器过滤的图像。生成的图像显示了提取的纹理。

滤波器的常见用例

让我们看一下基本过滤器的一些常见用例。

去除噪声

在这里,我们读取了植物的图像,并添加了一些椒盐噪声。使用median_image,我们可以非常有效地消除这种噪声。另外,白噪声是硬件引入的常见问题。在这里,均值滤波器和中值滤波器都可以产生好的结果。

使用滚动式导向滤波器,结果看起来非常不错。但是总运行时间会大大增加。在此太阳能电池图像中,我们希望摆脱水平线。在此,中值滤波器产生视觉上令人满意的结果。

图像分割

在下一张图片中,我们的目标是使用阈值来检测缺陷。但是,在灰色直方图中,我们不容易看到缺陷。因此,我们应用中值滤波器,现在,直方图中这个小的“丘陵”变得可区分并且可以轻松地进行分段,如下图所示,medain_filter前后。类似地,可以在分割图像以创建感兴趣区域之前应用滤波器。

另一个很好的例子是您要识别图像中的文本。通过滤波器预处理改善运行时间或提高鲁棒性。

一个常见的分割运算符是dyn_threshold,它使用局部阈值。通常,ThresholdImage是原始图像的平滑版本。在此示例中,我们使用它粗略地划分了盲文。

*Segment braille with dyn_threshold.
read_image (Image,'photometric_stereo/embossed_01')
mean_image (Image,ImageMean,60,60)
dyn_threshold (Image, ImageMean, RegionDynThresh, 15'not_equal')


segment-braille-with-dyn_threshold

校正不均匀照明

滤波器的另一个常见用例是照明的校正(算术滤波器的使用)。在这里,我们使用背光设置获取图像。注意照明不是完全均匀的。为了解决这个问题,我们获取背景图像,然后从原始图像中减去该背景图像。结果是更好的照明图像。

*correct illumination.
read_image (Image,'images/correct_shading_02.png')
read_image (Background, 'images/correct_shading_01.png')
sub_image (image,Background,ImageSub, 1,255)


增强局部细节

在此图像中,我们要增强细节。为此,我们首先对图像进行平滑处理。然后,我们从原始图像中减去平滑图像,从而为我们提供了细节。然后,我们将这些详细信息添加到原始文件中。如下图所示增强局部细节前后。

*Enhance details.
read_image (Image,'angio-part')
guided_filter(Image,image,ImageSmooth,5,10)
sub_image (Image,ImageSmooth,ImageDetail,5,0)
add_image(ImageDetail,Image,ImageDetailEnhanced,1,0)


最后,需要说明滤波器时必须注意的一个效果:

在reduce_domain时使用的是缩小区域,大多数过滤器仅返回输入域中包含的像素的结果,区域外的像素变为“未定义”。当应用两个或多个滤波器时,这可能会导致图像边界出现伪影。


—版权声明—

仅用于学术分享,版权属于原作者。

若有侵权,请联系微信号:yiyang-sy 删除或修改!


—THE END—
浏览 80
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报