Download presentation
Presentation is loading. Please wait.
1
画像情報処理1 ~画像処理プログラミング~ 2015/05/01 知的画像処理研究室 M1 吉原寛樹 is0147hk@ed.ritsumei.ac.jp
2
目次 画像処理プログラミングの準備 – ファイルのダウンロード・解凍・コンパイル サンプルプログラムの説明 画像を添付する際の注意点 画像処理の方法、プログラム例題 レポートについて
3
サンプルプログラムのダウンロー ド http://www.iipl.is.ritsumei.ac.jp/lecture ファイルの解凍方法,コンパイル,実行方 法などは、上記ページに全て書いてありま す.
4
圧縮ファイルの内容 1.ImageFileIO.c 2.ImageFileIO.h 3.ImageFilter.c 4.ImageFilter.h 5.main.c 6.○○○.ppm 7.○○○.pgm 8.ImageTools.c 9.ImageTools.h 10.Makefike 1. 画像の読み込み、出力データの書 き出しなどを行う関数の定義 2.ImageFileIO.c 内の関数の宣言 3. データを画像処理する関数の定義 4.ImageFilter.c 内の関数の宣言 5. メインプログラム 6. カラー画像ファイル 7. モノクロ画像ファイル 8. 今回は関係なし 9. 今回は関係なし 10.make ファイル
5
コンパイルの方法 Makefike – make コマンドを使用する為のファイル – make コマンド・・・複数のファイルを同時に 順序よくコンパイルするコマンド %./imgfilter make コマンドを実行し、コンパ イルとリンクを自動的に行う Imgfilter という実行ファイルが作成さ れる
6
画像の表示 display コマンドで確認 % display Castle.ppm & 画像の表示が上手くいかない場合 – ディスク容量がいっぱい? % du –sh ・・・ディスク使用量の確 認 Rainbow の個人容量は最大 50M まで
7
メイン関数 (main.c) main.c int main(void) { // 画像処理を行う関数の呼び出し // 例1) PPM 形式の入力データをネガ画像に変換 NegativeImage(); // 例2) PGM 形式のデータに線を描く // DrawLines(); // 正常終了 return 0; }
8
画像処理関数 (ImageFilter.c) ImageFilter.c – void NegativeImage(void) PPM 形式の入力データをネガ画像に変換 void NegativeImage(void) { ・・・ // PPM 形式の入力データの読み込み pRGBInputData = ReadPpm(&iWidth, &iHeight, &iMaxValue); ・・・ }
9
入出力関数 (ImageFileIO.c) ReadPpm(int * iWidth, int * iHeight, int * iMaxValue) – PPM ファイルの読み込み WritePpm(struct RGB * pRGBOutputData, int iWidth, int iHeight, int iMaxValue) – PPM ファイルへ書き出し GetAxisFromIndex(int iWidth, int iIndex, int * iX, int * iY) – 1次元のインデックスから2次元座標を取得 など・・・
10
画像処理の手順 1.ImageFilter.c に関数を追加する – BinaryImage(void) 2.ImageFilter.h 内で関数の宣言を行う 3.main.c 内の main() 関数から呼び出す 4.make コマンドでコンパイル つまり・・・ プログラミングの際に変更するファイルは、 ImageFilter.c ・ ImageFilter.h ・ main.c の3つ
11
レポートに画像を添付する際の注 意 pgm,ppm 形式の画像はそのままの形式では レポートには載せられません ( LaTeX でも Word でも) 次の方法でファイル形式を変換してから 載せてください
12
ファイル形式変換方法( Linux ) ターミナル画面で ↓ を入力 >display ○○.pgm ImageMagic (画像表示ツール)が起動された ら以下の手順で変換 1. 表示された画像を右クリック →Save 2.Format ボタンをクリック 3. 変換後のファイル形式を選んで Select ( LaTeX に添付する場合は eps 形式推奨) 4. 必要ならファイル名を変更し、 Save をクリック、 Select をクリック
13
ファイル形式変換方法( Windows ) irfanview ( http://www8.plala.or.jp/kusutaku/iview/ ) を使うと好きな形式に変換することがで きます http://www8.plala.or.jp/kusutaku/iview/
14
LaTeX で画像を添付する方法 以下のコマンドをレポートに貼り付け \begin{figure}[htbp] \begin{center} \epsfile{file=○○.eps,width=1.0\hsize} \caption{ レポート上に表示させるタイトル } \label{fig:○○} \end{center} \end{figure} 参考: http://www002.upp.so-net.ne.jp/latex/zu.html
15
プログラム例題 白黒画像( pgm ファイル)から、反転画像 を作成する 反転画像は、 255 から各画素の値を引き、 その値を新しい画素値とすることで作成 できる
16
手順1 ImageFilter.c の中に反転画像を作成する ReversalImage(void) という関数を作る #include ・・・・・・ void NegativeImage(void) { int iWidth, iHeight, iMaxValue; ・・・・・・ } void DrawLines(void) { int iWidth, iHeight, iMaxValue; ・・・・・・ } void ReversalImage(void){ } ImageFilter.c
17
手順2 関数 ReversalImage の中で反転処理を実装 void ReversalImage(void){ int iWidth, iHeight, iMaxValue; // 横幅のサイズ, 縦幅のサイズ, 最大輝度値 int *piInputData; // 入力画像の画素値を格納 int *pRVOutputData; // 出力画像の画素値を格納 int I; // ループ変数 printf(“**** Reversal Image ****\n”); // 入力画像の読み込み piInputData = ReadPgm(&iWidth, &iHeight, &iMaxValue); // 出力画像のメモリ確保 pRVOutputData = (int *)malloc(iWidth*iHeight*sizeof(int)); // 反転処理 for(i=0; i<iWidth*iHeight; i++){ pRVOutputData[i] = 255 - piInputData[i]; } FreePgm(piInputData); // 入力画像のメモリ解放 WritePgm(pRVOutputData); // 出力画像の書き出し FreePgm(pRVOutputData); // 出力画像のメモリ解放 } ImageFilter.c
18
手順3 ImageFilter.h 内で ReversalImage 関数の宣言 #ifndef _IMAGEFILTER_H_ #define _IMAGEFILTER_H_ void NegativeImage(void); void DrawLines(void); void ReversalImage(void); #endif ImageFilter.h
19
手順4 main.c 内の main() 関数で ReversalImage 関数 を呼び出し #include #include "ImageFilter.h" int main(void) { // NegativeImage(); // DrawLines(); ReversalImage(); return 0; } !他の関数をコメントアウトするのを忘れないようにしてくだ さい! main.c
20
手順5 コマンドプロンプトで「 make 」と入力す る コンパイルが行われ、 imgfilter という名前 の実行ファイルが作成される 「./imgfilter 」でプログラムを実行
21
レポート課題1 課題内容 – 濃淡画像からポスタリゼーション画像作成 – 今回の例題にある ReversalImage(void) を参考に Posterization (void) というポスタリゼーション 処理を行う関数を作成しなさい – ImageFilter.h 内での宣言や main 関数内での呼び 出しについては、例題と同じ
22
レポート課題2 課題内容 – アルファブレンディング処理 – 今回の例題にある ReversalImage(void) を参考に AlphaBlending (void) というアルファブレンディ ング処理を行う関数を作成しなさい – ImageFilter.h 内での宣言や main 関数内での呼び 出しについては、例題と同じ
23
提出期限: 2014/5/14( 木 ) 17:00 何か分からないことがあったら、 TA の吉 原まで連絡してください クリエーションコア 4F 知的画像処理研究 室 メールアドレス: is0147hk@ed.ritsumei.ac.jp 課題について
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.