OpenVX嵌入式图像处理(一)硬件平台及软件介绍
图像处理这几年可谓是大红大紫了一番,尤其是OpenCV的出现让很多之前只有研究者才能使用的算法变成了小白装个库调用个函数就可以解决的问题。但是实时性一直以来都是一个非常头疼的问题,尤其是在嵌入式平台上进行图像处理的门槛一直以来都没有降低。今天在这挖个坑,想和大家一起把图像处理搬到嵌入式平台上去,让图像处理从花拳绣腿的演示实验,到真正真枪实剑。
硬件选择 图像处理方面ARM,DSP,FPGA,GPU四者可谓是各有各的优点。ARM的最大优点是系统封装,一旦ARM加上了系统那程序写起来会避免接触诸多底层的麻烦。在2014年之前,大多数高端开发板还停留在DSP+ARM的架构上,程序写起来可谓是难上加难。而单纯ARM CPU的嵌入式平台即便是可以跑较为完整的Linux系统,运算速度和桌面平台也差一个数量级。 2014年英伟达推出了Jetson 系列的带GPU的嵌入式超级计算机在硬件上打破这一难题。入门级Jetson tk1 以及高配版Jeston tx1 基本上可以完全满足用户对于嵌入式图像处理的硬件需求。本系列将使用Jetson tk1作为嵌入式图像处理的硬件平台使用 Jeston tk1 全名Nvidia Jeston Tegra K,他拥有Cortex-A15架构的32位四核心CPU,拥有192核心的开普勒GPU, 2GB内存,并有USB 3.0、HDMI 1.4、SATA、千兆以太网(Realtek RTL8111GS)、音频(Realtek ALC5639)、mini PCI-E。总的来说,除了USB接口数目,其他的都已经绰绰有余,配得上“超级计算机的名号”。不过关于硬件方面,有几个藏得很深的地方要拿出来说明一下:
板子一共有四个串口,一个RS232串口和三个TTL电平,英伟达官方文档中不建议使用UART 2,因为他适用于开发板的调试功能;
RS232串口存在只能发不能收的问题,目前尚未解决;
USB控制器不支持Kinect V2。
软件介绍 Jeston tk1 自带有Tegra系统,其实就是一个加入部分优化的ARM Ubuntu。Tegra保留了几乎所有Ubuntu 14.04 LST的功能,如果你是一个Linux程序员那上手起来一定会非常快。此外,Nivida 还提供了Tegra2Opencv的工具包,使用它可以利用NVCC编译Opencv,这比使用ARM编译的Opencv速度要快很多。值得一提的是,使用NVCC编译的Opencv可以利用Opencv中的GPU模块,虽然Gpu模块现在还是一个效率存疑的模块,但是就我的测试结果来看,使用GpuMat 和
Gpu::initUndistortRectifyMap效率cv::initUndistortRectifyMap的5倍。 此外,Jeston tk1 还有英伟达自家的VisionWorks 图像处理库,这个基于OpenVX的开源(虽然我至今没有找到他的CPP文件)图像处理库提供基于硬件加速的视觉处理算法,就我自己的测试结果来看,像光流检测,立体匹配等VsionWorks里有的模块,效率基本上都是Opencv的10倍以上,这一点会在以后的文章中详细说明。
本系列说明 本系列将采用Jeston Tk1 作为硬件实现平台,算法方面会兼用Opencv和VisionWorks两个库,对比他们效率,有什么问题希望大家可以与我一起交流~请选中你要保存的内容,粘贴到此文本框
因篇幅问题不能全部显示,请点此查看更多更全内容