2016-06-11 6 views
1

私は、ある曲線を描く平面上に点(x、y)の配列を持っています。 曲線を所定数の直線で分解する最も単純なアルゴリズムは何ですか?直線による直線の分解の最も簡単なアルゴリズムは何ですか?

float x[100], y[100]; // points of curve 
int lines = 5;  // straight lines 
float x_l[lines + 1], y_l[lines + 1]; // required to find 6 points for 5 lines 

直線からの曲線のすべての点の標準偏差が最小になるように最適な分解が必要です。

+2

おそらく人間の援助で、[推測と改善](https://en.wikipedia.org/wiki/Hill_climbing)最初の推測を改善するには、[変曲点と転換点](https://en.wikipedia.org/wiki/Inflection_point)を理解することが役立ちます。線分の数が変曲点および変換点の数よりも多い場合にのみ良好な近似が可能であることにも注意してください。 – user3386109

+0

「もっとも単純で最も良い」 – gpasch

+1

Douglas-Peuckerアルゴリズムを意味するのかどうかわかりません - もしそうなら、私はここで少しアニメーションをしました... http://stackoverflow.com/a/36937976/2836621 –

答えて

1

これが最も簡単かどうかわかりません...

PEREZ、Juan-Carlos; VIDAL、エンリケ。デジタル化された曲線の最適な多角形近似。 パターン認識文字,1994、15.8:743-750。

は、所与Nは、効率的 アルゴリズムが である多角形曲線を定義する、与えられたもののうち、M点を見つけることが提案されている平面内の点と一定M < Nを命じ与えられた点を にグローバルに最適化します。このアルゴリズムは、適切に定義された 誤差測定値に対応し、これらの測定値の最も一般的な使用は、計算効率を最大にするために詳細に研究された です。 提案された方法の性能および有用性を示す実験が報告されている。

+0

ありがとうございました!はい、これはまさに私が探していたものです。また、私は非常に単純なアルゴリズムを見つけましたが、M行の代わりにイプシロンを使用しました:Ramer-Douglas-Peuckerアルゴリズムhttps://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithmとその実装OpenCV 'cv :: approxPolyDP()':https://github.com/Itseez/opencv/blob/2f4e38c8313ff313de7c41141d56d945d91f47cf/modules/imgproc/src/approx.cpp#L674 – Alex

関連する問題