これはおそらく遅いですが、私はこれについて考えて、試す価値のある何かを思いつきました。
形状のセットを定義し、それぞれが少数のパラメーターでパラメーター化されます。たとえば、中間点(2つの変数)と半径(3番目の変数)を通る円、2つの端点(4つの変数)を通る線、頭のサイズの追加パラメーターを持つ線としての矢印などを定義します。の上。
これで、これを最小化問題に変換できます。パス上の各ポイントi
と各形状について、形状パラメータの関数として形状までの最小距離を決定しますdi(params)
。次に、パスが形状にどの程度似ているかを示す確率関数を定義します。デフォルトの候補は、確率論で「カイ二乗」と呼ばれるものです。
chi^2 (params) = sum_i ( di(params) )^2
これchi^2
は、各形状のパラメータの関数です。したがって、次のステップは、この量を最小化することです。通常、これにはライブラリを使用できますが、最小化ルーチンを手動で実装することもできます。
chi^2
各形状のを最小化した後、最小になる形状chi^2
は、パスに最も似ている形状です。そして、あなたはすでに最適なパラメータを持っています!
現在、これを適切に機能させるのは困難であり、多くの時間と調整が必要になります(より適切な確率関数、効率的な最小化ルーチン、適切な基本形状のセットなどを見つける)。グーグルはもっと詳細な説明を見つけます-しかし、他の情報が利用できなかった場合、これが私が始める方法です。