前几天我问了一些类似的问题,最后我解决了那个部分,但我又被卡住了。
我想创建一个噪声过滤器,从图像中去除噪声,避免边缘和边界。我的输入是一个图像文件,过滤器是一个平滑线性 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_ouput(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:原图无噪点
任何想法?太感谢了!