循环通过在Matlab的3d传染媒介

时间:2013-04-19 05:45:09

标签: matlab matrix

我有一个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

1 个答案:

答案 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