Я работаю со стопами изображений микроскопии. По стека То есть пара изображений приобрели один поверх другого, как показано на этой самой самодельного схеме: (извините за качество), где:Векторизовать отрезанный вид стека изображений в Matlab
Н = высота изображения в пикселях
W = Ширина изображения в пикселях
Z = количество фрагментов в стеке (т.е. количество изображений).
То, что я хочу сделать, это мера, для каждой позиции «высоты» в стеке, ортогональной «вид WZ», т.е. отрезан вид вдоль прямоугольника, такие как красный один на изображении , Сейчас у меня есть следующий код, который хорошо работает:
DummyProjMatrixYZ = zeros(SliceNumber,ImageWidth,ImageHeight,3,'uint16');
for h = ImageHeight:-1:1
for z = 1:SliceNumber
DummyProjMatrixWZ(z,:,h,:) = MovieCell{z}(h,:,:); % MovieCell is a cell array containing the individual frames (i.e. slices in the stack) of dimensions (Height,Width,3).
end
end
код работает отлично, но я должен перебрать целые кусочки для каждого «высота блока», который не является оптимальным при всех.
Мой вопрос: Как можно было бы векторизовать предыдущий код, чтобы получить скорость, так как в конечном итоге я буду работать с довольно большими наборами данных. Наверное, у меня есть замораживание мозга и я не знаю, как это сделать эффективно.
1) Какой размер MovieCell? , 2) почему он находится в массиве ячеек, а не в 4D-матрице? – bla
@ natan 1) MovieCell имеет размер (1, z), где z - это число ломтиков, то есть от 20 до 200 нормально. 2) Это в массиве ячеек, потому что это было намного проще для предыдущих манипуляций, которые я имел в виду с изображениями в нем. Но я согласен с тем, что имеет смысл хранить изображения в 4D-матрице. –
, если его просто z всего лишь 20-200, почему бы не остаться с петлей? сколько времени вы бы спасли? – bla