熱線電(dian)話:0755-23712116
郵箱:contact@legoupos.cn
地址(zhi):深(shen)圳市寶安區沙井街道(dao)后亭(ting)茅洲山(shan)工(gong)業園工(gong)業大(da)廈全至(zhi)科技創(chuang)新園科創(chuang)大(da)廈2層2A

圖(tu)(tu)像(xiang)(xiang)二(er)值化的(de)(de)(de)(de)目的(de)(de)(de)(de)是最大限度(du)的(de)(de)(de)(de)將圖(tu)(tu)象中感興趣的(de)(de)(de)(de)部分(fen)保留(liu)下來,在(zai)很多情況(kuang)下,也(ye)是進行(xing)圖(tu)(tu)像(xiang)(xiang)分(fen)析(xi)、特征提取與模式識別(bie)之前的(de)(de)(de)(de)必要的(de)(de)(de)(de)圖(tu)(tu)像(xiang)(xiang)預(yu)處理過(guo)程。這(zhe)個(ge)看似簡單的(de)(de)(de)(de)問題,在(zai)過(guo)去的(de)(de)(de)(de)四十年里(li)受(shou)到(dao)國(guo)內外學者的(de)(de)(de)(de)廣泛關(guan)注(zhu),產(chan)生了數以(yi)百計的(de)(de)(de)(de)閾值選取方法,但如(ru)同其他圖(tu)(tu)像(xiang)(xiang)分(fen)割算(suan)法一樣,沒有一個(ge)現有方法對各種各樣的(de)(de)(de)(de)圖(tu)(tu)像(xiang)(xiang)都能得到(dao)令人滿意的(de)(de)(de)(de)結果。
在這些(xie)(xie)(xie)龐大的(de)(de)(de)分(fen)類(lei)方法(fa)中(zhong),基(ji)于直(zhi)方圖的(de)(de)(de)全局二值算(suan)法(fa)占有了(le)(le)絕對的(de)(de)(de)市(shi)場(chang)份額,這些(xie)(xie)(xie)算(suan)法(fa)都(dou)從不同的(de)(de)(de)科(ke)學層次(ci)提出(chu)了(le)(le)各自(zi)的(de)(de)(de)實施(shi)方案,并且這類(lei)方法(fa)都(dou)有著一些(xie)(xie)(xie)共同的(de)(de)(de)特(te)點:
1、簡單;
2、算法容(rong)易實(shi)現;
3、執行速度快。
本(ben)文摘取了若干(gan)種這(zhe)類方法進行了介紹。
一:灰度(du)平局值值法(fa):
1、描述(shu):即使用整幅圖像(xiang)的灰度平(ping)均值作為二(er)值化的閾(yu)值,一般該方(fang)法可作為其他(ta)方(fang)法的初始猜想值。
2、原理: 
3、實現代碼:

二、百分比閾值(P-Tile法)
1、描述
Doyle于(yu)(yu)1962年提出的P-Tile (即P分(fen)位數法(fa)(fa))可以說是最古老的一(yi)種閾(yu)值選取方法(fa)(fa)。該方法(fa)(fa)根據先驗(yan)概率來設定閾(yu)值,使(shi)得二值化(hua)后的目標或背景像素(su)比(bi)例等于(yu)(yu)先驗(yan)概率,該方法(fa)(fa)簡單高效,但是對(dui)于(yu)(yu)先驗(yan)概率難于(yu)(yu)估(gu)計的圖像卻無能(neng)為力(li)。
2、該原理(li)比(bi)較(jiao)簡(jian)單,直接以(yi)代碼實現。

三、基于谷底最小值(zhi)的閾值(zhi)
1、描述:
此方法實用于具(ju)有明顯雙(shuang)峰(feng)(feng)直方圖(tu)的圖(tu)像(xiang),其尋找(zhao)雙(shuang)峰(feng)(feng)的谷底作(zuo)為(wei)閾值,但是該方法不一定能(neng)獲得閾值,對于那些(xie)具(ju)有平坦的直方圖(tu)或單峰(feng)(feng)圖(tu)像(xiang),該方法不合適。
2、實現過程:
該函數(shu)的(de)實現是(shi)一(yi)(yi)(yi)個(ge)迭代的(de)過程,每次處理前對(dui)直方(fang)圖(tu)數(shu)據進行(xing)判斷,看其是(shi)否已(yi)經是(shi)一(yi)(yi)(yi)個(ge)雙峰的(de)直方(fang)圖(tu),如(ru)果不是(shi),則(ze)對(dui)直方(fang)圖(tu)數(shu)據進行(xing)半徑為(wei)1(窗口(kou)大小為(wei)3)的(de)平滑,如(ru)果迭代了一(yi)(yi)(yi)定的(de)數(shu)量(liang)比如(ru)1000次后(hou)仍(reng)未獲(huo)得(de)一(yi)(yi)(yi)個(ge)雙峰的(de)直方(fang)圖(tu),則(ze)函數(shu)執行(xing)失(shi)敗(bai),如(ru)成功獲(huo)得(de),則(ze)最(zui)終閾值(zhi)取兩個(ge)雙峰之間(jian)的(de)谷底(di)值(zhi)作為(wei)閾值(zhi)。
注意(yi)在(zai)編碼過程中,平滑(hua)的處(chu)理需要(yao)當前像素之(zhi)前的信息,因此需要(yao)對平滑(hua)前的數據(ju)進(jin)行一個備份。另(ling)外,首(shou)數據(ju)類型精度限制,不應用整形的直方圖(tu)數據(ju),必須轉換為浮點類型數據(ju)來進(jin)行處(chu)理,否則得不到正確的結果。
該(gai)算法相(xiang)關參考論文如下:
J. M. S. Prewitt and M. L. Mendelsohn, "The analysis of cell images," innnals of the New York Academy of Sciences, vol. 128, pp. 1035-1053, 1966.
C. A. Glasbey, "An analysis of histogram-based thresholding algorithms," CVGIP: Graphical Models and Image Processing, vol. 55, pp. 532-537, 1993.
3、實現代碼:
其(qi)中IsDimodal函數為判斷(duan)直方圖是否(fou)是雙峰(feng)的(de)函數,代碼(ma)如下(xia):

4、效果:

原圖(tu) 二值圖(tu) 原始直方(fang)圖(tu) 平滑后(hou)的直方(fang)圖(tu)
對于這種(zhong)有較明顯(xian)的(de)(de)(de)雙(shuang)峰的(de)(de)(de)圖(tu)像,該(gai)算(suan)法還是(shi)能取得不錯的(de)(de)(de)效(xiao)果的(de)(de)(de)。
四、基于雙(shuang)峰(feng)平均值的閾(yu)值
1、描述:
該(gai)算法和基于(yu)谷底(di)最小值(zhi)(zhi)的(de)(de)閾值(zhi)(zhi)方法類似,只是(shi)最后一(yi)步不是(shi)取得雙峰(feng)(feng)之間的(de)(de)谷底(di)值(zhi)(zhi),而是(shi)取雙峰(feng)(feng)的(de)(de)平均(jun)值(zhi)(zhi)作(zuo)為閾值(zhi)(zhi)。
2、參(can)考代(dai)碼:

3、效果:

原(yuan)圖 二值圖 原(yuan)始直(zhi)方圖 平滑后的(de)直(zhi)方圖
五、迭(die)代最(zui)佳(jia)閾值
1、描述:
該(gai)(gai)算(suan)法(fa)先(xian)假(jia)定(ding)一個(ge)閾值,然后計算(suan)在該(gai)(gai)閾值下的(de)(de)前(qian)景(jing)(jing)和背(bei)景(jing)(jing)的(de)(de)中(zhong)心(xin)值,當前(qian)景(jing)(jing)和背(bei)景(jing)(jing)中(zhong)心(xin)值得平均(jun)值和假(jia)定(ding)的(de)(de)閾值相同時,則迭代中(zhong)止,并以此值為閾值進行二值化。
2、實現過(guo)程:
(1)求出圖象的最大灰度值和最小灰度值,分別記為gl和gu,令初始閾值為:

(2) 根據閾值T0將圖象分割為前景和背景,分別求出兩者的平均灰度值Ab和Af:


(3) 令


如果Tk=Tk+1,則取Tk為所求得的閾值,否則,轉2繼續迭代。
3、參考代(dai)碼:
4、效果(guo):

原圖(tu) 二(er)值圖(tu) 直方圖(tu)
六(liu)、OSTU大(da)律法
1、描述:
該算法(fa)是1979年由(you)日(ri)本大(da)津提出的(de),主要是思想是取某個閾值,使得(de)前景和背景兩(liang)類的(de)類間方(fang)差最大(da),matlab中的(de)graythresh即(ji)是以(yi)該算法(fa)為原理執行的(de)。
2、原理:
關(guan)于(yu)該算法(fa)的原理,網絡上有很(hen)多(duo),這里為了篇幅有限,不加以贅(zhui)述。
3、參考代碼:
4、效(xiao)果(guo):
該算法對于那些具有(you)平坦的直方圖的圖像具有(you)一定的適應能力。
七、一維最大熵
1、描述:
該算法把信息論(lun)中熵的概念引入到圖像中,通(tong)過計(ji)算閾值分(fen)割后兩部分(fen)熵的和來(lai)判斷(duan)閾值是否為(wei)最(zui)佳閾值。
2、算(suan)法(fa)原理
這方面的文章也(ye)比較多,留(liu)給(gei)讀者自行去(qu)查找相關資料(liao)。
3、參考代(dai)碼(ma):

八、力矩保持法
1、描述:
該算法通過選(xuan)擇恰當的閾值(zhi)從而使得二值(zhi)后(hou)的圖像和(he)原(yuan)始(shi)的灰度圖像具有三個相同的初始(shi)力矩值(zhi)。
2、原理:
參(can)考論文:W. Tsai, “Moment-preserving thresholding: a new approach,” Comput.Vision Graphics Image Process., vol. 29, pp. 377-393, 1985.
由于無法下載(zai)到該論文(wen)(收(shou)費(fei)的),僅僅給出從其他(ta)一些資(zi)料中找到的公式共享一下。


其中(zhong)的A\B\C的函數可(ke)見代(dai)碼(ma)部分。
3、參考代碼:

對于很(hen)多圖(tu)像,該算法(fa)頁能取(qu)得比較(jiao)滿意的結果(guo)。
九(jiu)、基于模(mo)糊(hu)集(ji)理論(lun)的閾值(zhi)
該(gai)算法的具體分析可(ke)見(jian):
此法(fa)也(ye)借(jie)用香農熵的概念(nian),該算法(fa)一般都能獲得較為理想(xiang)的分割效(xiao)果,不管是對雙峰(feng)(feng)的還是單峰(feng)(feng)的圖像。
十、Kittler最(zui)小(xiao)錯誤分類法
由于(yu)精力有限,以下幾種算(suan)法僅僅給出(chu)算(suan)法的論文及相關的代碼。
該算法具體的分析見(jian):
參考代碼(ma):

從實際的運行效果看,該(gai)算(suan)法并(bing)不很好。
十一:ISODATA(也叫(jiao)做intermeans法)
參考論文(wen):
參考代碼(未做整(zheng)理):

十二、Shanbhag 法
參考(kao)論(lun)文(wen):
Shanbhag, Abhijit G. (1994), "", Graph. Models Image Process. (Academic Press, Inc.) 56 (5): 414--419, ISSN , DOI 10.1006/cgip.1994.1037
參考代碼(未整理):

十三、Yen法
參(can)考論(lun)文:
1) Yen J.C., Chang F.J., and Chang S. (1995) "A New Criterion for Automatic Multilevel Thresholding" IEEE Trans. on Image Processing, 4(3): 370-378
2) Sezgin M. and Sankur B. (2004) "Survey over Image Thresholding Techniques and Quantitative Performance Evaluation" Journal of Electronic Imaging, 13(1): 146-165
參(can)考代碼(未(wei)整(zheng)理):

一行很多代(dai)碼是摘(zhai)自開源(yuan)軟件ImageJ的資料,讀者(zhe)也可以參考: 這里獲得更多的信息。
最后,我對這些算法的(de)做(zuo)了簡單的(de)UI界面(mian),供有(you)興趣的(de)讀(du)者參考。
工程代碼下載:

