发明名称 一种由非平行断层图像序列重建三维目标对象表面的方法
摘要 一种由非平行断层图像序列重建三维目标对象表面的方法,属三维图像重建和可视化技术领域,通过对断层图像分割提取目标对象轮廓,并对其进行距离变换、提取圆盘集并去除冗余找出目标对象轮廓内的极大圆盘集,在相邻断层图像中选择用来插值的圆盘集,计算断层图像中每一点指向图像中目标对象的矢量值,确定插值断层图像之间空间点的距离值,并进行基于轮廓的面绘制显示。本发明实现了由非平行断层图像序列直接重建三维目标对象表面,重建精度高,速度快,对几何形状复杂的三维目标对象进行表面重建也具有很好的效果。
申请公布号 CN101533518B 申请公布日期 2011.01.12
申请号 CN200910020718.6 申请日期 2009.04.21
申请人 山东大学 发明人 孙丰荣;王丽梅;王文明;王庆浩;张明强
分类号 G06T11/00(2006.01)I 主分类号 G06T11/00(2006.01)I
代理机构 济南金迪知识产权代理有限公司 37219 代理人 许德山
主权项 1.一种由非平行断层图像序列重建三维目标对象表面的方法,步骤如下:S1)对部分断层图像进行分割,提取目标对象轮廓先对部分断层图像进行分割,提取这些断层图像中目标对象的轮廓;在已提取出目标对象轮廓的断层图像序列中,对每相邻的两帧断层图像都依次执行以下步骤S2)-S6);S2)对断层图像进行距离变换,得到距离图像将得到目标对象轮廓的相邻的两帧断层图像转化为二值图像;然后进行Chamfer距离变换,选取3×3的模板,距离变换完毕后,令轮廓外部点的距离值取原来的负数,轮廓内部点的距离值不变,以区分轮廓内外点,得到的图像为断层图像的距离图像,其中目标对象轮廓外部的每个点,其像素值表示该点到目标对象轮廓上最近一点距离的负值;内部的每个点,其像素值表示该点到目标对象轮廓上最近一点的距离值;目标对象轮廓上点的像素值为零值;S3)提取距离图像中目标对象轮廓内的极大圆盘集,并去除冗余提取圆盘集:通过计算得到一系列与目标对象轮廓相切且完全在目标对象轮廓内部的圆盘集,其中的每个圆盘都不会被其余所有圆盘所完全覆盖;这些圆盘集代表了目标对象的骨架及走向趋势;首先找出距离图像中目标轮廓内所有像素值的极大值点,即圆盘的中心点:对目标对象轮廓内每个点p的像素值都要与其8个邻点的像素值进行比较判断,若满足pixel(p)>pixel(q)-t,则该点即为极大值点;其中点q是点p上下左右及对角线方向上的8个相邻点,t为点q到点p的相对距离值;对于点p上下左右四个方向上的四个邻点,t=3;对于点p对角线方向上的四个邻点,t=4;距离图像中的每个点都要进行判断,直到找出所有的极大值点;每个极大值点都对应一个圆盘,且圆盘中心位于极大值点处;然后计算每个极大值点对应圆盘的半径,对每个极大值点分别进行以下相同处理;首先对距离图像进行初始化,除当前处理的极大值点外,其余点像素值都初始化为0;然后对图像中每个点进行与距离变换相似的两次扫描,取3×3的模板,每次扫描后得到的像素值由下式确定:<img file="F2009100207186C00011.GIF" wi="590" he="98" />其中v<sub>i,j</sub><sup>num</sup>为图像上(i,j)位置处在第num次扫描后的像素值,(k,l)为模板相对其中心(0,0)的位置坐标,而t(k,l)为模板在(k,l)处与中心位置的相对距离值;若点(k,l)位于中心位置的上下左右四个方向上的四个邻点处时,t(k,l)=3;若(k,l)位于中心位置的对角线方向上的四个邻点处时,t(k,l)=4;经过两次扫描之后的图像,其中只有极大值点附近点的像素值是非零值,且这些点的像素值小于极大值点的像素值,其它点的像素值是零值;找出其中的最小非零值w,则该圆盘的半径为r=v-w,其中v为极大值点处的像素值,r即为该极大值点 对应圆盘的半径;重复上述操作直到每个极大值点对应的圆盘半径都被计算出;对圆盘集去冗余:令M为原始的极大圆盘集,N为去冗余的极大圆盘集;取出M中半径最大的圆盘fm,将该圆盘放入N中;然后对M中剩下的每一个圆盘fn都与圆盘fm进行比较,取fl为两圆盘圆心之间的距离,取fd=radius(fm)-0.5×radius(fn),若fl<sup>2</sup><fd<sup>2</sup>,则把fn从M中去掉;然后重复上述操作,直到M为空;最终得到的N即为去冗余后的圆盘集;S4)在断层图像中选择用来插值的圆盘集插值两相邻断层图像之间的像素值时,将其中一幅图像A中目标对象轮廓内每一个极大圆盘sm依次向另一幅图像B进行投影,判断圆盘sm的投影与被投影图像中目标对象轮廓内包含的任意圆盘sn是否有重叠部分,若有重叠部分,则将sm放入集合C<sub>1</sub>,sn放入集合C<sub>2</sub>,若sn在C<sub>2</sub>中已经存在,就不用往里放;然后重复上述过程,直到处理完A中所有圆盘;最后C<sub>1</sub>与C<sub>2</sub>分别为两相邻断层图像中插值所用的圆盘集;S5)计算断层图像中每一点指向图像中目标对象的矢量值根据步骤S4)得到的两相邻断层图像中用来插值的圆盘集,对两相邻断层图像中的每一个点a<sub>i</sub>进行如下计算,<img file="F2009100207186C00021.GIF" wi="522" he="280" />其中,c表示断层图像中用来插值的圆盘集,k<sub>d</sub>是圆盘d的中心,r<sub>d</sub>是圆盘d的半径,a<sub>i</sub>是断层图像中的任意点,<img file="F2009100207186C00022.GIF" wi="23" he="54" />为一矢量值,表示断层图像中点a<sub>i</sub>到目标对象的方向与距离;结果即得到与两相邻断层图像相对应的两幅新图像,其中每一点的像素值为一矢量值,表示了该点到图像中目标对象的方向与距离;S6)确定插值断层图像之间空间点的距离值把两相邻断层图像的距离图像中其中一幅A作为出发点,遍历其中每一个点a,过该点沿两断层图像的平均法线方向做直线交第二幅断层图像B于一点b,然后连接两断层图像中a点与b点处对应的两个矢量<img file="F2009100207186C00023.GIF" wi="125" he="66" />得到新矢量i,然后过a点沿i的方向,做直线交断层图像B于点c,线段ac即为a点对应的插值线段;根据a和c两点处的距离值对线段ac上的点g进行余弦插值,公式如下: <img file="F2009100207186C00031.GIF" wi="951" he="178" />其中l<sub>1</sub>和l<sub>2</sub>分别为点g沿线段ac方向到点a与点c的距离,d<sub>1</sub>、d<sub>2</sub>分别为两距离图像中a点与c点处的距离值,d<sub>g</sub>是插值得到的点g处的距离值;如果由a点做直线与断层图像B无交点时,则舍弃a点,再对下一点重复如此计算,断层图像A中的每一点都遍历完毕后,两相邻断层图像之间空间点的距离值即被正确的插值出来了;根据距离值的正负确定该点是在轮廓内部还是外部,而零值点即为轮廓上的点;若已提取出目标对象轮廓的断层图像序列中每相邻两帧断层图像全部处理完毕,则执行步骤S7),否则继续执行步骤S2)-S6);S7)基于轮廓的面绘制显示对所有的空间点距离值提取零值点,并进行基于轮廓的面绘制显示,整个处理流程结束。 
地址 250100 山东省济南市历下区山大南路27号