近年、車両の周囲にカメラを配置し、運転者(ドライバ)から見えにくい箇所の映像をフロント座席のモニタに映し出すシステムが一般化してきた。このようなシステムは、例えばカーナビゲーションシステムの機能の一部として提供される。現状のそのようなシステムでは、例えば、車の後方、および前方の左右両サイドの合計3方向を撮影する3台程度のカメラが配置されるのが一般的である。
ところで、車載用の各種機器を接続するLAN(以下、車載LANという;LANはLocal Area Networkの略)の規格には、高速シリアルバスの規格であるIEEE(Institute of Electrical and Electronics Engineers)1394規格を車載用に改変したIDB(ITS Data Bus Forum;ITSはIntelligent Transport Systemsの略)−1394等がある。今後は、IDB−1394のように高速な車載LANの普及にともない、より多くのカメラが配置されたシステムが一般化すると予想される。
図11は、車載用の多数のカメラを車両の周辺に設置したマルチカメラシステムの例である。図11では、監視用の6台のカメラ1003a〜1003fが車両1001に設置され、車両の周囲を撮影している。カメラ1003aと1003bと1003fは、いずれも車両1001の後方を向くように設置され、それぞれの設置位置は、車両1001の後尾部、左サイドミラー近傍、右サイドミラー近傍である。カメラ1003cは左向きに車体前面部左側に設置され、カメラ1003dは前向きに車体前面部中央に設置され、カメラ1003eは右向きに車体前面部右側に設置されている。また、右フロント座席である運転席にはモニタ1004aが設置され、中央の左側と右側の座席にはモニタ1004bと1004cがそれぞれ設置されている。
カメラ1003a〜1003fにはそれぞれ送信コントローラ1005a〜1005fが取り付けられており、送信コントローラ1005a〜1005fを介してカメラ1003a〜1003fは車載LAN1002に接続されている。同様に、モニタ1004a〜1004cにはそれぞれ受信コントローラ1006a〜1006cが取り付けられており、受信コントローラ1006a〜1006cを介してモニタ1004a〜1004cも車載LAN1002に接続されている。このような構成により、カメラ1003a〜1003fが撮影した画像を、車載LAN1002を介してモニタ1004a〜1004cに送信することが可能となる。
図11のような車載マルチカメラシステムでは、安全運転を支援するために、運転席に設けられたモニタ1004aの画面に、複数のカメラが撮影した複数の画像を同時に表示し、運転者の死角をなくすことが求められている。
複数のカメラのそれぞれが撮影した画像、すなわちマルチチャンネル画像を合成して1つの画面に表示することは、チャンネル数に応じた容量のフレームメモリを画像の受信側であるモニタ側に設けることによって、実現可能である。図12は、モニタ1004aの画面1011を4分割して、カメラ1003a〜1003dが撮影した画像を同時に表示するシステムの構成要素と、その4分割された画面1011を示す図である。なお、図12では、図11にあったカメラ1003eと1003f、およびこの2台のカメラに関連する部分を省略している。
カメラ1003a〜1003dは、安全運転の支援を目的とするので、動画像を撮影している。そのため、一般のビデオカメラと同様に、カメラ1003a〜1003dはそれぞれフレームメモリ1007a〜1007dを備えている。図12の例では、カメラ1003a〜1003dが撮影する画像の大きさは、いずれも水平方向320画素、垂直方向240画素である。以下では、この大きさを「320×240画素」と表記する。また、画面の大きさや、画面を分割した領域の大きさについても同様に表記する。
図11においてカメラ1003a〜1003dに取り付けられている送信コントローラ1005a〜1005dは、それぞれ図12の伝送部1008a〜1008dの機能を有する。伝送部1008a〜1008dはそれぞれ、フレームメモリ1007a〜1007dに記憶されているフレーム画像のデータからパケットを生成し、車載LAN1002を介して、例えばモニタ1004aに取り付けられた合成部1009へパケットを送信する。
図12の合成部1009は、例えば図11のモニタ1004aに取り付けられた受信コントローラ1006aに含まれる。合成部1009は、車載LAN1002を介して伝送部1008a〜1008dから送られてきたそれぞれのパケットから、4台のカメラ1003a〜1003dがそれぞれ撮影した4枚のフレーム画像のデータを復元し、それぞれのデータをフレームメモリ1010a〜1010dに記憶する。なお、フレームメモリ1010a〜1010dは、理解しやすくするために4つのブロックに分けて図示してあるが、物理的には、4つのメモリモジュールであってもよく、4枚のフレーム画像のデータを記憶することが可能な容量を持った1つのメモリモジュールであってもよい。
図12においてモニタ1004aの画面1011は、640×480画素の大きさであり、水平方向と垂直方向にそれぞれ2等分してできる領域1012a〜1012dはいずれも320×240画素の大きさである。合成部1009は、フレームメモリ1010a〜1010dにそれぞれデータが記憶されたフレーム画像を、それぞれ領域1012a〜1012dに表示する。すなわち、合成部1009は4つのフレーム画像を合成した画像を画面1011に表示する。
図12のシステムは、動画を構成する各フレーム画像について以上の動作を繰り返すことで、画面1011の4つの領域1012a〜1012dにそれぞれ、カメラ1003a〜1003dが撮影した動画を表示する。
図13は、図12の車載LAN1002がIDB−1394プロトコルによるネットワークである場合に、図12に示した構成において行われるパケットの送信方法を示す図である。
IDB−1394プロトコルは、元になったIEEE1394プロトコルと同様に、アイソクロナス転送とアシンクロナス転送という2種類のデータ転送方式をサポートしている。また、各転送方式によるパケットは、それぞれアイソクロナスパケット、アシンクロナスパケットと呼ばれる。
アイソクロナス転送は、データの転送レートを保証する転送方式であり、動画や音声などのリアルタイム性が要求されるデータの転送に好適である。一方、アシンクロナス転送は、アイソクロナス転送が行われておらず、バスが空いている時間に非同期にデータを転送する方式であり、データの転送先が転送元にアクノリッジ(応答)を返信することが定められている。
IDB−1394規格によるシリアルバス(以下、1394バスという)に接続された機器はノードと呼ばれ、例えば、図12では、伝送部1008a〜1008dと合成部1009がいずれもノードに該当する。バスの初期化の際には、アイソクロナス転送を行う各ノードに帯域が割り当てられるとともに、サイクルマスタと呼ばれるノードが1つ選ばれる。
IDB−1394プロトコルにおけるアイソクロナス転送では、125μsという所定の周期(サイクル)で、サイクルマスタがサイクルスタートパケットを送信する。図12に示した125μsごとの矩形は、サイクルスタートパケットを表す。アイソクロナス転送を行いたいノードは、サイクルスタートパケットの受信後、アイソクロナスギャップと呼ばれる所定の時間待ってから、バスの使用権を得るためのアービトレーションを開始し、使用権が得られればアイソクロナスパケットを送信する。アイソクロナスギャップは、バスが使用されておらずアイドル状態であることを確認するために待つべき時間である。
なお、125μsの1サイクル内で複数回のアイソクロナスパケットの転送が可能である。すなわち、あるアイソクロナスパケットの送信終了後、バスのアイドル状態がアイソクロナスギャップだけ続くことを確認してからアービトレーションを開始し、そこでバスの使用権を得たノードが、当該サイクル内で次にアイソクロナスパケットを転送することができる。これを繰り返すことにより、125μsのサイクル内で複数のアイソクロナスパケットの送信が可能である。
図13の例では、4台のカメラ1003a〜1003dにそれぞれ取り付けられた4つの伝送部1008a〜1008dが、それぞれ1サイクルに1回、アイソクロナス転送のためのバスの使用権を取得し、それぞれフレーム画像から生成したパケットをアイソクロナス転送する。図13において125μsごとに並んだ4つの矩形とその下の符号a〜dは、各サイクルで伝送部1008a〜1008dからそれぞれ送信されるパケットを表す。
なお、アシンクロナス転送を行いたいノードは、アイソクロナスギャップよりも長い時間であるサブアクションギャップという時間、バスがアイドル状態であることを確認してから、バスの使用権を得るためのアービトレーションを開始し、使用権が得られればアシンクロナスパケットを送信する。これにより、125μsの1サイクルの中で、アイソクロナス転送とアシンクロナス転送が混在することも可能となる。一方で、サブアクションギャップはアイソクロナスギャップよりも長いため、アシンクロナス転送よりもアイソクロナス転送の方が優先される。したがって、アイソクロナス転送では、125μsごとに優先的にパケットを送信することができるため、データの転送レートが保証される。このように、1394バスは125μsの周期が繰り返されるため、同期式の伝送路であると言える。
データの転送レートが保証されるという前提が成立することを利用して、図13では、伝送部1008a〜1008dのそれぞれが式(1)のようにして、1サイクルに送信するパケットの大きさsを決定する。
s=h×v×f×p÷(1÷c) (1)
s:1サイクルに送信するパケットの大きさ(単位はバイト)
h:カメラが撮影した画像の水平方向の画素数
v:カメラが撮影した画像の垂直方向の画素数
f:動画のフレームレート(単位はfps)
p:1画素あたりのバイト数
c:1サイクルの長さ(単位は秒)
なお、ここでパケットの大きさsは、より正確には、パケットのペイロード部に含まれる動画データの大きさである。また、特にデータとフレーム画像との対応を明示する必要がない場合に、「フレーム画像のデータ」のかわりに「動画データ」と表現する場合がある。
ここでは簡単のため、カメラ1003a〜1003dがいずれも320×240画素の大きさの動画を30fpsで撮影していると仮定する。また、これらの動画ではYUV表色系が採用されており、輝度信号(Y)と色差信号(UおよびV)がそれぞれ1バイトで表されると仮定する。この場合、Yは各画素に割り当てられ、UとVは隣接する2画素に対して1つの値が割り当てられるので、1画素あたりのバイト数pは式(2)より2である。
p=1+1/2+1/2=2 (2)
また、動画のデータは圧縮されていないと仮定して、式(1)に数値を代入すると、式(3)のとおり、576バイトという値が得られる。
320×240×30×2÷(1÷(125×10−6))=576 (3)
したがって、図13の例では、各サイクルで伝送部1008a〜1008dの各々が576バイトの動画データを含むアイソクロナスパケットを送信すればよい。
より正確には、サイクルごとのパケットに含まれる動画データの平均が576バイト以上であればよく、実際には切りのよい数値に調整してもよい。例えば、フレームレートが30fpsのとき、1つのフレームの時間は約33msだが、これを125μsで割ろうとすると、266.6……となって割り切れない。そこで、例えば各サイクルで576バイトより多い動画データを送信するようにして、266以下の整数のサイクルで1つのフレーム画像のデータを送信し終えるように調整してもよい。
なお、IDB−1394規格で規定されているデータ転送レートには、S100(98.304Mbps)、S200(196.608Mbps)、S400(393.216Mbps)という種類がある。これらの転送レートは、各サイクルにおいて各ノードから送信されるパケットの大きさの和の上限を規定する。各サイクルで伝送部1008a〜1008dのそれぞれが576バイトずつの動画データを含むアイソクロナスパケットを送信しても、S200で十分転送可能である。
このように十分な帯域があるため、非圧縮の動画データを4台のカメラ1003a〜1003dから伝送部1008a〜1008dを介して同時並行的に送信することも可能であるが、動画データは圧縮されていてもよい。
しかし、図13の方法を採用する場合、上記のように、今後、より多くのカメラが配置されるようになると、それに応じて図12のシステムにおいて合成部1009に必要なフレームメモリの容量が増し、コストも増大するという問題がある。しかし、車載用の装置あるいはその部品に、高価な大容量のフレームメモリを設けることは現実的ではなく、図12の構成ですら高コストである。そこで、1つの画面を複数の領域に分割して、各領域に異なる画像を表示する場合に必要なフレームメモリの容量をできるだけ削減することが求められている。
例えば、図12のように画面1011を4分割する例において、必要なフレームメモリの容量を削減する方法の一例が、図14に示した方法である。
モニタが表示されるときのラスタ走査順は、一般的に、水平方向のラインを左から右へ走査することを上から下に向かって繰り返すという順番である。つまり、図12の画面1011に表示すべきある1つのフレーム(以下、注目フレームという)に注目すると、まず画面1011の左上にある領域1012aと右上にある領域1012bが同時並行的にラスタ走査により表示され、領域1012aと1012bのラスタ走査の終了後、画面1011の左下にある領域1012cと右下にある領域1012dが同時並行的にラスタ走査により表示され、以上によって注目フレームの合成されたフレーム画像が画面1011全体に表示される。
このラスタ走査順に注目し、カメラ1003a〜1003dがフレーム画像のデータを伝送するタイミングをうまく制御すると、320×240画素の大きさのフレーム画像のデータを記憶することが可能な容量のFIFO(First In First Out)メモリを2組、フレームメモリとして利用することにより、図12と同様の画面1011の4分割表示が可能となる。以下、この2組のFIFOメモリが図12のフレームメモリ1010aと1010bであるとして説明する。
図14に示すように、第1の期間では、カメラ1003aと1003bに対応する伝送部1008aと1008bだけが、動画データから生成したパケットを合成部1009に伝送(送信)する。合成部1009は、伝送部1008aと1008bのそれぞれからパケットを受信し、各パケットからカメラ1003aと1003bが撮影した動画のデータをそれぞれ復元して、フレームメモリ1010aと1010bにそれぞれ記憶する。
続いて、第2の期間で、合成部1009がフレームメモリ1010aと1010bのデータに基づいて画面1011の上半分を表示(再生)する。これにより、カメラ1003aと1003bが撮影した画像が表示される。この表示と並行して、カメラ1003cと1003dに対応する伝送部1008cと1008dが、合成部1009にパケットを伝送する。
すなわち、第2の期間において合成部1009は、画面1011の上半分の表示と並行して、伝送部1008cと1008dのそれぞれからパケットを受信し、各パケットから、カメラ1003cと1003dが撮影した動画のデータをそれぞれ復元して、フレームメモリ1010aと1010bにそれぞれ記憶する。
次の第3の期間では、合成部1009がフレームメモリ1010aと1010bのデータに基づいて画面1011の下半分を表示する。これにより、カメラ1003cと1003dが撮影した画像が表示される。図14では省略されているが、この表示動作と並行して、注目フレームの次のフレームについて、伝送部1008aと1008bから動画データを含むパケットが伝送され、それぞれフレームメモリ1010aと1010bに記憶される。
このように、注目フレームは第2の期間と第3の期間にわたってラスタ走査され、再生される。以上を繰り返すことにより、動画を構成する個々のフレーム画像が再生され、4台のカメラ1003a〜1003dが撮影した4組の動画が、分割された画面1011上で再生される。つまり、図14の方法によれば、フレームメモリ1010aと1010bという2組のフレームメモリのみで4分割表示を実現することが可能であり、図12のフレームメモリ1010cと1010dは削減可能である。しかし、この方法では、垂直方向に複数の領域が並んでいないとフレームメモリを削減することができず、また、水平方向に多くの領域が並ぶような分割では、必要なフレームメモリの容量は大きいままである。
なお、フレームメモリの削減に関しては、以下のような技術も知られている。
特許文献1は、圧縮されている画像データを復号処理して表示するビデオ表示システムにおいて、フレームメモリを削減し、かわりに容量の小さなラインバッファを使うことでシステムの規模を小さくする技術を記載している。具体的には、画面全体の走査時間ではなく、圧縮されている画像データの復号処理に必要な時間に走査するラインに相当するデータ分の記憶容量を有し復号処理後のデータを順次記憶するラインバッファを設け、このラインバッファに記憶されたデータを順次読み出して1ラインずつ走査する構成が採用されている。しかし、複数の装置からそれぞれ画像データを受信して、1つの画面に複数の画像を合成して表示する場合について特許文献1にはまったく記載がない。
特許文献2は、1つの画面に複数の画像を表示する場合のフレームメモリの容量を抑える技術を記載している。特許文献2に記載の分割マルチ画面表示装置は、例えば複数の監視カメラから出力される複数の非同期なカラー映像信号を、複数の領域に分割された1つの画面に表示する装置である。
この分割マルチ画面表示装置は、複数の入力映像信号に対応してそれぞれ設けられた入力映像信号処理回路ごとに、入力映像信号を、A/D変換回路のドットクロックを1/Nに分周した周波数で、かつNラインに1回に間引いて、当該入力映像信号処理回路に設けられた2組以上のラインメモリに書き込む。そして、複数の入力映像信号処理回路に共通の同期発生回路に基づく、ドットクロックの2倍以上の周波数で、複数の入力映像信号処理回路それぞれのラインメモリからデータを読み出し、1つの共通のフレームメモリに書き込む。
特許文献2に記載の技術によれば、カメラの台数によらず、1画面分の共通のフレームメモリがあれば、分割表示が実現可能である。しかし、分割表示を行いたい場合に、特許文献2で前提とされている条件が成立するとは限らない。特許文献2では、例えば4分割表示の場合に各画像の水平方向と垂直方向をそれぞれ1/2に縮小して表示することを前提としているため、分周やラインの間引きをしている。しかし、カメラの画素数とモニタの画素数の関係によっては、分割表示が縮小表示を意味するとは限らない。また、特許文献2は、映像入力信号がアナログ信号であることを前提としているが、デジタルカメラなどから出力されたデジタル信号を入力としたい場合も多い。
特開2002−182628号公報
特開2000−23033号公報
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、同様の構成要素には同じ符号または添え字のみ異なる符号を付し、適宜説明を省略する。
まず、図1と図2を参照して第1実施形態を説明する。第1実施形態は、後述の第2実施形態および第3実施形態の共通点を含む。図1は、第1実施形態による送信装置および受信装置の機能ブロック図であり、図2は、第1実施形態において動画を分割表示する全体の流れを示すフローチャートである。
送信装置は3つ以上でもかまわないが、図1には、2つの送信装置101aと101bのみを示した。図1に示すように、1つの受信装置に複数の送信装置が対応する。送信装置101aは、データパケット生成部102a、判断部103a、および送信部104aを備え、送信装置101bも同様の構成である。受信装置105は、通知部106、受信部107、復元部108、記憶部109、および表示部110を備える。送信装置101aと101bはいずれも、ネットワークを介して受信装置105と接続されている。送信装置101aと101bは、図11の送信コントローラ1005a〜1005fと同様に車載用のカメラに取り付けられ、受信装置105は図11の受信コントローラ1006a〜1006cと同様に車載用のモニタに取り付けられる。なお、以下では説明の便宜上、受信装置105が運転席のモニタに取り付けられているという前提で説明する。
次に、図2を参照して図1の各部の動作を説明する。まず、ステップS11で、受信装置105の通知部106が、画面の分割の仕方と、分割された各領域と各送信装置との対応関係を、複数の送信装置101aと101bにそれぞれに通知する。例えば、上記「画面の分割の仕方」は「640×240画素の画面を水平方向に2等分して、320×240画素の2つの領域に分割する」といったものであり、上記「対応関係」は「左側の領域は送信装置101aに対応し、右側の領域は送信装置101bに対応する」といったものである。
例えば、受信装置105がボタン等の入力装置を備えており、入力装置を介して、画面の分割の仕方と対応関係に関する運転者からの指示を受け付けてもよい。あるいは、運転者からの指示を受け付けるための入力装置がモニタに備えられ、受け付けられた指示がモニタから受信装置105に送られてもよい。または、カメラの台数が固定されているシステムなどでは、画面の分割の仕方と対応関係がデフォルトで決められており、通知部106に記憶されていてもよい。いずれにしろ、画面の分割の仕方と対応関係は、予め何らかの方法で決められ、ステップS11で通知部106によりネットワークを介して送信装置101aと101bに通知される。
すると、ステップS21で送信装置101aと101bがそれぞれこの通知を受け取る。この通知から、送信装置101aの判断部103aは、送信装置101aに対応する領域が画面内のどの位置であるかということを認識する。同様に、送信装置101bの判断部103bは、送信装置101bに対応する領域が画面内のどの位置であるかということを認識する。
以下では、ステップS21で認識した自送信装置に対応する領域を、当該送信装置にとっての「特定領域」という。送信装置は、1台のカメラに対して1台が対応するので、特定領域は、換言すれば、自送信装置が取り付けられたカメラが撮影した画像を表示すべき領域のことである。つまり、領域と送信装置との対応関係は、領域とカメラとの対応を示すものでもある。また、異なる送信装置にとっての特定領域は互いに異なる。ステップS11で述べた例の場合、ステップS21で判断部103aは「左側の領域が特定領域である」と認識し、判断部103bは「右側の領域が特定領域である」と認識する。
ステップS21で判断部103aが送信装置101aに対応する特定領域を認識すると、それ以降、送信装置101aではステップS22とS23からなるループが繰り返し実行される。送信装置101aのこの動作と並行して、同様に、ステップS21で判断部103bが送信装置101bに対応する特定領域を認識すると、それ以降、送信装置101bではステップS22とS23からなるループが繰り返される。
ステップS22では、まず、送信装置101aが取り付けられたカメラが撮影したフレーム画像のデータから、データパケット生成部102aが複数のパケットを生成する。以下では、フレーム画像のデータから生成されるパケットを「データパケット」という。データパケットの生成は、フレーム画像を構成する水平ラインのn本分を単位として行われる。
ここで、「水平ライン」とは、カメラが撮影した画像、または画面内の1つの領域において、当該画像または当該領域の全幅に渡って画素が水平方向に連なったラインである。水平ラインの垂直方向の大きさは1画素である。また、nはフレーム画像の垂直方向の大きさと比べて十分に小さな値であり、例えばフレーム画像が320×240画素のとき、n=8などの値が採用される。
データパケットはステップS22で送信部104aにより送信されるが、送信は、その1フレームに対応する期間のうちで特定領域に応じた一部の期間でのみ行われる。以下では、データパケットを送信すべき期間のことを「送信期間」といい、それ以外の期間を「非送信期間」という。送信期間であるか否かは判断部103aが判断する。また、データパケットの生成がn本の水平ラインを単位として繰り返し行われるのに合わせ、データパケットの送信もn本の水平ラインを単位として繰り返し行われる。送信装置101bもステップS22では送信装置101aと同様に動作する。
送信期間は、ステップS21で認識した画面の分割の仕方と対応関係から定められる。例えば、送信装置101aにとっての送信期間は、送信装置101aにとっての特定領域を構成するあるn本の水平ラインを含むn本の全幅水平ラインの走査のタイミングに対応する期間のうち、特定領域の画面内での水平方向における位置に対応する期間である。ここで、「全幅水平ライン」とは、複数の領域に分割される画面において、当該画面の全幅に渡って画素が水平方向に連なったラインである。全幅水平ラインの垂直方向の大きさは1画素である。
ステップS11で述べた例の場合、640×240画素の画面が水平方向に2等分されているので、画面の全幅である640画素に渡るn本の全幅水平ラインの走査のタイミングに対応する期間は、左側の領域に対応する期間と右側の領域に対応する期間に分けられる。前者は送信装置101aにとっての送信期間であって送信装置101bにとっての非送信期間であり、後者は、送信装置101bにとっての送信期間であって送信装置101aにとっての非送信期間である。
以上のようにしてステップS22では、n本の水平ラインを単位として、データパケットの生成および送信が繰り返され、繰り返しのたびに、送信期間と非送信期間からなるパターンが現れる。なお、ステップS22に相当するより詳細なフローチャートは、第2および第3実施形態と合わせて後に示す。
ステップS22に続くステップS23では、動画の撮影およびデータパケットの送信を終了するよう受信装置105から通知されたか否かを判断部103aが判定する。通知があれば図1の処理を終了し、なければステップS22に戻る。また、送信装置101bもステップS23において同様に動作する。
ステップS22とS23からなるループの繰り返しによって、個々のフレーム画像のデータが、データパケットの形で受信装置105に順次送信される。この送信に対応して、受信装置105は、複数の送信装置から送られるデータパケットに基づいて、ステップS11で通知した画面の分割の仕方で、モニタに複数の動画を分割表示するよう命令する。
すなわち、ステップS12では、受信部107が送信装置101aと101bからのデータパケットを受信し、それぞれのデータパケットから復元部108がフレーム画像のデータを復元して記憶部109に記憶し、表示部110が記憶部109に記憶されたデータに基づいて、分割表示されたフレーム画像をモニタに表示するよう命令する。ステップS22の動作がn本の水平ラインを単位として繰り返されるのに対応して、ステップS12の動作はn本の全幅水平ラインを単位として繰り返される。なお、ステップS12に相当するより詳細なフローチャートは、第2および第3実施形態と合わせて後に示す。
また、受信側から見ると、データパケットは、ステップS11で通知した対応関係により示される、各送信装置にとっての特定領域の画面内での位置と、画面の走査順とに基づくタイミングで送信されたものだが、対応関係も走査順も受信装置105にとっては既知である。つまり、受信装置105にとって、データパケットは、既知の情報から決定されるタイミングで送信されてくるものである。
ステップS12において、送信装置101aにとっての送信期間と送信装置101bにとっての送信期間は互いに異なるので、送信装置101aからのデータパケットの受信と送信装置101bからのデータパケットの受信は、異なる期間に行われる。それに合わせて、送信装置101aと101bに対応するフレーム画像の復元が行われる期間もずれる。
ステップS11で示した2分割の例を用いて説明すると、ステップS22で説明したとおり、n本の全幅水平ラインの走査のタイミングに対応する期間のうち、左側の領域に対応する期間には、当該n本の全幅水平ラインのうち左側の領域に含まれる部分、すなわち左側の領域のn本の水平ラインに相当するデータパケットが送信装置101aの送信部104aから送信される。一方、n本の全幅水平ラインの走査のタイミングに対応する期間のうち、右側の領域に対応する期間には、当該n本の全幅水平ラインのうち右側の領域に含まれる部分、すなわち右側の領域のn本の水平ラインに相当するデータパケットが送信装置101bの送信部104bから送信される。
つまり、n本の全幅水平ラインの走査のタイミングに対応する期間で、当該n本の全幅水平ラインに相当するすべてのデータが送信され、受信され、復元され、記憶され、表示のために使われ、当該n本の全幅水平ラインに関する処理が完結する。したがって、受信装置105の記憶部109は、n本の全幅水平ラインの走査のタイミングに対応する期間を超えてデータを記憶し続ける必要がないため、高々n本の全幅水平ライン分のデータを記憶する容量があれば十分である。上記のとおり、nは画面の垂直方向に比べて十分に小さな値が選ばれるので、例えば図12や図14で説明した従来の方法と比べて、本実施形態では必要な記憶容量が十分に少ない。記憶部109に必要な記憶容量が小さいため、受信装置105は比較的安価に製造することが可能であり、装置規模も小さくて済む。
ステップS12で、n本の全幅水平ラインを単位とした繰り返しにより、モニタに1フレーム分の分割表示を命令すると、続くステップS13で受信装置105は、動画の分割表示を終了する旨の指示を受け取ったか否かを判断する。例えば、ステップS11で説明した入力装置が、運転者から終了の指示を受け取るのにも用いられ、入力装置を介して終了の指示が入力されていればステップS13からステップS14に進み、そうでなければステップS12に戻る。
こうしてステップS12とS13からなるループを繰り返すことにより、複数のカメラが撮影したそれぞれの動画を1つのモニタの1つの画面上に分割表示することができる。また、ステップS13からステップS14に進んだ場合は、受信装置105は、送信装置101aと101bにそれぞれ、動画の撮影およびデータパケットの送信を終了するよう通知し、図2の処理を終了する。この通知を受けた場合の送信装置101aと101bの動作は、ステップS23に関して説明したとおりである。
なお、図1の各構成要素のうち、記憶部109は専用のラインメモリあるいは汎用のRAM(Random Access Memory;ランダムアクセスメモリ)などのハードウェアにより実現されるが、それ以外の構成要素は、ハードウェア、ファームウェア、ソフトウェア、あるいはそれらの任意の組み合わせにより実現してもよい。また、各構成要素をそれぞれ別個のハードウェアにより実現してもよく、複数の構成要素を、それらに共通のハードウェアと、それらの構成要素の機能を実現するソフトウェアとによって実現してもよい。
例えば、ROM(Read Only Memory;読み出し専用メモリ)などの不揮発性メモリと、RAMなどの揮発性メモリと、CPU(Central Processing Unit;中央処理装置)と、通信インタフェイスとを備え、これらが内部バスで互いに接続されたコンピュータを使うことで、ソフトウェアを使って送信装置101a、101b、および受信装置105の機能をそれぞれ実現することができる。すなわち、不揮発性メモリが各構成要素の機能を実現するプログラムを格納し、CPUがそのプログラムを読み出して揮発性メモリをワーク用に用いながら該プログラムを実行することにより、各構成要素の機能が実現される。また、上記RAMの一部を記憶部109として利用してもよく、プログラムがネットワークあるいはコンピュータ読み取り可能な記憶媒体を介して提供され、RAMに読み込まれて実行されるのでもよい。
次に、図3〜6を参照して、本発明の第2実施形態について、説明する。第2実施形態は、2台のカメラ1003aと1003bで撮影した同じ大きさの2つの動画を水平方向に並べて表示する例である。なお、後述の第3実施形態でも図3を参照するため、図3には第2実施形態とは直接関係しない構成要素も含まれるが、それらの構成要素についてもまとめて説明する。
図3は、第2および第3実施形態に共通のシステム構成図である。このシステムは、320×240画素の大きさの動画を撮影する、図12と同様の4台のカメラ1003a〜1003dを含む。カメラ1003a〜1003dはそれぞれ、図12と同様にフレームメモリ1007a〜1007dを備えている。また、図3においては、共通の垂直同期信号(VSYNC)がカメラ1003a〜1003dに与えられ、カメラ1003a〜1003dが同期されている。
カメラ1003a〜1003dにはそれぞれ送信装置101a〜101dが取り付けられている。送信装置101aは圧縮部201aとパケット生成部202bを備える。パケット生成部202bは、図1の送信装置101a中のデータパケット生成部102a、判断部103a、および送信部104aの機能を備える。図3の他の送信装置101b〜101dも、図3の送信装置101aと同様の構成である。これらのうち、カメラ1003cと1003d、および送信装置101cと101dは、第2実施形態では使われない。
図3において、フレームメモリ1007a〜1007dに記憶されたフレーム画像のデータは、それぞれ圧縮部201a〜201dによって読み込まれ、圧縮される。圧縮部201a〜201dは、n本の水平ラインを単位として、この単位ごとに圧縮後のデータが固定長となるように圧縮する。このような圧縮の方法には、例えば本願の発明者が特願2006−96035号で提案した方法がある。特願2006−96035号に記載の方法は、可変長符号化されたデータを圧縮して、圧縮した結果が、n本の水平ラインを単位としたときに固定長となるようにするものである。
以下では説明の便宜上、圧縮前のフレーム画像のデータが、1画素あたりpバイトという固定長に符号化されており、これが固定の圧縮率r(0<r≦1)で圧縮されるものとして計算例を示す。例えば、式(2)と同様に1画素あたりp=2バイトで表される動画データにおいて、フレーム画像のうちn=8本の水平ラインを圧縮の単位とする場合、フレーム画像の横幅がh=320画素であれば、式(4)より、5120バイトごとに固定の圧縮率rで圧縮部201a〜201dが動画データを圧縮するものとして、以下では説明する。
h×n×p=320×8×2=5120 (4)
上記のように、可変長符号化されたデータを圧縮して、圧縮した結果が、n本の水平ラインを単位としたときに固定長となるようにする圧縮方法を圧縮部201a〜201dが採用する場合であっても、データ量の計算においては、この5120バイトを単位として固定の圧縮率rで圧縮していると見なして計算することが可能である。
以下の実施形態では、n本の水平ラインを単位としたときに圧縮されたデータが固定長であるという性質を利用するが、具体的な圧縮方法は任意であり、また、圧縮前のフレーム画像のデータが固定長符号化されたものか可変長符号化されたものかは問わない。そこで、以下では説明の簡単化のため、n本の水平ラインに対応するデータが式(4)のような固定長であり、その固定長のデータが固定の圧縮率rで圧縮されることにより、固定長の圧縮データになるものとして説明し、計算例を示す。
圧縮部201a〜201dによって圧縮されたフレーム画像のデータは、各圧縮部201a〜201dから各パケット生成部202a〜202dに出力される。パケット生成部202a〜202dはいずれも、1394バス203に接続されている。
パケット生成部202aは、圧縮部201aから出力された圧縮データからデータパケットを生成し、送信装置101aにとっての特定領域の位置に基づいて送信装置101aにとっての送信期間か否かを判断し、送信期間ならば1394バス203を介してデータパケットを送信する。パケット生成部202aはさらに、後述のダミーパケットを生成し、非送信期間に1394バス203を介してダミーパケットを送信する。他のパケット生成部202b〜202dも同様である。データパケットとダミーパケットはいずれもアイソクロナスパケットの形式であり、1394バス203を介してアイソクロナス方式で送信される。
図3のシステムにおいて、図1の受信装置105に相当する受信装置105が1394バス203に接続されており、パケット復元部204、復号部205、および表示部206を含む。
パケット復元部204は、1394バス203に接続されており、パケット生成部202a〜202dから送られたデータパケットを受信し、データパケットからパケットヘッダを取り除くなどの処理を行い、圧縮データを復元する。図3のパケット復元部204は、図1の受信部107と、復元部108の一部に相当する。
パケット復元部204により復元された圧縮データは復号部205に出力される。復号部205は圧縮データを復号(すなわち解凍)し、復号部205に含まれる不図示のラインメモリに記憶する。図3の復号部205は、図1の復元部108の一部に相当するとともに、復号部205の内部の不図示のラインメモリが図1の記憶部109に相当する。
表示部206は、図1の表示部110に相当し、ラインメモリに記憶されたデータにもとづき、モニタの画面に動画の分割表示を行うよう命令する。具体的には、表示部206は、ラスタ走査順で画面を走査するよう命令する。その命令により、画面に、複数のカメラが撮影した動画それぞれのフレーム画像を合成したフレーム画像が表示される。第2実施形態では、画面1011aの2分割表示が行われ、第3実施形態では画面1011bの4分割表示が行われる。
なお、図1の通知部106に相当する部分は図3では図示を省略したが、図3の受信装置105にも含まれている。また、IDB−1394プロトコルについて図13を参照して説明したが、図3においては、送信装置101a〜101dと受信装置105がいずれも、IDB−1394プロトコル上のノードに該当し、これらのノードのうちの1つがサイクルマスタとしてバスの初期化の際に選ばれる。
次に、第2実施形態での前提条件を説明する。図3のカメラのうち、カメラ1003aと1003bで撮影した動画のみが第2実施形態での表示の対象である。例えば運転者による指示を、入力装置を介して受け付けることによって、受信装置105は予め表示の対象を認識している。表示の対象となるこの2つの動画の大きさはいずれも320×240画素であり、モニタの画面1011aの大きさは640×240画素である。第2実施形態での目的は、画面1011aを水平方向に2等分し、左側の領域1012aにはカメラ1003aが撮影した動画を表示し、右側の領域1012bにはカメラ1003bが撮影した動画を表示することである。また、カメラ1003aとカメラ1003bが撮影した動画は、n=8本の水平ラインを単位として、図3の圧縮部201aと201bによってそれぞれ圧縮され、パケット生成部202aと202bにそれぞれ出力される。
次に、図4を参照して第2実施形態におけるパケットの送信方法について説明する。
図4の上段の2つの矩形は、320×240画素の大きさのフレーム画像のデータが、カメラ1003aと1003bからそれぞれ送信装置101aと101bを介して受信装置105へと送信されることと、そのデータが8ラインを単位として処理されることを示す。
図4の(a)〜(c)は、いずれも横軸が時間軸であり、小さな矩形がパケットを示している。パケットの種類は、(a)ではサイクルスタートパケット、(b)と(c)ではアイソクロナスパケットである。また、(b)と(c)においては、矩形の横幅がそのパケットの送信にかかる時間を示し、矩形の縦幅がそのパケットの大きさを示している。つまり、(c)では(b)の2倍の帯域幅を各ノードに割り当てることによって、同じ量のデータを1/2の時間で集中的に送信している。図4の(a)〜(c)を詳細に説明すれば以下のとおりである。
図4の(a)は、125μsごとにサイクルマスタからサイクルスタートパケットが送信される様子を示し、図13と同様である。
図4の(b)は、図3のように画面1011aを領域1012aと1012bに分割してカメラ1003aと1003bで撮影した動画をそれぞれ表示するために、図13と同様の従来の方法を採用した場合のパケットの送信の仕方を示す図である。動画のデータが非圧縮なら式(3)のように、576バイトの動画データを含むアイソクロナスパケットが各サイクルで送信される。動画のデータが圧縮されていれば、パケットの大きさは圧縮率rに応じて576バイトよりも小さくなる。なお、パケットを表す矩形の下の符号aとbは、それぞれカメラ1003aと1003bの動画データを含むパケットであることを表す。
図4の(c)は、第2実施形態におけるパケットの送信方法を示す。第2実施形態では、ダミーデータから生成された、データパケットと同じ大きさのパケットであるダミーパケットも使用される。ダミーデータは無効なデータであって、例えばビット値“0”のみからなるデータであり、ダミーパケットはダミーデータの前後にアイソクロナスパケットヘッダとCRC(Cyclic Redundancy Check;巡回冗長検査)をそれぞれ付加してアイソクロナスパケットの形式に整えたものである。なお、パケットを表す矩形の下の符号aとbは、それぞれ送信装置101aと101bから送信されたパケットであることを表す。
ダミーパケットを送信する理由は次のとおりである。第2実施形態で利用するIDB−1394プロトコルのアイソクロナス転送では、各ノードが、割り当てられた帯域幅に応じた大きさのアイソクロナスパケットを各サイクルで定期的に送信することによって、一定の転送レートでのデータの転送を実現している。つまり、アイソクロナス転送を行うノードは、均等な大きさのパケットを定期的に送信する。
このアイソクロナス転送の方法を変更せずにそのまま利用するために、本実施形態では、パケット生成部202aと202bが、非送信期間に相当するサイクルにおいても、割り当てられた帯域幅に応じた大きさのアイソクロナスパケットであるダミーパケットを送信している。また、IDB−1394プロトコルは非常に高速なデータ転送をサポートしており、比較的帯域に余裕があることから、ダミーパケットを採用しても特に害は生じない。
図4の(b)では、いずれのサイクルにおいても、カメラ1003aが撮影した動画に対応するデータパケットと、カメラ1003bが撮影した動画に対応するデータパケットとが送信されていることが特徴的である。一方、図4の(c)では、期間によって、送信されるパケットの種類が異なる。また、図4の(b)と(c)を比較すると、パケットの大きさが異なる。
すなわち、送信装置101aにとっての送信期間である一連の数サイクルの間は、送信装置101aのパケット生成部202aがデータパケットを送信する一方で、送信装置101bのパケット生成部202bはダミーパケットを送信する。逆に、送信装置101bにとっての送信期間である一連の数サイクルの間は、送信装置101aのパケット生成部202aがダミーパケットを送信する一方で、送信装置101bのパケット生成部202bはデータパケットを送信する。そして、送信装置101aにとっての送信期間と送信装置101bにとっての送信期間とが交互に繰り返される。
また、図4の(b)と(c)で圧縮率rが同じだという前提で比較すると、図4の(c)では、図4の(b)の2倍の大きさのパケットが送信される。したがって、カメラ1003aが撮影した動画のデータだけに注目すると、図4の(b)と比べて1/2の長さの時間に集中的に送信される。同様に、カメラ1003bが撮影した動画のデータだけに注目すると、図4の(b)と比べて1/2の長さの時間に集中的に送信される。なお、後述の切り捨てなどの影響があるため、正確には2倍(あるいは1/2)とならないこともある。また、パケットの大きさの比較は、ヘッダやCRCを無視した、ペイロード部のデータの量で比較している。
次に、図5を参照して、第2実施形態におけるデータの転送順についてより詳細に説明する。図5は、受信側で表示される640×240画素の画面1011aに含まれる各部分のデータがどの順番で送信されて合成されるのかを説明する図である。
第2実施形態では、n=8本の水平ラインをまとめた320×8画素の単位で、各フレーム画像が圧縮され、送信される。この圧縮および送信の単位は、受信および復元の単位ともなる。また、以下では水平ラインを上から順に0ライン目、1ライン目、……と数えることにする。
ある特定のフレームに注目すると、図5に示すように、まずカメラ1003aが撮影したフレーム画像のうち0〜7ライン目のデータを圧縮部201aが圧縮し、パケット生成部202aが圧縮データからデータパケットを生成して送信する。この期間は、送信装置101aにとっての送信期間であり、送信装置101bにとっての非送信期間なので、パケット生成部202bはダミーパケットを送信する。
次に、送信装置101bにとっての送信期間となり、カメラ1003bが撮影したフレーム画像のうち0〜7ライン目のデータを圧縮部201bが圧縮し、パケット生成部202bが圧縮データからデータパケットを生成して送信する。この期間は、送信装置101aにとっての非送信期間なので、パケット生成部202aはダミーパケットを送信する。
この2つの期間を合わせた期間が、0〜7ライン目の全幅水平ラインの走査のタイミングに対応する期間である。この2つの期間で受信装置105により受信され、復元、復号、および記憶されたデータにもとづき、画面1011aの0〜7ライン目の全幅水平ラインが表示される。
続いて、再度送信装置101aにとっての送信期間となり、カメラ1003aが撮影したフレーム画像のうち8〜15ライン目のデータを圧縮部201aが圧縮し、パケット生成部202aが圧縮データからデータパケットを生成して送信する。この期間は、送信装置101bにとっての非送信期間なので、パケット生成部202bはダミーパケットを送信する。
そして、再度送信装置101bにとっての送信期間となり、カメラ1003bが撮影したフレーム画像のうち8〜15ライン目のデータを圧縮部201bが圧縮し、パケット生成部202bが圧縮データからデータパケットを生成して送信する。この期間は、送信装置101aにとっての非送信期間なので、パケット生成部202aはダミーパケットを送信する。
この2つの期間を合わせた期間が、8〜15ライン目の全幅水平ラインの走査のタイミングに対応する期間である。この2つの期間で受信装置105に受信され、復元、復号、および記憶されたデータにもとづき、画面1011aの8〜15ライン目の全幅水平ラインが表示される。
以下同様にして、送信装置101aと101bそれぞれにとっての送信期間が交互に繰り返されて、239ライン目までの全てのデータが送信され、1つのフレームにおいて2台のカメラが撮影した2つのフレーム画像の送信が完了する。また、受信装置105の側では、カメラ1003aと1003bが撮影したフレーム画像を合成した画面1011aの表示が完成する。
次に、図6のフローチャートを参照して、第2実施形態におけるフレーム画像の送信から表示までの流れを説明する。図6の左側に示したステップS101〜S103のフローチャートは、図2のステップS22に対応し、図6の右側に示したステップS201〜S204のフローチャートは、図2のステップS12に対応する。
つまり、図6のフローチャートの処理が実行される前に、第2実施形態においては、図2のステップS11で、「640×240画素の画面1011aをそれぞれ320×240画素の領域1012aと1012bに分割する」という画面の分割の仕方と、「領域1012aには送信装置101aが対応し、領域1012bには送信装置101bが対応する」という対応関係が通知され、通知された内容がステップS21で送信装置101aと101bに認識されている。ステップS11の通知は、例えばアシンクロナスパケットの送信により行われてもよい。
図6の左側に示したフローチャートは、送信装置101aおよび101bにより実行される。まず、ステップS101において、カメラ1003aが撮影した動画のフレーム画像のうち、(j×8)ライン目から((j+1)×8−1)ライン目までの8ライン分のデータを、圧縮部201aが圧縮する。そして、パケット生成部202aが、圧縮データからデータパケットを生成し、1394バス203を介して受信装置105へ送信する。ここでjは0以上の整数であり、初期値は0である。また、ステップS101でパケット生成部202bはダミーパケットを受信装置105へ送信する。ステップS101は、送信装置101aにとっての送信期間であり、送信装置101bにとっての非送信期間である。
なお、上記のとおり、圧縮部201aにより圧縮された8本の水平ライン分の圧縮データは固定長である。すなわち、ステップS101〜S103からなるループが繰り返されるたびに、毎回ステップS101では固定長の圧縮データから、固定長のデータパケットが生成される。8ライン分のデータは、複数に分割されて、複数のデータパケットが生成されてもよい。生成するデータパケットの数は、後述の計算例に示すように、画面の分割の仕方から決めることができる。
次に、ステップS102において、カメラ1003bが撮影した動画のフレーム画像のうち、(j×8)ライン目から((j+1)×8−1)ライン目までの8ライン分のデータを、圧縮部201bが圧縮する。そして、パケット生成部202bが、圧縮データからデータパケットを生成し、1394バス203を介して受信装置105へ送信する。また、ステップS102でパケット生成部202aはダミーパケットを受信装置105へ送信する。ステップS102は、送信装置101aにとっての非送信期間であり、送信装置101bにとっての送信期間である。
続いて、ステップS103において、縦幅分の全部の水平ラインが送信済みか否かを、パケット生成部202aと202bがそれぞれ判断する。第2実施形態では、カメラが撮影した動画の垂直方向の大きさが240画素なので、ステップS103では、239ライン目まで送信済みか否かが判断される。パケット生成部202aと202bによる判断は一致する。
ステップS103において送信済みと判断されれば、現在のフレームのフレーム画像は、カメラ1003aが撮影したものもカメラ1003bが撮影したものも送信済みであるから図6の処理を終了し、送信済みでないと判断されれば、送信装置101aと101bのそれぞれにおいて上記のjの値を1増やして、ステップS101に戻る。
一方、図6の右側のフローチャートは、受信装置105により実行される。まず、ステップS201で、カメラ1003aが撮影したフレーム画像のうち(j×8)ライン目から((j+1)×8−1)ライン目までの8ライン分のデータから生成されたデータパケットを、パケット復元部204が受信し、ヘッダ等を取り除いて圧縮データを復元する。右側のフローチャートでも、jは初期値を0とする整数である。そして、復号部205が圧縮データを復号してラインメモリに記憶する。ステップS201で受信されるデータパケットは、ステップS101でパケット生成部202aが送信したものである。
また、ステップS201でパケット復元部204は、ステップS101でパケット生成部202bが送信したダミーパケットも受信するが、ダミーパケットは後段の復号部205へは出力せずに廃棄する。データパケットかダミーパケットかの判別には、例えばアイソクロナスパケットヘッダに含まれるチャンネルIDを用いてもよい。
次にステップS202で、カメラ1003bが撮影したフレーム画像のうち(j×8)ライン目から((j+1)×8−1)ライン目までの8ライン分のデータから生成されたデータパケットを、パケット復元部204が受信し、ヘッダ等を取り除いて圧縮データを復元する。そして、復号部205が圧縮データを復号してラインメモリに記憶する。ステップS202で受信されるデータパケットは、ステップS102でパケット生成部202bが送信したものである。また、ステップS202でパケット復元部204は、ステップS102でパケット生成部202aが送信したダミーパケットも受信するが、ダミーパケットは廃棄する。
続いてステップS203で、ラインメモリに記憶されたデータに基づいて、表示部206が、モニタの画面1011aに画像を表示するための命令、つまり、ラスタ走査の命令を発行する。以下では、ラスタ走査順が、画面の左上隅から始まり、1つの全幅水平ラインを左から右へと走査し、全幅水平ラインの右端に達したら、1つ下の全幅水平ラインに移ることを繰り返して、画面の右下隅に至るという順序であるとする。
第2実施形態では、図5から分かるように、画面1011aの全幅水平ラインは水平方向において640画素に渡るラインであり、領域1012aと1012bそれぞれの水平ラインは、いずれも水平方向において320画素に渡るラインである。そして、画面1011aのkライン目の全幅水平ラインは、領域1012aのkライン目と領域1012bのkライン目とからなる。すなわち、ステップS203では、上記のラスタ走査順で、(j×8)ライン目から((j+1)×8−1)ライン目までの全幅水平ラインを描画するよう、表示部206がモニタに命令する。なお、ここで「描画」とはラスタ走査により表示することを表す。
そして、続くステップS204において、縦幅分、すなわち0〜239ライン目の全部の全幅水平ラインの描画を命令し終えたか否かを表示部206が判断し、終了していれば図6の処理を終了し、そうでなければ上記のjの値を1増やしてステップS201に戻る。
以上が図6の説明だが、送信装置101aと送信装置101bと受信装置105は個別に図6の動作を行っており、互いに同期するための処理などは行っていない。このように同期処理が不要なのは、IDB−1394プロトコルによるアイソクロナス転送を使用しているためである。このことについて具体的な数値の例を挙げて次に説明する。
式(5)は、n本の全幅水平ラインの走査のタイミングに対応する期間の長さを示すサイクル数xを計算する式の一例である。
x=floor(floor(1÷c÷f)÷(ve÷n)) (5)
floor(m):数mを切り捨てた整数
ve:画面全体の垂直方向の画素数
n:圧縮および送信の単位となる水平ラインのライン数(veの約数とする)
第2実施形態では、式(5)のサイクル数xが、図6の左側と右側のそれぞれのフローチャートにおける1回のループにかかるサイクル数である。式(5)に具体的な数値を当てはめて説明すると、次のとおりである。1秒あたりのサイクル数は(1÷c)回であるから、1つのフレームあたりのサイクル数は、(1÷c÷f)回である。c=125μsでf=30fpsのとき、
1÷c÷f=266.6……サイクル
となり割り切れない。したがって、これを切り捨てて、1フレームあたり266サイクルを使うことができる。
一方、フレーム画像のデータは、n=8ラインを単位として、
ve÷n=240÷8=30回
繰り返して処理される。つまり、図6の左側と右側のそれぞれのフローチャートにおいて
ループが30回繰り返される。
すなわち、1フレームにおいて使えるのは266サイクルであり、それを30回に分配することになるから、1回のループに割り当てられるのは、
266÷30=8.8……サイクル
である。これを切り捨てて、1回のループに8サイクルを割り当てる。つまり、x=8である。
ここで、x=8サイクルは、ステップS101とS102で使われるサイクル数の合計であり、第2実施形態では、カメラ1003aと1003bの撮影する動画の大きさはいずれも320×240画素で等しいから、8サイクルを2等分した4サイクルが、それぞれステップS101とステップS102に割り当てられる。これを式に表せば、式(6)のようになる。
y=floor(x÷dh) (6)
dh:水平方向の画面分割数
つまり、ステップS101の動作の詳細は次のとおりである。まず、カメラ1003aが撮影したフレーム画像の8ライン分のデータを圧縮部201aが圧縮する。そして、パケット生成部202aは圧縮データを4等分し、その4等分されたデータから4つのデータパケットを生成し、1サイクルに1つずつ、4サイクルかけて、4つのデータパケットを送信する。一方、パケット生成部202bは、この4サイクルの間、毎回ダミーパケットを送信する。
なお、圧縮率rが一定であり、圧縮前のデータは例えば式(2)に示すように1画素あたりのバイト数pが2と固定されているので、この4つのデータパケットに含まれる動画データの大きさはそれぞれ、式(7)に示す固定長sである。
s=h×n×p×r÷y (7)
h,p:式(1)と同様
ステップS102も同様に4サイクルかかり、この4サイクルの間、パケット生成部202aは毎回ダミーパケットを送信し、パケット生成部202bはデータパケットを送信する。
したがって、例えばステップS101からステップS102への移行に際して、送信装置101aのパケット生成部202aが8ラインに相当するデータパケットを送信し終わったことを送信装置101bに認識させるために、送信装置101aが送信装置101bに通知を行うなどの同期処理は不要である。送信装置101aと101bが独立に、単にサイクル数を数えるだけで、ステップS101からステップS102へ移行すべきか否かという判定も、ステップS102からステップS103へ移行すべきか否かという判定も、行うことが可能である。さらに、ステップS103の判定を、サイクル数のカウントに基づいて行うことも可能である。
同様に、受信側でも上記の式(5)と(6)から、ステップS201とS202にはそれぞれ4サイクルずつかかることが予め判明しているので、ステップS201からステップS202へ移行すべきか否かという判定も、ステップS202からステップS203へ移行をすべきか否かという判定も、単にサイクル数を数えるだけで行うことができる。
また、1〜4サイクル目、9〜12サイクル目、17〜20サイクル目……がステップS101とS201に該当し、5〜8サイクル目、13〜16サイクル目、21〜24サイクル目……がステップS102とS202に該当するということは、図2のステップS11で通知される対応関係から、送信装置101a、101b、および受信装置105のそれぞれが、計算によって認識することが可能である。
ただし、どのサイクルを1サイクル目として数えるべきかについては、送信装置101a、101b、および受信装置105が予め共通に認識している必要がある。そのような共通の認識を実現する方法は任意である。例えば、バスの初期化の際にサイクルマスタ(送信装置101a、101b、および受信装置105のうちのいずれか)が全ノードに対して、サイクル数のカウントをクリアするよう指示するクリア指示パケットをブロードキャストしてもよい。あるいは、受信装置105が図2のステップS11においてさらに、クリア指示パケットのブロードキャストを行ってもよい。
このように予め何らかの方法によって、どのサイクルを1サイクル目として数えるべきかについての同期をとっておけば、その後はサイクルマスタがサイクルスタートパケットを送信する以外に、同期のための特段の処理は不要である。つまり、各ノード(送信装置101a、101b、および受信装置105)は、独立にサイクル数、すなわち送信されたサイクルスタートパケットの数を数えるだけで、ノード間の同期が保たれる。
なお、より正確には、図6では省略されているステップがある。式(5)と(6)は切り捨てを含むため、1つのフレームに対応するデータが、そのフレームの時間より短い時間で送信し終わることがある。上記の例だと、x=8サイクルを
ve÷n=240÷8=30回
繰り返すことで、1つのフレームに関する処理が完了する。また、フレームレートはf=30fpsである。したがって、式(8)に示すサイクル数zで、1秒に相当する全データの送信が完了する。
z=x×(ve÷n)×f (8)
つまり、この例では、
z=8×30×30=7200サイクル (9)
で1秒に相当する全データ、すなわち30フレーム分の全データの送信が完了する。
一方で、1サイクルは125μsなので、1秒のサイクル数は8000である。よって、8000と7200の差の800サイクル分だけ、1秒ごとにずれが生じる。
ずれをなくす調整のために、この800サイクルは、例えば、8000サイクルの中に均等に分散させて、送信装置101aと101b双方にとっての非送信期間と定めてもよい。図6では、このようなずれの調整のためのサイクルなのか、一方の送信装置にとってのみ送信期間となる通常のサイクルなのか、という判別処理等は省略している。しかし、800サイクルを8000サイクルの中に分散させるパターンを予め定めておき、例えばパケット生成部202aや202bのうち図1の判断部103aや103bに相当する部分がそのパターンを記憶していれば、図6の処理中に、送信装置101aと送信装置101bと受信装置105が、通信をともなうような同期処理を行うことなく、それぞれ独立して単にサイクル数を数えるだけで、図6の処理が同期されて行われることは明らかである。
このように、所定の大きさのパケットを125μsという所定の間隔で送信することを可能にすることで帯域を保証するIDB−1394プロトコルのアイソクロナス転送を使うことによって、送信装置が、画面の分割の仕方から一意に決まるタイミングで、一定の大きさのパケットを送信するだけで、同期処理を行うことなく画面の分割表示を行うことが可能である。また、図6のステップS201〜S204から分かるように、全幅水平ラインに換算して高々8ライン分のラインメモリ(図1の記憶部109に相当)を復号部205が含むだけで、画面1011aの2分割表示が可能となる。従来の手法では320×240画素のフレーム画像2枚分のフレームメモリが必要だったことと比較すると、第2実施形態で必要なラインメモリに対応する画素数は640×8画素なので、大幅なコストダウンが可能である。
なお、1画素あたりのバイト数pが2で、圧縮率rが0.5の場合について、データパケットの大きさを、図4の(b)に示した従来の方式と、図4の(c)に示した本発明の第2実施形態とで比較すると、従来は、式(3)に圧縮率rをかけて、
576×0.5=288バイト
である。一方、第2実施形態では、式(4)から5120バイトと分かる8ライン分のデータが、圧縮されて0.5倍になり、4サイクルに分けて送信されるので、式(7)にも示したとおり
5120×0.5÷4=640バイト
である。ただし、上記の288バイトは、乗算と除算のみから単純に求めたものであって、式(5)や(6)のような切り捨ての影響を含まないのに対し、上記の640バイトは式(5)や(6)の切り捨ての影響を含む。
そこで、この影響を調整してから両者を比較する。式(9)のとおり、1秒間の8000サイクル中、データパケットの送信は7200サイクルで済んでしまう。よって、1サイクルあたりの平均をとれば、
640×7200÷8000=576バイト
となる。これを従来の288バイトと比較すると、ちょうど2倍である。すなわち、切り捨てなどの細かい影響を無視して比較すると、本発明の第2実施形態では、画面の分割数である2に合わせて1つのデータパケットの大きさを従来の2倍とし、その分、各領域のデータが従来の1/2の長さの時間で集中して送信されるようにしている。
次に、図3および図7〜9を参照して、本発明の第3実施形態について説明する。第3実施形態では、水平方向および垂直方向にそれぞれ画面を2分割して、合計4つの領域に画面を分割する。
第3実施形態におけるシステム構成は、図3に示したとおりである。第3実施形態では、カメラ1003cと1003dおよび、送信装置101cと101dも使われる。
図7は、第3実施形態におけるパケットの送信方法を説明する図である。
図7の上段の4つの矩形は、320×240画素の大きさのフレーム画像のデータが、カメラ1003a〜1003dのそれぞれから送信装置101a〜101dを介して受信装置105へと送信されることと、そのデータが8ラインを単位として処理されることを示す。
図7の(a)は、125μsごとにサイクルマスタからサイクルスタートパケットが送信される様子を示し、図13や図4と同様である。
図7の(b)は、図3のように画面1011bを領域1012a〜1012dに分割して、カメラ1003a〜1003dで撮影した動画をそれぞれ表示するために、図13と同様の従来の方法を採用した場合のパケットの送信の仕方を示す図である。動画のデータが非圧縮なら式(3)のように、576バイトの動画データを含むアイソクロナスパケットが各サイクルで送信される。動画のデータが圧縮されていれば、パケットの大きさは圧縮率rに応じて576バイトよりも小さくなる。すなわち、図7の(b)は、図13とまったく同様であり、各サイクルでパケットの数が増えた以外は図4の(b)とも同様である。また、パケットを表す矩形の下の符号a〜dは、それぞれカメラ1003a〜1003dの動画データを含むパケットであることを表す。
図7の(c)は、第3実施形態におけるパケットの送信方法を示す。図7の(b)ではいずれのサイクルにおいてもカメラ1003a〜1003dが撮影した動画にそれぞれ対応する4つのデータパケットが送信されるのに対し、図7の(c)では、期間によって、送信されるパケットの種類が異なる。また、図7の(b)と(c)を比較すると、パケットの大きさが異なる。なお、パケットを表す矩形の下の符号a〜dは、それぞれ送信装置101a〜101dから送信されたパケットであることを表す。
すなわち、送信装置101aにとっての送信期間である一連の数サイクルの間は、送信装置101aのパケット生成部202aがデータパケットを送信する一方で、他の送信装置101b〜101dのパケット生成部202b〜202dはダミーパケットを送信する。また、送信装置101bにとっての送信期間である一連の数サイクルの間は、送信装置101bのパケット生成部202bがデータパケットを送信する一方で、他の送信装置101a、101c、101dのパケット生成部202a、202c、202dはダミーパケットを送信する。同様に、送信装置101cにとっての送信期間である一連の数サイクルの間は、送信装置101cのパケット生成部202cがデータパケットを送信する一方で、他の送信装置101a、101b、101dのパケット生成部202a、202b、202dはダミーパケットを送信する。そして、送信装置101dにとっての送信期間である一連の数サイクルの間は、送信装置101dのパケット生成部202dがデータパケットを送信する一方で、他の送信装置101a〜101cのパケット生成部202a〜202cはダミーパケットを送信する。
こうして、送信装置101a〜101dのそれぞれにとっての送信期間が順番に繰り返される。ある1つの送信装置にとっての送信期間は、他の3つの送信装置にとっての非送信期間である。
また、図7の(b)と(c)で圧縮率rが同じだという前提で比較すると、図7の(c)では、図7の(b)の4倍の大きさでパケットが送信される。したがって、カメラ1003aが撮影した動画のデータだけに注目すると、図7の(b)と比べて1/4の長さの時間に集中的に送信される。カメラ1003b〜1003dについても同様である。なお、第2実施形態の場合と同じく、式(5)や(6)の切り捨ての影響で正確には4倍(あるいは1/4)とならないこともある。
図8は、受信側で表示される640×480画素の画面1011bに含まれる各部分のデータがどの順番で送信されて合成されるのかを説明する図である。画面1011bは、上下および左右にそれぞれ2等分されており、4つの領域1012a〜1012dはいずれも320×240画素の大きさである。なお、左上の領域1012aはカメラ1003aが撮影した動画を表示すべき領域であり、右上の領域1012bはカメラ1003bが撮影した動画を表示すべき領域であり、左下の領域1012cはカメラ1003cが撮影した動画を表示すべき領域であり、右下の領域1012dはカメラ1003dが撮影した動画を表示すべき領域である。
第3実施形態でも、第2実施形態と同様に、n=8本の水平ラインをまとめた320×8画素を単位として、各フレーム画像が圧縮され、送信される。
ある特定のフレームに注目すると、図8に示すように、まずカメラ1003aが撮影したフレーム画像のうち0〜7ライン目のデータを圧縮部201aが圧縮し、パケット生成部202aが圧縮データからデータパケットを生成して送信する。この期間は、送信装置101aにとっての送信期間であり、送信装置101b〜101dにとっての非送信期間なので、パケット生成部202b〜202dはダミーパケットを送信する。
次に、送信装置101bにとっての送信期間となり、カメラ1003bが撮影したフレーム画像のうち0〜7ライン目のデータを圧縮部201bが圧縮し、パケット生成部202bが圧縮データからデータパケットを生成して送信する。この期間は、送信装置101a、101c、101dにとっての非送信期間なので、パケット生成部202a、202c、202dはダミーパケットを送信する。
続いて、再度送信装置101aにとっての送信期間となり、カメラ1003aが撮影したフレーム画像のうち8〜15ライン目のデータを圧縮部201aが圧縮し、パケット生成部202aが圧縮データからデータパケットを生成して送信する。この期間は、送信装置101b〜101dにとっての非送信期間なので、パケット生成部202b〜202dはダミーパケットを送信する。
そして、再度送信装置101bにとっての送信期間となり、カメラ1003bが撮影したフレーム画像のうち8〜15ライン目のデータを圧縮部201bが圧縮し、パケット生成部202bが圧縮データからデータパケットを生成して送信する。この期間は、送信装置101a、101c、101dにとっての非送信期間なので、パケット生成部202a、202c、202dはダミーパケットを送信する。
以下同様にして、送信装置101aと101bそれぞれにとっての送信期間が交互に繰り返されて、画面1011bの上半分にある領域1012aと1012bのそれぞれ239ライン目までの全てのデータが送信され、画面1011bの上半分が表示される。その後、画面1011bの下半分にある領域1012cと1012dのデータの送信が始まる。
すなわち、送信装置101cにとっての送信期間となり、カメラ1003cが撮影したフレーム画像のうち0〜7ライン目のデータを圧縮部201cが圧縮し、パケット生成部202cが圧縮データからデータパケットを生成して送信する。ここで圧縮の対象となるデータは、画面1011bの240〜247ライン目の全幅水平ラインのうち、左半分の部分に対応するデータである。また、この期間は、送信装置101a、101b、101dにとっての非送信期間なので、パケット生成部202a、202b、202dはダミーパケットを送信する。
次に、送信装置101dにとっての送信期間となり、カメラ1003dが撮影したフレーム画像のうち0〜7ライン目のデータを圧縮部201dが圧縮し、パケット生成部202dが圧縮データからデータパケットを生成して送信する。ここで圧縮の対象となるデータは、画面1011bの240〜247ライン目の全幅水平ラインのうち、右半分の部分に対応するデータである。また、この期間は、送信装置101a〜101cにとっての非送信期間なので、パケット生成部202a〜202cはダミーパケットを送信する。
以下同様にして、送信装置101cと101dそれぞれにとっての送信期間が交互に繰り返されて、カメラ1003cと1003dが撮影したフレーム画像の0〜239ライン目のデータが、画面1011bの240〜479ライン目に表示すべき部分のデータとして順次送信される。そして、画面1011bの240〜479ライン目が表示され、1つのフレームの送信と表示が完了する。
次に、図9のフローチャートを参照して、第3実施形態におけるフレーム画像の送信から表示までの流れを説明する。図9の左側に示したステップS301〜S306のフローチャートは、図2のステップS22に対応し、図9の右側に示したステップS401〜S408のフローチャートは、図2のステップS12に対応する。
つまり、図9のフローチャートの処理が実行される前に、第3実施形態においては、図2のステップS11で、「640×480画素の画面1011bをそれぞれ320×240画素の領域1012a〜1012dに分割する」という分割の仕方と、「領域1012a〜1012dにはそれぞれカメラ1003a〜1003dが対応する」という対応関係が通知され、通知された内容がステップS21で送信装置101a〜101dにそれぞれ認識されている。
図9の左側に示した送信側のフローチャートにおいて、ステップS301〜S303は、データパケットおよびダミーパケットの大きさが異なり、後述するように何サイクルかけて実行するかも異なるが、図6のステップS101〜S103とほぼ同様である。ただし、ステップS303では、領域1012aと1012bからなる画面1011bの上半分の領域の縦幅分の送信が終了している場合、図9では、ステップS304に進む。
ステップS304〜S306は、ステップS301〜S303と類似のステップである。
すなわち、ステップS304では、カメラ1003cが撮影した動画のデータを圧縮部201cが圧縮し、その圧縮データからパケット生成部202cがデータパケットを生成して受信装置105へ送信する。一方、パケット生成部202dはダミーパケットを受信装置105へ送信する。
ステップS305では、カメラ1003dが撮影した動画のデータを圧縮部201dが圧縮し、その圧縮データからパケット生成部202dがデータパケットを生成して受信装置105へ送信する。一方、パケット生成部202cはダミーパケットを受信装置105へ送信する。ステップS306では、領域1012cと1012dからなる画面1011bの下半分の領域の縦幅分の送信が終了しているか否かが判断され、送信が終了していれば図9の処理を終了する。
なお、図9に示すとおり、1フレームに相当する時間のうち、前半に相当するステップS301〜S303の部分では、送信装置101cおよび101dからのデータパケットの送信が行われない。つまり、その間、カメラ1003cと1003dが撮影したフレーム画像は、どこかに記憶され、保持されている必要がある。しかし、そのために新たなフレームメモリを追加する必要はない。なぜなら、図3に示すように、もともとカメラ1003a〜1003dはそれぞれフレームメモリ1007a〜1007dを備えているからである。
次に、受信装置105の動作を示す図9の右側のフローチャートについて説明する。このフローチャートにおいて、ステップS401〜S404は、図6のステップS201〜S204とほぼ同様である。多少異なるのはステップS404での判断である。ステップS404では、画面1011bの上半分の描画を命令済みか否か、すなわち、画面1011bの0〜239ライン目の全幅水平ラインの描画を命令済みか否かが、表示部206により判断される。そして、命令済みであればステップS405に進み、そうでなければ図6に関して説明したのと同様にjの値を1増やしてステップS401に戻る。
ステップS405〜S408は、ステップS401〜S404と類似の処理である。ステップS401〜S404は、パケット生成部202aと202bから送信されたデータパケットに基づいて、画面1011bの上半分の領域1012aと1012bを描画するための処理である。一方、ステップS405〜S408は、パケット生成部202cと202dから送信されたデータパケットに基づいて、画面1011bの下半分の領域1012cと1012dを描画するための処理である。
すなわち、ステップS405では、カメラ1003cが撮影したフレーム画像のうち(j×8)ライン目から((j+1)×8−1)ライン目までの8ライン分のデータから生成されたデータパケットを、パケット復元部204が受信する。パケット復元部204は受信したデータパケットから圧縮データを復元し、復号部205が圧縮データを復号してラインメモリに記憶する。ステップS405で受信されるデータパケットは、ステップS304でパケット生成部202cが送信したものである。また、ステップS405でパケット復元部204が受信したダミーパケットはすべて廃棄される。
次に、ステップS406では、カメラ1003dが撮影したフレーム画像のうち(j×8)ライン目から((j+1)×8−1)ライン目までの8ライン分のデータから生成されたデータパケットを、パケット復元部204が受信する。パケット復元部204は受信したデータパケットから圧縮データを復元し、復号部205が圧縮データを復号してラインメモリに記憶する。ステップS406で受信されるデータパケットは、ステップS305でパケット生成部202dが送信したものである。また、ステップS406でパケット復元部204が受信したダミーパケットはすべて廃棄される。
続いてステップS407で、ラインメモリに記憶されたデータに基づいて、表示部206が、モニタの画面1011bへの描画を命令する。ここで描画の対象となる領域1012cと1012dは、画面1011bの下半分にある。よって、元のカメラ1003cや1003dが撮影したフレーム画像中の(j×8)ライン目から((j+1)×8−1)ライン目までの水平ラインは、画面1011b中の(240+(j×8))ライン目から(240+(j+1)×8−1)ライン目までの全幅水平ラインに対応する。
そして、ステップS408では、領域1012cおよび1012dの縦幅分の240本の全幅水平ラインの描画を命令し終えたか否かを表示部206が判断する。すなわち、ステップS408では、画面1011bの479ライン目までのすべての全幅水平ラインの描画を命令し終えたか否かを表示部206が判断し、終了していれば図9の処理を終了し、そうでなければ上記のjの値を1増やしてステップS405に戻る。
以上のとおり、第3実施形態でも、第2実施形態と同様に、送信装置101a〜101dおよび受信装置105は個別に動作を行っており、互いに同期するための通信をともなう処理などは行っていない。しかし、第2実施形態と同様の理由で、送信装置101a〜101dおよび受信装置105は、単にサイクル数を数えていれば、他の装置とタイミングを合わせて動作することが可能である。第2実施形態と同様に、数値の具体例により説明すれば、下記のごとくである。
第3実施形態に式(5)を当てはめると、c=125μs、f=30fps、ve=480、n=8より、
x=floor(266÷60)=4
である。つまり、n=8本の水平ラインの走査のタイミングに対応する期間の長さは4サイクルである。また、dh=2なので、式(6)からy=2である。したがって、ステップS301、S302、S304、およびS305は、それぞれ2サイクルかけて実行される。同様に、ステップS401、S402、S405、およびS406もそれぞれ2サイクルかけて実行される。例えば、ステップS301では、カメラ1003aが撮影した動画の8ライン分のデータは、圧縮部201aによって圧縮され、2等分される。そして、2等分されたデータを使って、パケット生成部202aが2つのデータパケットを生成し、1サイクルに1つずつ送信する。
この2つのデータパケットに含まれる動画データの大きさはそれぞれ、式(7)のsである。例えば、第2実施形態の計算例と同様に圧縮率rを0.5とすれば、
s=5120×0.5÷2=1280バイト
であり、第2実施形態において計算された640バイトの2倍である。また、式(5)における切り捨ての影響の分、多少のずれはあるが、従来方式による288バイトと比べると、第3実施形態において各サイクルで送信されるデータパケットの大きさは、約4倍である。この約4倍という数値は、画面1011bが4分割されていることに対応する。すなわち、切り捨ての影響を無視すれば、同じ大きさの複数の領域に画面を分割した場合、各サイクルで送信すべきデータパケットの大きさは、領域の数に比例する。また、データパケットの大きさの増大に反比例して、当該領域のデータの送信にかかるサイクル数は少なくなる。
次に、第2および第3の実施形態で説明した具体例と、第1実施形態との対応について説明する。
第1実施形態で説明したように、例えば送信装置101aにとっての送信期間は、送信装置101aにとっての特定領域を構成するn本の水平ラインを含むn本の全幅水平ラインの走査のタイミングに対応する期間のうち、特定領域の画面内での水平方向における位置に対応する期間である。ここで、「n本の全幅水平ラインの走査のタイミングに対応する期間」とは、次の期間を指す。
(a)第2実施形態では、図6のステップS101とS102からなる8サイクル
(b)第3実施形態で、現在注目しているn本の全幅水平ラインが画面1011bの上半分に含まれる場合は、図9のステップS301とS302からなる4サイクル
(c)第3実施形態で、現在注目しているn本の全幅水平ラインが画面1011bの下半分に含まれる場合は、図9のステップS304とS305からなる4サイクル
また、「特定領域の画面内での水平方向における位置」とは、第2および第3実施形態の場合、画面の右半分か左半分かということである。特定領域が画面の右半分と左半分のどちらであるかということに対応する以下のいずれかの期間が、送信期間である。
(d)第2実施形態では、上記(a)の8サイクルの前半または後半の4サイクル
(e)第3実施形態では、上記(b)または(c)の4サイクルの前半または後半の2サイクル
例えば、第3実施形態で送信装置101cに注目すると、特定領域は左下の領域1012cである。よって、上半分の領域1012aと1012bの走査のタイミングに対応する期間である図9のステップS301〜S303のループが実行されている間は、非送信期間が続く。そして、下半分の領域1012cと1012dの走査のタイミングに対応する期間である図9のステップS304〜S306の繰り返しにおいては、領域1012cが水平方向に並ぶ2つの領域のうち左側であることに対応して、上記(c)の4サイクルの前半の2サイクル、すなわちステップS304が送信期間となる。そして、ステップS304とS305からなる、2サイクルの送信期間と2サイクルの非送信期間というパターンが繰り返される。
また、第1実施形態で説明したように、受信側から見ると、データパケットは、対応関係により示される各送信装置にとっての特定領域の画面内での位置と、画面の走査順とに基づくタイミング、すなわち既知の情報から決定されるタイミングで送信されてくるものである。例えば、第3実施形態において送信装置101cからデータパケットが送信されるタイミングは、次の点において、特定領域1012cの画面1011b内での位置と、画面1011bの走査順とに基づいている。
・送信装置101cの特定領域1012cが画面1011bの下半分に属し、画面1011bは上から下へ走査されることから、送信装置101cからデータパケットを受信するのは、図9の右側のフローにおいて後半部にあたるステップS405〜S408のループが実行される期間内に限られる。
・フローの後半部にあたるステップS405〜S408のループが実行される期間内では、画面1011bが上から下へ走査されるという順序に合わせて、上から下へ順番にn=8本の水平ラインを単位として、送信装置101cからデータパケットが送信され、受信装置105がそのデータパケットを受信する。
・特定領域1012cが画面1011bの左半分にあることから、ステップS405〜S408からなるループの前半の2サイクルにあたるステップS405で、送信装置101cからデータパケットを受信する。
以上、本発明の実施の形態について詳細に説明してきたが、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
画像の形式は、上記の実施形態で例示したものに限らない。上記の実施形態では、1画素あたり2バイトで表されるYUV表色系を例に説明したが、1画素あたり3バイトで表されるRGB表色系を採用してもよく、表示すべき画像がグレースケール画像であってもよい。
また、上記の実施形態では、プログレッシブ画像であることを暗黙の前提として説明したが、インターレース画像に対しても同様に本発明を適用することができる。インターレース画像を対象とする場合は、フレームではなくフィールドを単位として処理するようにしたり、偶数フィールドに対しては例えば0、2、……、14本目の水平ラインを処理の単位とする一方で、奇数フィールドに対しては例えば1、3、……、15本目の水平ラインを処理の単位とするようにしたり、必要な変形を行えばよい。
また、図3には圧縮部201a〜201dがあり、動画のデータを圧縮しているが、動画のデータを圧縮せずに伝送してもよい。
IDB−1394プロトコルによるアイソクロナス転送を利用するためには、各サイクルで同じ大きさのパケットを送信するという前提を成立させる必要がある。この前提は、例えば固定長符号化された非圧縮の画像データ、あるいはn本の水平ラインごとに固定長になるように圧縮された画像データを利用することによって成立する。そして、この条件が成立することにより、上記の計算例のようにどのパケットも同じ大きさとすることができる。
また、図1の説明において、送信装置はカメラに取り付けられ、受信装置はモニタに取り付けられると説明したが、送信装置と受信装置は、外付けの装置でなくてもよい。すなわち、送信装置がカメラに内蔵されていても、受信装置がモニタに内蔵されていてもよい。
さらに、送信装置が取り付けられ、あるいは内蔵される対象の装置は、カメラに限らない。上記の説明におけるカメラは、テレビチューナー、DVD(Digital Versatile Disk)プレーヤ、またはカーナビゲーション装置など、画像を出力することができる任意の機器に置き換えることが可能である。例えば、3台のカメラにそれぞれ取り付けられた3台の送信装置101a〜101cと、カーナビゲーション装置に内蔵された送信装置101dが、それぞれ動画のデータを受信装置105に送信するようシステムを構成することも可能である。この場合、受信装置105は、4分割されたモニタの画面上の1つの領域にカーナビゲーションのための動画を、残りの3つの領域にカメラが撮影した画像を表示させる。
画面の分割の仕方および各領域とカメラとの対応関係は、図2のステップS11に示したように受信側から通知するのでもよく、デフォルトで決められて、送信装置と受信装置の双方に予め記憶されていてもよい。デフォルトで決められている場合、図2のステップS11とS21は不要である。
また、バスはIDB−1394に限らず、転送レートを保証するアイソクロナス転送の仕組みを備えたプロトコルのバスであればよく、例えばUSB(Universal Serial Bus;ユニバーサルシリアルバス)を使うこともできる。第2および第3実施形態では、パケット生成部202a〜202dが非送信期間にダミーパケットを送信しているが、割り当てられた帯域を必ず使うことが前提となっていないプロトコルの場合は、ダミーパケットを送信しなくてもよい。
上記実施形態では、カメラが撮影した画像を拡大も縮小もせずにモニタの画面に表示する例を示した。しかし、例えば、復元部108が復元したデータを適宜間引いてから記憶部109に記憶するか、記憶部109に記憶されたデータを表示部110が適宜間引くように上記実施形態を変形すれば、縮小した分割表示も可能である。拡大表示も同様に、例えば表示部110の動作を適宜変更することによって可能となる。
また、画面の分割の仕方は、例示した2分割と4分割に限らず、各領域の大きさが同じである必要もない。例えば、第2実施形態を変形して、水平方向に3分割あるいは4分割して表示することも可能である。その場合、第2実施形態では従来と比べてパケットの大きさが2倍になったのと同様に、パケットの大きさは3倍あるいは4倍となる。
また、図10に示すように、画面1011cを上下に分割し、上半分を水平方向に2分割して領域1012a〜1012bとし、下半分を水平方向に3分割して領域1012c〜1012eとするなど、垂直方向の位置によって水平方向の分割数が異なるような分割であってもよい。図10のような複雑な分割を行った場合でも、次のようにして、送信期間の長さを示すサイクル数を計算し、そのサイクル数に基づいてデータパケットのサイズを決定することが可能である。
まず、式(5)により、n本の全幅水平ラインの走査のタイミングに対応する期間に割り当てられるサイクル数xを求める。図10の例では、画面1011cの垂直方向の画素数veが176なので、c=125μs、f=30fps、n=8とすると、式(5)より、
x=floor(266÷22)=12
である。図10のような分割の場合、こうして算出したサイクル数xを、式(6)のように等分にするかわりに、水平方向に並んだdh個の領域の水平方向の画素数で比例分配する。図10の例では、画面1011cの上段は、水平方向の画素数がそれぞれ75と225の領域1012aおよび領域1012bに分割されており、この2つの領域の水平方向の画素数の比は1:3である。よって、画面1011cの上段ではx=12を1:3に比例配分して、領域1012aには3サイクル、領域1012bには9サイクルを分配する。一方、画面1011cの下段は、水平方向の画素数が100で等しい3つの領域1012c〜1012eに分割されている。よって、画面1011cの下段ではx=12を1:1:1に比例配分して、領域1012c〜1012eに4サイクルずつ分配する。なお、正確に比例分配すると整数にならない場合は、適宜切り上げまたは切り捨てを行って分配すればよい。
こうしてdh個の領域に対応するdh個の送信装置にそれぞれ分配されたサイクル数が、当該送信装置にとっての送信期間の長さを表すサイクル数である。n本の水平ラインのデータ量を、この分配されたサイクル数で割れば、1サイクルあたりに当該送信装置から送信すべきデータパケットの大きさとなる。例えば、動画データが1画素あたり2バイトに固定長符号化されたものである場合、領域1012aに対応する送信装置(送信装置101aとする)から1サイクルあたりに送信されるデータパケットの大きさは、
75×8×2÷3=400バイト
である。同様に、領域1012bに対応する送信装置(送信装置101bとする)から1サイクルあたりに送信されるデータパケットの大きさは、
225×8×2÷9=400バイト
である。また、領域1012c〜1012eに対応する送信装置(送信装置101c〜101eとする)からそれぞれ1サイクルあたりに送信されるデータパケットの大きさは、
100×8×2÷4=400バイト
で等しい。つまり、n本の水平ラインのデータ量は、各領域の水平方向の画素数に比例するので、上記のようにサイクル数xを比例分配すると、各領域から1サイクルあたりに送信されるデータパケットの大きさは等しくなる。なお、ここで「等しい」とは、整数への切り捨て等があった場合は、その影響を無視すればデータパケットの大きさが等しいという意味である。
このようにしてデータパケットの大きさが決まると、ダミーパケットの大きさも定まる。図10の例ではどのサイクルにおいても、送信装置101a〜101eが400バイトデータパケットか400バイトのダミーパケットを送信することから、1サイクルあたり
400×5=2000バイト
の転送が保証されていなくてはならないが、これはIDB−1394のS200で十分まかなえる転送レートである。
つまり、図10の例では、送信装置101aが400バイトのデータパケットを送信し、送信装置101b〜101eがそれぞれ400バイトのダミーパケットを送信することが3サイクル続いた後、送信装置101bが400バイトのデータパケットを送信し、送信装置101a、101c〜101eが400バイトのダミーパケットを送信することが9サイクル続く。そして、この12サイクルを8回繰り返すことで、画面1011cの上段のデータの送信および描画が完成する。
同様に、送信装置101cが400バイトのデータパケットを送信し、送信装置101a、101b、101d、101eが400バイトのダミーパケットを送信することが4サイクル続いた後、送信装置101dが400バイトのデータパケットを送信し、送信装置101a〜101c、101eが400バイトのダミーパケットを送信することが4サイクル続き、さらにその後、送信装置101eが400バイトのデータパケットを送信し、送信装置101a〜101dが400バイトのデータパケットを送信することが4サイクル続く。そして、この12サイクルを14回繰り返すことで、画面1011cの下段のデータの送信および描画が完成する。
さらに別の変形例について説明すると、上記の第1〜第3実施形態では、モニタが1つであると仮定して説明したが、IDB−1394のアイソクロナス転送では、パケットがブロードキャストされるので、複数のモニタにそれぞれ受信装置105を取り付け、複数のモニタにおいて同様の画面分割表示を行うようにしてもよい。あるいは、複数のモニタで異なる分割の仕方の分割表示を行うことも可能である。
例えば、複数のモニタが受信装置105を介して1394バスに接続されている場合、第1のモニタでは、カメラ1003a〜1003dが撮影した動画を、第3実施形態のように4分割表示し、第2のモニタでは、カメラ1003aと1003bが撮影した動画を、第2実施形態のように2分割表示することも可能である。この場合、第2のモニタに接続された受信装置は、ダミーパケットを廃棄するだけではなく、カメラ1003cと1003dにそれぞれ取り付けられた送信装置から送られるデータパケットも廃棄する。廃棄すべきデータパケットなのか、画面の表示に用いるべきデータパケットなのかは、例えば、アイソクロナスパケットヘッダのチャンネルIDに基づいて判別することが可能である。この場合、第2のモニタに接続された受信装置に必要なラインメモリの容量も、第2実施形態と同様に、全幅水平ラインに換算してn本分である。
なお、このように複数のモニタで異なる分割の仕方の分割表示を行う場合は、最も分割数の多いモニタに取り付けられた受信装置が、予め、送信装置だけではなく他のモニタに取り付けられた受信装置にも、自モニタの画面の分割の仕方および分割された各領域とカメラとの対応関係を通知する必要がある。各送信装置は、最も分割数の多いモニタに合わせたタイミングおよび大きさでパケットを送信し、他のモニタに接続された受信装置は、受信したデータパケットのうち不要なものを廃棄する。
また、上記の例における、4分割表示を行う第1のモニタを前提とした場合、第2のモニタで可能な分割の仕方はある程度限定される。例えば、カメラ1003aで撮影した動画を画面左半分に表示し、カメラ1003cで撮影した動画を画面右半分に表示するような2分割表示はできない。なぜなら、図9から分かるように、カメラ1003aで撮影したフレーム画像のデータがすべて送信され終わってから、カメラ1003cで撮影したフレーム画像のデータの送信が始まるため、全幅水平ラインに換算してn本分のラインメモリでは足りないからである。
第2のモニタで可能な分割の仕方の例は、第2のモニタの画面の大きさにもよるが、例えば、第1のモニタの画面上で水平方向に並ぶ2つの領域の左右を入れ替えること、第1のモニタの画面の上段または下段の一方にある2つの領域だけを水平方向に並べて2分割表示をすること、第1のモニタの画面の上段と下段から1つずつ領域を選んでその2つの領域を垂直方向に並べて2分割表示をすること、などである。
ところで、上記の実施形態では、n=8と仮定し、8ラインを処理の単位としていたが、nは任意である。nは1でもよく、nが整数でなくても本発明を実施することは可能である。また、上記の実施形態では簡単のため、nが画面全体の垂直方向の画素数veの約数であると仮定していたが、そうでなくてもよい。
ただし、nが小さすぎると、第2および第3実施形態のように動画データを圧縮する場合に、所望の圧縮率を達成することができない場合がある。一方、nが大きすぎると、受信装置105の記憶部109の容量がそれに応じて増してしまい、本発明の利点が薄くなる。これらの観点から、nの値を検討し、実施形態に応じて最適な値を実験により求め、それをnの値として採用することが望ましい。あるいは、例えば受信装置105が備える入力装置を介して、nの値を人間が指定することを可能としてもよい。
なお、上記のいくつかの式は例示である。例えば、図6のフローチャートの1回のループあたりのサイクル数を、8.8……を切り捨てて8サイクルとする場合を例示したが、このように切り捨てなくてもよい。例えば、ループごとに、8サイクルで実行する場合と9サイクルで実行する場合を所定のパターンで混在させて、平均すると1回のループあたりのサイクル数が整数にならないように調整してもよい。その所定のパターンを予め送信装置と受信装置の双方が認識していれば、同期のための通信をともなう処理を必要とせず、各装置が単にサイクル数を数えるだけで、タイミングを合わせて動作することが可能である。
以上説明したことを概観すれば本発明は以下のような構成を備えるものである。
(付記1)
複数の領域に分割された画面内の1つの領域である特定領域に表示すべき動画のデータを、データの転送レートを保証するプロトコルによって送信する送信装置であって、
前記動画の前記データのうち、前記特定領域を構成するn本の水平ラインに相当する部分からデータパケットを生成するデータパケット生成手段と、
前記特定領域のn本の前記水平ラインを含む、前記画面の全幅にわたるn本の全幅水平ラインの走査のタイミングに対応する期間のうち、前記特定領域の前記画面内での水平方向における位置に対応する期間である送信期間か否かを判断する判断手段と、
前記送信期間であると前記判断手段が判断したとき、前記データパケットを送信する送信手段と、
を備えることを特徴とする送信装置。
(付記2)
前記データパケット生成手段は、前記画面の垂直方向の走査順と同じ方向に順に、n本の前記水平ラインを繰り返しの単位として、前記データパケットを生成することを繰り返し、
前記判断手段は、水平方向に並ぶdh個の前記領域について、水平方向の位置に応じて、前記特定領域に対応する前記送信期間であるか、または前記特定領域以外の領域に対応する非送信期間であるかを判断し、
前記dh個の領域に対応する前記送信期間と前記非送信期間とからなる判断のパターンが、前記データパケット生成手段による前記繰り返しの単位ごとに繰り返される、
ことを特徴とする付記1に記載の送信装置。
(付記3)
前記画面は水平方向と垂直方向の分割をともに含み、
前記画面の走査順において、前記特定領域の上または下にある他の領域の走査のタイミングに対応する期間では、前記判断手段が前記送信期間ではないと判断する、
ことを特徴とする付記1に記載の送信装置。
(付記4)
前記画面の分割の仕方と、前記画面内での前記特定領域の前記位置は、前記データパケットの送信先である受信装置から予め通知されたものであることを特徴とする付記1に記載の送信装置。
(付記5)
ダミーデータからダミーパケットを生成するダミーパケット生成手段をさらに備え、
前記送信期間ではないと前記判断手段が判断したとき、前記送信手段は前記ダミーパケットを送信する、
ことを特徴とする付記1に記載の送信装置。
(付記6)
前記動画の前記データのうちn本の前記水平ラインに相当する前記部分の大きさは固定であることを特徴とする付記1に記載の送信装置。
(付記7)
前記動画の前記データは圧縮されていることを特徴とする付記6に記載の送信装置。
(付記8)
複数の領域に分割された画面内のそれぞれの前記領域に表示すべき複数の動画のデータを、データの転送レートを保証するプロトコルによって、複数の送信装置のそれぞれから受信する受信装置であって、
前記複数の送信装置と前記複数の領域との対応関係を、前記複数の送信装置に通知する通知手段と、
前記動画の前記データから生成され、前記対応関係により示される前記領域の前記画面内での位置と前記画面の走査順とに基づくタイミングで前記複数の送信装置からそれぞれ送信された、データパケットを受信する受信手段と、
1つの前記送信装置から受信した1つ以上の前記データパケットから、前記動画の前記データのうち、前記1つの送信装置に対応する1つの前記領域を構成するn本の水平ラインに相当する部分を復元する復元手段と、
復元された前記動画の前記データを記憶する記憶手段と、
前記記憶手段に記憶された前記動画の前記データに基づいて、前記画面の全幅にわたるn本の全幅水平ラインを、走査により表示するよう命令する表示手段とを備え、
前記データパケットの受信と、前記動画の前記データの復元および記憶と、前記表示手段による命令とを繰り返すことによって前記画面全体の表示を実現させることを特徴とする受信装置。
(付記9)
前記受信手段は、少なくとも1つの前記送信装置から、ダミーデータから生成されて前記データパケットを送信すべきタイミングではないときに送信されたダミーパケットを受信し、受信した該ダミーパケットを廃棄することを特徴とする付記8に記載の受信装置。
(付記10)
前記受信手段が、水平方向に並ぶdh個の前記領域に対応するdh個の前記送信装置から順にそれぞれ前記データパケットを受信し、前記記憶手段が、dh個の前記送信装置から受信した前記データパケットからそれぞれ復元されたdh個の前記動画それぞれの前記データを記憶した後で、前記表示手段がn本の前記全幅水平ラインの表示を命令することを特徴とする付記8に記載の受信装置。
(付記11)
前記動画の前記データのうちn本の前記水平ラインに相当する前記部分の大きさは固定であることを特徴とする付記10に記載の受信装置。
(付記12)
コンピュータに、複数の領域に分割された画面内の1つの領域である特定領域に表示すべき動画のデータを、データの転送レートを保証するプロトコルによって送信させるプログラムであって、
前記動画の前記データのうち、前記特定領域を構成するn本の水平ラインに相当する部分からデータパケットを生成するステップと、
前記特定領域のn本の前記水平ラインを含む、前記画面の全幅にわたるn本の全幅水平ラインの走査のタイミングに対応する期間のうち、前記特定領域の前記画面内での水平方向における位置に対応する期間である送信期間か否かを判断するステップと、
前記送信期間であると判断したとき、前記データパケットを送信するステップと、
を前記コンピュータに実行させることを特徴とするプログラム。
(付記13)
コンピュータに、複数の領域に分割された画面内のそれぞれの前記領域に表示すべき複数の動画のデータを、データの転送レートを保証するプロトコルによって、複数の送信装置のそれぞれから受信させるプログラムであって、
前記複数の送信装置と前記複数の領域との対応関係を、前記複数の送信装置に通知する通知ステップと、
前記動画の前記データから生成され、前記対応関係により示される前記領域の前記画面内での位置と前記画面の走査順とに基づくタイミングで前記複数の送信装置からそれぞれ送信された、データパケットを受信する受信ステップと、
1つの前記送信装置から受信した1つ以上の前記データパケットから、前記動画の前記データのうち、前記1つの送信装置に対応する1つの前記領域を構成するn本の水平ラインに相当する部分を復元する復元ステップと、
復元された前記動画の前記データを記憶手段に記憶する記憶ステップと、
前記記憶手段に記憶された前記動画の前記データに基づいて、前記画面の全幅にわたるn本の全幅水平ラインを、走査により表示するよう命令する表示ステップと、
を前記コンピュータに実行させ、
前記受信ステップ、前記復元ステップ、前記記憶ステップ、および前記表示ステップを前記コンピュータに繰り返させることによって前記画面全体の表示を実現させることを特徴とするプログラム。