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/>
需要探讨的就是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