2015/09/23

MSE・PSNRによる画像拡大アルゴリズム10種・ソフト8種、計14パターンの画質評価結果

3年前の記事の続編です。NeuronDoublerをv5.00へバージョンアップしたので、新規ソフト・アルゴリズムを加え、全14種での画質評価を行いました。


各種画像拡大アルゴリズムとソフトウェアの紹介

評価に使用した超解像・画像拡大アルゴリズムの紹介です。PhotoshopとCLIP STUDIO PAINT以外は無料で入手して使用できる物です。


人工知能超解像プログラム NeuronDoubler

当方の開発した超解像を行うフリーソフトウェアです。ニューラルネットワークを応用した独自アルゴリズム(連想記憶型人工知能による一種のデータベース型超解像)で動作します。
使用ソフト/設定:NeuronDoubler v5.00 / デフォルト設定


「waifu2x-caffe」

最近出てきた超解像ソフトのWindows版です。NeuronDoublerと同じくニューラルネットワークを利用した超解像を行います。イラスト向けと写真用のモードが切り替えられるので、両方試してみます。
使用ソフト/設定:waifu2x-caffe 1.0.6.1 / モード:拡大、拡大率:2.00、png出力、モデル:写真
使用ソフト/設定:waifu2x-caffe 1.0.6.1 / モード:拡大、拡大率:2.00、png出力、モデル:RGB


「100x100倍 超解像ソフト」

神戸大学の研究室?が公開している超解像ソフト。データベース型超解像と思われます。
使用ソフト/設定:100x100倍 超解像ソフト Windows用 Version 2012.06.04 / デフォルト設定


「Lanczos-3(ランチョス3)」

高品質で有名な画像の拡大/縮小アルゴリズムです。実装しているソフトウェアは少なめです。
使用ソフト/設定:藤 -Resizer- v2.63.0 / Lanczos-3


「Bicubic(バイキュービック)」

下記のバイリニアと合わせ、一般的に普及している拡大アルゴリズム。Photoshopではオプションが選択できるため、どのオプションを選ぶのが一番画質が良いのか検証してみます。
使用ソフト/設定:Photoshop CS5 / バイキュービック法 - 拡大に最適
使用ソフト/設定:Photoshop CS5 / バイキュービック法 - 縮小に最適
使用ソフト/設定:Photoshop CS5 / バイキュービック法 - 滑らかなグラデーションに最適


「Bilinear(バイリニア)」
単純な線形補間による拡大アルゴリズム。
使用ソフト/設定:Photoshop CS5 / バイリニア


「Nearest neighbor(ニアレストネイバー)」

最も単純な拡大アルゴリズム。整数倍の拡大では元画像がそのままタイル状に引き延ばされます。ドット絵をそのまま拡大したい場合などに適しています。
使用ソフト/設定:Photoshop CS5 / ニアレストネイバー


「SmillaEnlarger」

有名なオープンソースの画像拡大ソフト。アルゴリズムは独自のようです。
使用ソフト/設定:SmillaEnlarger version 0.9.0 / デフォルト設定



「CLIP STUDIO PAINT」

お絵かきソフトの新定番。通称クリペ/クリスタ。オプションが選べるので効果を検証します。
使用ソフト/設定:CLIP STUDIO PAINT EX Version 1.4.2 / 画像解像度を変更:滑らか
使用ソフト/設定:CLIP STUDIO PAINT EX Version 1.4.2 / 画像解像度を変更:ハードな輪郭


「MSペイント」

みんな一度は使ったことのあるWindows標準の画像編集ソフト。バカにされることも多いですが、管理者権限無い人には頼れる味方です…。
使用ソフト/設定:mspaint.exe (Windows 7付属版) / デフォルト設定 


評価方法

縮小した画像を超解像処理で引き延ばし、元の画像にどれだけ復元できるかをテストしました。

[使用した画像データ]
原画像:テストに使用する元の画像。写真とイラストの2種類。
縮小画像:原画像を平均画素法で縦横1/2に縮小した画像。
拡大画像:縮小画像を各種画像補間アルゴリズムで縦横2倍に拡大した画像。

原画像データはイラストと写真の2種類を用意しました。
イラスト:2DCGイラスト。1024x768の壁紙サイズのJPEGイメージをそのまま使用。
写真  :高品質なネコ科の動物の写真(4288x2848ピクセル)を平均画素法により1600x1064ピクセルに縮小した画像を使用。

[手順]
拡大画像が原画像と比較してどれだけの誤差を持っているかをMSE及びPSNRにより評価。
MSE及びPSNRの算出には「画素比較ソフト DIFFPix」を使用しました。

MSEについて(参考:Wikipedia)

オリジナル画像と劣化画像の間に定義される平均二乗誤差。値が小さいほど劣化が少なく高画質です。

PSNRについて(参考:Wikipedia)

オリジナル画像と劣化画像の間に定義されるピーク信号対雑音比。値が大きいほど劣化が少なく高画質です。MSEが分かれば計算して求めることが出来ます。


テスト結果
クリックで拡大します
クリックで拡大します
考察

今回試した14種の画像拡大方法のうち、NeuronDoublerが実写・イラストの両方で最も良好な結果を得る事が出来ました。

wiafu2x、100x100倍 超解像ソフトも他のアルゴリズムと比べ良好な結果で、学習経験・データベースに基づいた超解像の有用性を確認できました。
この分野はニューラルネットワークが得意とするところですが、更なる性能向上には意味論まで立ち入って知識情報を活用できないと頭打ちになりそうだと感じます。(知らないイラストだけど、か○ざきひろっぽい絵柄なので瞳はこんな描き方になっているはず…とか)

なお、SmillaEnlargerを除いて、イラスト・写真での順位の逆転は発生しませんでした。極端なケースを除けば、画像によって今回の結果が変動することは無いと思われます。


以下、NeuronDoubler以外の各ソフトの所感です。

「waifu2x」
実写用モデルはNeuronDoublerに次いで良好な結果ですが、イラスト用モデルを使用した場合の結果が良くありません。
線画を弄って人工的に綺麗に見せようとする傾向があります(Aviutl/Avisynthでいうとwarpsharpフィルタとかを強めにかけるようなイメージです)。
基本的に実写用モデルを選択するのが良さそうです。

「100x100倍 超解像ソフト」
ニューラルネットワーク系のソフトには若干劣りますが、Lanczos-3以上の高画質で、とにかく処理が高速です。

「Photoshop」
バイキュービックの「拡大に最適」が全然拡大に最適じゃない結果となりました。ベンチ結果を信じれば、拡大する際は「滑らかなグラデーションに最適」を選択するのが良さそうです。

「CLIP STUDIO PANIT」
拡大する分には「滑らか」も「ハードな輪郭」も同じ結果になります(縮小する場合は明らかに違う結果になります)。間違えたかと思って何度も試してしまいました。
漫画原稿も扱えるのでモアレや偽色を嫌ってなのか、レイヤーの重なりのズレを嫌ってなのか、ファイル全体の拡大処理には二アレストネイバーが使用されるようです。
2万以上するソフトなのでバイキュービックぐらい選択させて欲しいです。

「MSペイント」
思いの外良好な結果で、Photoshopと良い勝負になりました。素直なバイキュービックの実装になっていると思われます。

「SmillaEnlarger」
結果が悪かったですが、綺麗に見せる為のフィルタ処理(解像感を出したいのかノイズっぽくなる)による画作りの悪影響だと思われます。

「Lanczos-3」
通常の画像補間アルゴリズム(Lanczos-3,Bicubic,Bilinear,Nearest neighbor)の中ではLanczos-3が頭一つ抜きん出た結果になりました。


この先は君の目で確かめてくれ!!

以上長々と、科学的な評価基準として一般的なMSE・PSNRを使って各種画像拡大アルゴリズムの数値的評価を行いました。

ですが、失われた情報を推定・補間する拡大処理の後、最終的に人間が見る事になるので、画作りの要素が絡んできます。

実際に色々なソフトを試して好みの画作りを見つけて下さい。

ちなみにNeuronDoublerの画作りは、ノイズ除去→拡大→色調・シャープネス等調整の、拡大処理の工程のみを行うため、なるべく実直で味付けされていない出力が得られるように開発しています。


関連記事

人工知能超解像プログラム NeuronDoubler
PSNRによる画像拡大アルゴリズム7種の画質評価結果
NeuronDoubler v3.10の超解像サンプル画像とLanczos-3、Bicubic、100x100倍 超解像ソフトとの画質評価