Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
linear.pdf
Search
Minoru Natsutani
June 26, 2012
340
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
61
初めての模倣学習とVLA
natsutan
0
840
放熱勉強会資料
natsutan
0
49
グラフの書き方勉強会
natsutan
0
120
Googleのロボット技術紹介。RT-1からGemini Robotics-ER 1.5 まで
natsutan
0
120
動き検出勉強会資料
natsutan
0
71
WindowsでGenesisに挑戦した話
natsutan
0
640
辛い仕事をプリキュアで乗り切りHack
natsutan
0
110
論文読み勉強会 RoboGen
natsutan
0
430
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
770
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
59k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
450
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
760
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
440
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
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; } } 線形代数の教科書に添ったガウシ アンフィルターの実装 画像処理の教科書にでてくるガウシ アンフィルターの実装 このギャップが大きすぎるので何とかして欲しい