mieki256's diary



2015/11/10(火) [n年前の日記]

#1 [cg_tools] 拡大してから縮小することでスムージングをかけられるか実験

_GIMPのアンチエイリアスフィルタの説明ページ を眺めていたら、気になることが書いてあった。GIMP のアンチエイリアスフィルタは、Scale3xアルゴリズムで拡大して画素を作成して、その画素に対してサブサンプリングすることでアンチエイリアスをかけてる、らしい。

ということは、 _Scale3x ではなく、例えば _hq3x を使って拡大した画像を縮小することでもスムージングをかけられるのかな、と。試しに実験。

ちなみに、Scale3X とか hq3x てのは、ドット絵をそれらしく拡大することができるアルゴリズム。以下を見ればなんとなく分かるかも。

_ドットの粒々感を軽減するアルゴリズムを簡単に比較できる「Depixelizing Pixel Art」 - GIGAZINE
_Depixelizing Pixel Art - Google 検索

Windows上で動く hq2x、hq3x、hq4x のツールは、以下から入手できる模様。

_Downloads - hqx - hqx is a fast, high-quality magnification filter designed for pixel art. - Google Project Hosting
_Tamschi / hqxSharp / ダウンロード ・ Bitbucket

前者はコマンドラインツール。hqx.exe -s 3 INPUT.PNG OUTPUT.PNG で変換できる。後者はGUIの変換ツール。C#で実装されてる模様。

ちなみに、Scale2x や Scale3x をかけるツールは以下で入手できる。

_Download - Scale2x

解凍するとコマンドラインツールが入ってる。scalex.exe -k 3 INPUT.PNG OUTPUT.PNG で変換できる。

さておき。hq3x で拡大した画像をGIMPで縮小してみたり。アルゴリズムは線形を選択。

結果画像を眺めてみたけど、Jagi や OLM Smoother に比べるとギザギザ感が強い。それでも、元になった2値化画像と比べたら、そこそこジャギが少なくなった。GIMP のアンチエイリアスフィルタ = Scale3x のソレと、hq3x のソレを比較してみると、hq3x のほうがジャギが微妙に弱まった印象。

GIMPのアンチエイリアスフィルタで試行錯誤。 :

前述のとおり、GIMP にもアンチエイリアスフィルタがあるのだけど。RGBチャンネルは処理してくれるけど、アルファチャンネルは処理してくれないように見える。そこをどうにかできれば、と思ったわけで。

まず、2値化されてる元画像の、RGB=(255,255,255)を透明にする操作の流れについてメモ。
  1. RGB=(255,255,255) 部分を選択する。「色域を選択」ツールで、しきい値を0にして、該当領域をクリック。
  2. 選択範囲を反転。選択 → 選択範囲の反転。
  3. レイヤーマスクを追加して透明に。レイヤーウインドウの目的のレイヤー上で右クリックして「レイヤーマスクの追加」。レイヤーマスクの初期化方法は、「選択範囲」にチェックを入れる。これで、見た目では RGB=(255,255,255)の部分が透明になる。
  4. レイヤーマスクを適用。レイヤーウインドウの目的のレイヤー上で右クリックして「レイヤーマスクの適用」
これで、RGB=(255,255,255) の領域を透明にできる。ただ、この状態では、透明・不透明の境界部分はジャギだらけのまま。

レイヤーマスクを作成した際、レイヤーマスクをクリックしてアクティブにして、選択範囲解除もしくは全選択した状態でアンチエイリアスフィルタをかければ、透明部分というかアルファチャンネルにもアンチエイリアスがかかった状態にできる。試してみたところ、レイヤーマスク上でもアンチエイリアスフィルタをかけることができた。

後は、この一連の操作をスクリプトにすれば、複数の画像に対して一気に透明化&ジャギ消しすることも可能なはず。

まあ、Jagi を使わせてもらったほうが、早い上に綺麗なのですけど。どうしても GIMP だけでやりたいって時はどうにかできそうな予感がします、ってだけの話ですが。

ImageMagickで画像を縮小してみた。 :

hqx.exe や scalex.exe を使えば、コマンドラインで hq3x や Scale3x の拡大ができるわけだけど。更に、コマンドラインで画像の縮小もできれば、batファイル等を書いて一括処理ができるかもしれないなと。

で。ImageMagick の convert.exe を使えば画像の縮小ができるはず。試してみたり。

以下のような感じでbatファイルが書けるなと。
@set HQXCMD=C:\「hqx.exeの保存先ディレクトリ」\bin\hqx.exe
@set IMCMD=C:\「ImageMagickの保存先ディレクトリ」\convert.exe

%HQXCMD% -s 3 test.png test_hq3x.png
%IMCMD% -scale 480x270 test_hq3x.png png24:test_hq3x_resize.png
@set SCALEX=C:\「scalex.exeの保存先ディレクトリ」\bin\scale2x\scalex.exe
@set IMCMD=C:\「ImageMagickの保存先ディレクトリ」\convert.exe

%SCALEX% -k 3 test.png test_scale2x.png
%IMCMD% -scale 480x270 test_scale2x.png png24:test_scale2x_resize.png

ImageMagick の convert に渡すオプションについて補足。画像の縮小だかリサイズだかをするときは、えてして「-resize 幅x高さ」をつけるらしいのだけど。それよりは、「-scale 幅x高さ」をつけて縮小させたほうが、期待通りの縮小結果が得られた。実際には、「-scale」は「-resize 幅x高さ -filter box」を指定してるのと同じ、と、 _ImageMagick: Command-line Options には書いてあるようにも思えたけど英文なのでちょっと自信なし。

出力ファイル名の最初に「png24:」とつけてるのは、「png保存をする際に24bitで保存しなさい」という指定。何もつけないとインデックスカラーモードで保存されてしまう時がある。

結果は以下のような感じに。

test_hq3x_resize.png

test_scale2x_resize.png

testc_org.png

testc_hq3x_resize.png

testc_scale2x_resize.png


等倍表示では違いが分からないかも。画像編集ソフトで拡大しながら確認すると、「あー、微妙に違うね…」と分かるだろうけど、他のスムージング処理に比べたら、ギザギザ感が目立つというか、まだまだ結構ジャギだらけ。あくまで、簡易のジャギ消し・簡易アンチエイリアス処理と捉えたほうがヨサゲ。

以上、1 日分です。

過去ログ表示

Prev - 2015/11 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project