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 为正值,则将光滑过程视为热方程的一个应用
在灰度值函数u上,初始值u=u0由图像灰度值在t0时定义。
方程通过一时间求解
这个时间相当于上面的卷积,
使用抛物型偏微分方程的迭代过程。
计算复杂度与Iterations 值成正比,在这种情况下与Sigma无关。
然而,对于迭代量较小的情况,计算精度很低。因此,不建议选择迭代< 3。
对于较小的值,卷积实现通常是较快的方法。
由于偏微分方程求解器的运行时间只取决于迭代次数,而不取决于Sigma的值,
因此,如果选择的迭代次数较少(如迭代= 3),对于Sigma的值较大时,通常会更快。
例程:
read_image (Image, 'board/board-01')
gen_rectangle1 (Rectangle, 180, 145, 310, 460)
reduce_domain (Image, Rectangle, ImageReduced)
smooth_image (ImageReduced, ImageSmooth, 'gauss', 5)
isotropic_diffusion (ImageReduced, SmoothedImage, 5, 0)
dev_clear_window ()
dev_display (SmoothedImage)
4.info_smooth( : : Filter, Alpha : Size, Coeffs)
info_smooth返回对常规smooth_image中使用的平滑滤波器宽度的估计。
为此目的,对滤波器的潜在连续脉冲响应进行扫描,直到滤波器系数小于最大系数的5%(在原点处)。
Alpha是过滤器参数(参见smooth_image)。
目前支持四个过滤器(参数过滤器):
'deriche1', 'deriche2', 'shen' and 'gauss'.
高斯滤波器通常用滤波器掩模实现(其他三个是递归滤波器)。
在高斯滤波器的情况下,除滤波器大小外,滤波器系数(一维脉冲响应的系数
还在Coeffs返回。
例程:
read_image (Image, 'board/board-01')
info_smooth('deriche2',0.5,Size,Coeffs)
smooth_image(Image,Smooth,'deriche2',7)
|