Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何检测图像中的盐和胡椒点?_Image Processing_Deep Learning_Object Detection - Fatal编程技术网

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

Image processing 如何检测图像中的盐和胡椒点?,image-processing,deep-learning,object-detection,Image Processing,Deep Learning,Object Detection,我已经在一个项目上工作了几个星期,以检测机器产生的缺点,但找不到任何好的解决方案。不知道你们能不能给我一些线索 损坏的图像显示如下。坏点是非常亮或暗的点。这些要点具有以下特点: 相对较大或较小的强度 它们大多是一个或两个像素加在一起 我所尝试的: 我把它们当作哈里斯·康纳,用更大的梯度来检测它们。但是,边缘中的某些点也具有较大的渐变。另外,梯度阈值不易确定。较小的阈值引入假阳性,较大的阈值引入假阴性 由于坏点相对于其局部区域具有更大或更小的强度,因此我计算除中心点之外的平均强度,并将其与中心点

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

损坏的图像显示如下。坏点是非常亮或暗的点。这些要点具有以下特点:

  • 相对较大或较小的强度

  • 它们大多是一个或两个像素加在一起

  • 我所尝试的:

  • 我把它们当作哈里斯·康纳,用更大的梯度来检测它们。但是,边缘中的某些点也具有较大的渐变。另外,梯度阈值不易确定。较小的阈值引入假阳性,较大的阈值引入假阴性

  • 由于坏点相对于其局部区域具有更大或更小的强度,因此我计算除中心点之外的平均强度,并将其与中心点进行比较。但是,某些强度较大或较小的法线点可能会被该方法错误分类。此外,平均值和中心点之间的差值阈值也很难确定

  • 我还尝试提取点的一些特征,并将它们分类为坏点或好点。虽然我的分类器达到96%的准确率,但这可能会错误分类许多点,因为图像中的点很多。(6000000)

  • 我想知道是否有一些深度学习点检测模式?我想尝试一下,看看他们是否能达到99.99…%的准确率

    此外,下面的示例是损坏图像和正常图像。虽然它们对人眼来说非常明显,但我想不出一个完美的方法用计算机来区分它们

    具有一些明亮像素的正常图像:

  • 损坏的图像有两个缺点:


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

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

    利用Numpy检测范围内的像素强度
    [0255]
    最小/最大阈值可以工作。其思想是创建一个所有像素的遮罩,大于亮点的某个阈值,小于暗点的另一个阈值。检测到的点用绿色表示

    导入cv2
    将numpy作为np导入
    image=cv2.imread('1.png')
    灰色=cv2.CVT颜色(图像,cv2.COLOR\u BGR2GRAY)
    
    遮罩=((灰色>=200)|(灰色无法访问的图像,不要使用远程服务器。
    的缺点似乎是噪音。同时,你是如何计算分类器的准确度的?@Masoud谢谢你的回答!是的,我也这么认为。我标记了大约几千个点,并将它们分为训练集和验证集。我在验证集ba上计算它们基于标签。当然,我在测试时平衡了阴性和阳性样本。如何估计相邻像素的像素强度差并设置阈值,然后将像素分类为噪声或正常?您可以根据需要的复杂性检查4个相邻像素或8个相邻像素。我建议这样做,因为这里是像素强度的一个明显区别。这在计算上并不重,与深度学习模型(如果你打算尝试一个)相比,你应该能够上传图像,它们只是链接而不是内联显示。但是,它们将在SO的图像服务器上,其他用户将能够为你内联@李悦城: 你试过了吗?不,你没有。事实上,我试过了。我在分类器中使用了这个功能。虽然它很有用,但还不够@李悦城: 你的意思是你把噪音输入你的分类器吗@李悦城: 你真的在训练这种差异吗?是的。我还使用了其他功能,如像素值。这对salt和papper噪声很好,它们的像素值在全局上是大的还是小的。但是,我的问题与脉冲噪声有关,它们的像素值在局部上是大的还是小的。
    
    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()