1

私は最近、文字の配列で機能する非常に基本的なエッジ検出アルゴリズムを作成しました。このプログラムは、配列上の単一の特定の値のブロブのエッジを検出することを目的としており、配列要素を左、右、上、下に見て、それらの値の1つが元の値と同じでないかどうかを確認するだけで機能しました。現在見ています。目標は、数学的な線を生成することではなく、記述された閉ループエッジを表す一連の順序付けられた点を生成することでした。

アルゴリズムは完全に正常に機能しますが、データに少しのノイズが含まれているため、エッジがないはずの場所にランダムにエッジが生成されます。これにより、他のいくつかのプログラムに大混乱が生じました。

データに含まれるノイズには2つのタイプがあります。最初のタイプはかなりまばらで、ややランダムです。2番目のタイプは、x=y軸上の半連続直線です。私は最初のタイプのノイズの原因、それはデータの特徴を知っています、そしてそれについて私ができることは何もありません。2番目のタイプに関しては、それを引き起こしたのは私のプログラムのせいであると私は知っています...私はそれを引き起こしている正確な手がかりを持っていませんが。

私の質問は、ノイズを完全に取り除くにはどうすればよいですか?

正しいデータには、常に隣り合った点があり、非常にコンパクトで順序付けられており(ギャップがない)、閉ループまたは複数のループであることがわかっています。最初のタイプのノイズは通常、まばらでランダムです。これは、ノイズポイントもエッジとしてカウントされる次のエッジがあるかどうかを確認することで簡単に処理できます。そうでない場合、ポイントは最も反抗的なノイズであり、削除する必要があります。

ただし、x = yについて半連続線がある、2番目のタイプのノイズは、より多くの問題を引き起こします。線はランダムな長さで連続している場合があります(最も長いのは、配列全体の途中まで途切れることなく通過したことです)。実際のエッジと交差することも可能です。

これを行う方法についてのアイデアはありますか?

4

3 に答える 3

3

通常、画像処理ではメディアンフィルター。

また、線の隙間を埋めるために、侵食(線を細くする)よりも拡張(線を大きくする)を行うことがよくあります。

于 2010-05-04T19:27:44.900 に答える
2

ノイズはより高い周波数に集中する傾向があるため、エッジ検出を行う前に、画像に対してローパスフィルターを実行します。私は、この原理がサブピクセルエッジ検出を行うために使用されるのを見てきました。

于 2010-05-04T19:36:59.030 に答える
0

これは、私が単体テストに投入するようなものです。この問題を示す最小限のデータセット(テストファイルに直接エンコードできるほど小さいもの)を取得し、テストを実行します。小さいデータセットを使用して、何が起こっているかを確認します。

于 2010-05-04T19:30:54.923 に答える