0

2Dポイントの入力を前提として、それらを線分に分割したいと思います。したがって、ジグザグスタイルの線を描画する場合は、各セグメントが線として認識される必要があります。通常、私はOpenCVのcvHoughLinesまたは同様のアプローチ(外れ値リムーバーを使用したPCA)を使用しますが、この場合、プログラムは「誤検知」エラーを発生させることはできません。ユーザーが線を引いて認識されない場合(問題ありませんが、ユーザーが曲線を描いて正方形として表示される場合)は問題ありません。したがって、エラーには上限がありますが、それが長い線であり、一部の点が近似線からの距離が遠い場合は、再び問題ありません。要約する:

-ライン検出-誤検知なし-制限付き、動的に調整されるエラー

ああ、そしてポイントは手描きのように順番に描かれます。

少なくとも、高速である必要はありません。スケッチツール用です。誰かアイデアがありますか?

4

1 に答える 1

2

これは、音声およびジェスチャ認識と同じ難しさです。言い換えれば、すべてのコーナー/ジャンクションを見つけたことを100%確信することはできません。また、見つけたものの中で、それらが正しいことを100%確信することはできません。絶対に確信が持てない理由は、あいまいさのためです。ユーザーは、直角に交わる2本の線を作成することを意図して1回のストロークを行った可能性があります。しかし、もし彼らがそれを素早くやったなら、「角」はかなり丸かったかもしれないので、それは検出されないでしょう。

したがって、誤検知を回避することはできません。あなたができる最善のことは、いくつかの可能なセグメンテーションを調査し、コンテキスト情報を使用してどれが最も可能性が高いかを判断することによって、それらを軽減することです。

スケッチのセグメンテーションに関する論文は毎年たくさんあります。これは解決すべき非常に基本的なことのように思えますが、それでも未解決のトピックです。私が使用しているのは、MergeCFと呼ばれるTexas A&Mのものです。これは、このペーパーにうまくまとめられています:http ://srlweb.cs.tamu.edu/srlng_media/content/objects/object-1246390659-1e1d2af6b25a2ba175670f9cb2e989fe/mergeCF-sbim09-fin.pdf 。

基本的に、曲率が高く(平均曲率の一部よりも大きい)速度が遅い(タイムスタンプが必要な)領域を見つけます。曲率と速度を組み合わせると、初期フィットが大幅に向上します。これにより、ポイントのクラスターが得られ、何らかの方法で単一のポイントに縮小されます(たとえば、クラスターの中央に最も近いポイント、または曲率が最も高いポイントなど)。ただし、これはストロークの「オーバーフィット」です。アルゴリズムの次の段階は、最小のセグメントを繰り返し選択し、隣接するセグメントの1つとマージされた場合に何が起こるかを確認することです。マージしても全体的なエラーがそれほど大きくならない場合は、2つのセグメントを分離しているポイントを削除します。完了するまで、すすぎ、繰り返します。

新しいセグメンターを見てからしばらく経ちましたが、ブレークスルーはなかったと思います。

私の実装では、初期しきい値の平均ではなく曲率中央値を使用しています。これにより、より良い結果が得られるようです。私の大幅に変更された実装はここにあります。これは完全に自己完結型のものではありませんが、ある程度の洞察が得られる可能性があります。http://code.google.com/p/pen-ui/source/browse/trunk/thesis-code/src/org/six11/sf/CornerFinder.java

于 2012-02-26T16:34:44.093 に答える