How to calculate the mean value of the 3rd dimension of YUV so as to filter the differences between consecutive frames ?

1 vue (au cours des 30 derniers jours)
I was trying to resolve the issue of non-consecutive frames which extracted from a video. I want to go through each pixel and each frame.
Currently I have converted the RGB images to YUV and extracted each component. I want to calculate the mean value of the 3rd dimension of YUV so as to filter the difference between consecutive frames. . What should I do next ?
Thank you.
Below are the code that I have done so far: =================================================
caffe.reset_all();
caffe.set_mode_gpu();
caffe.set_device(0);
clear; close all;
close all;
clear;
%%Display RGB
Dir = 'C:\Users\Image\';
im_list = dir(fullfile(Dir, '*.bmp'));
% loop for all test images
for i = 1:length(im_list)
im_path = [Dir im_list(1).name];
x = imread(im_path);
R=x(:,:,1);
G=x(:,:,2);
B=x(:,:,3);
RGB = cat(3,R,G,B);
YUV = rgb2ycbcr(RGB);
%%Display each component
compY = YUV(:,:,1); %%extract Y component
compU = YUV(:,:,2); %%extract U component
compV = YUV(:,:,3); %%extract V component
  1 commentaire
Joss Knight
Joss Knight le 6 Juil 2016
Modifié(e) : Joss Knight le 6 Juil 2016
I don't understand the question. The channels are the third dimension, so the mean in the third dimension is the mean of all channels (which you get from rgb2gray), not just the Y channel.

Connectez-vous pour commenter.

Réponses (2)

Thorsten
Thorsten le 6 Juil 2016
Modifié(e) : Thorsten le 6 Juil 2016
meanY = mean(compV(:));
or if you have the Image Processing Toolbox:
meanY = mean2(YUV(:,:,3));
  1 commentaire
awa
awa le 7 Juil 2016
Thanks for your kind help.
I have modified my questions. Could you please help to take a look at again ?
Thank you.

Connectez-vous pour commenter.


Image Analyst
Image Analyst le 7 Juil 2016
It's still ambiguous what you mean by "third dimension". Thorsten gave you one way. The third channel/slice/plane of your 3D color space image is compV, and mean2() will take the mean of that color channel (the value channel).
meanV = mean2(compV); % A single scalar value.
Whereas
meanImage = mean(YUV, 2); % A 2-D image.
will give you an image where each pixel is the mean along the third dimension. So, the result is an image that is (compY+compU+compV)/3.
Which concept is what you're thinking of?
  5 commentaires
awa
awa le 7 Juil 2016
Hi ImageAnalyst,
I added below code to my previous code above. Could you please help to check whether I can do like this ?
[a,b,c] = size(x); %%a by b by c arrays
meanFrame = zeros(size(x));
sumFrame = 0;
%
for i = 1:a %for each pixel
for j = 1:b
for k =1:c %%for each frame
sumFrame = sumFrame+k;
end
meanFrame = sumFrame/k;
end
end
imshow(meanFrame);
Image Analyst
Image Analyst le 7 Juil 2016
You can d_do_ that - it will work - but won't do anything useful at all. Use the debugger to step through it and find out why.

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by