以下、添付図面を参照して本発明をその例示的な実施形態に基づいて詳細に説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定しない。また、実施形態には複数の特徴が記載されているが、その全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
●<第1実施形態>
(マルチカメラ撮像システムの概要)
図1は、本実施形態に係るマルチカメラ撮像システム10(以下、単に撮像システムという)の構成例を示す模式図である。撮像システム10は、複数のカメラ300、400、500と、撮影制御装置100と、役割制御装置600とを有する。複数のカメラ300、400、500、撮影制御装置100、および役割制御装置600は、通信ネットワーク700を通じて通信可能に接続されている。
通信ネットワーク700は、IEEE802.3シリーズ、1EEE802.11シリーズなど公知の有線または無線通信規格に準拠している。また、複数のカメラ300、400、500のそれぞれと、撮影制御装置100と、役割制御装置600とは、通信ネットワーク700の規格に準拠した通信インタフェースを有する。
複数のカメラ300、400、500のうち、カメラ300は予め定められた撮影範囲の全体を撮影する。撮影範囲は例えばスタジオにおいて撮影対象の被写体が存在しうる範囲として設定されている。したがって、カメラ300の映像には、撮影範囲内の被写体がすべて撮影されている。
カメラ300の目的は、撮影範囲内に存在する撮影対象の被写体を検出するための画像を撮影することである。したがって、カメラ300の撮影方向および画角はカメラ300の位置と撮影範囲とに応じて定まり、撮影中は基本的に固定である。さらに、撮影範囲のパンフォーカス影像を得るために、合焦距離も基本的に固定であってよい。また、カメラ300は、撮影範囲の全体を、撮影範囲外の物体で隠されないように撮影することが好ましい。そのため、ここではカメラ300を撮影範囲の全体を俯瞰する位置に設けている。撮影中の撮影方向や画角が基本的に固定でない他のカメラ400および500と区別するため、以下ではカメラ300を俯瞰カメラと呼ぶ。ただし、カメラ300の設置位置は、撮影範囲を俯瞰する位置に限定されない。俯瞰カメラ300の動作は撮影制御装置100から制御可能である。
カメラ400および500は例えばPTZカメラであり、撮影方向(パンおよびチルト角度)、画角(ズーム)を含む動作を外部装置から制御可能である。ここではカメラ500の動作を撮像システムのユーザが制御し、カメラ400の動作を撮影制御装置100が制御するものとする。以下では、撮影制御装置100が、カメラ500の状態に基づいてカメラ400の動作を制御するため、カメラ500をメインカメラ、カメラ400をサブカメラと呼ぶ。説明および理解を容易にするため、サブカメラ400を1台のみ示しているが、サブカメラは2台以上であってよい。なお、メインカメラ500はユーザが直接操作してもよい。また、カメラ400および500は、カメラ本体を雲台に取り付けることで撮影方向(パンおよびチルト角度)を制御可能にした構成であってもよい。また、カメラ400および500は、カメラ本体にズーム可能な交換レンズを装着した構成であってもよい。
ここで、本実施形態では、役割制御装置600には操作者が存在するものとする。また、撮影制御装置100にも操作者(ユーザ)が存在してもよいが、必須ではない。役割制御装置600の操作者が撮影制御装置100のユーザであってもよい。俯瞰カメラ300およびサブカメラ400の撮影は撮影制御装置100が制御するため、撮影者は不要である。メインカメラ500は操作者または撮影者が存在するものとする。このように、いくつかの装置の操作者または撮影者を必要としない構成により、省力化を実現することができる。
なお、図1では通信ネットワーク700ですべての信号が通信されるように記載しているが、例えば映像信号と制御信号とは別の方法で通信されてもよい。例えば、複数のカメラ300、400、500のそれぞれは、映像信号をケーブルで撮影制御装置100に直接供給してもよい。カメラ300、400、500および撮影制御装置100は、映像信号の規格に応じた通信回路を有する。映像信号の規格は、例えばSDI(Serial Digital Interface)規格やHDMI(High-Definition Multimedia Interface)(登録商標)などがあるが、これらに限定されない。
撮影制御装置100は、俯瞰カメラ300から受信した映像信号から被写体を検出する。撮影制御装置100は、被写体の検出結果と、メインカメラ500の状態と、サブカメラに設定された役割とに基づいて、サブカメラの撮影方向および画角を決定する。撮影制御装置100は、決定した撮影方向および画角を含んだ制御コマンドをサブカメラ400に送信する。役割の設定を変更することにより、サブカメラ400の撮影方向および画角の決定方法を異ならせることができ、サブカメラ400の動作制御の自由度を高めることができる。
(各装置の機能構成例)
図2は、図1に示したマルチカメラ撮像システム10を構成する各機器の機能構成例を示すブロック図である。なお、図面において機能ブロックとして表現されている構成は、ASICやFPGAのような集積回路によって、ディスクリート回路によって、あるいはメモリと、メモリに格納されたプログラムを実行するプロセッサとの組み合わせによって実現されうる。また、1つの機能ブロックが複数の集積回路パッケージによって実現されてもよいし、複数の機能ブロックが1つの集積回路パッケージによって実現されてもよい。また、同一の機能ブロックが、動作環境や要求される能力などに応じて異なる構成で実施されてもよい。
(撮影制御装置100)
まず、撮影制御装置100の機能構成例について説明する。撮影制御装置100は、例えばパーソナルコンピュータやワークステーションといった汎用コンピュータ機器であってよい。撮影制御装置100は、CPU101、RAM102、ROM103、推論部104、ネットワークインタフェース(I/F)105、ユーザ入力部106、表示部108が内部バス110を介して相互に接続された構成を有する。
CPU101は、プログラムされた命令を実行可能なマイクロプロセッサである。CPU101は、例えば、ROM103に記憶されたプログラムをRAM102に読み込んで実行することにより、後述する撮影制御装置100の機能を実現する。CPU101は、例えば、基本ソフト(OS)上で稼働する撮影制御アプリケーションを実行することにより、撮影制御装置100の機能を実現することができる。
RAM102は、CPU101が実行するプログラムをロードしたり、CPU101が処理するデータ、処理中のデータなどを一時的に格納したりするために用いられる。また、RAM102の一部は表示部108のビデオメモリとして用いられてもよい。
ROM103は書き換え可能な不揮発性メモリであり、CPU101が実行するプログラム(OSおよびアプリケーション)、ユーザデータなどを記憶する。
推論部104は、俯瞰カメラ300の映像に対して、機械学習モデルを用いた被写体領域の検出処理を実行する。推論部104は例えばGPU(Graphics Processing Unit)、NPU(Neural network Processing Unit)など、機械学習モデルの演算を高速に実行可能なハードウェア回路を用いて実施することができる。あるいは推論部104はFPGA(Field-Programmable Gate Array)といった再構成可能な論理回路を用いて実施してもよい。CPU101がプログラムを実行して推論部104の機能を実現してもよい。
機械学習モデルは、検出する被写体の種類に応じて学習した畳み込みニューラルネットワーク(CNN)であってよい。ここでは推論部104が、入力画像から人体領域または人間の顔領域を被写体領域として検出するものとする。また、推論部104は、検出した被写体領域ごとに、被写体領域が内接する矩形領域の位置および大きさ、検出信頼度を出力するものとする。なお、複数種の機械学習モデルを用い、同一の入力画像に対して種類の異なる被写体領域の検出処理を実行してもよい。なお、推論部104は、機械学習モデルを使用しない公知の方法で被写体領域の検出処理を実施してもよい。推論部104は、例えば、SIFTやSURFといった局所特徴量を用いる方法や、パターンマッチングを用いる方法などを用いて被写体領域を検出することができる。
ネットワークI/F105は撮影制御装置100を通信ネットワーク700に接続するためのインタフェースである。撮影制御装置100(CPU101)は、ネットワークI/F105を通じて、俯瞰カメラ300、サブカメラ400、メインカメラ500、役割制御装置600など、通信ネットワーク700上の外部装置と通信することができる。なお、撮影制御装置100は、不図示の他の通信インタフェース(USB、Bluetooth(登録商標)など)を通じて外部装置と通信してもよい。
CPU101は、通信ネットワーク700上の各装置(俯瞰カメラ300、サブカメラ400、メインカメラ500、役割制御装置600)と通信するため、各装置のネットワークアドレスを任意のタイミングで取得し、RAM102に記憶する。また、CPU101は、各装置の情報(装置の種類、機種名など)も、任意のタイミング(例えば最初の通信時)に取得し、RAM102に記憶する。このように、CPU101は、俯瞰カメラ300、サブカメラ400、メインカメラ500、役割制御装置600について、少なくとも識別情報と装置の種類について既知であるものとする。なお、ユーザが個々の装置に任意の名称を付与できるようにしてもよい。
ユーザ入力部106は、マウス、キーボード、タッチパネルなどの入力デバイスである。撮影制御装置100は、ユーザ入力部106を通じてユーザの指示を受け付ける。
表示部108は、液晶ディスプレイ(LCD)などの表示装置である。表示部108は、OSや撮影制御アプリケーションなどが提供するGUI画面を表示する。
(俯瞰カメラ300)
次に、俯瞰カメラ300の機能構成例について説明する。
CPU301は、プログラムされた命令を実行可能なマイクロプロセッサである。CPU301は、例えば、ROM303に記憶されたプログラムをRAM302に読み込んで実行することにより、各機能ブロックの動作を制御し、後述する俯瞰カメラ300の機能を実現する。
RAM302は、CPU301が実行するプログラムをロードしたり、CPU301が処理するデータ、処理中のデータなどを一時的に格納したりするために用いられる。また、RAM302は撮影で得られた映像信号のバッファとして用いられてもよい。
ROM308は書き換え可能な不揮発性メモリである。ROM308は、CPU301が実行するプログラム、俯瞰カメラ300の設定値、ユーザデータなどを記憶する。なお、ROM308は、映像信号の記録先としても用いることができる。ROM308は、内蔵メモリと着脱可能なメモリカードとを含んでもよい。
画像センサ307は、撮影光学系と撮像素子とを有する。撮像素子は例えば原色ベイヤ配列のカラーフィルタを有する公知のCCDもしくはCMOSカラーイメージセンサであってよい。撮像素子は複数の画素が2次元配列された画素アレイと、各画素から信号を読み出すための周辺回路とを有する。各画素は光電変換によって入射光量に応じた電荷を蓄積する。露光期間に蓄積された電荷量に応じた電圧を有する信号を各画素から読み出すことにより、撮像面に形成された被写体像を表す画素信号群(アナログ画像信号)が得られる。
画像処理部306は、画像センサ307が出力するアナログ画像信号に対して予め定められた信号処理および画像処理を適用し、用途に応じた信号や画像データを生成したり、各種の情報を取得および/または生成したりする。
画像処理部306が適用する処理には、例えば、前処理、色補間処理、補正処理、検出処理、データ加工処理、評価値算出処理、特殊効果処理などが含まれうる。
前処理には、A/D変換、信号増幅、基準レベル調整、欠陥画素補正などが含まれうる。
色補間処理は、画像センサ307にカラーフィルタが設けられている場合に行われ、画像データを構成する個々の画素データに含まれていない色成分の値を補間する処理である。色補間処理はデモザイク処理とも呼ばれる。
補正処理には、ホワイトバランス調整、階調補正、撮像光学系の光学収差に起因する画像劣化の補正(画像回復)、撮像光学系の周辺減光の影響の補正、色補正などの処理が含まれうる。
データ加工処理には、領域の切り出し(トリミング)、合成、スケーリング、符号化および復号、ヘッダ情報生成(データファイル生成)などの処理が含まれうる。外部に出力する映像信号や、ROM308に記録する映像データの生成もデータ加工処理に含まれる。
評価値算出処理には、自動焦点検出(AF)に用いる信号や評価値の生成、自動露出制御(AE)に用いる評価値の生成などの処理が含まれうる。AFやAEはCPU301が実行する。
特殊効果処理には、ボケ効果の付加、色調の変更、リライティングなどの処理などが含まれうる。
なお、これらは画像処理部306が適用可能な処理の例示であり、画像処理部306が適用する処理を限定するものではない。
画像処理部306は、取得もしくは生成した情報やデータを、用途に応じてCPU301、RAM302などに出力する。
なお、画像処理部306で適用する処理の種類や設定は、撮影制御装置100から俯瞰カメラ300にコマンドを送信することによって制御可能である。
ネットワークI/F305は、俯瞰カメラ300を通信ネットワーク700に接続するためのインタフェースである。俯瞰カメラ300(CPU301)は、ネットワークI/F305を通じて、撮影制御装置100、サブカメラ400、メインカメラ500、役割制御装置600など、通信ネットワーク700上の外部装置と通信することができる。なお、俯瞰カメラ300は、不図示の他の通信インタフェース(USB、Bluetoothなど)を通じて外部装置と通信してもよい。
(サブカメラ400)
次に、サブカメラ400の機能構成例について説明する。サブカメラ400と俯瞰カメラ300とで同じ名称の機能ブロックは同じ機能を有するものとし、説明を省略する。
上述の通り、サブカメラ400はPTZカメラであり、撮影の方向および画角を外部から制御可能である。そのため、サブカメラ400は、パンおよびチルト動作とズーム動作が可能な駆動部409と、駆動I/F408とを有している。駆動I/F408は駆動部409とCPU401との通信インタフェースである。
駆動部409は、サブカメラ400をパンおよびチルト可能に支持するパン/チルト機構と、撮影光学系の画角を変化させるズーム機構と、これらの機構を駆動するモータなどを有する。ズーム機構は画像処理部406による画像の拡大・縮小を用いてもよい。駆動部409は駆動I/F408を通じてCPU401から受信する指示に従ってモータを駆動し、撮影光学系の光軸方向および画角を調整する。
(メインカメラ500)
次に、メインカメラ500の機能構成例について説明する。メインカメラ500とサブカメラ400とで同じ名称の機能ブロックは同じ機能を有するものとし、説明を省略する。メインカメラ500はユーザが操作する。ここでは、ユーザが通信ネットワーク700を通じてコマンドを送信することによりメインカメラ500を遠隔操作するものとする。しかし、メインカメラ500がPTZカメラでない場合などには、メインカメラ500をユーザが直接操作してもよい。
撮影制御装置100(CPU101)は、サブカメラ400およびメインカメラ500の撮影方向や画角の情報を、ネットワークI/F505を通じてサブカメラ400およびメインカメラ500から取得可能である。なお、撮影方向は、予め定められた基準方向を0°とした、駆動部409および509のパンおよびチルト角度であってよい。基準方向は、撮影範囲に正対する方向であってよい。
(役割制御装置600)
次に、役割制御装置600の機能構成例について説明する。
CPU601は、プログラムされた命令を実行可能なマイクロプロセッサである。CPU601は、例えば、ROM603に記憶された役割設定プログラムをRAM602に読み込んで実行することにより、各機能ブロックの動作を制御し、役割制御装置600の機能を実現する。
RAM602は、CPU601が実行するプログラムをロードしたり、CPU601が処理するデータ、処理中のデータなどを一時的に格納したりするために用いられる。また、RAM602の一部は表示部608のビデオメモリとして用いられてもよい。
ROM603は書き換え可能な不揮発性メモリであり、CPU601が実行するプログラム、役割制御装置600の設定値、ユーザデータなどを記憶する。
ユーザ入力部611は、例えばボタン、ダイヤル、ジョイスティック、タッチパネルなどの入力デバイスである。役割制御装置600は、ユーザ入力部611を通じて、サブカメラ400の役割の設定に関するユーザの指示を受け付ける。
ネットワークI/F605は、役割制御装置600を通信ネットワーク700に接続するためのインタフェースである。役割制御装置600(CPU601)は、ネットワークI/F605を通じて、俯瞰カメラ300、サブカメラ400、メインカメラ500、撮影制御装置100など、通信ネットワーク700上の外部装置と通信することができる。なお、役割制御装置600は、不図示の他の通信インタフェース(USB、Bluetoothなど)を通じて外部装置と通信してもよい。
表示部608は、液晶ディスプレイ(LCD)などの表示装置である。表示部608は、OSや役割設定アプリケーションなどが提供するGUI画面を表示する。
役割制御装置600は、例えばROM603に、役割設定情報を記憶している。役割設定情報は、サブカメラ400の識別情報と、設定されている役割を示す情報とが対応付けられた情報である。CPU601は、役割設定アプリケーションを実行することにより、表示部608に役割設定画面を表示する。役割設定画面には、例えば、サブカメラ400の識別情報(ネットワークアドレス、ユーザが設定した名称など)と、現在設定されている役割の名称とが対応付けて表示される。現在設定されている役割の初期値は予め設定されたデフォルトの役割であってよい。ユーザは所望のサブカメラ400に関連付けられて表示されている現在の役割を、ユーザ入力部611を操作して変更することができる。
役割設定画面に含まれるOKボタンの操作など、設定動作の終了を示すユーザ操作を検出すると、CPU601は、役割設定画面の内容に従って、ROM103に記憶されている役割設定情報を更新する。
CPU601は、ネットワークI/F605を通じて役割取得コマンドを受信すると、ROM103に記憶されている役割設定情報を読み出し、役割取得コマンドの送信元に送信する。
なお、図1および図2では、役割制御装置600を独立した装置として記載しているが、例えば撮影制御装置100で実行する撮影制御アプリケーションが役割制御装置600と同様の機能を提供してもよい。また、サブカメラ400に役割を直接設定し、撮影制御装置100が、サブカメラ400に割り当てられている役割をサブカメラ400から取得してもよい。
サブカメラ400に設定可能な役割とは、メインカメラ500から得られる情報をサブカメラ400の動作制御にどのように利用するかを予め定めたものである。ここでは一例として、サブカメラ400の追尾被写体およびズーム動作の制御にメインカメラの情報を利用するものとする。
図4に、サブカメラ400に設定可能な役割の種類と役割に関連付けられた制御内容との例を示す。役割ごとの制御内容は、例えば図4に示すテーブル形式で役割制御装置600のROM603および撮影制御装置100のROM103に記憶しておくことができる。ここでは役割ROLEとして、「メインフォロー(MF)」、「メインカウンター(MC)」、「アシストフォロー(AF)」、「アシストカウンター(AC)」のいずれかを設定可能であるものとする。サブカメラ400が複数ある場合、役割はサブカメラごとに設定可能である。
役割ROLEが「メインフォロー」のサブカメラ400について、撮影制御装置100(CPU101)は、メインカメラ500と同じ追尾被写体を設定し、かつメインカメラ500がズーム操作された際には、サブカメラ400にも同位相のズーム制御を行う。ここで、同位相とはズームの方向(望遠方向または広角方向)が等しいこと、すなわち画角変化の方向が等しいことを示す。一方、逆位相とはズームの方向(望遠方向または広角方向)が反対方向であること、すなわち画角変化の方向が反対方向であることを示す。なお、ズームの方向が同位相であっても画角はメインカメラ500と等しくなくてもよいし、同位相および逆位相のいずれでもズームの変化度合(変化速度や変化率など)はメインカメラ500と等しくなくてもよい。
役割ROLEが「メインカウンター」のサブカメラ400について、撮影制御装置100(CPU101)は、メインカメラ500と同じ追尾被写体を設定し、かつメインカメラ500がズーム操作された際には、サブカメラ400には逆位相のズーム制御を行う。したがって、撮影制御装置100(CPU101)は、メインカメラ500でズームアップ操作された場合、この役割のサブカメラ400についてはズームダウンするように制御する。なお、ズームアップするとは望遠方向(テレ端方向)へズームを変化させることを示し、ズームダウンするとは広角方向(ワイド端方向)へズームを変化させることを示す。画像処理部406によるズーム制御を行う場合、ズームアップするとは画像から切り出す領域を小さくし切り出した領域の拡大率を領域変更前より大きくすることを示す。一方、ズームダウンするとは画像から切り出す領域を大きくし切り出した領域の拡大率を領域変更前より小さくすることを示す。
役割ROLEが「アシストフォロー」のサブカメラ400について、撮影制御装置100(CPU101)は、メインカメラ500と別の追尾被写体を設定し、かつメインカメラ500がズーム操作された際には、サブカメラ400にも同位相のズーム制御を行う。
役割ROLEが「アシストカウンター」のサブカメラ400について、撮影制御装置100(CPU101)は、メインカメラ500と別の追尾被写体を設定する。また、撮影制御装置100は、メインカメラ500がズーム操作された際には、サブカメラ400には逆位相のズーム制御を行う。
ここでは、役割ROLEが「アシストフォロー」および「アシストカウンター」のサブカメラ400には、画像中、メインカメラ500の注目被写体とは別の被写体のうち、左側(左端)に存在する被写体を、サブカメラ400の追尾被写体として設定する。なお、サブカメラ400の追尾被写体は別の条件に従って設定してもよい。例えば、画像中、メインカメラ500の注目被写体とは別の被写体のうち、右側(右端)、上側(上端)、または下側(下端)に存在する被写体をサブカメラの追尾被写体としてもよい。あるいは、メインカメラ500の注目被写体とは別の被写体のうち、最も手前または奥に存在する被写体をサブカメラ400の追尾被写体としてもよい。
また、追尾被写体の設定とズーム制御の一方のみを実行したり、さらに別の制御項目を追加してもよい。
役割制御装置600がROM603に記憶する役割設定情報には、役割ROLEを示す情報(上述した種類の名称、または種類に割り当てられた番号など)が、サブカメラ400の識別情報と関連付けられている。撮影制御装置100のCPU101は、役割制御装置600から役割設定情報を取得し、サブカメラ400に設定された役割ROLEの種類に応じたサブカメラ400の動作制御を実行する。
なお、役割制御装置600は、サブカメラ400に対する役割の設定に変更があった場合、外部装置(例えば撮影制御装置100)に通知してもよい。これにより、役割の設定の変更を、直ちにサブカメラ400の動作制御に反映させることができる。
<各装置の動作の説明>
続いて、マルチカメラ撮像システムにおける各装置の動作について説明する。ここでは、撮影制御装置100が、俯瞰カメラ300の映像、メインカメラ500から得られる情報、およびサブカメラ400に設定された役割に基づいて、サブカメラ400の撮影動作を自動制御するものとする。
図3は、撮影制御装置100がサブカメラ400の動作を制御する際に実施する一連の処理を、主要な動作と信号の流れに着目して表した図である。撮影制御装置100内に示される機能ブロックは主要な動作を模式的に示しており、撮影制御アプリケーションが提供する主要な機能に相当する。図3における各機能ブロックは、撮影制御アプリケーションを実行するCPU101と、図2に示した撮影制御装置100の機能ブロックの1つ以上との組み合わせによって実現される。
図5は、役割決定部120としてのCPU101の動作を示すフローチャートである。また、図6(a)~図6(d)はそれぞれ、撮影制御装置100、俯瞰カメラ300、メインカメラ500、サブカメラ400の動作に関するフローチャートである。
以下の説明において、俯瞰カメラ300の視点位置の3次元座標値および撮影方向(光軸方向)が撮影制御装置100に既知であるものとする。また、サブカメラ400およびメインカメラ500の視点位置の3次元座標値、撮影範囲に配置されたマーカの座標値など、既知の位置情報は、既定位置情報REF_POSIとしてROM103に予め格納されているものとする。なお、位置の座標系は位置の種類によって予め定められているものとする。
(役割決定部120の動作)
まず、図3における役割決定部120としてのCPU101の動作について図5に示すフローチャートを参照して説明する。以下に説明する動作は、CPU101が撮影制御アプリケーションを実行することによって実現される。
なお、図5のフローチャートに示す動作を開始するタイミングに特に制限は無いが、少なくともサブカメラ400の撮影動作の制御を開始する前に実行する。また、役割制御装置600から、サブカメラ400に対する役割の設定が変更された旨の通知をネットワークI/F105を通じて受信した場合にも実行するものとする。
S101で役割決定部120としてのCPU101は、サブカメラ400に対応する役割ROLE(役割設定情報)を役割制御装置600から取得する。CPU101は、例えばネットワークI/F105を通じて役割制御装置600に役割取得コマンドを送信することにより、役割制御装置600から上述した役割設定情報を取得することができる。CPU101は、取得した役割設定情報をRAM102に記憶する。
S103でCPU101は、RAM102に記憶された役割設定情報をサブカメラ400の識別情報に基づいて参照し、サブカメラ400に対する動作制御内容を取得する。そして、役割決定部120としてのCPU101は、取得した動作制御内容(CAMERA_ROLE)を追尾被写体決定部123へ送信する。実際には、CPU101は動作制御内容をRAM102の特定領域に記憶し、追尾被写体決定部123として機能する際に参照する。
S104で役割決定部120としてのCPU101は、取得した動作制御内容(CAMERA_ROLE)をズーム値算出部125へ送信する。実際には、CPU101は動作制御内容をRAM102の特定領域に記憶し、ズーム値算出部125として機能する際に参照する。
(撮影制御装置100の動作)
次に、撮影制御装置100がサブカメラ400による撮影を制御する動作について、図3および図6(a)を参照して説明する。以下に説明する動作は、図3における認識部121、注目被写体決定部122、追尾被写体決定部123、パン・チルト値算出部124、およびズーム値算出部125としてのCPU101の動作に相当する。なお、以下に説明する動作は、CPU101が撮影制御アプリケーションを実行することによって実現される。
S201でCPU101は、ネットワークI/F105を通じて、俯瞰カメラ300に、予め定められたプロトコルで撮影指示コマンドを送信する。このコマンドに応答して、俯瞰カメラ300から、映像入力部107に対する映像信号(動画データ)IMGの供給が開始される。CPU101は映像入力部107で受信した映像信号のRAM102への格納を開始したのち、S202を実行する。
S202でCPU101は、メインカメラ500から撮影方向を示す情報ANGLEを取得する。具体的にはCPU101はネットワークI/F105を通じて、メインカメラ500に、予め定められたプロトコルで撮影方向取得コマンドを送信する。メインカメラ500のCPU501は、撮影方向取得コマンドに応答して、メインカメラ500の現在の撮影方向を示す情報ANGLEを撮影制御装置100に送信する。情報ANGLEは例えば駆動部509のパンおよびチルト角度であってよい。CPU101は取得した情報ANGLEをRAM102に記憶する。
S203で、認識部121は以下の処理を実行する。
(1)入力されたフレーム画像に対して被写体領域の検出処理を適用し、検出結果を記憶する
(2)検出された被写体領域ごとに、位置情報(画像座標)を座標変換する
(3)検出された被写体領域ごとに識別処理を適用し、識別情報を特定する(新たな被写体の場合には識別処理用の情報を追加する)
(4)検出された被写体領域ごとに識別情報ID[n]と位置情報POSITION[n]とを関連付けて記憶する
認識部121は、主にCPU101と推論部104とによって実現される。CPU101は、俯瞰カメラ300から受信した映像の1フレームをRAM102から読みだして推論部104に入力する。
以下、認識部121の動作を順を追って説明する。
(1)まず、推論部104は、フレーム画像を機械学習モデルに入力し、被写体領域を検出する。推論部104は、検出結果として機械学習モデルが出力する、検出された被写体領域ごとの位置および大きさと、検出信頼度とをRAM102に記憶する。被写体領域の位置および大きさは、被写体領域が内接する矩形領域の位置と大きさを特定可能な任意の情報であってよい。ここでは、矩形領域の下辺の中央座標と、幅および高さを、被写体領域の位置および大きさとして用いる。
また、推論部104は、最初のフレーム画像に対する検出結果については、被写体の識別情報ID[n]と関連付けてRAM102に記憶する。ここで、nは被写体の番号であり、1から、検出した被写体領域の総数までの値を取る整数である。さらに、推論部104は、最初のフレーム画像から検出された被写体領域を、個々の被写体を識別するためのテンプレートとして、被写体の識別情報ID[n]と関連付けてRAM102に記憶する。被写体の識別にテンプレートマッチングを用いない場合は、テンプレートを記憶しなくてもよい。
図8(a)は、図7(a)に示す俯瞰カメラ300の映像に対する推論部104による被写体検出処理の結果の一例を示している。ここでは、撮影範囲20内に存在する人物被写体A~Cの領域が検出され、被写体領域が内接する矩形領域の下辺の中央の座標(足元座標)が位置として出力される。
なお、後述する座標変換のために、例えば図7(b)に示すように撮影範囲20内の既知の位置にマーカ(Mark)を配置している場合、CPU101はフレーム画像(図7(a))に含まれるマーカの画像を検出し、位置をRAM102に記憶する。マーカ画像の検出も推論部104が実行するように構成してもよい。マーカ画像の検出は、マーカのテンプレートを用いたパターンマッチングなど、任意の公知の方法で実施することができる。予め記憶したマーカ検出用の機械学習モデルを用いてマーカ画像を検出してもよい。
(2)次に、推論部104が実行する座標変換について説明する。図7(a)は俯瞰カメラ300の映像を、図7(b)は撮影範囲20をその中心直上から見た状態をそれぞれ模式的に示している。推論部104は、俯瞰カメラの座標系における被写体領域の位置を、撮影範囲20をその中心直上から見た際の座標系(平面座標系)の値に座標変換する。
ここで、平面座標系の値に座標変換するのは、サブカメラ400に特定の被写体を撮影させるためのパン値(水平面内の移動角度)を算出する上で都合がよいためである。なお、ここでは、駆動部409が撮影範囲20の床と平行した水平面内でパン動作をするようにサブカメラ400が設置されていることを前提としている。
座標変換は様々な方法で実行可能であるが、ここでは、撮影範囲20の床の既知の複数の位置にマーカを配置し、俯瞰カメラ300で得られた映像中のマーカ位置に基づいて、俯瞰カメラ座標系から平面座標系に座標変換する。なお、俯瞰カメラ300の視点位置と撮影方向を用いるなど、マーカを用いずに座標変換してもよい。
座標変換は、ホモグラフィー変換行列Hを用いて、以下の式1に従って実行することができる。
式1において、右辺のx、yは俯瞰カメラ座標系における水平座標および垂直座標であり、左辺のX、Yは平面座標系の水平座標および垂直座標である。
ホモグラフィー変換行列は、映像から検出された4つのマーカの座標と、撮影範囲20に配置された4つのマーカの座標(既知)とを、式1に代入し、連立方程式を解くことにより、算出することができる。撮影範囲20と俯瞰カメラ300との位置関係が固定である場合、予めテスト撮影時にホモグラフィー変換行列Hを算出しておき、例えばROM103に保存しておくことができる。
CPU101は、RAM102から被写体領域の位置を順次読み出し、平面座標系の値に座標変換する。図8(b)は、図8(a)に示す俯瞰カメラ300映像で検出された各被写体領域の足元座標(x, y)を、式1とROM103に保存したホモグラフィー変換行列Hを用いて平面座標系の座標値(X, Y)に座標変換した状態を模式的に示している。CPU101は、座標変換した足元座標をPOSITION[n]としてRAM102に記憶する。
(3)次に、推論部104が被写体の識別情報ID[n]を特定する動作について説明する。ここでは、テンプレートマッチングを用いて被写体を識別するものとする。被写体の識別は、2回目以降の被写体検出の処理結果に対して実施する。最初の処理結果については、被写体領域に対して識別情報ID[n]を新規に割り当てればよい。
推論部104は、RAM102に記憶されたテンプレートを用いたテンプレートマッチングにより、検出された被写体領域の識別情報ID[n]を特定する。これにより、撮影範囲内の被写体が識別される。推論部104は例えば、検出された被写体領域ごとに、個々のテンプレートの相関を表す評価値を算出する。そして、推論部104は、一定以上の相関を有し、かつ最も相関が高いテンプレートに対応する識別情報ID[n]を、被写体領域の識別情報ID[n]として特定する。評価値は例えば画素値の差分絶対値和など、公知の値を用いることができる。
なお、推論部104は、すべてのテンプレートに対して一定以上の相関を有しない被写体領域については、新たな識別情報ID[n]を割り当て、被写体領域の画像をテンプレートに追加する。
また、推論部104は、直近のフレーム画像で検出された被写体領域を用いて既存のテンプレートを更新したり、一定以上の相関を有する被写体領域が一定期間存在しないテンプレートを削除したりしてもよい。さらに、推論部104は、頻繁に登場する識別情報ID[n]に対応したテンプレートについてはROM103に記憶してもよい。
なお、テンプレートマッチング以外の方法で被写体を識別してもよい。例えば直前の検出位置および大きさの少なくとも一方が最も近い被写体領域と同じ識別情報ID[n]と特定してもよい。また、同一の識別情報に関連付けられた過去複数回の検出結果における位置の推移から現在のフレーム画像における位置をカルマンフィルタ等により予測し、予測位置に最も近い被写体領域に同じ識別情報IDを特定してもよい。また、これらの方法を組み合わせてもよい。テンプレートマッチングを用いないことで、見た目が似ている異なる被写体の識別精度を高めることができる。
(4)推論部104は、特定した識別情報ID[n]と、対応する被写体領域の位置(平面座標系)POSITION[n]とを関連付けて、RAM102に記憶する。
なお、(1)~(4)の処理のうち、被写体検出以外の処理については、推論部104の代わりにCPU101が実行してもよい。
ここでは、俯瞰カメラ300の映像を用いて、撮影範囲20内の被写体に関する識別情報ID[n]と位置POSITION[n]を求めた。しかし、サブカメラ400の映像を用いてもよい。サブカメラ400が複数の場合、CPU101は、サブカメラ400ごとに図6(a)のフローチャートに示した動作を実行する。被写体領域の位置はサブカメラ400ごとの座標系における値で出力する。このように、俯瞰カメラ300は必須ではないが、俯瞰カメラ300を用いた方が被写体の検出精度はよいと考えられる。
図6(a)の説明に戻り、S204では、図3の注目被写体決定部122としてのCPU101が、メインカメラ500の追尾被写体としての注目被写体を判定する。CPU101は、S203で検出された被写体のうち、S202で取得したメインカメラ500の撮影方向に基づいて、メインカメラ500の注目被写体を判定することができる。CPU101は、メインカメラ500の注目被写体として判定した被写体領域に対応する識別情報ID[n]を、注目被写体の識別情報MAIN_SUBJECTとしてRAM102に記憶する。
例えばCPU101は、平面座標系においてメインカメラ500の撮影方向に最も近い被写体を、メインカメラ500の注目被写体と判定することができる。なお、メインカメラ500の撮影方向との距離が閾値以下の被写体が複数存在する場合には、その中から注目被写体をユーザに選択させてもよい。
注目被写体をユーザに選択させる場合、CPU101は、表示部108または外部表示装置に、S202で被写体検出処理を適用したフレーム画像を、撮影方向を示す指標と、注目被写体の候補となる被写体領域を示す指標と共に表示させる。被写体領域の指標は、例えば図8(a)に示すような被写体領域の外縁を示す矩形枠であってよいが、他の指標であってもよい。また、CPU101は、画像内の注目被写体を選択するように促すメッセージなども表示部108に表示させてもよい。
ユーザは、ユーザ入力部106(入力デバイス)を操作して、所望の注目被写体に対応する被写体領域を選択することができる。選択方法に特に制限はないが、マウスやキーボードを操作して、所望の被写体領域を指定する操作であってよい。
CPU101は、被写体領域を指定するユーザ操作を検出すると、指定された被写体領域に対応する識別情報ID[n]を、注目被写体の識別情報MAIN_SUBJECTとしてRAM102に記憶する。
次にS205で図3の追尾被写体決定部123としてのCPU101は、サブカメラ400に設定されている役割に応じた制御内容CAMERA_ROLEを取得する。具体的にはCPU101は、図5を用いて説明した役割決定処理で取得され、RAM102に記憶されている制御内容CAMERA_ROLEを読み出す。なお、サブカメラ400が複数の場合、CPU101はS205~S207の処理はサブカメラごとに実行する。
S206で、追尾被写体決定部123としてのCPU101は、制御内容CAMERA_ROLEに従って、サブカメラ400に追尾撮影させる被写体を決定する。CPU101は、制御内容CAMERA_ROLEに含まれる追尾被写体の規定(図4)に従って、サブカメラ400の追尾被写体を決定する。
サブカメラ400の追尾被写体をメインカメラ500の注目被写体と同じにする場合、CPU101は、S203で決定した注目被写体の識別情報MAIN_SUBJECTをサブカメラ400の追尾被写体の識別情報SUBJECT_IDとして設定する。
サブカメラ400の追尾被写体を、メインカメラ500の注目被写体とは別の被写体のうち左側に位置する被写体とする場合、CPU101は、S203で検出された被写体領域のうち、注目被写体以外の被写体領域の左端に位置する被写体領域を検出する。そして、CPU101は、検出した被写体領域に対応する識別情報ID[n]を、サブカメラ400の追尾被写体の識別情報SUBJECT_IDとして設定する。
CPU101は、決定した追尾被写体の識別情報SUBJECT_IDを、RAM102に書き出す。サブカメラによって追尾被写体が異なり得る場合、CPU101は、追尾被写体の識別情報SUBJECT_IDをサブカメラの識別情報と関連付けて記憶する。なお、追尾被写体が変化した場合、CPU101は、以前の追尾被写体の情報は消去せずにRAM102に保持しておく。
ここで、サブカメラ400に設定されている役割が「メインフォロー」の場合の動作について、図9を用いて説明する。役割「メインフォロー」が設定されているサブカメラ400について撮影制御装置100は、メインカメラ500の注目被写体を追尾するように制御する。
従って、図9(a)に示すようにメインカメラ500の注目被写体が被写体Bと判定された場合、CPU101は、被写体Bをサブカメラ400の追尾被写体に決定する。その後、図9(b)に示すようにメインカメラ500の注目被写体が被写体Aに変化したと判定された場合、CPU101はサブカメラ400の追尾被写体を被写体Aに変更する。同様に、図9(c)に示すようにメインカメラ500の注目被写体が被写体Cに変化したと判定された場合、CPU101はサブカメラ400の追尾被写体を被写体Cに変更する。
サブカメラ400に設定されている役割が「アシストフォロー」の場合の動作について、図10を用いて説明する。役割「アシストフォロー」が設定されているサブカメラ400について撮影制御装置100は、メインカメラ500の注目被写体とは別の被写体のうち、左側に位置する被写体を追尾するように制御する。
従って、図10(a)に示すようにメインカメラ500の注目被写体が被写体Bと判定された場合、CPU101は、被写体A、Cのうち左側の被写体Aをサブカメラ400の追尾被写体に決定する。その後、図10(b)に示すようにメインカメラ500の注目被写体が被写体Aに変化したと判定された場合、CPU101はサブカメラ400の追尾被写体を被写体B、Cのうち左側の被写体Bに変更する。また、図10(c)に示すようにメインカメラ500の注目被写体が被写体Cに変化したと判定された場合、CPU101はサブカメラ400の追尾被写体を被写体A、Bのうち左側の被写体Aに変更する。
役割制御装置600により、サブカメラ400に設定する役割を動的に変更することで、サブカメラ400の追尾被写体を変更することができ、柔軟な自動撮影が可能になる。
図6(a)に戻り、S207で、パン・チルト値算出部124としてのCPU101は、サブカメラ400がS206で決定された追尾被写体を追尾撮影するために必要なパン角およびチルト角の変更量を算出する。また、ズーム値算出部125としてのCPU101は、メインカメラ500の画角変化に応じたサブカメラ400のズーム値を算出する。以下ではサブカメラ400が1台の場合について説明するが、サブカメラ400が複数の場合、サブカメラごとにパン角およびチルト角の変更量の算出と、ズーム値の算出とを実行する。
まず、パン・チルト値算出部124としてのCPU101の動作について説明する。ここでは、サブカメラ400ごとに、以下の情報が既定位置情報REF_POSIとしてROM103に予め格納されているものとする。
・設置位置の3次元座標(平面座標系での値)
・駆動部のパン角度およびチルト角度の初期値に対応する撮影方向
・パンおよびチルト角の制御可能範囲
CPU101は、サブカメラ400の追尾被写体の識別情報SUBJECT_IDに対応する位置情報POSITION_OHをRAM102から読み出す。そして、CPU101は、位置情報POSITION_OHとサブカメラ400の設置位置とから、まずパン角度を決定する。
図11は、サブカメラ400と追尾被写体との位置関係の一例を平面座標系で示した図である。ここでは、サブカメラ400の光軸方向を被写体位置に向けるパン角度θを決定するものとする。CPU101は、パン角度θを以下の式2を用いて算出する。
式2におけるpx、pyは、追尾被写体の識別情報SUBJECT_IDに対応する位置情報POSITION_OHの水平座標および垂直座標である。また、subx、subyはサブカメラの設置位置の水平座標および垂直座標である。ここでは、現在のパン角が初期値0°であり、光軸方向が垂直方向(Y軸方向)であるものとする。現在の光軸方向が垂直方向でない場合、式2で得られた角度に、現在の光軸方向と垂直方向との角度差を反映させればよい。また、パンの方向はsubx>pxであれば反時計方向、subx<pxであれば時計方向である。
次に、図12を用いて、チルト角の決定方法について説明する。図8は、サブカメラと追尾被写体とを側方から見た状態を示している。サブカメラ400の現在の光軸が水平方向であり高さがh1であり、光軸を向ける追尾被写体の顔の高さがh2であるものとする。現在の光軸方向と目標の光軸方向との高さ方向の角度差(チルト角)をρとする。CPU101はチルト角ρを以下の式3および式4を用いて算出する。
式4に用いる座標値は、式2に用いる座標値と同じである。h1およびh2は、予め撮影制御アプリケーションに入力され、RAM102に記憶されているものとする。この場合、被写体ごとのh2に関連付ける識別番号と、被写体検出処理で割り当てる識別番号とが等しくなるようにする。あるいは、h2は不図示のセンサを用いてリアルタイムに測定した値を用いてもよい。
ここでは、現在のチルト角が初期値0°であり、光軸方向が水平方向(高さが一定)であるものとする。現在の光軸方向が水平方向でない場合、式4で得られた角度に、現在の光軸方向と水平方向との角度差を反映させればよい。また、チルトの方向はh1>h2であれば下方向、h1<h2であれば上方向である。
CPU101は、サブカメラ400と通信ネットワーク700を通じて周期的に通信し、現在の光軸方向(駆動部のパン角およびチルト角)を取得してRAM102に記憶する。なお、通信周期は例えばフレームレートの逆数以下とすることができる。あるいは、CPU101が、サブカメラ400について初期状態から制御したパン角およびチルト角の合計値をRAM102に保持しておき、現在の光軸方向として用いてもよい。
CPU101は、このようにしてサブカメラ400のパン角およびチルト角の変更量を算出し、RAM102に記憶する。なお、サブカメラ400が複数の場合、CPU101はサブカメラごとにパン角およびチルト角の変更量を算出する。
パン角およびチルト角の変更量は、サブカメラ400が追尾被写体の方向に回動するための角速度としてもよい。例えば、CPU101は、通信ネットワーク700を通じてサブカメラ400から現在のパン角およびチルト角を取得する。そして、CPU101は、RAM102から読み出したパン角θと、現在のパン角との差に比例したパンの角速度を求める。また、CPU101は、RAM102から読み出したチルト角ρと現在のチルト角との差に比例したチルトの角速度を求める。このように算出した角速度を、CPU101はRAM102に記憶する。
なお、俯瞰カメラ300の映像の代わりにサブカメラ400の映像を用いてパン角およびチルト角の変更量を算出してもよい。この場合CPU101は、サブカメラ400の座標系における現在の光軸方向と追尾被写体方向との水平方向の差からパン角の変化量を算出し、垂直方向の差からチルト角の変化量を算出してもよい。また、追尾被写体を追尾撮影するための撮影方向の変更をパン方向及びチルト方向の一方だけで行う撮像システムであってもよく、そのような撮像システムではパン角およびチルト角の一方の変更量だけを算出するようにしてもよい。
次に、ズーム値算出部125としてのCPU101の動作について説明する。ズーム値算出部125としてのCPU101は、メインカメラ500の画角を示す情報MAIN_ZOOMを周期的に取得し、RAM102に記憶する。そして、情報MAIN_ZOOMが変化した場合、CPU101はサブカメラ400に設定されている役割に応じた制御内容CAMERA_ROLEに従って、サブカメラ400に対するズーム値Z_VALUEを算出する。
なお、CPU101は、メインカメラ500のズーム操作およびその位相を、例えばメインカメラ500の映像の画角変化を検出することによって判定することができる。例えば、被写体領域の大きさや間隔の経時変化などから画角の変化を検出してもよい。
図13は、メインカメラとサブカメラのズーム値のマッピング例を示す。ここではメインカメラ500およびサブカメラ400が光学的に画角を変更する(撮影光学系がズーム機能を有する)ものとする。しかし、画像処理部406、506を用いたデジタルズームで同様の機能を実現してもよい。
なお、ズーム値は、画角と対応した値を有するパラメータであり、本実施形態では画角が小さい(狭い)ほどズーム値は小さい値となり、望遠側のズーム値は広角側のズーム値よりも小さい。サブカメラ400およびメインカメラ500は、ズーム値を指定したコマンドを送信することにより、撮影光学系をズーム値に対応した画角に制御可能であるものとする。すなわち、ズーム値は画角に関する情報であってズーム状態を表す情報である。ズーム値は例えば35mmフルサイズの撮像素子に対応した撮影光学系の焦点距離(mm)であってもよく、その場合は望遠側のズーム値は広角側のズーム値よりも大きくなる。
図13において、メインカメラ500のズーム値MAIN_ZOOMの範囲はmain_min~main_maxである。また、サブカメラ400のズーム範囲はsub_min~sub_maxである。main_min、sub_minは、それぞれメインカメラ500およびサブカメラ400の望遠端、main_max、sub_maxは、それぞれメインカメラ500およびサブカメラ400の広角端に対応するズーム値である。図13では、メインカメラ500のズーム値の範囲が望遠端および広角端の両方についてサブカメラ400のズーム値の範囲より広い例を示している。
サブカメラ400のズーム値SUB_ZOOMをメインカメラ500のズーム値MAIN_ZOOMと同位相に制御する場合、CPU101は、現在のMAIN_ZOOMに対応するSUB_ZOOMを以下の式5を用いて算出する。
一方、サブカメラ400のズーム値SUB_ZOOMをメインカメラ500のズーム値MAIN_ZOOMと逆位相に制御する場合、現在のMAIN_ZOOMに対応するSUB_ZOOMを以下の式6を用いて算出する。具体的にはCPU101は、式5で算出したSUB_ZOOMを以下の式6の右辺に代入することにより、現在のMAIN_ZOOMに対応するSUB_ZOOMを算出する。
SUB_ZOOM=sub_max-(SUB_ZOOM-sub_min) ・・・(式6)
メインカメラ500がデジタルズームを行いクロッピングによって画角を制御する場合、CPU101は、メインカメラ500でクロップする範囲のサイズにしたがってサブカメラ400のズーム値SUB_ZOOMを決定することができる。具体的には、CPU101はメインカメラ500でクロップする範囲のサイズが小さいほどズーム値SUB_ZOOMを小さく(高倍率に)、サイズが大きい程ズーム値SUB_ZOOMを大きく(低倍率に)設定する。
また、サブカメラ400の役割と関連付けるズーム制御の内容は、メインカメラ500と同相または逆位相の制御に限定されない。例えば、メインカメラ500の画角変化とは独立したズーム動作を役割に関連付けてもよい。例えば追尾被写体の大きさを一定に維持するようなオートズーム動作を役割に関連付けてもよい。また、サブカメラ400の画角を特定の画角に固定させるようにしてもよい。図4に示した、役割ごとの制御内容に、これらのズーム制御を関連付けた役割を追加するか、図4に示した役割のズーム制御の内容を変更することで、サブカメラ400に対する様々なズーム制御が可能になる。
図6(a)に戻り、S207でCPU101は、RAM102からS206で算出したパンおよびチルト角の変更量と、ズーム値とを読み出す。そして、CPU101は、サブカメラ400に、これらの変更量に相当するパン角およびチルト角の変更を指示する制御コマンドPT_VALUEを生成する。また、CPU101は、サブカメラ400に、ズーム値に相当する画角の変更を指示する制御コマンドZ_VALUEを生成する。制御コマンドの形式は予め定められているものとする。CPU101は、生成した制御コマンドPT_VALUEおよびZ_VALUEをRAM102に記憶する。なお、追尾被写体が静止している場合や、メインカメラ500の画角が変わらない場合など、制御コマンドを生成する必要がない場合には、S207をスキップしてもよい。
そして、CPU101は、制御コマンドPT_VALUEおよびZ_VALUEをRAM102から読み出し、ネットワークI/F105を通じて通信ネットワーク700に送信する。サブカメラ400は、ネットワークI/F405を通じて制御コマンドPT_VALUEおよびZ_VALUEを受信する。
CPU101は、俯瞰カメラ300の映像の次のフレーム画像について、S201からの処理を実行する。なお、図6(a)に示した処理は、必ずしも毎フレーム実行しなくてもよい。
(俯瞰カメラ300の動作)
次に、俯瞰カメラ300の動作について、図6(b)を参照して説明する。以下に説明する動作は、CPU301がプログラムを実行することによって実現される。
俯瞰カメラ300の電源が投入されると、CPU301により各機能ブロックが初期化されたのち、撮影スタンバイ状態となる。撮影スタンバイ状態でCPU301は、ライブビュー表示用の動画撮影処理を開始し、画像処理部306で生成された表示用画像データをネットワークI/F305を通じて撮影制御装置100に出力してもよい。
撮影スタンバイ状態においてCPU301は、ネットワークI/F305を通じた制御コマンドの受信を待機する。CPU301は、制御コマンドを受信すると、制御コマンドに応じた動作を実行する。ここでは、撮影制御装置100から制御コマンドとして撮影コマンドを受信した場合の動作について説明する。
S301でCPU301はネットワークI/F305を通じて撮影制御装置100から撮影コマンドを受信する。
なお、撮影コマンドにはフレームレートや解像度などの撮影パラメータが指定されていてもよい。また、画像処理部306で適用する処理に関する設定が含まれていてもよい。
S302でCPU301は、撮影コマンドの受信に応答して、撮影制御装置100に供給するための動画撮影処理を開始する。この動画撮影処理では、ライブビュー表示用の動画撮影処理よりも高画質な動画を撮影する。例えば、動画の解像度および撮影フレームレートの少なくとも一方がライブビュー表示用の動画よりも高い。画像処理部306は、撮影制御装置100に供給する動画用の設定に基づいて画像に処理を適用する。画像処理部306は、生成した動画データをRAM302に順次格納する。
S303でCPU101は、動画データをRAM302から読み出し、ネットワークI/F305を通じて撮影制御装置100に送信する。以降、撮影停止の制御コマンドを受信するまで、撮影から動画データの供給までの処理を継続する。
(メインカメラ500の動作)
次に、メイン500の動作について、図6(c)を参照して説明する。以下に説明する動作は、CPU501がプログラムを実行することによって実現される。
メインカメラ500の電源が投入されると、CPU501により各機能ブロックが初期化されたのち、撮影制御装置100に供給するための動画撮影処理を開始する。画像処理部506は、画像センサ507から得られるアナログ画像信号に対して、撮影制御装置100に供給する動画用の設定に基づいて処理を適用する。画像処理部506は、生成した動画データをRAM502に順次格納する。CPU501は、動画データをRAM502から読み出し、ネットワークI/F505を通じて撮影制御装置100に供給する。
CPU501は、動画データを撮影制御装置100に供給しながら、ネットワークI/F305を通じた制御コマンドの受信を待機する。CPU501は、制御コマンドを受信すると、制御コマンドに応じた動作を実行する。ここでは、撮影方向取得コマンドを受信した場合の動作について説明する。なお、パン・チルトの制御コマンドPT_VALUE、ズームの制御コマンドZ_VALUEを受信した場合、CPU501はコマンドに応じて駆動部509を駆動させる。
S501でCPU501は、ネットワークI/F505を通じて撮影方向取得コマンドを受信する。CPU501は、受信した撮影方向取得コマンドをRAM502に記憶する。
S502でCPU501は、撮影方向取得コマンドの受信に応答して、現在のパン角およびチルト角を駆動部509から駆動I/F508を通じて取得し、RAM502に記憶する。
S503でCPU501は、現在のパン角およびチルト角をRAM502から読み出し、撮影方向の情報ANGLEとして、ネットワークI/F305を通じて撮影制御装置100に送信する。
(サブカメラ400の動作)
次に、サブカメラ400の動作について、図6(d)を参照して説明する。以下に説明する動作は、CPU401がプログラムを実行することによって実現される。
サブカメラ400の電源が投入されると、CPU401により各機能ブロックが初期化されたのち、撮影制御装置100に供給するための動画撮影処理を開始する。画像処理部406は、画像センサ407から得られるアナログ画像信号に対して、撮影制御装置100に供給する動画用の設定に基づいて処理を適用する。画像処理部406は、生成した動画データをRAM402に順次格納する。CPU401は、動画データをRAM402から読み出し、ネットワークI/F405を通じて撮影制御装置100に供給する。
CPU401は、動画データを撮影制御装置100に供給しながら、ネットワークI/F305を通じた制御コマンドの受信を待機する。CPU401は、制御コマンドを受信すると、制御コマンドに応じた動作を実行する。ここでは、撮影制御装置100からパン・チルトの制御コマンドPT_VALUEおよびズームの制御コマンドZ_VALUEを受信した場合の動作について説明する。
S401でCPU401はネットワークI/F405を通じて撮影制御装置100からパン・チルトの制御コマンドPT_VALUEおよびズームの制御コマンドZ_VALUEの少なくとも一方を受信する。CPU401は受信した制御コマンドをRAM402に記憶する。
S402でCPU401は、RAM402に記憶した制御コマンドから操作方向と対応する操作量とを読み出し、RAM402に記憶する。ここで、パン・チルトの制御コマンドPT_VALUEの場合、操作方向はパンおよび/またはチルトの方向、操作量は目標角度である。また、ズームの制御コマンドZ_VALUEの場合、操作量はズーム値であり、ズーム値から操作方向を特定できるため操作方向の読み出しおよび記憶は不要である。
S403でCPU401は、S403で読み出した操作方向および操作量に基づいて、駆動部409の駆動パラメータを生成する。CPU401は例えば操作方向と操作量との組み合わせに応じた駆動パラメータを、予めROM403に保持されたテーブルを用いて取得してもよい。なお、操作量が目標値(目標角度やズーム値)で与えられる場合、CPU410は現在の値との差分から駆動パラメータを取得する。
S404でCPU401は、S404にて取得した駆動パラメータに基づいて、駆動I/F408を通じて駆動部409を制御する。これにより、駆動部409が、パン・チルトの制御コマンドPT_VALUEで指定された操作方向および角度にサブカメラ400の撮影方向を変更する。また、駆動部409は、ズームの制御コマンドZ_VALUEで指定されたズーム値に撮影光学系の画角を変更する。
次に、図14に示すフローチャートを用いて、撮影制御装置100がサブカメラ400に設定された役割に応じてサブカメラの撮影方向(パンおよびチルト)および画角(ズーム値)を制御する動作について、より詳細に説明する。図14のフローチャートに示す動作は図6(a)におけるS205~S207の動作の一部として実行される。
S601はS205に相当し、CPU101は、図5のS103でRAM102に記憶した制御内容CAMERA_ROLEを読み出す。
S602~S607は例えばS206で実施される。
S602でCPU101は、制御内容CAMERA_ROLEに含まれる、サブカメラ400の追尾被写体の規定が、メインカメラ500の追尾被写体(注目被写体)を示しているかどうか判定する。例えば、サブカメラ400の追尾被写体の規定が「メインと同じ」を示す値を有する場合、CPU101は、サブカメラ400の追尾被写体の規定が、メインカメラ500の追尾被写体を示していると判定してS603を実行する。一方、サブカメラ400の追尾被写体の規定が「メインと別(左側)」を示す値を有する場合、CPU101は、サブカメラ400の追尾被写体の規定が、メインカメラ500の追尾被写体を示していないと判定してS604を実行する。
S603でCPU101は、サブカメラ400の撮影方向を、メインカメラ500の追尾被写体(注目被写体)を追尾するように制御することを決定する。
S604でCPU101は、サブカメラ400の撮影方向を、メインカメラ500の注目被写体とは別の被写体のうち、左側に位置する被写体を追尾するように制御することを決定する。
S605でCPU101は、制御内容CAMERA_ROLEに含まれる、サブカメラ400のズーム制御の規定が、メインカメラ500と同位相の制御を示しているかどうか判定する。例えば、サブカメラ400のズーム制御の規定が「メインと同位相」を示す値を有する場合、CPU101は、サブカメラ400のズーム制御の規定が、メインカメラ500と同位相の制御を示していると判定してS606を実行する。一方、サブカメラ400のズーム制御の規定が「メインと逆位相」を示す値を有する場合、CPU101は、サブカメラ400のズーム制御の規定が、メインカメラ500と同位相の制御を示していないと判定してS607を実行する。
S606でCPU101は、サブカメラ400のズーム値(画角)を、メインカメラ500のズーム値の変化と同位相で制御することを決定する。
S607でCPU101は、サブカメラ400のズーム値(画角)を、メインカメラ500のズーム値の変化と逆位相で制御することを決定する。
図15を用いて、サブカメラ400に設定された役割が「メインフォロー」の場合のサブカメラの制御の例を説明する。図15は、撮影中、時間の経過とともにメインカメラ500の注目被写体および画角が変化する場合に、撮影制御装置100がサブカメラ400の撮影方向および画角をどのように制御するかを模式的に示している。図中、時間は左から右方向に経過している。なお、図15においてズーム状態を「望遠端」、「中間」、「広角端」の3段階で示している。これは、図13に示したように、サブカメラとメインカメラとでズーム値の範囲が異なりうるためである。「望遠端」が望遠端までズームアップした状態、「広角端」が広角端までズームダウンした状態、「中間」が望遠端と広角端の中間のズーム状態に対応するが、実際のズーム値はサブカメラとメインカメラでは異なり得る。例えば、ズーム状態が「望遠端」のとき、メインカメラのズーム値はmain_min、サブカメラのズーム値はsub_minとなる。
当初、メインカメラ500の注目被写体(追尾被写体)は被写体B、ズーム状態は「中間」である。そのため、CPU101は、サブカメラ400の追尾被写体を被写体Bに決定し、サブカメラ400が被写体Bを追尾するように撮影方向を制御する。また、CPU101は、サブカメラ400のズーム状態を「中間」に制御する。
その後、メインカメラ500の注目被写体が被写体Bから被写体Aに、ズーム状態が「望遠端」に変更される。これに応じてCPU101は、サブカメラ400の追尾被写体を被写体Bから被写体Aに変更し、サブカメラ400が被写体Aを追尾するように撮影方向を制御する。また、CPU101は、サブカメラ400のズーム状態を「望遠端」に制御する。
その後、メインカメラ500の注目被写体が被写体Aから被写体Cに、ズーム状態が「広角端」に変更される。これに応じてCPU101は、サブカメラ400の追尾被写体を被写体Aから被写体Cに変更し、サブカメラ400が被写体Cを追尾するように撮影方向を制御する。また、CPU101は、サブカメラ400のズーム状態を「広角端」に制御する。
このように、サブカメラ400の役割が「メインフォロー」の場合、CPU101は、メインカメラ500の注目被写体および画角(ズーム値)の変化に追従するようにサブカメラ400の追尾被写体およびズーム値を自動で変更する。なお、図15に示す例ではサブカメラ400のズーム状態の変化度合がメインカメラ500のズーム状態の変化度合と同等になるように制御しているが、ズーム値の変化方向が同位相であれば実際のズーム値は異なってもよい。例えば、メインカメラ500のズーム状態が望遠端のときにサブカメラ400のズーム状態が望遠端でなくてもよい。サブカメラ400のズーム値をメインカメラ500のズーム値に合わせるかどうかは、役割設定情報を用いて設定可能としてもよい。
次に、サブカメラ400に設定された役割が「アシストカウンター」の場合のサブカメラの制御の例を、図15と同様の図16を用いて説明する。
当初、メインカメラ500の注目被写体(追尾被写体)は被写体B、ズーム状態は「望遠端」である。そのため、CPU101は、サブカメラ400の追尾被写体を被写体B以外の被写体A、Cのうち、左側の被写体Aに決定し、サブカメラ400が被写体Aを追尾するように撮影方向を制御する。また、CPU101は、サブカメラ400のズーム状態をメインカメラ500と逆位相となる「広角端」に制御する。
その後、メインカメラ500の注目被写体が被写体Bから被写体Aに、ズーム状態が「中間」に変更される。これに応じてCPU101は、サブカメラ400の追尾被写体を被写体A以外の被写体B、Cのうち、左側の被写体Bに変更し、サブカメラ400が被写体Bを追尾するように撮影方向を制御する。また、CPU101は、メインカメラ500のズーム状態が「望遠端」から「中間」に変化したため、サブカメラ400のズーム状態を「広角端」から「中間」に(逆位相に)制御する。
その後、メインカメラ500の注目被写体が被写体Aから被写体Cに、ズーム状態が「広角端」に変更される。これに応じてCPU101は、サブカメラ400の追尾被写体を被写体C以外の被写体A、Bのうち、左側の被写体Aに変更し、サブカメラ400が被写体Aを追尾するように撮影方向を制御する。また、CPU101は、メインカメラ500のズーム状態が「中間」から「広角端」に変化したため、サブカメラ400のズーム状態を「中間」から「望遠端」に(逆位相に)制御する。
このように、サブカメラ400の役割が「アシストカウンター」の場合、CPU101は、メインカメラ500の注目被写体の変化に応じてサブカメラ400の追尾被写体をメインカメラ500の注目被写体とは別の被写体の中で自動で変更する。また、CPU101は、メインカメラ500の画角(ズーム値)の変化と逆方向にサブカメラ400のズーム値を自動で変更する。
なお、図16に示す例ではサブカメラ400のズーム状態をメインカメラ500のズーム状態の変化度合と同等の変化度合で制御しているが、ズーム値の変化方向が逆位相であればズーム値の変化量は異なってもよい。例えば、例えば、メインカメラ500のズーム状態が望遠端のときにサブカメラ400のズーム状態が広角端でなくてもよい。メインカメラ500のズーム状態の変化度合に対するサブカメラ400のズーム状態の変化度合は、役割設定情報を用いて設定可能としてもよい。
(変形例)
ここまで、メインカメラ500の注目被写体およびズーム値に基づいてサブカメラ400の追尾被写体およびズーム値を自動制御する例を説明した。上述した例では、サブカメラが単一の被写体を追尾するように自動制御するものであったが、撮影範囲内の複数の被写体を追尾するように自動制御することもできる。
サブカメラ400に設定された役割が「アシストフォロー」の場合に、サブカメラ400で単一の被写体を追尾させる場合と、複数の被写体を追尾させる場合の制御の例を、図17を用いて説明する。ここでは理解および説明を容易にするため、メインカメラ500の画角が変化せず、追尾被写体の制御だけが実行される場合について説明する。また、サブカメラ400の画角が、撮影方向に係わらず撮影範囲20内の全被写体を常に撮影可能であるものとする。なお、図17の最上段に示したサブカメラ400の撮影方向は、単一の被写体を追尾させる場合の撮影方向を示している。
図16と同様、当初、メインカメラ500の注目被写体(追尾被写体)は被写体Bである。そのため、CPU101は、サブカメラ400の追尾被写体を被写体B以外の被写体A、Cのうち、左側の被写体Aに決定し、サブカメラ400が被写体Aを追尾するように撮影方向を制御する。追尾被写体が画面の中心に位置するように撮影方向を制御すると、下から2段目に示すように、サブカメラ400の映像は被写体A~Cが右に寄った映像になり、バランスが悪い。そのため、サブカメラ400の映像に追尾被写体を含む複数の被写体が存在する場合、それら複数の被写体を追尾するように撮影方向を制御することができる。例えばCPU101は、サブカメラ400の映像に含まれる複数の被写体A~Cの位置の重心を追尾するように撮影方向を制御することができる。この結果、サブカメラ400では最下段に示すような映像が撮影される。
図17に示す例では、サブカメラ400が被写体A~Cのいずれを追尾しても、すべての被写体A~Cが撮影されるため、メインカメラ500の注目被写体が変化しても、サブカメラ400の撮影方向はほぼ一定になる。
(変形例2)
また、サブカメラ400の追尾被写体を決定した後、CPU101は、追尾被写体に合焦するようにサブカメラ400を制御してもよい。基本的にサブカメラ400では指定された追尾被写体に合焦するようにCPU401が継続的に合焦距離を制御しているが、撮影制御装置100からサブカメラ400のAF枠を追尾被写体の位置に設定することができる。これにより、サブカメラ400を、素早く、また確実に追尾被写体に合焦させることができる。なお、パンの速度が遅く(閾値以下に)なった際にAF枠を設定すると、追尾対象が画面の中央に位置する可能性が高いため、合焦に要する時間を短縮できる可能性がある。
(変形例3)
また、俯瞰カメラ300を用いなくてもサブカメラ400の制御は可能である。この場合、メインカメラ500とサブカメラ400の設置位置と、メインカメラ500の撮影方向(追尾被写体に対するメインカメラ500の向き)とから、サブカメラ400の撮影方向を決定することができる。メインカメラ500で被写体検出処理を実行し、その結果をCPU101が取得して用いることで、サブカメラ400を制御することができる。例えばCPU101は被写体検出処理の結果として被写体領域の画像をメインカメラ500から取得する。そして、CPU101は、取得した画像をテンプレートとして用いた被写体追尾処理を実行するようにサブカメラ400を制御することができる。あるいは、CPU101は、取得した画像をテンプレートとして用い、テンプレートの相関度が低い被写体領域を追尾するようにサブカメラ400を制御してもよい。
(変形例4)
撮影制御装置100と役割制御装置600とをメインカメラ500とを独立した装置として説明したが、メインカメラ500内に撮影制御装置100と役割制御装置600の機能を組み込むこともできる。この場合、俯瞰カメラ300の映像をメインカメラ500に供給する。このような構成により、マルチカメラ撮像システムを実現するために必要な機器を削減することができる。
以上説明したように、本実施形態によれば、メインカメラの状態や映像に基づいてサブカメラの動作を自動制御する際、サブカメラに設定された役割に応じた自動制御を実行するようにした。そのため、本実施形態の撮影制御装置は、省力化を実現しつつ、より自由度の高い自動撮影制御を実現することができる。
●<第2実施形態>
次に本発明の第2実施形態について説明する。本実施形態ではメインカメラの状態または映像に基づく情報と、サブカメラに設定されている役割とに加え、サブカメラの映像を考慮してサブカメラの追尾被写体を決定する。
図18は、本実施形態に撮像システム10’の構成例を示す模式図である。図18において第1実施形態の撮像システム10と同様の構成には図1と同じ参照数字を付して説明を省略する。本実施形態の撮像システム10’は、2台のサブカメラA800およびサブカメラB900を有する。サブカメラA800およびサブカメラB900の機能構成は第1実施形態で説明したサブカメラ400と同様であるため説明を省略する。
本実施形態では、役割が役割制御装置600から撮影制御装置100に設定され、役割設定情報がサブカメラごとに異なる制御内容を含む。CPU101は、撮影制御装置100に設定された役割にしたがって、サブカメラごとに動作を制御する。
図19は、本実施形態における役割設定情報の例を示す図である。ここでは一例として役割「アシストフォロー」と対応するサブカメラごとの制御内容のみを示している。しかし、撮影制御装置100に設定可能な役割の種類および役割の種類に対応する制御内容は図19に示す例に限定されない。
ここでは、サブカメラA800については、メインカメラの追尾被写体と異なる被写体のうち左側の被写体を追尾被写体とし、かつ追尾被写体に合焦するように制御することが規定されている。また、サブカメラB900については、メインカメラの追尾被写体と異なる被写体のうち右側の被写体を追尾被写体とし、かつ追尾被写体に合焦するように制御することが規定されている。ここでは被写体の総数が3であることが事前に分かっているため、2人のうち左側または右側と規定されているが、単に左側、右側と規定してもよい。なお、第1実施形態と同様にズーム制御について規定してもよいが、説明の簡略化のためズーム制御については省略する。
図19に示す役割設定情報は、撮影制御装置100のROM103に予め記憶されている。あるいは役割設定情報は役割制御装置600から撮影制御装置100に供給され、CPU101がRAM102に記憶してもよい。
図20を用いて、撮影制御装置100が役割設定情報に基づいてサブカメラA800およびサブカメラB900をどのように制御するかを説明する。
図20(a)は、撮影開始時における撮影範囲20とメインカメラ500、サブカメラA800、サブカメラB900の位置関係と、撮影範囲20内の被写体A~Cとを示している。図20(b)は、撮影開始後、被写体Aが被写体Bの左側から右側に移動し、被写体Cが被写体Bの右側から左側に移動した状態を示している。
図20(a)の段階で撮影制御装置100のCPU101は、図19に示した役割設定情報に基づいて、サブカメラA800およびサブカメラB900の動作を制御する。すなわち、CPU101は、メインカメラ500の注目被写体(被写体B)以外の被写体A、Cのうち左側の被写体AをサブカメラA800の追尾被写体に、右側の被写体CをサブカメラB900の追尾被写体に、それぞれ決定する。
CPU101は、決定した追尾被写体を追尾するようにサブカメラA800およびサブカメラB900の撮影方向を制御する。また、CPU101は、決定した追尾被写体に合焦するよう、サブカメラA800およびサブカメラB900を制御する。
図20(b)の状態になると、サブカメラA800が追尾している被写体Aは、(メインカメラ500の注目被写体以外の)「左側の被写体」という条件を満たさない。そのため、CPU101は、サブカメラA800の追尾被写体を、メインカメラ500の注目被写体(被写体B)以外の被写体A、Cのうち左側の被写体Cに変更する。同様に、サブカメラB900が追尾している被写体Cも「右側の被写体」という条件を満たさない。そのため、CPU101は、サブカメラB900の追尾被写体を、メインカメラ500の注目被写体(被写体B)以外の被写体A、Cのうち右側の被写体Aに変更する。また、CPU101は、決定した追尾被写体に合焦するよう、サブカメラA800およびサブカメラB900を制御する。
図20(b)のように被写体が大きく移動した場合、手前に他の被写体が存在する可能性が高くなるため、追尾対象の被写体が隠されやすくなる。撮影範囲20に対して左よりに配置されたサブカメラは左側に存在する被写体を追尾するように設定することで、追尾被写体が右方向に大きく移動した場合に追尾被写体が効果的に変更されることが規定できる。撮影範囲20に対して右よりに配置されたサブカメラについても同様である。
本実施形態では、同じ役割についてサブカメラごとに異なる被写体を追尾するような制御内容を規定できるようにした。そのため、本実施形態の撮影制御装置100によれば、メインカメラの状態や映像から得られる情報に基づきつつ、様々な被写体を追尾した映像を撮影するようにサブカメラを自動制御することが可能になる。
(変形例)
本実施形態では、俯瞰カメラ300の映像から検出された被写体領域の位置を座標変換することにより、特定の被写体を追尾するためのサブカメラの撮影方向を推定する。しかし、サブカメラA800、サブカメラB900の映像に基づいて同様の推定を行ってもよい。この場合、撮影制御装置100の処理負荷は増えるが、座標変換が不要であるため、サブカメラの撮影方向の制御の精度を高めることができる。
(変形例2)
また、本実施形態でサブカメラA800およびサブカメラB900を制御するパン・チルト値は、追尾対象を自動追尾するように算出されていた。しかし、自動追尾は必須でない。例えば、役割設定情報において、メインカメラ500のズーム値に応じて、サブカメラA800およびサブカメラB900のパン値を制御するように規定してもよい。
一例として、メインカメラ500のズーム状態が「広角端」の場合に、サブカメラA800は左斜め45度の方向を向き、サブカメラB900は右斜め45度の方向を向くように制御することができる。一方で、メインカメラ500のズーム状態が「望遠端」の場合には、サブカメラA800およびサブカメラB900が、どちらも中央0度の方向を向くように制御することができる。
このような制御を行うことで、複数のサブカメラの撮影方向をメインカメラ500のズーム状態に同期させて制御することが可能になり、演出効果を高めることができる。例えば、メインカメラ500が特定の被写体にズームアップしていくと、それに連動して、サブカメラA800とサブカメラB900が同じ被写体をズームアップしながら撮影方向を変更することも可能になる。このような制御を行うことで、複数台のカメラ画像を、複数台のモニターに表示するような演出において、複数カメラが同期制御された複数の撮影画像を同時に視聴することが可能になる。また、同じ役割を持たせて各カメラを自動制御することで、個々のカメラを手動操作する場合に比べて、カメラ間の画角の時間変化のばらつきが小さく、画角変化の一体感が強くなり、より臨場感を高めるような演出上の効果が望める。
(変形例3)
また、本実施形態では、メインカメラ500を主、サブカメラA800およびサブカメラB900を従として制御する例を示したが、メインカメラ500とサブカメラA800の主従関係を動的に変更可能としてもよい。例えば、メインカメラ500、サブカメラA800、サブカメラB900のうち、本線映像を撮影しているカメラを主とし、他のカメラを従として制御するようにしてもよい。この場合、撮影制御装置100はどのカメラの映像が本線映像をとして選択されているかを示す情報を、映像を選択するスイッチャなどの外部装置から取得するか、タリー信号に基づいて判別すればよい。本線映像に限らず、記録用の映像など、視聴者の視聴や記録に関わる映像として選択された際にも同様の制御を実行してもよい。
また、サブカメラA800もしくはサブカメラB900が手動操作された際にカメラ間の主従関係を切り換えてもよい。この場合、サブカメラのいずれかをユーザが手動操作した時点で、そのサブカメラを主とした他のカメラの制御か開始されるため、使い勝手がよい。
●<第3実施形態>
次に本発明の第3実施形態について説明する。本実施形態に係る撮像システムは、メインカメラおよびサブカメラの撮影状態を可視化した情報をユーザに提供することで、撮像システムの使い勝手を向上させる。
図21は、本発明の第3実施形態に係る撮像システム10”の構成例を示す模式図である。ここでは、説明および理解を容易にするため、第1実施形態に係る撮像システム10をベースにした構成例を示した。表示装置800以外の構成については第1実施形態での説明を援用する。
表示装置800は、サブカメラ400とメインカメラ500の情報、特に撮影中の被写体に関する情報を、撮像システムを利用するユーザに提示する。本実施形態では表示装置800を撮影制御装置100や役割制御装置600と別個の構成として説明するが、表示装置800の機能を撮影制御装置100と役割制御装置600の少なくとも一方で実施してもよい。
表示装置800は、撮影制御装置100で生成された撮影情報を表示する。撮影制御装置100が表示用画像データを生成する場合、表示装置800は液晶ディスプレイのようなもっぱら表示機能を提供する装置、あるいは撮影制御装置100の外部表示装置として機能可能な任意の電子機器であってよい。また、表示装置800は、撮影制御装置100と通信可能な、表示機能を有する任意の電子機器(情報処理装置、スマートフォン、タブレット端末など)であってもよい。撮影制御装置100から得られる撮影情報に基づいて表示装置800が表示用画像データを生成し、表示してもよい。
図22は、図21に示した撮像システム10”を構成する各機器の機能構成例を示すブロック図である。表示装置800以外の機器については図2に関する第1実施形態での説明を援用する。
表示装置800は、CPU801、RAM802、ROM803、ユーザ入力部804,ネットワークインタフェース(I/F)805、画像処理部806、表示部811が内部バス810を介して相互に接続された構成を有する。
CPU801は、プログラムされた命令を実行可能なマイクロプロセッサである。CPU801は、例えば、ROM803に記憶されたプログラムをRAM802に読み込んで実行することにより、後述する表示装置800の機能を実現する。CPU801は、例えば、基本ソフト(OS)上で稼働する表示制御アプリケーションを実行することにより、表示装置800の機能を実現することができる。
RAM802は、CPU801が実行するプログラムをロードしたり、CPU801が処理するデータ、処理中のデータなどを一時的に格納したりするために用いられる。また、RAM802の一部は表示部811のビデオメモリとして用いられてもよい。
ROM803は書き換え可能な不揮発性メモリであり、CPU801が実行するプログラム(OSおよびアプリケーション)、ユーザデータなどを記憶する。
ユーザ入力部804は、マウス、キーボード、タッチパネルなどの入力デバイスである。表示装置800は、ユーザ入力部804を通じてユーザの指示を受け付ける。
ネットワークI/F805は表示装置800を通信ネットワーク700に接続するためのインタフェースである。表示装置800(CPU801)は、ネットワークI/F805を通じて、撮影制御装置100など、通信ネットワーク700上の外部装置と通信することができる。なお、表示装置800は、不図示の他の通信インタフェース(USB、Bluetooth(登録商標)など)を通じて外部装置と通信してもよい。
CPU801は、通信ネットワーク700上の装置との通信に必要な情報(例えばネットワークアドレス)を任意のタイミングで取得し、RAM802に記憶する。
画像処理部806は、ネットワークI/F805を介して取得した画像データから、表示部811に表示するための画像データ(表示用画像データ)を生成する。また、画像処理部806は、撮影制御装置100から受信したメインカメラ500およびサブカメラ400の撮影状態に基づいて表示用画像データを生成する。画像処理部806は、生成した表示用画像データをRAM802に格納する。なお、画像処理部806は表示用画像データに必要に応じて圧縮処理を適用してデータ量を削減してもよい。また、画像処理部806は受信した画像データに対して色補正、露出制御、シャープネス補正などの画質調整を適用してもよい。
表示部811は、液晶ディスプレイ(LCD)などの表示装置である。表示部811は、OSや表示制御アプリケーションなどが提供するGUI画面を表示する。表示部811はまた、メインカメラ500およびサブカメラ400の撮影状態を示す画像を表示する。
表示装置800の動作は、ユーザ入力部804を通じて与えられるユーザ指示、撮影制御装置100などからネットワークI/F805を通じて受信する指示(コマンド)によって制御される。
図23は、図3と同様にして、撮影制御装置100がサブカメラ400の動作を制御する際に実施する一連の処理を、主要な動作と信号の流れに着目して表した図である。撮影制御装置100内に示される機能ブロックは主要な動作を模式的に示しており、撮影制御アプリケーションが提供する主要な機能に相当する。図23における各機能ブロックは、撮影制御アプリケーションを実行するCPU101と、図22に示した撮影制御装置100の機能ブロックの1つ以上との組み合わせによって実現される。
図23と図3との対比からわかるように、本実施形態の撮影制御装置100は、被写体情報重畳部126および画角情報重畳部127の機能を有する。被写体情報重畳部126は、俯瞰カメラ300から取得した映像に、メインカメラ500およびサブカメラ400のそれぞれにおける追尾被写体を示す情報を重畳する。また、画角情報重畳部127は、俯瞰カメラ300から取得した映像に、メインカメラ500およびサブカメラ400のそれぞれの画角を示す情報を重畳する。被写体情報重畳部126および画角情報重畳部127の動作は、個別かつ動的に有効および無効を切り替え可能である。なお、被写体情報重畳部126および画角情報重畳部127を撮影制御装置100とは異なる表示制御装置が有し、撮影制御装置100から表示制御装置が種々の情報を受信し、表示制御装置で生成された画像を表示装置800に出力する構成でもよい。
次に、図24に示すフローチャートを用いて、本実施形態における撮影制御装置100が実行する動作のうち、メインカメラ500およびサブカメラ400の撮影情報を重畳した画像を生成する動作について説明する。撮影制御装置100は、ここで説明する動作をサブカメラの自動撮影制御動作などの他の動作と並列して実行することができる。
図24(a)は、俯瞰カメラ300からの映像に、撮影情報の1つである追尾被写体の情報を重畳する動作に関するフローチャートである。また、図24(b)は、俯瞰カメラ300からの映像に、撮影情報の1つである画角の情報を重畳する動作に関するフローチャートである。ここでは、被写体情報重畳部126によって追尾被写体の情報を重畳し、さらに画角情報重畳部127によって画角の情報を重畳するものとする。ただし、重畳の順序は逆でもよいし、重畳の有無は個別に制御可能である。
また、図24(a)および図24(b)のフローチャートに示す動作は、俯瞰カメラ300の映像の所定数フレームごと(例えば1フレームごと、2フレームごとなど)に実行する。
S701でCPU101は、S201と同様にして、俯瞰カメラ300から映像信号(画像データ)IMGの取得を開始する。
S702でCPU101は、S202と同様にして、メインカメラ500から撮影方向を示す情報ANGLEを取得する。
S703でCPU101(認識部121)は、RAM102から1フレーム分の画像データIMGを読み出し、S203で説明した被写体検出処理を実行する。そして、CPU101は、被写体検出結果に基づいて、被写体領域ごとに、指標を重畳する位置を決定する。ここでは、図8(a)で示した、被写体領域が内接する矩形領域を示す枠を指標として重畳するものとする。したがって、CPU101は、矩形領域の位置を特定する情報として、推論部104の出力に基づいて被写体領域ごとに矩形情報DETECT_POSIを決定し、RAM102に格納する。
矩形情報DETECT_POSIは、具体的には、矩形領域の対角頂点の画像座標であってよい。ここでは、左上頂点の座標(xul、yul)と右下頂点の座標(xdr、ydr)とする。
S704で注目被写体決定部122としてのCPU101は、S204と同様に、メインカメラ500の注目被写体を判定する。CPU101は、メインカメラ500の注目被写体として判定した被写体領域に対応する識別情報ID[n]を、注目被写体の識別情報MAIN_SUBJECTとしてRAM102に記憶する。
S705で追尾被写体決定部123としてのCPU101は、S205と同様に、サブカメラ400に設定されている役割に応じた制御内容CAMERA_ROLEを取得する。具体的には、CPU101は、制御内容CAMERA_ROLEをRAM102から読み出す。
S706で、追尾被写体決定部123としてのCPU101は、S206と同様に、制御内容CAMERA_ROLEに従って、サブカメラ400に追尾撮影させる被写体を決定する。CPU101は、制御内容CAMERA_ROLEに含まれる追尾被写体の規定(図4)に従って、サブカメラ400の追尾被写体を決定する。
被写体領域に対する指標およびカメラごとの追尾被写体の指標を表示せず、追尾被写体の撮影画角を示す指標を表示する場合、CPU101は、S706の処理が終了した後、図24(b)のS801を実行する。
S707で、被写体情報重畳部126としてのCPU101は、RAM102からS703で読み出したものと同じ画像データIMGを読み出す。そして、CPU101は、RAM102から被写体領域ごとの矩形情報DETECT_POSIを読み出し、矩形情報DETECT_POSIに基づく指標を画像データIMGに重畳する。上述したように、指標は矩形情報DETECT_POSIが示す座標を対角頂点とした矩形枠である。また、ここでは矩形枠の色を被写体領域ごとに異ならせる。CPU101(被写体情報重畳部126)は、被写体領域の指標を重畳した画像データを、RAM102に格納する。
図25は、俯瞰カメラ300の映像のフレーム画像から検出された被写体の識別IDと、矩形情報DETECT_POSIと、被写体領域ごとの指標の表示色との関係例を示す図である。識別IDが「ID1」の被写体の領域に外接する矩形領域の位置情報(矩形情報DETECT_POSI)が、(xul1、yul1)、(xdr1、ydr1)であり、指標の色「赤」が関係づけられている。これは、識別IDがID1と判定された被写体に対して、画像中の矩形情報に示される位置に、赤色で指標(ここでは矩形枠)を重畳することを示している。他の識別IDのID2、ID3に関しても同様である。なお、識別IDに割り当てる色は予め定めておくことができる。
図26は、被写体領域の指標を重畳した画像データが表す画像の例を示している。ここでは俯瞰画像から3人の被写体A~Cが検出され、それぞれ識別IDとしてID1~ID3が付与されているものとする。俯瞰画像は、俯瞰カメラ300からの映像の1フレームである。
図25に示すように指標の色が規定されている場合、被写体A~Cの領域には、それぞれ赤、緑、青の矩形枠状の指標261~263が重畳される。
なお、被写体ごとの指標は、例示した矩形枠状の指標に限定されない。例えば、矩形枠は被写体領域の少なくとも一部を含んでいればよい。また、矩形枠の内の、被写体領域以外の領域を枠と同じ色で塗りつぶしてもよい。また、例えば指標を半透明としてもよい。指標を半透明とすることで、指標が被写体領域に重複する場合でも、被写体領域を視認することが可能になる。被写体ごとの指標は、被写体領域との対応関係が明確であれば、関連付けられる被写体領域に接していても接していなくてもよい。
S708でCPU101は、RAM102からS707で生成した画像データを読み出す。そして、CPU101は、メインカメラ500およびサブカメラ400の追尾被写体の領域の近傍に、その被写体を追尾被写体としているカメラの識別情報を重畳した画像データSUBJECT_IMGを生成する。
まず、CPU101は、RAM102から、メインカメラ500の注目被写体(追尾被写体)IDを示すMAIN_SUBJECTと、サブカメラ400の追尾被写体IDを示すSUBJECT_IDを読み出す。CPU101は、MAIN_SUBJECTの識別IDに対応する被写体領域の近傍に、メインカメラ500の識別情報(ここでは文字「メインカメラ」とする)を重畳する。同様にCPU101は、SUBJECT_IDに対応する被写体領域の近傍に、サブカメラ400の識別情報(ここでは文字「サブカメラ」とする)を重畳する。
なお、サブカメラ400の識別情報に加え、サブカメラ400に設定されている役割の識別情報を重畳してもよい。例えばサブカメラ400に役割「メインフォロー」が設定されている場合には、文字「サブカメラ(MF)」を重畳することができる。
カメラの識別情報を重畳する位置は、例えば矩形枠状の被写体指標の直上であってよい。この場合CPU101は、カメラの識別情報を重畳する位置を矩形情報から決定することができる。なお、CPU101は、カメラの識別情報を重畳する位置を、被写体領域の位置情報から決定してもよい。また、カメラの識別情報も半透明とすることができる。
カメラの識別情報を重畳する位置は対応する被写体領域の位置などに応じて個別に決定してもよい。例えば、被写体領域が画像の端に近い場合は、表示位置を変更してもよい。具体的には、画像の上端に近い被写体領域については被写体領域の下部に、左端に近い被写体領域については被写体領域の右に、カメラの識別情報を重畳することができる。また、被写体領域間の距離や重複などを考慮して位置を動的に変更してもよい。
また、カメラの識別情報は、カメラの役割(メインまたはサブ)に限らない。例えば、カメラのIPアドレスや、機種名など、カメラを識別可能な任意の情報であってよい。また、複数種の識別情報を同時に、あるいは切り替え可能に重畳してもよい。
さらに、カメラの識別情報の色は、対応する被写体に対応付けられた色、すなわち、被写体領域ごとの指標と同じ色としてもよい。あるいは、メインカメラ、サブカメラごとに、あらかじめ定められた固定色としてもよい。
CPU101は、被写体領域の指標およびカメラごとの追尾被写体を示す情報を俯瞰画像に重畳した画像のデータを、SUBJECT_IMGとしてRAM102へ書き込む。なお、画角情報を重畳しない場合、CPU101は、画像データSUBJECT_IMGを表示用画像データOUT_IMAGEとして表示装置800に出力してもよい。
図27(a)~図27(c)は、撮影範囲内に存在する人物の被写体A~Cについて、メインカメラ500およびサブカメラ400の追尾被写体が異なる場合の例を示している。具体的には、サブカメラ400が役割「アシストフォロー」または「アシストカウンター」に従って自動撮影している場合である。また、図27(d)~図27(f)は、それぞれ図27(a)~図27(c)に対応して生成される画像データSUBJECT_IMGを示している。
メインカメラ500およびサブカメラ400の追尾被写体にかかわらず、俯瞰画像における被写体A~Cの領域には、図25に示した関係に基づいた色を有する矩形枠状の指標が重畳される。
図27(a)は、メインカメラ500が被写体Bを、サブカメラ400が被写体Aを追尾している状態である。そのため、メインカメラ500の追尾被写体である被写体Bの領域の近傍には、「メインカメラ」の文字272が重畳される。また、サブカメラ400の追尾被写体である被写体Aの領域の近傍には、「サブカメラ」の文字271が重畳される。
図27(b)は、メインカメラ500が被写体Aを、サブカメラ400が被写体Bを追尾している状態である。そのため、メインカメラ500の追尾被写体である被写体Aの領域の近傍には、「メインカメラ」の文字272が重畳される。また、サブカメラ400の追尾被写体である被写体Bの領域の近傍には、「サブカメラ」の文字271が重畳される。
図27(c)は、メインカメラ500が被写体Cを、サブカメラ400が被写体Aを追尾している状態である。そのため、メインカメラ500の追尾被写体である被写体Cの領域の近傍には、「メインカメラ」の文字272が重畳される。また、サブカメラ400の追尾被写体である被写体Aの領域の近傍には、「サブカメラ」の文字271が重畳される。
次に、図24(b)に示したフローチャートを用いて、俯瞰画像に追尾被写体の撮影画角を示す指標を追加する処理について説明する。
S801で画角情報重畳部127としてのCPU101は、S708で生成した、被写体領域の指標およびカメラごとの追尾被写体の指標が重畳された俯瞰画像のデータSUBJECT_IMGをRAM102から読み出す。なお、被写体領域の指標およびカメラごとの追尾被写体の指標を重畳しない場合、CPU101は、RAM102からS703で読み出したものと同じフレームの画像データIMGを読み出す。
S802でCPU101は、メインカメラ500およびサブカメラ400の現在のズーム値を取得する。メインカメラ500のズーム値MAIN_ZOOMは、ズーム値算出部125がメインカメラ500から直近に取得してRAM102に記憶した値を用いることができる。また、サブカメラ400のズーム値は、S207でズーム値算出部125が直近に決定してRAM102に記憶したズーム値Z_VALUEを用いることができる。なお、CPU101は、ネットワークI/F105を通じてズーム値の取得コマンドを送信することにより、メインカメラ500とサブカメラ400からズーム値を取得してもよい。
S803でCPU101は、撮影画角を表す指標に用いる画像データを例えばROM103から読み出す。ここでは、特定の画像を画角に応じた大きさにスケーリングして、撮影画角を表す指標として用いるものとする。なお、撮影画角を表す指標は、ズーム値を文字で表す指標など、他の形態であってもよい。
S804でCPU101は、S802で取得したメインカメラ500のズーム値に応じて、S803で取得した画像をリサイズし、メインカメラ500の追尾被写体の撮影画角を示す指標を生成する。CPU101は、サブカメラ400についても同様にして追尾被写体の撮影画角を示す指標を生成する。
画像のリサイズ率は、ズーム値が小さい(画角が狭い)ほど大きなサイズにリサイズされ、ズーム値が大きい(画角が広い)ほど小さなサイズにリサイズされるよう、予めリサイズ率とズーム値の対応関係がROM103に記憶されている。 また、本実施形態では、俯瞰画像に追尾被写体の撮影画角を示す指標を重畳する画像上の位置DRAW_POSIが予めROM103に記憶されている。位置DRAW_POSIは、メインカメラ500およびサブカメラ400のそれぞれについて、指標を表示するための矩形領域の対角頂点の座標を規定する。なお、サブカメラ400の台数に応じて個別の位置DRAW_POSIが記憶されていてもよい。
ここでは、図28(d)および図28(e)に示すように、俯瞰画像の下部に撮影画角を示す指標を表示するものとする。この場合、位置DRAW_POSIには、メインカメラ500の撮影画角の指標を表示する矩形領域の左上頂点の座標(drawM_Xs、drawM_Ys)と右下頂点の座標(drawM_Xe、drawM_Ye)が含まれる。また、位置DRAW_POSIには、サブカメラ400の撮影画角の指標を表示する矩形領域の左上頂点の座標(drawS_Xs、drawS_Ys)と右下頂点の座標(drawS_Xe、drawS_Ye)も含まれる。
CPU101は、スケーリングされた画像を、俯瞰画像の、位置DRAW_POSIで示される矩形領域内に重畳する。
図28を用いて、撮影画角を示す指標の生成および重畳に関する動作について、より具体的に説明する。図28(a)は、撮影範囲内に存在する人物の被写体A~Cについて、メインカメラ500の追尾被写体が被写体Bであり、サブカメラ400の追尾被写体が被写体Aである状態を示している。具体的には、サブカメラ400が役割「アシストフォロー」に従って自動撮影している場合である。図28(b)はメインカメラ500の映像、図28(c)はサブカメラ400の映像をそれぞれ示している。
図28(d)は、図28(a)の状態で、メインカメラ500およびサブカメラ400の撮影画角がいずれも広角である場合の、撮影画角を示す指標の表示例を示している。また、図28(e)は、図28(a)の状態で、メインカメラ500およびサブカメラ400の撮影画角がいずれも望遠である場合の、撮影画角を示す指標の表示例を示している。
ここでは人体の胴部と頭部を模した単純な形状の図形の画像(人体モデル画像)を指標の生成に用いている。また、理解および説明を容易にするため、メインカメラ500とサブカメラ400のズーム値の範囲が同一であり、役割「アシストフォロー」により、サブカメラ400のズーム値がメインカメラ500のズーム値と等しくなるように制御されているものとする。図28(d)および図28(e)に示すように、撮影画角が広角の場合には小さい指標が表示され、撮影画角が望遠の場合には大きい指標が表示される。
S805でCPU101は、撮影画角の指標が、どのカメラに対する指標であるのかを明確にするための処理を実行する。具体的には、CPU101は、指標を表示する矩形領域の輪郭を、図25に示した識別IDと指標色との関係に従った色とする。具体的には、CPU101は、指標を表示する矩形領域の輪郭の少なくとも一部を、その指標が示す被写体の識別IDに対応した色で提示する。あるいは、CPU101は、指標を表示する矩形領域の輪郭の少なくとも一部に、その指標が示す被写体の識別IDに対応した色の画像を重畳する。
図28(a)に示した例では、メインカメラ500の追尾被写体は被写体Bである。また、図25に示すように、被写体B(識別ID2)に対する指標の色は緑色である。そのため、CPU101は、被写体Bの撮影画角を表す指標を表示する矩形領域の輪郭を緑色とする。同様に、CPU101は、被写体A(識別ID1)の撮影画角を表す指標を表示する矩形領域の輪郭を赤色とする。
なお、撮影画角を表す指標を表示する領域にも、指標に対応する被写体を追尾被写体とするカメラの識別情報を含めてもよい。カメラの識別情報を含めることにより、より直接的にどのカメラの撮影画角であるかを把握できる。
CPU101は、図28(d)や図28(e)に示すような、撮影画角を示す指標と、指標に対応する被写体の識別情報とを含んだ画像のデータを表示用画像データOUT_IMAGEとして生成する。そして、CPU101は、表示用画像のデータOUT_IMAGEを、表示装置800に送信する。表示用画像データOUT_IMAGEには、(1)図27に示した被写体領域の指標およびカメラごとの追尾被写体を示す情報と、(2)撮影画角を示す指標および指標に対応する被写体の識別情報との少なくとも一方が含まれる。なお、CPU101は、表示用画像データOUT_IMAGEを表示部108に表示してもよい。
表示装置800のCPU801は、ネットワークI/F805を通じて表示用画像データOUT_IMAGEを受信すると、RAM802に記憶する。そして、CPU801は、表示用画像データOUT_IMAGEを表示部811に表示する。CPU801は、表示用画像データOUT_IMAGEを必要に応じて表示部811での表示に適したデータに変換してもよい。例えば、CPU801は、表示部811の解像度に合わせて表示用画像データOUT_IMAGEをスケーリングすることができる。
胴部と頭部とをデフォルメした形状の画像をズーム値に応じてスケーリングすることにより、サイズで画角を表す指標を生成した。しかし、サイズ以外で画角を表す指標を生成してもよい。例えば、予め定められた画像(例えば人体の全身をデフォルメした画像)のうち、指標として用いる範囲の大きさをズーム値に応じて異ならせてもよい。具体的には、撮影画角が広角の場合は画像全体(全身)を指標とし、撮影画角が望遠の場合は画像の上半身のみを指標とするといったように、画角が狭いほど指標として用いる範囲を狭めることができる。
また、被写体を模した画像を指標に用いなくてもよい。例えば、胴部と頭部とをデフォルメした形状の画像の代わりに、果物(例えばリンゴ)や、楽器(例えばギター)などの画像をスケーリングして撮影画角の指標としてもよい。あるいは、俯瞰画像から切りだした被写体の画像を用いてもよい。スケーリングする代わりに、予め用意したサイズの異なる複数の画像の1つを、ズーム値に基づいて選択してもよい。任意の公知の方法を用いて、ズーム値に応じてサイズが異なる指標を生成することができる。
サブカメラ400が複数存在する場合には、サブカメラ400ごとに指標を表示すればよい。撮影画角を示す指標については、左端の矩形領域からメインカメラ/サブカメラ1/サブカメラ2...という順番で表示することができる。あるいは、メインカメラの撮像画角を表す指標を水平方向の中心に位置する矩形領域に表示し、左右の矩形領域に所定の順序で各サブカメラの撮影画角の指標を表示してもよい。
また、本実施形態では、各カメラの追尾被写体が1人であるものとした。しかし、追尾被写体が複数人であってもよい。追尾被写体が複数人のカメラの撮影画角を表す指標は、人数に応じた画像を用いて生成することができる。例えば、図26に示した3人の被写体(被写体A~被写体C)をまとめて追尾するカメラについては、3人が並んだ状態の画像をスケーリングして撮影画角を示す指標を生成することができる。他の人数でも同様である。
あるいは、複数の被写体をグループ分けし、グループ単位で追尾する場合には、1人の画像をスケーリングした後、グループの識別情報(例えばグループ名)を重畳して指標を生成してもよい。この場合、被写体のグループに対して個々の被写体とは異なる指標の色を割り当ててもよい。あるいは、個々の被写体に割り当てられている色をすべて含んだ指標を用いて、同一グループに属する被写体を表してもよい。例えば、図25に示した例であれば、被写体A~Cが同一グループに属する場合、赤、緑、青の3色から構成される指標(例えば矩形枠)を、被写体A~Cのそれぞれの領域に重畳してもよい。
また、本実施形態では、同じカメラについての追尾被写体と撮影画角との視覚的な関連付けに、被写体に関連付けられた色の矩形枠を用いたが、他の方法を用いてもよい。例えば、同じカメラについての追尾被写体の領域と、撮影画角を表す指標の表示領域とを接続する実線、点線、破線、二重線などの画像を用いてもよい。矩形枠に限らず、被写体領域を示す矢印や、被写体領域を囲む円や台形などの図形枠を用いてもよい。
また、撮影画角を表す指標と関連付けて、対応するカメラのアイコンを表示してもよい。例えばカメラ外観形状が異なる場合、どのカメラの撮影画角かをより分かりやすく示すことができる。例えば、メインカメラ500が横長のビデオカメラで、サブカメラ400が丸型のPTZカメラである場合、カメラの外観を模したアイコンを撮影画角を示す指標に関連付けて表示することで、どのカメラの撮影画角であるのかを一目で認識可能になる。また、カメラの種類もアイコンから把握することができる。
また、文字情報によって撮影画角を提示してもよい。例えば、ズーム値を表す数字、「引き」(広角)/「寄り」(望遠)などの文字を表す画像を、撮影画角を表す指標として用いてもよい。撮影画角を示すことが可能な他の任意の表現を用いてもよい。
また、本実施形態では、撮影情報としてカメラごとの追尾被写体と撮影画角を可視化した指標を例示した。しかし、撮影情報はこれらに限定されない。例えば、各カメラのタリー状態を可視化してもよい。具体的には、タリー状態が放送中もしくは配信中であるカメラの追尾被写体および撮影画角の指標に対しては、タリーランプの色と同じ色のマークや、「放送中」もしくは「配信中」といった文字情報を関連付けて表示してもよい。スイッチャを用いて撮像システムから出力する映像を選択する場合、タリー状態を俯瞰画像に重畳して表示することで、個々のカメラの被写体および画角に加え、現在出力されている映像の被写体および画角を容易に把握することが可能になる。
以上説明したように、本実施形態によれば、メインカメラに連携して自動撮影するサブカメラを有する撮像システムにおいて、各カメラが撮影している被写体や撮影画角といった撮影情報をリアルタイムで把握することが可能になる。そのため、メインカメラを切り替えたり、各カメラの画角を適切に変更したりといった遠隔操作を容易に実行することが可能になる。
●<第4実施形態>
次に、本発明の第4実施形態について説明する。第3実施形態では、各カメラの撮影情報を俯瞰画像に重畳してユーザに提示する例を説明した。第4実施形態では、各カメラの撮影情報を俯瞰画像に重畳する方法とは異なる方法でユーザに提示する。
図29は、図3および図23と同様にして、撮影制御装置100がサブカメラ400の動作を制御する際に実施する一連の処理を、主要な動作と信号の流れに着目して表した図である。撮影制御装置100内に示される機能ブロックは主要な動作を模式的に示しており、撮影制御アプリケーションが提供する主要な機能に相当する。図29における各機能ブロックは、撮影制御アプリケーションを実行するCPU101と、図22に示した撮影制御装置100の機能ブロックの1つ以上との組み合わせによって実現される。
図29と図23との対比からわかるように、本実施形態の撮影制御装置100は、第3実施形態における構成に加え、GUI生成部129の機能を有する。GUI生成部129は、各カメラの撮影情報をユーザに提示するための第2の表示用画像としてのGUI(Graphical User Interface)を生成する。撮影情報をユーザに提示するためのGUIを生成することで、俯瞰画像に撮影情報を重畳した第1の表示用画像とは別の表現を用いることが可能になる。そのため、ユーザが各カメラの撮影情報を把握するための別の手段を提供することが可能になる。
次に、図30に示すフローチャートを用いて、本実施形態における撮影制御装置100が実行する動作のうち、メインカメラ500およびサブカメラ400の撮影情報を提示するためのGUI画像を生成する動作について説明する。撮影制御装置100は、ここで説明する動作を、サブカメラの自動撮影制御動作や、第3実施形態で説明した動作などと並列に実行することができる。
ここでは一例として、各カメラの追尾被写体および撮影画角に加え、設定された役割に従ったサブカメラの連係内容を撮影情報として提示するGUI画像を生成するものとする。生成するGUIの種類はどのようなものであってもよいが、ここでは一例として撮影情報を提示するウィンドウを生成するものとする。
S901でCPU101は、図24のS707と同様にして、被写体領域の周囲に、被写体の識別IDに応じた色の矩形枠の画像を重畳した俯瞰画像のデータを生成する。CPU101は、生成した画像データをRAM102に格納する。
S902でCPU101は、S708と同様にして、S901で生成した画像データに、メインカメラ500とサブカメラ400の追尾被写体に該当する被写体領域の近傍に重畳するカメラの識別情報の画像を追加する。ここでは、文字「メインカメラ」および「サブカメラ」の画像を、カメラの識別情報の画像として追加する。CPU101は、S901およびS902の工程によって得られた、撮影情報が重畳された俯瞰画像(第1の表示用画像)のデータを、RAM102に記憶する。
S903でCPU101は、S705と同様にして、サブカメラ400に設定されている役割CAMERA_ROLEを取得する。
S904でCPU101は、S802と同様にして各カメラのズーム値を取得する。
S905でGUI生成部129としてのCPU101は、撮影情報を提示するためのGUI画像の生成を開始する。まず、CPU101は、予め定められた大きさのウィンドウの画像にカメラごとの領域を描画する。ここでは一例として、各カメラの追尾被写体の識別IDに関連付けられた色で、各カメラに対応した矩形を描画する。図31(e)に、ウィンドウ310と各カメラに対応した矩形枠311、312の例を示す。図31(e)は、図31(a)に示すように、メインカメラ500とサブカメラ400との追尾被写体がいずれも被写体Bである。そのため、CPU101は、メインカメラ500に対応した矩形枠311と、サブカメラ400に対応した矩形枠312とをいずれも緑色で描画する。
また、CPU101は、領域がどのカメラに対応しているかを示すために、矩形枠311、312の上部にカメラの識別情報313、314を描画する。図31(e)では一例として「メインカメラ」「サブカメラ」という文字情報を描画しているが、上述したようにカメラの外観形状のアイコンなど、他の種類の画像を描画してもよい。
さらに、CPU101は、サブカメラ400に対応する領域に、サブカメラ400に設定されている役割CAMERA_ROLEに応じた制御内容のうち、追尾被写体の制御内容を示す情報を描画する。
図31(e)に示す例では、各カメラに対応する領域(矩形内の領域)が、上下に分割されている。そして、上部に追尾被写体の制御内容を、下部に撮影画角の情報を、それぞれ描画する。なお、領域内をどのように分割するか、また分割された領域にどのような撮影情報を提示するかは、提示する撮影情報の種類や数に応じて適宜定めることができる。
図31(e)に示す例では、サブカメラに役割「メインフォロー」が設定されている。そのため、CPU101は、サブカメラ400に対応する領域の上部に、サブカメラ400の追尾被写体がメインカメラの追尾被写体と同じであることを示す情報317を描画する。図31(e)では一例として「追尾被写体 メインと同じ」という文字情報を描画している。
S906でCPU101は、S804と同様にして、各カメラの撮影画角を示す指標を生成する。ここでは第3実施形態と同様の画像を用いて指標を生成するが、先に説明したように、他の種類の画像を用いたり、文字情報を用いたりして指標を生成してもよい。
S907でCPU101は、S906で生成した指標を、各カメラに対応する領域に描画する。図31(e)に示す例では、領域の下部に指標を描画する。そして、CPU101は、S905~S907の工程を経て得られたGUI画像(第2の表示用画像)のデータをRAM102に記憶する。
CPU101は、S902でRAM102に記憶した俯瞰画像(第1の表示用画像)のデータと、S907でRAM102に記憶したGUI画像(第2の表示用画像)のデータとを、表示用画像データOUT_IMAGEとして、表示装置800へ送信する。本実施形態においても、表示用画像データOUT_IMAGEを表示部108に表示することができる。
表示装置800のCPU801は、ネットワークI/F805を通じて表示用画像データOUT_IMAGEを受信すると、RAM802に記憶する。そして、CPU801は、表示用画像データOUT_IMAGEを表示部811に表示する。CPU801は、表示用画像データOUT_IMAGEを必要に応じて表示部811での表示に適したデータに変換してもよい。例えば、CPU801は、俯瞰画像とGUI画像とが表示部811で別ウィンドウとして表示されるように、俯瞰画像とGUI画像とをスケーリングすることができる。
本実施形態においてCPU101が生成する表示用画像データOUT_IMAGEの例を、図31を用いて説明する。
図31(a)および図31(b)は、図28(a)と同様のシーンをメインカメラ500と、メインカメラ500に連携するサブカメラ400で自動撮影している状態を示している。図31(a)では、サブカメラ400が役割「メインフォロー」に従って自動撮影している。また、図31(b)では、サブカメラ400が役割「アシストカウンター」に従って自動撮影している。なお、ここでは役割「アシストカウンター」ではメインカメラ500の注目被写体とは別の被写体のうち、右側に存在する被写体を、サブカメラ400の追尾被写体として設定するものとする。
また、図31(a)ではメインカメラ500とサブカメラ400との撮影画角が等しいものとする。一方、図31(b)では、図31(a)の状態よりもメインカメラ500の画角が狭い(望遠側)ものとする。したがって、サブカメラ400の撮影画角は、役割「アシストカウンター」に従い、図31(a)の状態よりも広くなる(広角側)ように制御されている。
図31(a)では、メインカメラ500とサブカメラ400がどちらも被写体Bを追尾している。図31(b)では、メインカメラ500が被写体Aを、サブカメラ400が被写体Cを追尾している。
図31(c)は、図31(a)の撮影状態において、S902で生成される俯瞰画像データに相当する画像を示している。各被写体の領域には、被写体の識別IDに関連付けられた色の矩形枠がそれぞれ重畳されている。また、メインカメラ500およびサブカメラ400の追尾被写体である被写体Bの矩形枠の上部には、メインカメラ500とサブカメラ400の識別情報(文字「メインカメラ」および「サブカメラ」)を示す画像が重畳されている。
図31(d)は、図31(b)の撮影状態において、S902で生成される俯瞰画像データに相当する画像を示している。各被写体の領域には、被写体の識別IDに関連付けられた色の矩形枠がそれぞれ重畳されている。また、メインカメラ500の追尾被写体である被写体Bの矩形枠の上部には、メインカメラ500の識別情報(文字「メインカメラ」)を示す画像が重畳されている。さらに、サブカメラ400の追尾被写体である被写体Cの矩形枠の上部には、サブカメラ400の識別情報(文字「サブカメラ」)を示す画像が重畳されている。
図31(e)は、図31(a)の撮影状態において、S907で生成されるGUI画像データに相当する画像を示している。ウィンドウ310には、メインカメラ500に対応する領域を示す矩形枠311と、サブカメラ400に対応する領域を示す矩形枠312とが描画されている。矩形枠311および312は、対応するカメラの追尾被写体の識別IDに関連付けられた色で描画されている。また、矩形枠311および312の上部には、対応するカメラの識別情報313および314が描画されている。サブカメラ400に対応する矩形枠312内の上部には、現在サブカメラ400に設定されている役割における追尾被写体制御の内容を示す情報317が描画されている。また、矩形枠311および312内の下部には、メインカメラ500およびサブカメラ400の撮影画角を示す指標315および316が描画されている。指標315および316の大きさは等しい。
図31(f)は、図31(b)の撮影状態において、S907で生成されるGUI画像データに相当する画像を示している。図31(e)と比較すると、追尾被写体が異なることにより、矩形枠311および312の色が異なっている。また、メインカメラ500の撮影画角が狭く、サブカメラ400の撮影画角が広くなっているため、指標315および316の大きさが異なっている。また、サブカメラ400の役割が異なるため、追尾被写体制御の内容を示す情報317の内容が異なっている。
なお、カメラの追尾被写体の識別IDに関連付けられた色を、そのカメラに対応する領域を示す矩形以外に適用してもよい。例えば、領域内の背景に適用してもよい。また、撮影情報が重畳された俯瞰画像にGUI画像を重畳するなどして、2つの画像を同一ウィンドウに表示してもよい。
本実施形態では、サブカメラ400の役割に関する情報として、追尾被写体の制御内容を示した。しかし、サブカメラ400の役割の名称(「アシストカウンター」など)、追尾被写体の識別情報(被写体名など)を代わりに、あるいは追加して示したりしてもよい。
本実施形態によれば、俯瞰画像とは別に撮影情報を提示する画像を生成することで、第3実施形態の効果に加え、俯瞰画像に影響されずに撮影情報を確認することが可能になり、撮影情報を一層容易に把握することが可能になる。
なお、第3および第4実施形態では、メインカメラおよびサブカメラの撮影状態を可視化した情報をユーザに提供する例を説明したが、メインカメラを撮影者が操作する場合にはメインカメラの被写体や撮影画角の変更は予め決められていることもあり得る。そのような場合、メインカメラの被写体や撮影画角はある程度把握できるため、メインカメラの撮影状態は可視化せずサブカメラの撮影状態を可視化した情報をユーザに提供するようにしてもよい。あるいは、メインカメラの撮影状態を可視化するか否かをユーザが選択可能にしてもよい。
また、サブカメラの数が多いマルチカメラ撮像システムでは、すべてのカメラの撮影状態を可視化した情報をユーザに提供すると、情報量が多すぎてユーザが情報を正確に認識できないおそれがある。そこで、マルチカメラ撮像システムのカメラのうち、撮影状態を可視化するカメラのユーザが選択できるようにしてもよい。ただし、サブカメラの撮影状態は可視化せずメインカメラの撮影状態を可視化した情報をユーザに提供しても自動撮像システムの使い勝手を向上させる効果は小さいため、少なくとも1つのサブカメラの撮影状態を可視化した情報をユーザに提供することが好ましい。これらの選択操作は、ユーザ入力804を用いて実行できるようにすればよい。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本実施形態の開示は、以下の撮影制御装置、撮影制御方法、表示制御装置、表示制御方法、撮像システム、およびプログラムを含む。
(項目1)
メインカメラおよびサブカメラを含む複数のカメラのうち、前記サブカメラの撮影方向と画角とを、前記サブカメラに設定された役割と、前記メインカメラの注目被写体と画角とに基づいて制御する制御手段と、
前記メインカメラおよび前記サブカメラの情報を提示する表示用画像を生成する生成手段と、
前記表示用画像を出力する出力手段と、
を有し、
前記生成手段は、前記メインカメラの注目被写体および前記サブカメラの追尾被写体に関する情報と、前記メインカメラおよび前記サブカメラの画角に関する情報と、の少なくとも一方を提示する表示用画像を生成する、ことを特徴とする撮影制御装置。
(項目2)
前記生成手段は、前記複数のカメラの撮影範囲の全体を撮影する、前記複数のカメラとは別のカメラで撮影された映像に、前記メインカメラおよび前記サブカメラの情報を重畳することにより、前記表示用画像を生成することを特徴とする項目1に記載の撮影制御装置。
(項目3)
前記生成手段は、前記別のカメラで撮影された映像における、前記注目被写体の領域および前記追尾被写体の領域に関連付けられた指標を重畳することにより、前記注目被写体および前記追尾被写体に関する情報を提示することを特徴とする項目2に記載の撮影制御装置。
(項目4)
前記指標が、前記注目被写体の領域を含む矩形枠状の指標と、前記追尾被写体の領域を含む矩形枠状の指標とを含むことを特徴とする項目3に記載の撮影制御装置。
(項目5)
前記矩形枠状の指標の色が、被写体ごとに予め定められた色であることを特徴とする項目4に記載の撮影制御装置。
(項目6)
前記指標が、前記メインカメラおよび前記サブカメラの識別情報をさらに含むことを特徴とする項目4または5に記載の撮影制御装置。
(項目7)
前記生成手段は、前記メインカメラの画角を示す指標と前記サブカメラの画角を示す指標とを、前記別のカメラで撮影された映像に重畳することにより、前記メインカメラおよび前記サブカメラの画角に関する情報を提示することを特徴とする項目2から6のいずれか1項に記載の撮影制御装置。
(項目8)
前記画角を示す指標が、サイズによって画角の大きさを示すことを特徴とする項目7に記載の撮影制御装置。
(項目9)
前記画角を示す指標が、予め定められた画像のうち前記指標として用いる範囲の大きさによって画角の大きさを示すことを特徴とする項目7に記載の撮影制御装置。
(項目10)
前記メインカメラの前記画角を示す指標を重畳する領域の輪郭の少なくとも一部を、前記メインカメラの前記注目被写体に対して予め定められた色で提示することを特徴とする項目7から9のいずれか1項に記載の撮影制御装置。
(項目11)
前記生成手段は、前記表示用画像として、前記複数のカメラの撮影範囲の全体を撮影する、前記複数のカメラとは別のカメラで撮影された映像に基づく第1の表示用画像と、前記別のカメラで撮影された映像に基づかない第2の表示用画像とを生成することを特徴とする項目1に記載の撮影制御装置。
(項目12)
前記第1の表示用画像には、前記注目被写体の領域および前記追尾被写体の領域に関連付けられた指標が重畳され、
前記第2の表示用画像には、前記メインカメラの画角を示す指標と前記サブカメラの画角を示す指標とが含まれる、
ことを特徴とする項目11に記載の撮影制御装置。
(項目13)
前記第2の表示用画像には、前記サブカメラに設定された役割に関する情報がさらに含まれることを特徴とする項目11または12に記載の撮影制御装置。
(項目14)
前記役割に関する情報が、前記役割の名称と、前記役割に従った前記サブカメラの制御内容との1つ以上を含むことを特徴とする項目13に記載の撮影制御装置。
(項目15)
前記第2の表示用画像は、前記メインカメラの前記注目被写体に対して予め定められた色の矩形枠で示される、前記メインカメラに関する情報を提示するための領域と、前記サブカメラの前記追尾被写体に対して予め定められた色の矩形枠で示される、前記サブカメラに関する情報を提示するための領域とを含むことを特徴とする、項目12から14のいずれか1項に記載の撮影制御装置。
(項目16)
前記複数のカメラと、
項目1から15のいずれか1項に記載の撮影制御装置と、
を有する撮像システム。
(項目17)
前記撮影制御装置が出力する表示用画像を表示する表示装置を更に有することを特徴とする項目16に記載の撮像システム。
(項目18)
メインカメラおよびサブカメラを含む複数のカメラのうち、前記サブカメラの撮影方向と画角とが、前記サブカメラに設定された役割と、前記メインカメラの注目被写体と画角とに基づいて制御される撮像システムで用いられる表示制御装置であって、
前記サブカメラの情報を提示する表示用画像を生成する生成手段と、
前記表示用画像を出力する出力手段と、
を有し、
前記生成手段は、前記サブカメラの追尾被写体に関する情報と、前記サブカメラの画角に関する情報と、の少なくとも一方を提示する表示用画像を生成する、ことを特徴とする表示制御装置。
(項目19)
撮影制御装置が実行する撮影制御方法であって、
メインカメラおよびサブカメラを含む複数のカメラのうち、前記サブカメラの撮影方向と画角とを、前記サブカメラに設定された役割と、前記メインカメラの注目被写体と画角とに基づいて制御することと、
前記メインカメラおよび前記サブカメラの情報を提示する表示用画像を生成することと、
前記表示用画像を出力することと、を有し、
前記生成することは、前記メインカメラの注目被写体および前記サブカメラの追尾被写体に関する情報と、前記メインカメラおよび前記サブカメラの画角に関する情報と、の少なくとも一方を提示する表示用画像を生成することを含む、ことを特徴とする撮影制御方法。
(項目20)
メインカメラおよびサブカメラを含む複数のカメラのうち、前記サブカメラの撮影方向と画角とが、前記サブカメラに設定された役割と、前記メインカメラの注目被写体と画角とに基づいて制御される撮像システムで用いられる表示制御装置が実行する表示制御方法であって、
前記サブカメラの情報を提示する表示用画像を生成することと、
前記表示用画像を出力することと、を有し、
前記生成することは、前記サブカメラの追尾被写体に関する情報と、前記サブカメラの画角に関する情報と、の少なくとも一方を提示する表示用画像を生成することを含む、ことを特徴とする表示制御方法。
(項目21)
コンピュータを、項目1から15のいずれか1項に記載の撮影制御装置が有する各手段として機能させるためのプログラム。
(項目22)
コンピュータを、項目18に記載の表示制御装置が有する各手段として機能させるためのプログラム。
本発明は上述した実施形態の内容に制限されず、発明の精神および範囲から離脱することなく様々な変更および変形が可能である。したがって、発明の範囲を公にするために請求項を添付する。