面向3D打印的自定义模型立体二维码生成方法及系统与流程

文档序号:12721521阅读:592来源:国知局
面向3D打印的自定义模型立体二维码生成方法及系统与流程

本发明涉及一种面向3D打印的自定义模型立体二维码生成方法及系统。



背景技术:

二维码,又称快速响应码,有比条形码更强大的存储信息的能力且可被快速解码。目前移动设备尤其是智能手机广泛普及,其包含的扫码软件通过内置摄像头即可容易地解码二维码中包含的信息。因此,二维码已经被广泛应用于各种领域,如信息获取、广告推送、手机电商、防伪溯源等。

近年来,出于对二维码美观的考虑,Lin等人在2013年提出了美化二维码的方法(Yi-Shan Lin,Sheng-Jie Luo,Bing-Yu Chen.2013.Artistic QR CodeEmbellishment.Computer Graphics Forum 32,7,137–146),该方法基于二维码的容错特性,在保证其包含信息无误的情况下,增加了颜色、标签、数字、圆角等美化效果。尽管目前二维码有较多的效果,但其主要还是以二维形式存在于屏幕或印刷品上。随着3D打印技术的迅速发展,目前已经出现使用两种颜色的材料打印在平面上的立体二维码,但在任意曲面上表达的立体二维码还未出现。

传统的二维码识别只适用于平面二维码,而由于空间转换产生畸变导致曲面上二维码识别率较低,例如将二维码直接粘贴或打印在曲面上,往往无法被扫码软件成功解码。针对这一问题,Li等人在2013年提出了一种利用图像边缘检测以及三维透视变换的解码方案(Li Xiaochao,Shi Zhifeng,Guo Donghui.Reconstruct Algorithm of 2D barcode for reading the QR code on Cylindrical Surface[C]International Conference on Anti-Counterfeiting,Security and Identification(ASID 2013).2013:178-182),先构建曲面二维码像素从二维图像平面映射到三维图像空间的变换矩阵,然后通过区域还原对曲面二维码进行校正从而重新构建曲面上的二维码,该方法适用于处理简单的柱面、球面等曲面,但无法适配到任意的三维模型,且依赖于具有校正功能的解码器,因此,这种方法尚未应用于目前的主流解码器。另外,二维码的解码基于至少具有两种颜色的高对比度图像,目前主流的消费级3D打印机只能打印单一属性的材料,即只能提供单一颜色,并不能满足解码要求。综上,如何在给定三维模型上生成二维码,通过3D打印生成物理模型,并使现有的解码器能对其直接解码这一问题仍亟待解决。



技术实现要素:

本发明为了解决上述问题,提出了一种面向3D打印的自定义模型立体二维码生成方法及系统,该方法通过对输入的自定义三维模型进行几何与结构分析,计算得到适合打印立体二维码的目标区域,并通过透视投影变换将普通二维码映射到目标区域,随后根据透视投影变换结果进行凹陷操作在自定义模型表面生成立体的二维码,最终,用户使用单一属性成型材料的3D打印机即可打印出包含立体二维码的三维模型。

为了实现上述目的,本发明采用如下技术方案:

面向3D打印的自定义模型立体二维码生成方法,包括以下步骤:

步骤(1):包括步骤(1-1)-步骤(1-3);

步骤(1-1):输入二维码和自定义3D模型,对输入的自定义3D模型进行网格化和抽壳处理;

步骤(1-2):对处理结果进行几何与结构分析;

步骤(1-3):在自定义3D模型表面寻找适合打印立体二维码的目标区域;

步骤(2):采用透视投影变换方法将二维码映射到目标区域;

步骤(3):根据映射结果进行凹陷操作,在自定义3D模型表面生成立体的二维码;

步骤(4):将生成的含有立体二维码的三维模型输入至3D打印机中,并通过单一材料的3D打印机进行打印,最后输出带有立体二维码的3D实物。

所述步骤(1-1)包括如下步骤:

步骤(1-1-a):使用基于Lloyd松弛的重采样算法在自定义3D模型表面求得离散采样点,通过3D Delaunay三角剖分方法实现对输入的自定义3D模型的网格化;

步骤(1-1-b):使用基于水平集方法的具有特征保持的网格模型偏置算法对网格化处理后的模型进行偏置处理,并对网格化处理后的模型和偏置后的模型进行布尔差运算,得到抽壳处理后的壳体。

所述步骤(1-2)包括如下步骤:

步骤(1-2-a):设置3D打印机的打印精度P的初始值,得到目标区域的最小面积Amin

Amin=[(V-1)*4+21]*P

其中V是输入的二维码的版本号,二维码共有40个版本,版本1是由21*21个黑色或白色的正方形模块构成的矩阵,之后版本号每增加1,二维码的每行每列均增加4个正方形模块;

步骤(1-2-b):设定自定义3D模型的打印方向,以网格的每个三角面片为种子点进行区域扩张,寻找区域面积中所有三角面片的面积之和大于Amin的候选目标区域,通过计算区域面积大于Amin的候选目标区域与打印工作台的平行程度,从而构造衡量目标区域与打印工作台平行程度的能量函数Ep

其中M(λ111213)为候选目标区域中所有三角面片的平均单位法向量,λ111213分别为候选目标区域中所有三角面片的平均单位法向量在x、y和z三个方向的分量,N(λ212223)为打印工作台的单位法向量,λ212223分别为打印工作台的单位法向量在x、y和z三个方向的分量;

步骤(1-2-c):通过计算网格化处理后自定义3D模型候选目标区域对应的所有三角面片上每个顶点的曲率加权平均得到候选目标区域的平均曲率,从而构造衡量目标区域平滑程度的能量函数Es

Es=∫∫D(||I(u,v)||F2+||II(u,v)||F2)dudv

其中D为候选目标区域,I(u,v)为曲面的第一基本形式,II(u,v)为曲面的第二基本形式,||·||为范数;u、v为候选目标区域参数化后的曲面坐标分量;

步骤(1-2-d):构造衡量目标区域可见性的能量函数Ev

其中T为候选目标区域三角面片的集合,ti为T中任意一个三角面片,V(ti)为用户根据ti满足二维码可见性要求的程度自定义的数字标签所对应的数值,ti越满足可见性要求,V(ti)的值越小。

可见性由用户自定义,用以衡量自定义模型上立体二维码是放置在最不显著的位置、比较不显著的位置还是最显著的位置。

三维模型上各个位置的显著性可以通过基于环境遮挡(Ambient Occlusion)的可见性计算方法得到,生成每个三角面片基于显著性的在[0,1]范围内的数字标签,最不显著的位置为0,最显著的位置为1。

步骤(1-2-e):构造衡量目标区域是否位于输入的自定义3D模型功能区的能量函数Ef

其中T为候选目标区域三角面片的集合,ti为T中任意一个三角面片,若ti位于用户在3D模型表面自定义的功能区内,则F(ti)=1;否则F(ti)=0;功能区由用户自定义的区域,例如:门的把手区域为功能区,默认功能区不适合作为候选目标区域;

所述步骤(1-3)包括如下步骤:

选择使得能量函数E最小的候选区域作为最终的目标区域D:

E=λpEpsEsvEvfEf

λp是分别为衡量目标区域与打印工作台平行程度的能量函数Ep的权重值;

λs是分别为衡量目标区域平滑程度的能量函数Es的权重值。

λv是分别为衡量目标区域可见性的能量函数Ev的权重值。

λf是分别为衡量目标区域是否位于功能区能量函数Ef的权重值。

所述步骤(2)中,包括以下步骤:

步骤(2-1):计算目标区域的面积Darea

其中T为目标区域三角面片的集合,ti为T中任意一个三角面片,S(ti)为ti的面积;

步骤(2-2):计算目标区域与和视平面之间的距离;

步骤(2-3):根据目标区域和视平面之间的距离确定视平面的位置;

步骤(2-4):采用透视投影变换方法,将二维码映射到目标区域。

所述步骤(2-2):计算出目标区域和视平面之间的距离Dis:

Dis=Darea/R;

其中,R表示扫描距离和目标区域面积开方的比例,用户根据实际情况设定;

所述步骤(2-3):设置视平面的大小为解码器识别框的大小,用户根据实际情况进行调整,视平面满足与目标区域之间的距离为Dis且垂直于目标区域的法线方向;同时视平面的中点位于目标区域的法线方向上。

所述步骤(2-4)包括:

步骤(2-4-a):根据视平面和目标区域的位置关系,求得目标区域左上角的点与视平面左上角的点确定的直线和目标区域右上角的点与视平面右上角的点确定的直线的交点即为视点所在的位置;根据视点和视平面的位置建立透视投影变换关系;

步骤(2-4-b):将二维码放置于视平面上,根据确定的透视投影变换关系,将二维码映射到目标区域。

所述步骤(3)中,包括以下步骤:

步骤(3-1):根据投影变换之后的结果采用LOOP逼近细分算法对目标区域的三角网格进行网格细分,使得投影变换之后目标区域内所有三角面片中的任意一个三角面片都不存在与投影变换到三维物体表面的二维码边界相交于三角面片内部的情况;如果不满足上述条件,则对目标区域的三角网格进行进一步细分,直到满足条件为止;二维码边界包括黑白模块边界和二维码整体的外围边界的集合;

步骤(3-2)将投影变换到三维模型表面的二维码黑色模块对应的三角面片分别沿视点与该三角面片重心连线方向进行凹陷操作,凹陷深度为Tmin,Tmin为设定值。

所述步骤(4):将生成的含有立体二维码的模型导出为stl格式,并输入至3D打印机中,进行打印制作。

步骤(1-1-a):使用基于Lloyd松弛的重采样算法在自定义3D模型表面求得具有各向同性、过渡光滑且视觉效果较好的离散采样点。

步骤(1-1-a):对输入的自定义3D模型网格化时最大化三角网格的最小角度。

步骤(1-1-b):对网格化处理后的模型抽壳处理时设置抽壳处理后的壳体的最小厚度Tmin初始值为0.4cm,用户可根据具体情况相应地调整该参数的大小。

三角面片是通过三角剖分进行网格化处理之后得到的三角网格的基本单位,由空间中三个不共线的顶点顺次连接而成,可以理解为三角形,三角形内部区域为三角面片。

面向3D打印的自定义模型立体二维码生成系统,其特征是,包括:

预处理单元:包括:网格化和抽壳处理模块、分析模块和二维码目标区域寻找模块;

网格化和抽壳处理模块,被配置为:输入二维码和自定义3D模型,对输入的自定义3D模型进行网格化和抽壳处理;

分析模块,被配置为:对处理结果进行几何与结构分析;

二维码目标区域寻找模块,被配置为:在自定义3D模型表面寻找适合打印立体二维码的目标区域;

映射单元,被配置为:采用透视投影变换方法将二维码映射到目标区域;

凹陷单元,被配置为:根据映射结果进行凹陷操作,在自定义3D模型表面生成立体的二维码;

打印单元,被配置为:将生成的含有立体二维码的三维模型输入至3D打印机中,并通过单一材料的3D打印机进行打印,最后输出带有立体二维码的3D实物。

本发明的有益效果为:

(1)本发明通过3D打印技术使得二维码成为立体的可被触摸的,并充分利用立体二维码产生的阴影不仅使得使用单一属性材料可以表达立体二维码还方便了3D打印的过程;

(2)本发明将立体的二维码应用于任意三维模型且无需校正即可用扫码器直接对其进行解码,提出了一种将二维码应用于任意三维模型还可被成功解码的新方法。

附图说明

图1为本发明的方法流程图;

图2为本发明的投影变换示意图;

图3(a)和图3(b)为在bunny模型表面生成立体二维码的效果展示图。

具体实施方式

下面结合附图与实施例对本发明作进一步说明。

如图1所示,面向3D打印的自定义模型立体二维码生成方法,包括:

(1)对输入的自定义模型进行网格化和抽壳处理,并对其进行几何与结构分析,计算适合打印立体二维码的目标区域;

(2)确定投影变换,将普通二维码映射到目标区域;如图2所示;

(3)根据投影变换结果进行凹陷操作在自定义模型表面生成立体的二维码;如图3(a)和图3(b)所示;

(4)将生成的含有立体二维码的三维模型输入至3D打印机中,并通过单一属性成型材料的3D打印机进行打印。

步骤(1)中,具体包括以下步骤:

(1-1)对输入的自定义模型进行网格化和抽壳处理;

(1-2)对输入的自定义模型进行几何与结构分析;

(1-2-a)设置打印精度P的初始值,即立体二维码相应每个块的大小为0.12cm,用户可以根据所使用的打印机来调整该参数从而使立体二维码的相邻立方体模块在该精度下可以得到区分,为此得到目标区域的最小面积Amin:

Amin=[(V-1)*4+21]*P

其中V是输入的给定普通二维码的版本号。普通平面二维码由黑色或者白色的正方形模块组成,相应地立体二维码由突起或者凹陷的立方体模块组成。

(1-2-b)给定自定义模型的打印方向,计算区域面积大于Amin的候选目标区域与打印工作台的平行程度,从而构造能量函数Ep;

(1-2-c)通过计算自定义模型每一点的曲率张量得到候选目标区域的平均曲率,从而构造能量函数Es;

(1-2-d)构造衡量目标区域可见性的能量函数Ev以及衡量目标区域是否位于功能区的能量函数Ef。

(1-3)计算适合打印立体二维码的目标区域。

所述步骤(1-1)中对输入的自定义模型进行抽壳处理时设置要保留面的最小厚度Tmin初始值为0.4cm,用户可根据具体情况相应地调整该参数的大小。

所述步骤(1-3)的具体方法为:选择使得能量函数E最小的候选区域作为最终的目标区域D:

E=λpEpsEsvEvfEf

其中,

λp是分别为能量函数Ep的权重值;

λs是分别为能量函数Es的权重值。

λv是分别为衡量目标区域可见性的能量函数Ev的权重值。

λf是分别为衡量目标区域是否位于功能区能量函数Ef的权重值。

所述步骤(2)中,具体包括以下步骤:

(2-1):计算目标区域的面积Darea

(2-2):确定目标区域与和视平面之间的距离;

(2-3):确定视平面的位置;

(2-4):确定透视投影变换,将普通二维码映射到目标区域,具体为:

(2-4-a):根据视平面和目标区域的位置关系,确定视点所在的位置,建立透视投影变换;

(2-4-b):将普通二维码放置于视平面上,根据确定的透视投影变换关系,将普通二维码映射到目标区域。

所述步骤(2-2)的具体方法为:实验表明,当扫描距离和普通二维码大小比例为10:1时,大多数解码器可以成功解码,由于使用单一材料3D打印的二维码受光照、前景背景色对比度等的影响,可以设置比例R的初始值为8:1,用户可根据实际情况进行相应调整,从而计算出目标区域和视平面之间的距离:

Dis=Darea/R

所述步骤(2-3)的具体方法为:设置视平面的大小为解码器识别框的大小,初始值为4cm*4cm,用户可根据实际情况进行相应的调整,视平面垂直于目标区域的法线方向且视平面的中点位于目标区域的法线方向上。

步骤(3)中,具体包括以下步骤:

(3-1):根据投影变换之后的结果进行网格细分,使得投影变换之后目标区域的每个三角面片都不同时位于映射到三维模型表面的二维码对应的黑块和白块区域;

(3-2)将三维模型表面的二维码对应的黑色区域的三角面片全部沿各自的透视方向进行凹陷操作,凹陷深度为Tmin

所述步骤(4)的具体方法为:将生成的含有立体二维码的模型导出为stl格式并输入至3D打印机中,进行打印制作。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1