1

Я пытаюсь распознать семь сегментов цифровых текст с изображения tess4J.Семь сегментов Цифровое распознавание данных с использованием Tessseract/Java

Мой вход здесь

enter image description here

Я сделал некоторые нормализации следующим

1] Изображение обрезается.

enter image description here

2] Старинная его в двоичный

enter image description here

Я хочу удалить зазубренные края текста из изображения .Как я могу добиться этого?

Я пробовал разные обучаемые данные от GitHub. Но ничего не работает, как я хочу.

Как делать Создавать образованные вручную вручную? ,

Я жду ваших замечательных предложений & много спасибо заранее. , , ,

ответ

3

Вы можете попробовать сочетание фильтров Sobel (для тонких кромок) и гауссовских фильтров (чтобы размыть изображение).

Вы не указать, какой API используется для обработки изображений в Java, и, как я не знаком с Tess4J я покажу, что можно сделать из Python (вы можете использовать предпочтительную библиотеку для работы с изображениями в Java, процесс будет тем же самым):

import scipy 
import scipy.misc 
import scipy.ndimage.filters 
import numpy 

def save_image(img_data, counter): 
    img_fn = "img_{}.jpg".format(counter) 
    scipy.misc.imsave(img_fn, img_data) 


if __name__ == "__main__": 
    # This loads the second image of your post 
    img_0 = scipy.misc.imread("TqO53.jpg") 
    img_0 = scipy.average(img_0, -1) 
    #save_image(img_0, 0) 

    # Obtain edges 
    img_x = scipy.ndimage.filters.sobel(img_0, 0) 
    img_y = scipy.ndimage.filters.sobel(img_0, 1) 
    img_1 = numpy.hypot(img_x, img_y) 
    #save_image(img_1, 1) 

    # Remove edges from original image (i.e. thinning edges) 
    img_2 = img_0 - img_1 
    img_2[img_2 < 10] = 0 
    save_image(img_2, 2) 

    # Blur image if you want to get rid of the sketchy borders 
    img_3 = scipy.ndimage.gaussian_filter(img_2, sigma=1) 
    save_image(img_3, 3) 

Это будет генерировать следующие изображения:

IMG_2.jpg

With edges thined

img_3.jpg

Blurred

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

Если после этого вы хотите, вы можете попробовать прореживать все цифры до тех пор, пока они не будут иметь 1 пиксель. Может быть, это хорошо работает с Tess4J.

+0

Одна вещь об использовании гауссовой фильтрации заключается в том, что вы делаете небольшие функции, такие как десятичная точка, сложнее обнаружить. –

+0

Это правда, когда я писал это, я думал о том, как увеличить расстояние между точкой и 4 до применения гаусса, но я не мог придумать хороший способ, который не включал пороговое значение. Может быть, более разумное обнаружение границы? – MondKin

Смежные вопросы