import cv2
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png',0)#原始图像
t1,thd=cv2.threshold(img,127,255,cv2.THRESH_BINARY)#二值化阈值处理
t2,otsu=cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)#最大类间方差法
cv2.imshow("img",img)
cv2.imshow("thd",thd)
cv2.imshow("otus",otsu)
cv2.waitKey()
cv2.destroyAllWindows()


算法:最大类间方差法,也称大律法,简称OTSU,根据当前图像给出最佳的类间分割阈值。最大类间方差法遍历所有可能阈值,从而找到最佳阈值。背景和目标之间的类间方差越大,说明构成图像前景背景差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。
假设图像大小为M × N,背景较暗,像素灰度值小于阈值T的像素个数记作N1,像素灰度大于阈值T的像素个数记作N2,μ为平均灰度,则有



otsu=cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
注意:在使用最大类间方差法时,将阈值设为0,函数cv2.threshold()自动寻找最优阈值,并将该阈值返回。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!