I read 3D volume whose size 240x240x155 and I want to read slice by slice and wants to apply feature extraction techniques on them How I can read one slice than other?
2 次查看(过去 30 天)
显示 更早的评论
Hello Please, may you help me to read the 3D volume in MATLAB?
v=niftiread('Brats17_2013_2_1_flair.nii.gz');
figure, imshow(v(:,:,85),[]);
%how to read slice#1 than slice#2 and so on
0 个评论
采纳的回答
Walter Roberson
2018-6-2
for slicenumber = 1 : size(v,3)
this_slice = v(:,:,slicenumber);
this_result = YourFeatureExtractionCallGoesHere(this_slice);
all_results{slicenumber} = this_result;
end
Sometimes other data structures would be more appropriate than a cell array: it depends on what data type is returned by YourFeatureExtractionCallGoesHere
3 个评论
Walter Roberson
2018-6-8
Yes, but it is unlikely that would be efficient if you are still building the data structure.
If you have a cell array in which the entries are all the same size, then you can use something like
cat(3, all_results{:})
to get a 3 dimensional array of the component parts.
But if that was your aim, then better would be to just store them in 3D in the first place:
numslices = size(v,3);
for slicenumber = 1 : numslices
this_slice = v(:,:,slicenumber);
this_result = YourFeatureExtractionCallGoesHere(this_slice);
all_results(:,:,slicenumber) = this_result;
if slicenumber == 1 && numslices ~= 1
all_results(end,end,numslices) = 0;
end
end
The if logic there takes the 2d array all_results of unknown size and extends it to have numslices panes in an efficient way
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Basic Display 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!