/ / sobelフィルタリング後のノイズ除去方法 - opencv、エッジ検出、画像分割

どのようにsobelのフィルタリング後のノイズを排除するには? - opencv、エッジ検出、イメージセグメンテーション

私の質問は簡単です。 Sobelフィルタリングを中央値フィルター処理されたグレー画像に行いました。ソーベルフィルタ処理された画像は

テクスチャフロア内の長方形オブジェクト]![テクスチャフロア内の長方形オブジェクト

長方形のオブジェクトは私の興味の対象です。画像から抽出しようとしています。

あなたが見ることができるように、オブジェクトと一緒に、もっとノイズがあります 床の質感による。したがって、エッジ画像は次のようになります(偽のエッジが多くなります)。

ここに画像の説明を入力

ソーベルフィルタ処理後のノイズを除去する方法それとも、どのように私はこのハードルを克服するのですか?

あなたの提案やガイダンスは、私が画像処理とその課題を理解するのに大いに役立つでしょう。

ありがとうございました

回答:

回答№1は5

ノイズ除去は大事です。主な答えはそれです:それはあなたがしなければならないことによって異なります。

まず第一に、あなたは可能な限り最高の画像をフィルタに与える必要があるので、ぼかし、しきい値、または ヒストグラム均等化.

それから、形態素演算子は通常進むのに一般的な方法です。これらの演算子についての文書がいくつかあります。 ここに または ここに.

それから、あなたはあなたがこのイメージをどうしなければならないかに応じて進むことができます。たとえば、ブロブ検出を目的としている場合は、ブロブをフィルタリングして、最小のブロブを削除して面積を計算することができます。 画像の瞬間.

あるいは、あなたがラインを検出する必要があるならば、見てみるようにしてください ハフ変換.

編集:ブロブとopencv

ブロブ検出に関するネット上のチュートリアルをたくさん見つけることができます。あなたがそれが何であるかを知らないならば、少しグーグルすることがより良い、それはコンピュータビジョンの基本的な部分です。ここにいくつかのリンクがあります: ここに, ここに, ここに, ここに または ここに。 opencvバージョン2.4.8にもBLOB抽出のための組み込みクラスがあります。 ここに. この メインを説明する簡単なチュートリアルです cv::findContours 関数。

言い換えれば、ブロブ検出はバイナリ画像(白黒、 CV_8U)を区切る一連の輪郭を返します。 接続コンポーネント 地域等高線(またはブロブ)は、実際には形状を区切る2次元点のベクトルです。面積、重心などのいくつかの特性を見つけることができます。

それは少しいくつかの画像処理とコンピュータビジョンの基礎を勉強することをお勧めします、私はあなたにこの有名なアドバイスをすることができます デジタル画像処理、ラファエルC.ゴンザレス、リチャードユージンウッズ。あなたはグーグルブックまたはネットのどこか他の場所でそれを見つけることができます。

それらも見てください 紹介チュートリアル.


回答№2の場合は1

@nkintからの提案で、私はその問題に取り組みました。これで、キャニーエッジ検出からのノイズを取り除くことができました。主な貢献は バイラテラルフィルター そしてまたわずかにから 研ぐ フィルタ。

私の新しいcannyエッジ検出画像は以下の通りです

ここに画像の説明を入力

バイラテラルフィルタはエッジ保存フィルタそれは似たような値を持つ曲面に対するガウスフィルタのように働きます。同時に、それはあまり類似していないピクセルを無視し、それによってエッジを保存します。