정상적인 ORB 애플리케이션이 있습니다. 내 동성의 정확성을 찾는 방법이 없으므로 성냥의 정확성을 찾으려고 노력하고 있습니다. 올바른 방법은 무엇입니까? 내 코드에서 분명히 특이 값을 제거한 후에는 raw_matches에 있습니다. 나는 비율 테스트를 한 후에 좋은 경기를 얻고 그 경기의 정확성을 찾기를 원합니다.일치 항목의 등록 정확도 얻기
코드 : (오류가 두 이미지에 존재한다는 가정 아래) 호모 그래피의 품질에 대한
detector = cv2.ORB_create(FEATURESCOUNT)
kp1, desc1 = detector.detectAndCompute(img1, None)
kp2, desc2 = detector.detectAndCompute(img2, None)
flann_params= dict(algorithm = FLANN_INDEX_LSH, table_number = 6, key_size = 12, bmulti_probe_level = 1)
matcher = cv2.FlannBasedMatcher(flann_params, {})
raw_matches = matcher.knnMatch(desc1, trainDescriptors = desc2, k = 2)
ratio = 0.9
mkp1, mkp2 = [], []
for m in raw_matches:
if len(m) == 2 and m[0].distance < m[1].distance * ratio:
m = m[0]
mkp1.append(kp1[m.queryIdx])
mkp2.append(kp2[m.trainIdx])
print max(distmax)
distall = sum(i for i in distmax)
print distall/len(distmax)
p1 = np.float32([kp.pt for kp in mkp1])
p2 = np.float32([kp.pt for kp in mkp2])
comps =[]
res = []
kp_pairs = zip(mkp1, mkp2)
if len(p1) >= 4:
H, status = cv2.findHomography(p1, p2, cv2.RANSAC, 5.0)
comps = getComponents(H)
print (comps)
print('%d/%d inliers/matched' % (np.sum(status), len(status)))
else:
H, status = None, None
print('%d matches found, not enough for homography estimation' % len(p1))