[Numpy-discussion] create a numpy array of images

Zachary Pincus zachary.pincus at yale.edu
Mon Jan 31 15:55:05 EST 2011

>>> I am using python for a while now and I have a requirement of  
>>> creating a
>>> numpy array of microscopic tiff images ( this data is 3d, meaning  
>>> there are
>>> 100 z slices of 512 X 512 pixels.) How can I create an array of  
>>> images?
>> It's quite straightforward to create a 3-d array to hold this kind  
>> of data:
>> image_block = np.empty((100, 512, 512), dtype=??)
>> now you can load it up by using some lib (PIL, or ???) to load the  
>> tif
>> images, and then:
>> for i in images:
>>     image_block[i,:,:] = i
> Notice that since PIL 1.1.6, PIL Image objects support the numpy
> interface: http://effbot.org/zone/pil-changes-116.htm

For even longer than this, PIL has been somewhat broken with regard to  
16-bit images (very common in microscopy); you may run into strange  
byte-ordering issues that scramble the data on reading or writing.  
Also, PIL's numpy interface is somewhat broken in similar ways.  
(Numerous people have provided patches to PIL, but these are never  
incorporated into any releases, as far as I can tell.)

So try PIL, but if the images come out all wrong, you might want to  
check out the scikits.image package, which has hooks for various other  
image read/write tools.


More information about the NumPy-Discussion mailing list