Chinaunix首页 | 论坛 | 博客
  • 博客访问: 288
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-29 16:22
文章分类

全部博文(1)

文章存档

2015年(1)

我的朋友
最近访客

分类: Android平台

2015-03-29 17:04:18


手机带两个摄像头不是新鲜事,htc好几年前就有了,好像叫Htc evo 3d,两个头,可以拍3D照片,即左右镜头各一张照片。这次华为也来了,只是双目之间距离很短,而且不是拍3D照片,而是拿来模拟浅景深效果。它模拟的过程大致是这样的,通过双目图像获得视差图(disparity map),进而计算深度图,再根据所谓的光圈值计算相应的景深,再对景深外的区域作相应参数的散景滤波,得到前景清晰和背景被虚化的单反效果。这期间视差图计算依赖于立体匹配算法,需耗一定计算量,而且很多情况下会出问题。
用这样的算法来模拟散景的一个问题是,清晰和虚化之间的边界区域怎么办?视差图没那么精确,而且有些区域模棱两可,原因有很多,导致的结果就是边界地带有时会很尴尬,导致该虚化的没虚化,不该虚化的被虚化了。这个相当于抠图或matting,有时加上交互也未必让人满意。

接下来我们从大光圈模式拍下的照片来分析一下。打开大光圈拍下的图像文件,是jpg格式,地球人都知道的格式,但发现文件大小是普通照片文件的2倍多。并且进入大光圈文件后发现,呈现的是拍照时选定的某“光圈值”下的效果,而且跟用其他软件打开的效果一样。因为我们可以再次“对焦”和“改光圈“,所以必然还有其他信息。
不妨我们先作个简单的假设,jpg文件中保存了三部分信息:
1,某光圈下的效果图,这样其他软件可以正常打开这个文件;
2,整体相对清晰的图像信息,这个数据应该比1中的大(这里未必全景深,因为距离太近时总会浅景深);
3,深度信息。

以二进制方式打开图像文件,。。。,发现是有两个jpg连在一起,最后加上深度信息。明白这个后,在android下写了个java+jni小程序,将图像文件自动分离,即得到两张rgb图片+深度图片。这个软件也可以将htc evo 3d手机拍摄的3D照片的左右视图分离开来。
软件下载地址:
有荣耀6 plus的童鞋可以下载玩玩。

附上几张从照片里分离出来的深度图片:







阅读(38) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~