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
3D Gaussian Splatting勉強会
natsutan
0
12
初めての模倣学習とVLA
natsutan
0
390
放熱勉強会資料
natsutan
0
40
グラフの書き方勉強会
natsutan
0
110
Googleのロボット技術紹介。RT-1からGemini Robotics-ER 1.5 まで
natsutan
0
100
動き検出勉強会資料
natsutan
0
60
WindowsでGenesisに挑戦した話
natsutan
0
580
辛い仕事をプリキュアで乗り切りHack
natsutan
0
100
論文読み勉強会 RoboGen
natsutan
0
400
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Visualization
eitanlees
152
17k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
220
Evolving SEO for Evolving Search Engines
ryanjones
0
270
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
390
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
How to train your dragon (web standard)
notwaldorf
97
6.8k
How to build a perfect <img>
jonoalderson
1
5.9k
A Tale of Four Properties
chriscoyier
163
24k
Automating Front-end Workflow
addyosmani
1369
210k
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; } } 線形代数の教科書に添ったガウシ アンフィルターの実装 画像処理の教科書にでてくるガウシ アンフィルターの実装 このギャップが大きすぎるので何とかして欲しい