image = | adaptiveThresholdMean2dImg (inImg,halfKnlSize) |
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
. The computed threshold
is the mean intensity along the pixel's neighbourhood
:
Where
is the number of pixels in
.
This algorithm is equivalent to the Adaptive Threshold 2d binarization algorithm, with each kernel coefficient set to
. 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 (
) :
Example of Python code :
Example imports
import PyIPSDK
import PyIPSDK.IPSDKIPLBinarization as bin
Code Example
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
outImg = bin.adaptiveThresholdMean2dImg(inImg, halfKnlSize)
Example of C++ code :
Example informations
Header file
#include <IPSDKIPL/IPSDKIPLBinarization/Processor/AdaptiveThresholdMean2dImg/AdaptiveThresholdMean2dImg.h>
Code Example
ImagePtr pAutoOutImg = adaptiveThresholdMean2dImg(pInImg, halfKnlSize);
const ipUInt64 sizeX = pInImg->getSizeX();
const ipUInt64 sizeY = pInImg->getSizeY();
boost::shared_ptr<MemoryImage> pOutImg(boost::make_shared<MemoryImage>());
pOutImg->init(*pOutputImageGeometry);
adaptiveThresholdMean2dImg(pInImg, halfKnlSize, pOutImg);