桜チャートで犬を描いてみた
本記事では、散布図や折れ線グラフを扱うツール「桜チャート」を使って、
犬の絵を座標だけで描いてみたチャレンジを紹介します。
前回は桜の花を数学的に作りましたが、今回はその応用として、
X・Y座標とLEVELを使って「犬」を表現できるかどうかを試してみました。
次は動物の絵を描いてみる
前回桜の絵を桜チャートを使って描いてみたという記事を書いたのですが、
今回は犬の絵を描いてみました。
ChatGPTに「座標で犬を描いて」と頼んだら普通の画像が出てきた
まずは、自分で座標を1点ずつ考えるのが大変そうだったので、 ChatGPT にこうお願いしてみました。
「X, Y, LEVEL の3列で、犬の絵になる座標データを作ってください」
すると返ってきたのは、きれいな犬のイラスト画像でした。
「いや、そうじゃない」
と心の中でつぶやきつつ、その画像をもとに座標を生成してもらおうと試行錯誤しました。
画像をもとに座標プロットさせたら、ひどい犬(?)になった
そこで、先ほど生成した犬の画像をもとにChat GPTにプロットさせたところ 以下のような画像になりました。
散布図でグラフをプロットして表示すると…
かろうじて輪郭が分かるような絵になってしまいました。
Pythonで輪郭を座標として抽出してみるも、こちらも一筋縄ではいかず
今度は Python(OpenCV)で犬の輪郭を自動抽出し、 その輪郭点を桜チャートに流し込む方法を試しました。
ざっくりとした流れは、次のようなイメージです。
- 犬の画像をグレースケールに変換する
- エッジ検出や2値化で輪郭部分を強調する
- 輪郭抽出で点列(X,Y)を取り出す
- 取り出した座標をCSVにして桜チャートに読み込む
しかし、実際にやってみると、
- 輪郭点が多すぎて、グラフとしては「ただの黒い塊」になりがち
- 点を間引くと今度は輪郭がガタガタになる
- LEVELで塗り分けようとしても、どこで区切るかの判断が難しい
といった問題にぶつかり、「きれいな犬の線画」にはなかなかたどり着けませんでした。
結局「犬の顔だけ」をグラフ化するようにお願いしたら
全身の犬を座標だけで表現するのは一旦あきらめて、 「顔だけ」に範囲を絞って、Chat GPTに座標を出してもらいました。
顔の輪郭、耳の先端、目・鼻・口の位置といった 「犬らしさ」に効くポイントだけを数十点ほどピックアップし、 それぞれに X・Y・LEVEL を振って桜チャートに読み込ませています。
こうして描画されたグラフを見てみると、 耳の形や目・鼻の位置関係から、 「少なくとも犬の顔には見える」レベルの絵になりました。
座標で犬を描いてみて分かったこと
今回のチャレンジを通して、次のようなことが分かりました。
- ChatGPT に「座標で犬を描いて」と頼んでも、まだ思った通りの座標は得られない
- Pythonで輪郭抽出をしても、そのままでは座標が多すぎてグラフとして扱いづらい
- 全身を一気に描こうとするより、「顔だけ」など範囲を絞った方が形にしやすい
- 最終的な仕上がりには、やはり人間の調整や取捨選択が欠かせない
桜の花びらのような、数式できれいに書ける図形に比べると、 犬のような自然物は 「どこをどのくらい簡略化するか」 の判断が重要だと感じました。
まとめ:桜チャートは「図形遊び」にも使える
桜チャートはもともと実験データや統計データの可視化を目的としたツールですが、 工夫次第で今回のように 座標ベースのお絵描き にも使うことができます。
- X・Y・LEVEL の3列があれば、犬のようなキャラクターも(工夫すれば)表現できる
- Pythonなど他ツールと組み合わせることで、画像→座標という発想も試せる
- 図形化の過程で、「何がその対象らしさを作っているのか」を考えるきっかけになる
座標で桜を描き、次に犬を描き、
そのうち他の動物やキャラクターにも挑戦してみたいと思っています。
興味があれば、桜の花バージョンの記事もあわせて読んでみてください。