Loading autocnet/matcher/matcher.py +70 −2 Changes for autocnet/matcher/matcher.py: 70 added lines, 2 removed lines. Original line number Diff line number Diff line import cv2 import numpy as np import pandas as pd from autocnet.graph.network import CandidateGraph import numpy as np from skimage.feature import match_template from scipy.misc import imresize FLANN_INDEX_KDTREE = 1 # Algorithm to set centers, DEFAULT_FLANN_PARAMETERS = dict(algorithm=FLANN_INDEX_KDTREE, trees=3) def pattern_match(template, image, upsampling=10, func=match_template): """ Parameters ---------- template : ndarray The input search template used to 'query' the destination image image : ndarray The image or sub-image to be searched upsampling : int The multiplier to upsample the template and image. func : object The function to be used to perform the template based matching Returns ------- x : float The x offset y : float The y offset strength : float The strength of teh correlation in the range [-1, 1]. """ if upsampling < 1: raise ValueError u_template = imresize(template, (template.shape[0] * upsampling, template.shape[1] * upsampling), interp='bicubic') u_image = imresize(image, (image.shape[0] * upsampling, image.shape[1] * upsampling), interp='bicubic') # Find the the upper left origin of the template in the image match = func(u_image, u_template) y, x = np.unravel_index(np.argmax(match), match.shape) # Resample the match back to the native image resolution x /= upsampling y /= upsampling # Offset from the UL origin to the image center x += (template.shape[0] / 2) y += (template.shape[0] / 2) # Compute the offset to adjust the image match point location ideal_center = image.shape[0] / 2 x = ideal_center - x y = ideal_center - y # Find the maximum correlation strength = np.max(match) return x, y, strength class FlannMatcher(object): """ A wrapper to the OpenCV Flann based matcher class that adds Loading Loading
autocnet/matcher/matcher.py +70 −2 Changes for autocnet/matcher/matcher.py: 70 added lines, 2 removed lines. Original line number Diff line number Diff line import cv2 import numpy as np import pandas as pd from autocnet.graph.network import CandidateGraph import numpy as np from skimage.feature import match_template from scipy.misc import imresize FLANN_INDEX_KDTREE = 1 # Algorithm to set centers, DEFAULT_FLANN_PARAMETERS = dict(algorithm=FLANN_INDEX_KDTREE, trees=3) def pattern_match(template, image, upsampling=10, func=match_template): """ Parameters ---------- template : ndarray The input search template used to 'query' the destination image image : ndarray The image or sub-image to be searched upsampling : int The multiplier to upsample the template and image. func : object The function to be used to perform the template based matching Returns ------- x : float The x offset y : float The y offset strength : float The strength of teh correlation in the range [-1, 1]. """ if upsampling < 1: raise ValueError u_template = imresize(template, (template.shape[0] * upsampling, template.shape[1] * upsampling), interp='bicubic') u_image = imresize(image, (image.shape[0] * upsampling, image.shape[1] * upsampling), interp='bicubic') # Find the the upper left origin of the template in the image match = func(u_image, u_template) y, x = np.unravel_index(np.argmax(match), match.shape) # Resample the match back to the native image resolution x /= upsampling y /= upsampling # Offset from the UL origin to the image center x += (template.shape[0] / 2) y += (template.shape[0] / 2) # Compute the offset to adjust the image match point location ideal_center = image.shape[0] / 2 x = ideal_center - x y = ideal_center - y # Find the maximum correlation strength = np.max(match) return x, y, strength class FlannMatcher(object): """ A wrapper to the OpenCV Flann based matcher class that adds Loading