Intel® Integrated Performance Primitives (Intel® IPP) - Calling Image Processing Functions

Published: 03/06/2012, Last Updated: 09/22/2015

Calling Intel® IPP Functions

Calling Intel IPP functions is as simple as calling any other C function:

  1. Include the ipp.h header file
  2. Set up the function parameters
  3. Call the function
  4. link ippi library

For select the ippi function for your application, please refer to Intel® IPP Reference Manual Vol.2: Image Processing
For link ippi library in your application, please refere to Linking Your Application with Intel® IPP

The multiple versions of optimized code for each function are concealed under a single entry point.

Color conversion from YUV 420 to RGB results in an upside-down image or in an BGR image

In some imaging pipelines, the interpretations of YUV images and RGB images are flipped relative to each other. The Intel IPP YUVToRGB function does not flip the image. However, Intel IPP does provide routines to perform the flip operation. One solution is to apply the function ippiMirror to flip the result before or after calling the YUVToRGB color conversion function. If the conversion ippiYUV422ToRGB_8u_C2C3R result in an BGR image, please use call ippiYCrCb422ToRGB_8u_C2C3R or ippiYCbCr422ToBGR_8u_C2C3R instead of call ippiYUV422ToRGB_8u_C2C3R

How can I convert a 24-bit RGB bitmap to a 32-bit RGBA bitmap?

Create a new 32-bit (4-channel) image and copy the 24-bit (3-channel) image to the 32-bit image:

  • ippiMalloc_8u_AC4
  • ippiCopy_8u_C3AC4R

How can I convert raw YUV data to RGB data?

Use the routine ippiYUV422ToRGB_8u_P3C3R to convert raw YUV to RGB.
and some new ipp color conversion (ippcc) function are avaiable

How do I read an image file so it can be used with the Intel IPP?

To read an image file, you must understand the structure of the file format you are working with. From this information, you can determine the properties of the image and then store the image data into an Intel IPP buffer. The following is a general outline for loading an image:

  • Retrieve the image properties (width, height, data type, etc.) from the image file header.
  • Based on those properties, create a buffer of the appropriate Intel IPP data type and size.
  • Read/copy the image data into the buffer.
  • Use Intel IPP image processing functions to perform the desired operations on the image data buffer.

Read more about Intel IPP image and data type support in the Image Processing Reference Manual, Chapter 2.


Which functions can be used to calculate quality differences between two images?

The Intel IPP contains several functions to measure quality differences between images, including the  Cross Correlation ( ippiCrossCorrNorm) and Square Distance ( ippiSqrDistanceNorm) functions. Please refer to Image Proximity Measures for more details.

How can I resolve runtime errors and access violations related to image filtering functions?

Intel IPP filtering functions assume that all outstanding ROI data exists. The application is required to check that ROI values are set such that all required border pixels exist in the image. If the pixels do not exist then a runtime error will occur. For more information, please refer to the following documents:

Operating System:

Please check the Release Notes

Product and Performance Information


Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804