任曉娜
(河南工業職業技術學院 網絡中心,河南 南陽 473000)
隨著社會的發展,我國大部分城市都出現了或多或少的交通問題,如何利用計算機實現智能交通系統成為社會的實際需求,汽車作為智能交通系統的主體,在行駛過程中對其進行檢測和分類識別顯得非常重要。文中選取圖像分割算法中的Otsu算法進行研究分析,并將其應用到運動物體檢測和跟蹤的工程實踐中。主要工作有:對現有的圖像分割算法進行闡述,重點對Otsu分割算法進行數學模型分析,給出該算法的設計流程和C++代碼。最后將算法應用到車輛目標檢測項目中,通過讀取視頻幀,作幀差,Otsu分割,形態學處理,連通分量分析,檢測目標,該系統實現了跟蹤汽車運動目標。實驗結果表明,該方法可以快速有效地跟蹤運動汽車,滿足工程應用的需要。
圖像分割就是目標和背景進行分離的過程,通過圖像分割,可以對感興趣的目標進行一步的處理,在圖像處理領域中起到中間橋梁作用。目前傳統分割方法主要幾類:閾值分割、區域分割、邊緣分割以及特定理論分割等[1]。隨著研究的深入,學者們不斷改進原有的圖像分割方法并把其它學科的一些新理論和新方法用于圖像分割,提出了不少新的分割方法。圖像分割后提取出的目標可以用于交通安全、圖像搜索、地質勘探以及醫學等領域[2]。
閥值分割算法是一種最常用的并行區域技術,它是圖像分割中應用數量最多的一類。其關鍵問題是如何確定閾值,只要能確定一個合適的閾值,就可以較好的將圖像分割開來。閥值分割的有點是算法的時間復雜度和空間復雜度較好,算法易于實現,因此有著效率高、速度快的美譽。至今,人們已經發明多種閥值分割算法,諸如全局閥值、自適應閥值、最佳閥值等等[3]。
區域生長是一種典型的區域分割技術,其中心思想就是將某些具有相似特征的像素點集合起來構成一塊區域[4]。在具體實現過程中,首先找一個生長的起點,就是從每個要分割的區域中找一個像素,稱為種子像素;然后在該像素周圍像素中,尋找相同或相似的像素,然后與種子像素進行合并,得到新的像素區域;此后將新的像素作為新的起點,重復之前的步驟,直到沒有新的像素點可以加進來為止。區域生長法計算簡單,對于連通性好的目標,具有較好的分割效果。缺點是需要人的干預來確定種子像素,同時它也對噪聲敏感,可能導致區域內有空洞。另外,它是一種串行算法,當目標較大時分割速度較慢。
邊緣分割算法的中心思想是通過檢測圖像中灰度級或者結構發生突變的地方,來界定目標與背景的分界線。通常背景和目標在分界出會有比較明顯的灰度變化,利用此特征,就可以提取出感興趣的目標。在數學分模型析上,通常利用微分算子進行處理,如 Roberts算子和Sobel算子,Laplace算子和Kirsh算子等[5]。這些算子對噪聲敏感,因此只適合于噪聲較小且不太復雜的圖像。
常用的閥值分割方法有:手動人工選擇法,自動閾值選擇法,分水嶺算法等。其中自動閥值選擇法中,常用的方法有:迭代式閥值選擇法,類間方差閥值分割法(Otsu),最小誤差閥值選擇法。本文選擇了類間方差閥值分割法作為研究的算法,其具有諸多優點和可實現性、成熟性[2]。
Otsu閥值分割法的理論基礎是基于二元統計分析得到的,其中心思想是選取的最佳閾值應當盡可能的使圖像分割產生的區域類內方差最小,類間方差最大。具有性能穩定、分割效果好的優勢[6]。本文就是對類間方差法進行研究和實現,具體內容將在下文中詳細介紹。與傳統的直方圖不同,Otsu閾值分割利用直方圖統計來進行分割,即使用混合集概率密度函數估計來代替圖像的灰度值,它默認圖像中的每個像素點在灰度上都是滿足獨立同分布的,通過分析圖像的概率密度,達到圖像的分布誤差盡可能小,實現對圖像的有效分割。
Otsu分割法是一種常用的閥值選取方法,該方法利用類間方差最大自動確定閥值,算法簡單、處理速度快。一維Otsu算法的中心思想是:假設要分割的圖像中具有N個像素點,像素灰度級為L(L一般為256),在圖像中灰度級為i的所有像素點的個數為ni,則圖像中灰度級為i的像素點的個數占整幅圖像中的概率為:

其中所有灰度級出現的概率和應當為1,即

圖像分割的目的是將目標和背景相分離,因此在計算的時候,也把圖像分成兩個部分:C0和C1,其中C0表示背景區域,C1表示目標區域。假定圖像的分割閾值為k,則此法圖像的灰度均值為:
C0和C1的均值分別為:

其中:

綜上可得:

類間方差定義為:

算法讓k在整個圖像的灰度級范圍內依次取值,然后計算相對應的當最大時對應的k值即為 Otsu算法的最佳閥值。通過以上公式不難看出,該算法公式簡單,且易于實現。
考慮圖像閥值選擇算法的理論性和不易檢測性,作者將其應用到具體的實際領域中取檢驗其效果,該方法能夠有效檢驗算法的準確性和實際可操作性,同時也是一個可供借鑒的算法測試方法,理論的研究最終需要應用到實際的應用中才能發揮其應有的作用。因此,文章選擇以運動目標檢測方向為切入點,以汽車目標檢測為項目背景,將Otsu閥值分算法作為其中的子模塊,來檢驗算法的實際效果。
基于之前的Otsu理論分析,本節利用Opencv基礎庫,給出了Otsu算法的C++程序設計機制。其算法流程如圖1所示。
程序開始,對圖像進行直方圖統計,得出二維灰度圖像中各個灰度級在整個灰度圖像中出現的概率。接著計算灰度圖像的概率密度,得出累計分布。由之前公式定義,我們得出類間方差,進而計算出類間方差的最大值,也就是我們想要的閥值,至此,程序流程運行分析完畢。
具體代碼如下:
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); } } 在本系統中,編程環境選用Opencv2.4.8和微軟VS2010編譯器。Opencv2.4.8是一種開源的用于圖像處理和計算機視覺的函數庫,由Intel公司使用C++高級語言開發,其可以應用到諸多圖像處理領域,如人機互動、物體識別、圖象分割、人臉識別、動作識別、運動跟蹤、機器人、運動分析、機器視覺、結構分析、汽車安全駕駛等領域。VS2010是微軟公司開發的編程工具,支持最新的C++標準。操作系統我們選用win7 32位系統。 為了驗證算法在工程應用方面的性能,將其應用到了車輛目標檢測的具體項目中,采用一段交通視頻來驗證提出的模型,圖2是實驗的最后結果,其中左圖是原始圖像,右圖是檢測和跟蹤結果,檢測方框可隨著目標的大小而改變。由實驗結果可以看出,該算法具有較好的工程實用性。 圖2 系統測試結果Fig.2 The result of the system test 文中主要對圖像分割算法Otsu[7]進行了原理分析說明,給出了數學模型和C++程序設計機制,將其應用到汽車車輛目標檢測系統中,并在編譯器環境下進行了測試,結果表明,該方法在運動物體的檢測系統中,快速有效,能夠滿足實時跟蹤的目的,具有較強的工程實踐意義。 [1]孫鳳杰,王鶴,范杰清.基于遺傳算法的圖像閾值分割研究[J].電力系統通信,2008,29(193):35-38.SUN Feng-jie,WANG He,FAN Jie-qing.Study on image threshold segmentation based on genetic algorithm[J].Telecommunication for Electric Power System,2008,29(193):35-38. [2]楊帆,廖慶敏.基于圖論的圖像分割算法的分析與研究[J].電視技術,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].系統工程與電子技術,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].電視技術.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].物理學報,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]劉金梅,趙春暉.組合均值平移和區域合并的圖像分割算法[J].哈爾濱工程大學學報,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]安健,張揚.基于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 系統測試與總結
4.1 測試環境搭建
4.2 系統測試

5 結束語