MATLAB Answers

画像のトリミングと動画作成

27 views (last 30 days)
matlab 2009版で画像のトリミングを1画素単位でずらしAVIファイルを作成したいのですが、matlabのバージョンが対応しておらずimcrop等のコマンドが使えず困っています
どなたかやり方を教えて頂けませんでしょうか?
宜しくお願いいたします

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 2 Mar 2020
Edited: Shunichi Kusano on 2 Mar 2020
ちょっと調べてみましたが、imcrop関数自体はR2006a より前に導入とありますので、image processing toolboxを未導入ということなんでしょうか。
トリミングは、関数ベースでなければインデックスを直接指定して、画像の一部を抜き出して新たな数値配列を作る、という流れでも実現できます。例えばx1:x2, y1:y2の範囲をくりぬきたいなら、
subimg = img(y1:y2, x1:x2, :);
で大丈夫です。これを1画素単位でずらしながら、ということでしたらforループを使って
for yi = 1:maxshift_y
for xi = 1:maxshift_x % x,yの順番は動画順に適宜変える
subimg = img(y1+yi:y2+yi, x1+xi:x2+xi, :); % クロップ
% 外部出力のコマンドを挿入
end
end
という形で実行できます。
2009時点ではvideowriter関数がないので、AVIに保存するのも問題になるかと思います。代替案としては
①imwrite関数で一コマずつ保存してサードパーティ製のソフトで連結してAVIにする
②imwirteでGIFファイルとして書き出す(2009でGIF化までできるかは未確認)
でしょうか。いろいろ不便なので可能でしたら最新版へのアップデートがベストです。
以上、参考になりましたら幸いです。

More Answers (0)

Community Treasure Hunt

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

Start Hunting!