add_image加图像add_image加图像AddImage加图像AddImage加图像add_image加图像 (算子)
名称
add_image加图像add_image加图像AddImage加图像AddImage加图像add_image加图像 — 加两幅图像。
签名
def add_image(image_1: HObject, image_2: HObject, mult: Union[int, float], add: Union[int, float]) -> HObject
描述
算子 add_imageadd_imageAddImageAddImageAddImageadd_image 用于叠加两幅图像。输入图像 (Image1Image1Image1Image1image1image_1 和
Image2Image2Image2Image2image2image_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 设备上执行,适用于 byte、int1、int2、
uint2、int4、real、direction、cyclic 和 complex 图像。然而,由于 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 技术。
执行信息
- 支持 OpenCL 计算设备。
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在元组级别上自动并行化。
- 在通道级别上自动并行化。
- 在域级别上自动并行化。
参数
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
模块
基础