首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用掩码去除图像的噪声

如何使用掩码去除图像的噪声
EN

Stack Overflow用户
提问于 2013-12-29 15:03:54
回答 1查看 2.1K关注 0票数 3

前几天,我问了一些类似的问题,最后我解决了这个问题,但我又被困住了。

我想创建一个噪声过滤器,以消除噪音从图像,避免边缘和边界。我的输入是图像文件,滤波器是平滑的线性FIR。

但是,我希望将结果写入与原始内容混合的输出,如下所示:

代码语言:javascript
复制
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)和带噪声的图像是一样的!有任何变化。太奇怪了。

哪个过滤器是正确的?我不知道我的错误是在过滤器中,还是在代码中。但有些事情正在被错误地实施。这是密码。

代码语言:javascript
复制
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:原始图像无噪声

有什么想法吗?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-12-29 16:08:36

a2a上应用平均滤波器后平滑。我在试着理解你期望在结果图像中显示什么。实际上,在sobel运算符之后获得的G也是一幅从0到255之间的uint8图像。所以我猜你的

代码语言:javascript
复制
result=uint8(a).*uint8(G) + uint8(a2).*uint8(1-G);

应该是result=a.*uint8(G1) + a2.*uint8(1-G1);,其中G1 =im2bw(G,thresh)具有预先设置的thresh值。

编辑

对您的建议的回应:使用

代码语言:javascript
复制
result=a2+(255-G);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20826482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档