勇哥注:
图片过滤器是一切缺陷检测、边缘提取、图片分割前处理、分类器应用等等的基础。有很重要的研究意义。
因此勇哥会写成一个系列贴子以和大家一起分享。
-正文---------------------------------------------------------------------
双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。其输出像素的值依赖于邻域像素的值的加权组合。
从效果来说,双边滤波可产生类似美肤的效果。皮肤上的皱纹和斑,与正常皮肤的差异,远小于黑白眼珠之间的差异,因此前者被平滑,而后者被保留。
bilateral_filter(Image, Image, ImageBilateral, 5, 20, 'sampling_ratio', 0.5)
来看个缺陷检测的实际例子:
原图:
shock_filter过滤后的效果。
这个时候看取物料齿内仍然是有干扰的。
我们这个时候希望齿内外干扰尽可能去掉,并且不要把图像高频的部分去掉(好图像边缘)。
这个需求正好适用bilateral_filter
bilateral_filter过滤之后的效果,达到我们的需求。
测试源码:
read_image (Image, ImageFiles[14]) shock_filter(Image, SharpenedImage, 0.5, 10, 'canny', 0.8)//p2 bilateral_filter(SharpenedImage, SharpenedImage, ImageBilateral, 9, 20, [], [])
bilateral_filter 对图像执行双边滤波
算子签名如下:
bilateral_filter(Image, ImageJoint : ImageBilateral : SigmaSpatial, SigmaRange, GenParamName, GenParamValue : )
算子描述:
bilateral_filter使用引导图像ImageJoint对输入图像执行联合双边滤波,并将结果返回imagebitral。
Image和ImageJoint必须具有相同的大小和类型。
SigmaSpatial定义了滤波器掩模的大小,并与常规高斯滤波器的标准差相对应。值越大,过滤器的影响范围越大,保留的细节越少。
SigmaRange用于根据当前像素周围ImageJoint的像素修改过滤器掩码。
只有具有弱边缘且对比度低于SigmaRange的区域中的像素才有助于平滑。
请注意,uint2或Real图像中的对比度可能与SigmaRange的默认值显著不同,并相应地调整参数。
GenParamName和GenParamValue当前可用于控制精度和速度之间的权衡。
有关这个过滤器的详细解释,请参考下一篇:
《勇哥的实验,常见halcon图像过滤器的测试(三):bilateral_filter双边滤波器详解 》
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

