abs_diff_image绝对差图像abs_diff_image绝对差图像AbsDiffImage绝对差图像AbsDiffImage绝对差图像abs_diff_image绝对差图像 (算子)

名称

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

签名

abs_diff_image(Image1, Image2 : ImageAbsDiff : Mult : )

Herror abs_diff_image(const Hobject Image1, const Hobject Image2, Hobject* ImageAbsDiff, double Mult)

Herror T_abs_diff_image(const Hobject Image1, const Hobject Image2, Hobject* ImageAbsDiff, const Htuple Mult)

void AbsDiffImage(const HObject& Image1, const HObject& Image2, HObject* ImageAbsDiff, const HTuple& Mult)

HImage HImage::AbsDiffImage(const HImage& Image2, const HTuple& Mult) const

HImage HImage::AbsDiffImage(const HImage& Image2, double Mult) const

static void HOperatorSet.AbsDiffImage(HObject image1, HObject image2, out HObject imageAbsDiff, HTuple mult)

HImage HImage.AbsDiffImage(HImage image2, HTuple mult)

HImage HImage.AbsDiffImage(HImage image2, double mult)

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_1Image2Image2Image2Image2image2image_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 设备上执行,适用于 byteint1int2uint2int4real 图像。然而,由于 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 技术。

执行信息

参数

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

模块

基础