画像鮮鋭化を「きれいになった」で終わらせないWebサイトを作りました
はじめに
画像鮮鋭化やAI超解像のデモを見ると、多くの場合は
入力画像 → AI補正 → 完成画像
という流れで、「見た目がきれいになったか」を確認して終わることが多いと思います。
ただ、画像処理を少し踏み込んで考えると、次のような疑問が出てきます。
- 本当に元画像の情報を復元しているのか
- それとも、AIがそれらしい情報を追加しているのか
- 古典的なシャープ化と物理モデル系の復元では何が違うのか
- 処理後の画像は、入力画像とどの程度整合しているのか
そこで、単なる画像鮮鋭化サイトではなく、複数手法を比較しながら画像復元を観察できるWebサイトを作りました。
作ったもの
こちらです。
名前としては Image Restoration Lab、日本語では「画像復元診断ラボ」という位置づけです。
画像をアップロードするか、用意してあるサンプル画像を選ぶと、ブラウザ上で画像診断と複数の復元・鮮鋭化処理を実行できます。
何ができるか
主な機能は次の通りです。
- 入力画像の基本診断
- FFTによる周波数解析
- 高周波残存率の推定
- ボケの目安表示
- JPEG劣化の目安表示
- 復元可能性スコアの表示
- 複数アルゴリズムの同時比較
- 処理時間の表示
- PSNR / SSIM / Laplacian Variance などの評価
- 入力画像と処理画像の局所拡大比較
- 自動コメントによる考察表示
「画像がきれいになったか」だけではなく、「どの手法が、どのような変化を加えたのか」を見えるようにすることを目的にしています。
実装している処理
現在は、主に次の手法を比較できます。
Unsharp Mask
古典的なシャープ化です。
処理が速く、輪郭を強調する効果があります。ただし、ノイズや偽輪郭も一緒に強調しやすいので、「復元」というよりは「見た目の強調」に近い処理です。
Wiener Filter
物理モデル寄りの復元処理です。
ぼけやノイズを仮定しながら、入力画像をなるべく説明できる画像を推定する方向の手法です。
Richardson-Lucy Deconvolution
今回の主役に近い手法です。
点拡がり関数、いわゆるPSFを仮定して、ぼけた画像から元画像を反復的に推定します。
RL Auto PSF
Richardson-Lucy法ではPSFの設定が重要なので、複数のPSF候補を試し、評価値が良いものを選ぶ簡易的な自動探索も入れています。
現時点では完全なBlind Deconvolutionではありませんが、
いくつかのPSF候補を試す
→ 再劣化誤差や周波数変化を見ながら良さそうな条件を選ぶ
という方向で、実験しやすくしています。
評価指標
結果一覧では、各手法に対して以下のような指標を表示しています。
Laplacian Variance
画像の輪郭や細部の強さを見るための指標です。
値が大きいほどシャープに見える傾向がありますが、ノイズが増えても値が上がるため、単独では判断しません。
高周波増加率
入力画像と比べて、処理後にどの程度高周波成分が増えたかを見ます。
増加が大きいほど細部が強く出ますが、極端に大きい場合は「復元」ではなく「生成・強調」に寄っている可能性もあります。
ノイズ増加率
処理によって、ざらつきや細かい不自然な変動がどの程度増えたかを見る指標です。
シャープ化では細部とノイズが同時に増えやすいので、重要な確認項目です。
SSIM
入力画像との構造的な類似度です。
1に近いほど、入力画像の構造を保っていると見なせます。
PSNR
入力画像との画素差をもとにした指標です。
値が高いほど入力画像からの変化が小さいことを示します。ただし、復元処理では入力画像から変化すること自体が目的でもあるため、これも単独では判断しません。
再劣化誤差
このサイトで特に見たい指標です。
考え方は次の通りです。
復元画像
↓
推定PSFで再び劣化
↓
入力画像と比較
もし復元画像が入力画像をよく説明できているなら、再劣化した画像は入力画像に近くなるはずです。
逆に、見た目はきれいでも、入力画像に存在しない情報を大きく足している場合は、再劣化しても入力画像と合いにくくなる可能性があります。
この考え方によって、
- 復元寄りの改善
- 生成・補完寄りの改善
を考える手がかりにしています。
局所比較ビュー
処理結果の画像をクリックすると、その場所を拡大して比較できます。
左に元画像、右に選択した手法の処理結果を表示します。
マウスホイールで拡大・縮小もできます。
画像全体では分かりにくい差でも、局所的に見ると
- 輪郭が自然に戻っている
- ノイズだけが増えている
- 格子状のアーティファクトが出ている
- 元画像にない模様が増えている
といった違いが見やすくなります。
なぜ作ったか
画像鮮鋭化やAI補完は、見た目のインパクトが強い一方で、
それは本当に復元なのか?
という問いが残ります。
特に、天文画像、顕微鏡画像、監視画像、古い写真などでは、「きれいに見える」だけではなく、「観測画像と整合しているか」が重要になります。
そこで、AI補完、物理復元、古典的シャープ化を同じ画面で比較できる実験場として作りました。
技術構成
現在のMVPでは、ブラウザ上で動く静的なWebアプリとして実装しています。
主に使っている処理は次のようなものです。
- Canvas API
- JavaScriptによる画像処理
- FFTベースの周波数解析
- Unsharp Mask
- Wiener Filter風の復元
- Richardson-Lucy Deconvolution
- PSF候補探索
- PSNR / SSIM / Laplacian Variance の計算
将来的には、Python / FastAPI / OpenCV / scikit-image / SciPy などを使ったバックエンド版にも発展させたいと考えています。
今後やりたいこと
今後は、さらに次の方向に進めたいです。
- Blind Deconvolutionの強化
- PSF推定の改善
- Real-ESRGANやSwinIRなどAI系との比較
- 再劣化誤差の評価精度向上
- ノイズモデルの導入
- 天文画像・顕微鏡画像向けのサンプル追加
- 処理結果のダウンロード
- 評価レポートの出力
最終的には、
観測画像
↓
劣化モデル推定
↓
元画像候補生成
↓
再劣化
↓
観測画像との一致度評価
という、逆問題ベースの画像推定に近づけていきたいです。
まとめ
画像鮮鋭化を、
きれいになりました
で終わらせず、
どの手法が、どの程度、入力画像と整合した改善をしているのか
を見られるWebサイトを作りました。
すぐ試せるので、興味があれば触ってみてください。
まだMVP段階ですが、画像復元・デコンボリューション・AI補完の違いを考える実験場として育てていく予定です。
