Моделирование массива дисторсии (искажения) снимка

Ответить
geo-aleksey
Модератор
Сообщения: 129
Зарегистрирован: 05 апр 2015, 23:59

Моделирование массива дисторсии (искажения) снимка

Сообщение geo-aleksey » 29 сен 2015, 14:52

Друзья - программисты.
Кто знаком с МатЛабом, может помочь с реализацией поставленной задачи?
Я на данный момент его сам изучаю, но знаний для полной реализации процесса пока не хватает.
Цель - моделирование массива дисторсии (искажения) снимка.
Опишу все подробно.
Есть растр, его размеры X=8280 Y=6208 пикс.
Была проведена калибровка кадра несколькими способами.
Получены результаты - параметры камеры от каждой калибровки (фокусное расстояние, координаты главной точки и коэффициенты дисторсии).
Результаты разные и задача показать простому люду, какая из калибровок описала дисторсию снимка лучше.
Идеальным вариантом был бы графический вид в виде массива.
Простой пример для понимания:
>> [X,Y] = meshgrid(-5:0.25:5);
>> Z = X.^2+Y.^2;
>> mesh(X,Y,Z)
>> figure
>> plot3(X,Y,Z),grid
на выходе получается этот самый массив, но у нас функция будет другая.
Мне уже рекомендовали цепочку действий:
1. реализовать функцию, которая по координатам на изображении x, y вычислит координаты без дисторсии x_und, y_und (т.е. описать исходный растр)
2. написать цикл по всем пикселям исходного изображения для вычисления положения пикселей с учетом дисторсии. Результаты сохранить в массив
3. Отобразить массив через quiver

Всего таких цикла нужно 2. Т.к. есть две разных формулы для описания дисторсии.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Александр Устинов
Администратор
Сообщения: 3219
Зарегистрирован: 14 ноя 2013, 09:10
Откуда: Химки
Контактная информация:

Re: Моделирование массива дисторсии (искажения) снимка

Сообщение Александр Устинов » 10 окт 2015, 12:37

geo-aleksey писал(а): Мне уже рекомендовали цепочку действий:
1. реализовать функцию, которая по координатам на изображении x, y вычислит координаты без дисторсии x_und, y_und (т.е. описать исходный растр)
2. написать цикл по всем пикселям исходного изображения для вычисления положения пикселей с учетом дисторсии. Результаты сохранить в массив
3. Отобразить массив через quiver
Первый пункт можешь сам сделать?
В формуле есть еще P, k и b.

geo-aleksey
Модератор
Сообщения: 129
Зарегистрирован: 05 апр 2015, 23:59

Re: Моделирование массива дисторсии (искажения) снимка

Сообщение geo-aleksey » 12 окт 2015, 16:25

Да я то сижу, пытаюсь.
Значение всех коэффициентов уже есть. Нужно только реализовать формулу и ее отображение, чтобы просто вставлять вместо них цифирки.
Р1,2 - коэф. тангенциальной дисторсии
a, b, с - коэф. искажения снимка

Аватара пользователя
Александр Устинов
Администратор
Сообщения: 3219
Зарегистрирован: 14 ноя 2013, 09:10
Откуда: Химки
Контактная информация:

Re: Моделирование массива дисторсии (искажения) снимка

Сообщение Александр Устинов » 12 окт 2015, 17:20

geo-aleksey писал(а):Значение всех коэффициентов уже есть.
Один набор значений? Постоянны коэффициенты?
И читать их откуда? Они задаются однажды, каждый раз, читаются из массива или из файла?
geo-aleksey писал(а):Нужно только реализовать формулу и ее отображение, чтобы просто вставлять вместо них цифирки.
Сначала надо формулу написать, если все есть, то это не должно быть сложно.

geo-aleksey
Модератор
Сообщения: 129
Зарегистрирован: 05 апр 2015, 23:59

Re: Моделирование массива дисторсии (искажения) снимка

Сообщение geo-aleksey » 13 окт 2015, 11:48

Результат калибровки это просто информация, которая может быть записана руками в текстовый файл с нужным форматом записи.
Пример обычной калибровки:
f=55.1407 x=5.3 y=5.3 X=8280 Y=6208 x'=-0.1098 y'=1.7203 k1=-0.00002495372 k2=1.125331e-008
единицы в пикселях
f - фокусное расстояние
x,y - физ.размер пикселя
X,Y - физ.размер сенсора (матрицы)
x',y' - координаты главной точки (дельта)
k1,k2 - коэф. радиальной дисторсии

Пример смешанной калибровки:
f=55.2140 x=5.3 y=5.3 X=8280 Y=6208 x'=-0.0049 y'=0.0306 k1=-0.00001637489 k2=1.025079e-008 k3=1.163158e-012 P1=0.00001356004 P2=-0.0001502146 a1=0.001743683 a2=-0.0003215178 a3=-0.000009987666 a4=-0.0001754487 a5=-0.00002138036 a6=-1.203943e-007 a7=-6.809232e-009 b1=0.0001592630 b2=0.002163321 b3=0.0001827373 b4=0.00003245170 b5=0.000005981798 b6=-1.941809e-007 b7=-1.076658e-007 c1=-0.0004260864 c2=-0.00001259231 c3=-0.0004780516 c4=7.388137e-008 c5=-0.000006100985 c6=6.649038e-007 c7=-0.000005155929

По сути тоже самое, только добавлены еще 3 десятка коэффициентов в дисторсию для более четкого ее описания.
Соответственно, эти коэффициенты a,b,c - искажение снимка.

Если ввести эти параметры в функцию, то она выдаст на выход нечто подобное (см.картинку)

Но мне надо в трехмерном виде.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

geo-aleksey
Модератор
Сообщения: 129
Зарегистрирован: 05 апр 2015, 23:59

Re: Моделирование массива дисторсии (искажения) снимка

Сообщение geo-aleksey » 13 окт 2015, 11:54

Т.е. отвечая на вопросы:
Набора значений два: физическая калибровка и смешанная. Описания формул в начале темы.
Параметры калибровки из проекта в проект разные. У меня их 23 варианта, включающие и одну и вторую формулы.
Задаются соответсвенно каждый раз, как только меняется проект, камера или способ калибровки.
Как правило, параметры заводятся руками, но, если будет автоматом читать текстовый файл с ними, то, конечно, будет супер. Формат записи файла можно придумать.
ВОТ

Аватара пользователя
Александр Устинов
Администратор
Сообщения: 3219
Зарегистрирован: 14 ноя 2013, 09:10
Откуда: Химки
Контактная информация:

Re: Моделирование массива дисторсии (искажения) снимка

Сообщение Александр Устинов » 18 окт 2015, 10:46

geo-aleksey, координаты растра от угла в пикселях? От X=1 Y=1 до X=8280 Y=6208?
Рисунок этот в чем получал?

geo-aleksey
Модератор
Сообщения: 129
Зарегистрирован: 05 апр 2015, 23:59

Re: Моделирование массива дисторсии (искажения) снимка

Сообщение geo-aleksey » 19 окт 2015, 16:24

Нет, систему лучше начинать от центра растра.
Снимок этот, реализация моего коллеги. Он программировал на си-шарпе.
Но тут двумерная штука. А трехмерная должна быть вот такая:
http://www.mathworks.com/help/matlab/ref/quiver3.html

Ответить

Вернуться в «MATLAB»

Кто сейчас на конференции

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