Processing math: 100%

вторник, 17 апреля 2018 г.

Определение аффинного преобразования методом наименьших квадратов

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

Аффинное преобразование задается одной из форм линейного преобразования: H=AH+B Здесь H - вектор заданных точек, H - вектор уточненных, A - матрица 3x3, B - вектор-столбец.

Требуется найти такие коэффициенты матрицы A и вектора B, при которых для всех пар точек выполняется наилучшее преобразование.

Задача характеризуется тем, что как исходные значения H, так и целевые значения H заданы с некоторыми погрешностями и, вообще говоря, не существует одного такого преобразования с матрицей A и вектором B, которое бы в точности перевело все исходные точки в целевые уточненные. Какое бы преобразование ни использовалось, в итоге какие-то точки разойдутся или сильно, или очень сильно.

Поэтому выберем критерий оптимальности в виде: возьмем разность отклонений целевой и преобразованной точки. У этой разности возьмем квадрат и получим из векторной величины скалярную и всегда положительную. И сложим все эти квадраты. Полчив сумму квадратов отклонений, потребуем минимизации этой суммы.

Будем полагать, что такая минимизация осуществима. В самом деле, если двигать один набор точек по другому, то по крайней мере в одном из взаимных расположений (а может быть и в нескольких) такая сумма рано или поздно окажется в минимуме.

Далее нас интересуют значения коэффициентов матрицы A и вектора B, при которых такая сумма минимальна. Если сумма квадратов отклонений минимальна, то набор соответствующих частных производных по коэффициентам Aij и Bi должны быть равны нулям.

Положим, что пары точек заданы точками h(x,y,x) и h(x,y,z) и эти значения x, y, z, x, y и z заданы для всего набора, для всех пар.

Положим, что аффинное преобразование отображает: {x=a11x+a12y+a13z+b1y=a21x+a22y+a23z+b2z=a31x+a32y+a33z+b3 Мы должны минимизировать значение n(a11x+a12y+a13z+b1x)2+n(a21x+a22y+a23z+b2y)2+n(a31x+a32y+a33z+b3z)2=min Для упрощения представим эту сумму в виде: nS2x+nS2y+nS2z=min Берем частные производные по aij и bi и приравниваем их нулям и используем промежуточное равенство: aijnS2k=2nSkaijSk Таким образом, нужно опустить 2 и найти чему равна соответствующая частная производная по aij и bi. Для трехмерного пространства матрица A содержит в общем случае 33=9 коэффициентов и вектор b содержит 3 коэффициента. Итого мы должны получить систему уравнений с 9+3=12 неизвестных, и решить её.

При взятии частных производных по коэффициентам aij от величин Sk задача существенно обьлегчается тем, что производная Sk по aij или bi либо равна 0 если Sk не зависит от соответствующего коэффициента, либо равна одной из координат x, y, z, либо равна единице.

Беря частные производные по коэффициентам aij и bi, получаем уравнения: a11: (a11xx+a12yx+a13zx+b1x)=xx a12: (a11xy+a12yy+a13zy+b1y)=xy a13: (a11xz+a12yz+a13zz+b1z)=xz b1: (a11x+a12y+a13z+b1)=x a21: (a21xx+a22yx+a23zx+b2x)=yx a22: (a21xy+a22yy+a23zy+b2y)=yy a23: (a21xz+a22yz+a23zz+b2z)=yz b2: (a21x+a22y+a23z+b2)=y a31: (a31xx+a32yx+a33zx+b3x)=zx a32: (a31xy+a32yy+a33zy+b3y)=zy a33: (a31xz+a32yz+a33zz+b3z)=zz b3: (a31x+a32y+a33z+b3)=z Далее надо раскрыть все знаки сумм и получить систему уравнений относительно коэффициентов aij и bi. a11nxx+a12nyx+a13nzx+b1nx=nxx a11nxy+a12nyy+a13nzy+b1ny=nxy a11nxz+a12nyz+a13nzz+b1nz=nxz a11nx+a12ny+a13nz+b1n=nx a21nxy+a22nyy+a23nzy+b2ny=nyx a21nxz+a22nyz+a23nzz+b2nz=nyy a21nxz+a22nyz+a23nzz+b2nz=nyz a21nx+a22ny+a23nz+b2n=ny a31nxx+a32nyx+a33nzx+b3nx=nzx a31nxy+a32nyy+a33nzy+b3ny=nzy a31nxz+a32nyz+a33nzz+b3nz=nzz a31nx+a32ny+a33nz+b3n=nz Здесь использовался тот факт, что nb3=b3n1=b3n Несмотря на то, что в каждом уравнении слева от знака = стоит лишь 4 числа, совокупность этих уравнений задаёт систему 12x12 линейных уравнений для 12-ти коэффициентов, обозначенных через aij и bi.

Для приведения системы уравнений к СЛАУ нужно зафиксировать их порядок и в них найти коэффициенты матрицы, ну скажем C и D, такие что CX=D где C - квадратная матрица, D - вектор, X - искомый вектор.

И решить это уравнение, найдя X.

Оставив уравнения в том же порядке, получим что соответственно D1=xx D2=xy и так далее.

Упорядочив коэффициенты aij и bi в определенном порядке и рассматривая их как элементы вектора X, выберем сопоставление: X1=a11,X2=a12,X3=a13,X4=b1,X5=a21,X6=a22,X7=a23,X8=b2,X9=a31,X10=a32,X11=a33,X12=b3 После этого сопоставления можем определить по вышеприведенным уравнениям значения коэффициентов Cij, например: C1,1=xx C1,2=yx C8,10=0 C4,1=x C7,7=zz C12,12=n

Далее следует банальное программирование. Заводим матрицу 12x12 и вектор на 12. Всем коэффициентам присваиваем нулевые значения. В цикле по всем парам точек расписываем по вышеприведенным уравнениям значения x, y, z, x, y и z или их произведения.

Решив систему уравнений (например, методом Гаусса), получаем в качестве результата вектор из искомых значений aij и bi.

Также можно отметить, что вышеприведенная система уравнений может решаться как система для 12-ти переменных, так и может быть разделена на 3 системы по 4 уравнения для вычисления векторов из 4-х коэффициентов: (a11a12a13b1) (a21a22a23b2) (a31a32a33b3) Если расписать в виде матричного произведения эти отдельные 3 системы для 4-х неизвестных каждая, то получим: (xxyxzxxxyyyzyyxzyzzzzxyzn)(a11a12a13b1)=(xxxyxzx) (xxyxzxxxyyyzyyxzyzzzzxyzn)(a21a22a23b2)=(yxyyyzy) (xxyxzxxxyyyzyyxzyzzzzxyzn)(a31a32a33b3)=(zxzyzzz) Соответственно, если решать эти системы методом Гаусса, то надо три решения, по одной на каждую систему. А если решать методом нахождения обратной матрицы, то такую матрицу нужно искать лишь один раз в силу того что все три системы имеют одну и ту же матрицу.

Комментариев нет:

Отправить комментарий