平均图像,代码不起作用

时间:2017-11-25 05:51:59

标签: matlab

我有这个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编码的新手。

由于

2 个答案:

答案 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,他们必须拥有相同数量的行和列。