* This example demonstrates how to add two images with
* the operator 'add_image'.
*
*
dev_close_window () //关闭活动图形窗口
dev_update_off ()
*
* Read the two images and cut out a rectangular area
* in each image
read_image (Image1, 'patras') //Read an image with different file formats.
read_image (Image2, 'brycecanyon1')
crop_part (Image1, ImagePart1, 0, 0, 512, 480) //切出一个或多个矩形图像区域
crop_part (Image2, ImagePart2, 0, 0, 512, 480)
*
* Display the two input images for the addition
dev_open_window_fit_image (ImagePart1, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (ImagePart1) //在当前图形窗口中显示图像对象
disp_message (WindowHandle, 'Image 1', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
dev_display (ImagePart2)
disp_message (WindowHandle, 'Image 2', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
*
* Add the two images with factor 0.5 for the gray value
* adaption. The resulting image is stored in ImageResult.
add_image (ImagePart1, ImagePart2, ImageResult, 0.5, 0) //Add two images
dev_display (ImageResult)
disp_message (WindowHandle, 'Resulting image of the addition', 'window', 12, 12, 'black', 'true')
add_image — Add two images.
add_image(Image1, Image2 : ImageResult : Mult, Add : )
//参数
Image1 (input_object) images(s)1
Image2 (input_object) images(s)2
ImageResult (output_object) 添加的结果图像
Mult (input_control)
灰度值适应的因素。
默认值:0.5
建议值:0.2、0.4、0.6、0.8、1.0、1.5、2.0、3.0、5.0
典型值范围:-255.0 ≤ Mult ≤ 255.0
最小增量:0.001
推荐增量:0.1
Add (input_control)
灰度值范围自适应值。
默认值:0
建议值:0、64、128、255、512
典型值范围:-512.0 ≤ Add ≤ 512.0
最小增量:0.01
推荐增量:1.0
运算符 add_image 将两个图像相加。输入图像(Image1和Image2)的灰度值(g1,g2)变换如下:
g' := (g1 + g2) * Mult + Add
如果发生上溢或下溢,这些值将被裁剪。请注意,循环和方向图像不是这种情况。生成的图像存储在 ImageResult 中。
可以使用 int2、uint2 或 int4 图像添加字节图像,并将 int4 添加到 int2 或 uint2 图像。在这种情况下,结果将分别是 int2 或 int4 类型。
一次调用可以处理多个图像。在这种情况下,两个输入参数都包含相同数量的图像,然后成对处理。为每一对生成一个输出图像。
请注意,操作符的运行时间因控制参数不同而异。对于经常使用的组合,使用了特殊的优化。此外,对于 byte、int2、uint2 和 int4 图像,实施了使用 SIMD 技术的特殊优化。这些特殊优化的实际应用由系统参数“mmx_enable”控制(参见 set_system)。如果’mmx_enable’ 设置为’true’(并且SIMD 指令集可用),则使用SIMD 技术执行内部计算。
add_image 可以在 OpenCL 设备上执行,用于字节、int1、int2、uint2、int4、实数、方向、循环和复杂图像。但是,对于 OpenCL 1.0,由于所有设备仅支持单精度浮点,而不支持所有舍入模式,因此 OpenCL 实现可能会产生与标量或 SIMD 实现略有不同的结果。