当前位置: 首页 > 工具软件 > Image-Diff > 使用案例 >

halcon 计算两个图像的绝对差:abs_diff_image

蒋硕
2023-12-01

abs_diff_image —计算两个图像的绝对差。

签名
abs_diff_image(IMAGE1,图像2:ImageAbsDiff:MULT:)

描述
abs_diff_image计算两个图像之间的绝对差。根据输入图像( Image1和 Image2)的灰度值(g1,g2),如下计算输出图像 ImageAbsDiff的灰度值g’ :

            g'= |(g1-g2)| *多

如果发生上溢或下溢,则将修剪结果值。
一次通话可以处理多个图像。在这种情况下,两个输入参数都包含相同数量的图像,然后成对处理。每对产生一个输出图像。

请注意,运算符的运行时间取决于Mult的值 。对于Mult = 1,将使用特殊的优化。由于Mult的值不同于1不能产生其他信息,因此应在应用程序中使用Mult = 1。Mult的所有其他值应仅用于可视化目的。此外,对于字节,INT1,INT2和UINT2图像的特殊优化是为实现 MULT = 1使用SIMD技术。这些特殊优化的实际应用由系统参数’mmx_enable’控制(请参阅set_system)。如果’mmx_enable’设置为’true’ (并且SIMD指令集可用),使用SIMD技术执行内部计算。

abs_diff_image可以为字节,INT1,INT2,UINT2,INT4,和真实图像的OpenCL设备上执行。但是,由于对于OpenCL 1.0,所有设备仅支持单精度浮点,并且不支持所有舍入模式,因此OpenCL实现可能会产生与标量或SIMD实现略有不同的结果。

注意
请注意,SIMD技术获得的加速度在大型紧凑的输入区域上最高。但是,在极少数情况下,使用SIMD技术执行abs_diff_image所花费的时间可能要长于执行 该操作所花费的时间,具体取决于输入区域和硬件的功能。在这些情况下,可以通过set_system(::‘mmx_enable’,‘false’:)避免使用SIMD技术。

执行信息
支持OpenCL计算设备。
多线程类型:可重入(与非排他运算符并行运行)。
多线程作用域:全局(可以从任何线程调用)。
在元组级别自动并行化。
在通道级别自动并行化。
在域级别自动并行化。
参量
Image1(input_object) (multichannel-)image(-array)→ 对象(byte * / int1 * / int2 * / uint2 * / int4 * / int8 / real *)*允许计算设备
输入图像1。

Image2(input_object) (multichannel-)image(-array)→ 对象(byte * / int1 * / int2 * / uint2 * / int4 * / int8 / real *)*允许计算设备
输入图像2。

ImageAbsDiff( output_object) (多通道)图像(-array)→ 对象(字节/ int1 / int2 / uint2 / int4 / int8 /实数)
输入图像差异的绝对值。

多(input_control) 号→ (实数/整数)
比例因子。

默认值: 1.0

建议值: 1.0、2.0、3.0、4.0

限制:多> 0

结果
如果参数正确,则运算符abs_diff_image返回值2(H_MSG_TRUE)。通过操作员set_system(::‘no_object_result’, :)设置输入为空(无可用输入图像)时的行为 。如有必要,将引发异常。

 类似资料: