2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Бинаризация в задаче распознавания текста
Сообщение05.11.2014, 03:52 


04/04/09
10
На изображении светлый текст на темном фоне. Яркость текста и фона произвольная. Шрифт со сглаживанием, т.е. не однотонный. Фон тоже не однотонный, но текст всегда светлее фона.

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

Пример.

Изображение

На картинке исходное изображение символа и результаты бинаризации по порогу, найденному:
- методом Оцу (Otsu),
- алгоритмом сбалансированного порогового отсечения гистограммы (Balanced histogram thresholding, BHT),
- подбором вручную.

Ниже гистограмма изображения, на которой отмечены все три порога бинаризации: Otsu, BHT и оптимальный.

И еще несколько гистограмм для примера:
Изображение

Изображение

Изображение

 Профиль  
                  
 
 Re: Бинаризация в задаче распознавания текста
Сообщение05.11.2014, 10:34 
Аватара пользователя


31/10/08
1244
Правильного нет и быть не может. Так как это инженерная, прикладная задача.
И критерий правильности выбрать должны Вы сами.
1. Либо оценку делает эксперт, группа экспертов.
2. Либо программа распознавание образов.
3. Скорее всего уже где-то есть база данных.

Во-вторых Вы критерий Стьюдента должны были проходить. Сколько надо брать образцов для проверки? В распознавание образов у лучших программ обычно счёт идёт единицы ошибок на 1000 экземпляров.

Я бы по смотрел бы в сторону не только гистограмм, но и адаптивной.
http://www.djvu-soft.narod.ru/bookscanlib/025.htm
Либо подбор порога делать с обратной связью.

 Профиль  
                  
 
 Re: Бинаризация в задаче распознавания текста
Сообщение05.11.2014, 18:53 


04/04/09
10
Pavia в сообщении #926979 писал(а):
Правильного нет и быть не может.

Возможно, "правильный порог" - это не очень удачное выражение. Но я имел в виду оптимальный порог, который с точки зрения любого человека четко отделяет фон от текста. У меня изображения настолько простые, что человеку не представляет труда не только "распознать" текст, но и выбрать "правильный" оптимальный порог.

Pavia в сообщении #926979 писал(а):
Сколько надо брать образцов для проверки? В распознавание образов у лучших программ обычно счёт идёт единицы ошибок на 1000 экземпляров.

Поскольку изображение я считаю очень простым (без искажений, без локальных перепадов яркости) меня устроит только 100%-ая точность распознавания.

И BHT, и модифицированный Оцу (с предварительной заменой темных пикселей фона на светлые) с изображениями-словами справляются неплохо. Но точность недостаточна. Поэтому я и обратился на форум.

Я считаю, что в примере (изображение-символ из первого поста) недостатки моих алгоритмов проявляются в явном виде. Поэтому мне было бы полезнее обсуждать не множество "образцов для проверки" и "1000 экземпляров", а конкретный пример и определенный алгоритм, который сможет распознать один символ на конкретном ОДНОМ изображении.

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

Pavia в сообщении #926979 писал(а):
Я бы посмотрел бы в сторону не только гистограмм, но и адаптивной.

Вы про адаптивную (локальную) бинаризацию?
По-моему для моего случая такие методы не очень подходят. У меня нет засветов на изображении. И у меня всегда существует оптимальный глобальный порог.

Я пробовал использовать метод Ниблэка. Результат меня не устроил.

Pavia в сообщении #926979 писал(а):
Либо подбор порога делать с обратной связью.

Изменять порог до тех пор, пока изображение не будет распознано без ошибок? Такой подход кажется очень неэффективным.
Также могут быть неправильные результаты из-за того, что части одного символа могут быть очень похожи на другой символ (см. второе изображение: t vs c, r vs i', n vs m).

Изображение

Изображение

 Профиль  
                  
 
 Re: Бинаризация в задаче распознавания текста
Сообщение05.11.2014, 19:48 
Аватара пользователя


31/10/08
1244
Cage
Локальный перепад фона у вас есть. Отрицать это бесполезно и использовать локальную бинаризацию надо. Отцу не рассчитан на локальный перепад. Хотя несколько устойчив к нему.

Что касается 100% тогда задача распознования сводится к сравнению с шаблонами. И порог тут ненужен.

Что касается 1 изображения, то это не показатель. Это основы статистики.
Так как иначе можно было бы вручную подобрать порог заранее и использовать его в дальнейшем в своей программе, без всяких там алгоритмов.

 Профиль  
                  
 
 Re: Бинаризация в задаче распознавания текста
Сообщение05.11.2014, 21:16 


04/04/09
10
Pavia в сообщении #927124 писал(а):
Локальный перепад фона у вас есть. Отрицать это бесполезно и использовать локальную бинаризацию надо.

То что фон неоднородный - это никто и не отрицает (я написал об этом в первом посте). Но я настаиваю на том, что на объектах (в данном случае буквах) нет засветов (которые бывают при фотографировании или сканировании).

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

Вот часть описания метода Яновица и Брукштейна:
"Наиболее эффективным для обработки сканированных бумажных картографических изображений является метод Яновица и Брукштейна. Таким изображениям свойственна яркостная зональная неравномерность, при которой одни и те же объекты изображения в разных частях имеют значительные различия яркости (до 20-50%)."

Так вот это явно не мой случай.

Pavia в сообщении #927124 писал(а):
Что касается 100% тогда задача распознования сводится к сравнению с шаблонами. И порог тут ненужен.

Фон неоднородный и зачастую разный. И фон, и объекты (буквы) произвольной яркости. Как сравниваться с шаблонами, если не проведена пороговая бинаризация?

Pavia в сообщении #927124 писал(а):
Что касается 1 изображения, то это не показатель. Это основы статистики.

Я не понял, что Вы хотели этим сказать. Но раз уж Вы участвуете в теме (за что Вам спасибо :-)), спрошу прямо:
1. Считаете ли Вы, что программно провести правильную бинаризацию изображения-символа из первого поста невозможно?
2. Если это возможно, тогда каким методом это можно сделать?

 Профиль  
                  
 
 Re: Бинаризация в задаче распознавания текста
Сообщение05.11.2014, 22:57 
Заслуженный участник


27/04/09
28128
Для одного изображения-то программу всегда можно приготовить. А вот для неизвестного множества… :wink: Но я не о том.

Очевидно, что пороги в окрестности с одной стороны от «правильного» дают в определённом смысле эквивалентный набор белых областей, но большей площади, а с другой стороны — областей становится больше; и что так человек и подбирает порог вручную. Ясно, что иногда без знания того, на что должны быть похожи символы, один правильный порог из некоторого интервала выбрать не удастся (в нём могут быть пороги с неэквивалентными наборами областей типа двух последних с последнего вашего примера — а кто его знает, вдруг там действительно ı с точкой справа должно быть), так что в некоторых случаях задачу решить до конца не получится. А вот просто сузить область порогов… Гистограмма не содержит информации о расположении цветов, и потому о связности, которая так важна здесь. Не сказать чтобы, правда, совсем не содержит — если предположить, что цвета фона меняются как-то плавно (и тогда и цвета всего изображения тоже, раз текст сглажен), то можно попытаться как-то определить нижнюю и верхнюю границы возможного числа компонент связности белой области для выбранного порога, или чего-то такое. Не знаю, насколько это может быть успешным.

Другие (наверно, более полезные) предложения, требующие только гистограммы:
  • В статье про BHT, на которую вы сослались, сказано, что гистограмма делится на равные доли. Можно попробовать делить её на не равные, а находящиеся в другом отношении доли.
  • Можно построить по гистограмме что-то гладкое и взять первый справа минимум (кажется, что с данными примерами это должно пройти). А вот как именно — вся сложность.
  • В попытке объяснить пригодность этого метода можно найти более подходящий. Учитывайте способ получения изображения.

-- Чт ноя 06, 2014 02:01:45 --

К последнему: например, если все изображения — исключительно картинки, на которые программно напечатан текст, сглаженный ClearType, у многих символов слева и справа будут цветные края, и если цвета на фоне меняются достаточно медленно, эти края можно отследить качественно. Они могут помочь в определении порога, хотя если к цветному оригиналу нет доступа…

(Кстати — надеюсь, обесцвечивание делается не как среднее каналов?)

-- Чт ноя 06, 2014 02:02:34 --

(Если над ним есть контроль и картинки были изначально цветными.)

-- Чт ноя 06, 2014 02:07:37 --

(На всякий случай: я не специалист по распознаванию.)

 Профиль  
                  
 
 Re: Бинаризация в задаче распознавания текста
Сообщение07.11.2014, 16:56 
Аватара пользователя


31/10/08
1244
Cage
Cage в сообщении #927148 писал(а):
Так вот это явно не мой случай.

Что значит не ваш случай? Где сказано что нельзя использовать?

Cage в сообщении #927148 писал(а):
Фон неоднородный и зачастую разный. И фон, и объекты (буквы) произвольной яркости. Как сравниваться с шаблонами, если не проведена пороговая бинаризация?

Обычным способом через строгое равенство "=" как иначе?
Разный фон только увеличит число шаблонов.

Cage в сообщении #927148 писал(а):
1. Считаете ли Вы, что программно провести правильную бинаризацию изображения-символа из первого поста невозможно?
2. Если это возможно, тогда каким методом это можно сделать?

1. Критерия правильности не был озвучен. Так что не могу.
2. Но ту после которой буква распознается запросто.

Используется синтаксис Pascal
Begin
  ThreshValue:=94;
  ThreshMode:=THRESH_BINARY; // Режимы порога такие же как в OpenCV
  Threshold(OutBitmap,InBitmap, ThreshValue, 255, ThreshMode);  
end;

 Профиль  
                  
 
 Re: Бинаризация в задаче распознавания текста
Сообщение08.11.2014, 22:30 
Аватара пользователя


22/09/09

1907
Можно перебирать пороги и применять к каждому изображению преобразование Хафа - где больше неслитых и непрерывных прямых и кривых удасться найти - там порог м.б. лучше. После еще раз порог уточнить и т.д.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group