google-maps मैं छवि प्रसंस्करण का उपयोग कर Google मानचित्र छवि में पेड़ों को कैसे पहचानूं?



opencv image-processing (1)

मैं एक स्टेटिक मैप छवि ( बाएं छवि ) दिए गए पेड़ से ढके क्षेत्र को खोजने की कोशिश कर रहा हूं।

जिस पद्धति के बारे में मैंने सोचा था, उसमें चित्र के पिक्सेल विश्लेषण द्वारा पिक्सेल को "हिरण" पिक्सेल शुरू में शामिल किया गया था (ह्यू वैल्यू निकालने के लिए एचएसवी रंग योजना का उपयोग करके)।

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

लेकिन मैं अभी भी इमारतों की छाया के रूप में संतुष्ट नहीं हूं, या अंधेरे वस्तुएं मुझे झूठी सकारात्मक दे सकती हैं।

मैं यहां कुछ डेवलपर्स के अनुभव का उपयोग स्टैक ओवरफ्लो पर करना चाहता हूं, और सुझाव देता हूं कि कौन सा इमेज प्रोसेसिंग टूल और दृष्टिकोण मुझे इस तरह के परिदृश्य में सबसे अच्छा परिणाम देगा?


-threshold Y% साथ समस्या यह है: यह सभी पिक्सल का अनुवाद करेगा, जो काले रंग में अंधेरे हैं!

क्या आपकी छवि में आपके पास कुछ अन्य गहरा रंग (गहरा भूरा, गहरा नीला, गहरा लाल, गहरा भूरा या काला) होना चाहिए, आप इसे "लकड़ी" के रूप में गलत तरीके से पहचान लेंगे।

अगर मैं आपको सही ढंग से समझता हूं, तो आप केवल उन पिक्सल की तलाश में हैं, जो किसी प्रकार के हरे या गहरे हरे रंग के होते हैं।

इसके लिए मैं निम्नलिखित आदेश के कुछ प्रकार के साथ अपने दृष्टिकोण को बेंचमार्क करने का सुझाव दूंगा:

compare                              \
 -size 600x600                       \
 -fuzz 30%                           \
  http://i.stack.imgur.com/kqMtt.png \
  xc:'darkgreen'                     \
  output-1.png    

'Darkgreen' के बजाय आप '# 006400' के संबंधित रंग मान का उपयोग कर सकते हैं, यह वही है:

compare                              \
 -size 600x600                       \
 -fuzz 30%                           \
  http://i.stack.imgur.com/kqMtt.png \
  xc:'#006400'                       \
  output-2.png    

उपरोक्त compare आदेश निम्न विशेषताओं वाले दो इनपुट छवियों से output-1.png बनाता है:

  1. मूल छवि की तुलना एक गतिशील रूप से निर्मित ( xc: :) 600x600 पिक्सेल पैच के समान वर्दी रंग 'darkgreen' के खिलाफ की जाती है;
  2. आउटपुट मूल छवि को एक पीला पृष्ठभूमि के रूप में दिखाता है;
  3. आउटपुट लाल पिक्सल दिखाता है जहां मूल छवि के संबंधित पिक्सल 30% के 'फ़ज़ फैक्टर' के लिए लेखांकन के बाद रंग मान 'darkgreen' से अलग होते हैं (जहां '0%' का मतलब रंग मान का सटीक मिलान होगा);
  4. आउटपुट सफेद / semitransparent पिक्सेल दिखाता है जहां मूल छवि के संबंधित पिक्सल रंग 'darkgreen' (30% के फ़ज़ कारक के भीतर) के समान होते हैं।

साइड-बाय-साइड तुलना में परिणाम यहां दिया गया है:

आप निश्चित रूप से फज़ फैक्टर के साथ-साथ 'darkgreen' रंग मान की सटीक परिभाषा के साथ भी खेल सकते हैं। -fuzz 25% लिए परिणाम यहां दिया गया है:

यदि आप रंगों को विपरीत दिखाना चाहते हैं (लाल पिक्सल दिखाए जाते हैं जहां मूल छवि में हरे रंग के रंग होते हैं, पारदर्शी / सफेद होते हैं जहां पिक्सल गैर-हरे होते हैं), तुलनात्मक पैच के रूप में 'darkgreen' के उलटा रंग का उपयोग करें (यह है कुछ प्रकार की गुलाबी, बीटीडब्लू), और एक अलग फज़ फैक्टर:

compare                              \
 -size 600x600                       \
 -fuzz 70%                           \
  http://i.stack.imgur.com/kqMtt.png \
  xc:'#ff9bff'                     \
  output-3.png    

नतीजा अब है:

यदि आप आउटपुट को मूल छवि को एक पीले रंग की पृष्ठभूमि के रूप में नहीं दिखाना चाहते हैं, तो अपने आदेश में -compose src

compare                              \
 -size 600x600                       \
 -fuzz 70%                           \
  http://i.stack.imgur.com/kqMtt.png \
  xc:'#ff9bff'                       \
 -compose src                        \
  output-4.png    

आप रंग लाल भी बदल सकते हैं जो "डेल्टा" पिक्सल को किसी अन्य रंग में हाइलाइट करता है। काला का उपयोग करने के लिए:

compare                              \
 -highlight-color black              \
 -size 600x600                       \
 -fuzz 60%                           \
  http://i.stack.imgur.com/kqMtt.png \
  xc:'#ff9bff'                       \
 -compose src                        \
  output-5.png    

अब आप "मास्क" के रूप में अंतिम कमांड के परिणाम का उपयोग कर सकते हैं। उस छवि को ओवरले करें जो मूल छवि पर मुखौटा है और उन्हें इस तरह से लिखें कि परिणामस्वरूप छवि के "पेड़-केवल" भाग दिखाई दें, अन्य सभी हिस्सों को हटा दें।





imagemagick