применить матрицу гомографии к набору точек в Matlab

Я рассчитал матрицу гомографии, используя этот набор точек

точки трапеции

x=[ 102,48; 206,48; 257,143; 53,118]   

квадратные точки (проекционные точки) y=[0,0; 335,0; 335,178; 0,178]

Матрица гомографии

H=                                                                
  -0.0000   -0.0173   -0.0001                                       
   0.0000    0.0382    0.0001                                      
  -0.0000   -0.9990    0.0126      

Теперь я хочу применить H к x, чтобы получить спроецированные точки (y)

Как это посчитать в матлабе?


person S.D.G    schedule 21.09.2019    source источник


Ответы (1)


Это обычный способ сделать это:

% your vectors and your H
x = [ 102,48; 206,48; 257,143; 53,118];
y = [0,0; 335,0; 335,178; 0,178];
H = [-0.0000   -0.0173   -0.0001;                                       
   0.0000    0.0382    0.0001;                                    
  -0.0000   -0.9990    0.0126];

x = [x ones(4,1)]; % make your coords homogenous
y = [y ones(4,1)];

x_projected = H*x';
x_projected = x_projected./repmat(x_projected(3,:),3,1); % normalize

x_projected в этом случае 3x4, и каждый столбец является одной из проецируемых точек.

Чтобы проверить проекцию по сравнению с вашим y: евклидово расстояние столбцов y'-x_projected должно быть небольшим в зависимости от вашего H.

person avermaet    schedule 21.09.2019
comment
это происходит так: x_projected = 0,0174 0,0174 0,0174 0,0174 -0,0382 -0,0382 -0,0382 -0,0382 1,0000 1,0000 1,0000 1,0000 Я должен вернуть свои спроецированные точки, то есть квадратные точки.... Но это не приходит Как решить эту проблему? - person S.D.G; 24.09.2019
comment
@ S.D.G: Если ошибка между проекцией и вашим y велика, это означает, что ваш H, вероятно, неверен. Как вы это определили? - person avermaet; 25.09.2019