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

2 次查看(过去 30 天)
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 个评论
Joss Knight
Joss Knight 2016-7-6
编辑:Joss Knight 2016-7-6
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.

请先登录,再进行评论。

回答(2 个)

Thorsten
Thorsten 2016-7-6
编辑:Thorsten 2016-7-6
meanY = mean(compV(:));
or if you have the Image Processing Toolbox:
meanY = mean2(YUV(:,:,3));

Image Analyst
Image Analyst 2016-7-7
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 个评论
awa
awa 2016-7-7
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 2016-7-7
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 3-D Volumetric Image Processing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by