More Related Content Similar to Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 - (20) More from Project Samurai (19) Pythonで画像処理をやってみよう!第7回 - Scale-space 第6回 -2. 本日の目標
• 二次元画像を用いてスケールスペースを作成
- 二次元空間におけるコンボリューションの理解
- DoG (Difference of Gaussian) の理解
• プログラムの抽象化に触れる
本日使用するソースコードが GitHub にあがっています
(mps_scale_space_20151114 で検索)
https://github.com/morningprojectsamurai/mps_scale_space_20151114
チャレンジャーはソースを見るんじゃないケロ!
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
3. SIFTを用いた画像認識のストーリー
• Scale-space を構成
• Scale-space 中の画像にDoG を適用
• DoGの適用によって得られた画像から極値点を抽出
• そこからさらにキーポイントとなり得る点を選別
• キーポイントにさらに情報を付加して画像の特徴とする
• 画像の特徴のマッチングを行い物体の認識を行う
赤い部分が今日の部分ケロ !
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
14. 離散化 Gaussian Convolution の式
m行
n列
s行
t列
* = m行
n列
添字は全て0からスタートするケロ
[] はガウス記号だケロ
G が Mi に収まらない場合について考慮していないケロ
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
15. 離散化 Gaussian Convolution の計算量
Mi: m 行 n 列の行列, G: s 行 t 列の行列
Mo の1画素を求めるために必要な計算量
- s * t
Mo の全画素を求めるために必要な計算量
- m * n * s * t
例: 縦横256ピクセルの画像と縦横12ピクセルのフィルタ
256 * 256 * 12 * 12 = 9437184 ケロ・・・
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
17. 離散化 Gaussian Convolution の式
再考2
α(k) = k - [2/s], β(l) - [2/t] とおく
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
19. 離散化 Gaussian Convolution の式
再考4
一次元のGaussian Convolutionを
全ての行に適用した画像
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
20. 離散化 Gaussian Convolution
高速に行うためのアルゴリズム
ステップ1.
一次元のGaussian Convolutionを全ての行に適用
ステップ2.
ステップ1で得た画像に対して、一次元のGaussian
Convolution を全ての列に適用
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
21. 離散化 Gaussian Convolution の計算量再考
Mi: m 行 n 列の行列, G: s 行 t 列の行列
Mo の前画素を求めるために必要な計算量
- m * n* t + m * n * s = m * n * (s + t)
例: 縦横256ピクセルの画像と縦横12ピクセルのフィルタ
256 * 256 * (12 + 12) = 1572864
前回の結果 9437184 と比較すると約17%の計算量
ケロ !!!
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
22. 作ってみよう!!
1. 離散化した Gaussian Convolution を用いて
画像を平滑化するプログラムを書いてみよう !
- まずは “lenna image processing” と
google で検索してテスト用画像をゲット !
- σ の値を任意の値に変更していつでも画像を
平滑化できるようモジュール化してみよう !
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
25. DoG (Difference of Gaussian)
• 2つのスケールの異なる Gaussian Kernel の差分
• DoG と画像の Convolution を取ると
LoG (Laplacian of Gaussian) を用いたエッジの
強調と同じような効果が得られる
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
28. Scale-space を有効活用した DoG の
適用方法
Convolution の性質:
適用方法の導出:
Scale-space 中に既に存在する画像 !MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
29. DoG を適用した画像の求め方
σ = 0.0
σ = 1.6
Scale-space 中のG(x, y, kσ) で平滑化した画像と
G(x, y, σ) で平滑化した画像の差分を取るだけ !!
ー
それを早くいうケロ
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
32. LoG (Laplacian of Gaussian)
• 画像からエッジの強調や抽出をするために
使用される
• Gaussian kernel と Laplacian の合わせ技
- 下記作業を一括して行うオペレータ
1. Gaussian Kernel を画像に適用して平滑化
2. その後 Laplacian を用いてエッジの抽出
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
36. LoG と DoG の関係
(出典: [1])
DoG は LoG の定数倍
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
37. DoG を用いる利点
• LoG は 計算量が大きい
- Gaussian Convolution のように x 軸と y 軸に
分けて計算できない
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
42. 手順
• σ = 1.6, k = √2 として、0, σ, kσ, kkσ で平滑化された
画像で構成される Scale-space を作る
• できた Scale-space の画像を用いて DoG を適用した
画像で構成される空間を作る
• kkσ の画像を1/4の大きさにダウンサンプリングする
• ダウンサンプリングした画像を元に Scale-space
をもう一つ構成する (2nd octave)
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko
44. 参考文献
1. David G. Lowe. 2004. Distinctive Image Features from Scale-Invariant
Keypoints. Int. J. Comput. Vision 60, 2 (November 2004), 91-110.
2. M. Alex O. Vasilescu: http://alumni.media.mit.edu/~maov/classes/
vision09/lect/09_Image_Filtering_Edge_Detection_09.pdf
MPS 第38回 (2015/11/14) 定例ミーティング資料 (c) Junya Kaneko