1 / 28

画像情報処理1 ~画像処理プログラミング~

画像情報処理1 ~画像処理プログラミング~. 2013/10/31 知的画像処理研究室 M1 野島優補 is0032ek@ed.ritsumei.ac.jp. 目次. 画像処理プログラミングの準備 ファイルのダウンロード・コンパイル・表示 サンプルプログラムの説明 画像を添付する際の注意点 画像処理の方法、プログラム例題 レポートについて. サンプルプログラム のダウンロード. http:// www.iipl.is.ritsumei.ac.jp/lecture. ファイルの解凍方法,コンパイル,実行方法 などは、上記ページに全て書いてあります..

fawn
Download Presentation

画像情報処理1 ~画像処理プログラミング~

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 画像情報処理1~画像処理プログラミング~ 2013/10/31 知的画像処理研究室 M1 野島優補 is0032ek@ed.ritsumei.ac.jp

  2. 目次 • 画像処理プログラミングの準備 • ファイルのダウンロード・コンパイル・表示 • サンプルプログラムの説明 • 画像を添付する際の注意点 • 画像処理の方法、プログラム例題 • レポートについて

  3. サンプルプログラムのダウンロード http://www.iipl.is.ritsumei.ac.jp/lecture ファイルの解凍方法,コンパイル,実行方法などは、上記ページに全て書いてあります.

  4. 圧縮ファイルの内容 • ImageFileIO.c • ImageFileIO.h • ImageFilter.c • ImageFilter.h • main.c • ○○○.ppm • ○○○.pgm • ImageTools.c • ImageTools.h • Makefike • 画像の読み込み、出力データの書き出しなどを行う関数の定義 • ImageFileIO.c内の関数の宣言 • データを画像処理する関数の定義 • ImageFilter.c内の関数の宣言 • メインプログラム • カラー画像ファイル • モノクロ画像ファイル • 今回は関係なし • 今回は関係なし • makeファイル

  5. コンパイルの方法 • Makefike • makeコマンドを使用する為のファイル • makeコマンド・・・複数のファイルを同時に順序よくコンパイルするコマンド makeコマンドを実行し、コンパイルとリンクを自動的に行う imgfilterという実行ファイルが作成される % ./imgfilter

  6. 画像の表示 • displayコマンドで確認 % display Castle.ppm & • 画像の表示が上手くいかない場合 • ディスク容量がいっぱい? % du –sh     ・・・ディスク使用量の確認 RAINBOWの個人容量は最大100Mまで

  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. 画像処理の手順 • ImageFilter.cに関数を追加する • BinaryImage(void) • ImageFilter.h内で関数の宣言を行う • main.c内のmain()関数から呼び出す • makeコマンドでコンパイル つまり・・・ プログラミングの際に変更するファイルは、ImageFilter.c・ImageFilter.h・main.cの3つ

  11. レポートに画像を添付する際の注意 • pgm,ppm形式の画像は、レポートにそのままでは添付できません(LaTexでもWordでも) • 次の方法でファイル形式を変換してレポートに添付してください

  12. ファイル形式変換方法(Linux) • ターミナル画面で↓を入力 >display ○○.pgm • ImageMagic(画像表示ツール)が起動されたら以下の手順で変換 • 表示された画像を右クリック→Save • Formatボタンをクリック • 変換後のファイル形式を選んでSelect(LaTexに添付する場合はeps形式がオススメです) • 必要ならファイル名を変更し、Saveをクリック、Selectをクリック

  13. ファイル形式変換方法(Windows) • IrfanView(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 <stdio.h> #include <stdlib.h> ・・・・・・ 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 <stdio.h> #include "ImageFilter.h" int main(void) { // NegativeImage(); // DrawLines(); ReversalImage(); return 0; } main.c !他の関数をコメントアウトするのを忘れないようにしてください!

  20. 手順5 • コマンドプロンプトで「make」と入力する • コンパイルが行われ、imgfilterという名前の実行ファイルが作成される • 「./imgfilter」でプログラムを実行

  21. レポート課題1 • 課題内容 • アルファブレンディング処理 • 今回の例題にあるReversalImage(void)を参考にAlphaBlending (void)というアルファブレンディング処理を行う関数を作成しなさい • ImageFilter.h内での宣言やmain関数内での呼び出しについては、例題と同じ

  22. アルファブレンディング(alpha blending) • αの値が、画像左端で0、右端で1で、その間では直線的に変化させた。 g=af1+(1-a)f2

  23. レポート課題2 • 課題内容 • 空間フィルタリング • 平滑化,Smoothing (void) • エッジ検出,EdgeDetection (void) • フィルタリング処理を行う関数を作成しなさい

  24. オプション課題3 • 課題内容 • エンボス画像生成 • EmbossImage (void) • 一枚の入力画像からエンボス画像を出力する関数を作成しなさい

  25. エンボス(emboss)

  26. 周辺画素の処理(フィルタリングプログラムを作成する際の注意)周辺画素の処理(フィルタリングプログラムを作成する際の注意) 注目画素 端の画素の例外処理を忘れずに行うこと

  27. 課題について • 提出期限:2013/11/14(木) 17:00 • 何か分からないことがあったら、TAの野島まで連絡してください • クリエーションコア 4F 知的画像処理研究室 • メールアドレス:is0032ek@ed.ritsumei.ac.jp

More Related