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

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

Réponse acceptée

Shunichi Kusano
Shunichi Kusano le 2 Mar 2020
Modifié(e) : Shunichi Kusano le 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化までできるかは未確認)
でしょうか。いろいろ不便なので可能でしたら最新版へのアップデートがベストです。
以上、参考になりましたら幸いです。

Plus de réponses (0)

Catégories

En savoir plus sur イメージ dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!