M.N*_*m G 8 matlab opencv image-processing fpga
我想做图像处理项目.我想知道我是否想在FPGA上实现这个项目,我应该在第一阶段Matlab或OPEN CV中选择哪个工具?是否可以直接将代码从Open CV转换为FPGA,代码生成器可以直接从Matlab到FPGA使用?
Mar*_*son 14
首先 - 你为什么要使用FPGA?除非你有充分的理由,否则请避免它!
好的理由可能是这样的:
不好的理由包括"图像处理......这必然意味着我需要一个FPGA!"
如果你想在FPGA上实现,你需要从一开始就考虑"FPGA".与传统处理器相比,它们具有非常特殊的特性,这意味着很多"常规"算法很难在FPGA上高效实现.传统处理难以实现的其他算法实际上可以在FPGA上完成.
一个经典(非图像)示例是CRC计算,它通常使用软件中的查找表来实现,但可以是FPGA中的普通移位寄存器和XOR门.
以前有Xilinx购买的产品(AccelDSP)可以采用(非常精心制作)Matlab代码并生成VHDL.它表现不佳并被撤回.
Matlab有HDL编码器,它声称可以做同样的工作,也可以做Simulink图.很久以前我对它进行了评估 - 我不知道它现在有多好(虽然它的价格非常昂贵!).查看网页ti似乎仍然只支持Matlab函数(不是用户定义的对象),这使得它对于存储状态(IMHO)的任何东西都不起作用,因为所有状态必须存储在函数外部,这意味着你有struct与你的所有注册表中的"in"和"out" .与AccelDSP相同的问题.
Xilinx System Generator和Altera的System Builder都使用Simulink作为生成FPGA代码的前端.它们可能非常成功,请注意,您不能只丢弃任意复杂的Simulink模块,并希望生成可合成的FPGA.
同样,你必须从一开始就考虑FPGA.
无论在哪里使用比较词,我都在与"传统桌面处理器"进行比较
if..else就FPGA面积而言,选择(如功能)可能非常昂贵开发周期也不同.
Xilinx有一个名为Vivado HLS的工具.
还有一个appnote(XAPP1167)描述了使用该工具在Zynq平台上定位OpenCV.
我没有这方面的经验,但在最近的OpenCV会议上了解到了这一点.以下是appnote的开头 -
本应用笔记介绍了如何使用OpenCV库在Zynq器件上开发计算机视觉应用.OpenCV可用于设计过程中的许多不同点,从算法原型设计到系统内执行.OpenCV代码还可以使用随Vivado HLS提供的视频库迁移到可综合的C++代码.当集成到Zynq设计中时,合成块可实现高分辨率和帧速率的计算机视觉算法.
Altera支持OpenCL,这是一个并行化ANSI C的广泛规范.有一个OpenCV模块可用于OpenCL.我再次没有这方面的经验(还有)).
此链接有助于了解在主板和硬件加速器(如FPGA开发板)的上下文中使用OpenCL.
因此,如果您想要使用Altera路由,那么您必须使用上面提到的OpenCV模块将OpenCV函数包装在OpenCL中,然后使用Altera的SDK来定位fpga.走这条路线的好处是,如果您发现FPGA对您的应用程序来说不是那么好,那么您可以将OpenCL + OpenCV定位到其他平台.