This device applies a series of vtk image filter processing steps to US images. Filter parameters are read from the ImageProcessingOperations element of the config file.
<PlusConfiguration version="2.1">
<DataCollection StartupDelaySec="1.0" >
<DeviceSet
Name="PlusServer: Ultrasound transverse process enhancer component 2: Processing - with tracking"
Description="Runs on 64-bit processing machine. Receives tracked ultrasound frames at port 18944 from the 32-bit PlusServer running on the Ultrasonix machine (change ServerAddress from localhost to Ultrasonix IP), segments bone surfaces, and sends tracked bone frames to an IGTLink client at port 18945 in Slicer" />
<Device
Id="OpenIGTLinkVideoReceiveDevice"
Type="OpenIGTLinkVideo"
MessageType="TRACKEDFRAME"
ServerAddress="localhost"
ServerPort="18944"
ReconnectOnReceiveTimeout="false"
UseReceivedTimestamps="false"
IgtlMessageCrcCheckEnabled="false"
AcquisitionRate="30" >
<DataSources>
<DataSource Type="Video" Id="Video" BufferSize="50" PortUsImageOrientation="UF" />
</DataSources>
<OutputChannels>
<OutputChannel Id="TrackedVideoStream" VideoDataSourceId="Video" />
</OutputChannels>
</Device>
<Device
Id="BoneEnhancer"
Type="ImageProcessor" >
<DataSources>
<DataSource Type="Video" Id="Video" PortUsImageOrientation="UF" />
</DataSources>
<InputChannels>
<InputChannel Id="TrackedVideoStream" />
</InputChannels>
<OutputChannels>
<OutputChannel Id="BoneVideoStream" VideoDataSourceId="Video" />
</OutputChannels>
<Processor Type="vtkPlusBoneEnhancer" NumberOfScanLines="200" NumberOfSamplesPerScanLine="210">
<ScanConversion
TransducerName="Ultrasonix_C5-2"
TransducerGeometry="CURVILINEAR"
RadiusStartMm="50.0"
RadiusStopMm="120.0"
ThetaStartDeg="-24"
ThetaStopDeg="24"
OutputImageSizePixel="820 616"
TransducerCenterPixel="320 35"
OutputImageSpacingMmPerPixel="0.1526 0.1526"
NumberOfSamplesPerScanLine="210"/>
<ImageProcessingOperations
SaveIntermediateResults="True"
ConvertToLinesImage="True"
ThresholdingEnabled="True"
GaussianEnabled="True"
EdgeDetectorEnabled="True"
IslandRemovalEnabled="True"
ErosionEnabled="True"
DilationEnabled="True"
ReconvertBinaryToGreyscale="True"
ReturnToFanImage="True">
<GaussianSmoothing GaussianStdDev="3" GaussianKernelSize="5"/>
<Thresholding ThresholdOutValue="0" LowerThreshold="30" UpperThreshold="255"/>
<IslandRemoval IslandAreaThreshold="700"/>
<Erosion ErosionKernelSize="5 5"/>
<Dilation DilationKernelSize="10 5"/>
<vtkPlusUsSimulatorAlgo
IncomingIntensityMwPerCm2="300"
BrightnessConversionGamma="0.2"
BrighntessConversionOffset="30"
NumberOfScanlines="128"
NumberOfSamplesPerScanline="200"
NoiseAmplitude="5.0"
NoiseFrequency="2.5 3.5 1"
NoisePhase="50 20 0"
/>
</ImageProcessingOperations>
</Processor>
</Device>
<Device
Id="RawCaptureDevice"
Type="VirtualCapture"
BaseFilename="RawRecording.igs.mha"
EnableCapturingOnStart="False" >
<InputChannels>
<InputChannel Id="TrackedVideoStream" />
</InputChannels>
</Device>
<Device
Id="ProcessedCaptureDevice"
Type="VirtualCapture"
BaseFilename="ProcessedRecording.igs.mha"
EnableCapturingOnStart="False" >
<InputChannels>
<InputChannel Id="BoneVideoStream" />
</InputChannels>
</Device>
</DataCollection>
<CoordinateDefinitions>
<Transform From="BoneImage" To="Image"
Matrix="
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1" />
</CoordinateDefinitions>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="1"
MaxTimeSpentWithProcessingMs="50"
ListeningPort="18945"
SendValidTransformsOnly="true"
OutputChannelId="BoneVideoStream" >
<DefaultClientInfo>
<MessageTypes>
<Message Type="IMAGE" />
</MessageTypes>
<ImageNames>
<Image Name="BoneImage" EmbeddedTransformToFrame="Image" />
</ImageNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
</PlusConfiguration>