2011-06-15 15 views
8

मैं एल्गोरिदम का सही सेट इस इमेज प्रोसेसिंग समस्या को हल करने के लिए देख रहा हूँ:छवि (OpenCV) में विकृत आयत का पता लगाएं

  • मैं एक विकृत आयत
  • मैं खोजने की जरूरत है जिसमें एक विकृत द्विआधारी छवि है इस आयत

मैं समोच्च OpenCV का उपयोग कर की गणना कर सकते हैं, लेकिन के रूप में छवि विकृत है यह अक्सर एक से अधिक 4 कोने अंक में शामिल होंगे 4 कोने अंक की एक अच्छा सन्निकटन। क्या बाइनरी छवि या समोच्च विवरण का उपयोग करते हुए आयताकार कोने बिंदु खोजने के लिए कोई अच्छा अनुमान एल्गोरिदम (अधिमानतः ओपनसीवी ऑपरेशंस का उपयोग करना) है?

छवि इस तरह दिखता है:

enter image description here

धन्यवाद!

डेनिस

+1

हमेशा की तरह इस तरह के सवालों के साथ, नमूना छवियों बहुत मददगार होगा। – etarion

+0

मैंने एक छवि जोड़ा, मुझे आशा है कि इससे समाधान खोजने में मदद मिलेगी। –

उत्तर

5

अपने समोच्च के नोड्स की संख्या को खत्म करने के लिए cvApproxPoly फ़ंक्शन का उपयोग करें, फिर उन समोच्चों को फ़िल्टर करें जिनमें बहुत सारे नोड्स हैं या कोण हैं जो 90 डिग्री से भिन्न हैं। यह भी देखें similar answer

0

मैं सामान्यीकृत Hough रूपांतरण यह थोड़ा विकृत/अधूरा आकार के साथ धीमी गति से लेकिन सौदों में अच्छी तरह से है की कोशिश करेंगे। opencv समारोह ApproxPoly पर

http://en.wikipedia.org/wiki/Hough_transform

1

देखो। यह एक समोच्च से बहुभुज अनुमानित करता है।

0
  1. यह भले ही आप कुछ दोष, यानी अपने approxPolly कॉल रिटर्न मन में दबा/hexagons के साथ शुरू काम करेंगे देखने । यह किसी भी समोच्च, ट्रांसकंटोर को उदाहरण में, एक ट्रैक्टर, या जो भी पॉली आप चाहते हैं उसे कम कर देगा।
  2. vector<Point> cardPoly;// Quad storage 
    int PolyLines = 0;//PolyPoly counter ;) 
    double simplicity = 0.5;//Increment of adjustment, lower numbers may be more precise vs. high numbers being faster to cycle. 
    while(PolyLines != 4)//Adjust this 
    { 
        approxPolyDP(transContours, Poly, simplicity, true); 
        PolyLines = Poly.size(); 
        simplicity += 0.5; 
    } 
    
संबंधित मुद्दे