我最近完成了一个基于视频的前景提取算法,但它每帧处理速度太慢。在OpenCV3.0中有一个基于混合高斯模型的算法,名为BackgroundSubtractorMOG2,我发现它每帧的处理速度几乎是我的15倍。我只是想知道它是由GPU上的OpenCL加速的吗?或者它只是在CPU上运行?p.s.我看过它的一些源代码,并注意到有OpenCL块,但我不确定,因为我是新鲜的。如果有人能帮我解决这个问题,我将非常感激!
如果你看这里的API页面,你会发现这一行:
函数实现了金字塔中Lucas-Kanade光流的稀疏迭代版本。看到[Bouguet00]。该函数与TBB库并行化。
TBB库是一个并行库,用于"编写充分利用多核性能的并行c++程序"——这意味着它一次使用多个CPU,这是一种更快的处理方式。这可以在像这样的行中看到(第566行):
parallel_for_(Range(0, image.rows),
MOG2Invoker(image, fgmask,
(GMM*)bgmodel.data,
(float*)(bgmodel.data + sizeof(GMM)*nmixtures*image.rows*image.cols),
bgmodelUsedModes.data, nmixtures, (float)learningRate,
(float)varThreshold,
backgroundRatio, varThresholdGen,
fVarInit, fVarMin, fVarMax, float(-learningRate*fCT), fTau,
bShadowDetection, nShadowDetection));