説明

画像処理装置および方法、並びにプログラム

【課題】画像サイズを縮小する際、被写体となるオブジェクトを欠けることなく含み、かつ、その大きさを極力小さくせずに画像サイズを縮小させると共に、計算コストを低減させるようにする。
【解決手段】画像クロップ部21は、入力画像に含まれる被写体領域を検出し、検出された被写体領域を全て包含する領域をクロップ領域として設定し、クロップ領域の端部を所定幅だけ拡張する拡張領域を付加し、前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る。オブジェクト適応型サイズ変更部22は、前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する。画像サイズ調整部24は、オブジェクト適応型サイズ変更部22によりサイズが変更された画像の全体を所定の比率でサイズを変更する。本発明は、画像処理装置に適用することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置および方法、並びにプログラムに関し、特に、画像を縮小する際、画像内の被写体をできるだけ小さくせずに、縮小できるようにした画像処理装置および方法、並びにプログラムに関する。
【背景技術】
【0002】
近年、デジタルカメラの高性能化により、撮影される画像の高解像度化が進んでいる。一方モバイル端末が普及し、小型な画面でデジタルカメラで撮影された画像を閲覧する機会が増えている。小型な画面で解像度が高い画像を閲覧する際には、そのままのサイズでは、1画面に収まりきらないため、画面サイズに合わせて画像全体を縮小して、表示することが多い。その際、画像全体が小さく縮小されてしまうことにより、被写体となるオブジェクトそのものが小さくなってしまうため、画像の内容を理解することが困難になってしまうことがあった。
【0003】
そこで、例えば、複数のクロップ領域を選択する技術が提案されている(特許文献1参照)。また、人物を被写体として撮影するための人物モード、風景を被写体として撮影するための風景モードを手動もしくは自動で選択し、モードに合わせてクロップ領域を検出する技術が提案されている(特許文献2参照)。
【0004】
さらに、クロップウィンドウのサイズと形状を選択し,そのサイズと形状のクロップウィンドウを用いてクロップする技術が提案されている(特許文献3参照)。また、信念マップの値が高い箇所を割り当てることによって、被写体領域を検出してクロップする技術が提案されている(特許文献4参照)。さらに、信念マップの値が高い箇所を割り当てることによって、被写体領域を検出してクロップする技術が提案されている(特許文献5参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−175683公報
【特許文献2】特開2005−175684公報
【特許文献3】特開2002−16792公報
【特許文献4】特開2002−218223公報
【特許文献5】特開2001−236497公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載の技術においては、複数のクロップ領域を選択することは可能であるが、複数のクロップ領域を統合することができない恐れがあった。また、特許文献2に記載の技術においては、モード選択の処理が必要で、手間(手動の場合)や時間(自動選択)がかかる恐れがあった。また、複数のアルゴリズムを保持しているため、多くのメモリが必要となり、装置がコスト高となってしまう恐れがあった。
【0007】
さらに、特許文献3に記載の技術においては、選択の手間がかかり、またサイズや形状によっては,被写体領域を切断してしまう可能性があった。また、特許文献4の技術においては、被写体が複数ある場合など,被写体領域を切断してしまう可能性があった。さらに、特許文献5に記載の記述においては、被写体が複数ある場合など、被写体を切断してしまう可能性があった。
【0008】
本発明はこのような状況に鑑みてなされたものであり、特に、画像サイズを縮小する際、被写体となるオブジェクトを欠けることなく含み、かつ、その大きさを極力小さくせずに画像サイズを縮小させると共に、計算コストを低減させるようにするものである。
【課題を解決するための手段】
【0009】
本発明の一側面の画像処理装置は、入力画像に含まれる被写体領域を検出する被写体領域検出手段と、前記被写体領域検出手段により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定手段と、前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加手段と、前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取手段と、前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更手段と、前記被写体適応サイズ変更手段によりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更手段とを含む。
【0010】
前記被写体適応サイズ変更手段には、前記切取画像より前記切取画像の隣接する画素間のエネルギーに基づいて、入力画像エネルギーマップを生成する入力画像エネルギーマップ生成手段と、前記入力画像エネルギーマップを縮小することにより、前記切取画像における隣接する複数の画素からなる1ブロックを1画素とした縮小画像に対応する、縮小エネルギーマップを生成する縮小エネルギーマップ生成手段と、前記縮小エネルギーマップにおける縮小画像の一方の端部の画素より、他方の端部の方向に隣接した画素を順次経由して、前記他方の端部の画素に到達するまでの複数の経路のうち、経由する画素のエネルギーの積算値が最小となる経路の画素間を結ぶことにより構成される縮小シームを探索する縮小シーム探索手段と、前記縮小シーム探索手段により探索された縮小シームの端部を構成する、前記入力画像エネルギーマップにおける切取画像の一方の端部の画素より、他方の端部の方向に隣接した画素を順次経由して、前記他方の端部の画素に到達するまでの複数の経路のうち、経由する画素のエネルギーの積算値が最小となる画素間を結ぶことにより構成される部分シームを探索する部分シーム探索手段と、前記部分シーム探索手段により探索された前記部分シームを構成する画素を、前記入力画像より削除することで前記入力画像を縮小する縮小手段とを含ませるようにすることができる。
【0011】
探索された部分シームを構成する画素のエネルギーの積算値と所定の閾値とを比較する比較手段をさらに含ませるようにすることができ、前記部分シーム探索手段には、前記比較手段の比較結果が、探索された部分シームを構成する画素のエネルギーの積算値が所定の閾値より大きいと判定されるまで、前記縮小シーム探索手段により探索された縮小シームの端部を構成する、前記入力画像エネルギーマップにおける切取画像の一方の端部の画素より、他方の端部の方向に隣接した画素を順次経由して、前記他方の端部の画素に到達するまでの複数の経路のうち、経由する画素のエネルギーの積算値が最小となる画素間を結ぶことにより構成される部分シームを繰り返し探索させるようにすることができる。
【0012】
前記部分シーム探索手段により探索された部分シームを構成する、前記切取画像の全ての画素に対応する前記入力画像エネルギーマップ上のエネルギーに、エネルギー最大値を挿入して置換し、前記入力画像エネルギーマップを更新する入力画像エネルギーマップ更新手段をさらに含ませるようにすることができ、前記部分シーム探索手段には、前記切取画像の一方の端部の画素より、他方の端部の方向に隣接した画素を順次経由して、前記他方の端部の画素に到達するまでの複数の経路を探索するにあたり、隣接する画素の全てが前記入力画像エネルギーマップのエネルギー最大値であった場合、前記隣接する画素に、さらに隣接する所定数の画素のうち、最小エネルギーの画素を隣接する画素として設定し、前記経路を構成させるようにすることができる。
【0013】
前記縮小シーム探索手段により探索された縮小シームを構成する、前記縮小画像の全ての画素に対応する前記縮小画像エネルギーマップ上のエネルギーに、エネルギー最大値を挿入して置換し、前記縮小画像エネルギーマップを更新する縮小画像エネルギーマップ更新手段をさらに含ませるようにすることができる。
【0014】
本発明の一側面の画像処理方法は、入力画像に含まれる被写体領域を検出する被写体領域検出手段と、前記被写体領域検出手段により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定手段と、前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加手段と、前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取手段と、前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更手段と、前記被写体適応サイズ変更手段によりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更手段とを含む画像処理装置の画像処理方法であって、前記被写体領域検出手段における、前記入力画像に含まれる被写体領域を検出する被写体領域検出ステップと、前記クロップ領域設定手段における、前記被写体領域検出ステップの処理により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定ステップと、前記拡張領域付加手段における、前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加ステップと、前記切取手段における、前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取ステップと、前記被写体適応サイズ変更手段における、前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更ステップと、前記画像全体サイズ変更手段における、前記被写体適応サイズ変更ステップによりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更ステップとを含む。
【0015】
本発明の一側面のプログラムは、入力画像に含まれる被写体領域を検出する被写体領域検出手段と、前記被写体領域検出手段により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定手段と、前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加手段と、前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取手段と、前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更手段と、前記被写体適応サイズ変更手段によりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更手段とを含む画像処理装置を制御するコンピュータに、前記被写体領域検出手段における、前記入力画像に含まれる被写体領域を検出する被写体領域検出ステップと、前記クロップ領域設定手段における、前記被写体領域検出ステップの処理により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定ステップと、前記拡張領域付加手段における、前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加ステップと、前記切取手段における、前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取ステップと、前記被写体適応サイズ変更手段における、前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更ステップと、前記画像全体サイズ変更手段における、前記被写体適応サイズ変更ステップによりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更ステップとを含む処理を実行させる。
【0016】
本発明の一側面においては、入力画像に含まれる被写体領域が検出され、検出された被写体領域を全て包含する領域がクロップ領域として設定され、前記クロップ領域の端部が所定幅だけ拡張される拡張領域が付加され、前記クロップ領域と、拡張領域とが含まれた切取領域からなる切取画像が前記入力画像より切り取られ、前記切取画像における前記被写体への影響が小さい領域が削除されて、前記切取領域からなる画像のサイズが変更され、サイズが変更された画像の全体が所定の比率でサイズが変更される。
【0017】
本発明の画像処理装置は、独立した装置であっても良いし、画像処理を行うブロックであっても良い。
【発明の効果】
【0018】
本発明の一側面によれば、画像を縮小する際、画像内の被写体をできるだけ小さくせずに、縮小することが可能となる。
【図面の簡単な説明】
【0019】
【図1】本発明を適用した画像処理装置の一実施の形態の構成例を示すブロック図である。
【図2】画像クロップ部の構成例を示すブロック図である。
【図3】被写体領域検出部の構成例を示すブロック図である。
【図4】オブジェクト適応型画像サイズ変更部の構成例を示すブロック図である。
【図5】探索部の構成例を示すブロック図である。
【図6】画像サイズ変更処理を説明するフローチャートである。
【図7】画像サイズ変更処理を説明する図である。
【図8】画像クロップ処理を説明するフローチャートである。
【図9】被写体領域検出処理を説明するフローチャートである。
【図10】被写体領域検出処理を説明する図である。
【図11】画像クロップ処理を説明する図である。
【図12】画像クロップ処理を説明する図である。
【図13】オブジェクト適応型サイズ変更処理を説明するフローチャートである。
【図14】探索処理を説明するフローチャートである。
【図15】全画像探索処理を説明するフローチャートである。
【図16】全画像探索処理を説明する図である。
【図17】全画像探索処理を説明する図である。
【図18】全画像探索処理を説明する図である。
【図19】部分画像探索処理を説明するフローチャートである。
【図20】部分画像探索処理を説明する図である。
【図21】部分画像探索処理を説明する図である。
【図22】部分画像探索処理を説明する図である。
【図23】部分画像探索処理を説明する図である。
【図24】部分画像探索処理を説明する図である。
【図25】検索処理におけるダイナミックプログラミング法とグリーディ法とを説明する図である。
【図26】処理結果を説明する図である。
【図27】汎用のパーソナルコンピュータの構成例を説明する図である。
【発明を実施するための最良の形態】
【0020】
[画像処理装置の構成例]
図1は、本発明を適用した画像処理装置のハードウェアの一実施の形態の構成例を示している。図1の画像処理装置11は、画像を所定のサイズに縮小、または拡大する際、画像内における被写体となるオブジェクトのサイズをできるだけ変化させないように、画像全体のサイズを変更し、表示部12に表示する。尚、以降においては、入力画像を縮小する場合の構成について説明するものとするが、同様の構成と機能により拡大する場合にも適用できる。
【0021】
より詳細には、画像処理装置11は、画像クロップ部21、オブジェクト適応型サイズ変更部22、クロップサイズ判定部23、画像サイズ調整部24、変更画像サイズ判定部25、および出力部26を備えている。
【0022】
画像クロップ部21は、入力画像のうち、被写体となるオブジェクトの領域を検出し、オブジェクトの領域として検出された範囲を包含する矩形状のクロップ画像を生成して、オブジェクト適応型サイズ変更部22、およびクロップサイズ判定部23に供給する。尚、画像クロップ部21の構成については、図2を参照して詳細を後述する。
【0023】
クロップサイズ判定部23は、画像クロップ部21より供給されてきたクロップ画像のサイズが、表示部12に表示するのに最適な所定の画像サイズに縮小されているか否かを判定し、最適である場合、出力部26にクロップ画像を縮小画像として出力する。一方、クロップ画像のサイズが所定の画像サイズに縮小されていないと判定された場合、オブジェクト適応型サイズ変更部22を制御して、クロップ画像内の被写体となるオブジェクトをできるだけ小さくしないようにクロップ画像を縮小させる。
【0024】
オブジェクト適応型サイズ変更部22は、いわゆるシームカービングにより画像内のオブジェクトを、できるだけ小さくしないように、クロップ画像を縮小し、画像サイズ調整部24、および変更画像サイズ判定部25に出力する。尚、オブジェクト適応型サイズ変更部22は、図4を参照して、詳細を後述する。
【0025】
変更画像サイズ判定部25は、オブジェクト適応型サイズ変更部22より供給されてくるクロップ画像が縮小された画像のサイズが表示部12で表示されるのに最適なサイズに縮小されたか否かを判定する。そして、変更画像サイズ判定部25は、表示部12で表示されるのに、最適なサイズに縮小されていると判定した場合、出力部26にそのまま出力する。一方、最適なサイズではないと判定された場合、変更画像サイズ判定部25は、画像サイズ調整部24に対して、縮小されたクロップ画像を、表示部12に最適なサイズとなるように、画像全体を縮小させて出力部26に出力させる。出力部26は、クロップサイズ判定部23、画像サイズ調整部24、または変更画像サイズ判定部25のいずれかから供給されてくる入力画像が縮小された画像を表示部12に出力して表示させる。
【0026】
[画像クロップ部の構成例]
次に、図2を参照して、画像クロップ部21の構成例について説明する。
【0027】
画像クロップ部21は、被写体領域検出部41、被写体領域包含範囲探索部42、被写体領域包含範囲矩形化部43、追加領域付加部44、および画像切出部45を備えている。被写体領域検出部41は、入力画像のうち被写体となるオブジェクトの存在する領域を検出し、被写体となるオブジェクトの存在する領域の情報を被写体領域包含範囲探索部42に供給する。尚、被写体領域検出部41は、図3を参照して、詳細を後述する。
【0028】
被写体領域包含範囲探索部42は、被写体領域検出部41より供給されてきた被写体となるオブジェクトの存在する領域を包含する位置の範囲を探索し、探索した範囲を被写体領域包含範囲矩形化部43に供給する。被写体領域包含範囲矩形化部43は、被写体領域包含範囲探索部42より供給されてくる被写体となるオブジェクトの存在する領域を包含する位置の範囲を矩形状に加工し、追加領域付加部44に供給する。追加領域付加部44は、被写体となるオブジェクトが存在する領域を包含する位置の矩形状範囲の外周端部に、所定の幅からなる追加領域を付加して、画像切出部45に供給する。画像切出部45は、追加領域付加部44より供給されてきた、追加領域が付加されているオブジェクトの存在する領域を包含する位置の矩形状の範囲に対応するように、入力画像を切り出し、クロップ画像として出力する。
【0029】
[被写体領域検出部の構成例]
次に、図3を参照して、被写体領域検出部41の構成例について説明する。
【0030】
被写体領域検出部41は、輝度情報抽出部61、色情報抽出部62、エッジ情報抽出部63、被写体情報抽出部64、動き情報抽出部65、被写体マップ生成部66、および被写体領域特定部67から構成される。
【0031】
輝度情報抽出部61乃至動き情報抽出部65は、供給された入力画像から所定の情報を抽出し、抽出した情報からなる抽出情報画像に基づいて、入力画像の各領域における被写体の領域らしさを示す情報マップを生成する。これらの情報マップに含まれる情報は、被写体の含まれる領域により多く含まれる特徴の特徴量を示す情報とされ、その情報が入力画像の各領域に対応させて並べられたものが情報マップとされる。つまり、情報マップは、入力画像の各領域における特徴量を示す情報であるといえる。
【0032】
ここで、被写体とは、ユーザが入力画像を一瞥した場合に、ユーザが注目すると推定される入力画像上の物体、つまりユーザが目を向けると推定される物体をいう。したがって、被写体は必ずしも人に限られる訳ではない。また、輝度情報抽出部61乃至動き情報抽出部65では、情報マップとして、輝度情報マップ、色情報マップ、エッジ情報マップ、顔情報マップ、および動き情報マップが生成される。
【0033】
具体的には、輝度情報抽出部61は、供給された入力画像のY(輝度)成分からなる輝度画像を抽出情報画像として輝度情報マップを生成し、被写体マップ生成部66に供給する。色情報抽出部62は、供給された入力画像のCr成分からなるCr画像およびCb成分からなるCb画像を抽出情報画像として色情報マップを生成し、被写体マップ生成部66に供給する。
【0034】
エッジ情報抽出部63は、供給された入力画像の各領域のエッジ強度からなるエッジ画像を抽出情報画像としてエッジ情報マップを生成し、被写体マップ生成部66に供給する。被写体情報抽出部64は、供給された入力画像の各領域における、被写体(たとえば、人の顔)に関する情報からなる画像を抽出情報画像として被写体情報マップを生成し、被写体マップ生成部66に供給する。動き情報抽出部65は、供給された入力画像の各領域における、動きに関する情報からなる画像を抽出情報画像として動き情報マップを生成し、被写体マップ生成部66に供給する。
【0035】
被写体マップ生成部66は、輝度情報抽出部61乃至動き情報抽出部65から供給された情報マップを足し合わせて被写体マップを生成し、被写体領域特定部67に供給する。この被写体マップは、入力画像における被写体の含まれる領域を特定するための情報である。
【0036】
被写体領域特定部67は、被写体マップ生成部66からの被写体マップを用いて、供給された入力画像上の被写体の領域を特定し、その特定結果を出力する。
【0037】
[オブジェクト適応型サイズ変更部の構成例]
次に、図4を参照して、オブジェクト適応型サイズ変更部22の構成例について説明する。
【0038】
オブジェクト適応型サイズ変更部22は、画像取得部111、エネルギーマップ生成部112、入力画像エネルギーマップ記憶部113、縮小画像エネルギーマップ記憶部114、探索部115、および加工部116を備えている。
【0039】
画像取得部111は、入力画像を取得すると共に、エネルギーマップ生成部112、および加工部116に供給する。エネルギーマップ生成部112は、エネルギー算出部121、および縮小部122を備えており、画像取得部111からの入力画像より、入力画像と同サイズの入力画像エネルギーマップ、および、入力画像の縮小画像と同サイズの縮小画像エネルギーマップを生成する。より詳細には、エネルギー算出部121は、以下の式(1)を算出することにより、各画素のエネルギーe(I)を算出し、入力画像に対応する画素単位のエネルギーからなる入力画像エネルギーマップを生成し、入力画像エネルギーマップ記憶部113に記憶させる。また、エネルギー算出部121は、生成した入力画像エネルギーマップを縮小部122に供給する。
【0040】

【0041】
ここで、e(I)は、Iで示される入力画像上の位置の各画素におけるエネルギーを示している。すなわち、式(1)で示される各画素のエネルギーe(I)は、入力画像の各画素におけるx,y方向のそれぞれの隣接する画素間の画素値、または輝度値などの差分の絶対値和であることが示されている。
【0042】
縮小部122は、エネルギー算出部121により算出されて生成され、入力画像と同サイズの入力画像エネルギーマップを縮小し、縮小画像エネルギーマップを生成して、縮小画像エネルギーマップ記憶部114に記憶させる。より詳細には、縮小部122は、入力画像の、例えば、m画素×n画素を1ブロックとし、その1ブロックを1画素と対応するように、各ブロックの画素のエネルギーの平均や中央値を求めて、エネルギーマップを構成することで縮小画像エネルギーマップを生成する。すなわち、縮小画像エネルギーマップは、入力画像に対して、m画素×n画素を1ブロックとし、その1ブロックを1画素と対応するように生成された縮小画像のエネルギーマップとして求められる。
【0043】
探索部115は、縮小画像エネルギーマップ記憶部114より縮小画像エネルギーマップを読み出し、縮小画像の一方の端部より他方の端部まで順次隣接する画素を選択経路として選択し、選択経路の画素のエネルギーの積算値が最小となるように縮小シームを探索する。この際、探索部115は、後述するダイナミックプログラミング法、またはグリーディ法により縮小シームを探索する。また、探索部115は、一旦求めた縮小シームに属する画素のエネルギーを、エネルギー最大値に置換し、順次所定数の部分シームが求められるまで、同様の処理を繰り返す。
【0044】
ここでいう、一方の端部より他方の端部まで順次隣接する画素からなる経路とは、例えば、縮小画像の上方端部のいずれかの画素に対して、右下、真下、および左下に隣接する3画素のいずれかが選択され、選択された画素に同様に隣接する3画素のいずれかが選択されるといったことが順次繰り返されて、下方端部のいずれかの画素にまで順次選択される画素が結ばれることにより構成される経路である。従って、一方の端部が縮小画像の左端部であり、他方の端部が右端部である場合、左端部のいずれかの画素に対して、右上、真右、および右下に隣接する3画素のいずれかが選択され、選択された画素に同様に隣接する3画素のいずれかが選択されるといったことが順次繰り返されて、右端部のいずれかの画素にまで順次選択される画素が結ばれることにより構成される経路となる。また、以降においては、縮小画像における上方端部から下方端部に縮小シームが探索されるとき、探索方向を下方向と称するものとし、同様に、左端部から右端部に縮小シームが探索されるとき、探索方向を右方向と称するものとする。さらに、注目画素が設定される場合、注目画素に対して探索方向に隣接する画素とは、探索方向が垂直方向のとき、注目画素に対して、右上、真上、および左上に隣接する3画素、または右下、真下、および左下に隣接する3画素を表すものとする。同様に、探索方向が水平方向のとき、注目画素に対して、左上、真左、および左下に隣接する3画素、または右上、真右、および右下に隣接する3画素を表すものとする。
【0045】
さらに、探索部115は、縮小画像エネルギーマップで検索された縮小シームを構成する縮小画像の画素に対応するブロックに属する、入力画像の端部の画素より順次隣接する画素のうち最小のエネルギーとなる画素を順次注目画素を設定する。そして、探索部115は、順次設定された注目画素を結ぶことにより部分シームを探索する。このとき、探索部115は、後述するグリーディ法により部分シームを探索する。この際、探索部115は、一旦求めた入力画像の部分シームに属する画素に対応するエネルギーを、エネルギー最大値に置換して、順次所定数の部分シームが求めれらるまで、同様の処理を繰り返し、複数の部分シームを求める。
【0046】
加工部116は、画像取得部111より供給されてくる画像より、探索部115より求められた部分シームに対応する画素を削除(、または同様の画素を付加)することにより、画像を縮小(、または拡大)し、加工処理した後、表示部2に出力して表示させる。
【0047】
[探索部の構成例]
次に、図5を参照して、探索部115の詳細な構成例について説明する。
【0048】
探索部115は、全画像探索部131、および部分画像探索部132より構成されている。全画像探索部131は、縮小画像エネルギーマップより、縮小画像における縮小シームを求めて、部分画像探索部132に供給する。部分画像探索部132は、全画像探索部131より供給されてきた縮小シームの情報に基づいて、入力画像エネルギーマップより部分シームを求め加工部116に出力する。
【0049】
まず、全画像探索部131の構成について説明する。全画像探索部131は、縮小画像エネルギーマップバッファ151、積算エネルギーマップ生成部152、積算エネルギーマップ記憶部153、縮小シーム決定部154、およびエネルギー最大値挿入部155を備えている。縮小画像エネルギーマップバッファ151は、縮小画像エネルギーマップ記憶部114に記憶されている縮小画像エネルギーマップを読み出して一旦記憶する。また、縮小画像エネルギーマップバッファ151は、縮小シームに属する画素のエネルギーがエネルギー最大値挿入部155より挿入されるエネルギー最大値で置換され、縮小画像エネルギーマップが更新されると、更新された縮小画像エネルギーマップを記憶する。
【0050】
積算エネルギーマップ生成部152は、以下の式(2)で示される計算を実行することにより、順次設定される注目画素に対して、縮小画像エネルギーマップの探索方向に対して逆方向に隣接する画素のエネルギーを順次積算し、積算エネルギーとして求める。
【0051】

【0052】
ここで、M(i,j)は、注目画素(i,j)における、それまでに順次設定された注目画素の積算エネルギーを示している。また、e(i,j)は、注目画素(i,j)のエネルギーを示している。min(A,B,C)は、A乃至Cの値のうち最小値を選択することを示している。
【0053】
すなわち、積算エネルギーマップ生成部152は、注目画素(i,j)において、注目画素(i,j)に対して、縮小シームの探索方向と逆方向に隣接する画素(i−1,j−1),(i−1,j),(i−1,j+1)の積算エネルギーM(i−1,j−1),M(i−1,j),M(i−1,j+1)のうち最小のものを選択し、注目画素のエネルギーと加算して、注目画素の積算エネルギーを算出する。積算エネルギーマップ生成部152は、同様の処理を順次繰り返すことにより、縮小画像エネルギーマップの積算エネルギーマップを生成し、積算エネルギーマップ記憶部153に記憶させる。尚、式(2)においては、入力画像に対して垂直方向に上方端部から下方端部の方向に向かう縮小シームを探索する場合の例が記載されている。このため、縮小シームの探索方向に対応して、式(2)は変化するものである。
【0054】
縮小シーム決定部154は、積算エネルギーマップ記憶部153に記憶されている積算エネルギーマップの情報に基づいて、縮小画像の一方の端部の各画素より選択経路として選択された画素のエネルギーの積算値が順次最小となるように縮小シームを探索する。そして、縮小シーム決定部154は、積算エネルギーが最小となる画素を順次結ぶ経路を縮小シームに決定し、部分画像探索部132に供給する。さらに、縮小シーム決定部154は、決定した縮小シームの情報をエネルギー最大値挿入部155に供給する。
【0055】
エネルギー最大値挿入部155は、縮小エネルギーマップバッファ151に記憶されている縮小エネルギーマップの各画素のエネルギーのうち、縮小シームに属する画素のエネルギーにエネルギー最大値を挿入することで更新する。すなわち、エネルギーは、何らかの有限の数値により表現されるが、その最大値で表現される場合は稀であり、事実上、その画素が縮小シームを構成する画素として選択されたことを示すために、実態と異なるエネルギー最大値が挿入される。
【0056】
次に、部分画像探索部132の構成について説明する。部分画像探索部132は、入力画像エネルギーマップバッファ171、隣接エネルギー比較部172、非隣接エネルギー比較部173、選択経路設定部174、選択経路記憶部175、部分シーム決定部176、および部分シーム記憶部177を備える。また、部分画像探索部132は、積算エネルギー閾値判定部178、ブロック内部分シーム本数判定部179、出力部180、およびエネルギー最大値挿入部181を備えている。
【0057】
入力画像エネルギーマップバッファ171は、入力画像エネルギー記憶部13に記憶されている入力画像エネルギーマップの情報を読み出して、一旦記憶する。また、入力画像エネルギーマップバッファ171は、エネルギー最大値挿入部181により、求められた部分シームに属する画素のエネルギーに、エネルギー最大値が挿入されて置換された、入力画像エネルギーマップを更新して記憶する。
【0058】
隣接エネルギー比較部172は、全画像探索部131より供給されてくる縮小シームを構成するブロックのうち、一方の端部のブロックに属する入力画像の画素のうち、一方の端部の画素より順次注目画素を設定する。さらに、隣接エネルギー比較部172は、順次設定される注目画素と、探索方向に隣接する画素のエネルギーとエネルギー最大値とを比較し、隣接する画素のエネルギーの全てがエネルギー最大値のみとなっているか否かを判定する。そして、隣接エネルギー比較部172は、判定結果に応じて、全てがエネルギー最大値であるとき判定結果を非隣接エネルギー比較部173に供給する。また、隣接エネルギー比較部172は、全てがエネルギー最大値ではないとき、隣接画素の情報を選択経路設定部174に供給する。
【0059】
非隣接エネルギー比較部173は、隣接エネルギー比較部172の判定結果により、注目画素に隣接する全ての画素がエネルギー最大値である場合、注目画素の位置に応じて、注目画素に隣接していない画素を、隣接画素として選択し、選択経路設定部174に供給する。すなわち、非隣接エネルギー比較部173は、注目画素に隣接していないが、注目画素に隣接した画素に、さらに隣接している複数の画素を隣接画素として選択する。
【0060】
選択経路設定部174は、入力画像マップバッファ71に記憶されている入力画像マップの情報、および非隣接エネルギー比較部173から供給されてくる隣接画素として設定された画素の情報に基づいて、縮小シームに属する入力画像の画素のうち、縮小シームの一方の端部から他方の端部への方向に隣接する画素のうち、エネルギーが最小となる画素を順次選択方向として設定し、選択経路記憶部175に記憶させる。
【0061】
部分シーム決定部176は、選択経路記憶部175に記憶されている、縮小シームに属する入力画像の一方の端部の各画素より、選択経路記憶部175に記憶されている選択方向に存在する画素の積算エネルギーが最小となる経路を部分シームとして決定する。部分シーム決定部176は、決定した部分シームの情報を部分シーム記憶部177に記憶させる。
【0062】
積算エネルギー閾値判定部178は、部分シーム記憶部177に記憶されている最近生成された部分シームの積算エネルギーが所定の閾値よりも小さいか否かを判定する。そして、積算エネルギー閾値判定部178は、最近生成された部分シームの積算エネルギーが所定の閾値よりも小さい場合、エネルギー最大値挿入部181に通知する。さらに、積算エネルギー閾値判定部178は、入力画像エネルギーマップに新たに記憶された部分シームに属する画素のエネルギーにエネルギー最大値を挿入させて更新させると共に、新たに部分シームを探索させる。
【0063】
一方、最近生成された部分シームの積算エネルギーが所定の閾値よりも小さくない場合、
積算エネルギー閾値判定部178は、出力部180にその旨通知し、出力部180より部分シーム記憶部177に記憶されている部分シームの情報を加工部116に出力させる。
【0064】
ブロック内部分シーム本数判定部179は、今現在の部分シーム本数が、縮小シームが求められた縮小画像を構成する画素からなる縮小ブロック単位で予め設定される本数となったか否かを判定する。そして、ブロック内部分シーム本数判定部179は、今現在の部分シーム本数が、予め設定された本数となった場合、全画像探索部131に対して新たな縮小シームを探索するように通知する。
【0065】
[画像サイズ変更処理]
次に、図6のフローチャートを参照して、画像サイズ変更処理について説明する。
【0066】
ステップS11において、画像クロップ部21は、画像クロップ処理を実行し、例えば、図7で示されるような入力画像P0より、被写体を包含する領域からなるクロップ画像P0’として切り取る。そして、画像クロップ部21は、切り取ったクロップ画像P0’をオブジェクト適応型サイズ変更部22、およびクロップサイズ判定部23に出力する。尚、画像クロップ処理について、図8のフローチャートを参照して、詳細を後述する。
【0067】
ステップS12において、クロップサイズ判定部23は、画像クロップ部21より供給されてきたクロップ画像が、表示部12において表示するのに適切なサイズに縮小されているか否かを判定する。ステップS12において、クロップ画像が、表示部12において表示するのに適切なサイズに縮小されていないと判定された場合、処理は、ステップS13に進む。
【0068】
ステップS13において、クロップサイズ判定部23は、オブジェクト適応型サイズ変更部22を制御して、オブジェクト適応型サイズ変更処理を実行させて、クロップ画像を、クロップ画像内のオブジェクトである被写体の配置に基づいて縮小させる。すなわち、オブジェクト適応型サイズ変更部22は、クロップ画像内の被写体であるオブジェクトの大きさを変更せずに、画像サイズを縮小させる。そして、オブジェクト適応型サイズ変更部22は、縮小したクロップ画像を画像サイズ調整部24、および変更画像サイズ判定部25に供給する。尚、オブジェクト適応型サイズ変更処理については、図13のフローチャートを参照して、詳細を後述する。
【0069】
ステップS14において、変更画像サイズ判定部25は、オブジェクト適応型サイズ変更部22により縮小されたクロップ画像のサイズが、表示部12において表示するのに適切なサイズに縮小されているか否かを判定する。ステップS14において、適切なサイズに変更されていないと判定された場合、処理は、ステップS15に進む。
【0070】
ステップS15において、変更画像サイズ判定部25は、画像サイズ調整部24を制御して、縮小されたクロップ画像を、従来のように、水平方向、および垂直方向に対して表示部12に適切なサイズに縮小するように調整させ出力部26に出力させる。
【0071】
ステップS16において、出力部26は、表示部12に縮小された画像を出力して、表示させる。
【0072】
一方、ステップS12において、クロップ画像のサイズが、表示部12が表示するのに適している場合、ステップS17において、クロップサイズ判定部23は、供給されてきたクロップ画像をそのまま出力部26に出力する。また、ステップS14において、オブジェクト適応型サイズ変更部22によりクロップ画像内の被写体の位置に応じて被写体の大きさを変えずに画像サイズが変更された画像が表示部12の表示に適したサイズに縮小されていた場合、処理は、ステップS17に進む。すなわち、いずれにおいても、クロップ画像、または縮小されたクロップ画像が出力部26に出力されて、表示部12に表示される。
【0073】
すなわち、原則としてクロップ画像が表示部12に出力される画像として求められ、クロップ画像が表示部12に適していない場合、オブジェクト適応型サイズ変更部22が、オブジェクトの大きさを変えずにクロップ画像のサイズを縮小する。そして、オブジェクトの大きさを変えずに縮小されたクロップ画像が、表示部12に適していない場合、従来通りの手法で縮小するようにした。
【0074】
すなわち、クロップ画像、および縮小クロップ画像のいずれにおいてもオブジェクトの大きさが変更されることなく、優先的にサイズが縮小された画像が表示部12に表示される画像として候補に選ばれるようにした。このように、できるだけ被写体であるオブジェクトのサイズが小さくならない画像が優先的に表示部12に表示される画像として候補に選ばれるようにした。また、それでも表示できない場合には、従来の手法により画像が縮小されるので、表示部12のサイズには確実に表示されるようにした。
【0075】
結果として、被写体であるオブジェクトができるだけ小さくならない画像が表示部12に表示され易くなる。
【0076】
[画像クロップ処理]
次に、図8のフローチャートを参照して、画像クロップ処理について説明する。
【0077】
ステップS31において、被写体領域検出部41は、被写体領域検出処理を実行し、入力された画像から、被写体であるオブジェクトの存在する領域を検出し、被写体領域包含範囲探索部42に供給する。
【0078】
[被写体領域検出処理]
ここで、図9のフローチャートを参照して、被写体領域検出処理について説明する。
【0079】
ステップS51において、輝度情報抽出部61は、供給された入力画像に基づいて輝度情報マップを生成し、被写体マップ生成部66に供給する。そして、ステップS52において、色情報抽出部62は、供給された入力画像に基づいて色情報マップを生成し、被写体マップ生成部66に供給する。
【0080】
ステップS53において、エッジ情報抽出部63は、供給された入力画像に基づいてエッジ情報マップを生成し、被写体マップ生成部66に供給する。また、ステップS54において、被写体情報抽出部64は、供給された入力画像に基づいて被写体情報マップを生成し、被写体マップ生成部66に供給する。さらに、ステップS55において、動き情報抽出部65は、動き情報抽出処理を行って、供給された入力画像に基づいて動き情報マップを生成し、被写体マップ生成部66に供給する。
【0081】
ステップS56において、被写体マップ生成部66は、輝度情報抽出部61乃至動き情報抽出部65から供給された輝度情報マップ乃至動き情報マップを重み付き加算して被写体マップを生成し、被写体領域特定部67に供給する。
【0082】
例えば、被写体マップ生成部66は、情報マップごとに予め求められている重みである、情報重みWbを用いて各情報マップを線形結合する。つまり、線形結合により得られる情報マップの所定の画素を注目画素とすると、注目画素の画素値は、注目画素と同じ位置にある各情報マップの画素の画素値に、情報マップごとの情報重みWbを乗算して得られた値の総和とされる。
【0083】
次に、被写体マップ生成部66は、線形結合により得られた情報マップ(以下、線形結合情報マップとも称する)の各画素の画素値に、シグモイド関数による演算処理を施す。
【0084】
より詳細には、被写体マップ生成部66は、シグモイド関数をテーブル化して得られた変換テーブルを予め保持している。この変換テーブルは、入力としての所定の値と、その値をシグモイド関数に代入して得られる出力値とからなり、変換テーブルにより線形結合情報マップを変換すれば、シグモイド関数により線形結合情報マップを変換した場合と同様の情報マップが得られる。
【0085】
例えば、シグモイド関数は、以下の式(3)に示す双曲線余弦関数(ハイパボリックタンジェント関数)とされる。
【0086】
f(x)=a×tanh(x×b) ・・・(3)
【0087】
なお、式(3)において、aおよびbは、予め定められた定数を示しており、xは、これから変換しようとする線形結合情報マップの画素の画素値とされる。
【0088】
このような双曲線余弦関数がシグモイド関数とされる場合、変換テーブルは、入力値xの範囲を−2から2までの範囲に制限し、入力値xを1/128単位で離散化して得られたテーブルとされる。このような変換テーブルでは、入力値xが−2より小さい場合には、その入力値xが−2であるとして扱われ、入力値xが2より大きい場合には、その入力値xが2であるとして扱われる。さらに、変換テーブルでは、入力値xが大きくなるほど、出力値f(x)が大きくなる。
【0089】
被写体マップ生成部66は、線形結合情報マップの画素の画素値を、その画素値x(入力値x)から、画素値xに対応する出力値f(x)に変更することにより、線形結合情報マップを変換する。すなわち、被写体マップ生成部66は、変換テーブルを用いて変換された線形結合情報マップを、シグモイド関数による演算処理が施された線形結合情報マップとする。
【0090】
このように、変換テーブルを用いて線形結合情報マップを変換することにより、シグモイド関数自体を用いて変換する場合と比べて、より簡単かつ迅速に線形結合情報マップの変換を行うことができる。
【0091】
さらに、被写体マップ生成部66は、変換テーブルで変換された線形結合情報マップの各画素の画素値に、画素ごとに予め求められた重みである、被写体重みWcを乗算し、被写体マップとする。
【0092】
すなわち、これから求めようとする被写体マップ上の注目する画素を注目画素とすると、変換された線形結合情報マップの注目画素と同じ位置の画素の画素値に、被写体重みWcが乗算された値が、注目画素の画素値とされる。
【0093】
なお、より詳細には、被写体マップの生成に用いられる色情報マップとして、Crの色情報マップと、Cbの色情報マップとが用いられ、エッジ情報マップとして、0度、45度、90度、135度のそれぞれの方向のエッジ情報マップが用いられる。また、情報重みWbおよび被写体重みWcは、予め学習により求められている。
【0094】
このようにして被写体マップが生成されると、被写体マップは、被写体マップ生成部66から被写体領域特定部67に供給され、処理はステップS57に進む。
【0095】
ステップS57において、被写体領域特定部67は、被写体マップ生成部66から供給された被写体マップを用いて、供給された入力画像上の被写体の領域を特定する。
【0096】
例えば、被写体マップの画素の画素値が大きいほど、その画素と同じ位置の入力画像の画素の領域が、被写体の領域らしいとされるものとする。この場合、被写体領域特定部67は、被写体マップ上において、予め定められた閾値以上の画素値を有する、互いに隣接する画素からなり、所定の面積(画素数)以上の領域を検出し、検出された領域に対応する入力画像上の領域が被写体の含まれる領域であるとする。
【0097】
被写体領域特定部67は、入力画像上の被写体の含まれる領域を検出すると、その検出結果を後段に出力して、被写体領域特定処理は終了する。
【0098】
以上のようにして、入力画像から被写体マップが生成され、被写体マップが用いられて、入力画像における被写体の領域が特定される。
【0099】
ここで、図8のフローチャートの説明に戻る。
【0100】
ステップS32において、被写体領域包含範囲探索部42は、被写体領域を包含する範囲を探索し、探索結果を被写体領域包含範囲矩形化部43に供給する。すなわち、例えば、図10で示されるように、入力画像のうち、黒色のマスで示されるように被写体領域が検出されている場合、被写体領域包含範囲探索部42は、斜線部で示されるように、黒色のマスで示される被写体領域を全て包含する範囲を探索する。
【0101】
ステップS33において、被写体領域包含範囲矩形化部43は、被写体領域包含範囲探索部42により探索された被写体領域の全てを包含する範囲を矩形化して矩形状の画像を生成し、追加領域付加部44に供給する。
【0102】
ステップS34において、追加領域付加部44は、矩形化された被写体領域包含範囲の外周部に所定の幅で構成される追加領域を付加し、画像切出部45に供給する。すなわち、例えば、被写体領域包含範囲が、図10の斜線部で示される範囲である場合、追加領域付加部44は、図10において格子部で示されるような所定の幅を持った追加領域を被写体領域包含範囲の外周部に付加する。尚、この所定の幅は被写体マップを算出する際、入力画像の縮小率に基づいて決定するようにしてもよい。
【0103】
ステップS35において、画像切出部45は、被写体領域包含範囲および追加領域からなる範囲を、入力画像より切り出して、クロップ画像を生成し、出力する。すなわち、画像切出部45は、図10における最外周部の実線で示される入力画像のうち、格子部で囲まれた被写体領域包含範囲および追加領域からなる範囲を、切り出してクロップ画像を生成する。
【0104】
以上の処理により、例えば、図11の上部で示されるような、人物が自転車に乗っているような入力画像の場合、図11の下部で示されるような被写体領域が検出される。すなわち、図11の上部においては、自転車と、人物が被写体としてのオブジェクトと認識されるので、画像内における中央付近に人物からなる被写体領域が検出される。従来の手法において、図11の下部で示される被写体領域をそのまま用いて、被写体領域であることを示す画素値を持った領域だけを入力画像から切り出すと、被写体である人物の辺縁部が切断されてしまうことがあった。すなわち、例えば、図12の上部で示されるように、被写体である人物の頭の部分などが切断された状態で切り出されてしまうことがあった。
【0105】
しかしながら、以上のように被写体領域包含範囲に対して、所定の幅の追加領域が付加されることにより、図12の下部で示されるように、被写体である人物の頭の部分などが確実に切り出されている。
【0106】
すなわち、被写体検出処理においても、被写体の辺縁部については、検出が確実にされない部分が発生する恐れがあるため、その範囲をカバーするべく、追加領域が付加されることにより、確実に被写体を切り出すことが可能となる。
【0107】
[オブジェクト適応型サイズ変更処理]
次に、図13のフローチャートを参照して、オブジェクト適応型サイズ変更処理について説明する。
【0108】
ステップS111において、画像取得部111は、入力画像を取得し、取得した入力画像をエネルギーマップ生成部112、および加工部116に供給する。
【0109】
ステップS112において、エネルギーマップ生成部112は、エネルギー算出部121を制御して、入力画像の各画素の画素値、または輝度値などに基づいて、上述した式(1)を算出することにより、各画素のエネルギーを算出させる。さらに、エネルギーマップ生成部112は、エネルギー算出部121を制御して、各画素単位で算出されたエネルギーの値より入力画像エネルギーマップを生成させ、入力画像エネルギーマップ記憶部113に記憶させると共に、縮小部122に供給させる。
【0110】
ステップS113において、エネルギーマップ生成部112は、縮小部122を制御してエネルギーマップを縮小画像のサイズに処理させることにより、縮小画像エネルギーマップを生成させ、縮小画像エネルギーマップ記憶部114に記憶させる。より詳細には、縮小部122は、入力画像エネルギーマップを、例えば、m画素×n画素単位でブロック化し、その各ブロックを構成する各画素のエネルギーの平均値や中央値などを、縮小画像の各画素に対応するエネルギーとする縮小画像エネルギーマップを生成する。尚、この例においては、縮小画像に対応するエネルギーマップを縮小画像エネルギーマップと称するものとしているが、縮小画像エネルギーマップは、入力画像エネルギーマップを低解像度化したエネルギーマップと同様のものである。
【0111】
ステップS114において、探索部115は、入力画像エネルギーマップ記憶部113の入力画像エネルギーマップ、および縮小画像エネルギーマップ記憶部114の縮小画像エネルギーマップに基づいて、探索処理を実行し、所定数の部分シームを探索する。すなわち、探索部115は、入力画像の水平方向(x方向)、または垂直方向(y方向)に対して、隣接する画素より構成される経路のうち、画素値、または輝度値の変化が小さい経路を、所定数だけ部分シームとして探索し、その情報を加工部116に供給する。そして、探索部115は、探索した所定数の部分シームの情報を加工部116に供給する。尚、探索処理については、図14のフローチャートを参照して、後述するものとする。
【0112】
ステップS115において、加工部116は、部分シームの情報に基づいて、入力画像より部分シームを構成する画素を削除し、削除した領域を詰めることにより、画像を縮小させる。
【0113】
ステップS116において、加工部116は、入力画像に対して加工処理した画像を表示部2に出力して表示させる。
【0114】
以上の処理により、まず、入力画像において、画素間の画素値、または輝度値の変化の少ない(エネルギーの積算値である積算エネルギーが最小となる)隣接する画素により構成される部分シームが求められる。そして、求められた部分シームを構成する画素が、入力画像より削除される。これにより入力画像が縮小される加工処理が実現されるので、画像内における主だったオブジェクトの大きさを変更することなく、入力画像の全体の大きさを変化させることが可能となる。尚、オブジェクト適応型サイズ変更処理については、従来のシームカービングを用いるようにしてもよい。
【0115】
[探索処理]
次に、図14のフローチャートを参照して、探索処理について説明する。
【0116】
探索処理は、ステップS131において、縮小画像エネルギーマップが用いられて全画像探索処理がなされることにより、縮小画像における縮小シームが求められる。そして縮小シームが求められると、ステップS132において、全画像探索処理の探索結果である縮小シームに基づいて、部分画像探索処理が実行されて、入力画像に対する部分シームが求められる。
【0117】
[全画像探索処理]
ここで、図15のフローチャートを参照して、縮小画像エネルギーマップを用いた全画像探索処理について説明する。尚、図15のフローチャートにおいては、方形状の画像のうち、上方端部の画素と、下方端部の画素とを隣接する画素間で順次結ぶ縮小シームを求める例について説明する。このように求められる垂直方向の端部を結ぶ縮小シームは、縮小画像の水平方向に対して、縮小するために求められるものである。従って、縮小画像の垂直方向に対しての縮小に際しては、水平方向の端部同士、すなわち、左端部の画素と右端部の画素とを隣接する画素間で順次結ぶことにより得られる縮小シームを同様の処理で求める必要がある。
【0118】
ステップS151において、縮小画像エネルギーマップバッファ151は、縮小画像エネルギーマップ記憶部114より縮小画像エネルギーマップを読み出し、一時的に記憶する。
【0119】
ステップS152において、積算エネルギーマップ生成部152は、縮小画像エネルギーマップにおける注目画素(x,y)を(0,1)に設定し、初期化する。尚、ここで設定される座標は、縮小画像の左上端部の画素を原点(0,0)とし、水平方向のx座標は右方向を正とするものとし、垂直方向のy座標は下方向を正とするものとする。
【0120】
ステップS153において、積算エネルギーマップ生成部152は、注目画素(x,y)のy座標が縮小画像の垂直方向の高さ(height)より小さいか否かを判定する。ステップS53において、例えば、最初の処理の場合、y座標は、縮小画像の垂直方向の高さになっていないので、処理は、ステップS154に進む。
【0121】
ステップS154において、積算エネルギーマップ生成部152は、注目画素(x,y)のx座標が縮小画像の水平方向の幅(width)よりも小さいか否かを判定する。ステップS154において、注目画素(x,y)のx座標が縮小画像の水平方向の幅(width)よりも小さい場合、処理は、ステップS155に進む。
【0122】
ステップS155において、積算エネルギーマップ生成部152は、縮小画像エネルギーマップにおける注目画素(x,y)の左上(x−1,y+1)、真上(x,y+1)、および右上(x+1,y+1)のエネルギーのうち、最小となる積算エネルギーを持つ画素を選択する。積算エネルギーマップ生成部152は、選択した画素の積算エネルギーと注目画素のエネルギーとを加算して、注目画素の積算エネルギーを求める。
【0123】
ステップS156において、積算エネルギーマップ生成部152は、求めた積算エネルギーを注目画素の積算エネルギーとして、積算エネルギーマップ記憶部153に記憶させる。尚、注目画素が、上端部より1画素下の場合、上端部の画素のエネルギーそのものが積算エネルギーとして利用される。
【0124】
ステップS157において、積算エネルギーマップ生成部152は、注目画素(x,y)のx座標を1インクリメントして、処理は、ステップS154に戻る。そして、ステップS154において、注目画素(x,y)のx座標が縮小画像の水平方向の幅(width)よりも小さくない、すなわち、水平方向について全ての処理が終了した場合、処理は、ステップS158に進む。
【0125】
ステップS158において、積算エネルギーマップ生成部152は、注目画素(x,y)のy座標を1インクリメントし、処理は、ステップS153に戻る。すなわち、ステップS153乃至S158の処理が繰り返されることにより、縮小画像の各画素について探索方向と逆方向に隣接する3画素の積算エネルギーのうち、最小となる積算エネルギーを持つ画素が選択される。そして、選択された積算エネルギーと各画素のエネルギーとが順次積算されて、積算エネルギーマップが生成され、積算エネルギーマップ記憶部153に記憶されていく。
【0126】
より具体的には、例えば、図16の左上部で示されるような3画素×3画素の縮小画像エネルギーマップを考える場合、処理は以下のようにされることになる。尚、図16の左上部の縮小画像エネルギーマップのエネルギーは、上段は左から右に向かって、1,2,3であり、中段は左から右に向かって6,2,4であり、下段は左から右に向かって、2,3,1に設定されている。
【0127】
ステップS152の処理により、最初の注目画素(x,y)は、(0,1)のエネルギーが6の画素となる。そして、この注目画素(0,1)は、左端部の画素であるので、ステップS155の処理により、真上の画素(0,0)の画素のエネルギー1と、右上の画素(1,0)の画素のエネルギー2との2画素のうち最小となる積算エネルギーの画素(0,0)が選択される。そして、図6の左下部で示されるように、積算エネルギーマップ生成部152は、この選択された画素(0,0)のエネルギー1(ここでは積算エネルギーとして扱われる)と、注目画素(x,y)のエネルギー6の積算値7を積算エネルギーマップの注目画素(x,y)=(0,1)における積算エネルギーとして積算エネルギーマップ記憶部153に記憶させる。
【0128】
ステップS157の処理により、注目画素(x,y)のx座標が1インクリメントされて、エネルギーが注目画素(x,y)は、(1,1)のエネルギーが2の画素となる。そして、この注目画素(1,1)は、ステップS155の処理により、左上の画素(0,0)のエネルギー1、真上の画素(1,0)の画素のエネルギー2と、右上の画素(2,0)の画素のエネルギー3との3画素のうち最小となる積算エネルギーの画素(0,0)が選択される。そして、図16の中央下部で示されるように、積算エネルギーマップ生成部152は、この選択された画素(0,0)のエネルギー1と、注目画素(x,y)のエネルギー2の積算値3を積算エネルギーマップの注目画素(x,y)=(1,1)における積算エネルギーとして積算エネルギーマップ記憶部153に記憶させる。
【0129】
さらに、ステップS157の処理により、注目画素(x,y)のx座標がさらに1インクリメントされて、エネルギーが注目画素(x,y)は、(2,1)のエネルギーが4の画素となる。そして、この注目画素(2,1)は、縮小画像の右端部の画素であるので、ステップS155の処理により、左上の画素(1,0)のエネルギー1、真上の画素(2,0)の画素のエネルギー3との2画素のうち最小となるエネルギーの画素(2,0)が選択される。そして、図16の右下部で示されるように、積算エネルギーマップ生成部152は、この選択された画素(1,0)のエネルギー2と、注目画素(x,y)のエネルギー4の積算値6を積算エネルギーマップの注目画素(x,y)=(2,1)における積算エネルギーとして積算エネルギーマップ記憶部153に記憶させる。
【0130】
この結果、2段目の積算エネルギーマップにおける中段の積算エネルギーは、図17の右上部のように左から7,3,6となる。このとき、注目画素(x,y)のx座標は、縮小画像の水平方向の幅(width=2)より小さくないので、ステップS158において、y座標が1インクリメントされることにより、縮小画像における下段の各画素が順次注目画素に設定される。尚、図17の左上部は、縮小画像エネルギーマップが示されている。
【0131】
上述した処理と同様の処理により、注目画素(x,y)が、(0,2)の場合、積算エネルギーマップに基づいて、真上の画素(0,1)の積算エネルギーが7であり、右上の画素(1,1)の積算エネルギーが3となる。このため、最小である積算エネルギー3の右上の画素(1,1)が選択されて、積算エネルギー3と、注目画素(x,y)=(0,2)のエネルギー2とが積算されて、注目画素(x,y)=(0,2)の積算エネルギーが5とされて、積算エネルギーマップに登録される。
【0132】
また、注目画素(x,y)が画素(1,2)である場合、積算エネルギーマップに基づいて、左上の画素(0,1)の積算エネルギーが7であり、真上の画素(1,1)の積算エネルギーが3であり、右上の画素(2,1)の積算エネルギーが6となる。このため、最小である積算エネルギー3の真上の画素(1,1)が選択されて、積算エネルギー3と、注目画素(x,y)=(1,2)のエネルギー3とが積算されて、注目画素(x,y)=(1,2)の積算エネルギーが6とされて、積算エネルギーマップに登録される。
【0133】
さらに、注目画素(x,y)が画素(2,2)である場合、積算エネルギーマップに基づいて、左上の画素(1,1)の積算エネルギーが3であり、真上の画素(2,1)の積算エネルギーが6となる。このため、最小である積算エネルギー3の左上の画素(1,1)が選択されて、積算エネルギー3と、注目画素(x,y)=(2,2)のエネルギー1とが積算されて、注目画素(x,y)=(2,2)の積算エネルギーが4とされて、積算エネルギーマップに登録される。
【0134】
この結果、積算エネルギーマップは、図18の右上部で示されるように構成され、下段の積算エネルギーは、左から5,6,4となる。尚、図18の左上部は、縮小画像エネルギーマップが示されている。
【0135】
このように、ステップS53乃至S58の処理が繰り返されることにより、例えば、図18の左上部で示されるような縮小画像エネルギーマップが得られた場合、図18の右上部で示されるような積算エネルギーマップが求められて、積算エネルギーマップ記憶部153に記憶されることになる。
【0136】
ここで、図15のフローチャートの説明に戻る。
【0137】
ステップS153において、注目画素(x,y)のy座標が縮小画像の垂直方向の高さよりも小さくないと判定された場合、すなわち、上述したように積算エネルギーマップが完成されて、積算エネルギーマップ記憶部153に記憶されたとみなされた場合、処理は、ステップS159に進む。
【0138】
ステップS159において、縮小シーム決定部154は、積算エネルギーマップ記憶部153に記憶されている積算エネルギーマップを読み出し、積算エネルギーが最小となる最下段の画素を検索し、縮小シームの端部を下方の端部とする。さらに、縮小シーム決定部154は、縮小シームの下方の端部の画素より順次、上方に隣接する画素、すなわち、右上、真上、および左上に隣接する画素のうち、積算エネルギーが最小となる画素を順次上方に向かって探索する処理を繰り返し、上段の端部の画素まで探索する。そして、縮小シーム決定部154は、順次探索された画素を結ぶ経路を縮小シームとして決定し、その情報を部分画像探索部132に供給すると共にエネルギー最大値挿入部155に供給する。
【0139】
すなわち、図18の右上部の積算エネルギーマップの場合、最下段における積算エネルギーの最小値は、図18の丸印で示される積算エネルギーが4であって、エネルギーが1の画素(2,2)である。すなわち、この画素(2,2)が縮小シームの下方の端部となる。そして、この画素(2,2)からみて、上方に隣接する画素(2,1),(1,1)のうち、積算エネルギーの最小値は、積算エネルギーが3であって、エネルギーが2の画素(1,1)である。さらに、この画素(1,1)からみて、上方に隣接する画素(0,0),(1,0),(2,0)のうち、積算エネルギーの最小値は、積算エネルギーが1であって、エネルギーが1の画素(0,0)である。
【0140】
すなわち、下方の端部である画素(2,2)より上方の端部である画素(0,0)まで順次探索された画素(2,2),(1,1),(0,0)の経路は、順次積算されるエネルギーが最小となる。したがって、この画素(2,2),(1,1),(0,0)から構成される経路は、隣接する画素間の画素値、または輝度値の変化が最小となる縮小画像上の経路、すなわち、縮小シームを構成していることになる。このため、縮小シーム決定部154は、これらの探索された画素の座標の情報に基づいて構成される経路を縮小シームに決定する。
【0141】
ステップS160において、エネルギー最大値挿入部155は、縮小画像エネルギーマップバッファ151に記憶されている縮小画像エネルギーマップを読み出し、縮小シーム決定部154で決定された縮小シームを構成する各画素のエネルギーに最大値を挿入して更新する。この結果、最大値からなる画素については、以降の処理において縮小シームを構成する画素として選択され難い画素とすることが可能となる。結果として、複数に縮小シームが選択されるような場合においても、縮小シームが交差するなどして、同一の画素が、複数の縮小シームに含まれることが抑制され、縮小シームに属する画素を削除するときに、画素ずれが生じることを抑制することが可能となる。
【0142】
尚、図15のフローチャートを参照して説明した処理により縮小シームを求める手法は、一般にダイナミックプログラミング法と呼ばれる手法であるが、縮小シームは、後述するグリーディ法により求めるようにしてもよい。
【0143】
[部分探索処理]
次に、図19のフローチャートを参照して、部分画像探索処理について説明する。
【0144】
ステップS171において、隣接エネルギー比較部172は、上述した全画像探索処理により縮小画像エネルギーマップに基づいて求められた縮小シームに基づいて、入力画像上の端部の画素の座標を取得する。すなわち、縮小シームは、入力画像上の複数の画素(例えば、m画素×n画素)からなるブロックを1画素とした縮小画像、すなわち低解像度画像に基づいて求められたものである。したがって、求められた縮小シームを構成する縮小画像上の画素は、入力画像においては、複数の画素からなるブロックに対応するものである。そこで、隣接エネルギー比較部172は、縮小シームを構成する画素(ブロック)の、入力画像上の水平方向の一方の端部の画素の座標(X,Y)を求める。尚、他方の端部の座標については、ブロックサイズがわかっているため、例えば、水平方向の座標としては、(X+m)として求めることが可能である。
【0145】
ステップS172において、入力画像エネルギーマップバッファ171は、入力画像エネルギーマップ記憶部113に記憶されている入力画像エネルギーマップを読み出して、一旦記憶する。
【0146】
ステップS173において、隣接エネルギー比較部172は、部分シームの候補の起点画素(xs,ys)を縮小シームの端部の座標に基づいて、画素(X,0)に設定する。
【0147】
ステップS174において、隣接エネルギー比較部172は、起点画素(xs,ys)のxs座標が、(X+m(m:水平方向ブロックサイズ))よりも小さいか否かを判定する。例えば、xs座標が(X+m)よりも小さい場合、処理は、ステップS175に進む。
【0148】
ステップS175において、隣接エネルギー比較部172は、起点画素(xs,ys)を、注目画素(x,y)に設定する。
【0149】
ステップS176において、隣接エネルギー比較部172は、注目画素(x,y)のy座標が、入力画像の垂直方向の高さ(height)よりも小さいか否かを判定する。例えば、y座標が入力画像の垂直方向の高さ(height)よりも小さい場合、処理は、ステップS177に進む。
【0150】
ステップS177において、隣接エネルギー比較部172は、入力画像エネルギーマップバッファ171より入力画像エネルギーマップを読み出し、注目画素(x,y)の左下に隣接する画素(x−1,y+1)、真下に隣接する画素(x,y+1)、および右下に隣接する画素(x+1,y+1)のエネルギーがいずれも全てエネルギー最大値であるか否かを判定する。例えば、注目画素(x,y)の左下(x−1,y+1)、真下(x,y+1)、および右下(x+1,y+1)のそれぞれの画素のエネルギーがいずれも全てエネルギー最大値ではない場合、処理は、ステップS178に進む。
【0151】
ステップS178において、隣接エネルギー比較部172は、注目画素(x,y)の情報と、左下に隣接する画素(x−1,y+1)、真下に隣接する画素(x,y+1)、および右下に隣接する画素(x+1,y+1)のエネルギーの情報を選択経路設定部174に通知する。選択経路設定部174は、注目画素(x,y)の情報と、左下に隣接する画素(x−1,y+1)、真下に隣接する画素(x,y+1)、および右下に隣接する画素(x+1,y+1)のうち、エネルギーが最小となる画素を注目画素(x,y)からの選択経路に設定する。
【0152】
ステップS179において、選択経路設定部174は、設定した注目画素(x,y)に対応付けて、選択経路の情報を選択経路記憶部175に記憶させる。
【0153】
ステップS180において、隣接エネルギー比較部172は、注目画素(x,y)の座標を選択経路として選択した座標に設定する。すなわち、隣接エネルギー比較部172は、次の注目画素(x,y)の座標を画素(x−1,y+1)、画素(x,y+1)、および画素(x+1,y+1)のうち、エネルギーが最小となる画素に設定し、処理は、ステップS176に戻る。
【0154】
すなわち、ステップS176において、y座標が入力画像の高さ(height)に達するまで、ステップS176乃至S180の処理が繰り返される。例えば、ステップS177において、注目画素(x,y)の左下、真下、および右下に隣接する画素(x−1,y+1)、画素(x,y+1)、および画素(x+1,y+1)のエネルギーがいずれも全てエネルギー最大値ではないとすれば、ステップS176乃至S180の処理により、順次以下のような処理がなされることになる。
【0155】
例えば、図20の最上段で示されるような入力画像エネルギーマップの場合、注目画素は、エネルギーが1の左上の画素に最初に設定されることとなる。このとき、ステップS77の処理により、左下に隣接する画素がないので、真下、および右下に隣接する画素のうち、エネルギーが小さな画素は、図20の2段目左側で示されるように、点線で囲まれたエネルギーが2の画素となり、その画素が選択経路として選択される。
【0156】
次の処理では、そのエネルギーが2の画素が注目画素となるため、図20の2段目右側で示されるように、左下、真下、および右下に隣接する画素のうち、エネルギーが最小となる画素として、点線で囲まれたエネルギーが1の画素が選択経路として選択される。
【0157】
そして、この処理により、入力画像の高さに達することになるので、図20の2段目右側で示されるように、図20の入力画像エネルギーマップにおける、左上のエネルギー1の画素を部分シームの起点としたとき、左上のエネルギー1の画素、中央のエネルギーが2の画素、および右下のエネルギー1の画素からなる画素群が順次接続されることにより構成される経路が、部分シームの候補として設定されることになる。
【0158】
ステップS176において、y座標が入力画像の高さ(height)より小さくなく、y座標が入力画像の高さに達したと判定された場合、処理は、ステップS185に進む。ステップS185において、選択経路設定部174は、部分シームの候補として設定された経路を構成する複数の画素群のエネルギーの積算値を求める。さらに、選択経路設定部174は、部分シームの候補を構成する画素群の情報、および求められた積算値を、起点座標(xs,ys)に対応付けて選択経路記憶部175に記憶させる。すなわち、部分シームの候補は、起点座標(xs,ys)により識別され、その起点座標(xs,ys)に対応付けて、積算エネルギー、および選択経路として選択された画素群の情報として選択経路記憶部175に記憶される。
【0159】
ステップS186において、隣接エネルギー比較部172は、起点画素(xs,ys)のxs座標を1インクリメントし、処理は、ステップS74に戻る。
【0160】
したがって、図20の最上段で示される入力画像エネルギーマップの場合、その上段における左からエネルギーが1,2,3の画素がそれぞれ起点となる。このため、ステップS74乃至S80,S85,S86の処理が繰り返されると、図20の場合、以下のように起点座標をとるエネルギーが1,2,3の画素のそれぞれについて、部分シーム候補が求められることになる。
【0161】
エネルギーが1の画素が起点の部分シームの候補は、上述した図20の2段目で示される入力画像エネルギーマップにおける左上のエネルギー1画素、中央のエネルギー2の画素、および右下のエネルギーが1の画素から構成され、積算エネルギーが4となる。また、エネルギーが2の画素が起点の部分シームの候補は、図20の3段目の左右で示される入力画像エネルギーマップにおける左上のエネルギー2画素、中央のエネルギー2の画素、および右下のエネルギーが1の画素から構成され、積算エネルギーが5となる。さらに、エネルギーが3の画素が起点の部分シームの候補は、図20の4段目の左右で示される入力画像エネルギーマップにおける左上のエネルギー3の画素、中央のエネルギー2の画素、および右下のエネルギーが1の画素から構成され、積算エネルギーが6となる。
【0162】
ステップS174において、起点座標(xs,ys)のxs座標が(X+m)よりも小さくない、すなわち、縮小シームとして求められたブロックを超えると判定された場合、処理は、ステップS187に進む。
【0163】
ステップS187において、部分シーム決定部176は、選択経路記憶部175に記憶されている候補となる部分シームのうち、積算エネルギーが最も小さな部分シームを、部分シームとして決定し、決定した部分シームの情報を部分シーム記憶部177に記憶させる。このとき、同時に、部分シーム決定部176は、決定した部分シームの情報をエネルギー最大値挿入部181に供給する。
【0164】
すなわち、図20の最上段で示される入力画像エネルギーマップの場合、図21で示されるように、図20の2段目で示される起点座標が、左上のエネルギーが1の画素を起点とする部分シーム候補の積算エネルギーが最も小さいため、部分シームとして決定されることになる。尚、図21においては、左から順に、図20の2段目、3段目、および4段目の部分シーム候補に対する積算エネルギーの比較により、図20の2段目に対応する点線で囲まれた左部の経路が部分シームとして選択されたことが示されている。
【0165】
ステップS188において、エネルギー最大値挿入部181は、入力画像エネルギーマップを読み出し、部分シームを構成する画素の座標のエネルギーとして、エネルギー最大値を挿入して処理を終了する。
【0166】
一方、ステップS176において、注目画素(x,y)の左下、真下、および右下に隣接する画素(x−1,y+1)、画素(x,y+1)、および画素(x+1,y+1)のエネルギーがいずれも全てエネルギー最大値である場合、処理は、ステップS181に進む。
【0167】
ステップS181において、隣接エネルギー比較部172は、左下、真下、および右下に隣接する画素のエネルギーがいずれも最大値であることを非隣接エネルギー比較部173に通知する。非隣接エネルギー比較部173は、注目画素(x,y)のx座標にN画素分追加したx座標の位置(x+N)が、入力画像内であるか否かを判定する。ステップS181において、例えば、注目画素(x,y)のx座標にN画素分追加したx座標の位置(x+N)が、入力画像内である場合、処理は、ステップS182に進む。
【0168】
ステップS182において、非隣接エネルギー比較部173は、右下に隣接する画素から右方向に連続して(N−1)画素分の画素を選択経路を選ぶ候補とする。
【0169】
一方、ステップS181において、注目画素(x,y)のx座標にN画素分追加したx座標の位置(x+N)が、入力画像内ではない場合、処理は、ステップS184に進む。
【0170】
ステップS184において、非隣接エネルギー比較部173は、左下に隣接する画素から左方向に連続して(N−1)画素分の画素を選択経路を選ぶ候補とする。
【0171】
ステップS183において、非隣接エネルギー比較部173は、右下に隣接する画素から右方向に連続して(N−1)画素分の画素、または、左下に隣接する画素から左方向に連続して(N−1)画素分の画素のうち、エネルギーが最小となる画素を選択経路として選択する。
【0172】
すなわち、非隣接エネルギー比較部173は、図22の左部で示されるように、注目画素の右下、真下、および左下に隣接する画素がエネルギー最大値である場合、入力画像内であれば、図22の右部で示されるように、右下に隣接する画素に右方向に連続して隣接する(N−1)画素を、あたかも注目画素の右下、真下、および左下に隣接する画素として扱う。尚、図22において、(N−1)画素=6画素である場合が示されている。
【0173】
これは、全画像探索処理においても説明したが、エネルギー最大値は、求められた部分シームに属する画素に与えられるものであるから、エネルギー最大値である画素は、一旦部分シームとして選択されている可能性が高い画素である。
【0174】
例えば、複数の部分シームが選択される際、図23の左部で示されるように、部分シームが交差すると、交差位置にはいずれの部分シームにも属する画素が存在することとなる。このような場合、複数の部分シームとして求められた画素を削除すると、図23の右部で示されるように、複数の部分シームに重複して属する画素を含む行、または列では、部分シームの本数分だけ画素が削除できない恐れがある。結果として、他の行、または列とは画素数が異なる行、または列が発生することとなり、いわゆる画素あまり(ピクセルあまり)が生じてしまう。
【0175】
例えば、図24の左部の斜線部で示されるように、一旦求められた部分シームに対して、図24の右部の黒色で示されるように、エネルギー最大値を設定した場合、図24の右部における太線で示されるような部分シームが求められ、丸印で示される注目画素において、左下の画素はエネルギー最大値であっても、真下、および右下はエネルギー最大値ではないので、そのいずれかを選択経路として選択することが可能であるので、部分シームが交差しないように設定することが可能である。
【0176】
しかしながら、図20の左部で示されるような場合、単純にステップS178の処理を実行すると、エネルギー最大値となるいずれかの画素が選択経路として選択されることとなってしまい、画素あまりが生じる恐れがあった。
【0177】
そこで、ステップS182乃至S184の処理が実行されることにより、注目画素の左下、真下、および右下に隣接する画素が、既に部分シームとして求められている可能性の高いエネルギー最大値となる画素である場合には、選択経路の候補から外される。そして、注目画素に対して隣接してはいないが、不連続ながら上記隣接画素に、さらに隣接する複数の画素を候補とする。すなわち、実質的に注目画素とは直接隣接していない画素が、隣接している画素と同様に扱われて、選択経路の候補とされる。さらに、この注目画素とは直接隣接していない選択経路の候補となる画素のうち、エネルギーが最小となる画素が選択経路として選択されることとなる。結果として、同一の画素が、複数の部分シームを構成する画素となる可能性が低減されるため、いわゆる、画素あまり(ピクセルあまり)という問題を生じ難くすることが可能となる。
【0178】
ここで、図14のフローチャートの説明に戻る。
【0179】
ステップS132の処理により部分画像探索処理が終了し、部分シームが決定されると、処理は、ステップS133に進む。
【0180】
ステップS133において、積算エネルギー閾値判定部178は、最近部分シーム記憶部177に記憶された部分シームの積算エネルギーが所定の閾値より大きいか否かを判定する。ステップS133において、例えば、最近の部分シームの積算エネルギーが所定の閾値より大きくないと判定された場合、処理は、ステップS134に進む。
【0181】
ステップS134において、ブロック内部分シーム本数判定部179は、部分シーム記憶部177に記憶された部分シームのうち、現在処理している縮小シームを構成するブロック内で探索された部分シーム本数が、ブロック内で設定される所定本数に達しているか否かを判定する。ステップS134において、例えば、記憶された部分シームのうち、現在処理している縮小シームを構成するブロック内で探索された部分シーム本数が、ブロック内で設定される所定本数に達していない場合、処理は、ステップS132に戻る。すなわち、縮小シームを構成するブロック内において求められるべき部分シームの本数は、予め設定された所定本数であるので、所定本数となるまでは、ステップS132,S133の処理が繰り返されて、同一ブロック内で部分シームが探索され続けることになる。
【0182】
一方、ステップS134において、記憶された部分シームのうち、現在処理している縮小シームを構成するブロック内で探索された部分シーム本数が、ブロック内で設定される所定本数を超えている場合、処理は、ステップS131に戻る。すなわち、ブロック内で設定される所定数の部分シーム本数に達している場合、再度全画像探索処理により新たに縮小シームを求めて、求められた縮小シームに対して別途部分画像探索処理が必要となるため、処理は、ステップS131に戻る。
【0183】
そして、ステップS133において、例えば、最近の部分シームの積算エネルギーが所定の閾値より大きい場合、処理は、ステップS135に進む。ステップS135において、積算エネルギー閾値判定部178は、出力部180を制御して、部分シーム記憶部177に記憶されている全ての部分シームの情報を加工部116に出力させる。
【0184】
探索処理をまとめると以下のようになる。すなわち、まず、縮小画像に対応する縮小画像エネルギーマップを用いて、全画像探索処理を実行し、縮小シームを探索する。このとき、全画像探索処理は、上述したように、ダイナミックプログラミング法を用いて縮小シームを探索する。ここで求められる縮小シームは、縮小画像に対しては画素単位であるが、縮小画像の画素は、入力画像における複数の画素のブロックに対応するものであるので、ある程度、縮小シームは、入力画像からみて、求めるべき部分シームの探索範囲を限定する情報となる。
【0185】
そこで、次に、縮小シームとして求められた範囲の画素について、部分画像探索処理を実行し、部分シームを求める。部分画像探索処理においては、グリーディ法が用いられて部分シームが探索される。この際、最近求められた部分シームの積算エネルギーが、所定の閾値よりも大きくなく、かつブロック内で設定される所定数の部分シームが求められている場合、再び全画像探索処理により縮小シームが求められ、同様に部分画像探索処理が実行される処理が繰り返される。
【0186】
そして、最近求められた部分シームの積算エネルギーが、所定の閾値よりも大きくなったところで、求められた部分シームの情報が出力されて、出力された部分シームに基づいて、画像が加工される。
【0187】
以上の処理により、画像を削除する部分シームを探索するに当たり、まず、縮小画像より全画像探索処理で縮小シームを探索してから、探索された縮小シームのブロックの端部を構成する画素を起点とする部分シームのみを検索するようにした。このため、入力画像全体のうち、部分シームを詳細に探索する範囲を限定させることができので、入力画像全体から部分シームを探索するよりも計算量を低減させることが可能となる。
【0188】
また、全画像探索処理により探索された縮小シームのブロックを構成する端部を起点とする部分シームの探索に当たっては、全画像探索処理におけるダイナミックプログラミング法ではなく、グリーディ法を用いるようにしたので、計算量を低減することが可能となる。さらに、最近求められた部分シームの積算エネルギーが所定の閾値よりも大きくなったところで部分シームの探索が打ち切られる。このため、積算エネルギーが大きな、被写体を含む可能性のある部分シームの探索が抑制されるので、被写体が削られてしまうといった、画像の破綻を抑制しつつ、被写体を小さくすることなく画像のサイズを縮小することが可能となる。
【0189】
[ダイナミックプログラミング法とグリーディ法について]
ここで、ダイナミックプログラミング法とグリーディ法について説明する。ダイナミックプログラミング法とは、上述した全画像探索処理における縮小シームを探索する処理である。また、グリーディ法とは、上述した部分画像探索処理における部分シームを探索する処理である。
【0190】
より具体的には、図25の上部で示されるエネルギーマップに対して、選択経路として設定された画素のエネルギーの積算値が最小となるシームを探索する場合、それぞれの手法は以下のようになる。尚、図25の上部で示されるエネルギーマップの各画素のエネルギーは、最上段が左から1,4,2,4であり、2段目が5,2,1,3であり、3段目が4,1,2,5であり、4段目が1,3,2,1であり、5段目が10,10,3,2である。
【0191】
最上段最左部のエネルギーが1の画素を起点としたシームを探索する場合、ダイナミックプログラミング法では、まず、積算エネルギーマップが生成される。すなわち、積算エネルギーマップは、上から2段目の各画素より左上、真上、および右上に隣接する画素のエネルギーのうち最小エネルギーを積算する処理を下方向に順次繰り返すことにより生成される。そして、図25の左下部で示されるように、積算エネルギーマップにしたがって、終点となる画素のうち積算エネルギーが最小となる画素と起点となる画素とを順次結ぶ選択経路を構成する画素群が最上段最左部のエネルギーが1の画素を起点としたシームが候補として選択される。そして、全ての起点に対して求められた候補となるシームのうち、積算エネルギーが最小となるシームが最終的に探索されることになる。図25の左下部においては、太線で示される積算エネルギーが8となるシームが選択される。尚、図25の左下部においては、5段目の画素における積算エネルギーは、左から15,15,9,8である。
【0192】
これに対して、グリーディ法では、図25の右下部で示されるように、エネルギーマップに従って、各画素における左下、真下、および右下に隣接する画素のエネルギーのうち最小となるエネルギーの画素が順次選択経路として選択される。そして、各起点からは、候補となるシームが1本だけ求められ、それぞれの積算エネルギーのうち、最小のものが最終的に選択される。図25の右下部においては、最上段における各起点となるシームの積算エネルギーは、起点となる画素毎に左から15,17,15,17となる。このため、最終的には、最上段におけるエネルギーが1または2の画素を起点とするシームが選択されることになる。
【0193】
以上の処理を比較すると、ダイナミックプログラミング法は、一旦積算エネルギーマップを求めた後、全ての起点となる画素に対して、全ての終点となる画素までのシームの積算エネルギーを比較した上で、シームを選択することとなる。このため、図25の左下部で示されるように、グリーディ法よりも高い精度で、積算エネルギーが最小となるシームが選択される。しかしながら、一旦積算エネルギーマップを求めた後、全ての起点となる画素に対して、全ての終点となる画素までのシームの積算エネルギーを求めることとなるため、計算量が膨大なものとなる。一方、グリーディ法は、積算エネルギーマップを特に求める必要がなく、各画素について、いずれの選択経路とするかについては、一定の条件となるため、計算量を小さくすることが可能となる。しかしながら、図25における右下部で示されるように、各画素毎にしか選択経路が決定されないため、真に積算エネルギーが最小となる経路からなるシームを探索することができない。
【0194】
しかしながら、本実施例においては、縮小画像に対して全画像探索処理において、精度の高いダイナミックプログラミング法を用いていることから、求められる縮小シームは比較的精度良く求めることが可能となる。また、縮小画像に対してダイナミックプログラミング法で全画像探索処理を実行しているため、入力画像に対してする処理よりも計算量を小さくすることが可能となる。さらに、入力画像のうち、縮小シームとして求められた範囲を起点とする画素のみに対してグリーディ法を用いた部分画像探索処理が実行されるため、軽い計算量でありながら、比較的精度良く求められた縮小シームの情報を用いて、部分シームを探索するため、部分シームの探索精度の低減を抑制しつつ、計算速度を向上させることが可能となる。
【0195】
さらに、計算速度を向上させたい場合、全画像探索処理において、グリーディ法を用いるようにしてもよい。すなわち、全画像探索処理において、グリーディ法を用いることで積算エネルギーマップを求めたり、全ての起点について、全ての終点までの積算エネルギーを比較した上でシームを探索する必要がなくなるので、計算速度をさらに向上させることが可能となる。
【0196】
また、以上においては、入力画像に対して、垂直方向に下方向にシームを探索する例について説明してきたが、同様の手法により水平方向にシームを探索することにより、水平方向の画素の削除、または挿入が可能となる。そして、これらを組み合わせて処理することにより、入力画像の水平方向、および垂直方向のそれぞれを縮小、または拡大させることが可能となる。
【0197】
例えば、図26の左部で示されるように、2羽の水鳥が撮像されている入力画像に対して、従来のように水平方向、および垂直方向に対して、所定のスケーリングにより縮小すると、図26の右上部で示されるように、画像の縮小率に合わせて、水鳥そのものも縮小される。これに対して、上述した処理を用いることにより、図26の右下部で示されるように、画像は縮小されることとなるが、水鳥の大きさは画像全体の縮小率に対して小さなものとすることができる。結果として、画像のサイズは小さくなるが、被写体である水鳥の大きさの変化を小さくすることが可能となる。
【0198】
ところで、上述した一連の画像処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0199】
図27は、汎用のパーソナルコンピュータの構成例を示している。このパーソナルコンピュータは、CPU(Central Processing Unit)1001を内蔵している。CPU1001にはバス1004を介して、入出力インタ-フェイス1005が接続されている。バス1004には、ROM(Read Only Memory)1002およびRAM(Random Access Memory)1003が接続されている。
【0200】
入出力インタ-フェイス1005には、ユーザが操作コマンドを入力するキーボード、マウスなどの入力デバイスよりなる入力部1006、処理操作画面や処理結果の画像を表示デバイスに出力する出力部1007、プログラムや各種データを格納するハードディスクドライブなどよりなる記憶部1008、LAN(Local Area Network)アダプタなどよりなり、インターネットに代表されるネットワークを介した通信処理を実行する通信部1009が接続されている。また、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどのリムーバブルメディア1011に対してデータを読み書きするドライブ1010が接続されている。
【0201】
CPU1001は、ROM1002に記憶されているプログラム、または磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリ等のリムーバブルメディア1011から読み出されて記憶部1008にインストールされ、記憶部1008からRAM1003にロードされたプログラムに従って各種の処理を実行する。RAM1003にはまた、CPU1001が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0202】
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
【0203】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【符号の説明】
【0204】
11 画像処理装置, 21 画像クロップ部, 22 オブジェクト適応型サイズ変更部, 23 クロップサイズ判定部, 24 画像サイズ調整部, 25 変更画像サイズ判定部, 26 出力部, 41 被写体領域検出部, 42 被写体領域包含範囲探索部, 43 被写体領域包含範囲矩形化部, 44 追加領域付加部, 45 画像切出部

【特許請求の範囲】
【請求項1】
入力画像に含まれる被写体領域を検出する被写体領域検出手段と、
前記被写体領域検出手段により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定手段と、
前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加手段と、
前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取手段と、
前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更手段と、
前記被写体適応サイズ変更手段によりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更手段と
を含む画像処理装置。
【請求項2】
前記被写体適応サイズ変更手段は、
前記切取画像より前記切取画像の隣接する画素間のエネルギーに基づいて、入力画像エネルギーマップを生成する入力画像エネルギーマップ生成手段と、
前記入力画像エネルギーマップを縮小することにより、前記切取画像における隣接する複数の画素からなる1ブロックを1画素とした縮小画像に対応する、縮小エネルギーマップを生成する縮小エネルギーマップ生成手段と、
前記縮小エネルギーマップにおける縮小画像の一方の端部の画素より、他方の端部の方向に隣接した画素を順次経由して、前記他方の端部の画素に到達するまでの複数の経路のうち、経由する画素のエネルギーの積算値が最小となる経路の画素間を結ぶことにより構成される縮小シームを探索する縮小シーム探索手段と、
前記縮小シーム探索手段により探索された縮小シームの端部を構成する、前記入力画像エネルギーマップにおける切取画像の一方の端部の画素より、他方の端部の方向に隣接した画素を順次経由して、前記他方の端部の画素に到達するまでの複数の経路のうち、経由する画素のエネルギーの積算値が最小となる画素間を結ぶことにより構成される部分シームを探索する部分シーム探索手段と、
前記部分シーム探索手段により探索された前記部分シームを構成する画素を、前記入力画像より削除することで前記入力画像を縮小する縮小手段とを含む
請求項1に記載の画像処理装置。
【請求項3】
探索された部分シームを構成する画素のエネルギーの積算値と所定の閾値とを比較する比較手段をさらに含み、
前記部分シーム探索手段は、前記比較手段の比較結果が、探索された部分シームを構成する画素のエネルギーの積算値が所定の閾値より大きいと判定されるまで、前記縮小シーム探索手段により探索された縮小シームの端部を構成する、前記入力画像エネルギーマップにおける切取画像の一方の端部の画素より、他方の端部の方向に隣接した画素を順次経由して、前記他方の端部の画素に到達するまでの複数の経路のうち、経由する画素のエネルギーの積算値が最小となる画素間を結ぶことにより構成される部分シームを繰り返し探索する
請求項2に記載の画像処理装置。
【請求項4】
前記部分シーム探索手段により探索された部分シームを構成する、前記切取画像の全ての画素に対応する前記入力画像エネルギーマップ上のエネルギーに、エネルギー最大値を挿入して置換し、前記入力画像エネルギーマップを更新する入力画像エネルギーマップ更新手段をさらに含み、
前記部分シーム探索手段は、前記切取画像の一方の端部の画素より、他方の端部の方向に隣接した画素を順次経由して、前記他方の端部の画素に到達するまでの複数の経路を探索するにあたり、隣接する画素の全てが前記入力画像エネルギーマップのエネルギー最大値であった場合、前記隣接する画素に、さらに隣接する所定数の画素のうち、最小エネルギーの画素を隣接する画素として設定し、前記経路を構成させる
請求項2に記載の画像処理装置。
【請求項5】
前記縮小シーム探索手段により探索された縮小シームを構成する、前記縮小画像の全ての画素に対応する前記縮小画像エネルギーマップ上のエネルギーに、エネルギー最大値を挿入して置換し、前記縮小画像エネルギーマップを更新する縮小画像エネルギーマップ更新手段をさらに含む
請求項2に記載の画像処理装置。
【請求項6】
入力画像に含まれる被写体領域を検出する被写体領域検出手段と、
前記被写体領域検出手段により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定手段と、
前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加手段と、
前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取手段と、
前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更手段と、
前記被写体適応サイズ変更手段によりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更手段と
を含む画像処理装置の画像処理方法であって、
前記被写体領域検出手段における、前記入力画像に含まれる被写体領域を検出する被写体領域検出ステップと、
前記クロップ領域設定手段における、前記被写体領域検出ステップの処理により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定ステップと、
前記拡張領域付加手段における、前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加ステップと、
前記切取手段における、前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取ステップと、
前記被写体適応サイズ変更手段における、前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更ステップと、
前記画像全体サイズ変更手段における、前記被写体適応サイズ変更ステップによりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更ステップと
を含む画像処理方法。
【請求項7】
入力画像に含まれる被写体領域を検出する被写体領域検出手段と、
前記被写体領域検出手段により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定手段と、
前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加手段と、
前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取手段と、
前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更手段と、
前記被写体適応サイズ変更手段によりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更手段と
を含む画像処理装置を制御するコンピュータに、
前記被写体領域検出手段における、前記入力画像に含まれる被写体領域を検出する被写体領域検出ステップと、
前記クロップ領域設定手段における、前記被写体領域検出ステップの処理により検出された被写体領域を全て包含する領域をクロップ領域として設定するクロップ領域設定ステップと、
前記拡張領域付加手段における、前記クロップ領域の端部を所定幅だけ拡張する拡張領域を付加する拡張領域付加ステップと、
前記切取手段における、前記クロップ領域と、拡張領域とを含む切取領域からなる切取画像を前記入力画像より切り取る切取ステップと、
前記被写体適応サイズ変更手段における、前記切取画像における前記被写体への影響が小さい領域を削除して、前記切取領域からなる画像のサイズを変更する被写体適応サイズ変更ステップと、
前記画像全体サイズ変更手段における、前記被写体適応サイズ変更ステップによりサイズが変更された画像の全体を所定の比率でサイズを変更する画像全体サイズ変更ステップと
を含む処理を実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公開番号】特開2011−176747(P2011−176747A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−40697(P2010−40697)
【出願日】平成22年2月25日(2010.2.25)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】