在我的APP应用程序中,需要从图像集(MRC图像)加载体积数据,并将像素数据存储在内存中(因为图像是灰度的,所以每个像素一个字节)。
我的开发环境是QT框架,MinGW for Windows和GCC for Linux。
现在,我使用简单的数据结构将volumedata存储为:
无符号char * volume data;
而且,分配得大的话,会变成以下情况。
卷数据=newunsignedchar [ imagex size * image ysize * numofimages ]
以下是访问特定平面的图像数据的重要方法。 例如
无符号char * getxyplaneslice (intz _ value;
无符号char * getyzplaneslice (intx _ value;
无符号char * getzxplaneslice (inty _ value;
我的数据结构很简单,可以很容易地实现上述方法。
如何避免碎片化? 即使当前有1000x1000x200数据,当APP应用程序崩溃时也会发生分配错误。
另外,用户应该可以对体数据执行一些图像处理过滤器,或者将其重置为原始像素值。
也就是说,我应该保存两个体数据。
无符号*volumeDataOriginal;
无符号char*volumeDataCurrent;
因此,2000x2000x1000的数据范围大约使用8Gb。 每个卷使用4Gb。
但是在Win32上,地址空间为4GB。 怎么解决这个问题? 我应该使用64位APP应用程序吗?
这是我的APP应用程序的快照
基本上,加载体数据,从图像集、MRC格式等,XY、asjddp和YZ.Image显示XY平面查看器。 要在特定平面上显示图像,必须保留三种或更多种数据访问方法。 滑块用户可以更改在选定平面上显示的图像。)
早点谢谢你。