梁禹 韓舒羽
關鍵詞:MATLAB;三幀差分邊緣檢測;目標重疊
智能視頻監(jiān)控系統(tǒng)具有智能化與數(shù)字化優(yōu)勢,目前被廣泛應用于交通與安防等領域[1]。當下,一些常用的運動目標檢測算法包括幀間差分法、背景差分法、光流法等,在分析這些方法的原理和流程后,可以對其優(yōu)缺點進行比較[2]。將以上三種方法進行對比發(fā)現(xiàn),利用幀差法來實現(xiàn)運動目標的檢測,實驗表明,對于運動快且形狀較大的運動目標,在運動圖像檢測中有良好的效果[3]。幀間差分算法實現(xiàn)簡單,程序計算復雜度低,運行速度快,而且對環(huán)境中的場景光線的變化不敏感,還能提高檢測準確率[4]。并且,該算法只對運動目標比較敏感,運行穩(wěn)定,適合用于目標檢測對復雜度要求低和資源利用低的場景。
幀間差分法直接比較連續(xù)兩幀或多幀圖像中對應像素的灰度值,然后在設置閾值的序列圖像中提取運動目標的區(qū)域[5],該算法適合用于智能安防監(jiān)控領域。當多幀連續(xù)的視頻畫面中有運動目標時,幀間差分法對相鄰兩幀圖像作差分運算并計算得到結果,通過該算法可以快速提取出運動的目標區(qū)域。與其他算法相比,該算法也更易于在FPCA等硬件上實現(xiàn)。本文在此基礎上提出一種融合算法,該融合算法融合三幀差分法和改進的邊緣檢測算法,使用MATLAB進行仿真驗證表明,該算法的優(yōu)點是能降低檢測目標的重疊性。
1三幀差分邊緣檢測算法
圖像是一種最直觀的視覺內容,包含較多信息,其中邊緣和輪廓是圖像的最基本特征,蘊藏著圖像中最為關鍵的信息。Sobel算子的工作原理是:對圖像的局部像素點進行平均化或加權平均化計算,利用灰度變化設置閾值判斷像素點是否為邊緣點,實現(xiàn)消除噪音和平滑圖像的效果。本文提出三幀差分邊緣檢測的融合算法,是將三幀差分算法和基于新的計算公式的邊緣檢測算法進行融合得到的目標檢測算法,通過融合改進的邊緣檢測算法之后,使得提取的目標區(qū)域邊緣更加連續(xù),軌跡清晰,同時可提高算法的準確率,降低重疊性,且融合后的算法在FPCA上易于實現(xiàn)。在進行圖像處理時,經常用到邊緣檢測算法。通過邊緣檢測計算后,使得圖像邊緣信息更加清晰、直觀地表現(xiàn)在原始圖像中,對于圖像中的細節(jié)部分,如目標的直徑、寬度等都可被邊緣檢測算法檢測并描述出。對于圖像中表面深度、方向不連續(xù)以及光照條件不同時,圖像都會產生邊緣信息。圖像不同的灰度值顯示如圖1所示。
從圖1中可以發(fā)現(xiàn),在第四和第五像素間有明顯的亮度變化,二者之間會產生一個邊緣,在這兩個像素點之間產生了明顯的變化。在實際場景中,不同圖像產生的邊緣信息也有所不同,本文通過選取不同的閾值來區(qū)分它們。對于圖像算法中邊緣檢測算法常應用在眾多研究方向中,常用的邊緣檢測算子有Prewitt,Sobel,Roberts,Log和Canny,將這些常用的算子在MATALB2018a平臺下進行仿真,得到各個算子的仿真結果如圖2所示。通過在MATLAB下仿真,并對常用算子實現(xiàn)邊緣檢測的效果進行對比。
使用相同的原始輸入圖像,通過對各邊緣檢測算子在MATLAB下進行仿真,并分析結果可得:(1)Roberts算子的優(yōu)勢在于對水平和垂直方向的檢測效果好,對于圖像的對角線上檢測效果一般;(2) Prewitt算子對濾除噪聲、邊緣定位的效果一般,在圖像邊緣信息上可以起到平滑的作用;(3)與其他算子相比,Sobel算子可以精確地檢測出圖像的邊緣信息,濾除噪聲效果很好,且計算量較小;(4) Log算子的優(yōu)勢是在進行濾除噪聲和邊緣定位時效果較好;(5) Canny算子對噪聲的濾除效果最好,在濾除噪聲的同時,也容易平滑掉一些邊緣,邊緣定位比較準確。
基于上述分析,本文決定采用的邊緣檢測算法的算子是Sobel算子,該算法對于X和Y兩個方向的算子如圖3所示。Sobel邊緣檢測算法和中值濾波算法在FPCA上進行實現(xiàn)時需要的圖像緩存處理很相似,都需要3x3的矩陣,也需要相同的移位寄存器,利用三個移位寄存器可以輸出3x3窗口,即得到3x3矩陣,此3x3窗口和中值濾波的3x3窗口的結構一致。
傳統(tǒng)的Sobel邊緣檢測算法是對0。和90。進行計算,對于上述算子通過與圖像A進行卷積運算,計算出梯度G。和G。,再通過開平方根的方式得到最終計算結果,其計算公式如下:
對于Sobel邊緣檢測算法在FPGA下進行實現(xiàn),在FPGA下實現(xiàn)為了減少邏輯資源消耗,使用不開平方的近似值,利用絕對值代替開平方根的方法,其計算公示可以簡化為:
本文基于上述計算方式提出了改進的Sobel的新計算方法,在0。和90。兩個方向上增加45。和135。,目的是進一步豐富圖像的邊緣特性。圖4為四個方向的算子。然后,將3x3矩陣與四個方向Sobel算子進行卷積。由于運算符都是由0、±1、±2組成,0和±1對應的像素值可以直接加減,所以±2對應的像素值可以通過左移1位乘以2來代替。該運算操作可以降低資源的使用率,提升算法的執(zhí)行效率。
對于Sobel邊緣檢測算法在引入4個方向后,在原有的兩個方向計算上引入45。和135。后,按照上述計算方法對4個方向進行計算,邊緣檢測算法4個方向的計算公式如下:
為了可以在FPCA上節(jié)約邏輯資源,更易于在FPCA上實現(xiàn)該算法,本文提出計算4個方向的Sobel邊緣檢測算法的新計算公式如下:
與兩幀差分法檢測目標相比,使用三幀差分法可以在處理空洞和輪廓丟失上得到更加理想的效果,通過融合改進的、基于新的計算公式的邊緣檢測算法,能對目標進行更加精準的定位,同時比傳統(tǒng)計算方式更加節(jié)省資源。因此,將兩個算法融合后可以得到更具有優(yōu)勢的融合算法。該融合算法的實現(xiàn)過程為:首先,對緩存連續(xù)視頻中的相鄰三幀圖像分別兩兩差分,將差分結果進行二值化處理,然后對原始圖像使用基于新的計算方式的邊緣檢測算法進行計算,最后將結果與二值化結果進行比對,得到目標區(qū)域。為了能準確檢測運動目標,而且能很好地描述目標的外觀和輪廓,同時能消除大量不相關的噪聲,選擇加入計算四個方向的Sobel邊緣檢測算法,將差分后的結果與Sobel邊緣檢測后的結果進行邏輯運算。該方法的優(yōu)勢是可以有效減少目標重疊現(xiàn)象。該算法的流程圖如圖5所示。
三幀差分邊緣檢測算法的實現(xiàn)步驟為:(1)從一段視頻中提取出連續(xù)三幀的原始圖像,分別進行灰度處理;(2)將三幀灰度圖像進行兩兩差分運算;(3)將差分后的結果進行二值化處理.然后對原始圖像進行邊緣計算,使用基于新的計算公式的邊緣檢測算法,再將結果與二值化處理結果進行邏輯運算;(4)將上一步中計算得到的圖像進行中值濾波處理;(5)得到最終的目標檢測結果。
2三幀差分邊緣檢測算法的MATLAB仿真
將本文提出的融合算法在MATLAB下進行仿真。首先,在MATLAB下讀取一段視頻文件,如圖6是對一段連續(xù)的車輛行駛視頻分別獲取其中連續(xù)幾幀的圖像,并按照算法流程圖分別進行灰度處理、相與操作、二值化處理、邊緣檢測等。分別對三幀差分法、融合三幀差分法和Sobel邊緣檢測算法、融合三幀差分法、基于新的計算公式的邊緣檢測算法進行MATLAB實現(xiàn)。按照上述基于新的計算公式的邊緣檢測算法和三幀差分法進行融合處理,并與三幀差分法、融合三幀差分和Sobel邊緣檢測算法在MATLAB上進行仿真對比。相關算法對比結果如圖6所示。
通過在MATLAB下進行仿真實驗分析,將三種算法分別進行MATLAB仿真實現(xiàn)后可以發(fā)現(xiàn),在對比融合改進的目標檢測算法后,在傳統(tǒng)三幀差分法、傳統(tǒng)融合三幀差分法、邊緣檢測的基礎上可以減少目標重疊現(xiàn)象,同時能消除大量不相關的噪聲。通過在MATLAB下實驗證明,改進的融合算法在減少目標重疊現(xiàn)象方面具有優(yōu)化效果。同時,對于在邊緣檢測算法中改進的算法公式也適合在FPCA上進行實現(xiàn)。
3結束語
本文提出基于目標檢測的融合算法,融合三幀差分法與基于新的計算公式的邊緣檢測算法,并在MATLAB下分別進行仿真和對比實驗,通過仿真實驗可以驗證,對于一段連續(xù)實時運動目標的檢測,能有效降低目標重疊性,同時可以有效消除不相關的噪聲。