具体实施方式
如上所提到的,3D成像的传统方法依赖于至少两张图片或图像的组合来产生深度的错觉。在传统3D成像系统中创建至少两个图像通常依赖于两种常见类型的相机来捕获具有深度细节的3D图像。第一种传统类型的相机可以被称为计算相机。计算相机通过在单个图像传感器上使用透镜阵列或通过使用多个相机来生成所需场景、图像、对象等的多个视图。第二种类型的传统相机利用与主动不可见光源耦合的传感器来获取深度信息。该深度信息可以被转换成深度图,然后可将其与来自传统相机的传统图像数据“重叠”或以其他方式组合。
但是,利用这种传统3D成像方法可能存在问题。例如,当使用多个相机捕获3D图像时,每个相机将具有稍微不同的特征,诸如焦距、失真、放大率、阴影、滤色器等,使得相当困难的是使多个图像相互进行空间配准,即,将多个图像连接在一起以在像素级生成准确的深度图。例如,除了场景中的对象之间的清楚划分的边缘之外,相邻像素之间的颜色和强度的差异可以容易地遮蔽从一个相机到另一个相机的视差所引起的变化。透镜阵列中的不同传感器和/或不同透镜也是如此,即使在相同的相机中使用也是如此。
另一方面,当依赖于主动照明时,传统3D成像变得更加复杂,并且所得到的图像的分辨率通常低于图像传感器的分辨率。另外,主动照明可以容易地被日光遮蔽,使得这样的系统仅在室内成像场景中可行,或者在主动照明可到达感兴趣的对象的情况下可行。进一步地,眼睛安全健康风险可能与使用某些主动照明源(诸如红外光源)有关。
此外,用于用单个相机捕获立体图像的传统3D成像技术根本不具有在像素级生成深度信息(即生成像素级深度图)所必需的精度。也就是说,当相机运动时,相机产生的倾斜或其他运动会产生偏移,其需要/依靠图像配准过程或算法来实现适当的对准,并且传统系统中的图像配准往往是不精确的。也就是说,图像配准(其指的是将不同数据或数据集(例如,来自多个图像)转换到一个坐标系中的过程或对准图像的过程)由于这些偏移而被损害。图像配准是必要的,以便能够比较或整合从不同测量和/或数据源(诸如不同的图像)获得的数据。此外,这种处理和算法在计算上是密集的,需要更高能力的处理器,广泛的计算时间或两者。在具有更小或更有限的电池电源的移动设备中实现的相机的情况下,这可能导致移动设备本身上的不可接受的大功率消耗(其也可能由于使用主动照明而产生)。还有其他问题出现,因为当使用多张照片或图像来生成最终的合成图像时,由照片/图像捕获的场景中的任何类型的对象运动导致图像伪影,这些图像伪影难以补偿或去除/减少。
因此,本文公开的技术的各种实施例旨在计算精确的像素深度信息,并将该精确像素深度信息应用于由单个相机拍摄的单个图像。结果,可以大大或甚至完全避免与3D图像生成相关的上述问题。具体而言,可以在例如相机的横向运动期间捕获两个或更多个图像,以确定像素级上的场景中的深度。仅需要两个或更多图像中的一个来创建3D图像,其中剩余的捕获图像仅需要用于确定像素深度信息。应当注意,各种实施例考虑使用可提供至少三个稳定轴的光学图像稳定(OIS)系统/机构。以这种方式,可消除与产生图像配准问题的传统系统相关的变化。也就是说,相对于像素深度信息计算,更加容易和准确地执行图像对准,因为例如可利用OIS避免相机的俯仰、滚动和偏航运动,仅留下横向分量(在这种情况下这是所需的),以及相机可能的向前和向后运动,这可能具有可忽略的影响或可以通过焦点调整来解决。
进一步地,由于正在计算实际像素深度信息而不仅仅是产生立体图像以将眼睛诱导到感知深度,所以计算的像素深度信息可以以其他方式来利用,诸如仅通过拍摄对象或场景的图片来提供自动化尺寸测量。进一地,3D图像操纵可以准确地进行,例如用于背景减法、对象插入、以及赋予诸如散景(Bokeh)的各种后处理图像效果。例如,可将3D对象插入到图像中或从图像中移除,因为可确定图像中的对象的适当深度信息,使得由于任何图像操纵而导致的所得尺度和深度是正确的。
图1A示出了可以是移动电话的实例移动设备11的透视图,该移动设备11包含微型相机12,其中可实现各种实施例。微型相机12可使用诸如运动图像传感器封装的图像传感器封装。可优化微型相机12的尺寸以便于将微型相机12结合到移动设备11内或作为移动设备11的一部分。例如,微型相机12的总体厚度可小于移动设备11的总体厚度,使得微型相机12可以结合在移动设备11中以呈现消费者友好的设计。另外,微型相机12的其他尺寸也可以适当地调整尺寸以允许其他组件安装在例如移动设备11的外壳或包围内。微型相机12可实现与诸如OIS、自动聚焦(AF)、透镜和图像传感器之间的对准等的图像传感器运动相关的各种功能。
图1B示出了根据本文公开的技术的一个实施例的图1A的移动设备10,其中,外壳/包围部分地暴露以露出微型相机12。应当注意,虽然本文公开的各种实施例在用于移动设备(诸如移动电话、平板个人电脑(PC)、膝上型PC等)的微型相机模块的情境中呈现,但是所公开的技术可被适配用于其他装置或情境,诸如较大尺寸的相机、医学成像、大规模成像、视频等。
图2A示出了微型相机12的透视图。微型相机12可包括电磁干扰(EMI)屏蔽13、透镜镜筒14和运动图像传感器封装15。可使用商业主动对准设备将透镜镜筒14对准并安装到运动图像传感器封装15。EMI屏蔽13可在镜筒组装之后附接,或者可在组装运动图像传感器封装15之前安装到透镜镜筒14。在相机模块设计和制造期间,透镜镜筒14可被修改以实现期望的光学性能,诸如但不限于:视野;光学传递函数;杂散光;重像;色像差;失真;和对焦范围。此外,进一步地,在相机模块设计和制造期间,透镜镜筒14可被修改以实现期望的机械性能,诸如但不限于:厚度;宽度;和形状。可基本上独立于运动图像传感器封装件15进行上述透镜镜筒的修改。相反,可基本上独立于透镜镜筒14改变运动图像传感器封装15。
图2B示出了具有运动图像传感器封装15的微型相机12的部分分解图。EMI屏蔽13被示出为附接到镜筒14并与运动图像传感器封装15分离。运动图像传感器封装15相对较薄,基本上与传统的非运动图像传感器封装相同的厚度。
图3A示出了根据另一实施例的不包括EMI屏蔽的另一实例微型相机12’的透视图。例如,EMI屏蔽可能已经被移除,或者完全被省略为微型相机12’的设计选项。类似于微型相机12的微型相机12’可包括镜筒14’,自动对焦(AF)致动器16和运动图像传感器包15’。AF致动器16可以是音圈电动机(VCM)类型的致动器、MEMS致动器、压电致动器、形状记忆合金致动器或任何其他类型的致动器。还可以使用诸如液体透镜、液晶透镜、可变形聚合物透镜等的可调透镜来实现AF功能。
如先前所提及的,本文公开的技术的各种实施例可采用诸如三轴OIS的OIS功能,其可操作或可补偿涉及滚动、俯仰和偏航的相机运动。应该注意的是,这种OIS特征可被添加到微型相机12’,而不需要对AF致动器16或透镜筒14进行任何改变。图像传感器在运动图像传感器封装15内的运动可用于补偿相机指向时间变化。应当注意,相机尺寸可能受到镜筒14的尺寸或AF致动器16的尺寸以及运动图像传感器封装15的厚度的限制。此外,AF致动器16可电连接到运动图像传感器封装15。
图3B示出了具有图3A的运动图像传感器封装15’的微型相机12’的部分分解图。透镜镜筒14’被示出为附接到AF致动器16并与运动图像传感器封装15分离。运动图像传感器封装15可相对薄或者与图像传感器不运动的传统图像传感器封装的厚度基本相同。
图4示出了根据本文公开的技术的各种实施例的可用于实现上述3轴OIS功能的实例MEMS致动器17的俯视平面图。MEMS致动器17可用于将图像传感器移动到运动图像传感器封装内,例如图3A和3B的运动图像传感器封装15’。在一个实施例中,MEMS致动器17被设计成根据“三个自由度”移动图像传感器,以便在所有的三个旋转自由度中在微型相机模块(诸如图3A和3B的微型相机12’)中实现OIS。
适用于移动图像传感器的MEMS致动器的一些实例在美国申请系列号61/975,617中描述,其全部内容通过引用并入本文。在一个实施例中,MEMS致动器17可包括具有接触垫19的中间框架18;分隔成两个电杆20的外部框架;四个致动区域21;具有胶孔24的中心锚23和多个电连接弯曲部分22。胶孔24的数量不限于一个,因为可能存在多个孔,这取决于相关的电连接要求。胶孔24可以具有多个目的,包括例如通过施加热环氧树脂使得结构粘合剂能够将MEMS致动器17安装到载体衬底,以及通过施加导电环氧树脂、焊料、金属糊料或其他电连接方法实现从MEMS致动器17到导电迹线或衬底的电连接。外部电杆20可提供MEMS致动器17和运动图像传感器封装的其余部分之间的连接。中间框架18上的接触垫19可在图像传感器(未示出)和MEMS致动器17之间提供电连接。
每个致动区域21可包含在一个线性方向上提供动力的静电梳状驱动器。四个致动区域21一起提供在X和Y方向的运动以及围绕Z轴的旋转。因此,MEMS致动器17可以以两个线性自由度和一个旋转自由度运动,以实现所有三个旋转自由度的微型相机的OIS。致动区域21通过平行的运动控制弯曲部分43连接到中心锚23,并通过连接弯曲部分44连接到中间框架18,连接弯曲部分44在运动自由度方面是坚硬的并且在其它自由度上是柔软的。在一个实施例中,致动区域21包括在下降或震动期间限制机械运动以减小平行运动控制弯曲部分43和连接弯曲部分44上的应力的特征。在一个实施例中,图像传感器附接到外部框架20和中央锚固件23,而中间框架18附接到运动图像传感器封装的其余部分。
应当注意,MEMS致动器17的X/Y尺寸与运动图像传感器封装尺寸有关。在一个实施例中,中间框架18的轮廓尺寸基本上与图像传感器的尺寸相匹配。在另一个实施例中,外框架20的轮廓尺寸基本上与图像传感器的尺寸相匹配。在另一个实施例中,MEMS致动器17的厚度为大约150微米,并且面内尺寸在X维度上为约8mm,在Y维度上为6mm。
图5是根据本文公开的技术的一个实施例的运动图像传感器封装15的分解透视图。运动图像传感器封装15可包括但不限于以下组件:衬底33;多个电容器或其他无源电气组件28;MEMS致动器驱动器29;MEMS致动器17;图像传感器30;图像传感器盖31;和红外线(IR)截止滤波器32。衬底33可包括具有开口25和平面内运动限制特征27的刚性电路板34以及用作背板的柔性电路板26。刚性电路板34可由陶瓷或复合材料制成,诸如用于制造平板电路板(PCB)或一些其他适当材料的材料。运动图像传感器封装件15可包括一个或多个驱动器29。应当注意,开口25的形状被设计成配合MEMS致动器17,并且可在拐角上提供平面内的运动限制特征27,如果需要改进平面内下落(drop)性能的话。基于图像传感器30的尺寸可调节开口25的尺寸。
背板26可包括嵌入的铜迹线和特征,除了路由电信号之外,其还可以用作间隔器来控制背板26和MEMS致动器17之间的z间隙。由于空气的热传导大致与间隙成反比,并且图像传感器30可消耗大量的功率,在100mW和1W之间,图像传感器30、MEMS致动器17的静止部分、MEMS致动器17的运动部分以及背板26之间的间隙保持在小于约50微米。在一个实施例中,背板26可由诸如铜的具有良好导热性的材料制成,以进一步改善图像传感器30的散热。在一个实施例中,背板26的厚度约为50至100微米,并且刚性电路板34具有大约150至200微米的厚度。在一个实施例中,MEMS致动器固定部分23通过胶孔24通过热环氧树脂附接到背板26上。
如上所述,可通过在捕获两个或更多个图像的同时横向移动单个相机来实现3D成像。使用单个相机的一个优点是单个相机的某些特征或参数可在两个或多个图片之间匹配,包括例如焦距、放大率、颜色、阴影等。这与传统的系统和方法不同,传统的系统和方法例如依赖于使用多个相机、透镜和/或传感器,其中这些特征在用于捕获每个图像或图片的多个装置中的每一个之间将不同。
也如上所述,各种实施例使用三轴OIS。使用这样一个全面的OIS系统的优点是能够补偿图像之间角度的显著偏移。也就是说,相机的运动包括角度变化和横向变化,因此使得以视差的变化去解释图像中的每个偏移是不正确的。因此,三轴OIS确保照片之间的角度没有实质的偏移,从而允许在相同方向上捕获照片。结果,在照片中捕获的物体的偏移可以被用来以相当的精确度和最终的深度来解释距离。没有OIS,如果相机被运动,对象运动是由摄像机倾斜还是透视变化引起的是未知的。有了OIS,如本文所述,对象的运动可与相机的运动区分开。可在本文公开的技术中实现的OIS的实例可在美国专利号8,768,157和美国专利申请序列号62/003,421中找到,其各自通过引用整体并入本文。应当注意,本文公开的技术不必限于或完全依赖于三轴OIS,而是还可以在其他OIS系统/方法的情境中操作。但是,用OIS补偿更多的相机运动可使本文公开的像素深度过程和/或计算更简单地执行,并且至少最初是更准确的。
在不同时间捕获两张图像时,传统系统中出现另一个问题。具体而言,如果在捕获图像的时间之间存在场景中的对象的任何运动,则由于相机运动,图像中的偏移将与透视变化混淆。因此,对象运动可影响图像之间的像素与像素关联性,因此影响深度计算/估计。在本文公开的技术中,可通过使用诸如加速度计之类的另一个传感器跟踪照片之间的相机的运动来避免这个问题。此外,加速度计有助于准确地计算每个像素的距离,这可以基于正确地确定像机在捕获两个或多个图像之间经历的任何横向运动。另外,加速度计可用于确定横向运动的方向,这可进一步简化该计算,因为像素关联的方向已经是已知的。如下所述,可利用移动设备上的驻留传感器以及上述MEMS致动器,其它专用传感器或其某些组合。因此,各种实施例在被捕获的图像涉及对象运动的情况下具有特别的功效,诸如动作镜头或微距摄影,其中诸如风等环境条件的轻微变化可影响感兴趣的对象,诸如一朵花上的花瓣。
通过确定相机本身的实际运动方向,可区分在其他方向上捕获的图像中检测到的任何其它运动。但是,如果在横向移动相机时拍摄多张图片,并且感兴趣的对象也横向运动,则可能难以区分两个运动方向。当捕获图像时,诸如单调颜色的/平坦的表面对象,诸如墙壁,或图像的部分,诸如在捕获后续图像时对象可能脱离帧的边缘,也是如此。但是,在这些情况下,在无法获得深度信息的情况下,可执行滤波以从“附近”或“相关”数据/信息内插数据。
为了区分实际对象运动和相机运动,各种实施例可利用不同的运动检测方法。例如,根据一个实施例,可快速地连续地捕获多张照片,以帮助进一步区分由对象运动引起的像素运动和由相机运动引起的像素运动。作为另一实例,当感兴趣的对象正在运动时,用户可以以圆周运动移动相机。因为相机的运动可通过使用一个或多个传感器来确定,如果对象正在例如横向地运动,则相机的圆周运动可以与对象的运动区分开。除了上述之外,还可进行其他区别的相机运动,诸如在拍摄多张图像时的前后运动。
结果,由于相机运动引起的像素偏移的方向对于每张照片将是不同的,而由对象运动引起的像素偏移的方向对于所有照片是恒定的。只要相机的运动不同于对象运动,像素偏移就将是可区分的,允许获得每个像素的深度。此外,对象的运动以及其运动的速度将是已知的。作为附加的优点,当对象运动到新位置时,对象后面的场景也将被测量,因此将存在关于对象后面的场景的信息,例如背景元素。
图6是示出根据各种实施例的用于确定像素深度的实例处理的操作流程图。在操作50,可用相机捕获第一图像。再次,根据各种实施例,在3D成像中仅使用单个相机。在操作52,在相机的某些横向运动之后,可捕获至少第二图像。应当注意,如本文所使用的,“横向”运动或移动的概念是指在X-Y平面中的运动。OIS操作也有效地消除了诸如俯仰、偏航和滚动之类的其他动作。如前所述,该横向运动可以是圆周运动、来回运动或者简单地在X-Y平面内水平、垂直、对角等地偏移/移动相机。根据一个实施例,用户可确定要在相机上施加什么横向运动和/或什么时候捕获图像和捕获多少图像。根据另一个实施例,向用户呈现用于运动和图像捕获的通知和/或建议提示。倾斜或前后运动可通过焦点进行补偿,或者可简单地忽略。
在操作54,计算第一和第二图像之间横向运动的量。在操作56,也确定第一和第二图像之间横向运动的方向。在操作58,可在确定的横向运动方向上对第一和第二图像执行像素关联处理(图像配准)。在操作60,在计算的横向运动的方向上计算每个像素的关联的峰值。在操作62,基于计算的关联的峰值和横向运动的量和方向来计算每个像素的偏移距离。应当注意,由于可检测横向运动的量和方向来计算距离,所以在捕获图像时,本文公开的技术的各种实施例不需要依赖于使用“基线”或从感兴趣对象预定的/设置的位移,这通常是现有技术的系统和方法的情况。
应该进一步注意的是,所有捕获的图像可被单独地显示给用户,从而可选择创建3D图像的优选图片。例如,在感兴趣的对象正在运动的情况下,用户可选择捕获运动对象的图片在相对于图像帧的优选位置。每个捕获图像使用来自所有其他捕获图像的像素数据/信息以生成和显示深度图。应当注意,如前所论述的,对传统3D成像系统(依赖于例如立体成像)的一个改进在于,最终仅使用单个图像来创建和显示3D图像给用户。这避免了在使用传统3D成像方法时可能会遇到的图像伪像的任何问题。再次,其他捕获的图像仅用于生成深度图。如果需要立体图像,它仍将从单张照片生成。此外,应当注意,作为透视变化(作为用户引起的横向相机运动的结果),图像的不同部分可能变得可见。为了在附近对象的边缘上“填充”这些区域,可使用来自多张照片的数据,因为每张照片都具有相关的深度图。
除了创建3D图像之外,可利用本文公开的技术的各种实施例来提供附加特征,一旦捕获图像并且如上所述计算像素深度。例如,可测量或估计对象的大小。虽然可从单张照片确定对象的角度大小,但是对象的实际大小也取决于与对象的距离。也就是说,当相机横向运动时,如果通过OIS补偿角运动的全部或重要部分,则与“偏移”对象相关联的角度以取决于对象的大小和距离的独特方式从相机的角度经受变化。也就是说,相比更远的较大对象,对于更靠近的较小的对象,角度变化更大。
图7A和7B示出了根据各种实施例的横向位移测量的实例。如图7A和7B所示,感兴趣的对象可以是人类主体。从捕获单独的图像的观点来看,当拍摄单张照片时,对象70和74的大小看起来与相机的大小相同。这可从图7A和7B的位置71和75中的相机的角度观察,在没有附加信息的情况下,难以确定对象70和74的实际大小以及从相机到对象70和74的距离。但是,如果两个图像以不同的横向位置捕获(例如,分别从图7A和7B中的位置71和77),并且位置之间的横向位移是已知的,可非常准确地估计对象的尺寸。
例如,考虑到静态或非运动对象,可基于位置71和72之间的角位移量执行计算。应当注意,实际计算可基于以偏移程度、像素数或其一些组合表示目标偏移。也就是说,在该情境中可使用对角视场作为图像中的像素的总数的函数(例如,除以该总数)将像素和角度视为相关。例如,考虑到1200万像素的分辨率和3:4:5:图像传感器(3000像素×4000像素,具有5000个对角线像素),每像素的角度为0.014度。基于该信息,可使用相机横向运动的量来估计到对象的距离,并且因此也估计对象的大小。应当注意,根据一些实施例,只有1cm的横向相机运动仍然可导致足够大的对象偏移,以对例如直至2m远的对象进行准确的距离估计。另外,如果对象距离为1/2米,则使用各种实施例,距离可被感测到大约0.2%或1mm的分辨率,精度约为0.02m。
当然,感兴趣的对象越远,误差容限可能增加。但是,由于更准确的横向像机运动信息,使用加速度感测(如上所述)可校正一定量的该误差。当使用三轴OIS时,如上所述,例如,可利用运动图像传感器封装来确定相机的加速度,并且由此可确定横向运动。换句话说,精确的x-y加速度计可集成到相机模块或主机设备中,以确定主机设备的横向定位/运动。可替代地,可使用单独的加速度计,例如已经并入到移动设备中以感测设备取向的那些。
在数学上,具体而言,到对象的距离可通过乘以角度变化的余切(相机)的运动距离来给出。运动距离可从上述加速度计/传感器确定。一旦知道距离,就可基于对象的“角度大小”来估计尺寸。在数学上,尺寸是距离乘以对象的角度大小的正切。此外,具有已知尺寸的图像中的任何对象都可用于计算运动的距离,并且从这里还可确定图像中所有其他对象的尺寸和距离。例如,人的眼睛之间的距离是已知的,并且通常是常数。当拍摄人物的图像时,该距离可用于确定捕获的图像中的一切别的东西的大小。
图像中的每个像素可具有与之相关联的距离。对于用于确定每个像素的深度的像素关联,捕获的两个图像表示两个像素阵列,其中每个像素的属性(例如,强度、颜色)由矩阵A表示,其中元素Aij用于第一图像A并且可考虑矩阵B,其中元素Bij用于第二图像B。后缀i表示图像传感器行(y轴),后缀j表示图像传感器列(x轴)。
前两个图像之间的关联如下:
A={A11,A12,A13,A21,A22,A23,…}
B={B11,B12,B13,…,B21,B22,B23,…}
如上所述,可检测相机的运动方向。为了简单起见,假设静态对象是场景,并且相机运动在x方向上,对应于图像矩阵中的后缀j。结果,可以计算这两个图像之间的像素的关联,用于j方向上的像素偏移。应当注意,本文描述的相同公式、方法可通过使用矢量投影的外插应用于运动对象。
通过取图像B中的偏移像素与图像A中未偏移像素之间的差来计算每个像素的关联。计算仅需要达到测量的运动可能产生的像素的最大偏移,对应于距离相机例如5厘米的最近距离的对象。通过将该最大像素偏移设为N(峰值关联),第一列和第一行像素的关联阵列由下式给出:
C11={B11-A11,B12-A11,B13-A11,...B1N-A11,B1N+1-A11}
该阵列将在对应于由相机运动引起的图像中的偏移的某个像素偏移处具有最小值。一个合适的算法可通过检测最小值并计数阵列中的位置确定这个偏移是什么。出于本说明书的目的,这可被称为数字X 11。
通常,每个像素的阵列由下式给出:
Cij={Bij-Aij,Bij+1-Aij,Bij+2-Aij,…Bij+N-Aij}
该阵列中的最小值由位置Xij给出。
然后可创建矩阵X:
X={X 11,X 12,X 13,...,X 21,X 22,X 23,...}
可对该矩阵进行过滤以消除多余的噪声。例如,颜色矩阵可用于确定一个对象从哪里开始,另一个从哪里开始,有助于确定深度的变化是否是真实的。这些像素偏移间接地提供关于场景/图像中的每个像素的深度的信息。该像素的深度越大,偏移越小,反之亦然,即,该像素的深度越小,偏移越大。
此外,还可以根据其他实施例来利用像素模糊。在这种情况下,可将锐度分数分配给图像的区域并与曝光期间记录的运动进行比较。由此,也可计算每个像素的深度。也就是说,用户可专注于对象并拍摄图片。在对象的不同点上会有不同程度的模糊,例如,对于弯曲的对象,靠近相机的方面可能会有更多的模糊,而距离较远的对象的方面将具有更少的模糊,这取决于焦点。因此,可分析跨越图像的锐度以确定像素的深度。
图8是示出根据各种实施例的经由模糊计算来确定像素深度而执行的实例处理的操作流程图。在操作80,在相机的横向运动期间用相机捕获图像。再次,根据本实施例,在3D成像中仅使用单个相机,并且“横向”运动或移动的概念是指在X-Y平面中的运动。其他运动如俯仰、偏航和滚动都可被OIS操作有效地消除。这种横向运动可以是圆周运动、来回运动或者简单地在XY平面内水平、垂直、对角地等等移位/移动相机,这样的运动可以是用户确定的,或者可用关于对相机做出什么横向运动的指令来提示用户。
在操作82,计算横向运动的量。在曝光期间跟踪相机的横向运动(例如,在单个快门周期期间)。在操作84,横向运动的方向也被确定。在操作86,对所确定的运动方向上对每个像素进行评分或以其他方式确定模糊度的计算(或者可替代地,锐度,因为模糊可能被认为是锐度的“倒数”或其缺乏))。在操作88,基于所计算的模糊以及横向运动的量和方向来计算每个像素的距离。应当注意,该方法还可包括在确定像素深度之后执行算法以校正模糊或锐度的缺乏。
即使在某些情况下,模糊可能是最小的,导致较小的深度差异,仍然可估计距离。在通常可以使用OIS去除模糊的情况下,由于各种实施例使用3轴OIS,所以由于与距离相关的横向运动,仍然会有一些模糊。应该注意的是,拍摄具有较长曝光的图像可产生更大的像素偏移,该偏移可在进行上述计算以实现更精确的像素深度信息时被利用。这能够以不那么锐利的图像为代价而达到,但锐度可通过后处理来解决,以便在最终图像中数字移除模糊。
图9示出了深度测量的实例。如果x是两个捕获的图像之间的相机运动的幅度,则d可以是照亮实际像素的点光源的深度,θ1可以是第一图像中像素的角度位置,θ2可以是第二图像中像素的角度位置。应当注意,为了简单起见,本文公开了单点照明源以根据各种实施例描述像素深度计算的概念。但是,在可以从任何对象表面(例如,分布式光源或反光器)照射光和/或从任何对象表面反射光的实际图像中,可应用相同或相似的概念。另外,在本文公开的技术的情境中的点光源可被认为是生成照亮像素的光的场景中的对象的部分的深度。于是深度d可通过以下公式计算:
d=x/(tanθ2-tanθ1)
两个角度的切线差与偏移X相关如下:
tanθ2-tanθ1=X*(p/f)
其中p是每个像素的大小,f是相机透镜的有效焦距。
连接这两个等式,可使用以下公式计算每个像素的深度dij:
dij=(x/Xij)*(f/p)
例如,如果相机的焦距f为5mm,像素尺寸p为1.2μm,则相机运动x为6cm,像素偏移Xij为50像素,该像素dij处的深度为5米。
然后深度矩阵由下式给出:
D={d11,d12,d13,d21,d22,d23,...}
因此,可计算每个像素处的深度并将其保存为所捕获图像的一部分。如上所述,所得到的像素深度图可被创建并与所选择的图像组合以创建3D图像。
如前所述,可使用其他相机参数来计算深度。例如,焦距和像素尺寸与视场和图像传感器尺寸相关。
尽管迄今为止描述的各种实施例公开了通过使用OIS以基本上相同的有效取向捕获图像的方法(尽管OIS的一些方法将相机保持在相同取向,其他OIS方法允许相机改变取向,但是基本上补偿了透镜或图像传感器的运动),这不是必需的。在捕获多张照片期间与相机的取向相关的实施例的实例如下。根据一个实施例,可在捕获图像之间有目的地改变视角。例如,如果物体非常近,则可能期望改变相机的观看/指向角度。在这种情况下,与这种取向改变相关的像素偏移将在像素关联期间被考虑,以确保像素偏移不被错误地归因于深度。
根据另一个实施例,可允许视角改变。在这种情况下,视角的变化将由上述传感器/陀螺仪跟踪,并且可从确定每个像素的深度的像素关联中减去相关的像素偏移。另外,可允许视角改变一些,但是被校正为像素的特定倍数,以便将由取向变化引起的偏移保持为像素的整数倍。进一步地,视角可允许在一个方向上改变,但是通过OIS在另一个方向上被修正。例如,可允许俯仰和偏航的偏移,但是滚动中的任何偏移被校正。这在某些情况下可能是有利的,因为垂直和水平的像素偏移比“滚动”方向上的旋转偏移更容易算法上解决。可替代地,可允许滚动并进行俯仰和偏航校正,或其任何其它组合。
图10示出了其中可实现本文公开的技术的实施例的芯片组/计算模块90。芯片组90可包括例如处理器、存储器和并入一个或多个物理封装中的附加图像组件。作为实例,物理封装包括在结构组件(例如,底板)上的一种或多种材料、部件和/或电线的布置,以提供一个或多个特性,诸如物理强度、尺寸保持和/或电交互的限制。
在一个实施例中,芯片组90包括通信机构,诸如用于在芯片组90的部件之间传递信息的总线92。诸如图像处理器的处理器94具有到总线92的连接以执行指令并处理存储在存储器96中的信息。处理器可包括一个或多个处理核,其中每个核被配置为独立地执行。可替代地或另外,处理器可包括经由总线92串联配置的一个或多个微处理器,以实现指令、流水线和多线程的独立执行。处理器94还可伴随有一个或多个专门的组件来执行某些处理功能和任务,诸如一个或多个数字信号处理器,例如DSP 98,诸如OIS DSP、图像传感器、OIS陀螺仪和/或一个或多个专用集成电路(IC)(ASIC)100,诸如可用于例如驱动MEMS致动器以实现OIS、缩放和/或AF功能。通常可将DSP 98配置成独立于处理器94实时地处理真实世界信号(例如,声音)。类似地,ASIC 100可被配置为执行不容易由通用目的处理器执行的专用功能。有助于执行本文所描述的发明功能的其它专用组件包括一个或多个现场可编程门阵列(FPGA)(未示出)、一个或多个控制器(未示出)或一个或多个其他专用计算机芯片。
上述组件通过总线92具有到存储器96的连接。存储器96包括动态存储器(例如,RAM)和静态存储器(例如,ROM),用于存储可执行指令,该指令当由处理器94、DSP 98和/或ASIC 100执行时,执行本文所述的实例实施例的过程。存储器96还存储与执行过程相关联的或由执行过程生成的数据。
如本文所使用的,术语模块可描述可根据本申请的一个或多个实施例执行的给定功能单元。如本文所使用的,可使用任何形式的硬件、软件或其组合来实现模块。例如,可实现一个或多个处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑组件、软件程序或其他机制来组成模块。在实现中,本文描述的各种模块可被实现为离散模块,或者所描述的功能和特征可在一个或多个模块中部分或全部共享。换句话说,如本领域的技术人员在阅读本说明书所明显的那样,本文描述的各种特征和功能可在任何给定的应用中实现,并且可以以各种组合和排列在一个或多个单独的或共享的模块中实现。尽管功能的各种特征或元件可被单独描述或要求为单独的模块,但是本领域的技术人员将理解,这些特征和功能可在一个或多个通用软件和硬件元件之间共享,并且这样的描述不应要求或暗示使用单独的硬件或软件组件来实现这些特征或功能。
在应用的组件或模块全部或部分使用软件实现的情况下,在一个实施例中,这些软件元件可被实现为与能够执行所描述的与之相关的功能的计算或处理模块一起操作。一个这样的实例计算模块在图10中示出。根据该实例计算模块90描述各种实施例。在阅读本说明书之后,如何使用其他计算模块或架构实现应用对于本领域的技术人员将变得显而易见。
在本文中,术语“计算机程序介质”和“计算机可用介质”用于通常指暂时性的或非暂时性介质,诸如例如存储器96或其他存储/储备单元。这些和其他各种形式的计算机程序介质或计算机可用介质可涉及将一个或多个指令的一个或多个序列携带到处理装置以供执行。在介质上体现的这种指令通常被称为“计算机程序代码”或“计算机程序产品”(其可以以计算机程序或其他分组的形式分组)。当被执行时,这样的指令可使得计算模块90能够执行如本文所讨论的本申请的特征或功能。
虽然上面已经描述了所公开的方法和装置的各种实施例,但是应当理解的是,它们仅作为实例而不是限制地呈现。类似地,各种图可描绘所公开的方法和装置的实例架构或其他配置,其实现以帮助理解可包括在所公开的方法和装置中的特征和功能。所公开的方法和装置不限于所示实例架构或配置,而是可使用各种替代架构和配置来实现期望的特征。实际上,对于本领域的技术人员来说显而易见的是,可以如何实现替代的功能、逻辑或物理分区和配置来实现所公开的方法和装置的期望特征。此外,除了本文所描绘的那些之外的许多不同的组成模块名称可应用于各个分区。另外,关于流程图、操作描述和方法权利要求书,本文中呈现步骤的顺序不应要求实施各种实施例以相同的顺序执行所述功能,除非上下文另有规定。
虽然上面根据各种示例性实施例和实现方式描述了所公开的方法和装置,但是应当理解,在一个或多个单独实施例中描述的各种特征、方面和功能不限于它们对它们被描述的特定实施例的应用,而是可单独地或以各种组合方式应用于所公开的方法和装置的一个或多个其他实施例,无论这些实施例是否被描述,以及这些特征是否被呈现为所描述的实施例的一部分。因此,所要求保护的发明的广度和范围不应受任何上述示例性实施例的限制。
除非另有明确说明,否则本文档中使用的术语和短语及其变体应解释为无终止的,而不是限制性的。作为上述的例子:术语“包括”应被视为“包括但不限于”等;术语“实例”用于提供讨论中的项目的示例性实例,而不是详尽的或限制性的列表;术语“一”应该被视为“至少一个”、“一个或多个”等;诸如“常规”、“传统”、“正常”、标准”、“已知”和类似含义的术语的形容词不应被解释为将描述的项目限制在给定时间段内,或给定时间可获得的项,而应该被视为涵盖现在或在将来的任何时间可获得或已知的常规的、传统的、正常的或标准的技术。同样地,在本文件涉及对于本领域的技术人员来说是明显的或已知的技术的情况下,这些技术包括技术人员现在或未来任何时候明显的或已知的技术。
与连词“和”相关联的一组项目不应被视为要求这些项目中的每一个都存在于分组中,而应该被视为“和/或”,除非另有明确说明。同样地,与连词“或”相关联的一组项目不应被视为要求该组之间相互排斥,而应被视为“和/或”,除非另有明确说明。此外,虽然所公开的方法和装置的项目、元件或组件可以单数描述或要求保护,但是复数被认为在其范围内,除非明确说明限制为单数。
在某些情况下,扩展单词和短语,诸如“一个或多个”、“至少”“但不限于”或其他类似短语,的存在不应被视为意味着在这种扩展短语缺乏的情况下旨在或要求的较窄情况。术语“模块”的使用并不意味着作为模块的一部分描述或要求保护的组件或功能都被配置在通用包中。实际上,模块的各种组件(无论是控制逻辑还是其他组件)中的任何一个或全部可组合在一个单独的组件中或单独维护,并且可进一步分布在多个分组或软件包中或跨多个位置。
另外,根据示例性框图、流程图和其他图示来描述本文阐述的各种实施例。在阅读本文件之后,对本领域的技术人员将显而易见的是,可在不限于所示实例的情况下实现所示实施例及其各种替代方案。例如,框图及其附带的描述不应被解释为强制特定架构或配置。