使用变换矩阵将图像投影到另一个图像

Projection of an Image into Another using Transformation Matrix

我需要将一个图像投影到另一个图像的门 window。

这是家庭作业问题。我试过用线性方程求解它。 门图像 window 坐标:

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);

当 运行 我只得到一个点,但不应该是那个点

看来你推导单应矩阵是正确的。但是您对该矩阵中的值有模糊的认识。

值 188 和 155 将您的图像转换为向右 188 磅和向下 155 磅。这就是输出为空的原因。因为图像被移动到输出中不可见的区域 window.

您针对使这些移动值变大的更大图像导出了变换矩阵。使它们成为 0.

为了使变换后的图像可见,您需要将变换矩阵设为:

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

我想这会解决您的问题。