LoginSignup
64
22

More than 1 year has passed since last update.

イラストの線画部分を抽出して虹色に光らせるという社会的に有意義なプログラム

Last updated at Posted at 2022-12-06

あなたがご覧になっているのはクソアプリ Advent Calendar 2022 カレンダー1 の7日目の記事です。

はじめに

現状(As-Is) あるべき姿(To-Be) 問題 解決策
線画が虹色に光らない 線画が虹色に光る 線画が虹色に光ってない 線画を虹色に光らせる

それでは、やっていきましょう。

やっていった結果

元の絵(自分で描いたもの)

localstingray.jpg

変換後の絵

localstingray.jpg.gif

最高ですね。

どのように解決したか

以下、Python 3.9を使っています。

1. イラストから線画部分を抽出するために Anime2Sketchを使用する

Anime2Sketchはアニメイラストの線画部分を抽出する技術。 -> Anime2Sketch

この段階で出力されるのはこんな感じのもの。

middle.jpg

2. 抽出した線画の色を変更して、線画部分以外は透過する

これが光る部分の元になります。

この段階で出力されるのはこんな感じのもの。

test2.png

3. 色を変えた線画部分を元のイラストに合成する

線画以外を透過した画像を元画像の上に被せると線画の部分だけ光ってる感じになります。
test3.png

4. 色を変えながら2, 3を繰り返す

最後にピカピカ光ることを意識しながらCyan -> Magenta -> Yellow -> Cyanを行き来する感じに
色を被せた画像を作っていきます。

ソースコード上ではベタッとこんな感じに書いてます。

color_styles = [
    (255,0,255, 255), # magenta
    (255,25,225, 255 ),
    (255,50,200, 255 ),
    (255,75,175, 255 ),
    (255,100,150, 255 ),
    (255,125,125, 255 ),
    (255,150,100, 255 ),
    (255,175,75, 255 ),
    (255,200,50, 255 ),
    (255,225,25, 255 ),
    (255,255,0, 255 ), # yellow
    (225,255,25, 255 ),
    (200,255,50, 255 ),
    (175,255,75, 255 ),
    (150,255,100, 255 ),
    (125,255,125, 255 ),
    (100,255,150, 255 ),
    (75,255,175, 255 ),
    (50,255,200, 255 ),
    (25,255,225, 255 ),
    (0,255,255, 255 ), # cyan
    (25,225,255, 255 ),
    (50,200,255, 255 ),
    (75,175,255, 255 ),
    (100,150,255, 255 ),
    (125,125,255, 255 ),
    (150,100,255, 255 ),
    (175,75,255, 255 ),
    (200,50,255, 255 ),
    (225,25,255, 255 ),
]

5. 十分な枚数が用意できたら、アニメーションgifに変換する

特別なことをしなくても、Pillowで普通にアニメgifにできるのでさくっと作ります。

gif_sources[0].save(f"{dest_dir_path}/{file_name}.gif",
           save_all=True, append_images=gif_sources[1:], optimize=False, duration=40, loop=0)

結果(再掲)

localstingray.jpg.gif

ソースコード

まとめ

線画が虹色に光るプログラムを開発したことにより、これまでユーザーが無意識下に抱えていた「線画が虹色に光らなくてつらい」というペインを解決することができました。

なぜ作者が線画を虹色に光らせたいと思ったのか、クラスの皆さんで考えてみましょう。

終わりに

今年はAIによるイラスト生成が大きな話題になり、激しい議論が行われた年でもありました。
来年はよりよい形で技術とクリエイティブが付き合っていけるような、良い年になるといいなと思います。

明日以降も引き続きクソアプリ Advent Calendar 2022をお楽しみください!

64
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
22