7

以下の画像からALL Wall Edges(フロア、壁の交差点、壁の交差点を含む)を抽出する必要があります。私がcanny検出とハフ変換(確率論的)を使用する場合。それは多くの冗長で不必要な行を私に与えます。ハフ変換が実行される前に、私がcannyイメージを改良することができるかどうかを調べていました。この次 Input Image 画像からのロバストライン抽出

入力画像Iが最小値と最大値のしきい値のための0,20としてキャニーパラメータを使用していますキャニー検出アルゴリズム
によって与えられた気の利いた画像です。私は最大のしきい値に非常に高い値を使用することはできません。そうでなければ、壁のエッジは失いますが、残りの画像と比較してグラデーションは低くなります。

私は、ウィンドウ内の点の高密度クラスタを特定し、それがある閾値を超えるとゼロに設定することを考えました。

以下は、それ以降に取得されるcannyイメージです。壁の端が維持されているのがわかります。 Modified Canny Image

誰も私にこの問題を処理するより良い方法を提案できますか?私は、キニーイメージを洗練して、ランダムな点のクラスタを特定し、それらから離れてゼロにすることができるようにすることを意味します。私は窓の中で共直線点を調べることを考えていたが、それがどれほど効果的かを知らなかった。 任意のコメントは歓迎されます

答えて

7

私はあなたがハフ変換を使用した後に、最も長く、ほぼ垂直な線をフィルターにかけることができると思います。チェックアウト:link

SimpleCVは、OpenCV機能を含む単なるショートカットライブラリです。使用する必要はありません。私はあなたがアイデアを得た後にアルゴリズムを実装する際に問題に遭遇するとは思わない。

編集:はい、私はあなたの問題について詳しく考えました。前処理ステップとしてクラスタをゼロに設定することは、実際には悪くありません。ウィンドウサイズを段階的に増やすのはどうですか?私は2番目の画像を取得した後、2 *ウィンドウサイズ、同じしきい値で別のクラスタフィルタを適用することを意味します。私は、あなたがこれのように行くことができると思う、壁のエッジが取り消すことは難しいので。

別の方法として、垂直エッジが必要な場合は、クラスタフィルタリングに長方形のウィンドウ(幅> = 5 *高さ)を使用します。

また、エロージョンと膨張で遊んで、大きな面積のブロブを除外します。

別の方法として、画像の上部をチェックしてください。壁のエッジとシャンデリアのみがあります。水平に白いパターンを検索し、隣のパターンに従って接続ポイントの長さを指定することができます。その後、長いものをフィルタリングします。

+0

私は壁と床の交差点も失いたくはありません。アルゴリズムはいくつかの部屋のすべての画像にわたって一般的なものでなければなりません –

+0

なぜ単純な壁の色の検出を考えないのですか?左上または右隅から壁HSVを取得し、次に色相差>ある閾値を有する画素を除外する。その後、ローパスフィルタ(ガウスぼかし)や画像の膨張はうまくいくはずです。 – baci

+0

境界で不均一である=その理由はあなたが拡張+形態的に閉じるべきであるということです。あなたはイメージのコーナーから色を取る限り、さまざまな色=問題はありません。雷状態=ヒストグラム等化。それは私がここに持っているすべてのもの:) – baci

関連する問題