`
kennyluo
  • 浏览: 78264 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

虚拟仿真系统研究之一硬件篇

阅读更多

多屏控制处理器双屏显示卡边缘融合视频叠加与大屏幕投影效果

 

最近我用两台投影机实现了的最大分辨率为2000×768的HDTV的方案,在这里把我的攻略写出来跟大家分享一下。4.7m*2m的环幕,支持2.35:1的电影播放。硬件成本大概是25000左右,不包含电脑。

 

C1.jpg
C2.jpg 

  硬件情况如下,NEC LT265+两台(15000不到),3000ansi,标准分辨率1024×768,标配是短焦镜头,好像是dlp的,用什么机器都没关系的。如果需要投1920×1080的片子可以选用那些标准分辨率为1280×1024的投影机,如果要高亮的也可以选更高亮度的机器。投影幕是定做的,普通的玻珠幕。幕和支架多少钱我不是太了解,反正也贵不到那里去。电脑是P4 3.0的,显卡是winfast的FX1300,内存好像是1G的。其他都没太大的关系。

  之所以配置这样的系统是因为我看老外的投影机至少都是10万上下的东西,太贵了。配置的时候有问题来了:

  先是多台投影机的边缘融合,两台投影机投影的时候由于物理的原因无法做到看不出拼接的缝隙,而花钱去买专业的边缘融合设备是非常贵的,所以就一直没有人来做这样的事情。那么不花钱,或者花少量的钱(几百,几k反正是不到5k)能解决么?回答是肯定的。。。。。

我用的两个投影机是借来试的,一台是全新的,一台是旧的,所以会有这样的问题。另外幕是有弧度的,所以相机的位置使照片看上去中间的部分有点暗。
C3.jpg 
 


我们先来看些图片,图中的内容是没有经过边缘融合处理的,简单的把两个画面做了些重合处理。很明显的看得到两台投影机重合的区域。

  边缘融合处理原理(图1)
C4.gif 
 

  边缘融合处理原理(图2)
C5.jpg 
 

   边缘融合处理原理(图3)
C6.jpg 
 

  我以前讲的那些边缘融合机就是将图像中间的那条亮边去掉的机器,那它是怎么做的呢?我们来看图1。

 所谓的融合技术就是让图像的边缘x轴方向产生一个线性的灰度变化,这样两台投影机在拼接的时候由于每台机器的边缘亮度都是渐变的,所以就不会让人眼有像上面那张图样的不自然的效果。我们来看图2。拼接完成后会是图3的效果。
C7.jpg 
 

  再来一个拼接好的画面,这张画面是细调图像的gamma之后的效果。
C8.jpg 
 

  单台普通的lcd或者dlp的投影机的标准分辨率是1024×768的,高分辨率的机器就很贵了,我的这个方案简单的说就是廉价的高分辨方案。考虑到边缘融合的象素损失,2台可以做到最大2000×768,2×2台的方式可以做到2000×1400,在大也可以,现有的方案最大支持到16台投影机(那就要买一些商用的软件,不过相比硬件的成本价格很便宜)。16台以上我没试过,所以不敢打包票。想想看16台投影机的拼接,5000×2000就不在话下了。

  好了,言归正传。先看我做的安装图。 

最简单的边缘融合就是用显卡来做。大家别奇怪,是的就是用显卡

记得我上面说的WINFAST Quadro FX1300么?就是它。其实从agp的时代就有少量的高端卡可以做边缘融合了,不过那时候的卡价位高的令人咋舌,所以大家没有机会碰到。现在进入了PCI-E的时代,支持边缘融合的卡也只有WINFAST FX3400以上的卡,价格都是在4000元以上的卡。没关系,其实从理论上讲,只要是双dvi输出的卡在两个通道间都可以带边缘融合的功能。而我又是。。。。

  所以我做了些小小的手脚。。。。。(嘘,别让NVIDIA知道。。。。),总之用我改过的驱动可以做到了。
C9.jpg 
 

  用显卡做的边缘融合,大家又没有注意到显卡的设制栏有一个Desktop Overlap & Edge Blending,后面是 Enable projected edge blending,那个就是讲到现在的边缘融合功能。进入之后你就可以选择你要的融合的象素数量和,平滑度,luma等等。我现在用的fx540,也可以做简单的融合,但经常会出错,标准配置应该是FX1300或以上。

  写了一个小程序,可以查屏幕尺寸,下载解包后直接运行。输入英寸,得到长宽等信息,支持4:3,16:9,16:10。

luma=255
C10.jpg 
 

  luma=128
C11.jpg 
 

  roll off=0
C12.jpg 
 

  在上面的设置中我设定了边缘融合的水平部分为256象素(horizontal: 256pixels),垂直部分为0像素(vertical:0 pixels)。图中的四个箭头代表了要做融合的四条边,如果是两台显示设备的话,那就会出现一个中间的方块代表两台显示设备的中间部分需要融合。下面的horizontal roll off :128 代表融合过渡的级别,luma很难用中文表示它的确切意思,大至上就是渐变的过程之类的一个级别。

  通过两张照片可以看出大至的区别。 

 

可以说luma值越大,渐变的过程越明显,luma值越小,渐变的过程越不明显,到luma为0的时候只有一小部分像素是渐变的,大部分都是黑的。

  而roll off则不同,在融合像素和luma值都固定的时候,roll off产生的是一个图像平滑过渡的处理,roll off的值越大,则过渡越明显,反之,当roll off的值为0的时候,就没有了任何边缘融合的处理。

  不知道这样的解释是否大家都能明白,如果不明白,可以随时提问,不过我这几天在做一个大屏幕的项目,可能不能马上回应,争取第二天一定回应。

  ATI X1300PRO本身驱程中没有那个边缘融合的功能,所以再研究也没有用,我们所能做的是把驱程中有边缘融合,是将被显卡厂商屏蔽掉的功能弄出来。而且我本人对ATI的卡没有特别的玩过,所以暂时对ATI的边缘融合功能没有任何办法。对“免费”的边缘融合来说,目前好像只有NV的卡。

  怎样把画面切成两半呢?其实我们不光要把屏幕切成两半,还要有重叠部分才能做拼接的。也就是我们要的画面是:左边的画面要在中线右边n个像素的地方切一刀,右边的画面在中线左边n个象素的地方切一刀。这样的画面才有边缘融合的位置,也就是重叠像素,然后处理重叠象素实现边缘融合。

  说来也简单:我们的显卡是双头显示的吧,把桌面扩展就可以了,这样windows的桌面就变成了2048×768了。那么如何来做重叠处理(overlap)呢?在前面的图片中,有一张是进入边缘融合菜单的图,就是那张。edge blending的操做上面有一个enable desktop overlap的选项,如果你有两个显示设备,你又是在桌面扩展模式的时候,就可以选中这个功能,并且任意设置你想要重叠的像素值了。

  讲到现在,你就可以轻松的在一块平面的屏幕上实现两通道的大屏幕显示了。记得7-8年前,投影技术的大佬barco说过他有技术来解决边缘融合的问题,当时的代价是:一条边=100万美金。技术的发展实在是太快了。
C13.jpg 
 

  再看图,因为有重叠的像素,所以最终的画面尺寸是一个比较奇怪的分辨率。这点大家都能够理解吧 

 

对于平面幕,可以是两台投影机平行放置。环形屏幕就不同了,两台投影机的摆放位置就有很大的讲究了,简单的讲就是镜头的面与对焦面平行,当然还有一些位置,距离的关系,可能要仔细算一下,就像我前面的图一样。

  我们要求的hdtv的分辨率只要两台投影机就可以大至搞定了,如果要超过两台投影机的大屏幕系统就需要多台电脑主机来同时完成了。一般我们看到的120度左右的环幕一般需要三台或者六台投影机来完成,那就必须要用专门的软件或硬件来完成。我们有一个支持2-8台pc来同步播放的软件,大家有兴趣的话我可以给大家试用版(这是我们的吃饭家活之一,所以没办法做到是free ware)。不过这些和家庭影院的标题完全没有关系了。

  边缘融合我想大家都没有问题了,那下面就该是几何校正了。

  平面幕和曲面幕是不一样的,我们在平时投影的时候是在一个平面上,没有问题。那如果成像面是一个曲面会是怎样的呢?以柱面投影为例,画面在垂直方向是没有变化的,而水平方向就不对了,投出去的水平线会变成一条曲线,而一条曲线会变成与幕边平行的一条直线,或曲率产生变化的曲线。而这些变化又是非线性的,很难用一个公式或函数来表现。上面的问题变成了一个数学问题了。

 


C14.jpg 
 

  平常我们在使用的幕一般都是大于60度的。我们看到上面的图了,平面幕的成影面是一个规则的矩形,而柱面幕的成影面是一个腰子形的两头大中间小的面。那么我们是不是把图像校成那样的形状就可以了呢?是的。但是我们不能损失图像的信息,我们要做的是把图像的每一个像素都要放到相对应的位置去。这的确是一个几何学的问题,就是平面上的一个点,求出变到曲面上的相应的点,两个面的面积一样,平面是柱面的延展面。(又是数学系的题目,太麻烦了。)

  那怎么解决上面的问题呢?

 

有两种方法来解决,硬件的和软件的。所谓软件的解决一种就是用算法来解算出相应的位置,编程解决(很麻烦,没有相应的函数)。还有就是我们用交互的方式来调节具体的位置,用人眼的判断来得出近似的结果,由于投影机的位置相对固定,你只要调节过一次后在不改变投影机位置的前提下就可以终身受用。具体就是把显卡输出的数据在输出前读取出来,进行算法或交互的处理,得到相应的数据模型,然后再将画面处理成相对于平面变形的图像数据,最后输出到投影机,这样我们看到的就是标准的经过校正的效果了。

  这样做的好处是可以调的相对准确,而且在程序中可以添加一些自己想要的其他效果,比较灵活。但是缺点也是很明显的,其中最难于让人接收的就是这样的解决是面向应用的。换而言之就是他只能用在放电影的单一用途。无法支持其他的应用,更不用说是操做桌面了。我们可以做3d游戏的几何校正,画面分割,可以做放电影的几何校正,等等等等。总之是每一个用途就要做一次校正。每次用完当前的应用后又要做其他应用的2次校准。

  当然在单一应用的领域,我们做软件的几何校正是完全可行的。这也是现在外面大部分所谓大屏幕系统集成商做的事(低成本的解决方案)。

  幕的问题,是这样的。幕就是普通的幕,那些做幕的厂家都可以定做。关键是如果是弧形的幕支架必须自己做。柱面幕的幕是平的,弧形的支架配合了之后就是柱面幕了。

  上次说了软件的解决办法,现在来说硬件的。有些所谓的硬件解决其实是通过一台带vga输入的机器来实现的。具体就是把需要几何校正的图像输出到单独的一台电脑上,这台电脑再把信号处理成一个变形的画面输出到投影机(其实这也是一种软件的方案)。这样就实现了我们所说的可以面向任何应用的几何校正。这样的做法的确是可以解决最根本的问题,但这样的产品价格相当昂贵,不是我们可以买得起的。所以也不在我们的讨论范围之内,我们要做的是all free的方案(当然除了你必须买的设备之外)。。。。。。

几何校正的all free的方案是什么呢?

我们从投影机上想办法,曲面投影的方案有许多投影机生产厂都在做这方面的工作,其中著名的是barco,sanyo的高端机器,可这些动不动就是1x万的机器还是和我们要讨论的all free 有点不相称,很偶然我看到了nec的曲面校正功能。nec的网站上有一个曲面校正的软件,支持它的几款从高端到低端的机型,试了一下还挺好用的。

 

  就这样,曲面校正的问题解决了。下面我又要贴图了。

  几何校正、边缘融合前的图像
D1.jpg 
 

  几何校正前的图像
D2.jpg 
 

  边缘、几何处理后的图像
D3.jpg 
 

最后我们来看下融合之后的投影效果。
D4.jpg 

D5.jpg
D5.jpg 
D6.jpg
D6.jpg 
D7.jpg
D7.jpg

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics