0

我有一个 3D 矢量在 Matlab 中保存图像,它的 480x640x1400。我想循环浏览 1400 张图像。因为我想获取前 10 张图像的中位数(从 1-->10)并将其保存为一个 480x640 图像,然后从 2-->11 中获取图像并获取中位数并将其另存为另一张图像等等on (3-->12).... 例如:images 是包含大小为 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
4

1 回答 1

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
于 2013-04-19T06:20:04.767 回答