Применение омографии к изображению - PullRequest
1 голос
/ 16 февраля 2020

Я застрял в этой проблеме гомографии. Я должен применить гомографию, а затем 2-мерную билинейную интерполяцию, чтобы визуализировать изображение, чтобы я мог видеть с высоты птичьего полета.

Я успешно рассчитал гомографию (наверное). Я не могу понять, как применить эту матрицу гомографии к исходному изображению для создания выходного изображения поверх пустого изображения 940x500.

Вот мой код:

I = imread('image.png');
imshow(I)

% Mark more than 4 input points
[x,y] = getpts

xp = [0; 720; 720; 0;];
yp = [0; 0; 1280; 1280;];

for i=1:4
    A(2*i-1,:) = [x(i), y(i), 1, 0, 0, 0, -x(i)*xp(i), -xp(i)*y(i), -xp(i)];
    A(2*i,:) = [0, 0, 0, x(i), y(i), 1, -x(i)*yp(i), -yp(i)*y(i), -yp(i)];
end

[U,S,V] = svd(A);
h = V(:,9);

H = reshape(h,3,3);

Как мне применить эту матрицу H к исходному изображению?

1 Ответ

1 голос
/ 17 февраля 2020

Вы можете использовать projective2d и imwarp :

tform = projective2d(H);
outputImage = imwarp(I, tform);

Я не понимаю приведенный вами пример, поэтому не могу сказать, нужен ли вам инвертировать H.

Возможно, мой ответ неправильный - я не могу выполнить ваш пример кода для проверки решения.

Пожалуйста, дайте мне знать, если это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...