Записать черно-белое изображение в массив логических 3D-вокселей?
Каков наилучший вариант с низким объемом памяти для чтения стека черно-белых изображений, который содержит значения ISO тома 0/1, и записи его в массив логических вокселей? то есть 2k изображения 2k квадратов пикселей обеспечивают 800 МБ логического значения.
Я начал писать логический 3D-массив логический [z,y,x]... и он не работает?!: Мне нужен массив логических 2D-массивов [x,y](как?)
Я уже написал программу, которая пересекает стопку изображений через X,Y, чтобы обнаружить край объема, то есть каждую точку пространства, где изображение изменяется от 0 до 1 и от 1 до 0, и это дает мне вершины и нормали объектов для сетки пуассоновского диска. Теперь мне нужно пройти также по Z, не загружая 2000 изображений N раз.
Воксел может составлять до 8 миллиардов вокселей.
Что мне нужно? Как я могу объявить массивы в C/C#/JS?
Спасибо за любые советы.
1 ответ
Задача состоит в том, чтобы иметь наименьший тип данных для представления значений включения / выключения для каждого вокселя. Упростите это до 10x10x10 воксельного пространства.
Хорошо создать одномерный логический массив длиной 1000, т.е.
var myvoxels : boolean[]= new boolean[x*y*z];
а затем получить доступ к нему с помощью функции:
function boolreturn(x,y,z) : boolean
{
return myvoxels[ z*10*10+y*10+x]
}
поэтому последний воксел размером 10x10x10 имеет позицию массива 900 + 90 + 9 = 999.
он работает так же с 100 вокселями и с 8 миллиардами из них.
я подумал, что это сложнее, чем использование 1d-массива, потому что я преобразовал код движущихся кубов, который читает все пробелы как по модулю, так и devide / float, чтобы узнать, где находится объект в 1d-массиве, что может привести к умственным нагрузкам и замедлить код в 3D. вышесказанное должно облегчить.