【问题标题】:Slice video frames in time及时切片视频帧
【发布时间】:2013-03-15 04:38:39
【问题描述】:

将视频的所有视频帧及时 (t) 视为体积,我必须及时将它们分解为一组二维切片,即 I(x,t)(沿 x 和 t 切片体积)和 I(y,t)(切片沿 y 和 t 的体积)。如何在 matlab 中实现这一点?我无法弄清楚如何进行切片?

编辑:到目前为止的代码

vid='Orca vs Great White Shark.avi';
vidobj=mmreader(vid);
numofframes=get(vidobj,'numberOfFrames');
disp(numofframes);
for i=1:25:numofframes
  vidframe=read(vidobj,i);
end
for k=1:numofframes
  mov(k).cdata = read(vidobj,k);
end

到目前为止,我已经阅读了视频并将帧保存在 vidframes 中。我该如何进行?

【问题讨论】:

    标签: image matlab video video-processing volume


    【解决方案1】:

    这是一个例子:

    A = rand(3,3,3)
    

    终端:

    A(:,:,1) =
    
        0.8147    0.9134    0.2785
        0.9058    0.6324    0.5469
        0.1270    0.0975    0.9575
    
    
    A(:,:,2) =
    
        0.9649    0.9572    0.1419
        0.1576    0.4854    0.4218
        0.9706    0.8003    0.9157
    
    
    A(:,:,3) =
    
        0.7922    0.0357    0.6787
        0.9595    0.8491    0.7577
        0.6557    0.9340    0.7431
    

    现在我假设第三维度是时间。要获得切片,您需要使用挤压功能:

    squeeze(A(1,:,:))'
    

    终端:

    ans =
    
        0.8147    0.9134    0.2785
        0.9649    0.9572    0.1419
        0.7922    0.0357    0.6787
    

    squeeze(A(:,1,:)) 将及时给出第一列。

    【讨论】:

    • 嗨。谢谢你的回答。很抱歉问这个问题,但我对此很陌生。你能告诉我如何用这种矩阵表示来表示我的视频的 x,y,t 吗?
    • @SriduttNayak 我已经使用frames=read(videoobject) 读取了所有视频帧,如何将其读取为像上面这样的矩阵?
    • 如果您使用getsnapshot,frame 将有一个您需要的矩阵。我猜在上述情况下,您将创建一个句柄(不确定检查),因此您可能需要了解如何使用它。在这里检查:mathworks.in/help/matlab/ref/mmreaderclass.html 如果您使用getsnapshot,则在第一个frame = getsnapshot(vid)实例之后; , 输入键盘这将使代码进入调试模式。现在在命令窗口中尝试执行 在您理解之后,使用 F5 继续运行。请记住删除“键盘”以供下次运行。
    • 谢谢@SriduttNayak 我会检查并在几分钟后回来。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2013-03-15
    • 2016-10-26
    • 2012-02-01
    相关资源
    最近更新 更多