小さい画像を引き伸ばすとぼやけます。AI による超解像度処理は何が違うのか、どこまでできて、何ができないのかを説明します。
小さい画像をそのまま拡大すると、輪郭がぼやけたり、階段状のギザギザが出たりします。 足りない画素を、近くの画素から平均して埋めているだけだからです。 元になかった細かさは、そこから生まれません。
AI による超解像度処理は、やり方が違います。 大量の画像で学習した仕組みが、「この模様のときは、拡大するとこうなるはずだ」を推し量って描き足します。 輪郭は輪郭として、模様は模様として引き伸ばされます。
手箱イメージは waifu2x(nunif)の学習済みデータを使っています。 アニメ絵の拡大で知られていますが、写真向けのデータも用意されています。 手箱では絵の種類として「写真」と「イラスト」を選べます。
倍率は 2倍・4倍のほか、仕上がりの大きさを直接指定することもできます (AI で2倍か4倍にしたあと、高品質な縮小で目標の大きさに合わせます)。 圧縮の跡が目立つ画像には、ノイズ除去を弱・中・強・最強から選べます。
画像は送信されません。 計算はお使いの端末の GPU で行います。 通信が起きるのは、初回に拡大用のデータ(約18MB)を取得するときだけです。 2回目以降は待ち時間がありません。
実測で、1000×1000 の画像を4倍(4000×4000)にするのに約4.5秒でした (GPU を積んだ一般的なパソコン)。 ブラウザの中で動いていますが、待たされる処理ではありません。
画像を細かいタイルに分けて順に処理し、境目が見えないように重ねて合わせています。 タイルの大きさは画像に合わせて選んでいます。
AI による超解像度処理には WebGPU に対応した環境が必要です。 Chrome または Edge の新しいバージョンでお使いください。 Linux や一部のスマートフォンでは使えないことがあります。
使えない環境では、その理由を表示したうえで通常の拡大に切り替えられます。 黙って別の方法に切り替えることはしません。 通常の拡大も Lanczos という高品質な方法で行っており、 ブラウザ標準の拡大より輪郭が鋭く出ます。
引き伸ばしたいわけではなく、画質だけを良くしたいこともあります。 手箱イメージでは、仕上がりに「大きさはそのまま(高画質化)」を選べます。 いったん AI に2倍で描かせてから元の大きさへ戻し、最後に細部を立てるという手順で、 画素数を変えずに輪郭と質感を締めます。
実測(写真3枚・原本との PSNR)では、少しぼけた写真で 32.9 → 36.3、 一度引き伸ばされた画像で 30.9 → 32.1 まで戻りました。 いっぽう圧縮の跡だけが目立つ画像では、細部を立てないほうがきれいです(34.4 → 30.6 と悪化)。 そのため強さは4段階から選べるようにしてあり、「しない」も残しています。