Как деформировать изображение в 3D-плоскость в Matlab - PullRequest
2 голосов
/ 08 июля 2019

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

Предположим, что пиксель в изображении1 равен [u1, v1], он соответствует точке [X, Y] в мире. P1 и P2 - соответственно матрицы проекций двух камер.

[u1,v1] = [X,Y,1]*[R1;t1]*K1 = [X,Y,1]*P1
[u2,v2] = [X,Y,1]*[R2;t2]*K2 = [X,Y,1]*P2
[u2,v2] = [u1,v1]*inv(P1)*P2 

поэтому tform должен быть inv (P1) * P2

Согласно решению ссылки, я использую функцию "imwarp" в matlab.

imwarp(img, perspecticv2d( P1\P2 ));

хорошо, что у него есть информация о цвете. Тем не менее, положение изображения не является правильным. Я использовал это неправильно?

И я попробовал другое решение.

[m,n,c]= size(I);
[X, Y] = meshgrid(1:m, 1:n);
imagePoints = [X(:) Y(:) ones(m*n,1)];

Я проецирую точки изображения на мир и перепроектирую их на камеру. Это хорошо работает на месте, но как я могу вывести информацию о цвете на проецируемое изображение?

Ожидаю выходное изображение с цветом и хорошей позицией Заранее спасибо.

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