一种虚拟手术模拟过程的录制、回放方法及装置的制造方法_3

文档序号:8266492阅读:来源:国知局
管介入手术模拟过程为例进行说明,但本发明并 不限于此。在心脑血管介入手术模拟过程中,操作者操作导管和导丝等手术器械,控制计算 机模拟的虚拟手术器械模型,与计算机模拟呈现的3D人体血管和器官模型进行实时交互。
[0048] 具体地,在心脑血管介入手术模拟过程中可包括操作者对C型臂的升降和旋转、 对导管导丝等手术器械的旋转和平移以及造影注射、支架放置、球囊扩张等多种模拟操作。 这些操作均为虚拟手术实施者与模拟系统进行交互的响应事件,这些响应事件分别对应着 相应的操作信号。虚拟手术模拟过程中的操作信号的来源主要有导丝运动捕捉感应器、C形 臂操作传感器等运动传感器所捕捉到的虚拟手术器械的操作信号,以及通过例如键盘、鼠 标外设设备输入的用于下达指令的操作信号等。对于运动传感器,可通过采用定时查询的 方法访问运动传感器的信号值并将其转换为虚拟手术器械的位移量。对于键盘、鼠标等操 作信号,MFC(微软基础类库)软件框架通过消息映射及消息队列机制对该操作信号进行处 理。即,在所有信号源发生地记录所有可虚拟手术模拟过程中进行交互的操作信号。
[0049] 各种不同类型的虚拟手术中均可包含多种不同的操作信号,而每一操作信号均对 应一响应事件,且各个操作信号的发出者各不相同,在本发明实施例的虚拟手术模拟过程 的录制、回放方法中,是将虚拟手术的模拟过程中所有可能出现的可响应操作信号抽象为 响应事件,并将该响应事件映射到一个包含整数O-E max的整数集中,用E _+1个整数作为每 个响应事件的整数标识。另外,在所有的响应事件中有一种特殊事件,该特殊事件在操作者 没有与计算机或虚拟手术器械模型进行任何交互时发生,此时并不会产生操作信号,这类 特殊事件对应的响应事件称为空事件,该空事件与整数集中的整数标识〇相对应。
[0050] 在上述的事件预分类步骤1中,将不同类型的虚拟手术模拟过程中的多种操作进 行了整理,映射到一整数集当中。为后续的录制过程提供了统一的可记录的整数格式类型, 该类型占用字节数较少,节省存储空间。
[0051] 具体实施时,如图2所示,上述的录制步骤2可包括以下各步骤:
[0052] 步骤201 :初始化录制定时器,设置该录制定时器的录制刷新频率及录制触发时 亥Ij (S201)。在虚拟手术开始时,首先通过初始化录制定时器,设置录制刷新频率以及录制触 发时刻。该录制定时器用于将连续的时间离散成固定长度的录制时间片段,该录制时间片 段的长度为各录制触发时刻之间的录制定时间隔。
[0053] 由于录制过程发生在每帧画面的渲染过程中,因此录制的帧率与模拟渲染的帧率 相同。录制帧率m与录制定时器定时值t的关系是= 1000/t,而录制帧率m与录制刷新 频率f的关系是:m/f = 1000。
[0054] 为了保证虚拟手术模拟过程的实时性和操作者视觉上的流畅体验,录制定时器定 时值t的值通常不超过33毫秒,即模拟画面的刷新频率在30Hz以上。这意味着所有的交 互模拟操作和渲染过程必须在t毫秒内完成。
[0055] 步骤202 :接收一开始录制信号,根据该开始录制信号进行录制(S202)。完成对录 制定时器的设置后,接收操作者发出的开始录制信号,并根据该开始录制信号进行虚拟手 术的模拟过程的录制。
[0056] 步骤203 :存储初始场景状态于一标准库容器中(S203)。当接收到操作者的开始 录制信号时,首先保存当前时刻的初始场景状态至一个标准库容器(vector)(例如:C++标 准库容器)中。该初始场景状态主要包括两部分内容,第一部分是模型状态,即人体器官模 型(内脏、血管等)和手术器械模型(导管、导丝、球囊支架等)的位置及形变状态;第二部 分是渲染状态,即与三维模型的实时渲染相关的状态,包括坐标变换矩阵、材质、纹理等等。
[0057] 步骤204 :获取当前录制触发时刻的操作信号(S204)。录制过程开始之后,在录制 定时器的触发时刻,从外部传感器(该外部传感器器可接收的信号既包含手术器械模型对 应的操作信号,也包含鼠标、键盘等的操作信号)读取不同的手术操作过程读取各种不同 的操作信号,例如:手术器械的位移信号等。
[0058] 步骤205:从整数集中查询并获取当前录制触发时刻的操作信号对应的整数标 识,并存储获取的整数标识于的标准库容器中(S205)。将该位移信号转化为抽象后的虚拟 手术的响应事件后,从上述的整数集中查询并获取该响应事件所对应的整数标识。由于响 应事件与整数集中整数标识的映射关系实际已经在上述的事件预分类步骤1中一一对应 产生,在录制过程中是根据该位移信号查询并读取相应的整数标识,并将读取到的整数标 识保存在上述的标准库容器之中。
[0059] 步骤206 :在录制定时器的下一个触发时刻,再次获取虚拟手术模拟过程中的操 作信号,查询并获取该操作信号在整数集中相应的整数标识,并将该整数标识保存到上述 的标准库容器中(S206)。
[0060] 按照上述的步骤204?步骤206,在录制定时器的每一个触发时刻,分别获取虚拟 手术模拟过程中的一个操作信号,并在获取到该操作信号的同时,即从上述的整数集中查 询并获取该操作信号对应的整数标识,并保存至上述的标准库容器中。
[0061] 而当上述步骤204中获取的操作信号为录制结束信号时,从上述的整数集中查询 并获取该录制结束信号在整数集中对应的录制结束整数标识,并存储该录制结束整数标识 于上述的标准库容器中。该录制结束信号同样对应一个响应事件,即录制结束事件,该录制 结束事件与上述整数集中的录制结束整数标识相对应,该录制结束整数标识作为该录制过 程的结束标志。
[0062] 步骤207 :根据存储的多个整数标识、录制结束整数标识及初始场景状态生成录 制片段(S207)。在获取上述的录制结束整数标识后,停止记录所有响应事件,并且将录制开 始时保存的场景状态与录制过程中记录的响应事件对应的整数标识一起构成录制片段并 进行保存,以便后续的回放过程使用。
[0063] 以上即为本发明实施例的虚拟手术模拟过程的录制、回放方法中的录制步骤2,通 过该录制步骤2,存储记录了开始录制那个时刻的唯一一个场景状态,以及后续每一录制触 发时刻的操作信号所对应的整数标识。可见,该录制过程所记录的内容所占用的空间较小, 也便于查询和获取。
[0064] 如图3所示,上述的回放步骤3主要包括以下各步骤:
[0065] 步骤301 :初始化回放定时器,设置该回放定时器的回放刷新频率及回放触发时 刻(S301)。该回放定时器用于将连续的时间离散成固定长度的回放时间片段,回放时间片 段的长度为各个回放触发时刻之间的回放定时间隔。
[0066] 步骤302 :接收一开始回放信号,根据该开始回放信号进行回放(S302)。设置完成 回放定时器后,接收操作者发出的开始回放信号,并根据该开始回放信号进行虚拟手术的 模拟过程的回放。
[0067] 步骤303 :将回放开始时的场景状态压栈保存至预设的堆栈数据结构中(S303)。 在根据操作者发出的开始回放信号开始回放的时刻,首先将此时的场景状态在一个预先设 置好的数据堆栈结构中进行压栈保存。
[0068] 步骤304 :从标准库容器中获取初始场景状态(S304)。在将开始回放时刻的场景 状态进行压栈保存后,读取上述录制步骤2中保存的初始场景状态,并将其设置为回放开 始时的初始场景状态。
[0069] 步骤305 :在回放定时器的当前的回放触发时刻,获取存储于标准库容器中的一 整数标识(S305);
[0070] 步骤306 :判断所述步骤305中获取的整数标识是否为录制结束整数标识;若否, 根据获取的整数标识所对应的响应事件及待响应场景状态响应生成响应场景状态,并渲 染所述的响应场景状态,生成并显示所述新的场景状态,所述回放定时器更新至下一个回 放触发时刻,将所述的待响应场景状态更新为所述的新的场景状态,返回执行所述的步骤 305 ;若是,从所述堆栈数据结构中获取并显示所述的回放开始时的场景状态(S306)。
[0071] 在实际回放过程中,在回放定时器的第一个触发时刻tl,按照录制步骤2中各整 数标识存储于标准库容器中的顺序,从存储于标准库容器的录制片段中读取一个整数标 识。在读取到该整数标识之后,判断该整数标识是否为上述的录制结束整数标识。如果该 整数标识不是录制结束整数标识,则根据该整数标识的种类重新对上述的初始
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1