摘" 要:該文首先對標準Sobel算法進行分析,然后針對算法在其他方向邊緣檢測效果不好和閾值需要人為設(shè)定等不足對算法進行改進和優(yōu)化。該設(shè)計采用FPGA作為硬件平臺,利用其并行處理能力,對Sobel算法進行硬件加速,使其能夠自適應地處理不同分辨率和幀率的視頻流。
關(guān)鍵詞:Sobel算法;雙線性插值;FPGA;自適閾值;硬件加速
中圖分類號:TP301" " " 文獻標志碼:A" " " " " 文章編號:2095-2945(2024)32-0015-04
Abstract: This paper first analyzes the standard Sobel algorithm, and then improves and optimizes the algorithm to address the shortcomings of the algorithm such as poor edge detection performance in other directions and the need to manually set thresholds. This design uses FPGA as the hardware platform, and uses its parallel processing capabilities to hardware accelerate Sobel algorithm, making it able to adaptively process video streams with different resolutions and frame rates.
Keywords: Sobel algorithm; bilinear interpolation; FPGA; adaptive threshold; hardware acceleration
邊緣檢測是找出圖像中物體的邊界,這些邊界通常表現(xiàn)為像素強度的顯著變化[1-2]。通過邊緣檢測,可以提取出圖像中重要的結(jié)構(gòu)和形狀信息,這些特征是圖像分割和圖像匹配的重要依據(jù),這對于進一步的圖像分析和理解至關(guān)重要[3]。但在一些實時性要求較高的領(lǐng)域(如運動目標檢測、人臉識別和無人駕駛等)中,由于計算量大實時性高,一般的CPU和DSP難以滿足視頻的實時邊緣檢測要求。FPGA具有高效的并行處理能力,可以同時處理多個任務,實現(xiàn)視頻圖像數(shù)據(jù)的實時采集、處理和顯示。
1" 常規(guī)Sobel邊緣檢測算法
Sobel算子是離散的微分算子,用來計算圖像灰度的近似梯度。其計算公式如下
算子在計算鄰域像素對中心像素的影響時,采用了距離反比的方式進行加權(quán)。這意味著相鄰像素的影響取決于它們與中心像素的距離。這種加權(quán)方式有助于突出邊緣信息。Sobel算子在計算像素間的距離時采用的是城市距離而不是歐氏距離。城市距離是指在標準坐標系上,兩點之間的絕對軸距之和。在Sobel算子中,對角方向相鄰像素之間的距離值為2。根據(jù)城市距離和梯度加權(quán)得出算子的3×3卷積核為
常規(guī)Sobel邊緣檢測算法存在著以下不足:一是水平和垂直方向的邊緣檢測效果還可以,但在其他方向則效果不佳;二是算子的閾值設(shè)定需要大量的實驗和人為的經(jīng)驗,適應性不好。
2" 改進后的Sobel邊緣檢測算法
針對常規(guī)Sobel邊緣檢測算法的不足,從2個方面對算子進行改進。一是當內(nèi)核為3時,卷積可能會產(chǎn)生明顯的誤差,為解決這一問題,把Scharr函數(shù)用在45°和135°方向上,水平和垂直方向仍然用Sobel算子。其計算公式如下
對上述改進算法進行MATLAB仿真如圖2所示,從仿真圖像中可以看出改進后的算法能夠獲得更多的紋理信息,邊緣會變得更清晰,明顯優(yōu)于常規(guī)Sobel邊緣檢測算法。
3" 實時自適應視頻邊緣檢測處理系統(tǒng)硬件設(shè)計
系統(tǒng)硬件框圖如圖3所示。系統(tǒng)把輸入的四路視頻信號進行分離,然后對輸出的視頻格式BT656進行解析,分離出視頻數(shù)據(jù)同時產(chǎn)生行信號與場信號,在行信號與場信號的控制存儲到DDR2中。從DDR2中讀出視頻數(shù)據(jù)進行雙線性插值放大到顯示器顯示需要尺寸,把讀出的數(shù)據(jù)格式從YCbCr 4∶2∶2轉(zhuǎn)換到Y(jié)CbCr 4∶4∶4。對轉(zhuǎn)換后的視頻數(shù)據(jù)進行Sobel邊緣檢測,然后通過HDMI輸出顯示。系統(tǒng)的功能框圖如圖4所示。
3.1" 四路視頻解碼模塊
為了節(jié)約IO,TW2867將4個27 MHz的BT656信號復合在一個108 MHz的數(shù)據(jù)通道上傳輸。四路視頻解碼模塊先把108 MHz數(shù)據(jù)分離到4個27 MHz上,分離后并不清楚通道對應情況。為了將分離出來的4路BT656對應4個物理通道,要提取分離出來的第一個27 MHz數(shù)據(jù)ID,這個ID是TW2867疊加上去的,和物理輸入通道對應。知道了第一個數(shù)據(jù)對應的物理輸入通道就可以推斷出其他3個數(shù)據(jù)對應的物理輸入通道,然后把分離出來的4路數(shù)據(jù)順序調(diào)整正確即可。
3.2" BT656解析模塊
對分離出來的視頻流BT656格式進行解析,產(chǎn)生視頻處理所需的場同步、奇偶場標志、行同步、DE等信號,并指示是不是PAL制式的視頻。在這些控制信號的作用下把經(jīng)過BT656解析模塊處理后輸出的視頻YUV422格式存入DDR2中。
3.3" 雙線性插值放大模塊
的線性插值——首先在橫向進行線性插值,然后在縱向進行線性插值,以此來實現(xiàn)圖像的放大而不損失太多細節(jié)。這個過程可以通過FPGA的邏輯資源來實現(xiàn),以并行處理的方式提高效率。此外,在FPGA中實現(xiàn)雙線性插值放大時,通過在2個相鄰的時鐘周期之間進行插值,來實現(xiàn)一維信號的插值運算簡化計算過程,提高處理速度。
3.4" 格式轉(zhuǎn)化模塊
為了獲得更清晰的視頻和圖像邊界,需要把視頻格式從YCbCr 4∶2∶2轉(zhuǎn)換到Y(jié)CbCr4∶4∶4。為了簡化算法和減少FPGA資源的消耗,采用簡單像素復制的方式。將CbCr分開,并復制如:CbYCrYCbYCrY--gt;CbCrYCbCrYCbCrYCbCrY。
3.5" Sobel邊緣檢測模塊
Sobel邊緣檢測的核心是Sobel算子在圖像矩陣上進行滑動卷積[5]。圖5為以目標像素為中心的3×3窗口,使用2個菊花鏈FIFO對像素緩存,通過行緩存可以實現(xiàn)行對齊,通過對各行緩存的讀取控制,使各行的第一個像素對齊,可以實現(xiàn)列對齊。在3×3窗口的基礎(chǔ)上,分別對4個方向的算子進行卷積得到4個方向的梯度,然后取4個方向的梯度的L2范數(shù)。
在計算自適應閾值時需要計算3×3窗口內(nèi)像素的均值,計算公式為
計算公式中有除法運算,在FPGA會占用較多的邏輯資源。因此可以將除法運算轉(zhuǎn)化為乘法運算和移位操作,從而減少資源消耗,還可以獲得更快的運算速度。修改后的自適應閾值計算公式為
根據(jù)梯度和閾值的計算過程,采用并行流水線的方式設(shè)計,大大提高了視頻的處理速度。
4" 系統(tǒng)仿真與測試
為了驗證Sobel邊緣檢測模塊的功能,需要編寫適當?shù)臏y試激勵,這包括生成測試圖像數(shù)據(jù)以及預期的邊緣檢測結(jié)果。測試的圖像數(shù)據(jù)采用MATLAB中的圖像數(shù)據(jù),預期的邊緣檢測結(jié)果數(shù)據(jù)也采用MATLAB中生成的結(jié)果數(shù)據(jù),以便于與MATLAB的仿真相比較。Sobel邊緣檢測的ModelSim仿真如圖6所示。
從ModelSim仿真圖中可以看出,通過輸出結(jié)果與預期的邊緣檢測結(jié)果比較完全一致。Sobel邊緣檢測的RTL如圖7所示。
在進行實時自適應視頻邊緣檢測處理系統(tǒng)測試時,把視頻頭對準FPGA開發(fā)教材“貓貓”書,可以清晰地檢測出“貓貓”的邊緣及FPGA等字樣的邊緣。測試結(jié)果表明系統(tǒng)具有實時性好、處理速度快、邊緣檢測清晰等優(yōu)點,實時自適應視頻邊緣檢測處理系統(tǒng)如圖8所示。
參考文獻:
[1] LIU T,XU M,LIS X.MRS-Net+for enhancing face quality of compressed videos[J].IEEE Transactions on Circuits and Systems for Video Technology,2022,32(5):2881-2894.
[2] XU Y Z,WU T,CHARLTON J R.Small blob detector using bi-threshold constrained adaptive scales[J].IEEE Transactions on Biomedical Engineering,2021,68(9):2654-2665.
[3] 王善斌,李同山,張連俊,等.圖像通信業(yè)務的現(xiàn)狀與發(fā)展方向[J].電視技術(shù),2006,30(4):80-82.
[4] 朱明達,辛鵬,常嘉穎.基于FPGA的九點插值自適應圖像縮放算法設(shè)計[J].液晶與顯示,2023,38(8):1076-1082.
[5] 高尚尚,劉海波,郭乃宏,等.基于自適應閾值邊緣檢測算法研究及FPGA實現(xiàn)[J].電子器件,2023,46(5):1314-1319.