999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

圖像卷積實時計算的FPGA實現

2021-01-21 12:35:46張帆
電子設計工程 2021年1期

張帆

(中國科學院長春光機所,吉林 長春 130033)

卷積運算普遍應用在圖像模糊、圖像銳化以及卷積神經網絡、目標識別等數字圖像處理中,是圖像預處理的關鍵步驟。根據卷積計算操作單一化、算法簡便的特點,結合FPGA資源循環復用和并行處理結構,實現了基于FPGA的圖像卷積計算[1-4]。但是圖像卷積計算要求遍歷圖像所有像素點,圖像像素越多,計算時間越長;同時在圖像處理中涉及多級聯卷積計算,例如卷積神經網絡計算時,其并行性差,導致圖像處理實時性很難得到保證,因此對基于FPGA的圖像卷積計算方式的研究顯得尤為重要[5-6]。

目前對于提升FPGA圖像處理中卷積計算時間的研究主要分為硬件和軟件兩個方面。其中基于硬件電路的設計方法簡單,根據圖像卷積處理目的設計出特定的電路結構,以滿足圖像處理需求[7-8]。這種方法能夠有效地實現卷積計算,但是不具有通用性,實用價值不高。所以基于FPGA算法處理圖像數據的方法更具有研究意義。結合FPGA的高速處理能力和并行計算特點,設計算法框架以實現降低資源消耗,提升圖像處理速率的目的[9-10]。文獻中提出多種方法,包括基于FPGA設計一種卷積計算IP核,通過對IP核參數設置,實現對不同窗口大小、不同系數的卷積計算[11]。利用FPGA的并行機制以及分布式,用查找表代替乘法器,降低圖像運算量[12]。采用異步接收發送以及流水線結構,實現圖像數據準確傳輸及計算[13-16]。文獻中提出的基于FPGA卷積計算是根據系統獲取圖像數據后,通過不同的卷積計算方法減少圖像處理時間,提高圖像處理效率。在此基礎上設計一種實時圖像卷積計算方法,實現在圖像數據采集過程中完成圖像預處理卷積計算功能,提高圖像處理速率;同時針對多級聯卷積計算,圖像輸出計算結果實時性不受卷積次數影響,圖像輸入輸出同步化。

基于FPGA實現多級聯卷積計算步驟主要包括:首先,應用乒乓FIFO的方式對輸入的數字圖像數據進行異步緩存及同步操作;然后,輸入到循環復用的RAM存儲器中,對數據進行逐行卷積計算并將結果直接輸出到下一級卷積計算模塊。整個計算過程中,數據并行處理及傳輸,系統不需要存儲整幅圖像數據,節省了FPGA的存儲空間。通過比較MATLAB圖像處理結果和ISIM仿真結果,驗證了該方法的可行性以及正確性。同時搭建了硬件操作系統,對相機獲取的圖像進行卷積圖像操作,實現圖像處理的并行性以及實時性的驗證。

1 FPGA多級聯圖像卷積計算

數字圖像卷積計算廣泛應用于圖像平滑、圖像銳化、形態學處理、模板匹配、卷積神經網絡、目標識別等。根據實際要求,選擇不同卷積核,將輸入圖像處理成期望結果。常見的卷積操作包括圖像平滑中選用均值濾波、高斯濾波等方法實現噪聲濾除;圖像銳化中邊緣提取的Roberts算子、Sobel算子、Prewitt算子、Laplacian算子以及Canny算子等,卷積神經網絡中獲取圖像特征的卷積計算。

卷積核是卷積運算的核心,形式多為二維矩陣,矩陣中各位置權重不同,對圖像的處理結果也存在差異。對于輸入的數字圖像F,寬度和高度分別為w、h,卷積核H的維度參數為wH、hH,卷積核的長度和寬度多為奇數。其中wH、hH<=w、h。卷積計算示意圖如圖1所示。

圖1 卷積核內部計算示意圖

將卷積核中心像素點與數字圖像中待計算的像素點重合,圖像F中鄰域區間與卷積核中數據一一對應,根據公式(1)計算中心像素點對應在輸出圖像G中像素點的灰度值。應用卷積核遍歷整幅圖像,獲取相應操作的輸出圖像。

可以看出圖像的卷積計算方法簡單,可重復性強,但是計算數據量大。對于圖像需要多次卷積計算的處理時間更長。對此,文中結合FPGA并行性,提出了高效實時計算圖像多級聯卷積計算的方法。

1.1 基于FPGA的圖像卷積計算設計

基于FPGA的圖像卷積計算主要是通過循環利用RAM存儲器實現的。由于圖像的卷積計算算法簡單,每個像素點操作方法相同,依據FPGA硬件的并行算法能夠有效實現數值的實時運算。

圖像數據按照FPGA內部數字時鐘逐行順序輸入。FPGA內部設定(2hH-2)個RAM存儲器,其中hH表示卷積核的高度。每個RAM存儲器位長為M bit,位深為w,M等于圖像數據的位長,位深w即為圖像每行的數據量。下面以3×3的卷積核為例,詳細介紹圖像卷積計算的實現。

當卷積核是3×3大小時,FPGA預先設定4個RAM 存儲器,其中 RAM1、RAM2為一組,RAM3、RAM4為另一組,實現相鄰兩行圖像數據的緩存。如圖1所示,RAM1、RAM2中分別存儲前兩行數據,當第三行數據按順序依次輸入時,根據數字輸入時鐘節拍讀取RAM1、RAM2同一列數據,先后得到L1、M1、H1以及 L2、M2、H2;FPGA新讀入第三列數據時,獲取 L3、M3、H3數據,原圖像中以 M2為中心點的八鄰域數據全部獲得。將該鄰域數據與卷積核進行相應計算,結果作為卷積處理后圖像M2位置處的像素值輸出。

對整幅圖像進行操作時,循環使用RAM1、RAM2和RAM3、RAM4對數據進行緩存,其過程如圖2所示。首先將圖像前兩行數據F(1,:)、F(2,:)依次存入RAM1、RAM2中;在第三行數據 F(3,:)輸入過程中,求出卷積處理后圖像的第二行數據G(2,:)并輸出,同時將RAM2中數據和新輸入的行數據(即F(2,:)和 F(3,:))存入 RAM3、RAM4中。當第四行數據 F(4,:)輸入時,依照上述方法,結合RAM3、RAM4存儲器中數據和新輸入的數據計算圖像G(3,:)對應的輸出結果,同時將RAM4中數據和第四行數據(即F(3,:)和 F(4,:))存入 RAM1、RAM2中。以此類推,在行數據輸入過程中,完成該行的卷積計算以及下一行卷積計算數據的預存儲。循環利用RAM1、RAM2和RAM3、RAM4組合,交替存儲數據,逐行計算圖像卷積結果,當最后一行數據寫入結束時,對應的G圖像數據也計算完成,實現了圖像卷積計算結果的實時輸出。

圖2 圖像卷積計算過程

對于圖像首末行、列空缺數據,根據計算要求采取相應的方法。對于圖像濾波等操作,可以采用補值方法,將原圖像數據直接輸出補充該位空缺值;對于卷積神經網絡、目標識別等圖像操作,可以直接輸出計算結果,忽略空缺位置。

此外結合FPGA運算準則對卷積核與圖像數據間的函數計算進行分析,如果僅涉及到加減法或者乘法運算,例如邊緣梯度計算,FPGA內部提供相應IP核可以直接實現數值計算。但是對于均值濾波這種需要實現數據除法計算時,FPGA內部沒有直接使用的IP核,考慮到在FPGA中實現二進制除法的復雜性,文中采用倒數求解法來實現除法的計算。首先將除數取倒數后轉換為二進制的小數格式,整數保留一位(考慮到除數為1的情況)。然后,將被除數與該二進制倒數相乘,計算結果的整數部分即為除法運算的商。倒數求解法將除法運算轉換為乘法運算,使卷積計算的操作過程更簡便。

1.2 多級聯卷積實時計算

對于圖像處理中存在多級聯卷積計算時,采用并行處理的方式實現圖像數據的實時傳輸。如圖3所示。

圖3 多級聯卷積計算過程

當忽略圖像首末行、列數據缺省現象,即圖3(a)所示,原始圖像F逐行輸入卷積計算模塊,根據上節原理進行計算,當第三行數據輸入時,經過卷積核H1計算出的結果G1中第一行數據輸出,同時將圖像G1首行數據輸入卷積核為H2的卷積計算模塊中。依此類推,隨著圖像F的逐行輸入,F與卷積核H1的卷積計算結果G1實時逐行輸出;同時得到的G1圖像數據直接輸入下一級卷積計算模塊,實現與卷積核H2的計算。由此可以看出,最終輸出圖像G2的最后一行數據與輸入的原始圖像F最后一行數據同時結束,實現了多級聯圖像卷積計算的實時性。

當圖像首末行、列數據空缺處填補數據的情況下,如圖3(b)所示,當原始圖像F第二行數據輸入到卷積計算模塊時,直接作為圖像G1首行數據輸出,同理其余行首末列數據直接輸出。當圖像F最后一行數據輸入時,經過卷積核H1計算得到G2倒數第二行數據,然后將F最后一行數據直接輸出,填補G1最后一行數據空缺。從圖中可以看出,G1輸出時間相比于原圖F延遲一行數據傳輸的時間;G2輸出時間相比于G1延遲一行數據輸出時間,相比于F延遲兩行數據輸出時間。所以對空缺行列數據進行補位的圖像卷積計算過程中,第N層卷積計算結果輸出圖像相比于原始圖像延遲N行數據輸出時間。該延遲時間相對于圖像數據的輸入時間可以忽略不計,因此該系統實現了多級聯圖像卷積計算的實時性。

2 FPGA卷積計算系統仿真

該文借助ISEM14.7仿真軟件對FPGA卷積計算過程進行仿真。將原始圖像數據逐行排列轉換為txt文件。通過仿真程序依次讀取圖片數據,同時按照Camera Link接口協議模擬FVAL、LVAL以及DVAL信號輸入。卷積計算中RAM復用仿真圖如圖4所示。

圖4 卷積計算系統信號仿真圖

分別計算基于FPGA卷積圖像處理中均值濾波和拉普拉斯邊緣兩類卷積計算結果。將仿真結果與MATLAB軟件處理結果進行比較,其結果如圖5所示。

圖5 FPGA、MATLAB卷積計算結果比較

通過比較FPGA仿真和MATLAB處理結果,可以看出FPGA系統設計有效地實現了圖像的卷積處理。其次對于類似拉普拉斯算子類型的僅包含圖像加法、乘法計算的卷積處理,FPGA處理結果與MATLAB計算結果一致;對于涉及除法運算的卷積處理,例如均值濾波算子,FPGA計算結果與MATLAB處理結果相近但是存在差值。由于FPGA除法計算時進行了除數取倒數操作,其倒數小數位有效位選取影響圖像計算結果。下面對FPGA圖像計算結果誤差進行分析。

對于圖像數據位數和除法計算中倒數小數位數選取的不同,卷積計算結果存在差異。以均值濾波為例,卷積精確結果與FPGA除法運算后的計算誤差為2n/10x,其中n是圖像數據位寬,x是小數有效位寬。誤差結果隨圖像數據位數和除數小數位數變化情況如圖6所示。

圖6 FPGA卷積計算誤差

從圖中可以看出,為了滿足系統誤差精度,對于圖像處理過程中不同位長的數據,其除數小數位數選取也存在差異。對于文中相機輸出16位圖像數據,除數倒數選取5位小數,FPGA圖像處理卷積計算結果與計算真值誤差在一個灰度值內。

通過仿真軟件對基于FPGA的卷積計算輸入輸出信號進行分析,可以看出:整個系統實現了圖像卷積計算輸入輸出同步化的目的;同時對于包含除法類別的卷積計算,其誤差在一個灰度值之間。

3 FPGA卷積計算系統實驗驗證

3.1 卷積計算系統組成

圖像采集及卷積計算處理結構示意圖如圖7所示,主要包括相機數據采集、FPGA圖像處理以及結果輸出。系統的工作流程是:根據相機成像要求,FPGA生成控制指令,設置相機工作參數并發送攝像指令;經過相機曝光后采集到的數據通過Camera Link接口傳輸到FPGA;FPGA接收到數據信號后,同步相機數據并進行相應的卷積計算,結果通過Camera Link接口輸出。其中相機與FPGA之間、FPGA與PC之間均通過Camera Link接口連接。

圖7 FPGA卷積計算系統結構示意圖

FPGA內部圖像處理主要分為4個模塊:時鐘管理及復位模塊、相機通訊模塊、數據同步模塊以及卷積計算模塊。時鐘管理及復位模塊提供了全局時鐘以及復位信號;相機通訊模塊主要控制相機攝像參數;圖像數據同步模塊實現相機輸入新號的同步操作;卷積計算模塊實現圖像卷積計算并輸出處理結果。文中選用VHDL語言完成模塊設計,設計流程采用自上而下的設計方法。具體設計如下:

1)時鐘管理及復位模塊

時鐘管理及復位模塊主要產生整個系統所應用到的時鐘以及復位信號。時鐘主要包括FPGA內部工作時鐘、Camera Link接口通訊波特率時鐘,選用FPGA內部時鐘管理單元DCM生成相應頻率時鐘。復位操作在系統上電開始工作的同時,對內部信號及狀態賦上初始值,避免因初始值不確定導致后續程序出現錯誤,增加系統可靠性。

2)相機通訊模塊

文中應用EAGLE V 4240相機作為探測器,該型相機可以通過外部Camera Link接口實現對相機工作模式的控制,包括相機工作模式、工作溫度、快門延時時間、曝光時間、數據讀出速率、感興趣區域、binning模式設定等。相機與FPGA通訊波特率為115 200 bps,通過Camera Link接口中 SerTFG、SerTC兩路LVDS實現通訊,根據實際要求完成相機參數設定。

3)圖像數據同步模塊

相機輸出圖像通過Camera Link接口實時傳輸到FPGA。圖像有效數據位長為16 bit,相機輸出時鐘頻率為40 MHz,圖像大小為2 048×2 048,數據讀出速率為2 MHz。由于相機輸出時鐘、數據讀出速率均與FPGA工作時鐘異步,FPGA接收端口信號時需要對相機數據進行緩存及同步處理。針對這種數據讀寫有序、輸入輸出時鐘異步的數據,FPGA內部采用乒乓FIFO的結構接收圖像數據,實現數據的緩存及同步。

乒乓FIFO接收模塊工作示意圖如圖8所示。FPGA內部設定兩個FIFO,每個FIFO位長為16 bit,位深為w。輸入時鐘連接Camera Link接口提供的數據有效信號DVAL,輸出時鐘連接FPGA內部工作時鐘。WEA1、WEA2信號控制 FIFO1、FIFO2讀寫狀態。具體工作過程如下。

圖8 乒乓FIFO流程圖

對于輸入圖像行數據,一個FIFO寫入數據,另外一個FIFO讀出數據;在下行數據輸入時,兩個FIFO讀寫互換,交替進行,直至最后一行圖像數據同步結束。根據乒乓FIFO模塊設置,Camera Link接口輸入的相機數據逐行緩存同時輸出同步圖像數據。同步后的圖像數據輸入到卷積計算模塊,進行后續圖像操作。

4)卷積計算模塊

通過乒乓FIFO同步后的圖像數據輸入到卷積計算模塊,根據上節介紹的卷積計算方法,循環利用RAM存儲數據及計算,獲取卷積處理后的結果。對于多級聯卷積計算,并行處理圖像數據,實現實時圖像的處理及輸出。

3.2 系統實驗結果

對于FPGA多級聯卷積計算操作,以實現原始圖像濾波后對圖像邊緣進行提取為例,完成圖像兩層卷積計算。將編譯好的程序燒錄至xc4vsx55芯片中,實現圖像多級聯卷積計算功能。FPGA內部資源如表1所示。

表1 FPGA內部資源

通過相機拍攝圖像,對相機圖像依次進行均值濾波和邊緣檢測操作,FPGA輸出的結果如圖9所示,實驗證明基于FPGA實現了圖像多級聯卷積計算、輸入輸出同步化操作。

圖9 圖像多級聯卷積計算實驗結果

對于多級聯卷積計算,隨著卷積層數不同,FPGA內部資源利用率也存在差異。FPGA資源利用率與圖像卷積計算層數之間的關系如圖10所示。

圖10 卷積層數與FPGA資源利用率關系

從圖中可以看出,FIFO/RAM數量隨卷積層數增多均勻增加,每增加一層卷積計算,RMA數量增加4個;對于LUT以及FF利用率也隨著卷積層數增加而增加。由于每層卷積計算所需的資源僅僅與圖像列數相關,與圖像行數無關,即使大尺寸圖像卷積計算,其FPGA的資源利用率也不大。

通過FPGA內部FIFO以及RAM的復用,有效地實現了實時多級聯圖像卷積計算。在相機獲取圖像后的圖像預處理中,能夠同步獲取包括濾波、邊緣提取、特征提取等涉及卷積計算的圖像處理結果,為后續圖像處理做準備,同時節約了圖像處理時間以及硬件資源。在整個圖像處理過程中,不需要外部存儲器對圖像進行存儲,可復用性好,不存在資源浪費現象。同時接口靈活,可編程性強,通過改變卷積核內部權重值,能夠實現不同的卷積計算。對于多級聯卷積計算,卷積層間互不相關,可單獨使用,也可以疊加使用,系統設計操作簡單;同時實現了輸入輸出圖像同步化,滿足系統實時性要求。

4 結論

文中提出一種基于FPGA實時對圖像數據多級聯卷積計算的系統方案。在圖像數據采集階段實現數據采集和圖像預處理卷積計算一體化。整個系統不需要外部存儲器來存儲整幅圖像,存儲空間要求僅與卷積核的寬度相關,不需要考慮原始圖像的寬度,大大降低了圖像處理對FPGA存儲空間的要求。同時可編程性強,可以實現不同類型卷積計算。對于多級聯卷積計算,卷積計算結果實時輸出,實現系統輸入輸出圖像同步化。

主站蜘蛛池模板: 午夜限制老子影院888| 国产精品无码翘臀在线看纯欲| 都市激情亚洲综合久久| 久草国产在线观看| 亚洲成网777777国产精品| 熟女日韩精品2区| 熟女视频91| 啊嗯不日本网站| 九月婷婷亚洲综合在线| 久久综合亚洲鲁鲁九月天| 欧美区一区二区三| 国产经典三级在线| 免费高清a毛片| 久久精品人人做人人| 欧美日本激情| 国产中文在线亚洲精品官网| 国产成人综合日韩精品无码首页 | 毛片免费在线视频| 毛片在线看网站| 第一页亚洲| 老司机久久99久久精品播放| 91久久国产成人免费观看| 亚洲成A人V欧美综合天堂| 国产一区二区三区日韩精品| 在线观看亚洲天堂| 青青草原国产av福利网站| 亚洲国产成人精品无码区性色| 韩国v欧美v亚洲v日本v| a毛片在线播放| 丰满人妻久久中文字幕| 99热这里只有精品2| 国产极品嫩模在线观看91| 国产在线97| 久久毛片基地| 国产成人精品免费视频大全五级| 国产一国产一有一级毛片视频| 亚洲国产成人久久77| 丝袜亚洲综合| 国产精品夜夜嗨视频免费视频| 国产精品久久久久久久久kt| 国产精品自在在线午夜区app| 国内精品小视频福利网址| 欧美成人免费一区在线播放| 天天干天天色综合网| 精品无码视频在线观看| 黄色在线不卡| 五月天婷婷网亚洲综合在线| 九色91在线视频| 日韩精品久久无码中文字幕色欲| 国产欧美日韩在线在线不卡视频| 一级毛片高清| 九九热视频在线免费观看| 国产精品一区二区不卡的视频| 蜜臀AV在线播放| 92午夜福利影院一区二区三区| 99精品久久精品| 中文字幕无线码一区| 亚洲乱码在线视频| 五月天久久综合| 亚洲视频一区| 亚洲欧美日韩中文字幕在线| 亚洲国产91人成在线| 5555国产在线观看| 午夜激情福利视频| 91毛片网| 久久综合丝袜长腿丝袜| 国产精彩视频在线观看| 色天天综合| 欧美精品不卡| 又黄又湿又爽的视频| 亚洲人成高清| 青青草国产一区二区三区| 日本不卡视频在线| 福利国产在线| 国产亚洲精| 中文字幕在线不卡视频| 九九视频免费在线观看| 美女国产在线| 国产成人亚洲精品无码电影| 欧美精品在线看| 亚洲欧美自拍视频| 午夜国产理论|