CN109618090B - 对通过使用广角透镜捕获的图像的图像失真校正的方法和*** - Google Patents

对通过使用广角透镜捕获的图像的图像失真校正的方法和*** Download PDF

Info

Publication number
CN109618090B
CN109618090B CN201811157897.3A CN201811157897A CN109618090B CN 109618090 B CN109618090 B CN 109618090B CN 201811157897 A CN201811157897 A CN 201811157897A CN 109618090 B CN109618090 B CN 109618090B
Authority
CN
China
Prior art keywords
image
distortion
homography
pixel
undistorted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811157897.3A
Other languages
English (en)
Other versions
CN109618090A (zh
Inventor
A·贝里克
K·普利
N·扬科奇维
Z·日夫科维奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taihao Research Co ltd
Original Assignee
Taihao Research Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/724,993 external-priority patent/US10572982B2/en
Application filed by Taihao Research Co ltd filed Critical Taihao Research Co ltd
Publication of CN109618090A publication Critical patent/CN109618090A/zh
Application granted granted Critical
Publication of CN109618090B publication Critical patent/CN109618090B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

涉及用于通过使用广角透镜捕获的图像的图像失真校正的技术包括使用基于半径比率的查找表的单应性和透镜失真校正。

Description

对通过使用广角透镜捕获的图像的图像失真校正的方法和 ***
背景技术
在数字相机中,广角透镜可以用于使用60度以上的视场(FOV)(对于普通广角透镜)以及甚至大于180度以上的FOV(对于超广角透镜)捕获广阔全景图片。角度在相机的焦点处居中。可以在专用相机、智能电话、数字安防监控(DSS)设备、车载相机以及具有相机的很多其它电子设备上发现这些透镜。广角透镜初始地提供失真图像,其中,图像上的对象显现为具有不真实的形状。例如,具有平坦表面的对象显现为弯曲的,并且其它对象具有异常的扭曲形状。这些常规广角透镜相机具有图像处理单元(IPU),其校正图像中的失真。这些相机IPU在校正失真的同时平衡很多要求。失真校正应足够精确,以在也提供高性能的同时提供高质量,从而可以在通过相对低的功耗执行这些计算的同时实时提供图像以满足视频回放或传输要求等,从而可以在具有低功率容量的小形设备上执行失真校正。甚至通过使用硬件加速解决方案执行失真校正的常规***可以提供足够的性能以及低功耗,但一般也无法提供良好质量图像。
附图说明
在附图中通过示例的方式而非通过限制的方式示出本文所描述的材料。为了说明的简明性和清楚性,附图所示的要素不一定按比例绘制。例如,为了清楚,一些要素的尺寸可以相对于其它要素夸大。此外,在认为适当的情况下,标号已经在附图之间重复,以指示对应或类似要素。在附图中:
图1是具有桶形失真的输入图像的示意图;
图2是校正图1的图像的输出无失真图像的示意图;
图3是输入桶形失真图像的图片;
图4是校正图3的输入图像的输出无失真图像的图片;
图5是示出用于桶形失真的常规失真校正方法的图像点的所得图案的无失真已校正图像的示意图;
图6是常规透镜失真校正方法的示意性流程图;
图7是示出针对桶形失真的常规失真校正方法以及根据本文所公开的实现方式中的至少一个的失真校正方法二者的图像点的所得图案的无失真已校正图像的示意图;
图8是图7的图像点图案的特写的示意图;
图9是示出单应性透镜失真校正方法和常规双线性内插透镜失真校正的图像点之间的误差的图线;
图10A是示出根据本文所公开的至少一个实现方式的使用半径比率查找表的用于广角透镜相机的失真校正的示例方法的流程图;
图10B是示出根据本文所公开的至少一个实现方式的使用单应性和非单应性透镜失真校正的用于广角透镜相机的失真校正的示例方法的流程图;
图11是示出用于形成半径比率并且源自本文所描述的至少一个实现方式的应用的失真曲线的样条内插的图线。
图12是根据本文的至少一个实现方式的用以解释半径比率的线性内插的示图;
图13是待通过单应性校正为矩形的输入失真图像的非矩形四边形的图形示图;
图14是划分为块的输入失真图像的非矩形四边形;
图15是划分为块的矩形无失真输出图像网格;
图16是划分为块并且示出块内的像素位置的输出图像的部分的示意图;
图17是划分为块并且示出块内的内插位置的失真输入图像的部分的示意图;
图18是根据本文的至少一个实现方式的用于执行用于广角透镜的失真校正方法的图像处理设备的示意图;
图19A-图19C是示出根据本文所公开的至少一个实现方式的用于广角透镜相机的组合式透镜失真校正(LDC)和单应性失真校正的示例详细方法的流程图;
图20是根据本文的至少一个实现方式的用于解释组合式透镜失真校正(LDC)和单应性失真校正方法的示例的输出块以及输出块上所覆盖的输入四角形的示意图;
图21是示出根据本文的至少一个实现方式的匹配图20的输出块的像素位置并且归因于单应性的中间图像点位置的示图;
图22是示出根据本文的至少一个实现方式的与图21的中间位置对应的并且通过使用LDC确定的输入失真和弯曲四角形以及输入失真图像点位置的示图;
图23是示出通过360度透镜形成的并且具有球面坐标中的图像点的输入图像的输入块的示意图;
图24是示出根据本文的至少一个实现方式的具有输出块并且具有笛卡尔坐标的已校正的解扭曲的输出块网格的示意图;
图25是根据本文的至少一个实现方式的用于解释坐标转换的360度输入图像的示意图;
图26是示出当形成用于图像失真校正的半径比率时的所公开的内插曲线方法与常规线性曲线方法之间的差异的用于桶形失真的失真曲线的图线;
图27是使用常规失真校正方法的关于桶形失真的每块的平均误差的图线;
图28是使用根据本文的至少一个实现方式的失真校正方法的关于桶形失真的每块的平均误差的图线;
图29是使用常规失真校正方法的关于桶形失真的每块的最大误差的图线;
图30是使用根据本文的至少一个实现方式的失真校正方法的关于桶形失真的每块的最大误差的图线;
图31是示出当形成用于图像失真校正的半径比率时的所公开的内插曲线方法与常规线性曲线方法之间的差异的用于胡形失真的失真曲线的图线;
图32是示出针对胡形失真的转角块的常规失真校正方法以及根据本文所公开的至少一个实现方式的失真校正方法二者的图像点的所得图案的无失真已校正图像的示意图;
图33是图32的图像点图案的特写的示意图;
图34是示出针对胡形失真中心块的常规失真校正方法以及根据本文所公开的至少一个实现方式的失真校正方法二者的图像点的所得图案的无失真已校正图像的示意图;
图35是图34的图像点图案的特写的示意图;
图36是使用常规失真校正方法的关于胡形失真的每块的平均误差的图线;
图37是使用根据本文的至少一个实现方式的失真校正方法的关于胡形失真的每块的平均误差的图线;
图38是使用常规失真校正方法的关于胡形失真的每块的最大误差的图线;
图39是使用根据本文的至少一个实现方式的失真校正方法的关于胡形失真的每块的最大误差的图线;
图40是根据本文的至少一个实现方式的用于提供用于广角透镜的失真校正的示例***的说明性示图;
图41是示例***的说明性示图;以及
图42示出全部根据本公开的至少一些实现方式所布置的示例设备。
具体实施方式
现参照附图描述一个或多个实现方式。虽然讨论特定配置和布置,但应理解,仅为了说明的目的而执行该操作。本领域技术人员应理解,在不脱离说明书的精神和范围的情况下,可以采用其它配置和布置。本领域技术人员应理解,也可以在除了本文所描述的之外的各种其它***和应用中采用本文所描述的技术和/或布置。
虽然以下描述阐述可以例如在架构(例如片上***(SoC)架构)中显现的各个实现方式,但本文所描述的技术和/或布置的实现方式不限于特定架构和/或计算***,并且可以通过用于相似目的的任何架构和/或计算***(包括均使用一个或多个图像信号处理器(ISP)的一个或多个图像处理单元(IPU))得以实现。例如,采用例如多个集成电路(IC)芯片和/或封装的各种架构和/或各种计算设备和/或消费者电子(CE)设备(例如图像捕获设备、数字相机、智能电话、网络相机、视频游戏面板、控制台、机顶盒、平板、膝上型设备、DSS***、车辆视觉和/或运动传感器***等)可以实现本文所描述的技术和/或布置。此外,虽然以下描述可以阐述大量具体细节(例如***组件的逻辑实现方式、类型和相互关系、逻辑分区/集成选取等),但可以在没有这些具体细节的情况下实践所要求的主题。在其它实例中,为了不模糊本文所公开的材料,可以并不详细地示出一些材料(例如控制结构和完整软件指令序列)。可以在硬件、固件、软件或其任何组合中实现本文所公开的材料。
本文所公开的材料也可以实现为可以由一个或多个处理器读取并且执行的机器可读介质或存储器上所存储的指令。计算机可读介质可以包括用于存储或发送机器(例如计算设备)可读的形式的信息的任何介质和/或机构。例如,机器可读介质可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质;光存储介质;闪存设备;电、光、声学或其它形式的传输信号(例如载波、红外信号、数字信号等)以及其它介质。在另一形式中,非瞬时性物品(例如非瞬时性计算机可读介质)可以用于以上所提及的任何示例或其它示例,只是其本身不包括瞬时信号。其本身确实包括可以通过“瞬时”方式临时保存数据的除了信号之外的这些元件(例如RAM等)。
说明书中对“一个实现方式”、“实现方式”、“示例实现方式”等的引用指示所描述的实现方式可以包括特定特征、结构或特性,但每一实现方式可以不一定包括该特定特征、结构或特性。此外,这些短语不一定指代同一实现方式。此外,当结合实现方式描述特定特征、结构或特性时,认为结合其它实现方式实现该特征、结构或特征在本领域技术人员的知识内,而无论是否在本文中明确地描述。
本文描述与对通过使用广角透镜捕获的图像的图像失真校正有关的方法、设备、***和物品。
如上所述,一些数字相机具有广角透镜,以捕获非常广阔的全景图像。本文的广角用在提供大于60度的视场角度的普通意义上(除非上下文另外暗示),以包括因透镜的曲率和相对短的焦点而初始地捕获失真图像的任何相机透镜。具有大约60至180度的视场的广角透镜可以在本文中称为普通或平常广角,而大于大约180度可以称为超广角,并且可以包括具有鱼眼透镜、360度相机透镜等的相机。这些透镜提供具有大几何失真的图像,其一般需要被校正以提供场景的真实平坦的和/或矩形的图像,从而场景中的对象对于观看场景的用户或使用对象在图像上的位置以执行测量(例如深度)的自动化***看上去是正常的,具有真实尺寸。例如,以网格形式示出的图像100(图1)是使用广角透镜从相机捕获的并且产生失真的桶形形状的图像,而图像200(图2)示出网格形式的并且可以在图像100的失真校正之后得到的图像100的无失真的并且期望的状况。在图像100上可见,网格线的交点处的像素位置例如需要移动,以形成无失真图像200。还示出桶形失真中的输入失真图像300的图片(图3)以及校正图像300的输出已校正的并且无失真的图像400(图4)。
典型地关于所谓的TV失真或标准移动成像架构(SMIA)TV失真表示失真量值。对于普通广角透镜相机的典型要求是至少支持上至180度视场(FOV)的30-40%SMIA TV失真以及关于具有大于180度的视野的鱼眼类型透镜的50%SMIA TV失真。通过以失真图像的左侧高度和右侧高度的平均值(A)减去失真图像的中心的高度(B)并且然后将该差除以(B)来测量失真的SMIA百分比:100(A–B)/B。为了高成像质量,所需的高精度纠正处于失真像素位置与正确的无失真像素位置之间的0.1像素位置差的量级中(本文简称为0.1像素)。
参照图5,常规透镜失真校正(LDC)使用分片线性(Pwl)内插将图像上的像素的块划分为内插位置。确定内插的像素位置(或更具体地说,像素位置处的图像点),从而它们在所有像素行上以及在所有像素列上距彼此等距,如全局失真校正映射(或网格)的形式的图像500所示,其中,无失真图像点放置在像素位置502处(为了清楚,像素位置处的一些示例图像点已经暗化)。以此方式执行LDC在块内引入至少两种误差:曲率误差和单应性误差。
关于曲率误差,当失真甚至是中等的时,常规已校正和无失真的位置已经是不正确的,因为它们并不服从无失真图像中剩余的来自失真图像的像素行和列的减少的曲率,而是保持它。在校正之后的无失真图像中的真实行和列不一定是理想地线性的。例如,矩形虚拟框(cardboard box)的立视图在失真图像中可以具有失真的曲率。这指代应当处于规则图像中的单个线性行中的像素中但现在在广角失真图像中显著地弯曲的用于各像素的图像点的色彩和亮度。理想地,在已校正的无失真图像中,框仍然可以具有带有稍微曲线(并且跨越屏幕的实际线性像素网格位置行)的色彩和亮度图像点的行,使得框对于观看显示屏幕上的无失真图像的人眼看起来是真实并且线性的。当常规失真校正强制像素数据进入等距线性像素位置中而非自然稍微曲线时,归因于转换函数和内插算法,例如,框实际上可能看起来是不真实并且低质量的。
参照图6,曲率误差产生的一个原因是归因于用以执行分片线性内插并且产生图像点位置的等距间隔的失真算法的限制。更具体地说,提供基于半径比率的常规透镜失真处理600,以解释曲率误差。可以接收失真输入图像602,并且在此示出于桶形失真中。可以获得(604)并且关于各透镜(或相机)预先确定失真转换系数K0和K1。然后在转换操作606期间在将图像失真呈现为径向失真的转换算法中使用系数。径向失真是图像沿着从失真中心614到所考虑的图像点616的径向方向的畸变。其形成失真图像602上所示的径向失真Rd
转换的目的是确定可以执行从失真图像602到无失真图像608的映射的函数。一种方式由Frederic Devernay,Olivier Faugeras公开,“Straight lines have to bestraight:automatic calibration and removal of distortion from scenes ofstructured environments”,Machine Vision and Applications,Springer Verlag,2001,13(1),pp.14-24,其建议使用3阶函数作为映射参考。该常规方法通过以下操作对失真进行描述并且量化:定义失真半径Rd与无失真图像608上的对应无失真半径Ru之间的比率,无失真图像608上的对应无失真半径Ru从无失真输出网格(或图像)608上的失真中心618(其为与失真图像602上的失真中心614相同的图像位置)延伸并且延伸到与失真图像602上的图像点616对应的对应像素网格位置620。其可以包括三阶多项式公式,例如:
Rd=K0x Ru+K1x Ru 3(1)
其中,给定用于失真图像上的图像点的特定Rd,可以计算Ru,以将图像点匹配于输出无失真网格(或图像)上的像素位置。公式可以用以计算指示在失真图像上何处取得用于无失真图像上的当前像素位置的像素数据以校正图像失真的影响的图像坐标。
然而,尤其是对于高于大约15%SMIA TV的失真,通过使用3阶多项式函数不能实现期望的精度。用于控制失真曲线的可用自由度是不足的。通过在不同类型的失真(包括胡形失真)的情况下进行实验,这是显著的。使用更高阶可以改进该情况,但可能导致关于将输出网格上的无失真曲线匹配于实际失真的复杂计算,并且因此,实现方式将因为更大的所需计算量而更昂贵。
参照图7-图8,例如,无失真图像700中的虚线矩形704通过常规的基于半径比率的透镜失真校正方法表示对象702的包围框,而圆点或图像点(以及像素位置)表示本文所公开的失真校正LDC(没有单应性)方法的结果,其非常接近实际的、正确的、或基本真实(ground truth)的无失真图像点位置。在像素位置706的弯曲的图像点行处于通过常规失真校正方法建立的框或对象702的外部上的情况下,误差是清晰可见的。图8示出用于更清楚地示出该误差的特写的图像700。
根据小的或中等的失真(例如10%的SMIA TV失真)提供这些附图。这种仅10%SMIA TV的相当小的失真产生0.8像素(平均)以及1.2像素(最大误差)的不可接受的误差。当该失真很大(~50%SMIA TV失真)时,已经发现误差达到4.8像素(平均)以及7.2像素(最大误差),提供低的。
除了常规的基于半径比率的方法之外,当多个应用需要所得无失真图像的精度时(这在以上称为单应性误差),添加更精确的单应性变换将提升该精度。一些应用需要准确的无失真图像点位置,以提供良好质量图像或结果(例如除了透镜失真校正之外还可以执行的立体纠正以及数字视频稳定(DVS))。更具体地说,当设备具有多个相机(RGB类型和/或红外(IR)投影仪类型,仅举少数示例)以测量深度时,执行立体纠正。来自多个相机的图像通过彼此而被纠正,或换言之,通过使用算法(例如三角测量法等),一个图像上的点匹配于一个或多个其它图像上的点。纠正后的图像然后可以用以形成3D空间,以定位和/或测量3D空间内的对象。
作为一种类型的图像稳定(IS)并且可以称为数字图像稳定(DIS)或电子图像稳定(EIS)的DVS典型地采用特征***,以恢复图像平面(2D)运动或提取潜在(3D)相机运动。低通滤波器可以应用于所恢复的运动,并且新的视频通过沿着该平滑路径合成帧而得以生成。DVS也可以包括:缓冲相机帧的外边界附近或外部的图像数据,以在相机摇动的情况下使得图像数据就绪,这样在帧(或图像)中***初始地处于帧的外部的图像数据的区域。当广角透镜用以捕获图像时,所有这些技术严重依赖于无失真已校正图像数据的精度。如所提及的那样,LDC单独一般无法提供具有足够高质量的图像以使得这些应用可以按高精度等级进行操作,或提供高质量图像自身。应注意,术语帧、图像和图片在本文中可互换地使用。
与LDC相比,单应性提供内插点的不同的、更精确的分布,并且可以实现两个平面(例如失真图像或帧与无失真图像或帧)之间的几何变换的真实数学描述。因此,单应性是帧纠正的形式。因此,如果相机正观测特定表面,则通过单应性附加地变换转换后的无失真图像,并且所得图像应如此准确,从而其可以用作表面的另一虚拟视点,一般通过立体相机和DVS执行该操作。
可以通过多种不同方式估计单应性变换。作为一个示例,估计单应性可以包括:使得一个图像(失真图像)上的图像点与无失真图像上的候选像素位置之间的像素网格位置的平方差之和最小化,例如,并且通过使用多个自由度(或方向有关矩阵)系数或参数,如下所述。
参照图9,计算并且在图表900上示出常规双线性内插失真校正与基于单应性的失真校正之间的误差。误差表示为所需内插点与当前双线性内插点之间的以像素为单位的距离(假设32x128输入图像块),并且图表基于划分为32x128的块的512x512的整个图像。轴的X和Y位置是无失真图像的像素位置。源自缺少单应性支持的误差包括上至大约2个像素的误差值的范围,如所示。所得图案示出四个128像素宽的块在中间块中具有最大误差。
关于在LDC期间的硬件实现方式,并且对于多个计算机功能(例如即插即用、实时视频观看以及智能电话上的传输)例如,速度和低功耗二者也是重要的。然而,一些常规IPU解决方案依赖于CPU以用于显著量的失真校正计算(例如,计算上述无失真半径),这样例如当SoC掌控IPU时提升总体SoC功耗。作为一种形式,性能要求是以60fps的速率处理4K分辨率图像以提供实时视频,同时预期这些要求在未来将急剧地增加。当先前解决方案使用对于执行图像处理和失真校正以实现这些目标而预留的具有SoC上的硬件块的图像处理单元(IPU)时,可以满足功率和速度要求,但图像质量要求仍不够。
为了解决这些问题,本文的广角透镜失真校正方法提供:(a)用于满足关于图像质量的需求的高精度,(b)用于满足对于像素吞吐量的高性能,以及(c)小型设备可以维持并且支持合理的电池寿命的功率包络中保留的低功耗,由此改进计算设备的功能。本文的失真校正方法精确地并且以硬件高效方式确定待内插的像素的位置。本文所公开的用以执行失真校正的内插精确地服从实际物理失真的曲率,并且考虑单应性。本文所使用的失真校正***和方法比常规失真校正方法高效得多,提供高图像质量以及关于实时实现方式(例如即插即用(PnP))的良好性能。此外,例如,通过使用用于LDC的预定半径比率查找表而非使用CPU以计算无失真半径并且确定半径比率,同样显著地减少功率容量。如下所述在单个变换中组合LDC方法和单应性也有益地减少用于需要单应性的精度的那些应用的功耗。最后,通过添加将球形坐标转换为笛卡尔坐标的阶段,该方法还涵盖超广角透镜(例如鱼眼透镜以及甚至360度类型的相机透镜),如下所述。
与现有解决方案相比,本解决方案产生量值更小的误差(平均和最大二者)的量级。已经发现,通过本文所公开的方法,具有大失真(~50%SMIA TV失真)的图像产生0.0018像素(平均)以及0.003像素(最大误差),而现有解决方案产生4.8像素(平均)以及7.2像素(最大误差),如上所述。对于具有小失真(~10%SMIA TV失真)的图像,本解决方案通过本文所公开的方法产生0.0003像素(平均)以及0.0005像素(最大误差),而现有解决方案产生0.8像素(平均)和1.2像素(最大误差),也如上所述。因此,本文的解决方案在考虑基于半径比率的透镜失真校正和单应性二者的同时将内插位置误差减少为小于0.1像素(平均和最大)。
参照图10A,根据本公开的至少一些实现方式并且具体地对于使用查找表以确定用于透镜失真校正(LDC)的半径比率而布置用于关于广角透镜的图像失真校正的示例处理1000。处理1000可以包括一个或多个偶数编号的操作1002至1012。通过非限定性示例的方式,处理1000可以形成用于本文所讨论的以及有关的***1800和/或4000的图像失真校正处理的至少部分。
处理1000可以包括“接收场景的因广角相机透镜而失真的至少一个失真图像上的图像点的位置数据”(1002)。这称为因使用广角透镜(其可以是普通广角透镜或超广角、鱼眼、360度等,如本文所描述的那样)而失真的场景的图像数据。位置数据可以包括失真图像中的图像点的位置,并且数据可以至少充分地受预处理,以执行失真校正。作为一种形式,可以按逐块的方式(例如,通过覆盖失真图像的32x128像素的区域)提供图像数据位置。
处理1000可以包括“接收将要用于形成示出场景的无失真图像的无失真像素网格的像素位置”(1004)。相机或***可以具有带有将要匹配于失真图像上的图像点位置的已知像素位置的预先设置的无失真像素网格。作为一种形式,在块(例如32x128像素)中提供它们。
处理1000可以包括“确定从失真中心延伸到失真图像上的各图像点位置或无失真像素网格上的像素位置的半径”(1006)。在此,要么半径从失真图像上的失真中心延伸并且延伸到失真图像上的各图像点位置(如上所述的Rd),要么半径从投影到无失真像素网格上的失真中心延伸并且延伸到无失真像素网格上的像素位置(如上所述的Ru)。虽然本文的示例使用Ru作为独立变量,但可以改为使用Rd
处理1000可以包括“通过使用至少一个半径在查找表(LUT)上查找比率来获得失真半径值与无失真半径值之间的比率”(1008)。因此,当LUT设置为输入Ru时,LUT输出Rd与Ru的比率,以用在公式中,以确定正确的Rd分量,如以下详述的那样。如所提及的那样,这可以是与如下相反的方式,其中,Rd输入到LUT,并且输出是Ru与Rd的比率。作为一种形式,对LUT的输入是半径之一的平方,以避免数学迭代平方根运算。为了改进LUT近似的精度,曲线也可以处理为接近二次型。
此外,逐块地使用LUT和预定半径比率允许远更高效地使用硬件(例如专用图形处理单元(GPU)或图像信号处理器(ISP)),因为硬件的大小可以设计成处理按逐块的方式计算最佳半径比率所执行的计算,而非如常规LDC方法所执行的那样按整个图像计算最佳半径比率所执行的计算。
处理1000可以包括“通过使用比率确定像素位置之一与图像点位置中的对应图像点位置之间的对应性,并且针对不同像素位置或图像点位置进行重复,以形成多个对应性”(1010)。在此,应用半径比率,并且可以获得其它所得半径(无论Rd还是Ru),指示与来自正分析的失真图像的特定图像点位置对应的无失真像素网格上的像素位置。作为一种形式,在水平方向和垂直方向二者上分开地获得对应性,以通过在两个公式(一个用于x方向,一个用于y方向)中分开地使用比率提供无失真图像点位置的2D坐标。通过该布置,例如,当失真距离在水平方向和垂直方向二者上并非相同时(例如,当失真比圆形更椭圆时),缩放值可以应用于公式之一。
作为一种方法,所计算的图像点位置应用于单个图像的采样点而非所有图像点。这些采样点可以看作锚定点,并且锚定点之间的图像点可以进行内插。可以首先在样条运算中生成查找表(LUT),并且可以包括要么使用参数化模型要么通过确定以下详细描述的重新投影误差直接使用图像。
处理1000可以包括“通过使用多个对应性将图像数据放置在无失真像素位置上来构造无失真图像”(1012)。因此,通过使用多个单独对应性而通过将来自失真图像的图像点的图像数据放置到无失真像素网格上来重构无失真图像。以下提供更多细节。
参照图10B,另一方法是通过用于关于广角透镜的图像失真校正的示例处理1050来提供的,并且是根据本公开的至少一些实现方式而且具体地关于将单应性与LDC操作进行组合来布置的。处理1050可以包括一个或多个偶数编号的操作1052至1062。通过非限定性示例的方式,处理1050可以形成用于本文所讨论的以及有关的***1800和/或4000的图像失真校正处理的至少部分。
处理1050可以包括“接收场景的因广角相机透镜而失真的至少一个失真图像的图像点的位置数据”(1052),并且该操作如通过处理1000以及本文的其它地方所描述的那样。
处理1050可以包括“接收无失真像素网格的像素位置”(1054),也如上关于处理1000所描述的那样。
处理1050可以包括“使用图像点位置和像素位置执行第一校正操作,以生成中间图像点位置”(1056),并且“使用中间图像点位置执行第二校正操作,以生成形成场景的无失真图像的修改后的图像点位置”(1058)。因此,第一操作执行输入失真图像点位置与输出无失真像素位置之间的初步或初始对应性,其提供中间图像点位置(或初始无失真位置)。第二操作将细化应用于这些中间位置,以提供图像点位置与输出像素网格位置之间的更最终的对应性。这些操作可以是或可以不是连续的,使得同样可以存在细化失真校正操作的其它中间,或其它操作可以发生在这些第一操作和第二操作之前或之后,使得所陈述的第一操作和第二操作无需总是仅失真校正操作并且无需总是连续的。
为了识别可以执行为第一操作和第二操作的特定类型的失真校正操作,处理1050可以包括“执行具有多个系数的基于单应性的失真校正,作为第一操作和第二操作之一”(1060)。该操作包括单应性纠正两个图像。除此之外,替代将单应性应用于两个不同图像形成两个不同相机透视,单应性应用于单个输入失真图像和输出无失真像素网格。该操作包括:使用用于多个自由度的系数的3x3变换矩阵,如以下详细描述的那样。可以例如在消费者进行正常使用之前的校准阶段期间预先确定并且对于每个特定广角透镜确定单应性系数。由于可以使用指示与失真图像与无失真图像之间的所假设的核线(epipolar line)有关的不同方向的多个系数,因此这样提供沿着无失真图像中的基本真实曲率更好地保持图像点的精确得多的校正。
此外,处理1050可以包括“对图像点位置对失真图像上的失真中心的半径执行非单应性透镜失真校正(LDC),作为第一操作和第二操作中的另一个”(1062),并且其可以包括如上所述的处理1000的LDC操作中的一个或多个。如所提及的那样,可以在LDC操作之前或之后执行单应性。只要另一类型的校正技术的第二操作可以细化来自第一操作的那些位置,两者中的哪一个处于第一而且提供初始无失真图像点位置就并不重要。作为一种形式,LDC可以是基于半径比率的LDC,并且通过另一形式,LDC使用半径比率查找表。通过在使用用于LDC的LUT的同时逐块地处理数据,可以使得这种双操作方法高效,从而可以通过非CPU处理器执行处理。以下提供细节。
基于LUT的透镜失真校正(LDC)
现在更详细地,并且如所提及的那样,可以通过使用查找表确定用于基于半径的以及基于LUT的LDC操作并且通过组合LDC与单应性以进一步细化输入失真图像上的图像点与输出无失真图像上的像素位置的匹配来改进失真校正。与硬件的高效使用结合的这些操作在提供良好性能和低功耗的同时显著改进图像的质量。
基于LUT的透镜失真校正(LDC)可以包括初步操作:生成并且存储半径(Rd/Ru)比率的一个或多个查找表(LUT),以用以计算输出像素网格上的无失真图像点位置。这些比率存储在LUT中,以不仅减少用于执行LDC的计算的总量,而且还消除数学除法运算,由此进一步减少获得用于失真校正计算的比率所需的比特。此外,LUT可以是非常有限的大小,以实现硬件高效解决方案。作为一个示例,LUT可以提供用于32至512个点的半径比率。在本文所使用的实现方式中,已经发现256个比率的LUT范围是足够的,并且甚至最极端的失真曲线在该细节等级是平滑的。相对地,从一个点到下一点的陡然改变并不产生。应理解,LUT中的范围与图像中的范围或距失真中心并且沿着半径的像素距离有关。其表示距失真中心的距离的范围。根据期望,范围可以处于像素或子像素(小数或sub-pel)距离中。输入半径和LUT比率的比特深度可以处于16至32比特之间。LUT范围和比特深度都是中等值,带来高效的更低比特实现方式,其可以由***的专用硬件(例如GPU、ISP等,而非CPU)处理。
可以在用于特定相机或用于金相机的校准阶段期间生成LUT,然后使得其对于消费者可用。否则,该LUT可以发送或提供给消费者,以初始地在相机上安装或更新LUT。通过其它选项,LUT保存在服务器或远程计算机上,并且相机以无线或有线方式进行通信,以使用LUT以执行失真校正。例如,当相机具有多个广角透镜时,可以制作多个LUT,包括:一个LUT用于每个透镜。
通过首先基于沿着曲线的锚定比率点的数量确定失真曲线(Rd对Ru)或函数生成LUT。然后,一旦确定函数或锚定比率点,就可以例如通过以下解释的样条内插从它们内插用于LUT的其余比率。用于生成用于LUT的锚定比率点的一种示例方式是使用参数化模型(例如Zhang,Zhengyou所公开的参数化模型,A Flexible New Technique for CameraCalibration,Technical Report MSR-TR-98-71,Microsoft Corp.(1998))。相机用以捕获具有已知几何(通常正方形的网格)的对象的多个图像。然后使用参数化模型通过计算理想相机将如何观测对象来使得失真误差最小化。该操作可以包括:选择图像中的匹配点,并且搜索提供点的位置之间的最佳匹配的几何变换。参数化模型通过提供具有参数集合的函数提供Rd/Ru比率关系,并且然后,LUT可以被填充,以例如通过样条内插使得参数所定义的函数与LUT所提供的值之间的差(例如绝对差之和)最小化。
用于生成用于LUT的锚定点的另一示例方式是直接使用图像细化LUT。所优化的参量可以是“重新投影误差”。见以上引述的Zhang。该操作包括:选择图像中的匹配点,并且搜索LUT值和提供点的位置之间的最佳匹配的3D几何变换的组合。
如所提及的那样,用于生成用于LUT的其余比率的一种示例方法是通过使用样条内插。样条可以定义为:
其中,Rd和Ru定义如上,N是LUT中所提供的比率的数量(并且进而,LUT的范围)。为了确定将要放置在LUT中的比率,***通过输入Ru值和基本真实Rd值二者运行在测试图像上。可以在允许用户使用内插命令高效地并且快速地将失真曲线参数调整为真实失真的数学程序(例如MATLAB)工作环境上执行该操作。一种方法是引入少数滑动条,允许在不同半径点处控制曲线。一旦失真被校正以满足特定最小参数(例如来自真实曲线的最大失真),就使用样条内插对失真曲线进行内插。在此,通过将N设置为1,000,000的超高准度确定基本真实,并且用于确定比率的N中的前五个输入点如下:
输入Ru:[0.00,0.20,0.50,0.8,1.00]
输入Rd:[0.00,0.35,0.65,0.80,0.85]
N=1,000,000
通过选择具有已知预测理想位置的图像中的点并且搜索最佳地描述理想的点位置与所观测的点位置的比率的LUT值来确定以上所示的输入值。
参照图11,图表1100示出在仅关于LUT提及的五个第一点中指定的包括与简单常规分片线性内插相比的Ru与Rd的关系,以示出所计算的失真比率的差。在1兆个点处使用超高精度计算Rd/Ru的失真曲线依赖性的其余点,因此定义图像中的失真的基本真实。也如所提及的那样,此后,N可以设置为256,以用于运行时操作。
为了根据本文的实现方式在正常使用运行时期间执行LDC操作,失真校正***可以按某种设置的顺序(例如光栅扫描顺序)像素位置接像素位置地扫描输出无失真图像(或更准确地说,无失真像素网格)。对于每个输出像素位置(xo,yo)(其中,o指代输出),计算无失真半径Ru。挑战在于寻找输入失真图像处的匹配图像点位置(xi,yi)(其中,i指代输入)或用于失真图像的像素位置网格,并且匹配正分析的输出像素位置(xo,yo)。注意,例如,与作为距失真的中心的距离的(X,Y)坐标对照,像素位置(xo,yo)和(xi,yi)是从图像的左上角测量的图像位置,如以下所解释的那样。
一旦对于各像素位置(xo,yo)确定Ru,Ru就用以在LUT上关于该位置查找半径比率(Rd/Ru)。通过将比率Rd/Ru乘以输出像素网格位置处的各个x、y坐标(xo,yo)以如下确定相对于失真的中心的坐标来确定输入像素位置(xi,yi):
其中,Ru是对LUT的输入:
并且其中,(Xo,Yo)是从失真的中心(Xc,Yc)到(Xo,Yo)的像素位置(xo,yo)的坐标距离。因此,Ru和Rd均可以具有两个分量,并且Rd可以具有通过如下分开地应用半径比率而分开地确定的其分量:
其中,(Xi,Yi)是距输入失真图像上的失真的中心的坐标,其然后可以转换为图像像素坐标(xi,yi)。该操作可以重复n次,一次用于LUT中的每个比率,并且其中,n=0至N-1。
作为一种方法,当失真在来自失真的中心的所有方向上并非相同时,可以在公式(5)或(6)或二者中使用附加缩放参数。具体地说,失真可以是椭圆的或某其它形状,并且不是同心圆,并且为了容纳该情况,附加缩放因子可以乘以x分量或y分量或二者。在此,缩放因子示出为乘以垂直域,并且由以上公式(6)中的Yconst标记。
作为一种方法,可以通过移除平方根计算增加以上公式的实现方式的效率。如果用于Rd/Ru依赖性的独立变量输入表示为Ru 2而非Ru的函数,则可以实现该情况,其中:
Ru 2=Xo 2+Yo 2 (7)
Rd/Ru=LUT(Ru 2) (8)
然而,例如,在可用LUT点之间中的线性内插的情况下,该方法可能导致需要对于较大的地址值提供较大的LUT容量,并且进而每地址更多比特,由此需要更深的LUT以使得足够的精度成为可能。作为替选,通过使用用于计算Ru的迭代方法或其它这些方法,高效平方根实现方式可以是可能的。
在以上公式(例如公式(5)至(8))中,假设在(0,0)处在必要的情况下已经将失真的中心(Xc,Yc)作为因素。然而,当失真的中心不处于(0,0)时,可以通过减去失真的中心处的中心像素位置的坐标来考虑该情况。
(Xo-Xc)2+(Yo-Yc)2 (9)
这是典型地在相机校准期间确定的。
参照图12,LUT结构化的一个示例方式是预先确定用于N个半径比率(又称为LUT点)中的每一个的Ru或Ru 2值。在LUT中可以列出或不列出LUT点处的这些Ru值。当Ru值假设为按特定顺序并且值与LUT点的N个半径比率有关时,可以从LUT省略Ru值的索引化。当实际输入Ru值不匹配LUT点处的预定N个Ru值之一时,如在沿着在LUT中没有与LUT点处的N个半径比率值之一对应的Ru的像素位置之间的失真曲线的很多输出像素位置的情况下将发生的那样,那么***可以从对于N个LUT点所设置的半径比率内插用于当前Ru的半径比率。因此,例如,Rua可以输入到LUT以获得半径比率(Rd/Ru)a,而Rua+1可以输入到LUT,并且输出可以是半径比率(Rd/Ru)a+1(其中,a是计数器变量,因此,在此,a=n=0至N-1)。当期望获得用于沿着Rua与Rua+1的像素位置之间的失真曲线的像素位置处的Ru的半径比率(并且进而Rd)时。内插的半径比率可以计算为:
其中,α是期望的Ru与Rua之间的差,β是期望的Ru与Rua+1之间的差。内插可以通过当可能时使用除了CPU之外的专用或其它硬件并且作为一个示例使用简单线性内插得以执行,但可以通过其它内插算法(例如双线性)得以形成。作为一种形式,对于该线性内插使用用于LUT值的8比特精度,并且具有256的范围的LUT与按八个比特的线性内插的组合发现具有足够的质量。
一旦获得半径比率,并且比率用以按例如以上公式(5)和(6)确定匹配输入失真坐标(Xi,Yi)并且转换为(xi,yi),输入图像点(xi,yi)的像素值(例如,色度和亮度值)就可以基于所提供的位置处所取得的输入像素分配给输出像素位置(xo,yo)。由于可以通过小数(子像素)精度给出输入像素的位置,因此可以使用更高阶内插(例如Lanczos3或双三次)计算子像素输出像素位置,以当必要时实现平滑的输出图片。这表示为:
OutputImage(Xo,Yo)=Interpolate(InputImage,Xi,Yi,) (11)
这是用于实现小数精度的仅一个示例,并且所使用的技术可以独立于所公开的失真校正方法来确定。以下提供这些LDC操作的其它细节。
单应性
单应性典型地用在多个相机立体***上,以记录从不同视角到彼此的多个图像,以形成3D空间或创建与两个所记录的图像中的视角不同的同一场景的视角的图像。然而,在此,以非常不同的方式使用单应性。在此,为了进行单应性以用于失真校正,失真图像上的图像点位置的块可以处理为平面失真形状,以转换为无失真图像上的矩形形状。作为一个示例,失真形状限定失真图像中的四边形(或2D四角形或其它形状),然后使用单应性(通过变换矩阵、线性内插以及其它方法)确定输出像素网格位置,以将四角形转换为输出图像上的矩形。失真形状形成失真图像上的单元或块。形状不一定与图像上正示出的平面对象对应,因为失真与广角透镜失真而非图像自身中的对象有关。单应性可以在应用LDC之前或之后细化内插点的位置。
参照图13-图15,执行初步全局单应性变换,以确定单应性系数(或参数)。全局单应性由参数集合描述,并且参数用以将失真形状变换为正常无失真形状,本文中称为单应性纠正。例如,所选择的输入图像区域1302由图像1300的区段(也示出为图像1400(图14)上的失真平面1402)上的表示为G0、……G3的四个点限定,并且单应性纠正将把那些点变换为图像1500(图15)的区段上的矩形区域1502。在此在该示例,仅为了简明,图像上所示的并且以下所使用的单元是0至1的范围中的坐标。图像可以划分为块,并且每个区域或区段可以是这些块之一,以用于当期望时并且如以下更详细地解释的那样逐块地处理这些区域。每个块具有不同的单应性系数。否则,例如,单个单应性可以覆盖整个图像。
作为一个示例,可以通过使用最小二乘计算全局单应性系数。单应性可以看作:
p’=Hp (12)
其中,p’是输入失真图像,p是输出无失真图像,H是具有八个自由度的3x3单应性变换矩阵(也直接称为单应性H)并且可以计算为:
其中,w是确定为w=h7x+h8y+1的权重,(x’,y’)是失真图像p’上的图像点,并且(x,y)是无失真像素网格或图像p上的匹配的或纠正的像素点,并且如上所述。单应性系数h1至h8均与不同失真校正方向(例如自由度(例如沿着特定轴的平移、相对于中心轴的旋转等))有关,并且可以通过使用测试图像和最小二乘求解:
min‖Ah-b‖2 (14)
其中,h是H的单应性系数的矢量,A是具有无失真像素位置点(x’,y’)的矩阵,b是对应失真图像点(x,y)的矢量。可以执行该操作以计算单应性系数h1至h8中的每一个。然而,不同应用(例如数字视频稳定(DVS)单应性或其它)可以通过不同方式计算单应性系数。单应性系数的一个示例计算的详细解释可见于Hartley和Zisserman,Multiple ViewGeometry in computer vision,Chap.4,Cambridge Univ.Press(2003);以及Computational Photography and Introduction to Computer Vision class,Lecture10,Homographies,Mosaics and Panoramas,MIT,(2008)。
一旦设置单应性系数h1-h8,那么就可以为了关于正使用的关联相机和透镜对于特定一个或多个块校正失真并且取决于应用而使用这些系数。例如,当相机移动或在虚拟视图应用中期望虚拟视图时,可以通过上传新系数修改系数。在立体相机应用的情况下,当需要重新校准***时,可以更新系数。在DVS应用的情况下,可以在相机的每一移动的情况下更新系数。也可以将图像划分为部分并且具有用于图像的每个部分的不同单应性变换。在DVS应用中典型地完成该操作,其中,部分中的单应性用以近似更复杂的图像,和/或其中,需要(解)扭曲操作以用于卷帘式快门相机失真。
失真输入图像中的图像点的坐标xi和yi与具有像素位置的纠正后的无失真(输出像素网格)图像中的坐标xo和yo之间的关系于是可以写为:
当如以下详细描述的那样在LDC之前执行单应性时,这些所得图像点(xi,yi)可以称为内插点(因为它们将与LDC内插的输入图像点位置对应)或中间点(xm,ym),其中,xi=xm并且yi=ym,以然后用以形成对LDC计算的无失真(Ru)输入,如以下详细解释的那样。“m”在本文用以避免混淆并且可以代表修正后的或中间的。公式(15)和(16)也可以称为单应性系数公式。
还应理解,这些操作可以称为逆单应性,因为对单应性系数公式(15)和(16)的输入是输出像素位置,并且结果是中间图像点位置(xm,ym)或输入图像点位置。然后可以通过非单应性LDC细化中间点。作为其它替选,可以改为使用前向单应性。
再次参照图14-图15并且现在也参照图16-图17,作为一种形式,逐块地应用单应性。为了说明的目的,输出图像1500或1600分别划分为4x4个相等图像块1502或1602。输入(或中间)图像1700(图17)上所示的所得输入图像块具有按某种逻辑顺序(例如光栅顺序,但其它顺序是可能的)确定的中间点或内插点。以下提供将单应性与基于LUT的LDC组合的逐块处理中的失真校正的细节。
如上所述,虽然基于LUT的LDC通过归因于添加LUT而减少使用CPU来提升效率,但将基于LUT的LDC与单应性组合提供纠正的图像,其增加失真已校正图像的质量。LDC可以出现在单应性之前或之后,只要第二方法进一步细化第一方法的结果。组合的处理1800和1900的以下示例提供LDC之前的单应性。
参照图18,提供示例图像处理设备或***1800,以实现根据本公开的至少一些实现方式所布置的图像失真校正,并且示出用于对替选透镜类型执行这些操作的替选管线。在一种形式中,图像处理设备1800是成像设备或相机,或具有至少一个相机,并且可以是具有单个类型的相机透镜的智能电话,或可以是或可以具有带有替选透镜的单个相机,或可以是具有均带有不同透镜的多个相机的设备。通过其它方法,图像处理设备1800可以没有相机,并且可以执行用于相机的处理(例如通过WAN(例如互联网)进行通信的无线通信服务器)。
***1800示出用于具有一个管线分支上的FOV 60至180度的普通广角透镜图像以及具有另一管线分支上的从180到360度的FOV的超广角、鱼眼或(360度)类型的图像二者的替选管线中的功能单元的初始顺序。两个管线使用不同操作单元。在普通广角透镜图像的情况下,失真输入图像1802提供给单应性单元1806,其执行图像纠正以细化输出像素网格上的图像点位置,以形成具有中间图像点的矩形或平坦图像1808。LDC单元1810可以执行相对于输出无失真像素网格或图像1812的中间图像点位置的校正。这可以包括使用LUT以提供半径比率以执行本文所描述的校正。
替代地,在超广角透镜(例如360度图像)的情况下,失真输入图像1804可以提供给单应性单元1806,并且可以用于其它广角透镜图像,以提供平坦图像1814。除了现在之外,解扭曲单元1816然后对图像进行解扭曲(或从视觉上说,解扭曲),以形成平坦输出像素网格或图像1818。
当然,超广角透镜当在笛卡尔坐标中提供时可以使用LDC而非解扭曲进行处理。否则,应理解,***1800上所示的单元的顺序仅为一个示例,并且同样可以使用其它顺序。例如,LDC单元和解扭曲单元可以在单应性之前而非在单应性之后执行操作,如所示。此外,除了解扭曲之外,LDC也可以应用于图像。
作为一种形式,设备1800提供单个管线架构,其结构化为分开地启用和/或禁用每个单元,以执行替选管线。例如,当正校正普通广角透镜失真时关闭解扭曲,而对于超广透镜图像校正关闭LDC。可以通过使用映射输出图像中的像素但仍关于径向维度变换使用LUT的不同功能完成该操作。
对于LDC,由于LDC包括对基于LUT、简单线性内插、迭代平方根计算或平方直径Ru查找以及乘以Xo和Yo坐标的像素位置内插的主要关注,因此对硬件所添加的复杂度非常低。因此,具有可以是或可以不是SoC的部分的专用或共享几何失真校正(GDC)块或电路(本文称为GDC硬件)的GPU或ISP可以足以提供处理。
此外,如上所述,除了可以另外由CPU执行的用于首先生成单应性系数的计算之外,相同专用GDC电路可以用于单应性。
解扭曲可以同样由GDC硬件逐块地执行,或可以由CPU执行。
至于存储器的增加,作为一个示例,归因于内插和LUT导致的增加的成本将是256深度的16比特或32比特宽LUT以及总共1KB容量的存储器组。
通过比较要添加的上述硬件元件和现有***,附加面积将是可忽略的。执行图像处理和广角失真校正的一个示例现有***可以已经包括8KB的存储器子***,其基于多个存储器组、~150个寄存器的寄存器文件***、用于系数的双读双写LUT,包括八个存储器组,均为256深并且72比特宽,能够并行产生四个像素的四个相同MAC树,均使用Lanczos3内插方法计算(6*6滤波器占地,每像素36个MAC操作,总共144个)、加上附加管线级、以及控制整个设计的很多FSM。该架构典型地用于图像处理,以显示图像,执行压缩等。
现参照图19A-图19C,根据本公开的至少一些实现方式来布置用于图像失真校正的示例处理1900。处理1900可以包括一个或多个通常偶数编号的操作1902至1962。通过非限定性示例的方式,处理1900可以形成用于本文所讨论的以及有关的成像设备或***1800和4000的图像失真校正处理的至少部分。
处理1900可以包括“获得广角透镜相机图像”1902。图像可以是来自相机的原始传感器数据的形式,并且可以是普通广角透镜图像(从60到180度FOV)或超广角透镜图像(从180到360度图像)。
处理1900可以包括“至少关于失真校正足够地预处理图像”1904。无论通过相机还是其它***,图像都可以至少足够地进行处理,以执行失真校正。这可以包括解马赛克、降噪等。否则,其可以与解马赛克组合,其中,解马赛克的内插任务可以与失真校正操作共享。替代地,对原始数据,并且只要LUT和单应性系数是可用的,就可以执行本文的方法。
处理1900可以包括“定义图像中的待校正的块”1906。可以通过逐块地生成输出图像实现块的高效GDC硬件实现方式。这样允许高效存储器管理,并且减少执行失真校正所需的硬件的面积,因为硬件的大小可以设计为一次处理一个块。然而,因为用于关于每个块的GDC硬件计算的开销总共变得太大,所以块不能太小。换言之,每个块具有发起初始任务(例如用于在块开始和结束的地方的边界像素的特定处理)的开销。当块太小时,存在要执行的太多开销操作和数据传送,这可能压垮***。已经发现,最小的块应是大约32像素高乘以大约128像素宽。因此,本文的示例使用32x128块。
为了减少功耗并且保持高性能,应在通过使用LUT而非迭代地计算半径比率而启用的单轮中执行单应性和LDC。通过变换为可以由这两个处理使用的坐标,可以实现将这两个功能或变换融合为单个处理。这包括用于通过处理提供坐标并且跟踪块的以下操作。
处理1900可以包括“设置待校正的图像块0至B中的当前块b=0”1908。这仅是设置用于正分析的图像的块计数器,并且是一种示例技术,而当计数器与块的坐标的值可以直接有关或无关时,很多其它技术也是可能的。
处理1900可以包括“获得输出无失真像素网格位置”1910。因此,***可以向GDC硬件通知待处理的当前输出像素网格块的坐标,以生成用于块的无失真图像数据。如果按某预定顺序(例如输出网格或图像上的光栅顺序)生成输出图像块,则关于当前输出图像位置的知识可以保存为内部状态。每次GDC硬件开始处理新的输出图像块,坐标也可以提供为对GDC硬件的输入。
再次参照图16-图17,当前输出块的2D位置可以表示为oxB和oyB,其中,o代表输出。例如,左上输出块处于位置oxB=0,oyB=0,并且坐标从输出图像的左到右而且从上到下增加,如输出图像1600上所示。输出图像块的宽度是wB,并且高度是hB。内部输出图像块坐标表示为xb∈[0,wB]以及yb∈[0,hB],其中,块的左上角定义像素或图像点(xb,yb)=(0,0)。
然后,块位置oxB和oyB处的输出图像块中的像素网格位置(或输出图像点)的输出坐标计算为:
xo=xb+oxB*wB (17)
yo=yb+oyB*hB (18)
其中,xo和yo是可以基于已知的oxB和oyB输出块位置以及像素网格点(xo,yo)的内部块坐标(xb,yb)计算的输出像素网格或图像坐标。为了说明,在图像1600上示出oxB=2和oyB=1处的示例输出块1604,其中,块1604具有4x8像素(示出为“x”)。然后对于该操作,可以触发GDC硬件,以在(oxB,oyB)处产生块,具有(oxdim,oydim)的输出块大小。
输出像素网格点(xb,yb)和块位置可以设置在整个像素位置(而非子像素位置)处,并且可以是每一像素位置或总共像素的某均匀采样。否则,对于整个像素位置替代地或附加地,可以在子像素位置处设置输出像素网格点和/或块位置。像素的数量将取决于图像的分辨率。
然后将单应性应用于生成失真图像1700上的输入图像点(又称为中间点或内插点)的对应块1704。具体地说,作为一种方法,单应性可以实际上操作在逆模式下,其中,获得输出无失真像素网格位置,然后通过应用单应性使用这些位置,以通过公式(15)和(16)形成中间失真图像点位置(xm,ym),如上所述。在图像1700的块1704中均由“x”指定的位置处还指示所计算的用于块1704的单应性中间点(xm,ym)。
更详细地说,处理1900可以包括“执行单应性以修改失真像素位置”1912。单应性的操作初始地可以包括:具有处理1900“确定失真图像到纠正后的输出图像的全局单应性映射”1914。这指代操作为“确定单应性系数”1916的处理1900。
这可以指代获得预定单应性系数(或参数)(其已经通过从存储器取得它们而生成)。可以使用透镜上的测试图像在初始操作中生成单应性系数,以具有单应性系数,如以上详细描述的那样。也如上所述,可以在GDC硬件的外部(例如,在呈现为无论如何都执行其它图像处理任务(例如DVS)的CPU上)计算生成单应性系数的该全局单应性变换。否则,可以由GDC硬件执行其余单应性操作。
此外,在一些应用(例如DVS)中,每单个帧可以存在少数不同单应性。这可以例如用于复杂卷帘式快门失真情况,其中,帧的部分将具有不同单应性。为了支持该情况,仅需要指定待进行失真校正的帧的区域。这些区域然后可以划分为块,如上所述。因此,块不一定全都彼此相邻。在单个帧上的多个单应性的这些情况下,要么(1)全都在初始化阶段期间,要么(2)每次使用块,每个单应性可以提供给GDC硬件;查找并且取得分配给该块的单应性系数,使得当可用时可以通过不同参数集合初始化每个块。虽然第一选项可以具有更少的复杂软件设计(因为可以需要GDC硬件与控制器处理器之间的更少的通信),但第二选项可以更适合于硬件实现方式,因为其需要更少的存储器容量并且允许在处理单个块的同时无中断的帧内流。
处理1900可以包括“在本地且对于非CPU图像处理硬件可访问地存储单应性系数”1918,并且指代将全局单应性参数存储到GDC硬件中,以用于正校正的当前块。例如均由用于定义单应性变换矩阵(以上公式13)的系数h1、……、h8指示的八个参数可以存储在对于GDC硬件可访问的一个或多个板载本地寄存器、ram或输入缓冲器中。这可以发生在上述初始化阶段期间,或在随着逐块地取得块而正取得其它对应块数据的同时。因此,GDC硬件的本地输入缓冲器可以由将要用以产生位于输出块网格处的(oxB,oyB)位置处的输出块的输入数据填充。
参照图20,处理1900可以包括“生成本地中间图像点”1920。在此,***或GDC硬件当使用时分析正分析的当前输出像素网格块(oxB,oyB)内的每个或各输出像素网格位置(xo,yo)。逆向应用单应性(或单应性函数),以使用上述单应性系数公式(15)和(16)计算用于失真图像点的中间失真坐标(xm,ym)。该阶段由输出块2000例示,其将包括输出像素网格点(xo,yo),具有与输出像素网格点(xo,yo)对应或匹配的所得输入失真四边形或在此四角形2002的覆盖。由于对单应性系数公式(15)和(16)的输入是输出像素网格点并且结果是失真输入图像,因此在此逆向考虑单应性。如所提及的那样,例如,***可以分析每个像素网格点或按均匀间隔的点的某种减少的采样。
此外,通过使用利用像素网格布局以及像素的相邻位置的局部点计算减少硬件计算,可以使得应用单应性系数公式(15)和(16)的操作甚至更高效。换言之,由于本地块(oxB,oyB)表示规则网格并且像素网格位置(xo,yo)在块内具有均匀间隔,因此可以通过更简单的加法实现单应性系数公式。例如,如果计算hcxo,则下一右边像素坐标是hc(xo+1)=hcxo+hco,其中,hco是单应性系数(或参数)h1至h8之一。可以在初始化期间计算用于每个因子hcxo和hcyo的初始值,并且通过与适当偏移相加从其计算每个新的值。
可选地,处理1900可以包括“应用缩放因子”1922。作为一个示例,用于通过缩放因子的本地计算的公式可以写为:
xm=s*(h1xo+h2yo+h3) (20)
ym=s*(h4xo+h5yo+h6) (21)
这用以避免计算众多除法计算并且将系数公式的分母置于缩放因子中。可以在硬件中通过各种方式实现缩放因子计算。一种是使用查找表以执行除法,其中,例如,查找表具有用于公式(19)的函数1/D的值,其中,公式(19)的分母D得以计算,然后用作对查找表的输入,以获得1/D,并且可以同样关于此而在样条内插运算内执行该操作。迭代实现方式是对于典型地在作为机器的硬件中实现的迭代常规数学除法运算的另一选项,其需要运行少数时钟周期以实现特定期望精度。
参照图21,结果是具有将与最终输入失真块上的内插点2202对应的中间图像点(xm,ym)2102的中间失真单应性四角形2100或弯曲迭代2200。保持多个这些四角形的图像可以分别称为中间图像(对于四角形块2100)和输入失真图像(对于弯曲四角形块2200)。
处理1900然后可以包括“提供失真图像点位置的中间坐标”1924。这指代要么存储中间坐标(xm,ym),并且作为一个示例要么当一次一个块正执行处理时,和/或例如关于运行中的基于LUT的LDC处理立即提供中间坐标。这可以包括:一旦计算中间值,就使用中间值以计算用于LUT的输入,如下所述。虽然通常避免对于通过像素位置和图像点位置对本地板载存储器的单个上传执行完整变换来存储中间值的需要,但***可以等待整个块由单应性处理,然后开始LDC操作(或反之亦然),并且在此情况下,中间坐标可以存储在板载输入缓冲器中。
此时,当从普通广角透镜(从大约60到180度的FOV)的传感器提供图像时,处理继续于A1(图19B),以执行透镜失真校正(LDC)。否则,当从具有带有球面坐标中大于180度的FOV的超广透镜的相机提供图像时,处理继续于A2(图19C),以执行解扭曲而非LDC,如以上关于***1800(图18)所解释的那样。
现在继续于处理1900,如同普通广角透镜用以生成图像,处理1900可以包括“执行透镜失真校正(LDC)”1926,并且作为一种形式,这可以指代基于半径比率的LDC,并且作为其它形式,这附加地指代基于半径比率LUT的LDC。本文的示例解释关于增加的硬件效率在本文中使用的与基于半径比率LUT的LDC组合的单应性。替代地,应理解,单应性可以在此与不包括半径比率以及归因于单应性而将仍增加图像质量的LUT的其它LDC技术组合。
继续于示例,处理1900可以包括“获得中间图像的从失真的中心到中间像素位置的半径”1928。例如,这指代获得相对于失真的中心的中间位置,然后使用该半径作为无失真半径作为对半径比率LUT的输入,以获得用于中间失真图像2100上的中间坐标位置的半径比率。因此,中间点(xm,ym)现在用以形成无失真半径Ru
可以通过将失真的中心投影到中间图像(例如图像2100(图21))首先执行该操作。中心可以按公式(9)移位,例如,并且中心(Xc,Yc)考虑任何移位而设置在对应中间图像坐标(xm-cd,ym-cd)处(其中,cd指代失真的中心)。可以对于整个图像以及待校正的图像上的所有块执行该操作一次。
接下来,Xo和Yo计算为失真的中心的(xm-cd,ym-cd)与当前中间点(xm,ym)之间的x和y差。在此,由于差表示中间距离而非实际输出像素网格距离,因此(Xo,Yo)可以称为距离(Xm,Ym)。
然后,除了使用在此所计算的并且来自中间图像的中间距离(Xm,Ym),公式(7)可以应用于获得Ru 2。这可以包括,如上所述,Ru的平方,以降低来自平方根操作的计算负载。
可以对于将要从LUT直接提供比率的块中的每一个点重复该操作。其可以是例如在此所使用的块中的所有点、某采样、或与待用以内插最终输入图像上的更多中间点上的比率的来自最终输入图像的锚定点的某种对应性。
处理1900可以包括“通过使用中间半径从查找表确定半径比率”1930。这可以包括“使用无失真半径的平方作为查找输入值”1932,其中,无失真在此可以改为指代中间图像。因此,应用公式(8),并且Ru 2值用作对半径比率LUT的输入,以获得用于正分析的当前点(xm,ym)的比率Rd/Ru。如上所述,可以在运行时期间在失真校正操作之前预先确定并且存储半径比率LUT。
在每个块内,可以按光栅扫描顺序分析内部图像点位置和像素位置数据。例如,因为相邻像素之间的半径比率的改变是非常小的并且可预测的(即,通过图像上的像素行水平向下的一个像素),所以从图像扫描的光栅扫描顺序可以实现进一步的效率。通过简单地将1与在行中正计算的第一Ru的“x”分量并且然后与其后的行中的Ru的每个x分量相加,这可以用以减少执行图像的失真校正所消耗的时间。在改变或不改变与“x”分量相加的数字的情况下,可以通过相同方式处理小数位置。当从一行移动到下一行时可以使用稍微不同的应用,但甚至可以通过记住正分析的当前像素位置的之上行和与之相同的列中的值来改进该操作的速度。例如,当正分析水平坐标0(xo=0,或,在此,xm=0)时,差异将是yo(或ym)仅增加1。这将使得其与一次水平移动一个像素相同。
处理1900可以包括“内插其它半径比率”1934。这包括:确定用于具有LUT中未列出的Ru的那些点的半径比率。根据如上所述的公式(10)执行该操作。
处理1900可以包括“通过使用比率确定输入图像上的匹配图像点位置”1936。在此,可以使用公式(5)和(6)计算形成Rd的失真距离的Xi和Yi,并且处理1900可以可选地包括“使用缩放因子”1938以调整非同心失真(例如关于公式(6)如上所述的Yconst)。Xi和Yi然后转换为输入失真图像点位置(xi,yi)。
例如,基于半径比率LUT的LDC的结果于是为修改后的输入失真图像点(xi,yi)2202的块,如输入失真图像2200(图22)上所示。
处理1900也可以包括“补偿切向失真”1940。在常规校正公式中,通过公式的第二部分对切向失真进行建模:
其中,(xd,yd)=(xi,yi),(xo,yo)=(xu,yu),r是半径Ru,P1和P2是通过实验确定的预定系数,K是预定常数。第一部分(K、K2、……、等)对径向失真进行建模,并且可以由基于所提出的半径比率查找表的近似进行建模。切向部分可以根据以上公式(22)和(23)与LDC的结果相加。
然而,替代地或附加地,由于所提出的GDC硬件支持单应性和透镜失真的组合,因此可以通过重新调整单应性来近似大部分切向失真。通过求解使得切向失真部分的影响最小化的单应性系数H来实现该目的。例如,如果P1……是已知的,则制作两个模型:一个具有系数P,并且另一个通过附加的单应性变换替代第一模型。然后调整单应性系数,以使得(从输出坐标到输入坐标的)两个模型所预测的图像平面中的图像点集合的位置的差最小化。同样可以预期其它替选。
处理1900可以包括“将匹配图像点的像素数据分配给对应输出网格像素位置”1942。因此,匹配输入失真图像点(xi,yi)的像素数据(例如色度和亮度数据)可以分配给对应输出像素位置(xo,yo)。如上所述,由于可以按小数(子像素)精度给出输入图像点的位置,因此可以使用更高阶内插(例如Lanczos3或双三次)计算子像素输出像素位置,以当必要时实现平滑的输出图片,如以上关于公式(11)所解释的那样。
处理1900可以包括“b=B?”1944。现在,检查以确定是否已经分析当前图像上的待校正的最后块。如果否,则处理1900可以继续于“获得网络块”1946,并且计数器向上增加1,其中,处理1900可以包括“设置b=b+1”1946。处理然后循环回到操作1910,以获得下一块的输出像素网格位置。处理重复,直到校正最后块B,并且处理关于该图像结束,并且当在视频中正分析图像序列时,可以获得下一图像。
参照图23-图24,对于当超广角透镜用以提供图像时的情况继续于处理1900,处理1900可以包括“对像素位置进行解扭曲”1950。如上所述,这可以应用于360度透镜,但可以应用于其它大小,尤其是具有大于180度的FOV的并且在球面坐标中提供的超大小。该操作可以包括“通过使用360度透镜参数并且对块尺寸进行解扭曲确定笛卡尔坐标”1952。在应用单应性之后的初始解扭曲操作之一是将失真的修改后的输入图像2300(另一示例是***1800的图像1814)中的具有球面坐标的图像点的(在此,修改后的或中间的)块2302变换为平坦矩形无失真最终输出图像2400(另一示例示出为***1800的图像1818)上的具有笛卡尔坐标的像素的块2402。
为了执行该变换,以下公式等效地展开圆形图像2300或2500,并且将其变换为矩形输出图像2400。
Wd=2πr2 (24)
Hd=r2–r1 (25)
Xi=Xc+r·sin(θ) (28)
Yi=Yc+r·cos(θ) (29)
其中,圆形图像的中心假设为失真的中心(Xc,Yc),但无需总是如此。r1和r2分别是到圆形图像的底部和顶部的径向距离,并且它们由透镜校准确定,其中,拍摄具有已知几何的对象的测试图像,并且r1和r2被调整以正确地对几何进行建模。球面坐标中的到失真输入图像点(Xi,Yi)的半径r由公式(26)确定。(Xo,Yo)是输出无失真网格位置(以到失真的投影中心的距离为单位),或在当首先应用单应性时的情况下,为中间点位置(xm,ym)。
处理1900可以包括“使用解扭曲LUT”1954。此外,在解扭曲操作中,查找表可以用以通过直接与笛卡尔坐标系中的半径(r)相关的垂直轴实现非线性缩放。这指代用以避免上述除法计算的LUT。
结果是具有尺寸Wd x Hd的输出图像2400(图24)或1818(图18)以及与转换为(xi,yi)的失真图像点(Xi,Yi)匹配的无失真输出像素网格点(Xo,Yo)(或(xm,ym))。
处理1900可以包括“将匹配图像点的像素数据分配给对应输出网格像素位置”1956并且操作为通过如上所述的LDC的操作1942将图像输入点的色度和亮度值置于所分配的无失真像素位置上。
处理1900可以包括“b=B?”1958,并且如果否,则处理1900可以包括“获得下一块”1960,并且“设置b=b+1”1962。至于LDC处理,在此的处理循环回到操作1910,以当尚未校正最后块时获得下一块的数据。否则,处理关于当前图像结束,并且可以关于更多图像而重复。
作为又一替选,可以应用解扭曲,然后又一旦完成解扭曲就应用LDC。
应理解,即使跳过和/或按不同顺序执行处理1900的操作,对处理1900的替选处理也仍落入本公开的范围内。
应理解,本文所描述的每个组件、单元和模块可以包括提供该组件、单元和模块所执行的操作的代码和/或硬件的那些部分,而无论任何该代码驻留在何处或任何该代码和/或硬件的附加模块、单元等看作什么部分。
还应理解,在成像设备1800处可以提供除了在此所描述的组件之外的更多组件(例如编码器、解码器、收发机、天线等),在以下描述的实现方式4000、4100和/或4200中提及其中的多数。
再次参照图3-图4,在两个不同图像上已经测试该方法,其中,图像300提供~10%SMIA TV桶形失真。图像400是校正图像300的所得校正后的图像。还测试提供50%SMIA TV胡形失真(未示出)的图像。胡形失真被认为是相当复杂的,在中心处近似地具有加强的缩放,并且在转角附近具有下降的缩放。
对于每一个测试图像,提供针对比较的失真曲线以及实际呈现的基本真实失真。在图26、图5、图7-图8(以上已经用作用于解释失真校正的示例)以及图29-图30上提供桶形失真结果和比较。胡形失真结果和比较提供于图31-图39上并且如下。
桶形失真图像
参照图26,图线2600示出用于桶形失真的失真曲线,其中,所得失真校正内插曲线是从以上LDC方法生成的,并且在曲线上关于图像或输入点而示出。线性曲线(简单地以此方式称谓,因为其为更线性的)是通过MATLAB方法如上所述在1兆个点处计算的实际失真的基本真实。差示出与基本真实比率相比的来自所公开的方法的所生成的半径比率。
再次参照图5以及图7-8并且已经如上所述,图像500示出常规(或遗留)桶形失真校正,其提供网格上的等距点,并且图像700和800对图像500的常规校正与(在没有单应性的情况下)通过使用本文的LDC方法执行的校正进行比较。正确图像点位置706处于常规校正的包围框704之外。
参照图27-图28,图表2700示出误差的范围上至大约0.7像素的关于遗留桶形失真校正方法的每块的平均误差,而图表2800示出误差的范围上至大约3.5x10-4像素的使用所公开的LDC方法的关于桶形失真图像的每块的平均误差。通过对所述方法与如上所述在一兆个点处计算的基本真实进行比较来形成二者。因此,差的量值的若干量级存在于两个图表之间,示出因所公开的方法而存在误差的实质性减少。
参照图29-图30,图表2900示出误差的范围上至大约1.1像素的关于遗留桶形失真校正方法的每块的最大误差,而图表3000示出误差的范围上至大约5.5x10-4像素的使用所公开的LDC方法的关于桶形失真图像的每块的最大误差。通过对所述方法与如上所述在一兆个点处计算的基本真实进行比较来形成二者。因此,差的量值的若干量级存在于两个图表之间,示出因所公开的方法而存在误差的实质性减少。
胡形失真图像
参照图31,图线3100示出用于胡形失真的失真曲线,其中,所得失真校正内插曲线是从以上LDC方法生成的,并且在曲线上关于图像或输入点而示出。线性曲线(简单地以此方式称谓,因为其为更线性的)是通过MATLAB方法如上所述在1兆点处计算的实际失真的基本真实。差示出与基本真实比率相比的来自所公开的方法的所生成的半径比率。
参照图32-图33,图像3200示出本文所公开的LDC方法所提供的胡形失真校正的转角块的网格3202、以及提供遗留校正的包围框3204,并且示出正确图像点位置3206处于常规校正的包围框3204之外,说明遗留方法的不精确性。
参照图34-图35,图像3400示出本文所公开的LDC方法所提供的胡形失真校正的中心块的网格3402、以及提供遗留校正的包围框3404,并且示出正确图像点位置3406处于常规校正的包围框3404之外,说明遗留方法的不精确性。
参照图36-图37,图表3600示出误差的范围上至大约4.0像素的关于遗留胡形失真校正方法的每块的平均误差,而图表3700示出误差的范围上至大约2.0x10-3像素的使用所公开的LDC方法的关于桶形失真图像的每块的平均误差。通过对所述方法与如上所述在一兆个点处计算的基本真实进行比较来形成二者。因此,差的量值的若干量级存在于两个图表之间,示出因所公开的方法而存在误差的实质性减少。
参照图38-图39,图表3800示出误差的范围上至大约6.0像素的关于遗留胡形失真校正方法的每块的最大误差,而图表3900示出误差的范围上至大约3.0x10-3像素的使用所公开的LDC方法的关于桶形失真图像的每块的最大误差。通过对所述方法与如上所述在一兆个点处计算的基本真实进行比较来形成二者。因此,差的量值的若干量级存在于两个图表之间,示出因所公开的方法而存在误差的实质性减少。
参照图40,根据本公开的至少一些实现方式来布置用于提供用于广角透镜的图像失真校正的示例***4000。在各个实现方式中,示例图像处理***4000可以具有广角成像设备4002,以形成或接收所捕获的图像数据。可以通过多种方式实现该操作。因此,在一种形式中,图像处理***4000可以是数字相机或其它图像捕获设备,并且成像设备4002在此情况下可以是相机硬件以及相机传感器软件、模块或组件4006。在其它示例中,成像处理***4000可以具有包括或可以是相机的成像设备4002,并且逻辑模块4004可以与成像设备4002进行远程通信或可以通过通信方式耦合到成像设备4002,以用于进一步处理图像数据。在任何这些示例中,成像设备4002具有如上所述任何类型的至少一个广角透镜4007。
该技术可以包括相机(例如数字相机***、专用相机设备、或成像智能电话或平板,而无论静止图片还是视频相机)或具有预览屏幕的设备或它们的某种组合。因此,在一种形式中,成像设备4002可以包括相机硬件和光器件,其具有一个或多个透镜,并且包括如上所述的一个或多个传感器以及自动聚焦、变焦、光圈、ND滤波器、自动曝光、闪光灯以及激励器控件,并且包括多个替选透镜。传感器控件可以是用于操作传感器的传感器模块或组件4006的部分。传感器组件4006的控件可以是成像设备4002的部分,或可以是逻辑模块4004的部分,或二者皆可。该传感器组件可以用以生成用于可以包括预览屏幕的取景器的图像,并且拍摄静止图片或视频。成像设备4002也可以具有图像传感器,其具有RGB拜尔色彩滤波器、模拟放大器、A/D转换器、用于将入射光转换为数字信号的其它组件等和/或其组合。数字信号在本文中也可以称为原始图像数据。
其它形式包括相机传感器类型成像设备等(例如网络相机或网络相机传感器或其它互补金属氧化物型图像传感器(CMOS)),而不使用红绿蓝(RGB)深度相机和/或用于定位谁正说话的麦克风阵列。相机传感器也可以支持其它类型的电子快门(例如对于卷帘式快门替代地或附加地,全域式快门)以及很多其它快门类型。在其它示例中,对于相机传感器附加地或替代地,可以使用RGB深度相机和/或麦克风阵列。在一些示例中,可以提供具有眼部跟踪相机的成像设备4002。
在所示示例中以及在此有关的,逻辑模块4004可以包括原始图像数据处理单元4008,其对图像数据执行足以校正失真的预处理以及其它期望的图像处理功能。逻辑模块4004可以包括失真校正单元4010,其具有单应性单元4012、LDC单元4014、切向失真单元4016以及解扭曲单元4018。逻辑单元也可以包括高精度应用单元4020,其使用失真校正单元4010的校正后的输出,而无论进一步修改图像数据还是显示图像。
单应性单元4012可以具有用于生成单应性系数的系数单元4050以及提供单应性的变换单元4052。LDC单元4014可以具有:Ru单元4060,用于生成Ru;比率单元4062,其控制LUT以提供半径比率;锚定点单元4064,其从比率计算Rd;以及内插单元4066,其提供锚定点之间的图像点的内***率。这些组件的操作如上所述,并且例如***1800和处理1900中的组件以及以上提及的而且与这些组件对应的操作根据这些组件和操作的上下文和名称是清楚的。
包括失真校正单元4010的那些组件的逻辑模块4004的组件可以由至少一个处理器4030操作,或甚至完全或部分位于至少一个处理器4030处,并且处理器4030可以包括一个或多个图像处理单元(IPU)4048,其均具有其自身的一个或多个GDC硬件图像信号处理器(ISP)和/或图形处理单元(GPU)4036或对其访问,并且可以包括其它硬件操控功能。这些IPU单元4048可以或可以不独占地专用于执行如上所述的失真校正任务。
逻辑模块4004可以通过通信方式耦合到成像设备4002的组件,以接收原始图像数据。可选地可以通过与原始图像数据流分开的数据流提供数据。在这些情况下,假设逻辑模块4004看作与成像设备是分开的。情况无需如此,并且逻辑模块非常良好地可以认为同样是成像设备的部分。
***4000可以包括一个或多个处理器4030以及存储器存储4034。在***4000的示例中,存储器存储4034可以存储图像内容(例如所捕获的图像(或图像帧)以及包括任何上述查找表4038的与失真校正有关的数据)。这同样也可以包括与失真校正有关的任何输入、中间计算、或输出数据、或本文所讨论的其它数据。
处理器4030也可以包括板载存储器(例如一个或多个缓冲器),以保存正处理的GDC数据(例如中间像素坐标、选自LUT之一的比率或其它数据等)。
ISP和/或GPU 4036可以包括可以提供本文所讨论的操作的任何数量和类型的图形处理单元。可以经由软件或硬件或其组合来实现这些操作。例如,图形处理单元4036可以包括专用于操控从存储器存储4034获得的图像的电路。处理器4030可以包括可以提供用于***4000的控制和其它高级功能和/或提供本文所讨论的操作的任何数量和类型的处理单元或模块。存储器存储4034可以是任何类型的存储器(例如易失性存储器(例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等)或非易失性存储器(例如闪存等)等)。在非限定性示例中,可以通过缓存存储器实现存储器存储4034。此外,存储器4034可以是EEPROM或设备文件***。作为一种形式,可以经由IPU 4048上的ISP 4036的执行单元(EU)实现图像处理***4000和失真校正单元4010的一个或多个单元。EU可以包括例如可编程逻辑或电路(例如可以提供可编程逻辑功能的宽阵列的一个或多个逻辑内核)。在一种形式中,可以经由专用硬件(例如固定功能电路等)实现任何这些单元。固定功能电路可以包括专用逻辑或电路,并且可以提供可以关于固定目的或功能而映射到专用逻辑的一组固定功能入口点。
可以在软件、固件和/或硬件和/或其任何组合中实现本文所描述***的各种组件。例如,成像设备或***1800或4000的各种组件可以是例如可以在计算***(例如智能电话)中找到的计算片上***(SoC)的硬件,或可以至少部分地通过其来提供。本领域技术人员应理解,本文所描述的***可以包括对应附图中尚未描述的附加组件。例如,本文所讨论的***可以包括为了清楚而尚未描述的附加组件(例如比特流复用器或解复用器模块等)。
虽然本文所讨论的示例处理的实现方式可以包括承担按所示的顺序示出的所有操作,但本公开不限于此,并且在各个示例中,本文的示例处理的实现方式可以仅包括所示的操作、按与所示的不同顺序执行的操作或附加操作的子集。
此外,可以响应于一个或多个计算机程序产品所提供的指令而承担本文所讨论的操作中的一个或多个。这些程序产品可以包括信号承载介质,其提供指令,所述指令当由例如处理器执行时可以提供本文所描述的功能。可以通过任何形式的一个或多个机器可读介质来提供计算机程序产品。因此,例如,包括一个或多个图形处理单元或处理器内核的处理器可以响应于由一个或多个机器可读介质传送到处理器的程序代码和/或指令或指令集而承担本文的示例处理的操作中的一个或多个。通常,机器可读介质可以通过可以使得在此所描述的任何设备和/或***实现在此所讨论的成像设备或***1800或4000或任何其它模块或组件的至少一部分的程序代码和/或指令或指令集的形式来传送软件。
如本文所描述的任何实现方式中所使用的那样,术语“模块”指代被配置为提供本文所描述的功能的软件逻辑、固件逻辑、硬件逻辑和/或电路的任何组合。软件可以实施为软件封装、代码和/或指令集或指令,并且本文所描述的任何实现方式中所使用的“硬件”可以单独地或以任何组合而包括例如硬布线电路、可编程电路、状态机电路、固定功能电路、执行单元电路和/或存储可编程电路所执行的指令的固件。模块可以共同地或单独地实施为形成更大的***的部分的电路(例如集成电路(IC)、片上***(SoC)等)。
如在此所描述的任何实现方式中所使用的那样,术语“逻辑单元”指代被配置为提供在此所描述的功能的固件逻辑和/或硬件逻辑的任何组合。逻辑单元可以共同地或单独地实施为形成更大的***的部分的电路(例如集成电路(IC)、片上***(SoC)等)。例如,逻辑单元可以实施在逻辑电路中,以用于实现在此所讨论的编码***的固件或硬件。本领域技术人员应理解,硬件和/或固件所执行的操作可以替代地经由可以实施为软件封装、代码和/或指令集或指令的软件来实现,并且还应理解,逻辑单元也可以利用软件的部分以实现其功能。
如在此所描述的任何实现方式中所使用的那样,术语“组件”可以指代模块或逻辑单元,如以上描述这些术语。相应地,术语“组件”可以指代被配置为提供在此所描述的功能的软件逻辑、固件逻辑和/或硬件逻辑的任何组合。例如,本领域技术人员应理解,硬件和/或固件所执行的操作可以替代地经由可以实施为软件封装、代码和/或指令集的软件模块来实现,并且还应理解,逻辑单元也可以利用软件的部分以实现其功能。
图41是根据本公开的至少一些实现方式所布置的示例***4100的说明性示图。在各个实现方式中,***4100可以是媒体***,但***4100不限于该上下文。例如,***4100可以合并到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板、触摸板、便携式计算机、手持计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板或智能电视)、移动互联网设备(MID)、传信设备、数据通信设备、相机(例如傻瓜相机、超级变焦相机、数字单透镜反射(DSLR)相机)等中。
在各个实现方式中,***4100包括平台4102,其耦合到显示器4120。平台4102可以从内容设备(例如内容服务设备4130或内容传送设备4140或其它相似内容源)接收内容。包括一个或多个导航特征的导航控制器4150可以用于与例如平台4102和/或显示器4120进行交互。以下更详细地描述这些组件中的每一个。
在各个实现方式中,平台4102可以包括芯片组4105、处理器4110、存储器4112、天线4113、存储4114、图形子***4115、应用4116和/或无线电装置4118的任何组合。芯片组4105可以提供处理器4110、存储器4112、存储4114、图形子***4115、应用4116和/或无线电装置4118之间的相互通信。例如,芯片组4105可以包括能够提供与存储4114的交互通信的存储适配器(未描述)。
处理器4110可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或任何其它微处理器或中央处理单元(CPU)。在各个实现方式中,处理器4110可以是双核处理器、双核移动处理器等。
存储器4112可以实现为易失性存储器设备(例如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM))。
存储4114可以实现为非易失性存储设备(例如但不限于磁盘驱动器、光盘驱动器、带驱动器、内部存储设备、附连存储设备、闪存、电池备份SDRAM(同步DRAM)和/或网络可存取存储设备)。在各个实现方式中,例如,存储4114可以包括用于当包括多个硬驱动器时关于有价值的数字媒体增加存储性能增强保护的技术。
图形子***4115可以执行图像(例如用于显示的静止图像或视频)的处理。例如,图形子***4115可以是图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以用于以通信方式耦合图形子***4115和显示器4120。例如,接口可以是任何高清晰度多媒体接口、显示端口、无线HDMI和/或无线HD顺应技术。图形子***4115可以集成到处理器4110或芯片组4105中。在一些实现方式中,图形子***4115可以是以通信方式耦合到芯片组4105的单机设备。
本文所描述的图形和/或视频处理技术可以实现于各种硬件架构中。例如,图形和/或视频功能可以集成在芯片组内。替代地,可以使用分立式图形和/或视频处理器。作为又一实现方式,可以通过包括多核处理器的通用处理器提供图形和/或视频功能。在其它实施例中,可以在消费者电子设备中实现功能。
无线电装置4118可以包括能够使用各种合适的无线通信技术来发送并且接收信号的一个或多个无线电装置。这些技术可以涉及跨越一个或多个无线网络的通信。示例无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络以及卫星网络。在跨越这些网络的通信中,无线电装置4118可以根据任何版本中的一个或多个适用标准进行操作。
在各个实现方式中,显示器4120可以包括任何电视类型监视器或显示器。显示器4120可以包括例如计算机显示屏幕、触摸屏显示器、视频监视器、类似电视的设备和/或电视。显示器4120可以是数字和/或模拟的。在各个实现方式中,显示器4120可以是全息显示器。此外,显示器4120可以是可以接收视觉投影的透明表面。这些投影可以传送各种形式的信息、图像和/或对象。例如,这些投影可以是用于移动增强现实(MAR)应用的视觉叠加。在一个或多个软件应用4116的控制下,平台4102可以在显示器4120上显示用户接口4122。
在各个实现方式中,例如,内容服务设备4130可以由任何国家、国际和/或独立服务掌控,并且因此可经由互联网对平台4102访问。内容服务设备4130可以耦合到平台4102和/或显示器4120。平台4102和/或内容服务设备4130可以耦合到网络4160,以将媒体信息传递(例如,发送和/或接收)出入网络4160。内容传送设备4140也可以耦合到平台4102和/或显示器4120。
在各个实现方式中,内容服务设备4130可以包括有线电视盒、个人计算机、网络、电话、互联网使能设备或能够传送数字信息和/或内容的电器以及能够经由网络4160或以直接方式在内容提供商与平台4102和/显示器4120之间单向地或双向地传递内容的任何其它相似设备。应理解,内容可以经由网络4160单向地和/或双向地传递出入***4100中的组件中的任何一个以及内容提供商。内容的示例可以包括任何媒体信息,包括例如视频、音乐、医疗和游戏信息等。
内容服务设备4130可以接收内容(例如包括媒体信息、数字信息和/或其它内容的有线电视节目传送)。内容提供商的示例可以包括任何有线或***或无线电或互联网内容提供商。所提供的示例并非意图以任何方式限制根据本公开的实现方式。
在各个实现方式中,平台4102可以从具有一个或多个导航特征的导航控制器4150接收控制信号。例如,控制器4150的导航特征可以用于与用户接口4122进行交互。在各个实施例中,导航控制器4150可以是指点设备,其可以是允许用户将空间(例如连续和多维)数据输入到计算机中的计算机硬件组件(具体地说,人机接口设备)。很多***(例如图形用户接口(GUI)以及电视和监视器)允许用户使用物理手势控制数据并且将其提供给计算机或电视。
控制器4150的导航特征的移动可以通过显示器上所显示的指针、光标、聚焦环或其它视觉指示符的移动在显示器(例如显示器4120)上得以复制。例如,在软件应用4116的控制下,位于导航控制器4150上的导航特征可以映射为用户接口4122上所显示的虚拟导航特征。在各个实施例中,控制器4150可以不是分离的组件,而可以集成到平台4102和/或显示器4120中。然而,本公开不限于本文所示或所描述的要素或上下文。
在各个实现方式中,例如,当启用时,驱动器(未示出)可以包括用于使得用户能够在初始引导之后通过触摸按钮即刻打开和关闭平台4102(比如电视)的技术。即使当平台“关闭”时,程序逻辑也可以允许平台4102将内容流送到媒体适配器或其它内容服务设备4130或内容传送设备4140。此外,例如,芯片组4105可以包括关于5.1环绕声音音频和/或高清晰度7.1环绕声音音频的硬件和/或软件支持。驱动器可以包括用于集成式图形平台的图形驱动器。在各个实施例中,图形驱动器可以包括外设组件互连(PCI)高速图形卡。
在各个实现方式中,***4100中所示的组件中的任何一个或多个可以是集成的。例如,平台4102和内容服务设备4130可以是集成的,或平台4102和内容传送设备4140可以是集成的,或平台4102、内容服务设备4130和内容传送设备4140可以是集成的。在各个实施例中,平台4102和显示器4120可以是集成单元。例如,显示器4120和内容服务设备4130可以是集成的,或显示器4120和内容传送设备4140可以是集成的。这些示例并非意图限制本公开。
在各个实施例中,***4100可以实现为无线***、有线***或二者的组合。当实现为无线***时,***4100可以包括适合于通过无线共享介质进行通信的组件和接口(例如一个或多个天线、发射机、接收机、收发机、放大器、滤波器、控制逻辑等)。无线共享介质的示例可以包括无线频谱(例如RF频谱等)的部分。当实现为有线***时,***4100可以包括适合于通过有线通信介质进行通信的组件和接口(例如输入/输出(I/O)适配器、用于将I/O适配器与对应有线通信介质连接的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等)。有线通信介质的示例可以包括导线、线缆、金属引线、印制电路板(PCB)、背板、开关构造、半导体材料、双绞线导线、同轴线缆、光纤等。
平台4102可以建立一个或多个逻辑或物理信道,以传递信息。信息可以包括媒体信息和控制信息。媒体信息可以指代表示意图用于用户的内容的任何数据。内容的示例可以包括例如来自语音会话、视频会议、流送视频、电子邮件(“电邮”)消息、语音邮件消息、文字数字符号、图形、图像、视频、文本等的数据。来自语音会话的数据可以是例如话音信息、静默时段、背景噪声、舒适噪声、音调等。控制信息可以指代表示旨在用于自动化***的命令、指令或控制字的任何数据。例如,控制信息可以用于将媒体信息路由通过***,或指令节点以预定方式处理媒体信息。然而,实现方式不限于图41中所示或所描述的要素或情形。
参照图42,小形数设备4200是可以实施***4000或4100的变化的物理风格或形数的一个示例。通过该方法,设备4200可以实现为具有无线能力的移动计算设备。例如,移动计算设备可以指代具有处理***和移动功率源或电源(例如一个或多个电池)的任何设备。
如上所述,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板、触摸板、便携式计算机、手持计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板或智能电视)、移动互联网设备(MID)、传信设备、数据通信设备、以及相机(例如广角透镜相机、超广角透镜相机、鱼眼相机、360度相机、傻瓜相机、超级变焦相机、数字单透镜反射(DSLR)相机)等。
移动计算设备的示例也可以包括被布置为人所穿戴的计算机(例如腕部计算机、手指计算机、耳环计算机、眼镜计算机、带夹计算机、臂带计算机、鞋计算机、衣物计算机以及其它可穿戴计算机)。在各个实现方式中,例如,移动计算设备可以实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。虽然可以通过示例的方式以实现为智能电话的移动计算设备描述一些实施例,但应理解,同样可以使用其它无线移动计算设备实现其它实现方式。在该上下文中,实现方式并非受限。
如图42所示,设备4200可以包括具有前部4201和后部4202的外壳。设备4200包括显示器4204、输入/输出(I/O)设备4206以及集成式天线4208。设备4200也可以包括导航特征4212。I/O设备4206可以包括任何合适的I/O设备,以用于将信息录入移动计算设备中。用于I/O设备4206的示例可以包括字母数字键盘、数字键区、触摸板、输入键、按钮、开关、麦克风、扬声器、语音识别设备和软件等。信息也可以通过麦克风4214的方式录入到设备4200中,或可以通过话音识别设备得以数字化。如所示,设备4200可以包括(例如,包括本文所描述的至少一个透镜、光圈和成像传感器的)相机4205以及集成到设备4200的后部4202(或其它地方)的闪光灯4210。在该上下文中,实现方式并非受限。
可以使用硬件元件、软件元件或二者的组合实现本文所描述的设备和处理的各种形式。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、***程序、机器程序、操作***软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定实现方式是否使用硬件元件和/或软件元件来实现可以根据任何数量的因素(例如期望的计算速率、功率等级、热量容限、处理周期预算、输入数据率、存储器资源、数据总线速度以及其它设计或性能约束)而变化。
可以通过当由机器读取时使得机器制造逻辑以执行本文所描述的技术的表示处理器内的各个逻辑的机器可读介质上所存储的代表性指令实现至少一个实现方式的一个或多个方面。称为“IP核”的这些表示可以存储在有形机器可读介质上并且提供给各个消费者或制造场所,以加载到实际上制作逻辑或处理器的制造机器中。
虽然已经参照各个实现方式描述本文所阐述的特定特征,但该描述并非旨在理解为限制性的意义。因此,本文所描述的实现方式的各种修改以及对于本公开所属领域的技术人员显然的其它实现方式看作处于本公开的精神和范围内。
以下示例属于其它实现方式。
一种计算机实现的相机透镜失真校正的方法,包括:接收场景的因广角相机透镜而失真的至少一个失真图像上的图像点的位置数据;接收将要用于形成示出所述场景的无失真图像的无失真像素网格的像素位置;确定从失真中心延伸到所述失真图像上的各图像点位置或所述无失真像素网格上的像素位置的半径;通过使用至少一个半径在查找表(LUT)上查找失真半径值与无失真半径值之间的比率获得所述比率;通过使用所述比率确定所述像素位置之一与所述图像点位置中的对应图像点位置之间的对应性,并且针对不同像素位置或图像点位置进行重复,以形成多个对应性;以及通过使用所述多个对应性以将图像数据放置在所述无失真像素位置上来构造所述无失真图像。
作为另一实现方式,所述方法可以包括:其中,所述半径从所述失真图像上的失真中心延伸,并且延伸到所述失真图像上的各图像点位置;其中,所述半径从投影到所述无失真像素网格上的所述失真中心延伸,并且延伸到所述无失真像素网格上的像素位置;以及其中,对所述LUT的输入值是所述半径的平方。所述方法还包括:形成均用于不同视场的广角透镜的多个LUT;将至少一个LUT保存在处理器可访问的存储器上,所述处理器对来自使用与所述LUT关联的透镜的相机的图像执行所述失真校正;以及以下中的至少一个:(1)形成用于特定视场角度的单个LUT,以及(2)通过使用样条运算形成所述LUT。所述方法可以还包括:在水平方向和垂直方向二者上分开地获得所述对应性,以通过在两个公式中分开地使用所述比率提供所述图像的2D坐标;当失真在水平方向和垂直方向二者上并不相同时,在所述公式之一中应用缩放值。
所述方法可以还包括,其中,使用半径比率确定所述对应性称为透镜失真校正(LDC);并且所述方法包括:执行具有多个自由度的多个系数的基于单应性的失真校正,要么(a)在执行所述LDC之前,以提供将要用作所述无失真像素位置的修改后的图像点位置,以在执行所述LDC的同时确定所述像素位置的半径,要么(b)在执行所述LDC之后,以进一步修改所述图像点位置与所述无失真图像上的像素位置之间的对应性。所述方法可以还包括,其中,所述无失真图像处的对应像素位置上所放置的所述无失真图像点位置是锚定点,并且所述方法包括:在所述无失真图像上的锚定点之间内插点;使用除了中央处理单元(CPU)之外的图像处理单元执行失真校正操作的内插;将所述图像划分为块;以及由除了中央处理单元之外的并且具有与单个块的大小关联而设置的容量的图像处理硬件执行所述失真校正。
作为又一实现方式,一种相机透镜失真校正的***,包括:至少一个存储器;至少一个处理器,以通信方式耦合到所述存储器;以及失真校正单元,由所述至少一个处理器单元操作,以通过以下步骤进行操作:接收场景的因广角相机透镜而失真的至少一个失真图像的图像点的位置数据;接收无失真像素网格的像素位置;使用所述图像点位置和像素位置执行第一校正操作,以生成中间图像点位置;使用所述中间图像点位置执行第二校正操作,以生成将要用于形成所述场景的无失真图像的修改后的图像点位置;执行具有多个单应性系数的基于单应性的失真校正,作为所述第一操作和第二操作之一;以及执行非单应性透镜失真校正(LDC)。
作为另一示例,所述***包括:其中,要么在所述LDC之前要么在所述LDC之后执行所述单应性;并且其中,执行基于单应性的失真校正包括:使用单应性系数公式执行逆单应性计算,所述单应性系数公式使用无失真像素网格位置作为对所述公式的输入,以计算匹配失真图像点位置。所述***具有通过以下操作进行操作的失真校正单元:将所述图像划分为块;获得将要用于特定相机以及所述相机上的特定透镜的预定单应性系数;在至少一个块上应用单应性系数,其与至少一个其它块的单应性系数不同;以及同时逐块地执行第一校正操作和第二校正操作二者。所述***还包括,其中,执行所述失真校正的所述至少一个处理单元是除了中央处理单元之外的并且具有与单个块的大小关联而设置的容量的图像处理硬件;并且其中,所述失真校正单元通过以下中的至少一个计算切向失真分量进行操作:(a)与在应用基于LUT的LDC之后所确定的所述失真输入图像坐标的所得坐标值相加,以及(b)用以调整单应性系数;其中,执行所述LDC至少部分地基于从失真中心延伸并且延伸到所述失真图像上的各图像点位置以及所述无失真像素网格上的像素位置二者的半径的比率。所述***还包括:从至少一个预定查找表获得所述比率。
作为一种方法,至少一种计算机可读介质,包括多个指令,其响应于在计算设备上执行而使所述计算设备通过以下步骤进行操作:接收场景的因广角相机透镜而失真的至少一个失真图像的图像点的位置数据;接收无失真像素网格的像素位置;使用所述图像点位置和像素位置执行第一校正操作,以生成中间图像点位置;使用所述中间图像点位置执行第二校正操作,以生成将要用于形成所述场景的无失真图像的修改后的图像点位置;执行具有多个单应性系数的基于单应性的失真校正,作为所述第一操作和第二操作之一;以及取决于形成所述失真图像的广角透镜的视场的大小来提供用于执行(1)或(2)中的任一的选项,作为所述第一操作和第二操作中的另一个,其中,(1)是非单应性透镜失真校正(LDC),以及(2)是将球面坐标变换为笛卡尔坐标的解扭曲校正。作为另一方法,所述指令包括,其中,所述LDC使用半径比率查找表。
在另一示例中,至少一种机器可读介质可以包括多个指令,其响应于在计算设备上执行而使所述计算设备执行以上示例中的任一项所述的方法。
在又一示例中,一种装置可以包括用于执行以上示例中的任一项所述的方法的模块。
以上示例可以包括特征的特定组合。然而,以上示例不限于此,并且在各个实现方式中,以上示例可以包括仅承担这些特征的子集,承担这些特征的不同顺序,承担这些特征的不同组合,和/或承担除了明确列出的这些特征之外的附加特征。例如,可以关于任何示例装置、示例***和/或示例物品实现本文关于任何示例方法所描述的所有特征,并且反之亦然。

Claims (23)

1.一种计算机实现的相机透镜失真校正的方法,包括:
接收场景的因广角相机透镜而失真的至少一个失真图像上的图像点的位置数据;
接收将要用于形成示出所述场景的无失真图像的无失真像素网格的像素位置;
确定从失真中心延伸到所述失真图像上的各图像点位置的失真半径或者确定从投影到所述无失真像素网格上的失真中心延伸到所述无失真像素网格上的像素位置的无失真半径;
通过使用所确定的半径在查找表LUT上查找失真半径值与无失真半径值之间的比率,来获得所述比率;
通过使用所述比率确定所述像素位置之一与所述图像点位置中的对应图像点位置之间的对应性,并且针对不同像素位置或图像点位置进行重复,以形成多个对应性;以及
通过使用所述多个对应性将图像数据放置在所述无失真像素位置上,来构造所述无失真图像。
2.如权利要求1所述的方法,其中,所述LUT的输入值是所确定的半径的平方。
3.如权利要求1或2所述的方法,包括:
针对不同视场的广角透镜各自形成多个LUT;以及
将至少一个LUT保存在处理器可访问的存储器上,所述处理器对来自使用与所述LUT关联的透镜的相机的图像执行失真校正。
4.如权利要求1所述的方法,包括:
在水平方向和垂直方向二者上分开地获得所述对应性,以通过在两个方向上分开地使用所述比率来提供所述图像的2D坐标;以及
当失真在水平方向和垂直方向二者上并不相同时,在两个方向之一上应用缩放值。
5.如权利要求1所述的方法,其中,使用半径比率确定所述对应性称为透镜失真校正(LDC);并且所述方法包括:
在执行所述LDC之前,执行具有多个自由度的多个系数的基于单应性的失真校正,以提供将要用作所述无失真像素位置的修改后的图像点位置,以在执行所述LDC的同时确定所述像素位置的半径。
6.如权利要求1所述的方法,其中,使用半径比率确定对应性称为透镜失真校正(LDC);并且所述方法包括:
在执行所述LDC之后,执行具有多个自由度的多个系数的基于单应性的失真校正,以进一步修改所述无失真图像上的图像点位置与像素位置之间的对应性。
7.如权利要求1所述的方法,其中,所述无失真图像处的像素位置上所放置的对应的无失真图像点位置是锚定点,并且所述方法包括:
在所述无失真图像上的锚定点之间内插点。
8.如权利要求7所述的方法,包括:
使用除了中央处理单元(CPU)之外的图像处理单元来执行失真校正操作的内插。
9.如权利要求1所述的方法,包括:
将所述图像划分成块;以及
由除了中央处理单元之外的并且具有与单个块的大小关联而设置的容量的图像处理硬件执行失真校正。
10.一种相机透镜失真校正的***,包括:
至少一个存储器;
至少一个处理器,以通信方式耦合到所述存储器;和
失真校正单元,由所述至少一个处理器单元操作,以通过以下步骤进行操作:
接收场景的因广角相机透镜而失真的至少一个失真图像的图像点的位置数据;
接收无失真像素网格的像素位置;
使用所述图像点位置和像素位置执行第一校正操作,以生成中间图像点位置;
使用所述中间图像点位置执行第二校正操作,以生成将要用于形成所述场景的无失真图像的修改后的图像点位置;
执行具有多个单应性系数的基于单应性的失真校正,作为所述第一校正操作和所述第二校正操作之一;以及
执行非单应性透镜失真校正(LDC)。
11.如权利要求10所述的***,其中,在所述LDC之前执行所述单应性。
12.如权利要求10所述的***,其中,在所述LDC之后执行所述单应性。
13.如权利要求10所述的***,其中,执行基于单应性的失真校正包括:
使用单应性系数公式执行逆单应性计算,所述单应性系数公式使用无失真像素网格位置作为对所述公式的输入,以计算匹配失真图像点位置。
14.如权利要求10所述的***,包括:
将所述图像划分成块;
获得将要与特定相机以及所述相机上的特定透镜一起使用的预定单应性系数;以及
在至少一个块上应用与至少一个其它块的单应性系数不同的单应性系数。
15.如权利要求10所述的***,包括:
将所述图像划分成块;以及
逐块地执行第一校正操作和第二校正操作二者。
16.如权利要求15所述的***,其中,执行失真校正的至少一个处理单元是除了中央处理单元之外的并且具有与单个块的大小关联而设置的容量的图像处理硬件。
17.如权利要求10所述的***,其中,所述失真校正单元通过计算以下中的至少一个的切向失真分量进行操作:
与在应用基于LUT的LDC之后所确定的失真输入图像坐标的所得坐标值相加,以及
用于调整单应性系数。
18.如权利要求10所述的***,其中,执行所述LDC至少部分地基于从失真中心延伸并且延伸到所述失真图像上的各图像点位置和所述无失真像素网格上的像素位置二者的半径的比率。
19.如权利要求18所述的***,其中,从至少一个预定查找表获得所述比率。
20.一种机器可读介质,包括多个指令,所述指令响应于在计算设备上执行而使所述计算设备通过以下步骤进行操作:
接收场景的因广角相机透镜而失真的至少一个失真图像的图像点的位置数据;
接收无失真像素网格的像素位置;
使用所述图像点位置和像素位置执行第一校正操作,以生成中间图像点位置;
使用所述中间图像点位置执行第二校正操作,以生成将要用于形成所述场景的无失真图像的修改后的图像点位置;
执行具有多个单应性系数的基于单应性的失真校正,作为所述第一校正操作和所述第二校正操作之一;以及
根据形成所述失真图像的广角透镜的视场的大小来提供执行(1)或(2)中任一的选项,作为所述第一校正操作和所述第二校正操作中的另一个,其中,
(1)是非单应性透镜失真校正(LDC),以及
(2)是将球面坐标变换为笛卡尔坐标的解扭曲校正。
21.如权利要求20所述的机器可读介质,其中,所述LDC使用半径比率查找表。
22.一种机器可读介质,包括多个指令,所述指令响应于在计算设备上执行而使所述计算设备执行如权利要求1-9中任一项所述的方法。
23.一种装置,包括用于执行如权利要求1-9中任一项所述的方法的模块。
CN201811157897.3A 2017-10-04 2018-09-30 对通过使用广角透镜捕获的图像的图像失真校正的方法和*** Active CN109618090B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/724,993 2017-10-04
US15/724,993 US10572982B2 (en) 2017-10-04 2017-10-04 Method and system of image distortion correction for images captured by using a wide-angle lens

Publications (2)

Publication Number Publication Date
CN109618090A CN109618090A (zh) 2019-04-12
CN109618090B true CN109618090B (zh) 2024-06-28

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103116878A (zh) * 2013-02-25 2013-05-22 徐渊 校正图像桶形失真的方法、装置以及图像处理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103116878A (zh) * 2013-02-25 2013-05-22 徐渊 校正图像桶形失真的方法、装置以及图像处理装置

Similar Documents

Publication Publication Date Title
US10572982B2 (en) Method and system of image distortion correction for images captured by using a wide-angle lens
US10855966B2 (en) View interpolation of multi-camera array images with flow estimation and image super resolution using deep learning
CN107925755B (zh) 针对图像处理进行平面表面检测的方法和***
CN109660782B (zh) 减少立体深度传感器成像中的纹理化ir图案
CN107274338B (zh) 用于深度图的低等待时间变形的***、方法和装置
CN112104854A (zh) 相机视图之间的鲁棒虚拟视图生成的方法和***
US10762664B2 (en) Multi-camera processor with feature matching
US11871110B2 (en) Single image ultra-wide fisheye camera calibration via deep learning
US9367916B1 (en) Method and system of run-time self-calibrating lens shading correction
US10957027B2 (en) Virtual view interpolation between camera views for immersive visual experience
US10097793B2 (en) Method and system of depth data filling of shadows for image processing
US9807313B2 (en) Method and system of increasing integer disparity accuracy for camera images with a diagonal layout
US9230297B2 (en) Systems, methods, and computer program products for compound image demosaicing and warping
US20210103764A1 (en) Accurate optical flow estimation in stereo pairs of equirectangular images
US10825131B2 (en) Circular fisheye camera array rectification
CN109618090B (zh) 对通过使用广角透镜捕获的图像的图像失真校正的方法和***
US11978177B2 (en) Method and system of image processing of omnidirectional images with a viewpoint shift
US11106042B2 (en) Image processing apparatus, head-mounted display, and image displaying method
JP2020167657A (ja) 画像処理装置、ヘッドマウントディスプレイ、および画像表示方法
JP2020167659A (ja) 画像処理装置、ヘッドマウントディスプレイ、および画像表示方法

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20221024

Address after: Irish Dublin

Applicant after: Taihao Research Co.,Ltd.

Address before: California, USA

Applicant before: INTEL Corp.

GR01 Patent grant