以下、本発明の好ましい実施形態について、添付図面を参照して説明する。図1は、本発明の画像処理装置の第1実施形態である多機能周辺装置(以下、「MFP(Multi Function Peripheral)」と称す)1の外観構成を示した斜視図である。
このMFP1は、フォトキャプチャー機能、コピー機能、スキャナ機能、メディアキャプチャ機能などの各種機能を有する多機能周辺装置である。メディアキャプチャ機能では、後述するスロット部6に装着されたメディアカード(特許請求の範囲の記憶媒体の一例)から画像ファイルを読み出して印刷出力する処理、メディアカードから読み出した画像ファイルに対応した画像をLCD5に表示出力する処理、スキャナ機能により読み取られた画像データをメディアカードに保存する処理などを実行できる。
MFP1は、スロット部6に装着されたメディアカード内の画像ファイルの内容をユーザが把握できるように、インデックス画像を配列した画像一覧を出力する。特に、本実施形態のMFP1は、閲覧性の良い画像一覧を出力するように構成されているが、詳細は後述する。
MFP1の上部には、原稿を読み取るためのスキャナ2が配置されている。また、筐体内部には記録用紙に画像を印刷する装置として、所謂インクジェットプリンタで構成されたプリンタ3が内蔵されている。
また、MFP1の前面には、スロット部6が設けられている。このスロット部6には、コンパクトフラッシュ(登録商標)、SDメモリカードなどの各種メディアカードを直接挿入できるカードスロットが設けられている。
また、原稿カバー体の前方には、操作パネルが設けられており、複数のキーやタッチパネルで構成される操作部4、およびLCD5を具備する。MFP1は、LCD5に操作手順や実行中の処理の状態を表示させると共に、操作部4の操作に対応する情報を表示させる。
図2を参照して、MFP1の電気的構成について説明する。図2は、MFP1の電気的構成を示すブロック図である。MFP1は、CPU11、ROM12、RAM13、EEPROM14、スキャナ2、プリンタ3、操作部4、LCD5、スロット部6を主に有している。
このうち、CPU11、ROM12、RAM13、EEPROM14は、バスライン26を介して互いに接続されている。また、スキャナ2、プリンタ3、操作部4、LCD5、スロット部6、バスライン26は、入出力ポート27を介して互いに接続されている。
CPU11は、ROM12、RAM13やEEPROM14に記憶される固定値やプログラムに従って、MFP1が有している各機能の制御や、入出力ポート27と接続された各部を制御するものである。
ROM12は、CPU11によって実行される制御プログラム12aを記憶すると共に、電源遮断後も内容を保持可能な不揮発性のメモリである。制御プログラム12aは、後述する図7〜図11にフローチャートで示す処理を実行するためのプログラムを含んでいる。
ROM12には、さらに横方向画像配置数記憶領域12b、1ページ画像配置数記憶領域12cが設けられている。
横方向画像配置数記憶領域12bは、「横方向の配置枚数」を記憶する領域である。「横方向の配置枚数」は、画像一覧において、横一列に並べて配置可能なインデックス画像の数を示す値である。なお、本実施形態のMFP1には、予め印刷用紙サイズ(L版、A4、Letterなど)、および印刷モード(高精細、普通、高速など)に応じて、複数種類の「横方向の配置枚数」が記憶されており、後述する配置印刷処理(図10,図11参照)では、この中から適した値を読み出して用いるものとして説明する。
1ページ画像配置数記憶領域12cは、「1ページ内画像配置数」を記憶する領域である。「1ページ内画像配置数」は、1ページ分の記録用紙に形成する画像一覧に、最大で何個分のインデックス画像を配置可能であるかを示す値である。なお、本実施形態においては、予め印刷用紙サイズおよび印刷モードに応じて、複数種類の「1ページ内画像配置数」が記憶されており、後述する配置印刷処理(図10,図11参照)では、この中から適した値を読み出して用いるものとして説明する。
RAM13は、MFP1の各操作の実行時に各種のデータを一時的に記憶するためのメモリであり、抽出フレーム数記憶領域13a、処理ファイル数記憶領域13b、処理画像総数記憶領域13c、生成ページ数記憶領域13d、グループ情報記憶領域13g、ファイル情報記憶領域13h、配置情報記憶領域13i、フレーム画像情報記憶領域13j、デコードデータ記憶領域13k、カウンタ記憶領域13mが設けられている。
ここで、本実施形態で用いる用語の意味を説明する。本実施形態において、「動画像」とは、多数のフレーム画像を切り替え表示することにより再生される画像を意味している。「動画像ファイル(特許請求の範囲に記載の動画像情報に相当)」は、動画像を再生するためのファイルであって、例えば、AVI動画ファイル、クイックタイム動画ファイルなどで構成される。ただし、動画像を再生可能な情報であれば、どのような形式のファイルであっても差し支えない。また、本実施形態において、「フレーム画像情報」は、動画像を構成する1のフレーム画像に対応した情報を意味している。
抽出フレーム数記憶領域13aは、「フレーム画像抽出枚数」を記憶する領域である。「フレーム画像抽出枚数」は、1の動画像ファイル当たり、何枚分のフレーム画像に対応したフレーム画像情報を抽出するかを示す値である。例えば、「フレーム画像抽出枚数」として「5」が記憶されている場合、MFP1は、メディアカードに格納された動画像ファイルの各々について、1の動画像ファイル当たり、5枚のフレーム画像に対応したフレーム画像情報を抽出し、その抽出したフレーム画像情報に基づいて、1の動画像ファイル当たり、5個のインデックス画像を、画像一覧に配置する。
本実施形態のMFP1は、ユーザが操作部4から入力した任意の値を「フレーム画像抽出枚数」として、抽出フレーム数記憶領域13aに記憶するものとして説明するが、「フレーム画像抽出枚数」が予めROM12などに記憶されていたり、動画像ファイルのサイズが大であるほど、「フレーム画像抽出枚数」が大となるように予め定められた関係に従って、「フレーム画像抽出枚数」が自動的に決定されても良い。
処理ファイル数記憶領域13bは、「総処理ファイル数」を記憶する領域である。「総処理ファイル数」は、メディアカードに格納される静止画像ファイル(特許請求の範囲に記載の静止画像情報の一例)と動画像ファイルの合計を示す値である。
処理画像総数記憶領域13cは、「処理画像総数」を記憶する領域である。「処理画像総数」は、画像一覧内に形成するインデックス画像の総数を示す値である。生成ページ数記憶領域13dは、「生成ページ数」を記憶する領域である。「生成ページ数」は、後述する配置印刷処理(図10、図11)の実行により出力する画像一覧の総ページ数を示す値である。
グループ情報記憶領域13g、ファイル情報記憶領域13h、配置情報記憶領域13iについては、図4から図6を参照して後述する。
フレーム画像情報記憶領域13jは、動画ファイルから抽出されるフレーム画像情報を格納する領域である。デコードデータ記憶領域13kは、フレーム画像情報をデコード処理した結果、または、静止画像ファイルをデコード処理した結果を記憶する領域である。
カウンタ記憶領域13mは、各種カウンタを記憶する領域である。EEPROM14は、書換可能な不揮発性のメモリである。
図3は、MFP1が、1ページの記録用紙に印刷出力する画像一覧20の一例を示す図である。図3に示すように、画像一覧20には、動画像ファイルから抽出されるフレーム画像情報に対応するインデックス画像21と、静止画像ファイルに対応するインデックス画像22とからなる画像群が、所定の条件に従った順序で配列されている。
MFP1は、メディアカードに静止画像ファイルと動画像ファイルとが混在している場合、図3に示すように、フレーム画像情報に対応するインデックス画像21と静止画像ファイルに対応するインデックス画像22とが混在した画像一覧20を出力する。よって、ユーザは、動画像ファイルの内容を示すインデックス画像21と、静止画像ファイルの内容を示すインデックス画像22とを、1ページの画像一覧20によって、一度に視認することができ、利便性が高い。
また、MFP1は、インデックス画像21,22を含む画像群が、撮影日時に従った順序で配列されるように、インデックス画像21,22の各々について配置順序を決定し、その決定した配置順序でインデックス画像21,22を配列した画像一覧20を出力する。
図3に示す画像一覧20はその一例であるが、例えば、画像一覧20の左側から右側へ向かうにつれて、撮影日時が新しくなるような順序で、横一列分のインデックス画像21,22が配列し、その横一列分の配列の下に、次に撮影日時が新しい横一列分のインデックス画像21,22が配列されるように、インデックス画像21,22の各々について配置順序を決定する。
詳細な説明は後述するが、MFP1は、静止画像ファイルに基づくインデックス画像であるか、動画像ファイルに基づくインデックス画像であるかに関わらず、撮影日時のみを条件としてソートした配置順序を決定し、その配置順序でインデックス画像21,22を配列した画像一覧20を出力する。よって、例えば、動画像で撮影したか、静止画像で撮影したかをユーザが覚えていない場合であっても、撮影日時がかなり古いものであるのか、あるいは最近のものであるのかなど、撮影日時を手がかりに、目的とする画像を迅速に探し当てることができる。
また、MFP1は、1の動画像ファイル当たり、1枚以上のフレーム画像に相当するフレーム画像情報を抽出するように構成されている。すなわち、画像一覧20には、1の動画像ファイル当たり、1個以上のインデックス画像が配置されるように構成されている。
また、1つの動画像ファイル当たり、2枚以上のフレーム画像に相当するフレーム画像情報を抽出するように構成すれば、ユーザは、1の動画像ファイル当たり2枚以上のフレーム画像を視認することができる。その結果、動画像ファイルに含まれる、時間的な変化も視認することができ、動画像ファイルの内容を正確に把握することができるので、より迅速に目的とする画像を探し当てることができる。
なお、図3に示すように、MFP1は、同一の動画像ファイルに由来する複数のインデックス画像21が隣接して配置される場合、例えば、映画用フィルムを擬した図柄により連結した体裁で、印刷出力することとしている。このようにすれば、ユーザは、同一の動画像ファイルに由来するインデックス画像21をまとめて把握できると共に、静止画像ファイルに対応するインデックス画像22と、フレーム画像情報に対応するインデックス画像21とを一目で区別することができ、利便性が高い。
また、詳細は後述するが、本実施形態のMFP1は、インデックス画像21,22を撮影日毎のグループに分類し、グループ毎に画像一覧20を出力するように構成されている。よって、例えば、画像一覧20のヘッダ部分に、グループの撮影日23が印刷されても良い。
図4は、ファイル情報記憶領域13hの構成を模式的に示す図である。図4に示すように、ファイル情報記憶領域13hには、ファイルIDを記憶するファイルID記憶領域201、ファイル名を記憶するファイル名記憶領域202、ファイル種類を記憶するファイル種類記憶領域203、抽出フレーム数を記憶する抽出フレーム数記憶領域204、総フレーム数を記憶する総フレーム数記憶領域205、fps情報を記憶するfps情報記憶領域206、ファイル日付情報を記憶するファイル日付情報記憶領域207、ファイル時間情報を記憶するファイル時間情報記憶領域208、ファイル付加情報記憶領域209が設けられ、ファイル名、ファイル種類、抽出フレーム数、fps情報、ファイル日付情報、ファイル時間情報、ファイル付加情報からなるファイル情報200を、そのファイル情報200を管理するファイルIDに対応付けて記憶する。MFP1は、画像一覧20(図3参照)におけるインデックス画像21,22の配置順序を決定するための準備処理として、メディアカード内に格納された静止画像ファイルまたは動画像ファイルの各々についてファイル情報200を作成し、ファイル情報記憶領域13hに格納する。
ファイルID記憶領域201は、ファイルIDを記憶する領域である。ファイル名記憶領域202は、静止画像ファイルまたは動画像ファイルのファイル名を格納する領域である。図4に示すように、各ファイル名には、拡張子が付加されている。例えば、画像ファイルがJPEGファイルである場合は拡張子「jpg」が付加され、AVI動画ファイルである場合は拡張子「avi」が付加され、クイックタイム動画ファイルである場合は拡張子「mov」が付加される。
ファイル種類記憶領域203は、各画像ファイルの種類(フォーマット)を示す値を格納する領域である。画像ファイルの種類は、例えば、ファイル名に付加された拡張子に基づいて判定することができる。本実施形態では、画像ファイルの形式がJPEGファイル(拡張子jpg)である場合、JPEGファイルであることを示す値「0」をファイル種類記憶領域203に格納し、画像ファイルの形式がAVI動画ファイル(拡張子avi)である場合、値「1」をファイル種類記憶領域203に格納し、画像ファイルの形式がクイックタイム動画ファイル(拡張子mov)である場合、値「2」をファイル種類記憶領域203に格納する。
なお、各画像ファイルの先頭から数バイト分に格納されている情報に基づいて画像ファイルの種類を判定することもできる。例えば、先頭から2バイトが「0xFFD8」であればJPEGファイルであると判定できるし、先頭から2バイトが「0x424D」であれば、ビットマップデータであると判定することができる。これらの情報に基づいて、画像ファイルの種類を判定しても差し支えない。
抽出フレーム数記憶領域204は、何枚分のフレーム画像に対応したフレーム画像情報を、画像ファイルから抽出するかを示す値を記憶する領域である。静止画像ファイルの場合、抽出フレーム数記憶領域204には「1」が格納される。一方、動画像ファイルの場合、抽出フレーム数記憶領域204には、「2」以上の値が格納される。
総フレーム数記憶領域205は、各画像ファイルの総フレーム数を格納する領域である。動画像ファイルの場合は動画像ファイルに含まれる総フレーム数が格納され、静止画像である場合は常に1が格納される。
fps情報記憶領域206は、各画像ファイルのfps(Frame Per Second)情報を格納する領域である。静止画像ファイルである場合には「0」が格納される。一方、動画像ファイルである場合には、例えば、1秒間に60フレーム画像が存在することを示す「60」や、1秒間に30フレーム画像が存在することを示す「30」が、このfps情報記憶領域206に格納される。
ファイル日付情報記憶領域207は、各画像ファイルの撮影日を表すファイル日付情報を格納する領域である。例えば、撮影日「2008年1月15日」は、ファイル日付情報「20080115」として表すものとする。
ファイル時間情報記憶領域208は、各画像ファイルの撮影時間を表すファイル時間情報を格納する領域である。例えば、撮影時間「12時50分45秒」は、ファイル時間情報「125045」として表すものとする。画像ファイルが動画像ファイルの場合は、撮影開始時間を表す情報が、ファイル時間情報として格納される。なお、ファイル日付情報およびファイル時間情報が、特許請求の範囲に記載の撮影日時情報に相当する。
以降の説明では、各画像ファイルのヘッダに記述された情報を読み出してくることにより、総フレーム数、fps情報、ファイル日付情報およびファイル時間情報を取得するものとするが、他の手段により、これらの情報を取得しても良い。
ファイル付加情報記憶領域209は、各画像ファイルのその他の固有情報を格納する領域である。
本実施形態のMFP1は、ファイル情報記憶領域13hに格納された各画像ファイルの固有情報に基づいて、撮影日時に従った順序でインデックス画像が配列されるように、インデックス画像の配置順序を決定する。決定した配置順序を示す情報は、図5に示す配置情報記憶領域13iに格納する。
図5は、配置情報記憶領域13iの構成を模式的に示す図である。図5に示すように、配置情報記憶領域13iは、ファイルID、グループNo、抽出フレーム番号、画像日付情報、画像時間情報、画像付加情報からなる配置情報300と、その配置情報300に対応する配置順序とを記憶する。
図5に示すように、配置情報記憶領域13iには、配置順序記憶領域301、ファイルID記憶領域302、グループNo記憶領域303、抽出フレーム番号記憶領域304、画像日付情報記憶領域305、画像時間情報記憶領域306、画像付加情報記憶領域307が設けられる。
配置情報記憶領域301は、配置順序を記憶する領域である。後述する配置印刷処理(図10,図11参照)では、配置順序に従った順序で、配置情報300が読み出され、各配置情報300で特定されるフレーム画像または静止画像のインデックス画像が、配置順序に従った順序で、画像一覧20に配列される。
ファイルID記憶領域302は、ファイルIDを記憶する領域である。図4を参照して説明したように、ファイル情報記憶領域13hには、ファイルIDとファイル名とが1対1で対応付けて記憶されているので、ファイルIDから、1の画像ファイルを特定することができる。
グループNo記憶領域303は、グループNoを記憶する領域である。なお、グループNoについては、図6を参照して後述する。
抽出フレーム番号記憶領域304は、抽出フレーム番号を記憶する領域である。上述したように、1の動画像ファイルについて複数のフレーム画像情報が抽出される。よって、先頭から数えて何番目のフレーム画像情報であるかを示す情報が、「抽出フレーム番号」として、抽出フレーム番号記憶領域304に格納される。
ここで、「抽出フレーム番号」は、「総フレーム数記憶領域205」に記憶された動画像ファイルの総フレーム数と、「抽出フレーム数記憶領域204」に記憶された抽出フレーム数と、動画像のうち何枚目に抽出されるかを表すフレーム画像数カウンタ値を用いて、例えば、下記のように算出することができる。
(抽出フレーム番号)=[(フレーム画像数カウンタ値−1)×(総フレーム数)÷(抽出フレーム数)]
ここで[]はガウス記号を表し、[a]はaを超えない最大の整数を表す。
画像日付情報記憶領域305は、ファイルID記憶領域302に格納されたファイルIDで特定される画像ファイルの撮影日を表す画像日付情報が格納される領域である。画像時間情報記憶領域306は、撮影時間を表す画像時間情報が格納される領域である。静止画像ファイルについては、ファイル情報記憶領域13hの対応する領域に格納されたファイル時間情報が、この画像時間情報記憶領域306にコピーされる。
一方、動画像ファイルについては、その動画像ファイルから複数のフレーム画像情報が抽出されるので、フレーム画像情報毎に、撮影時間を表す画像時間情報を取得し、画像時間情報記憶領域306に記憶する。なお、フレーム画像情報毎の画像時間情報を算出する具体的演算例については、図7に示すフローチャートを参照して後述する。
画像加情報記憶領域307には、各画像のその他の情報を格納する領域である。なお、本第1実施形態では、画像付加情報記憶領域307を使用しない。画像付加情報記憶領域307の用途については、第2実施形態以降で詳述する。
後述する配置印刷処理(図10,図11参照)では、配置情報記憶領域13iに記憶された配置情報300に基づいて、インデックス画像21,22が撮影日時に従った順序で配列された画像一覧20(図3参照)を印刷出力する。
さらに、本実施形態のMFP1は、インデックス画像21,22を撮影日毎のグループに分類し、グループ毎に画像一覧20を印刷出力する。例えば、「2008年1月15日」に撮影した画像ファイルと、「2008年1月20日」に撮影した画像ファイルとがメディアカードに格納されているのであれば、「2008年1月15日」に撮影された画像ファイルのインデックス画像からなる画像一覧20と、「2008年1月20日」に撮影された画像ファイルのインデックス画像からなる画像一覧20とを印刷出力するように構成されている。
図6は、グループ情報記憶領域13gの構成の一例を示す図である。図6に示すように、グループ情報記憶領域13gには、グループ数記憶領域401と、グループ単位情報記憶領域402と、グループNo記憶領域403とが設けられている。
グループ数記憶領域401は、インデックス画像21,22を分類するために生成されたグループ数を記憶する領域である。図6に示す例では、インデックス画像21,22を分類するために「10」のグループが生成されたことを示している。
グループ単位情報記憶領域402は、グループ毎の情報を記憶する領域である。グループ単位情報記憶領域402には、グループNoを記憶する記憶領域403と、そのグループNoで特定されるグループに分類されるインデックス画像の数を記憶するグループ画像数記憶領域404とが設けられる。図6に示す例では、グループNoが「1」のグループに、「10」個のインデックス画像21,22が分類されることを示している。
本実施形態のMFP1によれば、グループ毎の画像一覧20を出力することにより、ユーザはグループ毎(第1実施形態では撮影日毎)に画像一覧20を視認することができるから、ユーザは撮影日ごとのグループに分類された閲覧性の良い画像一覧を得ることができる。
図7は、MFP1で実行される配置順決定処理(S100)を示すフローチャートである。図7に示す配置順決定処理(S100)は、スロット部6にメディアカードが装着され、ユーザにより画像一覧20の印刷出力の実行指示が入力されると実行される。
この配置順決定処理(S100)は、動画像ファイルから抽出するフレーム画像情報と、メディアカードから読み出される静止画像ファイルとの各々について、各画像情報の撮影日時を表す画像日付情報および画像時間情報を取得し、その取得した画像日付情報および画像時間情報を条件として、インデックス画像21,22の配置順序を決定する処理である。
まず、ユーザが操作部4から入力した値を、「フレーム画像抽出枚数」として抽出フレーム数記憶領域13aに記憶する(S101)。次に、メディアカード内に格納された静止画像ファイルと動画像ファイルとの合計を示す「総処理ファイル数」を算出し、処理ファイル数記憶領域13bに記憶する(S102)。
次に、処理ファイル数カウンタ、処理画像数カウンタ、フレーム画像抽出枚数カウンタを、それぞれ0で初期化する(S103)。なお、これらのカウンタは、カウンタ記憶領域13m(図2参照)に設けられている。
次に、メディアカードに格納された画像ファイルのうち、1の画像ファイルを処理対象として選択し、その画像ファイルのファイル名、画像ファイルの種類を取得する。そして取得したファイル名および画像ファイルの種類を示す値を、処理ファイル数カウンタ値のファイルIDに対応した、ファイル名記憶領域202、ファイル種類記憶領域203(図4参照)へ、それぞれ記憶する(S104)。
そして、選択した画像ファイルが動画像ファイルであるか静止画像ファイルであるかを判断する(S105)。動画像ファイルであると判断した場合(S105:動画像)、その動画像ファイルのファイル日付情報、ファイル時間情報、およびfpsを表すfps情報を、その動画像ファイルのヘッダから取得する(S106)。
そして、処理画像数カウンタ値の配置順序に対応したファイル日付情報記憶領域207へファイル日付情報を記憶し、ファイル時間情報記憶領域208へファイル時間情報を記憶し、fps情報記憶領域206へfps情報を記憶する(S107)。
次に処理画像数カウンタ値の配置順序に対応した配置情報記憶領域13i(図5参照)のファイルID記憶領域302へ、現時点における処理ファイル数カウンタの値を記憶する。また、現時点におけるフレーム画像抽出枚数カウンタの値から抽出フレーム番号を算出し、処理画像数カウンタ値の配置順序に対応した抽出フレーム番号記憶領域304へ記憶する(S108)。
次に、フレーム画像情報の時間情報を算出し、算出した時間情報を、画像時間情報として、配置順序に対応する画像時間情報記憶領域306へ記憶する(S109)。具体的には、まず、動画像ファイルの撮影開始時間を表すファイル時間情報をVideoTime、fps情報をFPS、フレーム画像情報の撮影時間を表す画像時間情報をFrameTime、処理対象のフレーム画像情報を特定する抽出フレーム番号をNとする。
そして、ファイル時間情報VideoTimeを、以下のように、動画像時間情報VT_Hour、動画像分情報VT_Minute、動画像秒情報VT_Secondに分解する。
VT_Hour = [ VideoTime/10000 ]
VT_Minute = [ (VideoTime - VT_Hour×10000)/100 ]
VT_Second = VideoTime - (VT_Hour×10000 + VT_Minute×100)
次に、フレーム時情報Frame_Hour、フレーム分情報Frame_Minute、フレーム秒情報Frame_Secondを、例えば、下記の数式1のように算出する。
(数式1)
ここでCal_Second,Cal_Minute,Cal_Hourは上記情報を求めるための一時変数とする。
また、A mod BはAをBで割った時の剰余を表す
Cal_Second = VT_Second + [ N / FPS]
Cal_Minute = VT_Minute + [ Cal_Second / 60 ]
Cal_Hour = VT_Hour + [ Cal_Minute / 60 ]
Frame_second = Cal_Second mod 60
Frame_Minute = Cal_Minute mod 60
Frame_Hour = Cal_Hour mod 24
以上を、例えば、下記の数式2を用いて結合し、フレーム画像情報の撮影時間を表す画像時間情報FrameTimeを算出する。
(数式2)
FrameTime = Frame_Hour×10000 + Frame_Minute×100 + Frame_Second
同様にして、動画像ファイルのファイル日付情報をVideoDate、抽出するフレーム画像情報の画像日付情報をFrameDateとすると、まずVideoDateを動画像年情報VD_Year、動画像月情報VD_Month、動画像日情報VD_Dayに、例えば、下記の数式3を用いて分解する。
(数式3)
VD_Year = [ VideoDate/10000 ]
VD_Month = [ (VideoDate - VD_Year×10000)/100 ]
VD_Day = VideoDate - (VD_Year×10000 + VD_Month×100)
次に、画像日付算出処理を実行する(S110)。画像日付算出処理は、フレーム年情報Frame_Year、フレーム月情報Frame_Month、フレーム日情報Frame_Dayを算出する処理である。
図8は、画像日付算出処理を示すフローチャートである。なお、図8のフローチャートに示す変数Mは、現日付からM日進めることを意味する変数である。
まず、フレーム年情報Frame_Year、フレーム月情報Frame_Month、フレーム日情報Frame_Dayに、それぞれ、動画像年情報VD_Year、動画像月情報VD_Month、動画像日情報VD_Dayを代入する(S1201)。次に、変数Mに、[Cal_Hour/24]を代入する(S1202)。次にMが0であるかを判断し(S1203)、肯定されると(S1203:Yes)、本処理を終了する。
一方、否定されると(S1203:No)、フレーム日情報Frame_Dayを判断する(S1204)。「1以上27以下」と判断されると(S1204:1以上27以下)、Frame_Dayに「1」を加算する(S1205)。
一方、S1204の判断において、「28または29」と判断されると(S1204:28or29)、Frame_Monthが「2」であるか否かを判断する(S1206)。否定される場合(S1206;No)、S1205の処理に移行する。
一方、肯定されると(S1206:Yes)、次に、Frame_Dayが「28」であるかを判断する(S1208)。否定される場合(S1208:No)、Frame_Dayに「1」を代入し、Frame_Monthに「1」を加算する(S1210)。
一方、S1208の判断が肯定されると(S1208:Yes)、Frame_Yearで示される年がうるう年か否かを判断する(S1209)。肯定される場合(S1209:Yes)、S1205の処理に進む。否定される場合(S1209:No)、S1210の処理に進む。
次に、S1204の判断において、「30」と判断されると(S1204:30)、次に、Frame_Monthが4,6,9,11のいずれかであるかを判断する(S1211)。肯定される場合(S1211:Yes)、S1210の処理に進む。
一方、否定される場合(S1211:No)、Frame_Dayに「1」を加算する(S1216)。次に、S1204の判断において、「31」と判断されると(S1204:31)、次に、Frame_Yearが12であるかを判断する(S1215)。否定される場合(S1215:No)、S1216の処理に進む。
一方、肯定される場合(S1215:Yes)、Frame_Dayに「1」を代入し、Frame_Monthに「1」を代入し、Frame_Yearに「1」を加算する(S1217)。
S1205,S1210,S1216,S1217の処理の後は、変数Mから「1」減算し(S1202)、S1203に戻る。そして、S1203の判断が肯定されると(S1203:Yes)、本処理を終了する。
図7に戻り説明する。図8に示す処理で算出した値を、例えば下記の数式5を用いて結合し、フレーム画像情報の撮影日付を表す画像日付情報FrameDateを算出する。算出された画像日付情報は画像日付情報記憶領域305へ記憶する(S111)。
(数式5)
FrameDate = Frame_Year×10000 + Frame_Month×100 + Frame_Day
次に、処理画像数カウンタ、およびフレーム画像抽出枚数カウンタに、それぞれ「1」を加算する(S113)。
次に、フレーム画像抽出枚数カウンタの値が、フレーム画像抽出枚数、すなわち、その動画像ファイルから抽出するフレーム画像情報の数以上となったか否かを判断する(S114)。S114の判断が否定される場合(S114:No)、S108に戻り処理を繰り返す。
一方、S114の判断が肯定される場合(S114:Yes)、次にフレーム画像抽出枚数カウンタを0で初期化し(S115)、処理ファイル数カウンタに1を加算する(S122)。そして、処理ファイル数カウンタの値が、メディアカードに格納される静止画像ファイルと動画像ファイルの合計を示す「総処理ファイル数」以上となったか否かを判断する(S123)。S123の判断が否定される場合(S123:No)、S104の処理に戻り、次の画像ファイルを処理対象として選択し、処理を繰り返す。
続いて、処理対象の画像ファイルが静止画像ファイルであると判断された場合(S105:静止画像)について説明する。静止画像ファイルである場合、処理画像数カウンタ値の配置順序に対応したファイルID記憶領域302へ、現時点における処理ファイル数カウンタの値を記憶する。また、処理画像数カウンタ値の配置順序に対応した抽出フレーム番号記憶領域304へ「0」を記憶する(S115a)。
次に、処理対象の静止画像ファイルのファイル日付情報およびファイル時間情報を取得する。そして、ファイル情報記憶領域13hのうち、処理ファイル数カウンタ値のファイルIDに対応したファイル日付情報記憶領域207(図4参照)へ、ファイル日付情報を記憶し、同ファイルIDに対応したファイル時間情報記憶領域208へ、ファイル時間情報を記憶する(S117)。なお、fps情報記憶領域206には「0」を記憶する。
そして、配置情報記憶領域13i(図5参照)のうち、処理画像数カウンタ値の配置順序に対応する画像日付情報記憶領域305へ、処理対象の静止画像ファイルのファイル日付情報を記憶する。また、同配置順序に対応する画像時間情報記憶領域306へ、処理対象の静止画像ファイルのファイル時間情報を記憶する(S119)。そして、処理画像数カウンタに1を加算し(S121)、S122の処理に移行する。
このように、S101からS123の処理によれば、配置情報記憶領域13iに、ファイルID、抽出フレーム番号、画像日付情報、画像時間情報が格納されることとなるが、この時点では、まだインデックス画像21,22の配置順序は未決定である。図9を参照して後述するS124以降の処理において、画像日付情報と画像時間情報とを条件として、配置情報をソートすることにより、撮影日時に従った配置順序が決定される。
図9は、図7に示す配置順決定処理(S100)の続きの部分を示すフローチャートであり、特に、画像日付情報に基づいて、画像一覧20に配置するインデックス画像21,22を分類する処理、および配置情報記憶領域13iに記憶された配置情報(図5参照)を、撮影日時に従った配置順序にソートする処理の部分を示している。
図9に示すように、まず、現時点における処理画像数カウンタの値を「処理画像総数」として、処理画像総数記憶領域13c(図2参照)に記憶する(S124)。そして、処理画像数カウンタを「0」で初期化する(S125)。ここで処理画像数カウンタはカウンタ記憶領域13m(図2参照)に設けられるカウンタである。
次に、配置情報記憶領域13i(図5参照)の画像日付情報記憶領域305に記憶された、画像日付情報に従って、グループNoを決定する(S126)。具体的には、処理画像数カウンタの値の配置順序に対応する、画像日付情報記憶領域305の値が、既に存在するグループの値と同一の場合は、その該当するグループNoを、この画像情報のグループNoに決定し、そうでない場合は新規のグループNoをこの画像情報のグループNoとして決定する。ただしNoの初期値は1であり、新規のグループNoはそれまでで最大のグループNo+1とする。
このようにすれば、撮影日が同日であるフレーム画像情報または静止画像ファイルに対応するインデックス画像21,22を同一グループに分類される一方で、撮影日が異なるフレーム画像情報または静止画像ファイルに対応するインデックス画像21,22は互いに別グループに分類されることとなる。
そして、処理画像数カウンタの値の配置順序に対応する、グループNo記憶領域303(図5参照)へ、決定したグループNoを記憶する(S127)。次に、処理画像数カウンタに「1」を加算し(S128)、処理画像数カウンタの値が、処理画像総数に記憶された値以上となったかを判断する(S129)。そして、S129の判断が否定される場合(S129:No)、S126から処理を繰り返す。
一方、S129の判断が肯定される場合(S129:Yes)、グループNoの最大値を、グループ数記憶領域401(図6参照)に記憶する(S130)。そして、グループNoの小さい順に、配置情報をソートする(S131)。なお、S131の処理においては、グループNoの小さい順に配置情報をソートすることができれば良いので、ソートアルゴリズムは特に限定するものではなく、例えば、クイックソート法やバブルソート法を用いることが可能である。
なお、図5に示す配置情報記憶領域13iは、配置情報記憶領域13iに記憶された配置情報が、グループNoの小さい順にソートされた状態を模式的に図示している。
図9に戻り説明する。次に、同一グループNoに含まれることとなるインデックス画像数を算出し(S132)、グループNoと対応付けてグループ画像数記憶領域404へ記憶する(S133)。次に、グループカウンタを1で初期化する(S134)。このグループカウンタは、カウンタ記憶領域13m(図2参照)に設けられるカウンタである。
次に、画像時間情報の小さい順に配置情報をソートする(S135)。このソートはグループ単位で行う。これにより、配置情報で特定されるインデックス画像21,22の各々について、対応する配置順序が決定する。
すなわち、同一グループに分類されたインデックス画像内で、画像時間情報(撮影時情報)に従った配置順序を決定する。後述する配置印刷処理(S200)では、グループ毎に画像一覧20が印刷出力されるが、同一グループ内のインデックス画像21,22は、画像時間情報が小さい順に配列されているから、1グループ内に多数のインデックス画像21,22が含まれる場合であっても、ユーザは撮影時間順に整列した閲覧性の良い画像一覧を得ることができる。
なお、画像時間情報が同一である場合は、元々の配置順序を変更しないことが好ましいので、S135の処理では、バブルソートなど単純なソートアルゴリズムが好適に用いられる。
次に、グループカウンタに1を加算し(S136)、グループカウンタの値がグループ数記憶領域401(図6参照)より大となったかを判断する(S137)。S137の判断が否定される場合(S137:No)、S135に戻り処理を繰り返す。一方、全てのグループについての処理を終了し、S137の判断が肯定されると(S137:Yes)、配置順決定処理(S100)を終了する。
図10は、配置印刷処理(S200)を示すフローチャートである。図10に示す配置印刷処理(S200)は、図7から図9を参照して説明した配置順決定処理(S100)に続けて実行される処理であり、画像一覧20を記録用紙に印刷出力する処理である。
まず、画像一覧20に配列される横一列分のインデックス画像21,22の数を示す「横方向の配置枚数」を、横方向画像配置数記憶領域12bから読み出す(S201)。次に、1ページ分の画像一覧20に配置可能なインデックス画像21,22の数を示す「1ページ内画像配置数」を、1ページ画像配置数記憶領域12cから読み出す(S202)。
次に、グループカウンタを1で初期化する(S203)。以降の処理では、このグループカウンタは、処理対象のグループのグループNoを示すカウンタとして機能する。次に、ページカウンタを1で初期化する(S204)。以降の処理では、このページカウンタは、処理対象のグループのうち、何ページ目の画像一覧20を処理対象としているのかを示すカウンタとして機能する。ページカウンタはカウンタ記憶領域13m(図2参照)に設けられるカウンタである。
次に、グループカウンタ値のグループNoに対応するグループ画像数を、グループ画像数記憶領域404から読みだす(S205)。すなわち、そのグループNoのグループに分類されたインデックス画像21,22の数を取得する。そして、読み出した「グループ画像数」と「1ページ内画像配置数」とから、処理対象のグループについて、何ページ分の画像一覧20を印刷出力するかを示す「生成ページ数」を算出し、生成ページ数記憶領域13d(図2参照)へ記憶する(S206)。本実施形態では、「生成ページ数」は、例えば下記の数式6を用いて算出する。
(数式6)
(生成ページ数) = [ (グループ画像数) / (1ページ内画像配置数) ] + 1
次に、レイアウト画像カウンタを0で初期化し(S207)、1ページの記録用紙内に配置する画像の枚数layout_noを算出する(S208)。本実施形態においては、layout_noは、例えば下記の数式7を用いて算出する。
(数式7)
(ページカウンタ値) < 生成ページ数 の時
layout_no = (1ページ内画像配置数)
(ページカウンタ値) ≧ 生成ページ数 の時
layout_no = (グループ画像数) - { (1ページ内画像配置数) × (ページカウンタ値) }
次に、配置順序に対応したファイルIDと、抽出フレーム番号とを配置情報記憶領域13iから読み出す(S209)。そして、読み出したファイルIDに対応する画像ファイルが、動画像ファイルであるか静止画像ファイルであるかを判定する(S210)。
S210の判定において、動画像ファイルと判定される場合(S210:動画像)、次に、動画像ファイルから上記抽出フレーム番号で特定される1フレーム画像分のフレーム画像情報を抽出する(S211)。
次に、抽出したフレーム画像情報をデコード処理し、デコードデータ記憶領域13kへ格納する(S212)。そして、デコードしたフレーム画像情報をインデックス画像21,22のサイズに縮小または拡大し、RAM13(図2参照)に設けられた配置用バッファの所定位置に配置する(S213)。
一方、S210の判定において、静止画像ファイルと判定される場合(S210:静止画像)、配置順序に対応したファイルIDで特定される静止画像ファイルをデコード処理して、デコードデータ記憶領域13kへ格納する(S214)。そして、デコードされた静止画像ファイルをインデックス画像21,22のサイズに縮小または拡大し、配置用バッファの所定位置に配置する(S215)。
このようにして、フレーム画像情報または静止画像ファイルのいずれかをデコード処理して配置用バッファに配置する処理を実行した後、次に、横方向に配置できる画像数の上限である「横方向の配置枚数」回分、処理を行ったか否かを判断する(S216)。S216の判断が否定される場合(S216:No)、次のデータの配置位置を示す横方向位置を更新する(S220)。
そして、レイアウト画像カウンタに「1」を加算し(S221)、レイアウト画像カウンタの値が、現在の処理対象の記録用紙に配置するインデックス画像21,22の数「layout_no」以上となったか否かを判断する(S222)。S222の判断が否定される場合(S222:No)、S209の処理に戻り、次の配置順序に対応した配置情報を処理する。
このようにして、処理を繰り返すことにより、メディアカードに格納される動画像ファイルの各々から、抽出フレーム数(特許請求の範囲に記載の所定枚数に相当)のフレーム画像に相当するフレーム画像情報が抽出され、配置バッファに配置される。また、メディアカードに格納される静止画像ファイルが抽出され、配置バッファに配置される。
このようにして処理を繰り返す内に、「横方向の配置枚数」回分の配置処理が実行されると、S216の判断が肯定されるので(S216:Yes)、次に、配置用バッファのデータをプリンタ3(図2参照)へ渡す(S217)。これにより、配置用バッファに配置された、横一列分のインデックス画像21,22に対応したデータが、プリンタ3による印刷処理にかけられ、画像一覧20を出力することができる。
そして、次の処理対象のインデックス画像21,22の横方向配置位置を示す横方向位置を初期化し(S218)、また、縦方向配置位置を示す縦方向位置を更新する(S219)。すなわち、画像一覧20における次の列の左端から、次のインデックス画像21,22が配列されるように、次の配置位置が決定される。そして、上述したS221、S222の処理を実行する。
このようにして処理をしたインデックス画像21,22の数が、処理対象の記録用紙に配置するインデックス画像数layout_noに到達すると、S222の判断が肯定されるので(S222:Yes)、図11に示す次の処理に移行する。
図11は、図10に示す配置印刷処理(S200)の続きを示すフローチャートであって、S222の判断が肯定される場合に実行される。
まず、配置用バッファに、未だ印刷処理を行っていないデータが存在するかを判断する(S223)。S223の判断が肯定される場合(S223:Yes)、その残りのデータをプリンタ3に渡し(S224)、プリンタ3にて印刷出力させ、S225の処理に移行する。ただし配置用バッファに画像が配置されない領域については白地出力とする。一方、S223の判断が否定される場合(S223:No)、S224の判断をスキップし、S225の処理に移行する。
そして、1ページ分のデータ出力が完了したことを示す印刷完了命令をプリンタ3に渡す(S225)。そして、ページカウンタに「1」を加算する(S226)。次に、配置用バッファにおける次のデータの配置位置を示す横方向位置および縦方向位置を初期化する(S227)。そして、ページカウンタの値が、現在の処理対象のグループについて、何ページ分の画像一覧20を印刷出力するかを示す「生成ページ数」より大となったかを判断する(S228)。S228の判断が否定される場合(S228:No)、図10に示すS207の処理に戻り、同グループについて、次ページの処理を開始する。
一方、S228の判断が肯定される場合(S228:Yes)、グループカウンタに1を加算する(S229)。そして、グループカウンタの値が、グループ数記憶領域401に記憶された値より大となったか否かを判断する(S230)。S230の判断が否定される場合(S230:No)、S204に戻り、処理を繰り返す。すなわち、次のグループNoで特定されるグループを処理対象として処理を繰り返す。
一方、S228の判断が肯定される場合(S228:Yes)、配置印刷処理(S200)を終了する。
なお、図10、図11に示す配置印刷処理(S200)において、同一の動画像ファイルに由来するインデックス画像21が、画像一覧20において互いに隣接する場合には、それらのインデックス画像21を連結する図柄(図3参照)を形成して印刷しても良いが、処理の詳細については、説明を省略する。
第1実施形態のMFP1によれば、図3を参照して説明したように、ファイル時間情報(すなわち、静止画像ファイルまたはフレーム画像情報の撮影時間)に従った配置順序でインデックス画像21,22が配列された画像一覧20を出力することができる。
次に、図12および図13を参照して、第2実施形態のMFP1について説明する。上記第1実施形態のMFP1では、ファイル日付情報とファイル時間情報とで表される撮影日時を条件としてインデックス画像21,22をグループに分類し、又は配置順序を決定していた。
これに対し、第2実施形態のMFP1では、各静止画像ファイルおよびフレーム画像情報について、輝度を表す輝度情報を取得し、その輝度情報を条件として配置順序を決定する。
なお、第2実施形態におけるMFP1の外観構成と電気的構成とは、第1実施形態におけるMFP1と同一のものであるとして説明を行う。また、本第2実施形態では、インデックス画像21,22の配置順序を決定するために、撮影日時に関する情報は用いない。よって、第2実施形態では、ファイル情報記憶領域13hのファイル日付情報記憶領域207とファイル時間情報記憶領域208とは用いないものとして説明する。また、同様に、第2実施形態では、配置情報記憶領域13iの画像日付情報記憶領域305と画像時間情報記憶領域306とは用いないものとして説明する。
以下、第1実施形態と同一の部分には同一の符号を付してその説明を省略し、第1実施形態と異なる点について説明する。
図12,図13は、第2実施形態のMFP1において実行される、配置順決定処理(S400)を示すフローチャートである。この配置順決定処理(S400)は、第1実施形態における配置順決定処理(S100)に代えて実行される。なお、図12,図13に示すフローチャートにおいて、第1実施形態のMFP1で実行される配置順決定処理(S100)のフローチャートと同一の部分については、同一の符号を付して説明を省略する。
図12に示すように、第2実施形態の配置順決定処理(S400)では、第1実施形態の配置順決定処理(S100)と同様に、メディアカードに格納された画像ファイルのファイル情報を作成し、ファイル情報記憶領域13h(図4)へ記憶する処理を実行する。
具体的には、選択した画像ファイルが動画像ファイルであるか静止画像ファイルであるかを判断し(S105)、動画像ファイルである場合(S105:動画像)、その動画像ファイルから、抽出フレーム番号で特定される1フレーム画像分のフレーム画像情報を抽出し、フレーム画像情報記憶領域13j(図2参照)に格納する(S406)。そして、抽出したフレーム画像情報をデコード処理する(S407)。なお、本実施形態では、デコード処理後のフレーム画像情報の画素値は、YCrCb色空間で表現されているものとして説明する。
次に、デコード処理したフレーム画像情報から輝度(Y値)の平均値を算出する(S408)。すなわち、画像を構成する全ての画素の輝度(Y値)について平均値を、例えば、下記の数式8から算出する。ここでは、フレーム画像情報を構成する総画素数をPN、各画素の輝度をYi(i = 0,1,2,,,PN-1)、輝度の平均値をYavgとする。
(数式8)
次に、このようにして取得した輝度(Y値)の平均値を輝度情報として取得し、画像付加情報記憶領域307へ記憶する(S409)。そして、処理画像数カウンタ、フレーム画像抽出枚数カウンタに1を加算し(S410)、フレーム画像抽出枚数カウンタの値がフレーム画像抽出枚数以上となったか否かを判断し(S411)、S411の判断が否定される間は(S411:No)、S108から処理を繰り返す。
そして、処理を繰り返すうちに、S411の判断が肯定されると(S411:Yes)、次にフレーム画像抽出枚数カウンタを0で初期化し(S412)、処理ファイル数カウンタに1を加算して(S122)、処理ファイル数カウンタの値が総処理ファイル数以上となったか否かを判断する(S123)。S123の判断が否定される間、S104から処理を繰り返す。
一方、S105の判断において、選択した画像ファイルが静止画像ファイルであると判断された場合(S105:静止画像)、その選択した画像ファイルをデコード処理し(S413)、次に、デコード処理した静止画像ファイルから輝度の平均値を算出する(S414)。そして、このようにして取得した輝度の平均値を輝度情報として取得し、画像付加情報記憶領域307へ記憶する(S415)。そして、処理画像数カウンタに1を加算し(S416)、S122の処理へ移行する。なお、静止画像ファイルの場合も、フレーム画像情報と同様の演算にて輝度情報を取得することができるので、詳細な説明は省略する。
図12に示す配置順決定処理(S400)によれば、フレーム画像情報と静止画像ファイルとの各々について、対応する画像に含まれる色、特に輝度に関係する輝度情報(色情報の一例)が取得される。そして、図13に示す処理を続けて実行することにより、輝度情報に従って、インデックス画像がグループに分類され、また配置順序が決定される。
図13は、図12に示す配置順決定処理(S400)の続きの部分を示すフローチャートであり、第1実施形態における図9に対応する図である。なお、図13に示すフローチャートにおいて、図9に示すフローチャートと同一の部分については同一の符号を付して、説明を省略する。
図9に示す第1実施形態の配置順決定処理(S100)では、配置情報記憶領域13i(図5参照)の画像日付情報記憶領域305に記憶された画像日付情報に従って、インデックス画像21,22を分類していたが、図13に示すように、第2実施形態では、輝度情報に基づいて、グループNoを決定する(S421)。
具体的には、輝度情報が閾値以上であるかどうかに基づいて、グループNoを決定する。なお、閾値は、ユーザが操作部4から入力することにより、設定するように構成されても良いし、予め固定値が設定されていても良い。
S421の処理では、例えば、閾値が1つ設定されているとき、輝度情報が閾値未満の場合は、グループNo「0」を決定し、閾値以上の場合はグループNo「1」を決定する。
また、例えば、閾値が2つ設定されているとき、輝度情報が小さい方の閾値未満である場合、グループNo「0」を決定し、2つの閾値の間である場合、グループNo「1」を決定し、大きい方の閾値以上の場合、グループNo「2」を決定する。
なお、閾値が3つ以上の場合も同様に、輝度情報がどの範囲に含まれるかによって、グループNoを決定することができる。
このようにすれば、輝度が類似したインデックス画像は同じグループに分類され、輝度が大きく異なるインデックス画像は、互いに別グループに分類されることとなる。
そして、決定したグループNoを記憶し、S129の判断が否定される間(S129:No)、S421から処理を繰り返す。
一方、S129の判断が肯定される場合(S129:Yes)、第1実施形態と同様の処理により、グループNoの小さい順に、配置情報をソートする(S131)。そして、輝度情報の小さい順に配置情報をソートする(S424)。このソートはグループ単位で行う。これにより、インデックス画像21,22が輝度の小さい順に配列されるように、配置順序が決定される。
この配置順序決定処理の後、第2実施形態のMFP1においては、配置印刷処理が実行され、定められた配置順序およびグループに基づいて、画像一覧20が印刷出力される。なお、第2実施形態のMFP1で実行される配置印刷処理は、第1実施形態で説明した配置印刷処理(S200)とほぼ同じ処理であるため、第2実施形態のMFP1の配置印刷処理については、図示および説明を省略する。
第2実施形態のMFP1によれば、輝度毎にインデックス画像21,22が分類されて画像一覧20が印刷出力され、また画像一覧20においては、輝度が小さい順にインデックス画像21,22が配列されているので、ユーザは輝度順に整列した閲覧性の良い画像一覧を得ることができ、例えば輝度が高すぎたり低すぎたりする画像を読み飛ばし、好ましい明るさの画像一覧を優先的に閲覧することができる。
次に、図14および図15を参照して、第3実施形態のMFP1について説明する。上記第2実施形態のMFP1では、輝度情報に基づいてインデックス画像21,22をグループに分類し、又、配置順序を決定していた。
これに対し、第3実施形態のMFP1では、各画像情報についてダイナミックレンジ情報を取得し、そのダイナミックレンジ情報を条件として配置順序を決定するものである。ここで、ダイナミックレンジ情報とは、各画像ファイルに対応する画像に含まれる色の分布の広がりを示す情報であり、本実施形態では、特に色の明るさの分布に相関する情報である。
なお、第3実施形態におけるMFP1の外観構成と電気的構成とは、第1実施形態におけるMFP1と同一のものであるとして説明を行う。また、本第3実施形態では、インデックス画像21,22の配置順序を決定するために、撮影日時に関する情報は用いない。よって、第3実施形態では、ファイル情報記憶領域13hのファイル日付情報記憶領域207とファイル時間情報記憶領域208とは用いないものとして説明する。また、同様に、第3実施形態では、配置情報記憶領域13iの画像日付情報記憶領域305と画像時間情報記憶領域306とは用いないものとして説明する。
以下、第1実施形態または第2実施形態と同一の部分には同一の符号を付してその説明を省略し、第1実施形態および第2実施形態と異なる点について説明する。
図14,図15は、第3実施形態のMFP1において実行される、配置順決定処理(S500)を示すフローチャートである。この配置順決定処理(S500)は、第1実施形態の配置順決定処理(S100)に代えて実行される。図14,図15に示す配置順決定処理(S500)のフローチャートにおいて、第1実施形態または第2実施形態のMFP1で実行される配置順決定処理(S100,S400)のフローチャートと同一の部分については、同一の符号を付して説明を省略する。
図14に示すように、第3実施形態の配置順決定処理(S500)では、選択した画像ファイルが動画像ファイルであるか静止画像ファイルであるかを判断し(S105)、動画像ファイルである場合(S105:動画像)、動画像ファイルから任意の1フレーム画像分のフレーム画像情報を抽出してフレーム画像情報記憶領域13jへ記憶する(S406)。そして、抽出したフレーム画像情報をデコード処理する(S407)。
次に、デコード処理したフレーム画像情報から、画像のヒストグラムを算出する(S508)。具体的には、YCrCb色空間で表現される画素値をRGB色空間の画素値に色変換し、色変換したデータについて、出現する頻度を、全ての画素、全ての色について算出する。
次に、算出したヒストグラムから、ダイナミックレンジ情報を算出する(S509)。具体的には、抽出したフレーム画像情報に含まれる総画素数をPN、画素値がiの時の頻度をFiとしたとき、画素値0から順に、条件1を満たす最小のiを探索する。
(条件1)
同様にして、画素値255から条件2をみたす最大のjを探索する。
(条件2)
i,jが決まったら、例えば、下記の数式9より求まる値をダイナミックレンジ情報Dとする。
(数式9)
D = j - i
このようにしてダイナミックレンジ情報Dが、RGBの各色について求まるので、各色のダイナミックレンジ情報Dを合計した値を、抽出したフレーム画像情報のダイナミックレンジ情報として取得し(S509)、処理画像数カウンタの値で示される配置順序に対応した、画像付加情報記憶領域307へ記憶する(S510)。
なお、本実施形態では、RGB各色のダイナミックレンジ情報を合計した値を、画像情報のダイナミックレンジ情報として取り扱うものとして説明するが、色別のダイナミックレンジ情報に基づいて、以降の処理を実行するように構成されても良い。
次に、処理画像数カウンタおよびフレーム画像抽出枚数カウンタに1を加算し(S410)、フレーム画像抽出枚数カウンタの値がフレーム画像抽出枚数以上となったか否かを判断し(S411)、S411の判断が否定される間は(S411:No)、S108から処理を繰り返す。
一方、S105の判断において、選択した画像ファイルが静止画像ファイルであると判断された場合(S105:静止画像)、その選択した画像ファイルをデコード処理し(S413)、次に、デコード処理した静止画像ファイルから画像のヒストグラムを算出する(S515)。なお、ヒストグラムの算出方法は、上述したS508の処理と同様であるので、説明を省略する。
次に、算出したヒストグラムから、ダイナミックレンジ情報を取得する(S516)。なお、ダイナミックレンジ情報の演算方法は、S509の処理と同様であるので、説明を省略する。そして、このようにして取得したダイナミックレンジ情報を画像付加情報記憶領域307へ記憶する(S517)。そして、処理画像数カウンタに1を加算し(S416)、S122の処理へ移行する。
図15は、図14に示す配置順決定処理(S500)の続きの部分を示すフローチャートであり、第1実施形態における図9に対応する図である。なお、図15に示すフローチャートについては、図9に示すフローチャートと同一の部分については同一の符号を付して、説明を省略する。
図9に示す第1実施形態の配置順決定処理(S100)では、配置情報記憶領域13i(図5参照)の画像日付情報記憶領域305に記憶された、画像日付情報に従って、グループNoを決定していた。これに対し、第3実施形態のMFP1では、インデックス画像群をダイナミックレンジ情報に基づいて分類すると共に、同一グループに分類されたインデックス画像群内で、ダイナミックレンジ情報に従った配置順序を決定する。
具体的には、図15に示すように、画像付加情報記憶領域307(図5参照)に記憶されたダイナミックレンジ情報に従って、グループNoを決定する(S520)。
本実施形態では、ダイナミックレンジ情報が閾値以上であるかどうかに基づいて、グループNoを決定することとする。なお、閾値は、ユーザが操作部4から設定するように構成されても良いし、予め固定値が設定されていても良い。具体的には、例えば、1つの閾値が設定されているときには、ダイナミックレンジ情報が閾値未満である場合、グループNo「0」を決定し、ダイナミックレンジ情報が閾値以上である場合、グループNo「1」を決定するようにする。
あるいは、2つの閾値が設定されているときには、ダイナミックレンジ情報が小さい方の閾値未満である場合、グループNo「0」を決定し、ダイナミックレンジ情報が2つの閾値の間である場合、グループNo「1」を決定し、ダイナミックレンジ情報が大きい方の閾値以上である場合、グループNo「2」決定するようにする。閾値が3つ以上の場合も同様に、ダイナミックレンジ情報が閾値のどの範囲に含まれるかによって、グループNoを決定するように構成すれば良い。
このようにすれば、ダイナミックレンジ情報に基づいてインデックス画像群が分類されることとなる。
そして、決定したグループNoを記憶し(S127)、S129の判断が否定される間(S129:No)、S520から処理を繰り返す。
一方、S129の判断が肯定される場合(S129:Yes)、第1実施形態と同様の処理により、グループNoの小さい順に、配置情報をソートする(S131)。そして、ダイナミックレンジ情報の小さい順に配置情報をソートする(S532)。このソートはグループ単位で行う。これにより、配置情報で特定されるインデックス画像21,22の各々について、ダイナミックレンジ情報に従った配置順序が決定する。
この配置順序決定処理の後、第3実施形態のMFP1においては、第2実施形態のMFP1と同様の配置印刷処理が実行され、定められた配置順序およびグループに基づいた画像一覧20が印刷出力される。
第3実施形態のMFP1によれば、ダイナミックレンジ情報に基づいて、インデックス画像21,22が分類され、グループ毎に画像一覧20が出力される。よって、例えば、ユーザは、ダイナミックレンジ情報が極端に低いインデックス画像21,22が分類されたグループの画像一覧20、すなわち、撮影に失敗している可能性が高いインデックス画像がまとめられた画像一覧20については、最初から閲覧対象外することにより、閲覧すべき画像を低減させることができる。
次に、図16および図17を参照して、第4実施形態のMFP1について説明する。上記第2実施形態のMFP1では、輝度情報に基づいてインデックス画像21,22をグループに分類し、又、配置順序を決定していた。
これに対し、第4実施形態のMFP1では、静止画像ファイルおよびフレーム画像情報について顔情報を取得し、その顔情報を条件として配置順序を決定するものである。ここで、顔情報とは、各画像ファイルに対応する画像に含まれる顔の個数を示す情報である。
なお、第4実施形態におけるMFP1の外観構成と電気的構成とは、第1実施形態におけるMFP1と同一のものであるとして説明を行う。また、本第4実施形態では、インデックス画像21,22の配置順序を決定するために、撮影日時に関する情報は用いない。よって、第3実施形態では、ファイル情報記憶領域13hのファイル日付情報記憶領域207とファイル時間情報記憶領域208とは用いないものとして説明する。また、同様に、第3実施形態では、配置情報記憶領域13iの画像日付情報記憶領域305と画像時間情報記憶領域306とは用いないものとして説明する。
以下、第1実施形態または第2実施形態と同一の部分には同一の符号を付してその説明を省略し、第1実施形態および第2実施形態と異なる点について説明する。
図16,図17は、第4実施形態のMFP1において実行される、配置順決定処理(S600)を示すフローチャートである。この配置順決定処理(S600)は、第1実施形態の配置順決定処理(S100)に代えて実行される。図16,図17に示す配置順決定処理(S600)のフローチャートにおいて、第1実施形態または第2実施形態のMFP1で実行される配置順決定処理(S100)のフローチャートと同一の部分については、同一の符号を付して説明を省略する。
図16に示すように、第4実施形態の配置順決定処理(S600)では、選択した画像ファイルが動画像ファイルであるか静止画像ファイルであるかを判断し(S105)、動画像ファイルである場合(S105:動画像)、動画像ファイルから任意の1フレーム画像分のフレーム画像情報を抽出してフレーム画像情報記憶領域13jへ記憶する(S406)。そして、抽出したフレーム画像情報をデコード処理する(S407)。
次に、デコード処理したフレーム画像情報を顔認識処理することにより、フレーム画像情報に対応する画像に、顔が含まれるかを検出する。顔認識処理の手法としては、Haar-like特徴量とAdaBoost分類器を用いた公知の顔認識処理を採用することができるが、これ以外の他の公知の顔認識処理を採用しても良い。
そして、検出された顔の個数を算出し(S608)、処理対象のフレーム画像情報の顔情報として取得し、処理画像数カウンタの値で示される配置順序に対応した、画像付加情報記憶領域307へ記憶する(S609)。
次に、処理画像数カウンタおよびフレーム画像抽出枚数カウンタに1を加算し(S410)、フレーム画像抽出枚数カウンタの値がフレーム画像抽出枚数以上となったか否かを判断し(S411)、S411の判断が否定される間は(S411:No)、S406から処理を繰り返す。
一方、S105の判断において、選択した画像ファイルが静止画像ファイルであると判断された場合(S105:静止画像)、次に、その選択した画像ファイルをデコード処理し(S413)、次に、デコード処理した静止画像ファイルを顔認識処理することにより、静止画像ファイルに対応する画像に、顔が含まれるかを検出し、検出された顔の個数を算出する(S614)。なお、顔検出方法は、上述したS608の処理と同様であるので、説明を省略する。
次に、算出した顔の個数を、処理対象のフレーム画像情報の顔情報として取得し、処理画像数カウンタの値で示される配置順序に対応した、画像付加情報記憶領域307へ記憶する(S615)。そして、処理画像数カウンタに1を加算し(S416)、S122の処理へ移行する。
図17は、図16に示す配置順決定処理(S600)の続きの部分を示すフローチャートであり、第1実施形態における図9に対応する図である。なお、図17に示すフローチャートについては、図9に示すフローチャートと同一の部分については同一の符号を付して、説明を省略する。
図9に示す第1実施形態の配置順決定処理(S100)では、配置情報記憶領域13i(図5参照)の画像日付情報記憶領域305に記憶された、画像日付情報に従って、グループNoを決定していた。これに対し、第4実施形態のMFP1では、インデックス画像群を顔情報、すなわち、画像に含まれる顔の個数に基づいて分類すると共に、同一グループに分類されたインデックス画像群内で、顔情報に従った配置順序を決定する。
具体的には、顔情報で示される顔の個数が閾値以上であるかどうかによって、グループNoを決定する(S621)。この閾値は、ユーザが操作入力部4から予め設定するものであっても良いし、あらかじめ固定値で設定しておいても良い。
本実施形態では、顔情報が閾値以上であるかどうかに基づいて、グループNoを決定することとする。なお、閾値は、ユーザが操作部4から設定するように構成されても良いし、固定値で設定されていても良い。具体的には、例えば、1つの閾値が設定されているときには、顔情報が閾値未満である場合、グループNo「0」を決定し、顔情報が閾値以上である場合、グループNo「1」を決定するようにする。
あるいは、2つの閾値が設定されているときには、顔情報が小さい方の閾値未満である場合、グループNo「0」を決定し、顔情報が2つの閾値の間である場合、グループNo「1」を決定し、顔情報が大きい方の閾値以上である場合、グループNo「2」決定するようにする。閾値が3つ以上の場合も同様に、顔情報が閾値のどの範囲に含まれるかによって、グループNoを決定するように構成すれば良い。
このようにして、顔情報に基づいて、インデックス画像群を分類することができる。次に、決定したグループNoを記憶し(S127)、S129の判断が否定される間(S129:No)、S621から処理を繰り返す。
一方、S129の判断が肯定される場合(S129:Yes)、第1実施形態と同様の処理により、グループNoの小さい順に、配置情報をソートする(S131)。そして、顔情報で示される顔の個数の小さい順に配置情報をソートする(S532)。このソートはグループ単位で行う。これにより、配置情報で特定されるインデックス画像21,22の各々について、顔情報に従った配置順序が決定する。
この配置順序決定処理の後、第4実施形態のMFP1においては、第2実施形態のMFP1と同様の配置印刷処理が実行され、定められた配置順序およびグループに基づいた画像一覧20が印刷出力される。
第4実施形態のMFP1によれば、各画像に含まれる顔の個数に従ってインデックス画像が分類され、または配置順序が決定される。よって、ユーザは画像に含まれる顔の個数順に整列した閲覧性の良い画像一覧を得ることができ、例えば集合写真のみを閲覧したい場合は顔の個数が多い部分を閲覧する、ということができる。
以上、実施形態に基づき本発明を説明したが、本発明は上述した実施形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良変更が可能であることは容易に推察できるものである。
例えば、本実施形態では、画像一覧20を記録用紙に印刷出力するものとして説明したが、LCD5など表示装置に画像一覧20を表示出力する場合にも、本発明を適用できる。
また、本発明を、例えば、パーソナルコンピュータに適用し、PCのモニターに、画像一覧20を表示出力する場合、あるいは、パーソナルコンピュータからプリンタを制御して画像一覧を印刷出力する場合にも、本発明を適用できる。
また、上記実施形態では、全グループについて画像一覧20が出力されるものとして説明したが、例えば、ユーザにより選択されたグループについてのみ画像一覧20を出力するように構成しても良い。
また、上述した実施形態では、動画像ファイルおよび静止画像ファイルは、共に撮影により生成された画像ファイルであるものとして説明したが、動画像ファイルおよび静止画像ファイルは、撮影以外の方法で生成されるものであっても、本発明を適用可能である。その場合は、撮影日時に代えて、ファイルの作成日時を表すファイルの生成日時情報や、ファイルの更新日時情報など、他の条件を元に、インデックス画像21,22の配置順序を決定するように構成されても良い。
また、上述した実施形態では、メディアカード内に、静止画像ファイルと動画像ファイルとが混在している場合について説明したが、メディアカード内に動画像ファイルのみが格納されている場合にも本発明は適用可能である。
また、上述した実施形態では、着脱可能なメディアカード内に記憶されている画像情報を処理対象としていたが、MFP1の内部メモリに格納された画像情報を処理対象とする場合にも、本発明は適用可能である。
また、上述した第1実施形態では、同日に撮影された画像情報に対応したインデックス画像21,22を同一グループに分類していたが、これに代えて、ファイル日付情報およびファイル時間情報で表される撮影日時の差違が、所定長さ以上である場合、その2つの画像情報に対応したインデックス画像21,22を、互いに異なるグループに分類するように構成しても良い。このようにすれば、撮影時間が大きく異なる、別のシーンであるインデックス画像はそれぞれ別のグループに分類されるため、撮影時間が比較的近いシーン毎に閲覧性の良い画像一覧を得ることができる。
また、上述した第1実施形態では、グループを分類する条件として、「撮影日」を採用したが、「撮影月」、「撮影年」、「撮影時間の近いものを同じグループとして扱う」など、様々な条件が考えられる。この条件は、あらかじめユーザが操作部4からあらかじめ設定できる形でも良いし、あらかじめ1条件固定で設定しておいても良い。
「撮影時間の近いものを同じグループとして扱う」場合の判断基準を以下に説明する。
[Step1] 全ての配置情報300(図5参照)を、画像時間情報の小さい順に並べ替える。
[Step2] 全ての配置情報300を、画像日付情報の小さい順に並べ替える。
[Step3] 時間の早い配置情報300から順に、次の配置情報300との時間の差を計算する。
すなわち、配置情報300を先頭から順番にfile_0,file_1,…file_nとし,対応する画像時間情報をtime_0,time_1…time_nとすると、
time_1−time_0≧ 閾値
の場合に、file_1の配置情報と、file_0の配置情報とには、異なるグループNoを決定する。同様にして、全ての配置情報を順に比較しながらグループNoを決定すれば良い。
また、上述した第2実施形態では、輝度情報を用いて配置順序およびインデックス画像21,22の分類を行っていたが、輝度情報に代えて、各画像に含まれる色の色相に関係する色相情報を取得し、その色相情報に基づいて、配置順序の決定およびインデックス画像21,22の分類を行うように構成しても良い。このようにすれば、色相で分類されたグループ毎に画像一覧20が出力されるので、色相に統一感がある画像一覧20が得られる。また、そのグループ内のインデックス画像21,22は色相の順序に配列されることとなるので、色相の微妙な変化が分かり易い画像一覧20を出力することができる。色相値としては、例えばRGB空間をHSV空間に変換した際のH値を、色相を表す値として用いることができる。
また、上述した第4実施形態では、各画像に含まれる顔の個数を、前記顔情報として取得していたが、これに代えて、各画像に、特定の人物が含まれるか否かを示す情報を、顔情報として取得するように構成しても良い。
このようにすれば、特定の人物が画像に含まれるか否かに応じて、配置順序の決定およびインデックス画像21,22の分類が行われるので、特定の人物単位でまとまった画像一覧20を出力することができる。その結果、ユーザは人物別に、分類された画像一覧を得ることができる。
さらに、上記実施形態で説明した条件に代えて他の条件に基づいて、配置順序の決定およびインデックス画像21,22の分類が行われても良い。例えば、動画像ファイルが音声と同期して再生されるものである場合、その動画像ファイルから抽出されるフレーム画像情報の各々について、そのフレーム画像と共に再生される音声の周波数を解析する解析手段と、その解析手段により解析された音声の周波数に基づいて、その音声を発した人物を特定する人物特定手段とを備え、前記人物特定手段により特定された人物毎に、インデックス画像21,22を分類するものであっても良い。
また、例えば、インデックス画像21,22を、人物画像グループと風景画像グループとに分類するものであっても良い。