2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Выделение образа на картинке
Сообщение19.04.2006, 11:23 
Аватара пользователя


24/10/05
400
Какие существуют алгоритмы по распознаванию и выделению образов на картинках,рисунках?

 Профиль  
                  
 
 
Сообщение19.04.2006, 11:42 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Литературы много. О каких именно образах идет речь?

Если о заданном параметрическом семействе кривых, то загляните сюда http://dxdy.ru/viewtopic.php?p=14021#14021

 Профиль  
                  
 
 
Сообщение19.04.2006, 12:43 
Аватара пользователя


24/10/05
400
PAV писал(а):
Литературы много. О каких именно образах идет речь?

Если о заданном параметрическом семействе кривых, то загляните сюда http://dxdy.ru/viewtopic.php?p=14021#14021

у меня такая задача,.Имеетcя картинкаИзображениеСначало нужно избавится от шума,подключив различные фильтры,а потом выделить цифры.

 Профиль  
                  
 
 
Сообщение19.04.2006, 16:33 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Интересная задача. Это поисследовать надо. Это задача учебная или промышленная? Еще картинки есть? И вообще, что данные картинки означают?

 Профиль  
                  
 
 
Сообщение19.04.2006, 16:39 
Аватара пользователя


24/10/05
400
PAV писал(а):
Интересная задача. Это поисследовать надо. Это задача учебная или промышленная? Еще картинки есть? И вообще, что данные картинки означают?

Это задача, конечно, учебная.Все это дело - курсовая работа.На данных картинкх фотографии номеров оружия.Картинок много.

 Профиль  
                  
 
 
Сообщение19.04.2006, 17:45 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Всегда ли на картинках светлые цифры на темном фоне или бывает наоборот? Всегда ли цифры на одном уровне? Бывают ли белые пятна помимо цифр? Всегда ли цифры следуют более-менее ровно по горизонтали или бывают повернутые картинки?

Тут можно применять много разных методов. Вопрос в том, как их умело скомпоновать. Вот несколько идей навскидку.

1. Возможно, понадобится сглаживание картинки. Если глаза меня не обманывают, на темном фоне встречаются отдельные светлые пиксели. От этого возможно понадобится избавиться.

2. Может быть пригодится выделение связных фрагментов одного цвета (светлых). Далее по разным признакам можно определить, цифры это или нет.

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

А вообще - не поздновато ли курсовую писать? Когда срок сдачи?

 Профиль  
                  
 
 
Сообщение19.04.2006, 18:02 
Аватара пользователя


24/10/05
400
PAV писал(а):
А вообще - не поздновато ли курсовую писать? Когда срок сдачи?

как раз самое время,чтобы начать.срок сдачи через 2 месяца...уже через 3 месяца!

 Профиль  
                  
 
 
Сообщение19.04.2006, 18:07 
Аватара пользователя


24/10/05
400
PAV писал(а):
1. Возможно, понадобится сглаживание картинки. Если глаза меня не обманывают, на темном фоне встречаются отдельные светлые пиксели. От этого возможно понадобится избавиться.
2. Может быть пригодится выделение связных фрагментов одного цвета (светлых). Далее по разным признакам можно определить, цифры это или нет.
3. Может пригодиться выделение точек резкого перехода цвета из одной зоны в другую. Далее провести анализ расположения этих точек. Например, спроектировать на вертикальную ось (построить гистограмму). Если ряд цифр расположен горизонтально, то верхняя и нижняя линии будут характеризоваться резкими скачками на этих гистограммах.


А расскажите подродбее про эти алгортмы ...

 Профиль  
                  
 
 
Сообщение19.04.2006, 18:35 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Рассказать не расскажу, но может -- поможет. Есть такая штука -- Paint.NET. OpenSource. Там есть такой инструмент -- выбор "волшебной палочкой". Посмотрите, как он идентифицирет область (по градиенту). Другой кандидат -- GIMP.

Я бы, на вскидку, не стал бы сглаживать. Сделал бы гистограмму, нашел бы "белый" и "черный", и все перевел бы в черно-белое изображение. После чего убрал бы мелкопиксельный шум. Сглаживание необходимо размывает цифры, а оно Вам надо?

Еще одно наблюдение. Попробуйте сформулировать некоторую цифровую характеристику "уверенности" опознования. Это очень полезно в реальных приложениях. Например, если "уверенность" < 0.99, оператор может сделать ручную проверку.

Первый же фильтр, который приходит в голову -- клеточный автомат. Пример: для каждого пикселя рассматриваете окружающией его квадрат 3x3. Если значение пикселя превышает (например, в два раза) значение всех соседей, то он заменяется на среднее соседей. Конец примера

 Профиль  
                  
 
 
Сообщение19.04.2006, 19:11 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
antoshka1303 писал(а):
А расскажите подродбее про эти алгортмы ...


Я пока подробностей не знаю, представляю только в общих чертах. Не факт, что мое решение оптимально.

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

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

 Профиль  
                  
 
 
Сообщение19.04.2006, 19:28 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
На самом деле я бы попробовал в начале все-таки выделить границы. С учетом мелкопиксельного шума это стоит сделать опять-таки с помощью окрестности. Берем небольшую окрестность точки и смотрим - если в ней соотношение черного и белого близко к 0.5, то отмечаем эту точку как границу. Нужно посмотреть, что получится, и далее подумать.

Вопрос такой - в постановке задачи требуется ли распознать цифры или их нужно только найти?

 Профиль  
                  
 
 
Сообщение20.04.2006, 04:38 


25/01/06
102
Вот некоторые соображения.

1. Вначале дествительно стоит избавиться от шума. Блок-фильтры (усреднение под разными соусами), предлагавшиеся выше, обычно менее эффективны, чем медианный фильтр. Медианный фильтр берет значения пикселов в заданном радиусе и находит медиану их значений. Медиана - это значение среднего пиксела в списке пикселов после упорядочивания. Этот метод требует сортировки, но на картинках 700х256 и при малом радиусе (2-3 пиксела) будет все равно достаточно быстрым.

2. Выделение границ. Есть набор стандартных фильтров, наиболее популярный из них Sobel - см. здесь http://en.wikipedia.org/wiki/Sobel

3. После выделения границ желательно провести морфологическую чистку, чтоб удалить оставшийся шум. Задавшись пороговым значением (например, 0.5) надо построить бинарную картинку для границ. Т.е. в местах, где есть граница, пикселы будут равны 1; и 0 в остальных местах. На такую картинку надо напустить морфологическую операцию opening (erosion, затем closing с тем же параметром, см. http://en.wikipedia.org/wiki/Morphologi ... Processing) После чистки можно либо остаться на уровне бинарной картинки, либо вернуться к gray scale edge image, т.е. использовать бинарную картинку только как маску.

4. После всех этих предварительных притопов и прихлопов можно приступать к основной задаче. Вероятно, для распознавания цифр и букв проще всего завести их эталонные изображения. Понятное дело, их тоже надо превратить в edge image - картинку, содержащую только границы. После этого, можно тупо пытаться найти символ, который при некотором масштабе и повороте (в небольшом диапазоне углов) дает максимальную корреляцию с еще не распознанной частью картинки.

Нахождение первого символа будет довольно дорогим.

Простейших способ сократить вычисления - применить multi-resolution approach. То есть сначала корреляция ищется с помощью картинок вдвое меньшего разрешения. Если "подозрительное место" найдено, то оно обрабатывается на картинке полного разрешения. При полном разрешении вычисляется более точное значение корреляции и уточняется положение символа.

Кроме того, после того как первый символ найден, мы можем предполагать, что остальные расположены "в строчку". Поэтому в дальнейшем мы можем считать, что масштаб и поворот нам известны, а также известно приблизительное положение остальных символов.

Шаг 4 можно значительно соптимизировать, если применить "преобразование Hough" (не знаю как это по-русски, но введение есть здесь - http://en.wikipedia.org/wiki/Hough_transform). Для этого перед шагом 4 выполняем след. процедуру.

Разбиваем вычищенное изображение границ на блоки размером, скажем, 8х8. В каждом из них строим преобразование Hough и находим доминирующую прямую, проходящую через этот блок. Далее, анализурем соседние блоки и оставляем только те где, во-первых, есть такая доминирующя линия, во-вторых она не является частью очень длинной линии (второе -опционально). Затем выкидываем из рассмотрения все блоки, где линии удаовлетворияющие нашим критериям не присутствуют (заливаем нулями или ставим флаги - не важно). То что осталось, в идеале, и есть область, где расположен номер, плюс, возможно, немного лишнего. Эту область, в свою очередь, тоже можно подвергнуть морфологическому улучшению (понятно, что при этом надо работать на уровне блоков, а не пикселов).

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

Метод можно усилить, если искать не только линии, но и окружности (для нулей и восьмерок) - есть и такая разновидность преобразования Hough. Строится она очевидным образом.

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

Также хочу предостеречь от нейросетевых методов. Я не видел ни одного действительно работающего. Вдобавок, если отладка пошагового метода, описанного выше, вполне осуществима (всегда видно на каком этапе метод работает хорошо, а на каком нет), то с нейросетями такая пошаговая отладка и настройка обычно гораздо труднее, если вообще возможна.

Желаю удачи.

 Профиль  
                  
 
 
Сообщение02.05.2006, 20:08 
Аватара пользователя


24/10/05
400
А что делать, если картинка цветная?

 Профиль  
                  
 
 
Сообщение03.05.2006, 10:29 


27/03/06
24
В ЖВМ и МФ опубликован способ выделения движущегося изображения (96-98 г. примерно в те года).

 Профиль  
                  
 
 
Сообщение03.05.2006, 13:58 
Аватара пользователя


24/10/05
400
КАЗАКОВ писал(а):
В ЖВМ и МФ опубликован способ выделения движущегося изображения (96-98 г. примерно в те года).

Расшифруйте ЖВМ и МФ

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.

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



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

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


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

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