Сегментируйте текст от плохо освещенных изображений, используя python - PullRequest
1 голос
/ 29 сентября 2019

У меня есть три типа изображений, и я хочу сегментировать текст из них.Так что я получаю чистый бинаризованный IMG, как на первом изображении ниже.Ниже представлены три типа изображений:

Я пробовал разные методы, но всегда есть случаи, когда не получается.Сначала я попытался портировать IMG с использованием алгоритма otsu, но он дал плохие результаты на изображениях ниже

Я попробовал Guassian, bilateral и обычное ядро ​​размытия, но не улучшил результаты слишком сильно

Любой может оказать помощь!

Код как лучший, который я получил от

import cv2

gray = cv2.imread("/home/shrouk/Pictures/f2.png", 0)
thresholded = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
cv2.imshow("img", thresholded)

Это конечный результат, который мне нужен enter image description here

Это первый тип изображений, которые терпят неудачу.Сбой из-за того, что уровень серого цвета текста в правом изображении светлее

enter image description here

Результат отсу на нем уже здесь, мне просто нужен способдля улучшения слов в третьей строке справа:

enter image description here

Второй тип, который выходит из строя из-за более темного фона

enter image description here

результат отсу не очень хороший, так как слова слева выглядят как расширенные слова

enter image description here

Этотип, который правильно пороговое значение отсу, так как нет шума

enter image description here

1 Ответ

0 голосов
/ 30 сентября 2019

Попробуйте использовать cv2.adaptiveThreshold()

enter image description here enter image description here

import cv2

image = cv2.imread("2.png", 0)
adaptive = cv2.adaptiveThreshold(image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,5)
cv2.imshow("adaptive", adaptive)
cv2.waitKey()
...