工控编程吧
标题: 工业视觉halcon smooth_image函数介绍 [打印本页]
作者: qq263946146 时间: 2019-6-4 00:47
标题: 工业视觉halcon smooth_image函数介绍
smooth_image(Image : ImageSmooth : Filter, Alpha : )
smooth_image使用Deriche和Shen最初开发的递归滤波器和非递归高斯滤波器对灰度图像进行平滑。
通过参数Filter可以选择以下滤波器:
'deriche1', 'deriche2', 'shen' and 'gauss'.
“filter width”(即,则筛选器的范围,从而筛选器的结果)可以是任意大小。
在选择Deriche或Shen的情况下,通过增加滤波器参数Alpha使其减小,
而在高斯滤波器的情况下增加(Alpha与高斯函数的标准差相对应)。
操作符info_smooth对过滤器宽度Alpha的近似大小进行了估计。
像高斯滤波器这样的非递归滤波器通常使用滤波器掩模来实现。
在这种情况下,操作符的运行时间随着过滤器掩码的大小而增加。
递归滤波器的运行时间保持不变;
除了边界处理变得有点费时。
高斯滤波器与递归滤波器相比速度变慢,但与递归滤波器相比是各向同性的(滤波器“deriche2”只对方向敏感)。
通过为参数选择以下值,可以得到平滑的可比较结果:
Alpha(deriche2) = Alpha(deriche1) / 2,
Alpha(shen) = Alpha(deriche1) / 2,
Alpha(gauss) = 1.77 / Alpha(deriche1).
例如:
read_image (Image, 'printer_chip/printer_chip_01')
smooth_image (Image, ImageSmooth, 'gauss', 10)
2.trimmed_mean(Image, Mask : ImageTMean : Number, Margin : )
trimmed_mean对所有输入图像(Image)的灰度值进行非线性平滑。
过滤器掩码(Mask )以区域的形式传递。
计算位于中值附近的Number个灰度值的平均值。
可以选择几种边框处理进行过滤(Margin ):
灰度值 图像边缘外的灰度值像素假设为常数(用指定的灰度值表示)。
“continued” 边缘像素的延续。
“cyclic” 图像边缘的循环延拓。
“mirrored” 像素在图像边缘的反射。
所指示的掩码(=掩码图像的区域)以掩模中心接触所有像素一次的方式覆盖要过滤的图像。
对于这些像素中的每一个,掩码覆盖的所有相邻像素都按照其灰度值按升序排序。
因此,每个排序后的灰度值序列包含的灰度值与掩码的像素值一样多。
如果F是掩模的面积,则计算这些序列的平均值如下:
忽略第一个(F - Number)/2个灰度值。然后对下面的数字灰度值求和并除以Number。
同样,其余的(F - Number)/2灰度值将被忽略。
例程:
read_image(Image,'fabrik')
gen_circle (Circle, 200, 200, 10.5)
trimmed_mean(Image,Circle,TrimmedMean,5,'mirrored')
dev_display(TrimmedMean)
3.isotropic_diffusion(Image : SmoothedImage : Sigma, Iterations : )
isotropic_diffusion对输入图像Image 执行各向同性扩散。
这相当于图像矩阵与标准差的高斯掩模的卷积。
如果将参数Iterations 设置为0,则显式地执行这样的卷积。
对于具有完整ROI的输入图像,当使用函数derivate_gauss为其参数传递Component时,isotropic_diffusion与其结果相同。
如果灰度值矩阵大于图像的ROI,这两种算子的区别在于,derivate_gauss考虑了ROI外的灰度值,
而isotropic_diffusion则在任何情况下都反映了ROI边界处的值。
计算复杂度随Sigma值而线性增加。
如果Iterations 为正值,则将光滑过程视为热方程的一个应用
(, 下载次数: 0)