三维彩色模型

2024-06-22

三维彩色模型(精选四篇)

三维彩色模型 篇1

最初出现的一维条码由于承载信息能力有限,人们又设计出二维条码,它使用的是二维坐标系,空间上的点可以通过(X,Y)来表示,即条码在横向X轴和纵向Y轴都含有信息。但是随着条码应用范围的进一步扩大,其承载信息的能力已经不能满足人们的要求,于是人们又提出三维条码的理念,用彩色代替原始二维条码中的黑白色,这样由颜色衍生出来的Z轴也包含大量的信息,使用的是三维坐标系,空间上的点可以通过(X,Y,Z)来表示[1]。

在所有类型的二维条码中,PDF417条码的应用范围最广并具有很高的认可度。它属于堆叠式二维条码,由3到90行的截短一维条码堆叠而成。PDF417条码的密度会随着行数的增加而增加,对于低密度PDF417条码和高密度PDF417条码的识别方法是不一样的,因为当PDF417条码的密度较低时,光学系统点扩展函数的影响可以忽略;反之,当PDF417条码密度较高时则不能[2,3]。由于现在人们要求PDF417条码能够承载更多的信息,因此PDF417条码的密度越来越高,这给条码的识别带来很大的难度。由于三维条码使用的是三维空间,即使条码密度较低,其容纳信息的能力也非常强。因此本文结合三维条码理论,设计彩色三维PDF417条码,并重点研究三维PDF417条码的识别。

2 彩色三维PDF417条码的设计

三维PDF417条码的设计主要涉及编码方式和颜色的选取,下面对这两部分做具体的介绍。

2.1 编码方式的选取

条码的编码方法分为两种:模块组配法和宽度调节法,两种方法的编码容量都会随着模块宽度的增大而增大。但是实验表明[4,5]:当模块宽度小于等于7时,宽度调节法的编码容量更大;当模块宽度大于7时,模块组配法的编码容量更大。随着条码应用范围的不断扩大,人们要求不断增加条码的编码容量,所以模块宽度常常大于7,而这时模块组配法的编码容量更大,因此本文选择模块组配法编码方式。

2.2 颜色的选取

按照三维条码理论,颜色的选取主要有两种方法:第一种方法是根据同类颜色、不同灰度值进行选择,即将黑色分成不同的等级,如深黑、浅黑、较深黑等等颜色,这种方法不仅对识别设备要求很高,更重要的是条码的抗干扰性能大大降低,倘若条码在流通的过程中受到污损、褪色等情况,就不能正确识别条码,所以此方法具有很强的局限性;第二种方法是根据颜色的不同进行选择,这样可以很好地克服第一种方法的缺点[4,5]。因此本文选取彩色来代替二维条码中条的颜色,空的颜色仍然采用白色。设计的条码如图1所示。

2.3 比较

下面对三维PDF417条码和二维PDF417条码进行比较,以编码容量作为对比的标准。

设一个三维PDF417条码字符的模块数为n,条和空的对数为k,则所能表示的码字数为:

(1)式中p表示条的颜色种数,q表示空的颜色种数[4,5]。

设一个二维PDF417条码字符的模块数为n,条和空的对数为k,则所能表示的码字数为[4,5]:

由(1)式除以(2)式得:

假设p=6,q=2,可得:

3 三维PDF417条码的识别

对于三维PDF417条码的识别,本文采取两种识别方法:第一种方法是把三维PDF417条码转化为二维PDF417条码进行识别;第二种方法是对三维PDF417条码直接进行识别。其识别过程如图2和图3所示,两种方法的主要区别在于第二种方法没有图像预处理环节。

3.1 图像预处理

图像预处理是第一种识别方法必不可少的一个环节,其主要包括以下三个环节:彩色条码灰度化、图像二值化、去噪,其具体的流程如图4所示。

3.1.1 彩色图像灰度变换

彩色图像灰度变换常用三种方法:加权法、平均法、最大值法。

(1)加权法:有实验证明:人眼对不同颜色的敏感程度是不同的,对绿色最强,对蓝色最弱,在RGB空间中,对R、G、B以不同的权值进行加权平均,如式(5)所示:

(5)式中f(i,j)为灰度值输出。

(2)平均法:在RGB空间中,对R、G、B三分量的亮度求均值,如式(6)所示:

(6)式中f(i,j)为灰度值输出。

(3)最大值法:在RGB空间中,对R、G、B三分量的亮度求最大值,其式(7)所示:

(7)式中f(i,j)为灰度值输出。

以上三种方法处理结果如图5、图6、图7所示。

最大值法处理效果如图7所示,当以R、G、B三分量亮度最大值作为灰度值输出,使得输出的灰度图像偏亮,这不利于灰度图像二值化;均值法处理图像效果如图6所示,当以R、G、B三分量的亮度均值作为灰度值输出,使得输出的灰度图像整体亮度比较均匀,可以满足图像二值化的要求,但是如图5所示的加权法处理效果更好,图像与背景之间非常明显,更加有利于图像二值化,因此本文选取加权法进行彩色图像灰度化。

3.1.2 灰度图像二值化

灰度图像二值化常采用阈值化处理,即选择一个合适的阈值,将灰度图像转换成二值图像,阈值选取的好坏,对图像和背景的分离具有重要的影响。现在普遍采用直方图技术来选取阈值,对于灰度PDF417条码图像来说,在二值化的时候,可以将条码中的条作为特征物图像,空作为背景物图像;或者将条码中的空作为特征物图像,将条作为背景物图像[6]。

如图8所示的二维PDF417条码直方图,可以发现有两个峰值较大,则将两个较大波峰的中间位置定义为阈值,即谷底的最小值[6]。灰度图像二值化后,所得结果如图9所示,这里阈值取为0.82。

3.1.3 去噪

现在普遍采用滤波器来消除噪声,滤波器种类比较多,如空域低通滤波器,频域低通滤波等等,如图10和图11所示。

从图10和图11可以发现,滤波后条码图像显得比较模糊,这不利于条码边缘检测,如果想保证边缘检测的正确性,必须保证图像与背景之间的清晰。所以本文没有采用滤波平滑的方法来消除噪声,而采用受控形态学中膨胀和腐蚀算法[7]。

受控形态学的原理比较简单,主要是通过指定一个约束量S来控制腐蚀和膨胀运算的程度,因为在一般膨胀和腐蚀算法中,并没有具体指出膨胀和腐蚀的程度,这样很难保证膨胀和腐蚀运算的效果,其处理结果如图12和图13所示。由于受控形态学中的受控腐蚀和受控膨胀对于噪声的敏感度比较低,因此本文采用受控腐蚀和受控膨胀来对噪声进行平滑处理,其处理结果如图14和图15所示。

通过比较图9和图15,可以发现条码图像边缘的模糊程度小了很多。通过比较图10、图11、图12、图13、图15可以发现,经滤波器处理后的图像,不仅背景灰暗,且边缘不清楚,这对于之后边缘检测会产生很大的负面影响。经一般腐蚀和膨胀处理后,图像产生很大失真,显然不适合噪声的消除。但是经过先受控腐蚀再受控膨胀处理后,不仅背景清晰,最重要的是图像失真程度非常小。因此本文采用先受控腐蚀后受控膨胀来消除噪声。

3.2 颜色空间的选择

彩色图像边缘检测都需要基于一定的颜色空间,如RGB、HSV颜色空间。一般情况下,数字图像是以RGB形式存在。但是实际情况下,人们为了需要,通常把RGB空间转化为其他形式的空间,但是在转化的时候,容易受到噪声的影响[8]。例如将RGB空间转化为HSV空间,再还原为RGB空间,结果如图17所示。

通过比较图1和图17,可以发现,如果对颜色空间进行转换,会造成彩色图像中某些信息丢失,而且转换后的图像对噪声十分敏感,因此本文仍然选用RGB颜色空间。

3.3 旋转条码

商场购物或者验证发票时,经常出现条码偏移和倾斜的现象,为了对条码精确识别,则必须在识别之前,将条码旋转到水平状态。本文采用Hough算法[9]旋转条码。

旋转条码的时候,由于受到噪声、污损等外界因素的影响,彩色条码图像中条的颜色区域会出现少量麻点,因此必须对受到干扰的区域进行插值。现在出现的插值方法主要有:最邻近插值、双线性插值、三次卷积插值、Hermite插值等,本文采用先三次卷积插值再Hermite插值。

旋转后,最邻近插值法效果最差,旋转得到的条码图像边缘非常粗糙,如图18所示;双线性插值旋转效果次之,如图19所示;三次卷积旋转效果最好,如图20所示;同时由于双线性插值具有低通性质,因此在高频的时候,条码图像会产生失真,会使图像边界更加粗糙;三次卷积法可以有效克服最邻近插值和双线性插值的缺点。但是在PDF417条码层与层交界处,旋转效果仍然不是很好,因此本文利用两点三次Hermite插值对每层交界处进行平滑,如图21所示。旋平后的二维条码和三维条码如图22和图23所示。

3.4 分割单行条码[6,11]

由于PDF417条码是由多行一维条码叠加而成,因此在识别的时候必须分割出每行条码。利用Sobel水平边缘检测算子f(x,y)来提取PDF417条码水平边缘,再进行水平投影,如图24所示。

由图24可知:图像的峰点对应于条码的行边界,这样行边界的计算就转化为峰点数量的计算。

下面利用统计方法来计算条码的行边界。

设PDF417条码每列的行边界数为K,记K(28)k0,k 1,(42),k i,(42),kM-1,ki表示扫描到PDF417条码的第i行时,遇到f(x,y)(28)0的次数。由于条码行数取值范围为:3(27)R(27)90,因此K(K(28)2R(10)1)的取值范围为:7(27)K(27)181,ki出现的概率记为pi;

p(28)mpaxp0,p1,(42),pj,(42),j(7,181)(8)

若p(28)p18,则说明PDF417条码的行边界数为18。则得行数R为:

将条码旋转到水平状态后,可以通过条码的上下边界方程,来计算PDF417条码图像的高度H'。则行高如式(10)所示:

接下来就可以根据行高来分割单行条码。条码图像分割结果如图25所示。

3.5 边缘检测

3.5.1 二维PDF417条码的边缘检测

条码边缘检测就是采用某种算法,将条码图像中的条和空之间的分界线提取出来,常用的边缘检测算法有Roberts、Sobel、Log、Prewitt、Canny等[11~14]。

Log算子边缘检测效果如图29所示,条码二值图像的边缘大部分都没有检测出来,明显不符合要求;Sobel和Prewitt算子边缘检测效果如图26和图28所示,其检测效果比Log算子稍好,但是仍然有部分边缘没有检测出来;Roberts算子边缘检测效果如图27所示,从效果图可以发现,在检测的时候,产生了大量的伪边缘;Canny算子边缘检测效果如图30所示,检测效果不仅边缘清晰,伪边缘很少,甚至没有,故选取Canny算子进行边缘检测。

3.5.2 三维PDF417条码的边缘检测

除了将彩色条码图像转化为灰度二值图像外,还可以直接从彩色条码图像入手。在对一般的彩色图像进行边缘检测的时候,如果出现部分边缘丢失,不会对结果产生很大的影响,但是彩色三维PDF417条码图像则不同,因为条码图像中的颜色携带着大量的信息,如果在边缘检测的时候出现漏检,就会对结果产生很大的影响。下面用传统Canny算法来直接检测彩色三维PDF417条码图像边缘,如图31所示。

从图31可以发现,直接利用传统Canny算法检测条码边缘,得到的结果并不是十分的理想,因此本文对传统Canny算法进行改进,传统Canny算法共有四个步骤[11~14]:(1)利用高斯滤波器平滑图像,去除图像噪声;(2)利用一阶偏导的有限差分来计算梯度幅值和方向;(3)对梯度幅值进行非极大值抑制;(4)用双阈值算法检测并且连接边缘。

现在对第二步、第三步进行优化。

(1)梯度幅值和方向的计算

首先,彩色图像仍然以RGB的形式存在,在点(i,j)的8个邻域内,通过对x、y、45、135方向上求偏导,来计算点(i,j)的梯度值和方向。其具体过程如下:

x方向偏导数Rx(i,j)、Bx(i,j)、Gx(i,j)、Py(i,j):

同理可得y方向上Ry(i,j)、By(i,j)、Gy(i,j)

45°方向偏导数R45(i,j)、B45(i,j)、G45(i,j)

135°方向偏导数R135(i,j)、B135(i,j)、G135(i,j)、

则像素的梯度幅值P(i,j)为:

方向为(i,j):

(2)在第一种方法中,是把彩色图像转化为灰度二值图像,这样图像与背景之间非常清晰。如果直接用传统的Canny算法对彩色三维PDF417条码进行边缘检测,由于图像与背景之间不是那么清晰,因此边缘检测效果不是很好,效果如图30所示,因此阈值选取的好坏对边缘检测有着至关重要的作用。由于传统Canny算法采用双阈值进行判别,这样容易造成漏检或者产生伪边缘,为克服这缺点,本文采用局部动态阈值选择的方法。

已知原梯度图像Y,Y经过非极大值抑制之后得到的图像为X,则阈值选择的过程如下:

(1)计算X中各个候选点的双阈值。设x(i,j)是X中的一点,Y中存在一个中心为Y(i,j)的正方形,其宽度为a,点x(i,j)双阈值的选取与正方形内梯度分布存在紧密的联系,可以根据PDF417条码密度的大小调整a的大小,a的取值范围为[30,50],在所选正方形区域梯度直方图中,像素点个数的计算是按照梯度递增顺序进行累计[15]。假设像素点的总个数为Z,高阈值用T2表示,低阈值用T1表示,当累计和占Z得百分比p[70%,90%]时,则为T2,T2的40%为T1。

(2)假设X中候选边缘点的梯度值为T,该点的高阈值为T2,低阈值为T1,当T(29)T2时,则候选点为边缘点;当T(27)1T时,则候选点不是边缘点;当T1(27)T(27)T2时,且与保留边缘点的8个邻域相连,该点为边缘点,保留该点[15]。实验结果如图32所示。

4 结论

本文采取了两种识别方法,下面对它们的识别效果进行比较,主要不同之处归纳如下:

(1)从识别效果来看:第一种方法的边缘检测效果非常好,如图30所示,几乎没有任何的伪边缘;第二种方法的边缘检测效果也不错,如图32所示,产生了少量的伪边缘。所以第一种方法识别效果更好;

(2)从识别效率来看:第一种方法的识别速度要比第二种方法快,因为经过改进的Canny算法运行速度比较慢;

三维彩色模型 篇2

缸体零件图如图56所示,

图56 缸体零件图图形分析该缸体零件图形由缸体、座、腔体以及缸体顶上两个半圆凸台和孔所组成。从左主视图中可看出缸体和其内的腔体均为回转面生成,底座为长方体并有一个矩形通槽,四角圆角半径为R=10mm,并且有4个沉孔和2个定位孔组成。其创建的操作方法如下:(1)利用“旋转”命令,将主视图右边的凸台、以及下面座图形去掉,旋转生成圆形缸体和内部直径为40和35mm的腔体造型。(2)将左视图中的上面圆的图形去掉,然后,连接上边线,拉伸生成座的造型。(3)将沉孔以中心线为准绘制成沉孔图形的一半封闭图形,旋转求差生成沉孔造型。再利用引性阵列生成其余3个沉孔。具体的创建操作如下:(1)除轮廓线(粗实线)图层打开,关闭其他所有的图层,或者保留可见轮廓线,而将其余全部删除。图57 修改后的图形(2)绘制封闭的图形。 将修改后的图形经过添加线段而构成封闭和图形后,然后,生成5个面域,如图57所示。(3)旋转生成缸体和腔体造型。 单击“建模”工具条上的“旋转”按钮,选择“图形1”,以图形最下边的线段为旋转轴,按回车键后,创建出如图58所示的缸体和腔体造型。图58 创建缸体造型                       图59 创建底座造型(4)创建底座造型。单击“建模”工具条上的“拉伸”按钮,选择“图形4”,输入拉伸值为60mm,创建底座造型如图59所示。(5)旋转生成实体。单击“建模”工具条上的“旋转”按钮,分别选择“图形2”、“图形3”、“图形5”,以各自的旋转轴线旋转生成回转实体。如图60所示。图60 旋转生成实体(6)圆形阵列。 单击“修改”工具条上的“阵列”按钮,在“阵列”对话框中选择“环形阵列”类型,以缸体的原心为环形阵列的中心点,设置数量为“6”,选择图形3生成的旋转实体,单击“确定”按钮,生成环形阵列。(7)运用“差集”命令,先选择缸体实体,回车后,再选择环形阵列创建的6个圆柱体,回车将6个圆柱体减去后,生成缸体前端面上的6个M6深14mm的螺纹底孔造型如图61所示。图61 创建前端螺纹底孔               图62 调整缸体至合适的位置(8)创建缸体上的两个半圆形凸台。其操作如下:① 调整视图方向。单击“视图”工具条上的“西南等轴测”按钮,然后,单击“动态观察”工具条上的“自由动态观察”按钮,旋转视图至一个合适的位置如图62所示的位置,② 建立UCS(用户)坐标系。 在命令行中输入:UCS 按回车键,再输入:N 新建用户坐标系,再按回车键,输入:3 即用3点确定坐标原点。用鼠标捕孔的中心点,将坐标原点设置在圆心处,如图63所示。图63 建立UCS坐标系                     图64 绘制图形③ 绘制图形。以坐标原点为圆心,画一个半径为15mm的圆,绘制的图形如图64所示。④ 创建一个面域。 用“面域”命令,选择图形,回车后,生成一个面域。⑤ 将生成的面域和旋转生成镜像至右边。如图65所示。提示:镜像可在前视平面内进行。图65 镜像实体             图66 创建半圆形凸台造型⑥ 拉伸面域创建半圆形凸台。选择左边的面域向下拉伸4mm。 再选择右边的面域向下拉伸15mm,再利用“并集”命令,创建缸体上左、右两边的半圆形凸台造型,如图65所示。⑦ 利用“差集”命令,将旋转生成的实体从缸体中减去,创建孔造型,如图67所示。移动前                移动后    图67 完成缸体部分的创建               图68 实体的平移(9)创建底座上的沉孔造型的操作:① 移动图形5旋转生成的实体。利用“M”(移动)命令,将实体向前移动10mm,结果如图68所示。② 实体的矩形阵列。单击“修改”工具条上的“阵列”按钮,选择“线性”阵列类型,设置参数如图69所示。选择移动后的实体,单击“确定”按钮,创建的实体线性阵列如图70所示。③ 利用“差集”命令,将线性阵列后的4个实体从底座上减去,创建4个沉孔造型。④ 底座4条垂直边圆角,圆角半径R=10mm,完成的底座造型如图71所示。图69 设置矩形阵列的参数图70 生成矩形阵列                     图70 完成底座的创建(10)缸体与底座的合成操作:① 在“前视平面”内,利用“RO”命令,将底认旋转90度。② 标注尺寸后,以标注的尺寸为移动的依据,如图71所示。③ 以缸体右边的边线为基准,移动后完成整个缸体的创建,如图72所示。图71 标注的尺寸 图72 缸体零件实体模型

基于彩色结构光的实时三维重建 篇3

随着计算机硬件的不断发展, 非接触式光学三维重建越来越受到重视。目前, 光学三维重建的方法主要有:双目视差法、单激光线扫描法、正弦光栅相位测量法和傅里叶变换法等。双目视差法的难点在于寻找左右两副图像的匹配点, 算法复杂度很高, 而且答案往往不唯一, 难以做到较好的效果和实时性。单激光线扫描法是当前最成熟、精度最高的方法, 其缺点是需要将激光线环绕物体一周才能形成三维模型。正弦光栅相位测量法则需要使用不同相位照射的图像信息, 无法做到实时性, 而且解相位的难度很大。傅里叶变换法从单幅图像就可以得到三维信息, 但其精度较差, 且同样存在解相位的难题。

实时三维重建需要满足以下特定的要求:

(1) 算法效率高, 处理数据少, 满足实时性要求;

(2) 能从一幅图像数据中还原目标的三维信息;

(3) 算法对噪声有良好的适应能力, 因为动态图像的信噪比比静态图像低得多;

(4) 无交互性, 正弦光栅相位测量法和傅里叶变换法都需要人工参与修正解相位结果, 而实时三维重建没有人工修正的时机。

在实时三维重建领域中, 比较成功的是Harvard大学Song Zhang领导的课题组所做的工作[1], 他们使用了复杂的硬件设备[2], 如高速摄像机、旋转分光器等, 使用硬件设备在短时间内 (小于25ms) 采集三幅不同相位的图像, 应用正弦光栅相位测量法, 进行三维建模。本质上, 这种方法仍然使用了静态图像的三维重建方法。

本文提出的基于彩色结构光[3]的RRCS以彩色结构光为载体, 将位置信息投影到目标表面, 摄像机采集被物体扭曲的彩色图像数据, 最终快速还原出目标的三维形态。实验表明, RRCS具有较好的实时性 (16帧/秒) 、正确性 (错帧率少于3%) , 对设备要求较低 (实验所用PC的CPU为P-M 1.8G, 普通投影仪和摄像头) 。

1 彩色结构光三维重建的原理

1.1 结构光测量原理

物体表面被彩色结构光照射后, 从光源位置来看, 仍为规则的彩色结构光带。从其它位置观察, 彩色结构光带被物体表面所扭曲, 通过偏离光源一定距离的彩色CCD摄像机获取被扭曲的结构光带后, 根据物体表面的颜色分布就可计算出物体的三维立体形状[4]。三维重建光路图如图1所示。

P为光栅投影仪的位置, C为摄像机的位置, Ep、Ec分别是两者的光心, 它们在同一平面上。如果没有物体, 投影仪投射的某条光栅光束将投射在参考平面上的A点;如果放入了物体, 则光束将投射在物体表面的H点上。AB是光栅条纹所产生的位移, C、H和B在一条直线上。ΔEcEpH和ΔBAH是相似三角形, 满足公式 (1) :

undefined

光心到参考平面的距离L是已知的, 投影仪和摄像机光心的距离D也是已知的, 因此点H的高度ZH可由条纹位移AB根据下面的公式 (2) 计算得出, AB则可由摄像机捕捉到的图像数据中的条纹计算出来。

undefined

1.2 彩色编码方案

彩色结构光的编码方案有很多种, 也有很多这方面的研究, 文献[3]分析了各种编码方案的周期、宽度, 以及测量高度等等。本文提出了一种新的彩色编码方案——无阴影基线彩色编码, 其特点是:对阴影进行了区别, 加入了基线位置的标识。阴影的处理一直是结构光三维重建中的难点, 利用这种编码方法可以更有效地处理阴影问题。同时, 动态图像中的零相位的位置是变化的, 通过这种编码还可以确定零相位的位置。

图2为编码方案示意图, 分为左右两部分。左边的编码是6条光带所组成的周期性循环, 按GWRWBW的模式重复。右边是6条光带组成的周期性循环, 按RWGWBW重复。特别地, 中间的交汇处是GR两色, 标识了左右两边的分界线, 它也是动态三维重建中的基线, 不动的参考平面。

本文的彩色编码弃用了黑色, 而在文献[3]的方法中, 黑色是分隔两个色带的缓冲。弃用黑色是为了正确处理阴影部分。投影仪投出的强光照射到物体表面, 没有照射到的部分的对比度会明显下降, 于是低亮度的点被当作是阴影, 所有阴影的图像数据都不进行处理。这样, 不仅可以减少处理的数据量, 还可以极大地简化算法, 提高正确性。

2 RRCS的三维重建

2.1 基于拓扑排序的解相位算法

正弦光栅相位测量法和傅里叶变换法[5]的难点是相位解包算法。这两种方法都使用了反三角函数, 因此它们的结果都被限制在[0, 2π) 之间, 需要使用解包算法还原真实的相位。

事实上, 可以通过彩色条纹中所携带的附加信息解决相位问题。因为每种颜色在结构光中的位置是一定的 (周期重复) , 所以可以借由它们之间的拓扑关系来确定真实的相位。这就是基于拓扑排序的解相位算法的出发点。

基于拓扑排序的解相位算法的核心是拓扑排序, 利用所识别出来的线条的位置关系, 按拓扑序以及颜色信息, 确定相位。算法的主要流程如图3所示。

一个典型的彩色边缘有向图如图4所示, 节点表示边缘的颜色, 对于任意两个节点A和B, 从A到B有边当且仅当边缘A覆盖了边缘B。在对有向图进行拓扑排序时, 寻找下一个节点的过程与经典算法不同, 经典算法是寻找一个入度为0的节点, 而本文则是寻找入度最小的节点, 这是由于误差的原因, 所形成的图并不是严格的拓扑图。值得注意的是, 可能存在多个值同为最小值, 此时, 选择最远端的节点可以极大地提高容错性。拓扑排序之后, 每个节点都记录了一个或多个颜色, 将最后一个颜色确定为这个节点的相位。算法最后生成的序列代表了彩色条纹的顺序, 将它们与无阴影基线彩色编码的条纹周期依次对应, 即可得到解相位之后的真实相位。

假设共有N条彩色边缘, 查找最小值使用堆来实现, 则算法的时间复杂度为O (NlogN) 。

2.2 点云三角网化

经处理的物体的三维信息是点云数据, 还需进行三角网化操作, 将它们转化为三角形的集合, 以便作进一步的操作, 如对物体表面贴图、平滑等等。

传统的点云三角网化采用构建Delauny[6]的方法逐点加入, 有很多成熟的算法可以借鉴。但是, 本文中的点云并非完全离散, 而是由多条点“线”所组成的点云, 直接应用Delauny算法的效果不佳, 而且效率比较低, 无法达到实时性。因此, 针对本文中的点云的特点, 设计了基于点线的快速三角网化算法, 算法的思想是:每次对两条相邻的彩色边缘s、t进行三角网化, 在两条边缘之间“织网”。 对于边缘s上的每个点P, 记录两个值:A表示边缘t上距P点最近的点, B表示最后一个把P点作为距离最近点的点。边缘s上的点P、P点的A值和边缘s上P点的下一个点作为顶点生成三角形。对于边缘s上的每个点Q, 由Q点、Q的B值和Q的下一个点作为顶点生成三角形。依此处理每对相邻的边缘即生成完整的三角形网。

上述算法需要遍历每对相邻的彩色边缘的每一个点, 因此时间复杂度为:

Oundefined

其中, Ni为彩色边缘i上的点的数量, n为彩色边缘的数量。为便于简单地估算一下算法的复杂度, 不妨假设有M个彩色边缘点、N条彩色边缘、每条彩色边缘有M/N个点, 则上式可化简为:

Oundefinedundefined

3 实验与结果

3.1 实验过程

实验所采用的三维重建的主要流程如图5所示。

其中包含了大量的预处理流程。首先, 从已标定的摄像头的数据流中获取图像数据。由于彩色CCD的随机噪声比较大, 应用中值滤波减少干扰。其次, 转化为灰度图像并应用Canny边缘识别算法。Canny是一种优秀的灰度图像的边缘识别算法, 具有定位准确、单边缘响应和信噪比高的优点。由于Canny识别出的结果中可能包含大量其它信息, 需对这些边缘进行识别, 将所需要的信息提取出来。再次, 使用RRCS算法, 得到每一条彩色边缘的相位, 并计算出三维信息。此时, 得到的数据为三维点云组成的线段集合, 应用2.2节中的基于点线的快速三角化算法, 生成三维模型。

3.2 实验环境

本文使用VC作为开发工具, Microsoft DirectX 3D作为3D平台。硬件上使用了30万像素摄像头 (640×480分辨率) 和数字投影仪 (1024×768分辨率) , 数据处理所使用的计算机的配置为:P-M 1.8G处理器、2G内存、ATI X1300 Mobile图形卡。

3.3 实验结果和分析

本文着重对脸和手进行了动态三维重建实验。脸具有丰富的动态形态, 不同部位的颜色跨度比较大, 手的面积比较小, 结构性变化大, 所以这两种测试样例比较有代表性, 能基本反映出动态三维重建的性能和效果。一个典型的测试用例的原始图像和重建模型截图如图6所示, 实验数据的综合统计结果见表1。

如图6所示, 不管是脸还是手, 重建得到的三维模型与目标基本一致, 能较好地重现目标的三维形态。手的测试数据的错帧率比脸高了54%, 这是因为手的三维变化较大, 面积较小, 容易产生光的重叠问题。而手的测试数据的平均帧数比脸高了2帧/秒, 这也是因为手的面积比较小, 因此数据量也比较少。动态三维重建的一个重要指标是错帧率, 即解包时出现误差的程度。RRCS的彩色编码使用了红、蓝、绿、白四种颜色, 颜色之间区别度高, 增强了对被测物体表面颜色的抗干扰能力。

实验数据统计表明, 程序的运行效率较高, 平均帧数可达16.7帧/秒, 比较流畅, 基本满足实时性的要求。但是对于某些实时性要求比较高的场合, 这样的速度还不够, 经过对实验的进一步分析, 发现CPU主要耗费在设备IO和三维显示上。经过计算, 在640×480分辩率下, 每帧的数据量为9.375M bit (使用RGBA格式) 。摄像头速率为30帧的情况下, CPU每秒需处理281.25M bit, 它占用了大量的CPU时间, 造成了性能上的瓶颈。由于需要维护物体三维模型的动态效果, CPU也要分配出相当的处理能力。

4 结 论

RRCS不仅可以重现出物体的三维形态, 还能捕获到相当多的细节, 动态效果比较真实, 实时性较好。基于点线的三角网化算法可以快速地将点云数据转化为进一步处理所需要的三角网数据。

RRCS具有明显的优点, 只需要一帧的图像数据就可以得到完整的三维信息, 而正弦光栅相位法需要三幅图像。RRCS只使用了边缘部分, 提高了抗干扰能力, 对物体表面的颜色和纹理不敏感。基于拓扑排序的解相位算法效率较高, 与传统的数十秒一帧的处理速度相比, 实时性能好。

RRCS也有一些固有的缺点, 比如精度较低。但是, 通过减小彩色条纹的宽度, 提高摄像头的分辨率, 也可以有效地改善重建精度。RRCS的精度低于正弦光栅相位测量法的精度, 原因在于后者的每一点都可以用来计算三维坐标, 而彩色结构光只有边缘部分参与计算。RRCS的精度也低于傅里叶变换法, 但是, 在动态过程中, 每种状态的投影图所对应的傅里叶变换一级谱的位置、宽度都不同, 从而给一级谱的自动精确抽取带来困难, 因此用傅里叶变换法测量动态物体将存在很大的误差, 最终效果并不好。

为了改进RRCS的精度, 除了提高硬件性能之外, 还可以在彩色条纹中添加中线, 从而增加有效的边缘信息, 最终提高重建精度。为了提高实时性, 可采用并行计算的方法。将算法中IO交换和依赖性较小的部分放在不同计算机中执行, 利用网络进行数据交换, 例如把相位展开和三维显示的处理交给另一台图形性能较好的计算机进行处理。利用这种方法可以显著地提高实时性能。

综上, RRCS和其它重建方法各有优缺点, 在不同的领域有不同的应用范围, RRCS可应用在三维动画、虚拟现实等有实时性要求的领域中。

摘要:提出一种新颖的基于彩色结构光的实时三维重建方法RRCS (Real-time 3D Reconstruction based on Color-coded Structured light) , 利用投影在物体表面的彩色结构光的彩色信息, 快速准确地还原相位, 计算出物体的高度, 最终重建物体的三维模型。针对RRCS的特殊性, 设计了基于拓扑排序的解相位算法, 以及针对点线的快速三角网化算法。实验结果表明, RRCS对设备的要求低, 效果较好, 具备基本的实时性能。

关键词:彩色结构光,实时三维重建,三维

参考文献

[1]Zhang S.High-Resolution, Real-Time 3-D Shape Measurement[D].Stony Brook University, 2005.

[2]Huang P S, Zhang S.Fast Three-Step Phase Shifting Algorithm[J].Ap-pl.Opt., 2006, 45:5086-5091.

[3]刘维一, 王肇圻, 母国光, 等.彩色组合编码条纹光栅轮廓术[J].光学学报, 2000, 20 (9) :1218-1223.

[4]牛小兵, 林玉池, 赵美蓉, 等.光栅投影三维轮廓测量及关键技术分析[J].光电子.激光, 2002, 13 (9) :983-986.

[5]毛先富, 陈文静, 苏显渝.改进傅里叶变换轮廓术的测量算法研究[J].光学学报, 2008, 28 (7) :1291-1295.

用于三维引擎的模型制作总结 篇4

1.模型

组成三维模型的基本单位是空间的顶点(vertices),点点连接形成边,边与边围成封闭的多边形形成面。利用三维软件建模需要很好的考虑模型各部分的拓扑结构,还有拓扑线的连续性。这样做的好处是,后期为模型贴纹理以及做动画的时候会减少很多错误的发生。模型的拓扑结构包括组成模型各个部分的父子关系,层级关系,尽量保持模型的完成性和连续性,减少不必要的模型拆分。建模时要求单个多边形的顶点数不得超过4个,以4边形为主,偶尔可以使用三角形。合理的细节也很重要,尽可能减少顶点的个数有利于模型的后期修改,还可以大幅减轻三维引擎渲染模型的系统负荷。

2.材质

考虑到Unity3D等三维引擎不支持复杂的材质(如shell materal等),在三维软件中设定的材质应使用标准材质(standard),如果必须使用一些特效,将它们烘培(bake)成纹理贴图。此外,更多特效在三维引擎中可以借助shader来实现。

3.纹理贴图

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【三维彩色模型】相关文章:

三维彩色超声诊断仪05-01

三维细观模型05-01

城乡三维模型05-19

三维模型检索06-01

三维矿井模型06-12

三维分析模型06-12

三维立体模型06-28

三维模型库范文05-21

三维实体模型范文06-01

三维模型有限元05-25

上一篇:教授方法下一篇:交通信息平台