2014-03-30 36 views
1

在OpenCV中,我使用特征匹配技术来查找其他图像中的匹配对象。当我找到匹配对象时,我使用“findHomography”方法计算透视变换。 FindHomography原始图像和变形图像之间的插值

这工作正常,我可以基于这个矩阵转换图像。我有一个视频alpha混合原始和转换后的图像之间,但现在我想动画之间的原始和转换位置之间的过渡,而不是两者之间的阿尔法混合。

我有3x3的Homography矩阵,它给了我完整的转换,但是如何在不转换和插入之间插入?如果3x3矩阵有单个值,那么我会在0和矩阵值之间进行插值,无论多少时间步骤。然而,3×3矩阵的每个元素都由3个值组成,我猜测是因为它们是同质坐标。

任何人都可以建议解决此问题的最佳方法。

EDIT

试图通过AldurDisciple建议我正在与创建所述单位矩阵的方法,包括:

Mat eye = Mat::eye(3,3,CV_32F); 

并与执行所建议的计算:

Mat newH = (1-calc) * eye + calc * H; 

其中计算值= K/N步骤/总步数。

我得到一个断言失败错误试图用错误时正在计算newH:

src1.type() == src2.type() in function scaleAdd 

回答

0

接近这一点的一种简单的方法是使用单位矩阵之间的线性插值(即没有转化)和单应矩阵你估计与findHomograhy

如果H是估计的单应性和N是要使用的时间步长的数目,则变换到在步骤k应用在[0,N]是如下:H ķ =(1-一个 k)* Id + a k * H,其中 k = k/N。

+0

我试着实现你的建议,我收到了一个断言失败的错误,我已经在编辑中解释了我的问题。 –

+0

@Tomsmith这可能是因为您估计的单应性类型为'double',请在创建单位矩阵时尝试使用'CV_64F'。 – AldurDisciple

+0

非常感谢,现在有效。我也有一个整数除法的问题,但现在我有一个流畅的动画。 –