鱼眼全景图的立体投影设计
2019-01-22房若宇
房若宇
(浙江大学物理系 浙江 杭州 310027)
1 引言
全景图像技术能够在一张图像中完整展现相机周围的信息,能高效地为各种计算机视觉与机器视觉应用提供重要的信息来源[1~9],而鱼眼镜头是建立全景视觉系统最有效的方法之一.本实验利用透明的笔记本电脑膜制作的圆台式立体投影装置,具有制作方法简单,可以360°全方位的观察,观察者可以从任意角度看到立体投影效果而不会有失真的感觉.另外本实验还找到了一种普遍适用的将静止的高清环形图转换为可旋转视频的方法.用这种方法制作的视频投影源,投影效果非常好,更大程度地拓宽了全景图像发展的新方向[10,11].
2 圆台式投影装置的制作
本实验立体投影装置用透明的笔记本电脑膜制作.圆锥的顶角为254.6°,所构成的圆锥母线与水平面的夹角为45°.反射面具体尺寸根据所使用电子播放设备屏幕大小而定.另外,为了避免成像在顶角处产生扭曲,将圆锥的顶角剪去制成圆台,成像效果有很大提高.装置示意图如图1所示.
成像原理主要是光的反射,但由于圆锥是曲面,成像比棱镜复杂得多,反射圆锥并不能将全景图片重新无失真地重现在眼前,只有在正对视线的圆锥轴的母线附近,图像才接近真实,而越靠近两侧,其反射的图片区域范围越大,成像也就越拥挤,产生一定的变形.弱化这种变形的方法,可以将图片与反射圆锥底面都增大,这样看到的较为真实的中间区域就变大,而变形的区域所占比例就减小,能够大大改善成像的质量,能够360°清楚地观察到立体全景图.
图1 圆台投影装置示意图
3 视频源的制作
用圆台式装置进行投影,要求投影源必须是环绕型的,这样才能通过圆台投影成像出立体的效果.首先将一张高清的、色彩鲜艳有层次感的图片制作成360°环绕的图片,作为后续改进的素材.另外,如何将图片自动旋转是一个较大的技术难题,目前还没有现成的软件.本实验采用现在较为流行的HTML+CSS+JavaScript语言(以JavaScript为主,HTML和CSS为辅)编写了一个小型应用程序解决这一问题.程序如下:
(function(){
var element = document.getElementById("rotate");
var r = 0;
var i = 1;
function rotate(i = 1){
r += i;
element.style.MozTransform = "rotate("+r+"deg)";
element.style.webkitTransform ="rotate("+
r+"deg)";
element.style.msTransform = "rotate("+r+
"deg)";
element.style.OTransform = "rotate("+r+
"deg)";
element.style.transform = "rotate("+r+
"deg)";
}
// every 0.2s rotates 1 degree
// it could be reset
var timer = setInterval(rotate,200);
}());
该程序可以自行设置旋转的角速度,控制视频的节奏;还可以进行一定的鼠标操作;且代码简洁优美.最为关键的是,这是一个普适性的解决方法,无论是怎么样的图片都可以通过这一程序自动旋转,并且能保持原来的高分辨率.该程序较好地解决了从静态图片到自动旋转图片的视频转变问题.
4 立体投影效果
把制作好的视频源,用iPad在圆台式投影装置上进行播放,能够360°清楚地观察到立体全景图,如图2所示.
图2 鱼眼全景图的立体投影效果图
5 结论
本实验利用笔记本电脑膜作出的圆台式立体投影装置,实现了鱼眼全景图良好的立体投影效果.这种装置的设计思路来源于对四棱锥式投影装置优点的继承以及对如何改良其限制的思考,是物理实验课堂上大胆创新的成果.