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

基于FPGA的一種改進Sobel邊緣檢測算法設計與實現

2024-12-31 00:00:00孟祥意劉德全管浩洋
電腦知識與技術 2024年33期

關鍵詞:Sobel邊緣檢測;FPGA;自適應閾值

0 引言

邊緣檢測被廣泛運用于車牌識別、人臉檢測、藥用植物形態研究、醫學影像等領域[1]。圖像邊緣是圖像最重要的特征之一,是圖像處理的基礎,圖像的大多數信息都儲存在圖像邊緣中。邊緣檢測的目的是標識數字圖像中灰度變化明顯的點,在計算機視覺和圖形分析等應用中起著重要作用[2]。常見的邊緣檢測算法可以分為一階和二階邊緣檢測算法,一階算法有Roberts 算法、Sobel 算法和Prewitt 算法;二階算法有Laplacian算法、Canny算法和LOG算法[3]等。

隨著現場可編程門陣列(Field Programmable GateArray,FPGA) 技術的快速發展,利用FPGA平臺設計的邊緣檢測系統由于其并行流水線、高速數據處理的特點而被廣泛采用[4]。傳統的Soble邊沿檢測算法只進行水平(0°) 和垂直(90°) 兩個方向進行檢測,因此,定位精度不夠高;并且特征點檢測閾值人為設定后再不能變,算法自適應差。為解決上述兩個問題,本文對傳統算法進行改進,主要表現在以下3個方面。第一,采用FPGA平臺并行執行Sobel算子;第二,采用0°、45°、90°和135° 4個方向進行梯度檢測,提高邊緣檢測定位精度。第三,采用3×3中值濾波滑動窗口的中間值為閾值,使得Sobel算子具有自適應。

最后在FPGA 平臺上,通過使用Verilog 編程語言,進行系統的設計和驗證。實驗表明,與傳統的Soble算子相比,本文提出的算法更具有邊沿檢測精度更高,魯棒性更高,能更好地捕捉圖像的邊緣信息。

1 Sobel 算法

1.1 傳統的Sobel 算法

Sobel算法是一階邊緣檢測算法,優點是算法簡單、計算量小,但是對圖像的處理容易出現邊緣過于粗糙,產生偽邊緣從而導致定位不準確等問題。傳統的Sobel算子僅有水平和垂直兩個方向算子,水平算子和垂直算子的梯度計算公式如公式(1)、(2)所示,梯度幅值G 計算公式,如公式(3)所示,圖1(a)和(b)分別為水平方向和垂直方向的梯度算子,(c)為3×3像素窗口矩陣。

公式(3)和(4)中:G 為局部邊緣強度即梯度幅值,θ為梯度方向角[5]。通過將梯度幅值G 與人為設定的閾值進行比較,進行圖像的二值化處理,如果梯度幅值G大于設定的閾值,該像素點被處理為邊緣點,并賦予其最大灰度值255;如果梯度幅值G小于等于閾值,則將該像素點的灰度值設為0。

傳統的Sobel邊緣檢測算法梯度計算模板有限,存在著以下的缺點:

(1) 計算方向比較單一,只檢測水平和垂直兩個方向,對其他方向的邊緣信息沒有考慮,如果其他方向上的幅值較高,但是水平方向和垂直方向合成的梯度幅值較低,導致圖像部分邊緣細節的丟失。

(2) 閾值需要人為設定,不具備自適應性。如果閾值設置不當,可能會導致邊緣信息的缺失或者增加虛假的邊緣信息。

1.2 改進的Sobel 算法

對于傳統Sobel算法存在的缺點,本文從3個方面來改進:

(1) 采用FPGA 平臺并行執行Sobel算子,以提高處理速度。

(2) 增加梯度計算模板,增加了45°和135°方向算子,將3×3 像素窗口矩陣分別與四方向進行卷積計算,得到對應方向的梯度幅值。

(3) 采用基于中值濾波思想的自適應閾值選取策略,采用3×3中值濾波滑動窗口的中間值作為閾值,提高計算效率的同時使得Sobel算子具有自適應。

2 硬件設計及實現

圖2為該系統的整體架構,首先通過Matlab工具進行圖像預處理先將圖片進行雙邊濾波去噪,然后再進行灰度轉換,將灰度轉換后的圖片數據通過串口發送給FPGA,FPGA進行Sobel邊緣處理和自適應閾值處理,最后將邊緣檢測的結果輸出到VGA顯示器上。

2.1 圖像預處理

在圖像傳輸或者采集的過程中,不可避免地會因為傳輸環境等因素對圖像數據造成影響,產生噪聲[6]。噪聲的存在可能導致在邊緣檢測的過程中,產生錯誤的邊緣信息,將噪聲誤認為是邊緣,或者將真實的邊緣與噪聲混淆。所以,在進行邊緣檢測前,首先要對圖像數據進行降噪處理。

雙邊濾波算法可以有效去除圖像的各種噪聲,包括高斯噪聲和均勻噪聲,既可以達到降噪平滑的作用,同時還能很好地保持邊緣[7],因此本文通過雙邊濾波算法對圖像進行降噪的預處理。

由于邊緣檢測算法是在灰度域進行處理[8],所以在進行邊緣檢測前需要將圖像轉換為灰度圖,由RGB 圖像轉換成YCbCr圖像的公式如公式(5)所示:

由于本文設計沒有采用攝像頭模塊,而是選擇收集現場圖像作為圖像數據來進行邊緣檢測,因此采用Matlab工具進行圖像預處理。Matlab讀取圖片后先對圖像進行雙邊濾波,然后再將圖像進行灰度圖像處理,最后將圖像數據輸出,之后將圖像數據通過串口發送給FPGA進行邊緣處理。

2.2 邊緣處理模塊

Sobel邊緣處理模塊采用的FIFO求和的思想。本文選取一個3×3的窗口數據,因此采用FIFO來處理數據[9]。兩個FIFO的作用是緩存兩行,可以得到三行數據。這里用到了FPGA的流水線特性,其優勢在于能夠實現數據的連續緩存與處理,這不僅有效減少了緩存空間的占用,而且提高了數據流的處理速度[10]。

將數據寫入寄存器之后,需要將寄存器里的數據進行Sobel處理,因此,再次定義一個讀出標志信號,當行計數器計數到第三行的時候,將緩存的數據往外讀出,對數據進行Sobel運算和閾值計算[11]。

為了獲得更多的邊緣信息,將增加的45°和135° 方向的Sobel算子參與計算,計算模板如圖3所示,其中圖3(a)為45°方向算子、圖3(b)為135°方向算子。

將水平方向和垂直方向算子以及45°和135°算子分別與像素窗口進行卷積計算,改進的梯度計算公式如公式(6)所示:

使用ModelSim SE-64 10.5對邊緣處理模塊進行仿真驗證,其結果如圖4所示。a1-c3是要進行Sobel 運算的像素點,初值為0,當使能信號rd_en_reg有效時,將dout_1_reg、dout_2_reg、pi_data_reg分別賦值給a3、b3、c3,a3、b3、c3賦值給a2、b2、c2,a2、b2、c2賦值給a1、b1、c1。

2.3 自適應閾值分割模塊

在自適應閾值模塊中,采用快速中值濾波的思想,利用FPGA并行計算的特點,對3×3像素窗口的9 個像素并行計算,計算流程如圖5所示,其具體操作如下:

1) 分別對每行3個像素進行兩兩比較,得到最大值Max、中間值Mid、最小值Min;

2) 求3個最大值的最小值Max_Min、求3個中間值的中間值Mid_Mid 以及求3 個最小值的最大值Min_Max;

3) 求Max_Min、Mid_Mid、Min_Max 的中間值,即為我們所需要的中間值。

圖像分割可以根據公式(8),通過比較梯度幅值G與最后得到的中值Mid_Z來區分是否是邊緣點。

使用ModelSim SE-64 10.5對自適應閾值模塊進行仿真驗證,其結果如圖6所示。當19出現2個時鐘周期后,窗口更新為36,129,9,136,174,155,74,185,19,再經過3個時鐘周期的中值濾波流水線操作,輸出為129,手算結果也為129,驗證正確,算法在FPGA上的正確性得以驗證。

2.4 圖像顯示模塊

視頻圖形陣列(Video Graphics Array,VGA) 使用模擬信號的電腦顯示標準,支持640×480,1024×768等多種分辨率,是目前常用的圖像標準之一[12]。

VGA顯示器顯示圖像,是采用掃描的方式,將構成圖像的像素點,在行同步信號和場同步信號的同步下,按照從上到下、由左到右的順序掃描到顯示屏上。VGA顯示器掃描方式,如圖7所示。

hsync表示行同步信號,hsync自上升沿起到下一個上升沿止為一個完整周期,這段時間被稱為行掃描周期,同理,vsync場同步信號一個完整周期被稱為場掃描周期,VGA 掃描時序圖如圖8 所示。其中,以VGA分辨率640×480為例,640是指有效示顯數據每一行有640個像素點,480是指每一幀圖像有480行。一個行掃描周期為(圖8(a)行掃描時序中的行掃描周期)為800個像素時間,一個場掃描周期(圖8(b))場掃描時序中的場掃描周期)為525行時間[13]。

使用ModelSim SE-64 10.5對圖像模塊進行仿真驗證,其結果如圖9所示。pix_x信號在圖像顯示有效區域循環計數,計數周期為像素時鐘周期,計數范圍0~639,計數640 次,與圖像行顯示有效區域參數一致;pix_y信號在圖像顯示有效區b53c1c6b3080124afe0ed8bec4c22c17域循環計數,計數周期為完整的pix_x計數周期,計數范圍0~479,計數480 次。rgb 信號在rgb_valid 信號有效時,被賦值為pix_data,rgb_valid信號無效時,賦值為0。

3 結果與分析

本文通過FPGA對圖像進行邊緣檢測。所處操作環境是Windows11系統,CPU為i7-13650HX,GPU為4060Ti。首先使用MatlabR2022b版本對圖像進行預處理,經過QuartusⅡ 18.ef4490ecfb840082006d2e5fa019d5cf 0軟件編寫Verilog HDL語言來實現數據的傳遞、處理,通過ModelSim SE-64 10.5 驗證算法的可行性。最后采用Alter 公司的EP4CE10F17C8型號的FPGA開發板進行上板驗證。

對圖片大小為160×160尺寸的圖片進行測試,傳統Sobel邊緣檢測算法使用人工設定的閾值60。

圖10(a)為實驗lena帽檐原圖;圖10(b)為經過雙邊濾波和灰度化原圖;圖10(c)為經過傳統Sobel邊緣檢測的效果圖;圖10(d)為經過四方向的Sobel邊緣檢測效果圖;圖10(e)為本文經過四方向和自適應閾值So?bel邊緣檢測效果圖。本文算法提取了更多的邊緣信息,較四方向Sobel的邊緣連續性更加完整,提高了邊緣檢測的準確性。

表1給出了本文算法和傳統Sobel算法在FPGA 上的資源占用情況。

通過表1可以看出,本文算法與傳統Sobel邊緣檢測算法比較,可以看出本文算法在硬件消耗的邏輯資源上有所增加,主要用于實現四方向梯度計算和自適應閾值的功能。

同時根據QuartusⅡ提供的功耗報告可知,本文算法系統的總功耗為69.58 mW,其中靜態功耗為48.30mW,I/O口功耗為21.28 mW,系統滿足低功耗的要求。

4 總結

本文分析了傳統Sobel邊緣檢測算法的優缺點,并針對傳統Sobel算法存在的缺點做了改進。一是增加的梯度計算模板,由水平和垂直2個方向增加45° 和90°到4個方向。二是對閾值的獲取做出改進,將原來需要人為設定閾值改為自適應閾值。通過Mat?lab對圖像預處理后,板級驗證結果表明,本文算法在提高邊緣檢測精度的同時,也滿足了實時性和低功耗的要求,具有一定的應用價值。

主站蜘蛛池模板: 国产91小视频在线观看| 亚洲无码A视频在线| a级高清毛片| 亚洲欧美在线精品一区二区| 日本精品视频| 日韩欧美国产另类| 久久亚洲中文字幕精品一区| 久久亚洲综合伊人| 伊人久久大香线蕉影院| 国产不卡网| Aⅴ无码专区在线观看| 午夜视频日本| 久久99久久无码毛片一区二区| 亚洲丝袜中文字幕| 亚洲欧州色色免费AV| 老司国产精品视频91| 国精品91人妻无码一区二区三区| 国产chinese男男gay视频网| 日韩福利视频导航| 久久免费观看视频| 国产美女精品一区二区| 日韩精品一区二区三区免费在线观看| 精品国产欧美精品v| 国产精品人成在线播放| 青青草原国产免费av观看| 日本一本在线视频| 国产超碰一区二区三区| 超碰91免费人妻| 国产日韩欧美一区二区三区在线| 精品视频一区二区三区在线播| 日韩不卡高清视频| 美女毛片在线| 亚洲第一区在线| 欧美精品黑人粗大| 国产91小视频| 国产99精品久久| 亚洲精品大秀视频| 91精品国产91久久久久久三级| www成人国产在线观看网站| 国产福利免费在线观看| 91色在线观看| 91尤物国产尤物福利在线| 成人在线观看不卡| 久久青草视频| 少妇极品熟妇人妻专区视频| 人禽伦免费交视频网页播放| 精品一区国产精品| 午夜爽爽视频| h视频在线播放| 蝴蝶伊人久久中文娱乐网| 国产在线精彩视频二区| 国产成人高精品免费视频| 毛片免费高清免费| 国产精品大白天新婚身材| 欧美色亚洲| 男人天堂亚洲天堂| 亚洲欧美精品日韩欧美| 久久香蕉国产线看观看式| 麻豆精品在线| 亚洲第一页在线观看| 日本人妻丰满熟妇区| 午夜在线不卡| 亚洲专区一区二区在线观看| 国产精品手机在线播放| 91久久青青草原精品国产| 无码区日韩专区免费系列| 亚洲精品成人片在线播放| 老司机午夜精品网站在线观看| 91欧洲国产日韩在线人成| 亚洲av中文无码乱人伦在线r| 欧美激情伊人| 日本91视频| 国产在线观看一区二区三区| a级毛片一区二区免费视频| 麻豆国产精品| 天天综合天天综合| 国产乱人伦偷精品视频AAA| 2022国产91精品久久久久久| 91精品国产自产在线老师啪l| 午夜精品久久久久久久99热下载| 99在线视频免费观看| 亚洲中文无码av永久伊人|