文章目录
if(kpR.octave<levelL-1 || kpR.octave>levelL+1)
在进行特征匹配时使用的循环。vCandidates
是一个包含匹配候选点索引的容器,iC
是当前循环迭代的索引。
首先,获取当前迭代的候选点索引 iR
,并通过 mvKeysRight[iR]
获取对应的右图特征点。
接下来的判断条件是 if(kpR.octave<levelL-1 || kpR.octave>levelL+1)
,其中 levelL
是左图特征点的尺度层级。
判断条件的意义是:如果右图特征点的尺度层级与左图特征点的尺度层级相差大于1,即右图特征点的尺度层级比左图特征点的尺度层级小于 levelL-1
或大于 levelL+1
,则跳过当前候选点,继续下一个迭代。
这个判断的目的是通过尺度层级的一致性来筛选匹配候选点,以提高匹配的准确性。只有尺度层级相差不超过1的候选点才会被保留,其他的候选点会被跳过。这样做是因为ORB特征是多尺度的,匹配时应该优先考虑相似尺度的特征点,以获得更好的匹配结果。