幅 N, 高さ M の画像の場合,
0, 1, ..... N-1, N, N+1, ..... 2N-1, .... N*(M-1), N*(M-1)+1, ... N*(M-1)+N-1 (=N*M-1)データのある各点(画素)をピクセル(pixel)と呼ぶ。
形式
例:bitmap ascii
P1 # feep.pbm 24 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
例:graymap ascii
P2 # feep.pgm 24 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
例:pixmap ascii
P3 # feep.ppm 4 4 15 0 0 0 0 0 0 0 0 0 15 0 15 0 0 0 0 15 7 0 0 0 0 0 0 0 0 0 0 0 0 0 15 7 0 0 0 15 0 15 0 0 0 0 0 0 0 0 0 |
例題: 右方向のドット位置を x 下方向を y として、画素値が 16 * x + y で表されるような 16 × 16 の pgm 画像を作成しなさい。
回答例
以下のPythonプログラム(grayscale.py)を作成。
# grayscale.py ... output 16x16 grayscale pgm print 'P2' print '16 16' print '255' for y in range(16): for x in range(16): print '%3d ' % (16 * x + y), print '' |
% python grayscale.py > gray.pgmで gray.pgm にリダイレクトで作成
~/.cshrc に
set path = (/pub/sol8/netpbm/bin $path) setenv MANPATH /pub/sol8/netpbm/man:$MANPATHを入れておく。
pbm, pgm, ppm, pnm の man を読む。