IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Classes | Typedefs | Enumerations | Functions
Image geometry concepts in IPSDK

Image geometry concepts in IPSDK. More...

Classes

class  ipsdk::image::BaseImageGeometry
 Base class for image geometry. More...
 
class  ipsdk::image::ColorGeometry
 Class encapsulating color geometryThis class allows to define geometry color size and type (grey, rgb, ...) More...
 
class  ipsdk::image::TemporalGeometry
 Class encapsulating temporal geometryThis class allows to define geometry temporal size and type (single or sequence) More...
 
class  ipsdk::image::VolumeGeometry
 Class encapsulating volume geometryThis class allows to define geometry volume size and type (2d or 3d) More...
 
class  ipsdk::image::HeterogeneousImageGeometry
 Image geometry associated to heterogeneous image buffer types through image plans (sequence case) More...
 
class  ipsdk::image::HomogeneousImageGeometry
 Image geometry associated to constant image buffer types through image plans. More...
 

Typedefs

typedef boost::shared_ptr< BaseImageGeometryipsdk::image::ImageGeometryPtr
 shared pointer to image geometry
 
typedef boost::shared_ptr< const BaseImageGeometryipsdk::image::ImageGeometryConstPtr
 shared pointer to const image geometry
 
typedef std::vector< eImageBufferTypeipsdk::image::ImageBufferTypeVector
 collection of buffer types
 

Enumerations

enum  ipsdk::image::eVolumeGeometryType { ipsdk::image::eVGT_2d, ipsdk::image::eVGT_3d }
 Volume geometry type. More...
 
enum  ipsdk::image::eColorGeometryType {
  ipsdk::image::eCGT_Grey, ipsdk::image::eCGT_Rgb, ipsdk::image::eCGT_Rgba, ipsdk::image::eCGT_XYZ,
  ipsdk::image::eCGT_YPbPr, ipsdk::image::eCGT_YCbCr, ipsdk::image::eCGT_CieLab, ipsdk::image::eCGT_CieLuv,
  ipsdk::image::eCGT_HLS, ipsdk::image::eCGT_HSV, eCGT_User
}
 Color geometry type. More...
 
enum  ipsdk::image::eTemporalGeometryType { ipsdk::image::eTGT_Single, ipsdk::image::eTGT_Sequence }
 Temporal geometry type. More...
 
enum  ipsdk::image::eRgbColorComponent { ipsdk::image::eCC_Red, ipsdk::image::eCC_Green, ipsdk::image::eCC_Blue }
 Color components associated to RGB color geometry. More...
 
enum  ipsdk::image::eRgbaColorComponent { ipsdk::image::eCC_Red, ipsdk::image::eCC_Green, ipsdk::image::eCC_Blue, ipsdk::image::eCC_Alpha }
 Color components associated to RGBA color geometry. More...
 
enum  ipsdk::image::eXYZColorComponent { ipsdk::image::eCC_X, ipsdk::image::eCC_Y, ipsdk::image::eCC_Z }
 Color components associated to XYZ color geometry. More...
 
enum  ipsdk::image::eYPbPrColorComponent { ipsdk::image::eCC_Y, ipsdk::image::eCC_Pb, ipsdk::image::eCC_Pr }
 Color components associated to YPbPr color geometry. More...
 
enum  ipsdk::image::eYCbCrColorComponent { ipsdk::image::eCC_Y, ipsdk::image::eCC_Cb, ipsdk::image::eCC_Cr }
 Color components associated to YCbCr color geometry. More...
 
enum  ipsdk::image::eLabColorComponent { ipsdk::image::eCC_L, ipsdk::image::eCC_A, ipsdk::image::eCC_B }
 Color components associated to CIE Lab color geometry. More...
 
enum  ipsdk::image::eLuvColorComponent { ipsdk::image::eCC_L, ipsdk::image::eCC_U, ipsdk::image::eCC_V }
 Color components associated to CIE Luv color geometry. More...
 
enum  ipsdk::image::eHLSColorComponent { ipsdk::image::eCC_H, ipsdk::image::eCC_L, ipsdk::image::eCC_S }
 Color components associated to HLS color geometry. More...
 
enum  ipsdk::image::eHSVColorComponent { ipsdk::image::eCC_H, ipsdk::image::eCC_S, ipsdk::image::eCC_V }
 Color components associated to HSV color geometry. More...
 
enum  ipsdk::image::eImageGeometryType { ipsdk::image::eIGT_Homogeneous, ipsdk::image::eIGT_Heterogeneous }
 Image geometry type. More...
 

Functions

IPSDKIMAGE_API ipUInt32 ipsdk::image::getColorGeometrySize (const eColorGeometryType &colorGeometryType)
 retrieve size (number of plans) of a color geometry More...
 
IPSDKIMAGE_API bool ipsdk::image::hasLinearTransform (const eColorGeometryType &sourceColorSpace, const eColorGeometryType &targetColorSpace)
 check whether a linear transformation is available between two color spaces
 
IPSDKIMAGE_API ipsdk::math::Matrix ipsdk::image::getLinearTransform (const eColorGeometryType &sourceColorSpace, const eColorGeometryType &targetColorSpace, const eImageBufferType &sourceImageBufferType=eImageBufferType::eIBT_None, const eImageBufferType &targetImageBufferType=eImageBufferType::eIBT_None)
 retrieve linear transformation associated to a given color space conversion operation More...
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometry (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY, const VolumeGeometry &volumeGeometry, const ColorGeometry &colorGeometry, const TemporalGeometry &temporalGeometry)
 create an image geometry
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometry2d (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY)
 create a 2d image geometry
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometry3d (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY, const ipUInt64 sizeZ)
 create a 3d image geometry
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometryRgb2d (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY)
 create a rgb 2d image geometry
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometryRgb3d (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY, const ipUInt64 sizeZ)
 create a rgb 3d image geometry
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometry2d (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY, const eColorGeometryType &colorGeometryType)
 create a color 2d image geometry More...
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometry3d (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY, const ipUInt64 sizeZ, const eColorGeometryType &colorGeometryType)
 create a color 3d image geometry More...
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometrySeq2d (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY, const ipUInt64 sizeT)
 create a sequence of 2d images geometry
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometrySeq3d (const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY, const ipUInt64 sizeZ, const ipUInt64 sizeT)
 create a sequence of 3d images geometry
 
IPSDKIMAGE_API bool ipsdk::image::haveSameSize (const BaseImageGeometry &geometry1, const BaseImageGeometry &geometry2)
 compare two image geometry size More...
 
IPSDKIMAGE_API bool ipsdk::image::isEqual (const BaseImageGeometry &geometry1, const BaseImageGeometry &geometry2)
 compare two image geometry More...
 
IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::createBoundingGeometry (const BaseImageGeometry &geometry1, const BaseImageGeometry &geometry2, const eImageBufferType &outputBufferType)
 function allowing to create a bounding geometry for two input images geometries and a target output buffer More...
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretVolumeSequence (BaseImage &img)
 reinterpret an image geometry Volume <-> Sequence
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretVolumeSequence (ImagePtr &pImg)
 reinterpret an image geometry Volume <-> Sequence
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretVolumeToSequence (BaseImage &img)
 reinterpret an image geometry Volume <-> Sequence
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretVolumeToSequence (ImagePtr &pImg)
 reinterpret an image geometry Volume <-> Sequence
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretSequenceToVolume (BaseImage &img)
 reinterpret an image geometry Volume <-> Sequence
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretSequenceToVolume (ImagePtr &pImg)
 reinterpret an image geometry Volume <-> Sequence
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretVolumeMultiChannel (BaseImage &img)
 reinterpret an image geometry Volume <-> MultiChannel
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretVolumeMultiChannel (ImagePtr &pImg)
 reinterpret an image geometry Volume <-> MultiChannel
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretSequenceMultiChannel (BaseImage &img)
 reinterpret an image geometry Sequence <-> MultiChannel
 
IPSDKIMAGE_API ImagePtr ipsdk::image::reinterpretSequenceMultiChannel (ImagePtr &pImg)
 reinterpret an image geometry Sequence <-> MultiChannel
 

Detailed Description

Image geometry concepts in IPSDK.

Introduction

The geometry characterizes the image properties, carrying :

The available buffer types are :

Binary images are unsigned 8-bits data used as logical mask images and its possible values are 0 or 1. As for Label8, Label16 and Label32 images, they have unsigned 8, 16 or 32-bits data type and are used to identify objects in the image by an integer value.

The figure below shows an input image (left), its thresholded and segmented binary version (middle) and the labelled image assigning a label (represented by a color in the image) to the pixels of a blob.

Binary_Label_images.png

See ipsdk::image::eImageBufferType for more details.

Geometry creation

Functions to create a geommetry

Several functions allow to create a geometry, specifying the required information. Here is the list of these functions :

Functions to reinterpret a geommetry

It is possible to reinterpret an image geometry without creating a new image. For instance, a 3D image can instantly become a multi-channel or a sequence image. The conversion are availeble through the following functions:

Please, note that the input image must have 3 dimensions. This means that:

Geometry components

We can distinguish three kinds of geometry :

Color models

RGB color model

The RGB color model is associated to the three primary colors :

RGB.png
The RGB color model mapped to a cube. The horizontal x-axis as red values increasing to the left, y-axis as blue increasing to the lower right and the vertical z-axis as green increasing towards the top. The origin, black, is the vertex hidden from view.
See also
http://en.wikipedia.org/wiki/RGB_color_model

RGBA color model

The RGB color model is associated to the three primary colors :

with an additional Alpha channel which can be used for example to handle transparency.

RGB_illumination.jpg
A representation of additive color mixing. Projection of primary color lights on a white screen shows secondary colors where two overlap; the combination of all three of red, green, and blue in equal intensities makes white.
See also
https://en.wikipedia.org/wiki/RGBA_color_space
http://en.wikipedia.org/wiki/RGB_color_model

XYZ Rec 709 color models

The CIE system is based on the description of color as a luminance component Y, as described above, and two additional components X and Z.

It is defined such that all visible colours (physiologically perceived colors in human color vision) can be defined using only positive values, and, the Y value is luminance. We use the CIE XYZ color space as defined by ITU-R BT.709-6 Recommendation with D65 white point.

The standardized transformation settled upon by the CIE special commission was as follows:

\[ \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = \begin{bmatrix} 3.24045 & -1.53714 & -0.49853 \\ -0.96927 & 1.87601 & 0.041567 \\ 0.055643 & -0.20403 & 1.05723 \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} \]

The inverse matrix is then given by :

\[ \begin{bmatrix} R \\ G \\ B \end{bmatrix} = \begin{bmatrix} 0.41246 & 0.35758 & 0.18044 \\ 0.21267 & 0.71515 & 0.07218 \\ 0.01933 & 0.11919 & 0.95030 \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} \]

XYZ.png
BT.709 primaries shown on the CIE 1931 x, y chromaticity diagram. Colors within the BT.709 color gamut will fall within the triangle that connects the primaries. Also shown is BT.709's white point, Illuminant D65.
See also
Digital Video and HD, Algorithms and Interfaces (2nd ed.), Poynton, 2012-02-07.
https://fr.wikipedia.org/wiki/SRGB

YCbCr and YPbPr color models

The YCbCr color model defines a color space where :

YCbCr.png
Example of Cb-Cr color plane
RGB-YCbCr.png
A RGB image along with its Y, Cb, and Cr components respectively.

YCbCr is sometimes abbreviated to YCC and is used in case of digital signal. YPbPr, sometimes called Yuv, is used in case of analog signal.

YCbCr and YPbPr are then closely related since color spaces are linked by following equations :

\[ \begin{bmatrix} Y \\ C_b \\ C_r \end{bmatrix} = \begin{bmatrix} Y \\ \frac{224}{219} P_b + 2^{n-1} \\ \frac{224}{219} P_r + 2^{n-1} \end{bmatrix} \]

where $n$ stands for the number of the bit length of the quantized signal. Note that $2^{n-1}$ normalization term is only added in case of unsigned int data type.

The standardized transformation settled upon by the CIE special commission, as defined by ITU-R BT.709-6 Recommendation with D65 white point, is given by :

\[ \begin{bmatrix} Y \\ P_b \\ P_r \end{bmatrix}_{709} = \begin{bmatrix} 0.2126 & 0.7152 & 0.0722 \\ -0.11457 & -0.38543 & 0.5 \\ 0.5 & -0.45415 & -0.04585 \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} \]

The inverse matrix is then given by :

\[ \begin{bmatrix} R \\ G \\ B \end{bmatrix} = \begin{bmatrix} 1.0 & 0 & 1.5748 \\ 1.0 & -0.18732 & -0.46812 \\ 1.0 & 1.8556 & 0 \end{bmatrix} \begin{bmatrix} Y \\ P_b \\ P_r \end{bmatrix}_{709} \]

See also
https://en.wikipedia.org/wiki/YCbCr
Digital Video and HD, Algorithms and Interfaces (2nd ed.), Poynton, 2012-02-07.

L*a*b color model

This color space were defined by the International Commission on Illumination (CIE) in 1976.

Its three components stand for :

These values can be obtained from XYZ Rec 709 color models as follow :

\[ \begin{cases} L^*=116 f \left( \frac{Y}{Y_n} \right ) - 16 \\ a^*=500 \left( f \left( \frac{X}{X_n} \right ) - f \left( \frac{Y}{Y_n} \right ) \right ) \\ b^*=200 \left( f \left( \frac{Y}{Y_n} \right ) - f \left( \frac{Z}{Z_n} \right ) \right ) \end{cases} \]

where :

\[ f(t)=\begin{cases} \sqrt[3]{t} & \text{if}\ t>\delta^3 \\ \frac{t}{3\delta^2}+\frac{4}{29} & \text{otherwise} \end{cases}, \delta = \frac{6}{29} \]

and :

\[ \begin{cases} X_n=0.95047 \\ Y_n=1.0 \\ Z_n=1.08883 \end{cases} \]

The reverse transformation is then given by :

\[ \begin{cases} X=X_nf^{-1}\left(\frac{L^*+16}{116}+\frac{a^*}{500} \right) \\ Y=Y_nf^{-1}\left(\frac{L^*+16}{116} \right) \\ Z=Z_nf^{-1}\left(\frac{L^*+16}{116}-\frac{b^*}{200} \right) \end{cases} \]

where :

\[ f^{-1}(t)=\begin{cases} t^3 & \text{if}\ t>\delta \\ 3\delta^2\left(t-\frac{4}{29}\right) & \text{otherwise} \end{cases} \]

Lab.png
CIELAB color space front view
See also
https://en.wikipedia.org/wiki/CIELAB_color_space
https://en.wikipedia.org/wiki/Standard_illuminant
Digital Video and HD, Algorithms and Interfaces (2nd ed.), Poynton, 2012-02-07.

L*u*v* color model

This color space were adopted by the International Commission on Illumination (CIE) in 1976

Its three components stand for :

These values can be obtained from XYZ Rec 709 color models as follow :

\[ \begin{cases} L^*=\begin{cases} \left(\frac{29}{3}\right)^3\frac{Y}{Y_n}, & \text{if}\ \frac{Y}{Y_n}<=\left(\frac{6}{29}\right)^3 \\ 116\left(\frac{Y}{Y_n}\right)^{\frac{1}{3}}-16, & \text{otherwise} \end{cases} \\ u^*=13L^*({u}'-{u_n}') \\ v^*=13L^*({v}'-{v_n}') \end{cases} \]

where :

\[ \begin{cases} {u}'=\frac{4X}{X+15Y+3Z} \\ {v}'=\frac{9Y}{X+15Y+3Z} \end{cases} \]

and :

\[ \begin{cases} Y_n=0.329024 \\ {u_n}'=0.1978 \\ {v_n}'=0.4683 \end{cases} \]

The reverse transformation is then given by :

\[ \begin{cases} {u}'=\frac{u^*}{13L^*}+{u_n}' \\ {v}'=\frac{v^*}{13L^*}+{v_n}' \end{cases} \]

and then :

\[ \begin{cases} Y=\begin{cases} Y_n L^* \left(\frac{3}{29}\right)^3, & \text{if}\ L^*<=8 \\ Y_n \left(\frac{L^*+16}{116}\right)^3, & \text{otherwise} \\ \end{cases} \\ X=Y\frac{9{u}'}{4{v}'} \\ Z=Y\frac{12-3{u}'-20{v}'}{4{v}'} \end{cases} \]

Luv.png
(u', v') chromaticity diagram, also known as the CIE 1976 UCS (uniform chromaticity scale) diagram.
See also
https://en.wikipedia.org/wiki/CIELUV
https://en.wikipedia.org/wiki/Standard_illuminant
Digital Video and HD, Algorithms and Interfaces (2nd ed.), Poynton, 2012-02-07.

HLS color model

HLS color space stands for Hue, Lightness and Saturation color space where :

Transformation from a RGB color model is given by :

\[ \begin{cases} M=max(R, G, B) \\ m=min(R, G, B) \\ C = M-m \\ {H}' = \begin{cases} 0 & \text{if}\ C=0 \\ \frac{G-B}{C} & \text{if}\ M=R \\ \frac{B-R}{C}+2 & \text{if}\ M=G \\ \frac{R-G}{C}+4 & \text{if}\ M=B \end{cases} \\ H = modulo(60{H}', 360) \\ L=\frac{M+m}{2} \\ S=\begin{cases} 0 & \text{if}\ L=1 \\ \frac{C}{1-\left | 2L-1 \right |} & otherwise \end{cases} \end{cases} \]

On output these components take value in :

Reverse transformation is then given by :

\[ \begin{cases} C=(1-\left | 2L-1 \right |) \times S \\ {H}'=\frac{H}{60} \\ X=C \times (1-\left | {H}' \mod 2 - 1 \right |) \\ (R, G, B) = (L-\frac{C}{2}) + \begin{cases} (C, X, 0) & \text{if}\ 0 <= {H}' <= 1 \\ (X, C, 0) & \text{if}\ 1 <= {H}' <= 2 \\ (0, C, X) & \text{if}\ 2 <= {H}' <= 3 \\ (0, X, C) & \text{if}\ 3 <= {H}' <= 4 \\ (X, 0, C) & \text{if}\ 4 <= {H}' <= 5 \\ (C, 0, X) & \text{if}\ 5 <= {H}' <= 6 \\ \end{cases} \end{cases} \]

HLS.png
HLS cylinder.
See also
https://en.wikipedia.org/wiki/HSL_and_HSV

HSV color model

HSV color space stands for Hue, Saturation and Value color space where :

Transformation from a RGB color model is given by :

\[ \begin{cases} M=max(R, G, B) \\ m=min(R, G, B) \\ C = M-m \\ {H}' = \begin{cases} 0 & \text{if}\ C=0 \\ \frac{G-B}{C} & \text{if}\ M=R \\ \frac{B-R}{C}+2 & \text{if}\ M=G \\ \frac{R-G}{C}+4 & \text{if}\ M=B \end{cases} \\ H = modulo(60{H}', 360) \\ V=M \\ S=\begin{cases} 0 & \text{if}\ V=0 \\ \frac{C}{V} & otherwise \end{cases} \end{cases} \]

On output these components take value in :

Reverse transformation is then given by :

\[ \begin{cases} C=V \times S \\ {H}'=\frac{H}{60} \\ X=C \times (1-\left | {H}' \mod 2 - 1 \right |) \\ (R, G, B) = (V-C) + \begin{cases} (C, X, 0) & \text{if}\ 0 <= {H}' <= 1 \\ (X, C, 0) & \text{if}\ 1 <= {H}' <= 2 \\ (0, C, X) & \text{if}\ 2 <= {H}' <= 3 \\ (0, X, C) & \text{if}\ 3 <= {H}' <= 4 \\ (X, 0, C) & \text{if}\ 4 <= {H}' <= 5 \\ (C, 0, X) & \text{if}\ 5 <= {H}' <= 6 \\ \end{cases} \end{cases} \]

HSV.png
HSV cylinder.
See also
https://en.wikipedia.org/wiki/HSL_and_HSV

Enumeration Type Documentation

◆ eVolumeGeometryType

Volume geometry type.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eVGT_2d 

2d geometry

eVGT_3d 

3d geometry

◆ eColorGeometryType

Color geometry type.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCGT_Grey 

grey level geometry

eCGT_Rgb 

rgb color geometry

eCGT_Rgba 

rgba color geometry

eCGT_XYZ 

CIE XYZ color space as defined by ITU-R BT.709-6 Recommendation (with D65 white point)

eCGT_YPbPr 

YPbPr color geometry with respect to ITU-R BT.709-6 Recommendation (with D65 white point)

eCGT_YCbCr 

YCbCr color geometry with respect to ITU-R BT.709-6 Recommendation (with D65 white point)

eCGT_CieLab 

CIE L*a*b* color space with respect to CIE definition in 1976.

eCGT_CieLuv 

CIE L*u*v* color space with respect to CIE definition in 1976.

eCGT_HLS 

HLS (Hue, Lightness, Saturation) color space.

eCGT_HSV 

user defined color geometry

HSV (Hue, Saturation, Value) color space

◆ eTemporalGeometryType

Temporal geometry type.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eTGT_Single 

single element temporal geometry

eTGT_Sequence 

sequence of elements temporal geometry

◆ eRgbColorComponent

Color components associated to RGB color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_Red 

Red component.

eCC_Green 

Green component.

eCC_Blue 

Blue component.

◆ eRgbaColorComponent

Color components associated to RGBA color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_Red 

Red component.

eCC_Green 

Green component.

eCC_Blue 

Blue component.

eCC_Alpha 

Alpha component.

◆ eXYZColorComponent

Color components associated to XYZ color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_X 

first chroma component

eCC_Y 

Luma component.

eCC_Z 

second chroma chroma

◆ eYPbPrColorComponent

Color components associated to YPbPr color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_Y 

Luma component.

eCC_Pb 

blue chroma

eCC_Pr 

red chroma

◆ eYCbCrColorComponent

Color components associated to YCbCr color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_Y 

Luma component.

eCC_Cb 

blue chroma

eCC_Cr 

red chroma

◆ eLabColorComponent

Color components associated to CIE Lab color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_L 

Lightness component.

eCC_A 

green/red color component

eCC_B 

blue/yellow color component

◆ eLuvColorComponent

Color components associated to CIE Luv color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_L 

Lightness component.

eCC_U 

first chroma color component

eCC_V 

second chroma color component

Value component.

◆ eHLSColorComponent

Color components associated to HLS color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_H 

Hue component.

eCC_L 

Lightness component.

eCC_S 

Saturation component.

◆ eHSVColorComponent

Color components associated to HSV color geometry.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eCC_H 

Hue component.

eCC_S 

Saturation component.

eCC_V 

second chroma color component

Value component.

◆ eImageGeometryType

Image geometry type.

Note
This object is associated to a strong enumerate definition
See also
IPSDK_Enum
Enumerator
eIGT_Homogeneous 

Homogeneous image geometry (all sequence components are associated to same buffer types)

eIGT_Heterogeneous 

Heterogeneous image geometry (sequence components are associated to different buffer types)

Function Documentation

◆ getColorGeometrySize()

IPSDKIMAGE_API ipUInt32 ipsdk::image::getColorGeometrySize ( const eColorGeometryType colorGeometryType)

retrieve size (number of plans) of a color geometry

Note
special case of ipsdk::image::eColorGeometryType::eCGT_User is associated to a null value

◆ getLinearTransform()

IPSDKIMAGE_API ipsdk::math::Matrix ipsdk::image::getLinearTransform ( const eColorGeometryType sourceColorSpace,
const eColorGeometryType targetColorSpace,
const eImageBufferType sourceImageBufferType = eImageBufferType::eIBT_None,
const eImageBufferType targetImageBufferType = eImageBufferType::eIBT_None 
)

retrieve linear transformation associated to a given color space conversion operation

If input and output color spaces are associated to sizes :

  • sizeIn = getColorGeometrySize(sourceColorSpace)
  • sizeOut = getColorGeometrySize(targetColorSpace) then output matrix is sizeOut x (sizeIn+1) Last matrix column is used to encapsulate translation in linear operation
    Note
    note that sourceImageBufferType and targetImageBufferType are only used in case of operations depending on image sampling (such as YCbCr)
    Exceptions
    ipsdk::image::IPSDKImageExceptionif hasLinearTransform(sourceColorSpace, targetColorSpace) == false

◆ geometry2d()

IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometry2d ( const eImageBufferType imageBufferType,
const ipUInt64  sizeX,
const ipUInt64  sizeY,
const eColorGeometryType colorGeometryType 
)

create a color 2d image geometry

Exceptions
ipsdk::image::IPSDKImageExceptionif getColorGeometrySize(colorGeometryType) == 0

◆ geometry3d()

IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::geometry3d ( const eImageBufferType imageBufferType,
const ipUInt64  sizeX,
const ipUInt64  sizeY,
const ipUInt64  sizeZ,
const eColorGeometryType colorGeometryType 
)

create a color 3d image geometry

Exceptions
ipsdk::image::IPSDKImageExceptionif getColorGeometrySize(colorGeometryType) == 0

◆ haveSameSize()

IPSDKIMAGE_API bool ipsdk::image::haveSameSize ( const BaseImageGeometry geometry1,
const BaseImageGeometry geometry2 
)

compare two image geometry size

Exceptions
ipsdk::image::IPSDKImageExceptionif geometry1.isInit() == false
ipsdk::image::IPSDKImageExceptionif geometry2.isInit() == false

◆ isEqual()

IPSDKIMAGE_API bool ipsdk::image::isEqual ( const BaseImageGeometry geometry1,
const BaseImageGeometry geometry2 
)

compare two image geometry

Exceptions
ipsdk::image::IPSDKImageExceptionif geometry1.isInit() == false
ipsdk::image::IPSDKImageExceptionif geometry2.isInit() == false

◆ createBoundingGeometry()

IPSDKIMAGE_API ImageGeometryPtr ipsdk::image::createBoundingGeometry ( const BaseImageGeometry geometry1,
const BaseImageGeometry geometry2,
const eImageBufferType outputBufferType 
)

function allowing to create a bounding geometry for two input images geometries and a target output buffer

Returns
a geometry with N = max(N1, N2) plans and with plan size equal to input plan with maximum numer of pixels
Exceptions
ipsdk::image::IPSDKImageExceptionif geometry1.isInit() == false
ipsdk::image::IPSDKImageExceptionif geometry2.isInit() == false