从 OpenCV 代码到 FPGA 代码的转换是否比 Matlab 代码更容易? [关闭]

2024-03-20

我想做一个关于图像处理的项目。我想知道如果我想在FPGA上实现这个项目,我应该在第一阶段选择Matlab还是OPEN CV哪个工具?是否可以将代码从 Open CV 直接转换为 FPGA,就像代码生成器可以直接从 Matlab 转换为 FPGA 一样?


首先 - 为什么要使用 FPGA?除非你有充分的理由,否则请避免它!

好的理由可能是这样的:

  • cost
  • power
  • size
  • 必须重复使用的现有硬件
  • 个人爱好
  • 这是一项需要 FPGA 的作业

糟糕的原因包括“图像处理……这一定意味着我需要 FPGA!”


思考FPGA

如果您想在 FPGA 上实现,您需要从一开始就考虑“FPGA”。与传统处理器相比,它们具有非常特殊的特性,这意味着许多“传统”算法很难在 FPGA 上有效实现。传统处理难以处理的其他算法实际上可以在 FPGA 上轻松完成。

一个经典(非图像)示例是 CRC 计算,它通常使用软件中的查找表来实现,但也可以是 FPGA 中的简单移位寄存器和异或门。

关于代码生成器......

Xilinx 曾经购买过一款产品(AccelDSP),它可以采用(非常精心制作的)Matlab 代码并生成 VHDL。效果并不好,被撤回了。

Matlab有HDL编码器 http://www.mathworks.com/products/hdl-coder/,它声称可以完成相同的工作,并且也可以绘制 Simulink 图。我很久以前评价过它 - 我不知道它现在有多好(尽管它贵得令人眼花缭乱!)。查看网页 ti 似乎仍然只支持 Matlab 函数(而不是用户定义的对象),这使得它无法启动任何在其中存储状态的内容(恕我直言),因为所有状态都必须存储在函数之外,这意味着您有有“进”和“出”struct与 AccelDSP 遇到的问题相同。

Xilinx System Generator 和 Altera 的 System Builder 都使用 Simulink 作为生成 FPGA 代码的前端。它们可能会非常成功,请注意,您不能只是扔掉任意复杂的 Simulink 模块并希望生成可综合的 FPGA。

同样,您必须从一开始就考虑 FPGA。

FPGA特性

无论何时使用比较词,我都在与“传统桌面处理器”进行比较

  • FPGA 的内存不足,但它们有很多小块,这意味着如果您有足够的小工作要做,它们的内部总带宽可能会很大。内存的延迟也非常低(单时钟周期),很像处理器的 L1 缓存
  • 选择(if..else就 FPGA 面积而言,类似功能)可能相当昂贵
  • 乘法是有限的资源,因此当处理器没有 MUL 指令时,使用“过去”的算法有时是值得的
  • 位宽度可以是任意的 - 无需使用 32 位元素来表示计算的 18 位结果。大多数时候,工具可以为您解决这个问题。

开发周期也不同。

  • 模拟的编译和运行速度相对较快。确保你做了很多这样的事情
  • 实际上,综合和布局布线(获得“比特流”的操作,您可以将其编程到 FPGA 芯片本身中)可能需要很长时间才能运行。我当前的编译(相对较小)只花了 30 分钟。您要尽可能避免这样做!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 OpenCV 代码到 FPGA 代码的转换是否比 Matlab 代码更容易? [关闭] 的相关文章

  • LockBits 性能关键代码

    我有一个方法需要尽可能快 它使用不安全的内存指针 这是我第一次尝试这种类型的编码 所以我知道它可能会更快
  • 如何使用 OpenCV 检测图像帧中的对象?

    我正在使用 Raspberry Pi 开发一个漫游器 它将清扫房间并捡起掉落在地上的物体 为了检测物体 我使用了在流动站操作开始时拍摄的参考图像 以及每 10 秒单击一次的图像 新图像 为了确定图像帧是否发生变化 我在参考图像和新图像之间进
  • 为什么这些双精度数的返回值为-1.#IND?

    I have double score cvMatchContourTrees CT1 CT2 CV CONTOUR TREES MATCH I1 0 0 cout lt
  • brew 链接 jpeg 问题

    我正在尝试安装opencv在 Mac OSX Lion 上 brew install opencv 我收到以下错误 以及其他一些类似的错误 Error The linking step did not complete successful
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • 如何以编程方式指定 MATLAB 编辑器键绑定

    我想将键盘键绑定设置为Windows 默认设置我想在启动时使用startup m因为我希望在大量系统上设置此设置 首选项对话框中的等效设置是 MATLAB gt Keyboard gt Shortcuts gt Active Setting
  • 是否有一个函数可以检查矩阵是否对角占优(行占优)

    矩阵是对角占优 http en wikipedia org wiki Diagonally dominant matrix 按行 如果对角线处的值在绝对意义上大于该行中所有其他绝对值的总和 对于列也是如此 只是相反 matlab中有没有函数
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • 来自 OpenCV 的外部参数

    我正在使用 OpenCV 来校准立体相机对 我拍摄了各种校准照片 并且使用 cv2 calibrateCamera 对内在参数进行了令人满意的拟合 然而 目前尚不清楚如何获取外部参数 该函数仅返回cameraMatrix 尽管它很有用 但实
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • python 正弦和余弦精度

    如何提高Python正弦和余弦精度 例如 我想使用以下代码 只需计算随机复向量 x 的 y cos acos x import numpy as np N 100000 x np zeros N 1j np zeros N for k in
  • 在加载“cv2”二进制扩展期间检测到递归

    我有一个小程序 在 pyinstaller 编译后返回 opencv 错误 但无需编译即可工作 我在 Windows 10 上使用 Python 3 8 10 Program 导入 pyautogui将 numpy 导入为 np导入CV2
  • 输入维度/分辨率会影响卷积神经网络的性能吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在构建一个图像分类器 其中有 66 个类和大约 50000 个图像 我的电脑内存为 12 GB 我的内存不足以训练图像 我的问题是
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 使用Python的工业视觉相机[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 MATLAB 中定义其他中缀运算符

    有没有办法在 MATLAB 中定义额外的中缀运算符 具体来说 我想定义两个中缀运算符 gt and lt gt 这些符号是理想的 但如果需要 它可以是单个字符 它调用函数implies and iff以同样的方式 calls and and
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 曲线/路径骨架二值图像处理

    我正在尝试开发一个可以处理图像骨架的路径 曲线的代码 我想要一个来自两点之间骨架的点向量 该代码在添加一些点后结束 我没有找到解决方案 include opencv2 highgui highgui hpp include opencv2
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运

随机推荐