Да я всегда непротив естественно. Я бы попробовал что-то типа этого http://www.surveyor.com/blackfin/ запрограммировать. К слову CMUCam чувствителен к освещению.
Виталий писал(а):Каскадный классификатор сам перевел =)
Кстати, можешь посоветовать что-то базовое почитать на тему этих каскадных классификаторов? (разумеется можно на английском) А то никак не могу суть метода догнать, а везде этот метод уже пользуется, а не объясняется
Каскадные классификаторы, комитетные классификаторы, adaboost, бустинг. Вот по этим словам надо искать. Viola-Jones так работает тоже. Было вроде на cgm.graphicon.ru
Считаю что железяку нужно делать примерно такого уровня. Ну может не такого, но не на меге. Может EdGull осилит про процессоры для обработки изображений? Не работал никто?
Ну тогда думаю нужно к ним обращаться за алгоритмами. Я повторюсь. Да, разделение по цветам можно сделать на 25МГц 32битной Мотороле, но оно, это разделение будет работать с маленьким разрешением и сильно зависеть от света.
Виталий писал(а):Я повторюсь. Да, разделение по цветам можно сделать на 25МГц 32битной Мотороле, но оно, это разделение будет работать с маленьким разрешением и сильно зависеть от света.
Ну EdGull и так говорил про разрешение 60х80 пикселей это как раз в 16 раз меньше чем 320х240 штатные, поэтому как раз можно вместо 520МГц можно юзать 520/16 ~= 32МГц, что близко к 16МГц АТМега вот только чего там такого разглядеть можно в 60х80 пикселей...
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Виталий писал(а):Каскадные классификаторы, комитетные классификаторы, adaboost, бустинг. Вот по этим словам надо искать. Viola-Jones так работает тоже. Было вроде на cgm.graphicon.ru
Ничего толком не могу найти, чтобы понятно объясняли базу ((( хотелось бы именно сначала про базовые каскадные классификаторы без всяких бустингов понять, я суть никак не могу уловить чего они там делают - не могу найти базовый документ. Ну получили интегральное изображение, ну научились считать, как распознаем то и классифицируем?
Можно я тебя тут попытаю?
Правильно ли я понимаю, что изображение тупо перебирается по масштабам с шагом скажем 1.25, а внутри каждого масштаба мы тупо бегаем окном и проверяем попали или нет? Проверка попали или нет осуществляется наложением по очереди пачки паттернов в суб-окна и проверкой получающихся значений, так? При этом мы гоняем по какому-то дереву паттернов которые накладываем, листья которого - ответы, совпало или нет - так? Соответственно есть отдельные две процедуры - проверка изображения на наличие образов и тренировка (формирование) этого дерева. Я прав?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Я расскажу про бустинг. Это достаточно просто. Есть слабые классификаторы (оценочные функции считай). Результат работы этих классификаторов лишь коррелирует с правильной классификацией. Вопрос состоит в том, можно ли при помощи этих слабых классификаторов построить сильный (причем зачастую простой взвешенной суммой), т.е. такой результаты которого сильно коррелируют с правильной классификацией.
Собственно бустинг - это и есть различные способы построения сильных классификаторов из слабых.
Про каскадные классификаторы. В качестве аналогии можно привести дерево решений, но вырожденное. Классификация осуществляется путем последовательного применения все более и более точных (а значит менее производительных классификаторов) к окну которое бегает по изображению. Т.е. если не проходит более слабую классификацию - оно отбрасывается.
Ну то есть берем окно 24х24 пикселя и погнали по изображению отмасштабированному на очередной масштаб его применять с шагом 1 пиксель по каждой оси - так? При этом в этом окне берем скажем простой классификатор типа разности сумм пикселей в двух соседних прямоугольниках в субокне 12х12 пикселей которое левая верхняя четверть исходного окна - так? это типа слабый классификатор будет. Дальше если он прошел - применяем другие классификаторы и т.п. - так?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Просто для того чтобы показать что такое 80 на 60.
Я и мой телефон на расстоянии в 30 см. с неплохой камеры. С телефонной полуслепой камеры будет хуже.
Отмечу что данное изображение уменьшено из большого с применением интерполяции, на миниботе такого не будет и придется выхватывать из изображения отдельные пикселы, получится картинка с артефактами.
Вот блин, а я ведь в процессе обдумывания как распознавать образы с помощью интегральных изображений сам почти до этого способа дошел только не так стройно надо еще подумать, может что-то более интересное придумается... не нравится мне этот тупой перебор с шагом 1 пиксель
Добавлено спустя 58 минут 36 секунд: Правильно ли я считаю сложность алгоритма который ищет по каскаду средневероятной глубиной 2 по картинке размером 320х240, шагом увеличения 1.25, окном 24х24 пикселя?
Проверка окна при готовом интегральном изображении будет занимать 2*(2*4+4)~=24 операции.
Картинка некоторого масштаба размерами W*H пикселей будет превращена в интегральную за 4*W*H операций, а потом проверена за (W-24)*(H-24)*24 операции. При достаточно больших W,H получаем, что примерно сложность обработки составляет 28*W*H.
При масшабировании в 1.25 раза учитывая 2 измерения получаем уменьшение количества пикселей в 1.25*1.25~=1.56 раза
Итого при размерах 320х240 сложность порядка 6 000 000 операций.
Нигде не косякнул?
Добавлено спустя 1 час 8 минут 59 секунд: Поправка - на МК из-за медленного доступа к памяти от 16МГц остается порядка 4 млн реальных операций с памятью.
Так что за 1.5 секунды один кадр 320х240 будет обработан, если я нигде не налажал
Проект [[Open Robotics]] - Универсальные модули для построения роботов
А сколько будет занимать один пиксел в памяти? Ведь прямой доступ есть только к 64КБ, для большего объема еще и страницы переключать придется
Проект [[Open Robotics]] - универсальные модули для построения роботов Модули Open Robotics можно приобрести в магазине shop.roboforum.ru Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!