基于Otsu算法的图像分割

算法流程

  1. 将图像转化成灰度图
  2. 计算全部的平均灰度W
  3. 选定一个阈值T,将所有的像素分成N0,N1两个部分
  4. 分别计算N0的灰度w0和N1的灰度w1
  5. 计算类间方差g=N0*(w0-w)^2+(w1-w)*N1
  6. 采用遍历法找到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) //展示分割后的图片

你可能感兴趣的:(算法,计算机视觉,opencv,图像处理)