画像があります
明るい白い斑点を取り除く方法はありますか?助けてください
編集:
gaussianで操作し、imagescを使用して表示すると、次の出力が得られます。これは、明るい赤色の斑点を明確に示しています。
レッドチャンネル:
グリーンチャンネル:
青チャンネル:
編集2:
ガボールフィルターを使用した欠陥検出
そのヒストグラム:
適切なしきい値を適応的に計算する方法。
画像があります
明るい白い斑点を取り除く方法はありますか?助けてください
編集:
gaussianで操作し、imagescを使用して表示すると、次の出力が得られます。これは、明るい赤色の斑点を明確に示しています。
レッドチャンネル:
グリーンチャンネル:
青チャンネル:
編集2:
ガボールフィルターを使用した欠陥検出
そのヒストグラム:
適切なしきい値を適応的に計算する方法。
回答:
グレア部分が画像内の唯一の飽和領域であると仮定しましょう。強度のしきい値を設定することで検出を実行できます(Mathematicaのコード):
saturated = Binarize[ColorConvert[img, "Grayscale"], .9]
次に、飽和マスクの周りの画像の部分を置き換えるだけです(マスクの拡大は形態学的関数によって行われますDilation
)。テクスチャ合成を使用した(関数を使用したInpaint
)修復は、この例ではうまく機能しているようですが、欠陥検出アルゴリズムへの入力としてテストすることはできません。
Inpaint[img, Dilation[saturated, DiskMatrix[20]]]
これは少し単純な答えかもしれませんが、しきい値を設定することはできますか?例えば:
img = imread('daRNS.png');
imflat = img;
imflat(img>150) = 150;
imagesc(imflat)
結果:
しきい値を適応的に選択する方が明らかに良いでしょう。たとえば、画像のヒストグラムを見ることができます。
hist(double(img(:)),0:255)
そしてそれに基づいて適切なしきい値を選択してみてください。
照明情報がなければ、それは困難です。ただし、画像内のオブジェクトの形状がわかっている場合は、白いまぶしさ(ガウス)の形状テンプレートをセットアップし、スライドウィンドウを開いて、まぶしさの検出を検出することができます(その後に隣接する領域からの色の混合が続きます)。知覚的には、シェーディングを使用して画像から3D形状を推測します。シェーディングからの形状が表面に勾配を与えることができる場合、スライドウィンドウを実行し、各位置でグレアテンプレートを確認できます。
キャニーエッジ検出後:-
基本的に、画像#1と#2の間のオーバーラップ(最大オーバーラップエリア)が欠陥になります。
私の意見では、これはマシンビジョンの問題であり、照明を制御し、画像内のグレアのないピクセル輝度の最大輝度を十分に把握する必要があります。欠陥検出は一般に、コンピュータービジョンの問題ではなく、マシンビジョンの問題です。
ライティングの結果として見られるのは、光の鏡面反射と拡散反射の追加です(さらに、エミッタンスはいくらかありますが、ここでは無視できます)。
鏡面反射成分はグレアです。このリンゴのような光沢のある表面では、拡散反射(> 10x)よりもはるかに多くなります。
つまり、これより前に拡散サーフェス上で照明、ゲイン、露出を設定すると、飽和に近いものさえないことが確実になります。したがって、「グレアを含まないピクセルがない」ことがしきい値を超える十分なデータで証明されている限り、ここでは実際に固定しきい値を使用することが推奨されるソリューションです。本質的には、照明条件を設定し、ピクセルの分類が簡単になるようにカメラパラメーターを設定します。この場合、周囲のピクセルのより複雑な機械学習機能ではなく、単純なしきい値によって実行されます。
私は「vini」のアプローチが好きで、RGBプレーンを表示する必要はありません。ここでは、単純なグレースケールのしきい値が実際に機能します。
1-周囲ではなく照明条件を設計する
2-分類ジョブを非常に簡単にする(しきい値設定)
3-特徴を測定する
4-公差と比較