前几天,我问了一些类似的问题,最后我解决了这个问题,但我又被困住了。
我想创建一个噪声过滤器,以消除噪音从图像,避免边缘和边界。我的输入是图像文件,滤波器是平滑的线性FIR。
但是,我希望将结果写入与原始内容混合的输出,如下所示:
result(x,y) = original(x,y)*mask(x,y) + filter_output(x,y)*(1-mask(x,y))其中:原始(x,y)是输入,图像有噪声(举个例子,带有高斯噪声)。掩码(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:原始图像无噪声
有什么想法吗?非常感谢!
发布于 2013-12-29 16:08:36
a2在a上应用平均滤波器后平滑。我在试着理解你期望在结果图像中显示什么。实际上,在sobel运算符之后获得的G也是一幅从0到255之间的uint8图像。所以我猜你的
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);https://stackoverflow.com/questions/20826482
复制相似问题