我有这个matlab代码用于创建多个图像的平均值: CD( 'C:\图像')
all_images=dir('*.jpg');
[sj,xx]=size(all_images);
j=1;
file_name=char(all_images(j).name);
tmp=imread(file_name);
[m,n]=size(tmp);
template=zeros(m,n);
for i=1:length(all_images)
file_name=char(all_images(i).name);
tmp=double(imread(file_name));
template=template+tmp;
end
template=template/length(all_images);
imagesc(template)
imwrite(uint8(template),'template.jpg','jpg')
案例是我获得了以下错误:
错误
使用+ Matrix尺寸必须达成一致。
错误
in averagetemplate(第15行)template = template + tmp;
有什么想法吗?我不得不说我是matlab编码的新手。
由于
答案 0 :(得分:1)
只需将第6行中的[m,n]=size(tmp)
更改为[m,n,~]=size(tmp)
,您的问题就会得到解决。
在下面的代码中:
[m,n]=size(tmp)
Matlab将n*3
计算为矩阵列,因此您将在接下来的几行中得到维错误。
答案 1 :(得分:0)
您正在使用看似单个值的覆盖临时变量:
TMP =双(imread(FILE_NAME));
并且它可以是不同的尺寸M x N. Matlab说要添加matricies,他们必须拥有相同数量的行和列。