【问题标题】:Text enhancing in image using python使用python在图像中增强文本
【发布时间】:2020-08-16 15:36:09
【问题描述】:

我有一个图像,其中文本较浅且不清晰可见,我想使用 python pil 或 cv2 增强文本并使其背景变亮。需要帮助。我需要打印这张图片,因此它更清晰。

到目前为止我所做的如下

from PIL import Image, ImageEnhance
im = Image.open('t.jpg')  
im2 = im.point(lambda p:p * 0.8)    
im2.save('t1.jpg')

上面的文字稍微变暗了,但我仍然需要使文字清晰,背景更白或更浅。 该图像是打印文档的照片,在白纸上带有黑色文本颜色,但不清晰可见。下面是照片截图

在上面的图像中,后面和周围的字母和单词有一些白色和银色的噪点。 我怎样才能完全删除它们,以便文本边框清晰可见。

我还反转了图像颜色并给出了以下示例

我已尝试关注 自适应阈值,(失败) 大津法,(失败) 高斯模糊,(失败) 颜色分割,(失败) 连接组件移除(失败) 去噪(失败,因为它还删除了文本) 但没有任何效果。最重要的是,由于上述方法的结果给了我下面的图像,所以它变得更糟了。使用连接组件方法时,文本也会受到影响

需要帮助。

还尝试了图像魔法形态编辑但失败了 下图显示了实际存在的噪声。它是一个连续的矩形条,在文本周围填充了点 ![在此处输入图像描述 (https://i.stack.imgur.com/ZMHim.jpg)!

【问题讨论】:

  • 尝试自适应阈值

标签: python opencv python-imaging-library


【解决方案1】:

使用image thresholding

你也可以使用这个例子

from PIL import Image  
  
# creating a object  
im = Image.open(r"t.jpg").convert('LA')
  
# using point function 
threshold = 191  # range from 0 to 255
im = im.point(lambda p: p >value threshold and 255) 
im.show() 

【讨论】:

    【解决方案2】:

    你可以使用去噪

    img = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)
    

    然后将图像转换为灰度

    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    

    然后放大图像

    kernel = np.ones((1,1), np.uint8)
    img = cv2.dilate(img, kernel, iterations=1)
    

    结果

    您可以进一步探索阈值以获得更好的结果

    【讨论】:

      【解决方案3】:

      您可以使用 Otsu 二进制阈值:

      import cv2
      
      image = cv2.imread('input.jpg')
      gray = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)[:,:,2]
      thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
      
      cv2.imshow("Thresh", thresh)
      cv2.waitKey(0)
      

      输出:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-14
        • 1970-01-01
        • 2013-10-19
        • 2018-03-11
        • 1970-01-01
        • 2018-06-24
        相关资源
        最近更新 更多