漫画カメラの処理の流れ
それではCannyエッジ検出器の説明も終わったところで、漫画カメラのようなモノクロ漫画のような画像を画像編集で作成する際の処理手順を考えていきましょう。便宜上、このような処理を「漫画風画像生成処理」とこれ以降呼ぶことにします。
漫画風画像生成処理では、以下のような3つの操作を行い、それを合成して結果画像を作成します。
- エッジ検出処理による輪郭画像の取得(Cannyエッジ検出器など)
- しきい値処理により3値画像を取得し、中間の値(灰色)に割り当てた領域をスクリーントーン画像で差し替える
- 上記2つの操作で生成されて画像を合成して、最終的な結果画像とする
最初の「エッジ検出」処理については、代表的なものとしてCannyエッジ検出器の仕組みをすでに説明しました。というわけで、ここでは残る2番目の操作「3値値化処理」を説明します。
すでにCannyエッジ検出器でも登場した「しきい値」処理ですが、画像処理などの信号処理全般でこの処理が役に立つ場面は非常に多いです。今回のような漫画風画像生成処理の場合、筆者が黒のペンで描いた線や真っ黒に塗る黒髪などの領域以外の領域、すなわち『白と黒の中間の灰色くらいで色を塗りたい領域』をスクリーントーンで差し替えたいという動機または戦略が考えられます。ここでしきい値処理が威力を発揮します。
この時、元の入力画像を画素の値が、「(1)黒に近い」「(2)真ん中くらい」「(3)白に近い」という値の範囲に3分割してあげて、3つの値をそれぞれ黒、灰色、白という統一された画素値にしてあげると、上記の戦略どおり、黒っぽいところは黒(ペンで黒く塗りつぶした領域)、白っぽいところは白(原稿用紙のまま何も塗らない領域)、中間くらいの色合いは灰色(スクリーントーンを貼った場所)という画像を自動生成することができます。こうして3つの画素値だけをもつ3値化画像に、このあと灰色の画素だけをスクリーントーン画像のテンプレートで差し替えれば、うまく漫画原稿のような色領域の分割が可能になるわけです。
その他の発展的な応用「カラー画像での漫画風画像生成」と「動画での使用」
少し、発展的な内容なので詳細の説明は割愛しますが、この3値化処理のところで「Mean-Shift法」というクラスタリング手法を用いることも可能です。Mean-Shift法の場合は、各画素の3チャンネルの色の値を、処理を行うごとに例えば5つとか7つの色に自動分割してくれます。これにより、今回紹介した「輝度値の範囲を固定して3分割」という分け方ではなくて、カラー画像で自動的に適当な色ごとに分割し、それらの各領域を同じ色で塗ってくれるわけです。iTunes Storeなどのアプリストアで、「Cartoon」もしくは「Cartoonize」で検索するとこうした漫画風画像生成処理に関連するアプリが出てくると思います。また、今回は説明しませんが「鉛筆で描いたスケッチ画」の自動生成も似たような仕組みで行います。
また、漫画カメラは「カメラ」と言っているくらいで静止画1枚を処理していますが、動画を撮影して全体を漫画風に変える処理ももちろん可能です(その場合は白黒ではなくてカラーで行って「アニメ化」とするべきでしょうが)。
以下の動画は、カメラで撮影中の動画をリアルタイムに漫画風の映像に変換してくれるiPhoneのアプリ「ToonCamera」のデモ映像です。
ToonCamera: Live Cartoon and Art Effects |
この動画を見ると、漫画カメラとは違って、このToonCameraではカラー画像に対して漫画風画像化を行って、しかも動画で行われていることがよくわかると思います。このような動画での漫画風画像化を専門用語では「ビデオアブストラクション(Video Abstraction)」と呼んだりします。