2

我在立体相机的左图像中有一个点(xl,yl)。我想确定这个相同的点在右图中的位置,比如说右图中的点(xr,yr)。我有使用opencv进行相机校准的所有旋转矩阵和平移矩阵。

4

1 回答 1

2

您可以通过简单的 2D 点匹配来做到这一点。我在 OpenFrameworks 中得到了类似的东西:

cv::Ptr<cv::DescriptorExtractor> ext = cv::DescriptorExtractor::create("ORB");

cv::Mat descriptors_1, descriptors_2;

//The images are cv::Mat and the Points are std::vector<cv::KeyPoint>> which I got from cv::FASTX()
ext->compute(_leftImage, _leftPoints, descriptors_1);
ext->compute(_rightImage, _rightPoints, descriptors_2);

cv::BFMatcher matcher;

std::vector<cv::DMatches> matches;
matcher.match(descriptors_1, descriptors_2, matches);

matches然后引用每个图像中的拟合点对。它仍然需要一些清理来消除异常值(所有正确的匹配应该彼此平行;)),但是通过一些工作,您应该能够将两个图像相互校正。

于 2017-04-14T13:15:37.217 回答