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 - Fatal编程技术网

下标赋值维度不匹配。在matlab中

下标赋值维度不匹配。在matlab中,matlab,image-processing,Matlab,Image Processing,我真的对它所显示的错误感到困惑。下面是从目录中读取多个tiff图像并将其转换为.mat的代码。显然,运行.mat文件的其他代码需要使用此代码本身生成的文件。代码如下 function data=VBSreadtiff(directoryName) % data=TPMreadtiff(directoryName) % directoryName = 'data/XYt-071212'; dsep = CheckDirectoryName(directoryName); files = d

我真的对它所显示的错误感到困惑。下面是从目录中读取多个tiff图像并将其转换为.mat的代码。显然,运行.mat文件的其他代码需要使用此代码本身生成的文件。代码如下

function data=VBSreadtiff(directoryName)
%  data=TPMreadtiff(directoryName)

% directoryName = 'data/XYt-071212';

dsep = CheckDirectoryName(directoryName);

files = dir([directoryName, dsep, '*','.tif']);

numFiles=length(files);

data.info = imfinfo(fullfile(directoryName,files(1).name));
dataType=CheckDataType(data.info);

data.img  = zeros(data.info.Width,data.info.Height, numFiles,dataType);
disp(size(data.img(:,:,:)));

for n=1:numFiles
    %disp(imread(fullfile(directoryName,files(n).name)));
    data.img(:,:,n) = imread(fullfile(directoryName,files(n).name));
 end


function dataType=CheckDataType(dataInfo)

if     dataInfo.BitDepth<=8
    dataType='uint8';
elseif dataInfo.BitDepth<=16
    dataType='uint16';
elseif dataInfo.BitDepth<=32
    dataType='uint32';
elseif dataInfo.BitDepth<=64
    dataType='uint64';
else
    error('dataSize %d cannot expressed in this machine',dataInfo.BitDepth);
end


function dsep=CheckDirectoryName(directoryName)

if exist(directoryName,'dir')~=7
    error('%s does not exist.',directoryName);
end

if strcmp(directoryName(end),filesep)
    dsep='';
else
    dsep=filesep;
end
function data=VBSreadtiff(目录名)
%数据=TPMreadtiff(目录名)
%目录名='data/XYt-071212';
dsep=检查目录名(目录名);
files=dir([directoryName,dsep,'*','.tif']);
numFiles=长度(文件);
data.info=imfinfo(fullfile(directoryName,files(1.name));
dataType=CheckDataType(data.info);
data.img=零(data.info.Width、data.info.Height、numFiles、dataType);
disp(size(data.img(:,:,:));
对于n=1:numFiles
%disp(imread(fullfile(directoryName,files(n.name)));
data.img(:,:,n)=imread(fullfile(directoryName,files(n.name));
终止
函数数据类型=检查数据类型(数据信息)

如果dataInfo.bitdepth您最好联系作者:检查
imread
上的文档。您当前的代码要求imread返回一个大小为
[宽度,高度,1]
的矩阵
imread
但是也可以返回
[宽度,高度,3]
[宽度,高度,4]
矩阵,即对于非灰度图像。在这种情况下,您的代码失败了…@sebastian很可能是对的。在第20行设置调试停止,然后只执行该行的
imread(…)
部分。然后检查返回的输出的大小。是的……谢谢@sebastian。我已经算出了那个错误,但我无法将[width,height,3]转换为[width,height,1]。关于如何将其更改为1的任何建议不,不是真的。基本上,您必须在本程序/工具箱的其余部分中找出
data.img
中应包含的格式。。。