Download presentation
Presentation is loading. Please wait.
Published byMeelis Oks Modified 約 5 年前
1
ゼミナール A/B 自主研究編 自主研究に関する資料:
2
ドキュメントスキャナ 黒板や紙、斜めから見づらい? → 正対するように変換しよう
3
黒板(紙)の四隅をクリックすると、 正対化するプログラム
レベル1 黒板(紙)の四隅をクリックすると、 正対化するプログラム
4
クリックしなくても、画像を入力するだけで
レベル2 クリックしなくても、画像を入力するだけで 自動変換するプログラム
5
開発環境 Lubuntu 18.04ベースの仮想環境を提供 VirtualBox Lubuntu 18.04 (Ubuntuの軽量化版)
C/C++環境 OpenCV 3.2 Eclipse CDT 画像を読み込んでグレースケール化して 表示するサンプルプログラム付き もちろん、自前で環境構築をしても構いません。 その場合はソースコードをダウンロードしてください。
6
インストール方法 VirtualBox をインストールする USB2.0/3.0機器などを使いたい場合などは、 VitrualBox Extension Packもインストールする イメージをダウンロードする (5GB) 仮想OSを登録する 新規作成→Ubuntu (64bit)→すでにある仮想ハードディスク 参考(ユーザ名をseminarと読み替えてください): 起動 ユーザ名 seminar パスワード seminar (管理者パスワードも seminar) (Guest Additions のインストール) 解像度の変更などがうまく動かない場合にインストール 参考:
7
インストール方法(補足) Q: Ubuntu (32-bit)しか選択できない
PCのメモリーサイズ より小さく Ubuntu (64bit) を選択 Q: Ubuntu (32-bit)しか選択できない A: BIOS設定で仮想化支援機能をEnableにする (例:CPU configuration → Intel Virtualization Technology)
8
設定例 本体メモリを超えない程度に大きく 可能なら複数コア 128MB
その他、問題が発生した場合 パフォーマンスを上げたい場合は、 VirtualBox に関するウェブサイト などを参考にしてください
9
サンプルプログラムの起動 サンプルプログラムは /home/seminar/project/以下にあります Eclipseを起動
ディレクトリ構造 seminar/ src/ seminar.cpp:メインファイル utils.h:ハフ変換した線を表示する関数 img/ サンプル画像 サンプルプログラムは /home/seminar/project/以下にあります Eclipseを起動 seminar/src/ の中の seminar.cpp を見てみる デバッグ起動する 元画像と白黒版が表示される (何かキーを押すと終了)
10
OpenCV コンピュータビジョンのための様々なプログラムを 含んだオープンソースライブラリ
参考URL リファレンス OpenCV3.2
11
OpenCV における画像フォーマット cv::Mat 主なメンバー,ゲッター class CV_EXPORTS Mat {
int dims; /* 次元数 (>=2) */ int rows; /* 行列の行数(画像の高さ) */ int cols; /* 行列の列数(画像の幅) */ uchar *data; /* 画像データへのポインタ */ int depth(); /* 色毎のビット数(0-255なら8bits) */ int channels(); /* 色数(RGB:3, グレースケール:1) */ ・・・ };
12
画像データの並び x y data BGR BGR BGR ・・・ 画像 原点: 左上 走査方向: 水平→垂直の順
13
画素値へのアクセス方法 8bit グレースケール画像の場合 8bit BGRカラー画像の場合 32bit 実数値行列の場合
cv::Mat img; // 画像データ img.at<unsigned char>(y, x) // ピクセル(x, y) 8bit BGRカラー画像の場合 cv::Mat img; // 画像データ img.at<cv::Vec3b>(y, x)[0] // ピクセル(x, y)のB img.at<cv::Vec3b>(y, x)[1] // ピクセル(x, y)のG img.at<cv::Vec3b>(y, x)[2] // ピクセル(x, y)のR 32bit 実数値行列の場合 cv::Mat img; // 画像データ img.at<float>(i, j) // i行j列目のデータ
14
サンプルプログラムの説明 int main(int argc, char **argv){ cv::Mat img, imgGray; std::string filename = "./img/3.jpg"; img = cv::imread(filename); /* 画像読み込み */ cv::namedWindow("source"); /* 入力画像用ウインドウ作成・表示 */ cv::imshow("source", img); cv::waitKey(); /* 何かキーを押すと処理開始 */ cv::cvtColor(img, imgGray, cv::COLOR_BGR2GRAY); /* グレースケール化 */ cv::namedWindow("grayscale"); /* 結果画像用ウインドウ作成・表示 */ cv::imshow("grayscale", imgGray); cv::waitKey(); /* 何かキーを押すと終了 */ }
15
レベル1:ヒント cv::setMouseCallback cv::findHomography cv::warpPerspective
ウインドウに対するマウスの振る舞いによるコールバック関数を指定する cv::findHomography 与えられた点群セットに対するホモグラフィ行列を計算する cv::warpPerspective 計算されたホモグラフィ行列を使って、画像を幾何変換する その他、便利そうな関数 cv::circle 画像に指定された大きさ・太さ・色の円を描く cv::imwrite 画像を保存する
16
皆さんでアイデアを出しあい、 いろいろな方法を考えてみてください
レベル2:ヒント 皆さんでアイデアを出しあい、 いろいろな方法を考えてみてください cv::Canny Cannyのエッジ検出(グレースケール画像を入力とする) cv::HoughLines エッジ画像を入力として、ハフ変換する util.h内の自作関数 void drawLines (cv::Mat img, std::vector <cv::Vec2f> lines, cv::Scalar color, int thinkness) ハフ変換された線を描画する img: 入力画像 lines: HoughLinesの出力 color: 線の色(e.g. cv::Scalar(0,0,255)なら赤) thickness: 線の太さ
17
予定表 12/14 研究室見学・自主研究の説明 12/21 自主研究(1) 12/26 自主研究(2)(水曜日なので注意!)
12/14 研究室見学・自主研究の説明 12/21 自主研究(1) 12/26 自主研究(2)(水曜日なので注意!) 1/4 自主研究(3)・発表資料作成 1/11 発表練習・発表資料修正 1/25 発表会 2/1 総括 注意:1/11に発表練習をするので、 それまでに必ず発表資料を仕上げること。
18
何か問題・質問があれば 以下に連絡してください 八木研 助教 大倉 史生 okura@am.sanken.osaka-u.ac.jp
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.