みんなのPython勉強会	#16	
Sep	7,	2016	
阿久津 剛史	
Start	Python	Club	
1	
私のPython学習奮闘記	#6	
 〜コンピュータビジョン編〜

自己紹介	
•  阿久津 剛史	
	@akucchan_world	
•  某メーカー勤務	
– 非プログラマ	
•  Python経験2年ちょい	
– まだまだ初心者ですorz	
2
Q1.	ポケモンGOはやりましたか?	
3	hCp://www.pokemongo.jp/
Q2.	画像検索を使ったことはありますか?	
4
Q3.	顔認識機能を使ったことはありますか?	
5	
CNN,	“Why	face	recogniOon	isn't	scary	--	yet”,	
hCp://ediOon.cnn.com/2010/TECH/innovaOon/07/09/face.recogniOon.facebook/
いずれもコンピュータビジョンが	
使われています	
6
コンピュータビジョンとは?	
コンピュータビジョン(computer	vision)は大雑把に言っ
て、「ロボットの目」を作る研究分野である。	
この分野はコンピュータが実世界の情報を取得する全
ての過程を扱うため、画像センシングのためのハード
ウェアから情報を認識するための人工知能的理論ま
で幅広く研究されている。また、近年ではコンピュータ
グラフィックスとコンピュータ・ビジョンの融合が注目を
集めている。	
7	
Wikipedia,	“コンピュータビジョン”	
hCps://ja.wikipedia.org/wiki/コンピュータビジョン
Pythonのコンピュータビジョンパッケージ	
8	
mahotas
『実践コンピュータビジョン』	
“Programming	Computer	Vision	with	Python”	(PCV)	
Jan	Erik	Solem		
(@jesolem)
1章 基本的な画像処理 	
2章 画像の局所記述子 	
3章 画像間の写像 	
4章 カメラモデルと拡張現実感 	
5章 多視点幾何 	
6章 画像のクラスタリング 	
7章 画像検索 	
8章 画像認識 	
9章 画像の領域分割 	
10章  OpenCV		
目次
1章 基本的な画像処理 	
2章 画像の局所記述子 	
3章 画像間の写像 	
4章 カメラモデルと拡張現実感 	
5章 多視点幾何 	
6章 画像のクラスタリング 	
7章 画像検索 	
8章 画像認識 	
9章 画像の領域分割 	
10章  OpenCV		
目次
1章 基本的な画像処理	
12
エンパイア・ステートビルの画像	
•  empire.jpg	
•  縦	800	px	*	横	569	px	
13
白黒画像(グレースケール)	
14	
•  濃度(強度)を256階調で表現	
•  0=白、255=黒	
125	 123	 123	 ...	
126	 125	 125	 ...	
127	 126	 125	 ...	
...	 ...	 ...	 ...	
白黒化	
(800,	569)
カラー画像(RGB)	
15	
188	 186	 186	 ...	
189	 188	 188	 ...	
189	 188	 187	 ...	
...	 ...	 ...	 ...	
133	 131	 131	 ...	
134	 133	 133	 ...	
135	 134	 133	 ...	
...	 ...	 ...	 ...	
88	 86	 86	 ...	
89	 88	 88	 ...	
88	 87	 86	 ...	
...	 ...	 ...	 ...	
=	 +	 +	
•  R(赤)、G(緑)、B(青)の合成	
•  各ピクセルの色強度は256階調	
R	 G	 B	
(800,	569,	3)	 (800,	569)	 (800,	569)	 (800,	569)
2章 画像の局所記述子	
16
2つの写真は同じですか?	
17
2つの写真は同じですか?	
18
2つの写真は同じですか?	
19
マシンは特徴量を使う	
20
画像の特徴量	
PCVで扱う2つの特徴量(記述子) 	
21	
Harrisコーナー	
記述子	
HarrisとStephensによって考案されたコー
ナー(角)の検出アルゴリズム。画像の勾配
を計算して、ピクセルごとに特徴を抽出する。	
SIFT特徴量	
Scale	Invariant	Feature	Transform(スケール
不変特徴量変換)。David	Loweが考案した
特徴量抽出法。スケール、回転、明度に対
して不変でロバストな特徴抽出ができる。
3章 画像間の写像	
22
顔の画像の位置合わせ	
23	
•  J.	K.	Keller氏の顔画像データセット	
•  16年間毎日、顔写真を撮影した
手順	
① 制御点(両目と口の位置)を読み込む	
② 顔画像の位置を補正する	
③ 画像データの平均を取る	
④ 主成分分析(PCA)をする	
	
file:	pcv_03_2_jkfaces.ipynb	
24
パノラマ写真を作る
手順	
① 画像ファイルを読み込む	
② SIFT特徴量を計算する	
③ RANSACでホモグラフィーを推定する	
④ ホモグラフィーに応じて画像を変形する	
⑤ 対応点に合わせて画像を重ねる	
	
file:	pcv_03_3_panorama.ipynb	
26
7章 画像の検索	
27
ケンタッキー大学	
28
物体認識ベンチマークデータセット	
29	
•  4枚1組の画像データセット
画像検索のデモ	
30	
① 画像の特徴をSIFT特徴量で記述する	
② SIFT特徴量をBoVWとして、データベースに保存す
る	
③ 画像ボキャブラリの中から、類似する画像をランキ
ングして表示する。
まとめ	
•  『実践コンピュータビジョン』を題材として、コンピュー
タビジョンの基本をプログラミングしながら、学びまし
た。	
•  Pillowを軸にして、豊富なPythonパッケージを使って、
いろいろなアプリケーション開発ができます。	
•  実用上はOpenCVの利用やJavaScriptなどほかの言
語による開発が必要になる場合もあると思います。

S16 t1 python学習奮闘記#6