2011-11-02 10 views
19

मेरे पास वक्र बनाने वाले बिंदुओं की एक सूची है, और मैं अंक की संख्या को कम करना चाहता हूं, लेकिन फिर भी वक्र का समग्र आकार रखना चाहता हूं।अपने समग्र आकार को संरक्षित करते समय वक्र में अंकों की संख्या को कैसे कम किया जाए?

मूल रूप से, मैं इस से जाना चाहता हूँ:

enter image description here

इस के लिए:

enter image description here

तो एल्गोरिथ्म अंक कि अनावश्यक हैं निकालने, लेकिन उन है कि वास्तव में परिभाषित की रक्षा करेगा आकार (वक्र के नीचे बिंदुओं की तरह)। क्या ऐसा करने के लिए कोई ज्ञात एल्गोरिदम है? मुझे उम्मीद है कि मुझे यकीन है कि मुझे यकीन नहीं है कि Google पर क्या खोजना है। किसी भी सहायता की सराहना की जाएगी।

+5

मैं तुम्हारे लिए किसी भी एल्गोरिदम की जरूरत नहीं है, लेकिन हम आम तौर पर 'शिखर decimation' के रूप में इस प्रक्रिया को देखें। शायद वह आपके गुगलिंग में मदद करेगा। –

उत्तर

23

पर विचार करें Douglas–Peucker_algorithm

enter image description here

+0

धन्यवाद, मैं डगलस-पेकर एल्गोरिदम का उपयोग कर समाप्त हुआ जो बहुत अच्छा काम करता है। –

+1

@ this.lau_ क्या आप इस एल्गोरिदम के लिए अपना कार्यान्वयन साझा कर सकते हैं। – EmptyData

13

इसके लिए कई एल्गोरिदम हैं।

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

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

+0

धन्यवाद, लेकिन मुझे लगता है कि पहला सुझाव मेरे लिए काम नहीं करेगा क्योंकि मेरा डेटा उदाहरण के जैसा साफ नहीं है। एक दूसरे के बहुत करीब बिंदुओं के छोटे अव्यवस्था हो सकते हैं, जो कोण के बावजूद एक सिंगल बिंदु तक कम किया जाना चाहिए। बेजियर वक्र का उपयोग करने से समस्या को सरल बनाने के बजाय समस्या अधिक जटिल हो जाएगी, और प्रतिपादन धीमा कर देगा। –

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