美文网首页
光栅化07-透视矫正

光栅化07-透视矫正

作者: 陈成_Adam | 来源:发表于2021-04-01 09:38 被阅读0次

如果将一个不平行于xy平面的三角形透视投影到xy平面,然后做插值,计算出各像素点的属性后得到的图像存在透视扭曲的现象。

左图,原纹理;中图,透视扭曲;右图,透视矫正后的结果

产生透视扭曲的原因,见下图:

直接在屏幕空间对属性做线性插值可能存在透视扭曲现象

为了便于说明,上图只展示了2D空间的一条线投影到1D的平面的情况。3D投影到2D平面与此类似,可以把上图当做三角形的一条扫描线的投影情况看待。

2D空间的直线段\overline{AB}的两个端点分别投影到1D屏幕的ab

顶点的属性记为intensity,则在A点:intensity=0.0,在B点:intensity=1.0

由于ab分别由AB投影而来,自然的,

a.intensity=A.intensity=0.0且 b.intensity=B.intensity=1.0

c\overline{ab}的中点。

如果我们在屏幕空间做线性插值,那么c点的intensity=0.5

cC投影而来,从图中可以明显看到C并不是\overline{AB}的中点。也就是说:

c.intensity=0.5,C.intensity≠0.5 \Rightarrow c.intensity≠C.intensity

此时,便产生了透视扭曲的现象。

根据上图并利用相似三角形的性质可以推导出(推导过程参看这里):

\frac{1}{Z_t}=\frac{1}{Z_1}+s(\frac{1}{Z_2}-\frac{1}{Z_1})

通过上式可知,屏幕上的点cz值可以通过线性插值\frac{1}{Z_1}\frac{1}{Z_2}得到。这是一个非常重要的性质。

基于前面的推导过程中的t的值,代入I_t=I_1+t(I_2-I_1),可以得到C的属性I_t

\frac{I_t}{Z_t}=\frac{I_1}{Z_1}+s(\frac{I_2}{Z_2}-\frac{I_1}{Z_1})

通过上式可知,屏幕上的点c的属性可以通过线性插值\frac{I_1}{Z_1}\frac{I_2}{Z_2}之后再乘以Z_t得到。

相关文章

  • 光栅化07-透视矫正

    如果将一个不平行于xy平面的三角形透视投影到xy平面,然后做插值,计算出各像素点的属性后得到的图像存在透视扭曲的现...

  • PS教程第17讲:透视裁剪工具透视证件矫正

    这节课我们来学习下透视裁剪工具,透视裁剪工具可以在裁剪的同时矫正图像的透视关系,即将倾斜的物体矫正为平面的。 打开...

  • 光栅化理解

    什么叫光栅化? 光栅化( Rasterize/rasteriztion)官方翻译成栅格化或者像素化。没错,就是把矢...

  • OpenGL 入门

    走向3D 2D + 透视 = 3D 3D术语 (入门级) 光栅化:实际绘制或填充每个顶点之间像素的形成线程 着色:...

  • 图元装配和光栅化

    在顶点着色器处理图元顶点之后进入图元装配阶段。这一阶段,执行裁剪、透视分割和Viewport变换操作。 光栅化是将...

  • 图元装配和光栅化(转)

    图元装配和光栅化 在顶点着色器处理图元顶点之后进入图元装配阶段。这一阶段,执行裁剪、透视分割和Viewport变换...

  • OpenGL(一) OpenGL入门

    1.概念 2D+透视 = 3D 3D术语: 光栅化:实际绘制或填充每个顶点之间的像素形成过程 着色:沿着顶点之间改...

  • 光栅化

    计算机中表示图形有两种方式,一种是点阵表示,一种是顶点表示。 点阵表示是光栅显示系统显示时所需要的表示形式,光栅化...

  • ios开发shouldRasterize光栅化--离屏渲染

    shouldRasterize(光栅化)是比较特别的一种离屏渲染:光栅化概念:将图转化为一个个栅格组成的图象。光栅...

  • 第七章 图元和光栅化

    顶点着色器之后是图元装配,在装配阶段完成裁剪、透视和视口变换,最后执行光栅化。 图元 他是一种几何对象,可以通过g...

网友评论

      本文标题:光栅化07-透视矫正

      本文链接:https://www.haomeiwen.com/subject/nxovhltx.html