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
chokaizomae
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yoya
January 27, 2017
Technology
2
590
chokaizomae
超解像の前に
yoya
January 27, 2017
Tweet
Share
More Decks by yoya
See All by yoya
resize_nitpick
yoya
1
160
ImageFluxBinary
yoya
2
2.9k
HEIF-kaisetsu
yoya
4
3.5k
go-thumber-imagick
yoya
1
190
wildimagebinary
yoya
1
220
goimagicksyokai
yoya
2
1.1k
GoImagickThumbnail
yoya
0
1.6k
sushigazou
yoya
0
12k
twitterimgupload
yoya
0
400
Other Decks in Technology
See All in Technology
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
220
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
370
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.8k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
210
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
3
1.2k
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
180
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
MCPでつなぐElasticsearchとLLM - 深夜の障害対応を楽にしたい / Bridging Elasticsearch and LLMs with MCP
sashimimochi
0
150
AI駆動開発を事業のコアに置く
tasukuonizawa
1
130
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
100
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.8k
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
Featured
See All Featured
BBQ
matthewcrist
89
10k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
200
Agile that works and the tools we love
rasmusluckow
331
21k
Designing Experiences People Love
moore
144
24k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Bash Introduction
62gerente
615
210k
Marketing to machines
jonoalderson
1
4.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
ラッコキーワード サービス紹介資料
rakko
1
2.2M
Transcript
“超解像”の前に 2017年1月27日(金) “よや”
[email protected]
超解像とは? • いわゆる解像度を上げる処理の事 © h5p://sega.wikia.com/wiki/Opa-Opa © http://dic.nicovideo.jp/a/ファンタジーゾーン
リサンプル処理 • 画像の拡大とは、ドットの細分化 – “大きくするのは小さくする事”
暗黙の前提 • 元々、高画質な画像があって、縮小リサイズ されたものを元に戻すという暗黙の前提 いわゆる逆問題 (しかも情報が減ってる)
超解像は主に2つ • 複数画像から生成 – 情報量を数でカバー – サブピクセルでずらした画像を大量に用意 → 次ページで説明 •
単体画像から生成 – 情報不足のまま何かを仮定して補完 • ニアレストネイバー、バイリニア等々 〜 今日はここまで 〜 • エッジ抽出 • 機械学習系 〜 この辺りは次回 〜 ?
複数画像から生成 • サブピクセルでずらして沢山写真をとる – 連写する、複数レンズで同時に撮る等
(参考)複数レンズのカメラ • L16 © h5p://gigazine.net/news/20151008-16-lens-camera/
一枚の画像から高解像 • 情報量が減っているので原理的に元に戻せ ない • 足りない分、何かしらの仮定を以って補う
画像拡大のドット処理 • 概念的にはこれ – キリの悪い場所をどうするかがキモになる
リサイズのドット処理 • リサイズ後のピクセル座標で for ループ – 各々に対応するリサイズ前のドットを探す。 – キリの悪い場所の処理(補間メソッド)が色々ある
Nearest Neighbor • 元々ジャギーな画像だと決めつける – 色をそのままで、ドットを広げる • 混ぜない! $ convert in.png
–filter point –resize 800%x800% out.png
Nearest Neighbor • 隣のピクセルをそのまま コピーして隙間を埋める • とにかく処理が軽い! h5p://www.imagemagick.org/Usage/filter/#box
Nearest Neighbor のドット処理 • 混ぜない! • プログラム的には座標を四捨五入するだけ
Bi-Linear • ジャギーを増やしたくない $ convert in.png –filter triangle –resize 800%x800%
out.png
Bi-Linear • さらに拡大。徐々に変化する様が見える
Bi-Linear • 線形補完 – ジャギーは増えないけど 折り目のところが不自然 h5p://www.imagemagick.org/Usage/filter/#box
Bi-Linear のドット処理 • 単純に混ぜる – 距離の割合だと計算重たいので、x、y の割合
Bi-Cubic • 隣の隣まで見て、もっと滑らかに補完する © h5ps://en.wikipedia.org/wiki/Bilinear_interpolaXon
Cubic family の計算式 • B(blur) ,C(cardinal) で色んなフィルタを作れる © ImageMagick-6 magick/resize.c
Cubic family の生成 • B(blur) を上げすぎるとボヤける • C(cardinal) でリンギングがかかる
Cubic BC のバランスをとる • (B,C)=(1/3,1/3) が 良さそう → Mitchell フィルタ
© h5p://www.imagemagick.org/Usage/filter/#mitchell
Mitchell-Netravali • ImageMagick の拡大のデフォルト $ convert in.png –filter mitchell –resize
800%x800% out.png
少し蛇足 (縮小について) • みんな大好き Lanczos フィルタ – 縮小はこれを使えば大体OK
Lanczos • ImageMagick の縮小のデフォルト – (見ての通り、拡大は微妙) $ convert in.png –filter lanczos
–resize 800%x800% out.png
Lanczos の縮小がなぜ良いか? • Lanczos • Sinc 関数を元にしてる • それの コンパクトサポートが
Lanczos © h5ps://en.wikipedia.org/wiki/Sinc_funcXon Sinc Lanczos
Sinc 関数って? • 詳しくは Wikipedia で • フーリエ変換すると矩形波になる – つまり、周波数フィルタになる >
LPF • エイリアシングとおさらば この円が増える ヤツね
コンパクトサポートって? • Sinc 関数は無限の範囲で波打つ – 計算量が辛い。理屈では無限 • 一定範囲の外を0に抑える ↑これがコンパクトサポート Sinc Lanczos
sin(x)/x sinc(x)/sinc(x/a)
Lanczos2,3,4 • 2,3,4 に区間に抑えたのが Lanczos Lobe:2 Lobe:3 Lobe:4 Sinc Lanczos
まとめ • これらのフィルタを使い分けると良いかも? – リアルタイム表示 (もしくはドット絵の場合も) • Nearest Neighbor ← 処理が超軽い
– 拡大は • Mitchell フィルタ – 縮小は • Lanczos フィルタ
次回予告 • 超解像 – 単純な補間フィルタ (今回説明したこと) – 勾配から輪郭抽出 (いまどきの超解像) – 機械学習系 (先端的な?)