IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit

algorithm allowing to unroll surface of a ring More...

IPSDKIPLGEOMETRICTRANSFORM_API image::ImagePtr ipsdk::imaproc::gtrans::unrollRingImg (const image::ImageConstPtr &pInImg, const attr::Coords2dConstPtr &pInCenter2d, const ipReal64 inRadius, const ipUInt32 inRingHalfThickness, const ipUInt64 inOptOutSizeX)
 wrapper function for ring surface unrolling More...
 
IPSDKIPLGEOMETRICTRANSFORM_API image::ImagePtr ipsdk::imaproc::gtrans::unrollRingImg (const image::ImageConstPtr &pInImg, const attr::Coords2dConstPtr &pInCenter2d, const ipReal64 inRadius, const ipUInt32 inRingHalfThickness, const ipReal64 inOptTheta0, const attr::eInterpolationPolicy &inOptInterpolationPolicy, const ipUInt64 inOptOutSizeX)
 wrapper function for ring surface unrolling More...
 
IPSDKIPLGEOMETRICTRANSFORM_API void ipsdk::imaproc::gtrans::unrollRingImg (const image::ImageConstPtr &pInImg, const attr::Coords2dConstPtr &pInCenter2d, const ipReal64 inRadius, const ipUInt32 inRingHalfThickness, const ipReal64 inOptTheta0, const attr::eInterpolationPolicy &inOptInterpolationPolicy, const image::ImagePtr &pOutImg)
 wrapper function for ring surface unrolling More...
 

Detailed Description

algorithm allowing to unroll surface of a ring

This algorithm allows to unroll surface of a ring into an image to a rectangular image area.

Given an input image $InImg$, and the following information :

algorithm will compute the unrolled surface of considered ring with respect to following figure :

unrollRingImg1.png

Output image can be automatically created, in this case, user must setup $InOptOutSizeX$ parameter.

Here is an example of application of UnrollRingImg algorithm on a 2d image :

unrollRingImg2.png

Here is an other example of application of UnrollRingImg algorithm on a 2d image :

unrollRingImg3.png

This algorithm can also be used on 3d cylinder oriented with respect to z axis :

unrollRingImg3d1.png

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InImg [Input] image for processing operation X
ipsdk::imaproc::attr::InCenter2d [Input] 2d center X
ipsdk::imaproc::attr::InRadius [Input] Radius X
ipsdk::imaproc::attr::InRingHalfThickness [Input] half thickness for ring used during processing X
ipsdk::imaproc::attr::InOptTheta0 [Input Optional] starting angle offset value, in radians X
ipsdk::imaproc::attr::InOptInterpolationPolicy [Input Optional] interpolation policy used to extract local data from image X
ipsdk::imaproc::attr::InOptOutSizeX [Input Optional] size of output image along x-axis X
ipsdk::imaproc::attr::InOptTargetTile2dSideLength [Input Optional] target processing size for tile 2d (side length) X
ipsdk::imaproc::attr::OutImg [Output] image for processing operation customOutput (_pOutImg, outputUnrollRing(_pInImg,_pInOptOutSizeX,_pInRingHalfThickness))

Global Rule description

Global rule description for algorithm :
ipsdk::imaproc::matchSize (eMatchImageSizeType::eMIST_ZCT,_pInImg,_pOutImg) && 
ipsdk::imaproc::matchBufferType (_pInImg,_pOutImg) && 
ipsdk::imaproc::gtrans::wholeRingIsInsideImg (_pInImg,_pInCenter2d,_pInRadius,_pInRingHalfThickness) && 
ipsdk::imaproc::customImageProperty (_pOutImg,
 ipsdk::imaproc::gtrans::matchUnrollingOutput (_pOutImg,_pInOptOutSizeX,_pInRingHalfThickness))

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLGeometricTransform as gtrans

Code Example

# opening of input image
inImg = PyIPSDK.loadTiffImageFile(inputImg2dPath1)
# process ring unrolling in 2d case
center1 = PyIPSDK.createCoords2d(210, 203);
radius1 = 125;
ringHalfThickness1 = 50;
outSizeX1 = 1000;
outImg2d1 = gtrans.unrollRingImg(inImg, center1, radius1, ringHalfThickness1, outSizeX1);
# opening input 3d image
inImg3d = PyIPSDK.loadTiffImageFile(inputImg3dPath1);
# process ring unrolling in 3d case
center2 = PyIPSDK.createCoords2d(52, 40);
radius2 = 15;
ringHalfThickness2 = 10;
outSizeX2 = 100;
outImg3d1 = gtrans.unrollRingImg(inImg3d, center2, radius2, ringHalfThickness2, outSizeX2);

Example of C++ code :

Example informations

Associated library

IPSDKIPLGeometricTransform

Header file

Code Example

// opening input 2d image
ImagePtr pInImg = loadTiffImageFile(inputImg2dPath1);
// process ring unrolling in 2d case
Coords2dPtr pCenter1 = createCoords2d(210, 203);
const ipReal64 radius1 = 125;
const ipUInt32 ringHalfThickness1 = 50;
const ipUInt32 outSizeX1 = 1000;
ImagePtr pOutImg2d1 = unrollRingImg(pInImg, pCenter1, radius1, ringHalfThickness1, outSizeX1);
// opening input 3d image
ImagePtr pInImg3d = loadTiffImageFile(inputImg3dPath1);
// process ring unrolling in 3d case
Coords2dPtr pCenter2 = createCoords2d(52, 40);
const ipReal64 radius2 = 15;
const ipUInt32 ringHalfThickness2 = 10;
const ipUInt32 outSizeX2 = 100;
ImagePtr pOutImg3d1 = unrollRingImg(pInImg3d, pCenter2, radius2, ringHalfThickness2, outSizeX2);
See also
UnrollRingImgLvl1
UnrollRingImgLvl2
UnrollRingImgLvl3

Function Documentation

◆ unrollRingImg() [1/3]

IPSDKIPLGEOMETRICTRANSFORM_API image::ImagePtr ipsdk::imaproc::gtrans::unrollRingImg ( const image::ImageConstPtr pInImg,
const attr::Coords2dConstPtr pInCenter2d,
const ipReal64  inRadius,
const ipUInt32  inRingHalfThickness,
const ipUInt64  inOptOutSizeX 
)

wrapper function for ring surface unrolling

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ unrollRingImg() [2/3]

IPSDKIPLGEOMETRICTRANSFORM_API image::ImagePtr ipsdk::imaproc::gtrans::unrollRingImg ( const image::ImageConstPtr pInImg,
const attr::Coords2dConstPtr pInCenter2d,
const ipReal64  inRadius,
const ipUInt32  inRingHalfThickness,
const ipReal64  inOptTheta0,
const attr::eInterpolationPolicy inOptInterpolationPolicy,
const ipUInt64  inOptOutSizeX 
)

wrapper function for ring surface unrolling

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ unrollRingImg() [3/3]

IPSDKIPLGEOMETRICTRANSFORM_API void ipsdk::imaproc::gtrans::unrollRingImg ( const image::ImageConstPtr pInImg,
const attr::Coords2dConstPtr pInCenter2d,
const ipReal64  inRadius,
const ipUInt32  inRingHalfThickness,
const ipReal64  inOptTheta0,
const attr::eInterpolationPolicy inOptInterpolationPolicy,
const image::ImagePtr pOutImg 
)

wrapper function for ring surface unrolling

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure