IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Functions

computation of iso data threshold on one image More...

Functions

IPSDKIPLBINARIZATION_API ipReal64 ipsdk::imaproc::bin::isoDataThreshold (const ipsdk::image::ImageConstPtr &pInImg, const ipsdk::imaproc::attr::HistogramDataPtr &pHistogram)
 wrapper function for computing the iso data threshold on one image, using the histogram provided as argument More...
 
IPSDKIPLBINARIZATION_API IsoDataResult ipsdk::imaproc::bin::isoDataThresholdImg (const ipsdk::image::ImageConstPtr &pInImg)
 wrapper function for computation of iso data threshold on one image In this version of the function, the histogram of the image is automatically computed, with a bin width of 1.0 More...
 
IPSDKIPLBINARIZATION_API ipReal64 ipsdk::imaproc::bin::isoDataThresholdImg (const ipsdk::image::ImageConstPtr &pInImg, const ipsdk::image::ImagePtr &pOutBinImg)
 wrapper function for computation of iso data threshold on one image In this version of the function, the histogram of the image is automatically computed, with a bin width of 1.0 More...
 
IPSDKIPLBINARIZATION_API IsoDataResult ipsdk::imaproc::bin::isoDataThresholdImg (const ipsdk::image::ImageConstPtr &pInImg, const ipsdk::imaproc::attr::HistogramDataPtr &pHistogram)
 wrapper function for computation of iso data threshold on one image histogram used to compute the threshold is provided as argument of the function More...
 
IPSDKIPLBINARIZATION_API ipReal64 ipsdk::imaproc::bin::isoDataThresholdImg (const ipsdk::image::ImageConstPtr &pInImg, const ipsdk::imaproc::attr::HistogramDataPtr &pHistogram, const ipsdk::image::ImagePtr &pOutBinImg)
 wrapper function for computation of iso data threshold on one image histogram used to compute the threshold is provided as argument of the function More...
 

Detailed Description

computation of iso data threshold on one image

Ridler and Calvard's method is used to automatically perform the binarization of an input image. It assumes that the image is bi-modal (pixel intensities can be distinguished in 2 classes: background pixels and foreground pixels) and calculate the optimal threshold that separates these 2 classes. The threshold $T$ is the equidistant value between the average intensities of both classes:

See also
Isodata Threshold computation for more details.

On output, binarized image values are given by:

\[ OutBinImg[i] = \begin{cases} 1, & \text{if } InImg[i] \geq T \\ 0, & \text{otherwise} \end{cases} \]

with $T$ the threshold computed from isodata-based method.

Input and output images must have same size.

Here is an example of automatic isodata image thresholding applied to a 8-bits grey level image (on ouput, computed threshold $ \approx 117.54$) :

isoDataThresholdImg.png

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InImg [Input] image for processing operation X
ipsdk::imaproc::attr::InOutOptHistogram [InOut Optional] histogram properties X
ipsdk::imaproc::attr::InOptWeight [Input Optional] Weighting coefficient X
ipsdk::imaproc::attr::OutThreshold [Output] threshold value for image binarization X
ipsdk::imaproc::attr::OutBinImg [Output] binary image for processing operation ipsdk::imaproc::duplicateInOut (_pOutBinImg, _pInImg, image::eImageBufferType::eIBT_Binary)

Global Rule description

Global rule description for algorithm :
ipsdk::imaproc::matchSize (_pInImg,_pOutBinImg)

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLBinarization as bin

Code Example

# opening of input images
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
# otsu threshold computation
outImg, isoDataThresholdValue = bin.isoDataThresholdImg(inImg)

Example of C++ code :

Example informations

Associated library

IPSDKIPLBinarization

Header file

Code Example

// open input image
ImageGeometryPtr pInputImageGeometry = geometry2d(inType, sizeX, sizeY);
ImagePtr pInImg = loadRawImageFile(inPath, *pInputImageGeometry);
// Sample with a generated output image
// ------------------------------------
// compute thresholded output image
IsoDataResult isoDataResult = isoDataThresholdImg(pInImg);
// Sample with a provided output image
// -----------------------------------
// create output image
ImageGeometryPtr pOutputImageGeometry = geometry2d(eImageBufferType::eIBT_Binary, sizeX, sizeY);
boost::shared_ptr<MemoryImage> pOutImg(boost::make_shared<MemoryImage>());
pOutImg->init(*pOutputImageGeometry);
// compute thresholded output image
ipReal64 fOutThreshold = isoDataThresholdImg(pInImg, pOutImg);
See also
IsoDataThresholdImgLvl1

Function Documentation

◆ isoDataThreshold()

IPSDKIPLBINARIZATION_API ipReal64 ipsdk::imaproc::bin::isoDataThreshold ( const ipsdk::image::ImageConstPtr pInImg,
const ipsdk::imaproc::attr::HistogramDataPtr pHistogram 
)

wrapper function for computing the iso data threshold on one image, using the histogram provided as argument

Note
the binarized image is not computed
Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ isoDataThresholdImg() [1/4]

IPSDKIPLBINARIZATION_API IsoDataResult ipsdk::imaproc::bin::isoDataThresholdImg ( const ipsdk::image::ImageConstPtr pInImg)

wrapper function for computation of iso data threshold on one image In this version of the function, the histogram of the image is automatically computed, with a bin width of 1.0

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ isoDataThresholdImg() [2/4]

IPSDKIPLBINARIZATION_API IsoDataResult ipsdk::imaproc::bin::isoDataThresholdImg ( const ipsdk::image::ImageConstPtr pInImg,
const ipsdk::imaproc::attr::HistogramDataPtr pHistogram 
)

wrapper function for computation of iso data threshold on one image histogram used to compute the threshold is provided as argument of the function

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ isoDataThresholdImg() [3/4]

IPSDKIPLBINARIZATION_API ipReal64 ipsdk::imaproc::bin::isoDataThresholdImg ( const ipsdk::image::ImageConstPtr pInImg,
const ipsdk::image::ImagePtr pOutBinImg 
)

wrapper function for computation of iso data threshold on one image In this version of the function, the histogram of the image is automatically computed, with a bin width of 1.0

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ isoDataThresholdImg() [4/4]

IPSDKIPLBINARIZATION_API ipReal64 ipsdk::imaproc::bin::isoDataThresholdImg ( const ipsdk::image::ImageConstPtr pInImg,
const ipsdk::imaproc::attr::HistogramDataPtr pHistogram,
const ipsdk::image::ImagePtr pOutBinImg 
)

wrapper function for computation of iso data threshold on one image histogram used to compute the threshold is provided as argument of the function

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure