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

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

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

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

如何利用HLS功能創(chuàng)建圖像處理解決方案

科技觀察員 ? 來源:hackster.io ? 作者:hackster.io ? 2022-05-13 17:47 ? 次閱讀

本方案利用 HLS 功能創(chuàng)建圖像處理解決方案,在可編程邏輯中實現(xiàn)邊緣檢測 (Sobel)。

介紹

高級綜合 (HLS) 允許我們在開發(fā) FPGA 應(yīng)用程序時在更高的抽象級別上工作,如果是商業(yè)項目,有望節(jié)省時間并降低非經(jīng)常性成本。

HLS 的一個重要應(yīng)用是圖像或信號處理,我們可能已經(jīng)用 C 或 C++ 創(chuàng)建了一個高級模型,或者我們希望使用開源行業(yè)標(biāo)準(zhǔn)框架,例如 OpenCV。

在本項目中,我們將研究如何使用 HLS 構(gòu)建 Sobel 邊緣檢測 IP 核,然后將其包含在我們選擇的 Xilinx FPGA 中。

所選器件可以是傳統(tǒng)的 FPGA,例如 Spartan Seven 或 Artix,或者也可以在異構(gòu) SoC 的可編程邏輯中實現(xiàn),例如 Zynq 7000 或 Zynq MPSoC。

理論

在我們進入應(yīng)用程序之前,我應(yīng)該先簡單介紹一下 Sobel 算法工作原理。Sobel 算法通過識別圖像中的邊緣并強調(diào)它們以便可以輕松識別它們來發(fā)揮作用。通常這將創(chuàng)建一個灰度圖像,其中邊緣被識別為灰色/白色陰影。

Sobel 邊緣檢測的工作原理是檢測圖像在水平和垂直方向上的梯度變化。為此,將兩個卷積濾波器應(yīng)用于原始圖像,然后組合這些卷積濾波器的結(jié)果以確定梯度的大小。

pYYBAGJ-KOqACJBWAAD4_1Fy5qQ222.png

執(zhí)行

如果我們使用傳統(tǒng)的 VHDL / Verilog RTL 方法在 FPGA 中實現(xiàn)這一點,那么開發(fā)時間將不會很短。因為我們需要為卷積創(chuàng)建行緩沖區(qū),然后實現(xiàn)幅度計算。我們還需要創(chuàng)建一個測試平臺,以確保我們的代碼在進行實施之前按預(yù)期工作。

幸運的是,當(dāng)我們使用 HLS 時,我們真的可以跳過很多繁重的工作,讓 Vivado HLS 實現(xiàn)較低級別的 Verilog/VHDL RTL 實現(xiàn)。

為了在這個更高的抽象級別上工作,我們將使用 Vivado HLS 及其 HLS_OpenCV 和 HLS_Video 庫。

第一個庫 HLS_OpenCV 允許我們使用非常流行的 OpenCV 框架。而 HLS 視頻庫提供了許多可以加速為可編程邏輯的圖像處理功能。

而是有益的HLS視頻庫包括我們需要創(chuàng)建一個索貝爾IP核心,內(nèi)容包括: -

HLS::CvtColor - 這將根據(jù)其配置在顏色和灰度之間轉(zhuǎn)換顏色方案。

HLS::Gaussian - 這將對圖像執(zhí)行高斯模糊以減少圖像中存在的噪聲。

HLS::Sobel - 根據(jù)其配置在垂直或水平方向執(zhí)行 Sobel 卷積。我們將需要在我們的 IP 核中使用這兩個實現(xiàn)。

HLS::AddWeighted - 這允許我們使用來自垂直和水平 Sobel 算子的結(jié)果來執(zhí)行結(jié)果幅度計算。

這些不是我們將使用的所有 HLS 函數(shù),因為我們需要使用其他函數(shù)。我們需要包含這些附加功能,以便更輕松地使用 HLS 優(yōu)化和與 Vivado 設(shè)計的接口

界面

在可編程邏輯內(nèi)部移動圖像數(shù)據(jù)的最佳方法是使用 AXI 流。

這允許創(chuàng)建高性能圖像處理路徑,其中元素可以根據(jù)需要輕松添加或創(chuàng)建。

Vivado IP 庫中存在多個 IP 模塊,可實現(xiàn)視頻輸入和輸出與 AXI 流之間的轉(zhuǎn)換。以及其他圖像處理功能,例如混合器和色彩空間轉(zhuǎn)換器

因此,我們希望我們的 Sobel IP 核能夠接受 AXI Stream 輸入并以相同的 AXI Stream 格式生成其輸出。為此,我們使用以下函數(shù)允許在 AXI 流和 HLS 函數(shù)使用的 HLS::Mat 格式之間進行轉(zhuǎn)換。

HLS::AXIvideo2Mat - 從 AXI 流轉(zhuǎn)換為用于 AXI 流輸入的 HLS::Mat 格式。

HLS::Mat2AXIvideo - 從 HLS::Mat 格式轉(zhuǎn)換為 AXI Stream 格式,用于 AXI Stream 輸出。

C 綜合和優(yōu)化

與 Verilog 和 VHDL 設(shè)計不同,我們用來描述設(shè)計的高級語言是不定時的。這意味著當(dāng) HLS 工具將 C 轉(zhuǎn)換為 Verilog 或 VHDL 時,它必須經(jīng)過多個階段才能創(chuàng)建輸出 RTL

調(diào)度 - 確定操作及其發(fā)生的順序。

綁定 - 將操作分配給設(shè)備內(nèi)可用的邏輯資源。

控制邏輯提取 - 提取控制邏輯并創(chuàng)建控制結(jié)構(gòu),例如狀態(tài)機以控制模塊的行為。

poYBAGJ-KOWAdIcZAAHldQvVk88166.png

由于 HLS 工具在運行綜合時必須在性能和邏輯資源之間進行權(quán)衡,因此在實現(xiàn)過程中將遵循許多規(guī)則。這些可能會影響生成的 IP 核的性能,例如循環(huán)(HLS 編碼中的常見結(jié)構(gòu))保持滾動。

當(dāng)然,我們可能希望更改 HLS 工具在 C 綜合期間做出的決定以獲得更好的性能。我們可以在我們的 C 中使用 #pragmas 來做到這一點,我們可以使用幾個。

對于這個實現(xiàn),我們將使用 Dataflow pragma 來確保我們可以達到最高的幀速率。

為了能夠使用此編譯指示,我們需要確保 HLS 綜合工具并行執(zhí)行兩個 Sobel 操作。這將允許我們在 HLS C 綜合期間指定數(shù)據(jù)流優(yōu)化,從而優(yōu)化通過函數(shù)的數(shù)據(jù)流。實際上,數(shù)據(jù)流優(yōu)化是粗粒度流水線。

pYYBAGJ-KOCAZONsAADjRuUCV8s600.png

如果我們先執(zhí)行一個 Sobel 操作,然后按順序執(zhí)行另一個操作,我們將無法應(yīng)用此優(yōu)化。

因此,我們需要將高斯模糊的結(jié)果分成兩條平行路徑,然后在 AddWeighted 階段重新組合。為此,我們使用函數(shù)

HLS::Duplicate - 這將輸入圖像復(fù)制到兩個單獨的輸出圖像中,我們可以并行處理這些圖像。

軟件

了解所有這些之后,我們就可以編寫用于 Sobel IP 核的代碼

#include "cvt_colour.hpp"
void image_filter(AXI_STREAM& INPUT_STREAM, AXI_STREAM& OUTPUT_STREAM)//, int rows, int cols)
{
#pragma HLS INTERFACE axis port=INPUT_STREAM
#pragma HLS INTERFACE axis port=OUTPUT_STREAM
RGB_IMAGE img_0(MAX_HEIGHT, MAX_WIDTH);
GRAY_IMAGE img_1(MAX_HEIGHT, MAX_WIDTH);
GRAY_IMAGE img_2(MAX_HEIGHT, MAX_WIDTH);
GRAY_IMAGE img_2a(MAX_HEIGHT, MAX_WIDTH);
GRAY_IMAGE img_2b(MAX_HEIGHT, MAX_WIDTH);
GRAY_IMAGE img_3(MAX_HEIGHT, MAX_WIDTH);
GRAY_IMAGE img_4(MAX_HEIGHT, MAX_WIDTH);
GRAY_IMAGE img_5(MAX_HEIGHT, MAX_WIDTH);
RGB_IMAGE img_6(MAX_HEIGHT, MAX_WIDTH);
;
#pragma HLS dataflow
hls::AXIvideo2Mat(INPUT_STREAM, img_0);
hls::CvtColor(img_0, img_1);
hls::GaussianBlur<3,3>(img_1,img_2);
hls::Duplicate(img_2,img_2a,img_2b);
hls::Sobel<1,0,3>(img_2a, img_3);
hls::Sobel<0,1,3>(img_2b, img_4);
hls::AddWeighted(img_4,0.5,img_3,0.5,0.0,img_5);
hls::CvtColor(img_5, img_6);
hls::Mat2AXIvideo(img_6, OUTPUT_STREAM);
}
#include "hls_video.h"
#include
#define MAX_WIDTH 1280
#define MAX_HEIGHT 720
typedef hls::stream > AXI_STREAM;
typedef hls::Mat RGB_IMAGE;
typedef hls::Mat GRAY_IMAGE;
void image_filter(AXI_STREAM& INPUT_STREAM, AXI_STREAM& OUTPUT_STREAM);//int rows, int cols);

當(dāng)然,我們希望能夠同時運行 C Simulation 和 Co Simulation,因此我們需要一個可以用來測試算法的測試臺。

poYBAGJ-KNiABiViAAEuYFaNTnA851.png

當(dāng)我們運行 C Simulation 時,我們可以看到測試輸入圖像的結(jié)果如下。

pYYBAGJ-KNSATO3xAAZsaFBX3lA293.png

有了 C 仿真和 Co 仿真結(jié)果,我們可以導(dǎo)出內(nèi)核并將其添加到 Vivado 硬件設(shè)計中。

但是,在我們執(zhí)行此操作之前,您可能需要檢查分析、在 Vivado HLS 中查看并確認兩個 Sobel 函數(shù)并行運行。

pYYBAGJ-KNCAGmToAAC0RrdireM982.png

我們可以使用 Vivado HLS 中的導(dǎo)出 RTL 選項導(dǎo)出 IP 核,如果我們希望我們可以進一步配置 IP 核參數(shù)

poYBAGJ-KMyAawCjAAH39N95jVg212.png

實現(xiàn)核心

導(dǎo)出核心后,您將在 《project》/solutionX/imp 目錄下找到一個 zip 文件。該目錄包含將新創(chuàng)建的 Sobel IP 核添加到 Vivado 設(shè)計所需的所有必要信息

該文件可以添加到我們的 Vivado IP 存儲庫中,然后包含在 Vivado 框圖中

pYYBAGJ-KMiAVtQrAAHNnnE4Uyo817.png

有了這一切集成,您可以構(gòu)建應(yīng)用程序和目標(biāo)到您選擇的開發(fā)板。

對于下面的演示視頻,我使用 Zybo Z7 和 HDMI 輸入和 HDMI 輸出將視頻應(yīng)用于 Sobel IP 核并顯示結(jié)果。

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

    關(guān)注

    27

    文章

    1292

    瀏覽量

    56744
  • 邊緣檢測
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    18211
  • HLS
    HLS
    +關(guān)注

    關(guān)注

    1

    文章

    129

    瀏覽量

    24113
收藏 人收藏

    評論

    相關(guān)推薦

    模糊圖像處理解決方案

    造成圖像模糊的原因有很多,且不同原因?qū)е碌哪:?b class='flag-5'>圖像需要不同的方法來進行處理。##圖像復(fù)原
    發(fā)表于 06-11 10:24 ?1.2w次閱讀

    怎么在vivado HLS創(chuàng)建一個IP

    你好我正在嘗試在vivado HLS創(chuàng)建一個IP,然后在vivado中使用它每次我運行Export RTL我收到了這個警告警告:[Common 17-204]您的XILINX環(huán)境變量未定義。您將
    發(fā)表于 04-03 08:48

    Vivado HLS實現(xiàn)OpenCV圖像處理的設(shè)計流程與分析

    應(yīng)用的極好方法,很好解決了在單一處理器上實現(xiàn)視頻處理性能低功耗高的限制,Zynq高性能可編程邏輯和嵌入式ARM內(nèi)核,是一款功耗優(yōu)化的集成式解決方案。1、OpenCV中圖像IplImag
    發(fā)表于 07-08 08:30

    Vivado HLS設(shè)計流的相關(guān)資料分享

    多個HLS解決方案2.實驗內(nèi)容實驗中文件中包含一個矩陣乘法器的實現(xiàn),實現(xiàn)兩個矩陣inA和inB相乘得出結(jié)果,并且提供了一個包含了計算結(jié)果的testbench文件來與所得結(jié)果進行對比驗證。...
    發(fā)表于 11-11 07:09

    利用API 增強VB 的圖像處理功能

    本文介紹了應(yīng)用API 函數(shù)增強Visual Basic 的圖像處理功能的方法。用API 直接對顯示緩存操作的函數(shù)進行圖像處理,擴展了VB 的
    發(fā)表于 08-28 09:42 ?13次下載

    利用XILINX解決方案快速創(chuàng)建存儲器接口設(shè)計

    利用XILINX解決方案快速創(chuàng)建存儲器接口設(shè)計
    發(fā)表于 01-08 23:05 ?39次下載

    Altera的視頻和圖像處理解決方案

    Altera的視頻和圖像處理解決方案圖1. 解決方案領(lǐng)域 Altera及其合作伙伴的多種開發(fā)套件、IP和參考設(shè)計為視頻和圖像處理
    發(fā)表于 06-08 07:51 ?52次下載

    關(guān)于ZYNQ HLS圖像處理加速總結(jié)的分享

    HLS工具 以個人的理解,xilinx將HLS(高層次綜合)定位于更方便的將復(fù)雜算法轉(zhuǎn)化為硬件語言,通過添加某些配置條件HLS工具可以把可并行化的C/C++的代碼轉(zhuǎn)化為vhdl或ver
    發(fā)表于 10-12 17:34 ?2421次閱讀
    關(guān)于ZYNQ <b class='flag-5'>HLS</b><b class='flag-5'>圖像</b><b class='flag-5'>處理</b>加速總結(jié)的分享

    OmniTek 超清HDTV圖像處理方案演示

    OmniTek 總裁 Mike Hodson 將向您演示他們的超清 HDTV 圖像處理解決方案
    的頭像 發(fā)表于 06-01 14:53 ?5153次閱讀
    OmniTek 超清HDTV<b class='flag-5'>圖像</b><b class='flag-5'>處理</b><b class='flag-5'>方案</b>演示

    新思科技Synphony HLS解決方案

    新思科技公司高層級綜合法和系統(tǒng)級別營銷總監(jiān)Chris Eddington介紹說,Synphony HLS解決方案可顯著地改變ASIC和FPGA在系統(tǒng)驗證和嵌入式軟件開發(fā)中的應(yīng)用方式。
    發(fā)表于 07-19 15:40 ?1665次閱讀

    如何創(chuàng)建Vivado HLS項目

    了解如何使用GUI界面創(chuàng)建Vivado HLS項目,編譯和執(zhí)行C,C ++或SystemC算法,將C設(shè)計合成到RTL實現(xiàn),查看報告并了解輸出文件。
    的頭像 發(fā)表于 11-20 06:09 ?3947次閱讀

    恩智浦處理器的電源管理解決方案

    恩智浦處理器的電源管理解決方案
    發(fā)表于 05-12 18:14 ?2次下載
    恩智浦<b class='flag-5'>處理</b>器的電源管<b class='flag-5'>理解決方案</b>

    ADI公司的寬帶射頻信號處理解決方案

    ADI公司的寬帶射頻信號處理解決方案
    發(fā)表于 05-24 14:06 ?2次下載
    ADI公司的寬帶射頻信號<b class='flag-5'>處理解決方案</b>

    如何創(chuàng)建一個支持HDMI輸入到輸出的圖像處理平臺

    本文將介紹如何創(chuàng)建一個支持HDMI輸入到輸出的圖像處理平臺。這可以用作基于HLS圖像處理演示的
    的頭像 發(fā)表于 03-31 10:22 ?2976次閱讀
    如何<b class='flag-5'>創(chuàng)建</b>一個支持HDMI輸入到輸出的<b class='flag-5'>圖像</b><b class='flag-5'>處理</b>平臺

    使用HLS封裝的縮放IP來實現(xiàn)視頻圖像縮放功能

    這里向大家介紹使用HLS封裝的縮放IP來實現(xiàn)視頻圖像縮放功能。將HLS封裝的縮放IP加入到OV5640圖像傳輸系統(tǒng),驗證
    的頭像 發(fā)表于 10-11 14:21 ?2172次閱讀
    主站蜘蛛池模板: 国产全部理论片线观看| 国产精选经典三级小泽玛利亚| a级男女性高爱潮高清试| 免费一级特黄视频| www.人人干| 欧美亚洲在线| 性色小视频| 四虎亚洲精品| 女人张开腿让男人桶免费网站| 九九美剧| 夜夜操狠狠操| 精品久久免费观看| 69日本人xxxxxxxx18| 在线久综合色手机在线播放| 免费在线播放毛片| 免费在线观看黄| 一 级 黄 中国色 片| 国产成人一区二区三中文| 2018国产大陆天天弄| 最近2018年中文字幕大全一| 骚淫| 五月天婷婷综合网| 加勒比一区二区三区| 久久久久99精品成人片三人毛片| 九九视频这里只有精品| 男男gay高h文| 日韩在线三级视频| 成人国内精品久久久久影院| 久久狠狠躁免费观看| 亚洲国产成人久久精品图片| 久久久久久噜噜噜久久久精品| 国产亚洲美女精品久久久2020 | 噜噜嘿| 天堂网www中文天堂在线| 欧美激情 在线| 五月婷婷六月爱| 午夜手机福利| 一个人看的www片免费高清视频| 成人狠狠色综合| 美女扒开腿让男人桶尿口| 国产欧美日韩综合精品无毒|