Back to Aurora Vision Library website

You are here: Start » Function Reference » Image » Image Combinators » AddImages


Header: AVL.h
Namespace: avl
Module: FoundationLite

Adds two images pixel by pixel.


void avl::AddImages
	const avl::Image& inImage1,
	const avl::Image& inImage2,
	atl::Optional<const avl::Region&> inRoi,
	float inScale,
	avl::Image& outImage


Name Type Default Description
Input value inImage1 const Image& First input image
Input value inImage2 const Image& Second input image
Input value inRoi Optional<const Region&> NIL Range of pixels to be processed
Input value inScale float 1.0f Output image scaling factor
Output value outImage Image& Output image

In-place Processing

This function supports in-place data processing - you can pass the same reference to inImage1 and outImage, inImage2 and outImage

Read more about In-place Computation.


The operation computes the sum of two images. Each outImage pixel is equal to the sum of the corresponding pixels of the input images.

The result of the operation is multiplied by inScale factor, which may be used to avoid clipping when the produced values exceed the range of correct pixel values. However it should be noted that when the value of inScale is other than 1.0, the filter uses a slower, not SSE-optimized implementation.

Whenever the resulting value exceeds the range of pixel values, it is clipped to the nearest proper value. In multichannel (color) images each pixel channel is processed separately.

The operation requires that the images being processed have equal format and dimensions, otherwise an error with appropriate description occurs. To obtain an image of desired dimensions one can use ResizeImage or CropImage filter. To alter the pixel type of an image one can use ConvertPixelType filter. ConvertToMultichannel and AverageChannels filters allow to alter the number of image channels.


AddImages performed on the sample images.

Hardware Acceleration

This operation is optimized for SSE2 technology for pixels of types: UINT8, SINT8, SINT16, REAL, SINT8(for inScale=1), UINT16(for inScale=1).

This operation is optimized for SSE41 technology for pixels of types: UINT16(for inScale!=1).

This operation is optimized for AVX2 technology for pixels of types: UINT8, SINT8, SINT16, UINT16, REAL.

This operation is optimized for NEON technology for pixels of types: UINT8, SINT8, UINT16, SINT16, REAL(for inScale!=1), SINT32(for inScale!=1).

This operation supports automatic parallelization for multicore and multiprocessor systems.


List of possible exceptions:

Error type Description
DomainError Image formats are not the same in AddImages.
DomainError Image sizes are not equal in AddImages.
DomainError Region exceeds an input image in AddImages.

See Also

  • SubtractImages – Subtracts two images pixel by pixel. The result is signed.