Проекция изображения в другое с использованием матрицы преобразования - PullRequest
0 голосов
/ 06 апреля 2019

Мне нужно спроецировать одно изображение в окно двери другого изображения.

Это проблема домашней работы.И я попытался решить это с помощью линейных уравнений.Координаты окна изображения двери:

Top left corner = (188,155)
Top Right corner = (343,177)
Bottom left corner = (186,462)
Bottom right corner = (343,432)

Изображение, которое я хочу проецировать координаты:

Top left corner = (0,0)
Top Right corner = (499,0)
Bottom left corner = (0,507)
Bottom right corner = (499,507)

Я сделал уравнения как:

matrix(3*3)[a b c;d e f;g h 1]*[0 0 1]=[188 155 1] etc 

And I get the transformation matrix as 
[0.311 -0.003 188;0.044 0.605 155;0 0 1]

tm=[0.311 -0.003 188;0.044 0.605 155;0 0 1]
tff = projective2d(tm)
I=imread('a1.jpg');
output=imwarp(I,tff);
imshow(output);

При запуске я получаютолько точка, но это не должно быть, что

1 Ответ

0 голосов
/ 07 апреля 2019

Кажется, вы правильно вывели матрицу гомографии. Но у вас есть смутное представление о значениях в этой матрице.

Значения 188 и 155 переводят ваше изображение на 188 пунктов вправо и на 155 пунктов вниз. Вот почему вывод пуст. Потому что изображение смещено в область, которая невидима в окне вывода.

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

Чтобы сделать преобразованное изображение видимым, вам нужно сделать так, чтобы ваша матрица преобразования:

tm=[0.311 -0.003 0;0.044 0.605 0;0 0 1]

Полагаю, это решит вашу проблему.

...