Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
linear.pdf
Search
Minoru Natsutani
June 26, 2012
320
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
linear.pdf
Minoru Natsutani
June 26, 2012
More Decks by Minoru Natsutani
See All by Minoru Natsutani
放熱勉強会資料
natsutan
0
26
グラフの書き方勉強会
natsutan
0
100
Googleのロボット技術紹介。RT-1からGemini Robotics-ER 1.5 まで
natsutan
0
81
動き検出勉強会資料
natsutan
0
56
WindowsでGenesisに挑戦した話
natsutan
0
540
辛い仕事をプリキュアで乗り切りHack
natsutan
0
95
論文読み勉強会 RoboGen
natsutan
0
370
プログラミング写経のすすめ
natsutan
0
1.5k
ロボット模倣学習勉強会
natsutan
0
500
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
190
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
550
GitHub's CSS Performance
jonrohan
1033
470k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
250
The untapped power of vector embeddings
frankvandijk
2
1.8k
For a Future-Friendly Web
brad_frost
183
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
Practical Orchestrator
shlominoach
191
11k
KATA
mclloyd
PRO
35
15k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
Transcript
線形代数難しいよね 2012/06/27 なつたん
線形代数難しいよね 行列の計算自体は分かるんけど、「だから 何?」感が強い 対角化、固有値 計算方法は分かるけど、僕のプログラムで出番有る の?
LU分解とか・・・ ここまで勉強しても、全く同じ気持ち
だから何?の例 アフィン変換 変換前の座標をX、変換後をYとして以下の式で表現でき る Y = A・X
+ B 回転の場合 こんなの行列使わなくても、図書けば分かるよね? 回転の前後に平行移動が入っても、行列使わずに順番に計算し たら簡単だよね?
画像フィルターの行列表現 ガウシアンフィルターの例 画像処理の教科書に載っている。3x3 ガウシアン フィルターの行列表現 これを画像処理にどう使うの?
よくある間違い 16x16ピクセルの画像データを 16x16の2次元行列Xに入っているとする と・・・。Y = A・X なので、Yも16x16の行列で表せて、かけたらよくね? Y Y
・・・ Y Y Y ・・・ Y : : Y Y ・・・ Y = 16 1 1 2 1 2 4 2 1 2 1 X X ・・・ X X X ・・・ X : : X X ・・・ X 0,0 0,1 0,15 1,0 1,1 1,15 15,0 15,1 15,15 0,0 0,1 0,15 1,0 1,1 1,15 15,0 15,1 15,15 出力画像 フィルター 入力画像 → 行列の次元が合ってないので計算出来ない
さっきの正解 Y Y : Y Y : Y = 16
1 4 2 0 0 0 ・・・ 0 2 1 0 0 0 ・・・ 0 0 0 0 0 0 2 4 2 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 2 4 2 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 2 4 2 0 0 0 1 2 1 0 0 0 0 0 0 : : 1 2 1 0 0 2 4 2 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 2 4 2 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 2 4 2 0 1 2 1 0 0 0 0 0 0 1 2 0 0 0 2 4 2 0 1 2 1 0 0 0 0 0 0 1 0 0 0 0 2 4 0 0 1 2 1 0 : 0 0 0 0 0 ・・・ 0 0 0 0 0 0 ・・・ 0 0 0 0 4 2 X X : X X : X 0,0 0,1 0,15 1,0 15,15 0,0 0,1 0,15 1,0 15,15 256x256の行列 (境界処理適当) 1次元配列 1次元配列 Y = aX + bに対応するガウシアンフィルターの行列表現は、斜めに3本の線が入るような 疎行列(無茶大きい)
良くある実装 /* 境界処理適当 */ for(y=0;y<15;y++) { for(x=0;x<15;x++) { dst[y][x] =
( src[y-1][x-1] + 2 * src[y-1][x] + src[y-1][x+1] + 2 * src[y][x-1] + 4 * src[y][x] + 2 * src[y][x+1] + src[y+1][x-1] + 2 * src[y+1][x] + src[y+1][x+1] ) / 16; } } さっきの巨大な行列、全然出てこない>< 本当は、端っこの処理が難しかったり、ビットシフト使ったり、計算結果再利用 したり、並列化したりするよ!
問題点 Y Y : Y Y : Y = 16
1 4 2 0 0 0 ・・・ 0 2 1 0 0 0 ・・・ 0 0 0 0 0 0 2 4 2 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 2 4 2 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 2 4 2 0 0 0 1 2 1 0 0 0 0 0 0 : : 1 2 1 0 0 2 4 2 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 2 4 2 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 2 4 2 0 1 2 1 0 0 0 0 0 0 1 2 0 0 0 2 4 2 0 1 2 1 0 0 0 0 0 0 1 0 0 0 0 2 4 0 0 1 2 1 0 : 0 0 0 0 0 ・・・ 0 0 0 0 0 0 ・・・ 0 0 0 0 4 2 X X : X X : X 0,0 0,1 0,15 1,0 15,15 0,0 0,1 0,15 1,0 15,15 /* 境界処理適当 */ for(y=0;y<15;y++) { for(x=0;x<15;x++) { dst[y][x] = ( src[y-1][x-1] + 2 * src[y-1][x] + src[y-1][x+1] + 2 * src[y][x-1] + 4 * src[y][x] + 2 * src[y][x+1] + src[y+1][x-1] + 2 * src[y+1][x] + src[y+1][x+1] ) / 16; } } 線形代数の教科書に添ったガウシ アンフィルターの実装 画像処理の教科書にでてくるガウシ アンフィルターの実装 このギャップが大きすぎるので何とかして欲しい