2015-10-01 4 views
0

Я ищу, чтобы найти «половину» матрицы аффинного преобразования, используя MATLAB. Да, я понимаю, «половина» матрицы на самом деле не совсем правильная, но именно то, что я искал, на самом деле было очень хорошо объяснено здесь: stackexchange mathematicsКак вычислить «половину» матрицы аффинного преобразования в MATLAB

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

Отражение не будет частью А, в противном случае было бы невозможно найти B.

Моя исходная матрица (A) вычисляется с использованием A = estimateGeometricTransform(movingPoints,fixedPoints,'affine'), который дает мне affine2d объект.

Если нет способа найти «половину» матрицы из исходной матрицы, возможно, массивы совпадающих точек можно манипулировать таким образом, чтобы найти B из них.

Приветствие

ответ

1

Я думаю, что есть возможность найти матрицу половины, что ты говоришь. Он называется матричным квадратным корнем. Предположим, у вас есть матрица A. В Matlab вы можете просто сделать B=sqrtm(A), где m обозначает матрицу. Затем вы получаете матрицу B, где norm(B*B - A) очень мала, если бы была хорошо проведена матрица A.

Если я правильно понял, вы хотите иметь аффинного преобразования aff = @(x) A*x + b. Это можно сделать, используя однородные координаты. Каждое преобразование aff может быть представлено в виде матрицы M = [A b; zeros(1,length(b)) 1], где

normalize = @(y) y(1:end-1)/y(end); 
affhom = @(x) normalize(M*[x; 1]); 

Обратите внимание, что aff и affhom делать точно то же самое. Здесь мы можем использовать то, о чем я говорил раньше. Половина из affhom могут быть представлены с использованием

affhomhalf = @(x) normalize(sqrtm(M)*[x; 1]) 

где

affhomhalf(affhomhalf(y)) - aff(y) 

мала для всех y, если A и b были хорошо себя.

Я не уверен в этом, но я думаю, что вы можете даже разложить sqrtm(M) на линейную и поступательную часть.

+0

Благодарим за помощь. Я посмотрю, смогу ли я его реализовать и насколько хорошо он работает. – Johannes

Смежные вопросы