拡大表示のトリック

 では、システムの説明に入ります。まず、以下のシステム構成図をご覧ください。最初に、カメラから撮影している画像を受け取ります。次に画像から肌色の領域のみを抽出します。この肌色領域の状態から、拡大する/しないの判断をしたり、拡大する場合に拡大表示する位置を決定したりします。その情報を基に、画面上に表示する画像を生成し、表示します。以上の処理を繰り返します。

システム構成図
[画像のクリックで拡大表示]

 構成図にある「キャプチャー回路」「描画回路」「表示回路」は、本連載で以前に説明したものをベースに、拡大処理を行うための機能を追加しました。ここからは、拡大表示するための手法について説明します。

 拡大処理と聞いて、画像処理に詳しい方であれば、ニアレストネイバー法やバイリニア法などのアルゴリズムを思い浮かべるかもしれません。本システムではそのような手法を用いていません。それどころか、拡大処理すら行っていません。しかし、拡大表示を実現しています。ここに本システムのトリックがあります。

 本システムの拡大表示は、実は画像をトリミングしているだけです。表示回路やキャプチャー回路の記事でも書かれていますが、ディスプレーとカメラではそれぞれ解像度を設定できます。ディスプレーはVGA(640×480)、XGA(1024×768)、SXGA(1280×1024)の3種類から、カメラはVGA、SXGAの2種類から選択できます。ここで、ディスプレーをVGAに、カメラをSXGAに設定すると、キャプチャー画像の方が表示領域よりも大きいので、表示する位置さえ決めればその部分を拡大したかのように見せることができます。

 「なぜ素直に拡大処理をしなかったのか」という疑問を持った方がいらっしゃるかもしれません。その理由は、拡大処理を用いて隙間のピクセルを補完するとどうしても画像が劣化してしまうのに対し、トリミングであれば比較的鮮明に表示できることです。トリミング処理はキャプチャー回路制作時に実装したことがあったため、こちらの方が素早く作れたというのもあります。

拡大表示の仕組み
[画像のクリックで拡大表示]