Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab中求解索引超矩阵维数?_Matlab_Image Processing_Matrix_Dicom - Fatal编程技术网

如何在matlab中求解索引超矩阵维数?

如何在matlab中求解索引超矩阵维数?,matlab,image-processing,matrix,dicom,Matlab,Image Processing,Matrix,Dicom,我正在尝试从名为series 8的文件夹中读取一系列dicom图像。下面是从特定文件夹中读取一系列dicom图像的代码。我在info=dicominfo(fullfile(fileFolder,fileNames{1}))处得到的错误索引超过了矩阵维数 下面是两个可以做到这一点的选项。首先,围绕整个方法创建一个循环,当没有dcm文件时,由于文件名为零,循环将不会执行。第二个选项测试文件是否为空,如果为空,则不执行 clear all; close all; clc; fileFolder = f

我正在尝试从名为series 8的文件夹中读取一系列dicom图像。下面是从特定文件夹中读取一系列dicom图像的代码。我在
info=dicominfo(fullfile(fileFolder,fileNames{1}))
处得到的错误索引超过了矩阵维数


下面是两个可以做到这一点的选项。首先,围绕整个方法创建一个循环,当没有dcm文件时,由于文件名为零,循环将不会执行。第二个选项测试文件是否为空,如果为空,则不执行

clear all;
close all;
clc;
fileFolder = fullfile(pwd, 'series 8');
files = dir ( fullfile (fileFolder, '*.dcm'));
fileNames = {files.name};

%examine file header (metadata , from dicom stack)

for i=length(fileNames):-1:1
   if (i == 1)
       info = dicominfo(fullfile(fileFolder,fileNames{i}));

       %extract size info from metadata
       voxelsize = [info.PixelSpacing;info.SliceThickness];

       %read one file to get size
       I = dicomread(fullfile(fileFolder,fileNames{i}));
       classI = class(I);
       sizeI = size(I);
       numImages = length(fileNames);

       %read slice images populate 3d matrix
       hWaitBar = waitbar(0,'reading dicom files');

       %create array
       mri= zeroes(info.rows , info.columns , numImages , classI );
   else
       fname = fullfile(fileFolder, fileNames{i});
       mri(:,:,i) = unit16(dicomread(fname));
       waitbar((length(fileNames)-i+1)/length(fileNames))
   end
end
delete(hWaitBar);
第二

clear all;
close all;
clc;
fileFolder = fullfile(pwd, 'series 8');
files = dir ( fullfile (fileFolder, '*.dcm'));
fileNames = {files.name};

%examine file header (metadata , from dicom stack)
if ~isempty(files)
    info = dicominfo(fullfile(fileFolder,fileNames{1}))

    %extract size info from metadata
    voxelsize = [info.PixelSpacing;info.SliceThickness];

    %read one file to get size
    I = dicomread(fullfile(fileFolder,fileNames{1}))
    classI = class(I);
    sizeI = size(I);
    numImages = length(fileNames);

    %read slice images populate 3d matrix
    hWaitBar = waitbar(0,'reading dicom files');

    %create array
    mri= zeroes(info.rows , info.columns , numImages , classI )
    for i=length(fileNames):-1:1
        fname = fullfile(fileFolder, fileNames{i});
        mri(:,:,i) = unit16(dicomread(fname));
        waitbar((length(fileNames)-i+1)/length(fileNames))
    end

    delete(hWaitBar);
end

您可以通过确保索引不超过矩阵维度(可能是
fileNames{i}
part)来解决此问题。我只在info=dicominfo(fullfile(fileFolder,fileNames{1}))开始时出错而且不在循环中。您是否检查过以确保
文件名
不只是空的?@Dan我现在在series8文件夹中有dicom文件?我如何检查文件名不为空??
clear all;
close all;
clc;
fileFolder = fullfile(pwd, 'series 8');
files = dir ( fullfile (fileFolder, '*.dcm'));
fileNames = {files.name};

%examine file header (metadata , from dicom stack)
if ~isempty(files)
    info = dicominfo(fullfile(fileFolder,fileNames{1}))

    %extract size info from metadata
    voxelsize = [info.PixelSpacing;info.SliceThickness];

    %read one file to get size
    I = dicomread(fullfile(fileFolder,fileNames{1}))
    classI = class(I);
    sizeI = size(I);
    numImages = length(fileNames);

    %read slice images populate 3d matrix
    hWaitBar = waitbar(0,'reading dicom files');

    %create array
    mri= zeroes(info.rows , info.columns , numImages , classI )
    for i=length(fileNames):-1:1
        fname = fullfile(fileFolder, fileNames{i});
        mri(:,:,i) = unit16(dicomread(fname));
        waitbar((length(fileNames)-i+1)/length(fileNames))
    end

    delete(hWaitBar);
end