次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.実施例:
A−1.画像処理装置の構成:
A−2.顔領域検出処理:
B.変形例:
A.実施例:
A−1.画像処理装置の構成:
図1は、本発明の実施例における画像処理装置としてのプリンタ100の構成を概略的に示す説明図である。本実施例のプリンタ100は、メモリカードMC等から取得した画像データに基づき画像を印刷する、いわゆるダイレクトプリントに対応したインクジェット式カラープリンタである。プリンタ100は、プリンタ100の各部を制御するCPU110と、ROMやRAMによって構成された内部メモリ120と、ボタンやタッチパネルにより構成された操作部140と、液晶ディスプレイにより構成された表示部150と、プリンタエンジン160と、カードインターフェース(カードI/F)170と、を備えている。プリンタ100は、さらに、他の機器(例えばデジタルスチルカメラやパーソナルコンピュータ)とのデータ通信を行うためのインターフェースを備えているとしてもよい。プリンタ100の各構成要素は、バスを介して互いに接続されている。
プリンタエンジン160は、印刷データに基づき印刷を行う印刷機構である。カードインターフェース170は、カードスロット172に挿入されたメモリカードMCとの間でデータのやり取りを行うためのインターフェースである。なお、本実施例では、メモリカードMCに画像データを含む画像ファイルが格納されている。
内部メモリ120には、画像処理部200と、表示処理部310と、印刷処理部320と、が格納されている。画像処理部200は、所定のオペレーティングシステムの下で、後述する顔領域検出処理等の画像処理を実行するためのコンピュータプログラムである。表示処理部310は、表示部150を制御して、表示部150上に処理メニューやメッセージ、画像等を表示させるディスプレイドライバである。印刷処理部320は、画像データから印刷データを生成し、プリンタエンジン160を制御して、印刷データに基づく画像の印刷を実行するためのコンピュータプログラムである。CPU110は、内部メモリ120から、これらのプログラムを読み出して実行することにより、これら各部の機能を実現する。
画像処理部200は、プログラムモジュールとして、領域検出部210と、情報付加部230と、を含んでいる。領域検出部210は、対象画像データの表す対象画像における所定の種類の被写体の画像(顔の画像および顔の器官の画像)に対応する画像領域の検出を行う。領域検出部210は、判定対象設定部211と、評価値算出部212と、判定部213と、領域設定部214と、顔領域決定部216と、を含んでいる。顔領域決定部216は、顔傾き推定部217を含んでいる。これら各部の機能については、後述の顔領域検出処理の説明において詳述する。なお、後述するように、領域検出部210は、顔の画像に対応する顔領域の検出および顔の器官の画像に対応する器官領域の検出を行うため、本発明における顔領域検出部および器官領域検出部として機能する。また、後述するように、顔領域決定部216は、原顔領域FAoの調整を行うため、本発明における顔領域調整部として機能する。
情報付加部230は、画像データを含む画像ファイルに、所定の情報(例えば顔領域および器官領域の位置を示す情報)を付属情報として付加する。
内部メモリ120には、また、予め設定された複数の顔学習データFLDおよび複数の顔器官学習データOLDが格納されている。顔学習データFLDおよび顔器官学習データOLDは、領域検出部210による所定の画像領域の検出に用いられる。図2は、顔学習データFLDおよび顔器官学習データOLDの種類を示す説明図である。図2(a)ないし図2(f)には、顔学習データFLDおよび顔器官学習データOLDの種類と、当該種類の顔学習データFLDおよび顔器官学習データOLDを用いて検出される画像領域の例と、を示している。
顔学習データFLDの内容については後述の顔領域検出処理の説明において詳述するが、本実施例の顔学習データFLDは、顔傾きに対応付けられて設定されている。ここで、顔傾きとは、画像面内(インプレーン)における顔の傾き(回転角度)を意味している。すなわち、顔傾きは、画像面に垂直な軸を中心とした顔の回転角度である。本実施例では、対象画像上の領域や被写体等の傾きを、領域や被写体等の上方向が対象画像の上方向と一致した状態を基準状態(傾き=0度)とした場合における基準状態からの時計回りの回転角度で表すものとしている。例えば、顔傾きは、対象画像の上下方向に沿って顔が位置している状態(頭頂が上方向を向き顎が下方向を向いた状態)を基準状態(顔傾き=0度)とした場合における基準状態からの顔の時計回りの回転角度で表される。
内部メモリ120には、図2(a)および図2(b)に示す2つの顔学習データFLD、すなわち、図2(a)に示す0度の顔傾きに対応する顔学習データFLDと、図2(b)に示す30度の顔傾きに対応する顔学習データFLDと、が格納されている。後述するように、ある顔傾きに対応する顔学習データFLDは、当該顔傾きを中心に顔傾きの値がプラスマイナス15度の範囲の顔の画像を検出可能なように学習によって設定されている。また、人物の顔は実質的に左右対称である。そのため、0度の顔傾きに対応する顔学習データFLD(図2(a))と30度の顔傾きに対応する顔学習データFLD(図2(b))との2つが予め準備されれば、これら2つの顔学習データFLDを90度単位で回転させることにより、あらゆる顔傾きの顔の画像を検出可能な顔学習データFLDを得ることができる。
顔器官学習データOLDは、顔の器官の種類と器官傾きとの組み合わせに対応付けられて設定されている。本実施例では、顔の器官の種類として、目(右目および左目)と口とが設定されている。また、器官傾きとは、上述の顔傾きと同様に、画像面内(インプレーン)における顔の器官の傾き(回転角度)を意味している。すなわち、器官傾きは、画像面に垂直な軸を中心とした顔の器官の回転角度である。器官傾きは、顔傾きと同様に、対象画像の上下方向に沿って顔の器官が位置している状態を基準状態(器官傾き=0度)とした場合における基準状態からの顔の器官の時計回りの回転角度で表される。
内部メモリ120には、図2(c)ないし図2(f)に示す4つの顔器官学習データOLD、すなわち、図2(c)に示す目と0度の器官傾きとの組み合わせに対応する顔器官学習データOLDと、図2(d)に示す目と30度の器官傾きとの組み合わせに対応する顔器官学習データOLDと、図2(e)に示す口と0度の器官傾きとの組み合わせに対応する顔器官学習データOLDと、図2(f)に示す口と30度の器官傾きとの組み合わせに対応する顔器官学習データOLDと、が格納されている。目と口とは別の種類の被写体であるため、顔器官学習データOLDは被写体の種類と被写体の傾きとの組み合わせに対応して設定されていると表現できる。
顔学習データFLDと同様に、ある器官傾きに対応する顔器官学習データOLDは、当該器官傾きを中心に器官傾きの値がプラスマイナス15度の範囲の器官の画像を検出可能なように学習によって設定されている。また、人物の目や口は実質的に左右対称である。そのため、目については、0度の器官傾きに対応する顔器官学習データOLD(図2(c))と30度の器官傾きに対応する顔器官学習データOLD(図2(d))との2つが予め準備されれば、これら2つの顔器官学習データOLDを90度単位で回転させることにより、あらゆる器官傾きの目の画像を検出可能な顔器官学習データOLDを得ることができる。口についても同様に、0度の器官傾きに対応する顔器官学習データOLD(図2(e))と30度の器官傾きに対応する顔器官学習データOLDであることを(図2(f))との2つが予め準備されれば、あらゆる器官傾きの口の画像を検出可能な顔器官学習データOLDを得ることができる。なお、本実施例では、右目と左目とは同じ種類の被写体であるとし、右目の画像に対応する右目領域と左目の画像に対応する左目領域とを共通の顔器官学習データOLDを用いて検出するものとしているが、右目と左目とは異なる種類の被写体であるとして、右目領域検出用と左目領域検出用とにそれぞれ専用の顔器官学習データOLDを準備するものとしてもよい。
A−2.顔領域検出処理:
図3は、顔領域検出処理の流れを示すフローチャートである。本実施例における顔領域検出処理は、画像データの表す画像における顔の画像に対応する顔領域を決定する処理である。
ステップS110(図3)では、画像処理部200(図1)が、顔領域検出処理の対象となる画像を表す画像データを取得する。本実施例のプリンタ100では、カードスロット172にメモリカードMCが挿入されると、メモリカードMCに格納された画像ファイルのサムネイル画像が表示部150に表示される。ユーザは、表示されたサムネイル画像を参照しつつ、操作部140を介して処理の対象となる1つまたは複数の画像を選択する。画像処理部200は、選択された1つまたは複数の画像に対応する画像データを含む画像ファイルをメモリカードMCより取得して内部メモリ120の所定の領域に格納する。なお、取得された画像データを原画像データと呼び、原画像データの表す画像を原画像OImgと呼ぶものとする。
ステップS120(図3)では、領域検出部210(図1)が、原顔領域検出処理を行う。原顔領域検出処理は、顔の画像に対応する画像領域を原顔領域FAoとして検出する処理である。図4は、原顔領域検出処理の流れを示すフローチャートである。また、図5は、原顔領域検出処理の概要を示す説明図である。図5の最上段には原画像OImgの一例を示している。
原顔領域検出処理(図4)におけるステップS310では、領域検出部210(図1)が、原画像OImgを表す原画像データから顔検出用画像FDImgを表す顔検出用画像データを生成する。本実施例では、図5に示すように、顔検出用画像FDImgは横320画素×縦240画素のサイズの画像である。領域検出部210は、必要により原画像データの解像度変換を行うことにより、顔検出用画像FDImgを表す顔検出用画像データを生成する。
ステップS320(図4)では、判定対象設定部211(図1)が、判定対象画像領域JIA(後述)の設定に用いるウィンドウSWのサイズを初期値に設定する。ステップS330では、判定対象設定部211が、ウィンドウSWを顔検出用画像FDImg上の初期位置に配置する。ステップS340では、判定対象設定部211が、顔検出用画像FDImg上に配置されたウィンドウSWにより規定される画像領域を、顔の画像に対応する画像領域であるか否かの判定(以下「顔判定」とも呼ぶ)の対象となる判定対象画像領域JIAに設定する。図5の中段には、顔検出用画像FDImg上に初期値のサイズのウィンドウSWが初期位置に配置され、ウィンドウSWにより規定される画像領域が判定対象画像領域JIAに設定される様子を示している。本実施例では、後述するように、正方形形状のウィンドウSWのサイズおよび位置が変更されつつ判定対象画像領域JIAの設定が順に行われるが、ウィンドウSWのサイズの初期値は最大サイズである横240画素×縦240画素であり、ウィンドウSWの初期位置はウィンドウSWの左上の頂点が顔検出用画像FDImgの左上の頂点に重なるような位置である。また、ウィンドウSWは、その傾きが0度の状態で配置される。なお、上述したように、ウィンドウSWの傾きとは、ウィンドウSWの上方向が対象画像(顔検出用画像FDImg)の上方向と一致した状態を基準状態(傾き=0度)とした場合における基準状態からの時計回りの回転角度を意味している。
ステップS350(図4)では、評価値算出部212(図1)が、判定対象画像領域JIAについて、判定対象画像領域JIAに対応する画像データ基づき、顔判定に用いる累計評価値Tvを算出する。なお、本実施例では、顔判定は予め設定された特定顔傾き毎に実行される。すなわち、特定顔傾き毎に、判定対象画像領域JIAが当該特定顔傾き分だけ傾いた顔の画像に対応する画像領域であるか否かの判定が行われる。そのため、累計評価値Tvも特定顔傾き毎に算出される。ここで、特定顔傾きとは、予め設定された顔傾きの値を意味している。本実施例では、傾きを0度から30度ずつ増加させた計12個の顔傾き(0度、30度、60度、・・・、330度)が、特定顔傾きとして設定されている。
図6は、顔判定に用いる累計評価値Tvの算出方法の概要を示す説明図である。本実施例では、累計評価値Tvの算出にN個のフィルタ(フィルタ1〜フィルタN)が用いられる。各フィルタの外形はウィンドウSWと同じアスペクト比を有しており(すなわち正方形形状であり)、各フィルタにはプラス領域paとマイナス領域maとが設定されている。評価値算出部212は、判定対象画像領域JIAにフィルタX(X=1,2,・・・,N)を順に適用して評価値vX(すなわちv1〜vN)を算出する。具体的には、評価値vXは、フィルタXのプラス領域paに対応する判定対象画像領域JIA上の領域内に位置する画素の輝度値の合計から、マイナス領域maに対応する判定対象画像領域JIA上の領域内に位置する画素の輝度値の合計を差し引いた値である。
算出された評価値vXは、各評価値vXに対応して設定された閾値thX(すなわちth1〜thN)と比較される。本実施例では、評価値vXが閾値thX以上である場合には、フィルタXに関しては判定対象画像領域JIAが顔の画像に対応する画像領域であると判定され、フィルタXの出力値として値「1」が設定される。一方、評価値vXが閾値thXより小さい場合には、フィルタXに関しては判定対象画像領域JIAが顔の画像に対応する画像領域ではないと判定され、フィルタXの出力値として値「0」が設定される。各フィルタXには重み係数WeX(すなわちWe1〜WeN)が設定されており、すべてのフィルタについての出力値と重み係数WeXとの積の合計が、累計評価値Tvとして算出される。
なお、顔判定に用いられるフィルタXの態様や閾値thX、重み係数WeX、後述の閾値THは、上記12個の特定顔傾きのそれぞれについて、顔学習データFLD(図2(a)および図2(b)参照)として予め設定されている。本実施例における顔学習データFLDは、判定対象画像領域JIAが顔の画像に対応する画像領域であることの確からしさを表す評価値を算出するためのデータであるため、本発明における評価用データに相当する。
顔学習データFLDは、サンプル画像を用いた学習によって生成される。図7は、学習に用いられるサンプル画像の一例を示す説明図である。学習には、顔の画像に対応した画像であることが予めわかっている複数の顔サンプル画像によって構成された顔サンプル画像群と、顔の画像に対応した画像ではないことが予めわかっている複数の非顔サンプル画像によって構成された非顔サンプル画像群と、が用いられる。
学習による顔学習データFLDの生成は特定顔傾き毎に実行されるため、図7に示すように、顔サンプル画像群は、12個の特定顔傾きのそれぞれに対応したものが準備される。例えば0度の特定顔傾きについての顔学習データFLDの生成は、0度の特定顔傾きに対応した顔サンプル画像群と非顔サンプル画像群とを用いて実行され、30度の特定顔傾きについての顔学習データFLDの生成は、30度の特定顔傾きに対応した顔サンプル画像群と非顔サンプル画像群とを用いて実行される。
各特定顔傾きに対応する顔サンプル画像群は、画像サイズに対する顔の画像の大きさの比が所定の値の範囲内であると共に顔の画像の傾きが特定顔傾きに等しい複数の顔サンプル画像(以下「基本顔サンプル画像FIo」とも呼ぶ)を含む。また、顔サンプル画像群は、少なくとも1つの基本顔サンプル画像FIoについて、基本顔サンプル画像FIoを1.2倍から0.8倍までの範囲の所定の倍率で拡大および縮小した画像(例えば図7における画像FIaおよびFIb)や、基本顔サンプル画像FIoの顔傾きをプラスマイナス15度の範囲で変化させた画像(例えば図7における画像FIcおよびFId)をも含む。
サンプル画像を用いた学習は、例えばニューラルネットワークを用いた方法や、ブースティング(例えばアダブースティング)を用いた方法、サポートベクターマシーンを用いた方法等により実行される。例えば学習がニューラルネットワークを用いた方法により実行される場合には、各フィルタX(すなわちフィルタ1〜フィルタN、図6参照)について、ある特定顔傾きに対応した顔サンプル画像群(図7参照)と非顔サンプル画像群とに含まれるすべてのサンプル画像を用いて評価値vX(すなわちv1〜vN)が算出され、所定の顔検出率を達成する閾値thX(すなわちth1〜thN)が設定される。ここで、顔検出率とは、顔サンプル画像群を構成する顔サンプル画像の総数に対する、評価値vXによる閾値判定によって顔の画像に対応する画像であると判定される顔サンプル画像の数の割合を意味している。
次に、各フィルタXに設定された重み係数WeX(すなわちWe1〜WeN)が初期値に設定され、顔サンプル画像群および非顔サンプル画像群の中から選択された1つのサンプル画像についての累計評価値Tvが算出される。後述するように、顔判定においては、ある画像について算出された累計評価値Tvが所定の閾値TH以上の場合には、当該画像は顔の画像に対応する画像であると判定される。学習においては、選択されたサンプル画像(顔サンプル画像または非顔サンプル画像)について算出された累計評価値Tvによる閾値判定結果の正誤に基づき、各フィルタXに設定された重み係数WeXの値が修正される。以降、サンプル画像の選択と、選択されたサンプル画像について算出された累計評価値Tvによる閾値判定、および判定結果の正誤に基づく重み係数WeXの値の修正が、顔サンプル画像群および非顔サンプル画像群に含まれるすべてのサンプル画像について繰り返し実行される。以上の処理が特定顔傾き毎に実行されることにより、特定顔傾き毎の顔学習データFLDが生成される。
判定対象画像領域JIAについて特定顔傾き毎に累計評価値Tvが算出されると(図4のステップS350)、判定部213(図1)は、累計評価値Tvを特定顔傾き毎に設定された閾値THと比較する(ステップS360)。ある特定顔傾きについて累計評価値Tvが閾値TH以上である場合には、領域検出部210が、判定対象画像領域JIAは当該特定顔傾き分だけ傾いた顔の画像に対応する画像領域であるとして、判定対象画像領域JIAの位置、すなわち現在設定されているウィンドウSWの座標と、当該特定顔傾きと、を記憶する(ステップS370)。一方、いずれの特定顔傾きについても累計評価値Tvが閾値THより小さい場合には、ステップS370の処理はスキップされる。
ステップS380(図4)では、領域検出部210(図1)が、現在設定されているサイズのウィンドウSWにより顔検出用画像FDImg全体がスキャンされたか否かを判定する。未だ顔検出用画像FDImg全体がスキャンされていないと判定された場合には、判定対象設定部211(図1)が、ウィンドウSWを所定の方向に所定の移動量だけ移動する(ステップS390)。図5の下段には、ウィンドウSWが移動した様子を示している。本実施例では、ステップS390において、ウィンドウSWがウィンドウSWの水平方向の大きさの2割分の移動量で右方向に移動するものとしている。また、ウィンドウSWがさらに右方向には移動できない位置に配置されている場合には、ステップS390において、ウィンドウSWが顔検出用画像FDImgの左端まで戻ると共に、ウィンドウSWの垂直方向の大きさの2割分の移動量で下方向に移動するものとしている。ウィンドウSWがさらに下方向には移動できない位置に配置されている場合には、顔検出用画像FDImg全体がスキャンされたこととなる。ウィンドウSWの移動(ステップS390)の後には、移動後のウィンドウSWについて、上述のステップS340以降の処理が実行される。
ステップS380(図4)において現在設定されているサイズのウィンドウSWにより顔検出用画像FDImg全体がスキャンされたと判定された場合には、ウィンドウSWの所定のサイズがすべて使用されたか否かが判定される(ステップS400)。本実施例では、ウィンドウSWのサイズとして、初期値(最大サイズ)である横240画素×縦240画素の他に、横213画素×縦213画素、横178画素×縦178画素、横149画素×縦149画素、横124画素×縦124画素、横103画素×縦103画素、横86画素×縦86画素、横72画素×縦72画素、横60画素×縦60画素、横50画素×縦50画素、横41画素×縦41画素、横35画素×縦35画素、横29画素×縦29画素、横24画素×縦24画素、横20画素×縦20画素(最小サイズ)、の合計15個のサイズが設定されている。未だ使用されていないウィンドウSWのサイズがあると判定された場合には、判定対象設定部211(図1)が、ウィンドウSWのサイズを現在設定されているサイズの次に小さいサイズに変更する(ステップS410)。すなわち、ウィンドウSWのサイズは、最初に最大サイズに設定され、その後、順に小さいサイズに変更されていく。ウィンドウSWのサイズの変更(ステップS410)の後には、変更後のサイズのウィンドウSWについて、上述のステップS330以降の処理が実行される。
ステップS400(図4)においてウィンドウSWの所定のサイズがすべて使用されたと判定された場合には、領域設定部214(図1)が、原顔領域設定処理を実行する(ステップS420)。図8および図9は、原顔領域設定処理の概要を示す説明図である。領域設定部214は、図4のステップS360において累計評価値Tvが閾値TH以上であると判定されステップS370において記憶されたウィンドウSWの座標(すなわちウィンドウSWの位置およびサイズ)と特定顔傾きとに基づき、原顔領域FAoを設定する。具体的には、特定顔傾きが0度である場合には、ウィンドウSWにより規定される画像領域(すなわち判定対象画像領域JIA)が、そのまま原顔領域FAoとして設定される。一方、特定顔傾きが0度以外である場合には、ウィンドウSWの傾きを特定顔傾きに一致させ(すなわちウィンドウSWを所定の点(例えばウィンドウSWの重心)を中心として特定顔傾き分だけ時計回りに回転させ)、傾きを変化させた後のウィンドウSWにより規定される画像領域が原顔領域FAoとして設定される。例えば図8(a)に示すように、30度の特定顔傾きについて累計評価値Tvが閾値TH以上であると判定された場合には、図8(b)に示すように、ウィンドウSWの傾きを30度に変化させ、傾き変化後のウィンドウSWにより規定される画像領域が原顔領域FAoとして設定される。
また、領域設定部214は、ステップS370において、ある特定顔傾きについて互いに一部が重複する複数のウィンドウSWが記憶された場合には、各ウィンドウSWにおける所定の点(例えばウィンドウSWの重心)の座標の平均の座標を重心とし、各ウィンドウSWのサイズの平均のサイズを有する1つの新たなウィンドウ(以下「平均ウィンドウAW」とも呼ぶ)を設定する。例えば図9(a)に示すように、互いに一部が重複する4つのウィンドウSW(SW1〜SW4)が記憶された場合には、図9(b)に示すように、4つのウィンドウSWのそれぞれの重心の座標の平均の座標を重心とし、4つのウィンドウSWのそれぞれのサイズの平均のサイズを有する1つの平均ウィンドウAWが定義される。このとき、上述したのと同様に、特定顔傾きが0度である場合には、平均ウィンドウAWにより規定される画像領域がそのまま原顔領域FAoとして設定される。一方、特定顔傾きが0度以外である場合には、平均ウィンドウAWの傾きを特定顔傾きに一致させ(すなわち平均ウィンドウAWを所定の点(例えば平均ウィンドウAWの重心)を中心として特定顔傾き分だけ時計回りに回転させ)、傾きを変化させた後の平均ウィンドウAWにより規定される画像領域が原顔領域FAoとして設定される(図9(c)参照)。
なお、図8に示したように、他のウィンドウSWと重複しない1つのウィンドウSWが記憶された場合にも、図9に示した互いに一部が重複する複数のウィンドウSWが記憶された場合と同様に、1つのウィンドウSW自身が平均ウィンドウAWであると解釈することも可能である。
本実施例では、学習の際に用いられる顔サンプル画像群(図7参照)に、基本顔サンプル画像FIoを1.2倍から0.8倍までの範囲の所定の倍率で拡大および縮小した画像(例えば図7における画像FIaおよびFIb)が含まれているため、ウィンドウSWの大きさに対する顔の画像の大きさが基本顔サンプル画像FIoと比べてわずかに大きかったり小さかったりする場合にも、原顔領域FAoが検出されうる。従って、本実施例では、ウィンドウSWのサイズとして上述した15個の離散的なサイズのみが設定されているが、あらゆる大きさの顔の画像について原顔領域FAoが検出されうる。同様に、本実施例では、学習の際に用いられる顔サンプル画像群に、基本顔サンプル画像FIoの顔傾きをプラスマイナス15度の範囲で変化させた画像(例えば図7における画像FIcおよびFId)が含まれているため、ウィンドウSWに対する顔の画像の傾きが基本顔サンプル画像FIoとはわずかに異なっている場合にも、原顔領域FAoが検出されうる。従って、本実施例では、特定顔傾きとして上述した12個の離散的な傾き値のみが設定されているが、あらゆる傾きの顔の画像について原顔領域FAoが検出されうる。
原顔領域検出処理(図3のステップS120)において、原顔領域FAoが検出されなかった場合には(ステップS130:No)、顔領域検出処理は終了する。一方、少なくとも1つの原顔領域FAoが検出された場合には(ステップS130:Yes)、領域検出部210(図1)が、検出された原顔領域FAoの1つを選択する(ステップS140)。
ステップS150(図3)では、領域検出部210(図1)が、器官領域検出処理を行う。器官領域検出処理は、選択された原顔領域FAoにおける顔の器官の画像に対応する画像領域を器官領域として検出する処理である。上述したように、本実施例では、顔の器官の種類として、右目と左目と口との3種類が設定されており、器官領域検出処理では、右目の画像に対応する右目領域EA(r)と、左目の画像に対応する左目領域EA(l)と、口の画像に対応する口領域MAと、の検出が行われる。
図10は、器官領域検出処理の流れを示すフローチャートである。また、図11は、器官領域検出処理の概要を示す説明図である。図11の最上段には、顔検出処理に用いられた顔検出用画像FDImg(図5参照)の一例を示している。
顔検出用画像FDImgからの器官領域の検出は、上述した原顔領域FAoの検出と同様に行われる。すなわち、図11に示すように、矩形形状のウィンドウSWがそのサイズおよび位置が変更されつつ顔検出用画像FDImg上に配置され(図10のステップS520,S530,S580〜S610)、配置されたウィンドウSWにより規定される画像領域が顔の器官の画像に対応する器官領域であるか否かの判定(以下「器官判定」とも呼ぶ)の対象となる判定対象画像領域JIAとして設定される(図10のステップS540)。なお、ウィンドウSWの取り得るサイズおよび位置は、例えば、選択された原顔領域FAoのサイズおよび位置に基づき決定される。例えば、ウィンドウSWの横方向の長さとして取り得る値は、原顔領域FAoの横方向の長さを所定数倍して得られる最大サイズから最小サイズまでの間の所定数段階の値に設定される。また、例えば、ウィンドウSWの取り得る位置は、ウィンドウSWの中心が原顔領域FAo内に位置するような範囲に設定される。また、ウィンドウSWは、その傾きが0度の状態(ウィンドウSWの上方向が顔検出用画像FDImgの上方向と一致した基準状態)で配置される。
判定対象画像領域JIAが設定されると、顔器官学習データOLD(図1)を用いて、器官(右目、左目、口)毎に、器官判定に用いられる累計評価値Tvが算出される(図10のステップS550)。累計評価値Tvの算出や器官判定に用いられるフィルタXの態様や閾値thX、重み係数WeX、閾値TH(図6参照)は、顔器官学習データOLDに規定されている。なお、顔器官学習データOLDの設定のための学習は、顔学習データFLDの設定のための学習と同様に、顔の器官に対応する画像であることが予めわかっている複数の器官サンプル画像によって構成された器官サンプル画像群と、顔の器官に対応する画像ではないことが予めわかっている複数の非器官サンプル画像によって構成された非器官サンプル画像群と、を用いて実行される。
なお、原顔領域検出処理(図4)においては、累計評価値Tvの算出および顔判定が、すべての特定顔傾きについて実行されるのに対し、器官領域検出処理(図10)では、累計評価値Tvの算出および器官判定が、選択された原顔領域FAoの特定顔傾きと同一の器官傾きに対応する顔器官学習データOLD(図2(c)ないし図2(f)参照)を用いて、原顔領域FAoの特定顔傾きと同一の器官傾きについてのみ実行される。ただし、器官領域検出処理においても、累計評価値Tvの算出および器官判定が、すべての特定器官傾きについて実行されるものとしてもよい。
算出された累計評価値Tvが所定の閾値TH以上である場合には、判定対象画像領域JIAは顔の当該器官の画像に対応する画像領域であるとして、判定対象画像領域JIAの位置、すなわち現在設定されているウィンドウSWの座標が記憶される(図10のステップS570)。一方、累計評価値Tvが閾値THより小さい場合には、ステップS570の処理はスキップされる。
ウィンドウSWの所定のサイズのすべてについて、ウィンドウSWの位置し得る範囲全体がスキャンされた後に、領域設定部214(図1)による器官領域設定処理が実行される(図10のステップS620)。図12は、器官領域設定処理の概要を示す説明図である。器官領域設定処理は、原顔領域設定処理(図8および図9参照)と同様の処理である。領域設定部214は、図10のステップS560において累計評価値Tvが閾値TH以上であると判定され、ステップS570において記憶されたウィンドウSWの座標と、原顔領域FAoに対応する特定顔傾きと、に基づき、顔の器官の画像に対応する画像領域としての器官領域を設定する。具体的には、特定顔傾きが0度である場合には、ウィンドウSWにより規定される画像領域(すなわち判定対象画像領域JIA)が、そのまま器官領域として設定される。一方、特定顔傾きが0度以外である場合には、ウィンドウSWの傾きを特定顔傾きに一致させ(すなわちウィンドウSWを所定の点(例えばウィンドウSWの重心)を中心として特定顔傾き分だけ時計回りに回転させ)、傾きを変化させた後のウィンドウSWにより規定される画像領域が器官領域として設定される。例えば図12(a)に示すように、30度の特定顔傾きについて、右目に対応するウィンドウSW(er)と左目に対応するウィンドウSW(el)と口に対応するウィンドウSW(m)とにおいて累計評価値Tvが閾値TH以上であると判定された場合には、図12(b)に示すように、各ウィンドウSWの傾きを30度に変化させ、傾き変化後の各ウィンドウSWにより規定される画像領域が器官領域(右目領域EA(r)、左目領域EA(l)、口領域MA)として設定される。
また、原顔領域設定処理と同様に、互いに一部が重複する複数のウィンドウSWが記憶された場合には、各ウィンドウSWにおける所定の点(例えばウィンドウSWの重心)の座標の平均の座標を重心とし、各ウィンドウSWのサイズの平均のサイズを有する1つの新たなウィンドウ(平均ウィンドウAW)が設定され、特定顔傾きが0度である場合には、平均ウィンドウAWにより規定される画像領域がそのまま器官領域として設定され、特定顔傾きが0度以外である場合には、平均ウィンドウAWの傾きを特定顔傾きに一致させ(すなわち平均ウィンドウAWを所定の点(例えば平均ウィンドウAWの重心)を中心として特定顔傾き分だけ時計回りに回転させ)、傾きを変化させた後の平均ウィンドウAWにより規定される画像領域が器官領域として設定される。
器官領域検出処理(図3のステップS150)において器官領域が検出されなかった場合には(ステップS160:No)、顔領域決定部216(図1)が、決定顔領域FAfを設定する(ステップS180)。決定顔領域FAfは、顔領域検出処理の最終的な検出結果として設定される顔領域である。ステップS180においては、顔領域決定部216は、原顔領域FAoそのものを決定顔領域FAfとして設定する。すなわち、ステップS180における決定顔領域FAfの設定の際には、後述する器官領域に基づく原顔領域FAoの調整は実行されない。なお、本実施例において、器官領域が検出されなかった場合とは、3種類の器官に対応する器官領域(右目領域EA(r)と左目領域EA(l)と口領域MA)の少なくとも1つが検出されなかった場合を意味する。
器官領域検出処理(図3のステップS150)において器官領域が検出されなかった場合は、原顔領域検出処理(S120)において顔の画像に対応しない画像領域が誤って原顔領域FAoとして検出されたり、実際に顔の画像に対応する画像領域と検出された原顔領域FAoとの間に傾きや位置や大きさの点でずれが発生したりした可能性が比較的高い。そのため、このような場合には、顔領域の検出精度は比較的低いこととなる。
また、上述したように、原顔領域FAoは、平均ウィンドウAWの傾きを特定顔傾きに一致するように変化させた後の平均ウィンドウAWにより規定される画像領域である。従って、原顔領域FAoそのものを決定顔領域FAfとして設定すると、決定顔領域FAfの傾き(以下「顔領域傾き」とも呼ぶ)は、特定顔傾きとして設定された12個の離散的な傾き(0度、30度、60度、・・・、330度)のいずれか1つとなる。そのため、決定顔領域FAfの傾き(顔領域傾き)と、対象画像に表された顔の実際の傾き(以下「実傾き」とも呼ぶ)と、の差異は、プラスマイナス15度の範囲の値となる。従って、この場合には、顔領域傾きと実傾きとの差異の平均値は比較的大きくなり、顔領域の検出精度は比較的低いこととなる。
器官領域検出処理(図3のステップS150)において、3種類の器官に対応する器官領域(右目領域EA(r)と左目領域EA(l)と口領域MA)がすべて検出された場合には(ステップS160:Yes)、顔領域決定部216(図1)が、検出された器官領域に基づき原顔領域FAoを調整して、決定顔領域FAfを設定する(ステップS170)。図13は、器官領域が検出された場合における決定顔領域FAfの設定方法を示す説明図である。まず、図13(a)に示すように、顔領域決定部216の顔傾き推定部217(図1)は、右目領域EA(r)の重心と左目領域EA(l)の重心とを結ぶ直線CLの傾きを算出し、対象画像に表された顔の実際の傾き(実傾き)は算出された直線CLの傾きに等しいと推定する。すなわち、実傾きは、右目領域EA(r)と左目領域EA(l)との間の位置関係に基づき推定される。次に、図13(b)に示すように、顔領域決定部216は、原顔領域FAoを規定する平均ウィンドウAWの傾きを推定された実傾きと一致するように変化させ(すなわち平均ウィンドウAWを平均ウィンドウAWの重心を中心として推定された実傾き分だけ時計回りに回転させ)、傾き変化後の平均ウィンドウAWにより規定される画像領域を決定顔領域FAfとして設定する。このとき、決定顔領域FAfは、その外周の2辺が直線CLと平行な矩形の画像領域となる。
器官領域検出処理(図3のステップS150)において器官領域が検出された場合は、原顔領域検出処理(S120)における誤検出が発生したり、実際に顔の画像に対応する画像領域と検出された原顔領域FAoとの間に傾きや位置や大きさの点でずれが発生したりした可能性が比較的低い。そのため、このような場合には、顔領域の検出精度は比較的高いこととなる。
また、ステップS170(図3)における決定顔領域FAfの設定では、設定された決定顔領域FAfの傾き(顔領域傾き)が、対象画像に表された顔の実際の傾き(実傾き)の推定値と一致する。また、実傾きの推定値として取り得る値は離散値ではなく連続値である。そのため、この場合には、顔領域傾きと実傾きとの差異の平均値は比較的小さくなり、顔領域の検出精度は比較的高いこととなる。
ステップS190(図3)では、領域検出部210(図1)が、ステップS140において未だ選択されていない原顔領域FAoが存在するか否かを判定する。未だ選択されていない原顔領域FAoが存在すると判定された場合には(ステップS190:No)、ステップS140に戻って未選択の原顔領域FAoの1つが選択され、ステップS150以降の処理が実行される。一方、すべての原顔領域FAoが選択されたと判定された場合には(ステップS190:Yes)、処理はステップS200に進む。
ステップS200(図3)では、情報付加部230(図1)が、原画像データを含む画像ファイルに付属情報を付加する情報記録処理を行う。図14は、情報記録処理により生成された画像ファイルの一例を示す説明図である。図14に示すように、本実施例の画像ファイルは、画像データを格納する画像データ格納領域と、付属情報を格納する付属情報格納領域と、を有している。情報付加部230は、原画像データを含む画像ファイルの付属情報格納領域に、付属情報として、決定顔領域特定情報を格納する。決定顔領域特定情報は、ステップS170またはS180において設定された決定顔領域FAfを特定する情報であり、具体的には、原画像OImgにおける設定された決定顔領域FAfの位置(座標)を示す情報である。決定顔領域特定情報は、本発明における第1の情報に相当する。なお、決定顔領域特定情報は、設定された決定顔領域FAfの大きさ(サイズ)を示す情報や、原画像OImgにおける決定顔領域FAfの傾きを示す情報を含むとしてもよい。
情報記録処理(図3のステップS200)において、情報付加部230は、さらに、器官領域検出成否情報を、付属情報として画像ファイルの付属情報格納領域に格納する。器官領域検出成否情報は、器官領域検出処理(ステップS150)における検出成否を特定する情報であり、具体的には、器官領域の検出に成功したか(すなわち、3種類の器官に対応する器官領域(右目領域EA(r)と左目領域EA(l)と口領域MA)がすべて検出されたか)、器官領域の検出に成功しなかったか(すなわち、3種類の器官に対応する器官領域の少なくとも1つが検出されなかったか)を特定する情報である。器官領域検出成否情報は、器官領域を検出できたか否かを特定する情報であり、本発明における第2の情報に相当する。
また、器官領域検出処理(図3のステップS150)において器官領域の検出に成功した場合には、情報記録処理(ステップS200)において、情報付加部230は、さらに、器官領域特定情報を、付属情報として画像ファイルの付属情報格納領域に格納する。器官領域特定情報は、器官領域検出処理において検出された器官領域(右目領域EA(r)と左目領域EA(l)と口領域MA)を特定する情報であり、具体的には、原画像OImgにおける検出された器官領域の位置(座標)を示す情報である。器官領域特定情報は、本発明における第3の情報に相当する。なお、器官領域特定情報は、検出された器官領域の大きさ(サイズ)を示す情報や、原画像OImgにおける器官領域の傾きを示す情報を含むとしてもよい。
また、情報記録処理(図3のステップS200)において、情報付加部230は、さらに、顔領域調整実行情報を、付属情報として画像ファイルの付属情報格納領域に格納する。顔領域調整実行情報は、決定顔領域FAfの設定(ステップS170)の際に、原顔領域FAoの調整が実行されたか否かを示す情報である。顔領域調整実行情報は、本発明における第4の情報に相当する。
以上説明した顔領域検出処理により、原画像OImgを表す原画像データと、決定顔領域特定情報等の付属情報と、が含まれた画像ファイル(図14参照)が生成される。生成された画像ファイルは、所定の補正処理に供され得る。例えば、画像ファイルがプリンタ100に取得され、画像ファイルに含まれる画像データを対象とした顔変形処理が画像処理部200により実行されるものとする。このとき、画像ファイルに含まれる決定顔領域特定情報に基づき画像データの表す画像中の決定顔領域FAfが特定され、決定顔領域FAfに基づき設定された顔の画像を含む画像領域に変形処理が行われる。ここで、画像処理部200は、画像ファイルに含まれる器官領域検出成否情報に基づき、変形処理の程度(変形量)を設定する。すなわち、画像処理部200は、器官領域検出成否情報が器官領域の検出が成功しなかったことを示している場合の補正の程度が、器官領域検出成否情報が器官領域の検出が成功したことを示している場合の補正の程度より小さくなるように、変形処理の程度(変形量)を設定する。これは、器官領域の検出が成功しなかった場合には、顔領域(決定顔領域FAf)の検出精度が比較的低いと考えられ、決定顔領域FAfに基づき設定された顔の画像を含む画像領域に対して大きな変形量で変形処理を行うと、処理結果が不自然なものとなる可能性が高いからである。画像処理部200が、画像ファイルに含まれる器官領域検出成否情報に基づき変形処理の程度(変形量)を設定することにより、自然な変形処理を実現することが可能となる。なお、画像ファイルがプリンタ100に取得され、画像ファイルに含まれる画像データを対象とした顔変形処理が画像処理部200により実行される場合には、画像処理部200は、本発明における画像取得部および補正処理部として機能する。
以上説明したように、本実施例のプリンタ100による顔領域検出処理では、決定顔領域FAfを特定する決定顔領域特定情報と、器官領域の検出成否(器官領域を検出できたか否か)を特定する器官領域検出成否情報と、を含む画像ファイルが生成されるため、画像ファイルに含まれる器官領域検出成否情報を参照することにより、顔領域の検出精度を容易に把握することができる。そのため、顔領域に基づき設定される顔の画像を含む画像領域を対象とした補正処理の補正の程度を適正に設定することができる。
B.変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
B1.変形例1:
上記実施例では、決定顔領域FAfの設定(図3のステップS170)は、検出された器官領域に基づき原顔領域FAoの傾きを調整することにより行われているが、原顔領域FAoの傾きの代わりに、または、原顔領域FAoの傾きに加えて、原顔領域FAoの位置と大きさとの少なくとも1つを調整することにより決定顔領域FAfが設定されるとしてもよい。原顔領域FAoの位置の調整は、例えば、右目領域EA(r)の重心と左目領域EA(l)の重心とを結ぶ線分(以下「両目連結線分」とも呼ぶ)の中点と、決定顔領域FAfの横方向および縦方向の大きさを所定の比率で分割する点と、が一致するように、原顔領域FAoを平行移動することによって行う。また、原顔領域FAoの大きさの調整は、例えば、決定顔領域FAfの横方向の大きさが、両目連結線分の長さの所定倍となり、決定顔領域FAfの縦方向の大きさが、両目連結線分と口領域MAの重心との距離の所定倍となるように、原顔領域FAoを拡大または縮小することにより行う。
B2.変形例2:
上記実施例では、器官領域検出処理(図3のステップS150)において3種類の器官に対応する器官領域(右目領域EA(r)と左目領域EA(l)と口領域MA)の少なくとも1つが検出されなかった場合に、器官領域が検出されなかったと判定されるとしているが、3種類の器官領域の少なくとも1つが検出された場合には器官領域が検出されたと判定されるものとしてもよい。この場合には、情報記録処理(図3のステップS200)において、検出された器官領域に関する器官領域特定情報が、画像ファイルの付属情報格納領域に格納されるとしてもよい。また、この場合にも、検出された器官領域に基づき原顔領域FAoを調整して決定顔領域FAfを設定することが可能であり、原顔領域FAoが調整された場合には、顔領域調整実行情報として原顔領域FAoの調整が実行されことを示す情報が、画像ファイルの付属情報格納領域に格納されるとしてもよい。
あるいは、口領域MAの検出結果に関わらず、顔傾きの推定に用いられる右目領域EA(r)と左目領域EA(l)の両者が検出された場合には器官領域が検出されたと判定され、右目領域EA(r)と左目領域EA(l)の少なくとも一方が検出されなかった場合には器官領域が検出されなかったと判定されるとしてもよい。この場合も同様に、検出された器官領域に関する器官領域特定情報が画像ファイルの付属情報格納領域に格納されるとしてもよいし、原顔領域FAoが調整された場合には、顔領域調整実行情報として原顔領域FAoの調整が実行されことを示す情報が画像ファイルの付属情報格納領域に格納されるとしてもよい。
なお、3種類の器官領域の少なくとも1つが検出されたときには器官領域が検出されたと判定されるとした場合、顔傾きの推定に右目領域EA(r)と左目領域EA(l)との一方または両方が利用できないことが考えられる。このような場合には、器官領域が検出された器官検出用画像ODImgの傾きを顔傾きと推定すればよい。
B3.変形例3:
上記実施例における顔領域検出処理(図3)では、決定顔領域FAfの設定(ステップS170およびS180)が実行されているが、顔領域検出処理において決定顔領域FAfの設定は必ずしも実行される必要はなく、器官領域検出処理(ステップS150)の後に直ちに情報記録処理(ステップS200)が実行されるとしてもよい。
また、顔領域検出処理において決定顔領域FAfの設定が実行されるか否かに関わらず、情報記録処理(ステップS200)において、決定顔領域特定情報および器官領域検出成否情報(図14参照)のみが、画像ファイルの付属情報格納領域に格納されるとしてもよい。あるいは、情報記録処理において、決定顔領域特定情報および器官領域検出成否情報に加えて、器官領域特定情報と顔領域調整実行情報との少なくとも1つが、付属情報格納領域に格納されるとしてもよい。
また、情報記録処理(ステップS200)では、各情報(決定顔領域特定情報、器官領域検出成否情報、器官領域特定情報、顔領域調整実行情報)が画像ファイルの付属情報格納領域に格納されるとしているが、各情報は、必ずしも画像ファイルの付属情報格納領域に格納されて画像ファイルに付加される必要はなく、画像ファイルとは独立したデータとして、原画像データに関連づけられるものとしてもよい。
B4.変形例4:
上記実施例では、画像処理部200が画像ファイルに含まれる器官領域検出成否情報に基づき変形処理の程度(変形量)を設定するとしているが、画像処理部200が画像ファイルに含まれる他の情報(器官領域特定情報や顔領域調整実行情報)に基づき変形処理の程度(変形量)を設定するとしてもよい。例えば、画像処理部200が、画像ファイルに器官領域特定情報が含まれない場合の補正の程度が、器官領域特定情報が含まれる場合の補正の程度より小さくなるように、変形処理の程度(変形量)を設定してもよい。あるいは、画像処理部200が、顔領域調整実行情報が原顔領域FAoの調整が実行されなかったことを示している場合の補正の程度が、顔領域調整実行情報が原顔領域FAoの調整が実行されたことを示している場合の補正の程度より小さくなるように、変形処理の程度(変形量)を設定してもよい。このようにしても、自然な変形処理を実現することが可能となる。
また、画像ファイルに含まれる各情報は、画像データに対する変形処理が行われる場合の変形量の設定だけでなく、画像データに対する他の補正処理(例えば肌色補正)が行われる場合の補正の程度の設定にも利用可能である。
B5.変形例5:
上記実施例における原顔領域検出処理(図4)や器官領域検出処理(図10)の態様はあくまで一例であり、種々変更可能である。例えば顔検出用画像FDImg(図5参照)のサイズは320画素×240画素に限られず、他のサイズであってもよいし、原画像OImgそのものを顔検出用画像FDImgとして用いることも可能である。また、使用されるウィンドウSWのサイズやウィンドウSWの移動方向および移動量(移動ピッチ)は上述したものに限られない。また、上記実施例では、顔検出用画像FDImgのサイズが固定され、複数種類のサイズのウィンドウSWが顔検出用画像FDImg上に配置されることにより複数サイズの判定対象画像領域JIAが設定されているが、複数種類のサイズの顔検出用画像FDImgが生成され、固定サイズのウィンドウSWが顔検出用画像FDImg上に配置されることにより複数サイズの判定対象画像領域JIAが設定されるものとしてもよい。
また、上記実施例では、累計評価値Tvを閾値THと比較することにより顔判定および器官判定を行っているが(図6参照)、顔判定および器官判定を複数の判別器を用いた判別等の他の方法によって行ってもよい。顔判定および器官判定の方法に応じて、顔学習データFLDおよび顔器官学習データOLDの設定に用いられる学習方法も変更される。また、顔判定および器官判定は、必ずしも学習を用いた判別方法により行われる必要はなく、パターンマッチング等の他の方法により行われるとしてもよい。
また、上記実施例では、30度刻みの12種類の特定顔傾きが設定されているが、より多くの種類の特定顔傾きが設定されてもよいし、より少ない種類の特定顔傾きが設定されてもよい。また、必ずしも特定顔傾きが設定される必要はなく、0度の顔傾きについての顔判定が行われるとしてもよい。また、上記実施例では、顔サンプル画像群に基本顔サンプル画像を拡大・縮小した画像や回転させた画像が含まれるとしているが、顔サンプル画像群に必ずしもこのような画像が含まれる必要はない。
上記実施例において、あるサイズのウィンドウSWにより規定される判定対象画像領域JIAについての顔判定(または器官判定)で顔の画像(または顔の器官の画像)に対応する画像領域であると判定された場合には、当該サイズより所定の比率以上小さいサイズのウィンドウSWを配置する場合には、顔の画像に対応する画像領域であると判定された判定対象画像領域JIAを避けて配置するものとしてもよい。このようにすれば、処理の高速化を図ることができる。
上記実施例では、メモリカードMCに格納された画像データが原画像データに設定されているが、原画像データはメモリカードMCに格納された画像データに限らず、例えばネットワークを介して取得された画像データであってもよい。
上記実施例では、顔の器官の種類として、右目と左目と口とが設定されており、器官領域として、右目領域EA(r)と左目領域EA(l)と口領域MAとの検出が行われるが、顔の器官の種類として顔のどの器官を設定するかは変更可能である。例えば、顔の器官の種類として、右目と左目と口とのいずれか1つまたは2つのみが設定されるとしてもよい。また、顔の器官の種類として、右目と左目と口とに加えて、または右目と左目と口との少なくとも1つに代わり、顔のその他の器官の種類(例えば鼻や眉)が設定され、器官領域としてこのような器官の画像に対応する領域が検出されるとしてもよい。
上記実施例では、原顔領域FAoおよび器官領域は矩形の領域であるが、原顔領域FAoおよび器官領域は矩形以外の形状の領域であってもよい。
上記実施例では、画像処理装置としてのプリンタ100による顔領域検出処理を説明したが、処理の一部または全部がパーソナルコンピュータやデジタルスチルカメラ、デジタルビデオカメラ等の他の種類の画像処理装置により実行されるものとしてもよい。また、プリンタ100はインクジェットプリンタに限らず、他の方式のプリンタ、例えばレーザプリンタや昇華型プリンタであるとしてもよい。
上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア(コンピュータプログラム)は、コンピュータ読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやCD−ROMのような携帯型の記録媒体に限らず、各種のRAMやROM等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。