微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 利用投影机进行无缝拼接的技术解析

利用投影机进行无缝拼接的技术解析

时间:06-16 来源:设计三人行 点击:

  引言

  目前,有不少应用(如沉浸式虚拟现实和科技可视化计算等)得益于高清晰度显示器。但遗憾的是,现有的投影技术仍局限在XGA(1024×768)或 SXGA(1280×1024)级的像素分辨率上,而且在撰写本文时,后者的价格还相当昂贵。所幸的是,我们可以将多台低档次的商用投影机叠合在一起方 法,每台投影机各由一台不同的计算机驱动,或由同一台计算机中不同的图形通道来驱动。

  采用商用投影机时遇到的第一个问题是,这些投影机不同于那些较昂贵的机型,它们都不具有对拼接显示的内置支持。此外,它们的光学系统的结构使得你不可能以 像素完美(或接近)的方式,可靠地调整多台投影机。由于拼接显示并不是像素完美的,所以最终结果只能是,图像之间要么有一个缝隙,要么有一条两倍亮度的接 缝;这两种情况都是令人讨厌的,尤其是对那些以摇摄方式拍摄的内容或那些越过缝隙的被拍摄对象来说,更是如此。解决方法就是让两个图像之间有相当可观的重 叠,然后调整重叠区中的像素,使得重叠部分尽可能地不可见。这种做法之所以可行,是因为这样做之后,任何微小的投影机校准不当或镜头像差仅表现为图像略微 模糊,而不会出现尖锐的接缝或缝隙。

  重叠

  处理过程的第一步就是使两个图像重叠,本文中将使用悉尼一座标志性建筑物的内部全景图。重叠区的像素将在整个重叠区中进行融合处理,也就是说,两个图像将 褪色成黑色。这种一般方法相当适用于任何数目的图像,也适用于那些可能并非以矩形方式排列的图像。此处所用的投影机是XGA(1024×768)的,重叠 区中是256个像素。重叠部分不一定恰好是2次幂,但由于利用纹理和OpenGL对图像进行了混合处理,所以2次幂是最有效的。重叠程度取决于所需要的伽 玛校正量(参看下文)和混合功能的动态范围。在本例中,用128个像素就无法获得与256像素重叠同样好的结果。所以,最终的图像宽度为 2×1024-256 = 1792个像素,高度为768个像素。

  

  下 图示意了这两个投影图像,不出所料,重叠区的亮度大于正常图像,因为它受两台投影机的共同作用。用于展示这一全景图的应用程序,是一个本机开发的、用于观 看立体全景图的预看程序,是针对OpenGL基图形编写的。用OpenGL生成这两个重叠图像是非常容易的,因为你只需要在视锥中做相应的改变即可。请注 意,这里显示的图像,是在暗室里拍摄的这些图像的数字照片,展示这些照片有一定难度,因为这些照片的颜色看上去有点褪色。

  融合

  混合就是将一个图像中位于重叠区中的每个像素都乘以某个值,从而使得当它被迭加到另一个图像中其对应的像素上时,能得到期望的像素值。这很容易利用一个取 值范围介于0和1之间的函数f(x)来实现:例如右侧图像中的像素乘以f(x),左侧图像中相应的像素则乘以1-f(x)。下面给出本文中使用的函数。有 许多可能的选择,但我们之所以选择这个函数,是因为它允许我们试验从线性到高度弯曲的精确函数形式。

  

  

  该 函数的图形表示如下。请注意,图中的坐标已经被归一化成0(表示边缘混合区的开始)和1(表示边缘混合区的结束)。以右侧图像为例,第一列中的像素被乘以 0(没有影响),混合区右边缘(第255列)上的像素则被乘以1。靠左图像的混合函数则为1 ——曲线如下。在混合区的中点上,曲线通过0.5,它表示每个图像中的像素对最终的像素值的贡献相等。精确的曲率取决于参数"p",当p=1时,混合是线 性的;随着p值的增加,在0.5附近的跃变越来越陡峭,p=1很可能导致混合区的边缘上出现可见的阶跃。本文件中的所有例子均采用p=2。

  

  边 缘混合是通过放置一个多边形来实现的,上述的边缘混合函数被表示成一个灰度级一维构造。这一构造成的多边形经过适当的混合(OpenGL中的说法),使之 能修整图像缓冲存储器中的像素。这种方法的优点就在于,它可随意地适于任何OpenGL应用程序,原因在于它是在正常的几何绘图完成之后进行的一项后处理 工作。下图示意了整个混合区上的掩蔽区构造。

  下面的图像是在(带双显示器)计算机上所看到之图像的屏幕转储,即乘以上述掩蔽函数后的全景图像。最终获得的投影图像如下,但其中为什么有一个灰色条呢?

  

  伽玛校正

上述混合函数之所以不够,前面的图像中之所以有一个灰色条,是因为我们到目前为止所介绍的方法,只是增加像素值,而真正需要做的是,增加图像的亮度级。用 于控制像素如何映射成亮度的主函数,就是所谓的显示器的伽玛函数,其典型值介于1.8到2.2之间。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top