IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit

application of a look-up table on each 3d volume of an input image algorithm More...

IPSDKIPLINTENSITYTRANSFORM_API ipsdk::image::ImagePtr ipsdk::imaproc::itrans::lutTransform3dImg (const ipsdk::image::ImageConstPtr &pInImg3d, const ipsdk::imaproc::attr::IntensityLUTConstPtr &pLut)
 wrapper function for application of a look-up table on an input image More...
 
IPSDKIPLINTENSITYTRANSFORM_API ipsdk::image::ImagePtr ipsdk::imaproc::itrans::lutTransform3dImg (const ipsdk::image::ImageConstPtr &pInImg3d, const ipsdk::imaproc::attr::PlanIndexedIntensityLUTConstPtr &pPILut)
 wrapper function for application of a look-up table on an input image More...
 
IPSDKIPLINTENSITYTRANSFORM_API void ipsdk::imaproc::itrans::lutTransform3dImg (const ipsdk::image::ImageConstPtr &pInImg3d, const ipsdk::imaproc::attr::IntensityLUTConstPtr &pLut, const ipsdk::image::ImagePtr &pOutImg)
 wrapper function for application of a look-up table on an input image More...
 
IPSDKIPLINTENSITYTRANSFORM_API void ipsdk::imaproc::itrans::lutTransform3dImg (const ipsdk::image::ImageConstPtr &pInImg3d, const ipsdk::imaproc::attr::PlanIndexedIntensityLUTConstPtr &pPILut, const ipsdk::image::ImagePtr &pOutImg)
 wrapper function for application of a look-up table on an input image More...
 

Detailed Description

application of a look-up table on each 3d volume of an input image algorithm

If the image is made of one single volume (single 3d grey levels image), the algorithm applies the look-up table provided by the user to the intensities of the image. If the image is multi-sliced (made of several volumes, like a single 3d RGB image, for instance, or a sequence 3d image, etc.), a collection of look-up tables (one table per plan) is applied to the intensities of the image.

The look-up table is defined using the ipsdk::imaproc::attr::IntensityLUT data item, that is composed of the following parameters:

Considering, for instance, a single 3d grey levels input image InImg and the lookup table LUT to apply, output image OutImg pixels will equal to:

\[ OutImg(x, y, z) = \begin{cases} LUT.lookupTable[0], \text{if } InImg(x, y, z) < LUT.min \\ LUT.lookupTable[(InImg(x, y, z) - LUT.min) / LUT.binWidth], \text{if } LUT.min \leq InImg(x, y, z) < LUT.min + len(LUT.lookupTable) \times LUT.binWidth \\ LUT.lookupTable[len(LUT.lookupTable)-1] , \text{if } InImg(x, y, z) > LUT.min + len(LUT.lookupTable) \times LUT.binWidth \end{cases} \]

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InImg3d [Input] 3d image for operation X
ipsdk::imaproc::attr::InPIIntensityLUT [Input] Plan indexed collection of intensity look-up tables X
ipsdk::imaproc::attr::OutImg [Output] image for processing operation ipsdk::imaproc::duplicateInOut (_pOutImg, _pInImg3d)

Global Rule description

Global rule description for algorithm :
ipsdk::imaproc::matchSize (_pInImg3d,_pOutImg) && 
ipsdk::imaproc::is2d (_pInPIIntensityLUT) && 
//ipsdk::processor::If (
 ipsdk::imaproc::isGrey (_pInPIIntensityLUT), //
 ipsdk::processor::If (
  ipsdk::imaproc::isSingle (_pInPIIntensityLUT), //
  ipsdk::processor::none (), //
  ipsdk::imaproc::matchImagePlans (_pInPIIntensityLUT,_pInImg3d,eImagePlansMatchPolicy::eIPMP_T)), //
 ipsdk::processor::If (
  ipsdk::imaproc::isSingle (_pInPIIntensityLUT), //
  ipsdk::imaproc::matchImagePlans (_pInPIIntensityLUT,_pInImg3d,eImagePlansMatchPolicy::eIPMP_C), //
  ipsdk::imaproc::matchImagePlans (_pInPIIntensityLUT,_pInImg3d,eImagePlansMatchPolicy::eIPMP_CT))),
((ipsdk::imaproc::is2d (_pInPIIntensityLUT) && 
  ipsdk::imaproc::isGrey (_pInPIIntensityLUT) && 
  ipsdk::imaproc::isSingle (_pInPIIntensityLUT)) || 
 ipsdk::imaproc::matchImagePlans (_pInPIIntensityLUT,_pInImg3d,eImagePlansMatchPolicy::eIPMP_CT))

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLGeometricTransform as gtrans
import PyIPSDK.IPSDKIPLIntensityTransform as itrans
import PyIPSDK.IPSDKIPLGlobalMeasure as glbmsr

Code Example

# opening of input images
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
lut = PyIPSDK.createIntensityLUT(0, 50, [255-i*50 for i in range(256)])
autoOutImg = itrans.lutTransform3dImg(inImg, lut)

Example of C++ code :

Example informations

Associated library

IPSDKIPLIntensityTransform

Header file

Code Example

// Sample with a generated output image
// ------------------------------------
ImagePtr pAutoOutImg = lutTransform3dImg(pInImg, pLut);
// Sample with a provided output image
// -----------------------------------
lutTransform3dImg(pInImg, pLut, pOutImg);
See also
LUTTransform3dImgLvl1
LUTTransform3dImgLvl2
LUTTransform3dImgLvl3

Function Documentation

◆ lutTransform3dImg() [1/4]

IPSDKIPLINTENSITYTRANSFORM_API ipsdk::image::ImagePtr ipsdk::imaproc::itrans::lutTransform3dImg ( const ipsdk::image::ImageConstPtr pInImg3d,
const ipsdk::imaproc::attr::IntensityLUTConstPtr pLut 
)

wrapper function for application of a look-up table on an input image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ lutTransform3dImg() [2/4]

IPSDKIPLINTENSITYTRANSFORM_API ipsdk::image::ImagePtr ipsdk::imaproc::itrans::lutTransform3dImg ( const ipsdk::image::ImageConstPtr pInImg3d,
const ipsdk::imaproc::attr::PlanIndexedIntensityLUTConstPtr pPILut 
)

wrapper function for application of a look-up table on an input image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ lutTransform3dImg() [3/4]

IPSDKIPLINTENSITYTRANSFORM_API void ipsdk::imaproc::itrans::lutTransform3dImg ( const ipsdk::image::ImageConstPtr pInImg3d,
const ipsdk::imaproc::attr::IntensityLUTConstPtr pLut,
const ipsdk::image::ImagePtr pOutImg 
)

wrapper function for application of a look-up table on an input image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ lutTransform3dImg() [4/4]

IPSDKIPLINTENSITYTRANSFORM_API void ipsdk::imaproc::itrans::lutTransform3dImg ( const ipsdk::image::ImageConstPtr pInImg3d,
const ipsdk::imaproc::attr::PlanIndexedIntensityLUTConstPtr pPILut,
const ipsdk::image::ImagePtr pOutImg 
)

wrapper function for application of a look-up table on an input image

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure