MATLAB: Averaging in a loop to stop uint16 from saturating

for loopimage processingsaturatationuint16

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

Best Answer

It needs to be double to avoid clipping
AvgImg = zeros(1024,1280); % Before the loop
AvgImg = AvgImg + double(I3); % In the loop