19 KiB
कम्प्युटर भिजनको परिचय
कम्प्युटर भिजन एउटा क्षेत्र हो जसको उद्देश्य कम्प्युटरलाई डिजिटल छविहरूको उच्च-स्तरीय बुझाइ दिनु हो। यो परिभाषा धेरै व्यापक छ, किनभने बुझाइ ले धेरै कुराहरू जनाउन सक्छ, जस्तै तस्बिरमा वस्तु पत्ता लगाउने (वस्तु पहिचान), के भइरहेको छ बुझ्ने (घटना पहिचान), तस्बिरलाई पाठमा वर्णन गर्ने, वा दृश्यलाई 3D मा पुनर्निर्माण गर्ने। मानव छविसँग सम्बन्धित विशेष कार्यहरू पनि छन्: उमेर र भावनाको अनुमान, अनुहार पहिचान र चिन्नु, र 3D पोज अनुमान, केही उदाहरणका लागि।
पूर्व-व्याख्यान क्विज
कम्प्युटर भिजनको सबैभन्दा सरल कार्यहरू मध्ये एक हो छवि वर्गीकरण।
कम्प्युटर भिजनलाई प्राय: AI को शाखा मानिन्छ। आजकल, कम्प्युटर भिजनका अधिकांश कार्यहरू न्युरल नेटवर्कहरू प्रयोग गरेर समाधान गरिन्छ। हामी कम्प्युटर भिजनका लागि प्रयोग हुने विशेष प्रकारका न्युरल नेटवर्कहरू, कन्भोल्युसनल न्युरल नेटवर्कहरू, यस खण्डमा सिक्नेछौं।
तर, छवि न्युरल नेटवर्कमा पठाउनु अघि, धेरै अवस्थामा छवि सुधार गर्न केही एल्गोरिदमिक प्रविधिहरू प्रयोग गर्नु उपयुक्त हुन्छ।
छवि प्रशोधनका लागि उपलब्ध केही पायथन पुस्तकालयहरू छन्:
- imageio विभिन्न छवि ढाँचाहरू पढ्न/लेख्न प्रयोग गर्न सकिन्छ। यसले ffmpeg पनि समर्थन गर्दछ, जुन भिडियो फ्रेमलाई छविमा रूपान्तरण गर्न उपयोगी उपकरण हो।
- Pillow (PIL को रूपमा पनि चिनिन्छ) अलि शक्तिशाली छ, र केही छवि हेरफेर जस्तै मोर्फिङ, प्यालेट समायोजन, र अन्य कुराहरू समर्थन गर्दछ।
- OpenCV C++ मा लेखिएको शक्तिशाली छवि प्रशोधन पुस्तकालय हो, जुन छवि प्रशोधनको डि फ्याक्टो मानक बनिसकेको छ। यसमा पायथन इन्टरफेस छ।
- dlib C++ पुस्तकालय हो जसले धेरै मेसिन लर्निङ एल्गोरिदमहरू कार्यान्वयन गर्दछ, जसमा केही कम्प्युटर भिजन एल्गोरिदमहरू पनि समावेश छन्। यसमा पायथन इन्टरफेस छ, र अनुहार तथा अनुहारको विशेषता पहिचान जस्ता चुनौतीपूर्ण कार्यहरूका लागि प्रयोग गर्न सकिन्छ।
OpenCV
OpenCV छवि प्रशोधनको डि फ्याक्टो मानक मानिन्छ। यसमा धेरै उपयोगी एल्गोरिदमहरू छन्, जुन C++ मा कार्यान्वयन गरिएको छ। तपाईं OpenCV लाई पायथनबाट पनि कल गर्न सक्नुहुन्छ।
OpenCV सिक्नको लागि राम्रो ठाउँ यो Learn OpenCV कोर्स हो। हाम्रो पाठ्यक्रममा, हाम्रो उद्देश्य OpenCV सिक्नु होइन, तर केही उदाहरणहरू देखाउनु हो जहाँ यसलाई प्रयोग गर्न सकिन्छ, र कसरी।
छवि लोड गर्ने
पायथनमा छविहरूलाई सजिलैसँग NumPy एरेहरूद्वारा प्रतिनिधित्व गर्न सकिन्छ। उदाहरणका लागि, 320x200 पिक्सेलको साइज भएको ग्रेस्केल छविहरूलाई 200x320 एरेमा भण्डारण गरिन्छ, र समान आयामको रंगीन छविहरूको आकार 200x320x3 हुन्छ (3 रंग च्यानलहरूको लागि)। छवि लोड गर्न, तपाईं निम्न कोड प्रयोग गर्न सक्नुहुन्छ:
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('image.jpeg')
plt.imshow(im)
परम्परागत रूपमा, OpenCV ले रंगीन छविहरूको लागि BGR (ब्लू-ग्रीन-रेड) इन्कोडिङ प्रयोग गर्दछ, जबकि पायथनका अन्य उपकरणहरूले अधिक परम्परागत RGB (रेड-ग्रीन-ब्लू) प्रयोग गर्दछ। छवि सही देखिनको लागि, तपाईंले यसलाई RGB रंग स्पेसमा रूपान्तरण गर्न आवश्यक छ, या त NumPy एरेमा आयामहरू स्वाप गरेर, या OpenCV फंक्शन कल गरेर:
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
उही cvtColor फंक्शन अन्य रंग स्पेस रूपान्तरणहरू जस्तै छविलाई ग्रेस्केलमा वा HSV (Hue-Saturation-Value) रंग स्पेसमा रूपान्तरण गर्न प्रयोग गर्न सकिन्छ।
तपाईं OpenCV प्रयोग गरेर भिडियो फ्रेम-बाइ-फ्रेम लोड गर्न पनि सक्नुहुन्छ - उदाहरण OpenCV Notebook मा दिइएको छ।
छवि प्रशोधन
छवि न्युरल नेटवर्कमा पठाउनु अघि, तपाईंले केही पूर्व-प्रशोधन चरणहरू लागू गर्न चाहनुहुन्छ। OpenCV ले धेरै कुराहरू गर्न सक्छ, जस्तै:
- छवि आकार परिवर्तन
im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)प्रयोग गरेर - ब्लरिङ
im = cv2.medianBlur(im,3)वाim = cv2.GaussianBlur(im, (3,3), 0)प्रयोग गरेर - छविको चमक र कन्ट्रास्ट परिवर्तन NumPy एरे हेरफेरद्वारा गर्न सकिन्छ, जस्तै यो Stackoverflow नोटमा वर्णन गरिएको छ।
- थ्रेसहोल्डिङ प्रयोग गरेर
cv2.threshold/cv2.adaptiveThresholdफंक्शनहरू कल गर्नु, जुन प्राय: चमक वा कन्ट्रास्ट समायोजन गर्नभन्दा राम्रो हुन्छ। - छविमा विभिन्न रूपान्तरणहरू लागू गर्नु:
- Affine रूपान्तरणहरू उपयोगी हुन सक्छ यदि तपाईंलाई छविमा तीन बिन्दुको स्रोत र गन्तव्य स्थान थाहा छ र तपाईंले घुमाउने, आकार परिवर्तन गर्ने र झुकाउने संयोजन गर्न आवश्यक छ। Affine रूपान्तरणहरूले समानान्तर रेखाहरू समानान्तर राख्छ।
- Perspective रूपान्तरणहरू उपयोगी हुन सक्छ जब तपाईंलाई छविमा चार बिन्दुको स्रोत र गन्तव्य स्थान थाहा छ। उदाहरणका लागि, यदि तपाईंले स्मार्टफोन क्यामेराबाट कोणबाट आयताकार कागजातको तस्बिर लिन्छन्, र तपाईंले कागजातको आयताकार छवि बनाउन चाहनुहुन्छ।
- छविभित्रको गति बुझ्न optical flow प्रयोग गरेर।
कम्प्युटर भिजन प्रयोगका उदाहरणहरू
हाम्रो OpenCV Notebook मा, हामी केही उदाहरणहरू दिन्छौं जहाँ कम्प्युटर भिजन विशिष्ट कार्यहरू गर्न प्रयोग गर्न सकिन्छ:
- ब्रेल पुस्तकको तस्बिर पूर्व-प्रशोधन। हामी थ्रेसहोल्डिङ, विशेषता पहिचान, परिप्रेक्ष्य रूपान्तरण र NumPy हेरफेरहरू प्रयोग गरेर ब्रेल प्रतीकहरूलाई अलग गर्नेमा केन्द्रित छौं ताकि न्युरल नेटवर्कद्वारा थप वर्गीकरण गर्न सकियोस्।
![]() |
![]() |
![]() |
|---|
छवि OpenCV.ipynb बाट
- फ्रेम भिन्नता प्रयोग गरेर भिडियोमा गति पत्ता लगाउने। यदि क्यामेरा स्थिर छ भने, क्यामेरा फिडका फ्रेमहरू एकअर्कासँग धेरै समान हुनुपर्छ। किनभने फ्रेमहरू एरेको रूपमा प्रतिनिधित्व गरिन्छ, दुई लगातार फ्रेमहरूको एरे घटाएर हामी पिक्सेल भिन्नता प्राप्त गर्नेछौं, जुन स्थिर फ्रेमहरूको लागि कम हुनुपर्छ, र छविमा पर्याप्त गति हुँदा उच्च हुन्छ।
छवि OpenCV.ipynb बाट
-
Optical Flow प्रयोग गरेर गति पत्ता लगाउने। Optical flow ले हामीलाई भिडियो फ्रेमहरूमा व्यक्तिगत पिक्सेलहरू कसरी सर्छन् भन्ने बुझ्न अनुमति दिन्छ। Optical flow का दुई प्रकार छन्:
- Dense Optical Flow प्रत्येक पिक्सेल कहाँ सर्छ भन्ने देखाउने भेक्टर फिल्ड गणना गर्छ।
- Sparse Optical Flow छविमा केही विशिष्ट विशेषताहरू (जस्तै किनाराहरू) लिन्छ, र फ्रेमदेखि फ्रेमसम्म तिनको ट्राजेक्टोरी बनाउँछ।
छवि OpenCV.ipynb बाट
✍️ उदाहरण नोटबुकहरू: OpenCV OpenCV प्रयोग गरेर हेर्नुहोस्
OpenCV Notebook OpenCV.ipynb अन्वेषण गरेर केही प्रयोग गरौं।
निष्कर्ष
कहिलेकाहीं, जटिल कार्यहरू जस्तै गति पत्ता लगाउने वा औंलाको टुप्पो पत्ता लगाउने कार्यहरू केवल कम्प्युटर भिजनद्वारा समाधान गर्न सकिन्छ। त्यसैले, कम्प्युटर भिजनका आधारभूत प्रविधिहरू र OpenCV जस्ता पुस्तकालयहरूले के गर्न सक्छन् भन्ने जान्नु धेरै उपयोगी हुन्छ।
🚀 चुनौती
AI शोको यो भिडियो हेर्नुहोस् Cortic Tigers परियोजनाको बारेमा जान्न र कसरी उनीहरूले रोबोटमार्फत कम्प्युटर भिजन कार्यहरूलाई लोकतान्त्रिक बनाउन ब्लक-आधारित समाधान निर्माण गरे। यस क्षेत्रमा नयाँ सिक्नेहरूलाई सहयोग गर्ने अन्य परियोजनाहरूको बारेमा अनुसन्धान गर्नुहोस्।
पश्चात-व्याख्यान क्विज
समीक्षा र आत्म अध्ययन
Optical flow को बारेमा यो उत्कृष्ट ट्यूटोरियल पढ्नुहोस्।
असाइनमेन्ट
यस प्रयोगशालामा, तपाईंले साधारण इशाराहरू भएको भिडियो लिनेछ, र तपाईंको लक्ष्य Optical Flow प्रयोग गरेर माथि/तल/बायाँ/दायाँको गति निकाल्नु हुनेछ।
अस्वीकरण:
यो दस्तावेज़ AI अनुवाद सेवा Co-op Translator प्रयोग गरी अनुवाद गरिएको हो। हामी यथासम्भव सटीकता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छन्। यसको मूल भाषामा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्त्वपूर्ण जानकारीका लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याका लागि हामी जिम्मेवार हुने छैनौं।




