Kinectで画像処理 第2回.

Slides:



Advertisements
Similar presentations
情報技術演習Ⅰ 人文学研究のための情報技術入門 2014/06/11 担当:林晋 TA: 橋本雄太.
Advertisements

主専攻実験 第1回 ガイダンス資料 TA : 野坂 龍佑 (M2), 高林大輔 (M1)
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
プログラミング演習(1組) 第7回
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
初年次セミナー 第4回 整数と実数の取り扱い.
3DCGコンテンツの基礎 第5回授業:最終課題制作
実習問題の解き方 JIS3-2の場合.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
ゲームプログラミング講習 第1章 DXライブラリ入門
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
第13回 プログラミングⅡ 第13回
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
C言語講座 第4回 ポインタ.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
アルゴリズムとデータ構造 補足資料6-3 「サンプルプログラムcat3.c」
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
情報技術演習Ⅰ 人文学研究のための情報技術入門 2017/06/22
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
第10回 プログラミングⅡ 第10回
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
第2回 Microsoft Visual Studio C++ を使ってみよう
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
C言語講座 第3回 ポインタ、配列.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
Microsoft Visual Studio 2005 の使い方
C言語講習 第0章 Hello, world!.
Cプログラミング演習.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
EclipseでWekaのAPIを呼び出す
知能情報工学演習I 第9回( C言語第3回) 課題の回答
第7回 プログラミングⅡ 第7回
高度プログラミング演習 (02).
実習問題の解き方 JIS3-3の場合.
湘南工科大学 2013年10月8日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
第11回 プログラミングⅡ 第11回
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
デジタル画像とC言語.
情報処理概論Ⅰ 2007 第10回 2007/6/27 情報処理概論Ⅰ 第10回.
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
関数の再帰呼び出しとは ハノイの塔 リダイレクト レポート課題
プロジェクト演習Ⅱ インタラクティブゲーム制作
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
画像処理プログラミング 知的画像処理研究室 M2 小林 佳奈美.
B演習(言語処理系演習)第2回 田浦.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
高度プログラミング演習 (01).
卒研1 第1回資料 OpenCVを用いた画像処理
プログラミング演習I 2003年7月2日(第11回) 木村巌.
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
情報基礎演習I(プログラミング) 6月8日 水曜5限 江草由佳
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
標準入出力、変数、演算子、エスケープシーケンス
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
cp-3. サブクラス,継承 (C++ オブジェクト指向プログラミング入門)
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
cp-1. クラスとメソッド (C++ オブジェクト指向プログラミング入門)
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
プログラミング 4 文字列.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
プロジェクト演習Ⅱ インタラクティブゲーム制作
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
キネクトとは 第1回.
Presentation transcript:

Kinectで画像処理 第2回

今回の実験で使用するプログラムは、以下のものです プログラムのソースは https://github.com/K4W2-Book/K4W2-Book これからの演習には、この中のプログラムを使 用する。

KinectV2-Color-01.zipを解凍 今回はこのプロジェクトを用いる。 Kinectなどの複雑なものを扱うプログラムでは、 サンプルプログラムが公開されているので、そ れを修正するという使い方が普通

main.cpp maincolor.pdfで中 を理解しましょう

実行ファイル作成の際には、画像関係を扱うに は、Releaseモードで行ったほうが速い。 ここでモードを選んで、それぞれビルドする必 要がある。実行ファイルは、Release, Debug フォルダの中にできる。

Visual Studioプロジェクトの使い方 Kinect/K4W2-Book-master/C++(Native) フォルダを自分の PCに置く。 C++(Native) /01_Color/KinectV2-Color-01/KinectV2.slnをダブルク リック。 プロジェクト-NuGetパッケージ管理から、OpenCVを選 ぶ(versionは2.4.10)。 ビルド これで実行できれば、プログラム作成に進む。 このプロジェクトは、基本的にmain.cppのみなので、それ の説明を、maincolor.pdfに書いている。参考にすること。

課題 halfImage(サンプルではharfImageとなっているが、正しいスペルに直す)を以 下のように処理せよ。 課題提出方法 KinectAppクラスに、メンバー関数kadai1prog()を追加し、run()の中でそれを呼ぶ形で、以下の 処理を追加せよ。 halfImageをcv::splitで4枚の1チャネル画像singlechannels[0] ~singlechannels[3]に分ける それの1枚目(B画像)を、閾値処理(閾値th = 127)し、グレースケール画像(gray)に格納、 それを別のウィンドウにimshowで表示。 終了する直前に、imwrite関数を使って、halfImageを”halfImage.png”, gray画像を”gray.png”に保 存せよ。 課題提出方法 出来たプログラム(main.cpp)および画像ファイルhalfImage.png, gray.pngを、添 付で、田中(m_tanaka@center.konan-u.ac.jp)に送付 メール本文には、感想などを書いてください。 授業時間内にできない場合は、次の実験及び演習がある前日までに送付のこ と

4チャネル画像を4枚の1チャネル画像に分割する方法 std::vector<cv::Mat> singlechannels; としておいて、4チャネル画像halfImageを cv::split(halfImage, singlechannels); とすれば、 singlechannels[0] (チャネル0の画像=B) singlechannels[1] (チャネル1の画像=G) singlechannels[2] (チャネル2の画像=R) singlechannels[3] (チャネル3の画像=A): 使わない ができる(次ページ参照)。

4チャネル画像 halfImage cv::split cv::threshold Singlechannels[0] B gray

2値化の方法 画像処理の最も基本的な処理 何かの値がある値(閾値という)よりも、大き いとき白、小さいとき黒(あるいは逆)に塗る 例 Kinectで読み込んだカラー画像をモノクロ(1 channelデータ)にする cv::thresholdを使う

OpenCVの関数の調べ方 thresh 255 maxVal thresh 255 maxVal http://opencv.jp/opencv-2svn/cpp/miscellaneous_image_transformations.html#cv-threshold にあるマニュアルによると double threshold(const Mat& src, Mat& dst, double thresh, double maxVal, int thresholdType) 要するに、引数は src: Mat型入力変数(処理のもとの画像) dst: Mat型出力変数(処理結果の画像) thresh: 閾値(0以上、255以下) maxVal: 閾値より大きいとき出力をこの値にする thresholdType: CV_THRESH_BINARY CV_THRESH_BINARY_INV ほかにもある(マニュアル参照) thresh 255 maxVal thresh 255 maxVal

閾値処理のプログラム例(参考) #include <pragma230.h> 【画像2値化の例】 #include <pragma230.h> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv;   int main(int argc, char *argv[]) { Mat gray_img = imread("lena.jpg", 0);//モノクロで読み込む if(gray_img.empty()) return -1; // 固定の閾値処理 Mat bin_img; // 入力画像,出力画像,閾値,maxVal,閾値処理手法 threshold(gray_img, bin_img, 150, 255, THRESH_BINARY); // 結果画像表示 namedWindow("Binary", WINDOW_AUTOSIZE); imshow("Binary", bin_img); waitKey(0); }