文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.02.027
中文引用格式: 李余錢,蘇光大. 基于鄰域處理器自適應圖像分割高速實現[J].電子技術應用,2016,42(2):99-101.
英文引用格式: Li Yuqian,Su Guangda. Fast implementation of adaptive image segmentation based on neighborhood processor[J].Application of Electronic Technique,2016,42(2):99-101.
0 引言
隨著數字圖像處理及計算機技術的不斷發展,使得計算機視覺的應用領域更加廣泛。計算機視覺中常用特征提取、目標跟蹤、目標識別等關鍵技術,這些技術對圖像分割的質量依賴性較強[1]。圖像分割是圖像處理中的重要研究方向,分割質量的好壞直接關系到后續高級算法的應用效果。
典型的圖像分割算法可分為基于閾值、基于邊緣和基于區域等3類,其中,常用的是基于閾值的圖像分割。由于圖像特征和圖像信息不同,可以對基于閾值的圖像分割算法進行分類,可分為基于全局的閾值分割和局部的閾值分割法[2]。
全局閾值算法中比較典型的代表是最大類間方差法(Otsu法,也稱大津算法),該方法使用聚類思想,按灰度級把圖像分成兩類,讓這兩類滿足灰度值差異最大,同時每個部分之間的灰度差異最小,利用方差來尋找出一個合適的灰度級別。但在實際應用中,由于存在一些干擾因素,如噪聲、低對比度等使得灰度直方圖不一定具有明顯的波峰和波谷,此時只用圖像的統計直方圖來判定閾值,可能會造成錯誤的分割。
局部閾值法的典型代表有均值閾值分割法以及Bernsen算法等。均值閾值法的主要思想是在選取閾值時,將局部區域內像素的平均值作為圖像分割的閾值。均值閾值法具有算法計算簡單、速度快的特點。但是該方法僅對于目標與背景相差比較大的圖像,才能達到理想的結果。
由于Bernsen算法具有抑制非均勻光照的優點,而且Sobel算子計算操作較為簡單,但是其閾值需要預先設定,不能滿足任意場景的需要,不具備自適應性。
本研究采用自適應閾值分割算法,也就是將Bernsen算法和Sobel結合在一起,即Bernsen算法計算出窗口中的最大灰度值和最小灰度值的平均值作為分割閾值,可以達到閾值自適應的目的,對于非均勻光照圖像的分割效果較好。同時,在鄰域處理器上實現了該算法的全過程。經過實際測試,可以實現圖像分割的功能,而且算法的時間開銷較少。
1 自適應圖像分割算法
1.1 Sobel算子
Sobel算子[3]包括水平方向與垂直方向,大小為3×3模板,如圖1所示。該算子是進行圖像邊緣檢測算法的核心。在邊緣檢測時,Sobel 算子的兩個模板分別與3×3的鄰域窗口的像素進行卷積運算,求出窗口中心的像素點梯度(包括水平梯度dx和垂直梯度dy),再計算出該像素點梯度的模,并與閾值相比較,進行二值化,從而得到圖像的邊緣圖像。
1.2 Bernsen算法
Bernsen算法[3]將圖像分塊后,每個圖像塊選取該塊中圖像的最大和最小灰度值的平均值作為閾值,設像素點處的灰度值是以像素點為中心構造一個的窗口,其中w表示窗口寬度的參數。則Bernsen算法可以描述為:
首先,計算每個窗口的閾值T(x,y),方法如式(1)所示。
其次,將圖像塊的中心點像素的灰度值與上一步計算的閾值進行比較,從而確定該點的灰度值。具體計算如式(2)所示。
本文取的窗口進行圖像分割。
1.3 自適應圖像分割算法
自適應閾值分割算法是將Bernsen算法和Sobel算法相結合,將3×3窗口中像素的最大灰度值和最小灰度值的平均值作為Sobel的分割閾值。通過這種方式可以達到閾值自適應的目的,對于非均勻光照圖像的分割效果較好。自適應圖像分割的算法框圖如圖2所示。
2 自適應閾值分割算法硬件實現
2.1 鄰域圖像處理器
本研究的實驗平臺是鄰域圖像并行處理器系統[4-6],該鄰域處理器系統包括視頻采集部分、鄰域存儲器、鄰域處理器、共享存儲器、DSP處理器以及PCI接口等部分。鄰域處理器系統框圖如圖3所示。其中,鄰域存儲器一次可以讀取32個像素數據。Altera公司的EP2C70F896C8型FPGA是鄰域處理器的處理核心,負責控制數據的讀取以及運算等操作。共享存儲器是由兩個2 MB容量的同步SRAM構成,負責存儲FPGA運算結果。PCI接口負責數據傳遞到PC或者將數據從PC傳遞到共享存儲器,然后由FPGA進行數據組合,構成鄰域數據,進行下一步處理。
同時,圖像鄰域處理器可以處理攝像機的視頻圖像或者處理計算機中的靜態圖像。
2.1 鄰域圖像處理器
自適應圖像分割處理系統處理大小512×512灰度圖像。在處理過程中,需要將該圖像劃分成16個圖像塊,每塊為512行32列。圖像進行分割的運算操作是按照塊的順序進行,依次對每塊圖像從上到下進行處理。每一次訪問存儲體讀出一行圖像數據,通過流水操作,可以形成n×32的圖像鄰域。在本圖像分割算法中,n取3。
為了構成32個3×3的鄰域,需要額外增加兩列數據。這額外增加的兩列數據正是前一圖像塊最右端的兩列,即RAMa與RAMb。這兩個RAM起到了乒乓內存操作的作用,該運算結構如圖4所示。
自適應圖像分割處理系統的整體實現結構框圖如圖5所示。
在設計實現自適應圖像分割處理系統時,運算操作單元是一系列3×3的窗口,即每個運算單元總共是9個像素點灰度值,運算單元計算流程如圖6所示。
在第1個時鐘周期,所有數據進行兩兩比較并求解水平梯度和垂直梯度。
在第2個時鐘周期,將比較結果進行累加并求解梯度的模。
在第3個時鐘周期,把輸入像素的灰度值存儲到相應的順序單元,并緩存模的值。
在第4個時鐘周期,選取最大值和最小值,求解其平均值,同時緩存模的值。
在第5個時鐘周期,將平均值作為閾值,并與3×3窗口中心像素的梯度模值進行比較,從而得到最終的結果。
其中,運用Bernsen算法求解序列中的最大值和最小值的平均值時,采用了全并行比較排序算法[8]。
計算其他窗口的流程也如上所述,最終可得到圖像分割結果。
3 實驗結果
根據前述算法思想,首先在PC(2.83 GHz,core2 Quad CPU,2.98 G內存)上使用Matlab2014a軟件計算進行算法驗證,結果如圖7所示。其次,為了對比自適應閾值分割的效果,在Matlab2014a上實現Sobel的邊緣檢測,如圖8所示。從圖7和圖8的比較來看,自適應閾值分割算法較好。
同時,在NIPC-3鄰域圖像處理器上實現了非均勻光照下圖像的分割,處理結果如圖9所示。其中,FPGA工作頻率為60 MHz。
從圖7、圖8和圖9的結果中,可計算出二者結果的一致性。從實驗結果上也可以看出自適應閾值圖像分割的優越性,能有效抑制非均勻光照帶來的影響。
同時,為了測試速度性能,還進行了時間上的分析,利用Quartus II的SignalTap工具,在程序中添加計數器,計算程序執行時鐘數,對于一幅大小為512×512的圖像,處理時間約為0.137 ms。
4 結論
本文提出一種將Sobel算子與Bernsen算法相結合的自適應閾值圖像分割算法,利用該算法可以較好地實現圖像分割。經過實際測驗分析,該方法不僅能夠實現圖像分割,而且能夠有效抑制非均勻光照對圖像分割帶來的影響。同時,通過利用全并行排序算法,使得求解最大值和最小值的平均值的時間大幅度下降。通過計時器來計算處理時間,僅為0.137 ms,能夠滿足實時應用的需求。
參考文獻
[1] 劉東菊.基于閾值的圖像分割算法的研究[D].北京:北京交通大學,2009.
[2] 李了了,鄧善熙,丁興號.基于大津法的圖像分塊二值化算法[J].微計算機信息,2005,21(3):76-77.
[3] 楊勇,范勝利,張蕓蕾,等.一種基于FPGA非均勻光照圖像分割方法[J].太原科技大學學報,2014,35(6):419-422.
[4] 陳博亞.大鄰域圖像處理系統的研制[D].北京:清華大學,2006.
[5] 劉炯鑫.NIPC-3鄰域圖像并行處理機的軟件設計[D].北京:清華大學,2007.
[6] 蘇光大.鄰域圖像處理中的新型鄰域功能流水線結構[J].電子學報,2000,27(2):1-4.
[7] 王莉,蘇光大.基于FPGA的實時中值濾波器硬件實現[J].電子技術應用,2011,37(04):58-60.
[8] 師廷偉,金長江.基于FPGA的并行全比較排序算法[J].數字技術與應用,2013(10):126-127.