проблема обнаружения краев при обнаружении текста на изображениях - PullRequest
12 голосов
/ 15 октября 2011

Я пытаюсь им p lement Бумага Эпштейна ( Обнаружение текста в естественных сценах с преобразованием ширины штриха (2010) ) на обнаружение текста в естественных изображениях.Первый шаг - это обнаружение краев.

Я получаю несколько дополнительных ребер внутри моего текста.Как мне удалить их?

Исходное изображение:

enter image description here Обнаружение моего края: enter image description here

В этом примере вы можете увидеть дополнительные края в text 'ПОЧЕМУ СПАСИБО'

Я пробовал эти шаги в Matlab:

% contrast enhancement
I_adjust = imadjust(I);

% dilation & erosion
se = strel(ones(3,3));
I_dilate = imdilate(I_adjust, se);
I_final = imerode(I_dilate, se);

% gaussian smoothing
h_mask = fspecial('gaussian');
I_final = imfilter(I_final,h_mask);
figure; imshow(I_final);

BW_canny = edge(I_final,'canny');
figure; imshow(BW_canny);

Задача № 2:

Согласно предложению Велисария, я обнаружил, что фильтр среднего сдвига работает довольно хорошо для сегментации текстовой области.Теперь я столкнулся с другой проблемой в реализации преобразования Stroke Width (посмотрите на статью Эпштейна).

Stroke Width хорошо работает с символами типа 'H''Y' даже для 'S'потому что соответствующие ребра обычно находятся на постоянном расстоянии, если мы движемся в направлении градиента.

Проблема заключается в символах типа 'W'.Для одной части левого края 1-го хода мы получим правый край 2-го хода в качестве соответствующего края.В то время как для другой части мы получаем правый край 1-го хода .Это приводит к значительному расхождению в ширине штриха области 'W', что приводит к обозначению этой области как нетекстовой области согласно статье.

Может кто-нибудь предложить какое-либо решение?

Ответы [ 2 ]

10 голосов
/ 15 октября 2011

Используйте Mean Shift Filter до обнаружения края.Пример в Mathematica:

i = Import["http://img839.imageshack.us/img839/28/whyhurry.jpg"];
iM = MeanShiftFilter[i, 2, .15, MaxIterations -> 10]
EdgeDetect[iM]

Выходы:

enter image description hereenter image description here

0 голосов
/ 15 октября 2011

Ознакомьтесь с документацией Matlab для edge и статьи Википедии об алгоритме Канни.

Вы можете позвонить edge(I, 'canny', thresh, sigma) для большего контроля. Поиграйте с нижним и верхним порогами. Сначала я бы попытался снизить верхний порог: поскольку внутренние ребра не связаны с краями букв, величина градиента должна превышать верхний порог внутри букв.

Вы также можете увеличить sigma, чтобы больше размыть изображение перед обнаружением края. (Ваше размытие по Гауссу излишне, потому что edge размывает изображение для вас.)

...