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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
82
動き検出勉強会資料
natsutan
0
56
WindowsでGenesisに挑戦した話
natsutan
0
540
辛い仕事をプリキュアで乗り切りHack
natsutan
0
95
論文読み勉強会 RoboGen
natsutan
0
380
プログラミング写経のすすめ
natsutan
0
1.5k
ロボット模倣学習勉強会
natsutan
0
500
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
500
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
How STYLIGHT went responsive
nonsquared
100
6.2k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
It's Worth the Effort
3n
188
29k
A Tale of Four Properties
chriscoyier
163
24k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
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; } } 線形代数の教科書に添ったガウシ アンフィルターの実装 画像処理の教科書にでてくるガウシ アンフィルターの実装 このギャップが大きすぎるので何とかして欲しい