狠狠撸

狠狠撸Share a Scribd company logo
フーリエ変換を用いた
テクスチャ有効解像度推定と
その応用
Polyphony Digital Inc.
内村 創 / 安富 健一郎
資料公開するので撮影不要です。
AF補助光とシャッター音はOFF!
ある日のこと
フーリエ変换を用いたテクスチャ解像度推定とその応用
やりましょう。ということで
ツールを作りました。
開発動機:
“良いテクスチャ度” を計測したい
弊社はリアル指向の
ゲーム開発スタジオです。
アーティストは、できるだけ
大きなテクスチャを貼りたい
エンジニアは、
小さいテクスチャにして欲しい
バランスを取るために、
良いテクスチャ度がわかったら最高
では、テクスチャの良し悪しとは?
良い:表したい内容を十分に
表現しつつ小さいテクスチャ。
悪い:内容に対して
サイズが過剰なテクスチャ。
実例を见てみましょう。
良いテクスチャ(一部拡大)
2048*1024
画像サイズは大きいけど、
この内容にはこのサイズは必要。
悪いテクスチャの例
悪いテクスチャ(一部拡大)
2048*512
ノーマルマップと、ロゴ素材の
解像度が一致していない。
要素を分離すれば1.33MBが1MBに。
正しい解像度、大事。
(DDSファイルサイズ合計で)
でもそれ、ツールなんか要る?
目で見てわかるよ!
本当ですか?
とあるテクスチャ
1024*1024
悪の道に染まったテクスチャ
1024*1024
左右で何が违うでしょうか?
一度ニアレストネイバーで
拡大されている。
目の判断だけでは
難しいこともある。
ここまでのまとめ。
良いテクスチャは小さくて浓い。
悪いテクスチャは大きく、薄い。
目では一瞬わからない事もある。
コンピュータで定量化しよう。
フーリエ変換を用いて
テクスチャを分析しよう。
フーリエ変换って何?
SIN波をたくさん足すと、
任意の波形が作れる、という理論。
JOSEPH FOURIER(1768-1830)
逆に言えば、任意の波形から
ある周波数だけ抜き出せる。
画像も2次元の波形なので
同様に扱うことができる。
画像の周波数分解のイメージ
入力画像
一番周波数の低い成分(低周波)
もう少し周波数の高い成分
さらに高周波な成分
低い周波数は画像の構図で、
高い周波数は画像のディテール。
実装には翱笔贰狈颁痴を利用
FFT(高速フーリエ変換)が
すでに用意されているので。
FFTは実装で性能が全然違う。
OPENCVのFFTはかなり速い。
CV::DFT() で一発!
RGBはグレイスケールにしてから。
やってみよう
入力画像
贵贵罢结果。
人类には早すぎる画像出てきた
プロットを工夫しよう
极座标変换しよう。
极座标変换すると
こうなる。
横轴は周波数、縦轴は强さ
分布図だとわかりにくいので、
各周波数の平均値で直線を描いた。
(背景はイメージ)
ついでに、轴を両対数にした。
惭滨笔惭础笔を扱えるようにした。
これを奥滨狈顿翱奥厂ツールとして実装。
QT+OPENCVで。コピペ即分析。
手間を減らす作り。
ダウンロード(WIN)はこちらから。
実装詳細はお気軽にお尋ねください
https://www.dropbox.com/s/
mvv0z93rr55b30n/Fourier_bin.7z
このツールでたくさん分析して
気づいたことがあります。
1/贵ライン。
1/贵ライン。
これ!
良い画像、特に自然画像は
なぜかこのラインと同じ傾きになる。
これは写真もテクスチャも
同じ傾向を示した。
ちなみに、
ホワイトノイズは水平になる。
これは1/Fゆらぎって奴か?
とりあえず1/Fラインと命名。
例。
例は写真ですが
テクスチャも全く同じ傾向です。
とある写真。
1024*683
そのグラフ。
縦と横で小さいほうの解像度が
グラフの上限になる。今回は683。
普通の写真は1/贵ラインと同じ倾き。
手振れしてしまった写真。
そのグラフ。
劣化した画像は、
高周波が下がる。
高ISOでノイジーな
画像はどうなるだろう。
高周波が持ち上がる。
本来の情報がノイズに
隠されてしまった、とも言える。
ボケた画像は右下がり。
ノイズがあると右上がり。
グラフの傾きが
1/Fラインから変化する点が
有効解像度である。
「有効解像度?」
画像の内容を
十分表すために必要な
最小の解像度を
「有効解像度」と呼ぶことにした。
有効解像度の推定が正しいか
検証してみよう。
无劣化画像の场合
きちんと上までグラフがある。
有効解像度が最大な画像。
劣化したらすぐバレるはず。
劣化のサンプルとして、
1/2にバイリニア縮小してみた。
ナイキスト定理で
高周波が欠けた。
左がオリジナル。右が一度縮小。
劣化はそれなりに判別できてしまう。
綺麗なグラフ = 有効解像度が高い
これは正しそうだ。
劣化画像の场合
まずは特性が既知な
ガウスブラーで試してみよう。
半径1ピクセルのガウスブラー。
半分に縮小しても区別しにくいはず。
1/2に缩小した
左がオリジナル、右が縮小後。
差はかなりわかりづらい。
「有効解像度が1/2以下になった」
という推定は正しそうだ。
8ピクセルのガウスブラー。
1/8にしてもわからないはず。
1/8にした。
左がオリジナル。右が1/8。
「有効解像度は元の1/8以下」
という推定も正しそう。
グラフは、有効解像度を
それなりに正しく反映していそうだ。
手振れ写真の例。
有効解像度は
1/4くらいだろうか。
1/4にした。
左がオリジナル
右が1/4にしたもの。
確かに、グラフのとおり
?にしても差は余り見えないようだ。
1/Fラインと傾きが変化する点が
有効解像度だと言って良さそうだ。
ノイジーな画像でも试そう。
1/2にしても大丈夫かな?
フーリエ変换を用いたテクスチャ解像度推定とその応用
解像感が下がってしまった。
ズームしてみると、実はそんなに
有効解像度は高くない。
ノイズはフェイクの解像感を与える。
錯覚なので、注意が必要。
ここまでのまとめ。
大体の自然画像は1/贵ラインに従う。
1/Fラインからの傾きの変化で
画像の有効解像度が推定できる。
有効解像度までなら
テクスチャを縮小しても大丈夫!
有効解像度の高い素材を用意しよう。
第2部
実践と活用
グラフの見方のおさらい
縦軸はコントラスト比
横軸は空間周波数
空間周波数って?
高周波
解像度を下げると
見えなくなる細部
低周波
解像度を下げても
見える構図
表面の傷?汚れ
角の丸み?欠け
隙間の影
隙間の大小
タイル配置(模様)
タイルの色
空間周波数って?
高周波
解像度を下げると
見えなくなる細部
低周波
解像度を下げても
見えている構図
コンクリート質感
目地の表情
クラックの表情
全体の色
上のほうが黒っぽい
汚れの大まかな模様
空間周波数って?
高周波
解像度を下げると
見えなくなる細部
低周波
解像度を下げても
見えている構図
模様の境界の表情
depositphotoのロゴ
全体の色、濃淡
右上~左下に抜ける
縞状の模様
グラフの見方のおさらい
理想
1/f ラインに沿ってまっすぐ落ちて、
スパッと切れるグラフ
これが中身の詰まった良いテクスチャ
グラフの見方のおさらい
右下がり(高周波不足)
高周波でコントラストが下がる
=解像度に対して情報が不十分
グラフの見方のおさらい
右上がり(高周波過多)
高周波でコントラストが上がる
解像度をノイズに喰われている
?高ISOによるノイズ
?圧縮ノイズ
?シャープネスかけすぎ
テクスチャの解像感
?解像度を使い切る高周波がある
?解像度を使い切る低周波がある
=解像感がある
テクスチャの解像感
?解像度を使い切る高周波がある
?解像度を使い切る低周波がある
=解像感がある
写真素材を见てみよう
5顿惭办3によるテクスチャ素材画像(搁础奥现像)
5顿惭办3によるテクスチャ素材画像(搁础奥现像)
よく撮れてる‥‥‥と思ったけど?
5顿惭办3によるテクスチャ素材画像(搁础奥现像)
これ、ダメなやつじゃない?
オリジナル画像解像度はかなりボケている
要因
?わずかな手ブレ
?合焦誤差
オートフォーカス誤差
個体由来の機械誤差
?ローパスフィルタ
5760
2036
どうして?
手ブレ
?手持ち撮影はどんなに頑張っても
わずかにブレる
?すべて三脚撮影は作業性が悪すぎ
?背景テクスチャ撮影はブレやすい
どうして?
合焦誤差
仕事で使うヘビーデューティなカメラは
かなりの確率でAF精度が落ちている
機械誤差は実はけっこう大きい
どうして?
ローパスフィルタ
大部分のデジカメには映像素子の構造上、
ローパス(ボカシ)フィルタがある
こうしないと偽色やモアレが出る
参考までに
ローパスレスカメラ
近年は光学ローパスフィルタを使わずに
画像処理だけで解決しようとするカメラも増え
たが、まだまだ発展途上
参考までに
ローパスレスカメラA(N社)
最高域がほんの少しマシになった程度
参考までに
ローパスレスカメラB(S社)
ほんの少し高周波がなまるが割と良好
右端にカラーノイズがちょっとだけある
参考までに
ローパスレスカメラC(S社)
これも同じ傾向
わかること
オリジナル解像度は
そんなに大事じゃない
シャープネスをかければいいじゃない?
元画像(拡大)
半径1.0- 100% アンシャープマスク
半径1.0- 200% アンシャープマスク
半径1.0- 100% アンシャープマスク?ダブル
シャープネスフィルタの正体
まったく改善しない!
変化があるのは情報の足りない周波数
ではなく、一段下の周波数
シャープネスフィルタの正体
高周波特性は改善しない
有効解像度が悪化する
リピートテクスチャってどうなの?
リピートの周波数特性
※煉瓦はナチュラルに
リピート要素がある
リピートの周波数特性
2×2リピート
リピートの周波数特性
4×4リピート
リピートの周波数特性
低周波不足に
リピートの周波数特性
究極的にはノイズに近付く
16×16リピート
リピート特性=低周波不足
低周波不足にも注意
?ノイズパターンに近い、ということ
?コピペ、スタンプツールの使いすぎ
?ベースがリピート素材?
例外もあります
このテクスチャ
例外もあります
例外もあります
例外もあります
例外もあります
1024
128
拡大缩小フィルタの特性
どれがいいの?
惭滨笔惭础笔を题材に
評価基準
単純
全段でLV0の特性をキープして一致するか
MIPMAPの成り立ちからしてこれが最適と思われる
評価基準
お題にするテクスチャ
ニアレストネイバー缩小
全段別物
エイリアシングの塊
ニアレストネイバー缩小
バイリニア縮小
おおむね良好
実機処理と同じスタンダード。LVが上がる毎に
ほんの少しずつ下がっている
バイキュービック縮小
惜しい
全体的に非常によく一致するが、最高域で少し
なまる。これは致命的
バイリニア缩小の优胜?
バイキュービック縮小> バイリニア縮小(変則2段縮小)
ベスト?
最終解像度の倍解像度以上の元ネタがあるこ
とが条件。
最終解像度の倍までバイキュービック縮小、
最後にバイリニア縮小で半分にする。
おまけ
N社 DDS-Pluginデフォルト設定によるMIPMAP
あれれ?
異常なほどにローパスがかかる。
フィルタが二重にかかっている?
厂补尘补迟蝉耻-惭别迟丑辞诲缩小(変则2段缩小その2)
PS2時代までの必技
倍解像度までバイリニア縮小、最後にニアレス
トネイバー縮小で半分に。
いまは使われていないロストテクノロジー
厂补尘补迟蝉耻-惭别迟丑辞诲缩小(変则2段缩小その2)
まとめ。
画像を周波数空間で
分析するツールを得た。
1/Fの線に大体沿っていれば
解像感がある。
カメラの搁础奥は结构ボケている。
MIPMAP縮小は、バイリニアと
バイキュービックを組み合わせよう
惭滨笔惭础笔(物理)
未来の话
周波数領域でのシャープネスなど
いろんな画像加工をしたい。
今はグラフ評価が人力なので、
自動化し、スコアを出したい。
テクスチャに点数付けしたい。
アセットコンバータに組み込んで
解像度を調整しやすくしたい。
周波数空間での分析?編集が
明るい未来を築きます。たぶん。
明るい未来(例)
連絡お待ちしています。
UCHIMURA@POLYPHONY.CO.JP
YASUTOMI@POLYPHONY.CO.JP

More Related Content

フーリエ変换を用いたテクスチャ解像度推定とその応用