コンピュータビジョン特論第2回 コンピュータでの画像の扱いと OpenCVの使い方

Slides:



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

主専攻実験 第1回 ガイダンス資料 TA : 野坂 龍佑 (M2), 高林大輔 (M1)
メモリとポインタ. プログラムの前提 コンピュータは、0と1で計算をし、 0と1でデータを保存している。 メモリを学ぶのに必要な知識である。
1 全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える 処理後のデータを出力ファイルに書き出す 画像データ用に確保したメモリを解放.
画像情報処理 1 プログラミング課題 知的画像処理研究室 M2 大村 瑞穂. 目次 プログラミング課題の準備 – ファイルのダウンロード・解凍・コンパイル サンプルプログラムの説明 画像処理の方法 レポートに載せる画像について 例題と第 1 回レポート課題.
画像情報処理1 ~画像処理プログラミング~ 2015/05/01 知的画像処理研究室 M1 吉原寛樹
動画像処理特論1 動画像の獲得と保存.
コンピュータビジョン特論 OpenCVについて
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
Chapter11-4(前半) 加藤健.
パノラマ動画像モデルによる 仮想空間表現システムの研究
ロボットビジョン(ロボットの視覚能力)のための デジタル画像処理
第1章 第1節 情報のディジタル化のしくみ 4 音の表現 5 画像の表現
情報A 第12回授業 04情報のディジタル化 対応ファイル:12exp12.xls
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
情 報 の 表 現(3) 情報社会とコンピュータ 第10回.
第1章 第1節 情報のディジタル化のしくみ 4 音の表現 5 画像の表現
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
画像処理 入力画像に対して何らかの変換処理を行う 明るさやコントラストの調整、ぼかし・鮮鋭化など レタッチ系の画像ツールでよく使われる機能.
情報科学1(G1) 2016年度.
アルゴリズムとデータ構造 2011年6月13日
プログラムはなぜ動くのか.
カラー撮影,CCD 以外の撮像系 撮像素子の制御による高度な計測
デジタル回路(続き) コンピュータ(ハードウェアを中心に)
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
カラー撮影,CCD 以外の撮像系 撮像素子の制御による高度な計測
2014/05/02 知的画像処理研究室 M1 中津美冴 画像情報処理1 ~画像処理プログラミング~ 2014/05/02 知的画像処理研究室 M1 中津美冴
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
行列による画像処理 デジタル表現論 担当者:劉 雪峰 2017年6月1日.
プログラミング応用 printfと変数.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
画像処理プログラムの説明.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング演習Ⅱ 課題4第3週 画像処理 (1) ビット演算子.
第7回 プログラミングⅡ 第7回
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
デジタル画像とC言語.
情報機器と情報社会のしくみ Web素材利用
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
画像の情報量 Copyright(C)2008 Tsutomu Ohara All rights reserved.
2013年度 プログラミングⅡ ~ 計算してみよう ~.
2015年度 プログラミングⅡ ~ 計算してみよう ~.
情報処理Ⅱ 第2回:2003年10月14日(火).
画像処理プログラミング 知的画像処理研究室 M2 小林 佳奈美.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
C言語 はじめに 2016年 吉田研究室.
コンピュータグラフィックス 実習3: 光線追跡法
11: 動的メモリ確保 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
アルゴリズムとデータ構造 2012年6月11日
画像の情報量 Copyright(C)2008 Tsutomu Ohara All rights reserved.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
情報処理Ⅱ 2005年10月28日(金).
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
コンパイラ 2012年10月11日
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
11: 動的メモリ確保 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える
情報処理Ⅱ 第2回 2004年10月12日(火).
情報処理Ⅱ 2005年11月25日(金).
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
マスク合成(のような処理) 出力画像 Out 入力画像1 In1 In1 In2 Out 入力画像2 In
左右反転と180度回転 [0][xsize – 1] [0][0] → i ↓ j [ysize – 1][xsize – 1]
情報処理Ⅱ 小テスト 2005年2月1日(火).
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
Kinectで画像処理 第2回.
Presentation transcript:

コンピュータビジョン特論第2回 コンピュータでの画像の扱いと OpenCVの使い方 加藤丈和 2006年10月11日

今回の内容 コンピュータビジョンについて学ぶ準備として、画像の撮影のしくみ、コンピュータ上での画像の扱いについて学ぶ。 OpenCVのインストール方法、基本的な使い方について学ぶ。

画像の撮影のしくみについて カメラで画像を撮影して、コンピュータに取り込む仕組み ここでは取り込みまでの仕組みの概要について 色についての詳細は第6回 カメラモデルや幾何的なしくみの詳細は第9回から第11回

画像の撮影のしくみ(モノクロ) カメラ 同期信号(30Hz、24Hzなど) レンズ 絞り メモリ 同軸ケーブル(NTSC) IEEE1394(DCAM, DV) USB(motion jpeg)など エンコーダ 被写体 受光素子が二次元配列上に並んでいる キャプチャカード インタフェース デコーダ 受光素子:フォトトランジスタなど光を電荷に変換する素子 撮像素子(CCD,CMOS) メモリに取り込む 受光素子の数を画素数と呼ぶ

画像の撮影のしくみ(カラー、3CCD方式) レンズ CCD(赤) 絞り 入射光 CCD(緑) 分光器(プリズム) CCD(青) CCD 3CCD方式:分光器(プリズム)で分光して赤、緑、青それぞれの光を3個のCCDで撮影する 各色の解像度が高い(色にじみがない) コストがかかる 小型化が困難

画像の撮影のしくみ(カラー、単版式) カラーフィルタの例 レンズ 絞り (ベイヤー配列) カラーフィルタ CCD 入射光 単版式:CCDの前にカラーフィルタを置いて1個のCCDで各色を撮影 画素数Nに対して 赤と青はN/4の解像度 緑はN/2の解像度 変換式によって各画素をRGBに変換 (フィルタの配列と変換式は   各メーカーがしのぎを削っている) 低コスト、小型化が容易 人間の目には自然(色の分解能が低い) 各画素ごとに3色均等配置するのが理想的だが3倍の素子が必要 各色不均一な配列 →ベイヤー配列、ベイヤーパターン

コンピュータ上での画像の取り扱い 左上が原点 の場合が多い 幅(width) 画像は、二次元配列上にならんだデータの集まり 一個のデータを、画素(pixel)と呼ぶ 高さ(height) 画像サイズ:幅×高さや画素数で表す     640x480 100万画素 カラー画像は、複数の画像の重ね合わせで表現する それぞれの画像のことを、プレーン(plane)、もしくは、チャンネル(channel)と呼ぶ RGB(赤、緑、青)の3プレーンを用いることが多い 他にも、YUVやHSVなどや αチャンネル(透明度)を用いる場合がある

画像のメモリ配置 1つの画素の1つのチャンネルのデータ のビット数をデプスと呼ぶ 例。256段階ならデプスは8ビット R G B 1画素のビット数を bps(ビットパーピクセル)と呼ぶ bps = デプス×チャンネル数 R G B R G B R G B R G B (0,0) (1,0) (n,0) (0,1) 次の行の先頭までのバイト数を ラインステップと呼ぶ ラスタスキャン: 左上から右に順番にメモリ上に配置され 右端までくると一段下の左端から順に配置される 複数チャンネルの場合は画素ごとに各チャンネルを並べることが多い チャンネルごとに並べる場合もある

動画の取り扱い 画像が時間軸上に並んでいる 一枚一枚の画像をフレームと呼ぶ 1秒間のフレーム数をフレームレート(fps)と呼ぶ t 画像が時間軸上に並んでいる 一枚一枚の画像をフレームと呼ぶ 1秒間のフレーム数をフレームレート(fps)と呼ぶ 必要なメモリが膨大になるので、通常1から数フレーム分の画像のみメモリにおいて処理する

OpenCVによる画像処理プログラミング OpenCVのインストールに関する解説 前述のコンピュータによる画像の扱いを踏まえて、OpenCVによる基本的な画像の扱いを学ぶ

OpenCVのインストール方法、プログラムのコンパイル方法 テキスト参照 注意: Fedora Core 5のopencvパッケージは、カメラまわりのライブラリが組み込まれていないので、ソースからコンパイルしなおすか http://vrl.sys.wakayama-u.ac.jp/CV/opencv-fc5/ においてあるパッケージを利用すること Opencv-0.9.9のサンプルプログラムのビルドはmakeで行なう Opencv-0.9.5以前ではpkg-configの変わりにopencv-configを使う

プログラムで画像を扱う (IplImage構造体) テキスト4.2節 R G B R G B R G B R G B (0,0) (1,0) (n,0) (0,1)

新しい画像の作成 640×480の画像サイズ、デプス8、3チャンネルの画像を作る

ファイルからの画像の読み書き IplImage *image; 読み込み 書き込み 1:カラー画像として読み込み 0:濃淡画像として読み込み -1:画像ファイルに従う isColor 画像ファイルのフォーマットはsuffix(拡張子)から自動的に判断する 読み込めるフォーマットは、ppm, pgm, pbm, png, jpeg, tiff, bmpなど セーブできる画像は、デプスが8(符号なし)、1か3チャンネルの画像のみ それ以外の場合は、cvSave(マニュアル参照)を使うか、自分で保存用の関数を作成すること

画素へのアクセス ある画素のメモリ上のアドレスを計算 x座標×チャンネル数×デプス unsigned char *pixel; /* デプスが8ビット符号なし                 の場合 */ y座標 *depth デプスが8以外の場合 x座標 RGB3チャンネルの場合 赤:pixel[0] 緑:pixel[1] 青:pixel[2] y座標×widthStep

画素の型と変数の型の関係 unsigned char *pixel; /* デプスが8ビット符号なし の場合 */ こちらが使える環境なら                 の場合 */ こちらが使える環境なら こちらのほうが安全 uint8_t *; or unsigned char * sint8_t *; or signed char * uint16_t *; or unsigned short * sint16_t *; or signed short * uint32_t *; or unsigned int * sint32_t *; or signed int * float * double * どのCでも使えるが サイズは環境依存

サンプルプログラム(前半)

サンプルプログラム(後半)

実行結果 画素値を反転

動画像処理 ムービーファイルを読みこんで処理 カメラから直接キャプチャ Windowsの場合:VFW(Video for Windows)に対応したカメラ(ほとんど) Linuxの場合:Video4Linux対応のカメラ、もしくはDCAM(IEEE1394非圧縮)のカメラ MacOSXの場合:QuickTime対応のカメラ(iSightなど)

動画の処理(Capture構造体) (テキスト図11のサンプルより) Capture構造体で動画の取り込みを行なう ムービーからの取り込みもカメラからの取り込みも可能 カメラの番号(-1にすると自動選択) IplImage *image; →cvCaptureFromAVI(“ファイル名”); 画像を1フレーム読み込む

課題レポート OpenCVもしくは、その他の画像を処理する環境をインストールする テキスト図3(Example3.c)程度の簡単なプログラムを作成し、動作を確認する。(処理内容は何でも良い) レポートには次の内容をまとめる 動作環境 OSとそのバージョン 使用ライブラリとそのバージョン(ライブラリを使用しない場合はなし) コンパイラとそのバージョン 実験に使えるカメラの有無 プログラムリスト(長い場合は主要部分のみ) 実行結果 処理内容の説明と考察