物体三维重建方法及装置
技术领域
本发明属于三维重建技术领域,尤其涉及一种物体三维重建方法及装置。
背景技术
在现代工业中,传统的测量设备,如三坐标测量机、卡尺、千分尺等,因测量速度慢、效率低,已不能适应现代制造技术发展的需要。而计算机视觉检测技术以其非接触、快速、高精度、自动化程度高等诸多优点,在工业生产中得到了越来越广泛的应用。计算机视觉检测方法包括基于单摄像头结合结构光的方法、双目视觉方法和投影仪配合摄像机方法等。目前用于采集实物表面点云数据的方法基本可以分为两大类:接触式测量和非接触式测量。非接触式测量包括激光扫描法和莫尔条纹法。
发明人在实现本发明的过程中发现传统的激光扫描法存在以下不足:需提前对整个测量装置进行精确标定,一旦装置内部元件位置发生轻微移动,则需要重新送回原厂标定,测量精度低。
发明内容
有鉴于此,本发明实施例提供了一种物体三维重建方法及装置,以解决现有技术中需提前对整个测量装置进行精确标定且在装置内部元件位置发生轻微移动时需重新标定的问题。
本发明实施例的第一方面,提供了一种物体三维重建装置,包括:第一光线捕捉模块、第二光线捕捉模块、光线生成模块、标靶和处理模块;
在所述光线生成模块射出的光线的方向上,所述标靶为双层或多层的闭合环状结构,设置在所述光线生成模块和目标物体之间;
所述光线生成模块,用于生成源光线,以使所述源光线通过所述标靶投向所述目标物体以及反射至所述第一光线捕捉模块;
所述第二光线捕捉模块,用于捕捉所述目标物体反射的第二光线;
所述处理模块,用于根据所述第一光线捕捉模块捕捉到的第一光线和所述第二光线捕捉模块捕捉到的所述第二光线对所述目标物体进行三维重建。
本发明实施例的第二方面,提供了一种物体三维重建方法,包括:
根据第一光线和第二光线,标定第一光线捕捉模块的第一内参数和第二光线捕捉模块的第二内参数;
根据所述第一内参数和所述第二内参数,得出所述第一光线捕捉模块和所述第二光线捕捉模块之间的位置关系;
根据光线生成模块生成的源光线与标靶的交界线确定光平面;
根据所述光平面和所述第一光线捕捉模块和所述第二光线捕捉模块之间的位置关系对目标物体进行三维重建。
本发明实施例相对于现有技术所具有的有益效果:本发明实施例采取在所述光线生成模块射出的光线的方向上为双层或多层的闭合环状结构的标靶,实现实时标定线结构光平面与光线捕捉模块坐标系的关系,能够增强抗外界环境扰动的干扰,外界的震动导致的标靶或者光线生成模块的小幅移动并不会影响测量精度,测量精度较高,且不需要定期重新标定,从而能够大大拓展适用范围,尤其对于多震动环境。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的物体三维重建装置的结构框图;
图2是本发明实施例提供的物体三维重建装置的结构示意图;
图3是本发明实施例提供的标靶的结构示意图;
图4是本发明实施例提供的物体三维重建方法的流程图;
图5是本发明实施例提供的图4中步骤S102的实现流程图;
图6是本发明实施例提供的图4中步骤S104的实现流程图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一
图1示出了本发明实施例一提供的物体三维重建装置的结构框图,详述如下:
该物体三维重建装置,包括:第一光线捕捉模块102、第二光线捕捉模块103、光线生成模块101、标靶104和处理模块105。其中,在所述光线生成模块101射出的光线的方向上,所述标靶104为双层或多层的闭合环状结构,设置在所述光线生成模块101和目标物体之间。所述光线生成模块101,用于生成源光线,以使所述源光线通过所述标靶104投向所述目标物体以及反射至所述第一光线捕捉模块102。所述第二光线捕捉模块103,用于捕捉所述目标物体反射的第二光线。所述处理模块105,用于根据所述第一光线捕捉模块102捕捉到的第一光线和所述第二光线捕捉模块103捕捉到的所述第二光线对所述目标物体进行三维重建。
首先将目标物体置于光线生成模块101生成的光线覆盖范围内,固定不动;启动测量程序,光线生成模块101打开,第一光线捕捉模块102和第二光线捕捉模块103实时采集拍摄到的图片;处理模块105通过处理第二光线捕捉模块103捕捉到的第二光线得到光平面与第二光线捕捉模块103坐标系的位置关系;通过处理第一光线捕捉模块102捕捉到的目标物体反射的第一光线得到三维坐标,从而可得到目标物体整个表面的稀疏点云。点云稀疏程度取决于扫描的线数,扫描线数越多,舵机旋转越慢,耗时越久,点云越密集,反之点云则越稀疏。实际应用中可以根据得到点云的具体用途选择合适的扫描线数。
由此可见,上述物体三维重建装置,采取特制的标靶104实现实时标定线结构光平面与光线捕捉模块坐标系的关系,能够增强抗外界环境扰动的干扰,外界的震动导致的标靶104或者光线生成模块101的小幅移动并不会影响测量精度,测量精度较高,且不需要定期重新标定,从而能够大大拓展适用范围,尤其对于多震动环境。
参见图3,作为一种可实施方式,标靶104可以包括两个L型靶面1041和1042。在所述光线生成模块101射出的光线的方向上,两个靶面1041和1042为双层结构。例如,靶面1041位于前一层,靶面1042位于后一层。两个L型靶面1041和1042呈口字型结构。
在其他实施例中,标靶104还可以为其他形状。例如,所述标靶104可以包括至少两个弧形靶面。在所述光线生成模块101射出的光线的方向上,所述至少两个弧形靶面呈闭合环状结构,且各个所述弧形靶面位于不同平面上。标靶104还可以为其他可构成闭合环的标靶结构。而且,在所述光线生成模块101射出的光线的方向上,标靶104的层数不限于两层,还可以为多层。
一个实施例中,第一光线捕捉模块102可以为长焦摄像头,第二光线捕捉模块103可以为短焦广角摄像头,光线生成模块101为半导体线激光器。第一光线捕捉模块102和第二光线捕捉模块103位于光线生成模块101两侧。
可选的,所述处理模块105具体用于:
根据所述第二光线,计算光平面与所述第二光线捕捉模块103坐标系的旋转平移关系;
根据所述旋转平移关系和所述第一光线得出所述目标物体表面点云;
根据所述目标物体表面点云进行三维重建。
进一步的,物体三维重建装置还可以包括转动模块。所述转动模块用于带动光线生成模块101旋转。本实施例中采取旋转光线生成模块101的方式而不是使用平移导轨的方式完成对整个目标物体表面的扫描,不需要标定导轨的移动相对于第一光线捕捉模块102坐标系和第二光线捕捉模块103坐标系的关系,不需要经过点云拼接融合,从而能够大大减轻算法实现的复杂难度,同时由于不需要精密的平移导轨而大大降低成本。
参见图2,物体三维重建装置包括两个作用不同的摄像头202和203、一半导体线激光器201、一舵机206和一双层标靶204。左摄像头202是长焦摄像头,用于拍摄目标物体。右摄像头203是短焦广角镜头,用于实时观测双层标靶204。双层标靶204主要包含前后两块L型的靶面,每个L型靶面包含一大一小两块标靶,两标靶方向相互垂直。两块L型标靶可组合成“口”字型标靶,且“口”字型标靶中间是空的,可以让导体线激光器201射出的激光线穿过并打在目标物体上面。
工作时,舵机206带着导体线激光器201旋转,激光一部分打在双层标靶204上,另一部分通过双层标靶204的中间空心区域投射到目标物体上。打在双层标靶204上的激光线条可以被右摄像头203捕捉,并实时计算线激光平面与右摄像头203坐标系的旋转平移关系,再通过立体标定参数计算激光平面与参考摄像机坐标系(左摄像头202)的旋转平移关系,结合参考摄像机小孔成像直线方程与激光平面方程可得出打在目标物体上的激光线条对应的三维坐标。当舵机206带动导体线激光器201旋转一周时,对应得到360度方位上所有的线激光三维坐标的融合,从而得出目标物体的三维点云。
参见图2,双层标靶204放置在整个支架的前方20cm处,确保整个双层标靶204都在摄像头的视野范围内。左摄像头202和右摄像头203在支架上的位置可调,且一旦标定了左摄像头202和右摄像头203的旋转平移参数,则不能改变左摄像头202和右摄像头203的相对位置,否则需重新标定。导体线激光器201的位置和双层标靶204的位置可微调,只要确保在调节范围内即可。
本发明实施例采取了线激光扫描的方式,但不限于单根激光线条,多线结构光及其他投影图案都可以实现。
实施例二
对应于上文实施例所述的物体三维重建装置,图4示出了本发明实施例二提供的物体三维重建方法的结构框图。上述物体三维重建方法可以用于实施例一中处理模块105根据第一光线捕捉模块102、第二光线捕捉模块103捕捉到的光线进行对目标物体进行三维重建处理。为了便于说明,仅示出了与本实施例一相关的部分。
参照图4,该方法包括:
步骤S101,根据第一光线和第二光线,标定第一光线捕捉模块的第一内参数和第二光线捕捉模块的第二内参数。
步骤S102,根据所述第一内参数和所述第二内参数,得出所述第一光线捕捉模块和所述第二光线捕捉模块之间的位置关系。
参见图5,一个实施例中,步骤S102可以通过以下过程实现:
步骤S201,通过在不同方位拍摄同一预设大小的棋盘格标靶,得到所述第一光线捕捉模块/所述第二光线捕捉模块的外参矩阵
和内参矩阵
其中,fx和fy为焦距,u0和v0为理想图像坐标,R为旋转向量,t为平移向量。
步骤S202,根据刚体变换理论得出所述第一光线捕捉模块102和所述第二光线捕捉模块103之间的旋转平移矩阵为:
其中,Rl为所述第一光线捕捉模块102的旋转向量,tl为所述第一光线捕捉模块102的平移向量,Rr为所述第二光线捕捉模块103的旋转向量,tr为所述第二光线捕捉模块103的平移向量。
步骤S103,根据光线生成模块生成的源光线与标靶的交界线确定光平面。
其中,以标靶104为双层标靶为例进行说明,但并不以此为限。双层标靶每层都有两个靶面,每个靶面又有两个标靶,线激光每次都只能打在每个靶面中的一个标靶。因此每个靶面可提供一定数量的三维点(在第二光线捕捉模块103坐标系中,即在右摄像头203坐标系中),这些三维点在一条直线上,直线为激光平面与靶面的交线。由于有两个靶面,故可以得出两条不共靶面的直线点云,通过这些点可以拟合出激光平面方程。
其中,靶面上的每个标靶都有一定数量的规则排列的实心圆组成,每个圆直径为10mm,两个圆心之间为10mm,边界离最近圆的圆心距离为7.5mm,靶面上两个标靶分别为5*9和5*21大小。每个标靶的坐标系原点在标靶转角处。当线激光打在标靶上的时候,可以通过激光线在各实心圆中的位置按比例获得激光线经过的平面坐标。
步骤S104,根据所述光平面和所述第一光线捕捉模块和所述第二光线捕捉模块之间的位置关系对目标物体进行三维重建。
具体的,参见图6,步骤S104可以通过以下过程实现:
步骤S301,将所述源光线线条进行骨骼化处理,得出所述源光线线条的骨骼。
其中,将源光线线条进行骨骼化,以精确提取所述源光线线条经过的区域。初步图片处理后,可得到所述源光线线条的骨骼。本实施例中,对所述源光线线条进行骨骼化处理可参考灰度重心法。
首先决定一个搜索方向,如果激光线条在图片中的倾斜方向更接近竖直方向,则按水平方向每行搜索,若激光线条方向更靠近水平方向,则按竖直方向每列搜索。下面以每行搜索为例分析。第一步先挑选一个阈值粗略的将激光线条分离出来,阈值的选取可以根据实际激光器的功率和测量距离大致选取,一般选200以上就可以。当确定阈值threshold后,每行搜索时小于阈值的灰度值全部置为0,其余的保持不变。假设图片某一行i中大于等于阈值的像素的列号和灰度值分别为col_no,grayvalue_no,则该行对应的亚像素列值为:
最终骨骼在该行的像素值为(col_subpixel(i),i)i),按照同样的方法可依次得到其余每行的亚像素坐标值(col_subpixel(j),j),j=0,1,2,......height-1。当按列搜索时会类似得到每列的亚像素表示:(row_subpixel(j),j),j=0,1,2,......width-1,分别为摄像机采集图像的高和宽(像素单位)。
步骤S302,提取每个所述实心圆的圆心,得出所述实心圆的圆心的亚像素坐标。
其中,可通过腐蚀算法提取每个所述实心圆的圆心,初步图片处理后可以得出所述实心圆的圆心的亚像素坐标。
步骤S303,根据较比不变性原理得到所述源光线线条的骨骼上的二维亚像素点,并按照预设尺寸关系将所述实心圆圆心的亚像素坐标转换成标靶坐标系上的二维坐标。
步骤S304,根据所述源光线线条的骨骼上的二维亚像素点和所述实心圆圆心在标靶坐标系上的二维坐标,得到所述源光线线条在所述第一光线捕捉模块坐标系和所述第二光线捕捉模块坐标系的三维坐标。
其中,所述源光线线条在所述第一光线捕捉模块坐标系的三维坐标为point1(x,y,z),所述源光线线条在所述第一光线捕捉模块坐标系的三维坐标为point2(x,y,z)。步骤S304中三维坐标的求解可以通过以下过程实现:
首先,根据所述源光线线条的两个三维坐标,拟合得出第一平面方程ax+by+cz+d=0。其中,可以根据所述源光线线条的两个三维坐标,通过RANSAC方法拟合得出第一平面方程。
然后,根据所述第一平面方程和所述旋转平移矩阵,得出第二平面方程Ax+By+Cz+D=0。
接着,设定空间上点p(x,y,z)在左摄像机图片上投影为点(x
l,y
l),经标定后得图片中心点(u
l,v
l)和焦距f,则由小孔成像原理得出直线方程
最后,根据所述直线方程和所述第二平面方程求解点p(x,y,z)。按照这个方法依次取出左摄像机上激光线条上的骨骼亚像素坐标(xli,yli),i=1,2,......,即可算出对应的三维坐标点pi(xi,yi,zi),i=1,2,......。
步骤S301至S304只重建了其中一根激光线上的所有三维坐标,按照同样的方法,舵机每旋转到一个新角度都可以得到一组新的三维点,由于被测物体保持不动,所得到的三维点云仍然是直接建立在左摄像机坐标系上的,点云之间无需其他复杂方法融合。当舵机旋转一周后,得到一周内所有测量激光线条上的三维坐标,这些三维坐标就是被测物体表面的三维点云。可以利用这些点云进行后续各种处理或者进行三角剖分重建处完整的表面。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。