0

たとえば、GPU を使用して、リアルタイムの 50 fps フル HD ビデオからフレームの SURF 記述子を計算します。gpu::SURF_GPUしかし、遅く、フレームごとに計算することはできません。

ビデオ カメラは静止して固定されているため、次の最適化を使用できます。フレームの変更された領域でのみ記述子を計算します。バックグラウンド減算器を使用しgpu::MOG2_GPU、フォアグラウンド マスクを取得し、交差する場合にのみ SURF 記述子を再計算しmask & frameます。これははるかに高速です。

gpu::GpuMat frame, mask;

gpu::MOG2_GPU mog2GPU;
mog2GPU(frame, mask);

// do I need to do this?
/*
    gpu::GpuMat frame_src = frame.clone();
    int const dilation_size = 30;
    Mat element_dilate = getStructuringElement(MORPH_ELLIPSE, // MORPH_RECT, MORPH_CROSS, 
        Size(2 * dilation_size + 1, 2 * dilation_size + 1),
        Point(dilation_size, dilation_size))
    gpu::dilate(frame_src, frame, element_dilate);
*/

gpu::SURF_GPU surfGPU;
surfGPU(frame, mask, keypoints, descriptors);

それで十分ですか、それとも を使用してマスキングのゾーンを増やす必要がありgpu::dilate()ますか?

そして、これを行う必要がある場合、各 SURF 記述子を計算するために使用されるピクセル数は何ですか?つまり、 andgpu::dilate()として関数に渡す必要がある値は何ですか?kerneldilation_size

4

0 に答える 0