i'm trying calculate degree of similarity between 2 images gives me 0 every time.
this code:
public class templatematching{ static void analyze(mat image, matofkeypoint keypoints, mat descriptors){ detector.detect(image, keypoints); extractor.compute(image, keypoints, descriptors); } static featuredetector detector= featuredetector.create(featuredetector.orb); static descriptorextractor extractor = descriptorextractor.create(descriptorextractor.brief); final static descriptormatcher matcher = descriptormatcher.create(descriptormatcher.bruteforce_hamming); static void ana(mat image, matofkeypoint keypoints, mat descriptors){ detector.detect(image, keypoints); extractor.compute(image, keypoints, descriptors); } static matofdmatch filtermatchesbydistance(matofdmatch matches){ list<dmatch> matches_original = matches.tolist(); list<dmatch> matches_filtered = new arraylist<dmatch>(); int dist_limit = 30; // check matches distance , if passes add list of filtered matches log.d("distfilter", "org size:" + matches_original.size() + ""); (int = 0; < matches_original.size(); i++) { dmatch d = matches_original.get(i); if (math.abs(d.distance) <= dist_limit) { matches_filtered.add(d); } } log.d("distfilter", "fil size:" + matches_filtered.size() + ""); matofdmatch mat = new matofdmatch(); mat.fromlist(matches_filtered); return mat; } public int comparer(mat frame,mat test) { // info store analysis stats int distance=0; matofkeypoint keypoints_o = new matofkeypoint(); matofkeypoint keypoints_t = new matofkeypoint(); mat descriptors_o = new mat(); mat descriptors_t = new mat(); // detect key points , compute descriptors inputframe ana(frame, keypoints_o, descriptors_o); ana(test, keypoints_t, descriptors_t); // compute matches matofdmatch matches = new matofdmatch(); matcher.match(descriptors_o, descriptors_t, matches); // filter matches distance matofdmatch filtered = filtermatchesbydistance(matches); // if count of matches ok, apply homography check distance = (int) filtered.size().height; return (distance); }
the distance 0 every time. if give same image, gives me 0 distance.