Określenie wysokości linii tekstu

Dzisiaj będzie krótko, bo czas nagli. Jak wspominałem w poprzednich postach postanowiłem wykorzystać OpenCV wraz z Javą. Póki co znowu się zapoznajemy, ale udało mi się zrobić kilka fajnych rzeczy.


Poczytałem parę badań dotyczących OCR i znalazłem tam informacje, że przed rozpoznawaniem znaków dobrze jest poddać obraz binaryzacji, czyli mówiąc prostym językiem – przerobić go na postać czarno-białą.
W tym celu, aby ułatwić sobie pracę należy najpierw zmienić paletę kolorów na skalę szarości. Wykorzystałem do tego funkcję Imgproc.cvtColor z pakietu org.opencv.imgproc. Następnie poddałem uzyskany obraz operacji binaryzacji przy pomocy algorytmu Otsu (funkcja Imgproc.threshold).
Do tej pory wszystko ładnie poszło, jednak natrafiłem na jeden dość poważny problem, który mógł mi znacząco utrudnić dalszą pracę. Chodzi o określenie wysokości linii tekstu. Niestety wymuszenie od użytkowników aby robili zdjęcia tak aby czcionka na paragonie miała określoną wielkość graniczy z cudem, więc nie wchodzi w grę.
Na szczęście konsultacje z moim promotorem na ten temat były bardzo pomocne. Podpowiedział mi bym po prostu po binaryzacji obrazu zrobił jego histogram wzdłuż osi pionowej. Rozwiązanie banalne, a efekty zdumiewająco dobre. Wiersze w których jest tekst będą wskazywały większą wartość na histogramie niż te, które są puste.

Przykładowy paragon:

Postać czarno-biała:

Histogram:

Jak można zauważyć na histogramie doskonale widoczne są miejsca gdzie jest tekst. Wystarczy to teraz tylko odpowiednio zinterpretować, ale o tym w następnych postach.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *