在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA圖像處理的Sobel邊緣檢測(cè)

FPGA之家 ? 來源:似猿非猿的FPGA ? 作者:似猿非猿的FPGA ? 2021-03-22 09:45 ? 次閱讀

Sobel邊緣檢測(cè)

Sobel邊緣檢測(cè)原理教材網(wǎng)上一大堆,核心為卷積處理。

Sobel卷積因子為:

587a489a-8924-11eb-8b86-12bb97331649.png

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

589be176-8924-11eb-8b86-12bb97331649.png

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

58c78876-8924-11eb-8b86-12bb97331649.png

通常,為了提高效率 使用不開平方的近似值:

5903a144-8924-11eb-8b86-12bb97331649.png

最后,當(dāng)計(jì)算出來的值大于某一閾值時(shí)即認(rèn)為為邊緣像素點(diǎn)。

歸結(jié)起來,Sobel邊緣檢測(cè)分為三大步:卷積計(jì)算、灰度計(jì)算、閾值比較處理。結(jié)合上文實(shí)現(xiàn)的bufWindow,在SpinalHDL里實(shí)現(xiàn)Sobel邊緣檢測(cè)也就幾行代碼的事情(如果是寫Verilog我還是拒絕的)。

卷積計(jì)算

通過bufWindow,我們可以得到一個(gè)3x3的矩陣窗口,拿到結(jié)果第一步即是計(jì)算卷積,由于卷積因子是帶符號(hào)的,而在做卷積時(shí)又需要考慮位寬擴(kuò)展的事情,在寫Verilog時(shí)還是需要小心的設(shè)計(jì)下的,而在SpinalHDL里,兩行代碼:

val Gx=(windowbuf.io.dataOut.payload(0)(2).expand.asSInt-^windowbuf.io.dataOut.payload(0)(0).expand.asSInt)+| ((windowbuf.io.dataOut.payload(1)(2).expand.asSInt-^windowbuf.io.dataOut.payload(1)(0).expand.asSInt)《《1)+| (windowbuf.io.dataOut.payload(2)(2).expand.asSInt-^windowbuf.io.dataOut.payload(2)(0).expand.asSInt)val Gy=(windowbuf.io.dataOut.payload(0)(0).expand.asSInt-^windowbuf.io.dataOut.payload(2)(0).expand.asSInt)+| ((windowbuf.io.dataOut.payload(0)(1).expand.asSInt-^windowbuf.io.dataOut.payload(2)(1).expand.asSInt)《《1)+| (windowbuf.io.dataOut.payload(0)(2).expand.asSInt-^windowbuf.io.dataOut.payload(2)(2).expand.asSInt)

首先將bufWindow輸出的窗口矩陣值擴(kuò)展一位位寬轉(zhuǎn)換為有符號(hào)值,然后進(jìn)行計(jì)算卷積。計(jì)算卷積運(yùn)用了兩個(gè)運(yùn)算符“-^”,“+|”來處理加減運(yùn)算時(shí)的位寬處理(可參照SpinalHDL手冊(cè)或本公眾號(hào)的《SpinalHDL—數(shù)據(jù)類型:UInt/SIn》)。最終得到Gx、Gy。

灰度計(jì)算

灰度計(jì)算這里采用近似值,通過取絕對(duì)值的方式進(jìn)行實(shí)現(xiàn),在SpinalHDL里也就一行代碼的事情:

sobelResult.payload:= (sobelConv.payload(0).abs+| sobelConv.payload(1).abs).fixTo(cfg.dataWidth-1 downto 0,RoundType.ROUNDUP)

由于在卷積計(jì)算時(shí)有擴(kuò)展位寬,這里計(jì)算最后調(diào)用fixTo進(jìn)行高位飽和處理。最終得到位寬與輸入保持一致(想想你在Veirlog里實(shí)現(xiàn)這一步要做多少事情,少年)。

閾值比較

閾值比較就很簡(jiǎn)單了,比較兩個(gè)值大小取兩個(gè)極端:

when(sobelResult.payload》io.thresholdValue){ io.dataOut.payload:=(default-》true) }otherwise{ io.dataOut.payload:=(default-》false) }

最終實(shí)現(xiàn)Sobel邊緣檢測(cè)代碼如下:

case class sobelProc(cfg:lineBufferCfg) extends Component{ require(cfg.lineNum==3) val io=new Bundle{ val thresholdValue =in UInt(cfg.dataWidth bits) val dataIn=slave Flow(UInt(cfg.dataWidth bits)) val dataOut=master Flow(UInt(cfg.dataWidth bits)) dataOut.valid.setAsReg().init(False) dataOut.payload.setAsReg().init(0) } noIoPrefix() val sobel=new Area{ val windowbuf=bufWindow(cfg) val sobelConv=Reg(Flow(Vec(SInt(),2))) val sobelResult=Reg(Flow(UInt(cfg.dataWidth bits))) sobelConv.valid.init(False) sobelResult.valid.init(False) io.dataIn《》windowbuf.io.dataIn val Gx=(windowbuf.io.dataOut.payload

(0)(2).expand.asSInt-^windowbuf.io.dataOut.payload(0)(0).expand.asSInt)+| ((windowbuf.io.dataOut.payload(1)(2).expand.asSInt-^windowbuf.io.dataOut.payload(1)(0).expand.asSInt)《《1)+| (windowbuf.io.dataOut.payload(2)(2).expand.asSInt-^windowbuf.io.dataOut.payload(2)(0).expand.asSInt) val Gy=(windowbuf.io.dataOut.payload(0)(0).expand.asSInt-^windowbuf.io.dataOut.payload(2)(0).expand.asSInt)+| ((windowbuf.io.dataOut.payload

(0)(1).expand.asSInt-^windowbuf.io.dataOut.payload(2)(1).expand.asSInt)《《1)+| (windowbuf.io.dataOut.payload(0)(2).expand.asSInt-^windowbuf.io.dataOut.payload(2)(2).expand.asSInt) sobelConv.valid:=windowbuf.io.dataOut.valid sobelConv.payload(0):=Gx sobelConv.payload(1):=Gy sobelResult.valid:=sobelConv.valid sobelResult.payload:= (sobelConv.payload(0).abs+| sobelConv.payload(1).abs).fixTo(cfg.dataWidth-1 downto 0,RoundType.ROUNDUP) io.dataOut.valid:=sobelResult.valid when(sobelResult.payload》io.thresholdValue){ io.dataOut.payload:=(default-》true) }otherwise{ io.dataOut.payload:=(default-》false) } }}

區(qū)區(qū)不到四十行代碼,簡(jiǎn)潔而優(yōu)雅,基本上就是描述算法,出錯(cuò)概率應(yīng)該很小吧!

仿真

做圖像處理的小伙伴想想在做仿真驗(yàn)證時(shí)需要怎么搞,matlab生成灰度圖像二進(jìn)制數(shù)據(jù)放在文件里,然后仿真時(shí)再導(dǎo)入,仿真完成后將結(jié)果保存到文件里,最后再在matlab里做對(duì)比。 太麻煩。SpinalHDL提供了仿真支持,而SpinalHDL是基于Scala的,可以完美實(shí)現(xiàn)整個(gè)仿真驗(yàn)證流程:從圖片直接獲取數(shù)據(jù),然后進(jìn)行仿真驗(yàn)證,仿真結(jié)果直接再次生成圖片。

原文標(biāo)題:FPGA圖像處理——老戲新說

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21781

    瀏覽量

    604913
  • 仿真
    +關(guān)注

    關(guān)注

    50

    文章

    4114

    瀏覽量

    133826

原文標(biāo)題:FPGA圖像處理——老戲新說

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AI模型部署邊緣設(shè)備的奇妙之旅:如何在邊緣端部署OpenCV

    圖像中的特征或者創(chuàng)建掩碼。 邊緣檢測(cè) Canny 邊緣檢測(cè) (cv2.Canny) 或 Sobel
    發(fā)表于 12-14 09:31

    友思特方案 精析“蟬翼”:FPGA圖像處理方案助力鋰電池高速產(chǎn)線檢測(cè)新升級(jí)

    為新能源鋰電行業(yè)賦能第二站:FPGA高精度圖像采集與處理解決方案! 薄如蟬翼的鋰電池薄膜材料在高速產(chǎn)線上生產(chǎn)而成,實(shí)時(shí)檢測(cè)并精準(zhǔn)分析其質(zhì)量,依托于友思特
    的頭像 發(fā)表于 12-04 15:56 ?219次閱讀
    友思特方案  精析“蟬翼”:<b class='flag-5'>FPGA</b><b class='flag-5'>圖像</b><b class='flag-5'>處理</b>方案助力鋰電池高速產(chǎn)線<b class='flag-5'>檢測(cè)</b>新升級(jí)

    FPGA 實(shí)時(shí)信號(hào)處理應(yīng)用 FPGA圖像處理中的優(yōu)勢(shì)

    優(yōu)勢(shì)之一是其并行處理能力。與傳統(tǒng)的CPU或GPU相比,FPGA可以同時(shí)執(zhí)行多個(gè)操作,這在圖像處理中尤為重要,因?yàn)?b class='flag-5'>圖像
    的頭像 發(fā)表于 12-02 10:01 ?785次閱讀

    FPGA圖像處理領(lǐng)域的優(yōu)勢(shì)有哪些?

    FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)在圖像處理領(lǐng)域具有顯著的優(yōu)勢(shì),這些優(yōu)勢(shì)主要體現(xiàn)在以下幾個(gè)方面: 一、高并行處理能力
    發(fā)表于 10-09 14:36

    基于 DSP5509 進(jìn)行數(shù)字圖像處理Sobel 算子邊緣檢測(cè)的硬件連接電路圖

    使用 FPGA 或?qū)S玫?b class='flag-5'>圖像處理芯片與 DSP5509 協(xié)同工作,提高邊緣檢測(cè)的速度。 并行處理
    發(fā)表于 09-25 15:25

    DSP國(guó)產(chǎn)教學(xué)實(shí)驗(yàn)箱_實(shí)驗(yàn)案例_操作教程:5-11 邊緣檢測(cè)

    搜索,可到達(dá)的點(diǎn)是邊緣,不可到達(dá)的點(diǎn)不是邊緣。 (5)利用滯后技術(shù)來跟蹤邊界。 程序流程設(shè)計(jì) 程序流程設(shè)計(jì)中首先要讀取工程目錄下的BMP圖像,接著進(jìn)行邊緣
    發(fā)表于 07-19 10:38

    圖像邊緣檢測(cè)系統(tǒng)的設(shè)計(jì)流程

    圖像邊緣檢測(cè)系統(tǒng)的設(shè)計(jì)流程是一個(gè)涉及多個(gè)步驟的復(fù)雜過程,它旨在從圖像中提取出重要的結(jié)構(gòu)信息,如邊界、輪廓等。這些邊緣信息對(duì)于
    的頭像 發(fā)表于 07-17 16:39 ?390次閱讀

    基于FPGA圖像采集與顯示系統(tǒng)設(shè)計(jì)

    源和固有的并行處理能力,在數(shù)字信號(hào)處理、硬件加速、汽車電子等領(lǐng)域得到了廣泛應(yīng)用。在圖像采集與顯示系統(tǒng)中,FPGA能夠?qū)崿F(xiàn)高速、并行的數(shù)據(jù)處理
    的頭像 發(fā)表于 07-17 10:58 ?2027次閱讀

    圖像識(shí)別算法都有哪些方法

    傳統(tǒng)方法和基于深度學(xué)習(xí)的方法。 傳統(tǒng)圖像識(shí)別算法 1.1 邊緣檢測(cè) 邊緣檢測(cè)圖像識(shí)別的基礎(chǔ),它
    的頭像 發(fā)表于 07-16 11:14 ?5873次閱讀

    opencv圖像識(shí)別有什么算法

    圖像識(shí)別算法: 邊緣檢測(cè)邊緣檢測(cè)圖像識(shí)別中的基本步驟之一,用于識(shí)別
    的頭像 發(fā)表于 07-16 10:40 ?1153次閱讀

    圖像處理中的卷積運(yùn)算

    卷積運(yùn)算是圖像處理中一種極其重要的操作,廣泛應(yīng)用于圖像濾波、邊緣檢測(cè)、特征提取等多個(gè)方面。它基于一個(gè)核(或稱為卷積核、濾波器)與
    的頭像 發(fā)表于 07-11 15:15 ?2589次閱讀

    圖像檢測(cè)與識(shí)別技術(shù)的關(guān)系

    檢測(cè)技術(shù)是指利用計(jì)算機(jī)視覺技術(shù),對(duì)圖像中的特定目標(biāo)進(jìn)行定位和識(shí)別的過程。它通常包括圖像預(yù)處理、特征提取、目標(biāo)檢測(cè)和后
    的頭像 發(fā)表于 07-03 14:43 ?700次閱讀

    FPGA設(shè)計(jì)經(jīng)驗(yàn)之圖像處理

    系列:基于 FPGA圖像邊緣檢測(cè)系統(tǒng)設(shè)計(jì)(sobel算法) FPGA設(shè)計(jì)中 Verilo
    發(fā)表于 06-12 16:26

    基于FPGA的實(shí)時(shí)邊緣檢測(cè)系統(tǒng)設(shè)計(jì),Sobel圖像邊緣檢測(cè)FPGA圖像處理

    的主要特征提取手段 。由于實(shí)時(shí)視頻圖像邊緣檢測(cè)需要處理的數(shù)據(jù)量非常大,所以采用一般的軟件方法實(shí)現(xiàn)起來處理速度慢,無法滿足實(shí)時(shí)性的要求。 隨
    發(fā)表于 05-24 07:45

    算法系列:基于 FPGA圖像邊緣檢測(cè)系統(tǒng)設(shè)計(jì)(sobel算法)

    今天給大俠帶來基于 FPGA圖像邊緣檢測(cè)設(shè)計(jì),話不多說,上貨。 設(shè)計(jì)流程如下:mif文件的制作→ 調(diào)用 ip 核生成rom以及仿真注意問題→ 灰度
    發(fā)表于 03-26 16:40
    主站蜘蛛池模板: 天天上天天干| 手机看片神马午夜| 免费看真人a一级毛片| 男人的天堂免费视频| 美女毛片免费看| 九色综合久久综合欧美97| 国产私密| 午夜网站在线观看| 男人天堂资源网| 222aaa天堂| 亚洲日本一区二区三区| 免费一区二区| 经典三级一区在线播放| 精品卡一卡二 卡四卡视频| 国产精品亚洲色图| 午夜精品久久久久| 狠狠干激情| 91三级在线| 综合婷婷丁香| 天堂伊人| 久久奈| 中文天堂网在线www| 人人天天爱天天做天天摸| 91精品福利久久久| 男男污肉高h坐便器调教| 亚洲a级毛片| 男人你懂的在线观看视频| 国产成人免费无庶挡视频| 手机看片福利视频| 视频在线高清完整免费观看| 乱说欲小说又粗又长| 天堂网免费| 好爽毛片一区二区三区四区 | 亚洲欧美视频在线播放| 亚洲图片综合区另类图片| 日本高清色视频在线观看免费| 国产三级视频在线播放| 天天干天天综合| 91大神精品长腿在线观看网站| 伊人99| 久久这里只精品热在线8|