c++ - 感兴趣区域的唯一性和身份

标签 c++ opencv

我目前正在使用 OpenCV 开发计算机视觉应用程序。该应用涉及目标识别和特征确定。通常,我会让一个目标进入可见区域并在几秒钟内慢慢穿过它。这应该让我从相机中获得超过 50-60 帧,我可以在其中找到目标。

我们已经成功地使用 SWT 和 OCR 实现了检测算法(目标都有字母数字标识符,这使得它们相对容易被识别)。我想要做的是使用每个目标的所有 50-60 次射击中尽可能多的数据。为此,我需要一些方法来识别图像 2 的特定 ROI 包含与图像 1 中的另一个 ROI 相同的目标。

我想征求以前可能遇到过此问题的任何人的一些建议。我如何在合理的误差范围内轻松/快速地识别 ROI #2 与 ROI#1 具有相同的目标?我的第一直觉是这样的:

  1. 检测第 1 帧中的目标。
  2. 计算第 1 帧中每个目标的某些独特特征。保存。
  3. 获取第 2 帧。
  4. 立即寻找与第 2 步中计算出的那些具有相同特征的 ROI。捕获这些并将它们发送到生产线进行进一步处理,跳过第 5 步。
  5. 检测第 2 帧中的新目标。
  6. 将目标传递给线程以计算形状、颜色、GPS 坐标等。
  7. 起泡沫,冲洗,重复。

我认为 SURF 或 SIFT 功能可能是实现此目的的一种方式,但我担心它们可能会因为失真或颜色褪色而难以将目标识别为在帧与帧之间相同。我不知道如何设置 SIFT/SURF 功能的阈值。

提前感谢您就此问题提供的任何信息。

最佳答案

您可以做的一件事是局部均衡亮度和可能的饱和度水平。如果您没有使用 YCrCb 或 HSV 等高级空间,我建议您尝试一下。

你能假设物体没有移动得太快吗?如果您在检测例程中提供先前的位置,则可以减小您正在查看的窗口的大小。运动的速度和方向也是如此。

我已经成功地使用区域的直方图组成和形状描述符来可靠地检测它,您可以使用它或将它添加到 SURF/SIFT 分类器中。

关于c++ - 感兴趣区域的唯一性和身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15828441/

相关文章:

C++动态 vector 创建

python - OpenCV:如何计算中心像素周围窗口的最小值?

c++ - cv::Mat 构造函数在哪里显式定义?

c++ - 破解编码面试,11.5,搜索

c++ - 这是在 MATLAB 中使用并行池的真正方法吗?

c++ - 在主函数中重命名 argc 和 argv 是否安全?

python - 在 openCV 中使用 approxPolyDP() 检测矩形不准确

c++ - OpenCV 3.0.0 MSER 二进制掩码

c++ - 无法使用 Boost.Bimap 解决 g++ 7.1 结构化绑定(bind)错误

c++ - bool 常量表达式中的冗余实例化