Quais são as formas possíveis e eficientes de memória para armazenar várias imagens de tamanho fixo e tipos de dados no Matlab?
Estou tentando entender as maneiras mais eficientes de memória para armazenar várias imagens do mesmo tamanho no Matlab.
Tudo o que escrevo aqui é baseado no meu pouco conhecimento e pode não ser preciso.
Até agora, eu sei que podemos ler imagens em matrizes de células, matrizes multidimensionais, estruturas.
num_imgs = 100;
nrow = 512;
ncol = 512;
cellArray = cell(1,num_imgs);
cellArray(1,:) = {zeros(nrow,ncol,'logical')};
threeDArray = zeros(nrow,ncol,num_imgs,'logical');
structArray(1:num_imgs ) = struct('Image', zeros(nrow,ncol,'logical'));
quem é
Name Size Bytes Class Attributes
cellArray 1x100 26225600 cell
ncol 1x1 8 double
nrow 1x1 8 double
num_imgs 1x1 8 double
structArray 1x100 26225664 struct
threeDArray 512x512x100 26214400 logical
A partir dissothreeDArray
é melhor, pois não precisa de ponteiros para matrizes consecutivas.
enquanto que,cellArray
é o segundo melhor, pois só precisa de ponteiros para cada matriz de 8 bytes extras (ou seja, 100 * 8 bytes mais).
Finalmente, as estruturas precisam de um pouco mais, dependendo da tag de cada campo, eu acho.
Agora,
Existem outras maneiras possíveis de fazer isso.
Qual é a maneira mais eficiente de memória para leitura, gravação e outros parâmetros importantes que afetam o desempenho do seu código?
Eu entendo que as células têm ponteiros para que cada elementocellArray
não precisa ser armazenado contiguamente na memória, enquantothreeDArray
precisa de memória contígua.
Alguém pode explicar esse tipo de fatores que afetam o desempenho em detalhes?