簡體   English   中英

Python - 刪除來自圖像邊界的黑色像素

[英]Python - Remove Black Pixels originatin from the border of an image

我對圖像處理非常陌生,我正在嘗試清理類似於源自圖像邊界的黑色像素的圖片 1 的圖片。

使用 PyMuPDF 截取字符的圖像

圖像是來自 PDF 的剪輯字符,我嘗試使用 tesseract 處理以檢索字符。 我已經在 Stackoverflow 中搜索了答案,但只找到了擺脫黑色邊框的解決方案。 我需要用白色像素覆蓋角落的所有黑色像素,以便 tesseract 可以正確識別字符。

我無法更改用於剪輯字符的邊界框,因為字符位於邊界框的不同區域的中心,如果我剪切邊界框,我會剪切一些字符,如下所示

已調整 BoundingBox 以適應之前看到的圖像的字符的剪輯圖像

我的第一個猜測是遞歸地追蹤具有一定黑色閾值的像素,但我害怕在這種情況下計算時間,並且真的不知道從哪里開始以及如何開始,除了使用兩個二維 arrays ,一個帶有像素,一個帶有指示我是否已經在該像素上工作過。

幫助將不勝感激。

編輯:更多案例圖片,需要清除邊緣的黑色像素:

在此處輸入圖像描述 在此處輸入圖像描述 在此處輸入圖像描述 在此處輸入圖像描述 在此處輸入圖像描述

編輯:創建邊框圖像的代碼片段:

    @staticmethod
    def __get_border_image(image: Image) -> Image:
        data = numpy.asarray(image)

        border = cv2.copyMakeBorder(data, top=5, bottom=5, left=5, right=5, borderType=cv2.BORDER_CONSTANT)

        return Image.fromarray(border)

試試這樣:

  • 人為地在邊緣周圍添加一個 1px 寬的黑色邊框
  • 從左上角開始用白色全黑像素填充
  • 從第一步中刪除 1px 邊框(如有必要)

添加邊框的目的是讓白色圍繞圖像的所有邊緣“流動”並到達任何接觸邊緣的黑色項目。

暫無
暫無

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

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