3d/4d

3D images can be acquired using the 3D/4D software package. To begin acquiring, press the 3D button and select either the 3D or 4D option. Adjust the yellow box over the region of interest. Press update to begin capture. If the 3D option is selected, the motor will stop after one sweep. When the 4D option is selected, the motor will continue to sweep until the freeze button is pressed.





Data Capture
When the image is frozen, capture a volume using the save option on the touchscreen. A thumbnail with a box will appear on the bottom of the screen once a 3D volume has been saved. Clicking on the thumbnail will open the volume in the 3D engine assuming it is within 24 hours of the scan.



Data Format
The volume data with a .3dd file extension is saved in the same folder location where regular print screen images are saved D:\PatientInfo\. The volume file contains the raw 2D images (not scan-converted) used to construct the 3D volume. To construct the volume from the .vol file will require scan conversion to be applied in the x-y and y-z planes.

An xml file with extension .3dd.xml is saved along with the volume data. The xml file contains additional volume information which is shown below.

 

    32.252000 43.902439 31 50.512001 200 <roiSampleNum>164</roiSampleNum> <lineNum>72</lineNum> <frame_angle>57.985119</frame_angle> <frame_offset_mm>40.000000</frame_offset_mm> <roiSampleLOffset>55</roiSampleLOffset> <roiSampleROffset>55</roiSampleROffset> </FourD>

</Params>

angle between frames = /(number of frames - 1) angle between scan lines = <frame_angle>/(number of lines - 1)

The following is the pseudo code for reading the 2D images from the .3dd data file. Note that the file only contains the non-scan converted 2D images that the Sonix exam software uses to construct the volume. In order to use this file for volume reconstruction will require scan conversion to be applied in the x-y and y-z planes.

// calculate the buffer size // Unlike data from cine buffer, there is no header info in // the 3D rendering buffer, so don't +4 for each frame

int frameSize = lineNum * sampleNum; int nDataSize = frameSize * nimages_per_volume; BYTE* data = new BYTE[nDataSize]; fread(data, 1, nDataSize, pFile); fclose(pFile); BYTE* currentframe = data;

//read each image frame for (int i = 0; i < nimages_per_volume; i++) {   // process the currentFrame myprocess(currentFrame); // go to next frmae currentframe += frameSize; }

Probe specific parameters that are used for scan conversion (such as probe radius and motor radius) can be found in the probes.xml file located in the directory C:\Program Files\Ultrasonix\Exam\data\config\. An example for the 4DC7-3 probe is shown below.

<probe enabled="1" id="15" name="4DC7-3/40"> 0      0.000000         <vendor name="Vermon"> CLA5.0/R40/128-1165(4D-PROBE) 00.035.071      4DC7-4_40.png 0        0         0         0         4500000         3600000       300000       15000       <minFocusDistanceDoppler>80000</minFocusDistanceDoppler> 120        <FOV>75000</FOV> <homeMethod>2</homeMethod> <minTimeBetweenPulses>40000</minTimeBetweenPulses> 27250        205         <homeCorrection>1</homeCorrection> <numElements>128</numElements> <pinOffset>0</pinOffset> 425      40000         0         <tempAngleSensor>0</tempAngleSensor> 0      <muxWrap> <Rx>0</Rx> <Tx>0</Tx> </muxWrap> <elevationLength>1.0</elevationLength> <maxPwPrp>800</maxPwPrp> <invertedElements>0</invertedElements>