Plus applications user manual  2.7.0.3de27e5
Software library for tracked ultrasound image acquisition, calibration, and processing.
Enhance US sequence (EnhanceUsTrpSequence)

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.

Device configuration settings

Example configuration file PlusDeviceSet_Server_Ultrasonix_C5-2_TransverseProcessEnhancer_2Processing.xml

<PlusConfiguration version="2.1">
<DataCollection StartupDelaySec="1.0" >
<DeviceSet
Name="PlusServer: Ultrasound transverse process enhancer component 2: Processing"
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>
<!-- These capture devices allow you to save and compare the same sequence, before and after processing, if both EnableCapturingOnStart="True". -->
<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>
<!-- Enable this Server's port in Slicer to see the processed image -->
<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>