working with raw image files

kafooster dmozejko at gmail.com
Mon Jun 13 14:18:21 EDT 2011


I am working on some medical image data, and I try to look into
specific slice of   3d  *.raw image. I know voxels are 16 bit int, and
dimensions are 352*470*96. I checked it in some pro medical image
viewer, it is alright. However, with the code I use, I display just
white noise image.(but worked well for other, 8bit raw image).
 Also, printed size is half the original size, like it was 8 bit. I
read some documentations on PIL, numpy etc but I think I just do not
understand something.
I open image data set, I change it to array, give it dimensions,
dtype, and change it to image, right? I think there is something
messed up in 'binvalues', but dont really know how to write it in
simpler way.

P.S.1
If I want to change data type to e.g. 8 bit uint, is it just change in
scipy.array? or it requires some more changes

P.S.2
Lets say I have my array of image data and want to save it to *.raw
data set. is it array.tofile?

Here is my code

############################

import scipy as sc
from pylab import *
import array
import Image

fileobj = open("hand.raw", 'rb')
binvalues = array.array('B')
binvalues.read (fileobj, 352*470*96)
data1 = sc.array(binvalues, dtype=sc.int16)
data2 = sc.reshape(data1, (352,470,96))
fileobj.close()
print data2.size , data2.dtype

im = Image.fromarray(data2[:,:,40])
im.show()



More information about the Python-list mailing list