2012-02-26 9 views
0

2次元点の入力が与えられたら、それらを線分で分割したいと思います。したがって、ジグザグスタイルの線を描くと、各線分は線として認識されます。通常、私はOpenCVの cvHoughLinesまたは類似のアプローチ(外れ値除去器を備えたPCA)を使用しますが、この場合、プログラムは「偽陽性」エラーを出すことはできません。ユーザーが線を引いて認識されない場合 - それは大丈夫ですが、ユーザーが角を描いて角が出てきた場合、それは問題ありません。だから私はエラーの上限を持っていますが、長い行で、近似された線から離れた点がある場合は、もう一度OKです。動的ああ 一連の点から線分を認識する

エラー

を調整し、

-line検出 -no偽陽性 -bounded、そしてポイントは単に手描きのように、順番に描かれている:まとめ。

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

答えて

2

これは、音声とジェスチャの認識と同じ難しさがあります。言い換えれば、すべてのコーナー/ジャンクションを見つけたことを決して100%保証することはできません。あなたが絶対に確信できない理由はあいまいさのためです。ユーザーは、1つのストロークを作成し、直角に交差する2本の線を作成しようとしている可能性があります。しかし、彼らがすばやくそれをした場合、 '角'はかなり丸いかもしれないので、それは検出されませんでした。

偽陽性を避けることはできません。あなたができる最善の方法は、いくつかの可能性のあるセグメンテーションを探索し、コンテキスト情報を使ってどちらが最も可能性が高いかを判断することによってそれらを緩和することです。

毎年、スケッチセグメンテーションに関する論文がたくさんあります。これは解決するための非常に基本的なもののようですが、それは未だに未解決の話題です。私が使用しているのは、MergeCFと呼ばれるテキサス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

関連する問題