Система навигации по снимкам: первые соображения

lead_seller
Сообщений: 7
Зарегистрирован: 28 ноя 2015, 15:54

Re: Система навигации по снимкам: первые соображения

Сообщение lead_seller » 29 ноя 2015, 13:08

Красиво получается. Если, скажем, вынести подсчет метрики в аппаратный ускоритель на ПЛИС, то получится очень неплохо по времени.

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 29 ноя 2015, 13:28

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

lead_seller
Сообщений: 7
Зарегистрирован: 28 ноя 2015, 15:54

Re: Система навигации по снимкам: первые соображения

Сообщение lead_seller » 29 ноя 2015, 20:19

А не дадите инфу по алгоритму подсчета метрики? Попробую загнать в железо, да поганять немного.

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 29 ноя 2015, 20:43

Даны две серых картинки, то есть значения в байтах на пиксель. Обрабатываются перекрывающиеся области.
На первом проходе для обоих фреймов считаются первый и второй моменты из которых определяются средние и дисперсии (то есть яркость и контраст).
На втором проходе находится среднеквадратичное отклонение первого фрейма от второго.

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 29 ноя 2015, 20:52

Ну если ppFrames - это перекрывающиеся области с количеством пикселей iQ, примерно так:
int i,j; double M1[2]={0}, M2[2]={0}, D[2];
forj(2) fori(iQ) { M1[j] += ppFrames[j][i]; M2[j] += SQR(ppFrames[j][i]); }
forj(2) {M1[j] /= iQ; M2[j] /= iQ; D[j] = sqrt(M2[j]-SQR(M1[j]));}
double dRMS2 = 0;
fori(iQ) { dRMS2 += SQR((ppFrames[0][i] - M1[0])/D[0] - (ppFrames[1][i] - M1[1])/D[1]); }
return sqrt(dRMS2/iQ);

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 29 ноя 2015, 20:57

В принципе, для ускорения первый и второй проход можно объединить. Достаточно раскрыть скобки.
Metric.gif
Metric.gif (17.7 KiB) 3563 просмотра

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 29 ноя 2015, 21:23

Получаем
int i,j; double M1[2]={0}, M2[2]={0}, MM=0, D[2];
fori(iQ) { forj(2) {M1[j] += ppFrames[j][i]; M2[j] += SQR(ppFrames[j][i]);} MM += ppFrames[0][i]*ppFrames[1][i]; }
forj(2) {M1[j] /= iQ; M2[j] /= iQ; D[j] = sqrt(M2[j]-SQR(M1[j]));} MM /= iQ;
double dRMS2 = 2*(1+(M1[0]*M1[1] - MM)/(D[0]*D[1]));
return sqrt(dRMS2);

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 29 ноя 2015, 21:24

Код не тестировал, но можете проверить на совпадение результата с предыдущим вариантом.

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 29 ноя 2015, 21:46

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

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 29 ноя 2015, 21:50

Кстати, для тестирования алгоритма можно использовать кадры из фильма, снятого на дёргающуюся камеру. Или вообще взять имеющийся алгоритм стабилизации видеозаписей.

lead_seller
Сообщений: 7
Зарегистрирован: 28 ноя 2015, 15:54

Re: Система навигации по снимкам: первые соображения

Сообщение lead_seller » 29 ноя 2015, 22:09

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

E.Mach
Сообщений: 20
Зарегистрирован: 25 ноя 2015, 21:17

Re: Система навигации по снимкам: первые соображения

Сообщение E.Mach » 30 ноя 2015, 00:06

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

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 30 ноя 2015, 11:17

Вы это на каком языке разговариваете? :-)
Последний раз редактировалось gionov 30 ноя 2015, 17:01, всего редактировалось 1 раз.

E.Mach
Сообщений: 20
Зарегистрирован: 25 ноя 2015, 21:17

Re: Система навигации по снимкам: первые соображения

Сообщение E.Mach » 30 ноя 2015, 12:43

gionov писал(а):Вы это на каком языке разговариваете? :-)

Посмотрите на время комментария! Во мне не спал только философ :D

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

gionov писал(а):Лучше вторым сообщением, алгоритм в первом будет работать помедленнее.

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

E.Mach
Сообщений: 20
Зарегистрирован: 25 ноя 2015, 21:17

Re: Система навигации по снимкам: первые соображения

Сообщение E.Mach » 30 ноя 2015, 12:57

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

cynepkot
Сообщений: 24
Зарегистрирован: 25 ноя 2015, 12:31

Re: Система навигации по снимкам: первые соображения

Сообщение cynepkot » 30 ноя 2015, 14:01

Кстати. Нет ли желания взять готовые алгоритмы motion estimation из видео-кодеров? Это самая разработанная область с готовыми высокоэффективными алгоритмами и кодом. В принципе, даже можно взять видео-кодеры из тех же самых мобильных или современных SoC-ов и возложить операцию нахождения оптического потока на их железо. Та же самая Raspberry Pi Zero за пять долларов уже содержит этот модуль в готовом виде. В видео ME применяется для нахождения разности между соседними кадрами с целью уменьшения избыточности, что практически идеально ложится на задачу определения смещения КА относительно поверхности. Имея вектор смещения относительно поверхности можно применять методы вероятностной робототехники (это где есть первое состояние с первым распределением вероятностей положения робота в пространстве, потом происходит какое-то управляющее воздействие, которое тоже с какой-то вероятностью приводит к какому-то смещению, на основе сравнения показаний датчиков у которых есть какая-то погрешность производится уточнение карты вероятностей положения робота и т.д. Это как google self driving car ездит, ага) которые довольно эффективны в вычислительном смысле и не подвержены ошибкам жёстко заданных алгоритмов, так как оперируют не абсолютными значениями, а некоторой вероятностной мерой положения, т.е. работают даже в том случае, если КА вылетел «неожиданно» для жёсткого алгоритма за пределы текущего квадрата карты. Жёсткий алгоритм в этом случае выдаст гарантированно неправильные координаты, так как что-нибудь у него, да «совпадёт» между текущим изображением с камер и картой «текущего» куска местности.

Ссылки:
  • https://en.wikipedia.org/wiki/Motion_estimation
  • https://www.raspberrypi.org/blog/raspberry-pi-zero
  • https://ru.wikipedia.org/wiki/X264

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 01 дек 2015, 21:23

cynepkot писал(а):Кстати. Нет ли желания взять готовые алгоритмы motion estimation из видео-кодеров? Это самая разработанная область с готовыми высокоэффективными алгоритмами и кодом.

gionov писал(а):Кстати, для тестирования алгоритма можно использовать кадры из фильма, снятого на дёргающуюся камеру. Или вообще взять имеющийся алгоритм стабилизации видеозаписей.

cynepkot
Сообщений: 24
Зарегистрирован: 25 ноя 2015, 12:31

Re: Система навигации по снимкам: первые соображения

Сообщение cynepkot » 01 дек 2015, 23:08

gionov писал(а):
cynepkot писал(а):Кстати. Нет ли желания взять готовые алгоритмы motion estimation из видео-кодеров? Это самая разработанная область с готовыми высокоэффективными алгоритмами и кодом.

gionov писал(а):Кстати, для тестирования алгоритма можно использовать кадры из фильма, снятого на дёргающуюся камеру. Или вообще взять имеющийся алгоритм стабилизации видеозаписей.


Ну не, речь именно про этап ME кодеков (особенно H.264/265), он _очень_ сильно проработан и оптимизирован, т.е. речь не про стабилизаторы записей. Как по мне, так это совершенно лишний этап. Он нужен только в том случае, если у нас алгоритм локализации работает с «идеальными» картами и снимками с камеры и пытается найти какие-то аффинные преобразования одного в другое. А ME можно сразу (как мне сейчас кажется), в сыром виде, скармливать в алгоритм вероятностной локализаци и получать довольно точные показания. Записи с дёргающейся камеры лучше получить в сыром виде. Или настроить её энкодер должным образом сразу. Но это уже как главный конструктор решит, какой из подходов надо будет реализовывать: современный, типа Monte Carlo localization или «классический» с жёсткими алгоритмами поиска смещений (но и в данном случае ознакомление с алгоритмами ME от кодеков привнесёт множество идей и позволит избежать изобретения ненужных «велосипедов»).

Ссылки:

gionov
Сообщений: 272
Зарегистрирован: 23 окт 2015, 21:15
Откуда: г. Снежинск, Челябинская обасть
Контактная информация:

Re: Система навигации по снимкам: первые соображения

Сообщение gionov » 01 дек 2015, 23:22

Ну я под стабилизацией изображений и понимаю алгоритм "motion estimation". Так что я про кодаки и говорил.


Вернуться в «Обоснование выбора целевой аппаратуры»

Кто сейчас на форуме

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