一种数据处理方法、装置、计算机设备以及可读存储介质转让专利

申请号 : CN202210500935.0

文献号 : CN114596368B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈法圣林之阳孙磊王薷健陈湘广

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请实施例提供了一种数据处理方法、装置、计算机设备以及可读存储介质,该方法涉及云技术、虚拟现实等领域,方法包括:获取与空间对象相关联的目标图像;空间对象包括由空间线段所组成的单元标识码;在目标图像中,获取由空间线段所构成的空间虚拟直线,将空间虚拟直线的直线标识作为空间线段的线段标识,确定空间虚拟直线所映射的消失点标识;根据线段标识和空间线段中的空间角点的角点坐标,生成空间虚拟直线的直线方程;根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标,基于消失点坐标确定拍摄组件针对目标图像的组件内参。采用本申请,可以降低对组件内参进行标定的速度和成本。

权利要求 :

1.一种数据处理方法,其特征在于,包括:

获取与空间对象相关联的目标图像;所述目标图像是由拍摄组件对所述空间对象进行拍摄所得到的;所述空间对象包括由空间线段所组成的单元标识码;

在所述目标图像中,获取由所述空间线段所构成的空间虚拟直线,将所述空间虚拟直线的直线标识作为所述空间线段的线段标识,确定所述空间虚拟直线所映射的消失点标识;

根据所述线段标识和所述空间线段中的空间角点的角点坐标,生成所述空间虚拟直线的直线方程;

根据所述消失点标识和所述直线方程,生成所述消失点标识所指示的消失点的消失点坐标,基于所述消失点坐标确定所述拍摄组件针对所述目标图像的组件内参。

2.根据权利要求1所述的方法,其特征在于,所述在所述目标图像中,获取由所述空间线段所构成的空间虚拟直线,包括:识别所述目标图像中的所述单元标识码;

对所述单元标识码中处于相同方向平面上的空间线段进行连接,通过延伸所连接的空间线段,得到空间虚拟直线;

则所述方法还包括:

在识别出所述目标图像中的所述单元标识码时,生成所述单元标识码中的空间角点在所述目标图像中的角点坐标。

3.根据权利要求1所述的方法,其特征在于,所述将所述空间虚拟直线的直线标识作为所述空间线段的线段标识,包括:根据所述空间虚拟直线和所述目标图像对应的空间坐标轴之间的位置关系,为所述空间虚拟直线分配直线标识;

将所述空间虚拟直线的直线标识作为构成所述空间虚拟直线的空间线段的线段标识。

4.根据权利要求3所述的方法,其特征在于,所述直线标识包括第一直线标识和第二直线标识;

所述根据所述空间虚拟直线和所述目标图像对应的空间坐标轴之间的位置关系,为所述空间虚拟直线分配直线标识,包括:获取所述目标图像对应的空间坐标轴所构成的目标空间平面;构成所述目标空间平面的空间坐标轴包括第一坐标轴和第二坐标轴;

对所述目标空间平面中的单元标识码进行遍历,得到与所述目标空间平面中的单元标识码相关联的空间虚拟直线,将与所述目标空间平面中的单元标识码相关联的空间虚拟直线确定为目标空间虚拟直线;

为平行于所述第一坐标轴的目标空间虚拟直线分配第一直线标识,为平行于所述第二坐标轴的目标空间虚拟直线分配第二直线标识;所述第一直线标识按照所述第二坐标轴进行排序,所述第二直线标识按照所述第一坐标轴进行排序。

5.根据权利要求1所述的方法,其特征在于,所述确定所述空间虚拟直线所映射的消失点标识,包括:将所述目标图像对应的空间坐标轴中的坐标轴的数量作为消失点数量;所述消失点数量为至少两个;

根据所述空间虚拟直线和所述空间坐标轴之间的位置关系,在至少两个消失点标识中确定所述空间虚拟直线所映射的消失点标识;一个消失点标识对应一个消失点。

6.根据权利要求1所述的方法,其特征在于,所述根据所述线段标识和所述空间线段中的空间角点的角点坐标,生成所述空间虚拟直线的直线方程,包括:根据所述线段标识确定所述空间线段所属的空间虚拟直线,将所述空间线段中的空间角点的角点坐标作为所述空间虚拟直线上的关键点坐标;

基于所述关键点坐标生成所述空间虚拟直线的直线方程。

7.根据权利要求6所述的方法,其特征在于,所述空间虚拟直线包括空间虚拟直线Si;所述i为正整数;

所述方法还包括:

为所述单元标识码分配单元码标,将所述单元码标和组成所述单元标识码的空间线段的线段标识关联存储至第一表格中;

则所述根据所述线段标识确定所述空间线段所属的空间虚拟直线,将所述空间线段中的空间角点的角点坐标作为所述空间虚拟直线上的关键点坐标,包括:根据所述单元标识码的单元码标,从所述第一表格中获取组成所述单元标识码的空间线段的线段标识;

若从所述第一表格中获取到的线段标识为所述空间虚拟直线Si的直线标识,则将所述空间虚拟直线Si作为所述空间线段所属的空间虚拟直线;

获取所述空间线段中的空间角点的角点坐标;所述空间角点包括第一角点和第二角点;

将所述第一角点的角点坐标和所述第二角点的角点坐标作为所述空间线段所属的空间虚拟直线Si上的关键点坐标。

8.根据权利要求6所述的方法,其特征在于,所述空间虚拟直线包括空间虚拟直线Si;所述i为正整数;

所述方法还包括:

获取所述目标图像对应的空间坐标轴所构成的一个或多个空间平面,根据所述一个或多个空间平面确定所述目标图像中的最大单元标识码数量,根据所述最大单元标识码数量确定所述空间虚拟直线所对应的最大关键点数量;

根据所述最大关键点数量和所述空间虚拟直线的直线数量,生成直线拟合矩阵,将所述空间虚拟直线的直线标识和所述空间虚拟直线上的关键点坐标关联存储至所述直线拟合矩阵;

则所述基于所述关键点坐标生成所述空间虚拟直线的直线方程,包括:从所述直线拟合矩阵中获取所述空间虚拟直线Si上的关键点坐标,对所述空间虚拟直线Si上的关键点坐标中的关键点参数进行平均处理,得到空间虚拟直线Si对应的平均关键点参数,根据所述空间虚拟直线Si对应的平均关键点参数和所述空间虚拟直线Si对应的关键点参数,生成所述空间虚拟直线Si对应的参数矩阵;

对所述空间虚拟直线Si对应的参数矩阵进行奇异值分解,得到所述空间虚拟直线Si对应的主特征向量矩阵;

获取所述空间虚拟直线Si对应的参数方程,根据所述空间虚拟直线Si对应的主特征向量矩阵中的矩阵参数,确定空间虚拟直线Si对应的参数方程中的直线参数,将确定直线参数的参数方程作为所述空间虚拟直线Si的直线方程。

9.根据权利要求8所述的方法,其特征在于,所述方法还包括:

将所述空间虚拟直线的直线标识和所述空间虚拟直线所映射的消失点标识关联存储至第二表格中;

根据所述空间虚拟直线的直线数量和所述直线方程中的直线参数的参数数量,生成直线方程存储矩阵,将所述空间虚拟直线的直线标识和所述空间虚拟直线对应的直线参数关联存储至所述直线方程存储矩阵;

则所述根据所述消失点标识和所述直线方程,生成所述消失点标识所指示的消失点的消失点坐标,包括:从所述第二表格中获取所述空间虚拟直线所映射的消失点标识,从所述直线方程存储矩阵中获取所述空间虚拟直线对应的直线参数;

根据所述消失点标识对所述空间虚拟直线对应的直线参数进行划分,得到所述消失点标识对应的空间划分矩阵;所述空间划分矩阵对应的空间虚拟直线为空间划分直线;

根据所述空间划分矩阵对所述空间划分直线进行最小二乘拟合,生成所述空间划分直线的直线交点,将所述空间划分直线的直线交点作为所述消失点标识对应的消失点的消失点坐标。

10.根据权利要求9所述的方法,其特征在于,所述空间虚拟直线对应的直线参数包括第一直线参数、第二直线参数和第三直线参数;

所述根据所述消失点标识对所述空间虚拟直线对应的直线参数进行划分,得到所述消失点标识对应的空间划分矩阵,包括:对所述消失点标识的候选直线数量进行初始化,根据最大关键点数量对第一辅助矩阵和第二辅助矩阵进行初始化;

对所述空间虚拟直线进行遍历,根据所述消失点标识将遍历得到的空间虚拟直线中的第一直线参数和第二直线参数填入至所述第一辅助矩阵,根据所述消失点标识将遍历得到的空间虚拟直线中的第三直线参数填入至所述第二辅助矩阵;所述第一直线参数和第二直线参数在所述第一辅助矩阵中的位置是由所述候选直线数量所确定的;所述第三直线参数在所述第二辅助矩阵中的位置是由所述候选直线数量所确定的;

对所述候选直线数量进行累加处理,在遍历完成所述空间虚拟直线之后,得到目标直线数量;

将从所述第一辅助矩阵中获取的行数为所述目标直线数量的直线参数作为新的第一辅助矩阵,将从所述第二辅助矩阵中获取的行数为所述目标直线数量的直线参数作为新的第二辅助矩阵,将所述新的第一辅助矩阵和所述新的第二辅助矩阵作为所述消失点标识对应的空间划分矩阵。

11.根据权利要求9所述的方法,其特征在于,所述基于所述消失点坐标生成所述拍摄组件针对所述目标图像的组件内参,包括:确定所述空间划分直线中的每两条空间虚拟直线之间的直线夹角,从所述每两条空间虚拟直线之间的直线夹角中获取最大直线夹角,若所述最大直线夹角大于或等于夹角阈值,则确定所述空间划分直线满足消失点合格条件;

基于满足所述消失点合格条件的空间划分直线对应的消失点坐标,生成所述拍摄组件针对所述目标图像的组件内参。

12.根据权利要求11所述的方法,其特征在于,所述满足所述消失点合格条件的空间划分直线对应的消失点坐标包括第一消失点坐标和第二消失点坐标;

所述基于满足所述消失点合格条件的空间划分直线对应的消失点坐标,生成所述拍摄组件针对所述目标图像的组件内参,包括:根据所述目标图像的图像高度和图像宽度,确定所述拍摄组件在所述目标图像中的光心横坐标和光心纵坐标;所述光心横坐标和所述光心纵坐标用于表示所述拍摄组件的组件光心的光心坐标;

确定所述拍摄组件的组件焦点到所述第一消失点坐标的第一向量,确定所述拍摄组件的组件焦点到所述第二消失点坐标的第二向量;

根据第一消失点坐标对应的空间划分直线和所述第二消失点坐标对应的空间划分直线之间的垂直关系,确定所述第一向量和所述第二向量之间的垂直关系,根据所述第一向量和所述第二向量之间的垂直关系,建立与所述第一向量和所述第二向量相关联的约束方程;

根据所述第一消失点坐标、所述第二消失点坐标和所述约束方程,确定所述拍摄组件的组件焦距;

将所述光心坐标和所述组件焦距作为所述拍摄组件针对所述目标图像的组件内参。

13.根据权利要求1所述的方法,其特征在于,所述空间对象对应于至少两个坐标轴;所述至少两个坐标轴中的每两个坐标轴用于构成空间平面,所述每两个坐标轴之间存在垂直关系;所述空间平面包括具有相同尺寸的单元标识码。

14.一种数据处理装置,其特征在于,包括:

图像获取模块,用于获取与空间对象相关联的目标图像;所述目标图像是由拍摄组件对所述空间对象进行拍摄所得到的;所述空间对象包括由空间线段所组成的单元标识码;

直线获取模块,用于在所述目标图像中,获取由所述空间线段所构成的空间虚拟直线,将所述空间虚拟直线的直线标识作为所述空间线段的线段标识,确定所述空间虚拟直线所映射的消失点标识;

方程生成模块,用于根据所述线段标识和所述空间线段中的空间角点的角点坐标,生成所述空间虚拟直线的直线方程;

内参确定模块,用于根据所述消失点标识和所述直线方程,生成所述消失点标识所指示的消失点的消失点坐标,基于所述消失点坐标确定所述拍摄组件针对所述目标图像的组件内参。

15.一种计算机设备,其特征在于,包括:处理器和存储器;

所述处理器与所述存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1‑13任一项所述的方法。

16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1‑13任一项所述的方法。

说明书 :

一种数据处理方法、装置、计算机设备以及可读存储介质

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、计算机设备以及可读存储介质。

背景技术

[0002] 目前,在对拍摄组件的组件内参(即相机内参)进行标定时,需要通过拍摄组件对标定板(即空间对象)进行多角度拍摄,进而根据多角度拍摄所得到的多张图像,生成拍摄组件的组件内参;或者,需要通过拍摄组件对标定板进行视频拍摄,进而根据从视频拍摄所得到的拍摄视频中截取的多张视频帧,生成拍摄组件的组件内参。然而,通过拍摄的多张图像或截取的多张视频帧生成组件内参的方式,需要花费时间对多张图像进行处理,所以增加了对组件内参进行标定的速度。
[0003] 此外,现有技术还可以通过在拍摄组件中安装硬件设备(例如,跟焦器),通过硬件设备直接读取拍摄组件的组件内参,然而,硬件设备的价格十分昂贵,且安装部署非常麻烦,从而提高了对组件内参进行标定的成本。

发明内容

[0004] 本申请实施例提供一种数据处理方法、装置、计算机设备以及可读存储介质,可以降低对组件内参进行标定的速度和成本。
[0005] 本申请实施例一方面提供了一种数据处理方法,包括:
[0006] 获取与空间对象相关联的目标图像;目标图像是由拍摄组件对空间对象进行拍摄所得到的;空间对象包括由空间线段所组成的单元标识码;
[0007] 在目标图像中,获取由空间线段所构成的空间虚拟直线,将空间虚拟直线的直线标识作为空间线段的线段标识,确定空间虚拟直线所映射的消失点标识;
[0008] 根据线段标识和空间线段中的空间角点的角点坐标,生成空间虚拟直线的直线方程;
[0009] 根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标,基于消失点坐标确定拍摄组件针对目标图像的组件内参。
[0010] 本申请实施例一方面提供了一种数据处理装置,包括:
[0011] 图像获取模块,用于获取与空间对象相关联的目标图像;目标图像是由拍摄组件对空间对象进行拍摄所得到的;空间对象包括由空间线段所组成的单元标识码;
[0012] 直线获取模块,用于在目标图像中,获取由空间线段所构成的空间虚拟直线,将空间虚拟直线的直线标识作为空间线段的线段标识,确定空间虚拟直线所映射的消失点标识;
[0013] 方程生成模块,用于根据线段标识和空间线段中的空间角点的角点坐标,生成空间虚拟直线的直线方程;
[0014] 内参确定模块,用于根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标,基于消失点坐标确定拍摄组件针对目标图像的组件内参。
[0015] 其中,直线获取模块包括:
[0016] 直线获取单元,用于识别目标图像中的单元标识码;
[0017] 直线获取单元,用于对单元标识码中处于相同方向平面上的空间线段进行连接,通过延伸所连接的空间线段,得到空间虚拟直线;
[0018] 则直线获取模块,还具体用于在识别出目标图像中的单元标识码时,生成单元标识码中的空间角点在目标图像中的角点坐标。
[0019] 其中,直线获取模块包括:
[0020] 标识分配单元,用于根据空间虚拟直线和目标图像对应的空间坐标轴之间的位置关系,为空间虚拟直线分配直线标识;
[0021] 标识分配单元,用于将空间虚拟直线的直线标识作为构成空间虚拟直线的空间线段的线段标识。
[0022] 其中,直线标识包括第一直线标识和第二直线标识;
[0023] 标识分配单元,具体用于获取目标图像对应的空间坐标轴所构成的目标空间平面;构成目标空间平面的空间坐标轴包括第一坐标轴和第二坐标轴;
[0024] 标识分配单元,具体用于对目标空间平面中的单元标识码进行遍历,得到与目标空间平面中的单元标识码相关联的空间虚拟直线,将与目标空间平面中的单元标识码相关联的空间虚拟直线确定为目标空间虚拟直线;
[0025] 标识分配单元,具体用于为平行于第一坐标轴的目标空间虚拟直线分配第一直线标识,为平行于第二坐标轴的目标空间虚拟直线分配第二直线标识;第一直线标识按照第二坐标轴进行排序,第二直线标识按照第一坐标轴进行排序。
[0026] 其中,直线获取模块包括:
[0027] 标识确定单元,用于将目标图像对应的空间坐标轴中的坐标轴的数量作为消失点数量;消失点数量为至少两个;
[0028] 标识确定单元,用于根据空间虚拟直线和空间坐标轴之间的位置关系,在至少两个消失点标识中确定空间虚拟直线所映射的消失点标识;一个消失点标识对应一个消失点。
[0029] 其中,方程生成模块包括:
[0030] 坐标确定单元,用于根据线段标识确定空间线段所属的空间虚拟直线,将空间线段中的空间角点的角点坐标作为空间虚拟直线上的关键点坐标;
[0031] 方程生成单元,用于基于关键点坐标生成空间虚拟直线的直线方程。
[0032] 其中,空间虚拟直线包括空间虚拟直线Si;i为正整数;
[0033] 方程生成模块,还具体用于为单元标识码分配单元码标,将单元码标和组成单元标识码的空间线段的线段标识关联存储至第一表格中;
[0034] 则坐标确定单元,具体用于根据单元标识码的单元码标,从第一表格中获取组成单元标识码的空间线段的线段标识;
[0035] 坐标确定单元,具体用于若从第一表格中获取到的线段标识为空间虚拟直线Si的直线标识,则将空间虚拟直线Si作为空间线段所属的空间虚拟直线;
[0036] 坐标确定单元,具体用于获取空间线段中的空间角点的角点坐标;空间角点包括第一角点和第二角点;
[0037] 坐标确定单元,具体用于将第一角点的角点坐标和第二角点的角点坐标作为空间线段所属的空间虚拟直线Si上的关键点坐标。
[0038] 其中,空间虚拟直线包括空间虚拟直线Si;i为正整数;
[0039] 方程生成模块,还具体用于获取目标图像对应的空间坐标轴所构成的一个或多个空间平面,根据一个或多个空间平面确定目标图像中的最大单元标识码数量,根据最大单元标识码数量确定空间虚拟直线所对应的最大关键点数量;
[0040] 方程生成模块,还具体用于根据最大关键点数量和空间虚拟直线的直线数量,生成直线拟合矩阵,将空间虚拟直线的直线标识和空间虚拟直线上的关键点坐标关联存储至直线拟合矩阵;
[0041] 则方程生成单元,用于从直线拟合矩阵中获取空间虚拟直线Si上的关键点坐标,对空间虚拟直线Si上的关键点坐标中的关键点参数进行平均处理,得到空间虚拟直线Si对应的平均关键点参数,根据空间虚拟直线Si对应的平均关键点参数和空间虚拟直线Si对应的关键点参数,生成空间虚拟直线Si对应的参数矩阵;
[0042] 方程生成单元,用于对空间虚拟直线Si对应的参数矩阵进行奇异值分解,得到空间虚拟直线Si对应的主特征向量矩阵;
[0043] 方程生成单元,用于获取空间虚拟直线Si对应的参数方程,根据空间虚拟直线Si对应的主特征向量矩阵中的矩阵参数,确定空间虚拟直线Si对应的参数方程中的直线参数,将确定直线参数的参数方程作为空间虚拟直线Si的直线方程。
[0044] 其中,装置还具体用于将空间虚拟直线的直线标识和空间虚拟直线所映射的消失点标识关联存储至第二表格中;
[0045] 装置还具体用于根据空间虚拟直线的直线数量和直线方程中的直线参数的参数数量,生成直线方程存储矩阵,将空间虚拟直线的直线标识和空间虚拟直线对应的直线参数关联存储至直线方程存储矩阵;
[0046] 则内参确定模块包括:
[0047] 参数获取单元,用于从第二表格中获取空间虚拟直线所映射的消失点标识,从直线方程存储矩阵中获取空间虚拟直线对应的直线参数;
[0048] 矩阵确定单元,用于根据消失点标识对空间虚拟直线对应的直线参数进行划分,得到消失点标识对应的空间划分矩阵;空间划分矩阵对应的空间虚拟直线为空间划分直线;
[0049] 消失点拟合单元,用于根据空间划分矩阵对空间划分直线进行最小二乘拟合,生成空间划分直线的直线交点,将空间划分直线的直线交点作为消失点标识对应的消失点的消失点坐标。
[0050] 其中,空间虚拟直线对应的直线参数包括第一直线参数、第二直线参数和第三直线参数;
[0051] 矩阵确定单元,具体用于对消失点标识的候选直线数量进行初始化,根据最大关键点数量对第一辅助矩阵和第二辅助矩阵进行初始化;
[0052] 矩阵确定单元,具体用于对空间虚拟直线进行遍历,根据消失点标识将遍历得到的空间虚拟直线中的第一直线参数和第二直线参数填入至第一辅助矩阵,根据消失点标识将遍历得到的空间虚拟直线中的第三直线参数填入至第二辅助矩阵;第一直线参数和第二直线参数在第一辅助矩阵中的位置是由候选直线数量所确定的;第三直线参数在第二辅助矩阵中的位置是由候选直线数量所确定的;
[0053] 矩阵确定单元,具体用于对候选直线数量进行累加处理,在遍历完成空间虚拟直线之后,得到目标直线数量;
[0054] 矩阵确定单元,具体用于将从第一辅助矩阵中获取的行数为目标直线数量的直线参数作为新的第一辅助矩阵,将从第二辅助矩阵中获取的行数为目标直线数量的直线参数作为新的第二辅助矩阵,将新的第一辅助矩阵和新的第二辅助矩阵作为消失点标识对应的空间划分矩阵。
[0055] 其中,内参确定模块包括:
[0056] 条件判断单元,用于确定空间划分直线中的每两条空间虚拟直线之间的直线夹角,从每两条空间虚拟直线之间的直线夹角中获取最大直线夹角,若最大直线夹角大于或等于夹角阈值,则确定空间划分直线满足消失点合格条件;
[0057] 内参确定单元,用于基于满足消失点合格条件的空间划分直线对应的消失点坐标,生成拍摄组件针对目标图像的组件内参。
[0058] 其中,满足消失点合格条件的空间划分直线对应的消失点坐标包括第一消失点坐标和第二消失点坐标;
[0059] 内参确定单元,具体用于根据目标图像的图像高度和图像宽度,确定拍摄组件在目标图像中的光心横坐标和光心纵坐标;光心横坐标和光心纵坐标用于表示拍摄组件的组件光心的光心坐标;
[0060] 内参确定单元,具体用于确定拍摄组件的组件焦点到第一消失点坐标的第一向量,确定拍摄组件的组件焦点到第二消失点坐标的第二向量;
[0061] 内参确定单元,具体用于根据第一消失点坐标对应的空间划分直线和第二消失点坐标对应的空间划分直线之间的垂直关系,确定第一向量和第二向量之间的垂直关系,根据第一向量和第二向量之间的垂直关系,建立与第一向量和第二向量相关联的约束方程;
[0062] 内参确定单元,具体用于根据第一消失点坐标、第二消失点坐标和约束方程,确定拍摄组件的组件焦距;
[0063] 内参确定单元,具体用于将光心坐标和组件焦距作为拍摄组件针对目标图像的组件内参。
[0064] 其中,空间对象对应于至少两个坐标轴;至少两个坐标轴中的每两个坐标轴用于构成空间平面,每两个坐标轴之间存在垂直关系;空间平面包括具有相同尺寸的单元标识码。
[0065] 本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
[0066] 处理器与存储器相连,其中,存储器用于存储计算机程序,计算机程序被处理器执行时,使得该计算机设备执行本申请实施例提供的方法。
[0067] 本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
[0068] 本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行本申请实施例提供的方法。
[0069] 在本申请实施例中,计算机设备可以通过拍摄组件对空间对象进行拍摄,得到与空间对象相关联的目标图像,这里的空间对象和目标图像均可以包括由空间线段所组成的单元标识码。进一步地,计算机设备可以在目标图像中获取由空间线段所构成的空间虚拟直线,根据空间虚拟直线上的空间线段所对应的角点坐标,生成空间虚拟直线的直线方程,进而根据空间虚拟直线所映射的消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标。其中,消失点坐标可以用于确定拍摄组件的组件内参。由此可见,本申请实施例可以获取拍摄组件对空间对象进行拍摄所得到的单张目标图像,在目标图像中实时检测平行线(即空间虚拟直线),并计算平行线所映射的消失点的消失点坐标,进而结合基于消失点的组件内参标定方法,生成拍摄组件的组件内参,可以实现通过单张图像确定拍摄组件的组件内参,不需要对多张图像进行处理,且无需使用硬件设备对组件内参进行标定,这会明显降低对组件内参进行标定的速度和成本。

附图说明

[0070] 为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0071] 图1是本申请实施例提供的一种网络架构的结构示意图;
[0072] 图2a是本申请实施例提供的一种进行数据交互的场景示意图一;
[0073] 图2b是本申请实施例提供的一种进行数据交互的场景示意图二;
[0074] 图2c是本申请实施例提供的一种进行数据交互的场景示意图三;
[0075] 图3是本申请实施例提供的一种数据处理方法的流程示意图一;
[0076] 图4是本申请实施例提供的一种识别单元标识码的场景示意图;
[0077] 图5是本申请实施例提供的一种确定组件内参的流程示意图;
[0078] 图6是本申请实施例提供的一种预先分配内存的流程示意图;
[0079] 图7是本申请实施例提供的一种数据处理方法的流程示意图二;
[0080] 图8是本申请实施例提供的一种分配直线标识的场景示意图;
[0081] 图9是本申请实施例提供的一种确定消失点标识的场景示意图;
[0082] 图10是本申请实施例提供的一种数据处理方法的流程示意图三;
[0083] 图11是本申请实施例提供的一种确定直线方程的流程示意图;
[0084] 图12是本申请实施例提供的一种数据处理方法的流程示意图四;
[0085] 图13是本申请实施例提供的一种确定消失点坐标的流程示意图;
[0086] 图14是本申请实施例提供的一种数据处理方法的流程示意图五;
[0087] 图15是本申请实施例提供的一种数据处理装置的结构示意图;
[0088] 图16是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0089] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0090] 具体的,请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。如图1所示,该网络架构可以包括服务器2000和终端设备集群。其中,终端设备集群具体可以包括一个或者多个终端设备,这里将不对终端设备集群中的终端设备的数量进行限定。如图1所示,多个终端设备具体可以包括终端设备3000a、终端设备3000b、终端设备3000c、…、终端设备3000n;终端设备3000a、终端设备3000b、终端设备3000c、…、终端设备3000n可以分别与服务器2000通过有线或无线通信方式进行直接或间接地网络连接,以便于每个终端设备可以通过该网络连接与服务器2000之间进行数据交互。
[0091] 其中,终端设备集群中的每个终端设备均可以包括:智能手机、平板电脑、笔记本电脑、台式计算机、智能家电、可穿戴设备、车载终端、智能语音交互设备、照相机等具有数据处理功能的智能终端。为便于理解,本申请实施例可以在图1所示的多个终端设备中选择一个终端设备作为目标终端设备。例如,本申请实施例可以将图1所示的终端设备3000b作为目标终端设备。
[0092] 其中,服务器2000可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
[0093] 应当理解,目标终端设备上可以集成有用于采集与空间对象相关联的目标图像的拍摄组件,这里的拍摄组件可以为目标终端设备上用于拍摄照片或视频的摄像头。其中,一个目标终端设备上可以集成安装有多个摄像头,本申请实施例以一个目标终端设备上的多个摄像头为一个拍摄组件为例进行说明。其中,空间对象可以为二维码绿幕,二维码绿幕表示印有二维码的绿幕。可选的,空间对象还可以为棋盘格绿幕,棋盘格绿幕表示印有纯色(例如,黑色)的矩形框的绿幕。此外,空间对象还可以包括拍摄主体(例如,狮子)。应当理解,本申请实施例以空间对象为二维码绿幕为例进行说明。
[0094] 其中,二维码绿幕可以为三个面:左面墙+右面墙+地面。可选的,二维码绿幕也可以为左面墙+右面墙+地面中的任意一个面,二维码绿幕还可以为左面墙+右面墙+地面中的任意两个面。二维码绿幕中的所有二维码都有唯一的图案及编号,使用标识码检测算法(二维码检测算法)能够在目标图像中将其检测到,并准确获取其在目标图像上的角点坐标。其中,对于单个二维码而言,二维码边框所形成的四个顶点可以称之为二维码角点,四个二维码角点围成的四边形的四个边即为上边直线、下边直线、左边直线和右边直线。
[0095] 可以理解的是,本申请可以将能够被二维码检测算法正确识别出来的二维码称之为可观测二维码。可以理解的是,当二维码被遮挡、二维码不清晰、或者二维码部分区域超出目标图像的画面边界后,二维码检测算法会无法检测到二维码,此时,这样的二维码不算作可观测二维码。
[0096] 为便于理解,本申请可以将二维码绿幕中的二维码称之为单元标识码,本申请可以将二维码的上边直线、下边直线、左边直线和右边直线统称为组成的单元标识码的空间线段,本申请可以将二维码的二维码角点称之为空间角点。
[0097] 应当理解,上述网络框架可以应用于虚实融合领域,例如,视频制作(虚拟制片)、直播、后期视频特效中的虚实融合。虚实融合指的是将真实拍摄主体植入到虚拟场景中,相比于传统完全实拍的方法,虚实融合能够方便地替换场景,大大降低布置场景的成本开销(虚实融合只需绿幕),并能提供非常炫酷的环境效果。此外,虚实融合也与VR(Virtual Reality,虚拟现实)、元宇宙、全真互联网等概念高度契合,能够为其提供非常基础的将真人植入到虚拟场景的能力。
[0098] 可以理解的是,目标终端设备可以通过拍摄组件(即真实镜头)拍摄真实场景,进而从服务器2000中获取虚拟场景,对虚拟场景和真实场景进行融合,得到融合场景。其中,虚拟场景可以为服务器2000直接合成的场景,也可以为服务器2000从除目标终端设备之外的其他终端设备处所获取的场景,除目标终端设备之外的其他终端设备可以通过拍摄组件(即虚拟镜头)拍摄虚拟场景。
[0099] 本申请的虚实融合方法需要拍摄前使用标定板对拍摄组件进行标定,保证后续合成的画面观感正确(透视关系正确)。其中,为保证虚拟场景与真实场景之间的透视关系正确,目标终端设备需要保证虚拟场景与真实场景分别对应的组件内参相匹配,因此,通过对目标终端设备所拍摄的目标图像进行识别,可以得到目标终端设备中的拍摄组件针对目标图像的组件内参,进而可以调整拍摄组件所对应的组件内参,根据调整组件内参后的拍摄组件对空间对象进行拍摄,最终得到透视关系正确的融合场景。其中,拍摄组件的组件内参即为相机内参,相机内参可以包括但不限于光心和焦距。
[0100] 为便于理解,进一步地,请参见图2a、图2b和图2c,图2a是本申请实施例提供的一种进行数据交互的场景示意图一,图2b是本申请实施例提供的一种进行数据交互的场景示意图二,图2c是本申请实施例提供的一种进行数据交互的场景示意图三。如图2a所示的服务器20a可以为上述图1所对应实施例中的服务器2000,如图2a、图2b和图2c所示的终端设备20b可以为上述图1所对应实施例中的目标终端设备。其中,目标终端设备对应的用户可以为对象20c,目标终端设备中集成有拍摄组件。
[0101] 如图2a所示,对象20c可以通过终端设备20b中的拍摄组件对空间对象进行拍摄,得到目标图像。其中,目标图像可以为拍摄组件直接拍摄的照片、也可以为从拍摄组件所拍摄的视频中所截取的图像。空间对象可以包括左面墙21a、右面墙21b、地面21c和拍摄主体22b,拍摄主体22b可以是站在地面21c上的狮子。左面墙21a和右面墙21b之后可以安装有铝合金支架,通过铝合金支架对左面墙21a和右面墙21b起支撑作用。
[0102] 其中,空间对象对应于至少两个坐标轴,至少两个坐标轴中的每两个坐标轴用于构成空间平面,每两个坐标轴之间存在垂直关系。如图2a所示,空间对象可以对应于三个坐标轴,三个坐标轴具体可以为x轴、y轴和z轴,三个坐标轴中的每两个坐标轴可以用于构成空间平面,x轴和z轴可以用于构成左边墙21a所形成的空间平面,y轴和z轴可以用于构成右面墙21b所形成的空间平面,x轴和y轴可以用于构成地面21c所形成的空间平面。其中,空间平面包括具有相同尺寸的单元标识码,单元标识码是由空间线段所组成的,例如,左边墙21a所形成的空间平面可以包括单元标识码22a,单元标识码22a是由四条空间线段所组成的。应当理解,本申请实施例不对空间平面中的单元标识码的数量进行限定。
[0103] 如图2b所示,终端设备20b在拍摄得到目标图像之后,可以在目标图像中获取由单元标识码的空间线段所构成的空间虚拟直线,空间虚拟直线的数量可以为N个,这里的N可以为正整数,N个空间虚拟直线具体可以包括:空间虚拟直线S1、空间虚拟直线S2、空间虚拟直线S3、…、和空间虚拟直线SN。
[0104] 进一步地,终端设备20b可以为N个空间虚拟直线分配直线标识,将空间虚拟直线的直线标识作为空间线段的线段标识。例如,终端设备20b为空间虚拟直线S2所分配的直线标识可以为直线标识K,这样,在构成空间虚拟直线S2的空间线段为空间线段X1、空间线段X2、…、和空间线段XM时,终端设备20b将直线标识K作为空间线段X1、空间线段X2、…、和空间线段XM的线段标识,即空间线段X1、空间线段X2、…、和空间线段XM的线段标识为直线标识K(即线段标识K)。
[0105] 如图2b所示,终端设备20b可以确定N个空间虚拟直线所分别映射的消失点标识,一个消失点标识对应于一个消失点,消失点的数量等于空间对象对应的坐标轴的数量。消失点表示平行线的视觉相交点,即本申请实施例可以将空间虚拟直线的相交点称之为消失点。例如,终端设备20b可以确定空间虚拟直线S1所映射的消失点标识为消失点标识B1、空间虚拟直线S2所映射的消失点标识为消失点标识B1、空间虚拟直线S3所映射的消失点标识为消失点标识B2、…、和空间虚拟直线SN所映射的消失点标识为消失点标识B3。
[0106] 如图2b所示,终端设备20b可以根据线段标识和空间线段中的空间角点的角点坐标,生成空间虚拟直线的直线方程。例如,终端设备20b可以根据空间线段X1、空间线段X2、…、和空间线段XM的线段标识K,以及空间线段X1、空间线段X2、…、和空间线段XM中的空间角点的角点坐标,生成空间虚拟直线S2的直线方程C2。其中,空间虚拟直线S2的直线标识为直线标识K。
[0107] 进一步地,终端设备20b可以根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标。具体的,终端设备20b可以根据消失点标识和消失点标识所映射的空间虚拟直线的直线方程,生成消失点标识所指示的消失点的消失点坐标。例如,终端设备20b可以根据消失点标识B1所映射的空间虚拟直线(消失点标识B1所映射的空间虚拟直线包括空间虚拟直线S1和空间虚拟直线S2)的直线方程,生成消失点标识B1所指示的消失点的消失点坐标,消失点标识B1所指示的消失点的消失点坐标可以为消失点坐标Z1。同理,消失点标识B2所指示的消失点的消失点坐标可以为消失点坐标Z2,消失点标识B3所指示的消失点的消失点坐标可以为消失点坐标Z3。
[0108] 如图2b所示,终端设备20b可以基于消失点坐标Z1、消失点坐标Z2和消失点坐标Z3确定终端设备20b中的拍摄组件针对目标图像的组件内参。与此同时,如图2a所示,终端设备20b还可以从服务器20a获取用于进行虚实融合的虚拟场景,这里的虚拟场景可以为图2c所示的虚拟场景23a。
[0109] 如图2c所示,终端设备20b在确定终端设备20b中的拍摄组件针对目标图像的组件内参以及从服务器20a获取虚拟场景23a之后,可以基于组件内参将目标图像中的拍摄主体22b植入到虚拟场景23a中,得到透视关系正确的融合场景23b。
[0110] 由此可见,本申请实施例可以对拍摄组件所拍摄的单张目标图像进行处理,实时得到目标图像中与x轴、y轴、z轴平行的空间虚拟直线,并准确计算每组平行线的消失点,进而根据空间虚拟直线所形成的消失点的消失点坐标,对拍摄组件的组件内参进行标定。本申请实施例可以实现通过单张图像确定拍摄组件的组件内参,不需要对多张图像进行处理,且无需使用硬件设备对组件内参进行标定,这会明显降低对组件内参进行标定的速度和成本。
[0111] 虚实融合需要标定拍摄组件,本申请实施例通过配合空间对象可以支持实时光学变焦(例如,希区柯克变焦)的拍摄手法,能够制作非常炫酷画面效果的视频,从而提升虚实融合的观影体验,吸引更多用户。此外,本申请可以在保证清晰度的同时,大大降低支持光学变焦的硬件成本,能够降低硬件门槛,手机、普通相机、专业摄像机均可使用,安装、部署、操作简单,且降低用户使用门槛,吸引更多视频制作用户,与此同时,空间对象还能辅助抠图、运镜。
[0112] 进一步地,请参见图3,图3是本申请实施例提供的一种数据处理方法的流程示意图一。该方法可以由服务器执行,也可以由终端设备执行,还可以由服务器和终端设备共同执行,该服务器可以为上述图2a所对应实施例中的服务器20a,该终端设备可以为上述图2a所对应实施例中的终端设备20b。为便于理解,本申请实施例以该方法由终端设备执行为例进行说明。其中,该数据处理方法可以包括以下步骤S101‑步骤S104:
[0113] 步骤S101,获取与空间对象相关联的目标图像;
[0114] 其中,目标图像是由拍摄组件对空间对象进行拍摄所得到的;空间对象包括由空间线段所组成的单元标识码。因此,目标图像中也可以包括由空间线段所组成的单元标识码,目标图像中可以被标识码检测算法所检测到的单元标识码为可观测单元标识码(即可观测二维码)。
[0115] 步骤S102,在目标图像中,获取由空间线段所构成的空间虚拟直线,将空间虚拟直线的直线标识作为空间线段的线段标识,确定空间虚拟直线所映射的消失点标识;
[0116] 可以理解的是,终端设备可以使用标识码检测算法识别目标图像中的单元标识码,进而对单元标识码中处于相同方向平面上的空间线段进行连接,通过延伸所连接的空间线段,得到空间虚拟直线。此外,在识别出目标图像中的单元标识码时,终端设备可以生成单元标识码中的空间角点在目标图像中的角点坐标。
[0117] 应当理解,标识码检测算法可以为任意开源算法,例如,opencv(一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库)中的aruco(Augmented Reality University of Cordoba)标识码检测算法。aruco标识码检测算法的执行流程为:检测候选框、四边形识别、靶标过滤和角点修正。经过标识码检测算法检测后,即可得到所有可观测单元标识码的标识(即单元码标)、以及每个可观测单元标识码的4个空间角点的二维坐标。
[0118] 可以理解的是,终端设备可以为单元标识码分配单元码标,将单元码标和组成单元标识码的空间线段的线段标识关联存储至第一表格(即表格T1)中。因此,表格T1可以用于通过单元码标查询组成单元标识码的空间线段的线段标识(即直线标识),一个单元码标可以查到上边直线、下边直线、左边直线和右边直线分别对应的四个线段标识,即一个单元码标可以查到上边直线、下边直线、左边直线和右边直线分别所属的空间虚拟直线的直线标识。
[0119] 可以理解的是,终端设备可以将空间虚拟直线的直线标识和空间虚拟直线所映射的消失点标识关联存储至第二表格(即表格T2)中。因此,表格T2可以用于通过直线标识查询消失点标识,一个直线标识可以查到一个消失点标识。其中,终端设备可以按照x轴、y轴和z轴,将空间虚拟直线分为3组互相垂直的空间虚拟直线),每组空间虚拟直线对应一个消失点标识。
[0120] 为便于理解,请参见图4,图4是本申请实施例提供的一种识别单元标识码的场景示意图。如图4所示的空间平面40a可以为空间对象对应的任意两个坐标轴所构成的空间平面,空间平面40a中的深色区域所形成正方形即为单元标识码。通过标识码检测算法可以从空间平面40a中检测得到单元标识码,检测得到的单元标识码可以通过矩形框进行标记,例如,从空间平面40a中检测得到的单元标识码可以为单元标识码40b。
[0121] 步骤S103,根据线段标识和空间线段中的空间角点的角点坐标,生成空间虚拟直线的直线方程;
[0122] 具体的,终端设备可以根据线段标识确定空间线段所属的空间虚拟直线,将空间线段中的空间角点的角点坐标作为空间虚拟直线上的关键点坐标。进一步地,终端设备可以基于关键点坐标生成空间虚拟直线的直线方程。
[0123] 可以理解的是,终端设备可以获取目标图像对应的空间坐标轴所构成的一个或多个空间平面,根据一个或多个空间平面确定目标图像中的最大单元标识码数量,根据最大单元标识码数量确定空间虚拟直线所对应的最大关键点数量。进一步地,终端设备可以根据最大关键点数量和空间虚拟直线的直线数量,生成直线拟合矩阵,将空间虚拟直线的直线标识和空间虚拟直线上的关键点坐标关联存储至直线拟合矩阵。其中,直线拟合矩阵可以表示为Dline,直线拟合矩阵Dline为二维矩阵,高为所有空间虚拟直线的数量,即Nmax=4*(a+b+c),宽度为N,直线拟合矩阵Dline中的每个元素为一对实数坐标。一行代表一个空间虚拟直线上的空间角点的二维坐标。直线拟合矩阵Dline可以用于执行步骤S103中的基于关键点坐标生成空间虚拟直线的直线方程的步骤。
[0124] 其中,终端设备在获取空间虚拟直线上的关键点坐标之前,需要对直线拟合矩阵Dline中的每个元素进行初始化。例如,本申请实施例可以将直线拟合矩阵Dline中的每个元素初始化为[‑1,‑1]。应当理解,本申请实施例不对直线拟合矩阵Dline中的每个元素的初始化值进行限定。
[0125] 可以理解的是,终端设备可以根据空间虚拟直线的直线数量和直线方程中的直线参数的参数数量,生成直线方程存储矩阵,将空间虚拟直线的直线标识和空间虚拟直线对应的直线参数关联存储至直线方程存储矩阵。其中,直线方程存储矩阵可以表示为Dpoint,直线方程存储矩阵Dpoint为二维矩阵,高为所有空间虚拟直线的数量,即Nmax=4*(a+b+c),宽度为3,直线方程存储矩阵Dpoint中的每个元素为一个实数。一行代表一个空间虚拟直线的直线方程的直线参数,通过3个直线参数可以确定一个空间虚拟直线的直线方程。直线方程存储矩阵Dpoint可以用于执行步骤S104中的根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标的步骤。
[0126] 其中,终端设备在获取直线方程中的直线参数之前,需要对直线方程存储矩阵Dpoint中的每个元素进行初始化。例如,本申请实施例可以将直线方程存储矩阵Dpoint中的每个元素初始化为‑1。应当理解,本申请实施例不对直线方程存储矩阵Dpoint中的每个元素的初始化值进行限定。
[0127] 其中,本申请实施例可以将与x轴垂直的平面(右面墙)称之为平面x,将与y轴垂直的平面(左面墙)称之为平面y,将与z轴垂直的平面(地面)称之为平面z。平面x上有c(z轴方向)乘b(y轴方向)个单元标识码,平面y上有c(z轴方向)乘a(x轴方向)个单元标识码,平面z上有a(x轴方向)乘b(y轴方向)个单元标识码。最大单元标识码数量可以表示为max(a,b,c),最大关键点数量(即N)可以表示为N=2*max(a,b,c)。可以理解的是,最大关键点数量可以表示空间虚拟直线上的最大空间角点数量,也可以表示单个消失点可能用到的最大空间虚拟直线的数量。
[0128] 其中,为便于理解,本申请实施例以平面x和平面y在z轴方向上的单元标识码的数量均为c个为例进行说明,本申请实施例以平面z和平面x在y轴方向上的单元标识码的数量均为b个为例进行说明,本申请实施例以平面z和平面y在x轴方向上的单元标识码的数量均为a个为例进行说明。
[0129] 可选的,平面x和平面y在z轴方向上的单元标识码的数量可以是不同的,平面z和平面x在y轴方向上的单元标识码的数量可以是不同的,平面z和平面y在x轴方向上的单元标识码的数量可以是不同的。此时,c表示平面x和平面y在z轴方向上的单元标识码的数量中的较大值,b表示平面z和平面x在y轴方向上的单元标识码的数量中的较大值,a表示平面z和平面y在x轴方向上的单元标识码的数量中的较大值。
[0130] 可以理解的是,本申请可以基于查表的方式加速消失点坐标的计算,本申请所涉及的表可以包括上述表格T1、表格T2、直线拟合矩阵Dline和直线方程存储矩阵Dpoint。其中,建表所牵涉的所有标识,例如,单元码标、直线标识、消失点标识等,不一定必须按照本申请所述,使用其他的标号方法也可以。
[0131] 因此,本申请实施例中的初始化方法可以加速空间虚拟直线拟合的速度,避免反复扫描二维码角点所属空间虚拟直线,以及内存的反复占用与释放。其中,空间虚拟直线上最大点数N(即最大关键点数量),可以用于初始化拟合直线用的内存空间,一次性分配最大可能内存。
[0132] 为便于理解,请参见图6,图6是本申请实施例提供的一种预先分配内存的流程示意图。如图6所示的流程示意图可以对应于图5所对应实施例中的拟合初始化步骤,在拟合初始化步骤中,可以生成表格T1、表格T2、初始化的直线拟合矩阵和初始化的直线方程存储矩阵,由于表格T1、表格T2、初始化的直线拟合矩阵和初始化的直线方程存储矩阵不因二维码绿幕(即二维码面板)的摆放位置而变化,所以在二维码绿幕的摆放位置未发生变化时,拟合初始化步骤只需运行一遍即可。
[0133] 如图6所示,终端设备可以根据二维码面板(即空间对象)所构成的三维空间几何关系,建表得到表格T1和表格T2,表格T1可以用于存储二维码标识和直线标识之间的关系,表格T2可以用于存储直线标识和消失点标识之间的关系。比如,二维码标识为1的二维码可以包括4个空间线段,4个空间线段的线段标识分别是由每个空间线段所属的空间虚拟直线所确定的,例如,4个空间线段所属的空间虚拟直线的直线标识可以为直线标识K1、直线标识K2、直线标识K3和直线标识K4,这样,终端设备可以将二维码标识1、直线标识K1、直线标识K2、直线标识K3和直线标识K4关联存储至表格T1。又比如,终端设备可以将直线标识K和直线标识为K的空间虚拟直线所映射的消失点的消失点标识B关联存储至表格T2。
[0134] 如图6所示,终端设备可以根据直线最大点数(即最大空间角点数量)初始化直线拟合数据,生成直线拟合矩阵,直线拟合矩阵中的每个元素可以存储有初始化值。直线拟合矩阵的行为最大直线数(即最大空间虚拟直线的数量),列为空间虚拟直线上的初始化关键点坐标(例如,[‑1,‑1])。
[0135] 如图6所示,终端设备可以根据消失点最大直线数(即最大空间虚拟直线的数量)初始化消失点拟合数据,生成直线方程存储矩阵,直线方程存储矩阵中的每个元素可以存储有初始化值。直线方程存储矩阵的行为最大直线数,列为空间虚拟直线的直线方程中的初始化直线参数(例如,‑1)。
[0136] 步骤S104,根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标,基于消失点坐标确定拍摄组件针对目标图像的组件内参。
[0137] 为便于理解,请参见图5,图5是本申请实施例提供的一种确定组件内参的流程示意图。如图5所示,本申请实施例所提出的基于目标图像确定相机内参的方法可以划分为5个步骤:检测二维码、拟合初始化、拟合直线、拟合消失点和计算相机内参。其中,这里以单元标识码为二维码为例进行说明。
[0138] 如图5所示,在检测二维码步骤中,终端设备可以获取通过拍摄组件拍摄得到的目标图像(即输入图像),通过二维码检测算法对输入图像进行二维码检测,得到输入图像中的二维码的二维码标识(即单元码标)和二维码角点坐标(即空间角点的角点坐标)。
[0139] 如图5所示,在拟合初始化步骤中,终端设备可以根据二维码面板(即空间对象)所构成的三维空间几何关系,建表得到表格T1和表格T2,表格T1可以用于存储二维码标识和直线标识之间的关系,表格T2可以用于存储直线标识和消失点标识之间的关系。此外,终端设备还可以根据直线最大点数(即最大空间角点数量)初始化直线拟合数据,生成直线拟合矩阵,根据消失点最大直线数(即最大空间虚拟直线的数量)初始化消失点拟合数据,生成直线方程存储矩阵。其中,直线拟合矩阵和直线方程存储矩阵中的每个元素可以存储有初始化值。
[0140] 如图5所示,在拟合直线步骤中,终端设备可以根据二维码标识建立二维码角点坐标与直线标识之间的关系,进而将二维码角点坐标和直线标识作为直线拟合数据,且将直线拟合数据填充至直线拟合矩阵中。进一步地,终端设备可以根据直线拟合矩阵中的直线拟合数据拟合所有可见直线(即空间虚拟直线),得到所有可见直线方程(即空间虚拟直线的直线方程)。
[0141] 如图5所示,在拟合消失点步骤中,终端设备可以将所有可见直线方程中的直线参数作为消失点拟合数据,且将消失点拟合数据填充至直线方程存储矩阵中。进一步地,终端设备可以根据消失点标识对直线方程存储矩阵中的消失点拟合数据进行划分,得到每个消失点标识分别对应的消失点拟合数据,进而根据每个消失点标识分别对应的消失点拟合数据,得到每个消失点标识分别对应的消失点的消失点坐标。
[0142] 如图5所示,在计算相机内参步骤中,终端设备可以对消失点坐标进行筛选,得到可用消失点坐标(即满足消失点合格条件的空间划分直线对应的消失点坐标),进而根据消失点标定算法得到拍摄组件的组件内参(即相机内参)。其中,消失点标定算法可以适用于消失点坐标为2个或3个时的情况。
[0143] 可以理解的是,申请实施例可以以高精度的张正友标定法作为真值,得到本申请实施例所生成的组件内参的相对误差,结果如表1所示:
[0144] 表1
[0145]
[0146] 其中,如表1所示,光心可以包括光心横坐标ux和光心纵坐标uy,焦距可以包括x方向焦距fx和y方向焦距fy,针对表1所示的四个参数,本申请实施例与张正友标定法的误差均在2%以内。其中,本申请实施例中的x方向焦距fx和y方向焦距fy是相同的。
[0147] 其中,在单核CPU(Central Processing Unit,中央处理器)上,本申请所实现的获取空间虚拟直线、计算消失点以及计算组件内参的整体耗时低于0.25毫秒,不占用硬件资源,当应用到虚实融合应用中时,只占用少量机器资源,不会造成其他虚实融合相关算法的卡顿。
[0148] 由此可见,本申请实施例可以获取拍摄组件对空间对象进行拍摄所得到的单张目标图像,在目标图像中实时检测平行线(即空间虚拟直线),并计算平行线所映射的消失点的消失点坐标,进而结合基于消失点的组件内参标定方法,生成拍摄组件的组件内参,可以实现通过单张图像确定拍摄组件的组件内参,不需要对多张图像进行处理,且无需使用硬件设备对组件内参进行标定,这会明显降低对组件内参进行标定的速度和成本。
[0149] 进一步地,请参见图7,图7是本申请实施例提供的一种数据处理方法的流程示意图二。该数据处理方法可以包括以下步骤S1021‑步骤S1025,且步骤S1021‑步骤S1025为图3所对应实施例中步骤S102的一个具体实施例。
[0150] 步骤S1021,在目标图像中,获取由空间线段所构成的空间虚拟直线;
[0151] 其中,终端设备获取由空间线段所构成的空间虚拟直线的具体过程,可以参见上述图3所对应实施例中对步骤S102的描述,这里将不再进行赘述。
[0152] 步骤S1022,根据空间虚拟直线和目标图像对应的空间坐标轴之间的位置关系,为空间虚拟直线分配直线标识;
[0153] 具体的,终端设备可以获取目标图像对应的空间坐标轴所构成的目标空间平面。其中,构成目标空间平面的空间坐标轴包括第一坐标轴和第二坐标轴,目标空间平面可以为平面x、平面y和平面z中的任意一个。进一步地,终端设备可以对目标空间平面中的单元标识码进行遍历,得到与目标空间平面中的单元标识码相关联的空间虚拟直线,将与目标空间平面中的单元标识码相关联的空间虚拟直线确定为目标空间虚拟直线。进一步地,终端设备可以为平行于第一坐标轴的目标空间虚拟直线分配第一直线标识,为平行于第二坐标轴的目标空间虚拟直线分配第二直线标识。其中,第一直线标识按照第二坐标轴进行排序,第二直线标识按照第一坐标轴进行排序。其中,直线标识包括第一直线标识和第二直线标识。
[0154] 可以理解的是,对于左面墙和右面墙的单元标识码而言,上下左右是人站在地面上,正面朝向单元标识码的上下左右;对于地面来说,上下左右是人站在右面墙上,正面朝向单元标识码的上下左右。可选的,对于地面来说,上下左右也可以是人站在左面墙上,正面朝向单元标识码的上下左右。
[0155] 其中,对于平面x(即右面墙)的空间虚拟直线而言,按照平面x中单元标识码的排布方式,构造高c宽b的索引矩阵Mx,矩阵中第i行第j列元素为右面墙上第i行第j列的单元标识码的单元码标。这样,终端设备可以按照列优先的方式(或按照行优先的方式),遍历索引矩阵Mx的同时,给每个单元标识码包含的4个点分配直线标识,分配的方式为:先对所有单元标识码上边直线,从高往低的顺序分配从0到(c‑1)的下标;再对所有单元标识码下边直线,从高往低的顺序分配从c到(2c‑1)的下标;再对所有单元标识码左边直线,从左往右的顺序分配从2c到(2c+b‑1)的下标;再对所有单元标识码右边直线,从左往右的顺序分配从(2c+b)到(2c+2b‑1)的下标。
[0156] 其中,对于平面y(即左面墙)的空间虚拟直线而言,按照平面y中单元标识码的排布方式,构造高c宽a的索引矩阵My,矩阵中第i行第j列元素为左面墙上第i行第j列的单元标识码的单元码标。这样,终端设备可以按照列优先的方式(或按照行优先的方式),遍历索引矩阵My的同时,给每个单元标识码包含的4个点分配直线标识,分配的方式为:先对所有单元标识码上边直线,从高往低的顺序分配从(2c+2b)到(2c+2b+c‑1)的下标;再对所有单元标识码下边直线,从高往低的顺序分配从3c+2b到(4c+2b‑1)的下标;再对所有单元标识码左边直线,从左往右的顺序分配从(4c+2b)到(4c+2b+a‑1)的下标;再对所有单元标识码右边直线,从左往右的顺序分配从(4c+2b+a)到(4c+2b+2a‑1)的下标。
[0157] 其中,对于平面z(即地面)的空间虚拟直线而言,按照平面z中单元标识码的排布方式,构造高a宽b的索引矩阵Mz,矩阵中第i行第j列元素为地面上第i行第j列的单元标识码的单元码标。这样,终端设备可以按照列优先的方式(或按照行优先的方式),遍历索引矩阵Mz的同时,给每个单元标识码包含的4个点分配直线标识,分配的方式为:先对所有单元标识码上边直线,从高往低的顺序分配从(4c+2b+2a)到(4c+2b+3a‑1)的下标;再对所有单元标识码下边直线,从高往低的顺序分配从(4c+2b+3a)到(4c+2b+4a‑1)的下标;再对所有单元标识码左边直线,从左往右的顺序分配从(4c+2b+4a)到(4c+3b+4a‑1)的下标;再对所有单元标识码右边直线,从左往右的顺序分配从(4c+3b+4a)到(4c+4b+4a‑1)的下标。
[0158] 应当理解,本申请实施例不对为空间虚拟直线分配直线标识的方式进行限定,步骤S1025可以参照步骤S1022中分配的直线标识,为空间虚拟直线分配不同的消失点标识。可选的,比如,以平面x为例进行说明,终端设备可以先对所有单元标识码上边直线和下边直线,从高往低的顺序分配从0到(2c‑1)的下标;再对所有单元标识码左边直线和右边直线,从左往右的顺序分配从2c到(2c+2b‑1)的下标。
[0159] 步骤S1023,将空间虚拟直线的直线标识作为构成空间虚拟直线的空间线段的线段标识。
[0160] 比如,空间虚拟直线S2是由空间线段X1和空间线段X2所构成的,若空间虚拟直线S2的直线标识为直线标识K,则终端设备可以将直线标识K作为空间线段X1和空间线段X2的线段标识。
[0161] 为便于理解,请参见图8,图8是本申请实施例提供的一种分配直线标识的场景示意图。如图8所示的空间对象可以对应于三个平面,三个平面具体可以包括平面z、平面y和平面x;如图8所示的空间对象可以对应于三个坐标轴,三个坐标轴具体可以包括x轴、y轴和z轴。其中,平面z与z轴垂直,平面y与y轴处置,平面x与x轴垂直。
[0162] 如图8所示,空间对象对应的平面x中可以包括一个或多个单元标识码,这里以一个或多个单元标识码为12个单元标识码(即c乘b(即3乘4)个单元标识码,这里的c表示平面x在z轴方向上的单元标识码的数量,这里的b表示平面x在y轴方向上的单元标识码的数量)为例进行说明。平面x中的单元标识码所构成的空间虚拟直线可以为14条,其中,平面x的垂直方向可以为3个单元标识码,所以垂直方向所构成的空间虚拟直线可以为6条,平面x的水平方向可以为4个单元标识码,所以水平方向所构成的空间虚拟直线可以为8条。
[0163] 如图8所示,垂直方向的6条空间虚拟直线具体可以包括直线81a、直线82a、直线83a、直线84a、直线85a和直线86a,水平方向的8条空间虚拟直线具体可以包括直线87a、直线88a、直线89a、直线810a、直线811a、直线812a、直线813a和直线814a。终端设备可以根据步骤S1022的描述,对平面x的14条空间虚拟直线分配直线标识,例如,为直线81a分配的直线标识为1、为直线82a分配的直线标识为2、为直线83a分配的直线标识为3、为直线84a分配的直线标识为4、为直线85a分配的直线标识为5、…、为直线813a分配的直线标识为13、以及为直线814a分配的直线标识为14。
[0164] 如图8所示,平面x的12个单元标识码可以包括单元标识码80a,单元标识码80a的上边直线用于构成直线81a、下边直线用于构成直线84a、左边直线用于构成直线810a、以及右边直线用于构成直线814a,因此,单元标识码80a的上边直线的线段标识为1、下边直线的线段标识为4、左边直线的直线标识为10、以及右边直线的直线标识为14。
[0165] 步骤S1024,将目标图像对应的空间坐标轴中的坐标轴的数量作为消失点数量;
[0166] 其中,消失点数量为至少两个。如图8所示,空间对象对应的坐标轴的数量为三个,即目标图像对应的空间坐标轴中的坐标轴的数量为三个,因此,消失点的数量为三个。可选的,在目标图像对应的空间坐标轴中的坐标轴的数量为两个时,消失点的数量为两个。
[0167] 可选的,在目标对象对应的空间坐标轴中的坐标轴的数量为三个时,若平面x、平面y或平面z中的任意两个平面中不存在单元标识码,则消失点的数量为两个。
[0168] 步骤S1025,根据空间虚拟直线和空间坐标轴之间的位置关系,在至少两个消失点标识中确定空间虚拟直线所映射的消失点标识;
[0169] 其中,一个消失点标识对应一个消失点。空间虚拟直线和空间坐标轴之间的位置关系是由步骤S1022所确定的。
[0170] 其中,对于平面x中的空间虚拟直线而言,终端设备可以将直线标识从0到(c‑1)的空间虚拟直线,分配给y轴消失点1,即消失点ly;将直线标识从c到(2c‑1)的空间虚拟直线,分配给y轴消失点1,即消失点ly;将直线标识从2c到(2c+b‑1)的空间虚拟直线,分配给z轴消失点2,即消失点lz;将直线标识从(2c+b)到(2c+2b‑1)的空间虚拟直线,分配给z轴消失点2,即消失点lz。
[0171] 其中,对于平面y中的空间虚拟直线而言,终端设备可以将直线标识从(2c+2b)到(2c+2b+c‑1)的空间虚拟直线,分配给x轴消失点0,即消失点lx;将直线标识从(3c+2b)到(4c+2b‑1)的空间虚拟直线,分配给x轴消失点0,即消失点lx;将直线标识从(4c+2b)到(4c+2b+a‑1)的空间虚拟直线,分配给z轴消失点2,即消失点lz;将直线标识从(4c+2b+a)到(4c+
2b+2a‑1)的空间虚拟直线,分配给z轴消失点2,即消失点lz。
[0172] 其中,对于平面z中的空间虚拟直线而言,终端设备可以将直线标识从(4c+2b+2a)到(4c+2b+3a‑1)的空间虚拟直线,分配给y轴消失点1,即消失点ly;将直线标识从(4c+2b+3a)到(4c+2b+4a‑1)的空间虚拟直线,分配给y轴消失点1,即消失点ly;将直线标识从(4c+
2b+4a)到(4c+3b+4a‑1)的空间虚拟直线,分配给x轴消失点0,即消失点lx;将直线标识从(4c+3b+4a)到(4c+4b+4a‑1)的空间虚拟直线,分配给x轴消失点0,即消失点lx。
[0173] 其中,在平面x、平面y和平面z中确定空间虚拟直线所映射的消失点标识的具体过程可以参见图9,图9是本申请实施例提供的一种确定消失点标识的场景示意图。如图9所示的目标图像92a可以对应于三个坐标轴,三个坐标轴可以为坐标轴92b、坐标轴92c和坐标轴92d。其中,坐标轴92b还可以称之为x轴,坐标轴92c还可以称之为y轴,坐标轴92d还可以称之为z轴。
[0174] 可以理解的是,终端设备可以为平行于同一个坐标轴的空间虚拟直线映射为同一个消失点标识,如图9所示,平行于坐标轴92b的空间虚拟直线所映射的消失点标识为消失点标识91c,平行于坐标轴92c的空间虚拟直线所映射的消失点标识为消失点标识91b,平行于坐标轴92d的空间虚拟直线所映射的消失点标识为消失点标识91a。其中,平行于坐标轴92b的空间虚拟直线的直线数量为12个,平行于坐标轴92c的空间虚拟直线的直线数量为14个,平行于坐标轴92d的空间虚拟直线的直线数量为16个。
[0175] 由此可见,本申请实施例可以在目标图像中获取由空间线段所构成的空间虚拟直线,根据空间虚拟直线和空间坐标轴之间的位置关系,为空间虚拟直线分配直线标识,进而将空间虚拟直线的直线标识作为构成空间虚拟直线的空间线段的线段标识。可以理解的是,根据空间虚拟直线和空间坐标轴之间的位置关系,可以在至少两个消失点标识中确定空间虚拟直线所映射的消失点标识。其中,线段标识可以用于存储至第一表格中,消失点标识可以用于存储至第二表格中,通过第一表格和第二表格可以提高后续步骤对组件内参进行标定的速度。
[0176] 进一步地,请参见图10,图10是本申请实施例提供的一种数据处理方法的流程示意图三。该数据处理方法可以包括以下步骤S1031‑步骤S1032,且步骤S1031‑步骤S1032为图3所对应实施例中步骤S103的一个具体实施例。
[0177] 步骤S1031,根据线段标识确定空间线段所属的空间虚拟直线,将空间线段中的空间角点的角点坐标作为空间虚拟直线上的关键点坐标;
[0178] 具体的,终端设备可以根据单元标识码的单元码标,从第一表格中获取组成单元标识码的空间线段的线段标识。其中,空间虚拟直线包括空间虚拟直线Si,这里的i可以为正整数,且i小于或等于空间虚拟直线的直线数量。进一步地,若从第一表格中获取到的线段标识为空间虚拟直线Si的直线标识,则终端设备可以将空间虚拟直线Si作为空间线段所属的空间虚拟直线。进一步地,终端设备可以获取空间线段中的空间角点的角点坐标。其中,空间角点包括第一角点和第二角点,第一角点和第二角点即为空间线段的两个端点。进一步地,终端设备可以将第一角点的角点坐标和第二角点的角点坐标作为空间线段所属的空间虚拟直线Si上的关键点坐标。
[0179] 可以理解的是,终端设备可以基于关键点坐标填充拟合直线用数据(即直线拟合矩阵Dline)。终端设备可以初始化所有的空间虚拟直线的实际点数(即空间虚拟直线上的关键点坐标的数量)为0,记第j条空间虚拟直线的实际点数为N(j 即Nj的初始值为0),进而对于检测到的单元标识码,按照顺序进行如下处理:记当前单元标识码的单元码标(序号)为i,从表格T1中,查询得到单元码标为i的单元标识码的4个边对应的线段标识。对于单元标识码上下左右4个边,分别按顺序进行如下处理:记录当前边所在空间虚拟直线的直线标识为j;取出空间虚拟直线j的实际点数Nj;取出边的端点1的二维坐标,将其填充到直线拟合矩阵Dline的第j行,第Nj列中;将Nj增加1,即直线标识为j的空间虚拟直线上的关键点坐标的数量增加1;取出边的端点2的二维坐标,将其填充到直线拟合矩阵Dline的第j行,第Nj列中;将Nj增加1。
[0180] 其中,端点1即为第一端点,端点2即为第二端点。对于垂直的空间虚拟直线而言,第一端点可以位于第二端点之上;对于水平的空间虚拟直线而言,第一端点可以位于第二端点之左。可选的,对于垂直的空间虚拟直线而言,第一端点可以位于第二端点之下;对于水平的空间虚拟直线而言,第一端点可以位于第二端点之右。
[0181] 步骤S1032,基于关键点坐标生成空间虚拟直线的直线方程。
[0182] 具体的,终端设备可以从直线拟合矩阵中获取空间虚拟直线Si上的关键点坐标,对空间虚拟直线Si上的关键点坐标中的关键点参数进行平均处理,得到空间虚拟直线Si对应的平均关键点参数,根据空间虚拟直线Si对应的平均关键点参数和空间虚拟直线Si对应的关键点参数,生成空间虚拟直线Si对应的参数矩阵。进一步地,终端设备可以对空间虚拟直线Si对应的参数矩阵进行奇异值分解,得到空间虚拟直线Si对应的主特征向量矩阵。进一步地,终端设备可以获取空间虚拟直线Si对应的参数方程,根据空间虚拟直线Si对应的主特征向量矩阵中的矩阵参数,确定空间虚拟直线Si对应的参数方程中的直线参数,将确定直线参数的参数方程作为空间虚拟直线Si的直线方程。
[0183] 可以理解的是,若空间虚拟直线上的关键点坐标的数量不为0,则终端设备可以取出空间虚拟直线在直线拟合矩阵Dline上的所有关键点坐标,通过获取到的关键点坐标拟合空间虚拟直线的直线方程参数(即直线参数):记当前直线标号为i;记i号直线的参数方程为aix+biy+ci=0;记直线拟合矩阵Dline上第i行第j列的元素为二维坐标 ;构造矩阵M(j 即参数矩阵),矩阵Mj的高度为N(i 即编号i的空间虚拟直线上的关键点坐标的数量),宽度为2,矩阵Mj的具体形式可以参见公式(1):
[0184] (1)
[0185] 其中, 表示第一平均关键点参数(即x轴方向的平均关键点参数), 表示第二平均关键点参数(即y轴方向的平均关键点参数), 表示对空间虚拟直线上所有关键点坐标中的x坐标(即第一关键点参数)取平均值, 表示对空间虚拟直线上所有关键点坐标中的y坐标(即第二关键点参数)取平均值, 和 可以统称为空间虚拟直线对应的平均关键点参数,第一关键点参数和第二关键点参数可以统称为关键点坐标中的关键点参数。 和 的具体形式可以参见公式(2)和公式(3):
[0186] (2)
[0187] (3)
[0188] 其中,Ni可以表示空间虚拟直线上的关键点坐标的数量。对矩阵Mj进行奇异值分解(Singular Value Decomposition,简称SVD分解),可以将矩阵分解为 ,应当理解,本申请实施例不对奇异值分解的具体过程进行限定,例如,本申请实施例可以使用opencv的SVD分解。对矩阵Mj进行奇异值分解后得到的V即为主特征向量矩阵,主特征向量矩阵是正交矩阵,根据主特征向量矩阵可以计算直线方程的参数ai、参数bi和参数ci,参数ai、参数bi和参数ci的具体形式可以参见公式(4)、公式(5)和公式(6):
[0189] (4)
[0190] (5)
[0191] (6)
[0192] 其中,参数bi可以为主特征向量矩阵 中第1行、第0列的元素,参数bi可以为主特征向量矩阵V中第1行、第1列的元素,主特征向量矩阵 的大小为2*2,参数ai和参数bi可以统称为主特征向量矩阵中的矩阵参数,参数ai、参数bi和参数ci可以统称为空间虚拟直线的直线参数。这样,终端设备可以将参数ai配置到直线方程存储矩阵Dpoint的第i行、第0列,将参数bi配置到直线方程存储矩阵Dpoint的第i行、第1列,将参数ci配置到直线方程存储矩阵Dpoint的第i行、第2列,即将参数ai、参数bi和参数ci作为参数方程中的直线参数。应当理解,本申请实施例解参数方程的方法不限于奇异值分解,也可以使用其他方法。
[0193] 为便于理解,请参见图11,图11是本申请实施例提供的一种确定直线方程的流程示意图。如图11所示,终端设备可以获取针对目标图像的二维码检测结果,二维码检测结果可以包括二维码标识和二维码角点坐标。进一步地,终端设备可以对检测到的二维码进行遍历,即获取第a号二维码,进而获取第a号二维码的二维码标识i,在表格T1中获取二维码标识为i的边所属直线标识(即空间线段的线段标识)。
[0194] 如图11所示,对于二维码标识i的二维码的每条边,终端设备可以取出边所属空间虚拟直线j的实际点数,实际点数可以表示空间虚拟直线上的关键点数量(即关键点坐标的数量)。其中,每条空间虚拟直线的实际点数可以被初始化为0。进一步地,终端设备可以取出二维码标识i的二维码的一条边的两个端点的坐标,将两个端点的坐标填充到直线拟合数据(即直线拟合矩阵),即终端设备可以取出该边的端点1的坐标,将端点1的坐标填充到直线拟合数据,进而取出该边的端点2的坐标,将端点2的坐标填充到直线拟合数据。其中,端点1的坐标和端点2的坐标被填充至不同的直线拟合数据中,即端点1的坐标和端点2的坐标作为不同空间虚拟直线所对应的关键点坐标,且终端设备需要对实际点数进行自增。
[0195] 如图11所示,终端设备在按顺序处理二维码,得到拟合直线数据之后,可以根据每条直线的实际点数和每条空间虚拟直线所对应的关键点坐标(即每组直线拟合数据),生成每条空间虚拟直线所对应的参数矩阵,对参数矩阵进行奇异值分解,得到单个直线方程参数(即每条空间虚拟直线所对应的直线参数),进而将直线参数存储到消失点拟合数据(即直线拟合矩阵)中,该直线参数用于拟合消失点的数据。
[0196] 由此可见,本申请实施例可以根据线段标识确定空间线段所属的空间虚拟直线,将空间线段中的空间角点的角点坐标作为空间虚拟直线上的关键点坐标,进而基于虚拟直线上的关键点坐标生成空间虚拟直线的直线方程。其中,关键点坐标可以用于存储至直线拟合矩阵,直线方程的直线参数可以用于存储至直线方程存储矩阵,直线拟合矩阵和直线方程存储矩阵可以提高后续步骤对组件内参进行标定的速度。
[0197] 进一步地,请参见图12,图12是本申请实施例提供的一种数据处理方法的流程示意图四。该数据处理方法可以包括以下步骤S1041‑步骤S1044,且步骤S1041‑步骤S1044为图3所对应实施例中步骤S104的一个具体实施例。
[0198] 步骤S1041,从第二表格中获取空间虚拟直线所映射的消失点标识,从直线方程存储矩阵中获取空间虚拟直线对应的直线参数;
[0199] 步骤S1042,根据消失点标识对空间虚拟直线对应的直线参数进行划分,得到消失点标识对应的空间划分矩阵;
[0200] 具体的,终端设备可以对消失点标识的候选直线数量进行初始化,根据最大关键点数量对第一辅助矩阵和第二辅助矩阵进行初始化。其中,空间虚拟直线对应的直线参数包括第一直线参数、第二直线参数和第三直线参数。进一步地,终端设备可以对空间虚拟直线进行遍历,根据消失点标识将遍历得到的空间虚拟直线中的第一直线参数和第二直线参数填入至第一辅助矩阵,根据消失点标识将遍历得到的空间虚拟直线中的第三直线参数填入至第二辅助矩阵。其中,第一直线参数和第二直线参数在第一辅助矩阵中的位置是由候选直线数量所确定的;第三直线参数在第二辅助矩阵中的位置是由候选直线数量所确定的。进一步地,终端设备可以对候选直线数量进行累加处理,在遍历完成空间虚拟直线之后,得到目标直线数量。进一步地,终端设备可以将从第一辅助矩阵中获取的行数为目标直线数量的直线参数作为新的第一辅助矩阵,将从第二辅助矩阵中获取的行数为目标直线数量的直线参数作为新的第二辅助矩阵,将新的第一辅助矩阵和新的第二辅助矩阵作为消失点标识对应的空间划分矩阵。
[0201] 可以理解的是,终端设备可以准备填充直线方程存储矩阵Dpoint到矩阵Dx、矩阵Dy、矩阵Dz、向量Bx、向量By、向量Bz中,准备拟合消失点的数据:初始化x轴消失点可用直线数Nx(即x轴对应的候选直线数量)为零,y轴消失点可用直线数N(y 即y轴对应的候选直线数量)为零,z轴消失点可用直线数N(z 即z轴对应的候选直线数量)为零;初始化矩阵Dx、矩阵Dy、矩阵Dz为N(即每个消失点可能的最大空间虚拟直线数量)行,2列的实数矩阵,向量Bx、向量By、向量Bz为N行向量。
[0202] 应当理解,本申请实施例不对矩阵Dx、矩阵Dy、矩阵Dz、向量Bx、向量By和向量Bz中的每个元素的初始化值进行限定,本申请实施例可以将矩阵Dx、矩阵Dy、矩阵Dz、向量Bx、向量By和向量Bz中的每个元素初始化为‑1。其中,矩阵Dx、矩阵Dy和矩阵Dz可以统称为第一辅助矩阵,向量Bx、向量By和向量Bz可以统称为第二辅助矩阵。矩阵Dx为x轴对应的第一辅助矩阵,矩阵Dy为y轴对应的第一辅助矩阵,矩阵Dz为z轴对应的第一辅助矩阵;向量Bx为x轴对应的第二辅助矩阵,向量By为y轴对应的第二辅助矩阵,向量Bz为z轴对应的第二辅助矩阵。其中,第二辅助矩阵还可以称之为第二辅助向量。
[0203] 进一步地,终端设备可以遍历每一条空间虚拟直线,记当前空间虚拟直线的直线标识为i,直线方程的参数为参数a(i 即第一直线参数)、参数b(i 即第二直线参数)和参数ci(即第三直线参数)。进一步地,终端设备可以从表格T2中,按照空间虚拟直线的直线标识i,取出其所属消失点标识,进而按照消失点标识的类型,将参数ai、参数bi和参数ci填充数据到矩阵Dx和向量Bx中,或矩阵Dy和向量By中,或矩阵Dz和向量Bz中,具体的方法是:若消失点标识等于0,则把ai填充到Dx的第Nx行第0列,把bi填充到Dx的第Nx行第1列,把‑ci填充到Bx的第Nx行,之后Nx=Nx+1,其中,消失点标识0为x轴对应的消失点标识;若消失点标识等于1,则把ai填充到Dy的第Ny行第0列,把bi填充到Dy的第Ny行第1列,把‑ci填充到By的第Ny行,之后Ny=Ny+1,其中,消失点标识1为y轴对应的消失点标识;若消失点标识等于2,则把ai填充到Dz的第Nz行第0列,把bi填充到Dz的第Nz行第1列,把‑ci填充到Bz的第Nz行,之后Nz=Nz+1,其中,消失点标识2为z轴对应的消失点标识。可选的,若直线的实际点数Ni等于零,则不进行任何操作,直接处理下一条直线。
[0204] 可以理解的是,在对所有的空间虚拟直线遍历完成之后,候选直线数量可以称之为目标直线数量,目标直线数量可以表示消失点所对应的空间虚拟直线的数量。
[0205] 步骤S1043,根据空间划分矩阵对空间划分直线进行最小二乘拟合,生成空间划分直线的直线交点,将空间划分直线的直线交点作为消失点标识对应的消失点的消失点坐标;
[0206] 其中,空间划分直线为空间划分矩阵对应的空间虚拟直线,不同的空间划分矩阵对应于不同的空间虚拟直线,不同的空间划分矩阵可以用于生成不同的消失点坐标。
[0207] 可以理解的是,终端设备可以分别对矩阵Dx、向量Bx,矩阵Dy、向量By、矩阵Dz和向量Bz进行如下运算,计算x轴、y轴、z轴对应的消失点。可以理解的是,若目标直线数量Nx大于或等于2,则计算x轴消失点,否则认为x轴消失点不存在,因此,终端设备可以构造矩阵Px和向量Qx,矩阵Px为矩阵Dx的前Nx行,向量Qx为向量Bx的前Nx行。其中,矩阵Px可以称之为新的第一辅助矩阵,向量Qx可以称之为新的第二辅助矩阵,矩阵Px和向量Qx可以统称为x轴对应的空间划分矩阵。这样,终端设备根据x轴对应的空间划分矩阵,生成x轴消失点的消失点坐标lx的计算方法可以参见公式(7):
[0208] (7)
[0209] 可以理解的是,若目标直线数量Ny大于或等于2,则计算y轴消失点,否则认为y轴消失点不存在,因此,终端设备可以构造矩阵Py和向量Qy,矩阵Py为矩阵Dy的前Ny行,向量Qy为向量By的前Ny行。其中,矩阵Py可以称之为新的第一辅助矩阵,向量Qy可以称之为新的第二辅助矩阵,矩阵Py和向量Qy可以统称为y轴对应的空间划分矩阵。这样,终端设备根据y轴对应的空间划分矩阵,生成y轴消失点的消失点坐标ly的计算方法可以参见公式(8):
[0210] (8)
[0211] 可以理解的是,若目标直线数量Nz大于或等于2,则计算z轴消失点,否则认为z轴消失点不存在,因此,终端设备可以构造矩阵Pz和向量Qz,矩阵Pz为矩阵Dz的前Nz行,向量Qz为向量Bz的前Nz行。其中,矩阵Pz可以称之为新的第一辅助矩阵,向量Qz可以称之为新的第二辅助矩阵,矩阵Pz和向量Qz可以统称为z轴对应的空间划分矩阵。这样,终端设备根据z轴对应的空间划分矩阵,生成z轴消失点的消失点坐标lz的计算方法可以参见公式(9):
[0212] (9)
[0213] 步骤S1044,基于消失点坐标确定拍摄组件针对目标图像的组件内参。
[0214] 其中,终端设备基于消失点坐标确定拍摄组件针对目标图像的组件内参的具体过程,可以参见图14所对应实施例中对步骤S1052‑步骤S1053的描述。
[0215] 为便于理解,请参见图13,图13是本申请实施例提供的一种确定消失点坐标的流程示意图。如图13所示,终端设备可以获取所有可见直线的参数方程(即空间虚拟直线的直线方程),对于每条可见直线而言,根据表格T2中所记录的每条可见直线所映射的消失点标识(即每条空间虚拟直线所属消失点),对参数方程中的直线方程参数(即直线参数)进行划分,即根据消失点将直线方程参数填充到对应矩阵(即空间划分矩阵)中,得到每个消失点分别对应的空间划分矩阵。
[0216] 进一步地,如图13所示,终端设备可以基于每个消失点分别对应的空间划分矩阵,分别最小二乘拟合消失点,得到每个消失点的消失点坐标。其中,一个消失点对应一个坐标轴,一个坐标轴对应于一组空间虚拟直线(即空间划分直线)的直线方程。
[0217] 由此可见,本申请实施例可以从第二表格中获取空间虚拟直线所映射的消失点标识,从直线方程存储矩阵中获取空间虚拟直线对应的直线参数,根据消失点标识对空间虚拟直线对应的直线参数进行划分,得到消失点标识对应的空间划分矩阵。进一步地,根据空间划分矩阵对空间划分直线进行最小二乘拟合,可以生成空间划分直线所对应的消失点的消失点坐标,进而基于消失点坐标确定拍摄组件的组件内参。本申请实施例所提出的基于消失点坐标确定组件内参的方式可以降低对组件内参进行标定的速度和成本。
[0218] 进一步地,请参见图14,图14是本申请实施例提供的一种数据处理方法的流程示意图五。该数据处理方法可以包括以下步骤S1051‑步骤S1053,且步骤S1051‑步骤S1053为图3所对应实施例中步骤S104的一个具体实施例。
[0219] 步骤S1051,根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标;
[0220] 其中,终端设备根据消失点标识和直线方程生成消失点坐标的具体过程,可以参见图12所对应实施例中对步骤S1041‑步骤S1043的描述。
[0221] 步骤S1052,确定空间划分直线中的每两条空间虚拟直线之间的直线夹角,从每两条空间虚拟直线之间的直线夹角中获取最大直线夹角,若最大直线夹角大于或等于夹角阈值,则确定空间划分直线满足消失点合格条件;
[0222] 可以理解的是,终端设备可以根据检测到的消失点,自动检测其是否可用。其中,对于每组空间划分直线而言,若该组空间划分直线只有两条空间虚拟直线,则终端设备可以直接计算两个空间虚拟直线之间的夹角 (即最大直线夹角);可选的,若该组空间划分直线不止两条空间虚拟直线,则终端设备可以计算每两条空间虚拟直线之间的夹角,将每两条空间虚拟直线之间的夹角中的最大夹角作为夹角 (即最大直线夹角)。
[0223] 可选的,若最大直线夹角小于夹角阈值,则确定该组空间划分直线所对应的消失点不可用,即确定空间划分直线不满足消失点合格条件。其中,消失点合格条件是指空间划分直线中的每两条空间虚拟直线之间的最大直线夹角大于或等于夹角阈值的条件。换言之,若空间划分直线中的空间虚拟直线在目标图像中接近于平行,则可以确定该组空间划分直线不可用,通过不可用的空间划分直线所确定的消失点坐标是不准确的。应当理解,本申请实施例不对夹角阈值的具体取值进行限定。
[0224] 步骤S1053,基于满足消失点合格条件的空间划分直线对应的消失点坐标,生成拍摄组件针对目标图像的组件内参。
[0225] 应当理解,终端设备可以在满足消失点合格条件的空间划分直线为2组或3组时,生成拍摄组件针对目标图像的组件内参。其中,一组空间划分直线对应一个消失点,每组空间划分直线中的空间虚拟直线互相平行,不同组空间划分直线互相垂直。
[0226] 其中,在满足消失点合格条件的空间划分直线小于或等于1组时,即可用消失点的数量小于或等于1个时,终端设备不进行组件内参的标定;在满足消失点合格条件的空间划分直线等于2组时,即可用消失点的数量等于2个时,终端设备可以调用2个消失点的标定算法;在满足消失点合格条件的空间划分直线等于3组时,即可用消失点的数量等于3个时,终端设备可以调用3个消失点的标定算法。
[0227] 应当理解,在满足消失点合格条件的空间划分直线为2组时(即消失点的数量为2个时),满足消失点合格条件的空间划分直线对应的消失点坐标包括第一消失点坐标和第二消失点坐标。应当理解,终端设备可以根据目标图像的图像高度和图像宽度,确定拍摄组件在目标图像中的光心横坐标和光心纵坐标。其中,光心横坐标和光心纵坐标用于表示拍摄组件的组件光心的光心坐标。进一步地,终端设备可以确定拍摄组件的组件焦点到第一消失点坐标的第一向量,确定拍摄组件的组件焦点到第二消失点坐标的第二向量。进一步地,终端设备可以根据第一消失点坐标对应的空间划分直线和第二消失点坐标对应的空间划分直线之间的垂直关系,确定第一向量和第二向量之间的垂直关系,根据第一向量和第二向量之间的垂直关系,建立与第一向量和第二向量相关联的约束方程。进一步地,终端设备可以根据第一消失点坐标、第二消失点坐标和约束方程,确定拍摄组件的组件焦距。进一步地,终端设备可以将光心坐标和组件焦距作为拍摄组件针对目标图像的组件内参。
[0228] 其中,终端设备可以获取光心坐标(ux,uy),目标图像的宽(即图像宽度)为w、高(即图像高度)为h,则拍摄组件的光心在目标图像所形成的画面的正中心,即ux=w/2(即光心横坐标),uy=h/2(即光心纵坐标)。
[0229] 其中,终端设备可以计算拍摄组件的焦距f(即组件焦距):在焦平面(即焦点所在垂直于光轴的面)的二维xy坐标系下,沿焦点往光心方向作为z轴,建立右手直角坐标系,消失点和光心位于成像面上,成像面位于z轴的原点;在此坐标系下,焦点cf坐标为(ux,uy,‑f),光心c的坐标为(ux,uy,0),消失点1坐标p为(px,py,0)(即第一消失点坐标),消失点2坐标q为(qx,qy,0)(即第二消失点坐标),焦点cf到光心c的距离即为焦距f。其中,消失点1和消失点2可以为目标图像对应的空间坐标轴的x轴、y轴和z轴中的任意两个坐标轴所对应的消失点,即第一消失点坐标和第二消失点坐标为消失点坐标lx、消失点坐标ly和消失点坐标lz中的任意两个消失点坐标。其中,焦点cf到消失点1和消失点2的连线与右手直角坐标系中的坐标轴重合。
[0230] 由于在三维空间中两组平行线(即消失点1对应的空间划分直线和消失点2对应的空间划分直线)互相垂直,所以焦点cf到消失点1的向量 (即第一向量,该向量平行于一组平行线)垂直于焦点cf到消失点2的向量 (即第二向量,该向量平行于另一组平行线),即,展开得到的与第一向量和第二向量相关联的约束方程可以参见公式(10):
[0231] (10)
[0232] 根据公式(10)所示的约束方程,可以确定焦距f的公式(11):
[0233] (11)
[0234] 可选的,应当理解,在满足消失点合格条件的空间划分直线为3组时(即消失点的数量为3个时),满足消失点合格条件的空间划分直线对应的消失点坐标包括第一消失点坐标、第二消失点坐标和第三消失点坐标。应当理解,终端设备可以确定拍摄组件的组件焦点到第一消失点坐标的第一向量,确定拍摄组件的组件焦点到第二消失点坐标的第二向量,确定拍摄组件的组件焦点到第三消失点坐标的第三向量。进一步地,终端设备可以根据第一消失点坐标对应的空间划分直线、第二消失点坐标对应的空间划分直线和第三消失点坐标对应的空间划分直线之间的垂直关系,确定第一向量、第二向量和第三向量之间的垂直关系,根据第一向量和第二向量之间的垂直关系,建立与第一向量和第二向量相关联的约束方程,根据第一向量和第三向量之间的垂直关系,建立与第一向量和第三向量相关联的约束方程,根据第二向量和第三向量之间的垂直关系,建立与第二向量和第三向量相关联的约束方程。进一步地,终端设备可以根据第一消失点坐标、第二消失点坐标、第三消失点坐标、与第一向量和第二向量相关联的约束方程、与第一向量和第三向量相关联的约束方程、以及与第二向量和第三向量相关联的约束方程,确定拍摄组件的组件焦距和拍摄组件在目标图像中的光心横坐标和光心纵坐标。其中,光心横坐标和光心纵坐标用于表示拍摄组件的组件光心的光心坐标。进一步地,终端设备可以将光心坐标和组件焦距作为拍摄组件针对目标图像的组件内参。
[0235] 其中,3个消失点说明空间对象中有3组互相垂直的平行线,所以由垂直关系所形成的约束方程的数量为三个,这样,通过三个约束方程就可以把ux、uy和f都解出来,而不用再默认ux=w/2,uy=h/2。具体地来说,其处理流程如下所示:在焦平面的二维xy坐标系下,沿焦点往光心方向作为z轴,建立右手直角坐标系;在此坐标系下,焦点cf坐标为(ux,uy,‑f),光心c的坐标为(ux,uy,0),消失点1坐标p为(px,py,0)(即第一消失点坐标),消失点2坐标q为(qx,qy,0)(即第二消失点坐标)、消失点3坐标r为(rx,ry,0)(即第三消失点坐标)。其中,消失点1、消失点2和消失点3可以为目标图像对应的空间坐标轴中的x轴、y轴和z轴分别对应的消失点,即第一消失点坐标、第二消失点坐标和第三消失点坐标为消失点坐标lx、消失点坐标ly和消失点坐标lz。其中,焦点cf到消失点1、消失点2和消失点3的连线与右手直角坐标系中的坐标轴重合。
[0236] 由于在三维空间中每两组平行线(即消失点1对应的空间划分直线和消失点2对应的空间划分直线,消失点1对应的空间划分直线和消失点3对应的空间划分直线,消失点2对应的空间划分直线和消失点2对应的空间划分直线)互相垂直,所以焦点cf到消失点1的向量 (该向量平行于一组平行线)垂直于焦点cf到消失点2的向量 (该向量平行于另一组平行线);焦点cf到消失点1的向量 垂直于焦点cf到消失点3的向量 ;焦点cf到消失点2的向量 ,垂直于焦点cf到消失点3的向量 ,即 、 、。综上,展开得到的约束方程可以参见公式(12)、公式(13)和公式(14):
[0237] (12)
[0238] (13)
[0239] (14)
[0240] 根据公式(12)、公式(13)和公式(14)所示的约束方程,化简后可以得到公式(15):
[0241] (15)
[0242] 对公式(15)进行矩阵变化后,可以得到 的公式(16):
[0243] (16)
[0244] 终端设备在得到u(x 即光心横坐标)和uy(即光心纵坐标)之后,可以将ux和uy代入上述公式(12),就可以得到计算焦距f的公式(17):
[0245] (17)
[0246] 可选的,终端设备在得到ux和uy之后,还可以将ux和uy代入上述公式(13)或公式(14),通过公式(13)或公式(14)计算焦距f。其中,通过公式(13)或公式(14)计算焦距f的具体过程,可以参见通过公式(12)计算焦距f的描述,这里将不再进行赘述。
[0247] 由此可见,本申请实施例可以根据消失点标识和直线方程,生成标识点标识所指示的消失点的消失点坐标,进而根据空间划分直线中的每两条空间虚拟直线之间的夹角,对空间划分直线进行筛选,得到满足消失点合格条件的空间划分直线,进而基于满足消失点合格条件的空间划分直线对应的消失点坐标,生成拍摄组件的组件内参。本申请实施例所提出的基于消失点坐标确定组件内参的方式可以降低对组件内参进行标定的速度和成本。
[0248] 进一步地,请参见图15,图15是本申请实施例提供的一种数据处理装置的结构示意图,该数据处理装置1可以包括:图像获取模块11,直线获取模块12,方程生成模块13,内参确定模块14;
[0249] 图像获取模块11,用于获取与空间对象相关联的目标图像;目标图像是由拍摄组件对空间对象进行拍摄所得到的;空间对象包括由空间线段所组成的单元标识码;
[0250] 直线获取模块12,用于在目标图像中,获取由空间线段所构成的空间虚拟直线,将空间虚拟直线的直线标识作为空间线段的线段标识,确定空间虚拟直线所映射的消失点标识;
[0251] 其中,直线获取模块12包括:直线获取单元121,标识分配单元122,标识确定单元123;
[0252] 直线获取单元121,用于识别目标图像中的单元标识码;
[0253] 直线获取单元121,用于对单元标识码中处于相同方向平面上的空间线段进行连接,通过延伸所连接的空间线段,得到空间虚拟直线;
[0254] 则直线获取模块12,还具体用于在识别出目标图像中的单元标识码时,生成单元标识码中的空间角点在目标图像中的角点坐标。
[0255] 标识分配单元122,用于根据空间虚拟直线和目标图像对应的空间坐标轴之间的位置关系,为空间虚拟直线分配直线标识;
[0256] 其中,直线标识包括第一直线标识和第二直线标识;
[0257] 标识分配单元122,具体用于获取目标图像对应的空间坐标轴所构成的目标空间平面;构成目标空间平面的空间坐标轴包括第一坐标轴和第二坐标轴;
[0258] 标识分配单元122,具体用于对目标空间平面中的单元标识码进行遍历,得到与目标空间平面中的单元标识码相关联的空间虚拟直线,将与目标空间平面中的单元标识码相关联的空间虚拟直线确定为目标空间虚拟直线;
[0259] 标识分配单元122,具体用于为平行于第一坐标轴的目标空间虚拟直线分配第一直线标识,为平行于第二坐标轴的目标空间虚拟直线分配第二直线标识;第一直线标识按照第二坐标轴进行排序,第二直线标识按照第一坐标轴进行排序。
[0260] 标识分配单元122,用于将空间虚拟直线的直线标识作为构成空间虚拟直线的空间线段的线段标识。
[0261] 标识确定单元123,用于将目标图像对应的空间坐标轴中的坐标轴的数量作为消失点数量;消失点数量为至少两个;
[0262] 标识确定单元123,用于根据空间虚拟直线和空间坐标轴之间的位置关系,在至少两个消失点标识中确定空间虚拟直线所映射的消失点标识;一个消失点标识对应一个消失点。
[0263] 其中,直线获取单元121,标识分配单元122和标识确定单元123的具体实现方式,可以参见上述图7所对应实施例中对步骤S1021‑步骤S1025的描述,这里将不再进行赘述。
[0264] 方程生成模块13,用于根据线段标识和空间线段中的空间角点的角点坐标,生成空间虚拟直线的直线方程;
[0265] 其中,方程生成模块13包括:坐标确定单元131,方程生成单元132;
[0266] 坐标确定单元131,用于根据线段标识确定空间线段所属的空间虚拟直线,将空间线段中的空间角点的角点坐标作为空间虚拟直线上的关键点坐标;
[0267] 其中,空间虚拟直线包括空间虚拟直线Si;i为正整数;
[0268] 方程生成模块13,还具体用于为单元标识码分配单元码标,将单元码标和组成单元标识码的空间线段的线段标识关联存储至第一表格中;
[0269] 则坐标确定单元131,具体用于根据单元标识码的单元码标,从第一表格中获取组成单元标识码的空间线段的线段标识;
[0270] 坐标确定单元131,具体用于若从第一表格中获取到的线段标识为空间虚拟直线Si的直线标识,则将空间虚拟直线Si作为空间线段所属的空间虚拟直线;
[0271] 坐标确定单元131,具体用于获取空间线段中的空间角点的角点坐标;空间角点包括第一角点和第二角点;
[0272] 坐标确定单元131,具体用于将第一角点的角点坐标和第二角点的角点坐标作为空间线段所属的空间虚拟直线Si上的关键点坐标。
[0273] 方程生成单元132,用于基于关键点坐标生成空间虚拟直线的直线方程。
[0274] 其中,空间虚拟直线包括空间虚拟直线Si;i为正整数;
[0275] 方程生成模块13,还具体用于获取目标图像对应的空间坐标轴所构成的一个或多个空间平面,根据一个或多个空间平面确定目标图像中的最大单元标识码数量,根据最大单元标识码数量确定空间虚拟直线所对应的最大关键点数量;
[0276] 方程生成模块13,还具体用于根据最大关键点数量和空间虚拟直线的直线数量,生成直线拟合矩阵,将空间虚拟直线的直线标识和空间虚拟直线上的关键点坐标关联存储至直线拟合矩阵;
[0277] 则方程生成单元132,用于从直线拟合矩阵中获取空间虚拟直线Si上的关键点坐标,对空间虚拟直线Si上的关键点坐标中的关键点参数进行平均处理,得到空间虚拟直线Si对应的平均关键点参数,根据空间虚拟直线Si对应的平均关键点参数和空间虚拟直线Si对应的关键点参数,生成空间虚拟直线Si对应的参数矩阵;
[0278] 方程生成单元132,用于对空间虚拟直线Si对应的参数矩阵进行奇异值分解,得到空间虚拟直线Si对应的主特征向量矩阵;
[0279] 方程生成单元132,用于获取空间虚拟直线Si对应的参数方程,根据空间虚拟直线Si对应的主特征向量矩阵中的矩阵参数,确定空间虚拟直线Si对应的参数方程中的直线参数,将确定直线参数的参数方程作为空间虚拟直线Si的直线方程。
[0280] 其中,坐标确定单元131和方程生成单元132的具体实现方式,可以参见上述图10所对应实施例中对步骤S1031‑步骤S1032的描述,这里将不再进行赘述。
[0281] 内参确定模块14,用于根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标,基于消失点坐标确定拍摄组件针对目标图像的组件内参。
[0282] 其中,数据处理装置1,还具体用于将空间虚拟直线的直线标识和空间虚拟直线所映射的消失点标识关联存储至第二表格中;
[0283] 数据处理装置1,还具体用于根据空间虚拟直线的直线数量和直线方程中的直线参数的参数数量,生成直线方程存储矩阵,将空间虚拟直线的直线标识和空间虚拟直线对应的直线参数关联存储至直线方程存储矩阵;
[0284] 则内参确定模块14包括:参数获取单元141,矩阵确定单元142,消失点拟合单元143,条件判断单元144,内参确定单元145;
[0285] 参数获取单元141,用于从第二表格中获取空间虚拟直线所映射的消失点标识,从直线方程存储矩阵中获取空间虚拟直线对应的直线参数;
[0286] 矩阵确定单元142,用于根据消失点标识对空间虚拟直线对应的直线参数进行划分,得到消失点标识对应的空间划分矩阵;空间划分矩阵对应的空间虚拟直线为空间划分直线;
[0287] 其中,空间虚拟直线对应的直线参数包括第一直线参数、第二直线参数和第三直线参数;
[0288] 矩阵确定单元142,具体用于对消失点标识的候选直线数量进行初始化,根据最大关键点数量对第一辅助矩阵和第二辅助矩阵进行初始化;
[0289] 矩阵确定单元142,具体用于对空间虚拟直线进行遍历,根据消失点标识将遍历得到的空间虚拟直线中的第一直线参数和第二直线参数填入至第一辅助矩阵,根据消失点标识将遍历得到的空间虚拟直线中的第三直线参数填入至第二辅助矩阵;第一直线参数和第二直线参数在第一辅助矩阵中的位置是由候选直线数量所确定的;第三直线参数在第二辅助矩阵中的位置是由候选直线数量所确定的;
[0290] 矩阵确定单元142,具体用于对候选直线数量进行累加处理,在遍历完成空间虚拟直线之后,得到目标直线数量;
[0291] 矩阵确定单元142,具体用于将从第一辅助矩阵中获取的行数为目标直线数量的直线参数作为新的第一辅助矩阵,将从第二辅助矩阵中获取的行数为目标直线数量的直线参数作为新的第二辅助矩阵,将新的第一辅助矩阵和新的第二辅助矩阵作为消失点标识对应的空间划分矩阵。
[0292] 消失点拟合单元143,用于根据空间划分矩阵对空间划分直线进行最小二乘拟合,生成空间划分直线的直线交点,将空间划分直线的直线交点作为消失点标识对应的消失点的消失点坐标。
[0293] 条件判断单元144,用于确定空间划分直线中的每两条空间虚拟直线之间的直线夹角,从每两条空间虚拟直线之间的直线夹角中获取最大直线夹角,若最大直线夹角大于或等于夹角阈值,则确定空间划分直线满足消失点合格条件;
[0294] 内参确定单元145,用于基于满足消失点合格条件的空间划分直线对应的消失点坐标,生成拍摄组件针对目标图像的组件内参。
[0295] 其中,满足消失点合格条件的空间划分直线对应的消失点坐标包括第一消失点坐标和第二消失点坐标;
[0296] 内参确定单元145,具体用于根据目标图像的图像高度和图像宽度,确定拍摄组件在目标图像中的光心横坐标和光心纵坐标;光心横坐标和光心纵坐标用于表示拍摄组件的组件光心的光心坐标;
[0297] 内参确定单元145,具体用于确定拍摄组件的组件焦点到第一消失点坐标的第一向量,确定拍摄组件的组件焦点到第二消失点坐标的第二向量;
[0298] 内参确定单元145,具体用于根据第一消失点坐标对应的空间划分直线和第二消失点坐标对应的空间划分直线之间的垂直关系,确定第一向量和第二向量之间的垂直关系,根据第一向量和第二向量之间的垂直关系,建立与第一向量和第二向量相关联的约束方程;
[0299] 内参确定单元145,具体用于根据第一消失点坐标、第二消失点坐标和约束方程,确定拍摄组件的组件焦距;
[0300] 内参确定单元145,具体用于将光心坐标和组件焦距作为拍摄组件针对目标图像的组件内参。
[0301] 其中,参数获取单元141,矩阵确定单元142,消失点拟合单元143,条件判断单元144和内参确定单元145的具体实现方式,可以参见上述图12所对应实施例中对步骤S1041‑步骤S1044、以及图14所对应实施例中对步骤S1051‑步骤S1053的描述,这里将不再进行赘述。
[0302] 其中,空间对象对应于至少两个坐标轴;至少两个坐标轴中的每两个坐标轴用于构成空间平面,每两个坐标轴之间存在垂直关系;空间平面包括具有相同尺寸的单元标识码。
[0303] 其中,图像获取模块11,直线获取模块12,方程生成模块13和内参确定模块14的具体实现方式,可以参见上述图3所对应实施例中对步骤S101‑步骤S104的描述,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0304] 进一步地,请参见图16,图16是本申请实施例提供的一种计算机设备的结构示意图。如图16所示的计算机设备1000可以是上述实施例中的服务器或终端设备,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,在一些实施例中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。可选的,网络接口1004可以包括标准的有线接口、无线接口(如WI‑FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non‑volatile memory),例如至少一个磁盘存储器。可选的,存储器1005还可以是至少一个位于远离前述处理器1001的存储装置。如图16所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
[0305] 在如图16所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
[0306] 获取与空间对象相关联的目标图像;目标图像是由拍摄组件对空间对象进行拍摄所得到的;空间对象包括由空间线段所组成的单元标识码;
[0307] 在目标图像中,获取由空间线段所构成的空间虚拟直线,将空间虚拟直线的直线标识作为空间线段的线段标识,确定空间虚拟直线所映射的消失点标识;
[0308] 根据线段标识和空间线段中的空间角点的角点坐标,生成空间虚拟直线的直线方程;
[0309] 根据消失点标识和直线方程,生成消失点标识所指示的消失点的消失点坐标,基于消失点坐标确定拍摄组件针对目标图像的组件内参。
[0310] 应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3、图7、图10、图12和图14所对应实施例中对数据处理方法的描述,也可执行前文图15所对应实施例中对数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0311] 此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,当处理器执行计算机程序时,能够执行前文图3、图7、图10、图12和图14所对应实施例中对数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
[0312] 此外,需要说明的是:本申请实施例还提供了一种计算机程序产品,该计算机程序产品可以包括计算机程序,该计算机程序可以存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器可以执行该计算机程序,使得该计算机设备执行前文图3、图7、图10、图12和图14所对应实施例中对数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述。
[0313] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read‑Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0314] 以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。