#daiizメモ

Scrapboxに夢中

『写真を点描画ふうに変換するツールをつくる』〜はじめに〜

こんばんはdaiizです、これは TeamJ Advent Calendar 2020 の22日目の記事です。 昨日はid:kanata_02による 写真で振り返る一年(後編) - かなたのめも でした。今年は写真が少ない、同感です。ベルギービールいいですね。

今日は技術書典10で販売する新刊の「はじめに」を書いていきます。アドベントカレンダーと執筆を同時にこなす必殺技です。


写真を味わいのあるモノクロ点描画に変換するプログラムができました*1。浜松旅行で良い景色を眺めたり、美味しい鰻を食べたりして感性と創作欲が刺激されたのかもしれません。技術書典との時期的な巡り合わせにも恵まれ、勢いで執筆を始めましたが、なんとか形になりほっとしています。

本書では、冒頭のツイートに載せた画像のような点描変換を実現するまでの考え方や製作過程をまとめました。前半部は、OpenCVを用いて画像処理を行う話がメインです。Colaboratory上で軽く実験を行って必要な設計を洗い出し、Python 3でコードを書いていきます。よく知られた画像処理手法を組み合わせて、良い雰囲気を醸し出す点描画を生成するCLIツールを作ります。後半では、筆者もこのたび初めて触ったGoogle Cloud Run環境でウェブアプリとして動かすところまで持っていきます。趣味開発記として気楽に読んでいただければ幸いです。

途中でSVGを用いてドット柄のパターン画像を作る工程があることからお気付きかもしれませんが、実は当初はベクタ形式で点描画を生成することを目論んでいまいした。今回はいくつか解決できない問題があり、ビットマップ形式での出力に方針転換しましたが、これが可能になると、拡大と縮小に強く、ドットに対するカラー着色も容易な点描画像を表現できるため、今後の課題として引き続き挑戦していきます。


アドベントカレンダーも終りが近づいてきました。僕の担当回はあと一回しかない。最後は何を書こうかな。明日は kanata くんが「今年の映画」について書いてくれます。そういえば今年は映画館では何も見ていないかも?