package require vtk

# Image pipeline

vtkImageReader reader
  reader ReleaseDataFlagOff
  reader SetDataByteOrderToLittleEndian
  reader SetDataExtent 0 63 0 63 1 93
  reader SetDataSpacing 3.2 3.2 1.5
  reader SetDataOrigin -100.8 -100.8 -69
  reader SetFilePrefix "$VTK_DATA_ROOT/Data/headsq/quarter"
  reader SetDataMask 0x7fff
  reader Update

vtkPoints p1
vtkPoints p2

p1 InsertNextPoint 0 0 0
p2 InsertNextPoint -60 10 20
p1 InsertNextPoint -100 -100 -50
p2 InsertNextPoint -100 -100 -50
p1 InsertNextPoint -100 -100 50
p2 InsertNextPoint -100 -100 50
p1 InsertNextPoint -100 100 -50
p2 InsertNextPoint -100 100 -50
p1 InsertNextPoint -100 100 50
p2 InsertNextPoint -100 100 50
p1 InsertNextPoint 100 -100 -50
p2 InsertNextPoint 100 -100 -50
p1 InsertNextPoint 100 -100 50
p2 InsertNextPoint 100 -100 50
p1 InsertNextPoint 100 100 -50
p2 InsertNextPoint 100 100 -50
p1 InsertNextPoint 100 100 50
p2 InsertNextPoint 100 100 50

vtkThinPlateSplineTransform transform
  transform SetSourceLandmarks p1
  transform SetTargetLandmarks p2
  transform SetBasisToR

vtkTransformToGrid gridThinPlate
  gridThinPlate SetInput transform
  gridThinPlate SetGridExtent 0 64 0 64 0 50
  gridThinPlate SetGridSpacing 3.2 3.2 3.0
  gridThinPlate SetGridOrigin -102.4 -102.4 -75
  gridThinPlate SetGridScalarTypeToUnsignedChar

vtkGridTransform gridTransform
  gridTransform SetDisplacementGrid [gridThinPlate GetOutput]
  gridTransform SetDisplacementShift [gridThinPlate GetDisplacementShift]
  gridTransform SetDisplacementScale [gridThinPlate GetDisplacementScale]

vtkImageReslice reslice
  reslice SetInputConnection [reader GetOutputPort]
  reslice SetResliceTransform gridTransform
  reslice SetInterpolationModeToLinear
  reslice SetOutputSpacing 1 1 1

vtkImageViewer viewer
  viewer SetInputConnection [reslice GetOutputPort]
  viewer SetZSlice 70
  viewer SetColorWindow 2000
  viewer SetColorLevel 1000
  viewer Render



