AIで画像から鉛筆画を描く

1.はじめに

 以前から画像を鉛筆画に変換する手法はありましたが、今回はその制作プロセスも含めて生成する手法をご紹介します。

*この論文は、2020.12に提出されました。

2.手法

 この手法の新しいところは、単に画像から鉛筆画を生成するだけでなく、その制作プロセスを生成できるところにあります。

 下記は全体のフレームワークです。入力 I が、3つのブランチ( ETF, Q, G )に入り、合成されて最終出力 R を得ます。

 1つ目のブランチは、ETF (Edge Tangent Flow)処理 によって画像の特徴抽出をしっかり行った後に、画面を並行な線が引ける領域に分割します。

 2つ目のブランチは、量子化(アナログをデジタル化)したQを求め、1つ目で分割した領域毎にピクセルの明度から線を引く幅を決定し、平行線を引いて行きます。

 線を引く順番は下記のスコアSが大きい順で、ここでGは明度、Tiは領域D内のピクセルの勾配です。これによって、画家がくっきりした輪郭を先に描くという動きを真似ることができます。

 3つ目のブランチは、並行線だけでは境界部分がボケてしまうため、勾配マップGからエッジを抽出して最後に乗算する処理を行っています。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンクをクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。

 まず、セットアップを行います。

 下記のコードで、inputフォルダーにある画像から選んで、スケッチプロセスを静止画に変換します。7行目で画像の指定、8・9行目はパラメータ指定です。

 生成した静止画は、output/kasumi/process に保存されますので、これらを ffmpegmp4動画に変換します。

 ffmpegの仕様のため、お手数ですが、必要に応じて output/***/process/%04d.jpg と output/***/out.mp4 の***部分を修正してから、コードを実行して下さい。

 生成したmp4動画は、output/kasumi/out.mp4 に保存されます。それでは、下記のコードで、インラインで再生してみましょう。

 下記のコードを実行して、変換前後の画像を比較してみましょう。

 file_name = ‘satomi2.png’ に変更して順次コードを実行すると、

 file_name = ‘erika.png’ に変更して順次コードを実行すると、

 けっこう良い感じに仕上がります。

 では、また。

(オリジナルgithub)https://github.com/TZYSJTU/Sketch-Generation-with-Drawing-Process-Guided-by-Vector-Flow-and-Grayscale

(Twitterへの投稿)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

アバター

ディープラーニング・エンジニアを趣味でやってます。E資格ホルダー。 好きなものは、膨大な凡ショットから生まれる奇跡の1枚、右肩上がりのワクワク感、暑い国の新たな価値観、何もしない南の島、コード通りに動くチップ、完璧なハーモニー、仲間とのバンド演奏、数えきれない流れ星。