基于单张图片的三维建模实现方法与流程

文档序号:15690156发布日期:2018-10-16 21:56阅读:436来源:国知局

本发明属于三维重建和计算机图形学领域,特别是基于基-边-帽-层结构、层式建模和曲线morphing的单张图片的三维建模实现方法。



背景技术:

三维重建是基于图像信息重构物体三维信息、形状、纹理等的数学模拟和计算机计算技术。它根据图片提供的数据信息重建出具有几何信息的三维模型。这些三维模型不仅能够提供虚拟仿真、可视化、测量、分析等方面的功能,在数字文物、3d打印、虚拟现实、增强现实和混合现实等领域有着广阔的应用前景和应用领域。关于三维重建的研究方法包括欧氏几何意义下三维重建方法、基于立体视觉法、基于多张图像序列法、基于深度信息三维重建等。其中,基于多张图像的三维重建技术需要先对每幅图像进行繁杂的预处理,寻找每张图像特征点并匹配,此多张图像的重建方法存在成本较高、计算量较大等问题。而基于单张图像的三维重建技术则是提取单张图像的形状、纹理几何信息等,从而推导出目标物的三维空间属性。由于单张图像的三维建模方法,目的明确,计算量少,技术流程简单,因此用单张图像三维重建越来越多地得到研究人员的重视。

基于单张图像三维重建技术相关理论与方法已经取得一定成果,包括基于特征统计学习方法的单张图像三维重建、形状恢复技术、基于几何投影信息的单张图像三维重建技术,而基于几何投影信息的单张图像三维重建技术对含有几何结构的目标图像取得了较理想的重建效果,但各自的方法仍有各自的不足和局限性。



技术实现要素:

本发明的目的在于提供一种基于基-边-帽-层结构/层式建模和曲线morphing的单张图片的三维建模实现方法,通过输入一张图片就能得到对应的三维模型,从而用于虚拟仿真、可视化、测量、分析等,在数字文物、3d打印、虚拟现实、增强现实和混合现实等领域有着广阔的应用前景和应用领域。

本发明一种基于单张图片的三维建模实现方法,包括如下步骤:

步骤1、输入单张图片和图片分割

基于unity3d开发平台,输入单张图片并显示在窗口中;

利用前背景之间纹理信息和边界信息的差异,对输入的单张图片实现前景分割,得到并保存需要的遮罩图、前景图和纹理信息;

步骤2、结合步骤1中的遮罩图,对步骤1中分割出的前景内容进行轮廓和特征点的检测

使用边缘检测算子对步骤1中分割出的包括建模对象的前景内容进行轮廓检测,标定轮廓每个点的贡献值,递归删除贡献值小于阈值范围的点,不断演绎出前景图中不同层的轮廓,将移除贡献值小于阈值范围的点后所剩余的轮廓点作为特征点,并构成特征点集合p;

步骤3、子级轮廓的提取、对称轴提取和对称轴的曲线拟合

(2)子级轮廓提取

对建模对象进行轮廓检测的过程中会检测出多层级的轮廓集合c:

c={ci|ci={pi,j|j∈[0,m-1]},i∈[0,n]},其中,pi,j是第i个轮廓ci第j个点的坐标,m表示轮廓的索引值,n是轮廓上点的索引值;

首先,选择特征点集合n表示特征点集合p点的个数,xi和yi是点pi的横纵坐标值,特征点集合p对应的轮廓ci,根据对应的pi点分解成多个边a表示特征点集合p中某个特征点的索引值,b表示a所对应的特征点后一个特征点的索引值;

分解后轮廓集合c的表达式为其中m表示轮廓的个数,ci表示第i个轮廓,a,b,c,...,f均是索引值;

采用逆时针顺序选择边进行组合,通过计算每条边起始点之间的欧式距离值的大小,确定好连接顺序和方向后,通过迭代完成子级轮廓连接和提取;

(2)使用基于轮廓逼近的中轴剪枝算法进行对称轴提取

首先,使用最小二乘法贝塞尔对轮廓边缘进行曲线逼近,如公式(1)所示:

其中,p0,p1,p2,p3,pi表示点,s表示逼近后的曲线,ti∈[0,1],ε表示轮廓点的个数;

(3)同时使用最小二乘法进行对称轴f(x)的曲线拟合,如公式(2)所示:

f(x)=a0+a1x+a2x2+...+akxk(2)

其中,k表示k次多项式,a0,a1,a2,...,ak表示多项式系数;

步骤4、创建基、帽、层、边四个元素

(1)创建基结构

创建基结构时需要结合用户操作,若建模对象是立方体,则在立方体基标定时,用户点击a、b、c三处,通过三维空间的逆变换获得相应的空间坐标,设定b点的三维空间坐标z值小于a点的z值且ab之间的深度距离φ是定值,结合a、b点所在的图像坐标的位置,得出公式(3):

其中,sa和sb是点a、b的图像坐标,三维空间点a(xa,ya,za),b(xb,yb,zb),c(xc,yc,zc),根据得到c点的z值zc:

若建模对象是圆形时,则在进行圆形基标定时,用户让底面圆形按照固定轴进行旋转,当旋转后的椭圆形投影图像和实际图片中的图片的投影相吻合时释放鼠标,根据旋转角度θ,即可获得相应的旋转矩阵;结合gui功能,通过鼠标绘制出帽在三维空间的线条形状,通过贝塞尔曲线,进行添加、删除、移动锚点和控制杆的操作,实现三维空间位置属性的调整;

在基标定完成后,对基结构进行三角剖分,以及将基结构进行网格化;

(4)创建边结构

在步骤2中,检测到输入图片的前景内容的轮廓,即得到了该建模对象的边缘信息,使用点集来表示轮廓,同样,也使用点集来表示边结构其中,s表示边结构,xi,yi表示边结构上所有点的坐标值,τ表示边结构点的个数,由于边是轮廓点集c去掉基和帽剩余的点的集合,用来表示帽的点集,其中k表示点的个数,ti表示帽上的某点,那么得出公式(5),其中n表示轮廓中点的个数,q表示基结构点的个数,使用base表示基结构:

根据步骤3中的对称轴提取和拟合得到的对称轴f(x)曲线,将边结构分解为两侧点集pleft={pa,...pb},pright={pb,pb+1,...pa},其中pa是边结构起点,pb是边结构上的某个点,对任意边结构上的点pi=(xi,yi),带入公式(2),如果满足||f(xi)-yi||≠0,则该点pi在对称轴f(x)曲线的“左右侧”,当||f(xi)-yi||<0时,该点pi在对称轴f(x)曲线的左侧,当||f(xi)-yi||>0时,该点pi在对称轴f(x)曲线的右侧,根据每个点pi的计算结果,依次添加到相应的两侧点集pleft和pright中去,最终的边结构可简化用公式(6)表示:

(5)创建帽结构

基于基结构进行帽结构的创建,当建模对象的基结构和帽结构具有相同的结构时,帽结构默认是基结构的复制;若不具有相同的结构的情况下,需要对帽结构进行提取,沿着帽结构进行移动,通过算法自动分割出帽结构二维空间的轮廓c2,c1是由底面基结构复制得到并映射到二维空间中的轮廓,轮廓c1上任意点p0、p0点对应到c2上的点p1和c1的中心点center在一条直线上;将c1的三维空间表示为vc1,c2的三维空间表示为vc2,p0、p1和center的三维点表示分别为v0、v1和vcenter,定义三维空间到二维空间的映射关系表示符号为→,由于p0、p1和center在一条直线上,则v0、v1和vcenter也在一条直线上,将v0沿着直线向vcenter等距运动到v',将v'→p',计算此时p'的二维坐标和p1坐标是否近似相等,不相等的话v0继续运动,相同或在阈值误差范围内,记录当前v'点的坐标为v1空间坐标;同样,计算vc1上面所有点沿着vcenter方向等距运动到vc2对应的v'点,再将v'映射到二维空间p',并保证p'和c2上对应的点近似相等,即可求解出帽结构的三维空间坐标,并且c1和c2的三维空间图形是在同一个平面上;

(4)创建层结构

层结构的创建是基于步骤5点对的创建,且层结构的基本形状取决于基平面和帽结构;当建模对象是圆柱形的时候,基结构和帽结构都是圆形,其中基平面是圆形的面,所以层结构也是圆形;如果基平面是圆形面而帽结构是三角形,那么层结构的形状是两者之间的过渡形状;

计算点对的中心点坐标、缩放比例和旋转角度,将基结构中心复制和平移、缩放、旋转到该中心点,形成此中心点所在的层结构,同理,其他层也是同样处理;

层结构的形状取决于基结构和帽结构,层结构的数量取决于边结构,边结构指定了层的方向的空间位置,点对决定了层的缩放比例s、旋转角度θ,层结构f(l)由公式(7)表示如下:

所述的方向是指图像坐标系下y轴的方向向量;

步骤5、创建点对

根据步骤3中曲线逼近得到的对称轴f(x),将建模对象的轮廓均匀分解为两侧点集pleft、pright,其中,pleft={pa,pa+1,...,pb},pright={pb,pb+1,...,pa},pa是轮廓起点,pb是轮廓上的点,对点任意轮廓上的点pi=(xi,yi),带入公式(2),如果||f(xi)-yi||=0,说明点pi在曲线f(x)上;如果||f(xi)-yi||≠0,点pi在f(x)曲线的左右侧;

创建点对需要对对称轴f(x)进行均匀采样,对公式(2)计算一阶导数即是点pi的切线方向向量利用方向向量和点pi,创建经过点pi的法线且法线函数其中pi=(xi,yi),使用||n(xi)-yi||≠0将点集pleft、pright分别分成两侧,分别计算每侧点集到法线的距离最短的点p1left、p2left、p1rightp2right,其中p1left和p2left在法线的同侧,p1right和p2right在法线的同侧,点即是逼近相交法线的轮廓点,同理计算另一侧的轮廓点这样得到的两个轮廓点组成一组点对pp=(p1,p2);

步骤6、曲线morphing

将步骤5中创建的任意相邻的层结构称为相邻层,使用相邻层之间的变换,解决从一个曲线变换到另一个曲线,从而生成中间变换过程,模拟过渡效果,从相邻层中获得x-z平面的起始点集c1=(x1,y1)...(xn,yn)和目标点集ct=(x1,y1)...(xn,yn),首先对起始点集c1和目标点集ct做采样处理,采样距离是δ,即其中i∈[1,m-1],表示采样后的点集,u表示的个数,分别表示采样后点i的横纵坐标值,de表示两点之间的距离;

利用编辑距离算法,构造字符串集合z=z1...zm-1,其中pi=(xi,yi),pi+1=(xi+1,yi+1),使用距离函数来衡量两条曲线之间的不相似度,使用公式(8)求解出编辑矩阵:

假设是从的某个中间过程,根据公式(9),推理可得公式(10):

p(t)=(1-t)p1+tp2,t∈[0,1](9)

通过取值的不同,可以生成k个中间层;

步骤7、相邻层间三维建模,创建网格

步骤6中得到层call=c0,c1,...,cσ-1,其中c0是基结构且c0已经网格化,σ表示的是层的个数,其网格化后的面的索引值是i(σ,0),i(σ,1),...,i(σ,δ-1),其中δ表示索引值,索引值最大的是imax,构建网格时,计算第σ层第δ个点的索引值i(σ,δ):

其中,n表示每个层的点的个数;

构建网格的时候,先创建四边形,由两个逆时针排序的三角形组合而成,计算第ψ层第ρ个四边形quad(ψ,ρ)的索引值:

quad(ψ,ρ)={(i(ψ+1,ρ+1),i(ψ+1,ρ),i(ψ,ρ)),(i(ψ+1,ρ+1),i(ψ,ρ),i(ψ,ρ+1))}(12)

对于所有创建好的四边形quad(ψ,ρ),创建所有三角形的集合其中ψ是层的个数,ρ是每层点的个数,每层的半径rψ=ω*rψ-1,其中ω是相邻层之间的缩放比例;

不同层之间y值y=λ*(||sψ-sψ-1||),其中||sψ-sψ-1||表示第ψ和ψ-1层在图像中的y轴方向的距离,λ表示每个像素对应的三维空间的尺寸单位;每个索引值i(σ,δ)对应的点的坐标如公式(13)所示:

步骤8、纹理映射和三维模型格式输出,实现三维建模

从步骤1中得到遮罩图和前景图,结合opencvsharp中的copyto方法对前景图进行前景区域提取,得到前景区域后再对它进行预处理;对前景区域使用图像形态学膨胀和腐蚀算法处理其边界,对非前景区域使用平均像素值进行填充,最后得到的前景区域即是纹理贴图;

将步骤7中得到的三维模型的每个点的坐标映射摄像机最远面的二维空间中去,再对得到的二维点横纵坐标分别除以贴图纹理的宽高长度值,从而得到每个点的uv映射坐标,结合纹理贴图应用于模型显示实现纹理映射;

对三维模型的点进行平滑和降噪处理,优化面片后以三维模型格式输出,实现三维建模。

本发明基于用户输入的单张图片,通过图像分割获得前景和背景,并进行识别和检测前景中的基、层、帽边四个结构元素,利用层式建模和曲线morphing的建模方法进行三维重建,最后网格化、映射纹理和三维模型格式输出,最终实现三维建模。本发明与现有技术相比具如下优点:

(1)只需要用户输入单张图片和简单的用户交互就可以实现三维重建,避免了多张图片建模的庞大的计算量和复杂的操作。

(2)实时性好,计算量较少,不存在延迟等问题。

(3)可视化效果好,根据数据的信息实现相应的可视化效果,用户“所用即所得”。

(4)稳定性较强,程序具有较强的鲁棒性。

附图说明

图1是本发明的流程图;

图2是本发明中物体结构示意图;

图3是本发明中立方体标定示意图;

图4是本发明分解“左右侧”示意图;

图5是本发明中帽结构创建示意图;

图6是本发明中层结构网格化示意图。

以下结合附图和具体实施例对本发明做进一步详述。

具体实施方式

如图1所示,本发明一种基于单张图片的三维建模实现方法,具体包括如下步骤:

步骤1、输入单张图片和图片分割

基于unity3d开发平台,利用渲染纹理(简称rtt)来实现图片文件的显示,同时利用opencvsharp读取本地文件,保存为mat类型,通过tobytes方式转换成byte数组类型,再转换成texture2d类型,即可显示在窗口中;

图片分割包括前景和背景的分割,利用前、背景之间纹理信息和边界信息的差异,结合少量的用户交互,实现前景分割,得到并保存需要的遮罩图、前景图和纹理信息;

步骤2、结合步骤1中的遮罩图,对步骤1中分割出的前景内容进行轮廓和特征点的检测

使用边缘检测算子对建模对象进行轮廓检测,通过标定轮廓每个点的贡献值,递归删除贡献值小于阈值范围的点其中k(px)是点px的贡献值,其中β是两向量的夹角,l是向量的长度,px-1,px,px+1表示点,pxpx+1表示的是向量。不断演绎出前景图片中不同层的轮廓,移除贡献值小于阈值范围的点,剩余的轮廓点作为特征点(关键点),并构成特征点集合p;

步骤3、子级轮廓的提取、对称轴提取和对称轴的曲线拟合

(3)子级轮廓提取

对建模对象进行轮廓检测的过程中会检测出多层级的轮廓集合c:

c={ci|ci={pi,j|j∈[0,m-1]},i∈[0,n]},其中,pi,j是第i个轮廓ci第j个点的坐标,m表示轮廓的索引值,n是轮廓上点的索引值;

首先,选择特征点集合n表示集合p点的个数,xi和yi是点pi的横纵坐标值,特征点集合p对应的轮廓ci,根据对应的pi点分解成多个边a表示特征点集合p中某个特征点的索引值,b表示a所对应的特征点后一个特征点的索引值;

分解后轮廓集合c的表达式为其中m表示轮廓的个数,ci表示第i个轮廓,a,b,c,...,f均是索引值;

选择边进行组合,但是需要考虑每组边的顺序问题,本发明采用逆时针顺序,通过计算每条边起始点之间的欧式距离值的大小,如线段ab和线段cd,分别计算|ac|、|ad|、|bc|和|bd|的长度,取其中的最小值如|ab|,则两线段的连接顺序是b->a->c->d或者d->c->a->b,因为轮廓点的连接顺序默认逆时针方向,所以线段ab具有方向,如果ab是逆时针方向,则连接方向是d->c->a->b;否则,连接方向是b->a->c->d;确定好连接顺序和方向后,通过迭代完成子级轮廓连接和提取;

(2)使用基于轮廓逼近的中轴剪枝算法进行对称轴提取

首先,使用最小二乘法贝塞尔对轮廓边缘进行曲线逼近,如公式(1)所示:

其中,p0,p1,p2,p3,pi表示点,s表示逼近后的曲线,ti∈[0,1],ε表示轮廓点的个数;

(3)同时使用最小二乘法进行对称轴f(x)的曲线拟合,如公式(2)所示:

f(x)=a0+a1x+a2x2+...+akxk(2)

其中,k表示k次多项式,a0,a1,a2,...,ak表示多项式系数;

步骤4、创建基(base)、帽(cap)、层(layer)、边(side)四个元素

(1)创建基结构

创建基(底面)时需要结合用户操作,如图2所示,若建模对象是立方体,则在立方体基标定时,用户点击a、b、c三处,通过三维空间的逆变换获得相应的空间坐标,设定b点的三维空间坐标z值小于a点的z值且ab之间的深度距离φ是定值,结合a、b点所在的图像坐标的位置,得出公式(3):

其中,sa和sb是点a、b的图像坐标,三维空间点a(xa,ya,za),b(xb,yb,zb),c(xc,yc,zc),根据如图3所示,得到c点的z值zc:

若建模对象是圆形时,则在进行圆形基标定时,用户让底面圆形按照固定轴进行旋转,当旋转后的椭圆形投影图像和实际图片中的图片的投影相吻合时释放鼠标,根据旋转角度θ,即可获得相应的旋转矩阵;结合gui功能,通过鼠标绘制出帽在三维空间的线条形状,通过贝塞尔曲线,进行添加、删除、移动锚点和控制杆的操作,实现三维空间位置属性的调整;

在基标定完成后,对基进行三角剖分,以及将基进行网格化;

(6)创建边结构

在步骤2中,检测到输入图片的前景内容的轮廓,即得到了该建模对象的边缘信息,使用点集来表示轮廓,同样,也使用点集来表示边结构其中,s表示边结构,xi,yi表示边结构上所有点的坐标值,τ表示边结构点的个数,由图4左图中的结构可知,由于边是轮廓点集c去掉基和帽剩余的点的集合,用来表示帽的点集,其中k表示点的个数,ti表示帽上的某点,那么得出公式(5),其中n表示轮廓中点的个数,q表示基结构点的个数,使用base表示基结构:

根据步骤3中的对称轴提取和拟合得到的对称轴f(x)曲线,将边结构分解为两侧点集pleft={pa,...pb},pright={pb,pb+1,...pa},如图4中右图所示,其中pa是边结构起点,pb是边结构上的某个点,对任意边结构上的点pi=(xi,yi),带入公式(2),如果满足||f(xi)-yi||=0,说明该点pi在对称轴f(x)曲线上,这种情况几乎不存在,所以本发明选择忽略不计;如果满足||f(xi)-yi||≠0,则该点pi在对称轴f(x)曲线的“左右侧”(实际操作中情况可能不尽相同,本发明以“左右侧”做介绍),当||f(xi)-yi||<0时,(本发明从水平由左至右的方向认为),该点pi在对称轴f(x)曲线的左侧,当||f(xi)-yi||>0时,该点pi在对称轴f(x)曲线的右侧,根据每个点pi的计算结果,依次添加到相应的两侧点集pleft和pright中去,最终的边结构可简化用公式(6)表示:

(7)创建帽结构

本发明中基于基结构而进行帽结构的创建,当建模对象的基结构和帽结构具有相同的结构时,帽结构默认是基结构的复制;若不具有相同的结构的情况下,需要对帽结构进行提取,包括进行边缘检测和平滑处理,但考虑到大多数情况下帽结构的位置是位于图片的顶部,对于复杂图片帽结构的轮廓信息很能被分割开来,因此需要结合用户操作,沿着帽结构进行移动,通过算法自动分割出帽结构二维空间的轮廓,如图6中c2所示,c1是由底面基结构复制得到并映射到二维空间中的轮廓,轮廓c1上任意点p0、p0点对应到c2上的点p1和c1的中心点center在一条直线上;为了得到c2在三维空间的坐标,并且c1和c2的三维空间图形是在同一个平面上,c1的三维空间表示为vc1,c2的三维空间表示为vc2,p0、p1和center的三维点表示分别为v0、v1和vcenter。定义三维空间到二维空间的映射关系表示符号为→,例如vc1→c1,v1→p0,由于p0、p1和center在一条直线上,则v0、v1和vcenter也在一条直线上,将v0沿着直线向vcenter等间距d运动到v',将v'→p',计算此时p'的二维坐标和p1坐标是否近似相等,不相等的话v0继续运动,相同或在阈值误差范围内,记录当前v'点的坐标为v1空间坐标;同样,计算vc1上面所有点沿着vcenter方向等距运动到vc2对应的v'点,再将v'映射到二维空间p',并保证p'和c2上对应的点近似相等,即可求解出帽结构的三维空间坐标;

(4)创建层结构

层结构的创建是基于步骤5点对的创建,且层的基本形状取决于基平面和帽结构;例如,当建模对象是圆柱形的时候,基结构和帽结构都是圆形,其中基平面是圆形的面,所以层结构也是圆形;如果基平面是圆形面而帽结构是三角形,那么层结构的形状是两者之间的过渡形状;

在本发明中,需要创建多个层结构,因此,每个层结构在图像坐标系下会有“相对变化”(平移、缩放、旋转),而“相对变化”取决于步骤5中点对的位置、旋转角度和缩放尺度;

通常情况下,计算点对的中心点坐标、缩放比例和旋转角度,将基结构中心复制和“相对变化”到该中心点坐标,形成此中心点所在的层,同理,其他层也是同样处理;

层结构的形状取决于基结构和帽结构,层结构的数量取决于边结构,边结构指定了层的方向(图像坐标系下y轴的方向向量)的空间位置,点对决定了层的缩放比例s、旋转角度θ,层结构f(l)由公式(7)表示如下:

步骤5、创建点对(pointpairs)

根据步骤3中曲线逼近得到的对称轴f(x),将建模对象的轮廓均匀分解为两侧点集pleft、pright,其中,pleft={pa,pa+1,...,pb},pright={pb,pb+1,...,pa},pa是轮廓起点,pb是轮廓上的点,对点任意轮廓上的点pi=(xi,yi),带入公式(2),如果||f(xi)-yi||=0,说明点pi在曲线f(x)上;如果||f(xi)-yi||≠0,点pi在f(x)曲线的左右侧;

创建点对需要对对称轴f(x)进行均匀采样,对公式(2)计算一阶导数即是点pi的切线方向向量利用方向向量和点pi,创建经过点pi的法线且法线函数其中pi=(xi,yi),使用||n(xi)-yi||≠0将点集pleft、pright分别分成两侧,分别计算每侧点集到法线的距离最短的点p1left、p2left、p1rightp2right,其中p1left和p2left在法线的同侧,p1right和p2right在法线的同侧,点即是逼近相交法线的轮廓点,同理计算另一侧的轮廓点这样得到的两个轮廓点组成一组点对pp=(p1,p2);

步骤6、曲线morphing

步骤5中创建的任意相邻的层结构称为相邻层,使用相邻层之间的变换,解决从一个曲线变换到另一个曲线,从而生成中间变换过程,模拟过渡效果,从相邻层中获得x-z平面的起始点集c1=(x1,y1)...(xn,yn)和目标点集ct=(x1,y1)...(xn,yn),首先对起始点集c1和目标点集ct做采样处理,采样距离是δ,即其中i∈[1,m-1],表示采样后的点集,u表示的个数,分别表示采样后点i的横纵坐标值,de表示两点之间的距离;

利用编辑距离算法,构造字符串集合z=z1...zm-1,其中pi=(xi,yi),pi+1=(xi+1,yi+1),使用距离函数来衡量两条曲线之间的不相似度,使用公式(8)求解出编辑矩阵:

假设是从的某个中间过程,根据公式(9),推理可得公式(10):

p(t)=(1-t)p1+tp2,t∈[0,1](9)

通过取值的不同,可以生成k个中间层;

步骤7、相邻层间三维建模,创建网格

步骤6中得到层call=c0,c1,...,cm-1,其中c0是基结构且c0已经网格化,其网格化后的面的索引值是i(m,0),i(m,1),...,i(m,n-1),其中索引值最大的是imax,构建网格时,如图6所示,计算第m层第n个点的索引值i(m,n):

其中,n表示每个层的点的个数;

构建网格的时候,先创建四边形(如图6中的a,d,c,b),由两个逆时针排序的三角形组合而成,计算第m层第n个四边形quad(m,n)的索引值:

quad(m,n)={(i(m+1,n+1),i(m+1,n),i(m,n)),(i(m+1,n+1),i(m,n),i(m,n+1))}(12)

对于所有创建好的四边形quad(ψ,ρ),创建所有三角形的集合其中ψ是层的个数,ρ是每层点的个数,每层的半径rψ=ω*rψ-1,其中ω是相邻层之间的缩放比例;

不同层之间y值y=λ*(||sm-sm-1||),其中||sm-sm-1||表示第m和m-1层在图像中的y轴方向的距离,λ表示每个像素对应的三维空间的尺寸单位;每个索引值i(m,n)对应的点的坐标如公式(13)所示:

步骤8、纹理映射和三维模型格式输出,实现三维建模

从步骤1中得到了遮罩图和前景图,结合opencv中的copyto方法对前景图图进行前景区域提取,得到前景区域后再对它进行包括降噪、调整亮度和对比度、饱和度等预处理;为了获得更好的纹理效果,需要对前景区域使用图像形态学膨胀和腐蚀算法处理其边界,对非前景区域使用平均像素值进行填充,最后得到的前景区域即是纹理贴图;

将步骤7中得到的三维模型的每个点的坐标映射摄像机最远面的二维空间中去,再对得到的二维点横纵坐标分别除以贴图纹理的宽高长度值,从而得到每个点的uv映射坐标,结合纹理贴图应用于模型显示实现纹理映射;

面片优化指的是对三维模型的点进行一定程度平滑和降噪处理,从而达到优化面片的效果,以三维模型格式输出,实现三维建模。

以上所述,并非对本发明的技术范围作任何限制,故凡是依据本发明的技术实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

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