91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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)灰度的大?。?/p>

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)注

    1660

    文章

    22408

    瀏覽量

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

    關(guān)注

    54

    文章

    4482

    瀏覽量

    138251

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    FPGA 信號(hào)處理板卡設(shè)計(jì)原理圖:618-基于FMC+的XCVU3P高性能 PCIe 載板

    汽車駕駛員輔助, FPGA 信號(hào)處理, XCVU3P板卡, 雷達(dá)圖像處理, 衛(wèi)星通信系統(tǒng), 基帶通信接收
    的頭像 發(fā)表于 01-30 10:27 ?245次閱讀
    <b class='flag-5'>FPGA</b> 信號(hào)<b class='flag-5'>處理</b>板卡設(shè)計(jì)原理圖:618-基于FMC+的XCVU3P高性能 PCIe 載板

    基于FPGA的膚色檢測(cè)方案簡(jiǎn)介

    的白色區(qū)域擴(kuò)大,從而抵消腐蝕操作對(duì)圖像帶來的變化。通過腐蝕和膨脹,可以在幾乎不改變圖像的前提下消除干擾,提高膚色檢測(cè)準(zhǔn)確度。其效果如下所示: 在FPGA中,實(shí)現(xiàn)腐蝕和膨脹操作最主要
    發(fā)表于 10-28 07:07

    工業(yè)視覺網(wǎng)關(guān):RK3576賦能多路檢測(cè)邊緣AI

    IPC+獨(dú)顯的組合。 二、方案核心:多路檢測(cè) + 編解碼 + 邊緣AI + MES對(duì)接多路并發(fā)采集RK3576 提供 3×4-lane MIPI-CSI,配合視頻轉(zhuǎn)換模塊可并發(fā)接入 12路
    發(fā)表于 10-16 17:56

    光纖圖像處理卡設(shè)計(jì)原理圖:520-基于ZU15EG 適配AWR2243的雷達(dá)驗(yàn)證底板 XCZU15EG架構(gòu)高速信號(hào)處理

    高速信號(hào)處理, FPGA光纖, 光纖圖像處理, XCZU15EG架構(gòu)
    的頭像 發(fā)表于 08-28 10:39 ?626次閱讀
    光纖<b class='flag-5'>圖像</b><b class='flag-5'>處理</b>卡設(shè)計(jì)原理圖:520-基于ZU15EG 適配AWR2243的雷達(dá)驗(yàn)證底板 XCZU15EG架構(gòu)高速信號(hào)<b class='flag-5'>處理</b>板

    友思特方案 | FPGA 加持,友思特圖像采集卡高速預(yù)處理助力視覺系統(tǒng)運(yùn)行提速增效

    圖像預(yù)處理圖像處理關(guān)鍵中間環(huán)節(jié),通過優(yōu)化傳感器到主機(jī)的數(shù)據(jù)傳輸處理為后續(xù)減負(fù)。其算法依托硬件執(zhí)行,搭載?
    的頭像 發(fā)表于 08-20 09:18 ?978次閱讀
    友思特方案 | <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>圖像</b>采集卡高速預(yù)<b class='flag-5'>處理</b>助力視覺系統(tǒng)運(yùn)行提速增效

    FPGA 加持,友思特圖像采集卡高速預(yù)處理助力視覺系統(tǒng)運(yùn)行提速增效

    圖像預(yù)處理圖像處理關(guān)鍵環(huán)節(jié),可優(yōu)化數(shù)據(jù)傳輸、減輕主機(jī)負(fù)擔(dān),其算法可在FPGA等硬件上執(zhí)行。友思特FPG
    的頭像 發(fā)表于 08-13 17:41 ?1115次閱讀
    <b class='flag-5'>FPGA</b> 加持,友思特<b class='flag-5'>圖像</b>采集卡高速預(yù)<b class='flag-5'>處理</b>助力視覺系統(tǒng)運(yùn)行提速增效

    AI 邊緣計(jì)算網(wǎng)關(guān):開啟智能新時(shí)代的鑰匙?—龍興物聯(lián)

    智能化決策的關(guān)鍵。卷積神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別方面表現(xiàn)卓越,在智能工廠產(chǎn)品質(zhì)量檢測(cè)中,能快速準(zhǔn)確識(shí)別產(chǎn)品缺陷;循環(huán)神經(jīng)網(wǎng)絡(luò)擅長(zhǎng)處理時(shí)間序列數(shù)據(jù),可對(duì)設(shè)備故障進(jìn)行精準(zhǔn)預(yù)測(cè)。 在通信技術(shù)與協(xié)議支持上,AI
    發(fā)表于 08-09 16:40

    【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】人臉及物體識(shí)別、圖像邊緣檢測(cè)

    一、引言 賽昉科技提供了許多參考性文檔,其中不乏使用昉·星光 2測(cè)試在AI圖像處理的應(yīng)用場(chǎng)景。上期咱分享了二維碼檢測(cè)與解碼效果,只要攝像頭采集圖像夠清晰,掃描二維碼與解析效率還是挺好的
    發(fā)表于 08-07 00:49

    邊緣智能網(wǎng)關(guān)在水務(wù)行業(yè)中的應(yīng)用—龍興物聯(lián)

    、重金屬等),數(shù)據(jù)通過邊緣網(wǎng)關(guān)實(shí)時(shí)處理。 優(yōu)勢(shì):? 秒級(jí)異常報(bào)警:? 邊緣AI模型實(shí)時(shí)分析水質(zhì)數(shù)據(jù),異常立即觸發(fā)本地報(bào)警并聯(lián)動(dòng)關(guān)閉閥門,遠(yuǎn)快于云端處理。 降低傳輸成本:? 僅上傳異常數(shù)
    發(fā)表于 08-02 18:28

    邊緣AI盒子技術(shù)解析:ASIC/FPGA/GPU芯片及邊緣-云端協(xié)同與自適應(yīng)推理

    ? 電子發(fā)燒友網(wǎng)綜合報(bào)道 邊緣AI盒子是一種集成了高性能芯片、AI算法和數(shù)據(jù)處理能力的硬件設(shè)備,部署在數(shù)據(jù)源的邊緣側(cè),如工廠、商場(chǎng)、交通路口等,能在本地進(jìn)行數(shù)據(jù)采集、預(yù)處理、分析和決策
    的頭像 發(fā)表于 07-13 08:25 ?4550次閱讀

    【嘉楠堪智K230開發(fā)板試用體驗(yàn)】K230機(jī)器視覺相關(guān)功能體驗(yàn)

    畫圖 機(jī)器學(xué)習(xí)模型在通過攝像頭獲取圖像后,經(jīng)過處理輸入后,在輸出環(huán)節(jié)通常還需要進(jìn)行后處理,例如圖像檢測(cè)應(yīng)用中,目標(biāo)位置的框選等。 在K23
    發(fā)表于 07-08 17:25

    邊緣AI的優(yōu)勢(shì)和技術(shù)基石

    在萬物皆可AI(人工智能)的今天,市場(chǎng)上幾乎每家企業(yè)都在宣稱自己的業(yè)務(wù)中有了AI成分。因此,將AI接入極靠近終端客戶的網(wǎng)絡(luò)邊緣也就沒什么懸念了。這里的邊緣人工智能(即Edge AI,或邊緣AI)主要是指將人工智能系統(tǒng)(如預(yù)測(cè)分析
    的頭像 發(fā)表于 06-12 10:14 ?1464次閱讀
    <b class='flag-5'>邊緣</b>AI的優(yōu)勢(shì)和技術(shù)基石

    基于LockAI視覺識(shí)別模塊:C++輪廓檢測(cè)

    本文檔展示了如何使用 OpenCV 進(jìn)行圖像處理和特征檢測(cè),包括邊緣檢測(cè)、直線檢測(cè)、圓
    發(fā)表于 05-22 10:05

    基于LockAI視覺識(shí)別模塊:C++輪廓檢測(cè)

    本文檔展示了如何使用OpenCV進(jìn)行圖像處理和特征檢測(cè),包括邊緣檢測(cè)、直線檢測(cè)、圓
    的頭像 發(fā)表于 05-22 09:31 ?680次閱讀
    基于LockAI視覺識(shí)別模塊:C++輪廓<b class='flag-5'>檢測(cè)</b>

    FPGA新品】正點(diǎn)原子L22開發(fā)板來了!采用紫光的Logos系列FPGA,適合工業(yè)控制、圖像處理、高速通信等領(lǐng)域!

    FPGA新品】正點(diǎn)原子L22開發(fā)板來了!采用紫光的Logos系列FPGA,適合工業(yè)控制、圖像處理、高速通信等領(lǐng)域! ATK-L22開發(fā)板采用紫光的Logos系列
    發(fā)表于 04-21 17:28