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

?

基于FPGA實時邊緣檢測系統(tǒng)設(shè)計

2013-07-19 01:56黃河魏幼平謝洋
中國科技信息 2013年21期
關(guān)鍵詞:精確定位算子灰度

黃河 魏幼平 謝洋 張 衎

中國礦業(yè)大學(北京)機電與信息工程學院,北京 100083

1. 引言

邊緣檢測是圖像處理的重要算法之一,常用于輪廓檢測、模式識別、區(qū)域分割等領(lǐng)域。但是圖像處理對于嵌入式領(lǐng)域的研發(fā),考慮的是算法的實時性和圖像算法仿真設(shè)計的直觀高效性??梢酝ㄟ^本文的設(shè)計理念方法結(jié)合Modelsim與Matlab[1]仿真平臺應(yīng)用與其他的圖像算法設(shè)計開發(fā),使其高效移植于嵌入式FPGA平臺,然而采用FPGA進行圖像處理的原因是因為它有強大的并行操作能力和流水線功能架構(gòu),能很好的進行數(shù)據(jù)的實時處理。

2. 基于FPGA實時邊緣檢測系統(tǒng)簡介

基于FPGA實時圖像邊緣檢測系統(tǒng)處理框圖如圖1。先通過CMOS攝像頭進行RGB格式圖像采集,接著將圖像進行灰度處理,再通過基于Sobel算子[1]的并行結(jié)構(gòu)進行實時邊緣區(qū)域粗預測,接著在邊緣區(qū)域的基礎(chǔ)上進行Roberts算子的邊緣精確定位,最后通過判定橫向、縱向的算子卷積和閥值,確定邊緣坐標,將邊緣檢測效果實時的顯示到VGA顯示器上。

圖1 FPGA實時邊緣檢測系統(tǒng)

3. Sobel算子與Roberts算子邊緣檢測算法原理

3.1 Sobel算子邊緣檢測原理

Sobel算子用作邊緣檢測,該算子包含兩組3*3的矩陣,分別為x方向即橫向及y方向即縱向,通過相關(guān)公式運算即基于Sobel卷積因子的運算,便可得出橫向及縱向的亮度差分近似值,從而用來判斷圖像邊緣的依據(jù)。

圖2 Sobel橫向、縱向卷積因子

Gx及Gy分別代表(x,y)處的像素橫向及縱向邊緣檢測的圖像灰度值變化量,其中f(x,y), 表示圖像(x,y)點的灰度值,具體計算如下:

為了提高效率,圖像的每一個像素的橫向及縱向灰度值變化量通過式結(jié)3-3方式加權(quán)[2]。

如果梯度G大于某一閥值 則認為該點(x,y)為邊緣點。

Sobel算子根據(jù)像素點上下、左右鄰點灰度加權(quán)差,在邊緣處達到極值這一現(xiàn)象檢測邊緣。對噪聲具有平滑作用,提供較為精確的邊緣方向信息,邊緣定位精度不夠高。當對精度要求不是很高時,是一種較為常用的邊緣檢測方法。

3.2 Roberts算子邊緣檢測原理

Roberts算子采用對角線方向相鄰兩像素之差近似梯度幅值檢測邊緣。檢測水平和垂直邊緣的效果好于斜向邊緣,定位精度高,對噪聲敏感。

同上Roberts算子邊緣檢測公式如下:

除sobel邊緣檢測外還有Prewitt算子、Canny算子、Laplacian算子 Log算子等,每種邊緣檢測方法都有其優(yōu)缺點,但是只要結(jié)合FPGA的可用邏輯資源及SDRAM數(shù)據(jù)緩存空間,最終規(guī)劃好算法流水線結(jié)構(gòu)就可以將各種邊緣檢測算法互補綜合使用發(fā)揮其各算法的優(yōu)勢達到最優(yōu)邊緣檢測效果且更重要的是具有算法的高效實時性。

4. Sobel與Roberts算子聯(lián)合邊緣檢測

4.1 Sobel與Roberts算子聯(lián)合流水線結(jié)構(gòu)

因為Sobel算子邊緣檢測對噪聲具有平滑作用,提供較為精確的邊緣方向信息,邊緣定位精度不夠高,而Roberts算子檢測定位精度高,所以先通過Sobel算子邊緣檢測粗定位邊緣區(qū)域,再通過Roberts算子檢測區(qū)域搜索精確定位邊緣位置。

通過Sobel算子邊緣檢測公式可知要檢測一個像素是否為圖像邊緣時需要結(jié)合周邊8個像素即總共9個像素點進行邊緣檢測算法運算,才能得到邊緣區(qū)域,對于FPGA的實時性算法設(shè)計就需要消耗9個時鐘。再接著通過Roberts算子進一步的區(qū)域搜索精確定位,還需要消耗一個時鐘。所以為了實現(xiàn)基于FPGA實時邊緣檢測系統(tǒng),檢測模塊就需要采用流水線10并行模塊結(jié)構(gòu)如圖。另外注意當開始一幀圖像的第一個邊緣檢測運算時是從CMOS攝像頭采集灰度處理后的第三行的第三列開始,所以需要進行至少三行的灰度像素數(shù)據(jù)緩存,且需要相應(yīng)的圖像顯示延時。但是基于此設(shè)計的FPGA還是做到了最好的實時效果顯示。(見圖3)

圖3 Sobel與Roberts算子聯(lián)合流水線結(jié)構(gòu)

4.2 邊緣檢測HDL語言設(shè)計

以下是邊緣檢測的HDL核心算法設(shè)計,先基于Sobel算子的并行結(jié)構(gòu)進行實時邊緣區(qū)域粗預測,接著在邊緣區(qū)域的基礎(chǔ)上進行Roberts算子的邊緣精確定位。

Sobel 算子單個模塊HDL代碼:

If((a3+2*a6+a9)-(a1+2*a4+a7)<0)//Sobel橫向灰度變量絕對值

Sobel_xout<=-((a3+2*a6+a9)-(a1+2*a4+a7));

If((a1+2*a2+a3)-(a7+2*a8+a9)<0)//Sobel縱向灰度變量絕對值

Sobel_yout<=-((a1+2*a2+a3)-(a7+2*a8+a9));end

end

assign sobel_out=((Sobel_xout+Sobel_yout)>G) ? 1:0;//判斷是否為邊緣區(qū)域

assign x=((Sobel_xout+Sobel_yout)>G) ? x0 :0;//邊緣區(qū)域中心點x坐標

assign y=((Sobel_xout+Sobel_yout)>G) ? y0 :0;//邊緣區(qū)域中心點y坐標

Roberts算子單個模塊HDL代碼:

always@(posedge clk)

begin if(rst==0) begin robert_xout<=0; robert_yout<=0; end else if(rst!=0) begin

If(a1-a4<0)//Roberts橫向灰度變量絕對值

robert_xout<=-(a1-a4);

If(a2-a3<0)//Roberts縱向灰度變量絕對值

robert_yout<=-(a2-a3);end

end

assign robert_out=((robert_xout+Sobel_yout)>G) ? 255:0;//精確定位邊緣

assign x=((robert_xout+robert_yout)>G) ? x0 :0;//邊緣點x坐標

assign y=((robert_xout+robert_yout)>G) ? y0:0; //邊緣點x坐標

5. 結(jié)束語

本文來源于大學生創(chuàng)新項目,設(shè)計了基于FPGA實時邊緣檢測系統(tǒng)設(shè)計,通過QuartusII、Matlab、Modelsim聯(lián)合開發(fā)[3],將圖像數(shù)據(jù)流通過Matlab轉(zhuǎn)換為十六進制文本文件,再通過Modelsim讀取十六進制圖像RGB文本文件進行算法HDL硬件描述語言仿真最后輸出邊緣檢測后文本文件,最后通過Matlab將邊緣檢測圖像文本文件進行圖像還原。三平臺的聯(lián)合開發(fā)高效,能充分利用仿真平臺查看算法顯示效果從而最大程度加快基于FPGA的圖像處理項目進度。通過實際的硬件調(diào)試,成功實現(xiàn)了系統(tǒng)實時邊緣檢測功能。而且FPGA嵌入式結(jié)構(gòu)平臺便于系統(tǒng)升級。

[1]陳懷琛,吳大正. 高西全.MATLAB及在電子信息課程中的應(yīng)用(第3版)[M].北京:電子工業(yè)出版社,2006.3.

[2]張強,王正林. 精通.MATLAB圖像處理[M]. 北京:電子工業(yè)出版社, 2012.4.

[3]王誠,蔡海寧,吳繼華. Altera FPGA/CPLD 設(shè)計(高級篇)[M].北京:人民郵電出版社,2012.5.

猜你喜歡
精確定位算子灰度
與由分數(shù)階Laplace算子生成的熱半群相關(guān)的微分變換算子的有界性
采用改進導重法的拓撲結(jié)構(gòu)灰度單元過濾技術(shù)
數(shù)控銑削精確定位加工方法在起落架修理中的應(yīng)用
精確定位
擬微分算子在Hp(ω)上的有界性
Heisenberg群上與Schr?dinger算子相關(guān)的Riesz變換在Hardy空間上的有界性
Bp-MRI灰度直方圖在鑒別移行帶前列腺癌與良性前列腺增生中的應(yīng)用價值
Domestication or Foreignization:A Cultural Choice
基于最大加權(quán)投影求解的彩色圖像灰度化對比度保留算法
精確定位
南充市| 天峨县| 大名县| 洛浦县| 白沙| 佛山市| 虎林市| 临城县| 淄博市| 道孚县| 塔河县| 西畴县| 金湖县| 云浮市| 江源县| 会昌县| 浠水县| 锦屏县| 沾益县| 白水县| 两当县| 贺州市| 襄城县| 岱山县| 香河县| 平罗县| 神农架林区| 花垣县| 上蔡县| 新巴尔虎右旗| 高平市| 东莞市| 杭州市| 肃南| 卢湾区| 兴山县| 嘉峪关市| 乐清市| 秀山| 曲松县| 洛阳市|