我正在尝试计算两个极线立体图像中相应关键点的差异。 我知道如何获取关键点,描述符然后计算DMatch,但后来我使用这个简单的操作来获得差异,我不确定它是否正常:
float disparity = keypointsLeft[matches[i].queryIdx].pt.x - keypointsRight[matches[i].trainIdx].pt.x;
(匹配定义为:vector <DMatch> matches
然后计算)
为什么我不确定? OpenCV文档2.4.12说:
1) DescriptorExtractor :: compute
void DescriptorExtractor::compute(const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors) const
关键点 - 输入关键点的集合。无法计算描述符的关键点将被删除,其余的可以重新排序。有时可以添加新的关键点,例如:SIFT复制具有多个主导方向的关键点(对于每个方向)。
2) DMatch
匹配关键点描述符的类:查询描述符索引,列车描述符索引,列车图像索引和描述符之间的距离。
问题是:描述符索引是否与其对应的关键点索引相同,当我们读取描述符时,向量不包含每个检测到的关键点的数据?
我会亲自检查一下,但我不知道怎么做...也许有人也对这个问题感到疑惑。 我的应用程序正在运行,看起来很好,但这并不意味着它没问题......