Jeffrey Cross
Jeffrey Cross

मेकिंग फन: कम्प्यूटर विजन हेयर ट्रिमर

मुझे एक निर्माता बनाने का एक हिस्सा यह है कि जब मैं कर सकता हूं तो मैं खुद चीजों को करना पसंद करता हूं। मैंने अपने बाल भी कटवा लिए। कुछ भी नहीं फैंसी, तुम मन, बस एक त्वरित चर्चा एक ट्रिमर के साथ कटौती। ट्रिकी हिस्सा, हालांकि, गर्दन के पीछे एक अच्छी लाइन काट रहा है। यह केवल ट्रिम करना मुश्किल नहीं है, यहां तक ​​कि कई दर्पणों का उपयोग करना, लेकिन यह काफी स्पष्ट है जब मैं नहीं रख रहा हूं। आमतौर पर मैं अपनी पत्नी से मेरी मदद करने के लिए कहता हूं, लेकिन मुझे आत्मनिर्भर होना पसंद है, और यह देखने का फैसला किया कि क्या खुद को ट्रिम करने का एक मजेदार और शैक्षिक तरीका था।

इस समस्या को ध्यान में रखते हुए, मेरे दिमाग में जो दो चीजें आईं, वे थे कंप्यूटर विज़न और स्वचालित भारी उपकरण। मुझे लगा कि मैं अपने सिर और ट्रिमर को ट्रैक करने के लिए कंप्यूटर विज़न का उपयोग कर सकता हूं, और इसके अलावा, मैं लंबे समय से कंप्यूटर विज़न के बारे में जानने का बहाना ढूंढ रहा हूं। मैंने निर्माण उपकरण को एक मॉडल के रूप में सोचा क्योंकि बुलडोजर के लिए कुछ नियंत्रण प्रणाली मशीन का पता लगाने के लिए जीपीएस का उपयोग करते हैं, और फिर साइट की योजना के अनुसार ब्लेड को समायोजित करते हैं। सिद्धांत रूप में, बुलडोजर ऑपरेटर बस साइट पर कई बार आगे और पीछे चला सकता है, और नियंत्रण प्रणाली ब्लेड की ऊंचाई को पूरी तरह से मूर्तिकला साइट में परिणाम करने के लिए संभाल लेगी। मैंने एक ट्रिमर बनाने के लिए सेट किया, जिसे मैं आँख बंद करके अपनी गर्दन के पीछे चला सकता हूं, और इसकी स्थिति के अनुसार यह अपने आप चालू या बंद हो जाएगा।

मेरे शोध ने reacTIVision के नाम से एक शानदार ओपन सोर्स कंप्यूटर विज़न फ्रेमवर्क तैयार किया। इसमें विशेष ग्राफिक्स शामिल हैं जिन्हें फ़िड्यूशियल मार्कर कहा जाता है जो प्रिंट आउट होते हैं और मान्यता और ट्रैकिंग के लिए भौतिक वस्तुओं से चिपकाए जाते हैं। हालांकि मल्टीटच टेबल्स के लिए डिज़ाइन किया गया है, सिस्टम अधिक लचीला है जो अधिक से अधिक दूरी पर उपयोग किया जा सकता है, जब तक कि मार्कर उचित आकार के होते हैं। मुझे बस इतना करना था कि ट्रिमर और मेरे सिर पर कुछ मार्कर चिपका दिए गए थे, और रीसर्किटिव एप्लिकेशन से मार्करों के एक्स और वाई निर्देशांक प्राप्त करने के लिए एक प्रोसेसिंग स्केच लिखें, और फिर ट्रिमर की बैटरी पावर को आवश्यक रूप से नियंत्रित करने के लिए एक Arduino का उपयोग करें।

यह परियोजना न केवल सीधी है, बल्कि सस्ती भी है। रिएक्विविज़न लाइब्रेरी का उपयोग करने के लिए स्वतंत्र है और मार्करों को घर पर मुद्रित किया जा सकता है। मैंने अपने घर के पीछे जंगल में निर्माणाधीन हेलमेट को छोड़ दिया, लेकिन आप उन्हें अपने स्थानीय घरेलू स्टोर पर $ 5- $ 15 में पा सकते हैं। इसके लिए हार्ड हैट्स बहुत बढ़िया हैं क्योंकि बाहरी खोल पर बढ़ते रहने के लिए उनके अंदर एक एडजस्टेबल हेड हार्नेस है और भरपूर जगह है। मैं एक छोटी बैटरी चालित ट्रिमर ($ 20) का उपयोग करने की सलाह देता हूं और दीवार के आउटलेट द्वारा संचालित किसी चीज के साथ खिलवाड़ नहीं करता हूं। कोई भी Arduino बोर्ड ट्रिमर को नियंत्रित करने के लिए एक रिले को नियंत्रित कर सकता है, लेकिन मैंने Arduino Micro का उपयोग किया क्योंकि यह छोटा है और बोर्ड पर USB जैक है। मैंने कोई Arduino कोड नहीं लिखा है, बस Arduino IDE से फर्मेटा स्केच अपलोड किया है, जो Arduino को प्रोसेसिंग स्केच से नियंत्रित करने देता है।

ReacTIVision एप्लिकेशन लैपटॉप के कैमरे की निगरानी करता है और फिड्यूसियल्स के पदों को भेजता है। प्रसंस्करण स्केच, अभिकर्मक अनुप्रयोग से प्राप्त होने वाली फ़िड्यूशियल स्थिति रिपोर्ट को सुनता है और हेलमेट के बाएँ फ़िड्यूशियल मार्कर की स्थिति और हेलमेट के सही फ़्यूड्यूशियल मार्कर की स्थिति के बीच की रेखा की गणना करता है। यह तब ट्रिमर के फिड्यूशियल मार्कर की स्थिति को एक सूत्र के माध्यम से चलाता है जो निर्धारित करता है कि ट्रिमर हेलमेट के मार्करों के बीच की रेखा के ऊपर या नीचे है या नहीं। यदि कोई भी फ़िड्यूशियल गायब है, तो यह "ERROR" प्रदर्शित करता है और ट्रिमर को बंद कर देता है। यदि ट्रिमर कट लाइन से ऊपर है, तो यह "KEEP" प्रदर्शित करता है और ट्रिमर को बंद कर देता है। अगर ट्रिमर कट लाइन के नीचे है, तो यह "कट" प्रदर्शित करता है और ट्रिमर को चालू करता है। स्केच इस प्रकार है, और अभिकर्मक के साथ शामिल उदाहरण कोड का केवल एक हल्का संशोधित संस्करण है:

आयात TUIO। *; आयात java.util। *; आयात प्रसंस्करण। सामान्य; * आयात cc.arduino। *; अर्डुइनो अर्डुइनो; TuioProcessing tuioClient; बूलियन ट्रिमर_स्टेट = गलत; फ्लोट कर्सर_साइज़ = 15; फ्लोट ऑब्जेक्ट_साइज़ = 60; फ्लोट टेबल_साइज = 760; फ्लोट स्केल_फैक्टर = 1; PFont फ़ॉन्ट; शून्य सेटअप () {आकार (800,600); noStroke (); (0) को भरने; पाश (); FRAMERATE (30); संकेत (ENABLE_NATIVE_FONTS); फ़ॉन्ट = createFont ("एरियल", 18); scale_factor = height / table_size; tuioClient = नई TuioProcessing (यह); println (Arduino.list ()); Arduino = नया Arduino (यह, Arduino.list () [0], 115200); for (int i = 0; i <= 13; i ++) arduino.pinMode (i, Arduino.OUTHUT); } शून्य ड्रा () {पृष्ठभूमि (255); textFont (फ़ॉन्ट, 18 * scale_factor); float obj_size = object_size * scale_factor; float cur_size = कर्सर_size * scale_factor; TuioObject l_ear = null; TuioObject r_ear = null; TuioObject ट्रिमर = अशक्त; वेक्टर tuioObjectList = tuioClient.getTuioObjects (); for (int i = 0; मैं; 0) {arduino.digitalWrite (12, Arduino.HIGH); भरने (255,0,0); पाठ ("कट", 30, 150); } और {arduino.digitalWrite (12, Arduino.LOW); भरने (0,255,0); पाठ ("केईईपी", 30, 150); } वेक्टर tuioCursorList = tuioClient.getTuioCursors (); for (int i = 0; मैं;0) {स्ट्रोक (0,0,255); TuioPoint start_point = (TuioPoint) pointList.firstElement () ;; for (int j = 0; j 0) अगर यह "सही" पर है। * http://wiki.processing.org/w/Find_which_side_of_a_line_a_point_is_on * / float linePointPosition2D (फ्लोट एक्स 1, फ्लोट वाई 1, फ्लोट एक्स 2, फ्लोट वाई 2, फ्लोट वाई 3, फ्लोट वाई 3) {वापसी (x2 - x3) * (3) *। ) - (y2 - y1) * (x3 - X1); }

मुझे अपने पुराने मैक पर चलने वाले ओएस 10.6 पर काम करने के लिए प्रसंस्करण का एक पुराना संस्करण चलाना पड़ा। मुझे Arduino पर दोमाता के विभिन्न संस्करणों की कोशिश करनी थी, लेकिन अलग-अलग हार्डवेयर के साथ, आपका माइलेज अलग-अलग हो सकता है। प्रयोग करने से डरें नहीं।

पुराने कंप्यूटरों के विषय में, मेरा केवल 20 फ्रेम प्रति सेकंड की दर से वीडियो को संसाधित करने में सक्षम था। यह अनुमान है कि यदि मैं यह संख्या अधिक प्राप्त कर सकता हूं तो परिणामी बाल कटवाने में बहुत सुधार होगा। यदि आप वीडियो को करीब से देखते हैं, तो आप मेरी "बड़ी यादों" में से एक को देखेंगे जहां मैं "कट" ज़ोन में ट्रिमर है और मेरा चिकोटी हाथ इसे "कीप" ज़ोन में और ट्रिमर से पहले मेरे सिर में रखता है। कामोत्तेजित। मेरे हाथ को धीमा करने में मदद मिलेगी। मैं एक रास्पबेरी पाई या बीगलबोर्ड पर आधारित इस प्रणाली के निर्माण की उम्मीद कर रहा था, लेकिन जब मैंने देखा कि धीरे-धीरे मेरे लैपटॉप और डेस्कटॉप कैसे प्रसंस्करण फ्रेम कर रहे थे, तो मैंने शक्ति और पोर्टेबिलिटी के संतुलन के लिए लैपटॉप के साथ छड़ी करने का फैसला किया।

जैसा कि आप वीडियो के आखिरी शॉट से देख सकते हैं, मैं पहले सिस्टम टेस्ट में सही बाल कटवाने में सक्षम नहीं था। हालांकि, हमेशा अगले महीने के बाल कटवाने होते हैं, और मैं यह उम्मीद कर रहा हूं कि मैंने आपके लिए पर्याप्त रूप से बाहर निकलते समय शुरू करने के लिए पर्याप्त दिखाया है कि आपके पास इस नए आविष्कार किए गए कंप्यूटर विज़न हेयर ट्रिमिंग तकनीक के निर्माण और सुधार में अपना स्वयं का रोमांच है।

पूरी श्रृंखला यहां देखें।

शेयर

एक टिप्पणी छोड़