透视校正插值(Perspective-Correct Interpolation)

Posted 八叶一刀·无仞剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了透视校正插值(Perspective-Correct Interpolation)相关的知识,希望对你有一定的参考价值。

在渲染器光栅化每个三角形的过程中,需要对根据顶点属性对三角形进行扫描线插值。此时由于投影面上顶点的2D坐标与顶点属性不成线性关系,因此是不能简单地使用线性插值来计算顶点属性的。

此时应当利用透视校正插值(Perspective-Correct Interpolation)来计算。

设3D空间中存在一条线段,它的两个端点为A和B,3D坐标分别为(x1,y1,z1)和(x2,y2,z2)。这两点投影到camera坐标系投影面的两点为a(p1,q1)、b(p2,q2)。那么:

设该线段之间存在一个三维点C(2D中我们用c来表示),它的三维和二维坐标分别为(x3,y3,z3)、(p3,q3),

c=(1-t)a+tb。则可以证明

1/z3=(1-t)*(1/z1)+t*(1/z2),

因为在网格模型中顶点属性与顶点的坐标值成线性关系,因此可以利用求出的z值来计算相应的顶点属性。

具体的推导可以件这两篇博客:

http://blog.csdn.net/popy007/article/details/5556639

http://blog.csdn.net/popy007/article/details/5570803

以上是关于透视校正插值(Perspective-Correct Interpolation)的主要内容,如果未能解决你的问题,请参考以下文章

JavaCV 透视校正

openCV4Android平滑校正透视

如何在openGL中扭曲纹理? (透视校正?)

opencv——透视校正

Unity3D Camera透视相机到正交相机插值

急寻:matlab的几何校正的最近邻点法和双线性插值法的代码 我使用的是matlab7,请成功后再告诉我 谢谢!!