<rp id="zwwpg"></rp>

      <th id="zwwpg"></th>
          1. fpga論壇|fpga設計論壇

             找回密碼
             我要注冊

            QQ登錄

            只需一步,快速開始

            搜索
            查看: 1161|回復: 7
            打印 上一主題 下一主題

            自適應實時邊緣檢測系統設計

            [復制鏈接]
            跳轉到指定樓層
            1#
            fpga_wuhan 發表于 2017-3-23 09:11:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
            摘  要: 針對傳統邊緣檢測系統缺乏自適應及實時性差的問題,利用FPGA的高速并行處理能力和改進的Canny算子設計了一種自適應實時邊緣檢測系統。系統根據采集圖像的幅值梯度直方圖特征,自主提取Canny算子所需的高低閾值,并輔以雙閾值化處理來提取圖像邊緣信息;同時采用多級流水和并行處理的方式,將浮點數轉化為整數計算,加快處理速度。實驗結果表明,該系統提取邊緣完整,實時性好,自適應能力強。

                關鍵詞: 邊緣檢測;自適應;Canny算子;梯度直方圖;并行處理

            0 引言

                圖像邊緣是圖像像素灰度值有階躍變化的像素集合,反映了圖像灰度的不連續性,包含了豐富的圖像信息,被廣泛應用于圖像識別領域[1]。常用邊緣檢測算子有Roberts、Prewitt、Sobel、Canny等[2],其中Canny算子是基于最優化邊緣的檢測方法,具有很高的檢測精度和信噪比。但計算量大、實時性差、需要預先設置閾值等弊端制約了其在系統中的應用。

                為此,利用FPGA的高速并行處理能力和豐富的邏輯資源[3],設計了一種適應性較強的實時邊緣檢測系統。該系統無需預先設定閾值,可根據圖像的幅值梯度直方圖特性[4],自動計算Canny邊緣檢測算法所需的高低閾值,能在不同環境下完成對圖像的邊緣檢測,具有較強的適應能力。

            1 邊緣檢測系統結構設計

                自適應實時邊緣檢測系統由圖像采集、灰度轉換、數據緩存、Canny算子邊緣檢測以及VGA顯示控制等模塊組成。系統硬件結構如圖1所示。



                系統選用Cyclone III系列的EP3C40F484為核心處理器。上電后,圖像采集模塊通過SCCB總線初始化CMOS相機并采集圖像數據,然后將圖像數據轉換成灰度圖像以便Canny算子邊緣檢測模塊提取圖像的邊緣信息,而VGA顯示模塊是為了邊緣圖像的實時顯示。同時采用外擴SDRAM的方式來實現對圖像數據的跨時域操作。

            2 Canny算子自適應雙閾值選擇

                傳統Canny算子的檢測結果極易受到外部環境影響,本文采用一種自適應雙閾值選取算法來增強系統的抗干擾能力。

                統計非極大值抑制后圖像的梯度直方圖,由梯度直方圖的性質可得低閾值位于第一個大波峰和第一個小波峰之間。為了便于閾值選取和硬件實現,將梯度直方圖轉化為差分直方圖,如式(1)所示:

                 ck7-gs1.gif
            其中,diff(i)=|NMS(i+1)-NMS(i)|,i=1,2,3,…,NMS(i)是非極大值抑制后的梯度直方圖。然后選擇第一個零點的梯度值作為高閾值,如式(2)所示,低閾值可通過式(3)得到:



            其中,Arg表示第一次滿足Diff(i)=0的像素點i的梯度值。

            3 自適應實時邊緣檢測系統的實現

                系統前端搭載CMOS相機OV5620采集圖像。上電后,圖像采集模塊通過SCCB總線對相機進行初始化,然后相機輸出640×480像素大小的圖像數據。圖像采集模塊在接收圖像數據的同時會根據像素時鐘、同步信號來確定數據的有效位,并將數據傳遞到下一模塊進行灰度化處理。系統中采用4.7 kΩ的上拉電阻來解決SCCB接口只能輸出低電平的問題。

                灰度轉換模塊采用一個乘加器來實現。由于FPGA不擅長浮點數處理,可先將浮點參數左移10 bit變為整數參與計算,接著例化一個乘加器,然后再把輸出結果右移10 bit得到圖像灰度值,如式(4)所示:



            3.1 圖像緩存模塊的實現

                系統中采用外擴SDRAM芯片MT48LC8M32(2 M×32 bit×4 bank)作為數據緩存器來解決數據的跨時域問題[5]。為了充分利用FPGA的并行處理能力和SDRAM的高速讀寫能力,設計了雙端口(Wr_FIFO和Rd_FIFO)的SDRAM控制器。在SignalTap II中對SDRAM控制器進行功能驗證,仿真結果表明,所設計的SDRAM控制器滿足要求。SDRAM控制器仿真波形如圖2所示。



            3.2 Canny邊緣檢測模塊的實現

                Canny算子是一種面向圖像幅值梯度的邊緣檢測方法。在計算幅值梯度前利用中值濾波代替高斯濾波進行圖像預處理,不僅能平滑圖像噪聲,而且能更好地保留圖像的細小邊緣。

            3.2.1 幅值梯度計算



                中心像素點a4的梯度幅值和梯度方向如式(5)所示:


                根據分析,梯度計算模塊可由6個乘加器、2個加法器和1個開方器組成,實現過程如圖4所示。其中一個乘加器包含3個乘法運算和1個加法運算,可直接完成一行像素與對應模板的卷積,再調用一個加法器就可得到某一方向的梯度值,然后結合兩個方向梯度值和一個開方運算來確定該像素點的幅值梯度值。

            3.2.2 非極大值抑制

                非極大值抑制就是比較中心像素梯度值與其梯度方向上相鄰像素梯度值的大小。實現時可將梯度方向分為0°、45°、90°和135°四個方向[6],每個方向包含左右各22.5°范圍,梯度方向根據μ=|Py/Px|的值和tan22.5°≈13/32、tan67.5°≈77/32來確定。梯度方向定義如式(6)所示:



                在確定梯度方向之后,判斷中心像素點是否為該梯度方向上的極大值。先利用移位寄存器和鎖存器來獲得3×3鄰域內的9個像素梯度值,然后通過選擇器找出與中心像素點在同一梯度方向上的兩個梯度值,最后利用比較器進行大小判斷。如果當前像素點的梯度值大于其他兩個梯度值,則該像素點梯度值為極大值,需要參與后續的雙閾值化處理,否則直接輸出該像素點的梯度值為0。

            3.2.3 自適應雙閾值處理

                根據所述算法,系統利用梯度直方圖的差分直方圖來自適應選擇雙閾值。由于處理的是256灰度級的圖像,需要在FPGA內部開辟一個256×16的RAM塊來存儲不同梯度值像素點的個數,并把對應的梯度值作為寄存器組RAM的地址。自適應雙閾值選擇電路如圖5所示。

            ck7-t5.gif

                當接收到開始信號時,寄存器組自動清零,把圖像梯度值Grad送入地址選擇器來選擇相應的RAM塊,經累加器b對圖像梯度的各個值進行個數統計后,將結果寫入原來的RAM塊中,直到一幀圖像統計完成;當圖像結束信號到來時,時鐘保持電路會自動保持256個系統時鐘,累加器a在時鐘驅動下順序產生寄存器組的地址,并把該地址和下一地址的數據分別送入寄存器a和 b中,由差分電路處理后,使用比較器將差分結果與0進行比較;若結果為 0 則發出停止累加信號,此時累加器a的值就是高閾值ThH,同時把ThH右移1位得到低閾值ThL。

                自動計算雙閾值后,直接對非極大值抑制后的圖像進行雙閾值分割。首先采用兩個比較器將中心像素點的梯度值Grad(i,j)分別與高低閾值ThH、ThL作比較來確定強弱邊緣。若Grad(i,j)>ThH,則為強邊緣,輸出0xFF;若Grad(i,j)<ThL,不是邊緣點,輸出0;若ThL<Grad(i,j)<ThH,則為弱邊緣,需要結合強邊緣進行連通域處理。連通域處理是在中心像素點的8連通區域內,若有強邊緣像素點的存在,則該像素點將被判定為強邊緣,輸出0xFF,否則輸出為0。雙閾值分割電路如圖6所示。



                利用SignalTap II驗證Canny邊緣檢測模塊,仿真結果如圖7所示。



            4 實驗結果及分析

                根據系統設計方案,在FPGA上實現了基于自適應雙閾值Canny算法的邊緣檢測系統。系統可自適應選擇合適閾值,集圖像采集、邊緣提取和實時顯示功能于一體,同時實現了基于傳統Canny算子的邊緣測系統。為了增加實驗的對比性,在實驗室環境下,固定CMOS相機,分別采用高低閾值與自適應閾值進行對比測試,測試結果如圖8所示。



                從圖8中可以看出,在圖像紋理較為復雜的情況下,對于傳統的Canny邊緣檢測系統,當閾值設置過低時,盡管能得到更多的邊緣信息,但虛假邊緣會增加,受噪聲的干擾明顯,檢測結果偏差較大,如圖8(c)所示;隨著閾值的增高,邊緣檢測能力減弱,將逐漸丟失部分緩變邊緣,降低圖像的信息量,直接表現為植物上很多細小的斑點沒有被檢測出來,如圖8(d)所示;而所設計的自適應邊緣系統無需手動設置閾值就能提取較為完整的圖像邊緣,對圖像細節和整體輪廓表現較好,如圖8(b)所示,這避免了人為因素對檢測結果的影響,提高了系統的自適應性。

                系統最差路徑的最大頻率為113.51 MHz,系統在留有20%余量情況下處理一幀圖像的時間約為3.4 ms,實時性較好。

            5 結論

                本文以FPGA為核心設計并實現了一種實時邊緣檢測系統。系統利用圖像的幅值梯度直方圖信息,可在不同場景下自適應選取Canny算子所需的高低閾值,有效解決了Canny算子邊緣檢測中需要手動設置閾值的弊端。實驗測試結果表明,自適應實時邊緣檢測系統具有精度高、實時性好、抗干擾能力強的優點,可廣泛應用于視頻監控、目標跟蹤、醫療設備等領域。
            2#
            雷磊 發表于 2022-8-26 15:00:19 | 只看該作者
            如何降晶振周圍電路設計中的噪聲
            http://www.bodiagame.com/forum.php?m ... 2&fromuid=54563
            (出處: fpga論壇|fpga設計論壇)
            3#
            dameihuaxia 發表于 2022-8-27 10:24:52 | 只看該作者
            FPGA-CRC校驗
            http://www.bodiagame.com/forum.php?m ... 4&fromuid=58166
            (出處: fpga論壇|fpga設計論壇)
            4#
            dameihuaxia 發表于 2022-8-28 09:35:55 | 只看該作者
            LVDS技術原理和設計簡介
            http://www.bodiagame.com/forum.php?m ... 8&fromuid=58166
            (出處: fpga論壇|fpga設計論壇)
            5#
            嘿哈嘿哈哈 發表于 2022-9-29 09:23:29 | 只看該作者
            自適應實時邊緣檢測系統設計
            6#
            dameihuaxia 發表于 2022-9-29 14:18:59 | 只看該作者
            VHDL 算術邏輯器件設計
            http://www.bodiagame.com/forum.php?m ... 4&fromuid=58166
            (出處: fpga論壇|fpga設計論壇)
            7#
            宇xx 發表于 2022-10-3 17:53:14 | 只看該作者
            自適應實時邊緣檢測系統設計
            8#
            大鵬 發表于 2022-10-7 15:14:26 | 只看該作者
            自適應實時邊緣檢測系統設計
            您需要登錄后才可以回帖 登錄 | 我要注冊

            本版積分規則

            關閉

            站長推薦上一條 /1 下一條

            QQ|小黑屋|手機版|Archiver|FPGA論壇 ( 京ICP備20003123號-1 )

            GMT+8, 2022-10-17 13:37 , Processed in 0.063456 second(s), 19 queries .

            Powered by Discuz! X3.4

            Copyright © 2001-2021, Tencent Cloud.

            快速回復 返回頂部 返回列表
            殴美女牲大片

                <rp id="zwwpg"></rp>

                <th id="zwwpg"></th>