abs_diff_image绝对差图像abs_diff_image绝对差图像AbsDiffImage绝对差图像AbsDiffImage绝对差图像abs_diff_image绝对差图像 (算子)
名称
abs_diff_image绝对差图像abs_diff_image绝对差图像AbsDiffImage绝对差图像AbsDiffImage绝对差图像abs_diff_image绝对差图像 — 计算两幅图像的绝对差。
签名
def abs_diff_image(image_1: HObject, image_2: HObject, mult: Union[int, float]) -> HObject
描述
abs_diff_imageabs_diff_imageAbsDiffImageAbsDiffImageAbsDiffImageabs_diff_image 计算两幅图像之间的绝对差。输出图像
ImageAbsDiffImageAbsDiffImageAbsDiffImageAbsDiffimageAbsDiffimage_abs_diff 的灰度值g'根据输入图像 (Image1Image1Image1Image1image1image_1 和 Image2Image2Image2Image2image2image_2) 的灰度值(g1,g2)按以下方式计算:
g' = |(g1 - g2)| * Mult
若发生溢出或下溢,则结果值将被截断。
单次调用可处理多张图像。此时,两个输入参数包含相同数量的图像,这些图像将成对进行处理。每处理一对图像,系统将生成一张输出图像。
请注意,该算子的运行时取决于
MultMultMultMultmultmult 的值。当 MultMultMultMultmultmult = 1 时,会采用一种特殊优化方案。由于 MultMultMultMultmultmult 值若不同于 1 则无法提供额外信息,应用程序中应使用 MultMultMultMultmultmult = 1。MultMultMultMultmultmult 的所有其他值仅适用于可视化目的。此外,针对 byte、int1、int2 和 uint2 图像,当
MultMultMultMultmultmult = 1 时会启用基于S IMD 技术的特殊优化。这些特殊优化的实际应用由系统参数 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" (参见 set_systemset_systemSetSystemSetSystemSetSystemset_system) 控制。
如果将 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" 设置为 'true'"true""true""true""true""true" (且可使用 SIMD 指令集),则内部计算将使用 SIMD 技术执行。
abs_diff_imageabs_diff_imageAbsDiffImageAbsDiffImageAbsDiffImageabs_diff_image 可在 OpenCL 设备上执行,适用于 byte、int1、int2、uint2、int4 和 real 图像。然而,由于 OpenCL 1.0 仅支持所有设备使用单精度浮点运算,且并非所有舍入模式均被支持,因此 OpenCL 实现可能会产生与标量或 SIMD 实现略有差异的结果。
注意
请注意,SIMD 技术获得的加速效果在大型、紧凑输入区域上最为显著。然而,在极少数情况下,根据输入区域和硬件性能的不同,使用 SIMD 技术执行
abs_diff_imageabs_diff_imageAbsDiffImageAbsDiffImageAbsDiffImageabs_diff_image 可能比不使用时耗时显著增加。在这些情况下,可通过 set_system(::'mmx_enable','false':)set_system("mmx_enable","false")SetSystem("mmx_enable","false")SetSystem("mmx_enable","false")SetSystem("mmx_enable","false")set_system("mmx_enable","false") 来避免使用 SIMD 技术。
执行信息
- 支持 OpenCL 计算设备。
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在元组级别上自动并行化。
- 在通道级别上自动并行化。
- 在域级别上自动并行化。
参数
Image1Image1Image1Image1image1image_1 (输入控制) (multichannel-)image(-array) → objectHImageHObjectHImageHobject (byte* / int1* / int2* / uint2* / int4* / int8 / real*) *允许用于计算设备
输入图像 1。
Image2Image2Image2Image2image2image_2 (输入控制) (multichannel-)image(-array) → objectHImageHObjectHImageHobject (byte* / int1* / int2* / uint2* / int4* / int8 / real*) *允许用于计算设备
输入图像 2。
ImageAbsDiffImageAbsDiffImageAbsDiffImageAbsDiffimageAbsDiffimage_abs_diff (输出对象) (multichannel-)image(-array) → objectHImageHObjectHImageHobject * (byte / int1 / int2 / uint2 / int4 / int8 / real)
输入图像差值的绝对值。
MultMultMultMultmultmult (输入控制) number → HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
比例系数。
默认值:
1.0
建议值:
1.0, 2.0, 3.0, 4.0
限制:
Mult > 0
结果
算子 abs_diff_imageabs_diff_imageAbsDiffImageAbsDiffImageAbsDiffImageabs_diff_image 在参数正确时返回值 2 (
H_MSG_TRUE)
。当输入为空(无可用输入图像)时的行为通过算子
set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) 进行设置。如有必要,则抛出异常。
可能的后继
thresholdthresholdThresholdThresholdThresholdthreshold
替代
sub_imagesub_imageSubImageSubImageSubImagesub_image
另见
add_imageadd_imageAddImageAddImageAddImageadd_image,
scale_imagescale_imageScaleImageScaleImageScaleImagescale_image,
dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_threshold
模块
基础