小ネタ:MATLABでマルチページTIFファイルを読む

今日後輩に聞かれたのでメモ代わりに

結論

imread関数の第二引数に読みたいページのインデックスを指定することで読み出すことができる[1]imread(filename, idx)[2]

とりあえず全部読み出したい!という場合はimfinfo関数を用いてページ数を調べ、forで1枚ずつ読み出す。一気に読み出す方法は調べても見つからなかった。

imInfo = imfinfo(filename); % nページの情報が格納された nx1 の構造体配列が返される
% imfinfoが返す構造体は画像の縦横のピクセル数も格納されている
fullImage = zeros(imInfo(1).Height, imInfo(1).Width, length(imInfo)); 
% forで1ページずつ読み出す
for i=1:length(imInfo)
    fullImage(:,:,i) = imread(filename, i);
end

参考

[1] How to read a multiframe tiff in MATLAB? – MATLAB Answers – MATLAB Central (mathworks.com)

[2] グラフィックス ファイルの情報 – MATLAB imfinfo – MathWorks 日本

コメント

タイトルとURLをコピーしました