先日、似たようなことを尋ねて、ようやくその部分を解決したのですが、また行き詰まってしまいました。
ノイズ フィルターを作成して、エッジや境界を避けて画像からノイズを除去したいと考えています。私の入力は画像ファイルで、フィルターは平滑化線形 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:ノイズのない元の画像
何か案が?どうもありがとう!