画像情報処理1 ~画像処理プログラミング~ 2015/05/01 知的画像処理研究室 M1 吉原寛樹

Slides:



Advertisements
Similar presentations
プログラミング演習Ⅱ 課題 4 第 2 週 画像ファイル (ppm) の読み書き 画像データ用のメモリ確保・解放 1.
Advertisements

10: ファイル入出力 Linux にログインし、以下の講義ページ を開いておくこと teachers/w483692/CPR1/ C プログラミング入門 総機 1 ( 月 1) 1.
1 全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える 処理後のデータを出力ファイルに書き出す 画像データ用に確保したメモリを解放.
画像情報処理 1 プログラミング課題 知的画像処理研究室 M2 大村 瑞穂. 目次 プログラミング課題の準備 – ファイルのダウンロード・解凍・コンパイル サンプルプログラムの説明 画像処理の方法 レポートに載せる画像について 例題と第 1 回レポート課題.
TeX で数式を書くための PowerPoint アドイン Ver (2011/06/26) Ver. 0.1 (2007/5/30)
初年次セミナー 第8回 データの入力.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
第13回構造体.
第12回構造体.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習
配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月6日、H.16(‘04)] 今日のメニュー 1 前回の課題の復習
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
2014/05/02 知的画像処理研究室 M1 中津美冴 画像情報処理1 ~画像処理プログラミング~ 2014/05/02 知的画像処理研究室 M1 中津美冴
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
経営工学基礎演習a PowerPointの利用.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第2回 Microsoft Visual Studio C++ を使ってみよう
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
Borland Delphi 6 でビジュアルプログラミング
Cプログラミング演習.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
精密工学科プログラミング基礎 第10回資料 (12/18実施)
メモリの準備 メモリには、その準備の方法で2種類ある。 静的変数: コンパイル時にすでにメモリのサイズがわかっているもの。 普通の変数宣言
第7回 プログラミングⅡ 第7回
第11回 プログラミングⅡ 第11回
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
デジタル画像とC言語.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
2013年度 プログラミングⅡ ~ はじめてのプログラミング ~.
関数への道.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
2017年度 プログラミングⅡ ~ はじめてのプログラミング ~.
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
画像処理プログラミング 知的画像処理研究室 M2 小林 佳奈美.
2014年度 プログラミングⅡ ~ はじめてのプログラミング ~.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
C言語 はじめに 2016年 吉田研究室.
高度プログラミング演習 (01).
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
TeX で数式を書くための PowerPoint アドイン Ver. 0.1 (2007/5/30)
第5回 プログラミングⅡ 第5回
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
プログラミング演習Ⅱ 課題4第4週 画像処理 (2) 応用.
標準入出力、変数、演算子、エスケープシーケンス
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
extern の意味 (C プログラミング演習,Visual Studio 2019 対応)
モジュール分割.
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える
プログラミング演習II 2003年12月10日(第7回) 木村巌.
マスク合成(のような処理) 出力画像 Out 入力画像1 In1 In1 In2 Out 入力画像2 In
情報処理概論Ⅰ 2007 第11回 2007/7/4 情報処理概論Ⅰ 第11回.
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
プログラミング 2 静的変数.
Presentation transcript:

画像情報処理1 ~画像処理プログラミング~ 2015/05/01 知的画像処理研究室 M1 吉原寛樹

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

サンプルプログラムのダウンロー ド ファイルの解凍方法,コンパイル,実行方 法などは、上記ページに全て書いてありま す.

圧縮ファイルの内容 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 ファイル

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

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

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

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

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

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

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

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

ファイル形式変換方法( Windows ) irfanview ( ) を使うと好きな形式に変換することがで きます

LaTeX で画像を添付する方法 以下のコマンドをレポートに貼り付け \begin{figure}[htbp] \begin{center} \epsfile{file=○○.eps,width=1.0\hsize} \caption{ レポート上に表示させるタイトル } \label{fig:○○} \end{center} \end{figure} 参考:

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

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

手順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] = piInputData[i]; } FreePgm(piInputData); // 入力画像のメモリ解放 WritePgm(pRVOutputData); // 出力画像の書き出し FreePgm(pRVOutputData); // 出力画像のメモリ解放 } ImageFilter.c

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

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

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

レポート課題1 課題内容 – 濃淡画像からポスタリゼーション画像作成 – 今回の例題にある ReversalImage(void) を参考に Posterization (void) というポスタリゼーション 処理を行う関数を作成しなさい – ImageFilter.h 内での宣言や main 関数内での呼び 出しについては、例題と同じ

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

提出期限: 2014/5/14( 木 ) 17:00 何か分からないことがあったら、 TA の吉 原まで連絡してください クリエーションコア 4F 知的画像処理研究 室 メールアドレス: 課題について