均值滤波器、中值滤波器、滤波器的常见应用。

源:机器视觉算法与应用 

在机器视觉中,图像滤波器无处不在。例如,它们用于减少图像噪声,改善对比度或检测边缘。本文将向您介绍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)

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

median_image:中值滤波器

9d2224bb3902a2e7a4cd564cb0db2cb1.png

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


5348ee5bdc6db33620f8863f928e85ae.png

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

56124878cfa2d87e0e11fb72784cb756.png

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

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

9cbe44bac24366c7340376220438942c.png

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

滤波器的常见用例

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

去除噪声

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

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

2845cf64ee5aea7eab8428d5a616ecd2.png

图像分割

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

80236faa6219431f48167029d9cac03b.png

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

一个常见的分割运算符是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')

b38af7c6ecd271b4b644e43e93928563.png
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)

4d19b1f62f59104b88227cd34f8e7a38.png

增强局部细节

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

*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)

bdcaac8d67c06c61be850e9952e96423.png

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

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

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值