用otsu算法进行图像阈值化
来源:互联网 发布:asp获取远程json数据 编辑:程序博客网 时间:2024/05/18 12:41
在对一幅灰度图像进行阈值化操作时,首先需要确定阈值,确定阈值的方法有很多种,otsu算法是其中比较好的一种算法。
otsu算法又称作最大类间差算法。阈值化操作所设的阈值将图像中的所有像素点区分为两个类别:前景和背景。otsu假设最优的阈值是能使这两类之间的类间方法最大的一个值。
类间方差的算法为:
M=w1*w2*[u1-u2]^2
其中w1和w2分别是两个类别的比重,即像素个数。u1和u2分别是两个类别的均值。
算法详细说明见维基百科:维基百科:otsu算法
用python写的otsu算法:
getGray函数获取灰度图像的直方图表示,灰度图像img为单通道的。
def getGray(img): numGray=[0 for i in range(pow(2,img.depth))] for h in range(img.height):for w in range(img.width):numGray[int(img[h,w])]+=1 return numGraydef getThres(gray): maxV=0 bestTh=0 w=[0 for i in range(len(gray))] px=[0 for i in range(len(gray))] w[0]=gray[0] px[0]=0 for m in range(1,len(gray)): w[m]=w[m-1]+gray[m] px[m]=px[m-1]+gray[m]*m for th in range(len(gray)): w1=w[th] w2=w[len(gray)-1]-w1 if(w1*w2==0): continue u1=px[th]/w1 u2=(px[len(gray)-1]-px[th])/w2 v=w1*w2*(u1-u2)*(u1-u2) if v>maxV: maxV=v bestTh=th return bestTh
- 用otsu算法进行图像阈值化
- 图像otsu阈值化
- opencv中利用otsu算法进行阈值化
- 自己实现图像阈值化(OTSU)
- 自动阈值法:Otsu法 用MATLAB实现Otsu算法:
- 阈值化 OTSU算法 cvAdaptiveThreshold 函数
- Otsu自适应阈值算法
- OTSU算法提取图像阈值的C语言实现[转载】
- OTSU算法提取图像阈值的C语言实现
- OTSU算法提取图像阈值的C语言实现
- OTSU算法提取图像阈值的C语言实现
- OTSU算法提取图像阈值的C语言实现
- Otsu算法寻找灰度图像中最优分割阈值
- 基于Otsu算法的图像自适应阈值分割
- 图像的阈值化-OTSU、固定阈值法、基于局部的阈值化
- 【OpenCV3图像处理】阈值化操作得到二值图像(附Otsu算法和三角法原理与源码)
- Otsu阈值化
- OTSU阈值化
- Least Common Multiple(最小公倍数)
- 多机数据同步机制Unison+inotify-tools
- 一个 Linux 菜鸟的回忆录
- 【leetcode】N-Queens
- 单例模式【Singleton Pattern】:
- 用otsu算法进行图像阈值化
- hdu 1714 RedField
- mac django install
- GPS坐标转换经纬度及换算方法
- ege初次接触 走迷宫
- 题目1022:游船出租
- Maven4MyEclipse 搭建ssh2+extjs项目(1)创建mavenweb项目
- Flash Player垃圾回收机制
- Feathers项目实战_面板