国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA 的含噪圖像邊緣檢測系統(tǒng)的設(shè)計與實現(xiàn)

2023-11-19 09:20:42胡雪梅吳占敏
電子制作 2023年21期
關(guān)鍵詞:寄存器算子邊緣

胡雪梅,吳占敏

(瑞芯微電子股份有限公司,福建福州,350003)

0 引言

圖像邊緣檢測是數(shù)字圖像處理中的一項關(guān)鍵技術(shù),是模式識別、目標跟蹤、運動檢測及圖像分割等技術(shù)的基礎(chǔ),其識別的準確性及速度將直接影響后續(xù)圖像分析的效果。傳統(tǒng)的邊緣檢測算法大多依靠軟件程序,一些普通的圖像處理軟件在提取圖像邊緣時無法滿足實時性[1],因此實用性不高。基于現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)芯片以其獨特的并行可編程處理信號的方式,成為圖像處理的重要器件[2]。

為了提高檢測精度和解決實時性問題,在文獻[3]中,作者通過增加Sobel 算子的檢測方向獲得了更清晰的邊緣,且展示了FPGA 優(yōu)秀的并行處理能力,在文獻[4]中,作者使用改進的DoG 算子提高了檢測精度,但是這些算法都沒有考慮到sensor 噪聲和鏡頭暗影(Lens Shading)對邊緣檢測的影響,導致離圖像中心越遠邊緣檢測越容易丟失關(guān)鍵細節(jié)信息的問題。為了解決這些問題,本文使用改進的中值濾波對輸入圖像進行第一級濾波計算,在去除顆粒噪聲的同時兼顧邊界的連續(xù)性,然后采用高斯差分(DoG,Difference of Gaussian)算子對中值濾波后的圖像進行第二級邊緣檢測計算,為了進一步解決鏡頭暗影帶來的圖像降質(zhì)影響,設(shè)置徑向力度對閾值進行調(diào)整后再輸出最終的邊緣檢測結(jié)果。此外,為了滿足現(xiàn)代數(shù)字圖像處理中對實時性的需求,本文基于FPGA 硬件平臺,利用其高速并行處理、高性能運算能力及高靈活性等特點,通過兩級RAM 存儲控制及簡化計算大幅提升圖像數(shù)據(jù)實時處理速度。實驗結(jié)果表明,本算法可用于含噪圖像的邊緣檢測且具有實用性的優(yōu)點。

1 算法分析

邊緣通常指圖像灰度值變化劇烈的像素點集合,其理論上是由灰度值的瞬間跳變產(chǎn)生,但在實際圖像區(qū)域中,由明變暗或由暗變明是一個漸變過程,灰度曲線存在一定的斜率[5]。由于其突變的時間非??欤虼艘浑A微分和二階微分對這種突變的檢測有很好的效果。一階邊緣檢測算子有Prewitt 算子、Sobel 算子、羅盤算子等,二階邊緣檢測算子有Canny 算子、Laplacian 算子等,但是二階微分算子對噪聲太敏感,會產(chǎn)生大量偽邊緣。此外,在實際應(yīng)用中,Sensor 的鏡頭暗影和數(shù)據(jù)傳輸中電子元器件產(chǎn)生的白噪聲都一定程度上造成了圖像降質(zhì)[6],這些都會影響圖像邊緣的提取。

為了解決上述問題,本文提出了一種可抗噪的邊緣檢測算法,先對輸入的圖像做一個3×3 的改進版的梯度權(quán)重中值濾波,然后再用高斯差分[7]算子提取圖像邊緣信息,最后為了緩解Sensor 鏡頭暗影的影響,針對鏡頭暗影產(chǎn)生的規(guī)律計算出一個徑向系數(shù),對輸入的閾值做一個調(diào)整,以達到抑制噪聲且提取連續(xù)清晰的圖像邊緣的目的。

■1.1 改進的中值濾波

中值濾波對一些孤立的椒鹽噪聲有很好的去噪效果,但是也會模糊圖像邊緣,對后續(xù)的邊緣提取非常不利[8],為了緩解這個問題,本文提出一種方向權(quán)重混合的中值濾波改進算法,這種算法充分考慮到了邊緣降噪需保邊的需求,在去除顆粒噪聲的同時保護了邊緣的連續(xù)性,且本算法利用了FPGA 并行計算的優(yōu)勢,可以快速得出結(jié)果。具體算法步驟如下:

(1)對一個如式(1)所示的3×3 的矩陣,對垂直、水平、45 度和135 度四個方向分別計算其梯度的絕對值和中值,以垂直方向為例,其梯度為diff0=abs(data0_1-data2_1),中值med0 為data0_1、data1_1 和data2_1 的中間值,其他三個方向計算相同。

(2)對垂直、水平、45 度和135 度四個方向的梯度diff0、diff1、diff2 和diff3 做exp 曲線映射,梯度的值越小的地方其權(quán)重分配越大,梯度的值越大的地方其權(quán)重分配越小,exp 曲線映射如公式(2)所示,映射后的權(quán)重分別記為weight0、weight1、weight2 和weight3。

(3)用第二步計算出的權(quán)重分別乘以各個方向的中值,再除以權(quán)重的和得到歸一化輸出,權(quán)重歸一化如公式(3)所示:

■1.2 DoG 算子

一階微分算子如Sobel 需要計算多個方向的一階導并做混合才能提取出足夠的圖像邊緣,二階微分算子如Laplacian 算子雖然擁有各向同性的優(yōu)勢,可以直接計算出各個方向的邊緣,無需像Sobel 算子那樣,需要計算各個方向的邊緣然后做混合,但是二階微分算子普遍對噪聲又過于敏感,尤其是如果噪點在圖像邊緣上,會造成圖像邊緣不夠連續(xù)[9]。

為了解決這個問題,選擇使用高斯差分(DoG,Difference of Gaussian)算子來代替Laplacian 算子,DoG 算子是兩個Gauss 算子相減獲得的,Gauss 算子配置不同的均值和方差,可以獲得不同頻段的圖像邊緣信息,本文需要檢測出所有頻段的邊緣信息且抗噪,因此第一個Gauss 算子就用3×3 來代替,考慮到3×3 的窗口太小,一些弱邊緣可能會不容易檢測到,因此第二個Gauss 算子加大窗口,選擇5×5 的窗口來進行計算,5×5 的DoG 算子如公式如(4)所示:

■1.3 徑向閾值

鏡頭類似一個凸透鏡,由于凸透鏡中心的聚光能力遠大于其邊緣,從而導致Sensor 中心的光線強度大于四周,此種現(xiàn)象也稱之為鏡頭暗影[10]。對于一個沒有畸變的Sensor來說,物體到鏡頭中心的距離越亮,圖像越亮,離中心距離越遠,圖像越暗,其規(guī)律整體呈從圓心位置沿半徑方向逐步遞減。由于亮度遞變的影響,使得邊緣檢測中越靠近中心區(qū)域噪聲越小,越靠近圖像四周邊緣噪聲越大,為了緩解這個問題,對輸入的閾值乘以徑向力度系數(shù),達到抑制圖像周圍噪聲的作用。

設(shè)圖像中心點坐標為(row,col),當前pixel 的像素坐標為(x,y),則距離如公式(5)所示,用外部配置的閾值除以distance 就得到徑向閾值,根據(jù)這個閾值對邊緣檢測的圖像進行二值化,可以抑制圖像周圍的噪聲。

2 系統(tǒng)設(shè)計

■2.1 硬件整體設(shè)計

在圖像邊緣檢測中,所需要處理的數(shù)據(jù)量較大,為了提升數(shù)據(jù)處理速度,通常都會利用DDR3 DRAM 的高速運行速度(運行速度可達800 MHz,數(shù)據(jù)速率達1 600 Mb/s)來完成讀寫數(shù)據(jù)的操作,這樣就占用了一定的DDR 帶寬,一定程度上限制了處理速度。為了提升數(shù)據(jù)處理速度,本論文用sensor 直接接入FPGA 中的Video Capture 模塊,Video Capture 的按照光柵輸入模式將數(shù)據(jù)直接輸入到邊緣檢測模塊中的Med RAM 讀寫控制模塊,不寫入DDR3 可以節(jié)省帶寬并提高邊緣檢測處理速度。Med RAM 模塊湊夠3×3 窗口數(shù)據(jù)即輸出至4 方向權(quán)重和4 方向均值模塊,這兩個模塊并行計算出結(jié)果,然后按照權(quán)重計算歸一化輸出中值濾波結(jié)果至Med RAM 讀寫控制,該模塊湊夠5×5 窗口數(shù)據(jù)即輸出至5×5 DoG 計算模塊,此時按照窗口數(shù)據(jù)輸出的數(shù)據(jù)個數(shù)Col_cnt 和Row_cnt 分別計數(shù),按照公式(5)計算出徑向閾值,對DoG 的輸出結(jié)果做二值化操作,得到的邊緣檢測結(jié)果存入DDR3 中,最后通過VGA 輸出至顯示器上,整體設(shè)計如圖1 所示。

圖1 系統(tǒng)框圖

■2.2 RAM 的讀寫及數(shù)據(jù)控制

以5×5 窗口大小的DoG RAM 為例(3×3 窗口類似),對于5×5 的窗口大小來說,能進行5×5 窗口濾波的條件是必須湊夠5 行數(shù)據(jù)。假設(shè)第4 行為正在實時輸入的數(shù)據(jù),前4 行數(shù)據(jù)為歷史數(shù)據(jù),為了同時滿足讀歷史數(shù)據(jù)和寫新數(shù)據(jù)的需求,需要一個能容納4 行數(shù)據(jù)的雙口RAM。開一個能容納4 行數(shù)據(jù)的雙口RAM,前4 行數(shù)據(jù)在RAM 中的存儲方式如圖2 所示(為了便于說明,data 的后綴分別代表圖像的行數(shù)和列數(shù))。

圖2 RAM 數(shù)據(jù)存儲方式示意圖

RAM 中的每一個地址的數(shù)據(jù)位寬都是40 bit,這40 bit包含了4行數(shù)據(jù),以Addr0為例,其中存儲了圖像第0行~第3 行的第0 列數(shù)據(jù),data0_0 占據(jù)位寬[9:0],data1_0 占據(jù)位寬[19:10],data2_0 占據(jù)位寬[29:20],data3_0 占據(jù)位寬[39:0]。這種存儲方式讀Addr0 可以獲得一列共4個數(shù)據(jù),加上正在輸入的data4_0 就會構(gòu)成完整的一列數(shù)據(jù),把這列數(shù)據(jù)存進二維寄存器中,然后把RAM 讀出數(shù)據(jù)的[39:10]和data4_0 拼起來組成一個新的40 bit 數(shù)據(jù)再寫回Addr0 中,就完成了一次數(shù)據(jù)讀和寫更新,一行做完后RAM 中每個地址的[9:0]是新寫入的第4 行數(shù)據(jù),下一行更新的位置是[19:10],如此循環(huán)往復,可存完一整幅圖像。

對于5×5 的窗口,需要一個5×5 的二維寄存器緩存讀出來列數(shù)據(jù)和輸入的當前數(shù)據(jù),每產(chǎn)生一列新數(shù)據(jù)就寫入二維寄存器中最左邊的一列寄存器中,同時每列寄存器中的數(shù)據(jù)向右一列寄存器中移位一次,最右邊的一列寄存器數(shù)據(jù)被覆蓋。用這種方法讀3次RAM 即可湊夠一個完整的窗口計算一次,后續(xù)每讀出一列新數(shù)據(jù),舊數(shù)據(jù)依次覆蓋右列數(shù)據(jù)即可獲得一個新的5×5 數(shù)據(jù)。

此外窗口數(shù)據(jù)還存在擴邊需求,當中心點在圖像邊界的時候,上下左右各需要2 行2 列的擴邊,分以下4 種情況進行擴邊:

(1)上擴邊,在第0 行寫RAM 的時候就把data0_x的數(shù)據(jù)復制3 次,即[9:0]、[19:10]和[29:20]中的數(shù)據(jù)都是data0_x。

(2)下擴邊,在RAM 讀數(shù)據(jù)的時候,把最后一行數(shù)據(jù)復制到第一列二維寄存器中。

(3)左擴邊,在每行第0 列數(shù)據(jù)讀出寫5×5 二維矩陣的時候,就同時寫最左邊的3 列數(shù)據(jù),即二維寄存器的前3 列中的數(shù)據(jù)都是第0 列的數(shù)據(jù),更新兩次數(shù)據(jù)之后即可獲得一個完整的5×5 數(shù)據(jù)。

(4)右擴邊,在每行的最后兩列的時候,不讀RAM,只做寄存器的移位,即可獲得右擴邊。

用上述方法做圖像擴邊可大大節(jié)省硬件面積,且邏輯控制非常簡單。

3 實驗結(jié)果及仿真分析

為驗證各個模塊算法的正確性,在型號為Xilinx Virtex UltraScale XCVU440FLGA2892 的FPGA 上進行測試,得到的實驗結(jié)果如圖3 和4 所示。

圖3 圖標邊緣檢測結(jié)果

圖4 分辨率卡邊緣檢測結(jié)果

由實驗結(jié)果分析可知,Sobel 算子的邊緣連續(xù)性差,檢測不到弱邊緣。Canny 算子在邊緣連續(xù)性上表現(xiàn)較好,但是無法對抗噪聲的干擾,在圖像周圍噪聲比較大的區(qū)域,其檢測出的邊緣淹沒于噪聲中。而本論文的邊緣檢測結(jié)果在連續(xù)性和抗噪方面均優(yōu)于前兩個算法,且在圖像四周區(qū)域?qū)D像噪聲的抑制性較好。結(jié)合FPGA 可以達到實時性的需求,從圖像采集到最終顯示的時間小于25 ms。

4 結(jié)論

本文通過兩級窗口串聯(lián)的方式設(shè)計了一種可抗噪的邊緣濾波算法,通過改進的中值濾波和高斯差分濾波的級聯(lián)抑制噪聲提取連貫的邊緣,結(jié)合徑向閾值,進一步解決了Sensor 鏡頭暗影帶來的圖像四周噪聲過大的問題。通過RAM 對窗口數(shù)據(jù)的緩存,解決了硬件實時處理中開銷大的問題,利用FPGA 的流水線和并行處理的特點,使得圖像數(shù)據(jù)的處理速度遠遠高于使用傳統(tǒng)軟件程序處理圖像的速度,滿足了實際應(yīng)用中實時獲得圖像邊緣的需求。并通過對比不同算法的圖片檢測效果,本文算法邊緣清晰且抗噪能力較好,在高速圖像處理領(lǐng)域具有較高的實用價值。

猜你喜歡
寄存器算子邊緣
擬微分算子在Hp(ω)上的有界性
各向異性次Laplace算子和擬p-次Laplace算子的Picone恒等式及其應(yīng)用
Lite寄存器模型的設(shè)計與實現(xiàn)
一類Markov模算子半群與相應(yīng)的算子值Dirichlet型刻畫
分簇結(jié)構(gòu)向量寄存器分配策略研究*
一張圖看懂邊緣計算
Roper-Suffridge延拓算子與Loewner鏈
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
一種可重構(gòu)線性反饋移位寄存器設(shè)計
在邊緣尋找自我
雕塑(1999年2期)1999-06-28 05:01:42
通海县| 偏关县| 庐江县| 泉州市| 花莲县| 广水市| 巴彦淖尔市| 元氏县| 伊川县| 务川| 天台县| 镇坪县| 勐海县| 康乐县| 井研县| 泾阳县| 丰都县| 象州县| 方城县| 阳江市| 卢龙县| 马龙县| 龙海市| 平泉县| 三台县| 苏尼特左旗| 萨嘎县| 昌乐县| 呼和浩特市| 海口市| 满洲里市| 红原县| 丰台区| 宁安市| 南雄市| 陇南市| 宣威市| 南康市| 霍邱县| 新晃| 四会市|