Python使用OpenCV的阈值技术第三组(Otsu Thresholding)

在之前的帖子中, 简单阈值和自适应阈值被解释了。在” 简单阈值” 中, 使用的阈值全局值始终保持恒定。在自适应阈值化中, 针对较小区域计算阈值, 相对于照明的变化, 较小区域具有针对不同区域的不同阈值。
在Otsu Thresholding中,阈值不是被选择的,而是自动确定的。考虑一个双峰图像(两个不同的图像值)。生成的直方图包含两个峰。因此,一个通用的条件是选择一个位于两个直方图峰值中间的阈值。
我们使用传统 cv2.threshold功能与用途 cv2.THRESH_OTSU 作为额外的标志。

语法:cv2.threshold(source, thresholdValue, maxVal, thresholdingTechnique)
参数:
-> source:输入图像数组(必须为灰度)。
-> thresholdValue:低于和高于此阈值的阈值, 像素值将相应更改。
-> maxVal:可以分配给像素的最大值。
-> thresholdingTechnique:要应用的阈值类型。
以下是解释Otsu阈值技术的Python代码-
# Python program to illustrate # Otsu thresholding type on an image# organizing imports import cv2 import numpy as np# path to input image is specified and # image is loaded with imread command image1 = cv2.imread( 'input1.jpg' )# cv2.cvtColor is applied over the # image input with applied parameters # to convert the image in grayscale img = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)# applying Otsu thresholding # as an extra flag in binary # thresholding ret, thresh1 = cv2.threshold(img, 120 , 255 , cv2.THRESH_BINARY + cv2.THRESH_OTSU)# the window showing output image # with the corresponding thresholding # techniques applied to the input image cv2.imshow( 'Otsu Threshold' , thresh1)# De-allocate any associated memory usage if cv2.waitKey( 0 ) & 0xff = = 27 : cv2.destroyAllWindows()

输入如下:
Python使用OpenCV的阈值技术第三组(Otsu Thresholding) 输出如下:
Python使用OpenCV的阈值技术第三组(Otsu Thresholding) 该计算接受图片在前景像素和背景像素之后包含两类像素, 在那一点上确定了隔离这两类的理想极限, 目的是使它们的合并散布无关紧要。
【Python使用OpenCV的阈值技术第三组(Otsu Thresholding)】首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读