SIFT तुलना
कई छवियों के SIFT डिस्क्रिप्टर की तुलना करें।
v2
कॉन्फ़िगर किए जा सकने वाले matcher एल्गोरिद्म (FLANN या brute force) का उपयोग करके दो छवियों या उनके SIFT डिस्क्रिप्टरों की तुलना करें, छवियाँ दिए जाने पर स्वचालित रूप से SIFT फीचर्स की गणना करें, Lowe के ratio test फ़िल्टरिंग को लागू करें, और वैकल्पिक रूप से image matching, similarity detection, duplicate detection, तथा feature-based image comparison workflows के लिए कीपॉइंट्स और मैचों के visualizations तैयार करें.
यह ब्लॉक कैसे काम करता है
यह ब्लॉक मिलान खोजकर और अच्छे मिलानों की संख्या गिनकर दो छवियों या उनके SIFT डिस्क्रिप्टरों की तुलना करता है ताकि यह निर्धारित किया जा सके कि वे मेल खाते हैं या नहीं। ब्लॉक:
दो इनपुट (input_1 और input_2) प्राप्त करता है, जो या तो छवियाँ हो सकती हैं या पूर्व-गणना किए गए SIFT डिस्क्रिप्टर हो सकते हैं
प्रत्येक इनपुट को उसके प्रकार के आधार पर संसाधित करता है:
यदि इनपुट एक छवि है: OpenCV के SIFT डिटेक्टर का उपयोग करके स्वचालित रूप से SIFT कीपॉइंट्स और डिस्क्रिप्टरों की गणना करता है
छवि को ग्रेस्केल में बदलता है
कीपॉइंट्स का पता लगाता है और 128-आयामी SIFT डिस्क्रिप्टरों की गणना करता है
यदि visualize=True हो, तो वैकल्पिक रूप से कीपॉइंट विज़ुअलाइज़ेशन बनाता है
कीपॉइंट्स को आउटपुट के लिए डिक्शनरी प्रारूप में बदलता है
यदि इनपुट डिस्क्रिप्टर हैं: प्रदान किए गए डिस्क्रिप्टरों का सीधे उपयोग करता है (SIFT गणना को छोड़ देता है)
सत्यापित करता है कि दोनों डिस्क्रिप्टर ऐरे में कम से कम 2 डिस्क्रिप्टर हों (ratio test फ़िल्टरिंग के लिए आवश्यक)
matcher पैरामीटर के आधार पर matcher एल्गोरिद्म चुनता है:
FlannBasedMatcher (डिफ़ॉल्ट): बड़े डिस्क्रिप्टर सेट के लिए तेज़, कुशल अनुमानित निकटतम पड़ोसी खोज हेतु FLANN का उपयोग करता है
BFMatcher: बड़े डिस्क्रिप्टर सेट के लिए धीमा लेकिन सटीक मिलान के लिए L2 norm के साथ brute force matching का उपयोग करता है
input_1 में प्रत्येक डिस्क्रिप्टर के लिए 2 सबसे निकटतम डिस्क्रिप्टर मिलानों को खोजने हेतु k-nearest neighbor matching (k=2) करता है:
descriptors_1 में प्रत्येक डिस्क्रिप्टर के लिए, descriptors_2 में 2 सबसे समान डिस्क्रिप्टर खोजता है
समानता मापने के लिए डिस्क्रिप्टर स्थान में Euclidean distance (L2 norm) का उपयोग करता है
ऐसे मिलान लौटाता है जिनके distance मान दर्शाते हैं कि डिस्क्रिप्टर कितने समान हैं
Lowe के ratio test का उपयोग करके अच्छे मिलानों को फ़िल्टर करता है:
प्रत्येक मैच के लिए, सर्वश्रेष्ठ मैच की दूरी (m.distance) की तुलना दूसरे-सर्वश्रेष्ठ मैच की दूरी (n.distance) से करता है
केवल वे मैच रखता है जहाँ m.distance < ratio_threshold * n.distance
यह ratio test उन अस्पष्ट मिलानों को फ़िल्टर करता है जहाँ कई डिस्क्रिप्टर लगभग समान रूप से निकट होते हैं
कम ratio_threshold मान (जैसे 0.6) अधिक स्पष्ट मिलानों की मांग करते हैं (कड़ी फ़िल्टरिंग)
उच्च ratio_threshold मान (जैसे 0.8) अधिक मिलानों की अनुमति देते हैं (कम सख्त फ़िल्टरिंग)
ratio test फ़िल्टरिंग के बाद अच्छे मिलानों की संख्या गिनता है
good_matches_count की तुलना good_matches_threshold से करके तय करता है कि छवियाँ मेल खाती हैं या नहीं:
यदि good_matches_count >= good_matches_threshold, images_match = True
यदि good_matches_count < good_matches_threshold, images_match = False
यदि visualize=True हो और छवियाँ प्रदान की गई हों, तो वैकल्पिक रूप से विज़ुअलाइज़ेशन बनाता है:
प्रत्येक छवि के लिए कीपॉइंट विज़ुअलाइज़ेशन बनाता है (कीपॉइंट्स खींची गई छवियाँ)
दोनों छवियों के बीच संगत कीपॉइंट्स को रेखाओं से जोड़कर दिखाने वाला match visualization बनाता है
मिलान परिणाम, कीपॉइंट्स, डिस्क्रिप्टर, और वैकल्पिक विज़ुअलाइज़ेशन लौटाता है
यह ब्लॉक छवियों (स्वचालित SIFT गणना के साथ) या पूर्व-गणना किए गए डिस्क्रिप्टरों में से किसी एक को स्वीकार करके लचीलापन प्रदान करता है। जब छवियाँ प्रदान की जाती हैं, तो ब्लॉक सभी SIFT प्रोसेसिंग को आंतरिक रूप से संभालता है, जिससे अलग SIFT फीचर डिटेक्शन चरणों की आवश्यकता के बिना इसका उपयोग करना आसान हो जाता है। वैकल्पिक विज़ुअलाइज़ेशन सुविधा कीपॉइंट्स और मिलानों को दृश्य रूप में दिखाकर डिबग करने और मिलान परिणामों को समझने में मदद करती है। SIFT डिस्क्रिप्टर स्केल और रोटेशन इनवेरिएंट होते हैं, इसलिए यह ब्लॉक अलग-अलग स्केल, रोटेशन, या देखने के कोण वाली छवियों के मिलान के लिए प्रभावी है।
सामान्य उपयोग के मामले
छवि समानता पहचान: यह निर्धारित करें कि दो छवियाँ समान हैं या एक-दूसरे से मेल खाती हैं (जैसे, संग्रहों में समान छवियों का पता लगाना, डेटाबेस में मिलती-जुलती छवियाँ खोजना, डुप्लिकेट छवियों की पहचान करना), जिससे image similarity workflows सक्षम होते हैं
डुप्लिकेट छवि पहचान: छवि संग्रहों में डुप्लिकेट या लगभग डुप्लिकेट छवियों की पहचान करें (जैसे, फोटो लाइब्रेरी में डुप्लिकेट छवियाँ खोजना, डेटासेट में दोहराई गई छवियों का पता लगाना, अलग-अलग स्केल या अभिविन्यास वाली समान छवियों की पहचान करना), जिससे duplicate detection workflows सक्षम होते हैं
विशेषता-आधारित छवि मिलान: दृश्य विशेषताओं और कीपॉइंट्स के आधार पर छवियों का मिलान करें (जैसे, समान सामग्री वाली छवियों का मिलान, अलग-अलग दृश्यों में संबंधित छवियाँ खोजना, छवि अनुक्रमों में मिलान करने वाली छवियों की पहचान करना), जिससे feature-based matching workflows सक्षम होते हैं
छवि सत्यापन: सत्यापित करें कि छवियाँ अपेक्षित पैटर्न या संदर्भों से मेल खाती हैं या नहीं (जैसे, छवि की प्रामाणिकता सत्यापित करना, जाँचना कि छवियाँ संदर्भ छवियों से मेल खाती हैं या नहीं, टेम्पलेट के विरुद्ध छवि सामग्री को मान्य करना), जिससे image verification workflows सक्षम होते हैं
छवि तुलना और विश्लेषण: समानताओं और भिन्नताओं का विश्लेषण करने के लिए छवियों की तुलना करें (जैसे, गुणवत्ता नियंत्रण के लिए छवियों की तुलना, छवि भिन्नताओं का विश्लेषण, image similarity scores मापना), जिससे image comparison analysis workflows सक्षम होते हैं
सामग्री-आधारित छवि पुनर्प्राप्ति: content-based image search और retrieval के लिए feature matching का उपयोग करें (जैसे, डेटाबेस में समान छवियाँ खोजना, visual similarity के आधार पर छवियाँ पुनः प्राप्त करना, सामग्री मिलान के आधार पर छवियों की खोज करना), जिससे content-based retrieval workflows सक्षम होते हैं
अन्य ब्लॉकों से जोड़ना
यह ब्लॉक छवियाँ या SIFT डिस्क्रिप्टर प्राप्त करता है और वैकल्पिक विज़ुअलाइज़ेशन के साथ मिलान परिणाम उत्पन्न करता है:
छवि इनपुट ब्लॉक्स के बाद छवियों की सीधे तुलना करने के लिए (जैसे, इनपुट छवियों की तुलना, कैमरा फीड से छवियों का मिलान, छवि समानताओं का विश्लेषण), जिससे direct image comparison workflows सक्षम होते हैं
SIFT feature detection blocks के बाद पूर्व-गणना किए गए SIFT डिस्क्रिप्टरों की तुलना करने के लिए (जैसे, अलग-अलग छवियों के डिस्क्रिप्टरों की तुलना, मौजूदा SIFT फीचर्स का उपयोग करके छवियों का मिलान, पूर्व-गणना किए गए डिस्क्रिप्टरों के साथ छवि समानता का विश्लेषण), जिससे descriptor-based comparison workflows सक्षम होते हैं
फ़िल्टरिंग या logic blocks से पहले जो निर्णय लेने के लिए match results का उपयोग करते हैं (जैसे, छवि मिलानों के आधार पर फ़िल्टर करना, समानता के आधार पर निर्णय लेना, match results के आधार पर logic लागू करना), जिससे match-based conditional workflows सक्षम होते हैं
डेटा संग्रहण ब्लॉक्स से पहले मिलान परिणामों और विज़ुअलाइज़ेशन को संग्रहीत करने के लिए (जैसे, छवि मिलान परिणाम स्टोर करना, समानता स्कोर सहेजना, विज़ुअलाइज़ेशन के साथ तुलना डेटा रिकॉर्ड करना), जिससे match result storage workflows सक्षम होते हैं
विज़ुअलाइज़ेशन ब्लॉकों से पहले विज़ुअलाइज़ेशन को आगे संसाधित करने या प्रदर्शित करने के लिए (जैसे, match visualizations दिखाना, keypoint छवियाँ प्रदर्शित करना, तुलना परिणाम render करना), जिससे visualization workflow outputs सक्षम होते हैं
छवि तुलना पाइपलाइनों में जहाँ कई छवियों की तुलना करनी होती है (जैसे, अनुक्रमों में छवियों की तुलना, workflows में छवि समानताओं का विश्लेषण, पाइपलाइनों में छवि तुलना संसाधित करना), जिससे image comparison pipeline workflows सक्षम होते हैं
संस्करण अंतर
यह संस्करण (v2) v1 की तुलना में कई सुधारों के साथ आता है:
लचीले इनपुट प्रकार: छवियों और पूर्व-गणना किए गए SIFT डिस्क्रिप्टरों दोनों को इनपुट के रूप में स्वीकार करता है (v1 केवल डिस्क्रिप्टर स्वीकार करता था), जिससे अलग SIFT फीचर डिटेक्शन चरणों की आवश्यकता के बिना सीधे छवि तुलना संभव होती है
स्वचालित SIFT गणना: छवियाँ प्रदान किए जाने पर स्वचालित रूप से SIFT कीपॉइंट्स और डिस्क्रिप्टरों की गणना करता है, जिससे सरल workflows में अलग SIFT feature detection blocks की आवश्यकता समाप्त हो जाती है
matcher चयन: FlannBasedMatcher (डिफ़ॉल्ट, तेज़) और BFMatcher (सटीक, धीमा) के बीच चयन करने के लिए एक कॉन्फ़िगर करने योग्य matcher पैरामीटर जोड़ा गया है, जो विभिन्न प्रदर्शन आवश्यकताओं के लिए लचीलापन प्रदान करता है
विज़ुअलाइज़ेशन समर्थन: एक वैकल्पिक visualization feature जोड़ा गया है, जो छवियाँ प्रदान किए जाने पर keypoint visualizations और match visualizations उत्पन्न करता है, जिससे मिलान परिणामों को डिबग करने और समझने में मदद मिलती है
उन्नत आउटपुट: दोनों छवियों के लिए कीपॉइंट्स और डिस्क्रिप्टर लौटाता है, साथ ही वैकल्पिक विज़ुअलाइज़ेशन (कीपॉइंट छवियाँ और match visualization), आगे की प्रोसेसिंग के लिए अधिक व्यापक आउटपुट डेटा प्रदान करता है
प्रकार पहचानकर्ता
स्टेप में निम्नलिखित पहचानकर्ता का उपयोग करें "type" फील्ड: roboflow_core/sift_comparison@v2 अपने वर्कफ़्लो में ब्लॉक को एक स्टेप के रूप में जोड़ने के लिए।
गुण
नाम
प्रकार
विवरण
संदर्भ
name
str
इस स्टेप के लिए एक अद्वितीय पहचानकर्ता दर्ज करें..
❌
good_matches_threshold
int
छवियों को मेल खाने वाली मानने के लिए आवश्यक अच्छे मिलानों की न्यूनतम संख्या। यह एक धनात्मक पूर्णांक होना चाहिए। यदि अच्छे मिलानों की संख्या (ratio test फ़िल्टरिंग के बाद) इस threshold से अधिक या बराबर है, तो images_match True होगा। कम मान (जैसे, 20-30) अधिक उदार होते हैं और कम फीचर correspondences वाली छवियों को भी मिलाएँगे। उच्च मान (जैसे, 80-100) अधिक सख्त होते हैं और अधिक feature matches की आवश्यकता होती है। डिफ़ॉल्ट 50 है, जो एक अच्छा संतुलन प्रदान करता है। छवि सामग्री, अपेक्षित समानता स्तर, और false positive/negative सहनशीलता के आधार पर समायोजित करें। कम features वाली छवियों के लिए कम threshold का उपयोग करें, तथा समृद्ध texture और कई features वाली छवियों के लिए उच्च threshold का उपयोग करें..
✅
ratio_threshold
float
Lowe के ratio test के लिए ratio threshold, जिसका उपयोग अस्पष्ट मिलानों को फ़िल्टर करने के लिए किया जाता है। ratio test सर्वश्रेष्ठ मैच की दूरी की तुलना दूसरे-सर्वश्रेष्ठ मैच की दूरी से करता है। मिलान केवल तभी रखे जाते हैं जब best_match_distance < ratio_threshold * second_best_match_distance हो। कम मान (जैसे, 0.6) अधिक स्पष्ट मिलानों की मांग करते हैं और अधिक सख्त होते हैं (अधिक मिलान फ़िल्टर करते हैं, केवल उच्च-विश्वास वाले मिलान छोड़ते हैं)। उच्च मान (जैसे, 0.8) अधिक उदार होते हैं (कुछ अस्पष्ट मिलानों सहित अधिक मिलानों की अनुमति देते हैं)। डिफ़ॉल्ट 0.7 है, जो मिलान गुणवत्ता और मात्रा के बीच अच्छा संतुलन प्रदान करता है। सामान्य सीमा 0.6-0.8 है। जब आपको केवल उच्च-विश्वास वाले मिलान चाहिए हों, तब कम मानों का उपयोग करें; जब आप अधिक मिलान चाहते हों या आपके पास विरल features वाली छवियाँ हों, तब उच्च मानों का उपयोग करें..
✅
matcher
str
SIFT डिस्क्रिप्टरों की तुलना के लिए उपयोग किया जाने वाला matcher एल्गोरिद्म: 'FlannBasedMatcher' (डिफ़ॉल्ट) कुशल अनुमानित निकटतम पड़ोसी खोज के लिए FLANN का उपयोग करता है - बड़े डिस्क्रिप्टर सेट के लिए तेज़, अधिकांश उपयोग मामलों के लिए उपयुक्त। 'BFMatcher' L2 norm के साथ brute force matching का उपयोग करता है - सटीक मिलान लेकिन बड़े डिस्क्रिप्टर सेट के लिए धीमा, जब आपको सटीक परिणाम चाहिए हों या आपके पास छोटे डिस्क्रिप्टर सेट हों तब उपयोगी। सर्वोत्तम प्रदर्शन के लिए डिफ़ॉल्ट 'FlannBasedMatcher' है। BFMatcher केवल तभी चुनें जब आपको सटीक मिलान चाहिए हों या ऐसी प्रदर्शन सीमाएँ हों जो brute force के पक्ष में हों..
✅
visualize
bool
क्या कीपॉइंट्स और मिलानों के विज़ुअलाइज़ेशन उत्पन्न करने हैं। जब True हो और इनपुट के रूप में छवियाँ प्रदान की गई हों, तो ब्लॉक उत्पन्न करता है: (1) visualization_1 और visualization_2, जो प्रत्येक छवि पर खींचे गए कीपॉइंट्स दिखाते हैं, (2) visualization_matches, जो दोनों छवियों के बीच रेखाओं से जुड़े संगत कीपॉइंट्स दिखाता है। विज़ुअलाइज़ेशन केवल तब उत्पन्न होते हैं जब छवियाँ (डिस्क्रिप्टर नहीं) प्रदान किए जाते हैं। डिफ़ॉल्ट False है। जब आपको मिलान परिणामों को डिबग करना हो, यह समझना हो कि छवियाँ क्यों मेल खाती हैं या नहीं, या display/analysis purposes के लिए दृश्य आउटपुट चाहिए हो, तब इसे True पर सेट करें..
✅
यह संदर्भ कॉलम यह दर्शाता है कि प्रॉपर्टी को गतिशील मानों के साथ पैरामीटराइज़ किया जा सकता है, जो वर्कफ़्लो रनटाइम में उपलब्ध हैं। अधिक जानकारी के लिए देखें Bindings ।
इनपुट और आउटपुट बाइंडिंग्स
उपलब्ध कनेक्शन उसके बाइंडिंग प्रकारों पर निर्भर करते हैं। जाँचें कि कौन-से बाइंडिंग प्रकार SIFT तुलना संस्करण में v2 है।
इनपुट और आउटपुट बाइंडिंग्स
इनपुट
input_1(Union[image,numpy_array]): तुलना करने के लिए पहला इनपुट - यह या तो एक छवि या पूर्व-गणना किए गए SIFT डिस्क्रिप्टर (numpy array) हो सकता है। यदि छवि प्रदान की जाती है, तो SIFT कीपॉइंट्स और डिस्क्रिप्टर स्वचालित रूप से गणना किए जाएँगे। यदि डिस्क्रिप्टर प्रदान किए जाते हैं, तो उनका सीधे उपयोग किया जाएगा। इनपुट या workflow steps से छवियों, या SIFT feature detection blocks से डिस्क्रिप्टरों का समर्थन करता है। छवियाँ मानक छवि प्रारूप में होनी चाहिए, और डिस्क्रिप्टर 128-आयामी SIFT डिस्क्रिप्टरों के numpy arrays होने चाहिए..input_2(Union[image,numpy_array]): तुलना करने के लिए दूसरा इनपुट - यह या तो एक छवि या पूर्व-गणना किए गए SIFT डिस्क्रिप्टर (numpy array) हो सकता है। यदि छवि प्रदान की जाती है, तो SIFT कीपॉइंट्स और डिस्क्रिप्टर स्वचालित रूप से गणना किए जाएँगे। यदि डिस्क्रिप्टर प्रदान किए जाते हैं, तो उनका सीधे उपयोग किया जाएगा। इनपुट या workflow steps से छवियों, या SIFT feature detection blocks से डिस्क्रिप्टरों का समर्थन करता है। छवियाँ मानक छवि प्रारूप में होनी चाहिए, और डिस्क्रिप्टर 128-आयामी SIFT डिस्क्रिप्टरों के numpy arrays होने चाहिए। इस इनपुट की तुलना input_1 के विरुद्ध की जाएगी ताकि image similarity निर्धारित की जा सके..good_matches_threshold(integer): छवियों को मेल खाने वाली मानने के लिए आवश्यक अच्छे मिलानों की न्यूनतम संख्या। यह एक धनात्मक पूर्णांक होना चाहिए। यदि अच्छे मिलानों की संख्या (ratio test फ़िल्टरिंग के बाद) इस threshold से अधिक या बराबर है, तो images_match True होगा। कम मान (जैसे, 20-30) अधिक उदार होते हैं और कम feature correspondences वाली छवियों को भी मिलाएँगे। उच्च मान (जैसे, 80-100) अधिक सख्त होते हैं और अधिक feature matches की आवश्यकता होती है। डिफ़ॉल्ट 50 है, जो एक अच्छा संतुलन प्रदान करता है। छवि सामग्री, अपेक्षित समानता स्तर, और false positive/negative सहनशीलता के आधार पर समायोजित करें। कम features वाली छवियों के लिए कम threshold का उपयोग करें, तथा समृद्ध texture और कई features वाली छवियों के लिए उच्च threshold का उपयोग करें..ratio_threshold(float_zero_to_one): Lowe के ratio test के लिए ratio threshold, जिसका उपयोग अस्पष्ट मिलानों को फ़िल्टर करने के लिए किया जाता है। ratio test सर्वश्रेष्ठ मैच की दूरी की तुलना दूसरे-सर्वश्रेष्ठ मैच की दूरी से करता है। मिलान केवल तभी रखे जाते हैं जब best_match_distance < ratio_threshold * second_best_match_distance हो। कम मान (जैसे, 0.6) अधिक स्पष्ट मिलानों की मांग करते हैं और अधिक सख्त होते हैं (अधिक मिलान फ़िल्टर करते हैं, केवल उच्च-विश्वास वाले मिलान छोड़ते हैं)। उच्च मान (जैसे, 0.8) अधिक उदार होते हैं (कुछ अस्पष्ट मिलानों सहित अधिक मिलानों की अनुमति देते हैं)। डिफ़ॉल्ट 0.7 है, जो मिलान गुणवत्ता और मात्रा के बीच अच्छा संतुलन प्रदान करता है। सामान्य सीमा 0.6-0.8 है। जब आपको केवल उच्च-विश्वास वाले मिलान चाहिए हों, तब कम मानों का उपयोग करें; जब आप अधिक मिलान चाहते हों या आपके पास विरल features वाली छवियाँ हों, तब उच्च मानों का उपयोग करें..matcher(स्ट्रिंग): SIFT डिस्क्रिप्टरों की तुलना के लिए उपयोग किया जाने वाला matcher एल्गोरिद्म: 'FlannBasedMatcher' (डिफ़ॉल्ट) कुशल अनुमानित निकटतम पड़ोसी खोज के लिए FLANN का उपयोग करता है - बड़े डिस्क्रिप्टर सेट के लिए तेज़, अधिकांश उपयोग मामलों के लिए उपयुक्त। 'BFMatcher' L2 norm के साथ brute force matching का उपयोग करता है - सटीक मिलान लेकिन बड़े डिस्क्रिप्टर सेट के लिए धीमा, जब आपको सटीक परिणाम चाहिए हों या आपके पास छोटे डिस्क्रिप्टर सेट हों तब उपयोगी। सर्वोत्तम प्रदर्शन के लिए डिफ़ॉल्ट 'FlannBasedMatcher' है। BFMatcher केवल तभी चुनें जब आपको सटीक मिलान चाहिए हों या ऐसी प्रदर्शन सीमाएँ हों जो brute force के पक्ष में हों..visualize(boolean): क्या कीपॉइंट्स और मिलानों के विज़ुअलाइज़ेशन उत्पन्न करने हैं। जब True हो और इनपुट के रूप में छवियाँ प्रदान की गई हों, तो ब्लॉक उत्पन्न करता है: (1) visualization_1 और visualization_2, जो प्रत्येक छवि पर खींचे गए कीपॉइंट्स दिखाते हैं, (2) visualization_matches, जो दोनों छवियों के बीच रेखाओं से जुड़े संगत कीपॉइंट्स दिखाता है। विज़ुअलाइज़ेशन केवल तब उत्पन्न होते हैं जब छवियाँ (डिस्क्रिप्टर नहीं) प्रदान किए जाते हैं। डिफ़ॉल्ट False है। जब आपको मिलान परिणामों को डिबग करना हो, यह समझना हो कि छवियाँ क्यों मेल खाती हैं या नहीं, या display/analysis purposes के लिए दृश्य आउटपुट चाहिए हो, तब इसे True पर सेट करें..
आउटपुट
images_match(boolean): बूलियन फ़्लैग।good_matches_count(integer): पूर्णांक मान।keypoints_1(image_keypoints): शास्त्रीय Computer Vision विधि द्वारा पता लगाए गए छवि कीपॉइंट्स।descriptors_1(numpy_array): नम्पी ऐरे.keypoints_2(image_keypoints): शास्त्रीय Computer Vision विधि द्वारा पता लगाए गए छवि कीपॉइंट्स।descriptors_2(numpy_array): नम्पी ऐरे.visualization_1(image): वर्कफ़्लो में छवि।visualization_2(image): वर्कफ़्लो में छवि।visualization_matches(image): वर्कफ़्लो में छवि।
v1
FLANN-आधारित matching और Lowe के ratio test का उपयोग करके दो छवियों से SIFT (Scale Invariant Feature Transform) डिस्क्रिप्टरों की तुलना करें, feature matches की गिनती करके छवि समानता निर्धारित करें, और image matching, similarity detection, duplicate detection, तथा feature-based image comparison workflows के लिए एक कॉन्फ़िगर करने योग्य threshold के आधार पर एक boolean match result लौटाएँ.
यह ब्लॉक कैसे काम करता है
यह ब्लॉक दो छवियों से SIFT डिस्क्रिप्टरों की तुलना करता है ताकि संगत विशेषताएँ खोजकर और अच्छे मिलानों की संख्या गिनकर यह तय किया जा सके कि वे मेल खाते हैं या नहीं। ब्लॉक:
दो छवियों (descriptor_1 और descriptor_2) से SIFT डिस्क्रिप्टर प्राप्त करता है - ये डिस्क्रिप्टर एक SIFT feature detection step से आने चाहिए जिसने पहले ही दोनों छवियों के लिए कीपॉइंट्स निकाल लिए हों और डिस्क्रिप्टरों की गणना कर ली हो
सत्यापित करता है कि दोनों डिस्क्रिप्टर ऐरे में कम से कम 2 डिस्क्रिप्टर हों (ratio test फ़िल्टरिंग के लिए आवश्यक - कम से कम 2 nearest neighbors चाहिए)
FLANN (Fast Library for Approximate Nearest Neighbors) आधारित matcher बनाता है:
उच्च-आयामी डिस्क्रिप्टर स्पेस में कुशल अनुमानित निकटतम पड़ोसी खोज के लिए FLANN एल्गोरिद्म का उपयोग करता है
SIFT डिस्क्रिप्टरों के लिए अनुकूलित एल्गोरिद्म पैरामीटर (algorithm=1, trees=5, checks=50) के साथ FLANN को कॉन्फ़िगर करता है
FLANN बड़े डिस्क्रिप्टर सेट के लिए brute force matching की तुलना में तेज़ है, जबकि अच्छी सटीकता बनाए रखता है
image 1 में प्रत्येक डिस्क्रिप्टर के लिए 2 सबसे निकटतम डिस्क्रिप्टर मिलानों को खोजने हेतु k-nearest neighbor matching (k=2) करता है:
descriptor_1 में प्रत्येक डिस्क्रिप्टर के लिए, descriptor_2 में 2 सबसे समान डिस्क्रिप्टर खोजता है
समानता मापने के लिए डिस्क्रिप्टर स्थान में Euclidean distance का उपयोग करता है
ऐसे मिलान लौटाता है जिनके distance मान दर्शाते हैं कि डिस्क्रिप्टर कितने समान हैं
Lowe के ratio test का उपयोग करके अच्छे मिलानों को फ़िल्टर करता है:
प्रत्येक मैच के लिए, सर्वश्रेष्ठ मैच की दूरी (m.distance) की तुलना दूसरे-सर्वश्रेष्ठ मैच की दूरी (n.distance) से करता है
केवल वे मैच रखता है जहाँ m.distance < ratio_threshold * n.distance
यह ratio test उन अस्पष्ट मिलानों को फ़िल्टर करता है जहाँ कई डिस्क्रिप्टर लगभग समान रूप से निकट होते हैं
कम ratio_threshold मान (जैसे 0.6) अधिक स्पष्ट मिलानों की मांग करते हैं (कड़ी फ़िल्टरिंग)
उच्च ratio_threshold मान (जैसे 0.8) अधिक मिलानों की अनुमति देते हैं (कम सख्त फ़िल्टरिंग)
ratio test फ़िल्टरिंग के बाद अच्छे मिलानों की संख्या गिनता है
good_matches_count की तुलना good_matches_threshold से करके तय करता है कि छवियाँ मेल खाती हैं या नहीं:
यदि good_matches_count >= good_matches_threshold, images_match = True
यदि good_matches_count < good_matches_threshold, images_match = False
अच्छे मिलानों की संख्या और boolean match result लौटाता है
यह ब्लॉक SIFT डिस्क्रिप्टरों का उपयोग करता है, जो स्केल और रोटेशन इनवेरिएंट होते हैं, इसलिए यह अलग-अलग स्केल, रोटेशन, या देखने के कोण वाली छवियों के मिलान के लिए प्रभावी है। FLANN matching बड़े डिस्क्रिप्टर सेटों की तेज़ तुलना के लिए कुशल अनुमानित निकटतम पड़ोसी खोज प्रदान करता है। Lowe का ratio test उस अस्पष्ट मिलान को फ़िल्टर करके match quality सुधारता है जहाँ सर्वश्रेष्ठ मैच विकल्पों की तुलना में उल्लेखनीय रूप से बेहतर नहीं होता। threshold-आधारित मिलान कॉन्फ़िगर करने योग्य संवेदनशीलता देता है - कम threshold कम मिलान मांगते हैं (अधिक उदार), जबकि उच्च threshold अधिक मिलान मांगते हैं (अधिक सख्त)।
सामान्य उपयोग के मामले
छवि समानता पहचान: यह निर्धारित करें कि दो छवियाँ समान हैं या एक-दूसरे से मेल खाती हैं (जैसे, संग्रहों में समान छवियों का पता लगाना, डेटाबेस में मिलती-जुलती छवियाँ खोजना, डुप्लिकेट छवियों की पहचान करना), जिससे image similarity workflows सक्षम होते हैं
डुप्लिकेट छवि पहचान: छवि संग्रहों में डुप्लिकेट या लगभग डुप्लिकेट छवियों की पहचान करें (जैसे, फोटो लाइब्रेरी में डुप्लिकेट छवियाँ खोजना, डेटासेट में दोहराई गई छवियों का पता लगाना, अलग-अलग स्केल या अभिविन्यास वाली समान छवियों की पहचान करना), जिससे duplicate detection workflows सक्षम होते हैं
विशेषता-आधारित छवि मिलान: दृश्य विशेषताओं और कीपॉइंट्स के आधार पर छवियों का मिलान करें (जैसे, समान सामग्री वाली छवियों का मिलान, अलग-अलग दृश्यों में संबंधित छवियाँ खोजना, छवि अनुक्रमों में मिलान करने वाली छवियों की पहचान करना), जिससे feature-based matching workflows सक्षम होते हैं
छवि सत्यापन: सत्यापित करें कि छवियाँ अपेक्षित पैटर्न या संदर्भों से मेल खाती हैं या नहीं (जैसे, छवि की प्रामाणिकता सत्यापित करना, जाँचना कि छवियाँ संदर्भ छवियों से मेल खाती हैं या नहीं, टेम्पलेट के विरुद्ध छवि सामग्री को मान्य करना), जिससे image verification workflows सक्षम होते हैं
छवि तुलना और विश्लेषण: समानताओं और भिन्नताओं का विश्लेषण करने के लिए छवियों की तुलना करें (जैसे, गुणवत्ता नियंत्रण के लिए छवियों की तुलना, छवि भिन्नताओं का विश्लेषण, image similarity scores मापना), जिससे image comparison analysis workflows सक्षम होते हैं
सामग्री-आधारित छवि पुनर्प्राप्ति: content-based image search और retrieval के लिए feature matching का उपयोग करें (जैसे, डेटाबेस में समान छवियाँ खोजना, visual similarity के आधार पर छवियाँ पुनः प्राप्त करना, सामग्री मिलान के आधार पर छवियों की खोज करना), जिससे content-based retrieval workflows सक्षम होते हैं
अन्य ब्लॉकों से जोड़ना
यह ब्लॉक दो छवियों से SIFT डिस्क्रिप्टर प्राप्त करता है और मिलान परिणाम उत्पन्न करता है:
SIFT feature detection blocks के बाद विभिन्न छवियों से SIFT डिस्क्रिप्टरों की तुलना करने के लिए (जैसे, कई छवियों के डिस्क्रिप्टरों की तुलना, SIFT फीचर्स का उपयोग करके छवियों का मिलान, SIFT के साथ छवि समानता का विश्लेषण), जिससे SIFT-आधारित image comparison workflows सक्षम होते हैं
फ़िल्टरिंग या logic blocks से पहले जो निर्णय लेने के लिए match results का उपयोग करते हैं (जैसे, छवि मिलानों के आधार पर फ़िल्टर करना, समानता के आधार पर निर्णय लेना, match results के आधार पर logic लागू करना), जिससे match-based conditional workflows सक्षम होते हैं
डेटा संग्रहण ब्लॉक्स से पहले मिलान परिणामों को संग्रहीत करने के लिए (जैसे, छवि मिलान परिणाम स्टोर करना, समानता स्कोर सहेजना, तुलना डेटा रिकॉर्ड करना), जिससे match result storage workflows सक्षम होते हैं
छवि तुलना पाइपलाइनों में जहाँ कई छवियों की तुलना करनी होती है (जैसे, अनुक्रमों में छवियों की तुलना, workflows में छवि समानताओं का विश्लेषण, पाइपलाइनों में छवि तुलना संसाधित करना), जिससे image comparison pipeline workflows सक्षम होते हैं
विज़ुअलाइज़ेशन ब्लॉकों से पहले मिलान परिणामों को visualise करने के लिए (जैसे, मिलान परिणाम प्रदर्शित करना, समान छवियों को visualise करना, तुलना के परिणाम दिखाना), जिससे match visualization workflows सक्षम होते हैं
डुप्लिकेट पहचान workflows में जहाँ छवियों को डुप्लिकेट के लिए जाँचना होता है (जैसे, छवि संग्रहों में डुप्लिकेट का पता लगाना, दोहराई गई छवियाँ खोजना, समान छवियों की पहचान करना), जिससे duplicate detection workflows सक्षम होते हैं
प्रकार पहचानकर्ता
स्टेप में निम्नलिखित पहचानकर्ता का उपयोग करें "type" फील्ड: roboflow_core/sift_comparison@v1 अपने वर्कफ़्लो में ब्लॉक को एक स्टेप के रूप में जोड़ने के लिए।
गुण
नाम
प्रकार
विवरण
संदर्भ
name
str
इस स्टेप के लिए एक अद्वितीय पहचानकर्ता दर्ज करें..
❌
good_matches_threshold
int
छवियों को मेल खाने वाली मानने के लिए आवश्यक अच्छे मिलानों की न्यूनतम संख्या। यह एक धनात्मक पूर्णांक होना चाहिए। यदि अच्छे मिलानों की संख्या (ratio test फ़िल्टरिंग के बाद) इस threshold से अधिक या बराबर है, तो images_match True होगा। कम मान (जैसे, 20-30) अधिक उदार होते हैं और कम फीचर correspondences वाली छवियों को भी मिलाएँगे। उच्च मान (जैसे, 80-100) अधिक सख्त होते हैं और अधिक feature matches की आवश्यकता होती है। डिफ़ॉल्ट 50 है, जो एक अच्छा संतुलन प्रदान करता है। छवि सामग्री, अपेक्षित समानता स्तर, और false positive/negative सहनशीलता के आधार पर समायोजित करें। कम features वाली छवियों के लिए कम threshold का उपयोग करें, तथा समृद्ध texture और कई features वाली छवियों के लिए उच्च threshold का उपयोग करें..
✅
ratio_threshold
float
Lowe के ratio test के लिए ratio threshold, जिसका उपयोग अस्पष्ट मिलानों को फ़िल्टर करने के लिए किया जाता है। ratio test सर्वश्रेष्ठ मैच की दूरी की तुलना दूसरे-सर्वश्रेष्ठ मैच की दूरी से करता है। मिलान केवल तभी रखे जाते हैं जब best_match_distance < ratio_threshold * second_best_match_distance हो। कम मान (जैसे, 0.6) अधिक स्पष्ट मिलानों की मांग करते हैं और अधिक सख्त होते हैं (अधिक मिलान फ़िल्टर करते हैं, केवल उच्च-विश्वास वाले मिलान छोड़ते हैं)। उच्च मान (जैसे, 0.8) अधिक उदार होते हैं (कुछ अस्पष्ट मिलानों सहित अधिक मिलानों की अनुमति देते हैं)। डिफ़ॉल्ट 0.7 है, जो मिलान गुणवत्ता और मात्रा के बीच अच्छा संतुलन प्रदान करता है। सामान्य सीमा 0.6-0.8 है। जब आपको केवल उच्च-विश्वास वाले मिलान चाहिए हों, तब कम मानों का उपयोग करें; जब आप अधिक मिलान चाहते हों या आपके पास विरल features वाली छवियाँ हों, तब उच्च मानों का उपयोग करें..
✅
यह संदर्भ कॉलम यह दर्शाता है कि प्रॉपर्टी को गतिशील मानों के साथ पैरामीटराइज़ किया जा सकता है, जो वर्कफ़्लो रनटाइम में उपलब्ध हैं। अधिक जानकारी के लिए देखें Bindings ।
इनपुट और आउटपुट बाइंडिंग्स
उपलब्ध कनेक्शन उसके बाइंडिंग प्रकारों पर निर्भर करते हैं। जाँचें कि कौन-से बाइंडिंग प्रकार SIFT तुलना संस्करण में v1 है।
इनपुट और आउटपुट बाइंडिंग्स
इनपुट
descriptor_1(numpy_array): पहले चित्र से तुलना करने के लिए SIFT डिस्क्रिप्टर। यह SIFT डिस्क्रिप्टरों का एक numpy array होना चाहिए (आमतौर पर SIFT feature detection block से)। प्रत्येक डिस्क्रिप्टर एक 128-आयामी वेक्टर होता है जो एक कीपॉइंट के आसपास की दृश्य विशेषताओं का वर्णन करता है। दोनों छवियों के लिए डिस्क्रिप्टर समान SIFT पैरामीटरों का उपयोग करके गणना किए जाने चाहिए। ratio test के काम करने के लिए कम से कम 2 डिस्क्रिप्टर आवश्यक हैं। पहले चित्र को संसाधित करने वाले SIFT feature detection step से प्राप्त डिस्क्रिप्टरों का उपयोग करें..descriptor_2(numpy_array): दूसरे चित्र से तुलना करने के लिए SIFT डिस्क्रिप्टर। यह SIFT डिस्क्रिप्टरों का एक numpy array होना चाहिए (आमतौर पर SIFT feature detection block से)। प्रत्येक डिस्क्रिप्टर एक 128-आयामी वेक्टर होता है जो एक कीपॉइंट के आसपास की दृश्य विशेषताओं का वर्णन करता है। दोनों छवियों के लिए डिस्क्रिप्टर समान SIFT पैरामीटरों का उपयोग करके गणना किए जाने चाहिए। ratio test के काम करने के लिए कम से कम 2 डिस्क्रिप्टर आवश्यक हैं। दूसरे चित्र को संसाधित करने वाले SIFT feature detection step से प्राप्त डिस्क्रिप्टरों का उपयोग करें। इन डिस्क्रिप्टरों का descriptor_1 के विरुद्ध मिलान किया जाएगा ताकि image similarity निर्धारित की जा सके..good_matches_threshold(integer): छवियों को मेल खाने वाली मानने के लिए आवश्यक अच्छे मिलानों की न्यूनतम संख्या। यह एक धनात्मक पूर्णांक होना चाहिए। यदि अच्छे मिलानों की संख्या (ratio test फ़िल्टरिंग के बाद) इस threshold से अधिक या बराबर है, तो images_match True होगा। कम मान (जैसे, 20-30) अधिक उदार होते हैं और कम feature correspondences वाली छवियों को भी मिलाएँगे। उच्च मान (जैसे, 80-100) अधिक सख्त होते हैं और अधिक feature matches की आवश्यकता होती है। डिफ़ॉल्ट 50 है, जो एक अच्छा संतुलन प्रदान करता है। छवि सामग्री, अपेक्षित समानता स्तर, और false positive/negative सहनशीलता के आधार पर समायोजित करें। कम features वाली छवियों के लिए कम threshold का उपयोग करें, तथा समृद्ध texture और कई features वाली छवियों के लिए उच्च threshold का उपयोग करें..ratio_threshold(integer): Lowe के ratio test के लिए ratio threshold, जिसका उपयोग अस्पष्ट मिलानों को फ़िल्टर करने के लिए किया जाता है। ratio test सर्वश्रेष्ठ मैच की दूरी की तुलना दूसरे-सर्वश्रेष्ठ मैच की दूरी से करता है। मिलान केवल तभी रखे जाते हैं जब best_match_distance < ratio_threshold * second_best_match_distance हो। कम मान (जैसे, 0.6) अधिक स्पष्ट मिलानों की मांग करते हैं और अधिक सख्त होते हैं (अधिक मिलान फ़िल्टर करते हैं, केवल उच्च-विश्वास वाले मिलान छोड़ते हैं)। उच्च मान (जैसे, 0.8) अधिक उदार होते हैं (कुछ अस्पष्ट मिलानों सहित अधिक मिलानों की अनुमति देते हैं)। डिफ़ॉल्ट 0.7 है, जो मिलान गुणवत्ता और मात्रा के बीच अच्छा संतुलन प्रदान करता है। सामान्य सीमा 0.6-0.8 है। जब आपको केवल उच्च-विश्वास वाले मिलान चाहिए हों, तब कम मानों का उपयोग करें; जब आप अधिक मिलान चाहते हों या आपके पास विरल features वाली छवियाँ हों, तब उच्च मानों का उपयोग करें..
अंतिम अपडेट
क्या यह उपयोगी था?