MATLAB: Storing pixel information in 4D array..

3d array4d arraydicomdimension mismatchpixel values

Hi,
So I have a set (a stack?) of 2D images and I have them stored in a 3D array. I now want to compare pixel values throughout the images, so I would compare…
images(1,1,1), images(1,1,2), images(1,1,3) etc...
and then
images(1,2,1), images(1,2,2), images(1,2,3) etc...
So far I have…
for j = 1:length(dat) [img, map] = dicomread(char(dat(j,1))); images(:,:,j) = img; end
valsZ = cell(size(images, 3), 2); valsX = cell(size(images, 3), 2, size(images, 2));
for x = 1:size(images, 2)
for z = 1:size(images, 3)
imgVal = images(y,x,z);
valsZ(z,:) = {z, imgVal};
end
valsX(x,:,:) = {x, valsZ(1,:), valsZ(2,:)};
end
I think I would need to create a 4D array to store the pixel information so that I have a 2D array of pixel value and image number within a 3D array that defines which column the data is in and then a 4D array for which row the data is in.
At the moment I am getting a 'Subscripted assignment dimension mismatch' error for valsX. Any help would be great! Thanks!

Best Answer

It sounds complicated. Why not just use the images array that you have now? MATLAB indexing lets you access rows and slices of any matrix or array, very easily. For example, to get these values in a vector:
images(1,1,1), images(1,1,2), images(1,1,3), etc
just use
images(1,1,:)
which you can then use to perform any kind of comparison or operation on, including any vectorized operations .
Related Question