2014/05/02 知的画像処理研究室 M1 中津美冴 is0080rh@ed.ritsumei.ac.jp 画像情報処理1 ~画像処理プログラミング~ 2014/05/02 知的画像処理研究室 M1 中津美冴 is0080rh@ed.ritsumei.ac.jp.

Slides:



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

10: ファイル入出力 Linux にログインし、以下の講義ページ を開いておくこと teachers/w483692/CPR1/ C プログラミング入門 総機 1 ( 月 1) 1.
1 全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える 処理後のデータを出力ファイルに書き出す 画像データ用に確保したメモリを解放.
画像情報処理 1 プログラミング課題 知的画像処理研究室 M2 大村 瑞穂. 目次 プログラミング課題の準備 – ファイルのダウンロード・解凍・コンパイル サンプルプログラムの説明 画像処理の方法 レポートに載せる画像について 例題と第 1 回レポート課題.
画像情報処理1 ~画像処理プログラミング~ 2015/05/01 知的画像処理研究室 M1 吉原寛樹
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第13回構造体.
第12回構造体.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第2回 Microsoft Visual Studio C++ を使ってみよう
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
C言語講習 第0章 Hello, world!.
Cプログラミング演習.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
知能情報工学演習I 第12回(後半第6回) 課題の回答
メモリの準備 メモリには、その準備の方法で2種類ある。 静的変数: コンパイル時にすでにメモリのサイズがわかっているもの。 普通の変数宣言
第7回 プログラミングⅡ 第7回
第14章 ファイル操作 (コマンドプロンプト版)
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
第11回 プログラミングⅡ 第11回
デジタル画像とC言語.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
2013年度 プログラミングⅡ ~ はじめてのプログラミング ~.
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
関数への道.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
2017年度 プログラミングⅡ ~ はじめてのプログラミング ~.
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
画像処理プログラミング 知的画像処理研究室 M2 小林 佳奈美.
2014年度 プログラミングⅡ ~ はじめてのプログラミング ~.
C言語 はじめに 2016年 吉田研究室.
高度プログラミング演習 (01).
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
第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 対応)
モジュール分割.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
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回.
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
プログラミング 2 静的変数.
Presentation transcript:

2014/05/02 知的画像処理研究室 M1 中津美冴 is0080rh@ed.ritsumei.ac.jp 画像情報処理1 ~画像処理プログラミング~ 2014/05/02 知的画像処理研究室 M1 中津美冴 is0080rh@ed.ritsumei.ac.jp

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

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

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

コンパイルの方法 Makefike Imgfilterという実行ファイルが作成される makeコマンドを使用する為のファイル

画像の表示 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) 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次元座標を取得 など・・・

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

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

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

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

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

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

手順1 ImageFilter.cの中に反転画像を作成するReversalImage(void)という関数を作る ImageFilter.c #include <stdio.h> #include <stdlib.h> ・・・・・・ void NegativeImage(void) { int iWidth, iHeight, iMaxValue; } void DrawLines(void) { void ReversalImage(void){ ImageFilter.c

手順2 関数ReversalImageの中で反転処理を実装 ImageFilter.c 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

手順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 <stdio.h> #include "ImageFilter.h" int main(void) { // NegativeImage(); // DrawLines(); ReversalImage(); return 0; } main.c !他の関数をコメントアウトするのを忘れないようにしてください!

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

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

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

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

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

課題について 提出期限:2014/5/16(金) 12:00 何か分からないことがあったら、TAの中津まで連絡してください クリエーションコア 4F 知的画像処理研究室 メールアドレス:is0080rh@ed.ritsumei.ac.jp