[vtkusers] Image volume conversion
    James Carroll 
    jim at microbrightfield.com
       
    Wed Jun  8 13:44:39 EDT 2005
    
    
  
 
Hi,
 
I'm trying to do an image stack conversion from a 16bit TIFF with 50
different (multi-tiff style) z planes in it to an 8 bit TIFF, and I'll
want to do some math as a filter in-between.
 
How can I have it read, filter and write an entire volume?  The
SetFileDimensionality(3) doesn't seem to pick up the different images in
the multi-tiff.
 
The weired part is that the format is 16 bit unsigned integer, but vtk
GetScalarRange() gives 3.0 to 11.0 which is really narrow, and floating
point?  I know there are more than 8 different pixel intensities.
 
tiffinfo gives me the following information:
TIFF Directory at offset 0xfaa
  Subfile Type: (0 = 0x0)
  Image Width: 1360 Image Length: 1036
  Resolution: 72, 72 pixels/inch
  Bits/Sample: 16
  Sample Format: unsigned integer
  Compression Scheme: None
  Photometric Interpretation: min-is-black
  Samples/Pixel: 1
  Rows/Strip: 1036
  Planar Configuration: single image plane
 
Here's my best guess so far, 
 
import vtk
 
reader = vtk.vtkTIFFReader()
reader.SetFileDimensionality(3)
reader.SetFileName("D:/TestStack.tiff")
 
# iterate over the entire stack, and see what the min/max of the pixel
# values really is
reader.Update()
minmax = reader.GetOutput().GetScalarRange()
print "The pixel values fall between", minmax
# this prints float 3.0 to 11.0
# I'm confused why an unsigned integer tiff gives a float scalar
# range, if it's really integer 3 - 11 that's too narrow a dynamic
range.
 
bounds = reader.GetOutput().GetBounds()
print "The Bounds are", bounds
# prints (0.0, 1359.0, 0.0, 1035.0, 0.0, 0.0)
# I'd expect the z bounds to be 0.0  to 49.0
 
# eventually...
#scale = vtk.vtkImageShiftScale()
# shift all the 16 bit pixels eight bits to the left
#scale.SetScale(256.0) 
#scale.SetOutputScalarTypeToChar (   ) 
 
 
# write an 8 bit grayscale tiff stack for the entire volume
writer = vtk.vtkTIFFWriter()
writer.SetFileName("D://wood.tiff")
 
writer.SetInput(reader.GetOutput())
writer.Write()
# only one plane gets written, and it's totally black
 
Thanks for the help!
-Jim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20050608/2c8a9c8e/attachment.htm>
    
    
More information about the vtkusers
mailing list