2012-04-17 158 views
1

我打算执行4幅图像的全景图。为此,我打算处理图像1,图像2,图像3,然后处理3和4,并获取单应性图像,然后拼接图像。调用Cuda内核中的Opencv函数

现在,获取每个图像中的SIFT特征可以并行化。因此,在GPU上使用CUDA时,我打算在将图像传递给内核后,在每个内核中调用Surffeatureextractor和描述符。

现在,我想知道是否有可能在cuda内核中编写opencv函数?例如,如果我的内核是

extract_sift(image, *keypoints, *descriptor) 
    { 
    //I want to call sift descriptor from an external opencv lib here } 

请让我知道如何做到这一点,或指示我的某些链接,帮助我做到这一点。

+1

OpenCV现在有一个gpu库,如果你想试试看。 http://opencv.willowgarage.com/wiki/OpenCV_GPU。但是你仍然无法从内核中调用它。 – 2012-04-17 14:41:02

回答

2

你问的是不可能的。如果您了解OpenCL体系结构,那很明显:为什么:内核运行在不同的设备上,具有不同的内存,体系结构等,并且所有与它们的通信都是通过缓冲区进行的。如果您还在OpenCL代码中声明了相同的结构,则可以将描述符作为结构(更精确地说,指向该结构的指针)传递给内核。