(57)【特許請求の範囲】
【請求項１】
時系列に画像を入力するための撮像部と、
上記撮像部より入力された各画像を記憶する画像記憶部と、
現フレームの画像から輝度変化の高い箇所を特徴点として抽出する特徴点抽出部と、
前フレームと現フレームとの間の動き量を保持しておく前フレーム動き量格納部と、
上記特徴点に対応する次フレームの画像上の位置に上記前フレーム動き量格納部から得られる動き量を加えた点の近傍領域を相関演算のための探索範囲として決定する探索範囲決定部と、
上記特徴点と上記探索範囲内の各画素との相関をとる相関演算部と、
上記相関演算部から得られた動き量を上記前フレーム動き量格納部に格納し、上記相関演算部から得られる動き量から新たに撮像された部分の画像を得る更新画像算出部と、
上記相関演算部から得られる動き量と上記更新画像算出部から得られる部分画像を送信する画像送信部と、
上記自分側の画像送信部或は、相手側の画像送信部から送信された動き量と部分画像を受信する画像受信部と、
上記画像受信部から得られる動き量と部分画像から画像を合成する画像合成部を有することを特徴とする画像合成通信装置。
【請求項２】
上記特徴点抽出部は、現フレームの画像から縦または横方向に輝度変化の高い箇所を特徴点として抽出し、上記探索範囲決定部は、次フレームの画像の上記領域ごとに相関演算のための探索範囲として決定し、上記相関演算部は、上記領域ごとに相関演算を行うことを特徴とする請求項１記載の画像合成通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ビデオカメラなどの撮像装置を用いて連続的に画像を取リ込んで結像面上の被写体画像の動き量を検出し、検出した動き量をもとに広画角、高精細の画像を合成し、またそれらに必要なデータを送受信しながら行なう画像合成通信装置に関する。
【０００２】
【従来の技術】
従来のテレビ会議などでは、文書画像を送信する方法として、出席者の画像を取る撮像装置とは別に、例えばＦＡＸやスキャナなどを使った、書画専用の撮像装置を使う従来技術があった。
また、従来のテレビ会議、テレビ電話では、広画角の画像を得る方法として、ビデオカメラなどのようにレンズ自体の画角を変化させたり、撮像装置を回転させて視野を振ったり、あるいは、特開昭５９−４４１８４号公報に示されているように、複数の静止画を組み合わせて、一つの全体画面に構成する従来技術があった。
【０００３】
また、高精細・広画角画像を安価な撮影装置で得る方法として、特開平５−２６０２６４号公報に示されているように、被写体の一部を所望する解像度で撮影し、撮像装置を回転させたり移動させたりして走査し、得られた画像を合成するという従来技術があった。
また、画像を合成する際、画像の動き量を計算する必要があるが、その計算方法には幾つかある。
【０００４】
主にビデオカメラの手ぶれなどの動きの補償に用いられているものとして、代表点方式がある。
図１９に代表点方式の概念図を示す。これは、連続して取り込んだ画像に対して前フレームの画像の固定された位置に代表点を設定し、さらに現フレームの画像に対し、２次元方向にずらしながら対応する画素で相関演算及び累積加算演算を行い、演算値が最も高くなる量を動き量として検出するものである。
【０００５】
更に、特開平６−８６１４９号公報には、設定した代表点でラプラシアンフイルタなどを施し、輝度勾配を求め、その値を使って演算することにより精度が高くなるよう工夫した技術が開示されている。
【０００６】
また、画像の重複部分に対して相関演算を施して、合成する位置をきめるブロックマッチング方式を用いても動き量を検出することは可能である。図２０にブロックマッチング方式の概念図を示す。これは、前フレームの画像の参照すべき特定領域を設定し、現フレームの画像に対し、２次元方向にずらしながら相関演算を行い、代表点方式と同様にして求めるものである。しかしながら、代表点方式が数個の点で相関を求め累積加算するのでよいのに対し、ブロックマッチング方式では、特定領域すべての累積加算が必要となリ、より高速な処理が必要となる。
【０００７】
【発明が解決しようとする課題】
しかしながら、上記従来例の書画専用カメラやＦＡＸに使うテレビカメラの内、安価なカメラでは、文書などを撮影しても、文書全体を写すと小さな文字が潰れて判別できず、文字が判別できるほどの解像度で撮影すると、今度は文書全体を把握することができないという欠点があった。
また、レンズ自体の画角を変化させる上記従来例では、視野を広くする分解像度が落ちてしまう欠点があった。
【０００８】
また、撮像装置を回転させる上記従来例では、一度に広画角の画像を得られないという欠点があった。
また、特開昭６０−２０３０６３号公報では、画像を精度よく合成することができず、手で持ってカメラを振って撮影するような手法では合成できないという欠点があった。また、カメラ側に合成装置が必要であるという欠点もあった。
また、特開平５−２６０２６４号公報に示されるような部分画像を合成して高精細・広画角画像を得る上記の従来技術では、通信と組み合わせた場合、送り側が合成装置を持っている必要があるという欠点があった。
【０００９】
もし受信側で合成するにしても、単純に部分画像をすべて送ってしまうと、合成に必要な量以上に送ってしまい、無駄に送信量を増やしてしまう欠点があった。
また、動き量検出方法として、上記の代表点方式では、ある代表点に対しては必ずある一定の輝度勾配を有する必要がある。例えば文書画像の様に、白黒のデータを対象とする場合では、すべての代表点で輝度勾配が低くなり、動き量がうまく検出されないという問題があった。
【００１０】
すなわち、対象の画像において、輝度勾配が一様に分布している場合には有効であるが、そうでない場合、例えは背景の多い文書などは、輝度勾配の少ない箇所が背景になってしまい、動き量の検出が難しくなる。
一方、ブロックマッチング方式では、計算量が多いため、実時間で動き量を検出するのが難しいという問題があった。
【００１１】
本発明は、低解像度、狭画角の安価な撮像装置を用いて、画像間の動き量を、対象の画像の輝度勾配が一様でないような、例えば文書画像に対して、精度良く、高速に求め、高精細・広画角の画像を合成し、通信を介して扱えるようような画像合成通信装置を提供することを目的としている。
【００１８】
【課題を解決するための手段】
本発明の請求項１に記載の画像合成通信装置は、上記の課題を解決するために、時系列に画像を入力するための撮像部と、
上記撮像部より入力された各画像を記憶する画像記憶部と、
現フレームの画像から輝度変化の高い箇所を特徴点として抽出する特徴点抽出部と、
前フレームと現フレームとの間の動き量を保持しておく前フレーム動き量格納部と、
上記特徴点に対応する次フレームの画像上の位置に上記前フレーム動き量格納部から得られる動き量を加えた点の近傍領域を相関演算のための探索範囲として決定する探索範囲決定部と、
上記特徴点と上記探索範囲内の各画素との相関をとる相関演算部と、
上記相関演算部から得られた動き量を上記前フレーム動き量格納部に格納し、上記相関演算部から得られる動き量から新たに撮像された部分の画像を得る更新画像算出部と、
上記相関演算部から得られる動き量と上記更新画像算出部から得られる部分画像を送信する画像送信部と、
上記自分側の画像送信部或は、相手側の画像送信部から送信された動き量と部分画像を受信する画像受信部と、
上記画像受信部から得られる動き量と部分画像から画像を合成する画像合成部を有することを特徴とする。
【００２０】
本発明の請求項２に記載の画像合成通信装置は、上記の課題を解決するために、請求項１記載の画像合成通信装置において、上記特徴点抽出部は、現フレームの画像から縦または横方向に輝度変化の高い箇所を特徴点として抽出し、上記探索範囲決定部は、次フレームの画像の上記領域ごとに相関演算のための探索範囲として決定し、上記相関演算部は、上記領域ごとに相関演算を行うことを特徴とする。
【００２１】
【発明の実施の形態】
〔実施形態１〕
以下、本発明の実施形態１について図面を参照して説明する。
図１は、本実施形態１の画像合成通信装置を示すブロック図である。１は画像を撮像する光学系やＣＣＤなどで構成される撮像部、２は撮像部１から転送された画像データを格納する画像記憶部、３は画素演算に用いる点を抽出する特徴点抽出部、４は相関演算の探索範囲を決定する探索範囲決定部、５は画素間の相関をとり、動き量を出力する相関演算部、３６は画像を合成する画像合成部、３０は合成画像を送信する画像送信部、３１は上記各部を制御する制御部、３２は合成画像を受信する画像受信部である。
上記画像受信部３２は、送信側の画像合成通信装置が、送信部と一体に、或は、分離して備えている場合もあるが、離れた別の画像合成通信装置が備えていることもある。
【００２２】
ここで、撮像部１を、実際に、手で動かして白地に黒の文字が書かれた文書画像を撮像する場合の途中を示す図４を用いて説明する。図４は一定の時間間隔で連続撮像された画像の途中を示している。
ここで、Ｔ１，Ｔ２，Ｔ３，・・・・は、画像の取り込み開始時間で、取り込まれた画像をＦ１，Ｆ２，Ｆ３，・・・・とする。Ｔ１とＴ２との間で、撮像部１から画像Ｆ１が取り込まれ、画像記憶部２に格納され、同時に特徴点抽出部３にも送られ、画像Ｆ１の特徴点が抽出される。
【００２３】
次ぎに、Ｔ２とＴ３との間で、画像Ｆ２が取り込まれ、画像記憶部２に格納され、同時に特徴点抽出部３に送られ、画像Ｆ２のすべての特徴点が抽出される。
【００２４】
また、Ｔ２とＴ３との間では、前フレームのＴ１Ｔ２間で抽出された画像Ｆ１のすべての特徴点と、それらの特徴点ごとに対応する画像Ｆ２内の特定位置の近傍すべての画素と相関演算部５で相関演算を行う。なお、画像Ｆ２内の特定位置は、Ｔ１とＴ２との間の前フレームで求めた動き量で補正されている。
Ｔ２とＴ３との間では、相関演算が行なわれた後、相関演算部５で求められた動き量が、画像合成部６に送られ、画像合成が行なわれる。
【００２５】
以下、同様にして、現フレームの特徴点を参照画像とし、次フレームの特定位置近傍の領域を探索画像としてＴ３以降もＴ２とＴ３との間と同様な処理が繰り返される。
次に、特徴点抽出動作について説明する。図５に、特徴点抽出部３の構成を示す。７は隣接画素を同時に読み出すためのラインメモリ、８は輝度勾配を求めるための加減算器、９は輝度の絶対値を得るための絶対値演算器、１０は輝度勾配が閾値を超えるかどうかを調べる比較器、１１は求めた特徴点の輝度値とその座標値を格納する特徴点情報格納レジスタ、１２は探索範囲を制御するめの探索範囲制御部である。
【００２６】
次に、輝度勾配の高い特徴点を選択する利点について図６を用いて説明する。輝度勾配が高いとは、隣接する画素の差が大きいという意味で、文書画像においては文字のエッジ部分が対応する。また相関演算として差の絶対値を用いるものとする。
仮に、輝度勾配の少ない箇所、例えば背景部分を特徴点とすると、隣接する画素の輝度値がほぼ等しいため、ある範囲での減算結果に対し、差が生じない。
【００２７】
一方、輝度勾配の高い箇所を特徴点とすると、隣接する画素の値が異なるため、ある範囲での減算結果に対し、差が生ずるのである。具体的には、輝度変化の少ない図６の特徴点１を採用し、探索範囲１の間で減算を行うとすると、得られる結果は左下のグラフの様になり、ほとんどの箇所で最小の値をとってしまうため、動き量の決定は困難である。一方、図６の特徴点２を採用し、探索範囲２の間で減算を行うとすると、得られる結果は右下のグラフの様になり、ほぼ２点程度にしぼられる。これは、さらに、他の特徴点をとり、その探索範囲との減算結果を探索範囲の各画素ごとに累積加算することによって、動き量をしぼり込むことができることを示している。
【００２８】
再び、図５に戻って特徴点抽出動作について説明する。本発明の特徴点抽出は、輝度勾配がある閾値を越えるかどうかを、つまリ、隣接する画素の絶対値差が、ある閾値を越えるかどうかで判断する。そこである閾値を越える場合、その特徴点の輝度値と座標値を探索範囲決定部４に転送する。特徴点を検出する際に、まず撮像部１から画像記憶部２にデータが転送されるのと同期してラインメモリ７に一画素毎のデータが取り込まれる。
【００２９】
ラインメモリ７は１ライン分のバッファを有しておリ、ある画素とその上下左右の画素が同時に加減算器８から参照すべく構成する。そして、加減算器８では隣接する画素値の差を求め、さらに絶対値演算器９で絶対値を求め比較器１０に転送する。比較器１０では閾値よリ高いかどうかの判断を行い、該当する画素の輝度値、座標値、及びその特徴点を抽出した順序を示す特徴点番号を特徴点情報格納レジスタ１１に蓄える。
【００３０】
また、探索範囲制御部１２は、特徴点情報格納レジスタ１１に格納されている座標より探索領域内では新たな特徴点を格納しないことを実現するためのものである。これは、探索側の画像に対して参照側の特徴点が唯一に決定されるように制御することにより実現され、具体的な制御は、特徴点情報格納レジスタ１１に格納された特徴点の座標値と求めようとしている特徴点の座標値とのｘ，ｙ方向の距離を求め、その距離が一定値以下の場合には特徴点にしないようにすることにより実現できる。このように構成すると、特徴点の抽出は画像取り込みと並行して実行することが可能となる。
【００３１】
次に、相関演算のための探索範囲を決定して相関演算を行う動作について、図７，図８を用いて説明する。図７は特徴点抽出部３によって求めた特徴点および相関演算の概念を示したものである。左上の画像は時刻Ｔ１に撮像された画像Ｆ１、右上の画像は時刻Ｔ２に撮像された画像Ｆ２である。
【００３２】
図８は探索範囲決定部４を示すブロック図である。１３は特徴点抽出部３より転送された特徴点の座標を蓄える座標値用レジスタ、１４は相関演算部５で求められた動き量を格納する前フレーム動き量格納部、１５は前フレームの動き量から補正した座標値を生成するアドレス生成器、１６はアドレス生成器１５と座標値用レジスタ１３の値から探索範囲の右上を原点とするアドレスおよび特徴点番号に変換するアドレス変換器である。
【００３３】
まず、Ｔ１とＴ２との間で、画像Ｆ１のすべての特徴点を求め、Ｔ２で座標値用レジスタ１３に格納される。次に、Ｔ２とＴ３との間で画像Ｆ２が撮像部１から画像記憶部２に送られ画像Ｆ２の特徴点を求めるのと同時に、アドレス生成器１５で前フレームで求めた動き量を補正した値がアドレス変換器１６に送られる。なお、撮影の開始時点では、動き量の初期値は０が設定される。アドレス変換器１６は、例えば特徴点の個数分の差分回路および比較回路を有することで、どの特徴点か、および探索範囲の中で相対位置はどこかを求め、相関演算部５に該当するアドレスの輝度値と同期して送りだす。再び、図５を用いて説明すると、特徴点抽出部３で「像」のにんべんの中程を特徴点であると決定し、座標値用レジスタ１３に与えられる。アドレス生成器１５は動き量分を補正したアドレスに変換する。これは図７の画像Ｆ２’を生成することである。
【００３４】
このようにすると、現フレームの動き量が前フレームの動き量と等しいならば、特徴点と同じアドレスが対応する点となるはずであリ、前フレームの動き量で補正した領域近傍を探索して相関演算を行うのがよい。そこでアドレス変換器１６では、特徴点の座標値と同じ座標値を中心とした、Ｍ×Ｎ画素の画像を生成する。これは、図５右下の画像に対応し、画像Ｆ１の特徴点の輝度値と、撮像部よリ取り込まれた画像Ｆ２’のＭ×Ｎ画素の輝度値とを相関演算した結果が出力される。同一フレームでの他の特徴点についても、同様にＭ×Ｎ画素の画像を生成して相関演算を行う。
【００３５】
さらに、相関演算部５について以下に説明を行う。例として相関演算部５は、下式
【００３６】
【数１】
0003966392.tif 000002
【００３７】
【数２】
0003966392.tif 000003
【００３８】
を満たす（ｘ，ｙ）を求めるものとする。ここで、ｋは特徴点の個数、Ｍは横方向の動き量の探索幅、Ｎは縦方向の動き量の探索幅、Ｓ（ｘ，ｙ）（ｉ）は動き量が（ｘ，ｙ）であるとした時のｉ番目の特徴点に対応する探索側の画素の輝度値、Ｒ（ｉ）は特徴点ｉの輝度値である。
【００３９】
また、動き量が（ｘ，ｙ）である場合に、画像Ｆ１の特徴点座標（ｘＲ，ｙＲ）と画像Ｆ２’の特徴点に対応する画素の座標（ｘＴ，ｙＴ）はｘＴ＝ｘＲ＋ｘｙＴ＝ｙＲ＋ｙなる関係がある。
【００４０】
次に、動き検出の動作について説明する。図９は相関演算部５のブロック図である。１７は特徴点抽出部３で求められた特徴点の輝度値を格納する特徴点用レジスタ、１８は画素の相関を求める画素演算部、１９は累積値を格納する累積メモリ、２０は最小値を求める最小値検出部である。
【００４１】
探索範囲決定部４で生成された特徴点番号によって、特徴点用レジスタ１７の対応する特徴点が選択され画素演算部１８に送られる。同時に範囲内座標は累積メモリ１９の該当箇所を選択する。さらに輝度値が与えられ、差和演算により相関値が求められ累積メモリ１９に返す。１フレームの処理が終了したら最小値検出部２０が累積メモリ１９の探索側の画素Ｍ×Ｎの中から相関値の最も少ない部分を選択し動き量として出力する。以上の様な構成により、実時間での高精度な動き検出が可能となる。
【００４２】
本発明では任意の探索範囲を設定することが可能であるため、例えは探索範囲決定部４で出力される範囲内座標値の生成箇所を少し変更して、図１０に示すように、参照側の矩形領域Ｌ１，Ｌ２を設定し、矩形領域Ｌ１，Ｌ２それぞれの特徴点の抽出及び探索範囲を決定し、各領域ごとに相関演算を行い、２つの動き量を検出することで回転、拡大縮小を含むアフィン変換のパラメータを求めることができる。具体的には図１０に示すように、矩形領域Ｌ１，Ｌ２から特徴量を求め、さらに探索側の画像と相関演算を行い、矩形領域Ｌ１，Ｌ２に一致する矩形領域Ｒ１，Ｒ２を求める。
【００４３】
矩形領域Ｌ１，Ｌ２の矩形中心座標を、（Ｘ（F1，1），Ｙ（F1，1））、（Ｘ（F1，2），Ｙ（F1，2））、矩形領域Ｒ１，Ｒ２の矩形中心座標を、（Ｘ（F2，1），Ｙ（F2，1））、（Ｘ（F2，2），Ｙ（F2，2））とする。参照側の任意の座標位置を（ＸL，ＹL）、探索側の任意の座標位置を（ＸR，ＹR）と表すと、次の式によって、相互にアフィン変換される。
【００４４】
【数３】
0003966392.tif 000004
【００４５】
【数４】
0003966392.tif 000005
【００４６】
次に、本発明を用いた場合の演算時間を、従来のブロックマッチング方式と比較して説明を行う。
特徴点方式では、特徴点の検出に必要な時間は、参照する画像の面積に比例する。また、相関演算に必要な時間は、探索範囲の面積と特徴点の個数に比例する。
【００４７】
ここで参照する画像の面積を３２０×２４０画素、描出する特徴点の個数を２５箇所、探索範囲を２０画素×２０画素とすると、演算に要する時間は７８，０００×α＋１０，０００×βとなる。ここで、αは輝度勾配を求める際の一画素単位の演算量、βは画素の相関を求める一画素単位の演算量である。
【００４８】
一方、ブロックマッチング方式を用いた場合は、２０×２０×３２０×２４０β＝３０，７２０，０００βとなる。仮にαとβかほぼ同じ程度の演算量であると仮定すると、特徴点方式の演算に要する時間は８８，０００βとなりブロックマッチング方式は特徴点方式の３００倍以上の演算量が必要となる。
【００４９】
また、ブロックマッチング方式でも輝度変化を観測して参照面積を２５程度に抑えれば演算量は同等となるか、図１１に示すように、探索側に同じ文字がほぼ隣接している場合などではマッチングが困難になり、動き量が決定できない場合があり、結果が著しく劣ってしまう。
【００５０】
次に、画像合成部について説明する。
図１２は、合成処理の流れをフローチャート化したものである。
合成画像を記録するメモリは、画像記憶部２を使う。撮像部１から送られてる撮像画像を記録しておく領域とは別の領域をあらかじめ割り当てておく。
【００５１】
この領域を図１３の合成画像メモリ３７とする。
合成画像メモリ３７上の左上の点を原点とし、以降、位置（ｘ，ｙ）の画素をｆ（ｘ，ｙ）で表現する。メモリはアドレスを指定することでアクセスできるが、この場合、合成画像メモリ３７の幅をｗ、原点のアドレスをｚとすると、ｆ（ｘ，ｙ）のアドレスは、ｚ＋ｙ×ｗ＋ｘで表される。
【００５２】
まず最初の画像であるＦ１を、Ｆ１の左上の点が合成画像メモリ３７上の（ｘ0，ｙ0）に来るように、合成画像メモリ３７上に上書きする（ステップＳ１）。初期位置（ｘ0，ｙ0）は予め決めておく。Ｆ１上の画素は、ｇ1（ｘ，ｙ）でアクセスできるとする。これもｆ（ｘ，ｙ）と同様に、Ｆ１の幅と原点のアドレスを使って各画素のアドレスを計算できる。上書き操作は、式を使ってかけば、ｆ（ｘ＋ｘ0，ｙ＋ｙ0）＝ｇ1（ｘ，ｙ）（但し、０≦ｘ＜ｗ1、０≦ｙ＜ｈ1、ｗ1：Ｆ１の幅、ｈ1：Ｆ１の高さ）となる。
【００５３】
次に、Ｆ２の画像の内、Ｆ１と重ならない部分だけ上書きする。図１３は、Ｆ１、Ｆ２、Ｆ３が上書きされた状態である。
相関演算部５から得られる動き量が、平行移動だけでなく、回転や拡大縮小まで含んでいる場合は、前記のアフィン変換の行列の形で得られる。ここで、Ｆ１とＦ２の間で図１０のようにそれぞれの２つの矩形領域Ｌ１、Ｌ２とＲ１、Ｒ２の対応位置を求めてあるとし、Ｆ１の２つの矩形領域Ｌ１、Ｌ２の中心座標を（Ｘ（F1，1），Ｙ（F1，1））、（Ｘ（F1，2），Ｙ（F1，2））、Ｆ２の２つの矩形領域Ｒ１、Ｒ２の中心座標を（Ｘ（F2，1），Ｙ（F2，1））、（Ｘ（F2，2），Ｙ（F2，2））とする。この時、前記のアフィン変換の式より、Ｆ１からＦ２へのアフィン変換のパラメータ、
【００５４】
【数５】
0003966392.tif 000006
【００５５】
が相関演算部５より得られる（ステップＳ４）。簡単に表現するために、以下、これを、
【００５６】
【数６】
0003966392.tif 000007
【００５７】
と表す。アフィン変換でなく、単なる平行移動だけの場合、Ｂ1，2、Ｃ1，2は０となる。
Ｆ２上の画素位置を（ＸF2，ＹF2）、合成画像上の上書きされるべき対応画素位置を（Ｘ’F2，Ｙ’F2）とすると、Ｆ１の左上の点が合成画像メモリ３７上の（ｘ0，ｙ0）にある時、次の式で変換式が定義される。
【００５８】
【数７】
0003966392.tif 000008
【００５９】
これによって、（Ｘ’F2，Ｙ’F2）の点に対応する、Ｆ２上の画素位置（ＸF2，ＹF2）が求められる（ステップＳ５）。一般に、（Ｘ’F2，Ｙ’F2）が整数の時、（ＸF2，ＹF2）は整数とは限らないので、Ｆ２上の位置（ＸF2，ＹF2）の画素ｇ2（ＸF2，Ｙf2）は、通常は、周囲の画素から補間して決める。しかし、最も簡単に求めるには、（ＸF2，ＹF2）の小数点以下を四捨五入して整数にしてしまえば良い。つまり、最近傍の点を代わりに使うことになる。四捨五入操作をround（）で表すと、（ＸF2，ＹF2）の最近傍の画素位置は、（round（ＸF2），round（ＹF2））と表せる。
【００６０】
従って、合成画像メモリ３７上の位置（Ｘ’F2，Ｙ’F2）の画素ｆ（Ｘ’F2，Ｙ’F2）は、Ｆ２上の画素ｇ2（round（ＸF2），round（ＹF2））で上書きすれば良く、
0003966392.tif 000009
と表すことができる（ステップＳ６）。しかし、（Ｘ’F2，Ｙ’F2）に対応するＦ２上の点（ＸF2，ＹF2）が、Ｆ２内に存在するかどうかをチェックしなければいけない。そのチェックを最も簡単に行なうには、（round（ＸF2），round（ＹF2））の座標値を計算してその座標がＦ２の画像の大きさに収まるかどうかを次式で調べればわかる。
【００６１】
次式をすべて満たせば、（Ｘ’F2，Ｙ’F2）は対応するＦ２の画素値を求めることができる。但し、ｗ2：Ｆ２の幅、ｈ2：Ｆ２の高さ、である。
０≦round（ＸF2）＜ｗ2
０≦round（ＹF2))＜ｈ2
これを使って、合成画像上のすべての位置で対応するＦ２の画素値を求めることができるかチェックし（ステップＳ７）、次に前の画像であるＦ１と合成画像上で重なっていないかチェックする。これは、次式を満たしているかどうかをチェックすれば分かる（ステップＳ１１）。
【００６２】
ｘ0≦Ｘ’F2＜ｘ0＋ｗ1
ｙ0≦Ｙ’F2＜ｙ0＋ｈ1
もし上式をすべて満たしていれば、Ｆ１と重なっていることになるので、上書きしない。これによって、Ｆ１と重ならない部分のＦ２の画像のみが合成画像上に上書きされることになる（ステップＳ１２）。次にＦ３の画像を上書きする場合を考える。Ｆ３上の画素位置を（ＸF3，ＹF3）、合成画像上の上書きされるべき対応画素位置を（Ｘ’F3，Ｙ’F3）とし、Ｆ２とＦ３の間の動き情報を、
【００６３】
【数８】
0003966392.tif 000010
【００６４】
とする。Ａ2，3、Ｂ2，3、Ｃ2，3、Ｄ2，3の値は、Ｆ１とＦ２の間の動き情報と同様の求め方で良い。これらを使って、（ＸF3，ＹF3）と（Ｘ’F3，Ｙ’F3）の関係が次の式で定義される（ステップＳ４、Ｓ５）。
【００６５】
【数９】
0003966392.tif 000011
【００６６】
これと次の式によって、Ｆ３の上書き操作が表される（ステップＳ６、Ｓ１２）。
ｆ（Ｘ’F3，Ｙ’F3)＝ｇ3（round（ＸF3），round（ＹF3））
合成画像上のどの画素を上書きすべきかも、Ｆ２の場合と同様にチェックできる。すなわち、まず、合成画像上の点がＦ３の画像に収まるかどうかを次式でチェックする（ステップＳ７）。但し、ｗ3：Ｆ３の幅、ｈ3：Ｆ３の高さ、である。
【００６７】
０≦round（ＸF3）＜ｗ3
０≦round（ＹF3))＜ｈ3
次に、前の画像であるＦ２と重なっていないかどうか次式でチェックする。合成画像上の位置（Ｘ’F3，Ｙ’F3）に対応するＦ２上の位置を（Ｘ”F3，Ｙ”F3）とすると、（Ｘ’F3，Ｙ’F3）と（Ｘ”F3，Ｙ”F3）の関係は、合成画像とＦ２の関係そのままであり、
【００６８】
【数１０】
0003966392.tif 000012
【００６９】
で表される（ステップＳ８、Ｓ９）。従って、（Ｘ’F3，Ｙ’F3）からＦ２上の対応位置（Ｘ”F3，Ｙ”F3）を求めることができる。この（Ｘ”F3，Ｙ”F3）が、画像Ｆ２内に収まっているかどうかは、次式を満たすかどうかを調べれば良い。
【００７０】
０≦round（Ｘ”F3）＜ｗ2
０≦round（Ｙ”F3))＜ｈ2
上式をすべて満たしていれば、Ｆ２内に収まることになり、Ｆ３とＦ２が重なる部分であることを示す（ステップＳ１０、Ｓ１１）。結局、合成画像上のすべての点で（ステップＳ１３、Ｓ１４）、Ｆ３の対応点があり、Ｆ２の対応点がないものをチェックし、チェックに通ったものを上書き可能として、Ｆ３の画素値で上書きすれば良い（ステップＳ１２）。Ｆ４以下の画像を上書きする場合も、変換の行列の数が、
【００７１】
【数１１】
0003966392.tif 000013
【００７２】
の様に増えていくだけで、同様の計算を繰り返せば良い。これをすべての時系列画像について繰り返す（ステップＳ１５、Ｓ１６、Ｓ１７）。
この様に、相関演算部５から得られる動き量に従って、画像を上書きしていくことで、図１３のような合成画像が得られる。
【００７３】
次に、画像送信部、画像受信部について説明する。
画像送信部３０では、画像合成部３６から合成画像を得て、送信する。
通信回線は、様々な種類のものを使えるが、ここではクロック、enable、データ、グラウンド、供給電圧（＋５Ｖ）の５本だけの簡単なシリアル接続例で説明する。グラウンド、供給電圧は時間によらず一定なので、図１４の信号遷移図はこのうちクロック、enable、データのみを記述している。各信号線を表す折れ線は、電圧レベルを示し、下側がグラウンドレベル、上側が供給電圧レベルを示す。信号線の電圧を供給電圧レベルにすることを「上げる」、逆にグランドレベルにすることを「下げる」、グラウンドレベルを「ロー」、供給電圧レベルを「ハイ」と、以下、表現する。
【００７４】
クロック信号は、ローとハイの状態を等しい時間間隔だけ交互に繰り返す。
画像通信フォーマットは数多く存在するが、ここでは最も簡単なフォーマットで説明する。ここで、合成画像の大きさとして、幅がＷ、高さがＨとし、合成画像の左上の点を原点として、原点から右方向を＋Ｘ方向、下方向を＋Ｙ方向とする。各画素は、ＲＧＢの三原色から構成されるとし、合成画像上の位置（Ｘ，Ｙ）の画素のＲ成分をｆR（ｘ，ｙ）、Ｇ成分をｆG（ｘ，ｙ）、Ｂ成分をｆB（ｘ，ｙ）と表すとする。各成分の値は１バイトで表されるとする。
【００７５】
まず最初に、図１４のように、画像の幅Ｗを送る。Ｗを２バイトとし、最上位bit（bit15）から最下位bit（bit0）まで順に流す。始めに送信側が送信状態でないときは、図の時刻Ｔ０のように、enableを上げておく。データを送る時は、まずenableを下げてやる。enableを下げるタイミングは、時刻Ｔ１のように、クロックが下がる時にしておく。まず、データを送る前にスタートビットを送る。すなわち、時刻Ｔ２で信号線をロー、時刻Ｔ３でハイ、時刻Ｔ４でローになっているようにする。
【００７６】
次に、Ｗを表す各bitの０、1 をロー、ハイとして、bit15からbit0まで順にクロックの立ち下がりで設定する。次に、スタートビットと同様にストップビットを送る。最後にenableを立ち上げて、データセットの送信を終了する。
次に画像の高さＨを送る。これはＷと全く同じ手順であり、Ｗのデータの代わりにＨのデータを送るだけである。
【００７７】
次に各画素データを送る。図１５はこれを説明した図である。クロック、enableは、図１４と同じタイミングなので、省いてある。時間は左から右へ、上から下へ流れている。Ｗなどと同様に、スタートビット、ストップビットの間にデータを挟んで送れば良い。各画素は、Ｒ、Ｇ、Ｂ成分それぞれが８bitのデータを持つので、最初にＲ、次にＧ、最後にＢと３回にデータを分けて送ることになる。
【００７８】
従って、全ての画素を送るには、（Ｈ×Ｗ×３）回だけ、８bitデータを送れば良いことになる。画素の送る順は予め決めておけば良い。例えば、最初は、ｆR（０，０）、次は、ｆG（０，０）、ｆB（０，０）を順に送り、次にｆR（１，０）、ｆG（１，０）、ｆB（１，０）、次にｆR（２，０）、ｆG（２，０）、ｆB（２，０）という具合に送っていく。右端ｆB（Ｗ−１，０）まで送ったら、次の行の左端ｆR（０，１）から順に同様に送っていく。最後は、ｆB（Ｗ−１，Ｈ−１）となる。
【００７９】
受信する方では、この逆の操作を行なえば良い。
すなわち、まず、enable信号を監視して、enableがローになったら、クロックの立ち上がり時に信号線の値を読むようにする。信号を読み始めて、信号がロー、ハイ、ローと変化してスタートビットがあることを確認する。次に決まったビット数だけデータを読み、信号がロー、ハイ、ローと変化してストップビットがあることを確認する。enableがハイになったら、信号線の値を読むのをやめる。
【００８０】
決まったビット数とは、具体的には、最初と２回目のデータは、全体の幅と高さが16bitで入っているので、16となる。それ以外は、画素データなので、８である。２回のデータ受信で全体の幅Ｗと高さＨが分かったら、（Ｗ×Ｈ×３）回だけ、８bitデータを受信すれば良い。受信した画素データは予め決めた順序で解釈すれば良い。前の例で行けば、最初は、ｆR（０，０）であり、その後、ｆG（０，０）、ｆB（０，０）、ｆR（１，０）と続き、右端ｆB（Ｗ−１，０）までいったら、次の行の左端ｆR（０，１）から順に同様に解釈していく。最後は、ｆB（Ｗ−１，Ｈ−１）となる。
これによって、合成画像の送受信が可能となる。
【００８１】
〔実施形態２〕
図２は、本実施形態２の画像合成通信装置の構成を示すブロック図である。
１は画像を撮像する光学系やＣＣＤなどで構成される撮像部、３０は撮像部１から転送された画像を送信する画像送信部、３３は送信側の上記各部を制御する制御部、３２は３０から送られてきた画像を受信する画像受信部、２は画像受信部３２から転送された画像データを格納する画像記憶部、３は画素演算に用いる点を抽出する特徴点抽出部、４は相関演算の探索範囲を決定する探索範囲決定部、５は画素間の相関をとり、動き量を出力する相関演算部、３６は画像を合成する画像合成部、３１は受信側の上記各部を制御する制御部である。
【００８２】
上記図２に示す、上記撮像部１と、画像送信部３０及び制御部３３は、画像情報受信側の画像合成通信装置が一体に、或は分離して備えている場合と、別の画像合成通信装置が備えている場合とがある。
本実施形態２において、送受信される画像は、撮像部で撮影された画像そのままであり、この送受信も、先の合成画像の送受信と全く同じ通信方法を使えば実現できる。
【００８３】
すなわち、最初に撮像部で撮影された画像の幅Ｗと高さＨを送り、その後、（Ｗ×Ｈ×３）バイト分だけ画素の情報を送れば良い。
画像受信部３２も、実施形態１の画像受信部３２と全く同様に、受信したデータを解釈してやれば良い。
受信した画像は、画像記憶部２に格納され、画像合成部３６によって合成される。合成の方法は、実施形態１と同じで良い。
【００８４】
〔実施形態３〕
図３は、本実施形態３の画像合成通信装置の構成を示すブロック図である。
１は画像を撮像する光学系やＣＣＤなどで構成される撮像部、２は撮像部１から転送された画像データを格納する画像記憶部、３は画素演算に用いる点を抽出する特徴点抽出部、４は相関演算の探索範囲を決定する探索範囲決定部、５は画素間の相関をとり、動き量を出力する相関演算部、３５は、相関演算部５から得られる動き量と画像記憶部２の画像データから前の画像と重ならない部分（更新画像）を算出する更新画像算出部、３０は相関演算部５から得られる動き量と更新画像算出部３５から得られる更新画像を送信する画像送信部、３１は送信側の上記各部を制御する制御部、３２は画像送信部３０から送られてきた動き量と更新画像を受信する画像受信部、３４は画像受信部３２から転送された画像データを格納する画像記憶部、３６は画像記憶部の画像と画像受信部３２から得る動き量から画像を合成する画像合成部、３３は受信側の上記各部を制御する制御部である。
【００８５】
図１６は、本実施形態３の画像合成通信装置の送受信情報のフォーマットの説明図である。送受信される情報は、相関演算部５から得られる動き量と更新画像算出部３５から得られる部分画像である。実際に送信する際は、前の実施形態１の説明と同様に、enalbe、クロック、電源電圧、グランドなどの線、送信シーケンスとして、データ信号上のスタートビット、ストップビットなどが必要だが、手順は一緒なので、データ部分だけを抽出して説明してある。
【００８６】
動き量とは、画像合成の説明で使われた２×２の行列の値で良い。回転、拡大縮小せずに単なる平行移動量だけ使って合成する場合は、Ｘ方向とＹ方向のずれ量だけで良い。
図１６のように、まず、前の画像との間のアフィン変換を行なう行列の値を送る。例えば、画像Ｆ３の場合、画像Ｆ２と画像Ｆ３の間の変換になるので、先の例であげた表現方式を借りれば、変換行列の要素の値、Ａ2，3、Ｂ2，3、Ｃ2，3、Ｄ2，3を順に送れば良い。データは浮動小数点で表現されているとして、そのビット数は、どこまで精度を求めるかによるが、32bitあれば一般に充分である。
【００８７】
パラメータを送った次は、画像の幅と高さを送る。ここではそれぞれ２バイトとしておく。
次に更新画像算出部３５から得られる部分画像を送る。更新画像算出部３５では、前の画像と重ならない部分を計算する。計算の仕方は、画像合成部３６で説明した方法とほぼ同様になる。例えば、画像Ｆ３とＦ２の例で言えば、Ｆ３上の点を（ｘ，ｙ）、それに対応するＦ２上の点を（ｘ’，ｙ’）とすると、（ｘ，ｙ）から（ｘ’，ｙ’）への変換式は、次の通りになる。但し、（ｘ1，ｙ1）、（ｘ2，ｙ2）はＦ３上の点であり、Ｆ２上の点（ｘ’1，ｙ’1）、（ｘ’2，ｙ’2）に対応している。
【００８８】
【数１２】
0003966392.tif 000014
【００８９】
これでＦ３上の点がＦ２上でどの位置に移されるのか分かるので、
０≦round（ｘ）＜ｗ2
０≦round（ｙ）＜ｈ2
を共に満たす場合は、その点は重なっていることになる。この処理をＦ３上のすべての点において行なえば、Ｆ２と重ならないＦ３上の点が分かる。以後、重ならない点を送信画素、重なる点を非送信画素と呼ぶことにする。送信画素をすべて送る際には、送信画素と非送信画素を受信側で解釈できるように送ってやらねばならない。マスク画像を別に送る手もあるが、それでは送信するデータ量が多くなってしまう。そこで、重ならない領域は大抵連続した領域である特徴を利用して、送れば良い。
【００９０】
図１７は、これを説明したフローチャートである。
まず、送信画素から非送信画素かを判断を開始する位置「判定ポイント」をＦ３の左上の点に設定する（ステップＳ２１）。次に、その行を判定ポイントから右へみていって、「次の送信画素までの画素数」を数える（ステップＳ２２）。判定ポイントが送信画素であるなら、０になる。判定ポイントが非送信画素で、非送信画素がｐ画素続いていて、その後が送信画素であったら、「次の送信画素までの画素数」はｐになる。もし、送信画素がその行の判定ポイント後になかったら、行の残りの画素数を「次の送信画素までの画素数」とする。「次の送信画素までの画素数」が求まったら、それを２バイトで表して、データとして送信する。
【００９１】
次に、「次の送信画素数」だけ、判定ポイントを右へ進める（ステップＳ２３）。ステップＳ２４において、この時点で行の右端までいってしまったらステップＳ２５に進み、最後の行でなかったらステップＳ２６に進み、次の行の左端の点を判定ポイントとして設定して、また、ステップＳ２２の「次の送信画素までの画素数」を数える処理に戻る。図１６の例では、「次の送信画素までの値（ｔ）」を送った後で、次の行に移っている。ステップＳ２４において、まだ右端までいかない場合は、ステップＳ２７に進み、判定ポイントを次の送信画素にし、そこから右へ見ていって、「次の非送信画素までの画素数」を数える。もし送信画素がｑ画素続いていたら、ｑになる。そして「次の非送信画素までの画素数」を２バイトで表して、データとして送信する（ステップＳ２７）。
【００９２】
次に、画素のデータ、すなわちＲ、Ｇ、Ｂの値をその画素数分だけ順に送る。図１６の例では、Ｒ（ｐ，０）から始まって、Ｂ（ｐ＋ｑ−１，０)まで送っている（ステップＳ２８）。
ステップＳ２９において、この時点で行の右端までいってしまったら、最後の行でなければ、次の行の左端の点を判定ポイントとして設定して、ステップＳ２５に戻る。右端までいかない場合は、判定ポイントを次の非送信画素にして、最初の処理である、ステップＳ２２の「次の送信画素までの画素数」を数える処理に戻る。ステップＳ２５において、最後の行で右端まできてしまったら、処理はすべて終る。このようにして、前の画像と重ならない部分の画像を送ることができる。
【００９３】
受信する側では、これと逆の操作を行なえば良い。図１８はこれを説明したフローチャートである。
変換行列の値、画像の幅、高さのデータは既に受信しているとする。
図３の受信側の画像記憶部３４に、受信する画像の記憶領域を確保しておく。この大きさは、既に受信している画像の幅、高さから決められる。確保した領域の左上を原点とした位置「描画ポイント」を決めることで、その記憶領域の特定位置へ画素データを書き込むことができるようになっている。まず、描画ポイントを確保した記憶領域の左上に取る（ステップＳ３１）。
【００９４】
次に、「次の送信画素までの画素数」を受信する（ステップＳ３２）。この数の画素は、非送信画素として送られてこないので、描画ポイントをこの数だけ右にシフトしておく（ステップＳ３３）。ステップＳ３４において、描画ポイントが右端に来たかどうかを判断する。もし右端に来ていたら、ステップＳ３５に進み、最後の行かどうかを判断する。もし最後の行でなければ、ステップＳ３６において、描画ポイントを次の行の左端にして、ステップＳ３２の次の送信画素までの値を受信する処理に戻る。
【００９５】
ステップＳ３４において、描画ポイントが右端に来ていなければ、ステップＳ３７に進み、「次の非送信画素までの画素数」を受信する。ステップＳ３８において、この画素数分だけデータが送られてくるので、それを受信しながら、データを画像記憶部３４に書き込んでいく。具体的には、各画素のデータは、Ｒ、Ｇ、Ｂの順で受信されるので、その値を使って、描画ポイントの位置へ画素データを書き込む。次に描画ポイントを一つ右へシフトして、次の画素のデータ、Ｒ、Ｇ、Ｂを受信する。これを画素数分だけ繰り返す。
【００９６】
その処理が終ったら、ステップＳ３９において、描画ポイントが右端にきたかどうかを判断する。もし右端に来ていたら、ステップＳ３５に進んで、最後の行かどうかを判断する。もし最後の行でなければ、描画ポイントを次の行の左端にして、ステップＳ３２の次の送信画素までの値を受信する処理に戻る。ステップＳ３５において、右端で最後の行であるなら、この画像のデータの受信は終了となる。
【００９７】
これによって、必要最小限の画像が受信されたことになる。
これらの処理を繰り返すことで、複数の画像データを画像記憶部に記録できる。次に、これらのデータから画像を合成する。手法は、先に説明した手法とまったく同じである。合成に必要なデータは、連続する２画像間の変換行列と各画像の画素データである。
【００９８】
ここで変換行列は送られたきたものを使えばよいし、各画像の画素データは、すべて送られてきたわけではないが、合成には、前の画像と重ならない部分しか使われないので、画像記憶部に記録されている部分的な画素データだけで充分である。これによって、受信したデータから画像を合成することができる。
【００９９】
【発明の効果】
以上のように、本発明によれば、解像度の低いカメラを用いても、被写体の一部を複数枚写して、合成して送ることで、離れた場所に広画角、高精細の画像を送れる効果がある。
また、合成を被写体側で行なうだけでなく、撮影画像をそのまま送り、受信側で合成させることで、被写体側が通常のテレビ電話、テレビ会議のシステムなどしか所有していなくても、低解像度のカメラと送信設備で、広画角、高精細の画像を相手側は得ることができる。
【０１００】
また、その際、撮影画像をそのまま送らず、前の画像との重なり具合を調べて、重なっていない部分のみを送ることで、必要最低限の画像のみを送ることができ、通信量を減らすことができる。
さらに、これらの画像合成の基本となる時系列画像間の動き量検出は、輝度勾配が画像面に一様に存在していない場合でも、任意の箇所を特徴点として相関演算することができるため、文書などの背景が真っ白なものでも精度良く動き量の検出が可能であり、代表点方式より精度的に優れている。
また、ブロックマッチング方式に比べると演算量が２桁程度少なくなり、フレームレートでのリアルタイム処理も可能である。
【図面の簡単な説明】
【図１】本実施形態１の画像合成通信装置の構成を示すブロック図である。
【図２】本実施形態２の画像合成通信装置の構成を示すブロック図である。
【図３】本実施形態３の画像合成通信装置の構成を示すブロック図である。
【図４】本発明の画像合成に係る連続撮像した画像を示す図である。
【図５】本発明の画像合成通信装置に係る特徴点抽出部のブロック図である。
【図６】本発明に係る輝度勾配の高い箇所を選択する利点を説明するための図である。
【図７】本発明の画像合成通信装置に係る探索範囲決定部のブロック図である。
【図８】本発明の画像合成通信装置に係る相関演算部のブロック図である。
【図９】本発明に係る相関演算のための探索範囲を決定する様子を説明するための図である。
【図１０】本発明に係るアフィン変換を検出する様子を説明するための図である。
【図１１】本発明に係るブロックマッチング方式の問題点を説明するための図である。
【図１２】本発明に係る合成処理のフローチャートである。
【図１３】本発明に係る合成画像の様子を説明するための図である。
【図１４】本発明に係るデータを送る際の各信号線の状態を説明するための図である。
【図１５】本発明に係る合成画像の送信を説明するための図である。
【図１６】本発明に係る更新画像の送信を説明するための図である。
【図１７】本発明に係る送信画素の判定を説明するためのフローチャートである。
【図１８】本発明に係る受信画素の格納を説明するためのフローチャートである。
【図１９】従来の代表点マッチング方式の概念図である。
【図２０】従来のブロックマッチング方式の概念図である。
【符号の説明】
１  撮像部
２  画像記憶部
３  特徴点抽出部
４  探索範囲決定部
５  相関演算部
３０  画像送信部
３１  制御部
３２  画像受信部
３３  制御部
３４  画像記憶部
３５  更新画像算出部
３６  画像合成部
【図１】
0003966392.tif 000015
【図２】
0003966392.tif 000016
【図３】
0003966392.tif 000017
【図４】
0003966392.tif 000018
【図５】
0003966392.tif 000019
【図６】
0003966392.tif 000020
【図７】
0003966392.tif 000021
【図８】
0003966392.tif 000022
【図９】
0003966392.tif 000023
【図１０】
0003966392.tif 000024
【図１１】
0003966392.tif 000025
【図１２】
0003966392.tif 000026
【図１３】
0003966392.tif 000027
【図１４】
0003966392.tif 000028
【図１５】
0003966392.tif 000029
【図１６】
0003966392.tif 000030
【図１７】
0003966392.tif 000031
【図１８】
0003966392.tif 000032
【図１９】
0003966392.tif 000033
【図２０】
0003966392.tif 000034