Intel® IPP Image Processing Basics
This section explains some of the basic concepts used in the image processing part of Intel® IPP:
- Representing an image
- Processing regions of interest (ROIs)
- Initializing function data
- Setting image border type
Representing an Image
An image can be represented as lines of pixels. Depending on the image format, one pixel can keep one or more integer or floating-point values. Each image row contains the same number of pixels. An image step is a value that is equal to distance, in bytes, between the starting points of consecutive lines in the image.
Processing Regions of Interest (ROIs)
Most Intel IPP image processing functions can operate not only on entire images but also on image areas. Image region of interest (ROI) is a rectangular area that can be either some part of the image or the whole image. Intel IPP functions that support ROI processing have the R descriptor in their names.
ROI of an image is defined by the size and offset from the image origin as shown in the figure below. The origin of the image is in the top left corner, with x values increasing from left to right and y values increasing downwards.
Initializing Function Data
Most Intel IPP functions do not perform memory allocation and require external memory buffers to contain pre-computed values or to keep temporary data for algorithm execution. To get size of required buffers, use the following auxiliary functions:
Use This | To Do This |
---|---|
<processing function>GetSize | Get buffer size for precomputed data structure that is initialized by <processing function>Init. |
<processing function>GetBufferSize | Obtain size for temporary buffer that is passed to the processing function. |
Setting Image Border Type
Many image processing algorithms sample a pixel by floating point (x, y ) coordinates to compute an intermediate or output image. To improve the image quality, you can apply filters that use neighborhood pixels to calculate the sampled pixel value. Thus, as shown in the figure below, to obtain an image with size 6x6 by using 3x3 filter kernel (8 neighborhood pixels are used), the source image of size 8x8 is required.
Each filtering operation reduces image size. To keep the image size and process image border pixels, it is required to extend the image artificially. There are several types of border processing in Intel IPP:
- Replicated borders
- Border pixels are replicated from the source image edge pixels
- Constant borders
- Values of all border pixels are set to a constant.
- Transparent borders
- Destination pixels that have inverse transformed location out of the source image are not processed.
- Borders in memory
- Source image border pixels are obtained from the source image pixels in memory.
- Mixed borders
- Combination of transparent borders and borders in memory is applied.
To set border processing methods for Intel IPP functions, use the borderType (or border) and borderValue parameters. To get information about the list of supported border types for a particular function, refer to the Intel IPP Developer Reference.