Category Archives: 画像ファイル

(3) MNIST画像をPNG画像で出力する

MNIST画像データファイルをダウンロードした。
https://nnet.dogrow.net/?p=23

MNIST画像データのいくつかをOctaveで画像化して眺めてみた。
https://nnet.dogrow.net/?p=31

今回は、MNIST画像データファイルに含まれる全画像をPNG画像にして眺めてみたい。
今回も GNU-Octaveを使用する。Octaveは少ないコード量で高機能なプログラムを書けるので重宝している。

作成する関数は cre_MNIST_PNG とする。
第1引数は、MNIST画像データファイルのパス。学習用 or テスト用のどちらか一方を指定する。
第2引数は、PNG化したMNIST画像の出力先ディレクトリのパス。

function cre_MNIST_PNG( image_file, output_dir )
  % 画像をロード
  fid = fopen(image_file,'r','b');
  magic_number      = fread(fid, 1, 'int32');
  number_of_items   = fread(fid, 1, 'int32');
  number_of_rows    = fread(fid, 1, 'int32');
  number_of_columns = fread(fid, 1, 'int32');
  img               = fread(fid, [number_of_rows*number_of_columns number_of_items],'uint8');
  image = permute(reshape(img, number_of_rows, number_of_columns,number_of_items),[2 1 3]);
  fclose(fid);

  % 画像をPNGファイル出力
  if exist(output_dir)==0
    mkdir(output_dir);
  end
  for i=1 : number_of_items
    pngfile = sprintf('%s/img%05d.png', output_dir, i);
    imwrite(uint8(image(:,:,i)), pngfile);
  end
end

まずはテスト用画像 t10k-images-idx3-ubyte をPNG画像化してみる。

octave:1> cre_MNIST_PNG('t10k-images-idx3-ubyte','./img');
octave:2>

以下のようなPNG画像ファイルが出力された。(全10,000個の内の先頭から105個を表示)
https://nnet.dogrow.net/wp-content/uploads/2013/10/20131005_04.png