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

文档序号:8266492阅读:255来源:国知局
一种虚拟手术模拟过程的录制、回放方法及装置的制造方法
【技术领域】
[0001] 本发明是关于一种虚拟手术数据的处理技术,具体地,是关于一种虚拟手术模拟 过程的录制、回放方法及装置。
【背景技术】
[0002] 虚拟手术是利用医学影像数据,使用虚拟现实技术在计算机中建立虚拟环境,使 医生能够借助虚拟环境中的信息进行手术计划、训练,以及实际手术中引导手术的技术。采 用虚拟现实技术来虚拟手术环境,可以使医务工作者沉浸于虚拟的场景内,可以通过视、 听、触觉感知并学习各种手术实际操作,体验并学习如何应付临床手术中的实际情况。这样 节约了培训医务人员的费用和时间,使非熟练人员进行手术的风险性大大降低,对提高医 学教育与训练的效率和质量以及改善医学手术水平的发展不平衡的现状有着特殊的意义。
[0003] 目前的虚拟手术过程录制方法主要有以下三种:
[0004] (1)屏幕录像软件。
[0005] 该方法在进行模拟手术过程之前,先打开CamStudio、Camtasia Studio等屏幕录 像软件,对整个屏幕进行录制。
[0006] 此方法存在的缺陷如下:首先,这种方法不仅操作繁琐复杂,不符合用户习惯,同 时也增加了虚拟手术模拟软件对第三方软件(屏幕录制软件)的依赖性,极大地增加了虚 拟手术模拟环境搭建的复杂度和工程量。其次,该方法对屏幕的录制需要占用较大的系统 资源,会对虚拟手术本身的模拟过程产生影响,具体体现在模拟帧率的大幅度下降,极大地 损害了手术本身的模拟体验。最后,该方法的本质是以某帧率从帧缓冲区提取屏幕截图并 进行视频转码输出通用的视频格式(通常为avi格式)。因此采用该方法对模拟手术过程 的录制,实际上是手术过程中整个屏幕上所有变化的录制,因此会记录大量与虚拟手术界 面无关的冗余信息。
[0007] (2)从图形API (应用程序编程接口)帧缓冲区提取图像进行录制。
[0008] 虚拟手术为了提高场景渲染的真实度和用户的视觉沉浸感,通常采用图形 API (OpenGL或DirectX)进行手术场景和模型的绘制。为了生成动态、连续的画面效果,此 类图形API具有前后两个帧缓冲区分别进行在线(On-Screen)显示和离屏(Off-Screen) 渲染。该方法以一定频率从帧缓冲区中提取连续图像,或者进行视频编码进行通用文件格 式输出,或者保存到硬盘中作回放时使用(以一定帧率重新显示保存的图像)。
[0009] 此方法存在的弊端在于:提取的原始图像通常体积较大,若不加处理进行保存,对 存储空间的消耗极大。通过实时压缩的方式减少图像空间占用,会对虚拟手术模拟的实时 性产生影响,导致模拟帧率的降低。通过降低图像质量的方式减少空间占用,会降低回放时 的画面质量,导致用户体验的下降。因此,该方法通常会面临画面质量、存储空间以及模拟 效率三者之间的取舍,无法同时进行优化。
[0010] (3)通过记录每帧的渲染状态进行录制。
[0011] 虚拟手术场景在渲染过程中,图形API和场景中的物体存在逐帧变化的"渲染状 态",通常包括变换矩阵状态、模型形变状态等等。该方法通过保存渲染过程中每帧的渲染 状态,间接记录模拟过程的每帧画面。回放时,通过逐帧恢复先前保存的渲染状态,实现手 术过程的画面回放。
[0012] 此方法存在的问题主要有:其空间占用和时间效率与虚拟手术场景的复杂度成正 比。场景的复杂度越高,动态模型数量越大,每帧需要保存的渲染状态越多,所占用的系统 资源就越大。因此,该方法局限性较大,只适用于虚拟手术场景相对简单的应用场合。

【发明内容】

[0013] 本发明实施例的主要目的在于提供一种虚拟手术模拟过程的录制、回放方法及装 置,以实现针对性强、资源占用少、画面质量好、占用空间少、无冗余数据的虚拟手术模拟过 程录制和回放步骤。
[0014] 为了实现上述目的,本发明实施例提供一种虚拟手术模拟过程的录制、回放方法, 所述的虚拟手术模拟过程的录制、回放方法包括:事件预分类步骤:获取不同手术类型中 的多个操作信号,将每一所述操作信号抽象为一响应事件,并将所述响应事件映射至一包 含多个整数标识的整数集中,所述响应事件与所述整数标识一一对应;录制步骤:存储初 始场景状态,依次获取当前手术类型的多个所述操作信号,同时根据获取的所述操作信号 查询并存储与所述当前手术类型的多个所述操作信号分别对应的多个整数标识;根据存 储的多个整数标识及所述的初始场景状态生成录制片段;回放步骤:获取所述初始场景状 态,按存储顺序依次获取所述录制片段中的多个整数标识,同时根据获取的整数标识及所 述的初始场景状态进行响应、渲染,生成并显示新的场景状态。
[0015] 在一实施例中,上述的录制步骤包括:步骤a :初始化录制定时器,设置所述录制 定时器的录制刷新频率及录制触发时刻;所述的录制定时器用于将连续的时间离散成固定 长度的录制时间片段,所述录制时间片段的长度为各录制触发时刻之间的录制定时间隔; 步骤b :接收一开始录制信号,根据所述的开始录制信号进行录制;步骤c :存储所述的初始 场景状态于一标准库容器中,所述初始场景状态包括:获取所述初始场景状态时的模型状 态及渲染状态;步骤d :获取当前录制触发时刻的操作信号;
[0016] 步骤e :从所述整数集中查询并获取所述当前录制触发时刻的操作信号对应的整 数标识,并存储获取的整数标识于所述的标准库容器中;步骤f :在所述录制定时器的下一 个录制触发时刻,返回执行所述的步骤d?步骤f,直至所述步骤d中获取的操作信号为录 制结束信号时,从所述整数集中查询并获取所述录制结束信号在所述整数集中对应的录制 结束整数标识,并存储所述录制结束整数标识于所述的标准库容器中;步骤g :根据存储的 多个整数标识、录制结束整数标识及所述的初始场景状态生成所述录制片段。
[0017] 在一实施例中,上述录制步骤的录制帧率与所述录制刷新频率的关系通过以下公 式表示:m/f = 1000,其中,m为所述的录制帧率,f为所述的录制刷新频率。
[0018] 在一实施例中,当在所述录制定时器的录制触发时刻并无所述操作信号时,所述 响应事件为空事件,所述的空事件与所述整数集中的整数标识0相对应。
[0019] 在一实施例中,上述的回放步骤包括:步骤h :初始化回放定时器,设置所述回放 定时器的回放刷新频率及回放触发时刻;所述回放定时器用于将连续的时间离散成固定 长度的回放时间片段,所述回放时间片段的长度为各所述回放触发时刻之间的回放定时间 隔;步骤i:接收一开始回放信号,根据所述开始回放信号进行回放;步骤j:将回放开始时 的场景状态压栈保存至预设的堆栈数据结构中;步骤k:从所述标准库容器中获取所述的 初始场景状态;步骤1 :在所述回放定时器的当前的回放触发时刻,获取存储于所述标准库 容器中的一整数标识;步骤m :判断所述步骤1中获取的整数标识是否为录制结束整数标 识;若否,根据获取的整数标识所对应的响应事件及待响应场景状态响应生成响应场景状 态,并渲染所述的响应场景状态,生成并显示所述新的场景状态,所述回放定时器更新至下 一个回放触发时刻,将所述的待响应场景状态更新为所述的新的场景状态,并返回执行所 述的步骤1 ;若是,从所述堆栈数据结构中获取并显示所述的回放开始时的场景状态;其 中,在所述回放定时器的第一个回放触发时刻,所述的待响应场景状态为所述的初始场景 状态;其中,所述步骤1中,在不同的回放触发时刻,按所述录制片段中整数标识的存储顺 序,依次获取一所述的整数标识。
[0020] 在一实施例中,在所述回放定时器的其中一回放触发时刻,当所述的步骤m中获 取的整数标识为所述整数标识〇时,渲染所述其中一回放触发时刻对应的待响应场景状 态,生成所述空事件对应的新的场景状态。
[0021] 在一实施例中,当所述回放定时间隔等于所述录制定时间隔时,在所述回放步骤 中,以与所述录制步骤相同的速度回放所述的录制片段;当所述回放定时间隔小于所述录 制定时间隔时,在所述回放步骤中,以快于所述录制步骤的速度回放所述的录制片段;当所 述回放定时间隔大于所述录制定时间隔时,在所述回放步骤中,以慢于所述录制步骤的速 度回放所述的录制片段。
[0022] 在一实施例中,当在每个所述回放定时间隔读取η个所述响应事件时,在所述回 放步骤中,以η倍速快放所述的录制片段;当在每个所述回放定时间隔读取I/η个所述响应
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1