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

#python-3.x #image-processing #opencv3.0 #python-tesseract #image-thresholding

#python-3.x #обработка изображений #opencv3.0 #python-тессеракт #пороговое значение изображения

Вопрос:

Я работаю над проектом по изучению проблемы, с которой сталкиваются при распознавании изображений из разных источников, однако этот вопрос ограничен изображениями, снятыми с камеры. образцы взяты из книг, вопросников и т. Д

Я ищу способ, с помощью которого я могу подготовить распознавание изображений.

источник: https://ibb.co/Q8qWWZm

Некоторые из методов, которые я пробовал

 th = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                            cv2.THRESH_BINARY,11,2)

  

вывод: https://ibb.co/nR4kcsP (сжатый из-за большого размера)

после порога я попробовал срединное размытие с размером ядра 9, которое удалило почти все шумы, но также повредило некоторые символы.

вывод: https://ibb.co/TBF5Fs4

Другой метод, который я пробовал, — использовать skimage (локальный порог) :

 warped = cv2.cvtColor(imgc, cv2.COLOR_BGR2GRAY)
T = threshold_local(warped, 11, offset = 1, method = "gaussian")
warped = (warped > T).astype("uint8") * 255
cv2.imwrite('newth.jpg', warped)
  

этот метод генерирует слишком много шумов, но то, что можно устранить с помощью медианного размытия, также повреждает некоторые символы.

Правильно ли я это делаю? Если нет, то что мне делать и что мне делать дальше. Моя цель — найти метод, который работает со всеми изображениями с максимальной точностью, предпочтительно 100%

Комментарии:

1. обычно каждое изображение является особым случаем с точки зрения шума, общего решения не существует, но вам все еще нужно решение для лучшей обработки этого текста?

2. для этого конкретного изображения вы можете использовать: img[img[...,0]>130] = 255 затем _,th = cv2.threshold(img,200,255,cv2.THRESH_BINARY)

3. Мне нужен способ стандартизации изображений для достижения максимальных результатов не на 100%, а максимально возможных. Чтобы я мог показать в исследовании, что для получения 100% точности требуется ML или нейронные сети.

4. Вы также можете попробовать порог Otsu. Но, как сказал @BelalHomaidan, общего решения для всех не существует. Одна вещь, которую вы можете сделать, это иметь набор методов, которые могут работать с любым изображением, и применять их все к каждому изображению, с которым вы сталкиваетесь. Выберите лучшее. Конечно, это не лучший метод, учитывая затраченное время. Для этого вы можете выполнять параллельную обработку.