(MATLAB)如何获取一系列图像的最大和最小背景?

时间:2019-03-18 01:04:50

标签: matlab image-processing max min

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

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张图像)。取得均值效果很好,但我无法解决最大和最小值的问题。任何帮助将非常感激。

2 个答案:

答案 0 :(得分:0)

您可以使用下面的代码来获取最小和最大背景。在这里,我要做的是,分别获取每个图像的r,g,b值,然后获取它们的最小值和最大值,然后将它们组合起来以生成最大值和最小值背景。

希望这会有所帮助:)

祝您有美好的一天。

谢谢

@echo off
cls
setlocal EnableDelayedExpansion
set "cmd=findstr /R /N "^^" example_data.csv | find /C ":""

for /f %%a in ('!cmd!') do set number=%%a

powershell -Command "(gc experiment_base.xml) -replace '<steppedValueSet variable=\"n_runs\" first=\"1\" step=\"1\" last=\"1\"/>', '<steppedValueSet variable=\"n_runs\" first=\"1\" step=\"1\" last=\"%number%\"/>' | Set-Content mod_experiments.xml

echo "Running experiment..."

netlogo-headless.bat ^
--model dynamic_behaviorspace.nlogo ^
--setup-file mod_experiments.xml ^
--table table-output.csv 

答案 1 :(得分: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
        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

这就是我将使用您的代码进行操作的方式。