本明細書及び添付図面の記載により、少なくとも、以下の事項が明らかとなる。
識別対象を評価する評価関数の値と閾値との比較結果に基づいて、あるクラスに前記識別対象が属するか否かを識別する識別方法であって、
前記あるクラスに属するサンプルと、前記あるクラスに属しないサンプルとを抽出する抽出ステップと、
抽出された複数の前記サンプルを表示部に並べて表示すると共に、前記あるクラスに属するサンプルと、前記あるクラスに属しないサンプルとの間にマークを表示し、ユーザの指示に応じて前記マークの位置を移動することによって、別の前記サンプルと前記サンプルとの間に前記マークを表示する表示ステップと、
予め用意された複数の前記評価関数の中から、前記ユーザの決定した前記マークの位置に応じた前記評価関数を選択する設定変更ステップと、
選択された前記評価関数を用いて識別対象を評価したときの前記評価関数の値と、前記閾値との比較結果に基づいて、前記あるクラスに識別対象が属するか否かを識別する識別ステップと、
を備えることを特徴とする識別方法が明らかになる。
このような識別方法によれば、ユーザの好みに合わせた識別処理を行うことができる。
前記抽出ステップでは、前記あるクラスに属するサンプルと、前記あるクラスとは別のクラスに属するサンプルとが抽出され、前記設定変更ステップでは、前記あるクラスに識別対象が属するか否かを識別するための評価関数が選択されると共に、前記別のクラスに識別対象が属するか否かを識別するための評価関数が選択されることが望ましい。これにより、ユーザの好みに合わせた識別処理を行うことができる。
前記あるクラスに属するサンプルと、前記別のクラスに属するサンプルとを分離する超平面の法線に前記サンプルを投影し、前記法線上に投影された前記サンプルの位置に基づいて、抽出すべきサンプルを決定することが望ましい。若しくは、前記識別処理は、空間を分離する超平面に基づいて前記識別対象が前記あるクラスに属するか否かを識別するものであり、前記抽出ステップにおいて、前記超平面の法線に前記サンプルを投影し、前記法線上に投影された前記サンプルの位置に基づいて、抽出すべきサンプルを決定することが望ましい。これにより、確信度の高い順に、サンプルを抽出することができる。
識別対象を評価する評価関数の値と閾値との比較結果に基づいて、あるクラスに前記識別対象が属するか否かを識別する識別装置に、
前記あるクラスに属するサンプルと、前記あるクラスに属しないサンプルとを抽出させ、
抽出された複数の前記サンプルを表示部に並べて表示させると共に、前記あるクラスに属するサンプルと、前記あるクラスに属しないサンプルとの間にマークを表示させ、ユーザの指示に応じて前記マークの位置を移動させことによって、別の前記サンプルと前記サンプルとの間に前記マークを表示させ、
予め用意された複数の前記評価関数の中から、前記ユーザの決定した前記マークの位置に応じた前記評価関数を選択させ、
選択された前記評価関数を用いて識別対象を評価したときの前記評価関数の値と、前記閾値との比較結果に基づいて、前記あるクラスに識別対象が属するか否かを識別させる
ことを特徴とするプログラムが明らかになる。
このようなプログラムによれば、ユーザの好みに合わせた識別処理を識別装置に実現させることができる。
===全体説明===
まず、識別処理の基本的な構成及び処理について説明する。この説明の後、本実施形態について詳しく説明する。
<全体構成>
図1は、画像処理システムの説明図である。この画像処理システムは、デジタルスチルカメラ2と、プリンタ4とを備える。
デジタルスチルカメラ2は、被写体をデジタルデバイス(CCDなど)に結像させることによりデジタル画像を取得するカメラである。デジタルスチルカメラ2には、モード設定ダイヤル2Aが設けられている。ユーザは、ダイヤル2Aによって、撮影条件に応じた撮影モードを設定することができる。例えば、ダイヤル2Aによって「夜景」モードが設定されると、デジタルスチルカメラ2は、シャッター速度を遅くしたり、ISO感度を高くしたりして、夜景撮影に適した撮影条件にて撮影を行う。
デジタルスチルカメラ2は、ファイルフォーマット規格に準拠して、撮影により生成した画像ファイルをメモリカード6に保存する。画像ファイルには、撮影した画像のデジタルデータ(画像データ)だけでなく、撮影時の撮影条件(撮影データ)等の付加データも保存される。
プリンタ4は、画像データの示す画像を紙に印刷する印刷装置である。プリンタ4には、メモリカード6を挿入するスロット21が設けられている。ユーザは、デジタルスチルカメラ2で撮影した後、デジタルスチルカメラ2からメモリカード6を取り出し、スロット21にメモリカード6を挿入することができる。
パネル部15は、表示部16と、各種のボタンを有する入力部17とを備える。このパネル部15はユーザインターフェースとして機能する。表示部16は、液晶ディスプレイにより構成される。表示部16がタッチパネルであれば、表示部16は入力部17としても機能する。表示部16には、プリンタ4の設定を行うための設定画面や、メモリカードから読み取った画像データの画像や、ユーザへの確認や警告のための画面などが表示される。なお、表示部16が表示する各種の画面については、後述する。
図2は、プリンタ4の構成の説明図である。プリンタ4は、印刷機構10と、この印刷機構10を制御するプリンタ側コントローラ20とを備える。印刷機構10は、インクを吐出するヘッド11と、ヘッド11を制御するヘッド制御部12と、紙を搬送するため等のモータ13と、センサ14とを有する。プリンタ側コントローラ20は、メモリカード6からデータを送受信するためのメモリ用スロット21と、CPU22と、メモリ23と、モータ13を制御する制御ユニット24と、駆動信号(駆動波形)を生成する駆動信号生成部25とを有する。また、プリンタ側コントローラ20は、パネル部15を制御するパネル制御部26も備えている。
メモリカード6がスロット21に挿入されると、プリンタ側コントローラ20は、メモリカード6に保存されている画像ファイルを読み出してメモリ23に記憶する。そして、プリンタ側コントローラ20は、画像ファイルの画像データを、印刷機構10で印刷するための印刷データに変換し、印刷データに基づいて印刷機構10を制御し、紙に画像を印刷する。この一連の動作は、「ダイレクトプリント」と呼ばれている。
なお、「ダイレクトプリント」は、メモリカード6をスロット21に挿入することによって行われるだけでなく、デジタルスチルカメラ2とプリンタ4とをケーブル(不図示)で接続することによっても可能である。
メモリカード6に記憶される画像ファイルは、画像データと、付加データとから構成されている。画像データは、複数の画素データから構成されている。画素データは、画素の色情報(階調値)を示すデータである。画素がマトリクス状に配置されることによって、画像が構成される。このため、画像データは、画像を示すデータである。付加データには、画像データの特性を示すデータや、撮影データや、サムネイル画像データ等が含まれる。
<自動補正機能の概要>
「人物」の写真を印刷するときには、肌色をきれいにしたいという要求がある。また、「風景」の写真を印刷するときには、空の青色を強調し、木や草の緑色を強調したいという要求がある。そこで、プリンタ4は、画像ファイルを分析して自動的に適した補正処理を行う自動補正機能を備えている。
図3は、プリンタ4の自動補正機能の説明図である。図中のプリンタ側コントローラ20の各要素は、ソフトウェアとハードウェアによって実現される。
記憶部31は、メモリ23の一部の領域及びCPU22によって実現される。メモリカード6から読み出された画像ファイルの全部又は一部は、記憶部31の画像記憶部31Aに展開される。また、プリンタ側コントローラ20の各要素の演算結果は、記憶部31の結果記憶部31Bに格納される。
顔識別部32は、CPU22と、メモリ23に記憶された顔識別プログラムとによって実現される。顔識別部32は、画像記憶部31Aに記憶された画像データを分析し、顔の有無を識別する。顔識別部32によって顔が有ると識別された場合、識別対象となる画像が「人物」のシーンに属すると識別される。この場合、シーン識別部33によるシーン識別処理は行われない。顔識別部32による顔識別処理は、既に広く行われている処理と同様なので、詳細な説明は省略する。
シーン識別部33は、CPU22と、メモリ23に記憶されたシーン識別プログラムとによって実現される。シーン識別部33は、画像記憶部31Aに記憶された画像ファイルを分析し、画像データの示す画像のシーンを識別する。顔識別部32によって顔がないと識別された場合に、シーン識別部33によるシーン識別処理が行われる。後述するように、シーン識別部33は、識別対象となる画像が「風景」、「夕景」、「夜景」、「花」、「紅葉」、「その他」のいずれの画像であるかを識別する。
図4は、画像のシーンと補正内容との関係の説明図である。
画像補正部34は、CPU22と、メモリ23に記憶された画像補正プログラムとによって実現される。画像補正部34は、記憶部31の結果記憶部31B(後述)に記憶されている識別結果(顔識別部32やシーン識別部33の識別結果)に基づいて、画像記憶部31Aの画像データを補正する。例えば、シーン識別部33の識別結果が「風景」である場合には、青色を強調し、緑色を強調するような補正が行われる。なお、画像補正部34は、シーンの識別結果だけでなく、画像ファイルの撮影データの内容も反映して、画像データを補正しても良い。例えば、露出補正がマイナスの場合、暗い雰囲気の画像を明るくしないように画像データを補正しても良い。
プリンタ制御部35は、CPU22、駆動信号生成部25、制御ユニット24及びメモリ23に記憶されたプリンタ制御プログラムによって、実現される。プリンタ制御部35は、補正後の画像データを印刷データに変換し、印刷機構10に画像を印刷させる。
<シーン識別処理>
図5は、シーン識別部33によるシーン識別処理のフロー図である。図6は、シーン識別部33の機能の説明図である。図中のシーン識別部33の各要素は、ソフトウェアとハードウェアによって実現される。シーン識別部33は、図6に示す特徴量取得部40と、全体識別器50と、部分識別器60と、統合識別器70とを備えている。
最初に、特徴量取得部40が、記憶部31の画像記憶部31Aに展開された画像データを分析し、部分特徴量を取得する(S101)。具体的には、特徴量取得部40は、画像データを8×8の64ブロックに分割し、各ブロックの色平均と分散を算出し、この色平均と分散を部分特徴量として取得する。なお、ここでは各画素はYCC色空間における階調値のデータをもっており、各ブロックごとに、Yの平均値、Cbの平均値及びCrの平均値がそれぞれ算出され、Yの分散、Cbの分散及びCrの分散がそれぞれ算出される。つまり、各ブロックごとに3つの色平均と3つの分散が部分特徴量として算出される。これらの色平均や分散は、各ブロックにおける部分画像の特徴を示すものである。なお、RGB色空間における平均値や分散を算出しても良い。
ブロックごとに色平均と分散が算出されるので、特徴量取得部40は、画像記憶部31Aには画像データの全てを展開せずに、ブロック分の画像データをブロック順に展開する。このため、画像記憶部31Aは、必ずしも画像ファイルの全てを展開できるだけの容量を備えていなくても良い。
次に、特徴量取得部40が、全体特徴量を取得する(S102)。具体的には、特徴量取得部40は、画像データの全体の色平均、分散、重心及び撮影情報を、全体特徴量として取得する。なお、これらの色平均や分散は、画像の全体の特徴を示すものである。画像データ全体の色平均、分散及び重心は、先に算出した部分特徴量を用いて算出される。このため、全体特徴量を算出する際に、画像データを再度展開する必要がないので、全体特徴量の算出速度が速くなる。全体識別処理(後述)は部分識別処理(後述)よりも先に行われるにも関わらず、全体特徴量が部分特徴量よりも後に求められるのは、このように算出速度を速めるためである。なお、撮影情報は、画像ファイルの撮影データから抽出される。具体的には、絞り値、シャッター速度、フラッシュ発光の有無などの情報が全体特徴量として用いられる。但し、画像ファイルの撮影データの全てが全体特徴量として用いられるわけではない。
次に、全体識別器50が、全体識別処理を行う(S103)。全体識別処理とは、全体特徴量に基づいて、画像データの示す画像のシーンを識別(推定)する処理である。全体識別処理の詳細については、後述する。
全体識別処理によってシーンの識別ができる場合(S104でYES)、シーン識別部33は、記憶部31の結果記憶部31Bに識別結果を記憶することによってシーンを決定し(S109)、シーン識別処理を終了する。つまり、全体識別処理によってシーンの識別ができた場合(S104でYES)、部分識別処理や統合識別処理が省略される。これにより、シーン識別処理の速度が速くなる。
全体識別処理によってシーンの識別ができない場合(S104でNO)、次に部分識別器60が、部分識別処理を行う(S105)。部分識別処理とは、部分特徴量に基づいて、画像データの示す画像全体のシーンを識別する処理である。部分識別処理の詳細については、後述する。
部分識別処理によってシーンの識別ができる場合(S106でYES)、シーン識別部33は、記憶部31の結果記憶部31Bに識別結果を記憶することによってシーンを決定し(S109)、シーン識別処理を終了する。つまり、部分識別処理によってシーンの識別ができた場合(S106でYES)、統合識別処理が省略される。これにより、シーン識別処理の速度が速くなる。
部分識別処理によってシーンの識別ができない場合(S106でNO)、次に統合識別器70が、統合識別処理を行う(S107)。統合識別処理の詳細については、後述する。
統合識別処理によってシーンの識別ができる場合(S108でYES)、シーン識別部33は、記憶部31の結果記憶部31Bに識別結果を記憶することによってシーンを決定し(S109)、シーン識別処理を終了する。一方、統合識別処理によってシーンの識別ができない場合(S108でNO)、画像データの示す画像が「その他」のシーン(「風景」、「夕景」、「夜景」、「花」又は「紅葉」以外のシーン)である旨の識別結果を結果記憶部31Bに記憶する(S110)。
<全体識別処理>
図7は、全体識別処理のフロー図である。ここでは図6も参照しながら全体識別処理について説明する。
まず、全体識別器50は、複数のサブ識別器51の中から1つのサブ識別器51を選択する(S201)。全体識別器50には、識別対象となる画像(識別対象画像)が特定のシーンに属するか否かを識別するサブ識別器51が5つ設けられている。5つのサブ識別器51は、それぞれ風景、夕景、夜景、花、紅葉のシーンを識別する。ここでは、全体識別器50は、風景→夕景→夜景→花→紅葉の順に、サブ識別器51を選択する(なお、サブ識別器51の選択順序については、後述する)。このため、最初には、識別対象画像が風景のシーンに属するか否かを識別するサブ識別器51(風景識別器51L)が選択される。
次に、全体識別器50は、識別対象テーブルを参照し、選択したサブ識別器51を用いてシーンを識別すべきか否かを判断する(S202)。
図8は、識別対象テーブルの説明図である。この識別対象テーブルは、記憶部31の結果記憶部31Bに記憶される。識別対象テーブルは、最初の段階では全ての欄がゼロに設定される。S202の処理では、「否定」欄が参照され、ゼロであればYESと判断され、1であればNOと判断される。ここでは、全体識別器50は、識別対象テーブルにおける「風景」欄の「否定」欄を参照し、ゼロであるのでYESと判断する。
次に、サブ識別器51は、全体特徴量に基づいて、識別対象画像が特定のシーンに属する確率(確信度)を算出する(S203)。サブ識別器51には、サポートベクタマシン(SVM)による識別手法が用いられている。なお、サポートベクタマシンについては、後述する。識別対象画像が特定のシーンに属する場合、サブ識別器51の判別式は、プラスの値になりやすい。識別対象画像が特定のシーンに属しない場合、サブ識別器51の判別式は、マイナスの値になりやすい。また、判別式は、識別対象画像が特定のシーンに属する確信度が高いほど、大きい値になる。このため、判別式の値が大きければ、識別対象画像が特定のシーンに属する確率(確信度)が高くなり、判別式の値が小さければ、識別対象画像が特定のシーンに属する確率が低くなる。
次に、サブ識別器51は、判別式の値が肯定閾値より大きいか否かを判断する(S204)。判別式の値が肯定閾値より大きければ、サブ識別器51は、識別対象画像が特定のシーンに属すると判断することになる。
図9は、全体識別処理の肯定閾値の説明図である。同図において、横軸は肯定閾値を示し、縦軸はRecall又はPrecisionの確率を示す。図10は、RecallとPrecisionの説明図である。判別式の値が肯定閾値以上の場合には識別結果はPositiveであり、判別式の値が肯定閾値以上でない場合には識別結果はNegativeである。
Recallは、再現率や検出率を示すものである。Recallは、特定のシーンの画像の総数に対する、特定のシーンに属すると識別された画像の数の割合である。言い換えると、Recallは、特定のシーンの画像をサブ識別器51に識別させたときに、サブ識別器51がPositiveと識別する確率(特定のシーンの画像が特定のシーンに属すると識別される確率)を示すものである。例えば、風景画像を風景識別器51Lに識別させたときに、風景のシーンに属すると風景識別器51Lが識別する確率を示すものである。
Precisionは、正答率や正解率を示すものである。Precisionは、Positiveと識別された画像の総数に対する、特定のシーンの画像の数の割合である。言い換えると、Precisionは、特定のシーンを識別するサブ識別器51がPositiveと識別したときに、識別対象の画像が特定のシーンである確率を示すものである。例えば、風景識別器51Lが風景のシーンに属すると識別したときに、その識別した画像が本当に風景画像である確率を示すものである。
図9から分かる通り、肯定閾値を大きくするほど、Precisionが大きくなる。このため、肯定閾値を大きくするほど、例えば風景のシーンに属すると識別された画像が風景画像である確率が高くなる。つまり、肯定閾値を大きくするほど、誤識別の確率が低くなる。
一方、肯定閾値を大きくするほど、Recallは小さくなる。この結果、例えば、風景画像を風景識別器51Lで識別した場合であっても、風景のシーンに属すると正しく識別しにくくなる。ところで、識別対象画像が風景のシーンに属すると識別できれば(S204でYES)、残りの別のシーン(夕景など)の識別を行わないようにして全体識別処理の速度を速めている。このため、肯定閾値を大きくするほど、全体識別処理の速度は低下することになる。また、全体識別処理によってシーンが識別できれば部分識別処理を行わないようにしてシーン識別処理の速度を速めているため(S104)、肯定閾値を大きくするほど、シーン識別処理の速度は低下することになる。
つまり、肯定閾値が小さすぎると誤識別の確率が高くなり、大きすぎると処理速度が低下することになる。ここでは、正答率(Precision)を97.5%に設定するため、風景の肯定閾値は1.27に設定されている。
判別式の値が肯定閾値より大きければ(S204でYES)、サブ識別器51は、識別対象画像が特定のシーンに属すると判断し、肯定フラグを立てる(S205)。「肯定フラグを立てる」とは、図8の「肯定」欄を1にすることである。この場合、全体識別器50は、次のサブ識別器51による識別を行わずに、全体識別処理を終了する。例えば、風景画像であると識別できれば、夕景などの識別を行わずに、全体識別処理を終了する。この場合、次のサブ識別器51による識別を省略しているので、全体識別処理の速度を速めることができる。
判別式の値が肯定閾値より大きくなければ(S204でNO)、サブ識別器51は、識別対象画像が特定のシーンに属すると判断できず、次のS206の処理を行う。
次に、サブ識別器51は、判別式の値と否定閾値とを比較する(S206)。これにより、サブ識別器51は、識別対象画像が所定のシーンに属しないかを判断する。このような判断としては、2種類ある。第1に、ある特定のシーンのサブ識別器51の判別式の値が第1否定閾値より小さければ、その特定のシーンに識別対象画像が属しないと判断されることになる。例えば、風景識別器51Lの判別式の値が第1否定閾値より小さければ、識別対象画像が風景のシーンに属しないと判断されることになる。第2に、ある特定のシーンのサブ識別器51の判別式の値が第2否定閾値より大きければ、その特定のシーンとは別のシーンに識別対象画像が属しないと判断されることになる。例えば、風景識別器51Lの判別式の値が第2否定閾値より大きければ、識別対象画像が夜景のシーンに属しないと判断されることになる。
図11は、第1否定閾値の説明図である。同図において、横軸は第1否定閾値を示し、縦軸は確率を示す。グラフの太線は、True Negative Recallのグラフであり、風景画像以外の画像を風景画像ではないと正しく識別する確率を示している。グラフの細線は、False Negative Recallのグラフであり、風景画像なのに風景画像ではないと誤って識別する確率を示している。
図11から分かる通り、第1否定閾値を小さくするほど、False Negative Recallが小さくなる。このため、第1否定閾値を小さくするほど、例えば風景のシーンに属しないと識別された画像が風景画像である確率が低くなる。つまり、誤識別の確率が低くなる。
一方、第1否定閾値を小さくするほど、True Negative Recallも小さくなる。この結果、風景画像以外の画像を風景画像ではないと識別しにくくなる。その一方、識別対象画像が特定シーンでないことを識別できれば、部分識別処理の際に、その特定シーンのサブ部分識別器61による処理を省略してシーン識別処理速度を速めている(後述、図14のS302)。このため、第1否定閾値を小さくするほど、シーン識別処理速度は低下する。
つまり、第1否定閾値が大きすぎると誤識別の確率が高くなり、小さすぎると処理速度が低下することになる。ここでは、False Negative Recallを2.5%に設定するため、第1否定閾値は−1.10に設定されている。
ところで、ある画像が風景のシーンに属する確率が高ければ、必然的にその画像が夜景のシーンに属する確率は低くなる。このため、風景識別器51Lの判別式の値が大きい場合には、夜景ではないと識別できる場合がある。このような識別を行うために、第2否定閾値が設けられる。
図12は、第2否定閾値の説明図である。同図において、横軸は風景の判別式の値を示し、縦軸は確率を示す。同図には、図9のRecallとPrecisionのグラフとともに、夜景のRecallのグラフが点線で描かれている。この点線のグラフに注目すると、風景の判別式の値が−0.45よりも大きければ、その画像が夜景画像である確率は2.5%である。言い換えると、風景の判別式の値が−0.45より大きい場合にその画像が夜景画像でないと識別しても、誤識別の確率は2.5%にすぎない。そこで、ここでは、第2否定閾値が−0.45に設定されている。
そして、判別式の値が第1否定閾値より小さい場合、又は、判別式の値が第2否定閾値より大きい場合(S206でYES)、サブ識別器51は、識別対象画像が所定のシーンに属しないと判断し、否定フラグを立てる(S207)。「否定フラグを立てる」とは、図8の「否定」欄を1にすることである。例えば、第1否定閾値に基づいて識別対象画像が風景のシーンに属しないと判断された場合、「風景」欄の「否定」欄が1になる。また、第2否定閾値に基づいて識別対象画像が夜景のシーンに属しないと判断された場合、「夜景」欄の「否定」欄が1になる。
図13Aは、閾値テーブルの説明図である。この閾値テーブルは、記憶部31に記憶されていても良いし、全体識別処理を実行させるためのプログラムの一部に組み込まれていても良い。閾値テーブルには、前述の肯定閾値や否定閾値に関するデータが格納されている。
図13Bは、上記で説明した風景識別器51Lにおける閾値の説明図である。風景識別器51Lには、肯定閾値及び否定閾値が予め設定されている。肯定閾値として1.27が設定されている。否定閾値には第1否定閾値と第2否定閾値とがある。第1否定閾値として−1.10が設定されている。また、第2否定閾値として、風景以外の各シーンにそれぞれ値が設定されている。
図13Cは、上記で説明した風景識別器51Lの処理の概要の説明図である。ここでは、説明の簡略化のため、第2否定閾値については夜景についてのみ説明する。風景識別器51Lは、判別式の値が1.27より大きければ(S204でYES)、識別対象画像が風景のシーンに属すると判断する。また、判別式の値が1.27以下であり(S204でNO)、−0.45より大きければ(S206でYES)、風景識別器51Lは、識別対象画像が夜景のシーンに属しないと判断する。また、判別式の値が−1.10より小さければ(S206でYES)、風景識別器51Lは、識別対象画像が風景のシーンに属しないと判断する。なお、風景識別器51Lは、夕景や花や紅葉についても、第2否定閾値に基づいて、識別対象画像がそのシーンに属しないかを判断する。但し、これらの第2否定閾値は肯定閾値よりも大きいため、識別対象画像がこれらのシーンに属しないことを風景識別器51Lが判断することはない。
S202においてNOの場合、S206でNOの場合、又はS207の処理を終えた場合、全体識別器50は、次のサブ識別器51の有無を判断する(S208)。ここでは風景識別器51Lによる処理を終えた後なので、全体識別器50は、S208において、次のサブ識別器51(夕景識別器51S)があると判断する。
そして、S205の処理を終えた場合(識別対象画像が特定のシーンに属すると判断された場合)、又は、S208において次のサブ識別器51がないと判断された場合(識別対象画像が特定のシーンに属すると判断できなかった場合)、全体識別器50は、全体識別処理を終了する。
なお、既に説明した通り、全体識別処理が終了すると、シーン識別部33は、全体識別処理によってシーンの識別ができたか否かを判断する(図5のS104)。このとき、シーン識別部33は、図8の識別対象テーブルを参照し、「肯定」欄に1があるか否かを判断することになる。
全体識別処理によってシーンの識別ができた場合(S104でYES)、部分識別処理や統合識別処理が省略される。これにより、シーン識別処理の速度が速くなる。
ところで、上記の説明には無いが、全体識別器50は、サブ識別器51によって判別式の値を算出したときには、判別式の値に対応するPrecisionを、確信度に関する情報として結果記憶部31Bに記憶する。もちろん、判別式の値そのものを確信度に関する情報として記憶しても良い。
<部分識別処理>
図14は、部分識別処理のフロー図である。部分識別処理は、全体識別処理によってシーンの識別ができなかった場合(図5のS104でNO)に行われる。以下に説明するように、部分識別処理は、分割された部分画像のシーンをそれぞれ識別することによって、画像全体のシーンを識別する処理である。ここでは図6も参照しながら部分識別処理について説明する。
まず、部分識別器60は、複数のサブ部分識別器61の中から1つのサブ部分識別器61を選択する(S301)。部分識別器60には、サブ部分識別器61が3つ設けられている。各サブ部分識別器61は、8×8の64ブロックに分割された部分画像がそれぞれ特定のシーンに属するか否かを識別する。ここでの3つのサブ部分識別器61は、それぞれ夕景、花、紅葉のシーンを識別する。ここでは、部分識別器60は、夕景→花→紅葉の順に、サブ部分識別器61を選択する(なお、サブ部分識別器61の選択順序については、後述する)。このため、最初には、部分画像が夕景のシーンに属するか否かを識別するサブ部分識別器61(夕景部分識別器61S)が選択される。
次に、部分識別器60は、識別対象テーブル(図8)を参照し、選択したサブ部分識別器61を用いてシーンを識別すべきか否かを判断する(S302)。ここでは、部分識別器60は、識別対象テーブルにおける「夕景」欄の「否定」欄を参照し、ゼロであればYESと判断し、1であればNOと判断する。なお、全体識別処理の際に、夕景識別器51Sが第1否定閾値により否定フラグを立てたとき、又は、他のサブ識別器51が第2否定閾値により否定フラグを立てたとき、このS302でNOと判断される。仮にNOと判断されると夕景の部分識別処理は省略されることになるので、部分識別処理の速度が速くなる。但し、ここでは説明の都合上、YESと判断されるものとする。
次に、サブ部分識別器61は、8×8の64ブロックに分割された部分画像の中から、1つの部分画像を選択する(S303)。
図15は、夕景部分識別器61Sが選択する部分画像の順番の説明図である。部分画像から画像全体のシーンを識別するような場合、識別に用いられる部分画像は、被写体が存在する部分であることが望ましい。そこで、数千枚のサンプルの夕景画像を用意し、各夕景画像を8×8の64ブロックに分割し、夕景部分画像(夕景の太陽と空の部分画像)を含むブロックを抽出し、抽出されたブロックの位置に基づいて各ブロックにおける夕景部分画像の存在確率を算出した。そして、存在確率の高いブロックから順番に、部分画像が選択される。なお、図に示す選択順序の情報は、プログラムの一部としてメモリ23に格納されている。
なお、夕景画像の場合、画像の中央付近から上半分に夕景の空が広がっていることが多いため、中央付近から上半分のブロックにおいて存在確率が高くなる。また、夕景画像の場合、画像の下1/3では逆光で陰になり、部分画像単体では夕景か夜景か区別がつかないことが多いため、下1/3のブロックにおいて存在確率が低くなる。花画像の場合、花を中央付近に配置させる構図にすることが多いため、中央付近における花部分画像の存在確率が高くなる。
次に、サブ部分識別器61は、選択された部分画像の部分特徴量に基づいて、その部分画像が特定のシーンに属するか否かを判断する(S304)。サブ部分識別器61には、全体識別器50のサブ識別器51と同様に、サポートベクタマシン(SVM)による判別手法が用いられている。なお、サポートベクタマシンについては、後述する。判別式の値が正の値であれば、部分画像が特定のシーンに属すると判断し、サブ部分識別器61は正カウント値をインクリメントする。また、判別式の値が負の値であれば、部分画像が特定のシーンに属しないと判断し、サブ部分識別器61は負カウント値をインクリメントする。
次に、サブ部分識別器61は、正カウント値が肯定閾値よりも大きい否かを判断する(S305)。なお、正カウント値は、特定のシーンに属すると判断された部分画像の数を示すものである。正カウント値が肯定閾値より大きければ(S305でYES)、サブ部分識別器61は、識別対象画像が特定のシーンに属すると判断し、肯定フラグを立てる(S306)。この場合、部分識別器60は、次のサブ部分識別器61による識別を行わずに、部分識別処理を終了する。例えば、夕景画像であると識別できれば、花や紅葉の識別を行わずに、部分識別処理を終了する。この場合、次のサブ部分識別器61による識別を省略しているので、部分識別処理の速度を速めることができる。
正カウント値が肯定閾値より大きくなければ(S305でNO)、サブ部分識別器61は、識別対象画像が特定のシーンに属すると判断できず、次のS307の処理を行う。
サブ部分識別器61は、正カウント値と残りの部分画像数との和が肯定閾値よりも小さければ(S307でYES)、S309の処理へ進む。正カウント値と残りの部分画像数との和が肯定閾値よりも小さい場合、残り全ての部分画像によって正カウント値がインクリメントされても正カウント値が肯定閾値より大きくなることがないので、S309に処理を進めることによって、残りの部分画像についてサポートベクタマシンによる識別を省略する。これにより、部分識別処理の速度を速めることができる。
サブ部分識別器61がS307でNOと判断した場合、サブ部分識別器61は、次の部分画像の有無を判断する(S308)。なお、ここでは、64個に分割された部分画像の全てを順に選択していない。図15において太枠で示された上位10番目までの10個の部分画像だけを順に選択している。このため、10番目の部分画像の識別を終えれば、サブ部分識別器61は、S308において次の部分画像はないと判断する。(この点を考慮して、S307の「残りの部分画像数」も決定される。)
図16は、上位10番目までの10個の部分画像だけで夕景画像の識別をしたときのRecall及びPrecisionのグラフである。図に示すような肯定閾値を設定すれば、正答率(Precision)を80%程度に設定でき、再現率(Recall)を90%程度に設定でき、精度の高い識別が可能である。
部分識別処理では、10個の部分画像だけで夕景画像の識別を行っている。このため、64個の全ての部分画像を用いて夕景画像の識別を行うよりも、部分識別処理の速度を速めることができる。
また、部分識別処理では、夕景部分画像の存在確率の高い上位10番目の部分画像を用いて夕景画像の識別を行っている。このため、存在確率を無視して抽出された10個の部分画像を用いて夕景画像の識別を行うよりも、Recall及びPrecisionをともに高く設定することが可能になる。
また、部分識別処理では、夕景部分画像の存在確率の高い順に部分画像を選択している。この結果、早い段階でS305の判断がYESになりやすくなる。このため、本実施形態では、存在確率の高低を無視した順で部分画像を選択したときよりも、部分識別処理の速度を速めることができる。
S307においてYESと判断された場合、又は、S308において次の部分画像がないと判断された場合、サブ部分識別器61は、負カウント値が否定閾値よりも大きいか否かを判断する(S309)。この否定閾値は、前述の全体識別処理における否定閾値(図7のS206)とほぼ同様の機能を果たすものなので、詳しい説明は省略する。S309でYESと判断された場合、図7のS207と同様に、否定フラグを立てる。
S302においてNOの場合、S309でNOの場合、又はS310の処理を終えた場合、部分識別器60は、次のサブ部分識別器61の有無を判断する(S311)。夕景部分識別器61Sによる処理を終えた後の場合、サブ部分識別器61として花部分識別器61Fや紅葉部分識別器61Rがまだあるので、部分識別器60は、S311において、次のサブ部分識別器61があると判断する。
そして、S306の処理を終えた場合(識別対象画像が特定のシーンに属すると判断された場合)、又は、S311において次のサブ部分識別器61がないと判断された場合(識別対象画像が特定のシーンに属すると判断できなかった場合)、部分識別器60は、部分識別処理を終了する。
なお、既に説明した通り、部分識別処理が終了すると、シーン識別部33は、部分識別処理によってシーンの識別ができたか否かを判断する(図5のS106)。このとき、シーン識別部33は、図8の識別対象テーブルを参照し、「肯定」欄に1があるか否かを判断することになる。
部分識別処理によってシーンの識別ができた場合(S106でYES)、統合識別処理が省略される。これにより、シーン識別処理の速度が速くなる。
ところで、上記の説明では、夕景部分識別器61Sは、10個の部分画像を用いて夕景画像の識別を行っているが、識別に用いられる部分画像の数は10個に限られるものではない。また、他のサブ部分識別器61が、夕景部分識別器61Sとは異なる数の部分画像を用いて画像を識別しても良い。ここでは、花部分識別器61Fは20個の部分画像を用いて花画像を識別し、また、紅葉部分識別器61Rは15個の部分画像を用いて紅葉画像を識別するものとする。
<サポートベクタマシン>
統合識別処理について説明する前に、全体識別処理のサブ識別器51や部分識別処理のサブ部分識別器61において用いられているサポートベクタマシン(SVM)について説明する。
図17Aは、線形サポートベクタマシンによる判別の説明図である。ここでは、2つの特徴量x1、x2によって、学習用サンプルを2次元空間に示している。学習用サンプルは2つのクラスA、Bに分けられている。図中では、クラスAに属するサンプルは丸で示されており、クラスBに属するサンプルは四角で示されている。
学習用サンプルを用いた学習によって、2次元空間を2つに分ける境界が定義される。境界は、<w・x>+b=0で定義される(なお、x=(x1,x2)であり、wは重みベクトルであり、<w・x>はwとxの内積である)。但し、境界は、マージンが最大になるように、学習用サンプルを用いた学習によって定義される。つまり、図の場合、境界は、太点線ではなく、太実線のようになる。
判別は、判別式f(x)=<w・x>+bを用いて行われる。ある入力x(この入力xは学習用サンプルとは別である)について、f(x)>0であればクラスAに属すると判別され、f(x)<0であればクラスBに属すると判別される。
ここでは2次元空間を用いて説明しているが、これに限られない(つまり、特徴量は2以上でも良い)。この場合、境界は超平面で定義される。
ところで、2つのクラスに線形関数で分離できないことがある。このような場合に線形サポートベクタマシンによる判別を行うと、判別結果の精度が低下する。そこで、入力空間の特徴量を非線形変換すれば、すなわち入力空間からある特徴空間へ非線形写像すれば、特徴空間において線形関数で分離することができるようになる。非線形サポートベクタマシンでは、これを利用している。
図17Bは、カーネル関数を用いた判別の説明図である。ここでは、2つの特徴量x1、x2によって、学習用サンプルを2次元空間に示している。図17Bの入力空間からの非線形写像が図17Aのような特徴空間になれば、線形関数で2つのクラスに分離することが可能になる。この特徴空間においてマージンが最大になるように境界が定義されれば、特徴空間における境界の逆写像が、図17Bに示す境界になる。この結果、図17Bに示すように、境界は非線形になる。
ここではガウスカーネルを利用することにより、判別式f(x)は次式のようになる(なお、Mは特徴量の数であり、Nは学習用サンプルの数(若しくは境界に寄与する学習用サンプルの数)であり、w
iは重み係数であり、y
jは学習用サンプルの特徴量であり、x
jは入力xの特徴量である)。
ある入力x(この入力xは学習用サンプルとは別である)について、f(x)>0であればクラスAに属すると判別され、f(x)<0であればクラスBに属すると判別される。また、判別式f(x)の値が大きい値になるほど、入力x(この入力xは学習用サンプルとは別である)がクラスAに属する確率が高くなる。逆に、判別式f(x)の値が小さい値になるほど、入力x(この入力xは学習用サンプルとは別である)がクラスAに属する確率が低くなる。
前述の全体識別処理のサブ識別器51や部分識別処理のサブ部分識別器61では、上記のサポートベクタマシンの判別式f(x)の値を用いている。サポートベクタマシンによる判別式f(x)の値の算出には、学習用サンプルの数が多くなると時間がかかる。このため、判別式f(x)の値を複数回算出する必要があるサブ部分識別器61は、判別式f(x)の値を1回算出すれば済むサブ識別器51よりも、処理時間がかかる。
なお、学習用サンプルとは別に評価用サンプルが用意されている。前述のRecallやPrecisionのグラフは、評価用サンプルに対する識別結果に基づくものである。
<統合識別処理>
前述の全体識別処理や部分識別処理では、サブ識別器51やサブ部分識別器61における肯定閾値を比較的高めに設定し、Precision(正解率)を高めに設定している。なぜならば、例えば全体識別器の風景識別器51Lの正解率が低く設定されると、風景識別器51Lが紅葉画像を風景画像であると誤識別してしまい、紅葉識別器51Rによる識別を行う前に全体識別処理を終えてしまう事態が発生してしまうからである。ここではPrecision(正解率)が高めに設定されることにより、特定のシーンに属する画像が特定のシーンのサブ識別器51(又はサブ部分識別器61)に識別されるようになる(例えば紅葉画像が紅葉識別器51R(又は紅葉部分識別器61R)によって識別されるようになる)。
但し、全体識別処理や部分識別処理のPrecision(正解率)を高めに設定すると、全体識別処理や部分識別処理ではシーンの識別ができなくなる可能性が高くなる。そこで、全体識別処理及び部分識別処理によってシーンの識別ができなかった場合、以下に説明する統合識別処理が行われる。
図18は、統合識別処理のフロー図である。以下に説明するように、統合識別処理は、全体識別処理の各サブ識別器51の判別式の値に基づいて、最も確信度の高いシーンを選択する処理である。
まず、統合識別器70は、5つのサブ識別器51の判別式の値に基づいて、正となるシーンを抽出する(S401)。このとき、全体識別処理の際に各サブ識別器51が算出した判別式の値が用いられる。
次に、統合識別器70は、判別式の値が正のシーンが存在するか否かを判断する(S402)。
判別式の値が正のシーンが存在する場合(S402でYES)、最大値のシーンの欄に肯定フラグを立てて(S403)、統合識別処理を終了する。これにより、最大値のシーンに識別対象画像が属すると判断される。
一方、判別式の値が正であるシーンが存在しない場合(S402でNO)、肯定フラグを立てずに、統合識別処理を終了する。これにより、図8の識別対象テーブルの肯定欄において、1のシーンが無いままの状態になる。つまり、識別対象画像が、どのシーンに属するか識別できなかったことになる。
なお、既に説明した通り、統合識別処理が終了すると、シーン識別部33は、統合識別処理によってシーンの識別ができたか否かを判断する(図5のS108)。このとき、シーン識別部33は、図8の識別対象テーブルを参照し、「肯定」欄に1があるか否かを判断することになる。S402でNOとの判断の場合、S108の判断もNOになる。
===第1実施形態===
<概要説明>
ユーザの好みには個人差があるため、ある画像が「風景」に識別されることを好む人もいれば、「風景」に識別されないことを好む人もいる。そこで、本実施形態では、ユーザの好みを識別処理に反映させることを可能にしている。
図19は、第1実施形態の設定画面の説明図である。この設定画面161は、プリンタ4の表示部16に表示される画面である。設定画面161には、各シーンに対応して、それぞれ5個の画像が表示される。これらの画像は、いずれもサポートベクタマシン(SVM)の学習用サンプルの画像である。ここでは、「風景」に対応して最上段に表示される5個の画像L1〜L5について説明する。
5個の画像のうちの右の画像ほど風景とは無関係な画像になるように、5個の画像L1〜L5が表示されるようになっている(後述)。そして、当初の設定では、3個の画像L1〜画像L3に対応する学習用サンプルは風景に属するとされており、2個の画像L4及び画像L5に対応する学習用サンプルは風景に属さないとされている。これに応じて、設定画面161の表示の当初は、風景に属する画像と属さない画像との境界を示すように、境界設定バー161Aが画像L3と画像L4との間に表示される。
この境界設定バー161Aは、ユーザによってその位置を変更することが可能である。例えば、表示部16に表示された画像L3が風景画像ではないとユーザが判断した場合、ユーザは、パネル部17を操作して、5個の境界設定バー161Aのうち風景に対応する境界設定バー161Aを選択し、その境界設定バー161Aを一つ左に移動して画像L2と画像L3との間にする。
そして、設定された境界設定バー161Aの位置に応じて、サブ識別器51の処理が変更される(後述)。この結果、画像L3の類似画像を風景識別器51Lが識別したとき、当初の設定のままでは風景識別器51Lは風景のシーンに属すると識別していたが、風景のシーンに属しないと識別できるようになる。つまり、ユーザの好みが識別処理に反映されるようになる。
以下の説明では、まず、プリンタ4のメモリ23に記憶されているデータについて説明する。次に、設定画面161をどのように表示するのかについて説明する。その次に、設定画面161にて境界が設定された後、サブ識別器51の処理がどのように変更されるのかについて説明する。
<メモリに格納されている学習用サンプルのデータ>
まず、プリンタ4のメモリ23に記憶されているデータについて説明する。以下に説明するように、メモリ23には、図20Aに示すデータ群と、図20Bの白ドットで示す学習用サンプルの画像データが記憶されている。
図20Aは、メモリ23に記憶されている学習用サンプルのデータ群である。ここでは、風景識別器51Lのサポートベクタマシンに用いられるデータ群が示されている。
図に示すように、学習用サンプルの画像そのものの情報(画像データ)が記憶されるのではなく、学習用サンプルの全体特徴量がメモリ23に記憶されている。また、各学習用サンプルに対応付けて、重み係数wもメモリ23に記憶されている。この重み係数wは、学習用サンプルの全体特徴量のデータ群を用いて算出することが可能であるが、ここでは、重み係数wは予め算出されて、メモリ23に記憶されているものとする。前述の判別式f(x)の値は、このデータ群の全体特徴量yと重み係数wを用いて、前述の数1の式に基づいて算出される。なお、境界の決定に寄与しない学習用サンプルの重み係数はゼロとなるので、本来ならばその学習用サンプルの全体特徴量はメモリ23に記憶する必要はないが、本実施形態では、全ての学習用サンプルの全体特徴量をメモリ23に記憶しているものとする。
更に、本実施形態では、各学習用サンプルに対応付けて、風景のシーンに属するか否かを示す情報(属性情報)も記憶されている。風景のシーンに属するものには属性情報としてPが設定され、属さないものには属性情報としてNが設定される。後述する通り、この属性情報は、図19の設定画面161を表示する際に用いられると共に、図19の境界設定バー161Aの設定に応じて変更される。
図20Bは、各学習用サンプルの分布の説明図である。ここでは説明の簡略化のため、2つの特徴量によって、2次元空間に学習用サンプルが分布している。各ドットは、学習用サンプルの2次元空間上での位置をそれぞれ示している。
各学習用サンプルは予めクラスタリングされており、図中では13個のクラスタ(クラスタA〜クラスタM)にクラスタリングされている。ここでは、公知のk−means法により、クラスタリングがされている。k−means法によるクラスタリングの手法は、以下の通りである。(1)まず、コンピュータは、クラスタの中心の位置が仮決めする。ここでは、13個の中心の位置をランダムに仮決めする。(2)次に、コンピュータは、各学習用サンプルを、最も近い中心のクラスタに分類する。これにより、新しいクラスタが決定される。(3)次に、コンピュータは、各クラスタの学習用サンプルの特徴量の平均値を算出し、その平均値を新しいクラスタの中心の位置とする。(4)新しいクラスタの中心の位置が、元のクラスタの中心の位置と変化しなければクラスタリングを終了し、変化していれば(2)に戻る。
なお、同じクラスタ内には、似た性質の学習用サンプルが属することになる。例えば、青空の画像の学習用サンプルによってクラスタAが構成されたり、新緑の画像の学習用サンプルによってクラスタBが構成されたりする。
図20Bの白ドットは、各クラスタの中心の位置に最も近い学習用サンプルの位置を示している。この白ドットの学習用サンプルは、各クラスタを代表するサンプル(代表サンプル)となる。メモリ23には、白ドットで示された代表サンプルの画像データが記憶されている。言い換えると、メモリ23には、各クラスタを代表する画像の画像データが記憶される。後述する通り、この代表画像データは、図19の設定画面161の表示に用いられる。
以上説明したように、プリンタ4のメモリ23には、図20Aに示すデータ群と、図20Bの白ドットで示す代表サンプルの画像データが記憶されている。なお、各学習用サンプルの属するクラスタを示すデータは、メモリ23に格納されていても良いし、格納されていなくても良い。各学習用サンプルの属するクラスタを示すデータは、図20Aのデータ群を用いて求めることが可能だからである。
<設定画面161を表示するまでの処理>
次に、プリンタ側コントローラ20が、図19のような設定画面161をどのように表示するのかについて説明する。
図21Aは、境界(f(x)=0)の法線に代表サンプルを投影する様子の説明図である。ここでも説明の簡略化のため、2次元空間に代表サンプルが分布しているものとする。また、説明の簡略化のため、この2次元空間は、図17Aのように線形関数で分離可能な空間であるものとする。このため、風景画像のサンプルと、非風景画像のサンプルを分離する境界(f(x)=0)は、直線で定義される。(なお、デフォルトの設定では、クラスタA〜Gに属する学習用サンプルは風景画像であり、クラスタH〜Mに属する学習用サンプルは非風景画像である。)
図中において、代表サンプルの2次元空間上の位置が白ドットで示されており、境界(f(x)=0)が太線で示されている。なお、この境界は、設定変更前のデフォルトの境界である。
プリンタ側コントローラ20は、境界に対する法線を一つ定義し、この法線上に、代表サンプルを投影する。投影される位置は、代表サンプルを通り境界と平行な直線(境界が超平面であれば超平面)と、法線との交点である。このようにして、13個の代表サンプルが、法線上に投影される。言い換えると、13個の代表サンプルが一直線上に並ぶことになる。
図21Bは、法線上に投影された代表サンプルの説明図である。風景画像の代表サンプルが図中の左側に位置するように、言い換えると、非風景画像の代表サンプルが図中の右側に位置するように、法線を水平にして、法線上に投影された代表サンプルの位置関係を示している。
次に、プリンタ側コントローラ20は、法線上に5個の区間を定義する。図中には、第1区間〜第5区間が定義されている。各区間は、所定の長さになるように定義されている。また、図21Aの法線と境界(f(x)=0)との交点の位置が、2つの区間の境界になるように、5個の区間が定義される。ここでは、図21Aの法線と境界(f(x)=0)との交点の位置は、第3区間と第4区間の境界に相当する。なお、各区間には、複数の代表サンプルが存在することになる。
次に、プリンタ側コントローラ20は、各区間の中心に位置する代表サンプルの画像データを抽出する。ここでは、第1区間から、クラスタCの代表サンプルの画像データが抽出される。同様に、第2区間、第3区間、第4区間、第5区間から、クラスタE、F、H、Lの代表サンプルの画像データがそれぞれ抽出される。このとき、デフォルトの設定において風景のシーンに属しているとされる代表サンプルが、第1区間〜第3区間から抽出される。また、デフォルトの設定において風景のシーンに属しないとされる代表サンプルが、第4区間及び第5区間から抽出される。抽出された画像データは、各区間を代表するものと考えられる。
プリンタ側コントローラ20は、抽出した画像データを用いて、設定画面161をプリンタ4の表示部16に表示する。第1区間から抽出されたクラスタCの代表サンプルの画像データは、図19の画像L1の表示に用いられる。同様に、クラスタE、F、H、Lの代表サンプルの画像データは、それぞれ図19の画像L2、L3、L4、L5の表示に用いられる。
また、図21Aの法線と境界(f(x)=0)との交点の位置が第3区間と第4区間の境界に相当しているので、プリンタ側コントローラ20は、図19の画像L3(第3区間から抽出された代表サンプルの画像)と画像L4(第4区間から抽出された代表サンプルの画像)との間に境界設定バー161Aを表示する。ところで、画像L1〜画像L3は風景画像であり、画像L4及び画像L5は非風景画像であるので、境界設定バー161Aは、風景画像と非風景画像との間に表示されることになる。
本実施形態では、上記のように、境界の法線に代表サンプルの位置が投影され、法線上に投影された代表サンプルの位置に基づいて、抽出すべき代表サンプルが決定される。これにより、本実施形態では、判別式の値が大きいものほど左側になるように、5個の代表サンプルの画像が表示される。言い換えると、風景のシーンに属する確信度の高い順に左から並ぶように、5個の代表サンプルの画像を表示できる。
そして、上記のように図19の設定画面161が表示されるので、境界設定バー161Aの左側には、デフォルトの設定では風景画像の代表サンプルが表示される。また、境界設定バー161Aの右側には、デフォルトの設定では非風景画像の代表サンプルが表示される。そして、5個の画像のうちの右の画像ほど風景とは無関係な画像になるように、5個の画像L1〜L5が表示される。また、境界設定バー161Aの近くに表示される画像は、ユーザの好みによって風景画像か否かの判断が分かれやすい画像になる。
以上の説明では風景のシーンについて説明したが、他のシーンについても、プリンタ側コントローラ20は、同様の処理を行う。これにより、プリンタ側コントローラ20は、図19の設定画面161の風景以外の部分も表示できる。
<第1参考例>
次に、図19に示すように、ユーザが境界設定バー161Aを一つ左に移動して画像L2と画像L3との間に設定した後の処理について説明する。
境界設定バー161Aの移動後、境界設定バー161Aの右側において、境界設定バー161Aと、デフォルトの設定では非風景画像である画像L4との間に、デフォルトの設定では風景画像である画像L3(クラスタFの代表サンプルの画像であり、第3区間を代表する画像である)が位置する状態になる。ユーザが境界設定バー161Aを画像L3と画像L4との間から画像L2と画像L3との間に移動したということは、図21Bに示す第3区間に属するクラスタF、Gに属する学習用サンプルが風景画像ではなく非風景画像であるとユーザが考えていると想定できる。
図22Aは、変更後のデータ群の説明図である。図22Bは、変更後の境界の説明図である。以下、これらの図を用いて、設定変更後のプリンタ側コントローラ20の処理について説明する。
まず、プリンタ側コントローラ20は、クラスタF、Gに属する学習用サンプルの属性情報をPからNに変更する。例えば、仮に図20Aのサンプル番号3がクラスタF又はクラスタGに属していれば、図22Aに示すように属性情報をPからNに変更する。
本参考例では、クラスタFの代表サンプルの属性情報を変更するだけでなく、クラスタFに属する学習用サンプルの全ての属性情報を変更している。これにより、ユーザによる一度の操作によって、風景に属さないことをユーザが望んだ画像と似た性質の学習用サンプルの属性情報を、一括して変更することができる。
また、本参考例では、クラスタFの代表サンプルの属性情報を変更するだけでなく、第3区間に属する学習用サンプルの全ての属性情報を変更している。これにより、ユーザによる一度の操作によって、風景に属さないことをユーザが望んだ画像と同程度に境界から離れた学習用サンプルの属性情報を、一括して変更することができる。
次に、プリンタ側コントローラ20は、全体特徴量と変更後の属性情報とに基づいてサポートベクタマシンの再学習を行い、図22Bに示すように境界を変更する。言い換えると、プリンタ側コントローラ20は、全体特徴量と変更後の属性情報とに基づいて再学習を行い、図20Aの重み係数wを図22Bに示すように変更する。ここでは、変更後の境界をf´(x)=0と表記し、変更後の重み係数をw´と表記している。なお、再学習の演算処理は通常のサポートベクタマシンの学習の演算処理と同じなので、再学習の説明は省略する。
重み係数w(又はw´)は、境界の決定に寄与しなければゼロになる。このため、図20Aではゼロであった重み係数wが、変更によってゼロ以外の値を持つこともある。逆に、図20Aではゼロ以外の値を持っていた重み係数wが、変更によってゼロになることもある。デフォルトの設定では境界の決定に寄与しない学習用サンプルのデータまでをも図20Aのデータ群で記憶しているのは、このためである。
識別対象画像が風景のシーンに属するか否かを風景識別器51Lが判断するとき、風景識別器51Lは、図22Bのデータ群の学習用サンプルの全体特徴量と変更後の重み係数w´とに基づいて、前述の数1の判別式の値(変更後の判別式f´(x)の値)を算出する。なお、重み係数w´がゼロの学習用サンプルは除外して、風景識別器51Lは、前述の数1の判別式の値を算出する。これにより、全ての学習用サンプルを用いて判別式の値を求める場合よりも、演算速度が速くなる。
変更後の判別式f´(x)を用いることにより、ユーザの好みを反映した識別処理を行うことができる。例えば、仮に画像L3(図19参照)が建物の画像だとすると、識別対象画像が建物の画像である場合に、その識別対象画像が風景のシーンに属すると判断され難くなる。言い換えると、仮にクラスタF(図22B参照)が建物の画像の学習用サンプルから構成されていたとすると、識別対象画像が建物の画像である場合に、その識別対象画像が風景のシーンに属すると判断され難くなる。
本参考例では、ユーザの好みに合わせた設定変更を、容易に行うことができる。もし仮に、1個ずつ学習用サンプルの画像を表示し、表示された学習用サンプルの画像が風景か否かをユーザが1個ずつ決定することにすると、ユーザは何度も決定作業を行う必要があるので不便である。
なお、上記の説明では、ユーザが境界設定バー161Aを一つ左に移動した場合について説明した。これに対し、仮にユーザが境界設定バー161Aを一つ右に移動した場合には、境界設定バー161Aの左側において、境界設定バー161Aと、デフォルトの設定では風景画像である画像L3との間に、デフォルトの設定では非風景画像である画像L4(クラスタHの代表サンプルの画像であり、第4区間を代表する画像である)が位置する状態になる。このような場合には、プリンタ側コントローラ20は、第4区間に属するクラスタI、H、Jに属する学習用サンプルの属性情報をNからPに変更し、全体特徴量と変更後の属性情報とに基づいてサポートベクタマシンの再学習を行い、境界を変更する。この場合にも、ユーザの好みを反映した識別処理を行うことができる。
<本実施形態における設定画面161にて境界が設定された後の処理>
前述の第1参考例では、ユーザが図19の境界設定バー161Aの位置を変更したときに、サポートベクタマシンの再学習を行っていた。このような形態では、プリンタ側コントローラ20が、学習処理を行うためのプログラムを実行する必要があり、また、再学習の処理時間も必要となる。そこで、本実施形態では、予め複数の判別式が用意されており、境界設定バー161Aの位置に応じて判別式が選択されることによって、プリンタ側コントローラ20が再学習を行わなくても済むようにしている。なお、判別式は、識別対象画像を評価するための評価関数に相当する。
図23は、本実施形態の学習用サンプルのデータ群である。第1参考例のデータ群(図20A参照)と比較すると、本実施形態では各学習用サンプル毎に複数の重み係数wが記憶されている。ここでは、第1重み係数〜第4重み係数の4種類が記憶されている。言い換えると、4種類の判別式がメモリ23に記憶されている。
4種類の重み係数は、それぞれ境界設定バー161Aの位置に対応付けられている。第1重み係数は、図19の画像L1と画像L2との間に対応付けられている。同様に、第2重み係数、第3重み係数、第4重み係数は、それぞれ、図19の画像L2と画像L3との間、画像L3と画像L4との間、画像L4と画像L5との間に対応付けられている。
ユーザが設定を変更する前では、プリンタ側コントローラ20(風景識別器51L)は、第3重み係数と全体特徴量とに基づいて、前述の数1の判別式の値を算出する。言い換えると、デフォルトの設定では第3重み係数を用いた判別式が選択され、この判別式によって風景識別器51Lは識別処理を行う。なお、演算速度向上のため、重み係数wがゼロの学習用サンプルは除外して、判別式の値が算出される。第3重み係数は、第1参考例のデフォルトの重み係数w(図20A参照)と同じ値である。
ユーザが境界設定バー161Aを一つ左に移動して画像L2と画像L3との間に設定した場合、風景識別器51Lは、第2重み係数と全体特徴量とに基づいて、前述の数1の判別式の値を算出する。言い換えると、ユーザが境界設定バー161Aを一つ左に移動して画像L2と画像L3との間に設定した場合、第2重み係数を用いた判別式が選択され、この判別式によって風景識別器51Lが識別処理を行う。なお、演算速度向上のため、重み係数wがゼロの学習用サンプルは除外して、判別式の値が算出される。第2重み係数は、第1参考例において再学習によって求められた重み係数w´(図22B参照)と同じである。
以上の説明では風景の学習用サンプルのデータ群について説明したが、他のシーンについても、同様のデータ群をメモリに記憶している。
本実施形態においても、第1参考例と同様に、ユーザの好みを反映した識別処理を行うことができる。更に、本実施形態では再学習を行わなくても良いので、サポートベクタマシンによる学習処理を行うプログラムを実行しなくても良い。また、再学習を行わなくても良いので、設定後のプリンタ側コントローラ20の処理の負荷も軽減される。
===第2実施形態===
<概要説明>
ユーザの好みには個人差があるため、ある画像が「風景」に識別されることを好む人もいれば、「夕景」に識別されることを好む人もいる。そこで、第2実施形態では、ユーザの好みを識別処理に反映させることを可能にしている。
図24は、第2実施形態の設定画面の説明図である。この設定画面163は、プリンタ4の表示部16に表示される画面である。設定画面163には、各シーンに対応して、それぞれ5個の画像が表示される。これらの画像は、いずれもサポートベクタマシン(SVM)の学習用サンプルの画像である。ここでは、「風景」及び「夕景」に対応して最上段に表示される5個の画像LS1〜LS5について説明する。
5個の画像のうちの左側の画像ほど風景の特徴が濃く現れた画像になっており、右側の画像ほど夕景の特徴が濃く現れた画像になっている。言い換えると、5個の画像のうちの左から右へ順に、風景画像から夕景画像に移り変わるように、5個の画像LS1〜LS5が表示されるようになっている(後述)。そして、当初の設定では、3個の画像LS1〜画像LS3に対応する学習用サンプルは風景に属するとされており、2個の画像LS4及び画像LS5に対応する学習用サンプルは夕景に属するとされている。これに応じて、設定画面163の表示の当初は、風景に属する画像と夕景に属する画像との境界を示すように、境界設定バー163Aが画像LS3と画像LS4との間に表示される。
この境界設定バー163Aは、ユーザによってその位置を変更することが可能である。例えば、表示部16に表示された画像LS3が風景画像ではなく夕景画像であるとユーザが判断した場合、ユーザは、パネル部17を操作して、5個の境界設定バー163Aのうち一番上の境界設定バー163Aを選択し、その境界設定バー163Aを一つ左に移動して画像LS2と画像LS3との間にする。
そして、設定された境界設定バー163Aの位置に応じて、サブ識別器51の処理が変更される(後述)。この結果、画像LS3の類似画像を風景識別器51Lが識別したとき、当初の設定のままでは風景識別器51Lは風景のシーンに属すると識別していたが、風景のシーンに属しないと識別できるようになる。また、画像LS3の類似画像を夕景識別器51Sが識別したとき、当初の設定のままでは夕景識別器51Sは夕景のシーンに属しないと識別していたが、夕景のシーンに属すると識別できるようになる。つまり、ユーザの好みが識別処理に反映されるようになる。
以下の説明では、まず、プリンタ4のメモリ23に記憶されているデータについて説明する。次に、設定画面163をどのように表示するのかについて説明する。その次に、設定画面163にて境界が設定された後、サブ識別器51の処理がどのように変更されるのかについて説明する。
<メモリに格納されている学習用サンプルのデータ>
まず、プリンタ4のメモリ23に記憶されているデータについて説明する。以下に説明するように、メモリ23には、図25Aに示すデータ群と、図25Bの白ドットで示す学習用サンプルの画像データが記憶されている。
図25Aは、メモリ23に記憶されている学習用サンプルのデータ群である。
図に示すように、学習用サンプルの画像そのものの情報(画像データ)が記憶されるのではなく、学習用サンプルの全体特徴量がメモリ23に記憶されている。また、各学習用サンプルに対応付けて、シーン毎の重み係数wもメモリ23に記憶されている。この重み係数wは、学習用サンプルの全体特徴量のデータ群を用いて算出することが可能であるが、ここでは、重み係数wは予め算出されて、メモリ23に記憶されているものとする。前述の判別式f(x)の値は、このデータ群の全体特徴量yと重み係数w(例えば風景識別器51Lの判別式f(x)の場合には添え字Lの重み係数)を用いて、前述の数1の式に基づいて算出される。なお、境界の決定に寄与しない学習用サンプルの重み係数はゼロとなるので、本来ならばその学習用サンプルの全体特徴量はメモリ23に記憶する必要はないが、本実施形態では、全ての学習用サンプルの全体特徴量をメモリ23に記憶しているものとする。
更に、本実施形態では、各学習用サンプルに対応付けて、どのシーンに属するかを示す情報(属性情報)も記憶されている。後述する通り、この属性情報は、図24の設定画面163を表示する際に用いられると共に、図24の境界設定バー163Aの設定に応じて変更される。
図25Bは、各学習用サンプルの分布の説明図である。ここでは説明の簡略化のため、2つの特徴量によって、2次元空間に学習用サンプルが分布している。各ドットは、学習用サンプルの2次元空間上での位置をそれぞれ示している。
各学習用サンプルは予めクラスタリングされており、図中では13個のクラスタ(クラスタA〜クラスタM)にクラスタリングされている。ここでは、公知のk−means法により、クラスタリングがされている。k−means法によるクラスタリングの手法は、以下の通りである。(1)まず、コンピュータは、クラスタの中心の位置が仮決めする。ここでは、13個の中心の位置をランダムに仮決めする。(2)次に、コンピュータは、各学習用サンプルを、最も近い中心のクラスタに分類する。これにより、新しいクラスタが決定される。(3)次に、コンピュータは、各クラスタの学習用サンプルの特徴量の平均値を算出し、その平均値を新しいクラスタの中心の位置とする。(4)新しいクラスタの中心の位置が、元のクラスタの中心の位置と変化しなければクラスタリングを終了し、変化していれば(2)に戻る。
なお、同じクラスタ内には、似た性質の学習用サンプルが属することになる。例えば、青空の画像の学習用サンプルによってクラスタAが構成されたり、新緑の画像の学習用サンプルによってクラスタBが構成されたりする。なお、デフォルトの設定では、クラスタA〜Fに属する学習用サンプルは風景画像であり、クラスタG〜Kに属する学習用サンプルは夕景画像であり、クラスタL〜Mに属する学習用サンプルは夜景画像であるものとする(花画像及び紅葉画像の学習用サンプルについては不図示とする)。
図25Bの白ドットは、各クラスタの中心の位置に最も近い学習用サンプルの位置を示している。この白ドットの学習用サンプルは、各クラスタを代表するサンプル(代表サンプル)となる。メモリ23には、白ドットで示された代表サンプルの画像データが記憶されている。言い換えると、メモリ23には、各クラスタを代表する画像の画像データが記憶される。後述する通り、この代表画像データは、図24の設定画面163の表示に用いられる。
以上説明したように、プリンタ4のメモリ23には、図25Aに示すデータ群と、図25Bの白ドットで示す代表サンプルの画像データが記憶されている。なお、各学習用サンプルの属するクラスタを示すデータは、メモリ23に格納されていても良いし、格納されていなくても良い。各学習用サンプルの属するクラスタを示すデータは、図25Aのデータ群を用いて求めることが可能だからである。
<設定画面163を表示するまでの処理>
次に、プリンタ側コントローラ20が、図24のような設定画面163をどのように表示するのかについて説明する。ここでは主に、設定画面163の一番上の5個の画像LS1〜LS5がどのように表示されるかについて説明する。
図26Aは、風景画像と夕景画像とを分離する境界F_ls(x)=0の説明図である。図中には、風景と夕景の学習用サンプルだけが示されており、他のシーン(例えば夜景)の学習用サンプルは示されていない。また、説明の簡略化のため、この2次元空間は、図17Aのように線形関数で分離可能な空間であるものとする。このため、風景画像のサンプルと、夕景画像のサンプルを分離する境界F_ls(x)=0は、直線で定義される。プリンタ側コントローラ20は、この境界F_ls(x)=0を、風景と夕景の学習用サンプルを用いた学習によって求める。この学習の演算処理は、通常のサポートベクタマシンの学習の演算処理と同じなので、説明は省略する。
図26Bは、境界(F_ls(x)=0)の法線に代表サンプルを投影する様子の説明図である。図中において、代表サンプルの2次元空間上の位置が白ドットで示されている。プリンタ側コントローラ20は、境界に対する法線を一つ定義し、この法線上に、代表サンプルを投影する。投影される位置は、代表サンプルを通り境界と平行な直線(境界が超平面であれば超平面)と、法線との交点である。このようにして、11個の代表サンプルが、法線上に投影される。言い換えると、11個の代表サンプルが一直線上に並ぶことになる。なお、法線に投影される代表サンプルは、風景画像及び夕景画像の代表サンプルであり、それ以外のシーン(例えば夜景)の代表サンプルは含まれない。
図26Cは、法線上に投影された代表サンプルの説明図である。風景画像の代表サンプルが図中の左側に位置するように、言い換えると、非風景画像の代表サンプルが図中の右側に位置するように、法線を水平にして、法線上に投影された代表サンプルの位置関係を示している。
次に、プリンタ側コントローラ20は、法線上に5個の区間を定義する。図中には、第1区間〜第5区間が定義されている。各区間は、所定の長さになるように定義されている。また、図26Bの法線と境界(F_ls(x)=0)との交点の位置が、2つの区間の境界になるように、5個の区間が定義される。ここでは、図26Bの法線と境界(F_ls(x)=0)との交点の位置は、第3区間と第4区間の境界に相当する。なお、各区間には、複数の代表サンプルが存在することになる。
次に、プリンタ側コントローラ20は、各区間の中心に位置する代表サンプルの画像データを抽出する。ここでは、第1区間から、クラスタBの代表サンプルの画像データが抽出される。同様に、第2区間、第3区間、第4区間、第5区間から、クラスタD、E、J、Iの代表サンプルの画像データがそれぞれ抽出される。このとき、デフォルトの設定において風景のシーンに属しているとされる代表サンプルが、第1区間〜第3区間から抽出される。また、デフォルトの設定において夕景のシーンに属しているとされる代表サンプルが、第4区間及び第5区間から抽出される。抽出された画像データは、各区間を代表するものと考えられる。
プリンタ側コントローラ20は、抽出した画像データを用いて、設定画面163をプリンタ4の表示部16に表示する。第1区間から抽出されたクラスタBの代表サンプルの画像データは、図24の画像LS1の表示に用いられる。同様に、クラスタD、E、J、Iの代表サンプルの画像データは、それぞれ図24の画像LS2、LS3、LS4、LS5の表示に用いられる。
また、図26Bの法線と境界(F_ls(x)=0)との交点の位置が第3区間と第4区間の境界に相当しているので、プリンタ側コントローラ20は、図24の画像LS3(第3区間から抽出された代表サンプルの画像)と画像LS4(第4区間から抽出された代表サンプルの画像)との間に境界設定バー163Aを表示する。ところで、画像LS1〜画像LS3は風景画像であり、画像LS4及び画像LS5は夕景画像であるので、境界設定バー163Aは、風景画像と夕景画像との間に表示されることになる。
本実施形態では、上記のように、境界の法線に代表サンプルの位置が投影され、法線上に投影された代表サンプルの位置に基づいて、抽出すべき代表サンプルが決定される。これにより、本実施形態では、判別式F_ls(x)の値が大きいものほど左側になるように、5個の代表サンプルの画像が表示される。言い換えると、風景のシーンに属する確信度の高い順に左から並ぶように、5個の代表サンプルの画像を表示できる。
そして、上記のように図24の設定画面163が表示されるので、境界設定バー163Aの左側には、デフォルトの設定では風景画像の代表サンプルが表示される。また、境界設定バー163Aの右側には、デフォルトの設定では夕景画像の代表サンプルが表示される。そして、5個の画像のうちの左側の画像ほど風景の特徴が濃く現れた画像になっており、右側の画像ほど夕景の特徴が濃く現れた画像になっている。言い換えると、5個の画像のうちの左から右へ順に、風景画像から夕景画像に移り変わるように、5個の画像LS1〜LS5が表示されるようになっている。このため、境界設定バー163Aの近くに表示される画像は、ユーザの好みによって風景画像か夕景画像かの判断が分かれやすい画像になる。
以上の説明では、設定画面163の一番上の5個の画像(風景画像と夕景画像)について説明したが、他のシーンについても、プリンタ側コントローラ20は、同様の処理を行う。これにより、プリンタ側コントローラ20は、図24の設定画面163の画像LS1〜LS5以外の画像も表示できる。
<第2参考例(その1)>
次に、図24に示すように、ユーザが境界設定バー163Aを一つ左に移動して画像LS2と画像LS3との間に設定した後の処理について説明する。
境界設定バー163Aの移動後、境界設定バー163Aの右側において、境界設定バー163Aと、デフォルトの設定では夕景画像である画像LS4との間に、デフォルトの設定では風景画像である画像LS3(クラスタEの代表サンプルの画像であり、第3区間を代表する画像である)が位置する状態になる。ユーザが境界設定バー163Aを画像LS3と画像LS4との間から画像LS2と画像LS3との間に移動したということは、図26Cに示す第3区間に属するクラスタE、Fに属する学習用サンプルは風景画像ではないとユーザが考えていると想定できる(ここでは、クラスタE、Fに属する学習用サンプルは夕景画像であるとユーザが考えていると想定できる)。
図27Aは、変更後のデータ群の説明図である。図27Bは、変更後の境界の説明図である。以下、これらの図を用いて、設定変更後のプリンタ側コントローラ20の処理について説明する。
まず、プリンタ側コントローラ20は、クラスタE、Fに属する学習用サンプルの属性情報を風景から夕景に変更する。例えば、仮に図25Aのサンプル番号3がクラスタE又はクラスタFに属していれば、図27Aに示すように属性情報を風景から夕景に変更する。
本参考例では、クラスタEの代表サンプルの属性情報を変更するだけでなく、クラスタEに属する学習用サンプルの全ての属性情報を変更している。これにより、ユーザによる一度の操作によって、風景に属さないことをユーザが望んだ画像と似た性質の学習用サンプルの属性情報を、一括して変更することができる。
また、本参考例では、クラスタEの代表サンプルの属性情報を変更するだけでなく、第3区間に属する学習用サンプル(例えばクラスタF)の全ての属性情報を変更している。これにより、ユーザによる一度の操作によって、風景に属さないことをユーザが望んだ画像と同程度に境界から離れた学習用サンプルの属性情報を、一括して変更することができる。
次に、プリンタ側コントローラ20は、全体特徴量と変更後の属性情報とに基づいてサポートベクタマシンの再学習を行い、図27Bに示すように境界を変更する。言い換えると、プリンタ側コントローラ20は、全体特徴量と変更後の属性情報とに基づいて再学習を行い、図25Aの重み係数wを図27Bに示すように変更する。ここでは、変更後の境界をf´(x)=0と表記し、変更後の重み係数をw´と表記している。なお、再学習の演算処理は通常のサポートベクタマシンの学習の演算処理と同じなので、再学習の説明は省略する。
なお、図24に示すように、一番上の境界設定バー163Aの位置が変更されると、風景の重み係数と夕景の重み係数とが変更されることになり、風景識別器51Lの境界f(x)と夕景識別器51Sの境界f(x)とが変更されることになる。風景識別器51Lの境界f(x)を再学習により変更するときには、変更後の属性情報における風景と非風景(夕景・夜景・花・紅葉)とを分離できるように、学習用サンプルを用いた再学習が行われる。夕景識別器51Sの境界f(x)を再学習により変更するときには、変更後の属性情報における夕景と非夕景(風景・夜景・花・紅葉)とを分離できるように、学習用サンプルを用いた再学習が行われる。
重み係数w(又はw´)は、境界の決定に寄与しなければゼロになる。このため、図25Aではゼロであった重み係数wが、変更によってゼロ以外の値を持つこともある。逆に、図25Aではゼロ以外の値を持っていた重み係数wが、変更によってゼロになることもある。デフォルトの設定では境界の決定に寄与しない学習用サンプルのデータまでをも図25Aのデータ群で記憶しているのは、このためである。
識別対象画像が風景のシーンに属するか否かを風景識別器51Lが判断するとき、風景識別器51Lは、図27Bのデータ群の学習用サンプルの全体特徴量と変更後の風景の重み係数w´(添え字Lの重み係数)とに基づいて、前述の数1の判別式の値(変更後の判別式f´(x)の値)を算出する。なお、重み係数w´がゼロの学習用サンプルは除外して、風景識別器51Lは、前述の数1の判別式の値を算出する。これにより、全ての学習用サンプルを用いて判別式の値を求める場合よりも、演算速度が速くなる。
変更後の判別式f´(x)を用いることにより、ユーザの好みを反映した識別処理を行うことができる。例えば、仮に画像LS3(図24参照)が赤みのある風景の画像だとすると、識別対象画像が赤みのある風景の画像である場合に、その識別対象画像が風景のシーンに属すると判断され難くなる。言い換えると、仮にクラスタE(図27B参照)が赤みのある風景の画像の学習用サンプルから構成されていたとすると、識別対象画像が赤みのある風景の画像である場合に、その識別対象画像が風景のシーンに属すると判断され難くなる。
本参考例では、ユーザの好みに合わせた設定変更を、容易に行うことができる。もし仮に、多数の学習用サンプルの画像を1個ずつ表示し、表示された学習用サンプルの画像のシーンをユーザが1個ずつ決定することにすると、ユーザは何度も決定作業を行う必要があるので不便である。
なお、上記の説明では、ユーザが境界設定バー163Aを一つ左に移動した場合について説明した。これに対し、仮にユーザが境界設定バー163Aを一つ右に移動した場合には、境界設定バー163Aの左側において、境界設定バー163Aと、デフォルトの設定では風景画像である画像LS3との間に、デフォルトの設定では夕景画像である画像LS4(クラスタJの代表サンプルの画像であり、第4区間を代表する画像である)が位置する状態になる。このような場合には、プリンタ側コントローラ20は、第4区間に属するクラスタJ、H、Gに属する学習用サンプルの属性情報を夕景から風景に変更し、全体特徴量と変更後の属性情報とに基づいてサポートベクタマシンの再学習を行い、境界を変更する。この場合にも、ユーザの好みを反映した識別処理を行うことができる。
<第2参考例(その2)>
上記の説明では、1個の境界設定バーの位置だけが変更された場合について説明しているが、次に、2個の境界設定バーの位置が変更された場合について説明する。
図28は、2個の境界設定バーの位置が変更される様子の説明図である。既に説明した処理によって設定画面163が表示部16に表示された結果、最上段に表示される5個の画像LS1〜LS5(図24参照)のうちのLS3の位置に、クラスタEの代表サンプルの画像が表示されている。また、同様の処理の結果、2段目に表示される5個の画像LN1〜LN5(図24参照)のうちのLN3の位置に、クラスタEの代表サンプルの画像が表示されている。
図28に示すように、ユーザが最上段の境界設定バー163Aを一つ左に移動するとともに、2段目の境界設定バー163Bも一つ左に移動するとする。このような場合、最上段の境界設定バー163Aの設定変更によって「画像Eが夕景画像である」とし、2段目の境界設定バー163Bの設定変更によって「画像Eが夜景画像である」としてしまうと、矛盾が生じてしまう。このように、境界設定バーの位置が変更された場合、変更前後の境界設定バーに挟まれた画像が「○○画像である」と扱うことにすると、矛盾が生じることがある。
そこで、図28のように2個の境界設定バーの位置が変更された場合、最上段の境界設定バー163Aの設定変更によって「画像Eは風景画像ではない」と考え、2段目の境界設定バー163Bの設定変更によって「画像Eは風景画像ではない」と考えれば、矛盾は生じない。このように、境界設定バーの位置が変更された場合、変更前後の境界設定バーに挟まれた画像は「○○画像ではない」と扱うこととする(なお、位置の変更された境界設定バーが1個の場合も同様である。)。
図29Aは、最上段の境界設定バー163Aの位置変更結果の説明図である。最上段の境界設定バー163Aが一つ左に移動した結果、変更前後の境界設定バーに挟まれた画像は「風景画像ではない」と扱うため、クラスタE、Fに属する学習用サンプルの属性情報が風景ではなくなる。
図29Bは、2段目の境界設定バー163Bの位置変更結果の説明図である。2段目の境界設定バー163Bが一つ左に移動した結果、変更前後の境界設定バーに挟まれた画像は「風景画像ではない」と扱うため、クラスタEに属する学習用サンプルの属性情報が風景ではなくなる。
次に、クラスタE、Fの属性情報をどのシーンにすべきかについて説明する。図29Cは、2個の境界設定バーの位置変更結果の概念図である。
クラスタFは、図29A〜図29Cに示すとおり、最上段の境界設定バー163Aの設定変更だけの影響を受け、2段目の境界設定バー163Bの設定変更の影響は受けていない。このため、プリンタ側コントローラ20は、クラスタFに属する学習用サンプルの属性情報を、夕景に変更する。
クラスタEは、図29A〜図29Cに示すとおり、最上段の境界設定バー163Aの設定変更の影響だけでなく、2段目の境界設定バー163Bの設定変更の影響も受ける。このため、クラスタEに属する学習用サンプルの属性情報を、夕景にすべきか、夜景にすべきか、問題になる。そこで、まずプリンタ側コントローラ20は、図29Cの空間上においてクラスタEの代表サンプルに最も近い代表サンプルであって、風景以外のシーンの代表サンプル(クラスタG〜Mの代表サンプル)を抽出する。ここでは、クラスタLの代表サンプルが抽出される。そして、プリンタ側コントローラ20は、抽出された代表サンプルの属性情報と同じ属性情報になるように、クラスタEに属する学習用サンプルの属性情報を変更する。つまり、クラスタEに属する学習用サンプルの属性情報は、夜景に変更される。
なお、属性情報の変更後の処理は、既に説明した通りである。すなわち、全体特徴量と変更後の属性情報とに基づいてサポートベクタマシンの再学習を行い、重み係数wを変更することによって、判別式を変更する(境界を変更する)。
上記の処理によれば、2個の境界設定バーの位置が変更された場合においても、ユーザの設定に矛盾なく、ユーザの好みを反映した識別処理を行うことができる。
<本実施形態における設定画面163にて境界が設定された後の処理>
前述の第2参考例では、ユーザが図24の境界設定バー163Aの位置を変更したときに、サポートベクタマシンの再学習を行っていた。このような形態では、プリンタ側コントローラ20が、学習処理を行うためのプログラムを実行する必要があり、また、再学習の処理時間も必要となる。そこで、本実施形態では、予め複数の判別式が用意されており、境界設定バーの位置に応じて判別式が選択されることによって、プリンタ側コントローラ20が再学習を行わなくても済むようにしている。なお、判別式は、識別対象画像を評価するための評価関数に相当する。
図30は、第2実施形態の学習用サンプルのデータ群である。ここでは、風景識別器51Lのサポートベクタマシンに用いられるデータ群だけが示されている。第2参考例のデータ群(図25A参照)と比較すると、本実施形態では各学習用サンプルに対して、各シーンごとに複数の重み係数wが対応付けられて記憶されている。ここでは、風景のシーンに対して、第1重み係数、第2重み係数、第3重み係数・・・が記憶されている。
各重み係数は、それぞれ境界設定バー163Aの位置に対応付けられている。例えば、デフォルトの状態(図24の設定変更前の状態)では第1重み係数が対応付けられており、図24の設定変更後の状態では第2重み係数が対応付けられている。
ユーザが設定を変更する前では、プリンタ側コントローラ20(風景識別器51L)は、第1重み係数と全体特徴量とに基づいて、前述の数1の判別式の値を算出する。言い換えると、デフォルトの設定では第1重み係数を用いた判別式が選択され、この判別式によって風景識別器51Lは識別処理を行う。なお、演算速度向上のため、重み係数wがゼロの学習用サンプルは除外して、判別式の値が算出される。第1重み係数は、第2参考例のデフォルトの重み係数w_L(図25A参照)と同じ値である。
ユーザが境界設定バー163Aを一つ左に移動して画像LS2と画像LS3との間に設定した場合、風景識別器51Lは、第2重み係数と全体特徴量とに基づいて、前述の数1の判別式の値を算出する。言い換えると、ユーザが境界設定バー163Aを一つ左に移動して画像LS2と画像LS3との間に設定した場合、第2重み係数を用いた判別式が選択され、この判別式によって風景識別器51Lが識別処理を行う。なお、演算速度向上のため、重み係数wがゼロの学習用サンプルは除外して、判別式の値が算出される。第2重み係数は、第2参考例において再学習によって求められた重み係数w_L´(図27B参照)と同じである。
以上の説明では風景の学習用サンプルのデータ群について説明したが、他のシーンについても、同様のデータ群をメモリに記憶している。なお、ユーザが境界設定バー163Aを一つ左に移動して画像LS2と画像LS3との間に設定した場合、風景識別器51Lの判別式が変更されるだけでなく、夕景識別器51Sの判別式も変更される(夕景を識別するための判別式が予め複数用意されており、境界設定バー163Aの位置に応じた判別式が選択される)。
本実施形態においても、第2参考例と同様に、ユーザの好みを反映した識別処理を行うことができる。更に、本実施形態では再学習を行わなくても良いので、サポートベクタマシンによる学習処理を行うプログラムを実行しなくても良い。また、再学習を行わなくても良いので、設定後のプリンタ側コントローラ20の処理の負荷も軽減される。
===その他の実施の形態===
一実施形態としてのプリンタ等を説明したが、上記の実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることは言うまでもない。特に、以下に述べる実施形態であっても、本発明に含まれるものである。
<プリンタについて>
前述の実施形態ではプリンタ4がシーン識別処理をしていたが、デジタルスチルカメラ2がシーン識別処理をしても良い。また、上記のシーン識別処理を行う画像識別装置は、プリンタ4やデジタルスチルカメラ2に限られるものではない。例えば、大量の画像ファイルを保存するフォトストレージのような画像識別装置が、上記のシーン識別処理を行っても良い。もちろん、パーソナルコンピュータやインターネット上に設置されたサーバーが、上記のシーン識別処理を行っても良い。
なお、シーン識別装置に上記のシーン識別処理を実行させるプログラムも、本発明の範疇である。
<サポートベクタマシンについて>
前述のサブ識別器51やサブ部分識別器61には、サポートベクタマシン(SVM)による識別手法が用いられている。しかし、識別対象画像が特定シーンに属するか否かの識別手法は、サポートベクタマシンを用いるものに限られるものではない。例えば、ニューラルネットワーク等のパターン認識を採用しても良い。
<シーンの識別について>
前述の実施形態では、サブ識別器51やサブ部分識別器61は、画像データの示す画像が特定のシーンに属するか否かを識別している。しかし、シーンの識別に限られず、何らかのクラスに属するか否かを識別するもので良い。例えば、画像データの示す画像が特定のパターン形状か否かを識別しても良い。