【シェル】waifu2xで劣化した写真や画像を高画質化【macOS】

【シェル】waifu2xで劣化した写真や画像を高画質化【macOS】

LinuxやmacOSなどのパソコンで使えるおもしろいコマンドを見つけたのでご紹介します。

劣化した写真画像を高画質化する「waifu2x」です。上の写真左は荒い画質でしたがwaifu2xでコンバートすることで、写真右のようにノイズが減りなめらかで自然な画像になりました。

この記事ではwaifu2x で劣化した写真や画像を高画質化する使い方をお伝えしていきます。

はじめに

ジェイムズ・ウェッブ宇宙望遠鏡がとらえた写真
ジェイムズ・ウェッブ宇宙望遠鏡がとらえた写真

Wikipedia より

昨日、NASAのジェームズ・ウェッブ宇宙望遠鏡のニュースが話題となりました。はるか遠方にある天体を、今までにない高精度な画像で捉えることができたのだとか。ウェッブ宇宙望遠鏡は赤外線で観測しているらしく、個人的には興味がわくところです。

さてそんな中、宇宙に関することをネットサーフィンしていて、JAXAの論文 「宇宙科学情報解析論文誌: 第9号」 にたどり着きました。論文の中では「あかり」という衛生で観測した解像度の低い画像を、高解像度に変換するアルゴリズムが紹介されていました(「あかり」もまた赤外線を使って観測するようです)。

宇宙科学情報解析論文誌: 第9号より
宇宙科学情報解析論文誌: 第9号より

論文の数式は正直さっぱりでしたが、この手のプログラムはすでにGitHubにありそうだと思い調べてみたところやはりありました。それが「waifu2x」です。

劣化した画像(右)、waifu2xで復元(左)
劣化した画像(右)、waifu2xで復元(左)

この写真のように劣化した画像(右)をwaifu2xで復元(左)してみました。いかがでしょうか?ざらつきがなくなり、くっきしりして見えますよね?すごいと思いませんか!?

画像編集ソフトによくある、アンチエイリアスやシャープネスといった処理とも違います。

「waifu2x」では機械学習を使っているようです。第3次AIブーム以降、機械学習を使ったアルゴリズムが流行っていますよね。クライアント側の負荷を無視すれば、将来の圧縮技術として使えるのでは!?なんて思ったりしますがどうなんでしょうか。

waifu2xとは

waifu2xは深層畳み込みニューラルネットワークを使って、アニメの画像や写真などに対して画像スケーリングやノイズリダクションを行うプログラムです。

(機械学習などのむつかしいことを知らなくても、プログラムはカンタンに使えますのでご安心ください。)

nagadomi/waifu2x
nagadomi/waifu2x

作者は nagadomi さんで、waifu2xの初版は2015年10月11日です。2018年で開発は止まっておりますが、MIT licenseでGitHubにてオープンソースで公開されています。

waifu2xの語源は、「Waifu」は理想的な女性キャラクターに対して用いられるアニメスラングで、「2x」は2倍を意味することからきています。

apt-get でインストールするのでUbuntuやラズパイなどDebian系Linuxで動かすことが前提のようです。ですがオープンソースで公開されているのでforkの数も多く、いろんな有志の方々によって iOSmacOSPython でも動くような改造版がリリースされています。さらに ウェブサービス版 も存在します。

本記事では、macOSのbrewでインストールできる waifu2x-mac を使ってみます。

waifu2xを使ってみよう!(macOS)

それではさっそく、macOSにwaifu2xをインストールしてみましょう。brewでカンタンにインストールできます。

$ brew install imxieyi/waifu2x/waifu2x

機械学習ライブラリのCore MLを使っていて、iOSでも動くバージョンもあります。

使い方

インストールできたら使い方を確認しましょう。

$ waifu2x -h
Usage: waifu2x [options]
  -t, --type:
      Image type - a for anime (default), p for photo
  -s, --scale:
      Scale factor (1 or 2)
  -n, --noise:
      Denoise level (0-4)
  -i, --input:
      Input image file (any format as long as NSImage loads)
  -o, --output:
      Output image file (png)
  -h, --help:
      Print usage

カンタンなので大丈夫ですね。こんな感じで入力画像 low.jpg を指定して実行します。

$ waifu2x -t p -s 2 -n 4 -i low.jpg -o 2x.png

使い方の注意点としましては、オプションは全部指定しなければなりません。また、出力画像はpng形式のみです。

▼ デジイチで撮ったコスモスの写真をわざと劣化させたあと、waifu2xで高画質化してみました。

先ほどのコマンドで実行した結果がこちらです。くっきりなめらかでキレイな写真へ元通りです!

waifu2xで高画質化
waifu2xで高画質化

▼ こちらはフィルムカメラで撮って現像した写真を、スキャナで取り込んだデータです。拡大するとわかりますが、フィルムカメラの独特なざらつき(左)がアナログな感じですよね。

waifu2xにかけると、ノイズが消えてデジタル写真ぽくなります(右)。当然、アナログ的なフィルムの味はなくなりますが、これはこれで用途によっては利用価値ありそうですね。

waifu2xで高画質化
waifu2xで高画質化

おわり

waifu2x、いかがだったでしょうか?みなさんもお手持ちの画像などでぜひ試してみてください。

フォトショなどの画像編集ソフトを使えばもっと高機能なことができそうですが、アプリを起動する手間がなくコマンドラインでサクッと変換できるのが「waifu2x」の良いところですね!

私の場合ですと、ブログなどで使う画像の元データを削除してしまい、低画質画像しか残ってない時があったりします。そんなときに、waifu2xで劣化した画像を高画質化して再利用できるなと思いました。

劣化した動画を高画質化!?なんてこともできるのではと思ったり。。実験したらブログでご紹介しますね!

今後も面白いツールを見つけましたら、ブログでご紹介したいと思います!

最後まで読んでいただきありがとうございました!

記事に関するご質問などがあれば、
Twitter または お問い合わせ までご連絡ください。
関連記事