歐明敏,易 金,武 義
(福州大學,福建 福州 350108)
運動目標檢測[1]作為計算機視覺領域的重要研究方向,涉及圖像處理、模式識別以及人工智能等學科。實時準確的檢測到運動目標是關鍵,也是目標跟蹤和識別的前提條件。運動目標檢測廣泛應用于安全監(jiān)控、智能交通、人機交互以及視覺導航等領域[2-3]。目前,運動目標檢測算法主要包括幀間差分法、背景差分法和光流法[4-5]。
基于視頻圖像的運動目標檢測技術,國內外眾多學者對其進行了大量研究。文獻[6]中,王旭等人提出基于改進的視覺背景提取算法的運動目標檢測方法,通過動態(tài)調整像素點在空間的傳播速率以提高鬼影消除的速度,經過分析像素點的區(qū)域信息調整匹配閾值,在一定程度上克服了動態(tài)背景帶來的干擾,但沒有考慮到低照度等復雜環(huán)境下圖像對比度差、噪聲多的情況,且算法采用計算機實現(xiàn)運行效率低、實時性差。文獻[7]中,Zhang C 等人分析了傳統(tǒng)混合高斯模型背景差分法對慢速運動目標檢測的局限性,考慮了目標的空間連續(xù)性,提出結合前景匹配機制和短期穩(wěn)定性測度的方法。該方法能夠在背景相對簡單的環(huán)境中有效檢測運動緩慢的目標,但檢測精度受動態(tài)背景特別是光照的影響較大,在低照度等復雜環(huán)境下誤檢率高。
針對復雜環(huán)境下特別是低照度環(huán)境下視頻圖像呈現(xiàn)對比度低、噪聲大以及層次感弱等難以有效檢測其中的運動目標的問題,考慮到視頻圖像數據量大,對于復雜算法的處理難以保證其實時性,本文提出一種FPGA 實現(xiàn)的復雜環(huán)境下的目標檢測方法。利用FPGA 可并行計算的特點,采用流水線技術對圖像數據進行算法處理,實時性優(yōu)勢顯著。該方法采用CLAHE 算法[8]對視頻圖像中的亮度分量進行處理,提高了圖像的對比度,增強了層次感,同時有效降低了圖像噪聲。它采用改進的背景差分法提取運動目標并對背景構建模型,完成了背景的自適應更新。針對背景差分法中閾值選取不當易導致目標提取不完整的問題,本文對差分圖像采用OTSU算法[9]確定最優(yōu)閾值并應用于下一幀處理,從而有效區(qū)分了目標和背景,最后經過形態(tài)學處理得到了完整的運動目標。
首先,對采集的視頻圖像進行去噪處理,調整對比度以提高像素灰度值的動態(tài)范圍。其次,提取運動目標,去除存在的噪聲孤立點,并填充目標中的空洞。對現(xiàn)有圖像增強和目標檢測算法進行分析與研究,提出一種FPGA 實現(xiàn)的復雜環(huán)境下的目標檢測方法。本文的運動目標檢測流程如圖1 所示。
圖1 本文的運動目標檢測方法流程
數字圖像的直方圖描述了整幅圖像中不同灰度級的像素個數,體現(xiàn)的是灰度值在圖像中的分布規(guī)律。在低照度環(huán)境下,基于直方圖均衡算法[10]可以改善圖像質量,增強對比度。CLAHE 算法在傳統(tǒng)直方圖均衡算法的基礎上改進而來,克服了傳統(tǒng)算法在對整幅圖像進行對比度增強時導致的局部細節(jié)缺失問題,適用于低照度下的圖像增強。
CLAHE 算法主要包含以下4 個步驟。
(1)圖像子塊劃分。根據圖像的分辨率,自適應劃分為大小相等的圖像子塊。
(2)限制對比度直方圖統(tǒng)計。首先設置一個合適的裁剪值,然后分別對圖像子塊進行直方圖統(tǒng)計,比較子塊中每一個灰度級的統(tǒng)計值與裁剪值,把超過裁剪值的部分平均分配至整個灰度區(qū)間上。
(3)灰度值映射。根據限制對比度直方圖的統(tǒng)計結果,對每一個灰度級進行累積直方圖統(tǒng)計,最終通過式(1)的映射函數得到映射后的灰度值。
式中,S(xj)為像素級k的像素個數;W和H分別為圖像寬和高的像素個數;L為灰度級個數;Tk為灰度級xk經映射后的新灰度級。
(4)灰度值重構。若每一個子塊中的像素其灰度值直接采用該子塊的映射值,則整幅圖像將會呈現(xiàn)塊狀效應,應采用線性插值運算解決這一問題。
通過研究主要的運動目標檢測算法發(fā)現(xiàn),背景差分法克服了幀間差分法所提取的目標存在“空洞”的問題,可以完整地提取出運動目標。與光流法相比,背景差分法計算量小且實時性強,適合于FPGA 硬件實現(xiàn)。因此,本文采用背景差分法檢測運動目標。
設I(x,y)和B(x,y)分別為視頻的當前幀圖像和背景幀圖像,像素點(x,y)的差分結果為:
式中,T為閾值。若差分結果大于T,則該像素點判定為目標,否則判定為背景。
由于光照變化或某些干擾目標長時間停留于背景中,若不進行背景更新,那么之后的檢測結果將不準確。因此,本文采用基于前景檢測的背景更新策略自適應更新背景,即通過判斷前景檢測的結果自適應更新背景。背景更新模型為:
式中,Bk(x,y)為更新后的背景圖像;Bk-1(x,y)為上一幀的背景圖像;σ為更新速率系數,控制場景以一定的速率成為背景,值越大,目標融入背景的速度越快。
背景差分法得到的差分圖像通常含有目標和噪聲信息。此時,閾值的選取至關重要。傳統(tǒng)的閾值選取方式是根據經驗確定的,閾值是固定不變的。當環(huán)境發(fā)生變化時,傳統(tǒng)方式的分割效果不理想,抗干擾能力弱。
OTSU 算法是一種無參調控、自動尋優(yōu)的圖像分割方法,原理簡單,計算高效,分割效果顯著,在圖像分割領域得到了廣泛應用。因此,本文提出將OTSU 算法應用于閾值選取。首先將當前幀的差分圖像進行OTSU 算法處理,得到使目標和噪聲方差最大時的閾值,然后將該閾值應用于下一幀的背景差分法中。該方法可以根據環(huán)境的變化自適應確定閾值。
OTSU 算法的基本思路如下。設初始分割閾值為T,將圖像分為目標和背景兩部分。令圖像像素點總數為N,其中屬于目標的像素點個數為N0,平均灰度值為μ0;屬于背景的像素點個數為N1,平均灰度值為μ1。這兩部分像素占整幅圖像的比例分別為η0和η1,計算公式如下:
總平均灰度值為:
目標與背景的方差為:
將式(5)帶入式(6),得到方差的等價公式:
通過不斷迭代計算,得到使目標和噪聲方差取得最大時的閾值。
本文以FPGA 作為核心處理器。目標檢測方法的硬件結構如圖2 所示,由6 個功能模塊組成——灰度變換模塊、中值濾波模塊、CLAHE 算法模塊、背景差分及更新模塊、OTSU 算法模塊和形態(tài)學處理模塊組成。
圖2 FPGA 目標檢測方法硬件結構
圖像傳感器采集的圖像難免存在噪聲,降低了圖像質量。中值濾波可以很好地濾除孤立的噪聲,改善畫質。本文采用5×5 矩陣窗口實現(xiàn)快速中值濾波,如圖3 所示。首先對矩陣窗口的每一行進行排序得到最大值、中值和最小值;其次,對排序結果進行列排序,得到第一列中的最小值、第二列中的中值和第三列中的最大值;最后,對排序結果進行一次行排序,最終得到5×5 矩陣窗口的中值。
圖3 快速中值濾波過程
CLAHE 算法模塊的FPGA 實現(xiàn)分為圖像子塊劃分、限制對比度直方圖統(tǒng)計以及灰度值映射與重構3 個部分。
2.2.1 圖像子塊劃分
本文采集的圖像分辨率為640×480,根據比值大小可將圖像平均分為12 個子塊,每塊的大小為160×160。在視頻行信號有效期間,通過對像素進行計數得到像素的橫坐標。在場信號有效期間,對行信號進行計數得到像素的縱坐標。這樣即可判斷當前像素所屬的圖像子塊,并將該子塊的標志信號置高。
2.2.2 限制對比度直方圖統(tǒng)計
以圖像子塊1 為例,限制對比度直方圖統(tǒng)計采用如圖4 所示的狀態(tài)機實現(xiàn),其他子塊與之一致。
圖4 限制對比度直方圖統(tǒng)計狀態(tài)機
當行信號有效時,狀態(tài)機從IDLE 狀態(tài)跳轉至Hist_Statistics 狀態(tài),在此狀態(tài)根據像素所在的圖像子塊進行直方圖統(tǒng)計,并將統(tǒng)計結果以灰度值為地址存儲于位寬為16、深度為8 的雙口RAM(RAM1)中。當檢測到場信號的下降沿時,狀態(tài)機跳轉至Threshold_Limit 狀態(tài),在該狀態(tài)對直方圖進行裁剪。遍歷子塊的整個灰度級,若某些灰度的直方圖統(tǒng)計值高于設定的閾值,將超過的部分累加存儲于GLOBAL 寄存器中。遍歷完整個灰度級后,狀態(tài)機轉至Excess_Redistri 狀態(tài),在此狀態(tài)下將GLOBAL寄存器中的數據平均分配至整個灰度級上,從而完成限制對比度直方圖統(tǒng)計,同時狀態(tài)機跳轉至Clear_RAM2 轉態(tài),在此狀態(tài)下清空RAM2 中的數據為存儲累積直方圖做準備。
在CDF_Statistics 狀態(tài)中,需要完成累積直方圖統(tǒng)計。本文采用一個雙口RAM(RAM2)用于儲存子塊的累積直方圖。首先,讀取RAM1 中地址0 的數據并寫入RAM2 中地址0 對應的數據存儲空間;其次,將RAM2 地址加1,同時以新地址讀取RAM1 中的數據并加上RAM2 中上一地址對應的數據,共同寫入RAM2 中新地址對應的數據存儲空間。以此類推,完成子塊中整個灰度級的累積直方圖統(tǒng)計,之后將狀態(tài)機轉至Clear_RAM1,并清空RAM1中的數據為下次直方圖統(tǒng)計做準備。
2.2.3 灰度值映射與重構
在行場信號有效期間,根據當前像素所在的圖像子塊,從該子塊的RAM2 中取出以當前灰度值為地址的數據即對應的累積直方圖,后根據式(1)計算映射后的灰度值,并根據像素所在的位置執(zhí)行不同的重構策略。如圖5 所示,與圖像子塊劃分類似,本文將像素所在的位置分為Corner、Edge 和Center 共3 個部分。其中,Corner 部分由4 個大小為80×80 的正方形組成;Edge 部分由2 個大小為480×80 和2 個大小為80×320 的矩形組成;Center部分由6 個大小均為160×160 的正方形組成。
圖5 像素位置劃分
(1)當像素位于Corner 部分時,以Co1區(qū)域為例,灰度重構值為子塊1 的灰度映射值Tk(1),即:
(2)當像素位于Edge 部分時,以Ed1區(qū)域為例,灰度重構值的計算公式為:
式中,l1=y-3/2h,l2=H-1/2h-y。
(3)當像素位于Center 部分時,以Ce2區(qū)域為例,灰度重構值的計算公式如下:
2.2.4 目標檢測模塊
由于背景差分法需要緩存一幀背景圖像,若使用外部DDR 存儲,則可以減少FPGA 內部資源。但是,考慮到DDR 控制的復雜性和程序的可移植性,同時FPGA 內部RAM 資源充足,本文采用一個位寬為8、深度為307200 的雙口RAM(RAM3)緩存背景圖像。與灰度變換實現(xiàn)類似,背景更新也采用先放大后縮小的方法處理,以避免浮點數的計算。
針對背景差分法中閾值的選取,本文采用OTSU 算法自適應確定閾值??紤]到FPGA 具有優(yōu)異的并行處理能力,本文在背景差分法中插入流水線結構進行OTSU 算法的處理。對于差分圖像,在該圖像的行場信號有效期間進行灰度直方圖統(tǒng)計,并將統(tǒng)計結果分別存儲于256 個位寬為16 的寄存器中。在差分圖像的場信號消隱期間,對目標和噪聲的類間方差進行迭代計算,找到使目標和噪聲的類間方差取得最大時的閾值。為了加快閾值確定的速度,可以根據實際環(huán)境增大閾值的初始值和減小閾值的最大值。融合OTSU 算法和背景差分法的目標檢測模塊的實現(xiàn)結構,如圖6 所示。
本實驗選用Xilinx 公司的XC7A200T FPGA 芯片作為核心處理器,工作頻率為200 MHz,圖像傳感器選用OmniVision 公司的OV5640 Sensor,HDMI編碼芯片選用Silion 公司的SiT9134 chip,最高支持1080 P@60 Hz 視頻輸出。
圖6 目標檢測模塊結構
為了驗證在復雜環(huán)境下特別是低照度環(huán)境下本文提出的檢測方法的有效性,在室外光線較暗的環(huán)境中做驗證實驗,實驗結果如圖7 所示。其中,圖7(a)~圖7(f)依次為原始背景幀、原始當前幀、經CLAHE 算法處理后的背景幀、經CLAHE 算法處理后的當前幀、未經CLAHE 算法處理檢測到的運動目標和經CLAHE算法處理后檢測到的運動目標。
圖7 復雜環(huán)境下運動目標檢測結果
從實驗結果可知,在低照度等復雜環(huán)境下,圖像噪聲被放大,傳統(tǒng)的背景差分法得到的差分圖像中噪聲與目標由于灰度值接近而無法根據固定閾值檢測出完整的運動目標。本文提出的方法可以有效降低圖像噪聲,提高圖像的對比度,擴大差分圖像中目標與噪聲的灰度差,能夠根據環(huán)境的變化自適應確定背景差分法中的閾值。結果表明,在低照度等復雜環(huán)境下提取的運動目標輪廓完整清晰。
整個工程采用Verilog 硬件描述語言編寫,在Vivado 2018.2 軟件中完成綜合、編譯以及功能仿真,最后在本文所搭建的硬件平臺上實現(xiàn)。FPGA 資源占用情況如表1 所示。
表1 FPGA 資源使用情況
可見,本文提出的運動目標檢測方法硬件實現(xiàn)所消耗的資源總體較少,但其中的BRAM 資源占用較多,這是因為在設計背景差分模塊時未采用外置的DDR3 而是使用雙口RAM 緩存一幀背景圖像。
本文提出了一種基于FPGA 實現(xiàn)的復雜環(huán)境下的運動目標檢測方法,充分利用FPGA 可并行處理能力,采用模塊化思想,運用流水線技術進行硬件實現(xiàn),同時在室外復雜環(huán)境下進行了實驗。實驗結果表明,提出的檢測方法可以在復雜環(huán)境下有效檢測出運動目標。