Поиск параметров преобразования Хелмерта (7ПП)
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
Поиск параметров преобразования Хелмерта (7ПП)
Hi ALL!
Интересует задача нахождения параметров 7-параметрического преобразования из двух массивов координат точек, заданных в двух системах координат.
Как технично и изящно решить такую задачу, не прибегая к тупому перебору по всем семи параметрам с постепенным приближением?
Функция 7ПП давно написана, но вот как найти эти параметры???
Интересует задача нахождения параметров 7-параметрического преобразования из двух массивов координат точек, заданных в двух системах координат.
Как технично и изящно решить такую задачу, не прибегая к тупому перебору по всем семи параметрам с постепенным приближением?
Функция 7ПП давно написана, но вот как найти эти параметры???
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Поиск параметров преобразования Хелмерта (7ПП)
Если это разовая задача (в смысле, что не очень важна скорость нахождения оптимума), то я рекомендую посмотреть в сторону генетических алгоритмов.Andrey1 писал(а):Hi ALL!
Интересует задача нахождения параметров 7-параметрического преобразования из двух массивов координат точек, заданных в двух системах координат.
Как технично и изящно решить такую задачу, не прибегая к тупому перебору по всем семи параметрам с постепенным приближением?
Функция 7ПП давно написана, но вот как найти эти параметры???
Очень удобная штука из серии "один раз изучил, всю жизнь пользуешься".
Если коротко суть решения будет такая:
1. Генерируете несколько (достаточно много) массивов из семи элементов. Каждый массив содержит некоторый набор параметров для вычисления функции 7ПП. Такой семиэлементный массив назовем геном. А все множество массивов назовем популяцией.
2. Вычисляете для каждого массива при помощи функции преобразования новые координаты для нескольких точек. Сравниваете получившиеся координаты с ожидаемыми. Чем меньше разница между ожидаемым и расчетным, тем "здоровее" ген.
3. Выбираете несколько здоровых генов и "скрещиваете" их между собой. Скрещивание можно провести так:случайно генерируете число x в интервале от 1 до 7. Берете два гена-родителя разделяете их в точке x на две части (два подмассива) и эти части перемешиваете - получаете двух потомков.
4. Выбираете в популяции слабые ("больные") гены. Если "здоровье" получившихся потомков больше, чем здоровье слабых генов, то замещаете слабые более сильными. Так популяция становится все "здоровее" и "здоровее"
5. Проводите (с некоторой вероятностью) мутацию: изменяете случайно выбранный ген (даете ему новые параметры). Так в популяции появляется новый материал для скрещивания.
6. Пунты 3-5 повторяете в цикле несколько раз до тех пор, пока процесс эволюции не приведет к образованию гена, решающего задачу с достаточной точностью.
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
Посмотрю, хотя я слышал про решение "методом наименьших квадратов". Скорость решения не волнует - хоть 10 минут на современной конфигурации. Находятся параметры для используемой опорной сети (один раз), а затем все пикеты объекта (вплоть до десятков тысяч, причём многократно) пересчитываются по этим параметрам.
-
- Новоприбывший
- Сообщения: 1
- Зарегистрирован: 24 янв 2005, 07:54
- Репутация: 0
- Откуда: Томск
-
- Активный участник
- Сообщения: 209
- Зарегистрирован: 13 июл 2007, 18:58
- Репутация: 1
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей