Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2018, 15:28   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию Распознавание объектов

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

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

Для простоты- есть объект (однотонный), от фона он оличаеться цветом. Мы просматриваем каждый пиксель изображения и если цвет совпадает, пиксель принадлежит объекту.
И тут сразу первая непродалимая проблема. Что если освещенность объекта не равномерная? - цвета пикселей в точности совпадать не будут.
SAMOUCHKA вне форума Ответить с цитированием
Старый 05.02.2018, 15:49   #2
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию

Хорошо. Я Вам тоже от безделья отвечу, т.к. думал одно время над этой задачей.

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

На основе этих карт, наверное надо построить граф и преобразовать картинку в вектор.

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

Наверное примерно так.

+ И ещё, наверное, можно нейросеть натренировать на распознавание.

Последний раз редактировалось LV1974; 05.02.2018 в 15:58. Причина: +
LV1974 вне форума Ответить с цитированием
Старый 05.02.2018, 16:11   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
На основе этих карт, наверное надо построить граф и преобразовать картинку в вектор.
вы имеете в виду векторное изображение?

Цитата:
+ И ещё, наверное, можно нейросеть натренировать на распознавание.
ну это магия пошла
SAMOUCHKA вне форума Ответить с цитированием
Старый 05.02.2018, 16:20   #4
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
вы имеете в виду векторное изображение?
Векторный граф. Здесь надо уйти от абсолютных координат и размеров, чтобы можно было сравнивать с образцами. Чтобы при сравнении не мешали масштабы и повороты.

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

Могу ещё сказать о том, что общий граф распадётся на фрагменты, которые надо сгруппировать и нормировать.

И ещё. Из образцов надо построить дерево наиболее близких образцов. Это существенно оптимизирует перебор вариантов при сравнении.

Последний раз редактировалось LV1974; 05.02.2018 в 16:55. Причина: +
LV1974 вне форума Ответить с цитированием
Старый 05.02.2018, 17:23   #5
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
Для простоты- есть объект (однотонный), от фона он оличаеться цветом. Мы просматриваем каждый пиксель изображения и если цвет совпадает, пиксель принадлежит объекту.
И тут сразу первая непродалимая проблема. Что если освещенность объекта не равномерная? - цвета пикселей в точности совпадать не будут.
Неиспользовать цвет. Используйте геометрию, формы, контрасность, градиенты, численые производные.

Если это техническое зрение то просто добавляют источник освещения и направляют его на объекты.

HSV - тут уже называли есть и более хитрые методы восстановления освещённости и её нормировки.

Или просто использовать большой набор данных. К примеру для текста у меня неплохо работало дерево решений, а образцы сгенерированы с разнымм размерами и разными наклонами и разных шрифтов.
Так и в вашем случан можно попробовать раздобыть шаблоны с разными освещённостями.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 05.02.2018, 18:25   #6
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Неиспользовать цвет. Используйте геометрию, формы, контрасность, градиенты, численые производные.
да но для начала нужно выделить эту геометрию, от общего изображения.
SAMOUCHKA вне форума Ответить с цитированием
Старый 05.02.2018, 19:49   #7
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
да но для начала нужно выделить эту геометрию, от общего изображения.
Я бы сейчас сделал так:
1. Подобрал бы пороговое значение по цветовой дистанции.
2. Сделал бы списки сканлайнов на основе порога. Причём и по вертикали и по горизонтали.
3. На основе сканлайнов сформировал бы список дискретных контуров.
4. Здесь бы сделал отображение контуров поверх исходной картинки, для самопроверки. И поигрался бы снова с подбором порога.
5. Преобразовал бы дискретные контуры в дуги, безье или иные кривые.
6. Составил бы граф на основе выявленных кривых.

Ну вот примерно так. и т.д.
LV1974 вне форума Ответить с цитированием
Старый 06.02.2018, 00:37   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
да но для начала нужно выделить эту геометрию, от общего изображения.
1). Вы хотите с одной стороны помощи с другой стороны не хотите слушать о существующих алгаритмах. Поэтому я в лёгком замешательстве как вам ответчать.
2) Это не важно с чего начинать. Важна синергия.
3) Для выделения объекта из общей фотографии применяют перебор. Метод скользящего окна. Грубо говоря перебираем все координаты исходного изображения. С этими координатами копируем квадрат 100х100. И пробуем распознать,если распознали, то это и есть необходимый объект.
Распознаём при помощи НС или любого другого метода классификации.
В классификатор вводится клас "муссор" куда загружаем то что не подподает или недолжно подподать под другие классы.

Этот всё достаточно хорошо изученно и проработанно.

4)А вот работа с цветом плохо изучена. Приходится в водить большие допуска в 64 и даже 128 уровней.
5) Как можно выделить геометрию из общего фота? Первая идея: задний фон вне фокуса, а основной объект в фокусе. Т.е. основной объект имеет резкие переходы а фон плавные тогда если взять производную вернее применить оператор Собеля то далее по порогу можно отделить фон от основного объекта. Проблема в том что порой цвета сливаются. Поэтому контуры становятся разомкнутыми.

Тут для улучшения применяют много всяких методов. Самое первое это использовать локальные пороги. Но это не спасает от разрывов контуров. Хотя качество повышает.

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

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

А теперь вопрос, а нужныли замкнутые контуры для распознования? Оказывается не нужны.
Достаточно проанализировать границы. Более того строить сплайны тоже нет надобности.
Достаточно проанализировать особые приметы: углы,т-образные пересечения линий и + образные. Под термином проанализировать я имею в виду пропустить их наличие, положение поворот через классификатор.

А если говорить про распознование лиц так оно основано на шаблонах Хара.

А векторное представление применяют для экономии памяти и как следстве ускорения расспознования.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 06.02.2018, 08:22   #9
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Велосипед изобретаете ))) В большинстве случаев после долгих мучений скорее всего вы изобретете уже существующий метод обработки.
Чтобы изобрести что-то действительно новое нужно как минимум изучить матчасть существующих решений.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 06.02.2018, 12:20   #10
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Велосипед изобретаете ))) В большинстве случаев после долгих мучений скорее всего вы изобретете уже существующий метод обработки.
Чтобы изобрести что-то действительно новое нужно как минимум изучить матчасть существующих решений.
Ни чего не изобретаю, просто хотелось разобратся, интересно и все. Я в самом начале писал что тему создал не для прикладного применения.
Спасибо Pavia
Цитата:
1). Вы хотите с одной стороны помощи с другой стороны не хотите слушать о существующих алгаритмах. Поэтому я в лёгком замешательстве как вам ответчать.
Просто с первого раза сложно переварить.
SAMOUCHKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распознавание объектов на фотографии Visa Фриланс 1 13.12.2016 09:58
Добавление своих объектов в Добавление своих объектов в двунаправленный кольцевой список voidmain C# (си шарп) 3 21.03.2013 13:08
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
Распознавание текста Босиком_по_лету Паскаль, Turbo Pascal, PascalABC.NET 1 17.04.2011 10:23
Распознавание объектов на изображении STRELOK-2007 Общие вопросы Delphi 2 07.08.2009 08:36