[Insight-users] ImageSeriesReader memory allocation for large datasets

Marius Erdt marius.erdt at gmx.de
Tue Apr 15 11:01:55 EDT 2008


Hello Luis,

I added the output to the file and loaded a data set of 809 slices of 
16-Bit PNG images with a resolution of 573x330. This is the result:

Number of pixels requested = 152973810
Bytes per pixel = 4

so the size should be ~583 Mb in total. However, the memory could not be 
allocated.

regards,
Marius

Luis Ibanez wrote:
>
>
> Hi Marius,
>
>
>
>    Could you please help us to track this problem ?
>
>
>
> Please do the following:
>
>
> Edit the file:
>
>    Insight/Code/Common/itkImportImageContainer.txx
>
> and in lines 182 - 196 you will find the following code:
>
>   try
>     {
>     data = new TElement[size];
>     }
>   catch(...)
>     {
>     data = 0;
>     }
>   if(!data)
>     {
>     // We cannot construct an error string here because we may be out
>     // of memory.  Do not use the exception macro.
>     throw MemoryAllocationError(__FILE__, __LINE__,
>                                 "Failed to allocate memory for image.",
>                                 ITK_LOCATION);
>     }
>
>
>
> Could you please add a print out for the value of "size" in line 183,
>
>    std::cout << "Number of pixels requested = " << size << std::endl;
>
> and also add a printout for the sizeof(TElement), just to make sure
> that we know how much a pixel is taking in memory:
>
>    std::cout << "Bytes per pixel = " << sizeof(TElement) << std::endl;
>
>
>
>
> Then attempt to load your series again....
>
>
> Please let us know what numerical values you get from these two
> print outs.
>
>
>
>      Thanks
>
>
>         Luis
>
>
>
> -------------------
> Marius Erdt wrote:
>> Hello Luis,
>>
>> I'm using a 32-Bit windows, but the process memory limit should not 
>> be a problem since the data consumes just about 500 Mb in total. The 
>> data is not copied or processed in advance, but just loaded using the 
>> itk image series reader.
>>
>> The number of pixels of my data is 573x330 in all slices. However, I 
>> experience the same problem when loading big medical data sets of 
>> 512x512. I don't know if it is maybe a problem with the total amount 
>> of slices that can be handled by the itk image series reader or if it 
>> is another issue.
>> Does anyone know if the itk reader has some built in memory limit?
>>
>> Regards,
>> Marius
>>
>>
>> Luis Ibanez wrote:
>>
>>> Are you running this in a Windows 64 bits machine ?
>>>
>>> Otherwise, Windows 32 processes can only manage 2Gb of RAM
>>> regardless whether you have more RAM available in your machine.
>>>
>>> BTW: you mention the number of slices, and the number of bits
>>>      per pixel, but not the number of pixels per slice.
>>>      Could you please clarify ?
>>>
>>>>
>>>> I'm getting the following memory allocation error together with the 
>>>> itk::ImageSeriesReader when loading series of png images:
>>>>
>>>> d:\itk\src\insighttoolkit-3.4.0\code\common\itkImportImageContainer.txx:188: 
>>>>
>>>> Failed to allocate memory for image.
>>>>
>>>> However, the data (about 1000 slices of 16Bit png or ~560 Mb) 
>>>> should fit into main memory (4Gbyte). Since the data is just 
>>>> loaded, the Windows data allocation limit for a single process 
>>>> should also not be the problem.
>>>>
>>>> I'm experiencing this behavior not just for png images but for all 
>>>> big datasets I want to load with itk. Does anyone know what exactly 
>>>> the problem is or how to load such big data sets with itk?
>>>>
>>>> Thanks for help,
>>>> Marius
>>>> _______________________________________________
>>>> Insight-users mailing list
>>>> Insight-users at itk.org
>>>> http://www.itk.org/mailman/listinfo/insight-users
>>>>
>>>
>>
>>
>



More information about the Insight-users mailing list