摘" 要:該文首先對(duì)標(biāo)準(zhǔn)Sobel算法進(jìn)行分析,然后針對(duì)算法在其他方向邊緣檢測(cè)效果不好和閾值需要人為設(shè)定等不足對(duì)算法進(jìn)行改進(jìn)和優(yōu)化。該設(shè)計(jì)采用FPGA作為硬件平臺(tái),利用其并行處理能力,對(duì)Sobel算法進(jìn)行硬件加速,使其能夠自適應(yīng)地處理不同分辨率和幀率的視頻流。
關(guān)鍵詞:Sobel算法;雙線性插值;FPGA;自適閾值;硬件加速
中圖分類號(hào):TP301" " " 文獻(xiàn)標(biāo)志碼:A" " " " " 文章編號(hào):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
邊緣檢測(cè)是找出圖像中物體的邊界,這些邊界通常表現(xiàn)為像素強(qiáng)度的顯著變化[1-2]。通過邊緣檢測(cè),可以提取出圖像中重要的結(jié)構(gòu)和形狀信息,這些特征是圖像分割和圖像匹配的重要依據(jù),這對(duì)于進(jìn)一步的圖像分析和理解至關(guān)重要[3]。但在一些實(shí)時(shí)性要求較高的領(lǐng)域(如運(yùn)動(dòng)目標(biāo)檢測(cè)、人臉識(shí)別和無人駕駛等)中,由于計(jì)算量大實(shí)時(shí)性高,一般的CPU和DSP難以滿足視頻的實(shí)時(shí)邊緣檢測(cè)要求。FPGA具有高效的并行處理能力,可以同時(shí)處理多個(gè)任務(wù),實(shí)現(xiàn)視頻圖像數(shù)據(jù)的實(shí)時(shí)采集、處理和顯示。
1" 常規(guī)Sobel邊緣檢測(cè)算法
Sobel算子是離散的微分算子,用來計(jì)算圖像灰度的近似梯度。其計(jì)算公式如下
算子在計(jì)算鄰域像素對(duì)中心像素的影響時(shí),采用了距離反比的方式進(jìn)行加權(quán)。這意味著相鄰像素的影響取決于它們與中心像素的距離。這種加權(quán)方式有助于突出邊緣信息。Sobel算子在計(jì)算像素間的距離時(shí)采用的是城市距離而不是歐氏距離。城市距離是指在標(biāo)準(zhǔn)坐標(biāo)系上,兩點(diǎn)之間的絕對(duì)軸距之和。在Sobel算子中,對(duì)角方向相鄰像素之間的距離值為2。根據(jù)城市距離和梯度加權(quán)得出算子的3×3卷積核為
常規(guī)Sobel邊緣檢測(cè)算法存在著以下不足:一是水平和垂直方向的邊緣檢測(cè)效果還可以,但在其他方向則效果不佳;二是算子的閾值設(shè)定需要大量的實(shí)驗(yàn)和人為的經(jīng)驗(yàn),適應(yīng)性不好。
2" 改進(jìn)后的Sobel邊緣檢測(cè)算法
針對(duì)常規(guī)Sobel邊緣檢測(cè)算法的不足,從2個(gè)方面對(duì)算子進(jìn)行改進(jìn)。一是當(dāng)內(nèi)核為3時(shí),卷積可能會(huì)產(chǎn)生明顯的誤差,為解決這一問題,把Scharr函數(shù)用在45°和135°方向上,水平和垂直方向仍然用Sobel算子。其計(jì)算公式如下
對(duì)上述改進(jìn)算法進(jìn)行MATLAB仿真如圖2所示,從仿真圖像中可以看出改進(jìn)后的算法能夠獲得更多的紋理信息,邊緣會(huì)變得更清晰,明顯優(yōu)于常規(guī)Sobel邊緣檢測(cè)算法。
3" 實(shí)時(shí)自適應(yīng)視頻邊緣檢測(cè)處理系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件框圖如圖3所示。系統(tǒng)把輸入的四路視頻信號(hào)進(jìn)行分離,然后對(duì)輸出的視頻格式BT656進(jìn)行解析,分離出視頻數(shù)據(jù)同時(shí)產(chǎn)生行信號(hào)與場(chǎng)信號(hào),在行信號(hào)與場(chǎng)信號(hào)的控制存儲(chǔ)到DDR2中。從DDR2中讀出視頻數(shù)據(jù)進(jìn)行雙線性插值放大到顯示器顯示需要尺寸,把讀出的數(shù)據(jù)格式從YCbCr 4∶2∶2轉(zhuǎn)換到Y(jié)CbCr 4∶4∶4。對(duì)轉(zhuǎn)換后的視頻數(shù)據(jù)進(jìn)行Sobel邊緣檢測(cè),然后通過HDMI輸出顯示。系統(tǒng)的功能框圖如圖4所示。
3.1" 四路視頻解碼模塊
為了節(jié)約IO,TW2867將4個(gè)27 MHz的BT656信號(hào)復(fù)合在一個(gè)108 MHz的數(shù)據(jù)通道上傳輸。四路視頻解碼模塊先把108 MHz數(shù)據(jù)分離到4個(gè)27 MHz上,分離后并不清楚通道對(duì)應(yīng)情況。為了將分離出來的4路BT656對(duì)應(yīng)4個(gè)物理通道,要提取分離出來的第一個(gè)27 MHz數(shù)據(jù)ID,這個(gè)ID是TW2867疊加上去的,和物理輸入通道對(duì)應(yīng)。知道了第一個(gè)數(shù)據(jù)對(duì)應(yīng)的物理輸入通道就可以推斷出其他3個(gè)數(shù)據(jù)對(duì)應(yīng)的物理輸入通道,然后把分離出來的4路數(shù)據(jù)順序調(diào)整正確即可。
3.2" BT656解析模塊
對(duì)分離出來的視頻流BT656格式進(jìn)行解析,產(chǎn)生視頻處理所需的場(chǎng)同步、奇偶場(chǎng)標(biāo)志、行同步、DE等信號(hào),并指示是不是PAL制式的視頻。在這些控制信號(hào)的作用下把經(jīng)過BT656解析模塊處理后輸出的視頻YUV422格式存入DDR2中。
3.3" 雙線性插值放大模塊
的線性插值——首先在橫向進(jìn)行線性插值,然后在縱向進(jìn)行線性插值,以此來實(shí)現(xiàn)圖像的放大而不損失太多細(xì)節(jié)。這個(gè)過程可以通過FPGA的邏輯資源來實(shí)現(xiàn),以并行處理的方式提高效率。此外,在FPGA中實(shí)現(xiàn)雙線性插值放大時(shí),通過在2個(gè)相鄰的時(shí)鐘周期之間進(jìn)行插值,來實(shí)現(xiàn)一維信號(hào)的插值運(yùn)算簡(jiǎn)化計(jì)算過程,提高處理速度。
3.4" 格式轉(zhuǎn)化模塊
為了獲得更清晰的視頻和圖像邊界,需要把視頻格式從YCbCr 4∶2∶2轉(zhuǎn)換到Y(jié)CbCr4∶4∶4。為了簡(jiǎn)化算法和減少FPGA資源的消耗,采用簡(jiǎn)單像素復(fù)制的方式。將CbCr分開,并復(fù)制如:CbYCrYCbYCrY--gt;CbCrYCbCrYCbCrYCbCrY。
3.5" Sobel邊緣檢測(cè)模塊
Sobel邊緣檢測(cè)的核心是Sobel算子在圖像矩陣上進(jìn)行滑動(dòng)卷積[5]。圖5為以目標(biāo)像素為中心的3×3窗口,使用2個(gè)菊花鏈FIFO對(duì)像素緩存,通過行緩存可以實(shí)現(xiàn)行對(duì)齊,通過對(duì)各行緩存的讀取控制,使各行的第一個(gè)像素對(duì)齊,可以實(shí)現(xiàn)列對(duì)齊。在3×3窗口的基礎(chǔ)上,分別對(duì)4個(gè)方向的算子進(jìn)行卷積得到4個(gè)方向的梯度,然后取4個(gè)方向的梯度的L2范數(shù)。
在計(jì)算自適應(yīng)閾值時(shí)需要計(jì)算3×3窗口內(nèi)像素的均值,計(jì)算公式為
計(jì)算公式中有除法運(yùn)算,在FPGA會(huì)占用較多的邏輯資源。因此可以將除法運(yùn)算轉(zhuǎn)化為乘法運(yùn)算和移位操作,從而減少資源消耗,還可以獲得更快的運(yùn)算速度。修改后的自適應(yīng)閾值計(jì)算公式為
根據(jù)梯度和閾值的計(jì)算過程,采用并行流水線的方式設(shè)計(jì),大大提高了視頻的處理速度。
4" 系統(tǒng)仿真與測(cè)試
為了驗(yàn)證Sobel邊緣檢測(cè)模塊的功能,需要編寫適當(dāng)?shù)臏y(cè)試激勵(lì),這包括生成測(cè)試圖像數(shù)據(jù)以及預(yù)期的邊緣檢測(cè)結(jié)果。測(cè)試的圖像數(shù)據(jù)采用MATLAB中的圖像數(shù)據(jù),預(yù)期的邊緣檢測(cè)結(jié)果數(shù)據(jù)也采用MATLAB中生成的結(jié)果數(shù)據(jù),以便于與MATLAB的仿真相比較。Sobel邊緣檢測(cè)的ModelSim仿真如圖6所示。
從ModelSim仿真圖中可以看出,通過輸出結(jié)果與預(yù)期的邊緣檢測(cè)結(jié)果比較完全一致。Sobel邊緣檢測(cè)的RTL如圖7所示。
在進(jìn)行實(shí)時(shí)自適應(yīng)視頻邊緣檢測(cè)處理系統(tǒng)測(cè)試時(shí),把視頻頭對(duì)準(zhǔn)FPGA開發(fā)教材“貓貓”書,可以清晰地檢測(cè)出“貓貓”的邊緣及FPGA等字樣的邊緣。測(cè)試結(jié)果表明系統(tǒng)具有實(shí)時(shí)性好、處理速度快、邊緣檢測(cè)清晰等優(yōu)點(diǎn),實(shí)時(shí)自適應(yīng)視頻邊緣檢測(cè)處理系統(tǒng)如圖8所示。
參考文獻(xiàn):
[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è)務(wù)的現(xiàn)狀與發(fā)展方向[J].電視技術(shù),2006,30(4):80-82.
[4] 朱明達(dá),辛鵬,常嘉穎.基于FPGA的九點(diǎn)插值自適應(yīng)圖像縮放算法設(shè)計(jì)[J].液晶與顯示,2023,38(8):1076-1082.
[5] 高尚尚,劉海波,郭乃宏,等.基于自適應(yīng)閾值邊緣檢測(cè)算法研究及FPGA實(shí)現(xiàn)[J].電子器件,2023,46(5):1314-1319.