Standard Deviation Between images
11 次查看(过去 30 天)
显示 更早的评论
Hi there,I currently have set of images which I get from taking the average from a group of smaller images, I am just wondering if it is possible if I could get an array of the std deviation between the images from n2 to n1? Everytime I try I end up taking just the Overall Standard Deviation from the image
if true
for n=n1:n2
stem='E:\29th April New\NEW Gain=99_No Delay_ Gate=0.02_0';
r=n-1;
r=int2str(r);
combinedStr=strcat(stem,r);
Images=99;
t=10;
AvgImg =(zeros(1024,1280));
for i=t:Images;
B=readimx(fullfile(combinedStr,['B000',int2str(i),'.im7']));
C=B.Frames{1}.Components{1};
V = C.Planes;
Img = V{1,1};
J = imrotate(Img,-90);
I2 =(flip(J,2));
FUNC=@(x)max(x(:));
I3=medfilt2(I2,[1 1]);
AvgImg = AvgImg +double(I3);
end
figure(n-1)
AverageImg = AvgImg/(Images-t);
AverageImgB=90;
AverageImgLII=uint16(AverageImg-AverageImgB);
K=imagesc(flipud(AverageImgLII));
set(gca,'YDir','normal');
end
0 个评论
采纳的回答
Guillaume
2016-5-9
编辑:Guillaume
2016-5-10
Store your images in a 3D matrix and calculate all your stats in one go using mean, std, etc. on the 3rd dimensions:
numimages = 99
stem = 'E:\29th April New\NEW Gain=99_No Delay_ Gate=0.02_0';
for gating = n1:n2
stemgating = sprintf('%s%d', stem, gating-1);
LIIimages = cell(1, numimages); %storing in a cell array, to be converted to 3D matrix later on
for imgindex = 1:numimages
imxstruct = readimx(fullfile(stemgating, sprintf('B%05d.im7', imgindex)));
img = imxstruct.Frames{1}.Componenets{1}.Planes{1};
LIIimages{imgindex}= imrotate(img, -90);
end
%convert cell array to 3d matrix
LIIimages = cat(3, LIIimages{:});
%calculate stats:
meanimg = mean(LIIimages, 3);
stdimg = std(LIIimages, 0, 3);
%... do more stuff
end
Note that I'm storing the images temporarily into a cell array. This avoids having to hardcode the size of the images (the alternative is to predeclare the 3D array with zeros(1024, 1280, numimages))
Also note, that I've fixed the problem with you not being able to create properly the name of the first 9 buffer images by using sprintf with a format string that says to prepend the number with enough zeros to have 5 digit (the '%05d')
6 个评论
Guillaume
2016-5-10
I'm not sure what you mean by plotting an image against another.
Note that all the images are held in LIIimages. image number n is LIIimages(:, :, n). You can display these however you want.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!