本发明属于图像处理领域中的三维成像技术领域,涉及到计算机层析成像(Computed Tomography,CT)方法,具体涉及基于改进的计算机层析成像的手部建模方法。
背景技术:
手部建模在人机交互,机器人技术以及医疗手术等领域中都有着非常重要的应用。其建模精度可以直接影响人机交互中用户的真实感体验,机器人抓取动作的精确性以及医疗手术中仿生智能机器人手术的可靠性。由于手具有比较复杂的形状,包含多个自由度,所以构建一个精确的虚拟手模型是比较困难的。
建立精确的虚拟手模型需要获取精确的手部三维数据。现在应用的比较广泛的三维测量方法主要是基于光学的三维测量方法。该方法主要包括被动式测量方法和主动式测量方法。被动式主要是指双目视觉。双目视觉是通过左右两个相机来对物体进行拍摄,然后寻找左右两幅图像中的对应点,进而利用视差来得到物体的三维信息。主动式三维测量方法主要包括结构光法,激光散斑以及时间飞行法。结构光法是向物体投射特定图案(点结构光,线结构光,面结构光),然后根据解码结果以及几何约束关系来得到物体三维信息。激光散斑是利用光线对空间进行编码,然后通过计算物体表面散斑图案和数据库中散斑图案的相似性来得到物体深度信息。时间飞行法通过测量飞行时间来进行测距,进而得到物体三维信息。
现有的基于光学的三维测量方法在获取手部三维数据时候会存在一定的局限性。双目视觉需要找左右图像的对应点,由于手的表面比较光滑,所以寻找对应点比较困难。因此该方法不适合用来获取手部完整三维信息。图1给出了双目视觉获取手部三维信息的结果。从结果可以看出,该方法无法重建出手的正面的三维信息,并且手的背面区域也存在缺失。激光散斑方法在测量手部边缘位置的时候,边缘位置的散斑图案在数据库中可能找不到匹配结果,这会造成手部边缘位置信息的缺失。图2给出了激光散斑测量手部三维信息的结果,显然该结果的边缘位置非常的不准确。图3(a)是激光扫描的结果,图3(b)是在是在另外一个角度下显示的结果。激光扫描方法在对手部进行扫描的时候,由于手指间存在的遮挡问题,测量会存在噪声,如图3(b)手指间的位置。激光扫描一次只能得到手部一个面的三维数据,因此需要多角度扫描,然后对扫描的结果进行配准才能得到完整的手部数据。但是噪声的存在会使得配准比较困难。
由于已有的三维测量的方法在获取手部精确的三维数据的时候存在一定局限性,因此,本文在已有的计算机层析成像的基础上提出了一种改进的计算机层析成像的方法来获取手部的三维数据。计算机层析成像是一种无损的内部检测技术,它在非接触不破坏物体结构的情况下,重现物体内部的断层切片。它的基本原理是一般采用可穿透物体的X射线来对物体进行照射,根据物体对射线的吸收程度来重建物体的断层图像。它不仅可以得到物体的表面数据,还可以得到物体的内部数据。现有的计算机层析成像算法大体分为解析法和迭代法两类。解析法以Radon变换为基础,主要包含滤波反投影重建算法。迭代法是将图像离散化,将图像看作一个带求解的矩阵,利用采集到的投影来构建一个方程组,进而根据该方程组求解出图像矩阵。迭代法主要包括ART算法和SART算法等等。通过逐层求解物体的断层图像,进而得到物体的三维结构。由于已有的计算机层析成像系统对人体有辐射,一般的计算机层析成像系统比较昂贵,所以使用传统的计算机层析成像的方法来获取手部三维信息存在一定局限性。
技术实现要素:
本发明提供了一种改进的计算机层析成像方法来对手部进行三维建模。首先,针对传统的计算机层析成像方法存在的对人体有辐射和设备一般比较昂贵的问题,提出采用可见光来替代原来的X射线。其次,由于采用可见光来代替射线,所以投影值发生了改变。因此对传统的计算机层析成像方法进行了改进,对手部的每一个断层的轮廓进行了重建,进而得到完整的手部三维数据
本发明的技术方案:
基于改进的计算机层析成像的手部建模方法,步骤如下:
S1采用可见光代替X射线重建物体断层的可行性分析
传统的计算机层析成像一般采用X射线来照射物体,根据物体对射线的吸收程度来重建物体的断层图像。它不仅可以重建物体的内部信息,还可以重建出物体的外部轮廓信息。由于本发明仅仅需要获取手的外部三维信息,所以这里探索采用可见光来获取手部三维表面信息的可行性。
图6给出了一个在可见光下重建一个4*4的物体断层的过程。由于可见光不能穿透物体,所以这里将有物体的区域像素值设为255,没有物体的区域像素值设为0。图6(e)给出的是待重建的物体断层,图6(a)是该断层所对应的图像。首先采集该断层的投影数据,采集到的投影只会存在两种情况:一种是可见光被物体遮挡,另外一种是可见光可以穿过。当可见光被遮挡的时候,将采集到的投影结果设置为255。否则,投影结果设置为0。反投影的过程是将投影值为0的投影直接进行反投影,对于投影值为255的投影不做处理。当所有的投影都处理完之后,再将断层中没有值的像素的值设为255,得到的重建结果如图6(d)所示,其对应的重建的物体断层如图6(f)。从重建结果和原始断层之间对比可以看出,可见光下是可以比较好的重建出物体的断层轮廓信息的。然后重建出物体的所有断层,将所有的断层图像进行组合,就可以得到物体完整的三维信息;
S2搭建投影采集系统
投影采集系统包括转台、光板和相机;相机用来拍摄手的投影图片,转台用来放置手模型并且控制手模型进行等间隔旋转,光板用来发射平行光束;转台在相机和光板的中间,转台的旋转角度间隔为k为旋转的次数;再对投影采集系统进行标定;
S3投影的采集和预处理
S3.1投影的采集;首先通过相机采集一张空扫图片,然后开始采集手的投影;转台每旋转一个角度间隔采集一次手的投影图片,共采集k张手部的投影图片;
S3.2投影的预处理;将采集k张手部的投影图片分别和采集的空扫图片进行做差,目的是消除外部噪声的影响,然后再对每个做差的结果进行二值化;原因是本发明对传统的计算机层析成像系统进行了改进,采用可见光代替了传统的X射线,可见光不能穿透物体,投影值只存在两种情况,因此对投影做了二值化处理。将被手部遮挡的投影区域像素值设为255,否则设为0。
S4根据预处理后的投影进行断层轮廓重建
S4.1对于任意一个待重建层m,其对应的投影数据为预处理后的所有的投影的第m行数据,依次将每一个预处理之后的投影的第m行数据取出组成一个矩阵,即投影矩阵;投影矩阵的第一行对应旋转角度为0°时的投影的第m行,第二行为旋转角度为时的投影的第m行,第三行为旋转角度为时的投影的第m行,以此类推,最后一行是旋转角度为时的投影的第m行;
S4.2计算像素坐标和投影坐标之间的对应关系;首先建立投影坐标系如图4所示,x-o-y表示的是空间坐标系,xr-o-yr表示的是投影坐标系,其中yr表示的是射线照射的方向,o点位坐标原点。为射线源和探测器旋转的角度,旋转中心为o。图中的方形区域表示的是物体区域。空间坐标系下的坐标(x,y)和投影坐标系下的坐标(xr,yr)之间的坐标对应关系为:
接下来确定图像坐标系和空间坐标系之间的坐标对应关系。首先将物体区域以坐标原点为中心,离散化为M×M的一个正方形,如图5所示。每一个小方格代表待重建图像的一个像素,将方格的边长和坐标系的单位长度都设为1。首先将图像的最左上角的小方格设为图像的起始像素点(1,1)。以每一个小方格的中心点作为该像素点的坐标。设图像像素点在i-o-j坐标系下的坐标为(i,j),则该像素点在坐标系x-o-y坐标系下的坐标为((i-(M+1)/2),((M+1)/2-j。
综上,该图像像素点坐标和投影坐标之间的对应关系为:
遍历第m层断层图像的所有像素,这里设待重建图像大小为M×M;计算像素(i,j)在角度下所对应的投影的位置(xr,yr),然后根据该投影位置对应的投影值来判断是否进行反投影,计算公式如下:
其中,a(r,θ)表示的是待重建图像,(r,θ)表示待重建像素点(i,j)的极坐标,表示的是像素(i,j)在角度下所对应的(xr,yr)位置的投影值。
S4.3重复进行上一步,直到所有角度下的投影都遍历一遍,得到该断层初步的重建结果;
S4.4对没有进行过反投影的像素区域,设置其像素值为255,即物体所在区域,得到完整的该断层轮廓图像;
S5重复的进行S4,直到所有断层全部重建完毕,然后根据重建的断层结果,将所有的断层合成一个完整的三维手模型。
本发明的有益效果:相对于已有的三维测量方法,该方法不需要进行点云的配准就可以得到一个完整的,比较精确的手模型。其次,相对于传统的计算机层析成像方法,本发明采用了可见光来代替原系统的射线源,在避免了射线辐射的同时,降低了原有系统的成本。
附图说明
图1是双目视觉的方法来对手进行三维测量重建的结果。图1(a)是手部的背面,图1(b)是手的侧面。
图2是激光散斑方法来对手进行三维测量的结果。图2(a)是手正面的测量结果,图2(b)是手侧面的测量结果。图像的灰度值代表了深度信息。
图3是激光扫描方法(线激光)对手进行三维测量得到的结果。图3(a)是扫描得到的结果,图3(b)是该结果在另外一个视角下的显示结果。
图4是待重建物体所处的空间坐标图。图中,x-o-y为物体所在的空间坐标系,xr-o-yr为投影坐标系。坐标原点o为旋转中心。为旋转的角度,沿逆时针方向进行旋转。
图5是图像坐标系i-o′-j和空间坐标系x-o-y。将待重建物体划分为边长相等的正方形小块,一个小块代表待重建图像的一个像素。像素在图像坐标系下的坐标为(i,j),i代表该像素的行数,j代表该像素的列数,以每一个像素中心点作为该像素的坐标。
图6模拟了可见光下重建物体断层轮廓的过程,这里以一个4×4的断层为例。图6(e)为待重建断层,图6(a)为该待重建断层所对应的图像。图6(b)为采集投影,然后再对投影值为0的投影进行反投影,如图6(c)所示,最后再将没有值的区域的像素值设为255,得到重建结果如图6(d),图6(f)为对应的物体断层。
图7给出了采集的投影图片。图7(a)是采集的空扫的图片。图7(b)是采集的180张手的投影中的一张。
图8给出了投影预处理的结果,图8(a)是投影减掉空扫之后的结果,图8(b)是将做差结果进一步进行二值化之后得到的结果。
图9给出了三个断层的重建结果,图9(a)是手腕位置,图9(b)是手掌中间的位置断层重建结果,图9(c)是手指位置断层重建的结果。
图10给出了合成的三维手模型在不同视角下的结果。图10(a)为三维手模型的正视图,图10(b)为三维手模型的侧视图。
具体实施方式
下面结合技术方案和附图详细说明本发明的具体实施方式。
实施例
一种基于改进的计算机层析成像的手部建模方法,步骤如下:
S1首先模拟了平行束的投影采集系统搭建一个手的投影采集系统。系统总共包含了三个部分:一个转台,一个普通相机,代替了原系统的射线源以及一个发射平行光的光板,代替了原来的探测器。相机用来获取手的投影图片,分辨率设为512×512,转台用来控制手模等间隔的进行旋转,间隔设为1°,总共需旋转180次,光板用来发射平行光束;接着对系统进行简单标定;
S2投影的采集和预处理;
S2.1首先采集一张空扫图片,如图7(a)。然后开始采集手的投影,转台每转动1°采集一次投影,总共采集180张投影,图7(b)给出了其中一张投影图片;
S2.2投影预处理,首先将采集的所有手的投影和空扫图片进行做差,图8(a)给出了图7(a)和图7(b)做差的结果。做差的目的是消除外部噪声的影响。接着对做差后的结果进行二值化处理,本发明中设定的阈值为135。当像素值大于等于135时,将像素值设为255,否则设为0,图8(b)给出了图8(a)二值化之后的结果;
S3根据投影预处理之后的结果进行断层轮廓重建
S3.1确定待重建断层图像中每一个像素所对应的投影位置。这里以m断层为例,依次将所有预处理之后投影的第m行数据取出,组成一个投影矩阵,第一个预处理之后投影的第m行作为投影矩阵的第一行,第二个预处理之后投影的第m行对应于投影矩阵的第二行,以此类推,最后一个预处理之后的投影的第m行对应于该投影矩阵的第180行;
S3.2计算断层图像像素和投影值之间的对应关系。本发明采集的投影大小为512×512,因此将物体区域以坐标原点为中心离散化为512×512的一个正方形。每一个小方格代表待重建图像的一个像素,将方格的边长和坐标系的单位长度都设为1。首先将图像的最左上角的小方格设为图像的起始像素点(1,1)。以每一个小方格的中心点作为该像素点的坐标。
然后遍历该层所有像素点,在旋转角时对应的投影为投影矩阵的第一行。根据公式(2),计算每一个像素所对应的投影位置,由于坐标计算的结果可能为小数,所以对得到的结果进行向下取整。如果取整之后对应的投影值为0,则将该待重建像素点的值设为0(即进行反投影),否则继续遍历,直到所有的像素遍历完。
S3.3在下一个角度下重新遍历该断层图像所有像素点,以此类推,直到所有角度下的投影都遍历完。
S3.4上一步可以得到一个初步的断层重建结果,接下来将该结果中像素值不为0的像素点设为255(对应于物体区域),得到最终的手的断层重建结果。
S4重复进行S3,得到所有层的重建结果,图9给出了手部三个不同位置的断层重建结果。最后将所有的断层轮廓图像合成一个三维的手部模型,合成的三维手模型结果如图10所示。