add_image加图像add_image加图像AddImage加图像AddImage加图像add_image加图像 (算子)

名称

add_image加图像add_image加图像AddImage加图像AddImage加图像add_image加图像 — 加两幅图像。

签名

add_image(Image1, Image2 : ImageResult : Mult, Add : )

Herror add_image(const Hobject Image1, const Hobject Image2, Hobject* ImageResult, double Mult, double Add)

Herror T_add_image(const Hobject Image1, const Hobject Image2, Hobject* ImageResult, const Htuple Mult, const Htuple Add)

void AddImage(const HObject& Image1, const HObject& Image2, HObject* ImageResult, const HTuple& Mult, const HTuple& Add)

HImage HImage::AddImage(const HImage& Image2, const HTuple& Mult, const HTuple& Add) const

HImage HImage::AddImage(const HImage& Image2, double Mult, double Add) const

static void HOperatorSet.AddImage(HObject image1, HObject image2, out HObject imageResult, HTuple mult, HTuple add)

HImage HImage.AddImage(HImage image2, HTuple mult, HTuple add)

HImage HImage.AddImage(HImage image2, double mult, double add)

def add_image(image_1: HObject, image_2: HObject, mult: Union[int, float], add: Union[int, float]) -> HObject

描述

算子 add_imageadd_imageAddImageAddImageAddImageadd_image 用于叠加两幅图像。输入图像 (Image1Image1Image1Image1image1image_1Image2Image2Image2Image2image2image_2) 的 (g1,g2) 将按以下方式进行转换: g' := (g1 + g2) * Mult + Add

若发生溢出或下溢,数值将被截断。请注意,循环和方向图像不存在此情况。结果图像存储在 ImageResultImageResultImageResultImageResultimageResultimage_result 中。

可以将 byte 图像与 int2、uint2 或 int4 图像相加,也可以将 int4 图像与 int2 或 uint2 图像相加。此时结果将分别是 int2 或 int4 类型。

单次调用可处理多张图像。此时两个输入参数包含相同数量的图像,这些图像将成对进行处理。每处理一对图像,系统将生成一张输出图像。

请注意,算子的运行时间会因不同的控制参数而变化。对于常用组合,会采用特殊的优化方案。此外,针对 byte、int2、uint2 和 int4 图像,我们实现了采用 SIMD 技术的特殊优化方案。这些特殊优化的实际应用由系统参数 '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 技术执行。

add_imageadd_imageAddImageAddImageAddImageadd_image 可在 OpenCL 设备上执行,适用于 byteint1int2 uint2int4realdirectioncycliccomplex 图像。然而,由于 OpenCL 1.0 仅支持所有设备使用单精度浮点运算,且并非所有舍入模式均被支持,因此 OpenCL 实现可能会产生与标量或 SIMD 实现略有差异的结果。

注意

请注意,SIMD 技术获得的加速效果在大型、紧凑输入区域上最为显著。然而,在极少数情况下,根据输入区域和硬件性能的不同,使用 SIMD 技术执行 add_imageadd_imageAddImageAddImageAddImageadd_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* / direction* / cyclic* / complex*) *允许用于计算设备

图像 1。

Image2Image2Image2Image2image2image_2 (输入对象)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (byte* / int1* / int2* / uint2* / int4* / int8 / real* / direction* / cyclic* / complex*) *允许用于计算设备

图像 2。

ImageResultImageResultImageResultImageResultimageResultimage_result (输出对象)  (multichannel-)image(-array) objectHImageHObjectHImageHobject * (byte / int1 / int2 / uint2 / int4 / int8 / real / direction / cyclic / complex)

通过加法得到的图像结果。

MultMultMultMultmultmult (输入控制)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

灰度值适应系数。

默认值: 0.5

建议值: 0.2, 0.4, 0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 5.0

值范围: -255.0 ≤ Mult Mult Mult Mult mult mult ≤ 255.0

最小增量: 0.001

建议增量: 0.1

AddAddAddAddaddadd (输入控制)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

灰度值范围适应的数值。

默认值: 0

建议值: 0, 64, 128, 255, 512

值范围: -512.0 ≤ Add Add Add Add add add ≤ 512.0

最小增量: 0.01

建议增量: 1.0

示例(HDevelop)

read_image(Image1,'fabrik')
dev_display (Image1)
read_image(Image2,'monkey')
dev_display (Image2)
add_image(Image1,Image2,Result,0.5,10.0)
dev_display (Result)

示例(C)

read_image(&Image1,"fabrik");
disp_image(Image1,WindowHandle);
read_image(&Image2,"monkey");
disp_image(Image2,WindowHandle);
add_image(Image1,Image2,&Result,0.5,10.0);
disp_image(Result,WindowHandle);

示例(HDevelop)

read_image(Image1,'fabrik')
dev_display (Image1)
read_image(Image2,'monkey')
dev_display (Image2)
add_image(Image1,Image2,Result,0.5,10.0)
dev_display (Result)

示例(HDevelop)

read_image(Image1,'fabrik')
dev_display (Image1)
read_image(Image2,'monkey')
dev_display (Image2)
add_image(Image1,Image2,Result,0.5,10.0)
dev_display (Result)

示例(HDevelop)

read_image(Image1,'fabrik')
dev_display (Image1)
read_image(Image2,'monkey')
dev_display (Image2)
add_image(Image1,Image2,Result,0.5,10.0)
dev_display (Result)

结果

如果参数正确,算子 add_imageadd_imageAddImageAddImageAddImageadd_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>) 进行设置。 如有必要,则抛出异常。

替代

sub_imagesub_imageSubImageSubImageSubImagesub_image, mult_imagemult_imageMultImageMultImageMultImagemult_image

另见

sub_imagesub_imageSubImageSubImageSubImagesub_image, mult_imagemult_imageMultImageMultImageMultImagemult_image

模块

基础