Записать черно-белое изображение в массив логических 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. вышесказанное должно облегчить.

Другие вопросы по тегам