Visible to Intel only — GUID: GUID-4E2CEB5E-F89C-40D4-BE69-8F9581610F02
Visible to Intel only — GUID: GUID-4E2CEB5E-F89C-40D4-BE69-8F9581610F02
Scale
Scales pixel values of an image and converts them to another bit depth.
Syntax
Case 1: Scaling with conversion to integer data of increased bit depth
IppStatus ippiScale_<mod>(const Ipp<srcDatatype>* pSrc, int srcStep, Ipp<dstDatatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u16u_C1R | 8u16s_C1R | 8u32s_C1R |
8u16u_C3R | 8u16s_C3R | 8u32s_C3R |
8u16u_C4R | 8u16s_C4R | 8u32s_C4R |
IppStatus ippiScale_<mod>(const Ipp<srcDatatype>* pSrc, int srcStep, Ipp<dstDatatype>* pDst, int dstStep, IppiSize roiSize);
Supported values for mod:
8u16u_AC4R | 8u16s_AC4R | 8u32s_AC4R |
Case 2: Scaling with conversion to floating-point data
IppStatus ippiScale_<mod>(const Ipp8u* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize roiSize, Ipp32f vMin, Ipp32f vMax);
Supported values for mod:
8u32f_C1R |
8u32f_C3R |
8u32f_C4R |
IppStatus ippiScale_8u32f_AC4R(const Ipp8u* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize roiSize, Ipp32f vMin, Ipp32f vMax);
Case 3: Scaling of integer data with conversion to reduced bit depth
IppStatus ippiScale_<mod> (const Ipp<srcDatatype>* pSrc, int srcStep, Ipp<dstDatatype>* pDst, int dstStep, IppiSize roiSize, IppHintAlgorithm hint);
Supported values for mod:
16u8u_C1R | 16s8u_C1R | 32s8u_C1R |
16u8u_C3R | 16s8u_C3R | 32s8u_C3R |
16u8u_C4R | 16s8u_C4R | 32s8u_C4R |
IppStatus ippiScale_<mod> (const Ipp<srcDatatype>* pSrc, int srcStep, Ipp<dstDatatype>* pDst, int dstStep, IppiSize roiSize, IppHintAlgorithm hint);
Supported values for mod:
16u8u_AC4R | 16s8u_AC4R | 32s8u_AC4R |
Case 4: Scaling of floating-point data with conversion to integer data type
IppStatus ippiScale_<mod>(const Ipp32f* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize, Ipp32f vMin, Ipp32f vMax);
Supported values for mod:
32f8u_C1R |
32f8u_C3R |
32f8u_C4R |
IppStatus ippiScale_32f8u_AC4R(const Ipp32f* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize, Ipp32f vMin, Ipp32f vMax);
Include Files
ippi.h
Domain Dependencies
Headers: ippcore.h, ippvm.h, ipps.h
Libraries: ippcore.lib, ippvm.lib, ipps.lib
Parameters
pSrc |
Pointer to the source image ROI. |
srcStep |
Distance, in bytes, between the starting points of consecutive lines in the source image. |
pDst |
Pointer to the destination image ROI. |
dstStep |
Distance, in bytes, between the starting bytes of consecutive lines in the destination image. |
roiSize |
Size of the source and destination ROI in pixels. |
vMin, vMax |
Minimum and maximum values of the input data. |
hint |
Option to select the algorithmic implementation of the function (see Hint Arguments for Image Moment Functions). |
Description
This function operates with ROI.
This function converts pixel values of a source image ROI pSrc to the destination data type, using a linear mapping. The computation algorithm is specified by the hint argument. For conversion between integer data types, the whole range [src_Min..src_Max] of the input data type is mapped onto the range [dst_Min..dst_Max] of the output data type.
The source pixel p is mapped to the destination pixel p′ by the following formula:
p′ = dst_Min + k*(p - src_Min)
where
k = (dst_Max - dst_Min)/(src_Max - src_Min)
For conversions to and from floating-point data type, the user-defined floating-point data range [vMin..vMax] is mapped onto the source or destination data type range.
If the conversion is from Ipp32f type and some of the input floating-point values are outside the specified input data range [vMin..vMax], the corresponding output values saturate. To determine the actual floating-point data range in your image, use the ippiMinMax function.
Return Values
ippStsNoErr |
Indicates no error. Any other value indicates an error or a warning. |
ippStsNullPtrErr |
Indicates an error when any of the specified pointers is NULL. |
ippStsSizeErr |
Indicates an error condition if roiSize has a field with a zero or negative value. |
ippStsStepErr |
Indicates an error condition if srcStep or dstStep has a zero or negative value. |
ippStsScaleRangeErr |
Indicates an error condition if the input data bounds are incorrect, that is, vMax is less than or equal to vMin . |
Example
The code example below shows how to use scaling to preserve the data range.
IppStatus scale( void ) { IppiSize roi = {5,4}; Ipp32f x[5*4]; Ipp8u y[5*4]; ippiSet_32f_C1R( -1.0f, x, 5*sizeof(Ipp32f), roi ); x[1] = 300; x[2] = 150; return ippiScale_32f8u_C1R( x, 5*sizeof(Ipp32f), y, 5, roi, -1, 300 ); }
The destination image y contains:
00 FF 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00