■デジタル画像

Last modified: Tue Apr 24 2018
このページは,基礎工学部システム科学科機械科学コース2年生向けの 「コンピュータ基礎演習」における演習2の教材の1つです.
2次元配列の応用として,この演習では画像処理を行なう.

●画像のデジタル化

画像とは光の強度情報の2次元分布である. したがって,数学的には,2変数に関する1価関数として,次のように表現できる.

    z = f(x, y)
ここで,独立変数x,yは画像の平面上に設定された2次元の直交座標系の2つの軸を表す. コンピュータで画像を扱う場合は,一般の数学とは異なり,左上に原点, 下向きと右向きに軸を取ることが多い.ここでは下向きをx軸,右向きをy軸とする. 一方,従属変数zは,(x,y)における光の強度情報を示す. 一般には,(赤,緑,青)などの成分からなる3次元ベクトル値であるが, ここでは明るさ(輝度,明度)のみの情報を考え,スカラ値とする.

このような画像z = f(x,y)をコンピュータで処理するためには,デジタル情報, つまり,有限なビット列に変換する必要がある(デジタル化).変換の処理は, 以下の2つから構成される.

つまり,元の画像の領域を幅方向にw個,高さ方向にh個に分割し, 分割された小領域(画素と呼ぶ)の輝度値を1つの整数値に変換する. その結果,デジタル画像は w×h個の整数値の集合となる. 輝度を表現するには,一般に8bit(0〜255)程度のビット列(整数)を用いる. この場合,0が一番暗く(黒),255が一番明るい(白).

デジタル化した画像を,Cのプログラム上で2次元配列を使って表現しよう. 2次元配列の(i,j)要素をg[i][j]とすると,習慣上,i(行)に画面下向き, j(列)に画面右方向を割り当てることが多い. そこで,この演習でも,その割り当て方を採用する.

画像の座標系(x,yの割り当て)と, 配列の割り当て(i,jの割り当て)の対応関係をまとめると以下のようになる.

     f(x,y) → g[i][j]
       x    → i = 0 〜 h-1
       y    → j = 0 〜 w-1

●PGM形式

PGM(portable graymap)形式とは, 世の中で広く認知されている画像ファイルのデータ形式の一種である. 色情報を含まない画像(グレースケール画像,モノクロ画像,濃淡画像,輝度画像などと呼ばれる) を表現するために用いる. ファイルの先頭から以下のような順番でデータが並んでいる.

それ以外に以下の約束がある. PGM形式の具体例を示そう.

以下のPGM形式のファイルをシフトキーを押しながらクリックすると, 画像データをファイルに保存することができる. それができたら,そのファイルをXEmacsで開いてみよう.

●注意事項

●PGMファイルを扱うプログラム例

例2-8 example28.c

例2-9 example29.c

例2-10 example210.c


[演習2のインデックス] [前の教材(2次元配列と関数)] [次の教材(画像処理)]
hirai@me.es.osaka-u.ac.jp