画像のグレアと明るさを除去する方法(画像の前処理)


19

画像があります

ここに画像の説明を入力してください

明るい白い斑点を取り除く方法はありますか?助けてください

編集:

gaussianで操作し、imagescを使用して表示すると、次の出力が得られます。これは、明るい赤色の斑点を明確に示しています。

ここに画像の説明を入力してください

レッドチャンネル:

ここに画像の説明を入力してください

グリーンチャンネル:

ここに画像の説明を入力してください

青チャンネル:

ここに画像の説明を入力してください

編集2:

ガボールフィルターを使用した欠陥検出

ここに画像の説明を入力してください

そのヒストグラム:

ここに画像の説明を入力してください

適切なしきい値を適応的に計算する方法。


ライトのセットアップはわかっていますか?
-nav

いいえ、実際には、フィルタリングなどを通じてこれらをスポットに削除する方法はありませんか?
vini

4
一般に、これは不適切な問題です。未知数が多すぎるため、ヒューリスティックベースのソリューションに頼らなければなりません。幸運をお祈りします。
nav

回答:


19

グレア部分が画像内の唯一の飽和領域であると仮定しましょう。強度のしきい値を設定することで検出を実行できます(Mathematicaのコード):

saturated = Binarize[ColorConvert[img, "Grayscale"], .9]

ここに画像の説明を入力してください

次に、飽和マスクの周りの画像の部分を置き換えるだけです(マスクの拡大は形態学的関数によって行われますDilation)。テクスチャ合成を使用した(関数を使用したInpaint)修復は、この例ではうまく機能しているようですが、欠陥検出アルゴリズムへの入力としてテストすることはできません。

Inpaint[img, Dilation[saturated, DiskMatrix[20]]]

ここに画像の説明を入力してください


matlabにinpaintメソッドがありますか?
vini

申し訳ありませんが、その答えはわかりません。
マティアスオディシオ

欠陥検出は完璧ですが、MATLABには組み込み関数がないため、修復を実装する必要があります
-vini

1
答えが問題を解決したことを嬉しく思います。matlabでの修復に関しては、SOに関する独立した質問におそらく適しています。はじめにstackoverflow.com/search?q=matlab+inpaintingをご覧ください。
マティアスオディシオ

2
修復は、一般的に「ポワソン画像ブレンディング」のチュートリアルとして知られているもので行うことができますここでは、MATLABコードと例ここに
モーリッツ

4

これは少し単純な答えかもしれませんが、しきい値を設定することはできますか?例えば:

img = imread('daRNS.png');
imflat = img; 
imflat(img>150) = 150; 
imagesc(imflat)

結果:

平坦化された画像

しきい値を適応的に選択する方が明らかに良いでしょう。たとえば、画像のヒストグラムを見ることができます。

hist(double(img(:)),0:255)

ヒストグラム

そしてそれに基づいて適切なしきい値を選択してみてください。


plsは私の編集2をチェックします
vini

@vini信号の90%が説明されているカットオフを見てみてください
-tdc

私はちょうどしきい値でしたが、私の究極の目標は、欠陥検出...どのような方法でdoesntのヘルプである私しきい値それならば
VINI

3
しかし、あなたの質問は「画像のまぶしさや明るさを取り除く方法(画像の前処理)」です。欠陥の検出方法ではなく、これは別の(より難しい)問題です。以下の@mrkulkは、以下の質問に対するほぼ完全な回答を提供したようです。
tdc

はい、私の質問は、私は今、どのようにこのグレア妨げにしかし結果を欠陥を検出することである
VINI

2

ここに画像の説明を入力してください照明情報がなければ、それは困難です。ただし、画像内のオブジェクトの形状がわかっている場合は、白いまぶしさ(ガウス)の形状テンプレートをセットアップし、スライドウィンドウを開いて、まぶしさの検出を検出することができます(その後に隣接する領域からの色の混合が続きます)。知覚的には、シェーディングを使用して画像から3D形状を推測します。シェーディングからの形状が表面に勾配を与えることができる場合、スライドウィンドウを実行し、各位置でグレアテンプレートを確認できます。

キャニーエッジ検出後:-

ここに画像の説明を入力してください

基本的に、画像#1と#2の間のオーバーラップ(最大オーバーラップエリア)が欠陥になります。


何をしようとしているのかを説明します-フルーツの欠陥を見つけるためにテクスチャのセグメンテーションに主に使用されるガボールフィルターを適用していますが、理想的には望ましくない潜在的な欠陥としてフィルターが2つの白い斑点を表示するため、まぶしさが問題になります
vini

個別のチャンネル(RGBまたはYUVから)を取得して、それらを操作するだけでしたか?
mrkulk

最もギラギラした画像は緑のチャンネルの画像です。どのように操作して修正しますか?
vini

0.5のしきい値でエッジ画像(キャニー)を撮影してみました。予想どおり、画像にグレアは見られませんでした。これにより、グレアが含まれていない領域に強い事前分布が得られます。
-mrkulk

まぶしさのない画像を作成するのにどのように役立ちますか?
vini

0

私の意見では、これはマシンビジョンの問題であり、照明を制御し、画像内のグレアのないピクセル輝度の最大輝度を十分に把握する必要があります。欠陥検出は一般に、コンピュータービジョンの問題ではなく、マシンビジョンの問題です。

ライティングの結果として見られるのは、光の鏡面反射と拡散反射の追加です(さらに、エミッタンスはいくらかありますが、ここでは無視できます)。

鏡面反射成分はグレアです。このリンゴのような光沢のある表面では、拡散反射(> 10x)よりもはるかに多くなります。

つまり、これより前に拡散サーフェス上で照明、ゲイン、露出を設定すると、飽和に近いものさえないことが確実になります。したがって、「グレアを含まないピクセルがない」ことがしきい値を超える十分なデータで証明されている限り、ここでは実際に固定しきい値を使用することが推奨されるソリューションです。本質的には、照明条件を設定し、ピクセルの分類が簡単になるようにカメラパラメーターを設定します。この場合、周囲のピクセルのより複雑な機械学習機能ではなく、単純なしきい値によって実行されます。

私は「vini」のアプローチが好きで、RGBプレーンを表示する必要はありません。ここでは、単純なグレースケールのしきい値が実際に機能します。

1-周囲ではなく照明条件を設計する

2-分類ジョブを非常に簡単にする(しきい値設定)

3-特徴を測定する

4-公差と比較


0

まずラボの色空間に変換し、mapminmaxしてから、最初の輝度チャンネルを使用します。それは色の問題を減らします。次に、上位80%の最も明るいピクセルでしきい値を使用します。ヒストグラムのディップを確認してテストします。最適なしきい値はディップの下部近くにあります。この領域にローカルの最小値がない場合、画像の反射は最小限に抑えられます...... Martin

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.