以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
以下の説明では、ユーザを写真撮影し、撮影した画像に基づいて写真シールを出力する画像出力装置に、本発明に係る画像処理装置を適用した例を挙げて説明する。つまり以下に示す実施の形態において、本発明に係る画像処理装置は画像出力装置に含まれ、写真シールを出力するために撮影された画像に対し補正を行なう。
(実施の形態1)
図1及び図2は、本実施の形態における画像出力装置の外観を示す斜視図である。画像出力装置は全体として略直方体形状のボックス型の装置であり、鉛直方向に略半分に分けるように仕切りが設けられている。画像出力装置は、この仕切りによって撮影空間R1及び編集空間R2に分けられている。図1は主に画像出力装置の撮影空間R1側から観た外観斜視図を示しており、図2は主に編集空間R2側から観た画像出力装置の外観斜視図を示している。
図1の斜視図に示すように、撮影空間R1は略直方体をなすフレームに囲まれた空間である。撮影空間R1は、ユーザからの料金の投入を受け付け、ユーザの写真撮影を実行するための空間である。撮影空間R1には、所定料金を受け付ける受付部1が外側に設けられており、また、編集空間R2との仕切りに相当する内部壁面にはユーザを撮影するためのカメラ21、ディスプレイ22等の機器を含む撮影部2が設けられている。
受付部1には、硬貨の投入を受け付けるコイン投入口10と、コイン投入口10から投入される硬貨の真偽を判定するコインセレクタ11と、投入された硬貨の総額又は投入残額等の各種情報を表示するための表示パネル12とが含まれる。コインセレクタ11は、コイン投入口10から投入される硬貨の真偽を判定して判定信号を送出する。コインセレクタ11は、硬貨が偽と判定された場合、又は硬貨を受け付けないように設定されている間、図示しないコイン返却口へ硬貨を吐き出す。表示パネル12は、液晶パネル、セグメントLED等からなり、制御信号を受け付けてコインの投入を促す案内、投入すべき料金、投入総額、残額、又は他のユーザが撮影中でありコインの投入を受け付けていない旨の案内等を表示する。
受付部1に含まれている表示パネル12及びコインセレクタ11は、後述する第1筐体の内部に収納された制御機構に接続されており、制御機構との間で判定信号、制御信号等を送受信する。
ユーザは、受付部1のコイン投入口10から所定料金に相当する硬貨を投入することにより、画像出力装置によるサービスを受けることができる。
撮影空間R1の内部、即ち撮影ブース内部には、撮影部2を構成する各機器が設置されている。撮影ブース内部の編集空間R2との空間を仕切る壁面の下部には、各機器を制御する制御機構を収納した第1筐体20が設置されている。第1筐体20の上方であって、立った状態のユーザの略目線の高さの位置にカメラ21が設置されている。カメラ21の下方には、カメラ21から出力される映像信号に基づきプレビュー画面を表示し、且つユーザの操作を受け付けるタッチパネル式のディスプレイ22が設定されている。また、カメラ21及びディスプレイ22を囲むように被写体に光を照射するストロボ・ランプ23が設置されている。また、第1筐体20上部には音楽、案内音声を出力するスピーカ24,24が設置されている。
撮影部2を構成するカメラ21、ディスプレイ22、ストロボ・ランプ23及びスピーカ24,24は夫々、第1筐体20の内部に設置されている制御機構に夫々接続されている。
カメラ21は、ユーザを被写体として撮影するため、内部にレンズ群、絞り、シャッター、CCD(Charge Coupled Device)等の撮像素子を含むデジタルカメラである。カメラ21は、タイマー機能によりシャッターが動作して撮像素子から静止画像を取得し記憶することにより写真撮影を実行する。また、カメラ21は起動している間、撮像素子から出力されるデジタル化された映像信号を制御機構へ出力している。制御機構からは、この映像信号に基づくプレビュー画面の表示用の撮影画像が出力される。
ディスプレイ22は撮影中の操作を案内する操作画面とプレビュー画面とを表示するための液晶パネルを有し、カメラ21からリアルタイムに出力される映像信号に基づいて制御機構から出力されている画像を受け付けて表示する。また、ディスプレイ22はタッチパネル式であり、ユーザによってタッチされた箇所の画面上の位置の情報を含む信号が制御機構へ出力される。
ストロボ・ランプ23は、撮影ブース内の照明機器であると共に、写真撮影時にはフラッシュとして機能する。なお、本実施の形態ではストロボ・ランプ23は図に示すように7つに分けられており、制御機構に含まれる制御基盤を介して夫々の発光のタイミングがカメラ21による写真撮影(シャッターの動作)に同期して制御される。
撮影ブースの外周は遮光性を有するシート材(図示せず)によって覆われている。このシート材によって外部からの光が遮断され、且つ外部からの覗き見を防止することができ、さらにユーザが撮影ブース内で自由にポーズをとることができるプライベート空間が実現される。
また、撮影ブース内側から見たシート材は均等な色調及び明度となるようにしてある。カメラ21から観た場合にユーザの後方がシート材の均等な色調及び明度となるので、後述にて説明するようにユーザが写っている領域以外を透明化するクロマキー処理が可能になる。
ユーザは撮影ブース内に入り、ディスプレイ22に表示される案内及びスピーカ24,24から出力される案内音声に従い操作画面を操作し、ストロボ・ランプ23からの照明を受けてポーズを決め、カメラ21による写真撮影を実行することができる。まず、ユーザはタッチパネル式のディスプレイ22に表示される操作画面から、ユーザが写る写真を装飾する前景画像及び/又は背景画像を選択することができる。ユーザが前景画像及び/又は背景画像を選択した場合、ディスプレイ22には、カメラ21から制御機構を介してリアルタイムに出力されている画像、即ちカメラ21から出力されている撮影画像、選択された前景画像及び/又は背景画像に基づく印刷結果のプレビュー画面が表示される。ユーザはプレビュー画面を確認しながらポーズを決め、写真撮影を実行することができる。
写真撮影が実行された場合、制御機構はカメラ21で記憶された静止画像を取得し、後にユーザによる編集操作を受け付けるための画像、及び、後に印刷出力するための画像として夫々複製する。
次に図2の斜視図に示す編集空間R2に設置されている各構成部について説明する。編集空間R2は、上述の撮影空間R1の内部のカメラ21、ディスプレイ22、ストロボ・ランプ23、スピーカ24,24及び第1筐体20が設置されていた壁面の裏側の空間であり、ユーザが写真撮影を実行した後に画像の編集をすることができる空間である。図2に示す編集空間R2は撮影空間R1の上面から延設されているバーに取り付けられたカーテン状のシート材(図示せず)によって他の空間から仕切られる。そして編集空間R2には、以下に示す各構成部を内外に備える略直方体の第2筐体30が設置されている。
第2筐体30の一方の側面は撮影空間R1との仕切りである壁面に接しており、他の三側面の内の対向する面には夫々、写真撮影された画像及びその他の画像を編集するためのインタフェースを備える第1編集部4a及び第2編集部4bが設けられている。他方の側面には編集された画像を所定の写真シール用紙に印刷出力する印刷部5が設けられている。また、第2筐体30の内部には、第1編集部4a、第2編集部4b及び印刷部5の各構成部を制御する制御機構が設置されている。
なお、第1筐体20及び第2筐体30の相互に接している面は夫々が有する開口部(図示せず)を介して内部が連通しており、第1筐体20の内部に設置されている撮影部2の制御機構と、第2筐体30の内部に設置されている第1編集部4a、第2編集部4b及び印刷部5の制御機構とは、複数のケーブル類によって接続されている。
第1編集部4aには夫々、写真撮影された画像及び他の画像を編集するための操作画面を表示するタブレットディスプレイ40aと、2つのタッチペン41a,42aと、スピーカ43aとが含まれる。なお後述の第2編集部4bにもタブレットディスプレイ40bと、2つのタッチペン41b,42bと、スピーカ43bとが含まれている。第1編集部4a及び第2編集部4b夫々のタブレットディスプレイ40a,40b、2つのタッチペン41a,42a,41b,42b、及びスピーカ43a,43bは夫々、第2筐体30の対向する面に向かい合うように設置されている。また、タブレットディスプレイ40a,40b、タッチペン41a,42a,41b,42b及びスピーカ43a,43bは第2筐体30の内部の制御機構に接続されている。
印刷部5には、第2筐体30の内部に設置されており画像を所定の用紙に印刷するプリンタ50と、印刷された用紙がプリンタから吐き出されるシール吐出口51と、各種情報を表示する表示パネル52とが含まれる。表示パネル52は第2筐体30の内部に設置された制御機構に接続されており、プリンタ50も第2筐体30の内部で制御機構に接続されている。
ユーザは、撮影ブース内で撮影部2により撮影を完了した後、第1編集部4a又は第2編集部4bにより印刷する画像の選択、選択した画像に対する落書き等の作業が可能である。第1編集部4a又は第2編集部4b夫々のタブレットディスプレイ40a,40bには、写真撮影が実行されたことによって取得された画像と、選択された前景画像及び/又は背景画像とが共に表示される。タブレットディスプレイ40a,40bは、共に設置されているタッチペン41a,42a,41b,42bによる操作を受け付けるようにしてあり、ユーザはタッチペン41a,42a,41b,42bにより印刷する画像の選択及び選択した画像への文字、スタンプ状の絵柄の挿入などの操作が可能である。
制御機構により、写真撮影された画像に対し、後述する画像処理装置による補正処理が行なわれる。そして、ユーザによる編集が完了した場合、補正処理後の印刷出力用の画像に、選択された前景画像及び/又は背景画像、更に編集結果に基づく文字、絵柄等などが合成される。合成された後の画像が第2筐体30内部に設置されているプリンタ50によって所定の用紙に印刷される。印刷された所定の用紙は写真シールとしてシール吐出口51に吐き出される。ユーザは、シール吐出口51から完成した写真シールを取得することができ、これにより写真シールの撮影提供サービスが実現する。
図3及び図4は、本実施の形態に係る画像出力装置の構成を模式的に示すブロック図である。図3は、主に以下に説明する制御部6、画像処理部7、電源部8、通信部9及び受付部1の構成を示し、図4は、撮影部2、第1編集部4a、第2編集部4b及び印刷部5の構成を示している。図3及び図4に示すように画像出力装置は、各構成部を制御する制御部6と、撮影された画像を補正する画像処理部7と、AC電源から電力を供給する電源部8と、インターネット等の外部ネットワークNへ通信が可能な通信部9と、上述のコイン投入口10、コインセレクタ11及び表示パネル12を含む受付部1と、カメラ21、ディスプレイ22、ストロボ・ランプ23及びスピーカ24,24を含む撮影部2と、タブレットディスプレイ40a、2つのタッチペン41a,42a及びスピーカ43aを含む第1編集部4aと、タブレットディスプレイ40b、2つのタッチペン41b,42b及びスピーカ43bを含む第2編集部4bと、プリンタ50、シール吐出口51及び表示パネル52を含む印刷部5と、各部を接続するバス100とにより構成される。なお、制御部6、画像処理部7、電源部8、通信部9及びバス100が、第1筐体20及び第2筐体30の内部に設置された制御機構に対応する。
受付部1、撮影部2、第1編集部4a、第2編集部4b及び印刷部5を夫々構成する各ハードウェアは、上述のように、画像出力装置のユーザによる操作が可能なように撮影空間R1、編集空間R2に設置されており、第1筐体20及び第2筐体30内部に設置されている制御機構内のバス100に接続されている。これに対し制御部6、画像処理部7、電源部8及び通信部9は第1筐体20及び第2筐体30の内部に設置されている制御機構内に含まれており、制御機構内に配されたバス100に接続されている。
制御機構は、第1筐体20及び第2筐体30の内部に設置された複数のパーソナルコンピュータ(以下、PC:Personal Computerという。)と、上述の受付部1、撮影部2、第1編集部4a、第2編集部4b及び印刷部5を構成する各ハードウェアをPCから制御するための制御基盤とを含んで構成される。なお、複数のPCは夫々、その制御対象によって機能が分割される。例えば、撮影空間R1の受付部1を制御するPCと、撮影部2を制御するPCと、第1編集部4a及び第2編集部4bを制御するPCと、撮影された画像に画像処理を施し印刷部5にて出力するPCと、夫々機能が分割されて動作するように構成される。本実施の形態では、画像処理について主に説明するため仮想的に、受付部1、撮影部2、第1編集部4a及び第2編集部4bを制御する第1PCと、画像処理を行ない印刷部5にて出力する第2PCとの動作によって各構成部が制御されるとして以下に説明する。
制御部6には第1PCに備えられた、各構成部のハードウェアを制御するCPU60と、CPU60の動作により発生する情報を一時的に記憶するDRAM(Dynamic Random Access Memory)等のメモリ61と、各種データを記憶するHDD(Hard Disk Drive)62と、撮影部2のカメラ21から出力された映像信号から静止画像を撮影画像としてキャプチャし、クロマキー処理を実行するためのキャプチャ・クロマキーボード63とが含まれる。
CPU60は、HDD62に記憶されている後述の制御プログラム6Pを読み出して実行することにより、受付部1のコインセレクタ11からの判定信号を受け付け、受け付けた判定信号に応じて表示パネル12へ制御信号を送出し、所定料金の受け付けを実現する。またCPU60は、制御プログラム6Pを読み出して実行することにより、撮影部2のカメラ21による撮影と、ストロボ・ランプ23との動作を同期させる制御を行ない、カメラ21によって写真撮影されて記憶された印刷出力用の画像を取得する処理、更に、カメラ21から出力される映像信号を、キャプチャ・クロマキーボード63を介してプレビュー画面、編集画面用の撮影画像として取得する処理、ディスプレイ22に表示する処理、第1編集部4a及び第2編集部4bによる編集を受け付ける処理等の各種処理を実行する。
HDD62には、CPU60が各構成部のハードウェアを制御するための制御プログラム6Pが記憶されている。CPU60がHDD62から制御プログラム6Pをメモリ61に読み出して実行することにより、各ハードウェアの制御及び種々のソフトウェア機能が実現される。
また、HDD62には、制御プログラム6Pの他に、写真撮影された印刷出力用の画像と合成するための前景/背景画像、撮影部2のディスプレイ22に撮影画像と共に表示するための前景/背景画像が記憶されている。HDD62には更に、撮影部2のディスプレイ22に表示される操作画面に用いられる各画像、第1及び第2編集部4a,4bのタブレットディスプレイ40a,40bに表示される編集画面に用いられる画像、テキストファイル、スピーカ24,24,43a,43bに出力する案内音声などの音声データ等のデータが記憶されている。また、HDD62には、ユーザが写真撮影を実行したことでCPU60によりカメラ21から取得された印刷出力用の画像、前景画像及び/又は背景画像と合成処理が実行されることで得られる合成画像及び編集処理によって得られる編集画像が記憶される。
キャプチャ・クロマキーボード63は、受け付けた映像信号から例えば毎秒30枚の静止画像を取得して出力するキャプチャ機能と、キャプチャされた各静止画像から所定の色調及び明度の画素を認識し、一定の範囲内で同一の色調及び明度の画素に対してα値(透明度)を設定することにより透明化し出力するクロマキー機能とを有するハードウェアである。キャプチャ・クロマキーボード63は、カメラ21から出力される映像信号を受け付けるように接続されている。また、キャプチャ及びクロマキー処理された後の静止画像は、キャプチャ・クロマキーボード63に内蔵される図示しないメモリに書き込まれる。CPU60は当該メモリから静止画像をプレビュー用の撮影画像として読み出し、クロマキー処理を行なわせ、ディスプレイ22のプレビュー画面に表示する処理を実行する。
また、キャプチャ・クロマキーボード63は、ドライバソフトにより毎秒取得する静止画像の枚数、及び透明化する所定の色調及び明度、例えばRGB値の設定が可能である。CPU60は、カメラ21によって撮影される画像の内のユーザの後方に位置するシート材が写っている領域の色調及び明度を透明化するように指示する。これにより、CPU60は、キャプチャ・クロマキーボード63にて、クロマキー処理された人物のみの人物画像を得ることができ、前景画像及び/又は背景画像と重ねてプレビュー画面を表示させることができる。
画像処理部7には第2PCに備えられた、各構成部のハードウェアを制御するCPU70と、CPU70の動作により発生する情報を一時的に記憶するDRAM等のメモリ71と、各種データを記憶するHDD72と、画像及び描画命令を受け付けて描画処理を行なうグラフィックボード73とが含まれる。画像処理部7は単独で、対象となる画像に対して後述する加工処理を行なう画像処理装置として動作することが可能である。
CPU70は、HDD72に記憶されている後述の画像処理プログラム7Pを読み出して実行することにより、制御部6の制御に基づく写真撮影によってカメラ21にて撮影された画像を加工する画像処理を実現する。詳細には、制御部6の制御により、ユーザが写真撮影を実行してカメラ21にて写真撮影された画像が画像処理部7へ受け渡される。そしてCPU70は、制御部6から写真撮影された画像を取得してメモリ71に書き込み、画像処理を実行することによって、画像中のユーザの顔を小顔にするなどの見栄えを良くする加工を行なう。画像処理の詳細については、後述にて説明する。
HDD72には、CPU70が、取得した画像に対する加工などの画像処理を行なうための画像処理プログラム7Pが記憶されている。画像処理プログラム7Pは、図示しないCD−ROM、DVD等の記録媒体に記録された画像処理プログラムをHDD72に複製したものでもよいし、通信部9を介して取得したものでもよい。
グラフィックボード73は、受け付けた画像及び描画命令に基づき、図示しない内蔵メモリに画像を描画するハードウェアである。CPU70は、自身が制御部6から取得してメモリ71に一時的に記憶した画像に対する画像処理を、グラフィックボード73を用いて行なう。具体的には、CPU70は画像と、画像処理に伴なう描画命令とをグラフィックボード73に与えて描画処理を行なわせ、描画処理によって得られた画像をメモリ71に取得する。
電源部8は、第1PC及び第2PCのみならず各構成部へのAC電源からの電力の供給を実現する。画像出力装置には、電源を投入する電源スイッチ(図示せず)が設けられており、電源部8に接続されている。電源部8は電源スイッチのオン/オフを検知し、画像出力装置の稼動/動作を切り替える。なお、電源部8はUPS(Uninterruptible Power Supply:無停電電源装置)ユニット80を含んで構成される。UPSユニット80により、AC電源からの電力が突然遮断された場合でも、各構成部へのダメージを減らすことができる。電源スイッチがオフに切り替えられた場合、UPSユニット80は停電信号をCPU60へ出力し、CPU60は停電信号を検知したときの所定の終了処理を行ない画像出力装置全体の電源をオフにする。
通信部9は、PHSユニット90により構成され、制御部6(CPU60)に内部バス100を介して接続されている。PHSユニット90は、インターネット等の外部ネットワークNに接続してデータの送受信を実現する。CPU60は、通信部9のPHSユニット90を介して外部ネットワークN上の他の装置と通信してデータの送受信が可能である。本実施の形態における画像出力装置では、CPU90はユーザの名前、メールアドレス等の識別情報又は送信先のURLと共に、撮影して編集した後の画像を外部ネットワークNに接続している他のサーバ装置へ送信する機能を有している。この機能により、ユーザがサーバ装置から自身が撮影して編集した画像を携帯電話機又は自宅のPCにより閲覧することができるサービス、及び携帯電話機又はPCへダウンロードすることができるサービスが実現可能である。
このように構成される画像出力装置で、ユーザが写真プリントの提供サービスを受ける場合に、CPU60の処理に基づき画像出力装置にて実行される全体的処理について説明する。図5は、実施の形態1におけるCPU60が写真撮影、編集、印刷を実行する処理手順を示すフローチャートである。
CPU60は、コイン投入口10から所定料金を満たす硬貨が投入されたか否かを判断する(ステップS1)。CPU60は、所定料金を満たす硬貨が投入されていないと判断した場合(S1:NO)、処理をステップS1へ戻して所定料金を満たす硬貨が投入されたと判断するまで待機する。なお、この間CPU60は、表示パネル12に投入済みの硬貨の総額を表示させるように制御信号を表示パネル12へ出力する。
CPU60は、ステップS1において所定料金を満たす硬貨が投入されたと判断した場合(S1:YES)、表示パネル12に案内情報の画面を表示し、更に撮影部2のディスプレイ22に操作画面を表示させ、更にスピーカから案内音声を出力し(ステップS2)、ユーザに撮影ブース内に入り、撮影を実行するように促す。これにより、写真プリントサービスの提供が開始される。
CPU60は、ユーザがディスプレイ22における操作画面などを操作することにより、合成させる前景画像及び/又は背景画像が選択され、更に、撮影が実行され、完了したか否かを判断する(ステップS3)。具体的には、前景画像及び/又は背景画像が選択されると、シャッターを動作させるためのカウントが開始され、ディスプレイ22にプレビュー画面が表示される。そして、カウントアップされたとCPU60が判断してシャッターを動作させ写真撮影が実行される。ユーザがプレビュー画面を見て撮影された画像で決定する旨のボタン等を操作するか、例えば6回などの所定回数の写真撮影が終了するかにより撮影が完了する。CPU60は、撮影が完了していないと判断した場合(S3:NO)、処理をステップS3へ戻して、撮影が完了するまで待機する。
CPU60は、撮影が完了したと判断した場合(S3:YES)、シャッターを動作させて写真撮影された画像をカメラ21から取得し、選択された前景画像及び/又は背景画像と関連付けてメモリ61に保存する(ステップS4)。そしてCPU60は、ディスプレイ22に案内情報の画面を表示させ、第1編集部4a又は第2編集部4bのタブレットディスプレイ40a,40bに操作画面を表示させ、スピーカ24,24によって案内音声を出力し(ステップS5)、ユーザに編集空間R2へ移動し、編集操作を行なうように促す。
次にCPU60は、メモリ61に保存した写真撮影された画像を画像処理部7へ受け渡して、画像処理を実行させる(ステップS6)。そしてCPU60は、タブレットディスプレイ40a,40bの操作画面にて編集を受け付ける(ステップS7)。このとき、操作画面に表示されるユーザを撮影した画像は、画像処理後の画像であってもよい。この場合、CPU60は画像処理後の小顔にする加工が行なわれた撮影画像をキャプチャ・クロマキーボード63にてクロマキー処理して人物のみの画像を作成し、操作画面に前景画像及び/又は背景画像と重ねて表示させる。
CPU60は、編集完了を指示する操作がされたことにより編集が完了し、且つ画像処理部7による画像処理が完了したか否かを判断する(ステップS8)。CPU60は、編集又は画像処理部7による画像処理のいずれかが未完了であると判断した場合(S8:NO)、処理をステップS8に戻して両者が完了するまで待機する。
CPU60は、編集及び画像処理のいずれもが完了したと判断した場合(S8:YES)、画像処理部7による画像処理によって加工が完了した加工画像と、編集結果の文字又は画像などの情報と、選択されて関連付けてメモリ61に保存されている背景画像及び/又は前景画像とに対し合成処理を実行して合成画像を生成する(ステップS9)。CPU60は、生成された合成画像を操作画面に表示すると共に、印刷部5のプリンタ50へ出力して印刷出力を指示する(ステップS10)。このときCPU60は、操作画面にて印刷レイアウトの選択、印刷指示を受け付けてもよい。
CPU60は、印刷が完了したか否かを判断し(ステップS11)、印刷が完了していないと判断した場合(S11:NO)、処理をステップS11へ戻して印刷が完了したと判断するまで待機する。CPU60は、プリンタ50における印刷が完了したと判断した場合(S11:YES)、印刷が完了した旨を示す案内表示を印刷部5の表示パネル52、第1編集部4a又は第2編集部4bのタブレットディスプレイ40a,40bに表示し、スピーカ43a,43bから案内音声を出力し(ステップS12)、処理を終了する。
このとき、印刷された写真シールがシール吐出口51に排出されているので、ユーザは自身が撮影された写真シールを取得することができる。このように、写真プリントサービスの提供が実現される。
次に、図5に示したフローチャートの内のステップS6における画像処理実行の指示に基づき、画像処理部7にて実行される画像処理について詳細を説明する。なお、カメラ21から取得されて制御部6から受け渡される画像は、複数の画素の輝度値、色差値からなるデジタル画像データである。
図6は、実施の形態1における画像処理部7のCPU70により実行される画像処理手順の全体の一例を示すフローチャートである。以下に示す処理は、CPU70がHDD72から画像処理プログラム7Pを読み出して実行することにより実現される。
CPU70は、制御部6から受け渡される写真撮影された画像を取得し(ステップS101)、取得した画像から人物の顔を検出し(ステップS102)、検出した顔における各器官が写る領域を特定する(ステップS103)。更にCPU70は、検出した人物の顔の輪郭を抽出する(ステップS104)。
ステップS102からステップS104までの顔検出、各器官領域の特定、及び輪郭抽出の処理は、肌色検出、テンプレートマッチングなどの種々の既存技術を利用して行なわれる。ステップS102の顔検出処理によってCPU70は具体的に、画像中の顔が写っている領域(顔領域)の画像内における座標情報を得る。顔領域は具体的には、眉及び口の領域の外接矩形などである。顔領域は楕円形等でもよい。このとき、顔の傾きも検出され、画像に写る人物の顔が傾いている場合には、顔検出により得られる顔領域の横軸方向及び縦軸方向は、画像の水平方向及び垂直方向に対して傾いている。またこのとき、検出された顔の数が得られ、後の処理で用いるとしてもよい。また、ステップS103の各器官が写る領域の特定処理では、各器官、例えば目、鼻又は口の輪郭がテンプレートマッチングにより特定され、各器官の輪郭上の数点の座標情報、又は各器官を覆う楕円形状の画像内における座標情報が得られる。ステップS104における顔の輪郭抽出処理でも、肌色検出などにより顔の輪郭が抽出され、抽出された顔の輪郭上の数点の画像内における座標情報が得られる。
次にCPU70は、ステップS102からステップS104までの処理によって得られる顔の輪郭、各器官領域に関する座標情報を解析する処理を行なう(ステップS105)。解析処理の詳細は後述にて説明するが、ここでは、CPU70は検出された顔を補正するための各種情報の特定、及び加工作業領域の設定を行なう。
CPU70は、ステップS102における顔検出処理の結果に基づき、取得した画像から複数の顔が検出されたか否かを判断する(ステップS106)。CPU70は、取得した画像から顔は複数検出されていないと判断した場合(S106:NO)、処理を後述のステップS108に進める。
CPU70は、取得した画像から複数の顔が検出されたと判断した場合(S106:YES)、各顔の輪郭夫々に対し、他の輪郭が重複するか否かを判断し、重複する輪郭に対応する顔を加工対象から除外する処理を行なう(ステップS107)。ステップS107の重複輪郭除外処理の詳細についても後述にて説明する。
次にCPU70は、検出された顔を小顔になるよう加工する小顔処理を行なう準備のため、ステップS105の解析処理にて設定された作業領域内にグリッドを作成する(ステップS108)。グリッドの作成において例えばCPU70は、作業領域を縦横夫々50などの所定数で分割する。このとき、メッシュ分割してもよいし、顔の黄金比に応じた分割を行なってもよい。
そしてCPU70は小顔処理を実行する(ステップS109)。小顔処理の詳細については後述にて説明する。
CPU70は、ステップS109にて小顔処理を実行した結果得られる画像を用い、加工画像作成処理を実行し(ステップS110)、後のCPU60による合成画像生成処理に用いることができる画像を生成し、画像処理部7における画像処理を終了する。なお、ステップS110における加工画像作成処理についても詳細を後述にて説明する。
なお、ステップS102からステップS104までの処理の順序は図6のフローチャートに示す処理手順には限らず、前後してもよい。また、ステップS106における顔の数が複数であるか否かの判断処理は必須ではない。したがって、顔の数が複数であるか否かに関わらず、ステップS107の処理へ進めてよい。ステップS107における処理では、抽出された顔領域を一つずつ選択して処理を行なうようにしてあり、顔の数が複数であるか単数であるかによらずに処理が行なわれる。
図7は、実施の形態1における画像処理部7のCPU70により実行される解析処理の一例を示すフローチャートである。図7のフローチャートに示す処理手順は、図6のフローチャートに示したステップS105の処理手順の詳細である。
CPU70は、顔検出により得られた顔領域から一の顔領域を選択し(ステップS51)、選択した顔領域内で特定されている目、鼻又は口の領域の位置に基づき、顔中心を特定する(ステップS52)。ステップS52における顔中心の特定処理としてCPU70は、ステップS103にて特定された鼻の領域の中心位置を顔中心と特定してもよいし、ステップS103にて特定された両目の領域の中心位置と、鼻の領域の中心位置とを結ぶ三角形の重心を顔中心と特定してもよい。本実施の形態における画像処理部7による処理では、顔検出により得られる顔領域である矩形の中心を顔中心とするのでなく、目、鼻又は口の位置から顔中心を特定する。本実施の形態のような写真プリントサービスの提供を受けるユーザは、顔をカメラ21に向けずに、斜めに向けてポーズをとるなどの状況が考えられ、顔領域の中心が必ずしも顔中心と一致するとは限らないからである。
CPU70は、顔の輪郭を基に、輪郭を外側に拡大させた処理輪郭線を、加工処理の境界線とするために顔領域に設定する(ステップS53)。具体的にCPU70は、ステップS52にて特定された顔中心を中心に、ステップS104にて抽出された顔の輪郭を拡大する。即ち、CPU70は、顔中心から顔の輪郭上の各点までの距離に、所定の拡大係数を乗じ、拡大係数を乗じて得られる距離にある点を結ぶ線を処理輪郭線として設定する。
次にCPU70は、顔検出により得られた顔領域の横軸方向及び縦軸方向、即ち顔の横方向及び縦方向に平行であって、顔の中央線即ち鼻又は口の中心を通る線へ向かう処理ベクトルを特定する(ステップS54)。ステップS54にて特定される処理ベクトルは、後述の小顔処理において画像を収縮する方向及び大きさを示すベクトルとして利用される。ここで、顔の横方向と縦方向との夫々について処理ベクトルを特定することにより、顔の横方向及び縦方向夫々に対し、別個の比率で後述の小顔処理を行なうことが可能となる。
CPU70は、画像を収縮させる比率である処理係数を決定する(ステップS55)。後述の小顔処理にて、ステップS54で特定された横方向及び縦方向の処理ベクトルに沿って画像を収縮させるところ、処理係数とは、この際の画像の収縮率(小顔率)に対し、顔の大きさに応じて変化を加えるためのものである。具体的にCPU70は、検出された顔の幅、即ち処理輪郭線の外接矩形の幅に基づき、処理係数を決定する。処理係数は顔領域の大きさ、即ち画像に占める比率に応じて変化するように予め設定されており、顔領域の大きさが比較的大きい場合、即ち手前に顔が写る場合と、顔領域の大きさが比較的小さい場合即ち奥に顔が写る場合とでは、顔の大きさが比較的大きい場合に収縮の比率が大きくなるようにしてある。これにより、奥に写る人物の顔は小さいにも拘らず更に無用に小さく加工されるなどの事態を防止する。
CPU70は、ステップS53にて拡大した処理輪郭線を含む所定範囲を作業領域として設定する(ステップS56)。ここでは、処理輪郭線の外接矩形(画像の垂直方向及び水平方向を、縦方向及び横方向とする)を所定の倍率で拡大したものを作業領域として設定する。作業領域を設定して、後述する小顔処理の対象領域を限定することにより、処理の高速化を図ることができる。
CPU70は、顔検出により得られた顔領域全てについて処理を行なったか否かを判断し(ステップS57)、顔領域全てについて処理を行っていないと判断した場合(S57:NO)、処理をステップS51へ戻す。CPU70は、検出された顔全てについて処理を行なったと判断した場合(S57:YES)、解析処理を終了し、図6のフローチャートにおけるステップS106へ処理を戻す。
図8は、実施の形態1における画像処理部7のCPU70により実行される重複輪郭除外処理の一例を示すフローチャートである。図8のフローチャートに示す処理手順は、図6のフローチャートに示したステップS107の処理手順の詳細である。
CPU70は、顔検出により得られた顔領域から一の顔領域を選択し(ステップS71)、選択した顔領域に設定されている処理輪郭線を取得する(ステップS72)。CPU70は、取得した処理輪郭線が他の顔領域に対応付けられている処理輪郭線と交差するか否かを判断する(ステップS73)。ステップS73における判断処理は、処理輪郭線同士が交差するか否かのみならず、処理輪郭線間の距離が所定値以下であるか否かを判断してもよい。また、検出された顔の数が単数である場合は他の顔領域が存在しないので、CPU70は、ステップS73の判断処理にて他の処理輪郭線と交差しないと判断する。
CPU70は、取得した処理輪郭線が他の処理輪郭線と交差しないと判断した場合(S73:NO)、顔検出により得られた顔領域全てについて処理を行なったか否かを判断する(ステップS74)。
CPU70は、取得した処理輪郭線が他の処理輪郭線と交差すると判断した場合(S73:YES)、取得した処理輪郭線が設定されている顔領域を後述の小顔処理、即ち加工処理の対象から除外し(ステップS75)、処理をステップS74へ進める。なお、CPU70は具体的に、各顔領域に加工処理の対象外であるか否かを示すフラグ(デフォルトではオフ)を対応付けておき、ステップS75では、当該フラグをオンにする。CPU70は、後述する小顔処理において当該フラグがオンである顔領域に対しては処理を行なわない。
そしてCPU70は、ステップS74にて顔領域全てについて処理を行っていないと判断した場合(S74:NO)、処理をステップS71へ戻し、顔領域全てについて処理を行なったと判断した場合(S74:YES)、解析処理を終了し、図6のフローチャートにおけるステップS108へ処理を戻す。
図8のフローチャートに示した処理手順により、複数のユーザがカメラ21に向けて前後になって写る場合などに顔が重なっているとき、又は顔を寄せて写る場合など顔が近接しているときに、顔領域に無用に加工を行なうことによって輪郭にて歪が生じる事態が防止される。
図9は、実施の形態1における画像処理部7のCPU70により実行される小顔処理の一例を示すフローチャートである。図9のフローチャートに示す処理手順は、図6のフローチャートに示したステップS109の処理手順の詳細である。ここで、以下に示す処理が行なわれるに際し、検出された顔の顔領域には作業領域が設定されており、更に作業領域内にグリッドが作成されている。
CPU70は、顔検出により得られた顔領域から一の顔領域を選択し(ステップS91)、選択した顔領域に設定されている作業領域に対し、後述の処理(S96、S97)を行なわないためのマスクを作成する(ステップS92)。具体的にはCPU70は、設定されている作業領域内であって、処理輪郭線の外側、目の領域、及び、両目の中央を結ぶ直線よりも上側の領域をマスキング対象領域(マスク)とする。そしてマスク内の画素に対するマスク値を「0」とし、それ以外の作業領域内の画素に対するマスク値を「1」とする。次にCPU70は、ステップS92で作成したマスクにおいて、処理輪郭線の内側との境界をぼかす処理を行なう(ステップS93)。ぼかし処理を行なうことにより、マスク値が「1」である領域と、「0」である領域との境界がぼやけ、後述の処理(S96、S97)の結果が、自然な画像となる。
CPU70は、全顔領域についてステップS92及びS93のマスクの処理を行なったか否かを判断し(ステップS94)、全顔領域について処理を行なっていないと判断した場合(S94:NO)、処理をステップS91へ戻す。CPU70は、全顔領域について処理を行なったと判断した場合(S94:YES)、次のステップへ処理を進める。
CPU70は、再度顔検出により得られた顔領域から一の顔領域を選択し(ステップS95)、選択した顔領域に対応する顔への小顔率を設定する(ステップS96)。小顔率とは顔を小さくする効果の強さを示し、具体的には作業領域内の画像の収縮率である。小顔率には、0.9,0.8等任意の値を設定可能である。またこのとき、小顔率は顔の横方向と縦方向とで夫々異なる値を設定することが可能なように、横方向の小顔率と縦方向の小顔率とが設定される。
CPU70は、ステップS96で設定された小顔率で、マスクが掛けられた作業領域内の各画素をグリッド毎に、顔中心へ向けて移動させ(ステップS97)、小顔処理を実現する。なお、グリッドを移動させる描画は、CPU70が描画命令を与えることによりグラフィックボード73を用いて行なう。グリッド毎の移動量は、顔中心からの距離に応じて異なる。詳細には、各グリッド内の画素を、以下に示す式(1)で求められる移動量に基づいて顔中心へ向かって移動させる。
横方向移動量=顔中心からの距離×横方向の小顔率×マスク値
縦方向移動量=顔中心からの距離×縦方向の小顔率×マスク値
…(1)
式(1)に示すように、マスク値に「0」が設定されたグリッドの画素は移動されない。また、ステップS93におけるぼかし処理により、作業領域内のマスクとの境界付近のグリッドの移動量が境界に近いほど小さくなるように調整され、マスクとの境界では移動量はゼロである。これにより、マスキングされた領域外の作業領域内の画像が全体的に顔中心へ移動して、マスクとの境界付近の画素が欠落することが回避される。
CPU70は、全顔領域についてステップS96及びS97の所定の比率の決定及び小顔処理を行なったか否かを判断し(ステップS98)、全顔領域について処理を行なっていないと判断した場合(S98:NO)、処理をステップS95へ戻す。CPU70は、全顔領域について処理を行なったと判断した場合(S98:YES)、小顔処理を終了し、図6のフローチャートにおけるステップS110へ処理を戻す。
なお、図9のフローチャートに示した処理において、ステップS91からS94まで、ステップS95からS98までの2段階にわけ、ステップS92及びS93の処理を全顔領域に対して行なってから、再度全顔領域に対してステップS96及びS97の処理を行なう構成とした。これは、ステップS97にてグラフィックボード73を用いた描画処理を行なう構成としているため、グラフィックボード73を占有する時間をまとめて描画処理を高速に効率よく行なうためである。したがって、必ずしも図9のフローチャートに示した処理手順のように、2段階に分けて処理を行なう必要はない。
次に、小顔処理の結果を反映させた加工画像を作成する処理について説明する。図10は、実施の形態1における画像処理部7のCPU70により実行される加工画像作成処理の一例を示すフローチャートである。図10のフローチャートに示す処理手順は、図6のフローチャートに示したステップS110の処理手順の詳細である。
CPU70は、図6のフローチャートのステップS109における小顔処理が終了した場合、メモリ71に保存してある制御部6から取得した元の画像を、グラフィックボード73を利用して描画する(ステップS1001)。CPU70は再度、検出により得られた顔領域から一の顔領域を選択し(ステップS1002)、選択した顔領域について小顔処理後の作業領域内の画像を、ステップS51で描画した画像の上に重ねるようにして描画させる(ステップS1003)。このとき、作業領域内の部分のみが、元の画像に重ねられるようにして描画される。
次にCPU70は、全顔領域について描画処理を行なったか否かを判断し(ステップS1004)、全顔領域について描画処理を行っていないと判断した場合(S1004:NO)、処理をステップS1002へ戻す。CPU70は、全顔領域について描画処理を行なったと判断した場合(S1004:YES)、加工画像作成処理を終了し、図6のフローチャートに処理を戻し、画像処理を終了する。
図6乃至図10のフローチャートに示した処理手順により、人物が動きのあるポーズをとる場合も夫々の顔が小顔となる加工が有効に行なわれる。
次に、図6乃至図10のフローチャートに示した画像処理部7のCPU70によって実行される各処理手順を、具体例を示す図面を参照して説明する。
図11は、CPU70が制御部6から取得した画像の内容例を示す説明図である。図11の説明図に示す内容例では、画像に3人の人物が写っていることが判る。図11に示すように、右側に写る人物及び中央に写る人物は顔が正面に向いておらず、鼻を通る顔の中央線に対し頬部分の面積が左右対称ではない。この場合、肌色の領域の中心線を基準に左右対照に輪郭を内側にずらすなどしたときには、顔に歪みが生まれて不自然となる。また、図11に示すように、左側に写る人物及び中央に写る人物は顔を傾けてポーズをとっている。したがって、肌色の領域に対し画像の垂直方向を軸に処理を行なうと顔に歪みが生じる。
図12は、CPU70により顔検出処理が実行されて得られる情報の内容例を示す説明図である。顔検出処理により、図11に示した画像に対して3つの矩形が、検出された顔領域として得られていることが示されている。左側に写る人物及び中央に写る人物については、矩形である顔領域の横軸方向及び縦軸方向は、画像の水平方向及び垂直方向に対して傾いていることが示されている。また、各人物について顔の各器官の輪郭上の点が、各器官領域として特定されている。図12に示す各点は夫々、区別されずに示されているが、顔検出処理により右目の輪郭上の点、左目の輪郭上の点、鼻の輪郭上の点などのように器官毎に区別されて検出される。同様に顔の輪郭上の点が特定されている。
図13は、CPU70による解析処理によって特定される顔中心の例を示す説明図である。図13には、検出された顔夫々について、特定された顔中心を通る顔の縦方向の中央線と、横方向の中央線とが示されている。以後の処理では、図13に示した顔中心を基準に、顔を小顔にする加工が行なわれる。顔中心に向かい小顔処理の加工が行なわれるので、複数の人物が、図13に示すように顔を傾けて写るか、又は正面を向かずに写るかなど、動きのあるポーズをとる画像であっても、不自然な画像とならず、有効に加工を行なうことができる。
図14は、CPU70による解析処理によって設定される輪郭処理線及び作業領域の例を示す説明図である。図14には、各人物の顔に対し、図13に示した顔中心を特定する2つの中央線に加え、顔検出処理によって特定された顔の輪郭を破線にて示している。また、図14中の74a,74b,74cは、解析処理により特定された処理輪郭線であり、75a,75b,75cは設定された作業領域を示している。
図14に示すように、各人物の顔について処理輪郭線74a,74b,74cは、破線にて示した実際の輪郭を拡大させることで設定されており、実際の輪郭の外側に位置している。実際に顔の輪郭よりも外側の線を処理輪郭線74a,74b,74cとすることにより、実際の輪郭における歪みが防止されるので、小顔にする加工が行なわれることによって輪郭に不自然な歪みが生じることを防止することができる。
また図14に示すように、作業領域75a,75b,75cとして夫々、処理輪郭線74a,74b,74cの外接矩形を所定の倍率で拡大したものを設定されていることが示されている。以後、作業領域75a,75b,75c内の画像に限定して小顔処理が高速に行なわれる。
次に、図8のフローチャートに示した重複輪郭除外処理について具体例を挙げて説明する。図14に示した例に対し、重複輪郭除外処理を行なう場合、まずCPU70は例えばステップS71にて中央の人物の顔領域を選択し(S71)、処理輪郭線74bを取得する(S72)。そして、CPU70は処理輪郭線74bに対し、他の処理輪郭線74a又は処理輪郭線74cと交差するか否かを判断する(S73)。この場合、CPU70は、いずれの処理輪郭線74a,74cとも交差しないと判断するので(S73:NO)、いずれの顔領域も、加工処理対象から除外されない。
図15は、CPU70による解析処理によって設定される輪郭処理線及び作業領域の他の例を示す説明図である。図15に示す例は、画像中の2人の人物の顔が検出された例である。図15に示す例では、2人の人物は前後に重なって写っている。そして夫々の顔領域に対して、破線に示す輪郭が抽出されている。更に、図14に示した例と同様に、抽出された輪郭に基づき処理輪郭線74d,74e及び作業領域75d,75eが設定されている。
図15に示す例に対し、CPU70が重複輪郭除外処理を行なう場合は、2人の顔のいずれも加工処理対象から除外される。図15に示すように、処理輪郭線74d,74eが交差しているからである。このように、画像中の複数の人物の顔が重なるように近接している場合には、後述の小顔処理を行なって夫々画素を移動したときに、相互に画像の歪みを発生させる可能性がある。画像処理部7の重複輪郭除外処理により、歪みを発生させる可能性のある顔については加工を行なわないようにすることができ、複数の人物が動きのあるポーズをとり、複数の人物が密着して写る画像、又は重なって写る画像であっても加工によって不自然な画像となることがない。
図14の例では、処理輪郭線74a,74b,74cがいずれも交差していないために、いずれの顔も加工対象外とならず、図15の例では処理輪郭線74d,74eが交差しているためにいずれの顔も加工対象外となった。重複輪郭除外処理では、完全に交差している場合のみならず、処理輪郭線間の距離が所定値以下である場合には顔が近接しているために加工対象外とすべきと判断してもよい。したがって、図14の例であっても例えば処理輪郭線74b,74c間の距離が所定値以下であるために、中央の人物の顔と右側の人物の顔とを加工対象外としてもよい。また、処理輪郭線が交差しているか否かのみならず、作業領域間が重複している場合に加工対象外とする構成としてもよい。
なお、図15に示した作業領域75dと作業領域75eとは、重複している。重複領域については作業領域から除外されるようにマスクとするようにしてもよい。
次に、図9のフローチャートに示した小顔処理について具体例を挙げて説明する。図16は、CPU70による小顔処理の概要を示す説明図である。図16には、各顔領域について設定されている作業領域75a,75b,75cに対して作成されるマスクが黒塗りにて示されている。図16に示すマスクは、作業領域75a,75b,75cの矩形内であって処理輪郭線74a,74b,74cの外側の領域である。更に、両目の領域及び両目の中央を結ぶ直線よりも画像の上側の領域もマスクの領域とされている。当該領域にマスクをして小顔処理を行なうことにより、画素を移動させる領域と移動させない領域との境界が自然となる。なお、図16に示すマスクは、ぼかし処理を行なう前の状態を示している。また、両目の領域をマスクとすることにより、両目が加工されて目が小さくなることが回避され、各人物の顔を小顔に見せる加工を有効に行なうことができる。
作業領域75a,75b,75cをそのまま顔中心に向かって収縮させることにより小顔とすることもできるが、この場合、作業領域75a,75b,75cの矩形の境界線当たりに画素情報が欠落する、境界に歪みが発生するなど不自然な画像となる可能性がある。
図16の黒塗りで示されるマスク以外の作業領域75a,75b,75c内の画素をグリッド毎に、夫々矢印に示す方向に沿って顔中心へ向かって移動させることにより、小顔処理が行なわれる。
そして、小顔処理が行なわれた後の作業領域75a,75b,75cが、図11の説明図に示したような元の画像に夫々重ねられて描画されることにより(図10、S1003)、画像中の人物の顔が小顔となるように加工が行なわれた加工画像が作成される。
(実施の形態2)
実施の形態2では、実施の形態1で示した画像処理に加え、画像に写る人物の顔型を分類し、顔型の分類に応じて顔の縦方向及び横方向に対する小顔率を調整する処理を行なう。
実施の形態2における画像出力装置の構成は、解析処理の詳細、小顔処理の詳細以外はハードウェア構成及びソフトウェア的な処理手順も同様である。以下の説明では、実施の形態1と共通する構成については同一の符号を付し、相違する処理手順について説明する。
図17は、実施の形態2における画像処理部7のCPU70により実行される解析処理の一例を示すフローチャートである。図17のフローチャートにて説明する処理手順の内、実施の形態1にて示した図7のフローチャートの処理手順と共通する処理手順については、同一のステップ番号を付して詳細な説明を省略する。
CPU70は、検出された顔の顔領域を選択し(S51)、顔中心を特定し(S52)、更に顔の輪郭を外側に拡大させた処理輪郭線を設定し(S53)、処理ベクトルを特定し(S54)、処理係数を決定すると(S55)、それらの情報に基づき顔分類を判別する(ステップS58)。CPU70は、顔分類の判別結果を各顔に対応付けて記憶しておき、後の小顔処理にて小顔率の設定の際に用いる。
顔分類の判別処理について詳細を説明する。図18は、実施の形態2における画像処理部7のCPU70により実行される顔分類の判別処理の一例を示すフローチャートである。
CPU70は、特定されている顔中心を基準に、顔中心を通る顔の横方向の中央線と抽出されている実際の顔の輪郭との交点の内の、左側の交点までの長さa1を特定する(ステップS801)。そしてCPU70は、顔中心から、顔中心を通る顔の横方向の中央線と実際の顔の輪郭との交点の内の、右側の交点までの長さa2を特定する(ステップS802)。更にCPU70は、顔中心から、顔中心を通る顔の縦方向の中央線と実際の顔の下部の輪郭との交点までの長さa3を特定する(ステップS803)。
次にCPU70は、ステップS801からステップS803までで特定した長さa1,a2,a3を用い、顔の幅即ち横方向の長さに対する顔の縦方向の長さの比率kが、所定値に等しいか否かを判断する(ステップS804)。ここで比率kは、
k=a3/(a1+a2)
で表わされる。
CPU70は、ステップS804にて、比率kが所定値に等しいと判断した場合(S804:YES)、標準の顔型であるパターン1に顔型を分類し(ステップS805)、分類処理を終了して、図17のフローチャートにおけるステップS56に処理を戻す。
CPU70は、ステップS804にて、比率kが所定値に等しくないと判断した場合(S804:NO)、比率kが所定値よりも大きいか否かを判断する(ステップS806)。CPU70は、比率kが所定値よりも大きいと判断した場合(S806:YES)、縦方向の長さが長いので面長型であるパターン2に顔型を分類し(ステップS807)、分類処理を終了して、図17のフローチャートにおけるステップS56に処理を戻す。
CPU70は、ステップS806にて、比率kが所定値よりも小さいと判断した場合(S806:NO)、横方向の長さが長いので丸顔型であるパターン3に顔型を分類し(ステップS808)、分類処理を終了して、図17のフローチャートにおけるステップS56に処理を戻す。
このとき、所定値としては、理想的な顔の縦横比が4:3であることから0.75を用いるとする。他の値を用いてもよい。ステップS804にて、比率kが0.75と完全に等しいと判断される可能性が低いので、プラスマイナス0.01などの所定の範囲内で0.75と等しいと判断する。
図18のフローチャートに示した処理を、具体例を挙げて説明する。図19は、画像中で検出される顔に対して特定される輪郭及び中央線の例を示す説明図である。図19の説明図に示される画像中の3人の人物の内、右側の人物の顔に対して顔型の分類処理が行なわれる場合を例に挙げる。図19に示すように、顔中心から、横方向の中央線と顔の輪郭との左側の交点までの長さa1、右側の交点までの長さa2が特定され、更に、顔中心から、縦方向の中央線と顔の下部の輪郭との交点までの長さa3が特定される。これらの長さa1,a2,a3に基づき算出される比率kにより、右側の人物の顔型が分類される。
分類された顔型を小顔処理における小顔率の設定の際に用いる処理について説明する。図20は、実施の形態2における画像処理部7のCPU70により実行される小顔処理の一例を示すフローチャートである。図20のフローチャートにて説明する処理手順の内、実施の形態1にて示した図9のフローチャートの処理手順と共通する処理手順については、同一のステップ番号を付して詳細な説明を省略する。
CPU70は、全顔領域についてマスクを作成し(S92)、マスクをぼかす処理(S93)を行なった場合(S94:YES)、再度、一の顔領域を選択し(S95)、選択した顔について判別され、対応付けて記憶してある顔型の分類に基づき、小顔率を設定する(ステップS99)。このときCPU70は、顔型の分類に基づいて顔の横方向の小顔率と縦方向の小顔率とを設定する。例えばCPU70は、解析処理により顔がパターン1(標準型)と判別されている場合には、初期的に設定してある小顔率を、顔の横方向及び縦方向夫々そのまま用いる。これに対し、CPU70は、解析処理により顔がパターン2(面長型)と判別されている場合には、顔の縦方向の小顔率を顔の横方向の小顔率よりも強くするように設定する。顔が面長型と判別されている場合CPU70は、顔の縦横比が理想の0.75に近づくように、以下の式(2)に基づき縦方向の小顔率を設定してもよい。このとき、横方向の小顔率は初期的に設定してある小顔率を用いる。
縦方向の小顔率
=縦方向の小顔率(初期設定)×[0.75/{a3/(a1+a2)}]…(2)
また、CPU70は、解析処理により顔がパターン3(丸顔型)と判別されている場合には、顔の横方向の小顔率を顔の縦方向の小顔率よりも強くするように設定する。顔が丸顔型と判別されている場合CPU70は、顔の縦横比が理想の0.75に近づくように、以下の式(3)に基づき横方向の小顔率を設定してもよい。このとき、縦方向の小顔率は初期的に設定してある小顔率を用いる。
横方向の小顔率
=横方向の小顔率(初期設定)×[{a3/(a1+a2)}/0.75]…(3)
次にCPU70は、全顔領域について、上述のように顔の分類に基づいて設定した小顔率で、マスクが掛けられた作業領域内の各画素をグリッド毎に、顔中心へ向けて移動させ(S97)、小顔処理を実現し、小顔処理を終了する。
このように、画像中の人物の顔夫々の顔型の分類に応じて加工が行なわれるので、人物が動きのあるポーズをとる画像であっても、画像中の人物の顔を小顔に見せる加工を有効に行なうことができる。
(実施の形態3)
実施の形態3では、実施の形態1又は2に示した画像処理に加え、画像に写る人物の顔の内の両目の領域を、両目が大きくなるように、且つ不自然に大きくなりすぎないように加工処理を行なう。
実施の形態3における画像出力装置の構成は、解析処理の詳細、小顔処理の詳細以外は、ハードウェア構成及びソフトウェア的な処理手順も同様である。以下の説明では、実施の形態1又は2と共通する構成については同一の符号を付して詳細な説明を省略し、相違する処理手順について説明する。
図21は、実施の形態3における画像処理部7のCPU70により実行される解析処理の一例を示すフローチャートである。図21のフローチャートにて説明する処理手順の内、実施の形態1又は2にて示した図7又は図17のフローチャートの処理手順と共通する処理手順については、同一のステップ番号を付して詳細な説明を省略する。
CPU70は、検出された顔の顔領域を選択し(S51)、顔中心を特定し(S52)、更に顔の輪郭を外側に拡大させた処理輪郭線を設定し(S53)、処理ベクトルを特定し(S54)、処理係数を決定し(S55)、顔分類を判別すると(S58)、次に、目の拡大率を算出する(ステップS59)。CPU70は、顔毎に算出される拡大率を各顔に対応付けて記憶しておき、後の小顔処理にて目の領域を拡大する際に用いる。その後は、CPU70は、作業領域を設定し(S56)、全ての顔領域について処理を行なったと判断するまで(S57:YES)、処理を繰り返す。
目の拡大率の算出処理について詳細を説明する。図22は、実施の形態3における画像処理部7のCPU70により実行される目の拡大率の算出処理の一例を示すフローチャートである。図22のフローチャートに示す処理手順は、図21のフローチャートに示したステップS59の処理手順の詳細である。
CPU70は、図6に示した画像処理中のステップS102にて抽出された顔領域の大きさ(画素数)を求める(ステップS9001)。具体的には例えば、CPU70は、顔検出処理によって得られた矩形の面積(図12参照)を、顔領域の面積として求める。また、顔領域の内、解析処理のS52にて特定される顔中心を通る顔の横方向の中央線よりも下部の面積としてもよいし、肌色部分を抽出し、抽出した領域の面積を、顔領域の面積として求めてもよい。
CPU70は、ステップS9001で求めた顔領域の大きさに対する基準の目の大きさを求める(ステップS9002)。具体的には、CPU70は、ステップS9001で求めた面積に対する基準となる所定の比率によって、基準の大きさを面積として求める。
CPU70は、図6に示した画像処理中のステップS103にて特定された目の領域の大きさ(画素数)を求める(ステップS9003)。具体的には、CPU70は、特定された目の輪郭上の数点の座標情報、又は目の領域を覆う楕円形状の画像内における座標情報から、当該座標情報が示す輪郭内に含まれる領域の面積を求める。
CPU70は、ステップS9002で求めた基準の大きさと、ステップS9003で求めた目の領域の大きさとを比較する(ステップS9004)。CPU70は、ステップS9004における比較結果に応じて所定の数式に従って目の拡大率を算出する(ステップS9005)。ステップS9005の算出方法は例えば以下である。
ステップS9002で求めた基準の大きさをA、ステップS9003で求めた被写体の人物の目の領域の大きさをBとする。ここで基準となる目の拡大率をE(例えば1.1=110%)、求める目の拡大率をeとすると、CPU70は、所定の数式として以下の式に従って拡大率を算出する。
ただし、CPU70はステップS9005における算出処理にて、算出した拡大率eが1(100%)以上となるように、且つ拡大率eが自然な範囲に収まるか否かを判断し、係数αにて調整を行なう。なお、用いる数式は式(4)には限らない。以下の式(5)を用いて求めてもよい。
式(4)及び式(5)のいずれを用いた場合も、顔領域の大きさに対して目が基準の大きさよりも大きい顔については、目が大きくなりすぎることがないように、拡大率は1を下回らない条件下で小さく算出され、目が基準の大きさ以下である顔については拡大率が比較的大きな値となって効果的に目の領域を拡大できる。
CPU70はこれにより拡大率の算出処理を終了し、図21のフローチャートにおけるステップS56に処理を戻す。
図22のフローチャートに示した処理を、具体例を挙げて説明する。図23は、画像中で検出される顔領域から算出される目の大きさの例を示す説明図である。図23の説明図に示される画像中の3人の人物の内、右側の人物の顔の目の大きさが求められる場合を例に挙げる。図23には、実施の形態1の図12にて示した顔検出処理結果により得られる目の輪郭上の点を結んだ領域がハッチングにて示されている。CPU70は、図22のフローチャートに示したステップS9003にて、図23中のハッチングにて示したように目の領域の面積bを求める。
なお、上述のフローチャートの説明では、顔領域の大きさ及び目の領域の大きさは、面積として求めた。しかしながら本発明はこれに限らず、顔領域の大きさは、検出処理によって得られた矩形の横幅又は縦幅でもよい。この場合、図23に示すように、目の領域の大きさも特定された目の輪郭上の横幅b1又は縦幅b2を、目の領域の大きさとして求める。そして、CPU70は、横幅どうし又は縦幅どうしを用い、上述の式(4)により拡大率を求めてもよい。また、CPU70は、横幅b1と縦幅b2とを掛けて面積Bとして扱い、上述の式(4)により拡大率を求めてもよい。
また、上述のフローチャートの説明では、基準の目の大きさの算出、及び被写体の人物の顔領域から特定された目の領域の大きさの算出を、面積(例えば画素数)として求めるとした。求められる目の大きさはいずれも、ステップS9001にて算出される顔領域の大きさに対する比率(百分率)でもよい。このとき、基準の目の大きさは予め基準の比率が与えられているから、改めて算出するステップS9002は不要である。
次に、求められた目の拡大率eを用いた小顔処理について説明する。図24は、実施の形態3における画像処理部7のCPU70により実行される小顔処理の一例を示すフローチャートである。なお、図24のフローチャートにて説明する処理手順の内、実施の形態1又は2にて示した図9又は図20のフローチャートの処理手順と共通する処理手順については、同一のステップ番号を付して詳細な説明を省略する。
CPU70は、全顔領域についてマスクを作成してぼかし処理を行ない(S91〜S94)、全顔領域について顔型の分類に基づき設定された小顔率を用いて顔領域のグリッド移動を行なう(S95〜S99)。CPU70は、再度、一の顔領域を選択し(ステップS910)、選択した顔領域から目の領域を抽出する(ステップS911)。抽出する目の領域は、図23に示すように特定された目の輪郭上の点で囲まれる領域でもよいし、特定された目の輪郭上の点を含む楕円形でもよい。そして、CPU70は、選択した顔の目の領域について算出してあった目の拡大率eに基づき、抽出した目の領域を拡大する(ステップS912)。
CPU70は、全顔領域についてステップS911及びS912の処理の目の領域の拡大処理を行なったか否かを判断し(ステップS913)、全顔領域について処理を行なっていないと判断した場合(S913:NO)、処理をステップS910へ戻す。CPU70は、全顔領域について処理を行なったと判断した場合(S913:YES)、小顔処理を終了する。
CPU70は、この後の加工画像作成処理においては、元の画像の上に、拡大した目の領域の画像と、小顔処理後の作業領域内の画像とを重ねるようにして描画させる。このとき、マスク処理をしてある作業領域内の画像を最も上に重ねるようにしてもよいし、目の領域の境界のぼかし処理をしておき、当該目の領域の画像を最も上に重ねるようにしてもよい。
このように、各顔領域に対する基準の目の大きさを用い、被写体として写る人物の個別の顔の特性に応じて、適切に目の大きさを拡大することができる。つまり、画像中の顔領域に対して個別に、夫々の顔の大きさに対する大きさにて拡大率が調整されるから、奥に写る人物と、手前に写る人物とで両目の領域の拡大を適切に調節できる。プリクラのように複数の人物が動きのあるポーズをとり、前後に重なって写る場合が少なくないときには、同一の拡大率を一律に用いて目の領域を拡大するとした場合には後ろ(奥に)写る人物の目が不自然に大きく拡大されるなどの問題が生じる可能性がある。しかしながら、本実施の形態3における画像処理部7の処理により、上述のように個別に適切な拡大が可能であるから、ユーザが満足する画像を得られる。
また、写体として写る人物の顔における目の大きさに応じて個別に、目の拡大率が調整されるから、一律の割合で拡大するよりも、異なる特性の顔に応じて両目の領域を拡大して小顔に見せる加工を有効に行なうことができる。つまり、画像中の目が大きい顔の人物の目が更に大きくなり過ぎる事態、又は、目が小さい顔の人物の目の拡大が不足する事態を避け、異なる特性の顔を有するユーザが共に動きのあるポーズをとって写る場合であっても、各ユーザが満足する画像を得られる。
実施の形態1乃至3では、画像処理部7の小顔処理において描画を、グラフィックボード73を用いてハードウェア的に実現した。画像処理部7はグラフィックボード73を有さずに、CPU70により描画処理をソフトウェア的に実行する構成としてもよい。
実施の形態1乃至3では、画像処理部7は画像出力装置に含まれる一構成部であった。本発明はこれに限らず、画像処理部7が、加工処理対象として読み込まれた画像に対して人物の顔を加工する一の画像処理装置として単独に動作するものであってもよい。また、画像処理部7による画像処理の対象は、プリクラにおける画像のみならず、人物を写した画像に対する画像処理に広く適用可能である。
上述のように、本発明の範囲は本実施の形態に限定されるものではないことは勿論である。