1. A computer-implemented method for matching objects, the method being executed by at least one processor, comprising the steps of: receiving at least two images wherein one of the at least two images has a first target object and a second of the at least two images has a second target object; extracting at least one first patch from the first target object and at least one second patch from the second target object; constructing a distance-based part encoding between each of the at least one first patch and the at least one second patch based upon a corresponding codebook of image parts including at least one of part type and pose; warping a viewpoint of one of the at least one first patch to a viewpoint of the at least one second patch; and applying a parts level similarity measure based on the view-invariant distance measure for each of the at least one first patch and the at least one second patch to determine whether the first target object and the second target object are the same or different objects.