Taking average of pixel values across multiple frames
18 views (last 30 days)
Show older comments
I have a 1x3 cell containing image data as a 5504 x 8256 double, each value in the matrix is a pixel grayscale intensity value. Each cell is a picture at a different time or frame. What I want to do is take the average pixel value across each frame. So say I have N number of frames or pictures, I want to average pixel at (row 1, column 1) across those N frames and so on for (row 1, column 2),(row 1, column 3).....and end up with a 5504 x 8256 matrix that has the average pixel value across the number of frames in my cell. Any ideas on how to do this? I was messing around with 3 4x3 double matrices in a 1x3 cell for ease but I was not able to find an efficient way in a for loop to do this for each pixel location.
0 Comments
Answers (1)
Joseph Cheng
on 17 Jun 2021
Edited: Joseph Cheng
on 17 Jun 2021
couldn't you just put it into a non cell matrix of 5504 x8256 x 3 then use mean(data,3) to take the mean in the 3rd dimension? or just add the cell index wise then divide by 3.
3 Comments
Joseph Cheng
on 17 Jun 2021
oh that can be accomplished by reshaping the concatenated matrix. see small example below
a = [1 2;3 4];
Acell = {a,a,a};
Acell2mat = cell2mat(Acell)
%looks to concatenate by column
[arow acol]=size(Acell{1})
Amatstack = reshape(Acell2mat,arow,acol,numel(Acell));
MeanA = mean(Amatstack,3)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!