"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन के साथ कंप्यूटर विज़न का परिचय (भाग 1)

पायथन के साथ कंप्यूटर विज़न का परिचय (भाग 1)

2024-11-05 को प्रकाशित
ब्राउज़ करें:560

नोट: इस पोस्ट में, हम केवल ग्रे-स्केल छवियों के साथ काम करेंगे ताकि इसे फ़ॉलो करना आसान हो सके।

एक छवि क्या है?

एक छवि को मानों के मैट्रिक्स के रूप में सोचा जा सकता है, जहां प्रत्येक मान एक पिक्सेल की तीव्रता का प्रतिनिधित्व करता है। छवि प्रारूप तीन मुख्य प्रकार के होते हैं:

  • बाइनरी: इस प्रारूप में एक छवि को 0 (काला) और 1 (सफेद) के मान के साथ एकल 2-डी मैट्रिक्स द्वारा दर्शाया जाता है। यह छवि प्रतिनिधित्व का सबसे सरल रूप है।

Introduction To Computer Vision with Python (Part 1)

  • ग्रे-स्केल: इस प्रारूप में, एक छवि को 0 से 255 तक के मानों के साथ एकल 2-डी मैट्रिक्स द्वारा दर्शाया जाता है; जहां 0 काले को दर्शाता है और 255 सफेद को दर्शाता है। मध्यवर्ती मान भूरे रंग के विभिन्न रंगों का प्रतिनिधित्व करते हैं।

Introduction To Computer Vision with Python (Part 1)

  • आरजीबी स्केल: यहां, एक छवि को तीन 2-डी मैट्रिक्स (प्रत्येक रंग चैनल के लिए एक: लाल, हरा और नीला) द्वारा दर्शाया गया है, जिसका मान 0 से 255 तक है। प्रत्येक मैट्रिक्स में पिक्सेल मान होते हैं एक रंग घटक, और इन तीन चैनलों के संयोजन से हमें पूर्ण रंगीन छवि मिलती है।

Introduction To Computer Vision with Python (Part 1)

फिल्टर

फ़िल्टर ऐसे उपकरण हैं जिनका उपयोग कुछ परिचालनों को लागू करके छवियों को संशोधित करने के लिए किया जाता है। फ़िल्टर एक मैट्रिक्स है (जिसे कर्नेल भी कहा जाता है) जो छवि पर चलता है, इसकी विंडो के भीतर पिक्सेल मानों पर गणना करता है। हम दो सामान्य प्रकार के फ़िल्टर को कवर करेंगे: माध्य फ़िल्टर और माध्य फ़िल्टर।

माध्य फ़िल्टर

एक विंडो के भीतर पिक्सेल मानों को औसत करके शोर को कम करने के लिए एक मीन फ़िल्टर का उपयोग किया जाता है। यह विंडो में केंद्र पिक्सेल को उस विंडो के सभी पिक्सेल मानों के औसत से बदल देता है। 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()

Introduction To Computer Vision with Python (Part 1)

माध्य फ़िल्टर

एक विंडो में सभी पिक्सेल के औसत मूल्य के साथ प्रत्येक पिक्सेल के मान को प्रतिस्थापित करके शोर को कम करने के लिए एक माध्य फ़िल्टर का उपयोग किया जाता है। यह नमक और काली मिर्च के शोर को दूर करने में विशेष रूप से प्रभावी है। 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()

Introduction To Computer Vision with Python (Part 1)

कस्टम फ़िल्टर

आप अपनी छवियों पर विशिष्ट संचालन लागू करने के लिए कस्टम फ़िल्टर बना सकते हैं। 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()

Introduction To Computer Vision with Python (Part 1)

थ्रेशोल्डिंग

नोट: कोड स्निपेट में, आपको थ्रेशोल्ड छवि निर्दिष्ट करते समय _, छवि दिखाई देगी। ऐसा इसलिए है क्योंकि 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()

Introduction To Computer Vision with Python (Part 1)

ओत्सु दहलीज

ओत्सु की विधि छवि के हिस्टोग्राम के आधार पर स्वचालित रूप से इष्टतम सीमा मूल्य निर्धारित करती है। यह विधि अंतर-वर्ग विचरण को कम करती है और अंतर-वर्ग विचरण को अधिकतम करती है। थ्रेशोल्ड मान को 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()

Introduction To Computer Vision with Python (Part 1)

अनुकूली दहलीज

माध्य अनुकूली थ्रेशोल्डिंग

मीन एडेप्टिव थ्रेशोल्डिंग में, प्रत्येक पिक्सेल के लिए थ्रेशोल्ड मान की गणना उस पिक्सेल के आसपास के स्थानीय पड़ोस में पिक्सेल मानों के औसत के आधार पर की जाती है। यह विधि छवि के विभिन्न क्षेत्रों में थ्रेशोल्ड को गतिशील रूप से समायोजित करती है। 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()

Introduction To Computer Vision with Python (Part 1)

गाऊसी अनुकूली थ्रेशोल्डिंग

गॉसियन एडेप्टिव थ्रेशोल्डिंग स्थानीय पड़ोस में पिक्सेल मानों के गॉसियन-भारित योग के आधार पर प्रत्येक पिक्सेल के लिए थ्रेशोल्ड मान की गणना करता है। यह विधि अक्सर गैर-समान रोशनी वाले मामलों में बेहतर परिणाम प्रदान करती है। गाऊसी अनुकूली थ्रेशोल्डिंग में, सीमा 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()

Introduction To Computer Vision with Python (Part 1)

संदर्भ

  • Encord.com
  • Pyimagesearch.com
  • ओपनसीवी थ्रेसहोल्डिंग
  • OpenCV फ़िल्टरिंग
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/thecspandz/introduction-to-computer-vision-with-python-part-1-2kd?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3