发布时间:2026/8/7 17:43:02
Vitis HLS 学习笔记--变量存储(DDR中的图像数据:生成、存储、调取 + Filter2D函数) 目录1. 简介2. 图像数据2.1 变量理解2.2 生成图像(随机数据)2.3 调取(传递)图像数据2.4 Filter2D函数3. 总结1. 简介通过 HLS 中提供的函数 Filter2D了解在硬件加速中图像数据在 DDR 中的存储模式从而理解的生成、调取方法方便快速测试和验证。1基本概念HWC 和 CHW高度(Height)、宽度(Width)、颜色通道(Channel)HWC图片为 RGB 256×256其在 HWC 格式下的表示为 [256, 256, 3]图像数据首先按照图像的高度和宽度排列对于图像中的任意一个像素点其 RGB 三个颜色通道的值是连续存储的。这种存储方式比较直观。CHW图片为 RGB 256×256在CHW格式下的表示为[3, 256, 256]。数据首先按颜色通道分布对于同一颜色通道内的数据则按照图像的高度和宽度顺序排列。对于图像中的任意一个像素点其RGB三个颜色通道的值在内存中是分开、不连续存储的。这种方式在某些图像处理和深度学习框架中比较常见它能提高某些类型的计算效率。2. 图像数据2.1 变量理解unsigned stride ceil(width/64.0)*64; // width 1080, stride 1088 unsigned nbytes (stride*height); // 图像的一个通道在内存中的大小1Stridestride 表示图像数据中一行像素的实际占用字节数。由于内存对齐的要求或为了提高访问效率图像的实际行宽度stride可能会比基于像素宽度直接计算的值更大。在这个例子中width 是 1080 像素通过 ceil(width / 64.0) * 64 计算得到 stride 为 1088 字节。这是因为内存对齐到 64 字节的倍数。2nbytesnbytes 表示图像的一个通道在内存中的总大小。它是 stride 和 height 的乘积。在这个例子中如果 height 是 720 像素那么 nbytes 就是 1088 * 720 字节。2.2 生成图像(随机数据)为图像的每个颜色通道分配内存空间然后初始化这些内存空间。目的初始化分配的内存空间。rand()为 y_src、u_src 和 v_src 分配随机值模拟图像数据。0将 y_dst、u_dst 和 v_dst 初始化为 0准备存储处理后的图像数据。//每个通道分别申请内存空间CHW存储模式 unsigned char *y_src (unsigned char *)malloc(nbytes); unsigned char *u_src (unsigned char *)malloc(nbytes); unsigned char *v_src (unsigned char *)malloc(nbytes); unsigned char *y_dst (unsigned char *)malloc(nbytes); unsigned char *u_dst (unsigned char *)malloc(nbytes); unsigned char *v_dst (unsigned char *)malloc(nbytes); for (int i0; inbytes; i) { y_src[i], u_src[i], v_src[i] rand(), rand(), rand(); y_dst[i], u_dst[i], v_dst[i] 0, 0, 0; }2.3 调取(传递)图像数据功能对源图像数据应用滤波器并将结果存储在目标图像数据中。float factor filterFactors[filterType]; short bias filterBiases[filterType];actor 和 bias从预定义的滤波器参数数组中获取当前滤波器类型的缩放因子和偏置值。这些参数用于滤波器计算。#pragma omp parallel for num_threads(3) for (int n0; nnumRuns; n) { // Compute reference results Filter2D(filterCoeffs[filterType], factor, bias, width, height, stride, y_src, y_dst); Filter2D(filterCoeffs[filterType], factor, bias, width, height, stride, u_src, u_dst); Filter2D(filterCoeffs[filterType], factor, bias, width, height, stride, v_src, v_dst); }OpenMP 并行化使用 OpenMP 指令 #pragma omp parallel for 并行执行循环指定使用 3 个线程。numRuns表示要执行的滤波操作的次数。Filter2D 函数对每个颜色通道Y、U、V分别应用二维滤波器。这段代码通过并行化处理提高了对图像数据的滤波效率。每个颜色通道Y、U、V分别应用滤波器并行执行可以显著减少处理时间。2.4 Filter2D函数Filter2D 函数的主要功能是对图像应用二维滤波器。Filter2D(…,… …) { for(int y0; yheight; y) { for(int x0; xwidth; x) { // Apply 2D filter to the pixel window int sum 0; for(int row0; row FILTER_V_SIZE; row) { for(int col0; col FILTER_H_SIZE; col) { unsigned char pixel; int xoffset (xcol-(FILTER_H_SIZE/2)); int yoffset (yrow-(FILTER_V_SIZE/2)); // Deal with boundary conditions : clamp pixels to 0 when outside of image if ( (xoffset0) || (xoffsetwidth) || (yoffset0) || (yoffsetheight) ) { pixel 0; } else { pixel src[yoffset*stridexoffset]; } sum pixel*coeffs[row][col]; } } unsigned char outpix MIN(MAX((int(factor * sum)bias), 0), 255); //归一化饱和处理 dst[y*stridex] outpix;}}解释 offsetxoffset 和 yoffset 用于计算当前滤波器元素对应的图像像素位置。xoffset (x col - (FILTER_H_SIZE / 2)) 和 yoffset (y row - (FILTER_V_SIZE / 2)) 确保滤波器中心对准当前像素点 (x, y)。边界处理检查 xoffset 和 yoffset 是否超出图像边界。如果超出边界将 pixel 设为 0否则从源图像 src 中获取对应像素值。3. 总结本文介绍了在硬件加速中使用 HLS 提供的 Filter2D 函数处理图像数据的过程。HWC 和 CHW 两种图像数据存储格式及其应用场景。图像数据在内存中的存储方式包括 stride 和 nbytes 的计算方法。展示生成随机图像数据并使用 OpenMP 并行化处理对图像数据应用滤波器。简单分析了 Filter2D 函数的实现细节。

相关新闻

2026/8/7 17:43:02

音频处理全流程指南:从降噪、均衡到母带处理的标准化工作流

在实际音乐制作、视频剪辑和内容创作领域,音频处理是一个基础但至关重要的环节。无论是为原创音乐添加效果,还是为视频内容制作背景音轨,亦或是处理网络投稿的音频素材,掌握一套清晰、可复现的音频处理工作流,都能极大…

2026/8/7 17:38:01

Scroll Reverser:终极解决macOS滚动方向混乱的完整指南

Scroll Reverser:终极解决macOS滚动方向混乱的完整指南 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 你是否曾在MacBook触控板和鼠标之间切换时感到困惑&#xff1…

2026/8/7 17:38:01

ESP32C6 WiFi6智能语音助手:xiaozhi-esp32完整配置指南

ESP32C6 WiFi6智能语音助手:xiaozhi-esp32完整配置指南 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 还在为传统WiFi模块的功耗和性能瓶颈而烦恼&…

2026/8/7 19:38:15

wxappUnpacker分包功能详解:主包与子包解析的完整流程

wxappUnpacker分包功能详解:主包与子包解析的完整流程 【免费下载链接】wxappUnpacker 基于node反编译小程序 已经配置完成 项目地址: https://gitcode.com/gh_mirrors/wxap/wxappUnpacker wxappUnpacker是一款基于Node.js开发的小程序反编译工具&#xff0c…

2026/8/7 19:38:15

从审计到强制:AaronLocker策略部署的完整工作流详解

从审计到强制:AaronLocker策略部署的完整工作流详解 【免费下载链接】AaronLocker Robust and practical application control for Windows 项目地址: https://gitcode.com/gh_mirrors/aa/AaronLocker AaronLocker是一款功能强大的Windows应用控制工具&#…

2026/8/7 19:38:14

shadcn-tiptap源码解析:探索扩展与工具栏实现原理

shadcn-tiptap源码解析:探索扩展与工具栏实现原理 【免费下载链接】shadcn-tiptap Sets of custom extensions & toolbars for tiptap editor. Install with shadcn/cli. 项目地址: https://gitcode.com/gh_mirrors/sh/shadcn-tiptap shadcn-tiptap是一个…

2026/8/7 19:33:14

为什么LyricsX是macOS最佳歌词应用?5大核心功能深度解析

为什么LyricsX是macOS最佳歌词应用?5大核心功能深度解析 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/lyr/LyricsX LyricsX是一款专为macOS打造的终极歌词应用,它能自动同步…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/7 0:01:55

CAD图库管理:从文件归档到设计资产管理的效率革命

你肯定遇到过这种情况:打开一个老项目,想找某个特定的图块——比如一个标准的门、一个特定的设备符号,或者一个公司logo。你记得它就在某个DWG文件里,或者曾经从某个同事那里拷来过。于是,你开始在一堆命名混乱的文件夹…

2026/8/7 0:01:55

5分钟掌握Wand-Enhancer:2026年终极WeMod专业版免费解锁指南

5分钟掌握Wand-Enhancer:2026年终极WeMod专业版免费解锁指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand-Enhancer是一款功能强…

2026/8/7 0:01:55

“Quality Control(质量控制)”在软件工程中通常指通过一系列活动确保软件产品符合预定的质量标准和用户需求

“Quality Control(质量控制)”在软件工程中通常指通过一系列活动确保软件产品符合预定的质量标准和用户需求。而“软件测试”是质量控制的关键手段之一,属于QC范畴下的具体实践,其目标是发现缺陷、验证功能正确性、评估软件质量属…

2026/8/7 9:44:18

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/7 19:03:32

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/6 20:45:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…