以下、実施形態について、図面を用いて説明する。
図1は、画像処理方法および画像処理プログラムの一実施形態を示す。図1に示す画像処理システム10は、複数の撮像装置50(50a、50b、50c)と、画像処理装置20と、表示装置60とを有する。撮像装置50(50a、50b、50c)は、例えば、デジタルカメラであり、所定のフレームレートで撮影した撮影画像CIMG(CIMGa、CIMGb、CIMGc)を画像処理装置20に出力する。画像処理装置20は、例えば、CPU(Central Processing Unit)等のプロセッサである。
画像処理装置20は、記憶部30、描画処理部40、キャプチャ時刻記録部42、描画開始時刻記録部44、描画完了時刻記録部46および順序決定部48を有する。なお、画像処理装置20は、ハードウェアのみで実現されてもよく、画像処理プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。例えば、描画処理部40、キャプチャ時刻記録部42、描画開始時刻記録部44、描画完了時刻記録部46および順序決定部48は、プロセッサが画像処理プログラムを実行することにより実現されてもよい。
画像処理装置20は、複数の撮像装置50でそれぞれ撮影された複数の撮影画像CIMGを表示画像DIMGとして、表示装置60の1画面に所定の時間間隔で表示する。例えば、各撮影画像CIMGは、各撮像装置50の1フレーム分の画像であり、表示画像DIMGは、撮影画像CIMGa、CIMGb、CIMGcを表示装置60の画面内の所定の場所にそれぞれ配置した画像である。
記憶部30は、撮像装置50a、50b、50cから受けた撮影画像CIMGa、CIMGb、CIMGcを各撮像装置50のフレーム毎に記憶する。例えば、記憶部30には、3フレーム分の撮影画像CIMGを記憶可能な領域が撮影画像CIMGa、CIMGb、CIMGc用にそれぞれ割り当てられる。3フレーム分の撮影画像CIMGを保持することにより、撮影画像CIMGの参照要求に対して、待ち時間を少なくすることが可能となる。
なお、撮影画像CIMGa、CIMGb、CIMGc用にそれぞれ割り当てられる領域の大きさは、3フレーム分の撮影画像CIMGを記憶可能な大きさに限定されない。例えば、記憶部30には、2フレーム分の撮影画像CIMGを記憶可能な領域が撮影画像CIMGa、CIMGb、CIMGc用にそれぞれ割り当てられてもよい。
キャプチャ時刻記録部42は、複数の撮像装置50でそれぞれ撮影された複数の撮影画像CIMGが記憶部30に記憶された時刻を示すキャプチャ時刻を、複数の撮像装置50の各々に対応付けて記録する。例えば、画像処理装置20がプロセッサで実現される場合、キャプチャ時刻記録部42は、1フレーム分の撮影画像CIMGが記憶部30に記憶されたときに発生する割り込み等に基づいて、キャプチャ時刻をレジスタ等に記録する。これにより、キャプチャ時刻は、撮影画像CIMG毎(すなわち、撮像装置50毎)にレジスタ等に記録される。
描画処理部40は、記憶部30に記憶された複数の撮影画像CIMGの各々に対して、表示装置60に表示するための描画処理を順番に実行する。例えば、描画処理部40は、順序決定部48により決定された処理順序に従って、複数の撮影画像CIMGの各々に対する描画処理を実行する。なお、順序決定部48で処理順序(描画処理の実行順)が決定する前の期間では、描画処理部40は、予め決められたデフォルトの処理順序に従って、複数の撮影画像CIMGの各々に対する描画処理を実行する。
また、描画処理部40は、例えば、描画処理を開始した時刻を示す描画開始時刻を描画開始時刻記録部44に通知し、描画処理が完了した時刻を示す描画完了時刻を描画完了時刻記録部46に通知する。
表示装置60の1画面分の描画処理が完了した場合、描画処理部40は、描画処理が完了した複数の撮影画像CIMGa、CIMGb、CIMGcを1つの表示画像DIMGとして、垂直同期信号等の所定のタイミングに同期して表示装置60に出力する。
描画開始時刻記録部44は、描画開始時刻を複数の撮像装置50の各々に対応付けて記録する。例えば、描画開始時刻記録部44は、描画処理部40から通知された描画開始時刻を、撮影画像CIMG毎(すなわち、撮像装置50毎)にレジスタ等に記録する。
描画完了時刻記録部46は、描画完了時刻を複数の撮像装置50の各々に対応付けて記録する。例えば、描画完了時刻記録部46は、描画処理部40から通知された描画完了時刻を、撮影画像CIMG毎(すなわち、撮像装置50毎)にレジスタ等に記録する。
順序決定部48は、例えば、複数の撮影画像CIMGに対する描画処理の実行順を決定することにより、表示画像DIMGに使用する複数の撮影画像CIMGとして、各撮像装置50で撮影された各動画のどのフレームを選択するかを撮像装置50毎に決定する。例えば、順序決定部48は、次の表示画像DIMGを表示装置60に表示する際の複数の撮影画像CIMGの各々に対する描画処理の実行順を、所定の条件に適した処理順序になるように、キャプチャ時刻、描画開始時刻および描画完了時刻を用いて決定する。
所定の条件は、例えば、表示画像DIMGの質を向上させる条件である。例えば、被写体の像をリアルタイムに表示装置60に表示するシステムに画像処理装置20が搭載される場合、表示遅延時間をできるだけ小さくすることは、表示画像DIMGの質を向上させる条件の1つである。表示遅延時間は、例えば、各撮影画像CIMGが記憶部30に記憶されてから表示装置60に表示されるまでの時間である。
表示遅延時間が大きくなるほど、表示装置60に表示される表示画像DIMG内の被写体の状態と被写体の現在の状態との差は大きくなる。このため、例えば、自動車のバックモニタに画像処理装置20が搭載される場合、表示遅延時間が大きくなるほど、自動車の運転者への注意喚起の遅れにつながる。換言すれば、表示遅延時間をできるだけ小さくすることにより、自動車の運転者への注意喚起が遅れることを抑止することができる。
例えば、所定の条件が表示遅延時間をできるだけ小さくすることである場合、順序決定部48は、次の表示画像DIMG内の複数の撮影画像CIMGの表示遅延時間の平均(または、二乗平均)ができるだけ小さくなるように、描画処理の実行順を決定する。なお、次の表示画像DIMG内の複数の撮影画像CIMGの表示遅延時間は、既に記録されたキャプチャ時刻、描画開始時刻、描画完了時刻等を用いて予測される。
また、所定の条件(表示画像DIMGの質を向上させる条件)は、表示遅延時間をできるだけ小さくすることに限定されない。例えば、表示画像DIMGの質を向上させる条件は、表示画像DIMG内の複数の撮影画像CIMGのキャプチャ時刻のずれをできるだけ小さくすることでもよい。表示画像DIMG内の複数の撮影画像CIMGのキャプチャ時刻のずれは、表示画像DIMG内の複数の撮影画像CIMGの撮影タイミングのずれに対応する。撮影タイミングは、撮像装置50が被写体を撮影するタイミングである。
例えば、撮像装置50が自動車等に搭載され移動する場合、または、被写体が移動する場合、複数の撮像装置50の撮影タイミングのずれが大きくなるほど、複数の撮影画像CIMGを1つの表示画像DIMGとして表示したときの画像の乱れは大きくなる。
したがって、複数の撮像装置50で撮影された複数の撮影画像CIMGが1つの表示画像DIMGとして1画面内に表示される場合、複数の撮像装置50の撮影タイミングのずれが大きくなるほど、表示画像DIMGの質が低下するおそれがある。なお、表示画像DIMG内の複数の撮影画像CIMGの撮影タイミングのずれは、表示画像DIMG内の複数の撮影画像CIMGのキャプチャ時刻のずれを調整することにより、調整される。すなわち、表示画像DIMG内の複数の撮影画像CIMGのキャプチャ時刻のずれをできるだけ小さくすることにより、表示画像DIMGの質を向上させることができる。
所定の条件が複数の撮影画像CIMGのキャプチャ時刻のずれをできるだけ小さくすることである場合、順序決定部48は、次の表示画像DIMG内の複数の撮影画像CIMGのキャプチャ時刻のずれができるだけ小さくなるように、描画処理の実行順を決定する。なお、次の表示画像DIMG内の複数の撮影画像CIMGのキャプチャ時刻のずれは、既に記録されたキャプチャ時刻、描画開始時刻、描画完了時刻等を用いて予測される。
このように、順序決定部48は、表示画像DIMGの質を向上させる条件に適した処理順序になるように、既に記録されたキャプチャ時刻、描画開始時刻および描画完了時刻に基づいて、描画処理の実行順を決定する。順序決定部48で決定した処理順序(描画処理の実行順)は、描画処理部40に通知される。
表示装置60は、例えば、液晶ディスプレイ等のモニタであり、描画処理部40から所定の周期(例えば、垂直同期信号の周期)で受けた表示画像DIMGを表示する。なお、画像処理システム10および画像処理装置20の構成は、図1に示す例に限定されない。例えば、撮像装置50の数は、2つでもよいし、4つ以上でもよい。また、例えば、記憶部30は、画像処理装置20の外部に配置されてもよい。
図2は、図1に示した画像処理装置20の動作の一例を示す。図2に示す動作は、ハードウェアのみで実現されてもよく、ハードウェアをソフトウェアにより制御することにより実現されてもよい。例えば、画像処理プログラム等のソフトウェアは、プロセッサに図2に示す動作を実行させてもよい。すなわち、プロセッサは、画像処理プログラムを読み取り、図2に示す動作を実行してもよい。図2に示す動作をプロセッサ(すなわち、コンピュータ)に実行させるプログラムは、画像処理プログラムの一態様である。
ステップS100では、画像処理装置20は、撮影画像CIMGa、CIMGb、CIMGcのうち、順序決定部48で決定した処理順序が1番目の撮影画像CIMGを、最初に処理する処理順序j(j=1)の撮影画像CIMGとして選択する。なお、順序決定部48が処理順序を決定する前の期間(例えば、最初の表示画像DIMGが表示装置60に表示される前)では、画像処理装置20は、予め決められたデフォルトの処理順序に基づいて、処理順序j(j=1)の撮影画像CIMGを選択する。
次に、ステップS110では、キャプチャ時刻記録部42は、処理順序jの撮影画像CIMGが記憶部30に記憶された時刻を示すキャプチャ時刻を、処理順序jの撮影画像CIMGを撮影した撮像装置50に対応付けてレジスタ等に記録する。
次に、ステップS120では、描画処理部40は、処理順序jの撮影画像CIMGに対して、描画処理を開始する。描画処理が実行された後、すなわち、ステップS120の処理が実行された後、画像処理装置20の動作は、ステップS130に移る。
ステップS130では、描画開始時刻記録部44は、処理順序jの撮影画像CIMGに対する描画処理の開始時刻を示す描画開始時刻を、処理順序jの撮影画像CIMGを撮影した撮像装置50に対応付けてレジスタ等に記録する。
次に、ステップS140では、描画完了時刻記録部46は、処理順序jの撮影画像CIMGに対する描画処理が完了するまで待機する。そして、描画完了時刻記録部46は、処理順序jの撮影画像CIMGに対する描画処理が完了した場合、ステップS150の処理を実行する。
ステップS150では、描画完了時刻記録部46は、処理順序jの撮影画像CIMGに対する描画処理の完了時刻を示す描画完了時刻を、処理順序jの撮影画像CIMGを撮影した撮像装置50に対応付けてレジスタ等に記録する。
次に、ステップS160では、画像処理装置20は、1画面分の描画処理が完了したか否かを判定する。例えば、画像処理装置20は、撮影画像CIMGa、CIMGb、CIMGcの全てに対して、描画処理が完了したか否かを判定する。1画面分の描画処理が完了した場合、画像処理装置20の動作は、ステップS180に移る。一方、1画面分の描画処理が完了していない場合、画像処理装置20の動作は、ステップS170に移る。
ステップS170では、画像処理装置20は、撮影画像CIMGa、CIMGb、CIMGcのうち、次に処理する処理順序j(j=j+1)の撮影画像CIMGを選択する。ステップS170の処理が実行された後、画像処理装置20の動作は、ステップS110に戻る。すなわち、ステップS110−S150の処理は、1画面分の描画処理が完了するまで、順序決定部48により決定された処理順序(順序決定部48が処理順序を決定する前の期間ではデフォルトの処理順序)に従って繰り返される。そして、1画面分の描画処理が完了した場合、ステップS180の処理が実行される。
ステップS180では、順序決定部48は、次の表示画像DIMGを表示装置60に表示する際の複数の撮影画像CIMGの各々に対する描画処理の実行順(処理順序)を、所定の条件に適した処理順序になるように決定する。例えば、順序決定部48は、次の表示画像DIMG内の複数の撮影画像CIMGの表示遅延時間の平均(または、二乗平均)ができるだけ小さくなるように、キャプチャ時刻、描画開始時刻、描画完了時刻等を用いて、描画処理の実行順を決定する。あるいは、順序決定部48は、次の表示画像DIMG内の複数の撮影画像CIMGのキャプチャ時刻のずれができるだけ小さくなるように、キャプチャ時刻、描画開始時刻、描画完了時刻等を用いて、描画処理の実行順を決定してもよい。
次に、ステップS190では、画像処理装置20は、例えば、表示画像DIMGを表示装置60に表示するタイミング(以下、表示タイミングとも称する)に対応する垂直同期信号等を検出するまで、表示画像DIMGの表示装置60への転送を待機する。すなわち、画像処理装置20は、垂直同期信号等の表示タイミングに同期して、ステップS200の処理を実行する。
ステップS200では、画像処理装置20は、描画処理が完了した複数の撮影画像CIMGa、CIMGb、CIMGcを1つの表示画像DIMGとして、表示装置60に出力する。これにより、表示画像DIMGは、表示装置60に表示される。ステップS200の処理が実行された後、画像処理装置20の動作は、ステップS100に戻り、次の表示画像DIMGを表示装置60に表示する処理が実行される。これにより、表示画像DIMGは、垂直同期信号等の表示タイミングに同期して表示装置60に順次表示される。
ここで、例えば、画像処理システム10によっては、複数の撮像装置50の撮影タイミングは互いに同じとは限らない。また、複数の撮像装置50の撮影タイミングのずれは、撮影中に変化する場合もある。したがって、描画処理の実行順が表示画像DIMGの質を向上させる条件を考慮せずに任意の順序で固定された場合、固定された順序と異なる順序で撮影画像CIMGを処理した方が表示画像DIMGの質が向上する場合がある。
このため、順序決定部48は、複数の撮像装置50で撮影された複数の撮影画像CIMGを処理する順序を、表示画像DIMGの質を向上させる条件に適した処理順序になるように、キャプチャ時刻、描画開始時刻、描画完了時刻等に基づいて調整する。これにより、図2に示す動作では、表示装置60に表示される表示画像DIMGの質は、複数の撮影画像CIMGに対する描画処理の実行順を固定した手法に比べて、向上する。なお、画像処理装置20の動作は、図2に示す例に限定されない。
以上、図1および図2に示す実施形態では、順序決定部48は、例えば、表示画像DIMGの質を向上させる条件に適した処理順序になるように、キャプチャ時刻、描画開始時刻および描画完了時刻を用いて、描画処理の実行順を決定する。これにより、表示画像DIMGの質を向上させることができる。
図3は、画像処理方法および画像処理プログラムの別の実施形態を示す。図1および図2で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図3に示す画像処理システムSYSは、複数のカメラCAM(CAM1、CAM2、CAM3、CAM4)と、記憶部MEM(MEM1、MEM2、MEM3、MEM4)と、プロセッサPUと、表示装置DISとを有する。
カメラCAMは、例えば、デジタルカメラであり、撮像装置の一例である。例えば、カメラCAM1、CAM2、CAM3、CAM4は、所定のフレームレートでそれぞれ撮影した撮影画像CIMG1、CIMG2、CIMG3、CIMG4を記憶部MEM1、MEM2、MEM3、MEM4にそれぞれ転送する。なお、撮影画像CIMG(CIMG1、CIMG2、CIMG3、CIMG4)は、カメラCAMからプロセッサPUを介して記憶部MEMに転送されてもよい。カメラCAMの符号の末尾の数字、記憶部MEMの符号の末尾の数字、撮影画像CIMGの末尾の数字(図4等では、符号CIMGの後の数字)は、互いに対応する。
各記憶部MEMは、1フレーム分の撮影画像CIMGをそれぞれ記憶する3つのバッファBUF(BUFa、BUFb、BUFc)を有し、トリプルバッファ方式で撮影画像CIMGを順次記憶する。バッファBUFa、BUFb、BUFcの符号の末尾の数字は、記憶部MEMの符号の末尾の数字に対応する。例えば、バッファBUFa1、BUFb1、BUFc1は、記憶部MEM1が有するバッファBUFである。
以下、バッファBUFa1、BUFb1、BUFc1は、バッファBUF1とも称され、バッファBUFa2、BUFb2、BUFc2は、バッファBUF2とも称される。同様に、バッファBUFa3、BUFb3、BUFc3は、バッファBUF3とも称され、バッファBUFa4、BUFb4、BUFc4は、バッファBUF4とも称される。
プロセッサPUは、例えば、CPUであり、画像処理プログラムを実行することで画像処理装置として機能する。プロセッサPUは、複数のカメラCAMでそれぞれ撮影された複数の撮影画像CIMGを表示画像DIMGとして、表示装置DISの1画面に所定の時間間隔で表示する。例えば、各撮影画像CIMGは、各カメラCAMの1フレーム分の画像であり、表示画像DIMGは、撮影画像CIMG1、CIMG2、CIMG3、CIMG4を表示装置DISの画面内の所定の場所にそれぞれ配置した画像である。
例えば、プロセッサPUは、キャプチャ時刻記録部CREC、読み込み時刻記録部RREC、描画完了時刻記録部FREC、表示時刻記録部VREC、予測部CAL、順序決定部SEQおよび描画処理部DRAWを有する。キャプチャ時刻記録部CREC、読み込み時刻記録部RREC、描画完了時刻記録部FREC、表示時刻記録部VREC、予測部CAL、順序決定部SEQおよび描画処理部DRAWは、プロセッサPUが画像処理プログラムを実行することにより実現される。
キャプチャ時刻記録部CRECは、カメラCAM1−CAM4でそれぞれ撮影された撮影画像CIMG1−CIMG4が記憶部MEM1−MEM4に記憶された時刻をそれぞれ示すキャプチャ時刻を、複数のカメラCAMの各々に対応付けて記録する。例えば、キャプチャ時刻記録部CRECは、1フレーム分の撮影画像CIMGが記憶部MEMに記憶されたときに発生する割り込み等に基づいて、キャプチャ時刻を示すタイムスタンプを、撮影画像CIMG毎(すなわち、カメラCAM毎)にレジスタ等に記録する。
描画処理部DRAWは、記憶部MEM1−MEM4にそれぞれ記憶された撮影画像CIMG1−CIMG4の各々に対して、表示装置DISに表示するための描画処理を順番に実行する。例えば、描画処理部DRAWは、記憶部MEMから撮影画像CIMGを読み出し、記憶部MEMから読み出した撮影画像CIMGに対して描画処理を実行する一連の処理を、順序決定部SEQにより決定された処理順序に従って撮影画像CIMG毎に実行する。この場合、プロセッサPUが撮影画像CIMGを記憶部MEMから読み込んだ時刻は、描画処理の開始時刻に対応する。
表示画像DIMGの1画面分の描画処理が完了した場合、描画処理部DRAWは、描画処理が完了した撮影画像CIMG1、CIMG2、CIMG3、CIMG4を1つの表示画像DIMGとして、所定のタイミングに同期して表示装置DISに出力する。例えば、描画処理部DRAWは、表示画像DIMGを垂直同期信号に同期して表示装置DISに出力する。
読み込み時刻記録部RRECは、プロセッサPUが撮影画像CIMGを記憶部MEMから読み込んだ時刻を示す読み込み時刻を、複数のカメラCAMの各々に対応付けて記録する。読み込み時刻は、描画処理を開始した時刻を示す描画開始時刻の一例である。例えば、読み込み時刻記録部RRECは、プロセッサPUが撮影画像CIMGを記憶部MEMから読み込む度に、読み込み時刻を示すタイムスタンプをレジスタ等に記録する。これにより、読み込み時刻は、撮影画像CIMG毎(すなわち、カメラCAM毎)にレジスタ等に記録される。
描画完了時刻記録部FRECは、描画処理が完了した時刻を示す描画完了時刻を複数のカメラCAMの各々に対応付けて記録する。例えば、描画完了時刻記録部FRECは、1フレーム分の撮影画像CIMGに対する描画処理が完了する度に、描画完了時刻を示すタイムスタンプをレジスタ等に記録する。これにより、描画完了時刻は、撮影画像CIMG毎(すなわち、カメラCAM毎)にレジスタ等に記録される。
表示時刻記録部VRECは、表示画像DIMGが表示装置DISに表示された時刻を示す表示時刻を記録する。例えば、表示時刻記録部VRECは、プロセッサPUが表示画像DIMGを表示装置DISに出力する度に、表示時刻を示すタイムスタンプをレジスタ等に記録する。
予測部CALは、既に記録された表示時刻、キャプチャ時刻、読み込み時刻および描画完了時刻を用いて、次の表示画像DIMGに対応するキャプチャ時刻、読み込み時刻および描画完了時刻を、複数の撮影画像CIMGの処理順序の組み合わせ毎に予測する。
順序決定部SEQは、次の表示画像DIMGを表示装置DISに表示する際の複数の撮影画像CIMGの各々に対する描画処理の実行順を、予測部CALで予測したキャプチャ時刻、読み込み時刻および描画完了時刻に基づいて決定する。例えば、順序決定部SEQは、予測部CALで予測したキャプチャ時刻、読み込み時刻および描画完了時刻に基づいて、所定の条件に対応した評価値を処理順序の組み合わせ毎に算出する。そして、順序決定部SEQは、算出した評価値に基づいて、次の表示画像DIMGを表示装置DISに表示する際の描画処理の実行順を決定する。
なお、所定の条件に対応した評価値は、例えば、所定の条件が表示遅延時間をできるだけ小さくすることである場合、撮影画像CIMGが記憶部MEMに記憶されてから表示装置DISに表示されるまでの時間に関する評価値である。また、例えば、所定の条件が複数の撮影画像CIMGのキャプチャ時刻のずれをできるだけ小さくすることである場合、所定の条件に対応した評価値は、キャプチャ時刻のばらつきに関する評価値である。
このように、順序決定部SEQは、次の表示画像DIMGを表示装置DISに表示する際の複数の撮影画像CIMGの各々に対する描画処理の実行順を、所定の条件に適した順序になるように、キャプチャ時刻、読み込み時刻および描画完了時刻を用いて決定する。
表示装置DISは、例えば、液晶ディスプレイ等のモニタであり、描画処理部DRAWから垂直同期信号に同期して受けた表示画像DIMGを表示する。
なお、画像処理システムSYSの構成は、図3に示す例に限定されない。例えば、記憶部MEM、プロセッサPU等は、バスを介して接続されてもよい。この場合、例えば、撮影画像CIMGは、記憶部MEMからバスを介してプロセッサPUに転送される。また、カメラCAMの数は、2つでもよいし、3つでもよい。あるいは、カメラCAMの数は、5つ以上でもよい。また、記憶部MEMは、プロセッサPU内に設けられてもよい。また、キャプチャ時刻記録部CREC、読み込み時刻記録部RREC、描画完了時刻記録部FREC、表示時刻記録部VREC、予測部CAL、順序決定部SEQおよび描画処理部DRAWは、ハードウェアのみで実現されてもよい。
図4は、図3に示したプロセッサPUに参照される情報の一例を示す。図4に示すカメラフレーム番号(m、Gjn)は、撮影画像CIMGのフレーム番号であり、表示フレーム番号(n)は、表示画像DIMGのフレーム番号である。
カメラ動作系の情報は、撮影画像CIMGim、撮影画像更新周期Ui、処理順序Oiおよびキャプチャ時刻Cim等である。また、プロセッサ動作系の情報は、読み込み時刻Rjn、カメラフレーム番号Gjn、描画完了時刻Fjn、フレーム描画完了時刻Fnおよび表示時刻Vn等である。先ず、カメラ動作系の情報について説明する。
カメラ番号iは、各カメラCAMに割り当てられる識別番号を示す。例えば、カメラCAMの符号の末尾の数字は、カメラ番号iに対応する。カメラCAM1は、カメラ番号1のカメラCAMである。撮影画像CIMGimは、カメラCAMiで撮影されたカメラフレーム番号mの撮影画像CIMGを示す。例えば、撮影画像CIMG1mは、カメラCAM1で撮影された動画のmフレーム目の撮影画像CIMGを示す。なお、撮影画像CIMG1m、CIMG2m、CIMG3m、CIMG4mは、カメラフレーム番号mを特定しない場合等では、図3に示したように、符号mを省略して記載される場合もある。
撮影画像更新周期Uiは、カメラCAMiで撮影される動画のフレーム周期を示す。例えば、撮影画像更新周期U1は、カメラCAM1で撮影される動画のフレーム周期を示す。
処理順序Oiは、表示フレーム番号nの表示画像DIMG(以下、表示画像DIMGnとも称する)を表示装置DISに表示する際の各撮影画像CIMGiに対する描画処理の実行順を示す。例えば、カメラCAM1で撮影された撮影画像CIMG1に対する描画処理が、表示フレーム期間Tn(n番目の表示フレーム期間T)において、4番目に実行された場合、処理順序O1は、4に設定される。なお、表示フレーム期間Tは、例えば、垂直同期信号の周期に対応する期間である。
キャプチャ時刻Cimは、カメラCAMiで撮影されたカメラフレーム番号mの撮影画像CIMGimが記憶部MEMに記憶された時刻を示す。例えば、キャプチャ時刻C1mは、カメラCAM1で撮影された動画のmフレーム目の撮影画像CIMG1mが記憶部MEM1に記憶された時刻を示す。
次に、プロセッサ動作系の情報について説明する。処理順序jは、各表示フレーム期間Tに、プロセッサPUが描画処理を実行する順序を示す。なお、表示フレーム期間Tnに描画処理が実行された撮影画像CIMG1−CIMG4は、表示画像DIMGnとして、表示フレーム期間T(n+1)に表示装置DISに表示される。
処理順序jに対応するカメラCAMiは、処理順序OiがjであるカメラCAMiである。したがって、読み込み時刻Rjn、カメラフレーム番号Gjnおよび描画完了時刻Fjnは、処理順序Oiを介して複数のカメラCAMiのいずれかに対応付けされる。例えば、処理順序O3が1に設定された場合、処理順序1に対応するカメラCAMは、カメラCAM3であり、処理順序1の読み込み時刻R1n、カメラフレーム番号G1nおよび描画完了時刻F1nは、カメラCAM3に対応する情報である。
読み込み時刻Rjnは、表示フレーム期間Tnに、プロセッサPUが記憶部MEMからj番目に読み込んだ撮影画像CIMGの読み込み時刻(プロセッサPUが撮影画像CIMGiを記憶部MEMiから読み込んだ時刻)を示す。例えば、読み込み時刻R1nは、表示フレーム期間Tnに、プロセッサPUが記憶部MEM1−MEM4のいずれかから最初に読み込んだ撮影画像CIMGの読み込み時刻を示す。また、読み込み時刻R2nは、表示フレーム期間Tnに、プロセッサPUが記憶部MEM1−MEM4のいずれかから2番目に読み込んだ撮影画像CIMGの読み込み時刻を示す。
カメラフレーム番号Gjnは、表示フレーム期間Tnに、プロセッサPUが記憶部MEMからj番目に読み込んだ撮影画像CIMGのフレーム番号を示す。例えば、カメラフレーム番号G1nは、表示フレーム期間Tnに、プロセッサPUが記憶部MEM1−MEM4のいずれかから最初に読み込んだ撮影画像CIMGのカメラフレーム番号を示す。
描画完了時刻Fjnは、表示フレーム期間Tnに、プロセッサPUがj番目に実行した描画処理の完了時刻を示す。例えば、描画完了時刻F1nは、表示フレーム期間Tnに、プロセッサPUが最初に実行した描画処理の完了時刻を示す。また、描画完了時刻F2nは、表示フレーム期間Tnに、プロセッサPUが2番目に実行した描画処理の完了時刻を示す。
フレーム描画完了時刻Fnは、表示画像DIMGnに使用する全ての撮影画像CIMGに対して、描画処理が完了した時刻を示す。すなわち、フレーム描画完了時刻Fnは、表示フレーム期間Tnに、プロセッサPUが最後に実行した描画処理の完了時刻(すなわち、描画完了時刻F4n)を示す。
表示時刻Vnは、表示フレーム期間Tnの開始時刻を示す。例えば、表示時刻Vnは、表示画像DIMG(n−1)を表示装置DISに表示する際の垂直同期信号を検出した時刻を示す。
図5は、図3に示した画像処理システムSYSの動作タイミングの一例を示す。図5の網掛けの菱形は、表示フレーム期間Tnが終了するまでに記録されたキャプチャ時刻Cim、読み込み時刻Rjn、描画完了時刻Fjn等を示す。また、白抜きの菱形は、表示フレーム期間Tnに予測されたキャプチャ時刻Ci(m+1)、読み込み時刻Rj(n+1)等を示す。図5では、表示フレーム期間Tnでの動作タイミングを中心に説明する。
プロセッサPUは、処理順序O1、O2、O3、O4にそれぞれ設定された順序(図5に示す例では、O1=4、O2=3、O3=1、O4=2)に従って、撮影画像CIMG1−CIMG4の各々に対する描画処理を実行する。すなわち、表示フレーム期間Tnでは、プロセッサPUは、カメラCAM3、カメラCAM4、カメラCAM2、カメラCAM1の順序で描画処理を実行する。
表示時刻Vnでは、カメラCAM3の撮影画像CIMG3mは、記憶部MEM3に記憶されていない。このため、プロセッサPUは、撮影画像CIMG3(m−1)を記憶部MEM3から読み込み、描画処理を実行する。プロセッサPUは、撮影画像CIMG3(m−1)を記憶部MEM3から読み込んだ時刻を読み込み時刻R1nとして記録する。そして、プロセッサPUは、撮影画像CIMG3(m−1)に対する描画処理が完了した場合、撮影画像CIMG3(m−1)に対する描画処理の完了時刻を描画完了時刻F1nとして記録する。
撮影画像CIMG3の表示遅延時間DLY3は、撮影画像CIMG3(m−1)に対して描画処理が実行されたため、表示時刻V(n+1)からキャプチャ時刻C3(m−1)を引いた時間である。なお、表示遅延時間DLYは、撮影画像CIMGが記憶部MEMに記憶されてから表示装置DISに表示されるまでの時間DLYである。以下、表示遅延時間DLYは、遅延時間DLYとも称される。
プロセッサPUは、撮影画像CIMG3(m−1)に対する描画処理が完了した場合、次の処理順序の撮影画像CIMG4mを記憶部MEM4から読み込み、描画処理を実行する。なお、撮影画像CIMG3(m−1)に対する描画処理が完了した描画完了時刻F1nでは、カメラCAM4の撮影画像CIMG4mが記憶部MEM4に記憶されているため、撮影画像CIMG4mが記憶部MEM4から読み出される。このため、撮影画像CIMG4の表示遅延時間DLY4は、表示時刻V(n+1)からキャプチャ時刻C4mを引いた時間である。また、撮影画像CIMG4mが記憶部MEM4から読み出された時刻は、読み込み時刻R2nとして記録される。
撮影画像CIMG4mに対する描画処理が完了した後に、撮影画像CIMG2mに対する描画処理が実行され、撮影画像CIMG2mに対する描画処理が完了した後に、撮影画像CIMG1mに対する描画処理が実行される。そして、撮影画像CIMG1mに対する描画処理が完了した後に、表示フレーム期間Tnの次の表示フレーム期間T(n+1)の処理順序Oiを決定し、表示時刻V(n+1)に表示画像DIMGnを表示装置DISに表示する。
表示フレーム期間Tnの次の表示フレーム期間T(n+1)の処理順序Oiを決定する処理では、処理順序の全ての組み合わせの中から最適な組み合わせの処理順序が選択される。図3に示した画像処理システムSYSでは、カメラCAMの数が4つであるため、処理順序の組み合わせは、24(=4P4=4×3×2×1)通りである。図5に示した白抜きの菱形は、24通りの組み合わせのうちの1つ(表示フレーム期間Tnと同じ順序)を例として示している。
表示フレーム期間Tnの次の表示フレーム期間T(n+1)の処理順序Oiを決定する場合、表示フレーム期間T(n+1)に最初に読み込む撮影画像CIMGの読み込み時間R1(n+1)の予測値は、表示時刻V(n+1)とする。表示時刻V(n+1)は、表示フレーム期間T(n+1)の開始時刻である。例えば、プロセッサPUは、表示フレーム期間Tの周期(表示時刻Vnから表示時刻V(n−1)を引いた時間)を表示時刻Vnに加算した時刻を、表示時刻V(n+1)として予測する。
2番目に読み込む撮影画像CIMGの読み込み時間R2(n+1)の予測値は、1つ前(すなわち、1番目)に読み込む撮影画像CIMGの読み込み時間R1(n+1)の予測値に描画処理の時間を加算した時刻である。この場合、描画処理の時間は、表示フレーム期間T(n+1)に最初に読み込む撮影画像CIMGを撮影したカメラCAMで撮影された撮影画像CIMGの表示フレーム期間Tnにおける描画処理の時間(=Fjn−Rjn)とする。図5に示す例では、カメラCAM3で撮影された撮影画像CIMG3mが表示フレーム期間T(n+1)の最初に読み込まれるため、プロセッサPUは、カメラCAM3で撮影された撮影画像CIMG3の表示フレーム期間Tnにおける処理順序O3を参照する。そして、プロセッサPUは、処理順序O3が1であるため、描画完了時刻F1nから読み込み時刻R1nを引いた時間(=F1n−R1n)を描画処理の時間として、読み込み時間R2(n+1)を予測する。
3番目以降に読み込む撮影画像CIMGの読み込み時間Rj(n+1)の予測値も、2番目に読み込む撮影画像CIMGの読み込み時間R2(n+1)の予測値と同様に算出される。
また、プロセッサPUは、撮影画像CIMGが更新される時刻(キャプチャ時刻Ci(m+1)等)をカメラCAM毎に予測する。例えば、各撮影画像CIMGiが更新された最新の時刻がキャプチャ時刻Cimである場合、プロセッサPUは、キャプチャ時刻Cimに撮影画像更新周期Uiを加算した時刻を、次の更新時刻として予測する。さらに、プロセッサPUは、キャプチャ時刻Cimに撮影画像更新周期Uiの2倍を加算した時刻を、次の次の更新時刻として予測する。撮影画像更新周期Uiは、例えば、キャプチャ時刻Cimからキャプチャ時刻Ci(m−1)を引いた時間である。なお、プロセッサPUは、カメラCAMの仕様から想定される周期を撮影画像更新周期Uとして使用してもよい。図5に示す例では、キャプチャ時刻Ci(m+1)が次の更新時刻として算出される。
また、プロセッサPUは、表示フレーム期間T(n+1)の描画処理の対象となる各撮影画像CIMGiのカメラフレーム番号Gj(n+1)を算出する。そして、プロセッサPUは、表示フレーム期間T(n+1)の描画処理の対象となる各撮影画像CIMGiのカメラフレーム番号Gj(n+1)等に基づいて、評価値を算出する。カメラフレーム番号Gj(n+1)の算出方法、評価値の算出方法等については、図7および図8で説明する。
プロセッサPUは、処理順序の全ての組み合わせについて評価値を算出し、評価値が最もよい組み合わせの処理順序を、表示フレーム期間T(n+1)の処理順序Oiに決定する。これにより、表示画像DIMGに使用する複数の撮影画像CIMGとして、各カメラCAMで撮影された各動画のどのフレームを選択するかがカメラCAM毎に決定される。図5に示す例は、遅延時間DLY1、DLY2、DLY3、DLY4の平均値(例えば、二乗平均の値)を評価値とした場合の動作タイミングに対応する。
ここで、例えば、カメラCAM1、カメラCAM2、カメラCAM3、カメラCAM4の順序で描画処理の実行順が固定された場合、プロセッサPUは、表示時刻Vnに、撮影画像CIMG1(m−1)を記憶部MEM3から読み込む。すなわち、プロセッサPUは、表示フレーム期間Tnに、撮影画像CIMG1(m−1)に対して描画処理を実行する。そして、撮影画像CIMG2(m−1)に対する描画処理、撮影画像CIMG3(m−1)に対する描画処理、撮影画像CIMG4mに対する描画処理が順次実行される。
このように、処理順序がカメラ番号iに基づく順序(例えば、カメラ番号iが小さい順)に固定された場合、カメラCAM1、CAM2では、図5に示す例に比べて1つ前のフレームの撮影画像CIMGが表示画像DIMGnに使用される。この場合、カメラCAM1、CAM2では、遅延時間DLYは、図5に示す例に比べて、撮影画像更新周期U分大きくなる。換言すれば、図5に示す動作タイミングでは、遅延時間DLY1、DLY2は、処理順序をカメラ番号iの順に固定した場合に比べて小さくなる。すなわち、図5に示す例では、プロセッサPUは、処理順序をカメラ番号iの順に固定した場合に比べて、遅延時間DLY1、DLY2、DLY3、DLY4の平均値を小さくできる。
ここで、例えば、複数のカメラCAMがプロセッサPUとは異なるクロック系で動作している場合、発振器等の精度に依存して、撮影画像更新周期Uが複数のカメラCAMの各々で変化する場合がある。この場合、時間の推移に伴う撮影画像更新周期Uの変化により、撮影中に、複数のカメラCAMでそれぞれ撮影された複数の撮影画像CIMGの記憶部MEMへの転送順序が変化するおそれがある。この場合でも、撮影画像更新周期Uのずれは連続的に発生するため、表示フレーム期間Tnの動作タイミングの計測結果を次の表示フレーム期間T(n+1)の動作タイミングの予測に利用することにより、撮影画像更新周期Uの変化の影響を抑止することができる。
このように、プロセッサPUは、表示フレーム期間Tnの動作タイミングの計測結果に基づいて表示フレーム期間T(n+1)の動作タイミングを予測し、予測結果に基づいて描画処理の実行順(すなわち、撮影画像CIMGの読み込み順序)を決定する。これにより、表示画像DIMGに使用する複数の撮影画像CIMGとして、表示画像DIMGの質を向上させる条件に適したカメラフレーム番号mの撮影画像CIMGimがカメラCAM毎に決定される。
図6は、図3に示したプロセッサPUの動作の一例を示す。図6に示す動作は、プロセッサPUを画像処理プログラム等のソフトウェアで制御することにより実現される。例えば、プロセッサPUは、画像処理プログラムを読み取り、図6に示す動作を実行する。図6に示す動作をプロセッサPU(すなわち、コンピュータ)に実行させるプログラムは、画像処理プログラムの一態様である。なお、図3に示したキャプチャ時刻記録部CREC等に対応する機能ブロック(プロセッサPU内の機能ブロック)がハードウェアのみで実現される場合、図6に示す動作は、ハードウェアのみで実現されてもよい。
図6では、ステップS380の処理が実行される時点において、記憶部MEMiに記憶された1フレーム分の撮影画像CIMGiのうちの最新の撮影画像CIMGiのカメラフレーム番号を、カメラフレーム番号mとしてプロセッサPUの動作を説明する。すなわち、カメラフレーム番号mは、表示画像DIMGnに使用される撮影画像CIMGiのカメラフレーム番号である。例えば、図5に示した動作タイミングと図6に示す動作との関係では、図6に示す変数jが1の場合、図6に示すカメラフレーム番号mは、図5に示したカメラフレーム番号(m−1)に対応する。また、変数jが2、3、4のいずれかの場合、図6に示すカメラフレーム番号mは、図5に示したカメラフレーム番号mに対応する。
ステップS300では、プロセッサPUは、表示フレーム番号nを示す変数nを0に設定し、動作をステップS320に移す。
ステップS320では、プロセッサPUは、表示時刻Vnをレジスタ等に記録し、動作をステップS340に移す。なお、最初の表示画像DIMGn(DIMG0)が表示される前では、プロセッサPUは、例えば、垂直同期信号の周期に対応する表示フレーム期間Tnの最初の表示フレーム期間T0の開始時刻を表示時刻Vn(V0)としてレジスタ等に記録する。
ステップS340では、プロセッサPUは、処理順序jを示す変数jを1に設定し、動作をステップS360に移す。
ステップS360では、プロセッサPUは、処理順序Oiが変数jであるカメラ番号iを検索し、動作をステップS380に移す。ステップS360の処理により、描画処理の対象のカメラCAMiが選択される。なお、処理順序Oiは、ステップS560の処理が1度も実行されていない場合、予め決められたデフォルトの処理順序(例えば、カメラ番号iが小さい順)に設定されている。
ステップS380では、プロセッサPUは、ステップS360の処理で選択したカメラCAMiで撮影されたmフレーム目の撮影画像CIMGimが記憶部MEMiに記憶された時刻を、キャプチャ時刻Cimとしてレジスタ等に記録する。例えば、プロセッサPUは、撮影画像CIMGimを記憶部MEMiに記憶した時刻を示すタイムスタンプを取得し、取得したタイムスタンプをキャプチャ時刻Cimとしてレジスタ等に記録する。ステップS380の処理が実行された後、プロセッサPUの動作は、ステップS400に移る。
ステップS400では、プロセッサPUは、カメラ番号iの撮影画像CIMGimの読み込み時刻Rjnをレジスタ等に記録する。例えば、プロセッサPUは、ステップS360の処理で選択したカメラCAMiで撮影されたmフレーム目の撮影画像CIMGimを記憶部MEMiから読み込み、読み込んだ時刻を読み込み時刻Rjnとしてレジスタ等に記録する。ステップS400の処理が実行された後、プロセッサPUの動作は、ステップS420に移る。
ステップS420では、プロセッサPUは、カメラ番号iの撮影画像CIMGim(ステップS400の処理で記憶部MEMiから読み込んだ撮影画像CIMGim)に対して描画処理を実行し、動作をステップS440に移す。
ステップS440では、プロセッサPUは、撮影画像CIMGimに対する描画処理が完了するまで、ステップS460の処理の実行を待機する。すなわち、プロセッサPUは、撮影画像CIMGimに対する描画処理が完了した場合、ステップS460の処理を実行する。
ステップS460では、プロセッサPUは、撮影画像CIMGimに対する描画処理が完了した時刻を描画完了時刻Fjnとしてレジスタ等に記録し、動作をステップS480に移す。
ステップS480では、プロセッサPUは、変数j(処理順序j)が4か否かを判定する。すなわち、プロセッサPUは、表示画像DIMGnに使用される全ての撮影画像CIMG1、CIMG2、CIMG3、CIMG4に対して描画処理が完了したか否かを判定する。なお、例えば、カメラCAMの数がN個(Nは、正の整数)の場合、プロセッサPUは、変数jがNか否かを判定する。変数jが4である場合、プロセッサPUの動作は、ステップS520に移る。一方、変数jが4でない場合、プロセッサPUの動作は、ステップS500に移る。
ステップS500では、プロセッサPUは、変数jをインクリメントし(j=j+1)、動作をステップS360に移す。すなわち、ステップS360−S460の処理は、1画面分の描画処理(表示画像DIMGnに使用される全ての撮影画像CIMGに対する描画処理)が完了するまで、処理順序Oiに設定された処理順序に従って繰り返される。そして、1画面分の描画処理が完了した場合、ステップS520の処理が実行される。
ステップS520では、プロセッサPUは、表示用のバッファBUFを切り替えるフリップ処理を実行する。これにより、各記憶部MEM内の3つのバッファBUFのうち、ステップS420の処理で描画処理が実行された撮影画像CIMGimを記憶したバッファBUFは、表示用のバッファBUFに切り替わる。ステップS520の処理が実行された後、プロセッサPUの動作は、ステップS540に移る。
ステップS540では、プロセッサPUは、順序決定処理を実行して、次回の処理順序を決定する。例えば、プロセッサPUは、図7に示す順序決定処理を実行する。あるいは、プロセッサPUは、図8に示す順序決定処理を実行する。順序決定処理の実行により、現在の表示フレーム期間Tnの次の表示フレーム期間T(n+1)に実行される描画処理の順序が決定する。ステップS540の処理が実行された後(順序決定処理により次回の処理順序が決定した後)、プロセッサPUの動作は、ステップS560に移る。
ステップS560では、プロセッサPUは、ステップS540の順序決定処理により決定した処理順序を処理順序Oiに設定する。これにより、処理順序Oiは、ステップS540の順序決定処理により決定した処理順序に更新される。ステップS560の処理が実行された後、プロセッサPUの動作は、ステップS580に移る。
ステップS580では、プロセッサPUは、表示画像DIMGnを表示装置DISに表示するタイミングまで、ステップS600の処理の実行を待機する。例えば、プロセッサPUは、垂直同期信号等を検出するまで、ステップS600の処理の実行を待機する。すなわち、プロセッサPUは、表示画像DIMGnを表示装置DISに表示するタイミング(例えば、垂直同期信号)に同期して、ステップS600の処理を実行する。
ステップS600では、プロセッサPUは、描画処理が完了した複数の撮影画像CIMG1、CIMG2、CIMG3、CIMG4を1つの表示画像DIMGnとして、表示装置DISに表示する。例えば、プロセッサPUは、各記憶部MEM内の表示用のバッファBUFに記憶された撮影画像CIMG1、CIMG2、CIMG3、CIMG4を1つの表示画像DIMGnとして、表示装置DISに転送する。ステップS600の処理が実行された後、プロセッサPUの動作は、ステップS620に移る。
ステップS620では、プロセッサPUは、変数nをインクリメントし(n=n+1)、動作をステップS320に移す。これにより、次の表示画像DIMGnを表示装置DISに表示する処理が実行される。ステップS320−S620の処理が繰り返されることにより、表示画像DIMGは、垂直同期信号に同期して表示装置DISに順次表示される。なお、プロセッサPUの動作は、図6に示す例に限定されない。
図7は、図6に示した順序決定処理(ステップS540)の一例を示す。なお、図7は、撮影画像CIMGiが記憶部MEMiに記憶されてから表示装置DISに表示されるまでの時間を評価値Ekとした場合の順序決定処理の一例を示す。図7に示すカメラフレーム番号mは、図6と同様に、表示画像DIMGnに使用される撮影画像CIMGiのカメラフレーム番号である。
ステップS541では、プロセッサPUは、表示時刻V(n+1)、V(n+2)を予測するとともに、処理順序の組み合わせのパターンを示す変数kを1に設定する。以下、変数kで指定されるパターンの組み合わせは、組み合わせkとも称される。
表示時刻V(n+1)は、図5で説明したように、現在の表示フレーム期間Tnの次の表示フレーム期間T(n+1)の開始時刻に対応する。例えば、プロセッサPUは、表示フレーム期間Tの周期(表示時刻Vnから表示時刻V(n−1)を引いた時間)を表示時刻Vnに加算した時刻を、表示時刻V(n+1)として予測する。また、表示時刻V(n+2)は、現在の表示フレーム期間Tnの次の次の表示フレーム期間T(n+2)の開始時刻に対応する。例えば、プロセッサPUは、表示フレーム期間Tの周期の2倍を表示時刻Vnに加算した時刻を、表示時刻V(n+2)として予測する。
次に、ステップS542では、プロセッサPUは、処理順序の組み合わせkを選択するとともに、処理順序jを示す変数jを1に設定し、動作をステップS543に移す。
ステップS543では、プロセッサPUは、処理順序jのカメラCAMiを選択し、動作をステップS544に移す。なお、各組み合わせkにおいて、処理順序jのカメラCAMiは、処理順序jに対して一意に決まる。
例えば、組み合わせkが示す処理順序が、カメラCAM3、カメラCAM4、カメラCAM2、カメラCAM1の順である場合、処理順序1のカメラCAMiは、カメラCAM3である。そして、処理順序2、処理順序3、処理順序4のカメラCAMiは、それぞれカメラCAM4、CAM2、CAM1である。あるいは、組み合わせkが示す処理順序が、カメラCAM1、カメラCAM3、カメラCAM4、カメラCAM2の順である場合、処理順序1のカメラCAMiは、カメラCAM1である。そして、処理順序2、処理順序3、処理順序4のカメラCAMiは、それぞれカメラCAM3、CAM4、CAM2である。
ステップS544では、プロセッサPUは、図5で説明したように、読み込み時刻Rj(n+1)、キャプチャ時刻Ci(m+1)、Ci(m+2)を予測する。ステップS544の処理が実行された後、プロセッサPUの動作は、ステップS545に移る。
ステップS545では、プロセッサPUは、ステップS544の処理で予測した読み込み時刻Rj(n+1)とキャプチャ時刻Ci(m+1)、Ci(m+2)との関係に基づいて、カメラフレーム番号Gj(n+1)を算出する。
例えば、読み込み時刻Rj(n+1)がキャプチャ時刻Ci(m+1)より前の時刻である場合、カメラフレーム番号Gj(n+1)は、”m”に設定される(Gj(n+1)=m)。この場合、例えば、表示画像DIMGnと表示画像DIMG(n+1)とで、互いに同じフレームの撮影画像CIMGimが使用される。
また、例えば、読み込み時刻Rj(n+1)がキャプチャ時刻Ci(m+1)以降の時刻で、かつ、キャプチャ時刻Ci(m+2)より前の時刻である場合、カメラフレーム番号Gj(n+1)は、”m+1”に設定される(Gj(n+1)=m+1)。この場合、例えば、撮影画像CIMGimの次のフレームの撮影画像CIMGi(m+1)が表示画像DIMG(n+1)に使用される。
また、例えば、読み込み時刻Rj(n+1)がキャプチャ時刻Ci(m+2)以降の時刻である場合、カメラフレーム番号Gj(n+1)は、”m+2”に設定される(Gj(n+1)=m+2)。この場合、例えば、撮影画像CIMGimの次の次のフレームの撮影画像CIMGi(m+2)が表示画像DIMG(n+1)に使用される。すなわち、撮影画像CIMGiが1フレーム飛ばされる。
ステップS545の処理が実行された後、プロセッサPUの動作は、ステップS546に移る。
ステップS546では、プロセッサPUは、ステップS545の処理で算出したカメラフレーム番号Gj(n+1)、ステップS541の処理で予測した表示時刻V(n+2)等に基づいて、遅延時間DLYiを算出する。
カメラフレーム番号Gj(n+1)が”m”である場合、遅延時間DLYiは、表示時刻V(n+2)から図6に示したステップS380の処理で記録したキャプチャ時刻Cimを引いた時刻である(DLYi=V(n+2)−Cim)。
カメラフレーム番号Gj(n+1)が”m+1”である場合、遅延時間DLYiは、表示時刻V(n+2)からステップS544の処理で予測したキャプチャ時刻Ci(m+1)を引いた時刻である(DLYi=V(n+2)−Ci(m+1))。
カメラフレーム番号Gj(n+1)が”m+2”である場合、遅延時間DLYiは、表示時刻V(n+2)からステップS544の処理で予測したキャプチャ時刻Ci(m+2)を引いた時刻である(DLYi=V(n+2)−Ci(m+2))。
ステップS546の処理が実行された後、プロセッサPUの動作は、ステップS547に移る。
ステップS547では、プロセッサPUは、変数j(処理順序j)が4か否かを判定する。すなわち、プロセッサPUは、撮影画像CIMG1、CIMG2、CIMG3、CIMG4のそれぞれの遅延時間DLY1、DLY2、DLY3、DLY4を算出したか否かを判定する。なお、例えば、カメラCAMの数がN個(Nは、正の整数)の場合、プロセッサPUは、変数jがNか否かを判定する。変数jが4である場合、プロセッサPUの動作は、ステップS549に移る。一方、変数jが4でない場合、プロセッサPUの動作は、ステップS548に移る。
ステップS548では、プロセッサPUは、変数jをインクリメントし(j=j+1)、動作をステップS543に移す。すなわち、ステップS543−S546の処理は、組み合わせkでの遅延時間DLY1、DLY2、DLY3、DLY4がそれぞれ算出されるまで、繰り返される。そして、組み合わせkでの遅延時間DLY1、DLY2、DLY3、DLY4がそれぞれ算出された場合、ステップS549の処理が実行される。
ステップS549では、プロセッサPUは、ステップS546の処理で算出した遅延時間DLYiを用いて評価値Ekを算出し、動作をステップS550に移す。なお、評価値Ekは、カメラCAMの数N(図7に示す例では、N=4)および遅延時間DLYiを用いて、式(1)で表される。
このように、図7に示す例では、プロセッサPUは、遅延時間DLYiの二乗平均を評価値Ekとして算出する。
ステップS550では、プロセッサPUは、処理順序の組み合わせのパターンを示す変数kが24か否かを判定する。すなわち、プロセッサPUは、撮影画像CIMG1、CIMG2、CIMG3、CIMG4の処理順序の全ての組み合わせkで評価値Ekを算出したか否かを判定する。なお、例えば、カメラCAMの数がN個(Nは、正の整数)の場合、プロセッサPUは、変数kがNの階乗か否かを判定する。変数kが24である場合、プロセッサPUの動作は、ステップS552に移る。一方、変数kが24でない場合、プロセッサPUの動作は、ステップS551に移る。
ステップS551では、プロセッサPUは、変数kをインクリメントし(k=k+1)、動作をステップS542に移す。すなわち、ステップS542−S549の処理は、撮影画像CIMG1、CIMG2、CIMG3、CIMG4の処理順序の全ての組み合わせkで評価値Ekが算出されるまで、繰り返される。そして、全ての組み合わせkで評価値Ekが算出された場合、ステップS552の処理が実行される。
ステップS552では、プロセッサPUは、ステップS549の処理で算出した評価値Ekが最少になる組み合わせkの処理順序を、次回の処理順序に決定する。すなわち、プロセッサPUは、処理順序の全ての組み合わせkのうち、表示遅延時間DLYに関する評価値Ek(図7に示す例では、遅延時間DLY1、DLY2、DLY3、DLY4の二乗平均)が最少になる組み合わせkの処理順序を、次回の処理順序に決定する。
ステップS552の処理の終了により、順序決定処理が終了し、図6に示したステップS560において、処理順序Oiが更新される。例えば、プロセッサPUは、図6に示したステップS560において、処理順序Oiを、ステップS552の処理で決定した処理順序に更新する。なお、表示遅延時間DLYに関する評価値Ekは、図7に示す例(遅延時間DLYiの二乗平均)に限定されない。
図8は、図6に示した順序決定処理(ステップS540)の別の例を示す。なお、図8は、表示画像DIMGnに使用される撮影画像CIMG1m、CIMG2m、CIMG3m、CIMG4mのそれぞれのキャプチャ時刻Cimのばらつきを評価値Ekとした場合の順序決定処理の一例を示す。図8に示すカメラフレーム番号mは、図6と同様に、表示画像DIMGnに使用される撮影画像CIMGiのカメラフレーム番号である。図7で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。
ステップS541−S545は、図7に示したステップステップS541−S545と同一または同様である。ステップS545の処理が実行された後、プロセッサPUの動作は、ステップS546aに移る。
ステップS546aでは、プロセッサPUは、ステップS545の処理で算出したカメラフレーム番号Gj(n+1)に基づいて、キャプチャ時刻Ciを算出する。
カメラフレーム番号Gj(n+1)が”m”である場合、キャプチャ時刻Ciは、撮影画像CIMGimが記憶部MEMiに記憶された時刻である(Ci=Cim)。すなわち、キャプチャ時刻Ciは、図6に示したステップS380の処理で記録したキャプチャ時刻Cimである。
カメラフレーム番号Gj(n+1)が”m+1”である場合、キャプチャ時刻Ciは、ステップS544の処理で予測したキャプチャ時刻Ci(m+1)である(Ci=Ci(m+1))。
カメラフレーム番号Gj(n+1)が”m+2”である場合、キャプチャ時刻Ciは、ステップS544の処理で予測したキャプチャ時刻Ci(m+2)である(Ci=Ci(m+2))。
ステップS546aの処理が実行された後、プロセッサPUの動作は、ステップS547に移る。
ステップS547、S548は、図7に示したステップステップS547、S548と同一または同様である。例えば、ステップS547では、プロセッサPUは、変数j(処理順序j)が4か否かを判定する。そして、変数jが4である場合、プロセッサPUは、動作をステップS549aに移す。一方、変数jが4でない場合、プロセッサPUは、ステップS548において、変数jをインクリメントし(j=j+1)、動作をステップS543に移す。
ステップS549aでは、プロセッサPUは、ステップS546aの処理で算出したキャプチャ時刻Ciを用いて評価値Ekを算出し、動作をステップS550に移す。なお、評価値Ekは、カメラCAMの数N(図7に示す例では、N=4)およびキャプチャ時刻Ciを用いて、式(2)で表される。
式(2)の符号AVEcは、N個のキャプチャ時刻Ciの平均を示す。例えば、カメラCAMの数Nが4つである場合、平均AVEcは、ステップS546aの処理で算出したキャプチャ時刻Ci(キャプチャ時刻C1、C2、C3、C4)を用いて、式(3)で表される。
AVEc=(C1+C2+C3+C4)/4 ・・・(3)
このように、図8に示す例では、プロセッサPUは、キャプチャ時刻Ciの分散を評価値Ekとして算出する。
ステップS550−S552は、図7に示したステップステップS550−S552と同一または同様である。例えば、ステップS550では、プロセッサPUは、変数kが24か否かを判定する。そして、変数kが24である場合、プロセッサPUは、動作をステップS552に移す。一方、変数kが24でない場合、プロセッサPUは、ステップS551において、変数kをインクリメントし(k=k+1)、動作をステップS542に移す。
ステップS552では、プロセッサPUは、ステップS549aの処理で算出した評価値Ekが最少になる組み合わせkの処理順序を、次回の処理順序に決定する。すなわち、プロセッサPUは、処理順序の全ての組み合わせkのうち、キャプチャ時刻Cimのばらつきに関する評価値Ek(図7に示す例では、キャプチャ時刻C1、C2、C3、C4の分散)が最少になる組み合わせkの処理順序を、次回の処理順序に決定する。
ステップS552の処理の終了により、順序決定処理が終了し、図6に示したステップS560において、処理順序Oiが更新される。例えば、プロセッサPUは、図6に示したステップS560において、処理順序Oiを、ステップS552の処理で決定した処理順序に更新する。
なお、順序決定処理(ステップS540)は、図7または図8に示した例に限定されない。例えば、プロセッサPUは、評価値Ekの算出が全ての組み合わせkで終了する前でも、予め決められた目標値以下の評価値Ekになる組み合わせkを検出した場合、ステップS552の処理を実行してもよい。この場合、プロセッサPUは、目標値以下の評価値Ekになる組み合わせkの処理順序を次回の処理順序に決定する。
また、評価値Ekとして、キャプチャ時刻Cimの分散と遅延時間DLYiの二乗平均との両方が使用されてもよい。例えば、プロセッサPUは、キャプチャ時刻Ciの分散が目標値以下になる組み合わせkのうち、遅延時間DLYiの二乗平均が最少になる組み合わせkの処理順序を、次回の処理順序に決定してもよい。あるいは、プロセッサPUは、遅延時間DLYiの二乗平均が目標値以下になる組み合わせkのうち、キャプチャ時刻Ciの分散が最少になる組み合わせkの処理順序を、次回の処理順序に決定してもよい。
図9は、表示遅延時間DLYiの二乗平均を評価値Ekとした場合のシミュレーション結果の一例を示す。図9の横軸は、表示遅延時間DLYiの二乗平均を示す。また、図9の縦軸は、表示遅延時間DLYiの二乗平均を0.1間隔で区切ったときの各区間の頻度を示す。図9に示す例では、シミュレーションは、カメラCAMiから記憶部MEMiへの撮影画像CIMGiの入力タイミングをランダムに振って100回実行される。以下にシミュレーション条件を示す。カメラCAMiの数は4で、各カメラCAMiの撮影画像更新周期Uiは100で、表示フレーム期間Tは100である。
なお、図9に示す網掛けの矩形は、図7に示した順序決定処理に基づいて、描画処理の実行順を調整した場合(最適化後)のシミュレーション結果を示す。また、図9に示す白抜きの矩形は、描画処理の実行順を固定した場合(最適化前)のシミュレーション結果を示す。
描画処理の実行順を調整した場合、表示遅延時間DLYiの二乗平均の100回のシミュレーションの平均およびばらつきは、描画処理の実行順を固定した場合に比べて、小さくなる。例えば、描画処理の実行順を調整した場合、表示遅延時間DLYiの二乗平均の100回のシミュレーションの平均は、0.91である。これに対し、描画処理の実行順を固定した場合、表示遅延時間DLYiの二乗平均の100回のシミュレーションの平均は、1.48である。
このように、描画処理の実行順を図7に示した順序決定処理に基づいて調整することにより、描画処理の実行順を固定した場合に比べて、表示画像DIMG内の複数の撮影画像CIMGiの表示遅延時間DLYiの二乗平均を小さくすることができる。
図10は、キャプチャ時刻Ciの分散を評価値Ekとした場合のシミュレーション結果の一例を示す。図10の横軸は、キャプチャ時刻Ciの分散を示す。また、図10の縦軸は、キャプチャ時刻Ciの分散を50間隔で区切ったときの各区間の頻度を示す。図10に示す例においても、図9と同様に、シミュレーションは、カメラCAMiから記憶部MEMiへの撮影画像CIMGiの入力タイミングをランダムに振って100回実行される。
シミュレーション条件および図10に示す白抜きの矩形の意味は、図9と同じである。なお、図10に示す網掛けの矩形は、図8に示した順序決定処理に基づいて、描画処理の実行順を調整した場合(最適化後)のシミュレーション結果を示す。
描画処理の実行順を調整した場合、キャプチャ時刻Ciの分散の100回のシミュレーションの平均およびばらつきは、描画処理の実行順を固定した場合に比べて、小さくなる。例えば、描画処理の実行順を調整した場合、キャプチャ時刻Ciの分散の100回のシミュレーションの平均は、186である。これに対し、描画処理の実行順を固定した場合、キャプチャ時刻Ciの分散の100回のシミュレーションの平均は、474である。
このように、描画処理の実行順を図8に示した順序決定処理に基づいて調整することにより、描画処理の実行順を固定した場合に比べて、表示画像DIMG内の複数の撮影画像CIMGiにおけるキャプチャ時刻Ciのばらつきを小さくすることができる。
図11は、図3に示した画像処理システムSYSのハードウェア構成の一例を示す。画像処理システムSYSは、コンピュータ装置CPと、コンピュータ装置CPに接続される複数のカメラCAM(CAM1、CAM2、CAM3、CAM4)と、コンピュータ装置CPに接続される表示装置DISとにより実現される。
コンピュータ装置CPは、プロセッサPU、メモリMMEM、VMEM、ハードディスク装置HDD、入出力インタフェースIFおよび光学ドライブ装置ODRを有する。プロセッサPU、メモリMMEM、VMEM、ハードディスク装置HDD、入出力インタフェースIFおよび光学ドライブ装置ODRは、バスBUSを介して互いに接続される。
光学ドライブ装置ODRは、光ディスク等のリムーバブルディスクRDを装着可能であり、装着したリムーバブルディスクRDに記録された情報の読み出しおよび記録を実行する。
入出力インタフェースIFは、例えば、カメラCAM1、CAM2、CAM3、CAM4に接続される。これにより、プロセッサPU等は、カメラCAM1、CAM2、CAM3、CAM4で撮影された撮影画像CIMG1、CIMG2、CIMG3、CIMG4を、入出力インタフェースIFを介して受け取ることができる。
メモリVMEMは、例えば、カメラCAM1、CAM2、CAM3、CAM4で撮影された撮影画像CIMG1、CIMG2、CIMG3、CIMG4を記憶する。すなわち、図3に示した記憶部MEM1、MEM2、MEM3、MEM4は、メモリVMEMに割り当てられる。
メモリMMEMは、例えば、コンピュータ装置CPのオペレーティングシステムを記憶する。また、メモリMMEMは、例えば、画像処理装置の動作をプロセッサPUが実行するための画像処理プログラム等のアプリケーションプログラムを記憶する。画像処理プログラム等のアプリケーションプログラムは、例えば、光ディスク等のリムーバブルディスクRDに記録して頒布することができる。
例えば、コンピュータ装置CPは、画像処理プログラム等のアプリケーションプログラムを、リムーバブルディスクRDから光学ドライブ装置ODRを介して読み出し、メモリMMEMおよびハードディスク装置HDD等に格納してもよい。また、コンピュータ装置CPは、画像処理プログラム等のアプリケーションプログラムを、インターネット等のネットワークに接続する通信装置(図示せず)を介してダウンロードし、メモリMMEMおよびハードディスク装置HDD等に格納してもよい。
プロセッサPUは、メモリMMEM等に格納された画像処理プログラムを実行することにより、図3に示したプロセッサPU内のキャプチャ時刻記録部CREC等の機能ブロックの機能を実現する。
なお、画像処理システムSYSのハードウェア構成は、図11に示す例に限定されない。例えば、コンピュータ装置CPは、USB(Universal Serial Bus)メモリ等の記憶媒体用のインタフェースを有してもよい。あるいは、光学ドライブ装置ODRは、コンピュータ装置CPから省かれてもよい。また、例えば、メモリVMEMがコンピュータ装置CPから省かれ、図3に示した記憶部MEM1−MEM4がメモリMMEMに割り当てられてもよい。
また、プロセッサPU、メモリMMEM、VMEM、ハードディスク装置HDDおよび入出力インタフェースIFは、図1に示した画像処理装置20の機能を実現してもよい。例えば、プロセッサPUは、メモリMMEM等に格納された画像処理プログラムを実行することにより、図1に示した画像処理装置20の機能を実現してもよい。この場合、図1に示した記憶部30は、メモリVMEMに割り当てられてもよいし、メモリMMEMに割り当てられてもよい。
以上、図3から図11に示す実施形態においても、図1および図2に示した実施形態と同様の効果を得ることができる。図3から図11に示す実施形態では、プロセッサPUは、表示時刻Vn、キャプチャ時刻Cim、読み込み時刻Rjnおよび描画完了時刻Fjnに基づいて評価値Ekを算出し、算出した評価値Ekに基づいて描画処理の実行順を決定する。
例えば、評価値Ekが表示遅延時間DLYiの二乗平均である場合、次の表示画像DIMG内の複数の撮影画像CIMGiの表示遅延時間DLYiの二乗平均ができるだけ小さくなるように、描画処理の実行順を決定することができる。また、例えば、評価値Ekがキャプチャ時刻Ciの分散である場合、次の表示画像DIMG内の複数の撮影画像CIMGiのキャプチャ時刻Ciのずれができるだけ小さくなるように、描画処理の実行順を決定することができる。このように、評価値Ekの種類に応じて、表示画像DIMGの質を向上させることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。