双摄测距原理_双摄像头系列原理深度剖析

http://www.dzsc.com/data/2016-7-13/110171.html

如之前文章介绍,双摄像头的应用主要分为:距离相关的应用,光学变焦,暗光补偿以及3D拍摄和建模。每种应用的原理都有些不同,我们就分别介绍一下相关的原理:

从技术原理的角度上看,彩色 + 黑白双摄的方案是可以提高画质的。这就要从手机感光元件的成像原理开始说起了。

57c3febc9490cb3573000048_640.jpg

目前市面上常见的手机彩色 CMOS,其像素分布几乎都是采用 RGBG 排列的拜耳阵列或其变种 RGBW 排列,在这种排列下,光在射入每个像素点的过程中,会被滤光片过滤掉一部分,只保留该部分颜色的强度。

57c3febc9490cb3573000049_640.jpg

在这种排布下,由于每个像素点只能记录一种颜色的信息,所以在后期成像的过程中,需要以每四个 RGBG 像素点为一组进行 " 反拜耳运算 ",通过参考相邻像素点上的颜色强度,将其算法合成并还原拍摄物体本来的颜色。

57c3febc9490cb357300004a_640.jpg

说得通俗一些,一台 1200 万像素的手机,每 4 个像素点为一组合成 1 个像素点的图像,这样我们先得到一张 300 万像素的图像,然后手机再通过插值计算还原出一张 1200 万像素的照片。

显然,在这个 " 还原 " 过程中对于画面细节的丢失是巨大的,如果你的手机同时还支持 PDAF(相位对焦)功能,还要抠出一些像素点用于对焦,理论上画质会进一步下降。

而黑白 CMOS 由于无需记录并还原拍摄物体的颜色信息。每个像素可以独立地保存画面的灰度信息,也就最大程度上保留了画面的细节信息,提高了锐度。

距离相关应用

人眼是很容易对一个物体的距离进行定位,但当人闭上其中一个眼睛后,定位能力就会下降很多。

双摄像头就是模拟人眼的应用。

简单的说,测距离的话,就是通过算法算出,被拍摄物体与左/右摄像头的角度θ1和θ2,再加上固定的y值(即两个摄像头的中心距),就非常容易算出z值(即物体到Camera的距离)

1db4701e7e45f5da2abce10ed1cfaa54.png

不过这也很容易推算,若两个摄像头中心距过小的话,可计算的物体距离就会很近。若想算出很远距离,就必须让左右摄像头的距离拉远。

光学变焦

光学变焦主要是左右摄像头使用不同的FOV(可视角),这样两个摄像头取景不同。当用户需要广角照片,则用视角为85度的左摄像头取景,获得广角效果。当用户需要长焦照片,则用视角为45度的右摄像头取景,获得长焦效果。

9c981696960f0b93df16ad54945d9c9d.png

为了使左右摄像头拍摄的物体重叠度高,光学变焦的双摄像头模组不能像做距离应用的摄像头的模组那样距离过大,而是需要将左右摄像头摆得越近越好。

暗光增强

其实第二篇的时候,小编已经简单介绍过暗光增强的原理。一般来讲,做暗光增强就是将两个摄像头一个用RGBG的标准摄像头,一个用去掉RGBG 滤波片的黑白摄像头。RGBG用来获得物体的色彩,而黑白摄像头用来获得更好的进光量,来判断被拍物体的光强强度。然后将两个图片融合即可获得更好的暗光增强。

只是一般来说,有两种融合方法:

1. 以黑白图片为主体,将彩色图片上获取的每个像素的颜色贴至黑白图片上,将两种图片融合。

2. 以彩色图片为主体,将黑白图片上获取的每个图像的光亮强度补偿到彩色照片上,将两种图片融合。

至于哪种方式更合适做融合,可能仁者见仁智者见智,就不在这展开讨论了。

同样,做暗光增强,为了让左右摄像头拍摄的物体重叠图高,此类双摄像头模组也是要求越近越好。

799224851ba43fb286e7a10137391af5.png

需要说明的事,华为P9 其实选用的就是这个方式的模组。

当然有些业内人士也表示这种算法目前做的效果并不明显。暗光补偿对用户来的确很帮助,尤其拍夜景的时候。不过有些客户认为索尼和三星的Dual PD技术就非常好,更愿意用Dual PD 摄像头来做暗光补偿。

到底是双摄像头还是Dual PD的暗光补偿效果好,大家可以比较一下华为P9和三星的Galaxy S7 edge,就会有答案了。

3D拍摄和3D建模

3D拍摄和3D建模的算法其实跟距离应用有点类似,只是它的精度要求更高,甚至有时会需要用红外测距进行更准确的距离判断。在这里小编就不详细展开介绍了。

对ISP的要求

提到双摄像头的算法,不得不提到ISP(Image Signal Processing 图像信号处理器),ISP主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正、噪声去除、坏点去除、内插、白平衡、自动曝光控制等,依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了手机的成像质量。

功能机时代,ISP都是做在摄像头上的,不同像素的摄像头搭配不同性能的ISP。随着手机摄像头像素越来越高,对ISP性能的要求越来越高,若将ISP集成到摄像头Sensor上,势必造成摄像头的模组过大,甚至影响拍照效果。所以智能机时代,ISP一般都是在主芯片SoC上。部分品牌客户为了实现更好的效果,甚至不惜成本的外加一颗ISP用来达到更好更专业的拍照效果。

好的拍照算法就需要搭配好的ISP,ISP和算法相辅相成,缺一不可。而双摄像头对ISP性能要求更多。首先,为了使的左右摄像头的信号能够同时被处理,单一的ISP已经无法满足双摄像头的需求。这就需要双路ISP实现此功能。

2bcfc900cb0825b9a83555a553cac7c4.png

以暗光增强为例,彩色/黑白图像分别进入各自的ISP通道和校准通道,然后将两副图片做匹配(如将两幅图片相同的部分提取出来,去除只有一个摄像头拍到的部分),然后通过遮挡,检测,补偿等算法 处理相关的图片。最后将两幅图片融合起来,实现颜色的增强。当然实际上ISP配合算法做的事情,远远比这图片上写的要多。小编实在不知道,就不在这误导大家了。

当然,在这里面也有一个小小的插曲。毕竟是两个ISP,两个ISP多少有一些处理速度,处理能力不同的问题。为了保证两个ISP能在同一时间上取样,就需要双摄像头拍出来的图片是同一时间拍出来的。其中一个解决办法就是让Sensor有一个同步信号引脚。将两个摄像头的同步信号对接,在每次读取图片时,将图片都打上一个时间戳,ISP通过时间戳,保证左右摄像头拍出来的照片在同一时间拍摄,最终再进行融合。

摄像头的接口

一般来讲,目前的智能手机的摄像头接口都是MIPI接口。之前手机平台都只有2路MIPI接口,分别给前摄像头和后摄像头。做双摄像头,就要求平台至少支持三路MIPI接口。其实在之前的高端平台上,为了实现更高像素,已经用双路ISP了(比如为了支持16M的摄像头,会用2路8M能力的ISP),这类平台很有可能只有两路MIPI。但这个无法阻止工程师去做前单摄像头+后双摄像头。

ee60264bc4edede6039d3b1844902f87.png

没错,加一个小小的Swtich,就可以轻松实现双摄像头。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用Maven快速创建一个简单的spring boot 实例

Spring Boot的好处&#xff1a;spring boot 大大减少了 使用spring的配置 和大量 xml 文件&#xff0c;并有效解决的项目之间的依赖问题&#xff0c;为想使用 spring项目 大大减轻的工作量 1.先创建一个Maven项目 2.配置pom.xml <project xmlns"http://maven.apache.or…

mysql主从同步原理_mysql主从同步以及原理

mysql主从复制介绍当前的生产工作中&#xff0c;大多数应用的mysql主从同步都是异步的复制方式&#xff0c;即不是严格实时的数据同步。实时和异步&#xff1a;同步复制: 指的是客户端连接到MySQL主服务器写入一段数据,MySQL主服务器同步给MySQL从服务器需要等待从服务器发出同…

mysql不兼容_mysql5.7 不兼容问题

通过navicat工具导入psc数据库备份文件&#xff0c;报错如下&#xff0c;mysql版本5.7执行如下语句不通过DROP TABLE IF EXISTS guard_user;CREATE TABLE guard_user (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 操作员编号,login_account varchar(16) NOT NULL …

MSSQL 如何采用sql语句 获取建表字段说明、字段备注、字段类型、字段长度

转自: http://www.maomao365.com/?p4983 <span style"color:red;font-weight:bold;">下文讲述-采用sql脚本获取指定表中所有列对应的说明信息,脚本如下所示:</span> SELECT (case when a.colorder1 then d.name else end) [数据表名称], a.colorder […

mysql数据库层次结构_MySQL逻辑分层介绍

上一篇文章主要介绍了MySQL在Ubuntu18.04系统上的安装&#xff0c;以及安装过程中可能会遇到的一些问题的解决方案。在这篇文章里&#xff0c;开始介绍MySQL数据库的逻辑分层。通过本文的介绍&#xff0c;可以大致了解到MySQL的语句从客户端发出请求后&#xff0c;在服务器经历…

python 只去除英文_如何使用 Python 制作词云(Word Cloud)-英文词云篇

wordcloud 安装报错与解决虽然网络上也有各种工具可以一键生成词云&#xff0c;但是使用Python制作词云感觉是一件很酷的事情。作为一个 Python 小白&#xff0c;使用 Python 的过程并不那么轻松。比如最最基础的&#xff0c;用Python 制作词云需要安装第三方库 wordcloud&…

webstrom中打包的详细_webpack打包体积优化

webpackwebpack打包体积优化webpack官方定义webpack 是一个模块打包器。webpack 的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。…

201621123003《Java程序设计》第一周学习总结

#1. 本周学习总结 本周主要学习了Java的jdk、jvm、jre等基本概念&#xff0c;Java的发展史&#xff0c;知道Java语言的跨平台、面向对象等主要特点&#xff0c;简单了解了Java程序的编译和运行过程。对于学习Java&#xff0c;我的学习和编程能力还是很吃力的&#xff0c;但还是…

SpringMvc三大组件详解

SpringMvc框架结构图 处理器映射器&#xff1a;用户请求路径到Controller方法的映射处理器适配器&#xff1a;根据handler(controlelr类&#xff09;的开发方式&#xff08;注解开发/其他开发&#xff09; 方式的不同区寻找不同的处理器适配器视图解析器&#xff1a;根据handl…

MySQL笔记创建表结构_MySQL表结构笔记9

本篇大纲MySQL数据表创建表创建主键AUTO_INCREATE指定默认值更新表结构删除表&#xff0c;重命名表01&#xff1a;表MySQL 数据库的表是一个二维表&#xff0c;由一个或多个数据列构成每个数据列都有它的特定类型&#xff0c;该类型决定了MySQL如何看待该列数据02&#xff1a;创…

ubuntu 转mysql_(转)Ubuntu 16.04下安装MySQL

转自&#xff1a;https://www.linuxidc.com/Linux/2017-06/144805.htm首先执行下面三条命令&#xff1a;sudo apt-get install mysql-serversudo apt-get install mysql-clientsudo apt-get install libmysqlclient-dev安装成功后可以通过下面的命令测试是否安装成功&#xff1…

python 大智慧股池_跟我从零开始学会大智慧股票池自动交易

自从上次发表关于自动交易系列教程后&#xff0c;很多朋友对自动交易产生了极大兴趣&#xff0c;然而还有很多朋友因为没接触过股票池和自动交易&#xff0c;相对比较陌生&#xff0c;希望我能从更简单详细的角度来让刚接触的朋友更快的掌握股票自动交易的方法。所以有了次文&a…

python做工控机_工控机折腾小记

引言之前笔记本换下来的一块1T的2.5硬盘; 本来想着买个树莓派挂硬盘做个简单的 NAS, 鉴于性能问题, 后来某鱼入手了一个搭载赛扬 N2940 CPU 的工控机;基本配置:Intel Celeron N2940 4x 2.2491GHz / 4G / 32G SSD / USB2.0 x4 3.0 x1 / HDMI x2 / LAN x1 / DC 12V内部还有一个 …

bzoj3638

费用流线段树 看见这个题我们马上就能想到费用流&#xff0c;设立源汇&#xff0c;分别向每个点连接容量为1费用为0的边&#xff0c;然后相邻的点之间连边&#xff0c;费用为点权&#xff0c;跑费用流就行了&#xff0c;但是很明显这样会超时&#xff0c;那么我们要优化一下&am…

android module 引用libs里面的so文件_Android中的JNI开发,你了解多少?

一&#xff0c;什么是任务及管理任务是用户在执行某项工作时与之互动的一系列 Activity 的集合。一、步骤&#xff0c;修改build.gradle&#xff0c;添加cmakelists&#xff0c;写JNI接口&#xff0c;写c&#xff0c;这个是不是流水线的方式集成&#xff0c;不了解每一步是做什…

zabbix中mysql连不上的排错_zabbix监控软件的使用排错

在linux系统中&#xff0c;几乎所有运行的服务都会产生相对就的日志(log)&#xff0c;所运行的程序在出错时都会有错误提示&#xff0c;即使没有任何提示也可以通过“echo $”来查看运行是否成功。使用zabbix已经有一段时间了&#xff0c;整理一下遇到过的问题和解决的方法以。…

Tomcat之Windows环境下配置多个服务器

在应对多项目多端口的情况配置一个服务器是远不能满足开发条件的。例如微信公众号回调域名只接受80端口&#xff0c;而其他项目一般为默认的8080或者自定义的其他的端口。 废话多说&#xff0c;直入主题 准备条件&#xff1a;tomcat文件夹&#xff0c;notepad2 1.Apache官网上下…

mysql optimizer组件_MySQL Optimizer

最后更新&#xff1a;2018-10-09当前版本&#xff1a;1.9.1应用大小&#xff1a;8.8 MB应用语言&#xff1a;英文系统要求&#xff1a;OS X 10.11 或更高应用描述&#xff1a;MySQL和MariaDB优化工具MySQL Optimizer 简介&#xff1a;MySQL Optimizer for Mac(MySQL和MariaDB优…

nagios mysql 监控_nagios监控mysql

说明&#xff1a;被监控客户端要先安装mysql,必须安装mysql-devel,再安装nagios-plugins&#xff0c;nrpea、进入mysql,新建一个nagiosdb数据库&#xff0c;并授权mysql –uroot –p123456create database nagiosdb;grant all on nagiosdb.* [email protected] identified by &…

java 反射的效率_如何提高使用Java反射的效率?

前言在我们平时的工作或者面试中&#xff0c;都会经常遇到“反射”这个知识点&#xff0c;通过“反射”我们可以动态的获取到对象的信息以及灵活的调用对象方法等&#xff0c;但是在使用的同时又伴随着另一种声音的出现&#xff0c;那就是“反射”很慢&#xff0c;要少用。难道…