算法流程
- 将图像转化成灰度图
- 计算全部的平均灰度W
- 选定一个阈值T,将所有的像素分成N0,N1两个部分
- 分别计算N0的灰度w0和N1的灰度w1
- 计算类间方差g=N0*(w0-w)^2+(w1-w)*N1
- 采用遍历法找到T,使其对应的g最大
实现代码
import skimage
import numpy
import matplotlib as plt
from skimage import filters
img=skimage.color.rgb2gray(img) //将图片转化为灰度图
theta=filters.threshold_otsu(img,nbins=256)//调用filters中的方法计算出T
img_seg=np.zeros(img.shape)
img_seg[img>theta]=1
plt.imshow(img_seg) //展示分割后的图片