Добрый день.
Пытаюсь решить такую прикладную задачу, к какому разделу её следует отнести - не знаю, задача напрямую связана с обработкой данных, поэтому пока помещаю тему в раздел CS, если неправ - прошу перенести в более подходящий раздел.
Отсчёт представляет собой либо одно вещественное число, либо пару чисел. В первом случае это - расстояние до цели, во втором - пара расстояние-скорость. Скорость косвенно (по видеокамере) вычислять сложно, поэтому рассматривается оба варианта (настраиваться с использованием скорости или без, лучше если удастся настроиться без неё, но не факт что это удастся).
Есть два массива отсчётов, один из них напрямую считывается с устройства (с радара), второй - вычисляется косвенным методом по данным другого устройства (видеокамеры), для формирования второго массива нужна информация о настройках камеры (например, ориентация, положение в пространстве), которая скорее всего внесена в компьютер неточно (а то и вообще внесены левые значения), нужно произвести коррекцию этих параметров по указанным данным (или, если параметры вообще не соответствуют, их подбор).
Эта задача фигурирует как "Автоматическая калибровка камеры", нагуглить по подобным запросам особо ничего не удалось - все калибруются либо по специальному объекту в поле зрения камеры, либо по паре камер, у нас же есть только возможность посмотреть на радар.
Я попытался делать таким способом - считать меру расхождения массивов отсчётов для определённого набора параметров камеры, затем полученную функцию отправлял на минимум генетическим алгоритмом (локальные алгоритмы показали очень плохой результат, нужна была глобальная оптимизация), после чего точку минимума принимал за нужную коррекцию. Далее я накапливал статистику этих коррекций по времени и пытался корректироваться на среднее, результат очень огорчил, результаты не то чтобы не улучшились, но даже ухудшились - параметры видеокамеры оказывались сильно сбиты.
Для проверки брались реальные данные на 8 тысяч отсчётов (8 тыс. кадров, это около 10 минут). Реальные параметры камеры, с которой взяты данные, примерно известны, это дало возможность понять, насколько результат работы алгоритма соответствует действительности. Величина расхождения с правильными параметрами только увеличивалась (если выполнять те коррекции, которые были вычислены указанным способом, а потом попытаться применить этот же алгоритм к тому же набору данных).
Может кто-нибудь может подсказать идею, что тут можно сделать? У меня пока полный тупик. Единственное, что я ещё не пробовал - улучшить алгоритм измерения меры расхождения массивов (я использовал метод ближайшего соседа, ещё можно попробовать использовать кластеризацию). Но боюсь, тут дело не в нём (вернее, не очень хороший алгоритм измерения разницы массивов влияет не так сильно, как что-то другое).
Возможно что описанный подход поиска коррекции попросту неверен. Настройка камеры под один кадр - это понятно, это проходит хорошо и красиво, но нужно настроиться так, чтобы параметры по возможности приблизились к реально имеющимся, ну или хотя бы чтобы на последовательности реальных данных были бы показаны неплохие результаты.
Описание очень странное и, скорее всего, малопонятное, заранее за это прошу прощения. Буду рад любым идеям, ссылкам, может подсказкам, что погуглить (просто автоматическую калибровку гуглить бесполезно - все найденные алгоритмы требует либо второй камеры, либо специального объекта в поле зрения камеры).
|