FC2ブログ
2018/03/29

新たな画像拡大方式 DCCI

非常に高速で、人工知能ではないのに非常に図形認識に優れた
方向性キュービック畳み込み補間 Directional Cubic Convolution Interpolation
を試してみましょう。
これは2倍づつ拡大出来ます
ピクセル列の連続、エッジ方向を検出することで、縞模様だってお手の物です。
https://github.com/revent-studio/organa_hqx
このアメリカのウェブデザイナーのpython2実装がおすすめ
opencv2とnumpyも必要
ダウンロード、解凍してから、packages/にenum.pyを入れる必要がある。
https://github.com/OnoArnaldo/PythonEnum
こんなpythonスクリプトで簡単にやってみよう
dcci-2x.py
import cv2
import numpy as np
import packages.dcci as dcci
import img_resources as imr
import sys

N = 1

imgT = cv2.imread(sys.argv[1], cv2.IMREAD_COLOR)
img = dcci.Dcci(imgT,N)
cv2.imwrite(sys.argv[2],img)

$ python2 dcci-2x.py input.jpg output.png


なんと、森の中を走る電車のパンタグラフがちゃんとなめらかな、かつはっきりした線に見えるし、
N = 1 を増やして、N²のサイズに拡大しても、そうおかしくはならないです。わずかにぼやけているだけです。
DCCIのアルゴリズムはまだRGBカラーの統合が決まっていないのですが、 さすが ウェブデザイナーの実装はセンスが光りますね。
元の画像:© 2016 Jee & Rani Nature Photography. Creative Commons Attribution-ShareAlike 4.0 International License. Wikimedia Commons, the free media repository: https://commons.wikimedia.org/wiki/File:Orthetrum_luzonicum-Kadavoor-2016-09-08-001.jpg.
元の写真

2倍に拡大で品質を見比べよう

GIMP標準のlanzcos3
GIMPのlanzcos3で拡大

以前このブログでべた褒めしたAVIRで拡大
AVIRで拡大
なおいわゆるオープンソースではない。

リククーブログ開発(ライフハッカーのパクリ+自動化)のリフレックスリサイズで5倍のバイキュービックで縮小
reflex-resizeで拡大
ボケすぎている。遠目で見たらこんなモノ、そのぐらいの出来。

waifu2xで拡大
waifu2xで拡大

DCCIで拡大
DCCIで拡大

なんと!DCCIはトンボの羽の、あの繊細な細さを、JPEGノイズまでとって表現できている❢
waifu2xに一見匹敵する画質ですが、そうwaifu2xにやらせると全部二次元っぽく絵の具で塗ったみたいになるので、これはDCCIのほうが上手でしょう。
なお二次元画像の品質はDCCIはwaifu2xに負けました。人間が描いた二次元画像は、人間の作った人工知能で十分に学習できるのですが、
自然界の画像は学習しきれないので、従来の手続きプログラミングを進化させて表現するべきです。
数百年展示されるような本物の芸術の画像も人工知能は理解できているとは思えません。

なおAVIRは手に入る画像拡大方式としてコテコテにx86_64に最適化されているので、出力は結構速いです。

これからの4Kディスプレイであんな画像がより綺麗に見えるのだから Windows版の実装もだれかやるべきでしょう。
なお、アセンブラでDCCIを究極に最適化すると、720x512の画像が0.33秒で拡大できるといいます。
計算機アーキテクチャを考慮した高能率画像処理プログラミング Norishige Fukushima, Associate Professor - Nagoya Institute of Technology
DCCIは実はかなり高速だというわけです。
# 実はDCCIは中国の大学で中国人によって発明された。日本では4Kテレビに導入されそうだ。日本はこれから何で世界と勝負するべきか。技ですらない、心ではないのか。