SlideShare a Scribd company logo
2015/8/22 MPS第33回ミーティング
Python で画像処理をしてみよう!

第4回 - Scale-space -
金子純也
(Morning Project Samurai 代表)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
本日の予定
• 午前・・・勉強会
• 午後・・・プロジェクトミーティング
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回の復習
• Scale-space 概要
• Scale-space の数学的準備の準備 (微分編)
• Scale-space の数学的準備の準備 (最急降下法)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
Morning Project Samurai (MPS)
• Morning

- 土曜の朝を有意義に
• Project

- プロジェクト指向
• Samurai

- 謙虚に学習

- プロジェクトをバッサバッサ

と斬りまくる
プロジェクト
リーダー
シップ
メンバー
シップ
成果
人脈
UP!
UP!
UP!
キャリア
知識・技術
UP!
UP!
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
これまでに行った活動 (勉強会)
• Webアプリの安全性について(XSS実習)
• コンピュータが動くメカニズム(論理回路基礎)
• プログラムテストについて
• JavaScript 入門 (実習)
• Python を用いた Youtube 動画リストの作成

(プログラム基礎、オブジェクト指向、サーバーからのデータ取得

ドキュメントの検索と読み方、UML基礎)
• Python で OAuth を使ってみよう!
• Python で画像認識をやってみよう!
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
これまでに行った活動 (プロジェクト)
• MPS HP (アプリ化計画)
• ぶらさぼり(東京メトロオープンデータ活用コンテスト
• 企業内研修講師
• 世田谷まちづくりファンド (MPS Setagaya 設立)
• エジソンカー作成
• KDDI無限ラボに企画書提出
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
ぶらサボり
(東京メトロオプンデータコンテスト出展作品)
Python + Django で開発第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
社内研修
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
写真削除
世田谷まちづくりファンド
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
写真削除
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
MPS Setagaya 設立!
次回: 2015/8/23 (日)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
写真削除
KDDI無限ラボに企画書提出!
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
Be Active, Be Creative!!
MPS
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回の復習
• Scale-space 概要
• Scale-space の数学的準備の準備 (微分編)
• Scale-space の数学的準備の準備 (最急降下法)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
Sum of Square Difference (SSD)
マッチ度を測る尺度の一つ
I: チェック対象の画像の輝度
T: テンプレート画像の輝度
width: テンプレート画像の幅
height: テンプレート画像の高さ
x: 横方向のマッチング開始位置
y: 縦方向のマッチング開始位置第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
Sum of Square Difference を用いた
テンプレートマッチング
これらのピクセルの輝度の差
i
j
i
j
x y
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
SSD
(1e8)
縦方向 pixel 番号
横方向 pixel 番号
基準: SSD < 1.3 * 10^8
基準よりも
マッチ
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
使用したアルゴリズムの問題点
• 存在を認識したい対象物の状態の変化に弱い

- スケール

- 回転

- 変形
• 適切な閾値がチェク対象の画像によって異なる

- 明るさ

- 雑音
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回の復習
• Scale-space 概要
• Scale-space の数学的準備の準備 (微分編)
• Scale-space の数学的準備の準備 (最急降下法)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
事前に適切なスケールがわかれば
いいじゃない?
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
Q. 画像の適切なスケールは

事前に知ることは可能?
例:
テンプレートマッチングで、テンプレートの適切な

スケールは事前に知ることが可能?
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
Q. 画像の適切なスケールは
事前に知ることは可能?
A. 一般には No!

(特殊な環境なら Yes)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
基本アイデア
適切なスケールが事前にわからないなら。。。
元画像から色々なスケールの画像を
作っちゃえばいいじゃない!!
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
元画像
ちょっと
小さい画像
さらに
小さい画像
(画像の出典: [1])
(画像の出典: [1])
(画像の出典: [1])
新たな
構造は
付与
されない
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
これから数回(予定2-3回)の
基になる論文
1. Tony Lindeberg. Scale-space: A framework for handling image
structures at multiple scales. Proc. CERN School of Computing,
Egmond aan Zee, The Netherlands, 8–21 September, 1996
2. Witkin, Andrew P. Scale-space filtering: A new approach to multi-
scale description. Acoustics, Speech, and Signal Processing, IEEE
International Conference on ICASSP ’84.
実証実験を行いながら読み解いていく !

(CSの基礎が、かなり詰まっている)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回の復習
• Scale-space 概要
• Scale-space の数学的準備の準備 (微分編)
• Scale-space の数学的準備の準備 (最急降下法)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
微分
関数のある点 x1 における傾き (微分係数)を求める
x1
この直線の傾き (微分係数) 

を求める
f(x)
x
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
微分の方法
2つの点を通る直線の
傾きを考えるf(x)
x
x0 x1
f(x)
x
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
微分の方法
f(x)
x
x0 x1
f(x)
x
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
微分の方法
f(x)
x
x0x1
f(x)
x
x1-x0 を限りなく 0 に近づけた時、
は、x1における微分係数
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
微分の方法
右側の点 x2 を近づける
方法もある
f(x)
x
x2x1
f(x)
x
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
微分の方法
f(x)
x
x1
f(x)
x
x2第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
微分係数の定義
f(x)
x
x1
x
x0 x2第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
x1における微分係数を表す記号!
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
ある点 x における微分を行う
プログラムを作ってみよう!
• x の 2乗 の x = 1 と x = 0 における微分
• sin(x) の x = π/4 における微分
• ヒント:

- import math

- math.pow(x, 2)

- math.sin(x)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
極値
f(x)
x
f(x)
x
x1
微分係数が0になる点の値!
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
極小値
f(x)
x
f(x)
x
x1
微分係数が0になる点の値!
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
極大値
f(x)
x
f(x)
x
x1
微分係数が

0になる点の値!
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
極小(大)値と最小(大)値
f(x)
x
f(x)
x
x3
極小(大)値と最小(大)値は異なる概念!!
x2x1x0
最大かつ極大極大
極小
極小
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
極小(大)値と最小(大)値
f(x)
x
f(x)
x
x3
極小(大)値と最小(大)値は異なる概念!!
x2x1x0
極大
極小
極小
最小
最大かつ極大
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
目次
• Morning Project Samurai (MPS) とは
• 前回の復習
• Scale-space 概要
• Scale-space の数学的準備の準備 (微分編)
• Scale-space の数学的準備の準備 (最急降下法)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
最急降下法
極値のある場所を
コンピューターで
発見する方法 !
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
関数の特徴
x
f(x)
• 関数はある点の周りで、その点における

微分係数で表される直線に従い変化
• 微分係数は極値に近づくほど大きさ減少
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
アイデア
1. ある点 x0 を適当に選び、その点で関数を微分

- 極値のありそうな方向 (微分係数の符号)

- ありそうな極値からの遠さ (微分係数の大きさ)
2. x0 から極値のありそうな方向へ、遠さに比例した

大きさ移動すれば、目的の極値に近づくはず !
3. 1度の移動で無理でも、何度か移動を繰り返せば

そのうち極値のある x に りつくはず !
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
関数の特徴
f(x)
x
f(x)
x
x0
微分係数の符号は - だから、
極小値は右側 !
x1
微分係数は大きめだから
大きく右に移動してみる
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
関数の特徴
f(x)
x
f(x)
x
x0 x1
微分係数の符号は + だから、
極小値は左側 !
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
関数の特徴
f(x)
x
f(x)
x
x0 x1
微分係数の大きさは、
さほどでもなかったから、
少し左に移動
x2
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
極小値に向けて移動するための式
ステップ幅
現在の点
現在の点での
微分係数
移動先の点
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
アルゴリズム
1. 適当な点 x0 を選ぶ
2. 下記の式を用いて移動先の点を決定
3. |xk+1 - xk| が基準値よりも小さければ終了
4. そうでなければ xk = xk+1 として 2 に戻る
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
作ってみよう!
1. 適当な点 x0 を選ぶ
2. 下記の式を用いて移動先の点を決定
3. |xk+1 - xk| が基準値よりも小さければ終了
4. そうでなければ xk = xk+1 として 2 に戻る
• 適当な関数を用意して、ある範囲内にある極値全てを

見つけてみよう! (例: x^3 - 3*x^2 + x*sin(10*x) + 10)
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko
参考文献
1. Tony Lindeberg. Scale-space: A framework for handling image
structures at multiple scales. Proc. CERN School of Computing,
Egmond aan Zee, The Netherlands, 8–21 September, 1996
2. Witkin, Andrew P. Scale-space filtering: A new approach to multi-
scale description. Acoustics, Speech, and Signal Processing, IEEE
International Conference on ICASSP ’84.
3. 久保田光一. 数値解析とその応用. 数理工学者. 2010
第33回 (2015/8/22) MPS 定例ミーティング (c) Junya Kaneko

More Related Content

PDF
Python で画像処理をしてみよう!
 第3回 - 画像認識 -
PDF
Pythonで画像処理をやってみよう!第5回 - Scale-space 第2回 -
PDF
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
PDF
Pythonで画像処理をやってみよう!第2回 - 動く物体の抜き出し -
PDF
Pythonで画像処理をやってみよう!第6回 - Scale-space 第3回 -
PDF
Pythonで画像処理をやってみよう!第8回 - Scale-space 第7回 -
PDF
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
PDF
Python で画像処理をやってみよう!第11回 - SIFT Vol.1 キーポイント候補 -
Python で画像処理をしてみよう!
 第3回 - 画像認識 -
Pythonで画像処理をやってみよう!第5回 - Scale-space 第2回 -
Pythonで画像処理をやってみよう! 第1回 - ヒストグラムと濃度変換 -
Pythonで画像処理をやってみよう!第2回 - 動く物体の抜き出し -
Pythonで画像処理をやってみよう!第6回 - Scale-space 第3回 -
Pythonで画像処理をやってみよう!第8回 - Scale-space 第7回 -
Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -
Python で画像処理をやってみよう!第11回 - SIFT Vol.1 キーポイント候補 -

What's hot (13)

PDF
プログラミングで少し世界を広げよう(MPS)
PDF
IT エンジニア本大賞 2021 講演資料
PPTX
Sano hmm 20150512
PPTX
backbone としての timm 入門
PDF
Sapporo20140709
PDF
アルゴリズムを楽しく!@PiyogrammerConference
PPTX
Tfug#4
PDF
hivemallを使って4日間で性別推定した話
PDF
R+pythonでKAGGLEの2値予測に挑戦!
PPTX
みんなが知らない pytorch-pfn-extras
PDF
UsingChainerMN
PPTX
Mlct 20150430v2
PPTX
Sano tokyowebmining 36_20140526
プログラミングで少し世界を広げよう(MPS)
IT エンジニア本大賞 2021 講演資料
Sano hmm 20150512
backbone としての timm 入門
Sapporo20140709
アルゴリズムを楽しく!@PiyogrammerConference
Tfug#4
hivemallを使って4日間で性別推定した話
R+pythonでKAGGLEの2値予測に挑戦!
みんなが知らない pytorch-pfn-extras
UsingChainerMN
Mlct 20150430v2
Sano tokyowebmining 36_20140526
Ad

More from Project Samurai (20)

PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
PDF
Python で画像処理をやってみよう! -SIFT 第7回-
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
PDF
Python で画像処理をやってみよう! -SIFT 第6回-
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
PDF
Python で画像処理をやってみよう! -SIFT 第5回-
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
PDF
Mpsy20160423
PDF
Make your Artificial Intelligence
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
PDF
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
PDF
Instagram API を使ってウェブアプリを作ろう!
PDF
JavaScript でパックマン!第7回 (一旦最終回)
PDF
JavaScript でパックマン!第6回
PDF
JavaScript で パックマン! 第5回
PDF
JavaScript でパックマン!第4回
PDF
JavaScript でパックマン!第3回
数学的基礎から学ぶ Deep Learning (with Python) Vol. 12
Python で画像処理をやってみよう! -SIFT 第7回-
数学的基礎から学ぶ Deep Learning (with Python) Vol. 9
Python で画像処理をやってみよう! -SIFT 第6回-
数学的基礎から学ぶ Deep Learning (with Python) Vol. 8
数学的基礎から学ぶ Deep Learning (with Python) Vol. 7
Python で画像処理をやってみよう! -SIFT 第5回-
数学的基礎から学ぶ Deep Learning (with Python) Vol. 6
Mpsy20160423
Make your Artificial Intelligence
数学的基礎から学ぶ Deep Learning (with Python) Vol. 4
数学的基礎から学ぶ Deep Learning (with Python) Vol. 3
数学的基礎から学ぶ Deep Learning (with Python) Vol. 2
数学的基礎から学ぶ Deep Learning (with Python) Vol. 1
Instagram API を使ってウェブアプリを作ろう!
JavaScript でパックマン!第7回 (一旦最終回)
JavaScript でパックマン!第6回
JavaScript で パックマン! 第5回
JavaScript でパックマン!第4回
JavaScript でパックマン!第3回
Ad

Pythonで画像処理をしてみよう!第4回 - Scale-space 第1回-