1 / 29

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

画像情報処理 1 プログラミング課題. 知的画像処理研究室 M2 大村 瑞穂. 目次. プログラミング課題の準備 ファイルのダウンロード・解凍・コンパイル サンプルプログラムの説明 画像処理の方法 レポートに載せる画像について 例題と第 1 回レポート課題. 目次. プログラミング課題の準備 ファイルのダウンロード・解凍・コンパイル サンプルプログラムの説明 画像処理の方法 レポートに載せる画像について 例題と第 1 回レポート課題. サンプルプログラムのダウンロード. http://www.iipl.is.ritsumei.ac.jp/. クリック.

taya
Télécharger la présentation

画像情報処理 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プログラミング課題 知的画像処理研究室 M2 大村 瑞穂

  2. 目次 • プログラミング課題の準備 • ファイルのダウンロード・解凍・コンパイル • サンプルプログラムの説明 • 画像処理の方法 • レポートに載せる画像について • 例題と第1回レポート課題

  3. 目次 • プログラミング課題の準備 • ファイルのダウンロード・解凍・コンパイル • サンプルプログラムの説明 • 画像処理の方法 • レポートに載せる画像について • 例題と第1回レポート課題

  4. サンプルプログラムのダウンロード http://www.iipl.is.ritsumei.ac.jp/ クリック

  5. サンプルプログラムのダウンロード http://www.iipl.is.ritsumei.ac.jp/Event_others.html ファイルの解凍方法,コンパイル,実行方法などは このページに全て書いてあります! このPPTはこのHPの下の方から ダウンロードできます!

  6. 目次 • プログラミング課題の準備 • ファイルのダウンロード・解凍・コンパイル • サンプルプログラムの説明 • 画像処理の方法 • レポートに載せる画像について • 例題と第1回レポート課題

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

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

  9. 画像の表示 • displayコマンドで確認 % display Castle.ppm & • 画像の表示が上手くいかない場合 • ディスク容量がいっぱい? % du –sh     ・・・ディスク使用量の確認 • Netscapeのキャッシュの削除 • Netscapeを立ち上げる 編集→設定→詳細→キャッシュ • キャッシュのクリアを行い,保存するキャッシュ容量も減らすことをオススメします(デフォルトは50MB)

  10. メイン関数 (main.c) • main.c int main(void) { // 画像処理を行う関数の呼び出し // 例1)PPM形式の入力データをネガ画像に変換 NegativeImage(); // 例2)PGM形式のデータに線を描く // DrawLines(); // 正常終了 return 0; } • main()関数からNegativeImage()関数が呼び出されている

  11. 画像処理関数(ImageFilter.c) • ImageFilter.c • void NegativeImage(void) • PPM形式の入力データをネガ画像に変換 void NegativeImage(void) { ・・・ // PPM形式の入力データの読み込み pRGBInputData = ReadPpm(&iWidth, &iHeight, &iMaxValue); ・・・ }

  12. 入出力関数(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次元座標を取得 など・・・

  13. 目次 • プログラミング課題の準備 • ファイルのダウンロード・解凍・コンパイル • サンプルプログラムの説明 • 画像処理の方法 • レポートに載せる画像について • 例題と第1回レポート課題

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

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

  16. 目次 • プログラミング課題の準備 • ファイルのダウンロード・解凍・コンパイル • サンプルプログラムの説明 • 画像処理の方法 • レポートに載せる画像について • 例題と第1回レポート課題

  17. レポートに画像を添付する際の注意 • pgm画像およびppm画像は, そのままだとレポートには載せられません(latexでもwordでも) • 次の方法でファイル形式を変換してから載せてください

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

  19. ファイル形式変換方法(Windows) • irfanview(http://www8.plala.or.jp/kusutaku/iview/)を使うと好きな形式に変換することができます

  20. 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

  21. 何か質問があれば,TAの大村  (CC4F 知的画像処理研究室(陳研))まで • メールアドレス:cm003064@ed.ritsumei.ac.jp

  22. 目次 • プログラミング課題の準備 • ファイルのダウンロード・解凍・コンパイル • サンプルプログラムの説明 • 画像処理の方法 • レポートに載せる画像について • 例題と第1回レポート課題

  23. プログラム例題 • 白黒画像(pgmファイル)から,反転画像を作成する • 反転画像は,255から各画素の値を引き,その値を新しい画素値とすることで作成できる

  24. 手順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

  25. 手順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, iWidth, iHeight, iMaxValue); //出力画像の書き出し FreePgm(pRVOutputData); //出力画像のメモリ解放 } ImageFilter.c

  26. 手順3 • ImageFilter.h内でReversalImage関数の宣言 #ifndef _IMAGEFILTER_H_ #define _IMAGEFILTER_H_ void NegativeImage(void); void DrawLines(void); void ReversalImage(void); #endif ImageFilter.h

  27. 手順4 • main.c内のmain()関数でReversalImage関数を呼び出し #include <stdio.h> #include "ImageFilter.h" int main(void) { // NegativeImage(); // DrawLines(); ReversalImage(); return 0; } main.c !他の関数をコメントアウトするのを忘れないようにしてください!

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

  29. 第1回レポート課題では,今回の例題にあるReversalImage(void)の代わりにBinaryImage(void)という2値化を行う関数を作ってください第1回レポート課題では,今回の例題にあるReversalImage(void)の代わりにBinaryImage(void)という2値化を行う関数を作ってください • ImageFilter.h内での宣言やmain関数内での呼び出しの仕方は,例題と同じです

More Related