MATLAB Answers

輝度値の読み取りと動画トリミング

27 views (last 30 days)
Karen
Karen on 28 Oct 2019
Commented: Kenta on 29 Oct 2019
動画から輝度値を読み取るということを行っています。読み取ることはできるのですが、動画のサイズが大きいため読み取るのに時間がかかってしまいます。
動画を必要な座標部分だけトリミングする、もしくは必要な座標部分の輝度値のみ読み取るということは可能でしょうか。
現在は以下の方法で輝度値を読み取っています。tempの中身は前2つが座標、3つめがRGB、4つめが時間軸です。
vid=VideoReader(動画名)
for x=フレーム数
temp(:,:,:,x)=read(vid,x)
end

  0 Comments

Sign in to comment.

Accepted Answer

Kenta
Kenta on 28 Oct 2019
こんにちは。はい、可能です。
サンプル動画を用いた例を以下に示します。1フレーム目を読み取って、マウスで切り取り範囲を指定します。
もし、特定のピクセルの値でしたら、imcropの行を、I(10,10,:)などとすればよいです。
するとループが開始して、その切り取り範囲のみをtempに格納していきます。
ただ、動画の再生時間が非常に長く読み取りに時間がかかっているのでしたら、この方法は解析時間の短縮化という意味では役立たない可能性もあります。
しかし、tempの(ファイル)サイズは大きく削減されると思います。
clear;clc;close all
vidObj = VideoReader('xylophone.mp4');
I1 = read(vidObj,1);
figure;imshow(I1)
rect=getrect;
for k=1:vidObj.NumFrames
I = read(vidObj,k);
I_cropped = imcrop(I,rect);
temp(:,:,:,k) = I_cropped;
end
figure;imshowpair(I1,temp(:,:,:,10),'montage')
result.png

  2 Comments

Karen
Karen on 29 Oct 2019
回答ありがとうございます。早い時間で処理することができました。
Kenta
Kenta on 29 Oct 2019
処理もはやくなりましたか、失礼しました。解決してよかったです。

Sign in to comment.

More Answers (0)

Sign in to answer this question.