【问题标题】:Projection of an Image into Another using Transformation Matrix使用变换矩阵将图像投影到另一个图像
【发布时间】:2019-04-06 08:07:36
【问题描述】:

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

这是家庭作业问题。我已经尝试使用线性方程来解决它。 门像窗口坐标:

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

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

【问题讨论】:

    标签: matlab computer-vision projection


    【解决方案1】:

    您似乎正确地导出了单应矩阵。但是您对该矩阵中的值有一个模糊的概念。

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

    您根据更大的图像导出了变换矩阵,使这些移动值变大。将它们设为 0。

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

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

    我想这会解决你的问题。

    【讨论】:

    • 转置后答案更好,更接近我的需要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多