我想用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