2025-12-03

数字で絵を描いてる

自分AIイラストを描くようになったのは、一昨年くらいからだ。

Stable Diffusionを使って、LoRAを追加して、ControlNetも入れて、MidjourneyやNovelAIも試した。

出力されるイラストを見る都度アートだと思っていたし、創造だと信じていた。

でもある日、ふと気づいた。

これ、突き詰めたら全部データじゃね?

じゃあ数字で絵って描けるんじゃね?

思ったら試したくなるタイプなんだ。

まずPNG画像バイナリエディタで開いた。

使ったのは HxD。

Windowsで動く、定番のアレ。

画像を開くと――

そこに出てくるのは、色でも形でも影でもなく、

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D


とか、

49 44 41 54 78 9C EC DD 07


とかの、数字アルファベットの羅列。

最初意味がわからない。

でも調べると全部意味がある。

89 50 4E 47 → PNGのヘッダ

IHDR → イメージ属性

IDAT → ピクセルデータ

IEND → 終端

一個ずつ追っていくと、

全部、0と1の変換でしかない。

そこで、自分で書き換えてみた。

実験

目の色を変えてみたい

まず元画像の中で瞳のRGB値の近いものを探す。

Pythonで以下のスクリプトを書いた。

from PIL import Image
import numpy as np
:img = Image.open("mina.png")
:arr = np.array(img)
arr[(arr[:,:,0]<80) & (arr[:,:,1]<80) & (arr[:,:,2]>120)] = [200, 50, 50]
Image.fromarray(arr).save("mina_edit.png")


すると、青い目がボルドーっぽい赤に変わった。

実験

線画を太らせたい

GIMPでもPhotoshopでもなく、

コードだけでいく。

import cv2
img = cv2.imread("mina.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 80, 150)
dilated = cv2.dilate(edges, None, iterations=2)


線が、太った。

ここで不思議感覚が生まれた。

ペンを使って描いたわけじゃない。

ブラシで塗ったわけでもない。

数字で絵を動かしてる感覚

実験

影を深くする

shadow = arr.copy()
shadow[:,:,0] = shadow[:,:,0] * 0.7
shadow[:,:,1] = shadow[:,:,1] * 0.7
shadow[:,:,2] = shadow[:,:,2] * 0.7


これだけで影が落ちる。

この作業を続けて気づいたこと。

ブラシやペンで絵を描くのは、画家としての思考

レイヤーフィルタで絵を描くのは、デザイナーとしての思考

コードで絵を描くのは、エンジニアとしての思考なんだ。

同じ絵でも思考フレーム全然違う。

そして、さらに深い気づき

画像って「絵」じゃない。

絵に見える何かであって、本質配列

[[34, 55, 88], [36, 60, 90], [40, 75, 120], …]


RGB値の行列

それに

・ガンマ補正をかける

・ローパスフィルタをかける

シャープネスをかける

ベクトル変換をする。

その操作は全部、数字を変換してるだけ。

“色を塗っている”んじゃない。

数字操作している”。

そう気づいた瞬間から、絵を描くのが楽しくなった。

だってペンを握ってるんじゃなくて数学を握ってる感覚なんだ。

最近好きな音楽FFT解析して、その周波数スペクトル画素に変換して、色を割り当てて絵を生成することもある。

まりから絵を描くことも可能になった。

最後

自分は、数字世界を描く人間だ。

から今日も、ディスプレイの前でコードを走らせながら微笑んでる。

絵は美しい。

そしてそれよりも、数字は美しい。

  • 昔プログラム勉強サイトみたいなところで、プログラム版ピクロスパズルみたいなのあって面白った記憶 ファミコンのキャラが8×8でまんまドットの集合だったり、音もMIDIでデータと...

  • 機械で人間性を犯しているつもりで悦に浸りながらシコってるやつはキモいな。技術どうこうという話ではなく

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん