如何使用matlab显示视频中所有帧的帧差输出

时间:2017-12-19 07:33:50

标签: matlab

我已经计算了视频的当前帧和背景帧的h,s和v值的差异,并且想要显示该值以便对差值进行随机检查以进行进一步的操作。我得到360x640矩阵的最终输出。猜猜它显示最后一帧的差值。任何人都可以帮我显示h,s和v的所有差值。

videoObject = VideoReader(movieFullFileName)
    % Determine how many frames there are.
%   numberOfFrames = videoObject.NumberOfFrames;
    vidHeight = videoObject.Height;
    vidWidth = videoObject.Width;
for frame = 1 : numberOfFrames
        % Extract the frame from the movie structure.
        thisFrame = read(videoObject, frame);
% Now let's do the differencing
        alpha = 0.5;
        if frame == 1
            Background = thisFrame;
        else
            % Change background slightly at each frame
            %           Background(t+1)=(1-alpha)*I+alpha*Background
            Background = (1-alpha)* thisFrame + alpha * Background;
        end
        % Display the changing/adapting background.
        subplot(2, 2, 3);
        imshow(Background);
        title('Adaptive Background', 'FontSize', fontSize);
        % Do color conversion from rgb to hsv
        x=rgb2hsv(thisFrame);
        y=rgb2hsv(Background);
        % Split the hsv component to h,s,v value
        Hx = x(:,:,1);
        Sx = x(:,:,2);
        Vx = x(:,:,3);
        Hy = y(:,:,1);
        Sy = y(:,:,2);
        Vy = y(:,:,3);
        dh=(abs(double(Hx) - double(Hy)));
        ds1=(abs(double(Sx) - double(Sy)));
        dv1=(abs(double(Vx) - double(Vy)));
        disp(dh);
        disp(ds1);
        disp(dv1);
    end
end 

2 个答案:

答案 0 :(得分:0)

您应该在drawnow - 循环的末尾添加for以更新每一帧的数字窗口。

此外,disp会向您显示差异矩阵作为数字。考虑使用像

这样的东西
subplot(2, 2, 1)
imshow(dh)

使用适当的颜色缩放来显示差异矩阵。

答案 1 :(得分:0)

如果您想要显示完整的图片

首先,您需要评估完整的HSV图像

hsv=zeros(size(x,1),size(x,2))

hsv(:,:,1) = dh;
hsv(:,:,2) = ds1;
hsv(:,:,3) = dv1;

然后使用:

转换为RGB
rgb = hsv2rgb(hsv);

然后您可以使用以下方式显示它:

image(rgb);

如果您想要显示单个h,s和v图像

只需使用:

for frame = 1 : numberOfFrames

    subplot(3,1,1)
    imshow(dh)
    subplot(3,1,2)
    imshow(ds1)
    subplot(3,1,3)
    imshow(ds2)
    impixelinfo;
    pause;

end

当光标位于图像上方时,您将在图像的左下角看到像素值。 要继续下一个图像,请按任意键盘键