2012-04-17 18 views
1

4枚のパノラマ画像を作成したいと考えています。このために、画像1と2、2と3、そして3と4を処理し、ホモグラフィを取得してから画像を合成したいと考えています。Cuda Kernel内でOpencv関数を呼び出す

ここで、各画像のSIFT機能を並列化することができます。だから、GPUでCUDAを使って、カーネルに画像を渡した後、各カーネルでSurffeatureextractorとディスクリプタを呼び出すつもりです。

ここで、opencv関数をcudaカーネル内に書くことが可能かどうかを知りたいですか?たとえば、私のカーネルが

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。しかし、カーネルの内部から呼び出すことはできません。 –

答えて

2

あなたが求めるものは不可能です。 OpenCLアーキテクチャを理解しているなら、カーネルは異なるデバイス上で動作し、異なるメモリやアーキテクチャなどを持ち、それらとのすべての通信はバッファを経由するという理由は明らかです。同じ構造体をOpenCLコードで宣言していれば、記述子を構造体(より正確にはその構造体へのポインタ)としてカーネルに渡すことができます。

関連する問題