簡體   English   中英

當圖像在黑色背景上有白色文本時如何對圖像進行二值化,反之亦然?

[英]How to binarize an image when image has white text on black background and vice versa?

我想對 OCR 的圖像進行二值化。 我附上了將圖像數據作為輸入並返回二進制圖像的代碼,此方法適用於大多數圖像。

例如,

  • 原來的:

原始圖像樣本

  • 結果:

樣本二值化圖像

def preprocessing(image):
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    blured1 = cv2.medianBlur(image, 3)
    blured2 = cv2.medianBlur(image, 51)
    divided = np.ma.divide(blured1, blured2).data
    normed = np.uint8(255 * divided / divided.max())
    th, image = cv2.threshold(normed, 100, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    image = cv2.erode(image, np.ones((3, 3), np.uint8))
    image = cv2.dilate(image, np.ones((3, 3), np.uint8))
    return image

但是當我在下面附加的圖像上應用相同的方法時,它不會按預期工作。 它應該提供具有用於 tesseract 輸入的可讀文本的圖像。

  • 原圖1:

原始圖像 1

  • 預處理圖像:

預處理圖像

  • 原始圖像 2:

原始圖像 2

  • 預處理圖像:

預處理圖像

您可能應該嘗試自己拆卸圖像。 我認為 Bradley-Roth 算法( Bradley-Roth Adaptive Thresholding Algorithm - How do I get better performance? )可以幫助您稍作修改 - 如果鄰域比 128 亮,那么如果鄰域是比 128 暗,那么亮的部分會突出顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM