質問: 画像のトリミングと動画作成 matlab 2009版で画像のトリミングを1画素単位でずらしaviファイルを作成したいのですが、matlabのバージョンが対応しておらずimcrop等のコマンドが使えず困っています どなたかやり方を教えて頂けませんでしょうか? 宜しくお願いいたします
回答: ちょっと調べてみましたが、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に保存するのも問題になるかと思います。代替案としては 1imwrite関数で一コマずつ保存してサードパーティ製のソフトで連結してaviにする 2imwirteでgifファイルとして書き出す(2009でgif化までできるかは未確認) でしょうか。いろいろ不便なので可能でしたら最新版へのアップデートがベストです。 以上、参考になりましたら幸いです。