MVTec HALCON中常用的滤波器是如何工作?可以用于什么?

描述

在机器视觉中,图像滤波器无处不在。例如,它们用于减少图像噪声,改善对比度或检测边缘。本文将向您介绍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时使用的是缩小区域,大多数过滤器仅返回输入域中包含的像素的结果,区域外的像素变为“未定义”。当应用两个或多个滤波器时,这可能会导致图像边界出现伪影。






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分