以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
[第1の実施形態]
<システム構成>
先ず、本実施形態に係るシステムの構成について説明する。図1は、本実施形態に係るシステムのハードウェア構成を示すブロック図である。同図に示す如く、本実施形態に係るシステムは、情報処理装置100、撮像装置160、表示装置170により構成されている。以下、各装置について説明する。
先ず、情報処理装置100について説明する。情報処理装置100は、例えば一般のPC(パーソナルコンピュータ)やWS(ワークステーション)などにより構成されており、同図に示す如く、CPU110、メモリ120、HDD(ハードディスクドライブ装置)130、画像取得部140、画像生成部150、キーボード180、マウス190により構成されている。
CPU110は、メモリ120にロードされたプログラムやデータを用いて情報処理装置100全体の制御を行うと共に、情報処理装置100が行う後述の各処理を実行する。
メモリ120は、HDD130からロードされたプログラムやデータを一時的に記憶するためのエリア、画像取得部140によって撮像装置160から取得した画像データを一時的に記憶するためのエリア、CPU110が各種の処理を実行する際に用いるワークエリアなど、各種のエリアを適宜提供することができる。
HDD130は、OS(オペレーティングシステム)や、指標定義情報管理プログラム200等を保存するものであり、これらはCPU110による制御に従って適宜メモリ120にロードされ、CPU110による処理対象となる。なお、指標定義情報管理プログラム200は、現実空間中に配される指標がツリー構造のデータ形式で管理されている様子をグラフィカルに示すツリービューの表示・設定、指標定義情報の管理、指標色領域の表示、認識色領域の設定などをCPU110に実行させるためのプログラムである。また、HDD130には、この指標定義情報管理プログラム200を動作させるために必要なデータも保存されており、これもまたCPU110による制御に従って適宜メモリ120にロードされる。
キーボード180、マウス190は、情報処理装置100を操作するユーザが操作することで、各種の指示をCPU110に対して入力するためのものである。
画像取得部140は、撮像装置160から順次送出される各フレームの画像(現実空間画像)を受け、これを指標定義情報管理プログラム200で扱うことのできるデータ形式に変換して、順次メモリ120、若しくはHDD130に転送する。
画像生成部150は、表示装置170に表示するための画面を生成するものであり、例えば、CPU110が指標定義情報管理プログラム200を実行することで表示装置170に表示されるGUIの画面もまた、この画像生成部150によって生成される。
次に、撮像装置160について説明する。撮像装置160は、複数の指標が配された現実空間の動画像を撮像するものであり、撮像した各フレームの画像は情報処理装置100が有する画像取得部140に送出する。
次に、表示装置170について説明する。表示装置170は、CRTや液晶画面などにより構成されており、CPU110による処理結果を画像や文字などでもって表示することができる。例えば、CPU110が指標定義情報管理プログラム200を実行することで表示される後述のGUI画面を表示する。
<指標定義情報管理プログラム200について>
次に、指標定義情報管理プログラム200について説明する。指標定義情報管理プログラム200は、どのような指標が使われているか、指標の所属する座標系、指標シート、指標の位置、指標の認識色領域、指標形状といった指標定義情報を編集し、編集結果を所定の書式のファイル(指標定義情報ファイル)として生成したり、既存の指標定義情報ファイルを読み出したりするためのプログラムである。
図13は、指標定義情報ファイルの構成例を示す図である。同図に示す如く、指標定義情報ファイルには、worldという名前の座標系(世界座標系)と、YELLOW、ORANGE、GREEN、BLUE、MAGENTAという名前の5つの指標とが定義されており、指標YELLOW、ORANGE、GREEN、BLUE、MAGENTAが、座標系worldの下に所属している様子を示している。また、指標定義情報ファイルには更に、それぞれの指標について、配置位置、色、サイズ(直径)等が登録されている。
このような指標定義情報ファイルは、CPU110が指標定義情報管理プログラム200を実行することで画像生成部150が生成し、表示装置170に表示されるGUIを、ユーザがキーボード180やマウス190を用いて操作することで編集することができる。但し、後述するように、一部の指標定義情報に関しては編集を行うことができないようになっている。これについて詳しくは後述する。また、図13においては座標系worldの直下、かつ指標YELLOW、ORANGE、GREEN、BLUE、MAGENTAの上に「指標シート(紙)」である指標シートSHEETを定義しているが、これについても詳しくは後述する。
そして、編集された指標定義情報ファイルは、ユーザがキーボード180やマウス190を用いてCPU110に対して指示することで、CPU110によってHDD130に保存される。また、上記GUIを介して使用する指標定義情報ファイルを指示すると、CPU110は指示された指標定義情報ファイルをHDD130からメモリ120に読み出す。
図12は、上記GUIの表示例を示す図である。同図のGUIは上述の通り、CPU110が指標定義情報管理プログラム200を実行することで画像生成部150が生成し、表示装置170に表示されるものである。なお、以下の説明では特に説明しない限りは、GUIに対する操作は、ユーザがキーボード180やマウス190を用いて行うものとし、この操作によって行われる処理は、CPU110がこの操作を検知し、検知した操作内容に応じた処理を実行することにより成されるものとする。
同図において210、220はメニューであり、それぞれマウス190を用いてクリックすることで、図3、図4のようなメニューリストが表示される。
図3は、「ファイル」メニュー210をクリックすることで、表示装置170の表示画面上に表示されるメニューの表示例を示す図である。同図において「開く」メニュー212は、マウス190でもって指示することで、HDD130に保存されている指標定義情報ファイルを開き、後述するツリービュー280などに展開表示する処理をCPU110に指示するための項目である。「保存」メニュー214は、マウス190でもって指示することで、編集中の指標定義情報を指標定義情報ファイルとしてHDD130に保存する処理をCPU110に指示するための項目である。「終了」メニュー216は、マウス190でもって指示することで、指標定義情報管理プログラム200を終了する処理をCPU110に指示するための項目である。
図4は、「編集」メニュー220をクリックすることで、表示装置170の表示画面上に表示されるメニューの表示例を示す図である。同図において「座標系の新規作成」メニュー222は、マウス190でもって指示することで、ツリービュー280でマウスクリックにより選択され反転色となっている座標系の子座標系を新たに作成する処理を、CPU110に指示するための項目である。ツリービュー280では、座標系を示すノード(座標系アイコンおよび座標系の名前)が追加される。
例えば、ツリービュー280が図16に示す如く、座標系worldが選択されている状態であった場合に、「座標系の新規作成」メニュー222を指示すると、図17に示す如く、座標系worldの子座標系として新しく座標系「NewCoordSys」が作成され、ツリービュー280に表示される。図16,17は、座標系を示すノードの追加を説明する図である。
この子座標系をツリービューで選択して親座標系から見た位置姿勢を入力する必要があるが、それについては以下の説明の趣旨ではないので、説明は割愛する。
図4に戻って、「指標の新規作成」メニュー224は、マウス190でもって指示することで、ツリービュー280でマウスクリックにより選択され反転色となっている座標系に所属する指標を新規作成する処理を、CPU110に指示するための項目である。ツリービュー280には指標を示すノード(指標アイコンおよび指標の名前)が追加される。指標の名前、位置、認識色領域の設定方法は後述する説明から理解可能と考える。
「指標シートのインポート」メニュー225は、マウス190でもって指示することで、ツリービュー280でマウスクリックにより選択され反転色となっている座標系に所属させる指標シートのノードを取り込む処理をCPU110に指示するための項目である。
ここで、指標シートとは、指標が印刷された紙もしくはプラスチックといった現実空間に存在する2次元平面の記録媒体である。もちろん、指標シートは指標が印刷されていなくても、各指標の互いの位置関係が固定であれば、シール状の指標を紙に貼り付けたものであってもよいし、素材が紙もしくはプラスチックに限らないことは言うまでもない。また、指標シートのノードは座標系の一種とも言える。
指標シートのノードを取り込むとは、あらかじめHDD130に保存された複数の指標シートに関する情報のうち、ユーザによって選択された指標シート情報を読み出し、指標定義情報ファイルに取り込むことである。ツリービュー280では、指標シートを示すノード(指標シートアイコンおよび指標シートの名前)、および指標シートに所属する指標のノードが追加される。例えばツリービュー280が図20に示す如く、座標系worldが選択されている状態であった場合に、このメニューによって指標シートSHEETを取り込むよう選択すると、図21に示す如く、座標系worldの下に新しく指標シートSHEETおよび指標シートに所属する指標YELLOW、ORANGE、GREEN、BLUE、MAGENTAが追加され、ツリービュー280に表示される。図20,21は、指標シートを示すノードの追加を説明する図である。
この指標シートをツリービュー280で選択して親座標系から見た位置姿勢を入力する必要があるが、それについては以下の説明の趣旨ではないので、説明は割愛する。
このように指標シートをノードとしてインポート可能にすることで、例えばベンダメーカが、カメラ校正ツール内に取り込むべき指標シート情報をあらかじめ組み込んでおけば、ユーザはベンダメーカから配布された指標シートを容易に利用することが可能となる。すなわち、ユーザは指標シートに印刷された指標の名前や位置をGUI上でいちいち入力することなく指標シートを利用可能になるため、その手間を大幅に省くことが可能となる。
図14は、ベンダメーカが用意する指標シートの例と、その指標シートに対応してインポートすべき指標シートノード(+指標シートに所属する指標のノード)の例を示す図である。
図14(a)には、指標YELLOW、ORANGE、GREEN、BLUE、MAGENTAが印刷されている現実の指標シートSHEET(同図左側)と、対応する指標シートノードSHEET(+指標YELLOW、ORANGE、GREEN、BLUE、MAGENTAのノード)(同図右側)が示されている。
図14(b)には、指標YELLOW、ORANGE、MAGENTAが印刷されている現実の指標シートSHEET_2(同図左側)と、対応する指標シートノードSHEET_2(+指標YELLOW、ORANGE、MAGENTAのノード)(同図右側)が示されている。
図14(c)には、指標ORANGEが印刷されている現実の指標シートSHEET_3(同図左側)と、対応する指標シートノードSHEET_3(+指標ORANGEのノード)(同図右側)が示されている。
図4に戻って、「削除」メニュー228は、マウス190でもって指示することで、マウスクリックにより選択され反転色となっている座標系や指標や指標シートのノードを削除する処理をCPU110に指示するための項目である。削除指示されたノードはツリービュー280から削除され、座標系もしくは指標シートが削除された場合は、その座標系、指標シートに所属するすべての座標系、指標も同時に削除される。但し、指標シートそのものを削除したり、指標シートに所属する指標のみを削除したりすることはできない。これについて詳しくは後述する。
図12に戻って、280は、図13に例示した指標定義情報ファイルで管理されている座標系、指標、指標シートのツリー構造をグラフィカルに表示するツリービューである。同図では、定義されている座標系と指標と指標シートが、ツリー構造により階層的に表示されている。より詳しくは、worldという名前の座標系(=世界座標系)と、SHEETという名前の指標シートと、YELLOW、ORANGE、GREEN、BLUE、MAGENTA、REDという名前の指標が定義されている。
座標系worldの下には、指標シートSHEETおよび指標REDが所属しており、指標シートSHEETの下には指標YELLOW、ORANGE、GREEN、BLUE、MAGENTAが所属している。
230〜238はツリービュー280で選択されている指標の定義情報を入出力するテキストボックスである。ツリービュー280中の各座標系、各指標シート、各指標には、それぞれ座標系アイコン、指標シートアイコン、指標アイコンが関連付けられている。例えば指標シートSHEETには指標シートであることを示すような指標シートアイコン282が、ツリービュー280中の指標シートの名前に対して横並びに関連付けられている。また、指標ORANGEには指標であることを示すような指標アイコン281が、ツリービュー280中の指標の名前に対して横並びに関連付けられて表示されている。また、他の指標YELLOW、GREEN、BLUE、MAGENTA、REDについても同様の指標アイコンが、ツリービュー280中の各指標の名前に対して横並びに関連付けられて表示されている。
指標名230は指標の名前であり、指標を識別するために使用される識別情報である。同図では、色の種類を識別情報としているが、MARKER01、MARKER02など、任意の名前を用いてよいことは言うまでもない。
指標位置232は指標の所属する座標系における三次元位置である。
ここで、同図では、指標名230と位置232の欄がグレーアウトしている(=灰色になっている)。これは、指標ORANGEが指標シートSHEETに所属しているため、指標ORANGEを削除することが不可能な状態にしていることを示していると共に、指標ORANGEの指標名と位置に関する定義情報をユーザが変更不可能な状態にしていることを示している。もちろんツリービュー280で指標シートに所属していない指標REDが選択された場合は、指標名230と位置232の欄はグレーアウトせず、ユーザが指標の削除や、指標名と位置に関する定義情報を変更することが可能な状態となる。
ここで、指標が指標シートSHEETに属しているか否かを、ツリービュー280上でユーザが瞬時に区別可能にするために、例えば指標シートSHEETに属している指標(YELLOW、ORANGE、GREEN、BLUE、MAGENTA)の指標アイコンと、属していない指標(RED)の指標アイコンとを別にしてもよい(例えば、指標シートSHEETに属している指標は、指標アイコンを枠で囲む)。
輝度234、中心236、直径238は指標の認識色領域を定義するパラメータである。なお、本実施形態では、指標の認識色領域はYUV444色空間(輝度Yが8ビット、色差Cbが8ビット、色差Crが8ビット)におけるY軸方向を高さ、CbCr平面上の楕円を底面とする楕円柱で決定される。この楕円の長径は、その延長線が必ずCbCr平面中心(Cb=127,Cr=127)を通るように拘束される。
輝度234はYの最小値、最大値、中心236は楕円中心位置、直径238は楕円の長径と短径を示している。指標シートSHEETに所属している各指標の輝度234、中心236、直径238は、撮影時の光源環境によっては調整する必要があるため、指標名230、位置232とは異なり、変更可能な状態であるが、初期値としてメーカベンダがあらかじめ定めた値が入力されている。
ユーザがマウス190を用いてこれらの指標定義情報を編集し、「保存」メニュー214を指示すると、CPU110はこれを検知して、編集された指標定義情報を図13に示す指標定義情報ファイルに反映する。
250は色空間画像表示領域であり、実写画像もしくは実写画像の選択領域の色領域をYUV444色空間で表現し、輝度Y=128のCbCr平面への射影をとった色空間画像254が表示される。横軸が色差Cb、縦軸が色差Crである。色空間画像表示領域250はまた、認識色領域の設定用の領域でもある。認識色領域の一部の指定(Cb値とCr値の範囲)を楕円カーソル252で囲まれた領域で行うことができる。楕円カーソル252の中心と円周上の制御点をマウス190でドラッグすることで、位置、形状、寸法を変更することが可能である。また中心236、直径238と同期しており、楕円カーソル252を操作すると、中心236、直径238の値が変化し、中心236、直径238の値を変更すると楕円カーソル252の位置、形状、寸法が変化する。
260は実写画像表示領域であり、撮像装置160が撮影した各フレームの画像が順次表示される領域である。実写画像表示領域260はまた、実写画像選択領域を設定する領域でもある。実写画像表示領域260内に表示されている画像上の選択したい領域をマウス190でドラッグすることで領域が選択される。選択された領域の枠線は図5に示す如く、実写画像表示領域上に重畳表示される。同図では、501が枠線を示す。図5は、実写画像表示領域260内の所望の領域を選択した場合の表示例を示す図である。
270は抽出画像表示領域であり、実写画像表示領域260内に表示されている実写画像における色が認識色領域に含まれる場合、その色の画素のみが認識色領域の代表色で表示される。なお認識色領域における輝度の範囲は、輝度234によって設定されているものとする。また認識色領域の代表色は、輝度(Y)が128の時の、認識色領域を示す楕円カーソル252の中心の色(色差Cb、色差Cr)である。
図6〜8にその様子を示す。図6は実写画像表示領域260、図7は図6の実写画像表示領域260内の実写画像に対する色空間画像表示領域250を示す図で、図7に示す如く、図6の実写画像に対する色空間画像254と認識色領域設定用の楕円カーソル252とが重畳表示されている。図8は、図7に示す設定内容に基づいて図6に示した実写画像から抽出した抽出画像を示す図で、より詳しくは、図6の実写画像から、図7の色空間画像254と楕円カーソル252が交わっている色領域が抽出画像として抽出され、抽出画像表示領域270内に表示されている。
抽出画像表示領域270はまた、実写画像表示領域260と同様に、実写画像選択領域を設定する領域でもあり、図9に示したように、実写画像表示領域260、抽出画像表示領域270夫々で選択された領域の枠が、領域の選択に同期してもう一方に重畳表示される。図9は、一方の領域の選択に同期して、他方の領域に選択枠が表示される場合の表示例を示す図である。
また、領域が選択されると、色空間画像254が選択された領域を入力として計算される。図10は、図9に示したように領域選択した場合の色空間画像254の様子を示す図である。なお、領域が選択されて無い場合は実写画像全体が入力として計算される。図11は、図9で示される実写画像の撮影時において領域を選択して無い場合の色空間画像254の様子を示す図である。
次に、CPU110が指標定義情報管理プログラム200を実行することで行われる処理、即ち、指標定義情報の管理、及び指標の認識色領域を設定する処理について、同処理のフローチャートを示す図15を用いて以下説明する。
なお、同図のフローチャートに従った処理をCPU110に実行させるためのプログラムやデータはHDD130に保存されており、これは適宜CPU110による制御に従ってメモリ120にロードされ、CPU110がこれを用いて処理を実行することで、情報処理装置100は以下説明する各処理を実行することになる。
なお、以下説明する処理の前段では、メモリ120には指標定義情報管理プログラム200がロードされていると共に、表示装置170の表示画面上には、図12に例示するようなGUIが表示されているものとする。
そして、ユーザがキーボード180やマウス190を用いてツリービュー280内に表示されている所望の指標を選択すると、CPU110はその旨を検知し、メモリ120に記憶されていたその指標の名前、位置、輝度、色領域を示す楕円の中心座標位置、楕円の長径および短径の情報(即ち、図13に示す指標定義情報ファイルの一部)を読み出し、それぞれテキストボックス230〜238に出力する。また楕円カーソル252の表示が中心236、直径238に従って更新される。
このような場合に、ステップS1501では、ユーザがキーボード180やマウス190を用いて選択した指標に対して削除の指示を入力したか、若しくは選択した指標の指標名230、位置232を新たに入力する旨の指示を入力したかをチェックする。そしてチェックの結果、削除もしくは入力の指示があった場合、処理をステップS1501−2に進める。削除もしくは入力の指示がない場合は、処理をステップS1502に進める。
ステップS1501−2では、選択された指標が所定のグループに属しているものであるのか、即ち指標シートに所属しているものであるのかをチェックする。指標シートに所属していない場合には処理をステップS1501−3に進め、ステップS1501で指示があったとおり、指標の削除、もしくは指標名および位置の更新を行う。更新された結果は即座にGUIに反映される。
一方、選択された指標が指標シートに所属している場合は処理をステップS1501−4に進め、指標の削除や、指標名230および位置232に関する指標定義情報を変更不可能な状態にして、指標定義情報の変更を禁止する。またその際に、指標の指標名230および位置232の欄はグレーアウト状態に表示する。これにより、ステップS1501で指示があった指標の削除、入力された指標名、位置は無視される。
カメラ校正アルゴリズムに基づいてカメラ内部・外部パラメータを推定するなど、紙などの記録媒体に印刷された指標を利用する場合を想定すると、上記のように、ユーザが指標シート上に存在する指標の削除や、指標の名前や位置に関する定義情報の変更を操作不可能な状態にすることで、各指標の相対的な互いの位置関係を保ったまま管理することができるため、カメラ校正アルゴリズムが常に正確に機能することが可能になる。
ステップS1501−3、S1501−4の処理が終わったら処理をステップS1502に進める。
次に、ステップS1502では、ユーザがキーボード180やマウス190を用いて、楕円の中心位置236、直径238に対する入力を行ったか否かをチェックする。チェックの結果、入力が成されている場合には処理をステップS1504に進め、中心位置236、直径238を入力された値に更新する。そして処理をステップS1508に進め、認識色領域の表示を更新する。
一方、楕円の中心位置236、直径238に対する入力を行っていない場合には処理をステップS1506に進め、ユーザがキーボード180やマウス190を用いて、認識色領域の輝度234に対する入力を行ったか否かをチェックする。チェックの結果、入力が成されている場合には処理をステップS1508に進め、輝度234を入力された値に更新すると共に、認識色領域の表示を更新する。
そしてステップS1508における処理が終了すると、若しくはユーザがキーボード180やマウス190を用いて、認識色領域の輝度234に対する入力を行っていない場合には処理をステップS1510に進める。
ステップS1510では、色空間表示領域250上の楕円カーソル252の中心や円周上の制御点が、マウス190によってドラッグされたかをチェックし、ドラッグされていない場合には処理をステップS1514に進めるのであるが、ドラッグされた場合は処理をステップS1512に進め、それに応じて中心236、直径238を更新する。
ステップS1514では、実写画像表示領域260、抽出画像表示領域270がマウス190でクリックされたか否かをチェックし、クリックされていない場合には処理をステップS1518に進めるのであるが、クリックされている場合には処理をステップS1516に進め、画像選択領域を解除する。そして処理をステップS1522に進める。
ステップS1518では、実写画像表示領域260、抽出画像表示領域270がマウス190でドラッグされたか否かをチェックし、ドラッグされていない場合には処理をステップS1522に進めるのであるが、ドラッグされている場合には処理をステップS1520に進め、ドラッグ開始点と終了点位置とを結ぶ線分を対角線とする四角形を図9,10に例示する如く、選択領域として設定する。
ステップS1522では、画像取得部140が撮像装置160から取得した現実空間の画像を、指標定義情報管理プログラム200の管理するメモリ120上に取り込み、続いてステップS1524で、メモリ120上に取り込んだ画像を実写画像表示領域260に表示する。
次に、ステップS1526では、ステップS1520で選択領域が設定されているか否かをチェックし、設定されていない場合には、処理をステップS1530に進めるのであるが、設定されている場合には、処理をステップS1528に進め、実写画像表示領域260と抽出画像表示領域270とで、それぞれ選択領域に対応する部分に選択領域枠を重畳表示する。そして処理をステップS1532に進め、選択領域枠内に相当する実写画像の部分についてYUV444の色空間画像254を計算し、更に処理をステップS1534に進め、色空間画像表示領域250を更新する。
ステップS1530では、選択領域が設定されていないので、選択表示枠は重畳表示せず、実写画像全体についてYUV444の色空間画像254を計算し、ステップS1534で、色空間画像表示領域250を更新する。
そして、ステップS1536では、色空間画像表示領域250上に更に、上記ステップS1502〜S1512で入力された認識色領域を示す楕円カーソル252を重畳表示する。
次に、ステップS1538では先ず、選択領域枠内に相当する実写画像の部分、若しくは実写画像全体について、認識色領域の色を持つ画素が存在するかをチェックし、存在する場合は認識色領域の代表色を求める。認識色領域の代表色は、輝度(Y)が128の時の、認識色領域を示す楕円カーソル252の中心の色(色差Cb、色差Cr)である。そして、求めた認識色領域の代表色を用いて抽出画像を作成する。そしてステップS1540では、ステップS1538で作成した抽出画像を抽出画像表示領域270に表示することで、抽出画像表示領域270を更新する。
次に、ステップS1541では、ステップS1501−4で指標の削除や、指標の指標名、位置の変更を不可能な状態にしたので、それらを解除し、変更可能な状態に戻す。
そしてユーザがキーボード180やマウス190を用いて指標定義情報管理プログラム200の動作終了指示を入力しない限りは(「終了」メニュー216がマウス190で選択されない限りは)、ステップS1542を介してステップS1501に戻り、以降の処理を繰り返す。
なお、ツリービュー280で別の指標アイコンをマウスクリックすると、選択された指標アイコンに対応する指標定義情報230〜238、250〜254、270が更新され、以後その指標アイコンに対して上記ステップS1501〜ステップS1541の一連の処理が実施される。
<認識色領域の設定について>
次に、上記指標定義情報管理プログラム200を実行することにより成される、認識色領域を設定する処理について、図22〜図24、図25〜図28、図29〜図33を用いて説明する。なお各々の図は同じ時間での色空間画像表示領域250、実写画像表示領域260、抽出画像表示領域270の状態の組合せを有している。
図22〜図24は、実写画像表示領域260での指標色領域選択を行って、問題なく認識色領域が設定できた場合の例を示す図である。
図22は、認識色領域を設定したい指標を撮影した場合の色空間画像表示領域250、実写画像表示領域260、抽出画像表示領域270の表示例を示す図である。実写画像表示領域260内には5つの指標が存在するが、ここでは、実写画像中の左上の指標の認識色領域を設定する。
まず、図23に示す如く、実写画像表示領域260から対象となる指標を領域選択する。すると実写画像表示領域260内には選択した領域を示す選択枠2300が重畳表示されると共に、色空間画像表示領域250には、領域選択された実写部分のみの色空間画像2301が表示される。また抽出画像表示領域270には、実写画像表示領域の選択領域に同期して対応部分に選択枠2302が表示される。
続いて、図24に示す如く、色空間画像表示領域250内に表示されている楕円カーソル2304をマウス190でもってドラッグすることより位置、長径、短径を変更し、色空間画像2301を包含するようにする。ここで色空間画像表示領域250の中心に近いほど無彩色になるため、中心付近は楕円に含まれないようにしている。すると、抽出画像表示領域270には、実写画像に存在する楕円カーソル2304で設定される認識色領域が抽出される。結果として領域選択された実写部分の色が抽出画像として抽出画像表示領域270内に表示される。
ここで、抽出画像の有色な画素が、実写画像の選択部分内(選択枠2300内)にのみ存在し、かつ実写画像の対象とする指標部分と一致しているため、対象となる指標の指標色領域(実写画像選択部分)と認識色領域(楕円カーソル)とは一致したと判断し、作業を完了することができる。
図25〜図28は、実写画像表示領域260での指標色領域選択を行って、認識色領域の設定に試行錯誤をした場合の例を示す図である。
図25は、認識色領域を設定したい指標を撮影した場合の色空間画像表示領域250、実写画像表示領域260、抽出画像表示領域270の表示例を示す図である。ここでは3つの指標が実写画像中に存在するが、実写画像中の下の指標の認識色領域を設定する。
先ず、図26に示す如く、実写画像表示領域260から対象となる指標を領域選択すると、選択した領域には選択枠2600が表示されると共に、抽出画像表示領域270内の対応する領域には選択枠2601が表示され、更に、領域選択された実写部分のみが色空間画像2602に反映される。
続いて図27に示す如く、色空間画像表示領域250内に表示されている楕円カーソル2605をマウス190を用いてドラッグすることより、位置、長径、短径を変更し、色空間画像2602を包含するようにする。しかし同図に示す如く、色空間画像2602のうち、楕円カーソル2605が包含する部分が小さいため、対象となる指標の指標色領域(実写画像選択部分)と認識色領域(楕円カーソル)が完全に一致せず、抽出画像が若干欠けてしまっている。
このような場合、図28に示す如く、対象となる指標の指標色領域と抽出画像領域が一致するように見えるまで楕円カーソル2605を試行錯誤的に操作することを繰り返し行う。
図29〜図33は、実写画像表示領域260での指標色領域選択を行って、認識色領域の設定に試行錯誤をした場合のもうひとつの例を示す図である。
図29は、認識色領域を設定したい指標を撮影した場合の色空間画像表示領域250、実写画像表示領域260、抽出画像表示領域270の表示例を示す図である。ここでは3つの指標が実写画像中に存在するが、実写画像中の左の指標の認識色領域を設定する。また、実写画像中には指標以外の物体も含まれており、画像的に外乱の多い環境と言える。
先ず、図30に示す如く、実写画像表示領域260から対象となる指標を領域選択すると、選択した領域には選択枠3000が表示されると共に、抽出画像表示領域270内の対応する領域には選択枠2701が表示され、更に、領域選択された実写部分のみが色空間画像3002に反映される。
続いて図31に示す如く、色空間画像表示領域250内に表示されている楕円カーソル3005をマウス190を用いてドラッグすることより、位置、長径、短径を変更し、色空間画像3002を包含するようにする。しかし同図に示す如く、実写画像中にYUV444色空間における指標色領域付近の色が存在するため、抽出画像の有色な画素が、実写画像の選択部分外にも多数存在している。
このような状態で認識色領域を確定すると、抽出画像の有色な画素を指標として誤認識してしまうため、楕円カーソル3005を操作して認識色領域を設定しなくてはならない。
図32は、楕円カーソル3005を操作して、抽出画像において選択部分外に存在する有色な画素を少なくした状態である。楕円カーソル3005を試行錯誤的に操作して、最終的には図24、図28に示すように選択部分内にのみ存在しかつ実写画像の対象とする指標部分と一致するようにしなくてはならないが、楕円カーソル3005の操作のみでは難しい場合もある。
このような場合には、現実空間に存在する物体を除去して、外乱を実写画像に含まれないようにすることも有効な手段である。しかし人間にとっては実写画像中の何が認識色領域設定のための外乱になるのか、判断することは難しい。それを特定するためには、図33に示す如く、抽出画像において選択部分外に存在する有色な画素群3011を、抽出画像上で領域選択すればよい。実写画像上の選択領域枠と、抽出画像上の選択領域枠は同期しているため、抽出画像上の有色な画素を選択枠3010でもって領域選択すれば、抽出元の実写画像部分が領域枠3015で囲われる。この実写画像の領域枠3015を補助的な情報として、外乱となる現実物体を特定することが容易になる。
以上の作業を繰り返し行うことで外乱のない認識色領域の設定を行うことができる。
以上述べたように、本実施形態では、現実空間中に配される1つ以上の指標に関し、指標の定義情報の一部を変更不可能な状態として管理することで、ユーザの誤った操作を防ぐことが可能となる。
特に、カメラ校正アルゴリズムに基づきカメラ内部・外部パラメータを推定するなど、紙などの媒体に印刷された指標を利用する場合を想定すると、ユーザが指標シート上に存在する指標の削除や、指標の名前や位置に関する定義情報の変更を操作不可能な状態にすることで、各指標の相対的な互いの位置関係を保ったまま管理することができるため、カメラ校正アルゴリズムが常に正確に機能することが可能になる。
[第2の実施形態]
第1の実施形態では、指標が印刷された紙もしくはプラスチックといった、現実空間に存在する2次元平面の記録媒体を利用していたのに対して、本実施形態では、現実空間に存在する立体的な物体(例えば紙、プラスチックなどを利用)に指標が印刷されている場合について述べる。
本実施形態では、指標が印刷された立体的な物体(指標オブジェクト)を利用するために、図4に示すメニューの代わりに図18に示すメニューを用いる。図18は、「編集」メニュー220をクリックすることで、表示装置170の表示画面上に表示される本実施形態に係るメニューの表示例を示す図である。
図18に示すメニューでは、図4のメニューに設けられている項目に加え、「指標オブジェクトのインポート」メニュー226が設けられている。ユーザがキーボード180やマウス190を用いて、この「指標オブジェクトのインポート」メニュー226を選択することにより、指標情報定義ファイルおよびツリービュー280に、指標が印刷された立体的な指標オブジェクトのノード(+指標オブジェクトに所属する指標のノード)が追加される。
図19は、ベンダメーカが用意する立体的な指標オブジェクトと、その指標オブジェクトに対応してインポートすべきノードの例を示す図である。
図19(a)には、指標YELLOW、ORANGE、GREEN、BLUE、MAGENTAが印刷されている現実の指標オブジェクトOBJECT(同図左側)と、対応する指標オブジェクトOBJECTのノード(+指標YELLOW、ORANGE、GREEN、BLUE、MAGENTAのノード)(同図右側)が示されている。
図19(b)には、指標YELLOW、ORANGE、MAGENTAが印刷されている現実の指標オブジェクトOBJECT_2(同図左側)と、対応する指標オブジェクトOBJECT_2のノード(+指標YELLOW、ORANGE、MAGENTAのノード)(同図右側)が示されている。
図19(c)には、指標ORANGEが印刷されている現実の指標オブジェクトOBJECT_3(同図左側)と、対応する指標オブジェクトOBJECT_3のノード(+指標ORANGEのノード)(同図右側)が示されている。
その他の構成については、第1の実施形態と同じ構成であるものとする。
なお、指標オブジェクトは指標が印刷されていなくても、各指標の互いの位置関係が固定であれば、シール状の指標を物体に貼り付けられたようなものであっても、また、物体を構成する一部のパーツ自体が指標になっていてもよいことは言うまでもない。さらに、素材が紙もしくはプラスチックに限らないことは言うまでもない。
以上述べたように、本実施形態によって、現実空間中に配された1つ以上の指標に関し、指標の定義情報の一部を変更不可能な状態として管理することで、ユーザの誤った操作を防ぐことが可能となる。
特に、指標が印刷される対象として、紙もしくはプラスチックといった現実空間に存在する2次元平面の記録媒体だけでなく、立体的な物体を利用することが可能となる。
[第3の実施形態]
本実施形態では、上記第1,2の実施形態で説明した現実物体(指標シート、指標オブジェクト)上に配された指標を用いたアプリケーションとして、複合現実感(MR:Mixed Reality)の技術を応用したシステムについて説明を行う。
複合現実感とは、現実空間と仮想空間とを違和感なく自然に合成する技術である。複合現実感技術を応用したシステムでは、カメラなどの撮像装置によって撮影した現実空間の映像に対し、ユーザの頭部の動きに合わせてコンピュータグラフィックス(CG:Computer Graphics)で描画した仮想空間の映像を合成し、ヘッドマウントディスプレイ(HMD:Head−Mounted Display)などの表示装置に表示することで、複合現実感映像をシステムのユーザに提示するものである。複合現実感技術、およびヘッドマウントディスプレイに関する詳細説明については、例えば、大島登志一,佐藤清秀,山本裕之,田村秀行:“AR2ホッケー:協調型複合現実感システムの実現”,日本バーチャルリアリティ学会論文誌,Vol.3,No.2,pp.55−60(1998.8)に開示されている。
図34は、本実施形態に係る複合現実感システムのハードウェア構成を示すブロック図である。
同図に示す如く、本実施形態に係る複合現実感システムは、演算処理部1100、頭部装着部1200、センサ制御装置1303により構成されており、更に、本実施形態に係るシステムは、指標シート1400を用いる。
先ず、演算処理部1100について説明する。演算処理部1100は、例えば一般のPC(パーソナルコンピュータ)やWS(ワークステーション)等により構成されており、CPU1101、RAM1102、画像出力装置1103、システムバス1104、ディスク装置1105、入力装置1106、画像入力装置1107を備える。
CPU1101は、RAM1102に格納されているプログラムやデータを用いて演算処理部1100全体の制御を行うと共に、演算処理部1100が行う後述の各処理を実行する。
RAM1102は、ディスク装置1105からロードされたプログラムやデータを一時的に記憶するためのエリア、画像入力装置1107が撮像装置1202から取得した画像データを一時的に記憶するためのエリア、入力装置1106がセンサ制御装置1303から取得した位置姿勢データを一時的に記憶するためのエリア、CPU1101が各処理を実行する際に用いるワークエリアなど、各種のエリアを適宜提供することができる。
画像出力装置1103は、後述する各処理によって生成した複合現実空間の画像を表示装置1201に出力する。画像出力装置1103は、グラフィックスカードなどの機器によって実現されており、一般的には、グラフィックスメモリを保持している。
よって、CPU1101上で実行されるプログラムによって生成された画像情報は、システムバス1104を介して、画像出力装置1103が保持するグラフィックスメモリに書き込まれる。画像出力装置1103は、グラフィックスメモリに書き込まれた画像情報を適切な画像信号に変換して表示装置1201に送出する。グラフィックスメモリは必ずしも画像出力装置1103が保持する必要はなく、RAM1102がグラフィックスメモリの機能を実現してもよい。
ディスク装置1105には、OS(オペレーティングシステム)や、上記指標定義情報管理プログラム200、及びこれを実行させるために必要なデータ、さらには、仮想空間を構成する各仮想物体を描画するために用いるデータ(仮想空間データ)、センサ較正データ、指標シート1400上に配置されているそれぞれの指標の定義情報、指標シート1400と仮想物体との対応テーブル等の各種データ等が保存されており、これらはCPU1101による制御に従って適宜RAM1102にロードされる。
ここで、仮想物体を描画するために必要なデータには、仮想物体の配置位置姿勢を示すデータ、仮想物体がポリゴンで構成されている場合には、各ポリゴンの法線データ、ポリゴンを構成する各頂点の位置データ、テクスチャマッピングを施す場合にはテクスチャデータが含まれている。
入力装置1106は、センサ制御装置1303から送出される位置姿勢データを受け、これをRAM1102に出力する。
画像入力装置1107は、撮像装置1202が撮像した現実空間の画像を信号として受け、これをデータとしてRAM1102若しくはディスク装置1105に送出する。画像入力装置1107は、キャプチャカードなどの機器によって実現される。なお、表示装置1201に光学シースルー型の表示装置を用いる場合や、頭部装着部1200に現実映像を必要としない没入型の装置を用いる場合には、画像入力装置1107は具備しなくてもよい。
システムバス1104は上述の各部を繋ぐものであり、上記各部はこのシステムバス1104を介して互いにデータ通信を行うことができる。
次に、頭部装着部1200について説明する。頭部装着部1200は、本実施形態では、ビデオシースルー型HMDなどによって実現される。頭部装着部1200は表示装置1201、撮像装置1202、センサ1301から構成される。本実施形態では、頭部装着部1200を構成する装置をユーザが頭部に装着しているが、ユーザが複合現実感を体験できる形態であれば、頭部装着部1200は必ずしもユーザが装着する必要はない。
表示装置1201は、ビデオシースルー型HMDに備えられるディスプレイによって実現される。表示装置1201は画像出力装置1103から送出される画像信号を表示するものであり、頭部装着部1200を頭部に装着したユーザに対して複合現実感映像を提示するために用いられる。表示装置1201は頭部装着部1200を構成する装置であるが、必ずしもユーザが装着する必要はない。即ち、ユーザが映像を確認することができる手段であれば、例えば表示装置1201として据え置き型のディスプレイ装置を用いてもよいし、手持ち型のディスプレイを用いてもよい。
撮像装置1202は、CCDカメラなどの1つ以上の撮像装置によって実現される。撮像装置1202は、頭部装着部1200を頭部に装着したユーザの視点から見た現実空間の実写画像を撮像するために用いられる。そのため、撮像装置1202は頭部装着部1200の中でも視点位置に近い場所に装着することが望ましいが、ユーザの視点から見た画像が取得できる手段であれば、これに限定されない。また、ハーフミラーやプリズムなどを用いて撮像装置1202の光軸と、表示装置1201の中心軸とを一致させてもよい。撮像装置1202が撮像した実写画像は、アナログ信号もしくはIEEE1394規格のデジタル信号などからなる画像信号として画像入力装置1107に送出される。
なお、表示装置1201に光学シースルー型の表示装置を用いる場合には、ユーザは表示装置1201を通して現実世界を直接観察することになるため、撮像装置1202を具備しなくてよい。また、頭部装着部1200に現実映像を表示しない没入型の装置を用いる場合にも、撮像装置1202を具備しなくてよい。
センサ部1300は、例えば磁気センサなどの6自由度の位置姿勢計測装置によって実現され、ユーザの視点(センサ1301)の現実空間中における位置・姿勢を計測し、演算処理部1100の入力装置1106に送出する。
センサ1301は、センサ制御装置1303の制御により、ユーザの現実空間中における視点位置・姿勢を計測し、センサ制御装置1303に送出する。ここで、センサ1301が存在する位置と、ユーザの視点位置とでは位置がずれている。しかし、ユーザは頭部装着部1200を頭部に装着しているため、センサ1301の位置とユーザの視点位置との位置ずれ量(オフセット量)は一定である。よって、あらかじめその位置ずれ量(オフセット量)を求めておけば、センサ1301により計測した位置姿勢に、このオフセットを加算すれば、視点の位置姿勢を求めることができる。
次に、センサ制御装置1303について説明する。センサ制御装置1303は、センサ1301に制御命令を送出し、また、センサ1301から位置・姿勢計測値を取得する。センサ制御装置1303は、取得したセンサ1301の現実空間中における位置・姿勢計測値を、センサ1301の位置姿勢情報として入力装置1106に送出する。
なお、センサ1301の位置姿勢を計測する際は、あらかじめ仮想空間の座標系と現実空間の座標系とを合わせておくことが望ましい。こうすることで、ある現実物体の位置姿勢が分かった場合、その位置姿勢の値と同じ仮想空間中の位置姿勢の値を持つ仮想物体は、現実物体と重なることになる。また、現実物体と仮想物体との関係が逆の場合でも同じことである。
仮想空間の座標系と現実空間の座標系とを合わせる技術については、従来から多くの取り組みが行われており、例えば、特開2002−229730号公報、特開2003−269913号公報等が示している方法で、現実空間と仮想空間とを正確に整合させるための位置合わせを実現することができる。
次に、指標シート1400について説明する。指標シート1400は上述の第1,2の実施形態でも説明したように、例えば現実空間に存在する紙、シール、プラスチックなどの平面素材に、指標を印刷したものである。
次に、以上の構成を有するシステムが行う処理について、説明する。図35は、演算処理部1100が行う処理のフローチャートである。なお、同図のフローチャートに従った処理をCPU1101に実行させるためのプログラムやデータはディスク装置1105に保存されており、これをCPU1101による制御に従ってRAM1102にロードし、CPU1101がこれを用いて処理を実行することで、演算処理部1100は以下説明する各処理を実行することになる。
先ず、本フローチャートに従った処理を開始する前段で、システムを初期化する処理を行う。初期化とは、システムを構成する各機器の電源を入れたり、プログラムを起動したりといった、以下説明する処理手順を進めるにあたり最初に行なう処理である。さらに、センサ装置の説明で述べた仮想空間の座標系と現実空間の座標系との位置合わせを実行する。また、予め図15に示すフローチャートに従った処理を実行することで、指標シート1400上に配置された指標に係る情報(指標定義情報)を設定しておく。ここで設定した指標定義情報(指標の認識色、指標の位置など)は、ディスク装置1105に保存しておき、後の指標シート検出処理(ステップS2020)などにおいて利用される。
以上の処理、及び作業の後、本フローチャートに従った処理を開始する。先ず、頭部装着部1200に備わっている撮像装置1202は現実空間の動画像を撮像し、各フレームの画像は信号として画像入力装置1107に入力されるので、CPU1101は画像入力装置1107を制御し、画像入力装置1107はこれをデータとして順次RAM1102に出力する。
ステップS2020では、ステップS2010で取り込んだ現実空間の画像中に、指標シート1400が含まれていれば、これを検出する処理を行う。詳しくは、先ず、画像中に指標が存在するか否かを判定する。例えば、ステップS2010で取り込んだ現実空間の画像に対して、色検出処理、画像2値化処理、ラベリング処理といった画像処理方法を施すことで、画像中に指標が含まれていれば、それを検出することができる。なお、色検出処理には、上記指標定義情報を利用する。
次に、検出した指標の配置関係を元に、これら指標が指標シート1400上のものであるかどうか判定を行う。もし、指標シート1400上に配置された指標であれば、ステップS2020で検出したそれぞれの指標の配置関係は、指標定義情報に従っている。すなわち、指標定義情報を利用することで、指標シート1400が現実空間の画像中に存在するか否かを判定することができる。
次に、ステップS2100では、ステップS2010でRAM1102に取得した現実空間の画像を、同じRAM1102内に設けられているビデオバッファなどのメモリ上に描画する処理を行う。なお、表示装置1201に光学シースルー型の表示装置を用いる場合や、頭部装着部1200に現実映像を必要としない没入型の装置を用いる場合には、本ステップにおける処理は省略する。
次に、センサ制御装置1303により制御されたセンサ1301が自身の位置姿勢を計測するので、センサ制御装置1303はこの計測値を入力装置1106に対して出力する。入力装置1106は受けた計測値をRAM1102に出力する。
よって、ステップS2110では、CPU1101は、この計測値に上記オフセット量を加算することで、頭部装着部1200を頭部に装着したユーザの視点の位置姿勢(ビューイング変換行列)を求める。また、本ステップでは、ユーザの視点からみた指標シート1400の位置姿勢を計測する。一般的に、位置が既知の指標が同一平面上に4個以上配置されている場合、それらの指標をカメラで撮影することで、指標が配置された平面とカメラとの相対的な位置姿勢関係を求めることが可能なことが知られている。すなわち、視点座標系における指標シートの位置姿勢を求めることができる。なお、指標シートの位置姿勢を求めるためには、指標シート上に配置された各指標の位置が必要となるが、これは上記指標定義情報を利用すればよい。
次に、ステップS2120では、ステップS2110で計測した視点位置姿勢情報(ビューイング変換行列)と、ディスク装置1105からRAM1102にロードした仮想空間データと、現実空間における指標シート1400の位置姿勢情報と、を用いて、ステップS2100で利用したビデオバッファとは異なるビデオバッファに、ユーザの視点から見える仮想空間の画像を描画する。
仮想空間の画像を描画する際には、仮想物体を現実空間における指標シート1400と位置的に関連付けて配置するようにする。本実施形態では、仮想物体の位置姿勢の原点が、指標シート1400の座標系の原点と合うように仮想物体を配置する。ただし、指標シート1400の座標系は2次元座標系である。そこで、X、Y軸に直交し、指標が印刷された側をプラス方向とするZ軸を設定し、仮想物体が、Z軸のプラス方向、即ち指標シート1400の上に配置されるように描画するものとする。描画する仮想物体の種類は、指標シート1400の種類から、対応する仮想物体を読み取ることで決定する。例えば、指標シート1400には、仮想物体「ポット」が対応しているものとする。このような指標シートと仮想物体の対応情報は、予め対応テーブルとしてディスク装置1105に保存しておき、利用時にRAM1102に読み出せばよい。
仮想物体を描画する際には、背景画像となる現実画像が透過するように、仮想物体が存在しない画面領域を背景透過率100%で描画する。もしくは、同等の目的を達成するために、背景画像となる現実画像を透過させるようにあらかじめ定めたカラーバッファ値(例えば(R、G、B)=(0、0、0))を入力してもよい。なお、表示装置1201に光学シースルー型の表示装置を用いる場合には、仮想物体が存在しない画面領域を背景が透過する色で描画してもよい。また、頭部装着部1200に現実映像を必要としない没入型の装置を用いる場合には、仮想物体が存在しない画面領域に何を表示してもよい。
次に、ステップS2130では、ステップS2100で現実空間の画像を描画したバッファの上に、ステップS2120で描画した仮想空間の画像を重畳合成して、複合現実空間画像を生成し、画像出力装置1103により表示装置1201に出力する。これにより、表示装置1201の表示画面上には、ユーザの視点から見える複合現実空間の画像が表示されることになり、頭部装着部1200を頭部に装着したユーザに、この複合現実空間画像を提示することができる。
ここで、ステップS2120の説明で述べたように、仮想物体を描画する際に、仮想物体が存在しない画面領域を背景透過率100%で描画したり、背景画像となる現実画像を透過させるようにあらかじめ定めたカラーバッファ値(例えば(R、G、B)=(0、0、0))を入力しているため、現実空間と仮想空間とを合成した映像を表示することができる。なお、表示装置1201に光学シースルー型の表示装置を用いる場合や、頭部装着部1200に現実映像を必要としない没入型の装置を用いる場合には、単にステップS2120で描画した仮想空間画像を表示装置1201に表示すればよい。
図36は、ステップS2130で生成した複合現実空間の画像の一例を示す図である。指標シート1400の上に仮想物体のポットが合成されている様子が分かる。もちろん、指標シート1400が他の指標シートである場合は、他の仮想物体(例えば車や飛行機など)が指標シート上に合成描画されることは言うまでもない。
図35に戻り、ステップS2140では、ユーザがキーボード180やマウス190を用いて本フローチャートに従った処理の終了指示を入力しない限りは、ステップS2140を介してステップS2010に戻り、以降の処理を繰り返す。
なお、以上の説明において、対象物の位置姿勢を計測するために用いたセンサは特に限定しなかったが、センサとしては、磁気センサや光学式センサなど、各種のセンサを用いることができる。また、センサとしては、機械的な位置姿勢計測装置や、測量機など他の手段で実現できることはいうまでもない。
以上、指標シートや指標オブジェクト上に配置された指標を用いたアプリケーションとして、複合現実感(MR:Mixed Reality)の技術を応用したシステムについて述べた。
以上の説明により、本実施形態によれば、ユーザが、指標が配置された現実物体上に仮想物体を合成する複合現実感映像を体験することができる。
[その他の実施形態]
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。