Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 如何从图像中删除点状水印?_Image_Opencv_Image Processing - Fatal编程技术网

Image 如何从图像中删除点状水印?

Image 如何从图像中删除点状水印?,image,opencv,image-processing,Image,Opencv,Image Processing,我想用OCR自动将传真文件输入系统。我尝试使用tesseract,但我发现不包含水印的部分可以很好地识别,但带水印的部分几乎无法识别 我想使用图像处理删除水印。通常,此图像的水印由1x1个黑色像素组成 有没有办法去掉这个水印 示例文档(隐藏的敏感个人信息): 水印(由1x1像素组成): 编辑:另一个标记为复制的答案只是一个灰显的水印,但我要处理的图像是一个二值图像,因此图像和水印的颜色是黑色的。因此,它不能以相同的方式处理,似乎必须以不同的方式处理。您可以使用形态学操作 仅在带有水印的RO

我想用OCR自动将传真文件输入系统。我尝试使用tesseract,但我发现不包含水印的部分可以很好地识别,但带水印的部分几乎无法识别

我想使用图像处理删除水印。通常,此图像的水印由1x1个黑色像素组成

有没有办法去掉这个水印

示例文档(隐藏的敏感个人信息):

水印(由1x1像素组成):



编辑:另一个标记为复制的答案只是一个灰显的水印,但我要处理的图像是一个二值图像,因此图像和水印的颜色是黑色的。因此,它不能以相同的方式处理,似乎必须以不同的方式处理。

您可以使用形态学操作

仅在带有水印的ROI上使用闭合

以下是一个MATLAB代码示例:

I=rgb2gray(imread('kmyxE.png');%读取图像并将其转换为灰度。
J=I;
%核大小为3x3的形态闭合(仅适用于带有水印的区域)。
J(720:1450480:1260)=imclose(I(720:1450480:1260),一(3));
我很高兴使用OpenCV实现它

结果:


以下解决方案可能更好:

  • 使用内核1x3在X方向关闭
  • 使用内核3x1在Y方向关闭
  • 取两幅图像的最小值
    I=rgb2gray(imread('kmyxE.png');
    J1=I;
    J2=I;
    %内核大小为1x3的形态闭合(仅适用于带有水印的区域)。
    J1(720:1450480:1260)=imclose(I(720:1450480:1260),一(1,3));
    %核大小为3x1的形态闭合
    J2(720:1450480:1260)=imclose(I(720:1450480:1260),一(3,1));
    %保持J1和J2的最小值
    J=最小值(J1,J2);
    
    结果:

    由于删除文本数据时OCR无法正常工作,因此我对文本进行了处理,使其不会被删除,而不是留下一些水印。我最终使用了两个嵌套for循环

    结果:

    代码:


    你可能会注意到交叉核形状的膨胀操作。
    img = cv2.imread('masked.png')
    img_bw = 255*(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) > 5).astype('uint8')
    img_copy = np.copy(img_bw)
    
    for x in range(1, 2146):
        for y in range(1, 1727):
            if img_bw[x][y] == 0 and \
                    img_bw[x-1][y] == img_bw[x+1][y] == img_bw[x][y-1] == img_bw[x][y+1] == \
                    img_bw[x-1][y-1] == img_bw[x-1][y+1] == img_bw[x+1][y-1] == img_bw[x+1][y+1] == 255:
                img_copy[x][y] = 255