Storing pixel information in 4D array..

조회 수: 4 (최근 30일)
Shaun
Shaun 2015년 2월 17일
편집: Stephen23 2015년 2월 17일
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!

채택된 답변

Stephen23
Stephen23 2015년 2월 17일
편집: Stephen23 2015년 2월 17일
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 .
  댓글 수: 1
Shaun
Shaun 2015년 2월 17일
Thanks, I did try that but not in the right way!!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by