Skip to content

The Behavior of the cv2.ORB algorithm changes from version 4.1.2.30 to 4.2.0.32 #452

Open
@christofhapp

Description

@christofhapp

Expected behaviour

I use the ORB image registration algorithm and it worked until 4.1.2.30. Same solution on same data!

Actual behaviour

From Version 4.1.2.32 to newest (4.5.1.48) it has a different (wrong) solution on the same data AND it needs about 3 times more time.

Steps to reproduce

def alignImages(im, imRef):
    MAX_FEATURES = 1000
    GOOD_MATCH_PERCENT = 0.5

    # Detect ORB features and compute descriptors.
    orb = cv2.ORB_create(MAX_FEATURES, scaleFactor=2, WTA_K=4, scoreType=cv2.ORB_HARRIS_SCORE, patchSize=61)

    keypoints1, descriptors1 = orb.detectAndCompute(im, None)
    keypoints2, descriptors2 = orb.detectAndCompute(imRef, None)
    #print('after kp2: ', time.time() - t)

    print('len keypoints:', len(keypoints1), ' ',len(keypoints2))

    # Match features.
    matcher = cv2.DescriptorMatcher_create(cv2.DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMING)
    matches = matcher.match(descriptors1, descriptors2, None)

    #print('after matcher: ', time.time() - t)

    # Sort matches by score
    matches.sort(key=lambda x: x.distance, reverse=False)

    # Remove not so good matches
    numGoodMatches = int(len(matches) * GOOD_MATCH_PERCENT)
    matches = matches[:numGoodMatches]

    # Extract location of good matches
    points1 = np.zeros((len(matches), 2), dtype=np.float32)
    points2 = np.zeros((len(matches), 2), dtype=np.float32)

    for i, match in enumerate(matches):
        points1[i, :] = keypoints1[match.queryIdx].pt
        points2[i, :] = keypoints2[match.trainIdx].pt

    # Find homography
    h, mask = cv2.findHomography(points1, points2, cv2.RANSAC)
    return h

  • operating system: WIN 10 64-bit
Issue submission checklist

sorry, i don't know if it is a opencv-python issue or a opencv issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions