快速平面旋转算法?
时间:2020-03-06 14:37:06 来源:igfitidea点击:
我正在开发一个应用程序,该应用程序检测图像中最突出的矩形,然后尝试对其进行旋转,以使矩形的左下角位于原点,类似于IUPR的OSCAR系统的工作方式。但是,一旦检测到最突出的矩形,我不确定如何考虑深度分量或者z轴,因为该矩形并不总是"正面"的。任何进一步加深我的理解的例子将不胜感激。下面是IUPR OSCAR系统的示例。
替代文字http://quito.informatik.uni-kl.de/oscar/oscar.php?serverimage=img_0324.jpg&montage=use
解决方案
在这种情况下,我们实际上不需要处理3D信息,它只是从一组坐标到另一组坐标的映射功能。
看一下仿射变换,它们能够校正简单的偏斜和透视效果。我们应该可以在某处找到代码,该代码将从矩形角的4个点计算出转换。
几乎忘记了"快速"是否真的很重要,我们可以简化系统,使其仅组合使用简单的剪切变换,尽管这样会对倾斜度较高的对象的图像质量产生不良影响。
实际上,我认为我们可以比Mark的方法简单得多。
- 在倾斜的图像上具有2D坐标后,将这些坐标重新用作纹理坐标。
- 在渲染器中,绘制一个简单的矩形,在该矩形中,每个角的顶点被纹理映射到在倾斜的2D图像上找到的顶点(标准化并转换为渲染系统的纹理坐标平面)。
现在,我们可以依靠硬件(使用OpenGL或者类似工具)为我们进行校正,或者我们可以编写自己的纹理映射器:
由于我们正在处理实际的3D信息,因此需要猜测宽高比。但是,我们只需采用倾斜矩形的最大宽度和最大高度就可以摆脱困境。
Chris Hecker的透视纹理贴图