-
Подскажите что почитать на эту тему. Возможно есть и инфа связанная с Delphi (как оптимальнее и быстрее делать анализ TBitmap) или даже исходники. Задача - распознать определенные рисунки с вебкамеры.
Спасибо.
-
велосипед будет изобрести сложно, я бы глянул сюда OpenCV
-
Хотелось бы теории почитать. Скорее всего придется самому разрабатывать на Delphi быстрый алгоритм под конкретные узкоспециализированные условия, который будет работать на мобильных устройствах.
-
Есть два варианта OpenCV, ROS. Причем вторая мне нравится больше. Особо не сравнивал, но были отличные проекты.
Delphi? А сколько человек у вас в команде? А сил то хватит, не надорвётесь?
> быстрый алгоритм под конкретные узкоспециализированные условия, > который будет работать на мобильных устройствах.
Они все узко специализированные.
> Задача - распознать определенные рисунки с вебкамеры.
Колитесь что за рисунки? Лица, BarCode, QRCode, текст, галочки в тесте, автомобильные-номера, здания, товар на полке?
-
Условно говоря - есть форма объекта, допустим красный прямоугольник с черной рамкой - массив чисел - это шаблон (эталон), с ним будут сверяться остальные объекты.
Эти объекты (другие прямоугольники) по масштабу конечно будут отличаться от эталона. Суть - нужно найти на картинке прямоугольник, с похожими пропорциями. Вот это для меня загадка. Как это обычно делается? Если эталонный прямоугольник у нас 2x2 см. А тот с которым сравниваем - 5x5 см.
Вопрос в том, как обычно сравнивают новый объект с эталоном. Какие методики существуют, какие фильтры обычно используют чтобы упростить распознавание - напр. убрать шум, сделать "четче" объект итп. По идее нужно - выделить прямоугольник из общей картины, выделить контуры, и далее просчитать разницу между эталоном и новым прямоугольником (сравнить пропорционально). Вот последний этап мне пока не совсем понятен.
Pavia © (27.08.16 19:22) [3]
Пусть будет "товар на полке". Грубо говоря форма коробочки или бутылочки.
-
Если ли алгоритмы реализованные на Delphi для выделения различных линий на изображениях?
-
-
> Эти объекты (другие прямоугольники) по масштабу конечно > будут отличаться от эталона. > Суть - нужно найти на картинке прямоугольник, с похожими > пропорциями. Вот это для меня загадка. > Как это обычно делается? Если эталонный прямоугольник у > нас 2x2 см. А тот с которым сравниваем - 5x5 см.
Камеру подвинул ближе размер изменился. Под углом начал снимать картинка изменилась в пропорциях. Так что это плохой признак. А так либо допуск и отсечение по порогу. Либо перебор возможных вариантов. > Вопрос в том, как обычно сравнивают новый объект с эталоном.
Нейронные сети, метод опорных векторов, каскады. И таки да в вашем случае с эталоном не сравнивают, а выполняют классификацию. Пусть даже классифицируют на 2-класса. Но суть в том что есть отрицательные шаблоны. > какие фильтры обычно используют чтобы упростить распознавание
Там много всего, нет общих подходов. > напр. убрать шум, сделать "четче" объект итп.
Что-бы убрать шум применяют сглаживание Blur. Чётче обычно никто не делает, хотя алгоритмы есть. А вот адаптивную бинаризацию применяют. > По идее нужно - выделить прямоугольник из общей картины, > выделить контуры, и далее просчитать разницу между эталоном > и новым прямоугольником (сравнить пропорционально). Вот > последний этап мне пока не совсем понятен.
Ну что-же подобные работы по поиску прямоугольника я видел. А что с пропорцией не понятно? Вычисляем размеры и сравниваем. К примеру
NewBitmap:=Canny(Bitmap); Rect:=GetAABB(Imge); Aspect:=Rect.Width/Rect.Height;
if Abs(Aspect-AspectEtalon)<= Eps then
Result:=Eq else
Result:=NotEq; > Если ли алгоритмы реализованные на Delphi для выделения > различных линий на изображениях?
Что ты заладил Delphi, Delphi? Delphi умерло. Нету кода на Delphi. Есть Delphi OpenCV, заголовочные файлы для OpenCv 1 или 2 версии. Заброшено 5 лет не обновляется. Работает разумеется только на x86. А так у меня есть своя библиотека. Сейчас на реконструкции, поэтому не выкладываю.
-
Реализация простейшего алгоритма распознавания графических образов. (попиксельный анализ рукописного текста с классификацией) http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1203 > Что ты заладил Delphi, Delphi? Delphi умерло. Нету кода > на Delphi.
У меня нет времени на изучение С++, жизнь так коротка... Тем более нужно написать под андроид и IOS, а тут С++ не совсем мне товарищ, больше гемора будет..
-
Еще на Delphi Распознаем текст, используя расстояние Хэмминга + составление массива эталона + алгоритм сравнивания из ссылки выше. https://geektimes.ru/post/90867/
-
-
> У меня нет времени на изучение С++, жизнь так коротка... > Тем более нужно написать под андроид и IOS, а тут С++ не > совсем мне товарищ, больше гемора будет..
Си++ вы выучите за 1-2 неделю. А задача распознавания не имеют общих алгоритмов и решает частными. А на поиск частных вы потратите недели месяцы. Так что провозитесь гораздо дольше.
> Реализация простейшего алгоритма распознавания графических > образов.(попиксельный анализ рукописного текста с классификацией)
Проблема в том что найти алгоритм который бы работал в любых условиях не возможно. За исключение ABBYY которая за более чем 20 лет таки родила отличную программу по распознаванию. Большинство, почти все публикации по распознаванию носят рекламный характер. Материал носят постановочный характер. Выставляется свет, чтобы не было шума. Из 10 дублей выбирается удачный. подбираются те изображения где алгоритм работает лучше всего.
Так вот OpenCV это кладезь уже отработанных алгоритмов. Вы начинаете не с 0, а с уже более или менее работающими алгоритмами.
-
-
> Так вот OpenCV это кладезь уже отработанных алгоритмов. > Вы начинаете не с 0, а с уже более или менее работающими > алгоритмами.
Одна проблема - эти алгоритмы универсальные. А значит потребуют больше ресурсов, особенно на моб. платформах, где их и так не много. Плюс время которое потратиться на изучение всей библиотеки.
С другой стороны, если начну с нуля, то результат можно сделать заточенным под конкретную задачу, что увеличит производительность, улучшит мультиплатформенность (будет один код - один проект, а как я это сделаю с OpenCV - там придется делать 2 проекта, на 2 разных языках, плюс по опыту знаю, обязательно что-то будет отваливаться), да и мне будет проще в будущем разобраться, зная основы и что где подкрутить..
> И что вы их пробовали? Я пробовал. Не работает. Метод годится > для цифр и то с натяжкой. А для букв уже непригоден, слишком > много ошибок.
Мне главное идею подхватить. Вообще мне нужно определить цвет и форму определенных объектов на фото (не текст) и сравнить из с базой эталонных объектов (классифицировать объект). Объекты по условию будут 2D, в правильном ракурсе, фон будет всегда определенного цвета.
-
-
Про цвет сразу забудьте. Если настроить камеру, то цвет можно определить. А если не настроена, то там чудеса бывают: красный в зелёный превращается. А синий в жёлтый. Плюс наличие тени тоже влияет. http://www.psy.msu.ru/illusion/contrast.htmlТипичные способы это выкрутить насыщенность на максимум. Или использовать HSV модель. > Одна проблема - эти алгоритмы универсальные. А значит потребуют > больше ресурсов, особенно на моб. платформах, где их и так > не много.
Вы неправы, универсальность не связана со скоростью. Распознавание это не завершённая область. Эта область всё ещё находится в научном поиске. Поэтому тут нет нельзя чётко сказать вот это лучше а значит медленнее. К примеру угловой детектор Fast не только быстрее, но и лучше чем детектор Хафа. Что касается мобильной платформы, я вам ROS уже советовал. Она лучше заточена под мобильную платформу. > как я это сделаю с OpenCV - там придется делать 2 проекта, > на 2 разных языках, плюс по опыту знаю, обязательно что- > то будет отваливаться),
Про оптимизацию я вообще молчу. Это отдельная тема. Но тут как я вижу не обойтись и полюбому надо делать 2 проекта. Один пусть медленный но качественный. А второй быстрый, но менее качественный. Причем качественный можно вынести на сервер и брать деньги за быстрое распознавание. > Объекты по условию будут 2D, в правильном ракурсе, фон будет > всегда определенного цвета.
С этого и надо было начинать. А то витрина в магазине это совершенно разный класс задач по сложности. Это хорошо что фон однородный. Тогда у вас вообще всё просто. Может у вас и освещение всегда одинаковое?
-
> Pavia © (27.08.16 21:19) [7]
> Есть Delphi OpenCV, заголовочные файлы для OpenCv 1 или > 2 версии. Заброшено 5 лет не обновляется. Работает разумеется > только на x86.
Да ладно, чушь то не неси https://github.com/Laex/Delphi-OpenCV 23 дня назад обновлено > Кто б сомневался © (27.08.16 19:32) [4]
Прямоугольники ищут с помощью преобразования Хафа, например.
-
> Pavia © (27.08.16 19:22) [3] > Есть два варианта OpenCV, ROS. Причем вторая мне нравится > больше. Особо не сравнивал, но были отличные проекты. > > Delphi? А сколько человек у вас в команде? А сил то хватит, > не надорвётесь?
Задачи машинного зрения обычно наделяют некой совершенно мистической сложностью. Это от незнания с чего начать. И с кажущегося отсутствия информации в интернете. Для частных задач алгоритмы как правило не сложные и под силу одному человеку.
-
> Что ты заладил Delphi, Delphi? Delphi умерло. Нету кода > на Delphi.
Жалко, что только Delphi.
-
> Прямоугольники ищут с помощью преобразования Хафа, например.
А сами пробовали?
|