Averaging in a loop to stop uint16 from saturating
4 次查看(过去 30 天)
显示 更早的评论
Hi guys, I am doing some image processing, and what happens is I record a number of images,store them in a set and do some processing and then average for a number of sets recorded.However I have a problem where because the images are uint16 it saturates before imaging, I am just wondering if there is a way to average as I go along or any other way round this. Ive tried to change the type to a larger uint but that doesnt seem to work.
if true
for n=1:10
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 = uint16(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 +I3;
end
AverageImg = AvgImg/(Images-t);
AverageImgB=90;
AverageImgLII=(AverageImg-AverageImgB);
K=imagesc(flipud(AverageImgLII));
end
0 个评论
采纳的回答
Image Analyst
2016-5-8
It needs to be double to avoid clipping
AvgImg = zeros(1024,1280); % Before the loop
AvgImg = AvgImg + double(I3); % In the loop
2 个评论
Image Analyst
2016-5-8
You can send in different values to caxis(). Or you can use [] if it's a gray scale image
imshow(AvgImg, []);
colormap(gray(256));
colorbar;
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Modify Image Colors 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!