동등한 크기의 큰 3D 이진 이미지를 Java로 많이 저장하려고합니다. 나의 현재의 생각 과정은 바이트의 각 비트에 정보를 저장하는 것이다. 따라서 한 이미지의 공간에서 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 []를 반복하지 않고 byte []에있는 모든 원소의 n 번째 비트를 얻으시겠습니까? 이상 적으로는 HashMap (현재 사용하고있는 것)에서 조회를 빨리 얻고 싶습니다.
감사
PS 효율적 이진 이미지의 집합을 저장하고 신속하게 얻을/설정하는 또 다른 방법이 있다면, 나는 모든 귀 해요.
당신이 "는 HashMap에 최대한 빨리 조회"에서하십시오 무슨 뜻인지 명확히 수 있을까? –
신청 과정에서이 이미지에 실시간으로 액세스해야합니다. HashMap을 사용하면이 작업을 수행 할 수 있습니다. byte []에서 vtkImageData 로의 변환이 실시간이 아니면이 방법은 작동하지 않습니다. – Jon