W
wbsmith
hello all,
i am using python (2.5) with the PIL (latest [last?] release), and i
am trying
to read in these 3-d tiff images we have. basically, i am following
some
example code that iterates through the images in the 3-d tiff file
like this:
import Image
import numpy
img = Image.open("myFile.tif")
imgArray = numpy.zeros( ( img.size[0], img.size[1], numFrames ),
numpy.uint8 )
frame = 0
try:
while 1:
img.seek( frame )
imgArray[:,:,frame] = img
frame = frame + 1
except EOFError:
img.seek( 0 )
pass
and i have to get "numFrames" by initializing a counter to zero,
looping
through the same "seek" statement, and returning the counter once EOF
has been reached.
two questions:
1) is there a faster way to do this? when i compare the time required
to
run this code versus analogous matlab code, the python version is
about
2 times slower (on average, 1.88 times slower when i time it with a
bunch
of different images). this may not seem like a lot, but when the
images
are frequently more than 1GB, it can add up.
2) is there a better way to get the numFrames (or to combine getting
the
numFrames with the rest of the code) so that i do not have to iterate
over
the seek() function twice?
any help/suggestions much appreciated...
thanks,
bryan
i am using python (2.5) with the PIL (latest [last?] release), and i
am trying
to read in these 3-d tiff images we have. basically, i am following
some
example code that iterates through the images in the 3-d tiff file
like this:
import Image
import numpy
img = Image.open("myFile.tif")
imgArray = numpy.zeros( ( img.size[0], img.size[1], numFrames ),
numpy.uint8 )
frame = 0
try:
while 1:
img.seek( frame )
imgArray[:,:,frame] = img
frame = frame + 1
except EOFError:
img.seek( 0 )
pass
and i have to get "numFrames" by initializing a counter to zero,
looping
through the same "seek" statement, and returning the counter once EOF
has been reached.
two questions:
1) is there a faster way to do this? when i compare the time required
to
run this code versus analogous matlab code, the python version is
about
2 times slower (on average, 1.88 times slower when i time it with a
bunch
of different images). this may not seem like a lot, but when the
images
are frequently more than 1GB, it can add up.
2) is there a better way to get the numFrames (or to combine getting
the
numFrames with the rest of the code) so that i do not have to iterate
over
the seek() function twice?
any help/suggestions much appreciated...
thanks,
bryan