2012-02-18 3 views
6


Im пытается извлечь (не признать!) Персонажей из черного & белого изображения,
так, если изображение 123, я получить массив из 3 изображений,экстракт персонажей из образа

сво дубликатом вопрос , я знаю, но я не мог найти то, что я хочу, я также пытался просматривал CodeProject, но не смог найти рабочий пример

http://www.codeproject.com/Articles/143059/Neural-Network-for-Recognition-of-Handwritten-Digi
исходный код не полный


ваша помощь очень ценится :)

+0

Я уверен, что вам нужно будет * распознать символы, чтобы их извлечь. OCR - это способ сделать это. –

+2

@ M.Babcock: Не обязательно. Вы можете определить границы представления цифры в изображении, следуя смежным черным пикселям. – Douglas

ответ

4

Как уже упоминал Кенни, «связанная маркировка компонентов» описывает семейство алгоритмов, которые идентифицируют связанные пиксели. Подключенные компоненты также называются «подключенными областями» или «блоками», а также связанной концепцией «контуров». Любой такой алгоритм должен иметь возможность находить не только форму связанных пикселов переднего плана, но также наличие «дырок» внутри фигуры, состоящей из пикселей фонового цвета.

http://en.wikipedia.org/wiki/Connected-component_labeling

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

Библиотека OpenCV имеет функцию в findContours(), который может быть использован, чтобы найти контуры, контуры внутри контуров и т.д.
http://opencv.willowgarage.com/wiki/

Если вы хотите, чтобы увидеть алгоритм область мечения на работе, смотреть для ссылок на «подсчет клеток» с использованием приложения ImageJ. Подсчет биологических клеток является важным и часто цитируемым применением маркировки региона для медицинской визуализации.

http://rsbweb.nih.gov/ij/

Рассмотрим получение учебник по предмету, а не обучение по частям в Интернете. Изучение связанных компонентов (a.k.a. blobs) неизбежно приводит к рассмотрению бинаризации (пороговое значение a.k.a.), которое принимает оттенки серого или цветное изображение и генерирует из него черно-белое изображение. Если вы работаете с изображениями с камеры, освещение становится критическим, и для изучения требуется время и мастерство.

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

Вот учебник, который часто рекомендуется, и это дает хорошее покрытие стандартных методов обработки изображений:

цифровой обработки изображений по Гонсалес и Вудс, 3-е издание http://www.imageprocessingplace.com/

Перейти к addall.com найти дешевые копии. Международные издания дешевле.

Если символы (или другие фигуры) на изображении имеют согласованный размер и форму, например, «A» всегда имеет высоту 40 пикселей и 25 пикселей и печатает один и тот же шрифт - тогда вы может использовать «нормализованную взаимную корреляцию» или метод сопоставления шаблонов для идентификации наличия одной или нескольких совпадающих фигур. Этот метод может работать как очень грубый вид OCR, но имеет серьезные ограничения.

http://en.wikipedia.org/wiki/Template_matching

+1

Большое вам спасибо :) –

3

Если ваше изображение представляет черные символы на белом фоне (или наоборот), и если изображение имеет разумное качество и если строки текста горизонтальны и если каждый символ отделен от его соседей, то это относительно тривиальная операция найти все маленькие острова черных пикселей в белом море.

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

+0

все эти условия установлены, но я уверен, что есть какая-то библиотека или что-то, что делает то, что мне нужно, я думаю, что чтение книги и исследование бумаг (например, рекомендуемый Rethunk) немного переборщило :) –

+0

Множество сообщений SO на эту и подобные темы рекомендуем OpenCV. Я вижу, что у него есть функция findContours, которая может вас запустить. –

0

Возможно, вам будет полезно узнать о Blob или анализе соединений в машинном зрении. Большинство библиотек, включая бесплатные, имеют что-то вроде этого. Кроме того, если вы знаете ориентацию, текст будет черно-белым, а текст будет разнесен красиво, вы должны будете найти края символов в 1-й проекции изображения в X и Y или под любым углом, если у вас есть время.

0

На мой взгляд, лучший ответ до сих пор является Rethunk, поскольку он указывает на то, что вы должны использовать сегментацию и подключенную маркировки компонентов. HighPerformanceMark в основном описывает алгоритм маркировки подключенных компонентов (что очень просто), но я думаю, что упоминание имени алгоритма важно для такого ответа.

Обратите внимание, что маркировка сегментации и подключенного компонента является лишь отправной точкой для решения вашей проблемы. Например, некоторые буквы, такие как строчные буквы «i», будут состоять из двух компонентов, и вы должны подумать, что у вас может быть ligatures (т. Е. Две буквы, которые связаны друг с другом). Вот почему мне нравится комментарий М.Бабкока: трудно найти хорошее решение вашей проблемы без распознавания символов.

Для вашей проблемы, я считаю, что вы можете решить вашу проблему, используя OCR library.

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