Премахнете фона в opencv, за да направите текста по-ясен

Опитвам се да създам приложение, което може да чете текст от изображение. Но имам проблем с изчистването на фона. Искам резултати като:

Въведете изображение 1: въведете описание на изображението тук

Изходно изображение 1: въведете описание на изображението тук

Това е кодът, който опитах:

cvtColor(org, tmp, CV_BGR2GRAY); 
normalize(tmp, tmp, 0, 255, NORM_MINMAX); 
threshold(tmp, dst, 0, 255, CV_THRESH_OTSU);

person patrick    schedule 25.03.2015    source източник
comment
моят проблем е различен от него.   -  person patrick    schedule 25.03.2015
comment
1. cvtColor(org, tmp, CV_BGR2GRAY); 2.normalize(tmp, tmp, 0, 255, NORM_MINMAX); 3.threshold(tmp, dst, 0, 255, CV_THRESH_OTSU);   -  person patrick    schedule 25.03.2015


Отговори (1)


Линиите, които ви интересуват, са ориентирани на 0 или 90 градуса, с малка разлика във всяка посока. Линиите във фоновите шарки са наклонени. Можете да идентифицирате линиите с алгоритъма canny, след което да проверите ориентацията. Ще останете с някои празнини, където се срещат вертикалните и хоризонталните линии, в зависимост от шрифта. След това се върнете към оригиналното изображение и използвайте водораздел въз основа на цвят, или използвайте свързани компоненти, или каквото и да е, за да избегнете загубата на тези свързващи региони.

person Nick M    schedule 26.03.2015
comment
Всъщност не е необходимо фонът винаги да е запълнен с линии. Може да е всичко. Искам нещо общо. - person patrick; 26.03.2015
comment
@HemantKumar Казвате, че искате нещо общо. Колко представително е вашето примерно изображение? Винаги ли цифрите ще имат по-висок интензитет от останалата част от изображението? Трябва да сте наясно какво очаквате. - person beaker; 03.04.2015
comment
@beaker Не, не е необходимо. Цифрите може да имат по-нисък интензитет. - person patrick; 06.04.2015