【論文紹介】Pyramid Texture Filteringとは【画像処理】

# はじめに
レイチェルです。
今回はZhangらが発明した [**Pyramid Texture Filtering**](https://rewindl.github.io/pyramid_texture_filtering/) という一風変わったテクスチャフィルタリングに関する論文の紹介をさせていただきます。
本研究は、SIGGRAPH2023のMaterial Renderingセッションで発表されたものです。

## BibTeX
```
@article{zhang2023pyramid,
    title   = {Pyramid Texture Filtering},
    author  = {Zhang, Qing and Jiang, Hao and Nie, Yongwei and Zheng, Wei-Shi},
    journal = {ACM Transactions on Graphics (Proceedings of ACM SIGGRAPH 2023)},
    year    = {2023},
    volume  = {42},
    number  = {4},
    pages   = {1-11}
}
```

# 概要
論文中の **Fig. 1** には、Zhangらの手法によって画像がどのように変化するのかが表れた図が掲載されています。
その一部を抜き出して以下に紹介します。

**画像例**

<img width="49%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264716/451bb254-8a1a-565c-096c-c0a422bebbb0.png">
<img width="49%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264716/104c1e07-7ee6-4b5e-e838-ca93ef3c46b2.png">

この図を見ると、細かいテクスチャはスムージングされ、画像の基本となる構造(今回の場合はSIGGRAPHという文字)は失われずに維持されていることがわかります。
このように、Zhangらの手法では画像の構造を維持したままテクスチャを除去する手法が解説されています。

## テクスチャスムージング(Texture smoothing)とは
テクスチャスムージングとは、画像処理技術の1種で、画像の中のディテールやノイズを除去しながら、画像の主要な構造(エッジや輪郭など)を保持する手法です。
Zhangらは詳細強調や、画像の抽象化、HDRトーンマッピングなどに活用できると述べています。

## 従来の問題点
従来では、テクスチャと構造の分離を手作業で行ったり、画像の特徴(色や形状など)を元に分離をするための手法が考案されています。しかし、これらの手法は特定の条件下ではうまく動作しない可能性があります。
また、学習ベースでの手法も考案されていますが、訓練データにないパターンの画像はうまく分離できない可能性も示唆されています。

## 本論文の貢献
Zhangらは**最も粗いレベルのガウシアンピラミッド**を観察し、画像の構造を損なうこと無く効果的にテクスチャを取り除けていることを発見しました。そこで、この発見に基づいてガウシアンピラミッドの最も粗い層から順に **ピラミッドガイド構造認識アップサンプリング** を用いて、精細な構造を維持しつつテクスチャの除去を可能にしています。

# 画像ピラミッド(image Pyramids)
Zhangらの手法において、非常に重要な概念となる画像ピラミッドについて紹介します。以下の記事でわかりやすく解説されているので、必要に応じて参照してください。
[Image Pyramid(画像ピラミッド)と深層学習中の応用 #DeepLearning - Qiita](https://qiita.com/chiba1sonny/items/be5a6e1d1d539bf21a11)

画像ピラミッドとは、画像を段階的にダウンサンプリングし、各解像度の段階をピラミッド構造に解釈するという概念です。
Zhangらの手法では、ガウシアンピラミッド(Gaussian Pyramid)とラプラシアンピラミッド(Laplacian Pyramid)の2種類を用いています。

## ガウシアンピラミッド
ガウシアンピラミッドとは、ガウシアンフィルタを用いて段階的に入力画像の解像度を下げることで生成した画像ピラミッドです。ガウシアンフィルタをかけた画像に対して、更にガウシアンフィルタをかけることで生成します。

## ラプラシアンピラミッド
ラプラシアンピラミッドは、ガウシアンピラミッドを元に生成される画像ピラミッドです。ガウシアンピラミッドの各レベルに対して、ラプラシアンフィルタをかけることで、各レベルのエッジ画像を生成します。

# 提案手法
以下の図は、Zhangらの手法の概要を表したものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264716/b473b9f7-a0df-7fb8-ffdc-a64201a655c1.png)

図中の$G_0(I)$は入力画像、$L_0$は$G_0$にラプラシアンフィルタを適用したエッジ画像です。また、同図では$N$階層の画像ピラミッドを生成しており、$G_N$と$L_N$はそれぞれ$N$番目のガウシアンピラミッドレベルとラプラシアンピラミッドのレベルを示しています。Zhangらの手法では、はじめにこれらの画像ピラミッドを生成します。

次に、PSUの部分に注目してみましょう。PSUとは、Zhangらが考案した **Pyramid-Guided Structure-Aware Upsampling** のことで、画像の主要な構造を維持しながらアップサンプリングを行う手法です。
PSUには、入力として $(G_N=R_N)$、つまり最も粗いレベルのガウシアンピラミッドの画像から開始します。また、$G_{N-1}$と$L_{N-1}$も同時に入力します。すると、$R_N$の構造を維持してアップサンプリングされた画像である $R_{N-1}$が出力されるという寸法になっています。
あとはこれを$G_0$が入力になるレベルまで繰り返していくと、最終的に$G_0$の基本構造を維持したままテクスチャのみが取り除かれた出力 $R_0$が生成されます。ここまでは簡単ですね！

## ピラミッドガイド構造認識アップサンプリング(Pyramid-Guided Structure-Aware Upsampling)
ピラミッドガイド構造認識アップサンプリング (以下、PSU)についてご説明いたします。まずはPSUの概要を表した以下の図を御覧ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264716/b054eb5f-b56f-2c51-9da7-0e2043578bd7.png)

同図の$R_k$は入力画像、$G_{k-1}$と$L_{k-1}$はそれぞれ$R_k$の1つ上のレベルの解像度のガウシアンピラミッドとラプラシアンピラミッド画像です。
次にPSUの内部構造に注目してみましょう。$JBF$および$JBF^↑$という2種類の要素の存在を確認できます。これは、それぞれ以下のものになっています。

- ジョイントバイラテラルフィルタ(Joint Bilateral Filter)
- ジョイントバイラテラルアップサンプリング(Joint Bilateral Upsampling)

ちょっと行数割いてそれぞれの解説しますね。

### ジョイントバイラテラルフィルタ(Joint Bilateral Filter)
ジョイントバイラテラルフィルタ(以下、JBF)は、バイラテラルフィルタ（Bilateral Filter）を拡張したもので、エッジを保持しながら画像の平滑化を行うフィルタリング手法です。
JBFの主な特徴は、フィルタリングの際にガイダンス画像を使用する点です。これにより、参照画像のエッジ情報を利用して、入力画像のエッジを保持しながら平滑化を実現します。
JBFは以下の式で表されます。

```math
JBF(I,\tilde{I})_p = \frac{1}{K_p} \sum_{q\in\Omega_p^d} g\sigma_s (||p-q||) g\sigma_r (||\tilde{I_p} - \tilde{I_q}||) I_q
```

う～んややこしい。変数の説明をしますね。

$I$は入力画像、$\tilde{I}$はガイド画像です。次に、$p$と$q$はテクスチャ座標です。
$\Omega_p^d$は、$p$を中心とした$d \times d$のピクセルの集合、要するにカーネルです。$d=3$の場合はpを中心とした8近傍が$\Omega_p^d$ということです。
$g\sigma_s(x) = exp(−x^2/2\sigma_s^2)$ は、空間距離に基づく重み関数です。また、$\sigma_s$は空間距離の標準偏差になっています。ようするに、$\sigma$が大きいほどより広範囲にフィルタの効果が及びます。
$g\sigma_r(x) = exp(−x^2/2\sigma_r^2)$は、画素強度の類似性に基づいた重み関数です。

これを$K_p$について解くと、以下のようになります。

```math
K_p = \sum_{q\in\Omega_p^d} g\sigma_s (||p-q||) g\sigma_r (||\tilde{I_p} - \tilde{I_q}||)
```

式を見ると、ガイド画像の画素情報を参照しながらフィルタリング結果を導出しているので、従来のバイラテラルフィルタよりもエッジ保存能力が高いってことがわかります。

### ジョイントバイラテラルアップサンプリング(Joint Bilateral Upsampling)
ジョイントバイラテラルアップサンプリング(以下、JBF↑)は、JBFに非常によく似た構造をしています。以下の式を御覧ください。

```math
\hat{R}_{k-1} = JBF^↑(R_k, G_{k-1})
```

なんじゃこりゃ。
ここよくわからなかったので、ChatGPT 4oに聞いてみました。それによると、JBF↑の仕組みは以下の通りだそうです。

1. まず$R_k$を通常の補間手法(バイキュービック補間など)で$G_{k-1}$の解像度までアップサンプリングする(この結果を仮に$R_k^`$としよう)
1. $JBF(R_k^`,G_{k-1}) = \hat{R}_{k-1}$となる

なるほど本当かは知らんが、確かにこれなら$G_{k-1}$のエッジ情報を参照しながら綺麗にアップサンプリングできそうだ。
正確な情報が知りたい方は、以下の論文を読むといいでしょう。JBF↑の元ネタです。

[Johannes, Kopf., Michael, F., Cohen., Dani, Lischinski., Matthew, T., Uyttendaele. (2007). Joint bilateral upsampling.  26(3):96-. doi: 10.1145/1275808.1276497](https://dl.acm.org/doi/10.1145/1275808.1276497)

~~急に投げやりになったとか言わないで~~

## もう一度PSUに目を向ける

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264716/b054eb5f-b56f-2c51-9da7-0e2043578bd7.png)

図を見ると、JBF↑で$R_k$をアップサンプリングしたあと、更にJBFをかけて最終的な出力である$R_{k-1}$を生成しています。これを式に表すと以下のようになります。

```math
R_{k-1} = JBF(\hat{R}_{k-1} + L_{k-1}, \hat{R}_{k-1})
```

ラプラシアンピラミッドのエッジ画像を合成することで、構造がしっかり残った出力$R_{k-1}$が生成できるというわけですね。

# 実験結果
実験では多種多彩な画像に対して、Zhangらの手法を適用した結果が示されています。すべてを紹介するには量が多すぎなんで、一例を紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264716/be2237ee-832a-b61b-b47e-41998ae4d620.png)

図の一番左が入力画像、一番右がZhangらの手法での出力結果、それ以外は従来手法でのテクスチャフィルタリングの結果ですね。
同図を見ると、Zhangらの手法ではテクスチャを効果的に取り除き、かつ鮮明に画像の構造を維持できていることが確認できます。素晴らしい。

# まとめ
ガウシアンピラミッドを用いてテクスチャを除去。そしてJBFでアップサンプリング。
機械学習ベースの手法が大量に生み出されている昨今で、このように画像処理のみを用いて効果的な手法が生み出せるのは、いやはや芸術的な手腕だと言えるのではないのでしょうか。
観察に基づいてスマートな手法を編み出す手腕に憧れちゃいますね。

# 参考文献
- [Pyramid Texture Filtering. doi: 10.48550/arxiv.2305.06525. (2023).](https://arxiv.org/abs/2305.06525)
- Qiita.「[Image Pyramid(画像ピラミッド)と深層学習中の応用 #DeepLearning - Qiita](https://qiita.com/chiba1sonny/items/be5a6e1d1d539bf21a11)」, (2024-05-14 参照).
- Flickr.「[About Mighty Tieton | Flickr](https://www.flickr.com/people/mightytieton/)」, (2024-05-14 参照).
- [Johannes, Kopf., Michael, F., Cohen., Dani, Lischinski., Matthew, T., Uyttendaele. (2007). Joint bilateral upsampling.  26(3):96-. doi: 10.1145/1275808.1276497](https://dl.acm.org/doi/10.1145/1275808.1276497)
- Clarendon Fine Art.「 [Ed Chapman | Clarendon Fine Art](https://clarendonfineart.com/collections/ed-chapman)」, (2024-05-15 参照).
- Flickr.「 [Allison Blacker | Flickr](https://www.flickr.com/photos/milestogowithali/)」, (2024-05-15 参照).