Установка порога изображения не позволяет полностью удалить точечный шум из изображения - PullRequest
0 голосов
/ 27 января 2019

Я работаю над некоторыми изображениями, где мне нужно выполнить некоторые операции предварительной обработки, чтобы удалить что-либо и сохранить только запись.
Для этого я использовал разные методы определения порогов (адаптивный средний порог, адаптивный гауссовский порог, ...). Лучшие результаты, которые я получил, имеют адаптивный средний порог. Однако использование адаптивного среднего порога не только удалило нежелательный «шум», но и удалило часть записи!
Это код, который я использовал:

src = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)
height, width = src.shape
blockSize = 35
C = 23
amtImage = cv2.adaptiveThreshold(src, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize, C)
cv2.imwrite('output.jpg', amtImage)

ВХОДНЫЕ ИЗОБРАЖЕНИЯ: в целях конфиденциальности эти изображения взяты из Интернета!

Image 1

Image 2 ИЗОБРАЖЕНИЯ ВЫХОДА:

Image 1

Image 2

Я попытался удалить точечный шум, используя следующий код:

import cv2
import numpy as np

img = cv2.imread('output.jpg', 0)
_, blackAndWhite = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)

nlabels, labels, stats, centroids = cv2.connectedComponentsWithStats(blackAndWhite, None, None, None, 8, cv2.CV_32S)
sizes = stats[1:, -1] #get CC_STAT_AREA component
img2 = np.zeros((labels.shape), np.uint8)

for i in range(0, nlabels - 1):
    if sizes[i] >= 10:   #filter small dotted regions
        img2[labels == i + 1] = 255

res = cv2.bitwise_not(img2)
cv2.imwrite('another_output.jpg, res)

Это пример того, что я получил:

enter image description here

Несмотря на то, что среднее адаптивное пороговое значение хорошо, но окончательный результат все еще недостаточно хорош для распознавания текста (с использованием Tesseract).
Кто-нибудь может предложить какие-либо модификации или идеи, чтобы улучшить качество порога и сохранить только запись в конечном изображении?
Извините за то, что слишком долго, и спасибо!

...