发明内容
本发明解决的问题是提供一种体数据的裁减方法,用以提高医学图像进行裁减的效率。
为解决上述问题,本发明提供了一种体数据的裁减方法,包括:提供医学图像的体数据及预设多边形,将所述体数据所在空间进行多次划分,并在每次划分后产生的子空间内,对子空间内的体数据进行裁减,以使得所述体数据形成预设多边形对应的形状。
可选的,所述划分为基于树结构对所述体数据所在空间进行的空间划分。
可选的,所述树结构包括二叉树、四叉树、八叉树或十六叉树。
可选的,还包括设定划分体素阈值,若划分后的子空间的体素值不大于所述划分阈值,则停止后续的空间划分。
可选的,若停止后续的空间划分后,则遍历当前形成的子空间中所有的体素,逐个判断其是否位于所述预设多边形内/外。
可选的,还包括节点,每一个节点对应于所述空间划分后形成的一个子空间,第一次划分形成的节点为子节点,最后一次划分的节点为叶子节点,其余的划分形成的节点为孩子节点。
可选的,还包括在每次空间划分后,对位于当前划分形成后的子空间内的体数据进行裁减。
可选的,所述对位于当前划分形成后的子空间内的体数据进行裁减包括:判断位于所述子空间内的体数据是否全部位于所述预设多边形内部或全部位于所述预设多边形的外部。
可选的,若所述子空间内的体数据不完全位于所述预设多边形内部或不完全位于所述预设多边形的外部,则对所述子空间继续进行下一步的划分,形成更小单元的子空间。
可选的,还包括在每次空间划分后,判断当前划分形成后的子空间内的预设多边形的凹凸性。
可选的,若所述子空间内的预设多边形为凸多边形,且所述子空间内的体数据对应的所有空间顶点都在多边形外,则所述子空间内的体数据全部位于所述预设多边形外部;若所述子空间内的体数据对应的所有空间顶点都在多边形内,则节点对应的立方体在多边形内。
可选的,若所述子空间内的预设多边形为凹多边形,且所述子空间内的体数据对应的所有面都在多边形外,则所述子空间内的体数据全部位于所述预设多边形外部;若所述子空间内的体数据对应的所有面都在多边形内,则节点对应的立方体在多边形内。
与现有技术相比,本发明具有以下优点:
对体数据所在空间进行划分,并在形成的子空间内进行体数据的裁减,不必对每个体素都进行是否被裁减的判定,而是利用子空间的空间结构,首先只对一些关键的点面进行判定就能判定大部分体积空间,最后只需对一些较小的体积空间进行逐点判定,从而极大地提高了裁减速度。
进一步地,基于如八叉树等树结构进行体数据的多边形裁减,能很好利用树结构的空间特性,当使用多边形对体数据进行裁剪时,不必对每个体素都进行是否被裁减的判定,而是利用树结构的空间结构,只需对一些较小的体积空间进行逐点判定,从而极大地提高了裁减速度。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
其次,本发明利用示意图进行详细描述,在详述本发明实施例时,为便于说明,所述示意图只是实例,其在此不应限制本发明保护的范围。
本发明解决的问题是提供一种体数据的裁减方法,用以提高医学图像进行裁减的效率。为解决上述问题,本发明提供了一种体数据的裁减方法,包括:提供医学图像的体数据及预设多边形,将所述体数据所在空间进行多次划分,并在每次划分后产生的子空间内,对子空间内的体数据进行裁减,以使得所述体数据形成预设多边形对应的形状。
具体地,包括在每次空间划分后,对位于当前划分形成后的子空间内的体数据进行裁减,判断位于所述子空间内的体数据是否全部位于所述预设多边形内部或全部位于所述预设多边形的外部。若所述子空间内的体数据不完全位于所述预设多边形内部或不完全位于所述预设多边形的外部,则对所述子空间继续进行下一步的划分,形成更小单元的子空间。
进一步地,所述划分为基于树结构对所述体数据所在空间进行的空间划分。所述树结构包括二叉树、四叉树、八叉树或十六叉树。
对于所述空间划分,还包括设定划分体素阈值,若划分后的子空间的体素值不大于所述划分阈值,则停止后续的空间划分。若后续的空间划分停止,则遍历当前形成的子空间中所有的体素,逐个判断其是否位于所述预设多边形内/外。
在每次空间划分后,判断当前划分形成后的子空间内的预设多边形的凹凸性。若所述子空间内的预设多边形为凸多边形,且所述子空间内的体数据对应的所有空间顶点都在多边形外,则所述子空间内的体数据全部位于所述预设多边形外部;若所述子空间内的体数据对应的所有空间顶点都在多边形内,则节点对应的立方体在多边形内。
反之,若所述子空间内的预设多边形为凹多边形,且所述子空间内的体数据对应的所有面都在多边形外,则所述子空间内的体数据全部位于所述预设多边形外部;若所述子空间内的体数据对应的所有面都在多边形内,则节点对应的立方体在多边形内。
图1是本文实现的基于体数据的裁减方法的流程示意图。本实施例以树结构为八叉树为例进行说明,作为其他实施例,还可以为其他的树结构,如二叉树、四叉树或者十六叉树的树结构。
提供待裁减的体数据及预设多边形,其中,需要通过后续的裁减过程将所述体数据裁减成为所述预设多边形的形状。首先执行步骤S1,用八叉树对所述体数据进行空间划分。后续地,将在每次划分后产生的子空间内,对子空间内的体数据进行裁减,以使得所述体数据形成预设多边形对应的形状。
进一步地,每一个节点对应于所述空间划分后形成的一个子空间,第一次划分形成的节点为子节点,最后一次划分的节点为叶子节点,其余的划分形成的节点为孩子节点。
执行步骤S2,将八叉树根节点压入堆栈。其中,所述堆栈用于存放所述节点,包括子节点、孩子节点及叶子节点。后续的图像处理将从所述堆栈中取出所述节点,并对所述节点对应的子空间进行对应的体数据的裁减。
执行步骤S3,判断堆栈是否为空;若非空,则执行步骤S4,弹出栈顶元素作为当前节点;后续地,将对所述节点对应的体数据进行裁减。若为空,则所述体数据的裁减结束。
执行步骤S5,裁减多边形是否为凸边形;若所述步骤S5的判断为是,即所述裁减多边形为凸多边形,则执行步骤S11,判断节点的8个面都在多边形内部。若是,则执行步骤S110,标记节点在多边形内;若否,则执行步骤S12,判断节点的8个面是否都在多边形外部;若所述步骤S12的判断为是,则执行步骤S120,标记节点在多边形外部。
进一步地,所述步骤S11和步骤S12可以进行互换,即先判断所述节点的面是否都在多边形外,再判断所述节点是否在多边形内。
若所述节点的面没有全部在所述多边形内部,也没有在所述多边形外部,则执行步骤S6,判断所述节点是否为叶子节点,若是,则执行步骤S61,遍历节点中的所有体素,逐个进行裁减判定。
若所述步骤S13的判断为否,则执行步骤S7,孩子节点依次压入堆栈。并循环执行步骤S3及后续的步骤,对所述体数据进行多边形的裁减。
进一步地,若所述步骤S5的判断为是,即所述裁减多边形为凸多边形,则执行步骤S21,判断节点的8个顶点是否都在多边形内部。若是,则执行步骤S210,标记节点在多边形内部;若否,则执行步骤S22,判断节点的8个顶点是否都在多边形外部;若所述步骤S22的判断为是,则执行步骤S220,标记节点在多边形外部。
进一步地,所述步骤S21和步骤S22可以进行互换,即先判断所述节点的面是否都在多边形外,再判断所述节点是否在多边形内。
若所述节点的面没有全部在所述多边形内部,也没有在所述多边形外部,则执行步骤S6,判断所述节点是否为叶子节点,若是,则执行步骤S61,遍历节点中的所有体素,逐个进行裁减判定。
若所述步骤S13的判断为否,则执行步骤S7,孩子节点依次压入堆栈。并循环执行步骤S3及后续的步骤,对所述体数据进行多边形的裁减。
与现有技术相比,本发明具有以下优点:
对体数据所在空间进行划分,并在形成的子空间内进行体数据的裁减,不必对每个体素都进行是否被裁减的判定,而是利用子空间的空间结构,首先只对一些关键的点面进行判定就能判定大部分体积空间,最后只需对一些较小的体积空间进行逐点判定,从而极大地提高了裁减速度。
进一步地,基于如八叉树等树结构进行体数据的多边形裁减,能很好利用树结构的空间特性,当使用多边形对体数据进行裁剪时,不必对每个体素都进行是否被裁减的判定,而是利用树结构的空间结构,只需对一些较小的体积空间进行逐点判定,从而极大地提高了裁减速度。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。