任曉娜
(河南工業(yè)職業(yè)技術(shù)學(xué)院 網(wǎng)絡(luò)中心,河南 南陽 473000)
隨著社會的發(fā)展,我國大部分城市都出現(xiàn)了或多或少的交通問題,如何利用計(jì)算機(jī)實(shí)現(xiàn)智能交通系統(tǒng)成為社會的實(shí)際需求,汽車作為智能交通系統(tǒng)的主體,在行駛過程中對其進(jìn)行檢測和分類識別顯得非常重要。文中選取圖像分割算法中的Otsu算法進(jìn)行研究分析,并將其應(yīng)用到運(yùn)動物體檢測和跟蹤的工程實(shí)踐中。主要工作有:對現(xiàn)有的圖像分割算法進(jìn)行闡述,重點(diǎn)對Otsu分割算法進(jìn)行數(shù)學(xué)模型分析,給出該算法的設(shè)計(jì)流程和C++代碼。最后將算法應(yīng)用到車輛目標(biāo)檢測項(xiàng)目中,通過讀取視頻幀,作幀差,Otsu分割,形態(tài)學(xué)處理,連通分量分析,檢測目標(biāo),該系統(tǒng)實(shí)現(xiàn)了跟蹤汽車運(yùn)動目標(biāo)。實(shí)驗(yàn)結(jié)果表明,該方法可以快速有效地跟蹤運(yùn)動汽車,滿足工程應(yīng)用的需要。
圖像分割就是目標(biāo)和背景進(jìn)行分離的過程,通過圖像分割,可以對感興趣的目標(biāo)進(jìn)行一步的處理,在圖像處理領(lǐng)域中起到中間橋梁作用。目前傳統(tǒng)分割方法主要幾類:閾值分割、區(qū)域分割、邊緣分割以及特定理論分割等[1]。隨著研究的深入,學(xué)者們不斷改進(jìn)原有的圖像分割方法并把其它學(xué)科的一些新理論和新方法用于圖像分割,提出了不少新的分割方法。圖像分割后提取出的目標(biāo)可以用于交通安全、圖像搜索、地質(zhì)勘探以及醫(yī)學(xué)等領(lǐng)域[2]。
閥值分割算法是一種最常用的并行區(qū)域技術(shù),它是圖像分割中應(yīng)用數(shù)量最多的一類。其關(guān)鍵問題是如何確定閾值,只要能確定一個(gè)合適的閾值,就可以較好的將圖像分割開來。閥值分割的有點(diǎn)是算法的時(shí)間復(fù)雜度和空間復(fù)雜度較好,算法易于實(shí)現(xiàn),因此有著效率高、速度快的美譽(yù)。至今,人們已經(jīng)發(fā)明多種閥值分割算法,諸如全局閥值、自適應(yīng)閥值、最佳閥值等等[3]。
區(qū)域生長是一種典型的區(qū)域分割技術(shù),其中心思想就是將某些具有相似特征的像素點(diǎn)集合起來構(gòu)成一塊區(qū)域[4]。在具體實(shí)現(xiàn)過程中,首先找一個(gè)生長的起點(diǎn),就是從每個(gè)要分割的區(qū)域中找一個(gè)像素,稱為種子像素;然后在該像素周圍像素中,尋找相同或相似的像素,然后與種子像素進(jìn)行合并,得到新的像素區(qū)域;此后將新的像素作為新的起點(diǎn),重復(fù)之前的步驟,直到?jīng)]有新的像素點(diǎn)可以加進(jìn)來為止。區(qū)域生長法計(jì)算簡單,對于連通性好的目標(biāo),具有較好的分割效果。缺點(diǎn)是需要人的干預(yù)來確定種子像素,同時(shí)它也對噪聲敏感,可能導(dǎo)致區(qū)域內(nèi)有空洞。另外,它是一種串行算法,當(dāng)目標(biāo)較大時(shí)分割速度較慢。
邊緣分割算法的中心思想是通過檢測圖像中灰度級或者結(jié)構(gòu)發(fā)生突變的地方,來界定目標(biāo)與背景的分界線。通常背景和目標(biāo)在分界出會有比較明顯的灰度變化,利用此特征,就可以提取出感興趣的目標(biāo)。在數(shù)學(xué)分模型析上,通常利用微分算子進(jìn)行處理,如 Roberts算子和Sobel算子,Laplace算子和Kirsh算子等[5]。這些算子對噪聲敏感,因此只適合于噪聲較小且不太復(fù)雜的圖像。
常用的閥值分割方法有:手動人工選擇法,自動閾值選擇法,分水嶺算法等。其中自動閥值選擇法中,常用的方法有:迭代式閥值選擇法,類間方差閥值分割法(Otsu),最小誤差閥值選擇法。本文選擇了類間方差閥值分割法作為研究的算法,其具有諸多優(yōu)點(diǎn)和可實(shí)現(xiàn)性、成熟性[2]。
Otsu閥值分割法的理論基礎(chǔ)是基于二元統(tǒng)計(jì)分析得到的,其中心思想是選取的最佳閾值應(yīng)當(dāng)盡可能的使圖像分割產(chǎn)生的區(qū)域類內(nèi)方差最小,類間方差最大。具有性能穩(wěn)定、分割效果好的優(yōu)勢[6]。本文就是對類間方差法進(jìn)行研究和實(shí)現(xiàn),具體內(nèi)容將在下文中詳細(xì)介紹。與傳統(tǒng)的直方圖不同,Otsu閾值分割利用直方圖統(tǒng)計(jì)來進(jìn)行分割,即使用混合集概率密度函數(shù)估計(jì)來代替圖像的灰度值,它默認(rèn)圖像中的每個(gè)像素點(diǎn)在灰度上都是滿足獨(dú)立同分布的,通過分析圖像的概率密度,達(dá)到圖像的分布誤差盡可能小,實(shí)現(xiàn)對圖像的有效分割。
Otsu分割法是一種常用的閥值選取方法,該方法利用類間方差最大自動確定閥值,算法簡單、處理速度快。一維Otsu算法的中心思想是:假設(shè)要分割的圖像中具有N個(gè)像素點(diǎn),像素灰度級為L(L一般為256),在圖像中灰度級為i的所有像素點(diǎn)的個(gè)數(shù)為ni,則圖像中灰度級為i的像素點(diǎn)的個(gè)數(shù)占整幅圖像中的概率為:
其中所有灰度級出現(xiàn)的概率和應(yīng)當(dāng)為1,即
圖像分割的目的是將目標(biāo)和背景相分離,因此在計(jì)算的時(shí)候,也把圖像分成兩個(gè)部分:C0和C1,其中C0表示背景區(qū)域,C1表示目標(biāo)區(qū)域。假定圖像的分割閾值為k,則此法圖像的灰度均值為:
C0和C1的均值分別為:
其中:
綜上可得:
類間方差定義為:
算法讓k在整個(gè)圖像的灰度級范圍內(nèi)依次取值,然后計(jì)算相對應(yīng)的當(dāng)最大時(shí)對應(yīng)的k值即為 Otsu算法的最佳閥值。通過以上公式不難看出,該算法公式簡單,且易于實(shí)現(xiàn)。
考慮圖像閥值選擇算法的理論性和不易檢測性,作者將其應(yīng)用到具體的實(shí)際領(lǐng)域中取檢驗(yàn)其效果,該方法能夠有效檢驗(yàn)算法的準(zhǔn)確性和實(shí)際可操作性,同時(shí)也是一個(gè)可供借鑒的算法測試方法,理論的研究最終需要應(yīng)用到實(shí)際的應(yīng)用中才能發(fā)揮其應(yīng)有的作用。因此,文章選擇以運(yùn)動目標(biāo)檢測方向?yàn)榍腥朦c(diǎn),以汽車目標(biāo)檢測為項(xiàng)目背景,將Otsu閥值分算法作為其中的子模塊,來檢驗(yàn)算法的實(shí)際效果。
基于之前的Otsu理論分析,本節(jié)利用Opencv基礎(chǔ)庫,給出了Otsu算法的C++程序設(shè)計(jì)機(jī)制。其算法流程如圖1所示。
程序開始,對圖像進(jìn)行直方圖統(tǒng)計(jì),得出二維灰度圖像中各個(gè)灰度級在整個(gè)灰度圖像中出現(xiàn)的概率。接著計(jì)算灰度圖像的概率密度,得出累計(jì)分布。由之前公式定義,我們得出類間方差,進(jìn)而計(jì)算出類間方差的最大值,也就是我們想要的閥值,至此,程序流程運(yùn)行分析完畢。
具體代碼如下:
int otsuThresh(const cv::Mat&gray)
{
圖1 Otsu算法流程圖Fig.1 Flow chart of Otsu algorithm
int i,j;
const int numBins=256;
double counts[numBins];
memset(counts,0,sizeof(double)*numBins);
for(i=0;i { const uchar*ptr=gray.ptr(i); for(j=0;j counts[ptr[j]]++; } double p[numBins]; double sumT=gray.rows*gray.cols; for(i=0;i p[i]=counts[i]/sumT; double omega[numBins]; double mu[numBins]; omega[0]=p[0]; mu[0]=p[0]*1; for(i=1;i { omega[i]=omega[i-1]+p[i]; mu[i]=mu[i-1]+p[i]*(i+1); } double mu_t=mu[numBins-1]; double sigma_b_squared[numBins]; for(i=0;i { double tmp=mu_t*omega[i]- mu[i]; double tmp2=omega[i]*(1-omega[i]); if(tmp2==0) sigma_b_squared[i]=-1; else sigma_b_squared[i]=(tmp*tmp)/tmp2; } double maxVal=sigma_b_squared[0]; for(i=1;i if(sigma_b_squared[i]>maxVal) maxVal=sigma_b_squared[i]; if(maxVal==-1) return 0; else { j=0; sumT=0; for(i=0;i if(sigma_b_squared[i]==maxVal) { sumT+=(i+1); j++; } int idx=(int)floor((sumT/j+0.5)); return (idx-1); } } 在本系統(tǒng)中,編程環(huán)境選用Opencv2.4.8和微軟VS2010編譯器。Opencv2.4.8是一種開源的用于圖像處理和計(jì)算機(jī)視覺的函數(shù)庫,由Intel公司使用C++高級語言開發(fā),其可以應(yīng)用到諸多圖像處理領(lǐng)域,如人機(jī)互動、物體識別、圖象分割、人臉識別、動作識別、運(yùn)動跟蹤、機(jī)器人、運(yùn)動分析、機(jī)器視覺、結(jié)構(gòu)分析、汽車安全駕駛等領(lǐng)域。VS2010是微軟公司開發(fā)的編程工具,支持最新的C++標(biāo)準(zhǔn)。操作系統(tǒng)我們選用win7 32位系統(tǒng)。 為了驗(yàn)證算法在工程應(yīng)用方面的性能,將其應(yīng)用到了車輛目標(biāo)檢測的具體項(xiàng)目中,采用一段交通視頻來驗(yàn)證提出的模型,圖2是實(shí)驗(yàn)的最后結(jié)果,其中左圖是原始圖像,右圖是檢測和跟蹤結(jié)果,檢測方框可隨著目標(biāo)的大小而改變。由實(shí)驗(yàn)結(jié)果可以看出,該算法具有較好的工程實(shí)用性。 圖2 系統(tǒng)測試結(jié)果Fig.2 The result of the system test 文中主要對圖像分割算法Otsu[7]進(jìn)行了原理分析說明,給出了數(shù)學(xué)模型和C++程序設(shè)計(jì)機(jī)制,將其應(yīng)用到汽車車輛目標(biāo)檢測系統(tǒng)中,并在編譯器環(huán)境下進(jìn)行了測試,結(jié)果表明,該方法在運(yùn)動物體的檢測系統(tǒng)中,快速有效,能夠滿足實(shí)時(shí)跟蹤的目的,具有較強(qiáng)的工程實(shí)踐意義。 [1]孫鳳杰,王鶴,范杰清.基于遺傳算法的圖像閾值分割研究[J].電力系統(tǒng)通信,2008,29(193):35-38.SUN Feng-jie,WANG He,F(xiàn)AN Jie-qing.Study on image threshold segmentation based on genetic algorithm[J].Telecommunication for Electric Power System,2008,29(193):35-38. [2]楊帆,廖慶敏.基于圖論的圖像分割算法的分析與研究[J].電視技術(shù),2006(7):80-83.YANG Fan,LIAO Qing-fan.Analysis and research of graphbased segmentation method[J].Video Engineering,2006(7):80-83. [3]韓思奇,王蕾.圖像分割的閾值法綜述[J].系統(tǒng)工程與電子技術(shù),2002,6(4):91-102.HAN Si-qi,WANG Lei.A survey of thresholding methods for image segmentation[J].Systems Engineering and Electronics,2002,6(4):91-102. [4]王鈞銘,高立鑫.GrabCut彩色圖像分割算法的研究[J].電視技術(shù).2008,6(32):15-17.WANG Jun-ming,GAO Li-xin.Research of GrabCu color image segmentation algorithm[J].Video Engineering, 2008,6(32):15-17. [5]梁艷梅,翟宏琛,常勝江,等.基于最大隸屬度原則的彩色圖像分割方法[J].物理學(xué)報(bào),2003,11(52):2655-2659.LIANG Yan-mei,ZHAI Hong-chen,CHANG Sheng-jiang,et al.Color image segmentation based on the principle of maximum degree of membership[J].ACTA Physica Sinica,2003,11(52):2655-2659. [6]劉金梅,趙春暉.組合均值平移和區(qū)域合并的圖像分割算法[J].哈爾濱工程大學(xué)學(xué)報(bào),2008,10(29):1126-1130.LIU Jin-mei,ZHAO Chun-hui.Image segmentation with mean shift and region merging methods[J].Journal of Harbin Engineering University,2008,10(29):1126-1130. [7]安健,張揚(yáng).基于Otsu和模糊核聚類算法的極化SAR圖像分類[J].電子科技,2014(2):42-45.AN Jian,ZHANG Yang.Polarization SAR image classification based on Otsu and fuzzy kernel clustering algorithm[J].Electronic Science and Technology,2014(2):42-45.4 系統(tǒng)測試與總結(jié)
4.1 測試環(huán)境搭建
4.2 系統(tǒng)測試
5 結(jié)束語