我目前正在使用OpenCV内置的基于补丁的直方图反向投影(cv::calcBackProjectPatch()
)来识别图像中目标材料的区域。图像分辨率为 640 x 480,窗口大小为 10 x 10,处理单个图像需要 ~1200 毫秒。虽然结果很好,但对于实时应用程序(处理时间不应超过 ~100 毫秒)来说,这太慢了。
我已经尝试减小窗口大小并从CV_COMP_CORREL
切换到CV_COMP_INTERSECT
以加快处理速度,但没有看到任何明显的速度。这可以通过OpenCV文档(强调我的)来解释:
测量每个新图像,然后 转换为图像图像数组 超过选定的投资回报率。直方图是 取自该区域的图像图像 被带有锚点的"补丁"覆盖 中心如下图所示。 直方图使用 参数norm_factor,以便它可以 与历史进行比较。计算出的 直方图与模型进行比较 直方图;希斯特使用函数 cvCompareHist() 与比较 方法=
method
)。结果 输出放置在该位置 对应于中的补丁锚点 概率图像 DST。这 在补丁时重复该过程 滑过投资回报率。迭代直方图 通过减去尾随像素进行更新 由补丁覆盖并添加新的 覆盖直方图的像素可以 节省很多操作,虽然它是 尚未实施。
这给我留下了几个问题:
- 是否有其他库支持迭代直方图更新?
- 使用迭代更新的加速效果有多大?
- 有没有其他技术可以加快这种类型的操作?
如OpenCV积分直方图中所述,肯定会提高速度。
请查看以下链接中的示例实现http://smsoftdev-solutions.blogspot.com/2009/08/integral-histogram-for-fast-calculation.html