最大类间方差法

2022-05-28 16:38:05 浏览数 (1)

代码语言:javascript复制
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)

  • img表示输入图像
  • cv2.THRESH_OTSU表示最大类间方差法

注意:在使用最大类间方差法时,将阈值设为0,函数cv2.threshold()自动寻找最优阈值,并将该阈值返回。

cv2

0 人点赞