Developer Reference for Intel® Integrated Performance Primitives
Converts an RGB image to gray scale using fixed transform coefficients.
IppStatus ippiRGBToGray_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u_C3C1R | 16u_C3C1R | 16s_C3C1R | 32f_C3C1R |
8u_AC4C1R | 16u_AC4C1R | 16s_AC4C1R | 32f_AC4C1R |
ippcc.h
Headers: ippcore.h, ippvm.h, ipps.h, ippi.h
Libraries: ippcore.lib, ippvm.lib, ipps.lib, ippi.lib
pSrc |
Pointer to the source image ROI. |
srcStep |
Distance in bytes between starts of consecutive lines in the source image. |
pDst |
Pointer to the destination image ROI. |
dstStep |
Distance in bytes between starts of consecutive lines in the destination image. |
roiSize |
Size of the source and destination ROI in pixels. |
This function operates with ROI.
Conversion from RGB image to gray scale (see figure Converting an RGB Image to Gray Scale) uses the following basic equation to compute luma from nonlinear gamma-corrected red, green, and blue values: Y' = 0.299 * R' + 0.587 * G' + 0.114 * B'. Note that the transform coefficients conform to the standard for the NTSC red, green, and blue CRT phosphors.
ippStsNoErr |
Indicates no error. Any other value indicates an error. |
ippStsNullPtrErr |
Indicates an error condition if pSrc or pDst pointer is NULL. |
ippStsSizeErr |
Indicates an error condition if roiSize has a field with a zero or negative value. |
The code example below demonstrates how to use the function ippiRGBToGray_8u_C3C1R.
Ipp8u src[12*3] = { 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255}; Ipp8u dst[4*3]; IppiSize srcRoi = { 4, 3 }; ippiRGBToGray_8u_C3C1R ( src, 12, dst, 4, srcRoi );
Result:
255 0 0 255 0 0 255 0 0 255 0 0 0 255 0 0 255 0 0 255 0 0 255 0 src 0 0 255 0 0 255 0 0 255 0 0 255 76 76 76 76 149 149 149 149 dst 29 29 29 29