フレームレートと画像の解像度は、演算回路のデータ処理能力や伝送能力に対して、どちらか一方を大きくすると入力データを処理しきれなくなるため、もう一方を小さくせざるを得ず、両立しない関係にある。一般的な動画像のフレームレートは30fpsや60fpsなどであるが、600fpsや1200fps程度の高速撮影を行うと、原動画の画素レートは撮影するフレームレートに比例して大きくなる。例えば、単位時間当たりのビット数を表すビットレートは、ビットレート=画素レート×3(RGB)×8(濃度値)であるが、解像度を1920×1080画素として60fpsで撮影した場合、原動画の画素レートビットレートは1920×1080×3(RGB)×8(濃度値)×60=約3Gbpsになる。フレームレートを10倍にして600fpsの高速撮影を行なった場合、その原動画の画素レートビットレートは1920×1080×3(RGB)×8(濃度値)×600=約30Gbpsと10倍になる。このような条件で高速撮影する場合は毎秒3.7GB程度の原動画を圧縮処理しなければならない。
圧縮の演算ついて、例えばメモリへの入力を32bitとした場合、32bit×1GHz=32Gbpsであるので、クロック周波数を1GHz程度にすれば、撮影した原動画データをメモリに格納することが可能となる。さらにメモリから同時に入力データと同程度の量のデータを出力することを考えると、2GHz程度のクロック周波数を必要とする。
動画像圧縮の規格によって演算の内容は異なるが、原動画の画素レートを小さくすることで動画像圧縮に関する演算回数が減るため、クロック周波数を下げられるようになり、その結果、消費電力を抑えることができる。
そこで本願においては、全フレームについて撮影した全領域の画像データを取得することをせず、部分的に指定した所定サイズの領域画像データを取得するフレームを設ける。全領域の画像データについて取得したフレームは、その1つ前のフレームから全領域について更新するが、所定サイズの領域の画像データを取得したフレームは、その領域の画像を更新する。
所定サイズの領域の画像を取得するフレームを設けることで、原動画の画素レートを低減でき、所定サイズの領域を取得するフレームの頻度を決めておけば、原動画の画素レートを予め定めることができる。また、所定サイズの領域の画像データを出力したフレームにおいて、所定サイズの領域以外については、その前のフレームと同じ画像なので圧縮符号化の演算を大幅に減らすことが可能となる。
画像を取得する領域の所定サイズと、所定サイズの領域の画像を取得するフレームの頻度は、動画像圧縮に関する演算処理のクロック周波数を予め設定しておき、そのクロック周波数の範囲内で処理可能な原動画の画素レートに基づいて設定される。このような設定とすることで、高フレームレート撮影が必要な領域のサイズに左右されることなく原動画の画素レートを抑制できる。
また、高フレームレート撮影の必要性がある領域を抽出して変化領域とし、この変化領域内で所定サイズの領域をフレーム毎に指定する。1フレームでは一部の領域の画像しか取得されないが、数フレームかけて高フレームレート撮影が必要な変化領域内を更新することができる。
また、単位時間あたりの画像変化が大きくない領域についても、その変化を捉える必要があるので、所定サイズの領域の画像データを所定フレーム数取得するたびに撮影可能な全領域の画像データを取得すればよい。画像変化の大きい領域を変化領域としていたが、その撮影対象が移動することが考えられるので、全領域画像を取得するフレーム毎に変化領域を設定しなおすとよい。
この方法により撮影される原動画の画素レートの例として、以下のように決めても良い。所定サイズの領域の画像データを所定フレーム数取得し、その度に1フレーム全領域の画像データを取得することにする。全領域の画像データのフレームレートは通常の動画像のフレームレート程度でよいとして60fpsであるとすると、(所定フレーム数+1)=(所定サイズ領域の画像のフレームレート)/(全領域画像のフレームレート)とすれば良い。600fpsで高速撮影するのであれば、所定サイズの領域の画像データを取得するフレームを9フレーム撮影するたびに、全領域の画像データを取得するフレームを1フレーム撮影することになる。
撮影する全領域を1920×1080画素として、所定サイズを640×360画素とする。全領域の画像データによる原動画の画素レートビットレートが1920×1080×3×8×60=約3Gbpsで、所定サイズの領域の画像データによる原動画のビットレート画素レートが640×360×3×8×(600−60)=約3Gbpsで合計約6Gbpsになる。全てのフレームで全領域の画像データを出力した場合の約30Gbpsと比べて画素レートビットレートを格段に抑えられている。また、メモリに32bitで格納する場合のクロック周波数は0.2GHz程度であり、書き込みと読み出しを両方する場合で0.4GHz程度となる。逆に、6Gbpsで600fpsの動画像で、毎フレーム全領域の画像を取得する場合は、1フレームの解像度は864×486画素(縦横比16:9の場合)程度に小さくせざるを得ない。
所定サイズの領域の設定方法について、各フレームを仮想的に時間軸に沿って並べて表示した図1を参照しながら説明する。フレームR1、フレームR2は撮影した全領域の画像データを取得したフレームである。全領域の画像データを取得したフレーム間にあるフレームC11、フレームC12、フレームC13、フレームC21は所定サイズの領域の画像データを取得したフレームである。それぞれのフレームにおいて画像データを取得する領域は太線で囲んで表しており、変化領域は図中の説明で指定されている領域である。
フレームR1は全領域の画像データを取得し、単位時間当たりの画像変化が大きい領域を抽出し、変化領域を設定する。その次のフレームC11では変化領域内の所定のサイズの領域c111の画像データを取得する。フレームC11の次のフレームC12では、フレームC11で取得した画像データの領域c112とは別に、再び変化領域内に所定サイズの領域c121を設定し、画像データを取得する。フレームC13では、さらに変化領域内に所定サイズの領域c131を設定し、画像データを取得する。このように変化領域内で所定サイズの領域をフレーム毎に指定しながら画像データを取得する。
フレームC11、フレームC12、フレームC13と同様にして、それ以降の所定サイズの領域を指定する。指定された領域の画像データを取得するフレームを所定フレーム数撮影した後で全領域の画像データを取得するフレームを撮影し、そのフレームをフレームR2とする。全領域の画像データによる2つのフレームを比較することで、変化領域を更新し、フレームC21では更新された変化領域内で所定サイズの領域を指定する。それ以降のフレームも同様に所定サイズの領域を指定する手順を繰り返し、更新された変化領域内でフレーム毎に所定サイズの領域を指定し、指定された領域の画像データを取得する。
以上に説明した本発明の基本機能について、以下のような構成によって実施することが考えられる。実施の形態については、適宜図面を参照しつつ説明する。また、以下の実施形態は具体的構成をこれに限るものでなく、その趣旨を逸脱しない範囲において設計変更可能である。
[第一の実施形態]
第一の実施形態の構成を示した図が図2である。 本実施形態における動画像撮影装置は撮影手段1、変化領域設定手段2、指定領域設定手段3、画像出力手段4をそなえて構成される。
撮影手段1は、撮影可能な領域のうち指定された領域の画像データを出力可能な撮影手段を想定している。そのような撮影手段とするには、図3の様な構成が考えられる。図3では撮影装置1を、撮像素子11と、A/D変換手段12と、カウンタ13と、読み出し制御手段14をそなえて構成している。
撮像素子11は、撮影レンズを通り抜けた光の情報を電気信号に変換するCCDやCMOSなどのイメージセンサである。受光領域で光電変換した画像情報を読み出し制御手段14の読み出し制御に応じて出力する。
A/D変換手段12は、撮像素子11から読み出したアナログ信号をデジタル信号に変換する。A/D変換手段12から出力する画像は、例えばRGB3色それぞれの濃度値を8bitで表現し、1画素当たり24bitの情報量をもつデジタル信号でも良いし、RGBでなくYCbCrに変換していても構わない。デジタル画像処理を行なえるデータであれば良い。撮影手段1はデジタル信号に変換された画像データを、変化領域設定手段2、画像出力手段4に出力する。各フレームにおいて出力された領域のデジタル信号の画像データを原画像と呼ぶ。
カウンタ13は、所定サイズの領域の画像データを出力する回数を数えるカウンタであり、所定サイズの領域を1フレーム撮影するたびにカウンタを1上げて、カウンタが所定のフレーム数に達すると、全領域の画像データを出力する命令を読み出し制御手段14に出力する。
読み出し制御手段14は、撮像素子11から画像データを読み出すタイミングと読み出し位置を制御する。読み出しの位置は、指定領域設定手段3が指定する次に撮影するフレームの所定サイズの領域の情報に基づいて制御する。また、読み出しのタイミングは、撮影するフレームレートに合わせたクロックをそなえ、そのクロックに基づき制御する。さらに、カウンタ13から全領域の画像を出力する命令を受けた場合は、その命令通りに撮像素子11から画像データを全領域について読み出す制御を行なう。
また、撮影手段1は図4のような構成であっても構わない。図4では撮影手段1を撮像素子11と、A/D変換手段12と、カウンタ13と、出力領域制御手段15と、クロック16をそなえて構成している。図3の構成とは、読み出し制御手段14を持たない代わりに、出力領域制御手段15をそなえている点と、クロック16を別にそなえた点で異なる。
この構成では、クロック16が制御するタイミングで、撮像素子11が撮影を行う。図3の構成と異なり、撮像素子11からは全てのフレームについて全領域の画像データを読み出す。クロック16の信号に基づき、カウンタ13が撮影フレーム数を数え、撮影フレーム数を出力領域制御手段15に出力する。出力領域制御手段15は、カウンタ13の情報に基づいて全領域の画像データを出力するか、所定サイズの領域の画像データを出力するか判断し、出力する領域を制御する。
この出力領域制御手段15は、図4のようにA/D変換された画像信号から出力する情報を取り出してもよいが、撮像素子11とA/D変換手段12の間に設け、出力する領域の画像信号を取り出してからA/D変換しても良い。前者は制御が簡単であり、後者はA/D変換の演算量が少ない。
撮像手段1は、その構成自体は図3や図4の構成でもよく、撮影したフレーム数をカウントして、そのフレーム数に応じて全領域の画像を出力するか、指定された領域の画像を出力するかの切り替えが可能である撮影手段であれば良い。
変化領域設定手段2は、撮影手段1において取得した原画像に基づいて、撮影した画像のうち単位時間当たりの変化量が大きい領域を変化領域として抽出し、その位置・サイズを設定する。単位時間あたりの画像変化が大きいということは、設定した変化領域について高フレームレート撮影する必要性があるということである。この変化領域の設定方法については後述する。
指定領域設定手段3は、変化領域設定手段2で設定された変化領域内で所定のサイズの領域を指定する。指定された領域を次回撮影フレームで画像データを取得する領域として、その範囲を指示する情報を撮影手段1に出力する。
画像出力手段4は、撮影手段1から出力した原画像を読み込み、圧縮処理をして動画像撮影装置から動画像を表示、記録、又は通信する装置に出力する。圧縮に関わる演算は圧縮処理手段43で行なう。圧縮処理に必要な画像を読み出すために、原動画を記憶しておくフレームメモリ42をそなえている。
さらに、フレームメモリ42のクロック周波数に応じて適宜バッファ41を設けることが考えられる。フレームメモリ42への入力データ量は、画像出力手段4への入力画像データが全領域のフレームか所定サイズの領域のフレームかで時間的に変動する。全領域の画像データを取得したフレームをフレームメモリ42に格納するときには速い書き込みが必要とされるが、所定サイズの領域の画像データを取得したフレームの格納には必要とされない。そこで、バッファ41を設けることで、フレームメモリ42へ入力画素レートビットレートが平均化され、クロック周波数を低く設定できる。クロック周波数はフレームメモリ42からの読み出しのデータ量も考慮して、クロック周波数を定めればよい。
第一の実施形態の撮影開始から撮影終了までの画像出力手段4に原画像を出力するフローについて図6を参照して説明している。
撮影開始命令が入力される(S101)と、まず撮影手段1は撮影した全領域の画像データを変化領域設定手段2と画像出力手段4に出力する(S102)。撮影開始命令直後のS102では、全領域の画像データを2フレーム取得し、変化領域設定手段2で撮影したフレームをそれぞれフレームR1、フレームR2として保存する。
変化領域設定手段2は、フレームR1とフレームR2に基づいて変化領域を設定する(S103)。変化領域の設定方法は後述する。設定した変化領域の範囲を指示する情報を指定領域設定手段3に出力する。指定領域設定手段3は、S103で設定した変化領域の範囲内で所定のサイズの領域を指定する(S104)。
撮影手段1は、S104で指定された領域の範囲を指示する情報に基づき、指定された領域について撮像素子11から画像データを読み出し、取得した画像信号をA/D変換して画像出力手段4と変化領域設定手段2に出力する(S105)。また、所定サイズの領域の画像データを出力したフレーム数を数えるカウンタの数字を1増やし(S106)、既に所定フレーム数撮影しているかを判断する(S107)。カウンタが所定数を超えた場合はカウンタをリセットし(S108)、それとともに、フレームR2の画像情報のラベルをフレームR1に変更しておく。その後で再度全領域の画像データを取得し、変化領域設定手段2と画像出力手段4に出力し、撮影手段1が出力したフレームをフレームR2とする(S102)。カウンタが所定数を超えない場合は、所定サイズの領域を再び変化領域の範囲内で指定し(S104)、指定された領域の画像データを出力する(S105)。以後、撮影終了命令が入力されるまでフローを繰り返す。
次に変化領域を設定する方法について説明する。単位時間当たりの画像変化が大きい領域を抽出するには、全領域の画像データを出力した少なくとも2つのフレームに基づく必要がある。全領域画像のフレームで、画像の変化量を比較する2つのフレームをフレームR1とフレームR2とし、フレームR1の方がフレームR2よりも過去のフレームであり、フレームR2が撮影された時点で変化領域を更新する。単位時間あたりの画像の変化量を評価する方法として、フレームR1とフレームR2の差分を評価する方法を説明し、その評価を基に、どのように画像変化の大きい領域を含むように変化領域を設定するかを説明する。さらに、画像の変化量を評価する別の手法としてブロックマッチングの動きベクトルを評価する方法について説明する。
まず、フレームR1,R2の差分により画像の変化量の大きい領域を抽出する方法について図7と対応させながら説明する。撮影手段1から出力されたフレームR1とフレームR2の原画像を読み出し(S201)、それぞれのフレームで同一位置の画素同士で濃度値の差をとり、絶対値を算出する(S202)。差をとる濃度値はRGB、もしくはYCbCrの3色の濃度値についてでも良いし、YCbCrのYの値の濃度値のみとしても良い。フレームR1とフレームR2の間の時間に画像が大きく変化すれば、対応する画素の濃度値の差は大きくなるし、逆なら差が小さい。
ある1画素のみ差分絶対値が大きく、その周りの画素については差分絶対値が小さい場合は、その画素の画像変化量が大きいからといって変化領域に含めるべきでない。むしろ変化量の大きい画素が集中している領域のみを変化領域として選択することが望ましい。そこで、まず全領域をブロック(例えば16×16画素)に分割し、分割したブロック内で差分絶対値の平均値を算出する。もしくは単に和をとる(S203)。さらに各ブロックの評価値を対象に平均フィルタをかけても良い。フィルタは加重平均フィルタやメディアンフィルタなどが考えられる。
各ブロックから変化領域を決定する方法を説明するが、この方法だけに限る必要はなく、評価値の大きいブロックを多く含むように領域を設定すれば問題ない。まず、小ブロックの評価値の閾値を設定して、閾値未満のブロックの値を「0」とし、閾値以上のブロックの値を「1」として2値化する(S204)。この閾値は既定の値を準備しておいても良いし、全ブロックの評価値を平均して、その平均値としても良い。また、閾値を用いずに評価値の大きい順にブロックを特定の個数だけ選択しても良い。
2値化により「1」が与えられたブロックの中から、x座標の最大値と最小値、y座標の最大値と最小値を求め、(x座標の最小値,y座標の最小値)、(x座標の最大値,y座標の最小値)、(x座標の最小値,y座標の最大値)、(x座標の最大値,y座標の最大値)の4点に囲まれる矩形領域を変化領域として設定する。
また、撮影もれのないようにするために、予め範囲を広げて設定しても良い。例えばα画素ずつ広げて変化領域を設定すると決めておいて、最大値と最小値を用いて指定する矩形領域を最小値の代わりに最小値−α、最大値の代わりに最大値+αを用いて範囲指定しても良い。
次にブロックマッチングにより画像変化の大きい領域を抽出する方法について説明する。フレームR2をマクロブロック(例えば16×16画素)に分割し、それぞれのマクロブロックについて濃度値の誤差が最も小さくなる領域がないか、フレームR1内を探索する。濃度値の誤差は、差分による方法と同様に対応する画素どうしで差分をとり、その絶対値の総和で評価する。探索によってフレームR2のそれぞれのマクロブロックに対応するフレームR1のブロックを見出し、その位置関係を表す動きベクトルが求められる。この動きベクトルの大きさが大きいほど画像変化が大きいと判断できる。このようにブロックマッチングを用いた場合も、ある程度の画素の集まりで画像の変化量を評価するため、画像変化量が大きい画素が集中している領域を抽出できる。あとは2つのフレームの差分による方法と同様に変化領域を設定できる。
この変化領域の設定は前述の通り、全領域画像のフレームが得られるたびに上記の方法によって更新される。そのため本実施例では全領域画像によるフレーム間で変化領域は変更していないが、他の実施例においては、全領域画像のフレーム間でも変化領域があるべき位置を予測して毎フレーム移動させる構成もある。この方法については後述する。
変化領域内で所定サイズの領域を設定する方法について説明する。まず、所定サイズの領域を単純に横方向シフトする方法を説明する。この方法は以下の説明に限らず、方向、順序、シフト開始位置などを変えても差し支えない。所定サイズの領域を設定する他の方法については、他の実施形態のところで説明する。
図8において変化領域設定手段2によって設定された変化領域は太線の枠であり、引き出し線の通りである。この説明においては便宜的に変化領域の角の画素の座標を(1,1)として説明する。変化領域のサイズはN×M画素とする。また、画素レートの制限に基づいて決定される所定のサイズをn×m画素とする。変化領域を更新して1番目に撮影するフレームの所定サイズの領域をA1として、2番目に撮影するフレームの所定サイズの領域をA2とする。横方向に順次シフトし、変化領域の端に行き着いたフレームがA4であり、その次のフレームがA5である。
変化領域を更新してから所定サイズの領域を設定する手順を順序だてて説明する。変化領域を更新して1番目のフレームにおいては、(1,1),(1,m),(n,m),(n,1)を頂点とする矩形の領域A1を指定する(S301)。そして指定した領域の範囲を指示する情報を撮影手段1に出力する。撮影手段1はS301で指定された領域の画像データを取得し、出力する。さらに撮影手段1のカウンタを1上げる。その後カウンタが所定数をこえたか判断し(S107)、所定数超えた場合は再度変化領域を設定する。カウンタが所定数を超えていない場合は、次回撮影フレームの所定サイズの領域を設定するフローに移る。
領域A1の次に画像データを取得する領域は、領域A1を(n,0)だけ移動させた頂点の座標が(n+1,1),(n+1,m),(2n,m),(2n,1)の矩形の領域A2となる。同様の領域指定の手順によりi番目のフレームの所定サイズの領域は(n(i−1)+1,1),(n(i−1)+1,m),(i×n,m),(i×n,1)による矩形の領域とする。
この手順に従い、フレームを進めるごとに以上の横方向のシフトを数式1となるまで続け(S303)、下記の数式1を初めて満たすi番目のフレームについては(N−n+1,1),(N−n+1,m),(N,m),(N,1)による矩形の領域A4を指定する(S306)。その次のフレームについては(0,m)だけ縦方向に移動させ、X座標は1番目のフレームと同じ座標をとるようにする。つまり(1,m+1),(1,2m),(n,2m),(n,m+1)による矩形の領域A5を指定する(S308)。それ以降の所定サイズの領域も上記と同様にシフトし、領域を指定する。
i×n>N
上記の操作をカウンタが所定数を越えるまで繰り返す。先に述べたとおり、xy座標を入れ替えれば縦方向のシフトも可能であるし、変化領域を更新して1番目のフレームにおける所定サイズの領域をどの位置に指定しても構わない。
その他にも、過去に撮影したフレームで撮影されていない度合いを表す撮影優先度という指標を導入して、時間的に近いフレームで撮影されていない領域を優先的に撮影する方法も考えられる。この方法については第二の実施形態、第三の実施形態で説明する。
原動画の画素レートと動画の処理能力に基づいて定められた所定サイズよりも変化領域が小さいときには変化領域をそのまま画像データを出力する領域として指定しても良い。その場合は変化領域を設定した後に図6の処理フローを行なう。
変化領域を設定した後で所定サイズの領域を指定する前(S104)に、設定した変化領域が所定サイズよりも小さいかを判断する(S401)。変化領域が所定サイズよりも大きければ、当然所定サイズの領域を指定するフロー(S105)に移行する。変化領域が所定サイズよりも小さければ、次回画像データを取得する領域として指定して、変化領域の範囲を指示する情報を撮影手段1に出力し、撮影手段1で変化領域の画像データを取得する(S402)。変化領域を撮影したら、カウンタを1上げて(S403)再度変化領域の画像を出力する。所定サイズの領域の画像データを出力したときと同様、カウンタが所定数超えるまで変化領域の画像データを取得するフレームとし、カウンタが所定数超えたら全領域の画像データを取得して変化領域を再設定するフロー(S108)に戻る(S404)。
[第二の実施形態]
第二の実施形態は、指定領域設定手段3において所定サイズの領域を撮影優先度に基づいて指定するという特徴を有する点で、第一の実施形態と異なる。
高フレームレート撮影の必要性がある変化領域に対し、1つのフレームではその一部分の画像しか取得できないので、変化領域内で撮影頻度に偏りが生じる可能性がある。過去に画像データを取得された領域よりもそうでない領域の画像データを優先的に取得すれば、このような撮影頻度の偏りが減ると考えられる。
そこで、撮影優先度という指標を画素、もしくは一定の画素数で構成されるように区切られた領域(例えば4×4画素、8×8画素程度のブロック)ごとに割り当て、既に画像データを取得した領域の撮影優先度を修正することで、優先的に画像データを取得する領域とそうでない領域を差別化する。この撮影優先度に基づき、所定サイズの領域を指定する。
設定された変化領域内で所定サイズの撮影候補領域を複数設定し、撮影候補領域毎に撮影優先度の評価値を算出する。評価値が最大となる撮影候補領域を次回撮影フレームにおいて画像データを取得する所定サイズの領域として指定する。
図11〜14のモデル図を参照しながら撮影優先度を用いて所定サイズの領域を指定する方法を説明する。図11は変化領域内で指定された領域を配置する例を示した。1回目に指定した領域を領域A6、2回目に指定した領域を領域A7、3回目に指定した領域をA8とする。図12は指定された領域A6について画像データの取得を行い、撮影優先度を修正した後の撮影優先度の図である。図13は領域A7の画像データ取得後、撮影優先度を修正した図であり、図14は領域A8の画像データ取得出力後、撮影優先度を修正した図である。図11〜14のモデル図では簡単のため、変化領域を10×8画素とし、画像データの取得を指定する所定サイズの領域を3×4画素とする。この撮影優先度を割り当てる単位は、画素ごとでなくとも一定サイズのブロックでも良いので、図11〜図14のモデル図は変化領域を10×8ブロックであり、画像データの取得を指定する所定サイズの領域を3×4ブロックであるとしても良い。
まず、変化領域が更新された状態では、全ての画素の撮影優先度を同じ値にする。この例では全ての画素の撮影優先度を0としている。変化領域を更新した次のフレームでは、撮影優先度が全ての画素で同じため、撮影候補領域を複数設定しても全ての撮影候補領域で撮影優先度の評価値は同じである。例えば撮影候補領域内の全画素の撮影優先度の総和をそれぞれの撮影候補領についての評価値とすると、全て0になる。この例では領域A6を指定したことにする。
領域A6を画像データを取得する領域として指定した後、撮影手段1にその領域A6の範囲を指示する情報を出力するとともに、撮影優先度の制御をする手段にも出力する。領域A6とそれ以外の領域を差別化するために、領域A6内の画素の撮影優先度を修正する。この例では図12に示すように、先に撮影する領域A6内の画素の撮影優先度を1下げる修正を行なう。
撮影手段1が指定された領域の画像データを取得した後、前フレームの撮影時と同様に複数の撮影候補領域を設定し、それぞれについて評価値を算出する。図12の撮影優先度マップから明らかなように、総和は−12〜0の範囲内となる。領域A6を含まない撮影候補領域は評価値が0であり、評価値が最大である。この例では領域A7を指定したことにする。
領域A7内の画素の撮影優先度を下げたときの撮影優先度が図13である。領域A7についての画像データ取得後、撮影候補領域を生成して各々の評価値を算出すると、領域A8の評価値が−1で最大となる。図14から明らかなように、変化領域内で領域A8以外のどの3×4画素の領域も評価値は−2以下になっている。これ以降のフレームも同様の手順で画像データを取得する領域を指定する。
撮影手段1のカウンタが所定フレーム数を数えたら、撮影手段1は全領域の画像データを取得し、その画像に基づいて変化領域設定手段2で変化領域が更新される。そのとき撮影優先度も初期化する。この例で言えば、全ての画素の撮影優先度を0にする。
第一の実施形態との相違点である指定領域設定手段3の構成について、図15を参照しながら説明する。指定領域設定手段3は撮影優先度記憶手段31、撮影優先度計算手段32、撮影候補領域生成手段33、撮影優先度評価手段34、撮影領域選択手段35をそなえた構成である。
撮影優先度記憶手段31は、前回撮影時に評価した撮影優先度を保存しておく。保存しておいた撮影優先度を撮影優先度計算手段32の計算時に読み出し、撮影優先度計算手段32の計算後、その計算された撮影優先度を保存する。さらに更新した撮影優先度を撮影優先度評価手段34に出力する。また、全領域の画像データを取得するたびに全画素、又は全ブロックの撮影優先度を同じ値にして初期化する。
撮影優先度計算手段32は、撮影優先度記憶手段31から撮影優先度を読み出し、そのうち前回撮影時に指定した領域の範囲内の撮影優先度について修正する。算出された撮影優先度は撮影優先度記憶手段31に出力される。
撮影候補領域生成手段33は、変化領域設定手段2から変化領域の範囲を指示する情報を読み出し、変化領域内の異なる位置に複数の所定サイズの領域を指定し、その範囲を指示する情報を撮影優先度評価手段34に出力する。この複数の所定サイズの領域それぞれを撮影候補領域とする。
撮影優先度評価手段34は、それぞれの撮影候補領域内の撮影優先度の評価値を算出する。撮影候補領域当たりの評価値は、撮影候補領域内の画素、又はブロックの撮影優先度についての総和でも、中間値でも良い。撮影候補領域の範囲を指示する情報とその評価値は撮影領域選択手段35に出力される。
撮影領域選択手段35では、撮影優先度評価手段34の評価に基づいて最も優先的に撮影すべき撮影候補領域を選択し、その選択された撮影候補領域の範囲を指示する情報を撮影手段1に出力する。その次の所定サイズの領域を指定するために撮影優先度計算手段32にも出力する。
以上の手段により指定領域設定手段3を構成し、撮影優先度に基づいて所定サイズの領域を指定する。以下に、その処理のフローについて図16を参照しながら説明する。
まず、撮影優先度計算手段32が、撮影優先度記憶手段31から前回撮影時に保存しておいた撮影優先度を読み出し、前回撮影時に指定した領域内の各画素、又はブロックについての撮影優先度を修正する(S501)。計算後の撮影優先度は撮影優先度記憶手段31に再び記憶される(S502)。また、撮影優先度評価手段34は更新された撮影優先度を読み出す。
撮影候補領域生成手段33は変化領域設定手段2から変化領域の範囲を指示する情報を読み出し、変化領域内で所定サイズの領域を撮影候補領域として設定する(S503)。撮影優先度評価手段34は撮影候補領域の範囲を指示する情報を読み出し、その撮影候補領域内の撮影優先度を評価する(S504)。評価は読み込んだ撮影優先度のうち、撮影候補領域内である画素、又はブロックについての撮影優先度の和をとるなどして評価値を算出して行なう。撮影優先度の評価は生成した全ての撮影候補領域について行なう(S505)。
撮影領域選択手段35は撮影候補領域のうち撮影優先度の評価値が最大のものを選択し、その撮影候補領域の範囲を指示する情報を撮影手段1に出力する(S506)。それと同時に撮影優先度計算手段にもその範囲を指示する情報を出力しておく。以下、図6の指定領域を撮影するステップ(S106)に続く。
さらに図3のカウンタをリセットするステップ(S110)に加え、撮影優先度記憶手段31に保存している撮影優先度を初期化するステップも設ける。
撮影優先度計算手段32において既撮影領域の撮影優先度を修正するが、例えば所定値下げる修正を行なうことが考えられる。この場合、所定値下げる際に、既撮影領域内にある全ての画素について所定値下げても良いし、既撮影領域内の画素、又はブロックについて撮影優先度を下げる一方で、その縁にある画素、又はブロックについては撮影優先度を上げるようにしても良い。図9を用いて説明すれば、既撮影領域A9内で内部の領域A10で撮影優先度を下げ、縁部の領域A11で撮影優先度を上げるということである。こうすることで、既撮影領域の縁部分を含む撮影候補領域A12内の撮影優先度の評価値が最も大きくなると考えられ、既撮影領域A9との隙間が生じない様に次回撮影領域を選択できる。そのため、全体の一部分を撮影することによる撮影領域の抜けが生じにくくなる。
次回撮影フレームに時間的に近いフレームに対応する既撮影領域の画像ほど、次回撮影フレームにおいて画像変化が小さいと考えられ、そうでないフレームに対応する既撮影領域の画像よりも信頼性が高いといえる。そのため、次回撮影フレームに時間的に近いフレームに対応する既撮影領域ほど画像データを取得し、画像を更新する必要性は低い。この時間的要素を加えるためには、次回撮影フレームに近いフレームの既撮影領域ほど撮影優先度を大幅に下げれば良い。
そこで、撮影優先度の下げ幅を撮影回数に応じて設定することが考えられる。例えば、撮影優先度計算手段32での撮影優先度の下げ幅を1フレーム毎に大きくしていけばよい。そうすると、時間的に新しいフレームに対応する既撮影領域の撮影優先度の下げ幅ほど相対的に大きくなっている。これにより、時間的に新しいフレームに対応する既撮影領域ほど撮影領域として選択されにくくなる。
撮影優先度計算手段32において撮影優先度の値は、下げるのでなく上げるようにして、撮影優先度評価手段34において撮影優先度の評価値が最小のものを選択するようにしても構わない。既撮影領域とそうでない領域を差別化し、既撮影領域をできるだけ撮影しないような方法であれば良い。
また、撮影候補領域生成手段33における変化領域内の撮影候補領域の取り方は、1画素ずつずらして変化領域内で取りうる全通りの候補を取ることが望ましい。優先度評価の処理の負荷が大きくなる場合には、数画素ずつずらして候補を生成するなど間引いて生成しても良い。
[第三の実施形態]
既に撮影した撮影対象は、次回撮影フレームにおいて別の位置に移動していると考えられ、撮影対象の移動も考慮する必要がある。そこで第三の実施形態では、既に画像データを取得した領域の次回撮影フレームにおける位置を予測し、その領域を既撮影領域として優先度を下げることとし、その点で第二の実施形態と相違する。
既に画像データを取得した領域の次回撮影フレームにおける位置を予測することについて説明する概念図が図18である。次回撮影するフレームをフレームNとし、フレームNの1つ前に撮影されたフレームをフレームC、フレームCよりも過去に撮影された全領域画像のフレームのうち最も新しいものをフレームRとする。フレームNは次回撮影フレーム、フレームCは前回撮影フレーム、フレームRは参照フレームである。
フレームCにおいて画像データを取得した領域が領域A14であり、領域A13はフレームRにおいてブロックマッチングにより領域A14と対応づけられた領域である。このブロックマッチングにより対応づけられた領域同士の位置関係を表す動きベクトルがV1である。これは領域A13で捉えた撮影対象が、時間T1の間に領域A14に移動(−V1の移動)したと考えられる。フレームNにおいて領域A14に対応する領域は撮影する必要性が低いので、フレームNにおいて領域A14と対応づけられた領域を既撮影領域と設定すべきである。そこで領域A14はフレームCからフレームNまでも動きベクトルV1に従った動きをすると予想し、線形の外挿予測を行なう。線形の予測なので、領域A14を反転した動きベクトル(−V1)の定数(T2/T1)倍だけ移動させ、移動させた領域A15を既撮影領域とすればよい。フレームC以前の領域を指定して画像データを取得したフレームについても同様の処理によって既撮影領域を設定することになる。具体的な設定手段については以下に述べる。
本実施形態の構成を図19と図20を参照して説明する。
図19に示すとおり、第一の実施形態と第二の実施形態とは異なり、既撮影領域設定手段5を新たに有する。既撮影領域設定手段5は、既に撮影したフレームで画像データを取得した領域が次回撮影フレームにおいてどの領域にあたるかを予測し、予測された位置に既撮影領域を設定する機能をもつ。既撮影領域設定手段5と指定領域設定手段3について、その構成を図20に示す。
既撮影領域設定手段5は、画像記憶手段51、動き推定処理手段52、フレーム選択手段53、動き情報記憶手段54、外挿予測手段55、既撮影領域予測手段56をそなえた構成である。指定領域設定手段3は第二の実施形態と同様の手段をそなえている。
画像記憶手段51は撮影手段1が撮影するフレームのうち、全領域の画像データを取得したフレームを記憶し、その記憶されたフレームがフレームRである。
動き推定処理手段52は、撮影手段1が出力したフレームのうち、領域を指定して画像データを取得したフレームを(フレームC)入手する。フレームCとフレームRとの時間差T1を算出し、ブロックマッチングによりフレームCで画像データを取得した領域とフレームRを対応づけ、動き推定ベクトルV1を求める。この時間差T1と動き推定ベクトルV1をフレームCからフレームRへの動き情報として、動き情報記憶手段54に出力する。
フレーム選択手段53で、フレームRとフレームNの間にあるフレームを1つずつ選択する。フレームCをまず選択し、その後1フレームずつ前のフレームを順番に選択する。
動き情報記憶手段54は、動き推定処理手段52から出力されたフレームCの動き推定ベクトルV1と時間差T1をフレームの番号と対応づけて保存する。これはフレームRが更新されるたびに初期化する。またフレーム選択手段の指示に応じて選択されたフレームに関する動き情報を読み出す。
外挿予測手段55では、動き情報記憶手段54から出力された動き情報を入手する。フレームNと選択フレームとの時間差T2を算出し、選択されたフレームの動き推定ベクトルV1と時間差T1、T2を用いて数式2に基づき外挿予測し、外挿予測ベクトルV2を算出する。算出した外挿予測ベクトルV2を選択されたフレーム番号とともに既撮影領域予測手段56に出力する。
V2 = −V1 * (T2/T1)
既撮影領域予測手段56は、外挿予測手段55から外挿予測ベクトルV2を受け取り、選択されたフレームの画像領域を予測した位置に移動させ、既撮影領域を設定し、その範囲を指示する情報を指定領域設定手段3に出力する。
撮影優先度計算手段32は、撮影優先度記憶手段31から撮影優先度を入手し、既撮影領域予測手段56で設定された既撮影領域について第二の実施形態と同様に撮影優先度を修正し、撮影優先度記憶手段31に出力する。フレーム選択手段53で順番に選択されるフレーム全てについて同様の操作を行なう。
撮影優先度記憶手段31は、撮影優先度計算手段32が処理を行なうたびに記憶している撮影優先度を撮影優先度計算手段32に出力し、撮影優先度計算手段32により更新された撮影優先度を再度読み込み保存する。全ての選択フレームについて撮影優先度の計算が行なわれたとき、保存してある撮影優先度を撮影優先度評価手段34に出力し、その後、保存してある撮影優先度を初期化し、全ての画素、又はブロックの撮影優先度を同じ値にする。
指定領域設定手段3のその他の構成である撮影候補領域生成手段33、撮影優先度評価手段34は第二の実施形態と同様の機能を有する。以上の手段で既撮影領域設定手段5と指定領域設定手段3を構成することにより、既撮影領域の移動を考慮した撮影優先度の計算を行い、所定サイズの領域を指定する。
図21を参照してフレームCとフレームRのブロックマッチングについて説明する。領域A18がフレームCとフレームRにおいて撮影可能な全領域を重ねて表示したものであり、フレームCで画像データを取得した領域をA16とする。フレームR内で領域A16と最も類似している領域探索し、見出した領域を領域A17とする。領域A16と領域17の2つの領域の位置関係を表す動き推定ベクトルV1を算出し、図中では動き推定ベクトルを矢印で表示している。変化領域を抽出するときの16×16画素を1ブロックとするブロックマッチングとは異なり、このブロックマッチングにおいてはフレームCの領域A16を1つのマクロブロックとして扱うことにする。
以下に第三の実施形態の特徴部分である既撮影領域設定手段5と指定領域設定手段3について、その実施フローについて図22を参照しながら説明する。S104までは第一の実施形態と同様の手順で進める。第一の実施例に示していないが、全領域の画像データを取得する(S102)たびに、画像記憶手段51はその画像データをフレームRとして記憶する。
動き推定処理手段52が、指定領域の画像データを取得し、画像記憶手段51からフレームRを読み出す。2つの画像でブロックマッチングして、全領域画像のフレームで指定された領域の画像に最も類似した領域を探索する(S601)。ブロックマッチングにより得られた動き推定ベクトルV1と時間差情報T1をあわせて動き情報とし、フレームの番号と対応させて動き情報記憶手段54に記憶しておく(S602)。
フレーム選択手段53が1枚目の選択フレームとしてフレームCを選択する(S603)。次に動き情報記憶手段54からフレームCの動き情報を呼び出す(S604)。外挿予測手段は選択フレームの番号に基づいて選択フレームと次回撮影フレームとの時間差T2を求め、数式2によって外挿予測ベクトルV2を算出する(S605)。選択したフレームで画像データを取得した領域を外挿予測ベクトルV2だけ移動させ、既撮影領域とする(S606)。撮影優先度を呼び出し、S606で指定した既撮影領域の範囲内の画素、又はブロックについての撮影優先度を修正する(S607)。S607の操作をした後、撮影優先度は保存しておく(S608)。
S604〜S608の操作を繰り返し、次回撮影フレームと参照フレームの間の全てのフレームについて行なわれたか判断する(S609)。まだ選択すべきフレームがある場合は、新たにフレームを選択し(S612)、S604〜S608のフローを行なう。
フレームを全て選択していた場合、全ての選択フレームの既撮影領域を反映した撮影優先度を撮影優先度評価手段34に出力し(S610)、記憶しておいた撮影優先度は初期化する(S611)。以下、撮影優先度を評価するフローは第二の実施形態と同様であり、S503と続く。
[第四の実施形態]
第四の実施形態は、変化領域設定手段2において第三の実施形態で用いた外挿予測を用いて変化領域を毎フレーム移動するという特徴を有する点で、第一の実施形態、第二の実施形態、第三の実施形態と相違する。
全領域画像のフレームから次の全領域画像のフレームまでの時間に、高速移動する撮影対象が移動し、設定した変化領域内に収まらないこともありうる。そこで、変化領域をフレーム毎に再設定するのが望ましいが、そのためにはフレーム毎に全領域の画像データが必要であり、所定サイズの領域の画像データを取得するフレームを設けるという本願の主旨とは異なる。
第三の実施形態では、既に画像データを取得した領域が次回撮影フレームまでに移動する量を外挿予測した。変化領域の一部である指定された領域のフレーム間での移動と、変化領域も同様の移動をすると考えられるので、指定された領域の外挿予測に合わせて変化領域を移動させる。これにより高フレームレートで撮影すべき領域が高フレームレート撮影の対象範囲から外れることを防ぐ。
本実施形態の構成について図23を参照しながら説明する。変化領域設定手段2に、全領域撮影するたびに変化領域を設定しなおす構成として画像記憶手段21と変化領域更新手段23を設け、フレーム毎の変化領域の移動量を予測する構成として画像記憶手段21と動き推定処理手段22と外挿予測手段24を設ける。さらに変化領域を予測した移動量に基づいて移動させて更新する変化領域予測手段25を有している。
画像記憶手段21は、撮影手段1から全領域の画像データを取得したフレームを保存する。最新のフレームをフレームCとし、フレームC以外の最新の全領域の画像データによるフレームをフレームRとする。フレームCとフレームRを変化領域更新手段23に出力する。また、変化領域更新手段23に出力後は、フレームCの画像を参照フレームとなるため、フレームCのラベルをフレームRに書き換える。その後、動き推定処理手段22の呼び出しに応じてフレームRを出力する。
変化領域更新手段23は、フレームRとフレームCの2フレームの全領域の画像に基づき、変化領域を設定する。この設定方法は第一の実施形態と同様に2フレームの差分を用いても、ブロックマッチングを用いても良い。全領域画像のフレームのたびに変化領域は再設定される。再設定した変化領域の範囲を指示する情報を変化領域予測手段25に出力する。
動き推定処理手段22は、まず撮影手段1から所定サイズの領域の画像データを取得したフレームを入手し、フレームCとする。フレームCと画像記憶手段21にあるフレームRをブロックマッチングし、動き推定ベクトルV1とマッチングした2つのフレーム間の時間差T1を外挿予測手段24に出力する。
外挿予測手段24では、動き推定ベクトルV1と時間差情報T1とフレーム間隔T2を用いて数式2により外挿予測し、次回撮影フレームにおいて変化領域がどう移動するかを予測する外挿予測ベクトルV2を変化領域予測手段25に出力する。
変化領域予測手段25では、フレームCにおける変化領域を外挿予測ベクトルV2だけ移動し、次回撮影時の変化領域とする。
本実施形態においては、撮影手段1と指定領域設定手段3と画像出力手段4は先に説明したどの実施形態のものでも構わない。また、第三の実施形態のように既撮影領域設定手段5を設けても良い。その場合は、既撮影領域設定手段5と変化領域設定手段2の両方で外挿予測のための手段を有することになるので、外挿予測のための手段を既撮影領域設定手段5と変化領域設定手段2で兼用しても良い。その構成が第五の実施形態である。
第四の実施形態の特徴部分である変化領域を毎フレーム予測し、予測に基づいて移動するフローは指定された領域の画像データを出取得した後で、S107でNOルートの場合に発生する。まず、前回出力した画像と参照フレームの画像をブロックマッチングする(S701)。ブロックマッチングは第三の実施形態のS601と同様な操作を行なう。ブロックマッチングによる動き情報に基づいて外挿予測ベクトルを算出する(S702)。次に外挿予測ベクトルに基づいて変化領域を移動する(S703)。その後、移動した変化領域内で所定サイズの領域を指定するフローに移行する(S104)。
[第五の実施形態]
前述の通り、第三の実施形態と第四の実施形態をあわせた形態の場合、外挿予測を行なう手段を1つにまとめた構成も可能である。その構成を第五の実施形態として、構成図を図25に示す。この構成では所定サイズの領域の画像データを出力した1つのフレームに対して行なう動き推定処理は1回となり、画像データを取得する領域の設定に関する演算量を少なくできる。
変化領域設定手段2は、画像記憶手段61と、変化領域更新手段23と、変化領域予測手段25と、動き推定処理手段62と、動き情報記憶手段63と、外挿予測手段64によって構成される。また、既撮影領域設定手段5は画像記憶手段61と、動き推定処理手段62と、動き情報記憶手段63と、外挿予測手段64と、既撮影領域予測手段56と、フレーム選択手段53によって構成される。動き情報記憶手段63と外挿予測手段64以外については、第三の実施形態と第四の実施形態と同様の機能を有する。
動き情報記憶手段63は動き推定処理手段62によって算出された動き推定ベクトルV1をフレームRと当該フレームの時間差T1とフレームの番号とともに記憶する。その後フレーム選択手段53から選択フレーム番号を入手し、該当するフレームの番号と動き推定ベクトルV1とフレームRとの時間差T1とフレーム番号を外挿予測手段64に出力する。
外挿予測手段64は、動き情報記憶手段63から選択フレームに関する情報を入手する。フレーム番号に基づき、選択フレームから次回撮影フレームまでの時間差T2を求める。次に数式2に基づいて外挿予測し、外挿予測ベクトルV2を算出し、外挿予測ベクトルV2を既撮影領域予測手段56に出力する。フレーム選択手段53がはじめに選択するフレーム、つまり選択フレームがフレームCである場合に変化領域予測手段25にも出力する。