*index [#qa253e0e]
#contents

*第1回の趣旨 [#sa340a9e]
**Linux [#a6867452]
-ディレクトリの変更,コンパイルなどLinuxの操作に慣れよう.
**OPenCVサンプルプログラム[#ba4e5717]
-サンプルプログラムを動かしてみよう.
-サンプルプログラムを改造してみよう.
*第3回の趣旨 [#sa340a9e]
**OPenCVの機能の複合的利用[#ba4e5717]
-複数の関数を組み合わせて,より複雑な処理ができるようになろう。
**GUIに挑戦 [#rf2219f4]
-トラックバーやマウスイベントを取得し、画像処理ソフトの一部をGUI (Graphical User Interface) で操作できるようにしよう。

*練習 [#hfbd9d25]
*サンプルの実行 [#hfbd9d25]
**サンプルプログラムのダウンロード [#s79620c1]
+[[ここからダウンロード.>http://smg.ams.eng.osaka-u.ac.jp/tanaka/AdvancedPrograming2012/samples.zip]]
+ダウンロードしたら適当な場所で解凍しましょう.
+[[ここからダウンロード。>http://www.er.ams.eng.osaka-u.ac.jp/kawai/AP2017/samples2.zip]]
+ダウンロードしたら適当な場所で解凍しましょう。

**まずは,サンプルプログラムを動かしてみよう [#z8cdd1cd]
+samples/open_saveのディレクトリに移動し,以下のコマンドを実行し,コンパイルします.
 $make
+コンパイルが通ったら,以下のコマンドを実行します.
 $./main
+何かキーを押すとopen_saveのフォルダにJPG形式で読み込んだ画像を保存し,終了します(save_img.jpg).
+サンプルプログラムは全部で5種類あります(readme参照).他のサンプルプログラムも問題無く動くことを確認して下さい.
+他のサンプルプログラムでは,コマンドライン引数で読み込む画像を指定します.
 $./main ../00.bmp
+サンプルで読み込む画像はsamplesフォルダ内のimagesにあります.別の画像を読み込んでみましょう.
**サンプルプログラムを動かしてみよう [#z8cdd1cd]
+第1回と同様に、3つのサンプルプログラム(trackbar、mouse、change_pix)を動かしてみよう。
+change_pixでは、コマンドライン引数で画像を読み込みます。
 ./main ../images/00.bmp
+change_pixでは、imagesフォルダ内の別の画像も読み込んでみましょう。

**サンプルを改造してみよう [#f15b9bba]
+scanfを使って任意の画像を読み込めるようにしてみよう.
+同様に,scanfを使って画像に処理を加えるパラメータ(スケール,切り取り位置,回転角度など)を入力できるようにしてみよう.
*解説 [#r1c81636]
**cvCreateTrackbar関数 [#y19fa497]
トラックバーを作成して、指定されたウィンドウに追加する関数です。
 cvCreateTrackbar("Trackbar", "Window", 0, 100, on_trackbar);
では、ウィンドウ"Window"にトラックバー"Trackbar"(最大値100)を生成し、~
トラックバーに変化があるたびに、on_trackbar関数が呼び出されます。
on_trackbar関数
 on_trackbar(int val)
は、トラックバーの値を引数にしています。

*課題:画像処理ソフトを作ろう(基本編)[#fafc23e5]
**下記の機能をコマンドで実行できる画像処理ソフトを作成して下さい [#q9c7dd3f]
 コマンドの例
 (読み込み)read ../images/00.bmp
 (リサイズ)resize 0.5
+画像ファイルの読み込み・保存
--コマンドライン引数ではなく,ソフトの起動後でも任意のファイルを指定して読み込めるようにせよ.
--下記の画像処理を施した画像を,任意のファイル名で保存できるようにせよ.
+リサイズ
--任意のサイズ,任意のスケールを指定してリサイズできるようにせよ.
+切り取り
--任意の位置とサイズを指定して画像の一部を切り取れるようにせよ.
+反転
--任意の軸(水平,垂直,両方)で反転できるようにせよ.
+回転
--任意の位置(x,y座標),回転角度,スケールを指定して回転できるようにせよ.
+その他
--画像処理に関する機能を自分で実装しても良い.
**cvSetMouseCallback関数 [#g38e2d76]
マウスイベントに対するコールバックを指定する関数です。
 cvSetMouseCallback("Window", on_mouse);
では、ウィンドウ"Window"内でマウスイベント(クリックなど)が発生するたびに、~
on_mouse関数が呼び出されます。
on_mouse関数
 void on_mouse(int event, int x, int y, int flags, void *param = NULL)
は、マウスがどのような状態なのかを引数にしており、この値はcvSetMouseCallbackが設定します。~
 int x, y
は画像座標系におけるマウスポインタの座標。
 int event
はイベントの内容。例えば、マウスが移動しただと、eventの値がCV_EVENT_MOUSEMOVEになります。~
他にどのようなイベントがあるか、調べてみてください。

*練習2:画素値操作機能のGUI化 [#t019de18]
+画像を読み込む。
+トラックバーでR(赤)チャンネルの値の倍率を指定する。
+加工した画像を表示する。

*課題2:食べ物の写真を美味しそうに加工しよう! [#k6f696f0]
-自由な発想で料理写真を美味しく見せる画像処理を施し、保存してください。
-GUIを使って、プログラム実行中にパラメータを変更できるなどの工夫があると大幅に加点します。

**注意事項 [#m87b9752]
-指定したファイルが存在しない,パラメータが足りない,異常なパラメータが指定されたなど,処理が実行できない場合には,適切なエラーメッセージを表示せよ.
-Webページを参考にした場合や,誰かに教えてもらった場合には,ソースコードの該当箇所にコメントにてURLや名前・学生番号を記述せよ(下記のリファレンスマニュアルは不要).
-指定したファイルが存在しない、パラメータが足りない、異常なパラメータが指定されたなど、~
処理が実行できない場合には、適切なエラーメッセージを表示してください。
-適宜コメントを入れたり、関数化したりして、他人にもわかりやすいプログラムになるように心がけてください。~
全くコメントのないものは減点します。
-他人のプログラムを写したことが判明した場合は、両者とも0点になります。
-課題内容に対応していないプログラムには点をつけられません。

**提出方法 [#f58dd4aa]
-下記の提出物を第3回(4/25)の講義開始時に回収する.
-提出物一式を入れるフォルダの名前は学生番号とする.
-第5回(5/17)の講義中に課題プログラムのコンパイルと実行が正しくできるかを確認します。
-下記の提出物を第5回の講義日(5/17)24:00までにCLEで提出してください。
--提出物一式を入れるフォルダの名前は学生番号(ログインIDではない!)にして,zipファイルに圧縮してください。
-提出物
--ソースコード
--コンパイルに使用するMakefile
--作成したソフトの仕様や実行方法等を記載したReadme.txt
--加工前後の画像
--その他,コンパイル・実行に必要なファイル

**評価方法 [#n398cb0b]
-仕様を満たしているか.
-ソースコードの可読性の高さ.
--機能ごとに関数を分け,分かりやすい関数名をつけているか(機能ごとにソースを分けて分割コンパイルをしても良い).
--分かりやすい変数名をつけているか.
--分かりやすいコメントを記述しているか.
-機能に対応した分かりやすいコマンドであるか.
-無駄な処理を行っていないか.
-工夫に応じて加点する.
-仕様を満たしているか。
-ソースコードの可読性の高さ。
--機能ごとに関数を分け、わかりやすい関数名をつけているか~
(機能ごとにソースを分けて分割コンパイルをしてもよいです)。
--わかりやすい変数名をつけているか。
--わかりやすいコメントを記述しているか。
-機能に対応した分かりやすいコマンドであるか。
-無駄な処理を行っていないか。
-工夫に応じて加点します。

*参考になるサイト [#r68ab4cb]
-OpenCVライブラリに関する日本語リファレンスマニュアル~
[[OpenCV v1.0.0リファレンスマニュアル>http://opencv.jp/opencv-1.0.0/document/]]~
-自宅のPCで課題をやりたい場合~
[[Vine Linux on VMware Player]]~
[[OpenCV v1.0.0サンプルコード>http://opencv.jp/sample/]]~

*質問がある場合 [#c4e4f38c]
-中西研 田中までメールをください.~
なお,件名は「AP2012:課題1」としてください.~
tanaka_AT_ams.eng.osaka-u.ac.jp (_AT_は@に変えてください)
-中西研 大西までメールをください。~
なお、件名は「AP2017:課題2」としてください。~
yuya.onishi_AT_ams.eng.osaka-u.ac.jp (_AT_は@に変えてください)


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS