【发布时间】:2022-01-09 01:13:44
【问题描述】:
【问题讨论】:
-
您可以尝试在不失真之前使用 copyMakeBorder 添加边框(复制或镜像),但您可能必须更改主点(相机矩阵的最后一列)以适应更大的图像尺寸和裁剪未失真的图像。另一种方法可能是删除所有离原始图像边界太近(甚至在边界之外)的关键点。您可以通过不扭曲与当前图像大小相同的纯白色图像来创建蒙版。
-
谢谢!可以写代码吗?
【问题讨论】:
感谢 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]);
}
}
【讨论】: