0

さて、ココア トラックパッド イベントを普遍的に受け入れるプログラムを作成し、これらのイベントを NSBezierPaths にマップします。たとえば、1 本の指からの NSBezierPath があり、それは円形 (っぽい) です。または、パスが右向きの矢印の形をしている場合もあります。または、実際には 2 つの垂直 NSBezierPath が並んでいる可能性があります。私がする必要があるのは、これらの NSBezierPaths を見て、それらが最も似ているパターン/形状を判断することです...誰かポインターを持っていますか?

ありがとう

4

2 に答える 2

1

これらは役立つかもしれません

形状認識アルゴリズム - スタック オーバーフロー

グーグル検索

これらのほとんどはビットマップを取り、形状を識別しようとします。これは複雑な領域です。

h番目

于 2012-03-27T13:02:58.950 に答える
0

これはおそらく遅いですが、私はこれについて考えて、試す価値のある何かを思いつきました。

  1. 形状のセットを定義し、それぞれが少数のパラメーターでパラメーター化されます。たとえば、中間点(2つの変数)と半径(3番目の変数)を通る円、2つの端点(4つの変数)を通る線、頭のサイズの追加パラメーターを持つ線としての矢印などを定義します。の上。

  2. これで、これを最小化問題に変換できます。パス上の各ポイントiと各形状について、形状パラメータの関数として形状までの最小距離を決定しますdi(params)。次に、パスが形状にどの程度似ているかを示す確率関数を定義します。デフォルトの候補は、確率論で「カイ二乗」と呼ばれるものです。

chi^2 (params) = sum_i ( di(params) )^2

  1. これchi^2は、各形状のパラメータの関数です。したがって、次のステップは、この量を最小化することです。通常、これにはライブラリを使用できますが、最小化ルーチンを手動で実装することもできます。

  2. chi^2各形状のを最小化した後、最小になる形状chi^2は、パスに最も似ている形状です。そして、あなたはすでに最適なパラメータを持っています!

現在、これを適切に機能させるのは困難であり、多くの時間と調整が必要になります(より適切な確率関数、効率的な最小化ルーチン、適切な基本形状のセットなどを見つける)。グーグルはもっと詳細な説明を見つけます-しかし、他の情報が利用できなかった場合、これが私が始める方法です。

于 2012-04-16T08:25:45.283 に答える