首页 > 解决方案 > (MATLAB)如何获得一系列图像的最大和最小背景?

问题描述

我在如何获取一系列图像的背景的最大值和最小值方面遇到了麻烦。我制作了这个函数,它通过将所有像素值相加然后除以像素总数来计算平均值:

function [Ifondo] = promedioImgs(pathImages)
fn = sprintf('%s*.jpeg',pathImages);
indexImages = dir(fn);
numImages=length(indexImages);

Ifondo=0;
for i=1:numImages
    fn = sprintf('%s%s',pathImages,indexImages(i).name);
    primera=imread(fn);
    primera=double(primera);
    if(i==1)
        Ifondo=double(primera);
    else
        Ifondo=Ifondo+primera;
    end
end

Ifondo=uint8(round(Ifondo/numImages));
end

在这个函数中 Ifondo 是我要获取的背景图片(文件夹包含 100 张图片)。获得平均值效果很好,但我无法解决如何为最大值和最小值做这件事。任何帮助将非常感激。

标签: matlabimage-processingmaxmin

解决方案


快速尝试回答您的图像处理问题。关于您要查找的内容的注意事项。图像堆栈中的最大值应该是整个堆栈中的最大值。最小值是堆栈中的最小值。因此,通过在加载图片时进行比较寻找最小或最大的图片,最终应该会生成您正在寻找的图片。

for i=1:numImages
    fn = sprintf('%s%s',pathImages,indexImages(i).name);
    primera=imread(fn);
    primera=double(primera);
    if(i==1)
        Ifondo=double(primera);
    else
        IDX = Ifondo < primera; % Finding larger values from next loaded img
        Ifondo(IDX) = primera(IDX); % pixels found larger in primera, overlap those same pixels in Ifondo
    end
end

这就是我使用您的代码的方式。


推荐阅读