CN112990037A - 指甲轮廓的提取方法及系统 - Google Patents
指甲轮廓的提取方法及系统 Download PDFInfo
- Publication number
- CN112990037A CN112990037A CN202110313755.7A CN202110313755A CN112990037A CN 112990037 A CN112990037 A CN 112990037A CN 202110313755 A CN202110313755 A CN 202110313755A CN 112990037 A CN112990037 A CN 112990037A
- Authority
- CN
- China
- Prior art keywords
- point cloud
- nail
- finger
- point
- axis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/107—Static hand or arm
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01B—MEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
- G01B11/00—Measuring arrangements characterised by the use of optical techniques
- G01B11/24—Measuring arrangements characterised by the use of optical techniques for measuring contours or curvatures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
- G06F18/2135—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods based on approximation criteria, e.g. principal component analysis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
- G06V10/267—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion by performing operations on regions, e.g. growing, shrinking or watersheds
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/34—Smoothing or thinning of the pattern; Morphological operations; Skeletonisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Human Computer Interaction (AREA)
- Life Sciences & Earth Sciences (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种指甲轮廓的提取方法及系统,该提取方法基于该系统包括如下步骤:获取包含有指甲的手指点云,利用PCL点云库从手指点云中提取指甲曲面点云,再将指甲曲面点云等表面积的展平后获得平面状态下的指甲平面点云。其中,在将指甲曲面点云等表面积的展平后获得平面状态下的指甲平面点云的指甲点云展平步骤中,将指甲曲面点云沿着指甲的生长方向横向地分割为n层点云,然后按照每一层点云作为整体的进行等长度的展开拉平,获得平面状态下的指甲平面点云。本申请指甲轮廓的提取方法及系统,获取的是带有弧度的指甲的指甲曲面点云经展平后形成的指甲平面点云,展平后的指甲平面点云的外围轮廓点云形状与带有弧度的指甲的外围轮廓更加贴合。
Description
技术领域
本申请涉及图像处理领域,并且更具体地,涉及基于3D点云结果提取指甲轮廓的方法及系统。
背景技术
近些年随着人们对指甲的美的追求,一种名叫甲贴的简易美甲产品出现在了市场中。甲贴作为已经成型的贴片,直接利用胶粘层即可粘贴到指甲上,相比传统指甲油进行美甲,甲贴具有操作简单、价格便宜、随时随地可以使用等优势,逐渐获得越来越多时尚爱美人士的亲睐。
甲贴的形状一般都是出厂即固定的,且为了产品的美观,其外围轮廓在平面状态下一般都是具有完美的边缘弧度。但是,该固定且完美的边缘弧度却与用户指甲的实际轮廓并不贴合,无法完全适应于不同用户指甲的形状,贴附于用户指甲上的甲贴常常存在贴附不全或溢出的问题。
目前解决这一问题的方法主要是利用图像识别、提取用户的指甲轮廓,如中国公开号为CN109770520A的发明专利申请,公开了一种美甲装置的打印方法,在该美甲装置的打印方法中,摄像装置对用户的手指进行摄像或者拍照,控制模块根据摄像装置对用户的手指拍摄的视频或者照片判断指甲的位置、形状和尺寸,并识别指甲轮廓。
但是,该美甲装置的打印方法所提取的数据为二维图像的2D数据,其同样与具有弧度的3D的指甲形状并不完全贴合,导致所提取的指甲轮廓与指甲的真实轮廓并不贴合。
为解决上述技术问题,急需一种新的指甲轮廓提取方法,提取出更加贴合用户指甲边缘的、有弧度的3D指甲轮廓。
发明内容
第一方面,本申请提供了一种指甲轮廓的提取方法,包括如下步骤:
获取包含有指甲的手指点云CloudFinger,利用PCL点云库从手指点云CloudFinger中提取指甲的指甲曲面点云CloudNail-s,再将指甲曲面点云CloudNail-s等表面积的展平后获得平面状态下的指甲平面点云CloudNail-p。
在将指甲曲面点云CloudNail-s等表面积的展平后获得平面状态下的指甲平面点云CloudNail-p的指甲点云展平步骤中,步骤如下:
将指甲曲面点云CloudNail-s沿着指甲的生长方向横向地分割为n层点云Li,然后按照每一层点云Li作为整体的进行等长度的展开拉平,获得平面状态下的指甲平面点云CloudNail-p。
进一步的,作为优选,历遍指甲曲面点云CloudNail-s中每一层点云Li的所有点;
如果,点p的x轴坐标值px满足条件limitLi≤px≤limitRi,就将该点p归入当前层Li,进而聚入当前区域列表{Rc};
limitLi=minx+i×ld
limitRi=minx+(i+1)×ld
ld=(maxx-minx)/n
其中,
x轴为PCL点云库中坐标系的x轴;
minx为当前层点云Li的x轴极小值;
maxx为当前层点云Li的x轴极大值;
ld为每一层Li的点云的宽度;
n为指甲曲面点云CloudNail-s沿着x轴横向分割的层数。
进一步的,作为优选,将每层点云Li中各点pj的x轴坐标值统一,并保持其y轴和z轴坐标值不变,获得一个近似弧形的点云集合stand_Li;
将每一层点云集合stand_Li中的所有点p,按照指甲中线的y坐标Centery分成2个部分:L_part1i、L_part2i;
将每部分的弧形点云L_part1i、L_part2i按照指甲中线从近至远依次序排序后得到L_ordered_parti;
L_part1i={p|py<=Centery}
L_part2i={p|py>Centery}
其中,
y轴为PCL点云库中坐标系的y轴;
z轴为PCL点云库中坐标系的z轴;
stand_Li为将每层点云Li中的各点pj的x轴坐标值统一,并保持其y轴和z轴坐标值不变后获得的近似弧形的点云集合;
p为当前层点云集合stand_Li中的点;
L_part1i为当前层点云集合stand_Li中指甲中线一侧的弧形点云集合;
L_part2i为当前层点云集合stand_Li中指甲中线另一侧的弧形点云集合;
py为点p的y轴坐标值;
Centery为指甲曲面点云CloudNail-s中指甲中线的y轴坐标值。
进一步的,作为优选,将每一层的点云Li通过映射f来映射到平面x=XLi上,从每一层的点云Li得到前述的近似弧形的点云集合stand_Li;
stand_Li=f(Li)
f:p∈Li→px=XLix
f为映射;
px为点p的x轴坐标值;
XLix为平面XLi的x轴坐标值。
进一步的,作为优选,在指甲点云展平步骤中,利用L_part1i、L_part2i获得的指甲平面点云CloudNail-p的步骤如下:
输入:
●输入点云L_parti
●输入半径阈值Rthres
输出:
●输出整理排序后的点云L_ordered_parti
初始化:
●初始化排序后的点云L_ordered_parti
●初始化点列表{P},将点云L_parti的所有点压入列表{P}
●计算输入点云各点的法线向量{N}
●计算输入点云各点的曲率{c}
算法循环:
●历遍列表{P}的所有点找出{P0},满足{P0}的y轴坐标值距离手指中线的y坐标Centery最短
●并将{P0}从列表{P}中剔除{p}←{p}\P0
●同时将{P0}压入点云L_ordered_parti,
L_ordered_parti←L_ordered_parti∪P0
●只要列表{P}不为空,则:
◆找出点云L_ordered_parti中当前的序列最大点Pend
◆找出列表{A}中当前距离点Pend直线距离最小点Pmin,并将Pmin从列表{A}中剔除{A}←{A}\Pmin
◆同时将Pmin压入点云L_ordered_parti,
L_ordered_parti←L_ordered_parti∪Pmin
◆当列表{P}为空,则输出排序后点云L_ordered_parti
再然后,将处理好顺序的弧形点云L_ordered_parti展开为一条直线点云L_expand_parti,其中,
d_curve=d_straight
且d_curve近似等于点P1、P2的直线距离:
d_curve≈√(P1y-P2y)2+(P1z-P2z)2
展开后的对应点P1'、P2'为:
依次将所有点的L_expand_parti对应点都计算出来;
最后,将所有的直线点云L_expand_parti全部合并为新的Cloud_expandNail;
Cloud_expandNail=ΣL_expand_parti
该合并后新的Cloud_expandNail即为指甲平面点云CloudNail-p。
进一步的,作为优选,层数n由指甲曲面点云CloudNail-s的在x轴上的长度以及输入的点云的疏密程度决定。
进一步的,作为优选,对于获取的包含有指甲的手指点云CloudFinger,指甲轮廓的提取方法,还包括:
点云方向矫正子步骤:将手指点云CloudFinger转化为输出手指点云CloudFinger-o,使得输出手指点云CloudFinger-o的姿势和位置转换到预设的姿势和位置上;
预设的姿势和位置是指,输出手指点云CloudFinger-o的质心与PCL点云库中坐标系的坐标原点重合、手指的前端指向坐标系中x轴的正方向、手指的背部指向坐标系中z轴的负方向。
进一步的,作为优选,将输入手指点云CloudFinger转化为输出手指点云CloudFinger-o的具体公式步骤如下:
CloudFinger-o=CloudFinger*tf
其中,
tf为旋转矩阵;
CloudFinger为将数据点云步骤中得的手指3D数据DateFinger进行转换后所获得的输入手指点云;
CloudFinger-o为将输入手指点云CloudFinger经tf旋转后的输出手指点云;
R为旋转矩阵的姿势旋转量;
T为旋转矩阵的平移量;
c为输入手指点云CloudFinger的质心;
xc、yc、zc分别为输入手指点云CloudFinger的质心坐标。
进一步的,作为优选,在点云方向矫正子步骤之后还包括:
校验子步骤:检验经转换后的手指点云中的手指背部是否指向坐标系中z轴的负方向;
如果手指的背部指向坐标系中z轴的正方向,将经转换后的手指点云绕x轴旋转180°后作为输出手指点云CloudFinger-o;
如果手指的背部指向坐标系中z轴的负方向,将经转换后的手指点云直接作为输出手指点云CloudFinger-o。
第二方面,本申请还提供了一种指甲轮廓的提取系统,该提取系统用于实现前述任一技术方案中的指甲轮廓提取方法。具体的,指甲轮廓的提取系统包括:
数据采集装置,对目标手指进行3D扫描,从而获取目标手指的手指3D数据DateFinger,所述手指3D数据DateFinger至少包含有全部指甲的指甲3D数据DateNail;
数据转化装置,与所述数据采集装置通信连接,所述数据转化装置接收并将所述手指3D数据DateFinger转化为3D点云数据,从而获得手指点云CloudFinger,所述手指点云CloudFinger至少包含有全部指甲的指甲曲面点云CloudNail-s;
PCL点云库,与所述数据转化装置通信连接;
分割模块,位于所述PCL点云库内,所述分割模块构成为能够对所述手指点云CloudFinger进行分割,提取出其中的指甲的指甲曲面点云CloudNail-s;
展平模块,与所述PCL点云库通信连接,所述展平模块构成为能够将所述指甲曲面点云CloudNail-s等表面积的展开拉平,获得平面状态下的指甲平面点云CloudNail-p;
绘制模块,与所述展平模块通信连接,所述绘制模块接收所述指甲平面点云CloudNail-p,并根据所述指甲平面点云CloudNail-p的轮廓点云CloudContour的形状进行绘制,获得指甲的甲型。
与现有技术相比,本发明的有益效果是:
1、本发明通过3D点云获取带有弧度的指甲点云,再将其展平,展平后的指甲点云的外围轮廓点云形状与带有弧度的指甲的外围轮廓更加贴合。
2、本发明通过将经转换后的手指点云转换到希望的姿势和位置上,极大地方便了对手指点云的计算和处理。
3、本发明通过增加聚簇拘束条件,精细化地计算手指点云中的点是否属于指甲点云,从而更加有效地将指甲曲面点云从手指点云中分割出来。
4、本发明通过先判定甲面区域,再从该甲面区域中选择一点作为种子点开始生长过程,能够确保该生长过程所获得的即为指甲曲面点云,仅需一次生长过程即可,减少了生长算法所需的时间,提高了算法效率。
5、本发明通过沿着指甲的生长方向进行分层,然后对每一层进行展平,所获得的指甲平面点云在宽度方向上进行展平,基于此指甲平面点云的轮廓点云所绘制而得的形状轮廓,能够在指甲侧面维度上更为地贴合指甲。
6、本发明通过将获得的指甲平面点云进行边缘处理,使得边缘平滑,提高获得的甲型的美观度。
附图说明
图1是实施方式一中指甲轮廓提取方法的流程示意图;
图2是实施方式一中指甲轮廓提取系统的框图;
图3是实施方式一中指甲曲面点云沿着指甲生长方向分层的结构示意图;
图4是实施方式一中将每层点云上的点统一到同一平面下的结构的示意图;
图5是实施方式一中将统一到同一平面下的点云展开的结构示意图;
图6是实施方式一中指甲轮廓提取方法的流程示意图(点云分割子步骤);
图7是实施方式二中指甲轮廓提取方法的流程示意图(点云方向矫正子步骤);
图8是实施方式二中指甲轮廓提取系统的框图(矫正模块);
图9是实施方式二中指甲轮廓提取方法的流程示意图(校验子步骤);
图10是实施方式二中指甲轮廓提取系统的框图(校验模块);
图11是在搜索半径Rrs下相邻点云的法线示意图;
图12a是基于搜索半径Rrs的手指点云的分割结果;
图12b是基于缩小搜索半径Rrs的手指点云的分割结果;
图13是实施方式三中指甲轮廓提取方法的流程示意图;
图14是实施方式三在搜索半径Rrs‘下相邻点云的法线示意图;
图15是实施方式三在搜索半径Rrs‘下的手指点云的分割结果;
图16是实施方式三中指甲轮廓提取方法的流程示意图(种子点S0选择子步骤);
图17是实施方式三中指甲轮廓提取系统的框图(选择子模块);
图18是实施方式三中甲面区域下的结构示意图;
图19是实施方式五中指甲轮廓提取方法的流程示意图;
图20是实施方式五中指甲轮廓提取系统的框图。
附图标记说明:
1、数据采集装置;2、数据转化装置;3、PCL点云库;4、分割模块;5、展平模块;6、绘制模块;7、矫正模块;8、校验模块;9、选择模块;10、边界提取模块;11、边缘处理模块。
具体实施方式
下面将结合附图,对本申请实施方式中的技术方案进行描述。
应理解,本文中的具体的例子只是为了帮助本领域技术人员更好地理解本申请实施方式,而非限制本申请实施方式的范围。
还应理解,在本申请的各种实施方式中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施方式的实施过程构成任何限定。
还应理解,本说明书中描述的各种实施方式,既可以单独实施,也可以组合实施,本申请实施方式对此并不限定。
除非另有说明,本申请实施方式所使用的所有技术和科学术语与本申请的技术领域的技术人员通常理解的含义相同。本申请中所使用的术语只是为了描述具体的实施方式的目的,不是旨在限制本申请的范围。本申请所使用的术语“和/或”包括一个或多个相关的所列项的任意的和所有的组合。
实施方式一
本申请的实施方式一提供了一种指甲轮廓的提取方法,尤其涉及一种基于3D点云结果提取指甲轮廓的方法。
具体的,参见图1所示,在本实施方式一中的指甲轮廓的提取方法,包括如下步骤:
数据采集步骤:对目标手指进行3D扫描,获得目标手指的手指3D数据DateFinger,手指3D数据DateFinger至少包含有全部指甲的指甲3D数据DateNail;
数据点云步骤:将手指3D数据DateFinger转化为3D点云数据,获得手指点云CloudFinger,手指点云CloudFinger至少包含有全部指甲的指甲曲面点云CloudNail-s;
指甲点云获取步骤:对手指点云CloudFinger进行分割,获取其中的指甲曲面点云CloudNail-s;
指甲点云展平步骤:将指甲曲面点云CloudNail-s等表面积的展平,获得平面状态下的指甲平面点云CloudNail-p;
指甲轮廓绘制步骤:根据指甲平面点云CloudNail-p的轮廓点云CloudContour的形状进行绘制,获得指甲的甲型。
与现有技术相比,本实施方式一提供的指甲轮廓的提取方法,获取的是表面不平整、带有弧度的指甲的指甲曲面点云CloudNail-s经展平后形成的指甲平面点云CloudNail-p,展平后的指甲平面点云CloudNail-p的外围轮廓点云CloudContour的形状与带有弧度的指甲的外围轮廓更加贴合。
如此,将该展平后的指甲平面点云CloudNail-p的外围轮廓点云CloudContour形状进行绘制,获得平面下的甲型。根据该甲型作为模板制作甲贴,制作出来的甲贴能够适配指甲的表面弧度,在其贴附在用户的指甲表面时,甲贴的外围轮廓也与指甲的外围轮廓一致,而不会存在贴附不全或者溢出的情况。
换言之,本实施方式一所提供的指甲轮廓的提取方法,获取指甲表面的三维图像后将其点云化处理,然后再将点云化后的指甲曲面点云CloudNail-s分割并展平为指甲平面点云CloudNail-p,根据指甲平面点云CloudNail-p的外围轮廓绘制轮廓点云CloudContour形状,获取平面的甲型。相较于现有技术中的利用二维图像获取甲型,本实施方式一所提取的指甲轮廓的外围轮廓形状与用户指甲的外围轮廓完全一致,据此绘制甲型并制得的甲贴,能够完美贴附用户的指甲上,不会贴附不全,也不会溢出。
参见图2所示,本实施方式一还提供了一种指甲轮廓的提取系统,该指甲轮廓的提取系统能够利用前述的指甲轮廓的提取方法来提取指甲的轮廓。具体的,该指甲轮廓的提取系统包括依次序通信连接的数据采集装置1、数据转化装置2、PCL点云库3、展平模块5以及绘制模块6,PCL点云库3中则包括有分割模块4。
具体的,结合图1和图2所示,在数据采集步骤中,利用数据采集装置1对目标手指进行3D扫描,从而获取目标手指的手指3D数据DateFinger。为提取目标手指的指甲轮廓,本数据采集装置1在数据采集步骤中,对目标手指的3D扫描范围至少包括该目标手指上的全部的指甲以及指甲周围的皮肤。基于此,手指3D数据DateFinger则至少包含有全部指甲的指甲3D数据DateNail,一般的还至少包括指甲周围皮肤的皮肤3D数据DateSkin。
数据采集装置1可以是利用激光雷达、深度摄像头,或者是主要利用激光雷达、深度摄像头制成的3D扫描仪、结构光相机、双目相机等。如此,数据采集装置1在数据采集步骤中,可以是激光雷达利用三角测距原理、TOF测距原理等对目标手指进行3D扫描,也可以是深度摄像头利用结构光测距原理、双目视觉测距原理和TOF测距原理等对目标手指进行3D扫描,能够快速、精准获得的手指3D数据DateFinger。
以上所列举的各种3D扫测测距原理,例如三角测距原理、TOF测距原理、结构光测距原理、双目视觉测距原理等,都是现有技术并在日常中被广泛使用,在此对其原理不再赘述。
特别地,三角测距原理、TOF测距原理、结构光测距原理、双目视觉测距原理等在实际应用中各有优劣,其对测量环境、光纤、距离等的要求以及测量精度、产品成本等的呈现都各有不同,在对本实施方式的实际应用中,需根据具体对数据采集装置1的种类进行选择。
具体的,结合图1和图2所示,在数据点云步骤中,数据转化装置2接收数据采集装置1所收集并发送的手指3D数据DateFinger,然后将手指3D数据DateFinger转化为3D点云数据pcd格式,从而获得手指点云CloudFinger。具体的,数据转化装置2是将手指3D数据DateFinger的格式进行转化,转化为PCL数据库3所支持的数据格式,例如pcd、ply等格式,具体选择哪种格式,则根据数据采集装置1采集的数据格式、分割模块4所支持处理的数据格式等决定。由于手指3D数据DateFinger至少包含有指甲的指甲3D数据DateNail以及指甲周围皮肤的皮肤3D数据DateSkin,所以,将手指3D数据DateFinger的格式转化为例如pcd格式等PCL数据库3所支持的数据格式后的手指点云CloudFinger,至少包含有表面不平整、具有弯曲弧度的指甲的指甲曲面点云CloudNail-s以及该指甲周围皮肤的皮肤点云CloudSkin。
当然,在本实施方式一的其他设施例中,如果数据采集装置1自带数据转化的功能,则在数据点云步骤中,数据采集装置1可以兼做数据转化装置2,并直接地将采集到的手指3D数据DateFinger的数据格式转化为pcd格式,从而获得手指点云CloudFinger。
PCL(Point Cloud Library)点云库3是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库。以将手指3D数据DateFinger的格式转化为pcd格式举例来说,pcd格式的数据是PCL点云库3所支持的格式,将手指3D数据DateFinger转化为pcd格式后的手指点云CloudFinger进入到PCL点云库3中,能够利用PCL点云库3中的相关算法对手指点云CloudFinger进行后续的处理。
具体的,本实施方式中,在指甲点云展平步骤中,利用展平模块5将指甲曲面点云CloudNail-s等表面积的展平为指甲平面点云CloudNail-p的时候,由于指甲曲面点云CloudNail-s具有弧度而导致指甲平面点云CloudNail-p作为模型所做的甲贴不能够完美贴合指甲。
为了改善这一点,本实施方式四的指甲点云展平步骤中,如下图3所示,先利用展平模块5将指甲曲面点云CloudNail-s沿着x轴横向地分割为n层点云Li,然后按照每一层点云Li作为整体的进行等长度的展平,从而获得平面状态下的指甲平面点云CloudNail-p。
对于每一层点云Li的点云为:
Li={p∈CloudNail-s|px<=limitLi&px>=limitRi}
其中,
Li为沿着x轴横向地分割后的当前层的点云Li;
p为当前层点云Li中的点;
px为点p的x轴坐标值;
limitLi为当前层点云Li的x轴最小值;
limitRi为当前层点云Li的x轴最大值。
历遍指甲曲面点云CloudNail-s中每一层点云Li的所有点,只要点p的x轴坐标值px满足条件limitLi≤px≤limitRi,就将该点p归入当前层Li,进而聚入当前区域列表{Rc}。
更为具体的,对于每一层点云Li中的点的x轴范围,有
limitLi=minx+i×ld
limitRi=minx+(i+1)×ld
ld=(maxx-minx)/n
其中,
minx为当前层点云Li的x轴极小值;
maxx为当前层点云Li的x轴极大值;
ld为每一层Li的点云的宽度;
n为指甲曲面点云CloudNail-s沿着x轴横向分割的层数。
在这里,层数n并不是一个固定不变的数字,而是由指甲曲面点云CloudNail-s的在x轴上的长度以及输入的点云的疏密程度决定的。
当然,也可以是由指甲曲面点云CloudNail-s的在x轴上的长度以及输入的层数n来获得点云的疏密程度。
如此,沿着指甲的生长方向,也即x轴的正方向,对指甲曲面点云CloudNail-s进行分层,然后对每一层点云Li进行等长度的展平,每一层点云Li展平前后在y轴的方向上长度不变,使得据此获得的指甲平面点云CloudNail-p在指甲的宽度方向,也即y轴方向上能够完美匹配。而,对指甲曲面点云CloudNail-s仅在x轴的正方向上进行展平,还能够适配指甲的生长方向以及指甲沿生长方向相对对称的特性,减少因曲面转换为平面而产生的误差,尽可能地保持展开时的指甲平面点云CloudNail-p相对于指甲在侧面维度上的形状和长度不变。基于此指甲平面点云CloudNail-p的轮廓点云CloudContour所绘制而得的形状轮廓,能够在指甲侧面维度上更为地贴合指甲,据此制得的甲贴贴附在指甲上时贴附完全,不会产生贴附不全或溢出等问题。
而,参见图4所示,在指甲点云展平步骤中,将每层点云Li中的各点pj的x轴坐标值统一,并保持其y轴和z轴坐标值不变,获得一个近似弧形的点云集合stand_Li。
简单来说,就是将不同层点云Li上的各个点pj都统一到同一个层面上,方便下一步的展开计算。具体的,将每一层的点云Li通过映射f来映射到平面x=XLi上,从每一层的点云Li得到前述的近似弧形的点云集合stand_Li。
stand_Li=f(Li)
f:p∈Li→px=XLix
再然后,参见图5所示,将每一层点云集合stand_Li中的所有点p,按照指甲曲面点云CloudNail-s中指甲中线的y坐标Centery分成2个部分:L_part1i、L_part2i,其中,
L_part1i={p|py<=Centery}
L_part2i={p|py>Centery}
其中,
stand_Li为将每层点云Li中的各点pj的x轴坐标值统一,并保持其y轴和z轴坐标值不变后获得的近似弧形的点云集合;
f为映射;
p为当前层点云集合stand_Li中的点;
px为点p的x轴坐标值;
XLix为平面XLi的x轴坐标值;
L_part1i为当前层点云集合stand_Li中指甲中线一侧的弧形点云集合;
L_part2i为当前层点云集合stand_Li中指甲中线另一侧的弧形点云集合;
py为点p的y轴坐标值;
Centery为指甲曲面点云CloudNail-s中指甲中线的y轴坐标值。
将stand_Li分成L_part1i、L_part2i两部分后,再将每部分的弧形点云L_part1i、L_part2i按照指甲中线从近至远依次序排序后得到点云L_ordered_parti。
其具体算法如下:
输入:
●输入点云L_parti
●输入半径阈值Rthres
输出:
●输出整理排序后的点云L_ordered_parti
初始化:
●初始化排序后的点云L_ordered_parti
●初始化点列表{P},将点云L_parti的所有点压入列表{P}
●计算输入点云各点的法线向量{N}
●计算输入点云各点的曲率{c}
算法循环:
●历遍列表{P}的所有点找出{P0},满足{P0}的y轴坐标值距离手指中线的y坐标Centery最短
●并将{P0}从列表{P}中剔除{p}←{p}\P0
●同时将{P0}压入点云L_ordered_parti,
L_ordered_parti←L_ordered_parti∪P0
●只要列表{P}不为空,则:
◆找出点云L_ordered_parti中当前的序列最大点Pend
◆找出列表{A}中当前距离点Pend直线距离最小点Pmin,并将Pmin从列表{A}中剔除{A}←{A}\Pmin
◆同时将Pmin压入点云L_ordered_parti,
L_ordered_parti←L_ordered_parti∪Pmin
◆当列表{P}为空,则输出排序后点云L_ordered_parti
再然后,将处理好顺序的弧形点云L_ordered_parti展开为一条直线点云L_expand_parti,其中,
d_curve=d_straight
且d_curve近似等于点P1、P2的直线距离:
d_curve≈√(P1y-P2y)2+(P1z-P2z)2
展开后的对应点P1'、P2'为:
依次将所有点的L_expand_parti对应点都计算出来。
最后,将所有的直线点云L_expand_parti全部合并为新的Cloud_expandNail
Cloud_expandNail=ΣL_expand_parti
该合并后新的Cloud_expandNail即为指甲平面点云CloudNail-p。
由于最初获得的手指3D数据DateFinger包括有全部指甲的指甲3D数据DateNail以及指甲周围皮肤的皮肤3D数据DateSkin,因此,将手指3D数据DateFinger点云化处理、乃至转换后所获得的手指点云CloudFinger则包括了指甲的指甲曲面点云CloudNail-s和指甲周围皮肤的皮肤点云CloudSkin。在对指甲的轮廓提取中,需要将指甲曲面点云CloudNail-s和皮肤点云CloudSkin分离,从而提取出所需要的指甲曲面点云CloudNail-s。
基于此,在指甲点云获取步骤中,参见图6所示,具体包括有点云分割子步骤。而在点云分割子步骤中,利用PCL点云库3中的分割模块4对手指点云CloudFinger进行分割,将手指点云CloudFinger中的指甲曲面点云CloudNail-s和皮肤点云CloudSkin进行分割,提取出具有弧度的指甲的指甲曲面点云CloudNail-s。
特别地,结合图2和图6所示,本实施方式一中的点云分割子步骤采用区域生长分割法(region growing segmentaion)来分割校准手指点云CloudFinger,其具体的分割方式如下:
输入:
●输入点云{P}
●输入搜索半径Rrs
●输入曲率阈值curthres,角度阈值θthres
输出:
●输出点云分割后的区域簇列表R
初始化:
●初始化区域簇列表R
●初始化点列表{A}←{1,…,P_size},将点云的所有点压入列表{A}
●计算输入点云各点的法线向量{N}
●计算输入点云各点的曲率{c}
算法循环:
●只要列表{A}不为空,则:
◆清空当前区域列表{Rc}和当前种子列表{Sc}
◆找出列表{A}中当前的曲率最小点Pmin,并将该曲率最小点Pmin从列表{A}中剔除{A}←{A}\Pmin。
◆同时将从列表{A}中剔除的前述的曲率最小点Pmin压入当前区域列表{Rc}和当前种子列表{Sc}
{Sc}←{Sc}∪Pmin,{Rc}←{Rc}∪Pmin。
◆对于当前种子列表{Sc}中的每个点{Sc(i)},循环做:
■通过k-d tree迅速查找到点{Sc(i)}的所有邻点{Nbc}
■对于{Nbc}中所有的邻点的每个点{Nbc(j)},循环做:
历遍列表{Nbc}寻找是否有点{Nbc(j)}可以满足条件,点{Sc(i)}和当前邻点{Nbc(j)}的法向量夹角小于角度阈值θthres,即cos-1(Sc(i),Nbc(j)≤θthres),则:
■将满足条件的点{Nbc(j)}加入当前区域列表{Rc},
{Rc}←{Rc}∪Nbc(j)
将满足条件的点{Nbc(j)}从列表{A}中去除,
{A}←{A}∪Nbc(j)。
■若满足条件的点{Nbc(j)}的曲率小于曲率阈值curthres,则将该满足条件的点{Nbc(j)}压入前种子列表{Sc},{Sc}←{Sc}∪Nbc(j)。
◆将当前区域列表{Rc}加入分割后输出的区域簇列表R,{R}←{R}∪Rc。
如此,可以将手指点云CloudFinger分割,去除皮肤点云CloudSkin,生长并提取出指甲的指甲曲面点云CloudNail-s。
具体的,结合图1和图2所示,在指甲点云展平步骤中,利用与分割模块4通信连接的展平模块5,将在指甲点云获取步骤中利用数据转化装置2所获取的指甲曲面点云CloudNail-s等表面积的展开拉平,从而获得平面状态下的指甲平面点云CloudNail-p。
最后,在指甲轮廓绘制步骤中,利用与展平模块5通信连接的绘制模块6接收指甲平面点云CloudNail-p,然后绘制指甲平面点云CloudNail-p的轮廓点云CloudContour形状,获得指甲的甲型。
在后续制作中,根据前述方法及系统中的边缘轮廓点云CloudContour形状所绘制获得的指甲的边缘轮廓,后期可以根据该边缘轮廓形状制作成甲贴模型,作为制作甲贴、研究指甲形状等的基础。
需要说明的是,本申请中所说的指甲,可以是手指甲,还可以是脚趾甲。
实施方式二
本申请的实施方式二提供了一种指甲轮廓的提取方法及系统,该提取方法及系统均基于实施方式一中的指甲轮廓的提取方法及系统的设计和实施,其实际流程或结构与之近似但又有所区别,以下着重对于区别之处进行描述,若非针对区别之处予以的详细说明,均可认为与实施方式一中相同而不再赘述。
PCL点云库3可以利用可视化窗口绘制坐标系(x,y,z),坐标系定位点云在三维世界中的位置。而在本实施方式二中,为了方便后续对手指点云CloudFinger的处理,获得精准、高效的处理结果,参见图7和图8所示,数据点云步骤中包括有点云方向矫正子步骤,指甲轮廓的提取系统还包括矫正模块7。在该点云方向矫正子步骤中,我们利用矫正模块7将数据点云步骤中数据转化装置2所转化获得的手指点云CloudFinger进行姿势和位置的转换,获得输出手指点云CloudFinger-o,使得输出手指点云CloudFinger-o的姿势和位置将其转换到我们希望的预设的姿势和位置上。
矫正模块7可以独立设置并与数据转化装置2通信连接,也可以是集成在数据转化装置2内,或者属于数据转化装置2的一部分。
具体的,我们希望的姿势和位置是,通过改变手指点云CloudFinger以使得输出手指点云CloudFinger-o的质心与PCL点云库3中坐标系的坐标原点重合、手指的前端指向坐标系中x轴的正方向、手指的背部指向坐标系中z轴的负方向。
更为具体的,手指的前端指的是手指的更为靠近指甲生长端的一端,手指的前端指向的方向是指甲的生长方向;手指的背部指的是手指的长有指甲的一面,手指的背部指向的方向是手指的指腹朝向指甲的方向。
基于这种要求,先在数据点云步骤中,将数据点云步骤中得的手指3D数据DateFinger进行转换以获得手指点云CloudFinger(以下也称之为输入手指点云),然后进入点云方向矫正子步骤,利用矫正模块7将输入手指点云CloudFinger的姿势和位置进行转换,从而获得新的在我们希望的姿势和位置上的手指点云CloudFinger-o(以下统称为输出手指点云)。
在本实施例中,点云方向矫正子步骤中的矫正模块7是通过tf旋转矩阵来转换输入手指点云CloudFinger的姿势和位置的,将输入手指点云CloudFinger转化为输出手指点云CloudFinger-o的具体公式步骤如下:
CloudFinger-o=CloudFinger*tf
其中,
tf为旋转矩阵;
CloudFinger为将数据点云步骤中得的手指3D数据DateFinger进行转换后所获得的输入手指点云;
CloudFinger-o为将输入手指点云CloudFinger经tf旋转后的输出手指点云;
R为旋转矩阵的姿势旋转量;
T为旋转矩阵的平移量;
c为输入手指点云CloudFinger的质心;
xc、yc、zc分别为输入手指点云CloudFinger的质心坐标。
这样一来,经过tf旋转变换后获得的输出手指点云CloudFinger-o,满足其质心与坐标原点重合,手指的前端指向x轴正方向,手指的背部指向z轴负方向。与预设姿势和位置一致的输出手指点云CloudFinger-o,能够为后续对输出手指点云CloudFinger-o进行处理提供良好的先决条件。
上述经tf旋转变换后获得的输出手指点云CloudFinger-o,其也可能存在手指的背部指向坐标系中z轴的正方向的情况。基于此,参见图9和图10所示,在点云方向矫正子步骤之后,数据点云步骤还包括校验子步骤,指甲轮廓的提取系统还包括校验模块8。在校验子步骤中利用校验模块8对经转换后的手指点云中的手指的背部指向进行检验,检验其是否指向坐标系中z轴的负方向。
校验模块8与矫正模块7通信连接,校验模块8可以独立设置并与数据转化装置2通信连接,也可以是集成在数据转化装置2内,或者属于数据转化装置2的一部分。
如果,校验模块8校验出经转换后的手指点云中的手指的背部指向坐标系中z轴的正方向,我们利用矫正模块7将该经转换后的手指点云绕x轴旋转180°后,作为输出手指点云CloudFinger-o,以供后续输出。
如果,校验模块8校验出经转换后的手指点云中的手指的背部指向坐标系中z轴的负方向,我们将该经转换后的手指点云直接作为输出手指点云CloudFinger-o,以供后续输出。
如此,可以确保输出手指点云CloudFinger-o中手指的背部指向坐标系中z轴的负方向。
包围盒也叫外接最小矩形,是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。PCL点云库3获取点云包围盒,并利用包围盒来计算和处理数据。
具体的,上述校验子步骤的具体校验步骤如下:
ˉ
计算经tf旋转变换后获得的手指点云CloudFinger中,z坐标的平均值z以及与包围盒的中值zm,并进行判断。
zm为指点云包围盒在z轴的中值;
zmax为手指点云坐标在z轴的最大值;
zmin为手指点云坐标在z轴的最小值。
更为具体的,如果,则表明经tf旋转变换后获得的手指点云的手指的背部指向坐标系中z轴的正方向。如此,将经tf旋转变换后获得的手指点云绕x轴旋转180°,然后将该旋转180°后的手指点云作为输出手指点云CloudFinger-o。
实施方式三
本申请的实施方式三提供了一种指甲轮廓的提取方法及系统,该提取方法及系统均基于实施方式一或二中的指甲轮廓的提取方法及系统的设计和实施,其实际流程或结构与之近似但又有所区别,以下着重对于区别之处进行描述,若非针对区别之处予以的详细说明,均可认为与实施方式一和二中相同而不再赘述。
如图11所示,在将指甲曲面点云CloudNail-s和皮肤点云CloudSkin按照如实施方式一中的点云分割子步骤以及分割模块4进行分割的时候,在上述的聚簇拘束条件下,指甲曲面点云CloudNail-s的分割生长只取决于相邻两点的法向量夹角Δθ和点的曲率阈值curthres,由此产生的误差较大。
尤其是,如果手指的甲沟不明显或者手指点云CloudFinger的点云模型噪声较明显,手指点云CloudFinger中的点云的起伏不是特别大,也即指甲曲面点云CloudNail-s和皮肤点云CloudSkin在交接区域的起伏较小时,皮肤点云CloudSkin中相邻点云的法线也会产生较大的误差,从而导致将皮肤点云CloudSkin中的点错误地压入前种子列表{Sc},并最终加入到分割后输出的区域簇列表R,也即将本属于皮肤点云CloudSkin中的点错误地加入到指甲曲面点云CloudNail-s中。
具体如图12a所示,在搜索半径Rrs下,皮肤点云CloudSkin中的相邻点与邻点的法向量夹角θ1和θ2同时满足小于角度阈值θthres,从而满足前述的如下条件:
■若满足条件的点{Nbc(j)}的曲率小于曲率阈值curthres,则将该满足条件的点{Nbc(j)}压入前种子列表{Sc},
{Sc}←{Sc}∪{Nbc(j)}
从而执行如下的动作:
将当前区域列表{Rc}加入分割后输出的区域簇列表R,
{R}←{R}∪{Rc}。
如此,该皮肤点云CloudSkin中的点云被归入到区域簇列表R,使得PCL点云库3中的指甲曲面点云CloudNail-s的区域生长至起伏处外面,也即皮皮肤处,从而使得出现图12a中的情况,最后导致指甲分割失败。
对于此种情况,在本实施方式的一些实施例中,我们可以采用减小搜索半径Rrs的方法来精细化地进行计算,并计算获得更精确的n点的法向量。
但是,如图12b所示,搜索半径Rrs的减小虽然有助于精准计算n点的法向量,却也会使得手指点云CloudFinger模型的噪声相对于该减小的Rrs而增大,从而使得PCL点云库3中区域生长时的算法误差由于该相对增大的噪声影响而增大,导致甲沟部分生长不到位,从而影响结果精度。
基于此,参考图13和图14所示,本实施方式三对此进行了优化,在指甲点云获取步骤的点云分割子步骤之后,还设置有聚簇拘束子步骤,聚簇拘束子步骤通过在分割模块4添加聚簇拘束条件,来提高计算结果的精度。
该聚簇拘束子步骤具体方法步骤如下:
在搜索半径Rrs的基础上输入搜索半径Rrs',搜索半径Rrs'小于搜索半径Rrs,获得在搜索半径Rrs'下点与邻点的法向量夹角θRrs',并增加角度阈值θthres 2作为判定条件,进行判定;
如果当前点的θRrs-θRrs'>θthres 2,则停止生长。
如果当前点的θRrs-θRrs'≤θthres 2,则将该当前点聚入当前区域列表{Rc}。
其中,
θRrs为在搜索半径Rrs下点与邻点的法向量夹角;
θRrs'为在搜索半径Rrs'下点与邻点的法向量夹角。
以两个点n1、n2为例,参见图14所示,点n1的Δθ1=θ1'-θ1,其Δθ1>θthres2,n1不被聚入当前区域列表{Rc};点n2的Δθ2=θ2'-θ2,其Δθ2≤θthres 2,n2被聚入当前区域列表{Rc}。
其中,
θ1为在搜索半径Rrs下点n1与邻点的法向量夹角;
θ1'为在搜索半径Rrs'下点n1与邻点的法向量夹角;
θ2为在搜索半径Rrs下点n2与邻点的法向量夹角;
θ2'为在搜索半径Rrs'下点n2与邻点的法向量夹角。
如此,通过增加该聚簇拘束条件,对于满足点和当前邻点的法向量夹角小于角度阈值θthres时的点,缩小搜索半径Rrs后再进行进一步的聚簇拘束,使得只有当该点在搜索半径Rrs与搜索半径Rrs'下的与邻点的法向量夹角小于该角度阈值θthres 2时,才判定其属于指甲曲面点云CloudNail-s中的点、并聚入当前区域列表{Rc},而将不满足该条件的点去除,有效减少了指甲曲面点云CloudNail-s的误生长,并获得如图15所示的,从手指点云CloudFinger中精准提取分割曲面点云CloudNail-s的分割效果。
这里,搜索半径Rrs'是远小于搜索半径Rrs的。具体的,可以设定搜索半径Rrs'是搜索半径Rrs的0.01-0.8倍,更为优选的,搜索半径Rrs'是搜索半径Rrs的0.1-0.3倍。如此,可以在合理的增加PCL点云库3中工作量、满足自身的分割精度需求的情况下对手指点云CloudFinger中的点云进行分割生长,从中分割获得更为精准的指甲曲面点云CloudNail-s。
更为特别地,在分割模块4执行前述的点云分割子步骤以及聚簇拘束子步骤动作、进行指甲曲面点云CloudNail-s的区域生长时,将重复抽取列表{A}中曲率最小的点作为种子点S0开始生长过程,直至列表{A}剩余点为空。由此,输入手指点云CloudFinger的所有区域全部生长完毕,获得其中的指甲曲面点云CloudNail-s。
但是,上述步骤中的分割模块4虽然能够获得指甲曲面点云CloudNail-s,却会重复抽取列表{A}中曲率最小的点作为种子点S0开始生长过程,这些过程还导致获得了手指点云CloudFinger中不必要的皮肤点云CloudSkin,还使得该生长过程重复且冗余,指甲曲面点云CloudNail-s的生长效率极低。
对此,参见图16和图17所示,本实施方式三在指甲点云获取步骤的点云分割子步骤之前,还包括种子点S0选择子步骤,指甲轮廓的提取系统还包括与分割模块4通信连接的选择模块9。在该种子点S0选择子步骤中,利用选择模块9先判定获取指甲的甲面区域Nrange(x,y),并在该甲面区域Nrange(x,y)中选择一点作为种子点S0,分割模块4通过该种子点S0开始生长过程。
如此,生长过程从指甲曲面点云CloudNail-s的甲面区域Nrange(x,y)开始进行,仅需一次生长过程,即可确保该生长过程所获得的即为指甲曲面点云CloudNail-s,减少了生长算法所需的时间,提高了算法效率。
更为具体的,甲面区域Nrange(x,y)的确定,是在前述的将输入手指点云CloudFinger经tf旋转后获得的与坐标轴正交的输出手指点云CloudFinger-o的基础上进行的。如图18所示,阴影部分为判定的甲面区域Nrange(x,y),它是x轴和y轴的一个范围值所圈起的一个矩形范围,其表达式为:
Nrange(x,y)={x∈(xlower limit,xupper limit),y∈(ylower limi,yupper limit)}
其中,
xmin为指甲曲面点云CloudNail-s在x轴上的最小值;
xmax为指甲曲面点云CloudNail-s在x轴上的最大值;
ymin为指甲曲面点云CloudNail-s在y轴上的最小值;
ymax为指甲曲面点云CloudNail-s在y轴上的最大值。
这个矩形范围,根据指甲曲面点云CloudNail-s可以是选定在其在x轴和y轴的宽度的设定比例进行确定,并优选设置为在x轴的两侧、y轴的两侧是对称的。在本实施方式的优选方式中,将该矩形的甲面区域Nrange(x,y)的范围定位在整个甲面区域Nrange(x,y)的y轴宽度的1/2、x轴宽度的3/4处。
也即:
xlower limit=(xmin×(4-(3-a))+xmax×(3-a))/4
xupper limit=(xmin×(4-(3+a))+xmax×(3+a))/4
ylower limit=(ymin×(2-(1-b))+ymax×(1-b))/2
yupper limit=(ymin×(2-(1+b))+ymax×(1+b))/2
其中,
a为x轴方向的矩形宽度半径;
b为y轴方向的矩形宽度半径。
如此,在确定好的甲面区域Nrange(x,y)之后,通过PCL点云库3中的分割模块4将该甲面区域Nrange(x,y)的点分离出来,再从中随意选一个点作为最初生长的种子点S0,能够确保这仅有的一次生长能确实发生在甲面区域Nrange(x,y)内,指甲曲面点云CloudNail-s的生长过程简单且仅有一次,指甲曲面点云CloudNail-s的生长效率获得加大的提高。
实施方式四
本申请的实施方式四提供了一种指甲轮廓的提取方法及系统,该提取方法及系统均基于实施方式一至三中的指甲轮廓的提取方法及系统的设计和实施,其实际流程或结构与之近似但又有所区别,以下着重对于区别之处进行描述,若非针对区别之处予以的详细说明,均可认为与实施方式一至三中相同而不再赘述。
本实施方式五中,参见图19和图20所示,在进行指甲轮廓的绘制之前,指甲轮廓的提取方法还具有边界提取步骤中,指甲轮廓的提取系统还包括边界提取模块10,边界提取模块10与展平模块5以及绘制模块6均通信连接。在该边界提取步骤中,利用边界提取模块10提取指甲平面点云CloudNail-p的外围边缘的轮廓点云CloudContour,然后,利用绘制模块6描绘轮廓点云CloudContour的形状,绘制获得该指甲的甲型。
我们通过边界提取模块10,提取指甲平面点云CloudNail-p的轮廓点云CloudContour。而,如果直接提取展平后的指甲平面点云CloudNail-p,由于原点云的噪声和指甲分割时的误差,使得提取到的边缘有明显的锯齿状,存在最外层的该轮廓点云CloudContour不够平滑、从而影响到绘制获得的指甲轮廓的美观问题。因此,我们可以对指甲平面点云CloudNail-p的边缘进行平滑处理,在尽可能保留指甲原有的边缘特征的前提下,使得指甲平面点云CloudNail-p的边缘轮廓点云CloudContour更加平滑圆润。
边界提取模块10与展平模块5以及绘制模块6均通信连接,边界提取模块10可以独立设置并与PCL点云库3通信连接,也可以是集成在PCL点云库3内,或者属于PCL点云库3的一部分。
如此,在指甲轮廓绘制步骤中,利用边界提取模块10提取指甲平面点云CloudNail-p中的轮廓点云CloudContour。
然后,在指甲点云展平步骤中,在边界提取步骤之后还包括有边缘处理步骤,指甲轮廓的提取系统还包括边缘处理模块11,边缘处理模块11位于PCL点云库3中,并与边界提取模块10以及绘制模块6均通信连接。在边界提取步骤中,利用边缘处理模块11将获得的轮廓点云CloudContour进行平滑处理,使得边缘平滑。
边缘处理模块11与边界提取模块10以及绘制模块6均通信连接,边缘处理模块11可以独立设置并与PCL点云库3通信连接,也可以是集成在PCL点云库3内,或者属于PCL点云库3的一部分。
具体的,在边缘处理步骤中,边缘处理模块11采用曲线拟合的方式,将边界提取步骤中利用边界提取模块10提取的不够平滑的轮廓点云(以下也称输入轮廓点云CloudContour-i)的边缘进行曲线拟合,获得平滑的轮廓点云(以下也称输出轮廓点云CloudContour),进而获得平滑的指甲曲线。该边缘处理步骤的具体步骤如下:
①通过PCL点云库3提供的边界提取模块10提取指甲平面点云CloudNail-p的输入轮廓点云CloudContour-i;
②对提取到的输入轮廓点云CloudContour-i进行曲线拟合,得到曲线Contour_hull1;
③沿x轴方向找到输入轮廓点云CloudContour-i的最宽处的x轴坐标x1;
④对于输入轮廓点云CloudContour-i的所有点取大于坐标x1的点,得到集合hull1;
⑤对于拟合曲线Contour_hull1的所有点取小于于坐标x1的点,得到集合hull2;
⑥将得到的点集合hull1和点集合hull2合并得到最终的轮廓轮廓点云CloudContour。
如此获得的轮廓轮廓点云CloudContour,在保证匹配指甲的弧度和边缘轮廓的前提下,更加地符合指甲的具体边缘轮廓走向,也提高了绘制获得的指甲轮廓的美观度,进而有利于提高将其制作成甲贴模型,所生产获得的甲贴的美观性。
本领域普通技术人员可以意识到,结合本文中所公开的实施方式描述的各实施例的模块及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现。并且软件模块可以置于任意形式的计算机存储介质中。为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
应理解为,以上各公开实施方式可以以多种不同的形式实现,且权利要求的范围不应解释为限于本文所述的实施方式。具体而言,提供这些实施方式以使本公开充分且全面,并向本领域技术人员充分传达本发明实施方式的概念。本公开实际上旨在涵盖落在所附权利要求所限定的本公开的精神和范围内的实施方式的所有替代方案、修改及等同方案。此外,在下文对本公开实施方式的详细描述中,将阐述大量具体细节以便透彻理解。然而,对于本领域普通技术人员,显而易见的是,本公开实施方式可以在没有这些具体细节的情况下实践。
Claims (10)
1.一种指甲轮廓的提取方法,其特征在于,包括如下步骤:
获取包含有指甲的手指点云CloudFinger,利用PCL点云库从手指点云CloudFinger中提取指甲的指甲曲面点云CloudNail-s,再将指甲曲面点云CloudNail-s等表面积的展平后获得平面状态下的指甲平面点云CloudNail-p;
在将指甲曲面点云CloudNail-s等表面积的展平后获得平面状态下的指甲平面点云CloudNail-p的指甲点云展平步骤中,步骤如下:
将指甲曲面点云CloudNail-s沿着指甲的生长方向横向地分割为n层点云Li,然后按照每一层点云Li作为整体的进行等长度的展开拉平,获得平面状态下的指甲平面点云CloudNail-p。
2.根据权利要求1所述的指甲轮廓的提取方法,其特征在于,历遍指甲曲面点云CloudNail-s中每一层点云Li的所有点;
如果,点p的x轴坐标值px满足条件limitLi≤px≤limitRi,就将该点p归入当前层Li,进而聚入当前区域列表{Rc};
limitLi=minx+i×ld
limitRi=minx+(i+1)×ld
ld=(maxx-minx)/n
其中,
x轴为PCL点云库中坐标系的x轴;
minx为当前层点云Li的x轴极小值;
maxx为当前层点云Li的x轴极大值;
ld为每一层Li的点云的宽度;
n为指甲曲面点云CloudNail-s沿着x轴横向分割的层数。
3.根据权利要求2所述的指甲轮廓的提取方法,其特征在于,将每层点云Li中各点pj的x轴坐标值统一,并保持其y轴和z轴坐标值不变,获得一个近似弧形的点云集合stand_Li;
将每一层点云集合stand_Li中的所有点p,按照指甲中线的y坐标Centery分成2个部分:L_part1i、L_part2i;
将每部分的弧形点云L_part1i、L_part2i按照指甲中线从近至远依次序排序后得到L_ordered_parti;
L_part1i={p|py<=Centery}
L_part2i={p|py>Centery}
其中,
y轴为PCL点云库中坐标系的y轴;
z轴为PCL点云库中坐标系的z轴;
stand_Li为将每层点云Li中的各点pj的x轴坐标值统一,并保持其y轴和z轴坐标值不变后获得的近似弧形的点云集合;
p为当前层点云集合stand_Li中的点;
L_part1i为当前层点云集合stand_Li中指甲中线一侧的弧形点云集合;
L_part2i为当前层点云集合stand_Li中指甲中线另一侧的弧形点云集合;
py为点p的y轴坐标值;
Centery为指甲曲面点云CloudNail-s中指甲中线的y轴坐标值。
4.根据权利要求3所述的指甲轮廓的提取方法,其特征在于,将每一层的点云Li通过映射f来映射到平面x=XLi上,从每一层的点云Li得到前述的近似弧形的点云集合stand_Li;
stand_Li=f(Li)
f:p∈Li→px=XLix
f为映射;
px为点p的x轴坐标值;
XLix为平面XLi的x轴坐标值。
5.根据权利要求3所述的指甲轮廓的提取方法,其特征在于,在指甲点云展平步骤中,利用L_part1i、L_part2i获得的指甲平面点云CloudNail-p的步骤如下:
输入:
●输入点云L_parti
●输入半径阈值Rthres
输出:
●输出整理排序后的点云L_ordered_parti
初始化:
●初始化排序后的点云L_ordered_parti
●初始化点列表{P},将点云L_parti的所有点压入列表{P}
●计算输入点云各点的法线向量{N}
●计算输入点云各点的曲率{c}
算法循环:
●历遍列表{P}的所有点找出{P0},满足{P0}的y轴坐标值距离手指中线的y坐标Centery最短
●并将{P0}从列表{P}中剔除{p}←{p}\P0
●同时将{P0}压入点云L_ordered_parti,
L_ordered_parti←L_ordered_parti∪P0
●只要列表{P}不为空,则:
◆找出点云L_ordered_parti中当前的序列最大点Pend
◆找出列表{A}中当前距离点Pend直线距离最小点Pmin,并将Pmin从列表{A}中剔除{A}←{A}\Pmin
◆同时将Pmin压入点云L_ordered_parti,
L_ordered_parti←L_ordered_parti∪Pmin
◆当列表{P}为空,则输出排序后点云L_ordered_parti
再然后,将处理好顺序的弧形点云L_ordered_parti展开为一条直线点云L_expand_parti,其中,
d_curve=d_straight
且d_curve近似等于点P1、P2的直线距离:
d_curve≈√(P1y-P2y)2+(P1z-P2z)2
展开后的对应点P1'、P2'为:
依次将所有点的L_expand_parti对应点都计算出来;
最后,将所有的直线点云L_expand_parti全部合并为新的Cloud_expandNail;
Cloud_expandNail=ΣL_expand_parti
该合并后新的Cloud_expandNail即为指甲平面点云CloudNail-p。
6.根据权利要求1-5中任一项所述的指甲轮廓的提取方法,其特征在于,层数n由指甲曲面点云CloudNail-s的在x轴上的长度以及输入的点云的疏密程度决定。
7.根据权利要求1-5中任一项所述的指甲轮廓的提取方法,其特征在于,对于获取的包含有指甲的手指点云CloudFinger,指甲轮廓的提取方法还包括:
点云方向矫正子步骤:将手指点云CloudFinger转化为输出手指点云CloudFinger-o,使得输出手指点云CloudFinger-o的姿势和位置转换到预设的姿势和位置上;
预设的姿势和位置是指,输出手指点云CloudFinger-o的质心与PCL点云库中坐标系的坐标原点重合、手指的前端指向坐标系中x轴的正方向、手指的背部指向坐标系中z轴的负方向。
8.根据权利要求7所述的指甲轮廓的提取方法,其特征在于,将输入手指点云CloudFinger转化为输出手指点云CloudFinger-o的具体公式步骤如下:
CloudFinger-o=CloudFinger*tf
其中,
tf为旋转矩阵;
CloudFinger为将数据点云步骤中得的手指3D数据DateFinger进行转换后所获得的输入手指点云;
CloudFinger-o为将输入手指点云CloudFinger经tf旋转后的输出手指点云;
R为旋转矩阵的姿势旋转量;
T为旋转矩阵的平移量;
c为输入手指点云CloudFinger的质心;
xc、yc、zc分别为输入手指点云CloudFinger的质心坐标。
9.根据权利要求7所述的指甲轮廓的提取方法,其特征在于,在点云方向矫正子步骤之后还包括:
校验子步骤:检验经转换后的手指点云中的手指背部是否指向坐标系中z轴的负方向:
如果手指的背部指向坐标系中z轴的正方向,将经转换后的手指点云绕x轴旋转180°后作为输出手指点云CloudFinger-o;
如果手指的背部指向坐标系中z轴的负方向,将经转换后的手指点云直接作为输出手指点云CloudFinger-o。
10.一种指甲轮廓的提取系统,用于实现前述权利要求1-9中任一项所述的指甲轮廓的提取方法,其特征在于,包括:
数据采集装置,对目标手指进行3D扫描,从而获取目标手指的手指3D数据DateFinger,所述手指3D数据DateFinger至少包含有全部指甲的指甲3D数据DateNail;
数据转化装置,与所述数据采集装置通信连接,所述数据转化装置接收并将所述手指3D数据DateFinger转化为3D点云数据,从而获得手指点云CloudFinger,所述手指点云CloudFinger至少包含有全部指甲的指甲曲面点云CloudNail-s;
PCL点云库,与所述数据转化装置通信连接;
分割模块,位于所述PCL点云库内,所述分割模块构成为能够对所述手指点云CloudFinger进行分割,提取出其中的指甲的指甲曲面点云CloudNail-s;
展平模块,与所述PCL点云库通信连接,所述展平模块构成为能够将所述指甲曲面点云CloudNail-s等表面积的展开拉平,获得平面状态下的指甲平面点云CloudNail-p;
绘制模块,与所述展平模块通信连接,所述绘制模块接收所述指甲平面点云CloudNail-p,并根据所述指甲平面点云CloudNail-p的轮廓点云CloudContour的形状进行绘制,获得指甲的甲型。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110313755.7A CN112990037A (zh) | 2021-03-24 | 2021-03-24 | 指甲轮廓的提取方法及系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110313755.7A CN112990037A (zh) | 2021-03-24 | 2021-03-24 | 指甲轮廓的提取方法及系统 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN112990037A true CN112990037A (zh) | 2021-06-18 |
Family
ID=76334482
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202110313755.7A Pending CN112990037A (zh) | 2021-03-24 | 2021-03-24 | 指甲轮廓的提取方法及系统 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN112990037A (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023015508A1 (zh) * | 2021-08-12 | 2023-02-16 | 上海慧姿化妆品有限公司 | 甲形提取系统及其方法、存储介质、指甲贴及其制造系统 |
| CN116168417A (zh) * | 2022-12-29 | 2023-05-26 | 上海魅奈儿科技有限公司 | 一种指甲识别定位的方法及系统 |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103096753A (zh) * | 2010-09-06 | 2013-05-08 | 欧莱雅 | 制造个性化装饰物品尤其是假指甲的方法及制造的物品 |
| JP2017018158A (ja) * | 2015-07-07 | 2017-01-26 | 株式会社Agt&T | 3dネイルアートモデリング方法 |
| CN108500475A (zh) * | 2017-02-27 | 2018-09-07 | 曹可瀚 | 甲片裁切装置和裁切方法 |
| CN110477575A (zh) * | 2019-08-06 | 2019-11-22 | 南京美小甲科技有限公司 | 美甲机和美甲方法、保护膜裁切方法 |
| CN111222516A (zh) * | 2020-01-06 | 2020-06-02 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 印制电路板点云关键轮廓特征提取方法 |
| CN111292370A (zh) * | 2020-03-19 | 2020-06-16 | 上海魅奈儿科技有限公司 | 一种任意曲面识别美甲方法及系统 |
| CN211186182U (zh) * | 2019-08-06 | 2020-08-07 | 南京美小甲科技有限公司 | 美甲机用手指防护膜 |
-
2021
- 2021-03-24 CN CN202110313755.7A patent/CN112990037A/zh active Pending
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103096753A (zh) * | 2010-09-06 | 2013-05-08 | 欧莱雅 | 制造个性化装饰物品尤其是假指甲的方法及制造的物品 |
| JP2017018158A (ja) * | 2015-07-07 | 2017-01-26 | 株式会社Agt&T | 3dネイルアートモデリング方法 |
| CN108500475A (zh) * | 2017-02-27 | 2018-09-07 | 曹可瀚 | 甲片裁切装置和裁切方法 |
| CN110477575A (zh) * | 2019-08-06 | 2019-11-22 | 南京美小甲科技有限公司 | 美甲机和美甲方法、保护膜裁切方法 |
| CN211186182U (zh) * | 2019-08-06 | 2020-08-07 | 南京美小甲科技有限公司 | 美甲机用手指防护膜 |
| CN111222516A (zh) * | 2020-01-06 | 2020-06-02 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 印制电路板点云关键轮廓特征提取方法 |
| CN111292370A (zh) * | 2020-03-19 | 2020-06-16 | 上海魅奈儿科技有限公司 | 一种任意曲面识别美甲方法及系统 |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023015508A1 (zh) * | 2021-08-12 | 2023-02-16 | 上海慧姿化妆品有限公司 | 甲形提取系统及其方法、存储介质、指甲贴及其制造系统 |
| CN116168417A (zh) * | 2022-12-29 | 2023-05-26 | 上海魅奈儿科技有限公司 | 一种指甲识别定位的方法及系统 |
| WO2024140185A1 (zh) * | 2022-12-29 | 2024-07-04 | 上海魅奈儿科技有限公司 | 一种指甲识别定位的方法及系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Stein et al. | Developability of triangle meshes | |
| US8259101B2 (en) | Sketch-based design system, apparatus, and method for the construction and modification of three-dimensional geometry | |
| CN107886529B (zh) | 一种用于三维重建的点云配准方法 | |
| CN107330901B (zh) | 一种基于骨架的物体构件分解方法 | |
| Massarwi et al. | Papercraft models using generalized cylinders | |
| CN104091162A (zh) | 基于特征点的三维人脸识别方法 | |
| Verhoeven et al. | Dev2PQ: Planar quadrilateral strip remeshing of developable surfaces | |
| JP7641048B2 (ja) | 爪輪郭の抽出方法及びそのシステム | |
| Li et al. | Symmetry and template guided completion of damaged skulls | |
| CN113538569A (zh) | 一种弱纹理物体位姿估计方法和系统 | |
| CN112990037A (zh) | 指甲轮廓的提取方法及系统 | |
| CN117523134A (zh) | 基于结构感知点云语义分割的三维建筑物模型简化方法 | |
| Wang et al. | Anisotropic elliptic pdes for feature classification | |
| CN112949558A (zh) | 指甲轮廓的提取方法及系统 | |
| CN112949557A (zh) | 指甲轮廓的提取方法及系统 | |
| CN106682575A (zh) | Elm算法的人眼点云特征定位 | |
| CN118887263A (zh) | 自动化组合点云配准系统及方法 | |
| CN111882595B (zh) | 一种人体语义特征提取方法及系统 | |
| CN119090702A (zh) | 一种基于人体三维模型的服装制版方法及系统 | |
| CN114186603B (zh) | 多源模型单体化融合方法及系统、存储介质及终端 | |
| Yan-wen et al. | Smooth feature line detection for meshes | |
| Varady | Automatic procedures to create CAD models from measured data | |
| Lee et al. | Full 3D surface reconstruction of partial scan data with noise and different levels of scale | |
| Chen et al. | Model-based point cloud alignment with principle component analysis for robot welding | |
| Massarwi et al. | craft from 3D polygonal models using generalized cylinders |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| WD01 | Invention patent application deemed withdrawn after publication | ||
| WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210618 |