IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit

computes look up table used to equalize an histogram More...

IPSDKIPLINTENSITYTRANSFORM_API ipsdk::imaproc::attr::IntensityLUTPtr ipsdk::imaproc::itrans::equalize (const ipsdk::imaproc::attr::HistogramDataConstPtr &pInHistogram, const ipsdk::imaproc::attr::RangeConstPtr &pInOutputRange)
 wrapper function for equalization lut computation. More...
 

Detailed Description

computes look up table used to equalize an histogram

Given an input histogram $InHistoBins$ (associated to $N$ classes) and an output range for values $InOutputRange = [InOutputMin, InOutputMax]$, output look up table $OutIntensityLUT$ is computed as follow :
We first compute cumulative distribution function :

\[ Cdf[i] = \sum_{j=0}^{i}{InHistoBins_{Frequency}[j]} \]

Output look up table $OutIntensityLUT$ is then given by :

\[ OutIntensityLUT[i] = \dfrac{InOutputMax - InOutputMin}{NormFactor}Cdf[i] + InOutputMin \]

where

\[ NormFactor = \sum_{j=0}^{N}{InHistoBins_{Frequency}[j]} \]

See also
http://en.wikipedia.org/wiki/Equalization
http://en.wikipedia.org/wiki/Histogram_equalization

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InHistogram [Input] histogram properties X
ipsdk::imaproc::attr::InOutputRange [Input] output image intensity range for algorithm X
ipsdk::imaproc::attr::OutIntensityLUT [Output] intensity lookup table used by algorithm ipsdk::processor::allocate (_pOutIntensityLUT)

Global Rule description

Global rule description for algorithm :
ipsdk::processor::none ()

Example of Python code :

Example imports

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

Code Example

# opening of input images
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
# computation of image histogram
histo = glbmsr.histogramMsr2d(inImg)
# definition of equalization range
equalizeRange = PyIPSDK.createRange(0, 255)
# equalization lut computation
outLut = itrans.equalize(histo, equalizeRange)

Example of C++ code :

Example informations

Associated library

IPSDKIPLIntensityTransform

Header file

Code Example

// open input image
ImagePtr pInImg = loadTiffImageFile(inputImgPath);
// compute histogram of input image
HistogramDataConstPtr pOutHistogram = histogramMsr(pInImg);
// define an output range for operation
RangePtr pInOutputRange(boost::make_shared<Range>());
pInOutputRange->setValue<Range::Min>(0);
pInOutputRange->setValue<Range::Max>(255);
// compute histogram equalization
IntensityLUTPtr pOutIntensityLUT = equalize(pOutHistogram, pInOutputRange);
See also
EqualizeLvl1

Function Documentation

◆ equalize()

wrapper function for equalization lut computation.

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure