物体体积测量方法、相关装置及计算机可读存储介质
技术领域
本申请涉及图像处理技术领域,尤其涉及一种物体体积测量方法、相关装置及计算机可读存储介质。
背景技术
随着电子产品的快速发展以及人工智能技术的瓶颈不断被突破,智能化产品在日常生活中不断涌现,其中移动终端的种类越来越丰富,移动终端具备的功能也越来越多。
发明人在研究现有技术的过程中发现:在工作或生活中,人们经常需要测量一些物体的体积,目前一般采用专门的测量设备进行测量,经常会出现由于无法及时找到该测量设备而影响测量的情况。当然,也可以采用结合多种传感器的智能终端进行测量,但由于该智能终端需要结合多种传感器导致该智能终端的体积大,存在不便携的问题,同样会出现无法及时找到该智能终端而影响测量的情况。如果能够采用移动终端测量物体的体积,将会为人们带来很大的方便,提高测量效率。但是,由于移动终端上可使用的传感器很少,以手机为例,只能依赖手机上的摄像头采集被测物体的图像数据,这就对算法的要求很高。
鉴于此,需要提供一种简单有效的物体体积测量方法,使得不需要使用多种传感器以及专门的测量设备也能够测量物体的体积。
发明内容
本申请部分实施例所要解决的一个技术问题在于提供一种物体体积测量方法及相关装置,使得能够简单有效测量物体体积,且不需要使用多种传感器以及专门的测量设备。
本申请的一个实施例提供了一种物体体积测量方法,其中,包括:通过双目相机拍摄获得被测物体的左视角图像和右视角图像;对所述左视角图像和右视角图像进行预处理,其中,预处理后的左视角图像和预处理后的右视角图像行对齐;识别所述预处理后的左视角图像以及所述预处理后的右视角图像中所述被测物体的顶点位置信息;根据识别到的顶点位置信息,确定所述被测物体的体积。
本申请的一个实施例还提供了一种物体体积测量装置,其中,包括:获取模块,用于通过双目相机拍摄获得被测物体的左视角图像和右视角图像;预处理模块,用于对所述左视角图像和右视角图像进行预处理,其中,预处理后的左视角图像和预处理后的右视角图像行对齐;识别模块,用于识别所述预处理后的左视角图像以及所述预处理后的右视角图像中所述被测物体的顶点位置信息;计算模块,用于根据识别到的顶点位置信息,确定所述被测物体的体积。
本申请的一个实施例还提供了一种电子设备,其中,包括至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行所述的物体体积测量方法。
本申请的一个实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现所述的物体体积测量方法。
相对于现有技术而言,本申请实施例中,仅需要通过双目相机拍摄获得左视角图像和右视角图像即可,不需要使用多种传感器,且不需要使用专门的测量设备,对左视角图像和右视角图像进行行对齐后,从左视角图像和右视角图像中识别被测物体的顶点位置信息,进而根据被测物体的顶点位置信息确定被测物体的体积,无需复杂的算法,测量方法简单有效。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请中物体体积测量的大致流程示意图;
图2是本申请第一实施例中物体体积测量的过程示意图;
图3是本申请第一实施例中正方体的顶点标记示意图;
图4是本申请第二实施例中物体体积测量的过程示意图;
图5是本申请第二实施例中世界坐标系与像素坐标系的关系示意图;、
图6是本申请第三实施例中物体体积测量装置的结构示意图;
图7是本申请第四实施例中物体体积测量装置的结构示意图;
图8是本申请第五实施例中电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请部分实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。然而,本领域的普通技术人员可以理解,在本申请的各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。
需要说明的是,本申请以下各实施例所提供的物体体积测量方法,适用于具有顶点且能够根据顶点确定出体积计算所需参数的物体。
本申请以下各实施例中进行物体体积测量的过程大致如图1所示,左侧相机(Camera1)拍摄被测物体获得左视角图像(也简称为左图),右侧相机(Camera2)拍摄被测物体获得右视角图像(也简称为右图),对左视角图像进行预处理,以及对右视角图像进行预处理后进行顶点识别,从预处理后的左视角图像中获得Camera1候选点集,从预处理后的右视角图像中获得Camera2候选点集,根据Camera1候选点集和Camera2候选点集进行双目匹配,确定被测物体的顶点位置后计算被测物体的体积。
本申请第一实施例中,提供了一种物体体积测量方法,该方法可应用于任意具有处理功能的电子设备,该电子设备可以具有双目相机,也可以不具有双目相机。例如,该电子设备为导盲头盔、机器人、智能手机等。如图2所示,物体体积测量的具体过程如下:
步骤201:获取通过双目相机拍摄的被测物体的左视角图像和右视角图像。
其中,被测物体的左视角图像和右视角图像可以是执行物体体积测量的电子设备通过自身的双目相机拍摄获得,也可以是通过其它电子设备的双目相机拍摄获得。例如,智能手机或导盲头盔上设置有双目相机,则直接启动双目相机拍摄获得被测物体的左视角图像和右视角图像。
步骤202:对左视角图像和右视角图像进行预处理,其中,预处理后的左视角图像和预处理后的右视角图像行对齐。
其中,预处理过程主要是实现左视角图像和右视角图像的行对齐(也称为畸变矫正),当然,预处理过程还可以对左视角图像和右视角图像进行滤波去躁。
一个具体实施过程中,采用opencv的标定函数对相机进行双目标定,得到相机的内参和外参,然后利用相机的内参和外参,对左视角图像和右视角图像进行畸变矫正,例如采用opencv的remap函数对左视角图像和右视角图像进行畸变矫正后,得到行对齐的左视角图像和右视角图像。之后,采用高斯滤波对左视角图像和右视角图像进行滤波去躁。
步骤203:识别预处理后的左视角图像以及预处理后的右视角图像中被测物体的顶点位置信息。
本申请实施例中,根据预处理后的左视角图像和预处理后的右视角图像,进行双目匹配,得到被测物体的顶点位置信息。
一个具体实现中,双目匹配的过程大致如下:识别预处理后的左视角图像以及预处理后的右视角图像中被测物体的顶点,得到第一候选集合和第二候选集合,其中,第一候选集合中包括在预处理后的左视角图像中识别到的每个顶点各自的至少一个候选位置信息,第二候选集合中包括在预处理后的右视角图像中识别到的每个顶点各自的至少一个候选位置信息;分别对识别到的每个顶点进行以下处理:将第一候选集合中该顶点的每个候选位置信息,依次与第二候选集合中该顶点的每个候选位置信息进行匹配,根据匹配度最高的一对候选位置信息,确定该顶点在预处理后的左视角图像和预处理后的右视角图像中对应的位置;将识别到的每个顶点各自在预处理后的左视角图像和预处理后的右视角图像中对应的位置,作为顶点位置信息。
其中,第一候选集合和第二候选集合的获得过程具体如下:将预处理后的左视角图像以及预处理后的右视角图像,输入至预先存储的物体模型中,获得该物体模型在左视角图像中识别到的每个顶点各自的至少一个候选位置信息,生成第一候选集合,以及获得该物体模型在右视角图像中识别到的每个顶点各自的至少一个候选位置信息,生成第二候选集合;其中,该物体模型为基于预先保存的图像样本库进行训练得到,其中,该图像样本库中包括预先标注顶点位置、且与被测物体具有同一形状的物体的图像。
其中,候选位置信息中包括候选位置的像素坐标以及置信度。
例如,如图3所示,以正方体为例,图像样本库中的图像中物体的a、b、c、d四个顶点带有标记,标记满足两个条件:1,图像样本库中所有用于训练正方体顶点识别的样本图像中都是正方体物体的图像;2,图像样本库中针对正方体物体的顶点标记顺序一致,如都按照a->b->c->d的顺序标记,依次标记出a、b、c、d四个顶点的在图像中的像素坐标(u,v)。利用深度学习对标记后的样本图像进行训练,得到预期的正方体的模型。在训练得到正方体的模型后,将被测物体的左视角图像和右视角图像输入至模型中进行识别,得到a、b、c、d四个顶点的候选位置信息的点集,每个顶点对应有多个候选位置信息。
一个具体实现中,为了简化计算复杂度,提高计算效率,确定第一候选集合以及第二候选集合的过程中可以对每个顶点各自对应的候选位置信息进行筛选。例如,采用非极大值抑制(NMS)对在左视角图像中识别到的每个顶点各自的至少一个候选位置信息进行筛选,获得在左视角图像中识别到的每个顶点各自对应的设定个数(如三个或四个)的候选位置信息,作为第一候选集合;以及,采用非极大值抑制对在右视角图像中识别到的每个顶点各自的至少一个候选位置信息进行筛选,获得在右视角图像中识别到的每个顶点各自对应的设定个数的候选位置信息,作为第二候选集合。当然,本实施例并不限制筛选采用的具体实现方式,本申请的保护范围并不以此为限制,其它筛选方式也可以应用于本实施方式。
一个具体实现中,为了进一步降低计算量,提高效率,针对每个顶点分别进行以下处理:在将第一候选集合中顶点的每个候选位置信息,依次与第二候选集合中该顶点的每个候选位置信息进行匹配之前,根据该顶点在第一候选集合和第二候选集合中的每个候选位置信息,确定该顶点的候选位置所在像素行相差大于设定行数的候选位置信息,并从第一候选集合和第二候选集合中删除。
其中,对于任意一个顶点,根据匹配度最高的一对候选位置信息,确定该顶点在预处理后的左视角图像和预处理后的右视角图像中对应的位置,具体过程如下:针对第一候选集合中该顶点的每个候选位置信息,分别进行以下处理:分别与第二候选集合中该顶点的每个候选位置信息进行归一化积相关算法(Normalized Cross Correlation,NCC)匹配,获得第二候选集合中该顶点的每个候选位置信息各自对应的NCC值,确定NCC值中的最大值所对应的一对候选位置信息为初选候选位置信息;从该顶点对应的每个初选位置信息中,选择NCC值最大的初选位置位置信息为匹配度最高的一对候选位置信息;根据匹配度最高的一对候选位置信息,确定该顶点在预处理后的左视角图像和预处理后的右视角图像中对应的位置。
通过NCC匹配对第一候选集合和第二候选集合中的候选位置信息进行验证,排除误识别的顶点,分别找出左视角图像和右视角图像中物体的顶点位置。NCC匹配是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1,1]之间,对图像来说,每个像素点可以用RGB数值表示,整幅图像可看成是样本数据的集合,如果图像的子集与另外一个样本数据相互匹配,则NCC值为1,表示相关性很高,如果完全不相关,则NCC值为-1。
基于该原理,本实施例中,第一候选集合的顶点的候选位置信息与第二候选集合中该顶点的候选位置信息进行NCC匹配的计算公式表示如下:
其中,f(x,y)表示第一候选集合中的某顶点的候选位置信息中的像素点灰度值,t(x,y)表示第二候选集合中该顶点的候选位置信息中的像素点灰度值,uf表示左视角图像中包含该顶点的候选位置信息的预设窗口内所有像素点灰度值的平均值,ut表示右视角图像中包含该顶点的候选位置信息的预设窗口内所有像素点灰度值的平均值,σf表示左视角图像中包含该顶点的候选位置信息的预设窗口的标准方差,σt表示右视角图像中包含该顶点的候选位置信息的预设窗口的标准方差,n表示该预设窗口内的像素总数。
以图3所示的正方体中的a顶点为例,进行NCC匹配的具体过程如下:
由于左视角图像和右视角图像已经进行了行对齐,因此在对a顶点进行双目匹配时,以左视角图像中概率最大的a顶点(根据NMS计算结果选择)的候选位置信息为参考,判断a顶点的第一候选集合和第二候选集合中的候选位置信息是否在同一行附近,误差设为加减两行,将不满足该条件的点剔除。
将第一候选集合中概率最大的a顶点的候选位置信息,依次与第二候选集合中a顶点的每个候选位置信息进行NCC匹配,记录NCC值最高的一组候选位置信息,然后取第一候选集合中的a顶点的其它候选位置信息,重复上述操作,直至将第一候选集合中的a顶点的每个候选位置信息均已进行过NCC匹配。从记录的所有候选位置信息中选择NCC值最高的一组候选位置信息,作为a顶点最终在左视角图像和右视角图像中的匹配点。
重复以上操作,依次对图3所示的正方体中的其它三个顶点(b、c、d)进行匹配,确定b、c、d各自最终的匹配点。
步骤204:根据识别到的顶点位置信息,确定被测物体的体积。
具体地,根据识别到的顶点位置信息,确定被测物体的形状参数,其中,被测物体的形状参数包括被测物体的形状,以及被测物体的长度、宽度和高度;根据被测物体的形状参数计算被测物体的体积。
本申请实施例中,仅需要通过双目相机拍摄获得左视角图像和右视角图像即可,不需要使用多种传感器,且不需要使用专门的测量设备,对左视角图像和右视角图像进行行对齐后,从左视角图像和右视角图像中识别被测物体的顶点位置信息,进而根据被测物体的顶点位置信息确定被测物体的体积,无需复杂的算法,测量方法简单有效。尤其是对于规则的物体,计算的体积可以达到较高的精度。
本申请第二实施例中,提供了一种物体体积测量方法,该第二实施例的实施过程与第一实施例的实施过程大体相同,不同之处在于,第二实施方式中的物体为正方体或长方体。如图4所示,具体测量过程如下:
步骤401至步骤402的实施过程与步骤201至步骤202的实施过程相同,详见第一实施例中的描述,此处不再赘述。
步骤403:识别预处理后的左视角图像以及预处理后的右视角图像中被测物体的顶点,得到第一候选集合和第二候选集合。
其中,第一候选集合中包括在预处理后的左视角图像中识别到的每个顶点各自的至少一个候选位置信息,第二候选集合中包括在预处理后的右视角图像中识别到的每个顶点各自的至少一个候选位置信息。
步骤404:分别对识别到的每个顶点进行以下处理:将第一候选集合中该顶点的每个候选位置信息,依次与第二候选集合中该顶点的每个候选位置信息进行匹配,根据匹配度最高的一对候选位置信息,确定该顶点在预处理后的左视角图像和预处理后的右视角图像中对应的位置。
步骤405:根据识别到的每个顶点各自在预处理后的左视角图像和预处理后的右视角图像中对应的位置,确定每个顶点各自在世界坐标系下的坐标。
具体地,假设左侧相机的相机坐标系与世界坐标系重合,求解顶点再世界坐标系下的坐标,等同于求解顶点再左侧相机的相机坐标系下的坐标。假设世界坐标系的X轴与像素坐标系的x轴平行,世界坐标系的Y轴与像素坐标系的y轴平行,假设a顶点在左视角图像中的像素坐标为(xaL,yaL),a顶点在右视角图像中的像素坐标为(xaR,yaR),则该点在世界坐标系下的坐标为:
其中,fx,fy表示左侧相机(左视角图像对应的相机)在x轴和y轴上的归一化焦距,cx表示左侧相机感光芯片的中心点在x轴上的偏移,cy表示左侧相机感光芯片的中心在y轴上的偏移,b为左侧相机和右侧相机的基线,Xw表示世界坐标系中的X轴方向上的坐标值,Yw表示世界坐标系中的Y轴方向上的坐标值,Zw表示世界坐标系中的Z轴方向上的坐标值。其中。世界坐标系与像素坐标系之间的关系如图5所示。
需要说明的是,以上假设世界坐标系与左侧相机的相机坐标系重合,在不重合的情况下,按照以上方式计算得到的是顶点在左侧相机的相机坐标系下的坐标,然后按照世界坐标系与左侧相机的相机坐标系之间的坐标转换关系进行转换,即可得到顶点在世界坐标系下的坐标。
步骤406:根据每个顶点各自在世界坐标系下的坐标,确定相邻顶点之间的连线之间的夹角的角度值。
具体地,以图3所示的正方体为例,根据顶点a、b、c、d各自在世界坐标系下的坐标,计算相邻顶点之间的连线之间的夹角的角度值,例如,计算顶点a、b的连线与定点b、c的连线之间的夹角,计算公式表示为:
其中,假设a顶点在世界坐标系下的坐标为(XaW,YaW,ZaW),b顶点在世界坐标系的坐标为(XbW,YbW,ZbW),表示左视角图像中顶点a、b构成的向量, 表示左视角图像中顶点b、c构成的向量,的计算方式类似;|ab|表示ab连线的实际长度,|bc|表示bc连线的实际长度,|bc|的计算方式类似;θ表示ab连线和bc连线之间的夹角的角度值。
步骤407:根据该角度值确定相邻顶点之间的连线为直角。
具体地,根据步骤406给出的计算方式计算得到相邻顶点连线之间夹角的角度值后,判断该角度值是否属于预先设置的直角的角度值区间,例如直角的角度值区间为80°至100°,若是,则确定该相邻顶点连线之间夹角为直角。
步骤408:将识别到的每个顶点各自在预处理后的左视角图像和预处理后的右视角图像中对应的位置,作为顶点位置信息。
步骤409:根据识别到的顶点位置新型,确定被测物体的体积。
具体地,计算出ab、bc和cd三条边在世界坐标系下的实际长度,然后将三条边相乘得到物体的真实体积。
本申请实施例中,通过对物体的顶点进行识别后,根据识别到的顶点的位置计算物体的体积,避免了采用传统的图像分割方法对物体图像进行分割,传统的图像分割方法都是基于像素值进行处理,很难做到自适应,且容易受到光照和其他干扰物的影响,无法准确将物体图像分割出来,直接影响了后续体积测量的准确性。并且在物体分割的基础上进行的双目匹配,同样容易受到光照和干扰物的影响,若是物体分割不准确,会进一步导致匹配失误率的提高。本申请中通过双目匹配完成物体的体积测量,避免了对传感器的依赖,对规则的物体(正方体、长方体等)的测量能够达到很高的精度。
本申请第三实施例中提供了一种物体体积测量装置,该装置的具体实施可参见第一实施例的相关描述,重复之处不再赘述。如图6所示,该装置主要包括:
获取模块601,用于获取通过双目相机拍摄的被测物体的左视角图像和右视角图像;预处理模块602,用于对左视角图像和右视角图像进行预处理,其中,预处理后的左视角图像和预处理后的右视角图像行对齐;识别模块603,用于识别预处理后的左视角图像以及预处理后的右视角图像中被测物体的顶点位置信息;计算模块604,用于根据识别到的顶点位置信息,确定被测物体的体积。
本申请第四实施例中提供了一种物体体积测量装置,该装置的具体实施可参见第二实施例的相关描述,重复之处不再赘述。该装置与第三实施例中提供的装置的不同之处在于,对识别模块进行进一步划分。如图7所示,该装置主要中识别模块603主要包括:
识别子模块6031,用于识别预处理后的左视角图像以及预处理后的右视角图像中被测物体的顶点,得到第一候选集合和第二候选集合;处理子模块6032,用于分别对识别到的每个顶点进行以下处理:将第一候选集合中该顶点的每个候选位置信息,依次与第二候选集合中该顶点的每个候选位置信息进行匹配,根据匹配度最高的一对候选位置信息,确定该顶点在预处理后的左视角图像和预处理后的右视角图像中对应的位置;第一确定子模块6033,用于根据识别到的每个顶点各自在预处理后的左视角图像和预处理后的右视角图像中对应的位置,确定每个顶点各自在世界坐标系下的坐标;计算子模块6034,用于根据每个顶点各自在世界坐标系下的坐标,确定相邻顶点之间的连线之间的夹角的角度值;判定子模块6035,用于根据该角度值确定相邻顶点之间的连线为直角;第二确定子模块6036,用于将识别到的每个顶点各自在预处理后的左视角图像和预处理后的右视角图像中对应的位置,作为顶点位置信息。
本申请第五实施例提供了一种电子设备,该电子设备具体结构如图8所示。包括至少一个处理器701;以及,与至少一个处理器701通信连接的存储器702。其中,存储器702存储有可被至少一个处理器701执行的指令,指令被至少一个处理器701执行,以使至少一个处理器701能够执行地面检测方法。
本实施例中,处理器701以中央处理器(Central Processing Unit,CPU)为例,存储器702以可读写存储器(Random Access Memory,RAM)为例。处理器701、存储器702可以通过总线或者其他方式连接,图8中以通过总线连接为例。存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中实现环境信息确定方法的程序就存储于存储器702中。处理器701通过运行存储在存储器702中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述地面检测方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。
一个或者多个程序模块存储在存储器702中,当被一个或者多个处理器501执行时,执行上述任意方法实施例中的物体体积测量方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请的第六实施例涉及一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时能够实现本申请任意方法实施例中涉及的地面检测方法。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。