Hello,

switching to 64-bit Python and OS might help. I can display 8bit images 
up to 8459x8459 with imshow on Windows 7 64-bit with 8GB RAM. Python 
then uses about 5.5 GB RAM according to task manager. A 8460x8460 or 
larger 8bit images crash Python (definitely a bug). The 32-bit 
interpreter starts throwing MemoryErrors around 4350x4350 pixels. The 
exact limits will depend on the application, OS, and free RAM.

Christoph

On 12/15/2009 9:15 AM, Wellenreuther, Gerd wrote:
> Well, I am trying to create an overlay, *one* picture showing all 34
> images. So I am only trying to create a single figure.
>
> I just attached an example so you can get an idea (it was downsampled
> for mailing, the original picture has ca. 5500 x 6500 pixels). In the
> end, I just want to save the image to the disk, so I am using 'Agg' as
> the backend - hope this also saves me some memory.
>
> And about "old" images: I am always starting a completely new
> python-process for each stitching (one at a time).
>
> Cheers, Gerd
>
> Perry Greenfield wrote:
>> Are you clearing the figure after each image display? The figure
>> retains references to the image if you don't do a clf() and thus you
>> will eventually run out of memory, even if you delete the images (they
>> don't go away while matplotlib is using them).
>>
>> Perry
>>
>> On Dec 15, 2009, at 10:32 AM, Wellenreuther, Gerd wrote:
>>
>>> Dear all,
>>>
>>> I am trying to write a script to be used with our microscope, stitching
>>> images of various magnifications together to yield a big picture of a
>>> sample. The preprocessing involves operations like rotating the picture
>>> etc., and finally those pictures are being plotted using imshow.
>>>
>>> Unfortunately, I am running into memory problems, e.g.:
>>>
>>>> C:\Python26\lib\site-packages\PIL\Image.py:1264: DeprecationWarning:
>>>> integer argument expected, got float
>>>> im = self.im.stretch(size, resample)
>>>> Traceback (most recent call last):
>>>> File "F:\Procs\Find_dendrites.py", line 1093, in <module>
>>>> file_type="PNG",do_stitching=do_stitching,do_dendrite_finding=do_dendrite_finding,down_sizing_factor=48,dpi=600)
>>>>
>>>> File "F:\Procs\Find_dendrites.py", line 1052, in process_images
>>>> scale,aspect_ratio,dpi,left,right,bottom,top)
>>>> File "F:\Procs\Find_dendrites.py", line 145, in stitch_images
>>>> pylab.draw()
>>>> File "C:\Python26\lib\site-packages\matplotlib\pyplot.py", line 352,
>>>> in draw
>>>> get_current_fig_manager().canvas.draw()
>>>> File
>>>> "C:\Python26\lib\site-packages\matplotlib\backends\backend_agg.py",
>>>> line 313, in draw
>>>> self.renderer = self.get_renderer()
>>>> File
>>>> "C:\Python26\lib\site-packages\matplotlib\backends\backend_agg.py",
>>>> line 324, in get_renderer
>>>> self.renderer = RendererAgg(w, h, self.figure.dpi)
>>>> File
>>>> "C:\Python26\lib\site-packages\matplotlib\backends\backend_agg.py",
>>>> line 59, in __init__
>>>> self._renderer = _RendererAgg(int(width), int(height), dpi,
>>>> debug=False)
>>>> RuntimeError: Could not allocate memory for image
>>>
>>> or
>>>
>>>> Traceback (most recent call last):
>>>> File "F:\Procs\Find_dendrites.py", line 1093, in <module>
>>>> file_type="PNG",do_stitching=do_stitching,do_dendrite_finding=do_dendrite_finding,down_sizing_factor=48,dpi=75)
>>>>
>>>> File "F:\Procs\Find_dendrites.py", line 1052, in process_images
>>>> scale,aspect_ratio,dpi,left,right,bottom,top)
>>>> File "F:\Procs\Find_dendrites.py", line 142, in stitch_images
>>>> pylab.imshow(rotated_images[i],aspect='auto')
>>>> File "C:\Python26\lib\site-packages\matplotlib\pyplot.py", line
>>>> 2046, in imshow
>>>> ret = ax.imshow(X, cmap, norm, aspect, interpolation, alpha, vmin,
>>>> vmax, origin, extent, shape, filternorm, filterrad, imlim, resample,
>>>> url, **kwargs)
>>>> File "C:\Python26\lib\site-packages\matplotlib\axes.py", line 6275,
>>>> in imshow
>>>> im.set_data(X)
>>>> File "C:\Python26\lib\site-packages\matplotlib\image.py", line 291,
>>>> in set_data
>>>> self._A = pil_to_array(A)
>>>> File "C:\Python26\lib\site-packages\matplotlib\image.py", line 856,
>>>> in pil_to_array
>>>> x = toarray(im)
>>>> File "C:\Python26\lib\site-packages\matplotlib\image.py", line 831,
>>>> in toarray
>>>> x = np.fromstring(x_str,np.uint8)
>>>> MemoryError
>>>
>>>
>>> I already implemented some downscaling of the original images (ca. 3200
>>> x 2400 pixels), to roughly match the figures dpi-setting. But this does
>>> not seem to be the only issue. The script does work for dpi of 600 or
>>> 150 for 11 individual images, yielding e.g. a 23 MB file with 600 dpi
>>> and 36 Megapixels. But it fails for e.g. 35 images even for 75 dpi.
>>>
>>> I was trying to throw away any unneccessary data using del + triggering
>>> the garbage collection, but this did not help beyond a certain point.
>>> Maybe somebody could tell me what kind of limitations there are using
>>> imshow to plot a lot of images together, and how to improve?
>>>
>>> Some more info: I am using Windows. Just by judging from the
>>> task-manager, the preprocessing is not the problem. But *plotting* the
>>> images using imshow seems to cause an increase of memory consumption of
>>> the task of 32-33 MB *each* time. Somewhere around a total of 1.3 - 1.5
>>> Gigs the process dies ...
>>>
>>> Thanks in advance,
>>>
>>> Gerd
>>> --
>>> Dr. Gerd Wellenreuther
>>> beamline scientist P06 "Hard X-Ray Micro/Nano-Probe"
>>> Petra III project
>>> HASYLAB at DESY
>>> Notkestr. 85
>>> 22603 Hamburg
>>>
>>> Tel.: + 49 40 8998 5701
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> Return on Information:
>>> Google Enterprise Search pays you back
>>> Get the facts.
>>> http://p.sf.net/sfu/google-dev2dev
>>> _______________________________________________
>>> Matplotlib-users mailing list
>>> Matplotlib-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>
>
>
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev
>
>
>
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to