指甲轮廓的提取方法及系统
文献发布时间:2023-06-19 11:22:42
技术领域
本申请涉及图像处理领域,并且更具体地,涉及基于3D点云结果提取指甲轮廓的方法及系统。
背景技术
近些年随着人们对指甲的美的追求,一种名叫甲贴的简易美甲产品出现在了市场中。甲贴作为已经成型的贴片,直接利用胶粘层即可粘贴到指甲上,相比传统指甲油进行美甲,甲贴具有操作简单、价格便宜、随时随地可以使用等优势,逐渐获得越来越多时尚爱美人士的亲睐。
甲贴的形状一般都是出厂即固定的,且为了产品的美观,其外围轮廓在平面状态下一般都是具有完美的边缘弧度。但是,该固定且完美的边缘弧度却与用户指甲的实际轮廓并不贴合,无法完全适应于不同用户指甲的形状,贴附于用户指甲上的甲贴常常存在贴附不全或溢出的问题。
目前解决这一问题的方法主要是利用图像识别、提取用户的指甲轮廓,如中国公开号为CN109770520A的发明专利申请,公开了一种美甲装置的打印方法,在该美甲装置的打印方法中,摄像装置对用户的手指进行摄像或者拍照,控制模块根据摄像装置对用户的手指拍摄的视频或者照片判断指甲的位置、形状和尺寸,并识别指甲轮廓。
但是,该美甲装置的打印方法所提取的数据为二维图像的2D数据,其同样与具有弧度的3D的指甲形状并不完全贴合,导致所提取的指甲轮廓与指甲的真实轮廓并不贴合。
为解决上述技术问题,急需一种新的指甲轮廓提取方法,提取出更加贴合用户指甲边缘的、有弧度的3D指甲轮廓。
发明内容
第一方面,本申请提供了一种指甲轮廓的提取方法,包括如下步骤:获取包含有指甲的手指点云Cloud
指甲轮廓的提取方法还包括:
边界提取步骤:提取指甲平面点云Cloud
边缘处理步骤:将获得的轮廓点云CloudContour进行平滑处理,使得边缘平滑;
指甲轮廓绘制步骤:根据边缘处理后的轮廓点云Cloud
进一步的,作为优选,在边缘处理步骤中,采用曲线拟合的方式,将轮廓点云的边缘进行曲线拟合,获得平滑的轮廓点云。
进一步的,作为优选,边缘处理步骤的步骤如下:
①通过PCL点云库提取指甲平面点云Cloud
②对提取到的输入轮廓点云Cloud
③沿x轴方向找到输入轮廓点云Cloud
④对于输入轮廓点云Cloud
⑤对于拟合曲线Contour_hull
⑥将得到的点集合hull
进一步的,作为优选,在将指甲曲面点云Cloud
将指甲曲面点云Cloud
进一步的,作为优选,在将指甲曲面点云Cloud
输入:
·输入点云{P}
·输入搜索半径R
·输入曲率阈值cur
输出:
·输出点云分割后的区域簇列表R
初始化:
·初始化区域簇列表R
·初始化点列表{A}←{1,…,P_size},将点云的所有点压入列表{A}
·计算输入点云各点的法线向量{N}
·计算输入点云各点的曲率{c}
算法循环:
·只要列表{A}不为空,则:
◆清空当前区域列表{R
◆找出列表{A}中当前的曲率最小点P
◆同时将从列表{A}中剔除的前述的曲率最小点P
{S
◆对于当前种子列表{S
■通过k-d tree迅速查找到点{S
■对于{Nb
历遍列表{Nb
■将满足条件的点{Nb
{R
将满足条件的点{Nb
{A}←{A}∪Nb
■若满足条件的点{Nb
{S
◆将当前区域列表{R
{R}←{R}∪R
进一步的,作为优选,在点云分割子步骤之前,指甲轮廓的提取方法还具有:
种子点S
进一步的,作为优选,对于获取的包含有指甲的手指点云Cloud
点云方向矫正子步骤:将手指点云Cloud
预设的姿势和位置是指,输出手指点云Cloud
进一步的,作为优选,将输入手指点云Cloud
Cloud
其中,
tf为旋转矩阵;
Cloud
Cloud
R为旋转矩阵的姿势旋转量;
T为旋转矩阵的平移量;
c为输入手指点云Cloud
x
进一步的,作为优选,在点云方向矫正子步骤之后还包括:
校验子步骤:检验经转换后的手指点云中的手指背部是否指向坐标系中z轴的负方向:
如果手指的背部指向坐标系中z轴的正方向,将经转换后的手指点云绕x轴旋转180°后作为输出手指点云Cloud
如果手指的背部指向坐标系中z轴的负方向,将经转换后的手指点云直接作为输出手指点云Cloud
第二方面,本申请还提供了一种指甲轮廓的提取系统,该提取系统用于实现前述任一技术方案中的指甲轮廓提取方法。具体的,指甲轮廓的提取系统包括:
数据采集装置,对目标手指进行3D扫描,从而获取目标手指的手指 3D数据Date
数据转化装置,与所述数据采集装置通信连接,所述数据转化装置接收并将所述手指3D数据Date
PCL点云库,与所述数据转化装置通信连接;
分割模块,位于所述PCL点云库内,所述分割模块构成为能够对所述手指点云Cloud
展平模块,与所述PCL点云库通信连接,所述展平模块构成为能够将所述指甲曲面点云Cloud
边界提取模块,与所述展平模块通信连接,所述边界提取模块构成为能够提取指甲平面点云Cloud
边缘处理模块,与所述边界提取模块通信连接,所述边缘处理模块构成为能够将获得的轮廓点云Cloud
绘制模块,与所述边缘处理模块通信连接,所述绘制模块接收并根据所述轮廓点云Cloud
与现有技术相比,本发明的有益效果是:
1、本发明通过3D点云获取带有弧度的指甲点云,再将其展平,展平后的指甲点云的外围轮廓点云形状与带有弧度的指甲的外围轮廓更加贴合。
2、本发明通过将经转换后的手指点云转换到希望的姿势和位置上,极大地方便了对手指点云的计算和处理。
3、本发明通过增加聚簇拘束条件,精细化地计算手指点云中的点是否属于指甲点云,从而更加有效地将指甲曲面点云从手指点云中分割出来。
4、本发明通过先判定甲面区域,再从该甲面区域中选择一点作为种子点开始生长过程,能够确保该生长过程所获得的即为指甲曲面点云,仅需一次生长过程即可,减少了生长算法所需的时间,提高了算法效率。
5、本发明通过沿着指甲的生长方向进行分层,然后对每一层进行展平,所获得的指甲平面点云在宽度方向上进行展平,基于此指甲平面点云的轮廓点云所绘制而得的形状轮廓,能够在指甲侧面维度上更为地贴合指甲。
6、本发明通过将获得的指甲平面点云进行边缘处理,使得边缘平滑,提高获得的甲型的美观度。
附图说明
图1是实施方式一中指甲轮廓提取方法的流程示意图;
图2是实施方式一中指甲轮廓提取系统的框图;
图3是实施方式一中指甲轮廓提取方法的流程示意图(点云分割子步骤);
图4是实施方式二中指甲轮廓提取方法的流程示意图(点云方向矫正子步骤);
图5是实施方式二中指甲轮廓提取系统的框图(矫正模块);
图6是实施方式二中指甲轮廓提取方法的流程示意图(校验子步骤);
图7是实施方式二中指甲轮廓提取系统的框图(校验模块);
图8是在搜索半径R
图9a是基于搜索半径R
图9b是基于缩小搜索半径R
图10是实施方式三中指甲轮廓提取方法的流程示意图(聚簇拘束子步骤);
图11是实施方式三在搜索半径R
图12是实施方式三在搜索半径R
图13是实施方式三中指甲轮廓提取方法的流程示意图(种子点S
图14是实施方式三中指甲轮廓提取系统的框图(选择子模块);
图15是实施方式三中甲面区域下的结构示意图;
图16是实施方式四中指甲曲面点云沿着指甲生长方向分层的结构示意图;
图17是实施方式四中将每层点云上的点统一到同一平面下的结构的示意图;
图18是实施方式四中将统一到同一平面下的点云展开的结构示意图。
附图标记说明:
1、数据采集装置;2、数据转化装置;3、PCL点云库;4、分割模块; 5、展平模块;6、绘制模块;7、矫正模块;8、校验模块;9、选择模块; 10、边界提取模块;11、边缘处理模块。
具体实施方式
下面将结合附图,对本申请实施方式中的技术方案进行描述。
应理解,本文中的具体的例子只是为了帮助本领域技术人员更好地理解本申请实施方式,而非限制本申请实施方式的范围。
还应理解,在本申请的各种实施方式中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施方式的实施过程构成任何限定。
还应理解,本说明书中描述的各种实施方式,既可以单独实施,也可以组合实施,本申请实施方式对此并不限定。
除非另有说明,本申请实施方式所使用的所有技术和科学术语与本申请的技术领域的技术人员通常理解的含义相同。本申请中所使用的术语只是为了描述具体的实施方式的目的,不是旨在限制本申请的范围。本申请所使用的术语“和/或”包括一个或多个相关的所列项的任意的和所有的组合。
本申请的实施方式一提供了一种指甲轮廓的提取方法,尤其涉及一种基于3D点云结果提取指甲轮廓的方法。
具体的,参见图1所示,在本实施方式一中的指甲轮廓的提取方法,包括如下步骤:
数据采集步骤:对目标手指进行3D扫描,获得目标手指的手指3D 数据Date
数据点云步骤:将手指3D数据Date
指甲点云获取步骤:对手指点云Cloud
指甲点云展平步骤:将指甲曲面点云Cloud
指甲轮廓绘制步骤:根据指甲平面点云Cloud
与现有技术相比,本实施方式一提供的指甲轮廓的提取方法,获取的是表面不平整、带有弧度的指甲的指甲曲面点云Cloud
如此,将该展平后的指甲平面点云Cloud
换言之,本实施方式一所提供的指甲轮廓的提取方法,获取指甲表面的三维图像后将其点云化处理,然后再将点云化后的指甲曲面点云 Cloud
参见图2所示,本实施方式一还提供了一种指甲轮廓的提取系统,该指甲轮廓的提取系统能够利用前述的指甲轮廓的提取方法来提取指甲的轮廓。具体的,该指甲轮廓的提取系统包括依次序通信连接的数据采集装置1、数据转化装置2、PCL点云库3、展平模块5以及绘制模块6,PCL 点云库3中则包括有分割模块4。
具体的,结合图1和图2所示,在数据采集步骤中,利用数据采集装置1对目标手指进行3D扫描,从而获取目标手指的手指3D数据Date
数据采集装置1可以是利用激光雷达、深度摄像头,或者是主要利用激光雷达、深度摄像头制成的3D扫描仪、结构光相机、双目相机等。如此,数据采集装置1在数据采集步骤中,可以是激光雷达利用三角测距原理、TOF测距原理等对目标手指进行3D扫描,也可以是深度摄像头利用结构光测距原理、双目视觉测距原理和TOF测距原理等对目标手指进行 3D扫描,能够快速、精准获得的手指3D数据Date
以上所列举的各种3D扫测测距原理,例如三角测距原理、TOF测距原理、结构光测距原理、双目视觉测距原理等,都是现有技术并在日常中被广泛使用,在此对其原理不再赘述。
特别地,三角测距原理、TOF测距原理、结构光测距原理、双目视觉测距原理等在实际应用中各有优劣,其对测量环境、光纤、距离等的要求以及测量精度、产品成本等的呈现都各有不同,在对本实施方式的实际应用中,需根据具体对数据采集装置1的种类进行选择。
具体的,结合图1和图2所示,在数据点云步骤中,数据转化装置2 接收数据采集装置1所收集并发送的手指3D数据Date
当然,在本实施方式一的其他设施例中,如果数据采集装置1自带数据转化的功能,则在数据点云步骤中,数据采集装置1可以兼做数据转化装置2,并直接地将采集到的手指3D数据Date
PCL(Point Cloud Library)点云库3是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库。以将手指3D数据Date
特别地,在本实施方式中,结合图1和图2所示,在进行指甲轮廓的绘制之前,指甲轮廓的提取方法还具有边界提取步骤中,指甲轮廓的提取系统还包括边界提取模块10,边界提取模块10与展平模块5以及绘制模块6均通信连接。在该边界提取步骤中,利用边界提取模块10提取指甲平面点云Cloud
我们通过边界提取模块10,提取指甲平面点云Cloud
边界提取模块10与展平模块5以及绘制模块6均通信连接,边界提取模块10可以独立设置并与PCL点云库3通信连接,也可以是集成在PCL 点云库3内,或者属于PCL点云库3的一部分。
如此,在指甲轮廓绘制步骤中,利用边界提取模块10提取指甲平面点云Cloud
然后,在指甲点云展平步骤中,在边界提取步骤之后还包括有边缘处理步骤,指甲轮廓的提取系统还包括边缘处理模块11,边缘处理模块11 位于PCL点云库3中,并与边界提取模块10以及绘制模块6均通信连接。在边界提取步骤中,利用边缘处理模块11将获得的轮廓点云Cloud
边缘处理模块11与边界提取模块10以及绘制模块6均通信连接,边缘处理模块11可以独立设置并与PCL点云库3通信连接,也可以是集成在PCL点云库3内,或者属于PCL点云库3的一部分。
具体的,在边缘处理步骤中,边缘处理模块11采用曲线拟合的方式,将边界提取步骤中利用边界提取模块10提取的不够平滑的轮廓点云(以下也称输入轮廓点云Cloud
①通过PCL点云库3提供的边界提取模块10提取指甲平面点云 Cloud
②对提取到的输入轮廓点云Cloud
③沿x轴方向找到输入轮廓点云Cloud
④对于输入轮廓点云Cloud
⑤对于拟合曲线Contour_hull
⑥将得到的点集合hull
如此获得的轮廓轮廓点云Cloud
由于最初获得的手指3D数据Date
基于此,在指甲点云获取步骤中,参见图3所示,具体包括有点云分割子步骤。而在点云分割子步骤中,利用PCL点云库3中的分割模块4对手指点云Cloud
特别地,参见图3所示,本实施方式一中的点云分割子步骤采用区域生长分割法(region growing segmentaion)来分割校准手指点云Cloud
输入:
·输入点云{P}
·输入搜索半径R
·输入曲率阈值cur
输出:
·输出点云分割后的区域簇列表R
初始化:
·初始化区域簇列表R
·初始化点列表{A}←{1,…,P_size},将点云的所有点压入列表{A}
·计算输入点云各点的法线向量{N}
·计算输入点云各点的曲率{c}
算法循环:
·只要列表{A}不为空,则:
◆清空当前区域列表{R
◆找出列表{A}中当前的曲率最小点P
◆同时将从列表{A}中剔除的前述的曲率最小点P
{S
◆对于当前种子列表{S
■通过k-d tree迅速查找到点{S
■对于{Nb
■将满足条件的点{Nb
{R
将满足条件的点{Nb
{A}←{A}∪Nb
■若满足条件的点{Nb
◆将当前区域列表{R
如此,可以将手指点云Cloud
具体的,结合图2和图3所示,在指甲点云展平步骤中,利用与分割模块4通信连接的展平模块5,将在指甲点云获取步骤中利用数据转化装置2所获取的指甲曲面点云Cloud
最后,在指甲轮廓绘制步骤中,利用与展平模块5通信连接的绘制模块6接收指甲平面点云Cloud
在后续制作中,根据前述方法及系统中的边缘轮廓点云Cloud
需要说明的是,本申请中所说的指甲,可以是手指甲,还可以是脚趾甲。
本申请的实施方式二提供了一种指甲轮廓的提取方法及系统,该提取方法及系统均基于实施方式一中的指甲轮廓的提取方法及系统的设计和实施,其实际流程或结构与之近似但又有所区别,以下着重对于区别之处进行描述,若非针对区别之处予以的详细说明,均可认为与实施方式一中相同而不再赘述。
PCL点云库3可以利用可视化窗口绘制坐标系(x,y,z),坐标系定位点云在三维世界中的位置。而在本实施方式二中,为了方便后续对手指点云Cloud
矫正模块7可以独立设置并与数据转化装置2通信连接,也可以是集成在数据转化装置2内,或者属于数据转化装置2的一部分。
具体的,我们希望的姿势和位置是,通过改变手指点云Cloud
更为具体的,手指的前端指的是手指的更为靠近指甲生长端的一端,手指的前端指向的方向是指甲的生长方向;手指的背部指的是手指的长有指甲的一面,手指的背部指向的方向是手指的指腹朝向指甲的方向。
基于这种要求,先在数据点云步骤中,将数据点云步骤中得的手指 3D数据Date
在本实施例中,点云方向矫正子步骤中的矫正模块7是通过tf旋转矩阵来转换输入手指点云Cloud
Cloud
其中,
tf为旋转矩阵;
Cloud
Cloud
R为旋转矩阵的姿势旋转量;
T为旋转矩阵的平移量;
c为输入手指点云Cloud
x
这样一来,经过tf旋转变换后获得的输出手指点云Cloud
上述经tf旋转变换后获得的输出手指点云Cloud
校验模块8与矫正模块7通信连接,校验模块8可以独立设置并与数据转化装置2通信连接,也可以是集成在数据转化装置2内,或者属于数据转化装置2的一部分。
如果,校验模块8校验出经转换后的手指点云中的手指的背部指向坐标系中z轴的正方向,我们利用矫正模块7将该经转换后的手指点云绕x轴旋转180°后,作为输出手指点云Cloud
如果,校验模块8校验出经转换后的手指点云中的手指的背部指向坐标系中z轴的负方向,我们将该经转换后的手指点云直接作为输出手指点云Cloud
如此,可以确保输出手指点云Cloud
包围盒也叫外接最小矩形,是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。PCL点云库3获取点云包围盒,并利用包围盒来计算和处理数据。
具体的,上述校验子步骤的具体校验步骤如下:
计算经tf旋转变换后获得的手指点云Cloud
如果,
如果
其中,
z
z
z
更为具体的,如果,
如果
本申请的实施方式三提供了一种指甲轮廓的提取方法及系统,该提取方法及系统均基于实施方式一或二中的指甲轮廓的提取方法及系统的设计和实施,其实际流程或结构与之近似但又有所区别,以下着重对于区别之处进行描述,若非针对区别之处予以的详细说明,均可认为与实施方式一和二中相同而不再赘述。
如图8所示,在将指甲曲面点云Cloud
尤其是,如果手指的甲沟不明显或者手指点云Cloud
具体如图9a所示,在搜索半径R
■若满足条件的点{Nb
{S
从而执行如下的动作:
将当前区域列表{R
{R}←{R}∪{R
如此,该皮肤点云Cloud
对于此种情况,在本实施方式的一些实施例中,我们可以采用减小搜索半径R
但是,如图9b所示,搜索半径R
基于此,参考图10和图11所示,本实施方式三对此进行了优化,在指甲点云获取步骤的点云分割子步骤之后,还设置有聚簇拘束子步骤,聚簇拘束子步骤通过在分割模块4添加聚簇拘束条件,来提高计算结果的精度。
该聚簇拘束子步骤具体方法步骤如下:
在搜索半径R
如果当前点的θ
如果当前点的θ
其中,
θ
θ
以两个点n
其中,
θ
θ
θ
θ
如此,通过增加该聚簇拘束条件,对于满足点和当前邻点的法向量夹角小于角度阈值θ
这里,搜索半径Rrs'是远小于搜索半径R
更为特别地,在分割模块4执行前述的点云分割子步骤以及聚簇拘束子步骤动作、进行指甲曲面点云Cloud
但是,上述步骤中的分割模块4虽然能够获得指甲曲面点云Cloud
对此,参见图13和图14所示,本实施方式三在指甲点云获取步骤的点云分割子步骤之前,还包括种子点S
如此,生长过程从指甲曲面点云Cloud
更为具体的,甲面区域Nrange(x,y)的确定,是在前述的将输入手指点云Cloud
Nrange(x,y)={x∈(x
其中,
x
x
y
y
这个矩形范围,根据指甲曲面点云Cloud
也即:
x
x
y
y
其中,
a为x轴方向的矩形宽度半径;
b为y轴方向的矩形宽度半径。
如此,在确定好的甲面区域Nrange(x,y)之后,通过PCL点云库3中的分割模块4将该甲面区域Nrange(x,y)的点分离出来,再从中随意选一个点作为最初生长的种子点S
本申请的实施方式四提供了一种指甲轮廓的提取方法及系统,该提取方法及系统均基于实施方式一至三中的指甲轮廓的提取方法及系统的设计和实施,其实际流程或结构与之近似但又有所区别,以下着重对于区别之处进行描述,若非针对区别之处予以的详细说明,均可认为与实施方式一至三中相同而不再赘述。
在指甲点云展平步骤中,利用展平模块5将指甲曲面点云Cloud
为了改善这一点,本实施方式四的指甲点云展平步骤中,如图16 所示,先利用展平模块5将指甲曲面点云Cloud
对于每一层点云L
L
其中,
L
p为当前层点云L
p
limitL
limitR
历遍指甲曲面点云Cloud
更为具体的,对于每一层点云L
limitL
limitR
ld=(maxx-minx)/n
其中,
minx为当前层点云L
maxx为当前层点云L
ld为每一层L
n为指甲曲面点云Cloud
在这里,层数n并不是一个固定不变的数字,而是由指甲曲面点云 Cloud
当然,也可以是由指甲曲面点云Cloud
如此,沿着指甲的生长方向,也即x轴的正方向,对指甲曲面点云 Cloud
而,参见图17所示,在指甲点云展平步骤中,将每层点云L
简单来说,就是将不同层点云L
stand_L
f:p∈L
再然后,参见图18所示,将每一层点云集合stand_L
L_part1
L_part2
其中,
stand_L
f为映射;
p为当前层点云集合stand_L
p
XL
L_part1
L_part2
p
Center
将stand_L
其具体算法如下:
输入:
·输入点云L_part
·输入半径阈值R
输出:
·输出整理排序后的点云L_ordered_part
初始化:
·初始化排序后的点云L_ordered_part
·初始化点列表{P},将点云L_part
·计算输入点云各点的法线向量{N}
·计算输入点云各点的曲率{c}
算法循环:
·历遍列表{P}的所有点找出{P
·并将{P
·同时将{P
L_ordered_part
·只要列表{P}不为空,则:
◆找出点云L_ordered_part
◆找出列表{A}中当前距离点P
◆同时将P
L_ordered_part
◆当列表{P}为空,则输出排序后点云L_ordered_part
再然后,将处理好顺序的弧形点云L_ordered_part
d_curve=d_straight
且d_curve近似等于点P1、P2的直线距离:
d_curve≈√(P1
展开后的对应点P1'、P2'为:
依次将所有点的L_expand_part
最后,将所有的直线点云L_expand_part
Cloud_expand
该合并后新的Cloud_expand
本领域普通技术人员可以意识到,结合本文中所公开的实施方式描述的各实施例的模块及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现。并且软件模块可以置于任意形式的计算机存储介质中。为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
应理解为,以上各公开实施方式可以以多种不同的形式实现,且权利要求的范围不应解释为限于本文所述的实施方式。具体而言,提供这些实施方式以使本公开充分且全面,并向本领域技术人员充分传达本发明实施方式的概念。本公开实际上旨在涵盖落在所附权利要求所限定的本公开的精神和范围内的实施方式的所有替代方案、修改及等同方案。此外,在下文对本公开实施方式的详细描述中,将阐述大量具体细节以便透彻理解。然而,对于本领域普通技术人员,显而易见的是,本公开实施方式可以在没有这些具体细节的情况下实践。
- 指甲轮廓的提取方法及系统
- 指甲轮廓的提取方法及系统