色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何利用HLS功能創建圖像處理解決方案

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

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

介紹

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

HLS 的一個重要應用是圖像或信號處理,我們可能已經用 C 或 C++ 創建了一個高級模型,或者我們希望使用開源行業標準框架,例如 OpenCV。

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

所選器件可以是傳統的 FPGA,例如 Spartan Seven 或 Artix,或者也可以在異構 SoC 的可編程邏輯中實現,例如 Zynq 7000 或 Zynq MPSoC。

理論

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

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

pYYBAGJ-KOqACJBWAAD4_1Fy5qQ222.png

執行

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

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

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

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

而是有益的HLS視頻庫包括我們需要創建一個索貝爾IP核心,內容包括: -

HLS::CvtColor - 這將根據其配置在顏色和灰度之間轉換顏色方案。

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

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

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

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

界面

在可編程邏輯內部移動圖像數據的最佳方法是使用 AXI 流。

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

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

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

HLS::AXIvideo2Mat - 從 AXI 流轉換為用于 AXI 流輸入的 HLS::Mat 格式。

HLS::Mat2AXIvideo - 從 HLS::Mat 格式轉換為 AXI Stream 格式,用于 AXI Stream 輸出。

C 綜合和優化

與 Verilog 和 VHDL 設計不同,我們用來描述設計的高級語言是不定時的。這意味著當 HLS 工具將 C 轉換為 Verilog 或 VHDL 時,它必須經過多個階段才能創建輸出 RTL

調度 - 確定操作及其發生的順序。

綁定 - 將操作分配給設備內可用的邏輯資源。

控制邏輯提取 - 提取控制邏輯并創建控制結構,例如狀態機以控制模塊的行為。

poYBAGJ-KOWAdIcZAAHldQvVk88166.png

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

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

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

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

pYYBAGJ-KOCAZONsAADjRuUCV8s600.png

如果我們先執行一個 Sobel 操作,然后按順序執行另一個操作,我們將無法應用此優化。

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

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

軟件

了解所有這些之后,我們就可以編寫用于 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);

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

poYBAGJ-KNiABiViAAEuYFaNTnA851.png

當我們運行 C Simulation 時,我們可以看到測試輸入圖像的結果如下。

pYYBAGJ-KNSATO3xAAZsaFBX3lA293.png

有了 C 仿真和 Co 仿真結果,我們可以導出內核并將其添加到 Vivado 硬件設計中。

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

pYYBAGJ-KNCAGmToAAC0RrdireM982.png

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

poYBAGJ-KMyAawCjAAH39N95jVg212.png

實現核心

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

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

pYYBAGJ-KMiAVtQrAAHNnnE4Uyo817.png

有了這一切集成,您可以構建應用程序和目標到您選擇的開發板。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像處理
    +關注

    關注

    27

    文章

    1289

    瀏覽量

    56722
  • 邊緣檢測
    +關注

    關注

    0

    文章

    92

    瀏覽量

    18204
  • HLS
    HLS
    +關注

    關注

    1

    文章

    129

    瀏覽量

    24097
收藏 人收藏

    評論

    相關推薦

    模糊圖像處理解決方案

    造成圖像模糊的原因有很多,且不同原因導致的模糊圖像需要不同的方法來進行處理。##圖像復原
    發表于 06-11 10:24 ?1.2w次閱讀

    怎么在vivado HLS創建一個IP

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

    Vivado HLS實現OpenCV圖像處理的設計流程與分析

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

    Vivado HLS設計流的相關資料分享

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

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

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

    利用XILINX解決方案快速創建存儲器接口設計

    利用XILINX解決方案快速創建存儲器接口設計
    發表于 01-08 23:05 ?39次下載

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

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

    關于ZYNQ HLS圖像處理加速總結的分享

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

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

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

    新思科技Synphony HLS解決方案

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

    如何創建Vivado HLS項目

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

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

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

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

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

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

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

    使用HLS封裝的縮放IP來實現視頻圖像縮放功能

    這里向大家介紹使用HLS封裝的縮放IP來實現視頻圖像縮放功能。將HLS封裝的縮放IP加入到OV5640圖像傳輸系統,驗證
    的頭像 發表于 10-11 14:21 ?2160次閱讀
    主站蜘蛛池模板: 在线看片韩国免费人成视频| 成年女人免费播放影院| 就操成人网| 国产成人v视频在线观看| 在线看无码的免费网站| 无限资源网免费看| 欧美18在线| 免费毛片在线视频| 久久99视频免费| 国产精品久久久久影院嫩草| 99re热精品视频国产免费| 亚洲欧美日本中文子不卡| 四虎影院网红美女| 琪琪热热色原日韩在线| 毛片手机在线观看| 久久国产精品麻豆AV影视| 国产又黄又粗又爽又色的视频软件| 99视频在线免费| 99久久精品6在线播放| 诱人的秘书BD在线观看| 亚洲乱码中文字幕久久| 亚洲国产精品久久人人爱| 四虎影院2022| 亚洲AV久久久噜噜噜久久| 午夜在线播放免费人成无| 亚洲 欧美 清纯 校园 另类| 校花爽好大快深点h| 一二三四韩国免费观看| 天海翼精品久久中文字幕| 日夜啪啪一区二区三区| 日韩亚洲欧美中文高清| 台湾18成人影院| 亚洲国产成人私人影院| 伊人久久大线蕉香港三级| 在线a亚洲视频| music radio在线收听| 单亲妈妈3韩国电影免费观看| 国产精品久久久久久免费播放 | 色狠狠婷婷97| 亚洲精品久久久久中文字幕二区| 永久免费精品影视网站|