3D Slicer PLUS

1.configuration file包含的XML元素

  • Version Major版本号
  • PlusRevision创建配置文件更加详细的plus版本
  • Data collection :定义所有用于采集和处理数据的设备Coordinate system definition坐标系定义(固定变换矩阵列表)(见2)
    • StartupDelaySec:开始使用各种采集设备之前,留有充足的时间初始化。
    • DeviceSet
      • Name 设备名称,如NDI Polaris...
      • Description设备描述
    • Device
      • Type设备类型
      • AcquisitionRate采集率
      • LocalTimeOffsetSec
      • MissingInputGracePeriodSec初始设备多久后,不再报missinginput是个错误
      • ToolReferenceFrame工具参考坐标系
      • ReportUnknownToolsOnceWhen 
      • InputChannels该设备采集需要的输入通道列表(每个输入通道就是另一个设备的输出通道)
      • DataSources数据源
        • DataSource(Id、Type、BufferSize、AveragedItemsForFiltering参与时间戳冗余滤波的的数目、 PortName工具识别、PortUsImageOrientation图像原点、图像类型B超or、ClipRectangleOriginClipping图像裁剪原点、ClipRectangleSizeClipping 图像裁剪尺寸)
      • OutputChannelsList输出通道列表
  • Application elements应用模块
    • Freehand calibration(fCal) setting(单独讨论)
    • Plus sever setting(见3)
  • Algorithm elements算法模块
    • Probe calibration algorithm探头校准算法(单独讨论)
    • Phantom registration algorithm体模注册算法(单独讨论)
    • Pivot calibration algorithm针尖校准算法(单独讨论)
    • Temporal calibration时间校准算法(单独讨论)
    • Volume reconstruction algorithm体重建算法(不讨论)
    • RF processing algorithmRF处理算法(不讨论)
专业术语注释: Device: 一个独立的数据获取或处理单元。每个设备都有自己处理的线程(与其他设备并行运行,负责从输入端读取数据,并提供给输出端) 。 Data source: 提供一支数据流,既可以是transform也可以是图像流。这个流还包括每个项目的元数据:时间戳、状态(数据是否有效)。
Channel: 捆绑多个数据源的输出,一个通道可以包含一个图像流+任意数量的跟踪数据流。 Output channel: 通过输出通道可以为其他设备和算法提供数据。 Input channel: 一个设备需要从其他设备接收数据。

2.Coordinate system definition

格式: CoordinateDefinitions
  • Transform
    • From 'From' coordinate frame of the transform
    • To 'To' coordinate frame of the transform
    • Matrix
    • Data
    • Error
实例:
1     <Transform From="Tool" To="Tracker"
2       Matrix="
3         1    0    0    0
4         0    1    0    0
5         0    0    1    0
6         0    0    0    1"
7        Date="2012.02.06 17:57:00" Error = 0.05/>
3D Slicer PLUS 需要探讨的就是From=“Stylus”  To=“StylusTip” ; From=“Image”  To=“Probe”

3.Plus sever setting

格式: PlusOpenIGTLinkServer
  •  ListeningPort Port 服务器监听传入连接的端口号,通常为18944
  • OutputChannelId 数据来源通道
  • MaxNumberOfIgtlMessagesToSend每次更新发送出去的最大数量信息,默认100
  • MaxTimeSpentWithProcessingMs每次更新将数据发送给客户端需要的最大时间花销,默认50
  • SendValidTransformsOnly 只发送有效的变换数据,默认TRUE
  • DefaultClientSendTimeoutSe 默认0.5
  • DefaultClientReceiveTimeoutSec 默认0.5
  • IgtlMessageCrcCheckEnabled如果TRUE,那么传入的OpenIGTLink消息只有在其CRC有效时才被接受,默认FALSE
  • DefaultClientInfo 
    • MessageTypes      Message  Type=(IMAGE:图像;TRANSFORM三维变换矩阵;POSITION三维位置数据等)
    • TransformNames   Transform  Name="***"
    • StringNames (不常用)
    • ImageNames          Image     Name=“***”   EmbeddedTransformToFrame ("To" frame of the transform embedded in the IGTL image message)
实例:
 1 <PlusOpenIGTLinkServer 
 2   MaxNumberOfIgtlMessagesToSend="10" 
 3   MaxTimeSpentWithProcessingMs="50" 
 4   ListeningPort="18944" 
 5   MissingInputGracePeriodSec="5.0"
 6   SendValidTransformsOnly="TRUE" 
 7   OutputChannelId="SomeValidChannel" > 
 8   <DefaultClientInfo> 
 9     <MessageTypes> 
10       <Message Type="IMAGE" />
11       <Message Type="TRANSFORM" />
12     </MessageTypes>
13     <TransformNames>
14       <Transform Name="StylusTipToReference" /> 
15       <Transform Name="ProbeToReference" /> 
16     </TransformNames>
17   </DefaultClientInfo>
18 </PlusOpenIGTLinkServer>

4.FQA

如何利用多种设备收集数据(如图像流、跟踪数据流)? 1.将所有的硬件设备采集配置放在<DataCollection>域内; 2.添加Virtual Mixer设备,创建一个新的通道,包含所有硬件设备的输出信息; 一般情况下,一个Mixer设备就足够了,但是为了防止多个通道分别包含不同的内容,可以添加使用多个Mixer设备。
1     <Device Id="TrackedVideoDevice" Type="VirtualMixer" >
2       <InputChannels>
3         <InputChannel Id="TrackerStream" />
4         <InputChannel Id="VideoStream" />
5       </InputChannels>
6       <OutputChannels>
7         <OutputChannel Id="TrackedVideoStream"/>
8       </OutputChannels>
9     </Device>

5.References

https://app.assembla.com/spaces/plus/wiki
上一篇:3D Slicer Scripted Module


下一篇:给3D Slicer的Python插件加OpenCV库