So-net無料ブログ作成

ランダム ノイズによる自動生成アート画像。 [プログラミング]

コマンドライン インターフェイスの素晴らしき画像操作アプリケーション ソフトウェアである " ImageMagick " にてカラフルな模様自動生成致しました。
0000 カラフルな斑模様。 雲の様な斑模様と複雑な色の境界線が重なり合っている。
https://c1.staticflickr.com/5/4871/32378951038_c8d9c9bf70_o.png

0001 カラフルな斑模様。 雲の様な斑模様と複雑な色の境界線が重なり合っている。
https://c1.staticflickr.com/5/4861/45527344404_356946988f_o.png
パターンは上下左右が繋がっているので、タイル状に並べても継ぎ目が出来ません。 Perlin noise (パーリン ノイズ)的なパターンの応用です。

簡単に言うと、半径が2^0から2^7までのガウス暈しを適用したランダム ノイズの複数のレイヤーを合成して生成したものです。

何百枚でも連続自動生成出来ますが、1枚生成するのに多少の時間が掛かります。
ImageMagickの " -clone, +clone, -delete, +delete " などを使用して処理を効率化しています。

暈し半径を大きくすると、16bit/チャンネルの精度で処理していても、色の境界線が誤差により不自然にギザギザしてしまいますので、半径32画素以上の暈しは、半径32画素分のガウス暈しを複数回適用して処理しております。

今回生成した画像を数十枚 " SRGAN " という4倍超解像AIの人工ニューラル ネットワークに食べさせます。

" ImageMagick " の使用方法の解説ウェブサイトのURL:
http://www.imagemagick.org/Usage/

画像を生成する為のLinuxのコマンドを掲載致します。
ImageMagickはQ16 (内部16bit精度)ヴァージョンを事前にインストールして置いて下さい。
mkdirで作業ディレクトリーに " images " というフォルダーを作成し、そこへ生成画像を連番で保存するようになっております。
以下の全文をコピーして " 端末 " にペーストすると16枚の1024 x 1024画素の画像の生成を開始します。
mkdir -p ./{\
images,\
}
\
\
offset=0; \
counter=0; \
for i in `seq 1 16`; \
do \
\
convert \
\
\-size 1024x1024 xc: \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x16 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x8 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x4 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x2 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x1 -auto-level \) \
\
\( -clone 1,2 -compose softlight -composite \) \
\( -clone 1,9 -compose dissolve -define compose:args=50 -composite \) \
-delete 9 \
\
\( -clone 9,3 -compose softlight -composite \) \
\( -clone 9,10 -compose dissolve -define compose:args=25 -composite \) \
-delete 9,10 \
\
\( -clone 9,4 -compose softlight -composite \) \
\( -clone 9,10 -compose dissolve -define compose:args=12.5 -composite \) \
-delete 9,10 \
\
\( -clone 9,5 -compose softlight -composite \) \
\( -clone 9,10 -compose dissolve -define compose:args=6.25 -composite \) \
-delete 9,10 \
\
\( -clone 9,6 -compose softlight -composite \) \
\( -clone 9,10 -compose dissolve -define compose:args=3.125 -composite \) \
-delete 9,10 \
\
\( -clone 9,7 -compose softlight -composite \) \
\( -clone 9,10 -compose dissolve -define compose:args=1.5625 -composite \) \
-delete 9,10 \
\
\( -clone 9,8 -compose softlight -composite \) \
\( -clone 9,10 -compose dissolve -define compose:args=0.78125 -composite -equalize \) \
-delete 1-10 \
\
\
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x16 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x8 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x4 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x2 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x1 -auto-level \) \
\
\( -clone 2,3 -compose softlight -composite \) \
\( -clone 2,10 -compose dissolve -define compose:args=50 -composite \) \
-delete 10 \
\
\( -clone 10,4 -compose softlight -composite \) \
\( -clone 10,11 -compose dissolve -define compose:args=25 -composite \) \
-delete 10,11 \
\
\( -clone 10,5 -compose softlight -composite \) \
\( -clone 10,11 -compose dissolve -define compose:args=12.5 -composite \) \
-delete 10,11 \
\
\( -clone 10,6 -compose softlight -composite \) \
\( -clone 10,11 -compose dissolve -define compose:args=6.25 -composite \) \
-delete 10,11 \
\
\( -clone 10,7 -compose softlight -composite \) \
\( -clone 10,11 -compose dissolve -define compose:args=3.125 -composite \) \
-delete 10,11 \
\
\( -clone 10,8 -compose softlight -composite \) \
\( -clone 10,11 -compose dissolve -define compose:args=1.5625 -composite \) \
-delete 10,11 \
\
\( -clone 10,9 -compose softlight -composite \) \
\( -clone 10,11 -compose dissolve -define compose:args=0.78125 -composite -equalize \) \
-delete 2-11 \
\
\
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x16 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x8 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x4 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x2 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x1 -auto-level \) \
\
\( -clone 3,4 -compose softlight -composite \) \
\( -clone 3,11 -compose dissolve -define compose:args=50 -composite \) \
-delete 11 \
\
\( -clone 11,5 -compose softlight -composite \) \
\( -clone 11,12 -compose dissolve -define compose:args=25 -composite \) \
-delete 11,12 \
\
\( -clone 11,6 -compose softlight -composite \) \
\( -clone 11,12 -compose dissolve -define compose:args=12.5 -composite \) \
-delete 11,12 \
\
\( -clone 11,7 -compose softlight -composite \) \
\( -clone 11,12 -compose dissolve -define compose:args=6.25 -composite \) \
-delete 11,12 \
\
\( -clone 11,8 -compose softlight -composite \) \
\( -clone 11,12 -compose dissolve -define compose:args=3.125 -composite \) \
-delete 11,12 \
\
\( -clone 11,9 -compose softlight -composite \) \
\( -clone 11,12 -compose dissolve -define compose:args=1.5625 -composite \) \
-delete 11,12 \
\
\( -clone 11,10 -compose softlight -composite \) \
\( -clone 11,12 -compose dissolve -define compose:args=0.78125 -composite -equalize \) \
-delete 3-12 \
\
\
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x16 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x8 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x4 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x2 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x1 -auto-level \) \
\
\( -clone 4,5 -compose softlight -composite \) \
\( -clone 4,12 -compose dissolve -define compose:args=50 -composite \) \
-delete 12 \
\
\( -clone 12,6 -compose softlight -composite \) \
\( -clone 12,13 -compose dissolve -define compose:args=25 -composite \) \
-delete 12,13 \
\
\( -clone 12,7 -compose softlight -composite \) \
\( -clone 12,13 -compose dissolve -define compose:args=12.5 -composite \) \
-delete 12,13 \
\
\( -clone 12,8 -compose softlight -composite \) \
\( -clone 12,13 -compose dissolve -define compose:args=6.25 -composite \) \
-delete 12,13 \
\
\( -clone 12,9 -compose softlight -composite \) \
\( -clone 12,13 -compose dissolve -define compose:args=3.125 -composite \) \
-delete 12,13 \
\
\( -clone 12,10 -compose softlight -composite \) \
\( -clone 12,13 -compose dissolve -define compose:args=1.5625 -composite \) \
-delete 12,13 \
\
\( -clone 12,11 -compose softlight -composite \) \
\( -clone 12,13 -compose dissolve -define compose:args=0.78125 -composite -equalize \) \
-delete 4-13 \
\
\
\
\
\
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x16 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x8 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x4 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x2 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x1 -auto-level \) \
\
\( -clone 5,6 -compose softlight -composite \) \
\( -clone 5,13 -compose dissolve -define compose:args=50 -composite \) \
-delete 13 \
\
\( -clone 13,7 -compose softlight -composite \) \
\( -clone 13,14 -compose dissolve -define compose:args=25 -composite \) \
-delete 13,14 \
\
\( -clone 13,8 -compose softlight -composite \) \
\( -clone 13,14 -compose dissolve -define compose:args=12.5 -composite \) \
-delete 13,14 \
\
\( -clone 13,9 -compose softlight -composite \) \
\( -clone 13,14 -compose dissolve -define compose:args=6.25 -composite \) \
-delete 13,14 \
\
\( -clone 13,10 -compose softlight -composite \) \
\( -clone 13,14 -compose dissolve -define compose:args=3.125 -composite \) \
-delete 13,14 \
\
\( -clone 13,11 -compose softlight -composite \) \
\( -clone 13,14 -compose dissolve -define compose:args=1.5625 -composite \) \
-delete 13,14 \
\
\( -clone 13,12 -compose softlight -composite \) \
\( -clone 13,14 -compose dissolve -define compose:args=0.78125 -composite \) \
-delete 5-14 \
\
\( -clone 5 -level 50%,50% \) \
-delete 5 \
\
\
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x16 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x8 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x4 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x2 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x1 -auto-level \) \
\
\( -clone 6,7 -compose softlight -composite \) \
\( -clone 6,14 -compose dissolve -define compose:args=50 -composite \) \
-delete 14 \
\
\( -clone 14,8 -compose softlight -composite \) \
\( -clone 14,15 -compose dissolve -define compose:args=25 -composite \) \
-delete 14,15 \
\
\( -clone 14,9 -compose softlight -composite \) \
\( -clone 14,15 -compose dissolve -define compose:args=12.5 -composite \) \
-delete 14,15 \
\
\( -clone 14,10 -compose softlight -composite \) \
\( -clone 14,15 -compose dissolve -define compose:args=6.25 -composite \) \
-delete 14,15 \
\
\( -clone 14,11 -compose softlight -composite \) \
\( -clone 14,15 -compose dissolve -define compose:args=3.125 -composite \) \
-delete 14,15 \
\
\( -clone 14,12 -compose softlight -composite \) \
\( -clone 14,15 -compose dissolve -define compose:args=1.5625 -composite \) \
-delete 14,15 \
\
\( -clone 14,13 -compose softlight -composite \) \
\( -clone 14,15 -compose dissolve -define compose:args=0.78125 -composite \) \
-delete 6-15 \
\
\( -clone 6 -level 50%,50% \) \
-delete 6 \
\
\
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x16 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x8 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x4 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x2 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x1 -auto-level \) \
\
\( -clone 7,8 -compose softlight -composite \) \
\( -clone 7,15 -compose dissolve -define compose:args=50 -composite \) \
-delete 15 \
\
\( -clone 15,9 -compose softlight -composite \) \
\( -clone 15,16 -compose dissolve -define compose:args=25 -composite \) \
-delete 15,16 \
\
\( -clone 15,10 -compose softlight -composite \) \
\( -clone 15,16 -compose dissolve -define compose:args=12.5 -composite \) \
-delete 15,16 \
\
\( -clone 15,11 -compose softlight -composite \) \
\( -clone 15,16 -compose dissolve -define compose:args=6.25 -composite \) \
-delete 15,16 \
\
\( -clone 15,12 -compose softlight -composite \) \
\( -clone 15,16 -compose dissolve -define compose:args=3.125 -composite \) \
-delete 15,16 \
\
\( -clone 15,13 -compose softlight -composite \) \
\( -clone 15,16 -compose dissolve -define compose:args=1.5625 -composite \) \
-delete 15,16 \
\
\( -clone 15,14 -compose softlight -composite \) \
\( -clone 15,16 -compose dissolve -define compose:args=0.78125 -composite \) \
-delete 7-16 \
\
\( -clone 7 -level 50%,50% \) \
-delete 7 \
\
\
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\( +clone -channel G \
-virtual-pixel tile -blur 0x32 -auto-level \) \
+swap +delete \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x32 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x16 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x8 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x4 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x2 -auto-level \) \
\
\( -clone 0 -channel G +noise random \
-virtual-pixel tile -blur 0x1 -auto-level \) \
\
\( -clone 8,9 -compose softlight -composite \) \
\( -clone 8,16 -compose dissolve -define compose:args=50 -composite \) \
-delete 16 \
\
\( -clone 16,10 -compose softlight -composite \) \
\( -clone 16,17 -compose dissolve -define compose:args=25 -composite \) \
-delete 16,17 \
\
\( -clone 16,11 -compose softlight -composite \) \
\( -clone 16,17 -compose dissolve -define compose:args=12.5 -composite \) \
-delete 16,17 \
\
\( -clone 16,12 -compose softlight -composite \) \
\( -clone 16,17 -compose dissolve -define compose:args=6.25 -composite \) \
-delete 16,17 \
\
\( -clone 16,13 -compose softlight -composite \) \
\( -clone 16,17 -compose dissolve -define compose:args=3.125 -composite \) \
-delete 16,17 \
\
\( -clone 16,14 -compose softlight -composite \) \
\( -clone 16,17 -compose dissolve -define compose:args=1.5625 -composite \) \
-delete 16,17 \
\
\( -clone 16,15 -compose softlight -composite \) \
\( -clone 16,17 -compose dissolve -define compose:args=0.78125 -composite \) \
-delete 8-17 \
\
\( -clone 8 -level 50%,50% \) \
-delete 8 \
\
-delete 0 \
\
\
\
\
\
\
\( -clone 0,4 -compose softlight -composite -channel RGB -modulate 100,0 -auto-level \) \
\( -clone 1,5 -compose softlight -composite -channel RGB -modulate 100,0 -auto-level -channel red -negate \) \
\( -clone 2,6 -compose softlight -composite -channel RGB -modulate 100,0 -auto-level -channel green -negate \) \
\( -clone 3,7 -compose softlight -composite -channel RGB -modulate 100,0 -auto-level -channel blue -negate \) \
-delete 0-7 \
\
\( -clone 0,1 -compose dissolve -define compose:args=50 -composite -channel RGB \) \
\( -clone 2,3 -compose dissolve -define compose:args=50 -composite -channel RGB \) \
\( -clone 4,5 -compose dissolve -define compose:args=50 -composite -channel RGB -equalize \) \
-delete 0-5 \
\
./images/$( printf %04d $(( $counter + $offset )) ).png; \
\
counter=$(( $counter + 1 )); \
done
\


nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント