发明内容
针对现有技术中的缺陷,本发明的目的是提供一种相机标定方法、装置、设备及存储介质,用于3D相机的标定。
根据本发明提供的相机标定方法,包括:
步骤S1:获取投影至标定板坐标系的目标标定板图像,在所述目标标定板图像中截取出多个第一ROI区域,每个所述第一ROI区域包括一标定图标;
步骤S2:提取所述标定图标的梯度图和边缘像素点,根据所述梯度图在所述边缘像素点上找出梯度最大值点,根据所述梯度最大值点确定所述标定图标的亚像素边缘点;
步骤S3:根据所述标定图标的亚像素边缘点拟合确定所述标定图标的中心点像素初步坐标,进而将所述中心点像素初步坐标投影至相机坐标系生成中心点像素坐标;
步骤S4:获取每一所述标定图标的标号及所述中心点像素坐标,根据标定图标的标号以及所述中心点像素坐标确定相机的目标内外参数。
优选地,所述步骤S1包括如下步骤:
步骤S101:获取预采集的多张标定板图像,所述标定板图像在相机坐标系下采集;
步骤S102:获取对所述相机进行初步标定生成的初步内外参数;
步骤S103:根据所述初步内外参数将所述标定板图像投影至标定板坐标系生成目标标定板图像,且使得所述目标标定板图像在所述标定板坐标系中处于正视状态。
优选地,所述步骤S2包括如下步骤:
步骤S201:提取所述标定图标的梯度图和边缘像素点;
步骤S202:根据所述梯度图在所述边缘像素点上找出梯度最大值点,以所述梯度最大值点为中心选取第二ROI区域;
步骤S203:将所述第二ROI区域的质心作为所述亚像素边缘点。
优选地,所述步骤S3包括如下步骤:
步骤S301:根据所述标定图标的亚像素边缘点拟合确定所述标定图标的中心点像素并生成中心点像素初步坐标;
步骤S302:获取对所述相机进行初步标定生成的初步内外参数;
步骤S303:根据所述初步内外参数将所述中心点像素初步坐标投影至相机坐标系生成中心点像素坐标。
优选地,重复执行步骤S1至S4,直至执行次数达到预设置的执行次数阈值,或直至所述相机的目标内外参数误差收敛至误差最小值。
优选地,所述标定图标的标号生成包括如下步骤:
步骤M1:以每一所述中心点像素为圆心生成多个第三ROI区域,计算每一所述第三ROI区域的平均像素灰度值;
步骤M2:对平均像素灰度值进行排序生成灰度值序列,根据所述灰度值序列确定所述标定板图像中的第一标定图标区域和第二标定图标区域;
步骤M3:计算多个第一标定图标区域两两之间的中心点像素距离,根据多个所述中心点像素距离对所述第一标定图标区域进行编号;
步骤M4:根据第二标定图标区域的中心点像素与两个第一标定图标区域连线的距离确定位于标定板四个角端的第二标定图标区域;
步骤M5:根据位于标定板四个角端的第二标定图标区域对所有的标定图标区域进行标号。
优选地,所述第三ROI区域的直径根据所有相邻的标定图标区域之间圆心距离的平均值确定。
根据本发明提供的相机标定装置,包括如下模块:
图像获取模块,用于获取相对于相机正投影的目标标定板图像,在所述目标标定板图像中截取出多个第一ROI区域,每个所述第一ROI区域包括一标定图标;
亚像素边缘确定模块,用于提取所述标定图标的梯度图和边缘像素点,根据所述梯度图在所述边缘像素点上找出梯度最大值点,根据所述梯度最大值点确定所述标定图标的亚像素边缘点;
像素坐标生成模块,用于根据所述标定图标的亚像素边缘点拟合确定所述标定图标的中心点像素,进而相对于所述相机反投影生成中心点像素坐标;
参数计算模块,用于获取每一所述标定图标的标号及所述中心点像素坐标,根据标定图标的标号以及所述中心点像素坐标确定相机的目标内外参数。
根据本发明提供的相机标定设备,包括:
处理器;
存储器模块,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行所述的相机标定方法的步骤。
根据本发明提供的计算机可读存储介质,用于存储程序,所述程序被执行时实现所述的相机标定方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
本发明中通过将标定板图像变换为相对于相机正投影的目标标定板图像,然后在目标标定板图像根据梯度图确定亚像素边缘点以及中心点像素,然后反投影生成中心点像素坐标,进而生成计算出3D相机的目标内外参数,提高了3D相机标定的精准度,便于3D相机应用在拣选机器人上。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
图1为本发明实施例中相机标定方法的步骤流程图,如图1所示,本发明提供的相机标定方法,包括:
步骤S1:获取投影至标定板坐标系的目标标定板图像,在所述目标标定板图像中截取出多个第一ROI区域,每个所述第一ROI区域包括一标定图标,如图6所示;
图2为本发明实施例中生成正投影的目标标定板图像的步骤流程图,如图2所示,所述步骤S1包括如下步骤:
步骤S101:获取预采集的多张标定板图像,所述标定板图像在相机坐标系下采集,如图9所示;
步骤S102:获取对所述相机进行初步标定生成的初步内外参数;
步骤S103:根据所述初步内外参数将所述标定板图像投影至标定板坐标系生成目标标定板图像,且使得所述目标标定板图像在所述标定板坐标系中处于正视状态,如图10所示。
在本发明实施例中,所述相机坐标系为以镜头光心为原点OC,平行于像素的行、列方向分别为XC轴和YC轴方向,根据右手坐标系规则确定ZC轴方向建立的三维直角坐标系。所述标定板坐标系为以标定板左上角点为原点OU,标定板的行、列方向分别为XU轴和YU轴方向。
把标定板图像通过一个homography矩阵进行透视变换,得到一个无畸变的目标标定板图像,所述homography矩阵至少通过所述初步内外参数计算生成。
步骤S2:提取所述标定图标的梯度图和边缘像素点,根据所述梯度图在所述边缘像素点上找出梯度最大值点,根据所述梯度最大值点确定所述标定图标的亚像素边缘点;
图3为本发明实施例中生成亚像素边缘点的步骤流程图,如图3所示,所述步骤S2包括如下步骤:
步骤S201:提取所述标定图标的梯度图和边缘像素点;
步骤S202:根据所述梯度图在所述边缘像素点上找出梯度最大值点,以所述梯度最大值点为中心选取第二ROI区域;
步骤S203:将所述第二ROI区域的质心作为所述亚像素边缘点。
在本发明实施例中,采用Sobel算子生成所述标定图标边缘的梯度图,如图7所示,再使用canny算子生成标定图标的整数像素边缘像素点,如图8所示,所述边缘像素点为整数像素点。
所述第二ROI区域为以述梯度最大值点为中心形成的5×5或者7×7的像素范围。
步骤S3:根据所述标定图标的亚像素边缘点拟合确定所述标定图标的中心点像素,进而相对于所述相机反投影生成中心点像素坐标;
图4为本发明实施例中生成中心点像素坐标的步骤流程图,如图4所示,所述步骤S3包括如下步骤:
步骤S301:根据所述标定图标的亚像素边缘点拟合确定所述标定图标的中心点像素并生成中心点像素初步坐标;
步骤S302:获取对所述相机进行初步标定生成的初步内外参数;
步骤S303:根据所述初步内外参数将所述中心点像素初步坐标投影至相机坐标系生成中心点像素坐标。
在本发明实施例中,至少通过所述初步内外参数生成的另一矩阵,能够把中心点像素初步坐标反向变换生成所述中心点像素坐标,即转换为为带畸变的标定板图像中的中心点像素坐标。
步骤S4:获取每一所述标定图标的标号及所述中心点像素坐标,根据标定图标的标号以及所述中心点像素坐标确定相机的目标内外参数。
在本发明实施例中,重复执行步骤S1至S4,直至执行次数达到预设置的执行次数阈值,或直至所述相机的目标内外参数误差收敛至误差最小值。
所述执行次数阈值可以设置为4至10次。
所述误差最小值为当本次迭代计算出的目标内外参数的误差与上次迭代计算出的目标内外参数的误差差值小于预设置的差值阈值时,认定上次迭代计算出的目标内外参数的误差为误差最小值。
在本发明实施例中,所述差值阈值可以设置为0.001。
图5为本发明实施例中生成标定图标的标号的步骤流程图,如图5所示,所述标定图标的标号生成包括如下步骤:
步骤M1:以每一所述中心点像素为圆心生成多个第三ROI区域,计算每一所述第三ROI区域的平均像素灰度值;
步骤M2:对平均像素灰度值进行排序生成灰度值序列,根据所述灰度值序列确定所述标定板图像中的第一标定图标区域和第二标定图标区域;
如图11所示,所述第一标定图标区域为大圆区域,所述第二标定图标区域为小圆区域。排序的前5个标定图标区域即为5个大圆区域的像素位置。
步骤M3:计算多个第一标定图标区域两两之间的中心点像素距离,根据多个所述中心点像素距离对所述第一标定图标区域进行编号;
更为具体地,首先,对5个大圆区域计算两两圆心之间的距离,5个大圆区域总共有10个距离值。对这10个距离值进行排序,分别找出距离值最小和最大的两对圆心坐标。距离值最小的一对圆心点为最下面的两个大圆,记为编号大圆2和大圆3。距离值最大的一对圆心点为中间行的两个大圆,记为编号大圆4和大圆5。剩下的另一个大圆区域即为大圆1。
然后还进一步需要区分大圆2和大圆3以及大圆4和大圆5。对于大圆2和大圆3,取大圆4和大圆5的中点和大圆1形成第一直线,分别计算大圆2和大圆3的圆心到第一直线的距离,距离短的记为大圆2,距离长的记为大圆3。对于大圆4和大圆5,取大圆1和大圆3形成第二直线,分别计算大圆4和大圆5的圆心到第二直线的距离,距离短的记为大圆4,距离长的记为大圆5。标记完成的大圆区域编号,如图11所示。
步骤M4:根据第二标定图标区域的中心点像素与两个第一标定图标区域连线的距离确定位于标定板四个角端的第二标定图标区域;
具体为,连接大圆1和大圆5形成第三直线,计算图中所有圆心坐标到第三直线的距离,距离最长的即为图中右下角圆心坐标,记为小圆A;同理直线连接大圆1和大圆4,大圆2和大圆4以及大圆2和大圆5,即可确定左下角的小圆B、左上角的小圆C和右上角的小圆D的圆心像素坐标。
步骤M5:根据位于标定板四个角端的第二标定图标区域对所有的标定图标区域进行标号。
具体为,连接小圆A和小圆D形成直线AD,计算所有标定图标区域的圆心坐标到直线AD之间的距离,假设标定板圆形阵列为7行9列,则取距离最小的前7个圆心坐标即为最右的一列圆形,再在7个圆心坐标中计算到小圆A的圆心点的距离,离小圆A由远到近对7个圆排序形成小圆9、小圆18、小圆27、小圆36、小圆45、小圆54以及小圆63。
接小圆A和小圆B形成直线AB,再遍历小圆9、小圆18、小圆27、小圆36、小圆45、小圆54以及小圆63,依次过每个圆形作平行于AB的直线,重新计算所有圆心到直线AD的距离并排序,就能够得到每一行上的9个圆形的序号。
在本发明实施例中,所述第三ROI区域的直径根据所有相邻的标定图标区域之间圆心距离的平均值确定。
图12为本发明实施例中应用相机标定方法的物品拣选机器人的结构示意图,如图12所示,本发明提供的相机标定装置,还包括:
第一单元、第二单元,用于储放或/和运输物料;
深度相机300,其视觉扫描区域至少涵盖所述物料的储放或运输的第一单元,用于对所述物料进行视觉扫描,采集所述物料的深度图像,并根据所述深度图像生成物料的位姿信息和存放位置;
机器人单元100,与所述深度相机300通信连接,用于接收所述位姿态信息和存放位置,根据所述位姿和所述存放位置判断目标物体的放置状态,并根据所述放置状态对所述目标物体进行拣取。
在本发明一实施例中,所述第一单元可以设置为储料单元200;
储料单元200,用于储放物料,所述物料为所述目标物体,如金属制品、盒体等任意物品;
机器人单元100,与所述深度相机300通信连接,用于接收所述位姿态信息和存放位置,根据所述位姿和所述存放位置判断目标物体的放置状态,并根据所述放置状态对所述目标物体进行拣取后移送至第二单位中。
所述第二单位可以设置为对拣选后的物料进行运输或存放,如设置为便于物品整齐排列的支撑架,
所述第二单位,还可以设置运输单元,使得所述机器人单元100能够将支撑架上的目标物体移动至运输单元上。
所述深度相机300,设置在相机支架500上,且因所述相机支架500的横梁的遮挡而未示出。
其中,所述机器人单元100包括处理器,处理器配置为经由执行可执行指令来执行所述相机标定方法的步骤时,通过将标定板图像变换为相对于所述深度相机300正投影的目标标定板图像,然后在目标标定板图像根据梯度图确定亚像素边缘点以及中心点像素,然后反投影生成中心点像素坐标,进而生成计算出相机的目标内外参数,提高了相机标定的精准度,便于相机应用在拣选机器人上。
图13为本发明实施例中相机标定装置的模块示意图,如图13所示,本发明提供的相机标定装置400,包括如下模块:
图像获取模块401,用于获取相对于相机正投影的目标标定板图像,在所述目标标定板图像中截取出多个第一ROI区域,每个所述第一ROI区域包括一标定图标;
亚像素边缘确定模块402,用于提取所述标定图标的梯度图和边缘像素点,根据所述梯度图在所述边缘像素点上找出梯度最大值点,根据所述梯度最大值点确定所述标定图标的亚像素边缘点;
像素坐标生成模块403,用于根据所述标定图标的亚像素边缘点拟合确定所述标定图标的中心点像素,进而相对于所述相机反投影生成中心点像素坐标;
参数计算模块404,用于获取每一所述标定图标的标号及所述中心点像素坐标,根据标定图标的标号以及所述中心点像素坐标确定相机的目标内外参数。
本发明实施例中还提供一种相机标定设备,包括处理器和存储器。存储器,其中存储有处理器的可执行指令。其中,处理器配置为经由执行可执行指令来执行相机标定方法步骤。
如上,该实施例中,通过将标定板图像变换为相对于所述相机正投影的目标标定板图像,然后在目标标定板图像根据梯度图确定亚像素边缘点以及中心点像素,然后反投影生成中心点像素坐标,进而生成计算出相机的目标内外参数,提高了相机标定的精准度,便于相机应用在拣选机器人上。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
图14是本发明实施例中相机标定设备的结构示意图。下面参照图14来描述根据本发明中这种实施方式的电子设备600。图14显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图14所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述相机标定方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元610可以执行如图1中所示的步骤。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备、相机、深度相机等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图14中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本发明实施例中还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现的相机标定方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述相机标定方法部分中描述的根据本发明各种示例性实施方式的步骤。
如上所示,该实施例的计算机可读存储介质的程序在执行时,通过将标定板图像变换为相对于所述相机正投影的目标标定板图像,然后在目标标定板图像根据梯度图确定亚像素边缘点以及中心点像素,然后反投影生成中心点像素坐标,进而生成计算出相机的目标内外参数,提高了相机标定的精准度,便于相机应用在拣选机器人上。
图15是本发明实施例中的计算机可读存储介质的结构示意图。参考图15所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本发明实施例中,通过将标定板图像变换为相对于相机正投影的目标标定板图像,然后在目标标定板图像根据梯度图确定亚像素边缘点以及中心点像素,然后反投影生成中心点像素坐标,进而生成计算出相机的目标内外参数,提高了相机标定的精准度,便于相机应用在拣选机器人上。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。