IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit

binarize an input image according an adaptive threshold based on the mean intensity of the pixel's neighbourhood More...

IPSDKIPLBINARIZATION_API ipsdk::image::ImagePtr ipsdk::imaproc::bin::adaptiveThresholdMean2dImg (const ipsdk::image::ImageConstPtr &pInImg, const ipUInt64 halfKnlSize)
 wrapper function for binarize an input image according an adaptive threshold based on the mean intensity of the pixel's neighbourhood More...
 
IPSDKIPLBINARIZATION_API void ipsdk::imaproc::bin::adaptiveThresholdMean2dImg (const image::ImageConstPtr &pInImg, const ipUInt64 halfKnlSize, const ipsdk::image::ImagePtr &pOutBinImg)
 wrapper function for binarize an input image according an adaptive threshold based on the mean intensity of the pixel's neighbourhood More...
 

Detailed Description

binarize an input image according an adaptive threshold based on the mean intensity of the pixel's neighbourhood

For each pixel, the algorithm computes a threshold according to a neighbourhood described by $InKnlSize$. The computed threshold $T$ is the mean intensity along the pixel's neighbourhood $\aleph$ :

\[ T(x, y) = \frac{1}{N} \sum_{(i, j) \in \aleph}{InImg(x+i, y+j)} \]

Where $N$ is the number of pixels in $\aleph$.

This algorithm is equivalent to the Adaptive Threshold 2d binarization algorithm, with each kernel coefficient set to $1/N$. However, it is optimized to compute a mean adaptive threshold based binarization and yields better performances.

Note
To avoid a noisy binarization, it is advised to filter the input image with a median filter before computing the binarization.

Here is an example of an adaptive image thresholding applied to a 8-bits grey level image, with a kernel size of 5 ( $InKnlSize=2$) :

adpativeThresholdMean2dImg.png

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InImg [Input] image for processing operation X
ipsdk::imaproc::attr::InHalfKnlSize [Input] half kernel size (square or cubic kernel) 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)
# threshold computation with a given kernel
outImg = bin.adaptiveThresholdMean2dImg(inImg, halfKnlSize)

Example of C++ code :

Example informations

Associated library

IPSDKIPLBinarization

Header file

Code Example

// Loading the input image
// ------------------------------------
ImagePtr pInImg = loadTiffImageFile(inputPath);
// Sample with a generated output image
// ------------------------------------
// compute absolute value of input image
ImagePtr pAutoOutImg = adaptiveThresholdMean2dImg(pInImg, halfKnlSize);
// Sample with a provided output image
// -----------------------------------
// Retrieve the input image size
const ipUInt64 sizeX = pInImg->getSizeX();
const ipUInt64 sizeY = pInImg->getSizeY();
// create output image
ImageGeometryPtr pOutputImageGeometry = geometry2d(eImageBufferType::eIBT_Binary, sizeX, sizeY);
boost::shared_ptr<MemoryImage> pOutImg(boost::make_shared<MemoryImage>());
pOutImg->init(*pOutputImageGeometry);
// compute absolute value of input image
adaptiveThresholdMean2dImg(pInImg, halfKnlSize, pOutImg);
See also
AdaptiveThresholdMean2dImgLvl1
AdaptiveThresholdMean2dImgLvl2
AdaptiveThresholdMean2dImgLvl3

Function Documentation

◆ adaptiveThresholdMean2dImg() [1/2]

IPSDKIPLBINARIZATION_API ipsdk::image::ImagePtr ipsdk::imaproc::bin::adaptiveThresholdMean2dImg ( const ipsdk::image::ImageConstPtr pInImg,
const ipUInt64  halfKnlSize 
)

wrapper function for binarize an input image according an adaptive threshold based on the mean intensity of the pixel's neighbourhood

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ adaptiveThresholdMean2dImg() [2/2]

IPSDKIPLBINARIZATION_API void ipsdk::imaproc::bin::adaptiveThresholdMean2dImg ( const image::ImageConstPtr pInImg,
const ipUInt64  halfKnlSize,
const ipsdk::image::ImagePtr pOutBinImg 
)

wrapper function for binarize an input image according an adaptive threshold based on the mean intensity of the pixel's neighbourhood

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure