तो मेरे पास एक 2-आयामी सरणी है जो एक समन्वय विमान, एक छवि का प्रतिनिधित्व करती है। उस छवि पर, मैं अपने लाल रंग के पिक्सल की तलाश में हूं और अपने कैमरे द्वारा पाये गये सभी लाल पिक्सल के आधार पर एक लाल एलईडी लक्ष्य का स्थान ढूंढ रहा हूं (उम्मीद है)। वर्तमान में, मैं बस लाल पिक्सल के सभी के केन्द्रक पर मेरी क्रॉसहेयर थप्पड़ मारने हूँ:एक ऐरे का भारित केंद्र
// pseudo-code
for(cycle_through_pixels)
{
if(is_red(pixel[x][y]))
{
vals++; // total number of red pixels
cx+=x; // sum the x's
cy+=y; // sum the y's
}
}
cx/=vals; // divide by total to get average x
cy/=vals; // divide by total to get average y
draw_crosshairs_at(pixel[cx][cy]); // found the centroid
इस विधि के साथ समस्या यह है कि इस एल्गोरिथ्म स्वाभाविक रूप से केन्द्रक सबसे बड़ा ब्लॉब (के साथ क्षेत्र के करीब देता है, जबकि सबसे लाल पिक्सेल), मैं अब भी अपने क्रॉसहेयर को लक्ष्य से कूद रहा हूं जब चमक या अन्य मामूली इंटरफेस के कारण लाल झिलमिलाहट थोड़ी दूर हो जाती है।
मेरा प्रश्न यह है:
मैं कैसे इस पद्धति एक अधिक भारित केन्द्रक देखने के लिए बदल सकता हूँ? बस रखो, मैं छोटे से बड़े ब्लॉब्स को छोटे से अधिक महत्वपूर्ण बनाना चाहता हूं, संभवतः दूर-दूर छोटे ब्लब्स को पूरी तरह से अनदेखा करना भी चाहता हूं।
यदि आपको बाईं ओर और अपने विमान के दाईं ओर स्थित लाल बिंदुओं को "समान" करना था। क्या सेंट्रॉइड एल्गोरिदम छवि के केंद्र में आपके क्रॉस-हेयर नहीं खींचेगा जहां लाल नहीं है? समस्या तब भी बनी रहेगी जब आपने समीकरण में वजन जोड़ा, भले ही इसकी संभावना कम हो। – aLevelOfIndirection
हां, यह एक ऐसा मामला है जिसमें एल्गोरिदम काफी भयानक प्रदर्शन करता है। हालांकि, यह सब एक वास्तविक प्रदर्शन से संबंधित है जो मैं एक विशिष्ट लक्ष्य की ट्रैकिंग को शामिल करने की योजना बना रहा हूं, और विचार यह है कि कुछ हस्तक्षेप होने पर, क्षेत्र पर लक्ष्य के समान कुछ भी नहीं होना चाहिए (यह है एक बहुत ही अलग लक्ष्य)। यहां विचार यह है कि एल्गोरिदम लाल रंग के मेरे बड़े स्रोत पर अधिक ध्यान देना है, जबकि इसे "लॉक ऑन" रखने की कुछ क्षमता बनाए रखने के लिए अगर यह दूर या थोड़ा बाधा हो जाता है। – Andrew