我想用Java存储大量大小相同的大型3D二进制图像。我目前的思考过程是将信息存储在字节[]的每个位中。因此,在一幅图像的空间中,我可以有效地存储8幅图像(每比特一幅图像)。我有以下循环来获取/设置图像数据。二进制图像数据的有效存储
集
final byte[] storedArray = organData.get(imageNumber);
final short[] binaryArray = getArray(binaryOrgan);
int i=0;
for (short binaryData : binaryArray) {
byte storedData = (byte)storedArray[i];
if (binaryData == 0)
storedData &= ~(1 << bitNumber);
else
storedData |= (1 << bitNumber);
storedArray[i] = storedData;
++i;
}
获取
final byte[] storedArray = organData.get(imageNumber);
final short[] binaryArray = getArray(binaryImage);
int i=0;
for (short storedData : storedArray) {
binaryArray[i] = (short)((storedData >> bitNumber) & 1);
++i;
}
目前这些工作正常但是它们速度过慢。有没有办法加快这一点?例如,只需获取byte []中每个元素的第n位而不需要迭代byte []?理想情况下,我希望能像在HashMap中查找一样快(这是我目前使用的)。
感谢
PS如果有另一种方式来有效地存储和快速获取/设置一组二进制图像,我所有的耳朵。
你能否澄清你所说的“以最快的速度HashMap中的查找”是什么意思吗? – 2011-03-29 20:14:16
在我的应用程序过程中,我必须实时访问这些图像。 HashMap允许我这样做。如果从byte []到vtkImageData的转换不是实时的,那么这将不起作用。 – Jon 2011-03-29 21:42:34