3

先日、似たようなことを尋ねて、ようやくその部分を解決したのですが、また行き詰まってしまいました。

ノイズ フィルターを作成して、エッジや境界を避けて画像からノイズを除去したいと考えています。私の入力は画像ファイルで、フィルターは平滑化線形 FIR です。

しかし、次の式に従って、結果を元のコンテンツと混合した出力に書き込む必要があります。

result(x,y) = original(x,y)*mask(x,y) + filter_output(x,y)*(1-mask(x,y))

ここで: original(x,y)は入力、ノイズのある画像 (たとえば、ガウス ノイズのある画像) になります。 mask(x,y)は、画像のエッジに基づく係数の行列 (すでに完了) であり、filter_output(x,y)は、線形 FIR 後の画像である必要があります。

私の問題は次のとおりです。非常に多くのフィルターとノイズの種類 (ガウス、塩とコショウなど) を試しましたが、良い結果が得られません。私が得る結果(x、y)は、ノイズのある画像と同じです!どんな変更でも。とても奇妙。

どのフィルターが正しいでしょうか? エラーがフィルターにあるのか、コードにあるのかわかりません。しかし、何かが間違って実装されています。これがコードです。

filter = ones(5,5) / 25;
a2 = imfilter(a,filter); % a is the image with noise, a2 is the filtered image (output)

%The equation. G is the mask.

result=uint8(a).*uint8(G) + uint8(a2).*uint8(1-G);
imshow(result);

PS:ノイズのない元の画像

何か案が?どうもありがとう!

4

1 に答える 1

1

a2に平均化フィルタを適用した後、 は滑らかになりaます。結果の画像に何を期待しているかを理解しようとしています。実際にGは、sobel 演算子の後に取得された も、uint80 から 255 の範囲の画像です。

result=uint8(a).*uint8(G) + uint8(a2).*uint8(1-G);

プリセット値のresult=a.*uint8(G1) + a2.*uint8(1-G1);どこにある必要があります。G1 =im2bw(G,thresh)thresh

編集

あなたの提案への応答: 使用してみませんか?

result=a2+(255-G);
于 2013-12-29T16:08:36.300 に答える