为实时图像处理提供建议

我真的需要一些帮助和建议,因为我是新的实时图像处理。

我试图为一个系统实现一个摄像机获得1000fps的算法,并且我需要获取所有图像中每个像素的值,并对N个图像中的像素[i] [j]的演化进行不同的计算,用于图像中的所有像素。 我有(unsigned char * ptr)我想将它们传送到GPU并开始使用CUDA实现算法并将数据返回给CPU。 但我不确定什么是实时处理的最佳选择。 我的系统:CPU Intel Xeon x5660 2.8Ghz(2个处理器)GPU NVIDIA Quadro 5000问题是,我想确保在获得1000fps时将其传递给GPU进行处理,我如何确保不会丢失来自抓取器的下一秒的任何数据? 我需要在c ++中实现多线程吗? 并在OpenCV / OpenCL / CUDA中进行parralel编程? 如果您有任何想法或建议,请告诉我。 我真的需要一些实时图像处理建议的专家。 谢谢


如您所知,OpenCV在GPU中也使用CUDA框架实现了它的一些功能。

您可以编写自己的CUDA代码/函数来对数据进行操作,并将其转换为OpenCV格式,而不会出现任何问题。 我演示了如何在cuda灰度上执行此操作。 我想这个例子回答了你的大部分问题。

请注意, OpenCV 2.3.1使用CUDA 4.0 ,而OpenCV 2.4仅适用于CUDA 4.1

关于这个声明:

我想确保在获得1000fps的同时将它们传递给GPU进行处理

最有可能的是,您无法像处理相机一样快速处理相框。 如果你不想丢弃任何帧,你可以忘记实时 (我假设你没有使用令人难以置信的小图像(10x15))。

如果您确实需要使用1000 FPS,则必须实施缓冲机制来存储来自设备的帧。 这就是我们开始讨论多线程系统实现的地方:应用程序的主线程将负责从摄像头获取帧并将它们存储在缓冲区中, 第二个线程将从缓冲区中读取并执行在帧上处理。

有关如何实现缓冲机制的信息,请检查:

如何实现cv :: Mat对象(OpenCV)的循环缓冲区?

线程安全实现循环缓冲区

C + OpenCV:带循环缓冲区的IplImage

链接地址: http://www.djcxy.com/p/25387.html

上一篇: Advice for real time image processing

下一篇: Easiest way to test for existence of cuda