首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过评估相等邻域像素的百分比来减少图像中的噪声- Java OpenCV

如何通过评估相等邻域像素的百分比来减少图像中的噪声- Java OpenCV
EN

Stack Overflow用户
提问于 2018-08-29 02:53:33
回答 1查看 293关注 0票数 0

我正在使用openCV库(v3.4.2),我计划将RGB图像转换为HSV,然后通过调整色调值来根据颜色过滤它们,以获得黑白图像(调整饱和度和值/亮度不会给我带来更好的效果),这在理论上已经有效。然而,我的一些图像有很多噪声,你可以在下面的图像部分看到(图1)。

现在,我想要填充密集的黑点(移除其中的几个白色像素),并移除被白色像素包围的稀疏黑色像素,以获得如下图2所示的效果。

我不会说它是高斯噪声,因为图像上有一些相当“干净”的斑点。我已经考虑过这个帖子了:Remove spurious small islands of noise in an image - Python OpenCV。我借用了几行代码,并根据我的目的进行了修改,如下所示:

代码语言:javascript
复制
// cloV and opV are JSliders so that I can try different values
Mat se1 = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(cloV,cloV));
Mat se2 = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(opV,opV));

Mat mask = new Mat();

// bwMat is my Mat containing the black&white image
Imgproc.morphologyEx(bwMat, mask, Imgproc.MORPH_CLOSE, se1);
Imgproc.morphologyEx(mask, mask, Imgproc.MORPH_OPEN, se2);
bwMat.setTo(new Scalar(0), mask);

尝试这种方法并尝试参数,我不能得到任何像样的结果(我只能设法将图像中的所有东西都变成黑色)。我假设这是因为每个邻域像素都被考虑在内,并且几乎总是有至少几个像素在很近的地方。现在我想,也许有一种方法,只有当像素的邻域中有一定的百分比(例如,特定的半径)时,才会影响像素,但我真的不知道该找什么。这是正确的方法吗?或者我所想的是现实的吗?

(1)黑白原图:

(2)我想获取的黑白图像:

注意:我使用Paint创建了第二个图像。我只是想表明我正在尝试保留更密集的黑色区域(我甚至可能无意中删除了图像中的一些区域),这样它看起来就不会完全像这样,但我很感激任何让我更接近这一点的提示。

编辑:有人告诉我要查找椒盐噪声,我偶然发现了medianblur方法,它已经很有效了:

代码语言:javascript
复制
Imgproc.medianBlur(Mat src, Mat dst, int ksize);

我暂时把这个问题放在一边,以防出现其他建议。编辑2:删除图像

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52064580

复制
相关文章

相似问题

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