基于Vivado HLS在zedboard中的Sobel濾波算法實(shí)現(xiàn)

平臺(tái):zedboard + Webcam
工具:g++4.6 + VIVADO HLS + XILINX EDK + XILINX SDK
系統(tǒng):ubuntu12.04

總體設(shè)計(jì)思路

image

sobel 算法理論基礎(chǔ)

** 索貝爾算子**(Sobel operator)主要用作邊緣檢測(cè)即寡,在技術(shù)上硕并,它是一離散性差分算子,用來(lái)運(yùn)算圖像亮度函數(shù)的灰度之近似值。在圖像的任何一點(diǎn)使用此算子昏名,將會(huì)產(chǎn)生對(duì)應(yīng)的灰度矢量或是其法矢量芦鳍。

image

該算子包含兩組3x3的矩陣各拷,分別為橫向及縱向形病,將之與圖像作平面卷積,即可分別得出橫向及縱向的亮度差分近似值蛾找。如果以A代表原始圖像娩脾,Gx及Gy分別代表經(jīng)橫向及縱向邊緣檢測(cè)的圖像灰度值,其公式如下:

image
Gx = (-1)*f(x-1, y-1) + 0*f(x,y-1) + 1*f(x+1,y-1) 
  + (-2)*f(x-1,y) + 0*f(x,y)+2*f(x+1,y) 
  + (-1)*f(x-1,y+1) + 0*f(x,y+1) + 1*f(x+1,y+1)
  = [f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1)]-[f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1)]

Gy =1* f(x-1, y-1) + 2*f(x,y-1)+ 1*f(x+1,y-1)
   + 0*f(x-1,y) 0*f(x,y) + 0*f(x+1,y)
   + (-1)*f(x-1,y+1) + (-2)*f(x,y+1) + (-1)*f(x+1, y+1)
   = [f(x-1,y-1) + 2f(x,y-1) + f(x+1,y-1)]-[f(x-1, y+1) + 2*f(x,y+1)+f(x+1,y+1)]

其中f(a,b),表示圖像(a,b)點(diǎn)的灰度值打毛;

圖像的每一個(gè)像素的橫向及縱向灰度值通過(guò)以下公式結(jié)合柿赊,來(lái)計(jì)算該點(diǎn)灰度的大小:

image

通常幻枉,為了提高效率 使用不開(kāi)平方的近似值:


image

如果梯度G大于某一閥值則認(rèn)為該點(diǎn)(x,y)為邊緣點(diǎn)

然后可用以下公式計(jì)算梯度方向:

image

Sobel算子根據(jù)像素點(diǎn)上下闹瞧、左右鄰點(diǎn)灰度加權(quán)差,在邊緣處達(dá)到極值這一現(xiàn)象檢測(cè)邊緣展辞。對(duì)噪聲具有平滑作用奥邮,提供較為精確的邊緣方向信息,邊緣定位精度不夠高罗珍。當(dāng)對(duì)精度要求不是很高時(shí)洽腺,是一種較為常用的邊緣檢測(cè)方法。

流程

HLS算法驗(yàn)證與實(shí)現(xiàn)

算法驗(yàn)證包括算法C/C++實(shí)現(xiàn)覆旱,綜合編譯仿真蘸朋,實(shí)現(xiàn)導(dǎo)出pcore用于------->XLINX EDK

EDK硬件 工程搭建

EDK中主要搭建zedboard硬件平臺(tái),實(shí)現(xiàn)VDMA(用AXI-Stream)扣唱,HDMI藕坯,DDR等等团南,生成system.bit,用于連同uboot、fsbl生成zedboard bootload (BOOT.BIN)

參考:zedboard啟動(dòng)過(guò)程分析 , zedboard 構(gòu)建嵌入式linux

LINUX系統(tǒng)移植

準(zhǔn)備一張>8G的SD卡炼彪,分區(qū)為FAT32+EXT4(其中EXT4為文件系統(tǒng)>4GB吐根,F(xiàn)AT分區(qū)為內(nèi)核 設(shè)備樹(shù) bootloader) 可以采用gparted分區(qū)工具完成,apt-get install gparted
系統(tǒng)移植包括內(nèi)核鏡像的編譯辐马,bootloader的移植拷橘,設(shè)備樹(shù)的編譯,文件系統(tǒng)的移植
具體移植步驟參見(jiàn)
內(nèi)核鏡像地址:git clone http://github.com/Digilent/linux-3.3.digilent.git)
uboot源碼: git clone git://git.xiinx.com/u-boot-xarm.git
設(shè)備樹(shù)在內(nèi)核中可以找到喜爷,將設(shè)備樹(shù)冗疮,內(nèi)核鏡像,BOOT.BIN拷貝到SD卡中FAT分區(qū)中
文件系統(tǒng) , 直接拷貝到SD卡中EXT4分區(qū)中

LINUX VDMA驅(qū)動(dòng)應(yīng)用程序編寫(xiě)與實(shí)現(xiàn)

編寫(xiě)驅(qū)動(dòng)程序是為了我們能在PS中對(duì)VDMA進(jìn)行管理和控制檩帐。前提是在底層中我們已經(jīng)做好了所有相關(guān)的硬件設(shè)計(jì)等等术幔。
移植OPENCV庫(kù):用于對(duì)比FPGA算法處理速度比較,有兩種方法移植OPENCV庫(kù)湃密,
1: apt-get install libopencv-dev python-opencv
2: opencv下載源碼地址
編譯步驟參考:基于opencv網(wǎng)絡(luò)攝像頭在ubuntu下的視頻獲取

結(jié)果展示

FPGA硬件實(shí)現(xiàn)Sobel效果

OPENCV軟件實(shí)現(xiàn)Sobel
image

處理時(shí)間顯示

結(jié)果分析

上圖處理時(shí)間中 640*480的視頻

1:opencv處理一幀的時(shí)間0.148554s 大約為7幀每秒

2:fpga硬件實(shí)現(xiàn)一幀總時(shí)間(算法時(shí)間+VDMA拷貝時(shí)間)

3:fpga硬件實(shí)現(xiàn)一幀的算法時(shí)間特愿,不包含拷貝DMA時(shí)間

在cortex A9 700MHZ 速度中 ,F(xiàn)PGA實(shí)現(xiàn)的算法速度比OPENCV軟件實(shí)現(xiàn)速度快50-100倍勾缭,F(xiàn)PGA一秒鐘可以處理500幀圖像,OPENCV只能處理10張不到

但是缺點(diǎn)是目养,視頻拷貝花費(fèi)了太多的時(shí)間俩由。所以我個(gè)人認(rèn)為FPGA處理圖像不在算法實(shí)現(xiàn)有多復(fù)雜與困難,因?yàn)镕PGA的并行率理論上是無(wú)窮的癌蚁,但是視頻流的輸入輸出的速度直接決定了處理速度幻梯。暫時(shí)沒(méi)想到好的方法解決。

參考

使用HLS各種問(wèn)題
Sobel邊緣檢測(cè)算法
shakithweblog博客

作者:xiabodan

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末努释,一起剝皮案震驚了整個(gè)濱河市碘梢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伐蒂,老刑警劉巖煞躬,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異逸邦,居然都是意外死亡恩沛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)缕减,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)雷客,“玉大人,你說(shuō)我怎么就攤上這事桥狡〗寥梗” “怎么了皱卓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)部逮。 經(jīng)常有香客問(wèn)我娜汁,道長(zhǎng),這世上最難降的妖魔是什么甥啄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任存炮,我火速辦了婚禮,結(jié)果婚禮上蜈漓,老公的妹妹穿的比我還像新娘穆桂。我一直安慰自己,他們只是感情好融虽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布享完。 她就那樣靜靜地躺著,像睡著了一般有额。 火紅的嫁衣襯著肌膚如雪般又。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天巍佑,我揣著相機(jī)與錄音茴迁,去河邊找鬼。 笑死萤衰,一個(gè)胖子當(dāng)著我的面吹牛堕义,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脆栋,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼倦卖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了椿争?” 一聲冷哼從身側(cè)響起怕膛,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秦踪,沒(méi)想到半個(gè)月后褐捻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椅邓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年舍扰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片希坚。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡边苹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出裁僧,到底是詐尸還是另有隱情个束,我是刑警寧澤慕购,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站茬底,受9級(jí)特大地震影響沪悲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阱表,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一殿如、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧最爬,春花似錦涉馁、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至糠悯,卻和暖如春帮坚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背互艾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工试和, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纫普。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓阅悍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親局嘁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 邊緣檢測(cè)是圖像處理和計(jì)算機(jī)視覺(jué)的基本問(wèn)題晦墙,邊緣檢測(cè)的目的是標(biāo)識(shí)數(shù)字圖像中亮度變化明顯的點(diǎn)悦昵,圖像屬性中的顯著變化通常...
    Daniel大人閱讀 6,107評(píng)論 0 0
  • 1、閾值分割 1.1 簡(jiǎn)介 圖像閾值化分割是一種傳統(tǒng)的最常用的圖像分割方法晌畅,因其實(shí)現(xiàn)簡(jiǎn)單但指、計(jì)算量小、性能較穩(wěn)定而成...
    木夜溯閱讀 22,584評(píng)論 9 15
  • 1抗楔、閾值分割 1.1 簡(jiǎn)介 圖像閾值化分割是一種傳統(tǒng)的最常用的圖像分割方法棋凳,因其實(shí)現(xiàn)簡(jiǎn)單、計(jì)算量小连躏、性能較穩(wěn)定而成...
    Lornatang閱讀 9,472評(píng)論 0 5
  • 在這篇文章中剩岳,我們將學(xué)習(xí)一下圖像中梯度的應(yīng)用 一:什么是梯度? 在高等數(shù)學(xué)中我們了解到梯度不是一個(gè)實(shí)數(shù)入热,他是一個(gè)向...
    云時(shí)之間閱讀 612評(píng)論 0 0
  • 還有多少?zèng)]有完成的夢(mèng)想,沒(méi)有到達(dá)的遠(yuǎn)方绰播,沒(méi)有說(shuō)出口的喜歡骄噪,年輕人你太瞻前顧后,這樣一點(diǎn)也不酷蠢箩。
    親昵稱已被使用閱讀 177評(píng)論 0 0