我有一个3D矢量,在Matlab中保存图像,480x640x1400。我想循环遍历1400张图片。因为我想获得前10张图像的中位数(从1 - > 10)并将其保存为一张480x640图像,然后从2 - > 11获取图像并获得中值并将其另存为另一张图像等等(3 - > 12).... 例如: 图像是保持图像大小为480x640x1400的3D矢量 images2是保持图像中值的所需3D矢量,大小为480x640x1400。 这是我正在使用的脚本:
l=dir('*.mat');
filenames={l.name}';
nfiles=length(filenames)
idx=1;
strtidx=1;
endidx=nfiles;
step=1;
waitbar(0);
for i=strtidx:step:1
tmp = load(filenames{i},'images');
idx=1;
for j=strtidx:step:1000
for k=j:step:j+9
tmp2(k)=tmp(:,:,k);
end
mm=median(tmp2,3);
images2(j)=mm;
end
save(filenames{i}, 'images2', '-append');
waitbar(i/nfiles);
close all;
end
答案 0 :(得分:1)
假设您有一个矩阵,其中包含您所描述的维度Images
。首先,它可以是正常的图像矩阵,也可以是细胞矩阵。这些彩色图像?其次你只有1400张图片,而不是1401张,Matlab索引来自1而不是0。
如果它是单通道图像的正常数组(即灰度),那么你想要这个:
for imageNumber = 1:size(Images,3)-9 %loop along the third dimension
NewImages(:, :, imageNumber) = findMedian(Images(:,:,imageNumber:imageNumber + 9)) %findMedian is your own function that you must write that outputs the median of 10 images as a 480 x 640 matrix.
end