mieki256's diary



2022/07/22(金) [n年前の日記]

#1 [prog][cg_tools] ディザパターンに変換するプログラムを修正

以下のページで紹介されている、ディザパターンアルゴリズムのサンプルソースに、色々と手を加えて機能追加をしてみた。

_Arbitrary-palette positional dithering algorithm

変更点は以下。
コンパイルに使った環境は、Windows10 x64 21H2 + MSYS2 + MinGW64。g++ 12.1.0 + GNU Make 4.3。

png画像の読み込みや書き込みは stbライブラリの stb_image.h と stb_image_write.h を使わせてもらった。*.cpp と同じ場所に置いておけばコンパイルできるようになる。

_nothings/stb: stb single-file public domain libraries for C/C++

ソース。 :

ソースは以下。

_yodither1.cpp
_yodither3.cpp
_yodither4.cpp

Makefile は以下。

_Makefile

基本的には、以下でコンパイルできるはず。
g++ -O3 yodither1.cpp -fopenmp -o yodither1.exe -static -lstdc++ -lgcc -lwinpthread -lm

実行バイナリ。 :

一応、実行バイナリも含めた一式を .zip にして置いときます。各 .exe を別PC (Windows 10 x64機) にコピーしても動いたので、他のPC上でも動いてくれるのではないかと…。たぶん。

_yodither_20220722.zip

使用例は以下。--help をつければ使い方の簡単な説明が表示されるはずなので…。
yodither1.exe --help
yodither1.exe -i INPUT.png -o OUTPUT.png
yodither1.exe -i INPUT.png -o OUTPUT.png -d 4
yodither1.exe -i INPUT.png -o OUTPUT.png -d 4 -p db32.gpl
yodither1.exe -i INPUT.png -o OUTPUT.png -d 4 -p db32.png

yodither4.exe --help
yodither4.exe -i INPUT.png -o OUTPUT.png
yodither4.exe -i INPUT.png -o OUTPUT.png -d 8
yodither4.exe -i INPUT.png -o OUTPUT.png -d 8 -p db32.gpl
yodither4.exe -i INPUT.png -o OUTPUT.png -d 8 -p db32.png
> yodither1.exe --help
Usage:
  yodither1.exe -i IN.png -o OUT.png [-d N] [-p PALETTE] [-t] [-v] [-h]

  -i FILE, --input FILE    input png image file.
  -o FILE, --output FILE   output png image file.
  -d N, --dither N         dither map. N = 2/4/8(2x2,4x4,8x8) [default=8]
  -p FILE, --palette FILE  Set palette (.gpl or .png)
  -t, --trimode            Enable tri-mode.
  -v, --verbose            Print verbose
  -h, --help               print this message
> yodither4.exe --help
Usage:
  yodither4.exe -i IN.png -o OUT.png [-d N] [-p PALETTE] [-v] [-h]

  -i FILE, --input FILE    input png image file.
  -o FILE, --output FILE   output png image file.
  -d N, --dither N         dither map. N = 2/4/8 (2x2/4x4/8x8) [Default=4]
  -v, --verbose            Print verbose
  -h, --help               print this message

  • yodither1.exe : 処理時間が結構かかる。生成結果の品質はそこそこ良い。
  • yodither3.exe : パレットデータを変更すると妙な生成結果になりがち。あまり使えない感じがする。
  • yodither4.exe : 処理時間はそれほどかからない。品質は yodither1.exe よりちょっと落ちる。

16〜32色程度のパレットデータでしか動作確認してません。256色あたりを指定すると、とんでもなく処理時間がかかりそうなので、怖くて試してないです。

以上です。

過去ログ表示

Prev - 2022/07 - 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
31

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project