基于FPGA視頻圖像的Canny算法加速器的設(shè)計(jì)
2.1 加速器設(shè)計(jì)實(shí)現(xiàn)
本文使用了一種能運(yùn)用于高斯平滑濾波和梯度計(jì)算的加速器的數(shù)據(jù)路徑結(jié)構(gòu)。由于這兩種計(jì)算過(guò)程均采用相同大小的方形移動(dòng)窗口,故其加速設(shè)計(jì)具有極大的相似性。對(duì)此,這里選取3×3的Sobel模塊來(lái)解釋說(shuō)明。本文引用地址:http://cafeforensic.com/article/190119.htm
Sobel的加速數(shù)據(jù)結(jié)構(gòu)如圖1所示。它是一個(gè)具有以下功能的流水線:先從原始的圖像中讀取像素值存入圖中右方的3組12寄存器中,數(shù)據(jù)流過(guò)中間的3×3的乘法器陣列,即像素值與模板值做乘法運(yùn)算;然后向下流過(guò)加法器,在加法器中完成和運(yùn)算,至此實(shí)現(xiàn)了像素值與模板的卷積運(yùn)算,之后到達(dá)Ex和Ey寄存器,通過(guò)絕對(duì)值電路和加法器(實(shí)現(xiàn)式(4))到達(dá)寄存器,最終流入最下面的寄存器。圖中負(fù)號(hào)表示取反,數(shù)值1和2表示右移的位數(shù)。
為使得加速器能夠有序地按照確定的步驟進(jìn)行,本文使用了有限狀態(tài)機(jī)。如圖2所示為加速器的簡(jiǎn)單狀態(tài)轉(zhuǎn)換圖。在加速器的執(zhí)行過(guò)程中,當(dāng)檢測(cè)到3組寄存器中的數(shù)據(jù)為空時(shí),讀信號(hào)使能re_en置1,自動(dòng)讀入新的3組數(shù)據(jù);且在下方寄存器存儲(chǔ)滿時(shí),寫信號(hào)使能wr_en置1,數(shù)據(jù)被提取進(jìn)行寫操作。
在加速器的執(zhí)行過(guò)程中,像素每4個(gè)為一組進(jìn)行讀寫,這樣在高速處理過(guò)程中大大縮減了對(duì)相同像素點(diǎn)的多次重復(fù)讀取而浪費(fèi)的時(shí)間;同時(shí),在處理過(guò)程中不需要在處理每個(gè)像素點(diǎn)時(shí)都對(duì)其鄰域的8個(gè)像素點(diǎn)更新,這樣節(jié)省了大量的讀取時(shí)間;并且由于FPGA的并行特性,像素的讀、移位及寫操作和乘法器的運(yùn)算是同時(shí)進(jìn)行的,使得處理速度有一定的提升。
fpga相關(guān)文章:fpga是什么
評(píng)論