मैं ओपनसीवी लाइब्रेरी का उपयोग करके दो छवियों की तुलना करने की कोशिश कर रहा हूं (निर्धारित करें कि वे समान हैं या नहीं)। मैंने जावा रैपर को कॉन्फ़िगर किया और कई ट्यूटोरियल (ज्यादातर सी/सी ++ में) पाया कि मैं जावा में फिर से लिखने की कोशिश कर रहा हूं। मैं फीचर डिटेक्शन दृष्टिकोण का उपयोग कर रहा हूं।जावा में ओपनसीवी के साथ दो छवियों की तुलना
समस्या यह है कि मेरे पास वर्तमान में एल्गोरिदम का कोई उचित परिणाम नहीं है (यह दावा करता है कि दो समान छवियों में कुछ भी सामान्य नहीं है और अन्य दो छवियों के बीच मिलान मिलते हैं जो पूरी तरह अलग हैं)। क्या कोई सुझाव दे सकता है कि मैं कुछ उचित परिणामों के उत्पादन के लिए ओपनसीवी मैचर का उपयोग कैसे करूँ?
इस छवि तुलना
private static void compareImages(String path1, String path2) {
System.out.println(path1 + "-" + path2);
FeatureDetector detector = FeatureDetector.create(FeatureDetector.ORB);
DescriptorExtractor descriptor = DescriptorExtractor.create(DescriptorExtractor.ORB);
DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
// first image
Mat img1 = Imgcodecs.imread(path1, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat descriptors1 = new Mat();
MatOfKeyPoint keypoints1 = new MatOfKeyPoint();
detector.detect(img1, keypoints1);
descriptor.compute(img1, keypoints1, descriptors1);
// second image
Mat img2 = Imgcodecs.imread(path2, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
Mat descriptors2 = new Mat();
MatOfKeyPoint keypoints2 = new MatOfKeyPoint();
detector.detect(img2, keypoints2);
descriptor.compute(img2, keypoints2, descriptors2);
// match these two keypoints sets
MatOfDMatch matches = new MatOfDMatch();
matcher.match(descriptors1, descriptors2, matches);
for (DMatch m : matches.toArray()) {
// how to use these values to detect the similarity? They seem to be way off
// all of these values are in range 50-80 which seems wrong to me
System.out.println(m.distance);
}
}
दुर्भाग्य से, सर्फ और झारना की तरह एल्गोरिदम नहीं उपलब्ध जावा आवरण में तो मैं ओर्ब उपयोग कर रहा हूँ कर रहे हैं के लिए अपने कोड है। मुझे कंप्यूटर दृष्टि के साथ कोई अनुभव नहीं है, मैं बस कुछ उचित परिणाम देने के लिए इस सरल तुलना एल्गोरिदम काम को प्राप्त करने की कोशिश कर रहा हूं। मुझे किसी भी मदद के लिए खुशी होगी!
संपादित करें: मेरा उपयोग-केस विभिन्न कोणों से ली गई छवियों के विरुद्ध इस एल्गोरिदम को चला रहा है। मैंने बेहतर कोड स्वरूपित करने के लिए अपना कोड अपडेट किया।
नमूना चित्रों की तुलना करने के लिए:
[उपयोगी हो सकता है] (http://stackoverflow.com/questions/15544158/error-matching-with-orb-in- एंड्रॉइड) – GPPK
लिंक में एल्गोरिदम बिल्कुल वैसा ही लगता है जो मेरे पास है ... अभी भी बहुत खराब परिणाम उत्पन्न कर रहा है। मैं सिर्फ दो छवियों को लोड करना चाहता हूं और उनकी समानता – Smajl
को इंगित करने वाले किसी प्रकार का मूल्य उत्पन्न करना चाहता हूं: मैंने 'सीवी :: स्टिचर' कक्षा के साथ दो छवियों को सिलाई करने की कोशिश की जो आंतरिक रूप से 'xfeatures2d :: SURF' का उपयोग करता है और stitcing विफल हो गया है। मुझे लगता है कि इसका मतलब है कि एसयूआरएफ – sturkmen