imfinfoおせー。MATLAB2007b。
今週は数ヶ月ぶりにMATLABで仕事している。
Pythonを覚えてからはきれいで読みやすいコードを心がける癖がついて、ソースが多少縦にながくなっても変数名を分かりやすくしたり、インデントとかの整形や、データ型もuint8が使えるときはなるべくつかってメモリを最適化したりなどいろいろと良い影響がある。
MATLABはちょうどよいハイレベルな関数が用意されているときはほんとに簡単にやりたい事ができて快適。しかしないときは結構フラストレーションがたまる。
例えば、imfinfoをつかってTIFFファイルから複数のフレームを扱うような場合。MathWorksのスティーブさんのブログによると、
fname = 'my_file_with_lots_of_images.tif';
info = imfinfo(fname);
num_images = numel(info);
for k = 1:num_images
A = imread(fname, k);
% ... Do something with image A ...
end
なんていう、、まず何枚フレームがあるかを調べて、それだけForループしてやるなんていう典型的な処理がバージョン2007bまでは遅かったのが2008と2009に段階的に改善されたらしい。
たかだか100以下のフレームしかないファイルなのに結構おそいので、もっといい方法があるにちがいないとおもったのに、そうではないらしい。もちろん最新版なら問題ないんだろうけど、ライセンスつまりお金の関係で古いのをつかっているのでしょうがない。
(追記: 2007bでもimreadalltiffを使うと読込みが早いことに気付いた。実際に必要なのは1枚おきなので半分しか読まなくていいんだけど、そ れでも全部読んでからスライスして入らないフレームを捨てた方が断然はやい。imreadは無駄なオーバーヘッドがやたらあるらしいのでおそいらしい。)
むかしだったら、簡単に諦めがつくが、今となるとPythonだったらPILあたりをつかって簡単にできそうと思ってしまうのでわざわざ古いMATLABを使うのがほんとにベターなのだろうかと思ってしまう。Pythonのコード渡されてもこまるだろうから、同僚とコードをシェアすることができるのが唯一の利点になりつつあるな。xkcdのこれを思い出した。

« 今日のxkcd | トップページ | 西大伍 代表初選出!!! »
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)



コメント