2015-05-22 10 views
10

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

निम्नलिखित यह मुश्किल बनाता है:

  • क्षितिज शायद ही कभी इस्तेमाल (पहाड़ी परिदृश्य) छवियों में एक सीधी रेखा है, इसलिए एक किनारे का पता लगाने और Hough लाइन को बदलने से काम नहीं चलेगा है।
  • इसे सभी प्रकाश स्थितियों में काम करने की आवश्यकता है। थ्रेसहोल्डिंग (जैसे ओत्सु थ्रेसहोल्डिंग) काम करता है लेकिन कम विपरीत स्थितियों जैसे कि सूर्योदय से पहले अच्छी तरह से काम नहीं करता है। फिक्स्ड वैल्यू थ्रेसहोल्डिंग काम नहीं करती क्योंकि प्रकाश पूरे दिन बहुत ज्यादा बदल जाता है।

जो मैंने अभी कोशिश की है वह कम संतृप्ति तक सीमित रंग फ़िल्टर का उपयोग करना है, फिर समोच्च ढूंढें और सबसे बड़ा समोच्च पहचानें और भरें। इसके बाद, मैं समोच्च के ऊपर क्षेत्र भरने बाढ़। यह काम करता है, लेकिन मैं अभी भी इस समस्या को इतना कठिन नहीं समझ सकता।

मैं ओपनसीवी रैपर का उपयोग करके डेल्फी एक्सई 8 में कोड लिख रहा हूं, लेकिन किसी अन्य भाषा में उत्तर या विचारों का स्वागत है!

+2

"मैं डेल्फी XE8 में कोड लिख रहा हूँ, एक OpenCV आवरण का उपयोग कर," रोशनी सामान्यीकरण के लिए रेटिना – berak

+3

'अधिकांश मनुष्यों को क्षितिज का पता लगाने में कोई समस्या नहीं है' - अधिकांश मनुष्यों के पास पैटर्न पहचान और दृश्य समझ में कुछ प्राकृतिक या सीखा अनुभव होता है। – Micka

+5

आपने शायद पहले से ही Google का उपयोग किया है? मुझे कुछ लिंक और http: // stackoverflow दे रहा है।कॉम/प्रश्न/4705837/क्षितिज-पहचान-एल्गोरिदम (जिसमें कुछ Google लिंक दोबारा शामिल हैं) – Micka

उत्तर

1

मेरी समझ में आप एक क्षैतिज रेखा की तलाश में हैं - यदि अस्तित्व में है - तो शेष से विशेष रूप से आकाश भाग को अलग करने के लिए।

मैं पंक्ति द्वारा छवि आंकड़े पंक्ति की गणना करूंगा, इसलिए एक क्षैतिज हिस्टोग्राम या उसके समान।

यह वैश्विक सीमा या कस्टम 'स्काईनेस' फ़ंक्शन पर भी आधारित हो सकता है। किसी भी तरह (तीव्रता, रंग) तय करें यदि पिक्सेल आकाश हैं या नहीं और उन्हें स्कैनलाइन के भीतर गिनें।

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

इस समस्या में निश्चित रूप से अन्य दृष्टिकोण हैं इसलिए मैं और सुझाव देखने की उम्मीद कर रहा हूं।

0

उदाहरण के लिए आप http://mi.eng.cam.ac.uk/projects/segnet/ जैसे संकल्पक गहरे तंत्रिका नेटवर्क को आजमा सकते हैं, या अपने स्वयं के समान नेटवर्क को प्रशिक्षित कर सकते हैं।

1

मेरा उत्तर पूरी तरह से अलग है। जमीन से आसमान को अलग करने के लिए आप ओपनसीवी को चुंबकीय कंपास से जोड़ सकते हैं।

आप आईओएस के साथ ओपनसीवी में ऐसा कर सकते हैं। आईफोन में मौजूद कंपास के साथ अपनी ओपनसीवी परियोजना को लिंक करें। फिर आकाश से आकाश को अलग करें जैसे कि कंपास ऐप ने क्या किया। कि भयानक लग रहा है ओह, क्योंकि आप शायद अधिक उन्नत C++ सुविधाओं, CLAHE या bioinspired की तरह उपयोग नहीं कर सकते :: -

देखें http://imgur.com/bwLpaOC

+0

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

+0

मुझे पता है कि यह थोड़ा चुनौतीपूर्ण है। लेकिन यह कुछ लायक है। – AlkindiX