Python | Thresholding techniques using OpenCV | Set-3 (Otsu Thresholding)
In the previous posts, Simple Thresholding and Adaptive Thresholding were explained. In Simple Thresholding, the global value of threshold was used which remained constant throughout. In Adaptive thresholding, the threshold value is calculated for smaller regions with different threshold values for different regions with respect to the change in lighting.
In Otsu Thresholding, a value of the threshold isn’t chosen but is determined automatically. A bimodal image (two distinct image values) is considered. The histogram generated contains two peaks. So, a generic condition would be to choose a threshold value that lies in the middle of both the histogram peak values.
We use the Traditional
cv2.threshold function and use
cv2.THRESH_OTSU as an extra flag.
Syntax: cv2.threshold(source, thresholdValue, maxVal, thresholdingTechnique)
-> source: Input Image array (must be in Grayscale).
-> thresholdValue: Value of Threshold below and above which pixel values will change accordingly.
-> maxVal: Maximum value that can be assigned to a pixel.
-> thresholdingTechnique: The type of thresholding to be applied.
Below is the Python code explaining Otsu Thresholding Technique –
The calculation accepts that the picture contains two classes of pixels following foreground and background pixels, it at that point ascertains the ideal limit isolating the two classes with the goal that their consolidated spread is insignificant.