使用变换矩阵将图像投影到另一个图像
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]
我想这会解决您的问题。
我需要将一个图像投影到另一个图像的门 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]
我想这会解决您的问题。