OpenCV-Python系列之OTSU算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OpenCV-Python系列之OTSU算法
上⼀个教程中,我们谈到了关于图像⼆值化的两种⽅法,⼀种是固定阈值法,另⼀种是⾃适应阈值法,总的来说,⾃适应阈值法在某些⽅⾯要由于固定阈值法,但还没完,这次我们将隆重介绍我们的重量级选⼿,也就是OTSU算法(⼜称为⼤津算法和最⼤类间⽅差法)。

最⼤类间⽅差法是1979年由⽇本学者⼤津提出的,是⼀种⾃适应阈值确定的⽅法,⼜叫⼤津法,简称OTSU,是⼀种基于全局的⼆值化算法,它是根据图像的灰度特性,将图像分为前景和背景两个部分。

当取最佳阈值时,两部分之间的差别应该是最⼤的,在OTSU算法中所采⽤的衡量差别的标准就是较为常见的最⼤类间⽅差。

前景和背景之间的类间⽅差如果越⼤,就说明构成图像的两个部分之间的差别越⼤,当部分⽬标被错分为背景或部分背景被错分为⽬标,都会导致两部分差别变⼩,当所取阈值的分割使类间⽅差最⼤时就意味着错分概率最⼩。

OSTU原理
在⼤津算法中,我们穷举搜索能使类内⽅差最⼩的阈值,定义为两个类的⽅差的加权和:
权重是被阈值 t分开的两个类的概率,⽽是这两个类的⽅差
⼤津证明了最⼩化类内⽅差和最⼤化类间⽅差是相同的:
⽤类概率和类均值来表⽰。

类概率⽤阈值为t 的直⽅图计算:
⽽类均值为:
类概率和类均值可以迭代计算,⼤津算法得出了0:1范围上的⼀个阈值。

这个阈值⽤于图像中出现的像素强度的动态范围。

例如,若图像只包含155到255之间的像素强度,⼤津阈值0.75会映射到灰度阈值230(⽽不是192,因为图像包含的像素不是0–255全范围的)。

对于图像I(x,y),前景(即⽬标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的⽐例记为ω0,其平均灰度µ0;背景像素点数占整幅图像的⽐例为ω1,其平均灰度为µ1。

图像的总平均灰度记为µ,类间⽅差记为g。

假设图像的背景较暗,并且图像的⼤⼩为M×N,图像中像素的灰度值⼩于阈值T的像素个数记作N0,像素灰度⼤于阈值T的像素个数记作
N1,则有:
(1) ω0=N0/ (M×N)
(2) ω1=N1/ (M×N)
(3) N0 + N1 = M×N
(4) ω0 + ω1 = 1
(5) µ = ω0 * µ0 + ω1 * µ1
(6) g = ω0 * (µ0 - µ)2 + ω1 * (µ1 - µ)2
将式(5)代⼊式(6),得到等价公式:
(7) g = ω0 *ω1 * (µ0 - µ1)2
采⽤遍历的⽅法得到使类间⽅差g最⼤的阈值T。

OTSU算法的实现
OTSU使⽤于双峰图像,固定阈值化通常适⽤的图像的灰度化直⽅图是单峰的:
⽽如果碰到了这种直⽅图的图像,那么就会过滤掉极为重要的信息:
OTSU适⽤于这种双峰图⽚,它可以⾃⼰寻找最优阈值,为了表现测试的效果,我们找了⼀张双峰的图⽚:
⾸先使⽤固定阈值法进⾏实验:
import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread('sh.jpg',0)
ret,threshold = cv.threshold(img,60,127,cv.THRESH_BINARY)
cv.imshow("res",threshold)
cv.waitKey(0)
我们再⽤OTSU的⽅法实验⼀下:
import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread('sh.jpg',0)
ret,threshold = cv.threshold(img,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
cv.imshow("res",threshold)
cv.waitKey(0)
关于代码,需要说明的是,我们在使⽤OTSU时,不需要设置阈值,只需要设置⼀个最⼩值0和最⼤值255,该算法会⾃动寻找最优的阈值进⾏计算:
可以看到,效果还是⽐较不错的,总结⼀下,OTSU的优缺点:
优点:算法简单,当⽬标与背景的⾯积相差不⼤时,能够有效地对图像进⾏分割。

缺点:当图像中的⽬标与背景的⾯积相差很⼤时,表现为直⽅图没有明显的双峰,或者两个峰的⼤⼩相差很⼤,分割效果不佳,或者⽬标与背景的灰度有较⼤的重叠时也不能准确的将⽬标与背景分开。

原因:该⽅法忽略了图像的空间信息,同时将图像的灰度分布作为分割图像的依据,对噪声也相当敏感。

相关文档
最新文档