• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于FPGA的嵌入式圖像邊緣檢測(cè)系統(tǒng)設(shè)計(jì)

      2010-04-17 03:34:18甘振華
      電視技術(shù) 2010年8期
      關(guān)鍵詞:加速器寄存器像素點(diǎn)

      甘振華,應(yīng) 駿

      (上海師范大學(xué) 信息與機(jī)電工程學(xué)院,上海 200234)

      1 引言

      Sobel邊緣檢測(cè)算法是分析視頻圖像場(chǎng)景的常用算法,應(yīng)用于諸多領(lǐng)域,如安全監(jiān)控、人工智能和計(jì)算機(jī)圖形學(xué)等。數(shù)字圖像處理常用的硬件平臺(tái)是嵌入式DSP系統(tǒng)和專用集成電路(ASIC)。隨著網(wǎng)絡(luò)多媒體和通信技術(shù)的發(fā)展,數(shù)字圖像攜帶的信息量也在不斷增加,傳統(tǒng)的DSP技術(shù)難以滿足圖像處理的實(shí)時(shí)性要求,而ASIC由于不夠靈活,在圖像處理領(lǐng)域的運(yùn)用也比較少。近年來(lái),F(xiàn)PGA技術(shù)快速發(fā)展,具有高效的并行處理能力,可采用流水線技術(shù)來(lái)設(shè)計(jì),處理速度與DSP系統(tǒng)相比可提高100倍以上,因此采用FPGA來(lái)搭建數(shù)字圖像處理平臺(tái)有其獨(dú)特的優(yōu)越性[1]。鑒于此,筆者提出用FPGA設(shè)計(jì)嵌入式圖像邊緣檢測(cè)系統(tǒng)。

      2 Sobel算子

      圖像 g(x,y)的梯度定義為

      梯度的模為

      Sobel算子對(duì)圖像的每個(gè)像素以檢測(cè)像素點(diǎn)為中心,使用如圖1所示的卷積模板來(lái)計(jì)算導(dǎo)數(shù)值Gx和Gy。當(dāng)ΔG≥T時(shí),在該位置的像素是一個(gè)邊緣像素,其中T是一個(gè)指定的閾值。Sobel算子的本質(zhì)是一種改進(jìn)的梯度算法,相當(dāng)于進(jìn)行一次平滑濾波處理,實(shí)現(xiàn)了除噪。

      圖1 x方向和y方向的卷積模板

      3 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

      系統(tǒng)基于Altera公司的Cyclone系列芯片中的EP1C12Q240C8型FPGA和TMS320C55x系列DSP處理器,設(shè)計(jì)采用OpenCores制定的Wishbone總線,其位寬為32 bit,時(shí)鐘頻率為100 MHz。加速器是嵌入式系統(tǒng)中為高速執(zhí)行某些操作而設(shè)計(jì)的專用定制硬件,它可以進(jìn)行直接內(nèi)存訪問(wèn)(Direct Memory Access,DMA),也就是在內(nèi)存中自主存取數(shù)據(jù),不需要處理器來(lái)發(fā)起內(nèi)存訪問(wèn),從而大大提高了傳輸速度。加速器既可以作為主模塊向CPU發(fā)起訪問(wèn)總線的請(qǐng)求信號(hào),也可以作為從模塊來(lái)響應(yīng)處理器對(duì)其進(jìn)行的操作。為了能與嵌入式軟件互動(dòng),加速器應(yīng)自帶控制寄存器,處理器只需給控制寄存器提供起始內(nèi)存地址,加速器便能自動(dòng)執(zhí)行任務(wù)。由于加速器和處理器共享對(duì)內(nèi)存的訪問(wèn)通路,而內(nèi)存同一時(shí)刻只能執(zhí)行一次訪問(wèn),因此需在系統(tǒng)中設(shè)置一個(gè)仲裁器(arbiter)來(lái)確保子系統(tǒng)能夠輪流訪問(wèn)內(nèi)存[2]。嵌入式Sobel邊緣檢測(cè)系統(tǒng)的總體框圖如圖2所示[3-4]。

      圖2 系統(tǒng)總體框圖

      其工作過(guò)程如下:存儲(chǔ)在主機(jī)中的原始圖像信號(hào)通過(guò)總線傳輸?shù)教幚砥?,處理器在接收到?lái)的圖像信號(hào)時(shí),并不對(duì)圖像進(jìn)行處理,而是給Sobel加速器的控制寄存器提供起始內(nèi)存地址。與此同時(shí),加速器向仲裁器發(fā)起訪問(wèn)總線的請(qǐng)求信號(hào)(request),當(dāng)處理器向加速器寫(xiě)完基地址后,仲裁器便給加速器發(fā)出準(zhǔn)許信號(hào)(grant),此時(shí)加速器則占有總線使用權(quán),便可以按照DMA的方式在內(nèi)存中讀寫(xiě)數(shù)據(jù)。根據(jù)處理器放入加速器控制寄存器的地址,用加速器本身攜帶的計(jì)數(shù)器可以產(chǎn)生DMA所需的后續(xù)地址電路。圖像數(shù)據(jù)經(jīng)過(guò)輸入FIFO緩存,然后經(jīng)過(guò)Sobel加速器處理,產(chǎn)生的導(dǎo)數(shù)數(shù)據(jù),經(jīng)過(guò)輸出FIFO緩存,以DMA的方式把導(dǎo)數(shù)數(shù)據(jù)寫(xiě)入內(nèi)存。與此同時(shí),處理器向仲裁器發(fā)起訪問(wèn)總線的請(qǐng)求信號(hào),當(dāng)加速器處理完一幅圖像數(shù)據(jù)后,仲裁器便給處理器發(fā)出準(zhǔn)許信號(hào),此時(shí)處理器則占有總線使用權(quán),等待下一次處理。

      4 Sobel邊緣檢測(cè)的硬件設(shè)計(jì)

      4.1 Sobel算子的并行處理設(shè)計(jì)

      加速器是嵌入式系統(tǒng)中的一部分,如何最大限度地減少其占用的內(nèi)存帶寬,提高與系統(tǒng)的互動(dòng)性,是需要考慮的問(wèn)題。本設(shè)計(jì)處理的圖像的分辨力為640×480,圖像每像素到達(dá)需要100 ns,存儲(chǔ)原始圖像和導(dǎo)數(shù)圖像的內(nèi)存位寬為32 bit,內(nèi)存每次讀寫(xiě)需花費(fèi)20 ns,則讀寫(xiě)每個(gè)像素并存儲(chǔ)到內(nèi)存中,會(huì)消耗可用內(nèi)存帶寬的20%。若把4個(gè)像素值合起來(lái),用一次讀寫(xiě)操作來(lái)存儲(chǔ)這些像素,消耗的可用內(nèi)存帶寬減少到5%[2]。由Sobel邊緣檢測(cè)算法可知,原始圖像的像素一旦被讀取,就可以用來(lái)計(jì)算像素相鄰域的導(dǎo)數(shù)值,為使每計(jì)算4個(gè)像素只讀取1次,可在數(shù)據(jù)輸入端設(shè)置1個(gè)4×8寄存器組和2個(gè)FIFO來(lái)存儲(chǔ)從主存中讀取的前2行像素,并設(shè)計(jì)一個(gè)地址產(chǎn)生電路來(lái)更新圖像數(shù)據(jù)。Sobel算子并行處理框圖如圖3所示。其中乘法器用加法、減法和移位代替,Ai,j為要計(jì)算的像素點(diǎn)[5]。

      圖3 Sobel算子并行處理框圖

      Sobel算子流水線過(guò)程如下:首先將圖像數(shù)據(jù)的第1行,第2行分別讀入2個(gè)FIFO中,然后從內(nèi)存中逐次讀取圖像第3行的4個(gè)像素點(diǎn)到起始寄存器組中,并行輸出3行圖像數(shù)據(jù),由9個(gè)D觸發(fā)器進(jìn)行時(shí)延,形成3×3像素窗口數(shù)據(jù)。由于FIFO可同時(shí)進(jìn)行讀寫(xiě),F(xiàn)IFO1和FIFO2在讀出數(shù)據(jù)時(shí),將分別寫(xiě)入起始寄存器組讀進(jìn)的數(shù)據(jù)和FIFO1讀進(jìn)的數(shù)據(jù),以便重復(fù)利用內(nèi)存讀入的數(shù)據(jù)。根據(jù)并行處理的特點(diǎn),起始寄存器讀取數(shù)據(jù)的同時(shí),邊緣值計(jì)算模塊也開(kāi)始工作,計(jì)算輸入的窗口數(shù)據(jù),產(chǎn)生結(jié)果像素值,送入4×8結(jié)果寄存器組,經(jīng)4個(gè)計(jì)算周期,結(jié)果寄存器組中4個(gè)像素值都準(zhǔn)備好后,隨即被寫(xiě)到內(nèi)存中。當(dāng)計(jì)算到一行的結(jié)尾時(shí),流水線中有3個(gè)像素值,結(jié)果寄存器組中有4個(gè)像素值,此時(shí)應(yīng)把4個(gè)結(jié)果像素值寫(xiě)入內(nèi)存,忽略起始寄存器組讀操作,執(zhí)行4個(gè)計(jì)算周期排出流水線中的3個(gè)像素值,并利用嵌入式軟件將最后排出流水線的結(jié)果像素值清0。同理,由于一行最左邊位置的像素也沒(méi)有一組完整的相鄰像素點(diǎn),所以也用嵌入式軟件對(duì)其清0。

      在電路設(shè)計(jì)中,為使嵌入式軟件控制加速器提供同步,需在加速器的設(shè)計(jì)中添加控制寄存器和狀態(tài)寄存器,為簡(jiǎn)化總線接口,把這些寄存器映射到32位地址總線的相鄰地址,其寄存器地址映射如表1所示。當(dāng)處理器把啟動(dòng)偏移地址寫(xiě)入啟動(dòng)寄存器時(shí),加速器便開(kāi)始工作,狀態(tài)寄存器的第0位是完成標(biāo)志位,當(dāng)處理器處理完一幅圖像時(shí),將該位設(shè)置為1,其他位讀為0。如果此時(shí)中斷使能位也為1,加速器便發(fā)出中斷請(qǐng)求。

      表1 Sobel加速器的寄存器地址映射表

      4.2 仿真結(jié)果與分析

      本文用Verilog HDL語(yǔ)言編寫(xiě)程序,在Quartus II 9.0中進(jìn)行編譯,在ModelSim SE 6.1f平臺(tái)下進(jìn)行仿真,結(jié)果如圖4所示。原始圖像和導(dǎo)數(shù)圖像存儲(chǔ)地址分別為0000600016和0005000016,Sobel加速器寄存器基地址為20000016。系統(tǒng)復(fù)位后,處理器執(zhí)行總線寫(xiě)操作,對(duì)加速器進(jìn)行初始化,將地址、數(shù)據(jù)和控制信號(hào)分別從cpu_adr_o和cpu_dat_o寫(xiě)到sob_adr_i和 sob_dat_i。完成初始化后,處理器讓出總線使用權(quán)給加速器,啟動(dòng)加速器,其對(duì)應(yīng)地址為20000416。在光標(biāo)處,開(kāi)始讀取原始圖像數(shù)據(jù),每次讀取4個(gè)像素點(diǎn)值,每隔32 bit讀取1次,由總線bus_dat_o寫(xiě)到sobel_dat_i,再由sobel_dat_i傳輸給寄存器組curr_dat_o,計(jì)算當(dāng)前讀出的數(shù)據(jù)與FIFO1和FIFO2中開(kāi)始存儲(chǔ)的數(shù)據(jù),計(jì)算結(jié)果寫(xiě)到result_dat_i,閾值門(mén)限為110。從仿真結(jié)果中可以看出,設(shè)計(jì)達(dá)到了所需的要求。

      5 小結(jié)

      FPGA與嵌入式技術(shù)相結(jié)合,已經(jīng)在很多工程領(lǐng)域得到了廣泛應(yīng)用,目前嵌入式圖像處理正向著高速、微型化方向發(fā)展[6]。鑒于此,筆者設(shè)計(jì)了基于FPGA的嵌入式邊緣檢測(cè)系統(tǒng),并成功地進(jìn)行了仿真。結(jié)果表明,該嵌入式Sobel邊緣檢測(cè)系統(tǒng)對(duì)圖像進(jìn)行邊緣檢測(cè)速度非常快,在100MHz的時(shí)鐘頻率下,計(jì)算1個(gè)像素點(diǎn)只需40ns,計(jì)算1幅640×480×8 bit的圖像只需12.8 ms,其處理速度比DSP提高了2個(gè)數(shù)量級(jí)以上,完全可以滿足圖像實(shí)時(shí)性的要求,具有一定的實(shí)用價(jià)值。

      [1] HUSSMANN S,THIAN H H.A high-speed subpixel edge detector implementation inside a FPGA[J].Real-Time Imaging,2003(5):361-368.

      [2] ASHENDEN P J.Digital design:an embedded systems approach using verilog[M].[S.l.]:Morgan Kaufmann,2007.

      [3] KALOMIROS J A,LYGOURAS J.Design and evaluation of a hardware/software FPGA-based system for fast image processing[J].Microprocessors and Microsystems,2008,32(2):95-106.

      [4] 初秀琴,曾祥永.一種新型的實(shí)時(shí)圖像處理機(jī)結(jié)構(gòu)及Sobel電路設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2003,24(5):508-511.

      [5] KORNAROS G.A softmulti-corearchitecture for edge detection and data analysis of microarray images[J].Journal of Systems Architecture:the EUROMICRO Journal,2010,56(1):48-62.

      [6]BOURIDANE A,CROOKES D,DONACHY P,et al.A high level FPGA-based abstract machine for image processing[J].Journal of Systems Architecture,2007,31(8):809-824.

      甘振華(1987-),碩士生,主研嵌入式系統(tǒng),視頻處理;

      應(yīng) 駿(1973-),博士,碩士生導(dǎo)師,主要研究方向?yàn)榍度胧较到y(tǒng)、視頻處理。

      猜你喜歡
      加速器寄存器像素點(diǎn)
      輪滑加速器
      化學(xué)工業(yè)的“加速器”
      全民小康路上的“加速器”
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      基于canvas的前端數(shù)據(jù)加密
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      基于逐像素點(diǎn)深度卷積網(wǎng)絡(luò)分割模型的上皮和間質(zhì)組織分割
      等待“加速器”
      基于Node-Cell結(jié)構(gòu)的HEVC幀內(nèi)編碼
      高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
      鸡东县| 永丰县| 都安| 莲花县| 巫溪县| 安阳市| 阿鲁科尔沁旗| 石狮市| 惠来县| 三江| 慈溪市| 宁波市| 龙江县| 民县| 吉林省| 康保县| 保亭| 肇源县| 云霄县| 儋州市| 枣庄市| 玉树县| 武功县| 册亨县| 翁源县| 阳城县| 库伦旗| 梨树县| 莱芜市| 崇礼县| 云和县| 祁门县| 周宁县| 桂林市| 三门县| 新沂市| 寿宁县| 澄迈县| 巫山县| 泸定县| 九江市|