I am having this error "Index in position 3 is invalid. Array indices must be positive integers or logical values." in my file. Can you please help me in resolving this.

12 次查看(过去 30 天)
I am trying to convert dataset from Nifti to PNG but the error is coming.
imds = imageDatastore('D:\DatasetNifti\control2', ...
'IncludeSubfolders',true,'LabelSource','foldernames','FileExtensions','.NII');
for i=1:numel(imds.Files)
info = niftiinfo(imds.Files{i});
x=info.ImageSize;
%fprintf('%d %d %d\n',x(1),x(2),x(3));
Y = niftiread(imds.Files{i});
img=uint16(Y(:,:,x(3)/2));
%imshow(img,[])
s=imds.Files{i};
s(end-2:end)='png';
imwrite(img,s);
end
After running the code below is a error which is coming.
Index in position 3 is invalid. Array indices must be positive integers or logical values.
Error in DataConversion (line 8)
img=uint16(Y(:,:,x(3)/2));

采纳的回答

Antoni Garcia-Herreros
编辑:Antoni Garcia-Herreros 2023-4-13
Hello Muhammad,
Most likely your x(3) value will be and odd integer, therfore when you divide it by 2 you'll have a float.
You should round the result of x(3)/2
img=uint16(Y(:,:,round(x(3)/2)));

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Biomedical Imaging 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by