<p>一个有趣的问题。为了帮助解释我的解决方案,我将定义几个符号:</p>
<ul>
<li>I1:原始图像。在</li>
<li>I2:通过<strong>H</strong>变换I1后得到的图像。在</li>
<li>I3:通过3D相机旋转<strong>R</strong>变换I2得到的图像(您自己设置)。在</li>
<li>对应于I2的未知摄像机内禀矩阵<strong>K</strong>。在</li>
</ul>
<p>因为您的相机是旋转而不是平移的,所以您可以通过使用相应的单应矩阵扭曲图像来合成<em>任何</em>旋转矩阵<strong>R</strong>的虚拟视图。因此,为了合成这些视图,不需要尝试在3D中重建场景。在</p>
<p>现在,我假设我们有一个估计值<strong>K</strong>并给出从I1到I3的单应性方程。这回答了你问题的最后一部分。最后,我将给出一个很好的方法来估计<strong>K</strong>。那么你就拥有了你所需要的一切。在</p>
<p>让点<2D=>px。我们用向量<strong>p</strong>=(px,py,1)在齐次坐标系中定义这个点。同样地,让点<strong>q</strong>=(qx,qy,1)是点<strong>p</strong>在I3中的位置。将<strong>p</strong>转化为<strong>q的单应矩阵<strong>H'</strong>由<strong>H'</strong>=<strong>K</strong>inv(<strong>K</strong>)<strong>H</strong>给出。对于您指定的任何<strong>R</strong>,您可以使用它来计算<strong>H'</strong>,然后可以使用OpenCV的warpPerspective函数扭曲I1来合成新视图。在</p>
<p><strong>推导</strong>。我们首先应用<strong>H</strong>将点放入I2。接下来,我们通过inv(<strong>K</strong>)将点转换为其在三维caméra坐标中的位置。然后我们应用旋转<strong>R</strong>,最后用<strong>K</strong>投影回图像。如果您不确定如何应用这样的投影变换,那么我强烈建议您深入阅读Hartley和Zisserman的《多视图几何》(Multiple View Geometry)。在</p>
<p><strong>计算</strong><strong>K</strong>。为此,我提出一个巧妙的策略,利用自由女神像。具体来说,注意她站在一个平台上,我假设这个平台是正方形的。这就是杀手锏!现在我们要用正方形来做一个粗略的摄像机校准。我假设没有镜头失真,<strong>K</strong>有简化形式,其中<strong>K</strong>=[f,0,cx;0,f,cy;0,0,1]。这意味着宽高比为1(通常数码相机的情况大致相同),主要点位于图像的中心:cx=w/2和cy=h/2,其中w和h分别是图像的宽度和高度。试图估计透镜畸变和更复杂的<strong>K</strong>矩阵将非常困难。镜头失真似乎并不明显,因为木材的边缘在图像中都大致是直的,所以可以忽略不计。在</p>
<p>现在我们要计算f。这将通过基于平面的摄像机校准来完成。著名的参考文献是张:一种灵活的相机校准新技术,位于<a href="https://www.microsoft.com/en-us/research/publication/a-flexible-new-technique-for-camera-calibration/" rel="nofollow noreferrer">https://www.microsoft.com/en-us/research/publication/a-flexible-new-technique-for-camera-calibration/</a></p>
<p>这样做的方法是首先在I2中点击雕像平面的四个可见角的4个角(见附图)。我们把这些叫做p1,p2,p3和p4,从左下角开始,顺时针旋转。然后,您可以使用OpenCV的相机校准方法从这4个角点得到<strong>K</strong>的估计值。重要的是,我们之所以能做到这一点,是因为我们知道平台是方形的。为了更深入地了解基于平面的校准,我建议阅读张的论文。如果您遇到困难,我可以在几分钟内亲自完成并发送<strong>K</strong>矩阵。在</p>
<p><a href="https://i.stack.imgur.com/8ydjb.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/8ydjb.jpg" alt="four corner points on the statue's square stand"/></a></p>
<p>最后一点,这种方法的一个微小变化是使用您来校准r原始图像(假设你还保留着它)。其原因是H</strong>会使I2发生畸变,使其纵横比不接近1,主点不靠近图像中心。如果您使用原始图像进行校准(我们称之为矩阵<strong>K1</strong>),那么您将使用<strong>K</strong>=<strong>H</strong><strong>K1</strong>。在</p>