Taking average of pixel values across multiple frames

26 visualizzazioni (ultimi 30 giorni)
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.

Risposte (1)

Joseph Cheng
Joseph Cheng il 17 Giu 2021
Modificato: Joseph Cheng il 17 Giu 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 Commenti
Joseph Cheng
Joseph Cheng il 17 Giu 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)
Kevin P Meyer
Kevin P Meyer il 17 Giu 2021
awesome, that seems to be doing the trick, thank you so much!

Accedi per commentare.

Prodotti


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by