Intel® Integrated Performance Primitives (Intel® IPP) Developer Guide and Reference

ID 790148
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

RGBToGray

Converts an RGB image to gray scale using fixed transform coefficients.

Syntax

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

Include Files

ippcc.h

Domain Dependencies

Headers: ippcore.h, ippvm.h, ipps.h, ippi.h

Libraries: ippcore.lib, ippvm.lib, ipps.lib, ippi.lib

Parameters

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.

Description

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.

Converting an RGB Image to Gray Scale



Return Values

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.

Example

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