2012-01-16 23 views
9

मेरे सवाल निमिष इस एक के समान है: OpenCV: Detect blinking lights in a video feedopenCV का पता लगाने रोशनी

मैं एक एलईडी प्रकाश है, और मेरा कैमरा 30fps पर चलाता है। प्रत्येक फ्रेम पर, मुझे पता है कि प्रकाश चालू है या नहीं। पिछले प्रश्न के समान मैं भी उस बिंदु का स्थान प्राप्त करना चाहता हूं।

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

मैं छवि प्रसंस्करण के लिए नया हूं तो मुझे इसके बारे में कैसे मिलेगा?

उत्तर

6

पृष्ठभूमि सिर्फ शोर है, लेकिन इतना भी नहीं बदलता है क्या आप backgroudn घटाव कर सकते हैं यदि:

आप 2 फ्रेम है, और आप frame2-frame1 करते हैं, तो आप एक सीमा (सीमा का मान लागू एलईडी की तीव्रता पर निर्भर करता है ताकि आपको इसका परीक्षण करना चाहिए), और आप थ्रेसहोल्ड से कम पिक्सल को काले रंग में सेट कर सकते हैं और थ्रेसहोल्ड से अधिक पिक्सल को सफ़ेद कर सकते हैं।

यदि आप अपनी छवि को ग्रेस्केल में परिवर्तित करते हैं तो यह बहुत आसान है।

इस तरह somenthign किया जाना चाहिए:

cvAbsDiff(img2, img1, img2); 
cvThreshold(img2, img2, (double)threshold_value, 255 (if you are using an rgb image), CV_THRESH_BINARY); 

यदि आपके नेतृत्व बंद है तो आप सिर्फ शोर ठीक चाहिए, जबकि अगर आप का नेतृत्व किया है पर यदि आप एक सफेद क्षेत्र में, जहां अपने प्रकाश illuminting है पाने की उम्मीद करेंगे।

+0

शोर से मेरा क्या मतलब है कि प्रकाश ही एकमात्र सफेद क्षेत्र नहीं हो सकता है। मैंने सीवीथ्रेसहोल्ड किया था, लेकिन प्रश्न यह है कि थ्रेसहोल्ड वैल्यू को सेट करना क्या है। यही कारण है कि मेरा प्रश्न सबसे बड़ा (क्षेत्रवार) प्रकाश स्रोत का पता लगाने था, क्योंकि उनमें से अधिक संभव हो सकता था। क्या ओपनसीवी में ऐसे फ़ंक्शन हैं जो "ऑब्जेक्ट" पहचान का प्रकार करते हैं? – nambrot

+0

अच्छी तरह से आप cvfindcontours लागू करने के लिए, थ्रेसहोल्डिंग के बाद कोशिश कर सकते हैं। यह सभी सफेद क्षेत्रों के समोच्चों की एक सूची लौटाता है (समोच्च cvpoints की एक सूची है)। इसके साथ आप इस क्षेत्र को अधिक अंक के साथ समरूपता के साथ देख सकते हैं, क्षेत्र को डबल कॉन्टूर एरिया (कॉन्स मैट और कॉन्टूर) की गणना करने के लिए एक फ़ंक्शन है ताकि आप सबसे बड़े सफेद क्षेत्र के लिए देख सकें (यदि किसी निश्चित मूल्य से अधिक आप अनुमान लगा सकते हैं चालू है) – andrea

+0

धन्यवाद, इससे बहुत मदद मिली। मैं इसे इस तरह कार्यान्वित करने की कोशिश करूंगा। इस बीच आपको प्रश्न मिलता है :) – nambrot

1

मुझे लगता है कि आप सिर्फ शोर को हटाने के लिए दो छवियों को प्रतिस्थापित नहीं कर सकते हैं, क्योंकि कैमरे के साथ हमेशा कुछ आंदोलन होता है .... यह स्थिर नहीं हो सकता ..... तो आप इसके बजाय गड़बड़ कर देते हैं ..

मेरी कॉल "इनरेंज" फ़ंक्शन का उपयोग करेगी, यदि कोई पिक्सेल पूरी तरह उज्ज्वल है, यानी 255 या 200 से ऊपर कहें, तो इसे छोड़ दें क्योंकि यह अन्यथा सिर्फ शून्य बना देता है ..... इस प्रकार आप बस समाप्त होते हैं नेतृत्व का हिस्सा ... पृष्ठभूमि चली गई !!

संबंधित मुद्दे