3D dicom dataset

Purpose and description

The 3D DICOM testing dataset contains dicom files simulating CT scans through imaginary scene. Scans are made in axial, oblique and gantry tilt like planes. Additionally three scout like views are provided. All images share the same frame of reference. 
The data can be helpful in testing dicom viewers and workstations in such fields as 3D measurements, MPR and curved MPR, 3D cursor, localizer lines and many more.
The scene is build from simple mathematical primitives such as spheres, cylinders, cones. It combines simple geometry with nontrivial cuts. 

Package contents

The package contains four dicom series: axial, oblique, gantry tilt-like and scouts-like, dicomdir and license notice.
The unpacked dataset has about 847MB. Images are stored with no compression in explicit little endian transfer syntax.

License, conditions of use

Anyone can use the 3D DICOM testing dataset under the conditions of a simple BSD-like license:
Copyright (c) 2010-2011 Bartosz Wiklak <bwiklak@gmail.com>

Redistribution and use, with or without modification, are
permitted provided that the following condition is met:

Redistributions of the dataset must retain the above copyright notice, this
condition and the following disclaimer.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS PACKAGE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Scene description

  1. A big sphere, center at point (0,0,0), radius 64mm.
  2. Eight spheres, radius 10mm in each corner of a cube centered at point (0,0,0) and edge 448mm long.
  3. Additional sphere at point (224,224,0) radius 10mm.
  4. A line L starting at point ( -256,256,256 ), ending at point ( 256,-256,-256 ).
  5. 16 equally spaced spheres of radius 3mm on the L line. Distance between each center of the sphere is
    d( ( -256,256,256 ),  ( 256,-256,-256 ) )/16 = 886,8mm/16=55,4mm
  6. A cylinder: radius = 32mm, height=32mm, center at (128,128,128), the axis is aligned along anterior-posterior axis.
  7. An axis aligned cube: center at (-128,-128,-128), x, y, z length is 32mm.
  8. A cone: center at (0,-200,0), radius 32mm. The axis of a cone is aligned along left-right axis.
  9. 36 small spheres of radius 1mm aligned on z=0 plane around point O=(0,0,0) with distance to the center 128mm. The angle between center 0 and two neighbouring points is  PI/18. Euclidean distance between two neighbouring points is 128mm*sin( π/18 ) = 22,23mm. The arc length on circle centered at O and going through all points between two neighbouring points is 22.3mm.

Scene code (code fragments in vtk)

	// SPHERES
	addSphere(  224, 224,   0  ,10 );
	addSphere    (  224, 224,-224,10 );
	addSphere(  224, 224,-224,10 );
	addSphere( -224, 224,-224,10 );
	addSphere( -224,-224,-224,10 );
	addSphere(  224,-224,-224,10 );
	addSphere(  224, 224, 224,10 );
	addSphere( -224, 224, 224,10 );
	addSphere(  224,-224, 224,10 );
	addSphere( -224,-224, 224,10 );
	
	// BIG SPHERE
	addSphere(    0,   0,   0,64);
	
	// CIRCLE OF SPHERES
	double x,y,z;
	const double r = 128;
	for( double i=0; i<=2*PI; i+=PI/18. ){
		x = r*cos(i);
		y = r*sin(i);
		z = 0;
		addSphere( x,y,z,3 );
	}
	
	// LINE SHPERES
	for( double i=-256.; i<=256.; i+=32. ){
		x = 1*i;
		y =-1*i;
		z =-1*i;
		addSphere( x,y,z,3 );
	}
	
	// ADD CYLINDER
	vtkCylinderSource *cylinder = vtkCylinderSource::New();
	cylinder->SetCenter(128,128,128);
	cylinder->SetRadius(32);
	cylinder->SetHeight(32);
	cylinder->SetResolution(180);
	cylinder->CappingOff();
	
	// ADD CUBE
	vtkCubeSource *cube = vtkCubeSource::New();
	cube->SetCenter(-128,-128,-128);
	cube->SetXLength(32);
	cube->SetYLength(32);
	cube->SetZLength(32);
	
	// ADD LINE
	vtkLineSource *line = vtkLineSource::New();
	line->SetPoint1(256,-256,-256);
	line->SetPoint2(-256,256,256);
	
	// ADD CONE
	vtkConeSource *cone = vtkConeSource::New();
	cone->SetCenter(0,-200,0);
	cone->SetRadius(32);
	cone->SetResolution(180);
	cone->SetHeight(256);

Scene screenshots

1) Paraview - VTK polydata


2) DICOM ( taken in RSR2 - Polish dicom image viewer )

Download 

Take a look at Attachments paragraph at the bottom of the site.
ċ
DICOM3DDATASET_v1.0.zip
(2736k)
Bartosz Wiklak,
Jun 15, 2010, 2:03 AM
Comments