對自動(dòng)計(jì)算閾值的分割算法Otsu進(jìn)行分析,參考:https://blog.csdn.net/liyuanbhu/article/details/49387483等資料,。 Otsu法也稱為大津法或最大類間方差法,,算法的基本原理是假設(shè)檢測圖像由前景和背景部分組成,通過統(tǒng)計(jì)學(xué)方法計(jì)算選取出閾值,,使得這個(gè)閾值可以將前景和背景最大程度的區(qū)分開,。 任意選取一個(gè)閾值t將圖像分為兩部分(前景和背景),前景像素點(diǎn)占圖像的比例為W0,、均值為U0,,背景像素點(diǎn)占圖像的比例為W1、均值為U1,,圖像整體的均值為U= W0* U0+ W1* U1,,建立目標(biāo)函數(shù)g(t)= W0*(U0-U)^2+ W1*( U1-U)^2,g(t)即為當(dāng)分割閾值為t時(shí)的類間方差,。Otsu算法使得g(t)最大時(shí)所對應(yīng)的t為最佳閾值(遍歷不同閾值下[0,255]),。 例如下圖,灰度直方圖如右圖所示:
我們遍歷閾值為0-255時(shí),,g(t)的結(jié)果值并繪圖,,最大值在t=122位置處,則閾值為122時(shí)是最佳的分割閾值,。
(1)halcon算子
Image為輸入圖像,,Region為提取的區(qū)域,UsedThreshold為閾值結(jié)果,。 (2)matlab函數(shù) T=graythresh(Image),;BW=im2bw(Image,T); Image為輸入圖像,BW為二值化后的圖像,。T為閾值結(jié)果,。 (3)opencv函數(shù) threshold函數(shù),將第五個(gè)參數(shù)設(shè)置為CV_THRESH_OTSU,。
Otsu算法適合于直方圖為雙峰直方圖的圖像,。若目標(biāo)與背景圖像還存在較大的干擾時(shí),該算法會分割出錯(cuò)誤的目標(biāo),;或當(dāng)目標(biāo)與背景的大小比例懸殊時(shí),g(t)函數(shù)可能出現(xiàn)雙峰或多峰,,分割效果不好,。 例如下圖,提取到了干擾區(qū)域,,因?yàn)楦蓴_區(qū)域在灰度直方圖上出現(xiàn)了一個(gè)波峰,,目標(biāo)區(qū)域的波峰與背景被分在一起。
|
|