首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测图像中的盐和胡椒点?

如何检测图像中的盐和胡椒点?
EN

Stack Overflow用户
提问于 2019-07-23 13:12:32
回答 2查看 289关注 0票数 3

我在一个项目中工作了几个星期来检测机器产生的坏点,但是找不到任何好的解决方案。不知道你们能不能给我点线索。

损坏的图像如下所示。缺点是很亮或很暗的点。这些要点具有以下特点:

  1. 相对较大或较小的强度。
  2. 它们主要是一个或两个像素在一起。

我试过的是:

  1. 我认为他们是哈里斯康纳,并发现他们使用更大的梯度。然而,边缘的某些点也有很大的梯度。此外,梯度阈值不易固定。较小的阈值引入假阳性,较大的阈值引入假阴性。
  2. 由于坏点与其局部区域相比强度较大或较小,本文计算了除中心点外的平均强度,并将其与中心点进行了比较。然而,这种方法可能会对一些强度较大或较小的正常点进行错误分类。同时,平均点与中心点的差值阈值也很难确定。
  3. 我还尝试为点提取一些特征,并将它们归类为坏点或好点。虽然我的分类器的准确率达到96%,但由于图像中的点数很多,这可能会导致许多点的错误分类。
  4. 我想知道是否有什么深度学习点的检测模式?我想试一试,看看它们能否达到99.99%的准确度。 此外,下面的例子是损坏的图像和正常图像。虽然它们对人的眼睛很明显,但我想不出用计算机来区分它们的完美方法。 具有亮像素的普通图像:

损坏的图像有两个缺点:

如果你能给我一些关于这个问题的线索,我将不胜感激。非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2019-07-24 07:44:56

您可以尝试使用具有小半径(3x3或5x5)的中值滤波器。然后,当与原始图像相差较大时,检测盐和噪声胡椒粉。

票数 1
EN

Stack Overflow用户

发布于 2019-09-25 21:44:45

利用Numpy检测范围内具有最小/最大阈值的像素强度是可行的。这样做的目的是为亮点创建一个所有像素大于某个阈值的掩码,对于暗点则创建一个低于另一个阈值的掩码。检测到的点呈绿色。

代码语言:javascript
复制
import cv2
import numpy as np

image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
mask = ((gray >= 200) | (gray <= 100))
image[mask] = [36,255,12]

cv2.imshow('image', image)
cv2.waitKey()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57164994

复制
相关文章

相似问题

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