画像処理プログラミング 知的画像処理研究室 M2 小林 佳奈美
サンプルプログラムのダウンロード http://iipl.is.ritsumei.ac.jp/ - 授業関連 http://iipl.is.ritsumei.ac.jp/ - 授業関連 ファイルの解凍方法、コンパイル&実行方法などは、上記ページに全て書いてあります。
各ファイルの説明 ImageFileIO.c ImageFileIO.h ImageFilter.c ImageFilter.h 画像の読み込み、出力データの書き出しなどを行う関数の定義 ImageFileIO.h ImageFileIO.c内の関数の宣言 ImageFilter.c データを画像処理する関数の定義 ImageFilter.h ImageFilter.c内の関数の宣言
各ファイルの説明 main.c ○○○.ppm ○○○.pgm ImageTools.c ImageTools.h メインプログラム カラー画像ファイル ○○○.pgm モノクロ画像ファイル ImageTools.c ImageTools.h 今回関係なし
各ファイルの説明 Makefike makeコマンドを実行し、コンパイルとリンクを自動的に行う imgfilterという実行ファイルが作成
サンプルプログラムの説明 main.c main()関数からNegativeImage()関数が呼び出されている int main(void) { // 画像処理を行う関数の呼び出し // 例1)PPM形式の入力データをネガ画像に変換 NegativeImage(); // 例2)PGM形式のデータに線を描く // DrawLines(); // 正常終了 return 0; } main()関数からNegativeImage()関数が呼び出されている
ImageFilter.c void NegativeImage(void) PPM形式の入力データをネガ画像に変換 ・・・ // PPM形式の入力データの読み込み pRGBInputData = ReadPpm(&iWidth, &iHeight, &iMaxValue); }
ImageFileIO.c ReadPpm(int * iWidth, int * iHeight, int * iMaxValue) WritePpm(struct RGB * pRGBOutputData, int iWidth, int iHeight, int iMaxValue) PPMファイルへ書き出し GetAxisFromIndex(int iWidth, int iIndex, int * iX, int * iY) 1次元のインデックスから2次元座標を取得 など・・・
新しく関数を作成 ImageFilter.cに関数を追加する ImageFilter.h内で関数の宣言を行う BinaryImage(void) ImageFilter.h内で関数の宣言を行う main.c内のmain()関数から呼び出す makeコマンドでコンパイル
ヒント (周辺画素を処理するプログラムを作成する際の注意) 注目画素 端の画素の例外処理を忘れずに行うこと
注意 画像の表示が上手くいかない場合 Netscapeのキャッシュの削除 ディスク容量がいっぱいじゃないですか? % du –sh ・・・ディスク使用量の確認 Netscapeのキャッシュの削除 Netscapeを立ち上げ、 編集→設定→詳細→キャッシュ キャッシュのクリアを行い、保存するキャッシュ容量も減らすことをオススメします(デフォルトは50MB)