नोट: इस पोस्ट में, हम केवल ग्रे-स्केल छवियों के साथ काम करेंगे ताकि इसे फ़ॉलो करना आसान हो सके।
एक छवि को मानों के मैट्रिक्स के रूप में सोचा जा सकता है, जहां प्रत्येक मान एक पिक्सेल की तीव्रता का प्रतिनिधित्व करता है। छवि प्रारूप तीन मुख्य प्रकार के होते हैं:
फ़िल्टर ऐसे उपकरण हैं जिनका उपयोग कुछ परिचालनों को लागू करके छवियों को संशोधित करने के लिए किया जाता है। फ़िल्टर एक मैट्रिक्स है (जिसे कर्नेल भी कहा जाता है) जो छवि पर चलता है, इसकी विंडो के भीतर पिक्सेल मानों पर गणना करता है। हम दो सामान्य प्रकार के फ़िल्टर को कवर करेंगे: माध्य फ़िल्टर और माध्य फ़िल्टर।
एक विंडो के भीतर पिक्सेल मानों को औसत करके शोर को कम करने के लिए एक मीन फ़िल्टर का उपयोग किया जाता है। यह विंडो में केंद्र पिक्सेल को उस विंडो के सभी पिक्सेल मानों के औसत से बदल देता है। Cv2.blur() फ़ंक्शन 3x3 के कर्नेल आकार के साथ एक माध्य फ़िल्टर लागू करता है, जिसका अर्थ है कि यह औसत की गणना करने के लिए प्रत्येक पिक्सेल के चारों ओर पिक्सेल की 3x3 विंडो पर विचार करता है। यह छवि को सुचारू बनाने में मदद करता है।
import cv2 import matplotlib.pyplot as plt image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE) # Applies a Mean Filter of size 3 x 3 blurred_image = cv2.blur(image, (3, 3)) plt.subplot(1, 2, 1) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.axis("off") plt.subplot(1, 2, 2) plt.imshow(blurred_image, cmap='gray') plt.title('Mean Filtered Image') plt.axis("off") plt.show()
एक विंडो में सभी पिक्सेल के औसत मूल्य के साथ प्रत्येक पिक्सेल के मान को प्रतिस्थापित करके शोर को कम करने के लिए एक माध्य फ़िल्टर का उपयोग किया जाता है। यह नमक और काली मिर्च के शोर को दूर करने में विशेष रूप से प्रभावी है। Cv2.medianBlur() फ़ंक्शन 3 के कर्नेल आकार के साथ एक माध्य फ़िल्टर लागू करता है। यह विधि प्रत्येक पिक्सेल को उसके पड़ोस में पिक्सेल मानों के माध्य मान से बदल देती है, जो शोर को दूर करते हुए किनारों को संरक्षित करने में मदद करती है। यहां कर्नेल का आकार जितना बड़ा होगा छवि उतनी ही धुंधली हो जाएगी।
import cv2 import matplotlib.pyplot as plt image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE) # Applies a Median Filter with a kernel size of 3 blurred_image = cv2.medianBlur(image, 3) plt.subplot(1, 2, 1) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.axis("off") plt.subplot(1, 2, 2) plt.imshow(blurred_image, cmap='gray') plt.title('Median Filtered Image') plt.axis("off") plt.show()
आप अपनी छवियों पर विशिष्ट संचालन लागू करने के लिए कस्टम फ़िल्टर बना सकते हैं। Cv2.filter2D() फ़ंक्शन आपको किसी छवि पर कोई भी कस्टम कर्नेल लागू करने की अनुमति देता है। Cv2.filter2D() फ़ंक्शन छवि पर एक कस्टम कर्नेल (फ़िल्टर) लागू करता है। कर्नेल एक मैट्रिक्स है जो पिक्सेल मानों पर किए जाने वाले ऑपरेशन को परिभाषित करता है। इस उदाहरण में, कर्नेल निर्दिष्ट मानों के आधार पर छवि की कुछ विशेषताओं को बढ़ाता है।
import cv2 import numpy as np import matplotlib.pyplot as plt image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE) # Define a custom filter kernel kernel = np.array([[2, -1, 5], [-5, 5, -1], [0, -1, 0]]) filtered_image = cv2.filter2D(image, -1, kernel) plt.subplot(1, 2, 1) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.axis('off') plt.subplot(1, 2, 2) plt.imshow(filtered_image, cmap='gray') plt.title('Filtered Image') plt.axis('off') plt.show()
नोट: कोड स्निपेट में, आपको थ्रेशोल्ड छवि निर्दिष्ट करते समय _, छवि दिखाई देगी। ऐसा इसलिए है क्योंकि cv2.threshold फ़ंक्शन दो मान लौटाता है: उपयोग किया गया थ्रेशोल्ड मान और थ्रेशोल्ड छवि। चूँकि हमें केवल थ्रेशोल्ड छवि की आवश्यकता है, हम थ्रेशोल्ड मान को अनदेखा करने के लिए _ का उपयोग करते हैं।
थ्रेसहोल्डिंग एक शर्त के आधार पर पिक्सेल मान सेट करके एक छवि को बाइनरी छवि में परिवर्तित करता है। थ्रेशोल्डिंग तकनीकें कई प्रकार की होती हैं:
यह विधि संपूर्ण छवि के लिए एक निश्चित सीमा मान निर्धारित करती है। थ्रेशोल्ड से ऊपर के मान वाले पिक्सेल को अधिकतम मान (255) पर सेट किया जाता है, और नीचे वाले को 0 पर सेट किया जाता है। cv2.threshold() फ़ंक्शन का उपयोग सरल थ्रेशोल्डिंग के लिए किया जाता है। 127 से अधिक तीव्रता वाले पिक्सेल को सफेद (255) पर सेट किया जाता है, और 127 से कम या उसके बराबर तीव्रता वाले पिक्सेल को काले (0) पर सेट किया जाता है, जिससे एक बाइनरी छवि बनती है।
import cv2 import matplotlib.pyplot as plt image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE) _, thresholded_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY) plt.subplot(1, 2, 1) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.axis("off") plt.subplot(1, 2, 2) plt.imshow(thresholded_image, cmap='gray') plt.title('Thresholded Image') plt.axis("off") plt.show()
ओत्सु की विधि छवि के हिस्टोग्राम के आधार पर स्वचालित रूप से इष्टतम सीमा मूल्य निर्धारित करती है। यह विधि अंतर-वर्ग विचरण को कम करती है और अंतर-वर्ग विचरण को अधिकतम करती है। थ्रेशोल्ड मान को 0 पर सेट करके और cv2.THRESH_OTSU का उपयोग करके, फ़ंक्शन स्वचालित रूप से अग्रभूमि को पृष्ठभूमि से अलग करने के लिए सर्वोत्तम थ्रेशोल्ड मान की गणना करता है।
import cv2 import matplotlib.pyplot as plt image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE) _, otsu_thresholded_image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY cv2.THRESH_OTSU) plt.subplot(1, 2, 1) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.axis("off") plt.subplot(1, 2, 2) plt.imshow(otsu_thresholded_image, cmap='gray') plt.title("Otsu's Thresholded Image") plt.axis("off") plt.show()
मीन एडेप्टिव थ्रेशोल्डिंग में, प्रत्येक पिक्सेल के लिए थ्रेशोल्ड मान की गणना उस पिक्सेल के आसपास के स्थानीय पड़ोस में पिक्सेल मानों के औसत के आधार पर की जाती है। यह विधि छवि के विभिन्न क्षेत्रों में थ्रेशोल्ड को गतिशील रूप से समायोजित करती है। Cv2.adaptiveThreshold() फ़ंक्शन स्थानीय 11x11 पड़ोस में पिक्सेल मानों के औसत मूल्य के आधार पर प्रत्येक पिक्सेल के लिए सीमा की गणना करता है। सीमा को ठीक करने के लिए इस माध्य से 2 का स्थिर मान घटाया जाता है। यह विधि अलग-अलग प्रकाश स्थितियों वाली छवियों के लिए प्रभावी है।
import cv2 import matplotlib.pyplot as plt image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE) mean_adaptive_thresholded_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2) plt.subplot(1, 2, 1) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.axis("off") plt.subplot(1, 2, 2) plt.imshow(mean_adaptive_thresholded_image, cmap='gray') plt.title('Mean Adaptive Thresholded Image') plt.axis("off") plt.show()
गॉसियन एडेप्टिव थ्रेशोल्डिंग स्थानीय पड़ोस में पिक्सेल मानों के गॉसियन-भारित योग के आधार पर प्रत्येक पिक्सेल के लिए थ्रेशोल्ड मान की गणना करता है। यह विधि अक्सर गैर-समान रोशनी वाले मामलों में बेहतर परिणाम प्रदान करती है। गाऊसी अनुकूली थ्रेशोल्डिंग में, सीमा 11x11 पड़ोस में पिक्सेल मानों के गाऊसी-भारित योग द्वारा निर्धारित की जाती है। सीमा को समायोजित करने के लिए इस भारित माध्य से स्थिर मान 2 घटाया जाता है। यह विधि अलग-अलग रोशनी और छाया वाली छवियों को संभालने के लिए उपयोगी है।
import cv2 import matplotlib.pyplot as plt image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE) gaussian_adaptive_thresholded_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2) plt.subplot(1, 2, 1) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.axis("off") plt.subplot(1, 2, 2) plt.imshow(gaussian_adaptive_thresholded_image, cmap='gray') plt.title('Gaussian Adaptive Thresholded Image') plt.axis("off") plt.show()
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3