【问题标题】:SURF and Matching with Undistorted Image OpenCV C++SURF 和匹配未失真图像 OpenCV C++
【发布时间】:2022-01-09 01:13:44
【问题描述】:

我正在使用 ROS Melodic 开发 OpenCV 4。在undistort() 之后,SURF 检测到图像具有黑色背景。我怎样才能解决这个问题?

【问题讨论】:

  • 您可以尝试在不失真之前使用 copyMakeBorder 添加边框(复制或镜像),但您可能必须更改主点(相机矩阵的最后一列)以适应更大的图像尺寸和裁剪未失真的图像。另一种方法可能是删除所有离原始图像边界太近(甚至在边界之外)的关键点。您可以通过不扭曲与当前图像大小相同的纯白色图像来创建蒙版。
  • 谢谢!可以写代码吗?

标签: c++ opencv


【解决方案1】:

感谢 Micka 的评论,我找到了解决方案。我在低比率测试期间过滤了特征:

//-- Filter matches using the Lowe's ratio test
//Default ratio_thresh: 0.7f; 
vector<DMatch> matches;
size_t i = 0;
bool lowe_condition = false;
bool black_background_condition = false;

//Filter matches in black background
for (i; i < knn_matches.size(); i++)
{
    lowe_condition = (knn_matches[i][0].distance < ratio_thresh * knn_matches[i][1].distance);
    black_background_condition = ((keypoints1[i].pt.x >= width_low ) && (keypoints1[i].pt.x <= width_high)) && ((keypoints1[i].pt.y >= height_low ) && (keypoints1[i].pt.y <= height_high));

    if (lowe_condition && black_background_condition)
    {
        matches.push_back(knn_matches[i][0]);
    }
}

【讨论】:

    猜你喜欢
    • 2012-12-31
    • 2016-03-21
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 2011-09-04
    • 2012-02-12
    相关资源
    最近更新 更多