(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024173641
(43)【公開日】2024-12-12
(54)【発明の名称】画像処理装置、画像処理方法
(51)【国際特許分類】
H04N 23/611 20230101AFI20241205BHJP
H04N 23/60 20230101ALI20241205BHJP
H04N 7/18 20060101ALI20241205BHJP
G06T 7/70 20170101ALI20241205BHJP
【FI】
H04N23/611
H04N23/60 300
H04N7/18 G
G06T7/70 A
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2024008828
(22)【出願日】2024-01-24
(31)【優先権主張番号】P 2023089116
(32)【優先日】2023-05-30
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】松岡 明日華
(72)【発明者】
【氏名】岩田 拓也
【テーマコード(参考)】
5C054
5C122
5L096
【Fターム(参考)】
5C054CA04
5C054CC02
5C054CG03
5C054CG05
5C054FC12
5C054HA19
5C122DA03
5C122EA65
5C122EA66
5C122FA01
5C122FA06
5C122FH02
5C122FH11
5C122FH12
5C122FH24
5C122GC52
5C122GC75
5C122GD04
5C122HA13
5C122HA35
5C122HA46
5C122HA86
5C122HA88
5C122HB01
5C122HB05
5L096AA02
5L096FA35
5L096FA64
5L096FA67
5L096FA69
5L096HA05
(57)【要約】
【課題】 追尾対象の被写体が撮像画像から検出されなくなっても、該追尾対象の被写体の追尾を継続可能にするための技術を提供すること。
【解決手段】 フレームから被写体を検出する。そして、第1フレームから追尾対象の被写体の識別情報と同じ識別情報の被写体が検出されなかった場合、該第1フレームから検出された被写体の識別情報の中に、該追尾対象の被写体が検出されなかったタイミング以前の第2フレームから検出された被写体の識別情報とは異なる新規の識別情報が含まれていれば、該追尾対象の被写体の識別情報を該新規の識別情報に更新する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
フレームから被写体を検出する検出手段と、
第1フレームから追尾対象の被写体の識別情報と同じ識別情報の被写体が検出されなかった場合、該第1フレームから検出された被写体の識別情報の中に、該追尾対象の被写体が検出されなかったタイミング以前の第2フレームから検出された被写体の識別情報とは異なる新規の識別情報が含まれていれば、該追尾対象の被写体の識別情報を該新規の識別情報に更新する更新手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記更新手段はさらに、前記新規の識別情報に対応する被写体の位置が範囲内に位置しているか否かに基づいて、前記追尾対象の被写体の識別情報を前記新規の識別情報に更新するか否かを判断することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記更新手段は、前記タイミングの前の前記追尾対象の被写体のサイズに応じて前記範囲のサイズを変更することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記更新手段は、前記タイミングの前の前記追尾対象の被写体の移動速度に応じて前記範囲のサイズを変更することを特徴とする請求項2に記載の画像処理装置。
【請求項5】
前記更新手段は、前記タイミングの前の前記追尾対象の移動方向に基づいて前記範囲の形状を変更することを特徴とする請求項2に記載の画像処理装置。
【請求項6】
前記更新手段は、前記タイミングからの経過時間に応じて前記範囲のサイズを変更することを特徴とする請求項2に記載の画像処理装置。
【請求項7】
さらに、
撮像手段を備え、
前記検出手段は、前記撮像手段により撮像されたフレームから被写体を検出することを特徴とする請求項1に記載の画像処理装置。
【請求項8】
さらに、
前記撮像手段により撮像されたフレームから検出された被写体のうち、追尾対象の被写体の識別情報と同じ識別情報の被写体を追尾して撮像するよう前記撮像手段を制御する手段を備えることを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記検出手段は、前記画像処理装置と通信が可能な外部の撮像手段から受信したフレームから被写体を検出することを特徴とする請求項1に記載の画像処理装置。
【請求項10】
さらに、
追尾対象の被写体の識別情報と同じ識別情報の被写体を追尾して撮像するよう前記撮像手段を制御するための制御コマンドを生成し、該制御コマンドを前記撮像手段に対して送信する手段を備えることを特徴とする請求項9に記載の画像処理装置。
【請求項11】
さらに、
前記追尾対象の被写体が検出されなくなったタイミングの以降に、新たな識別情報を付与した被写体の、検出された被写体の特徴量が、前記追尾対象の被写体が検出されなくなる前に、前記追尾対象の被写体の特徴量と近い場合に、
前記追尾対象の被写体が検出されなくなったタイミングの以降に新たな識別情報を付与した被写体を、追尾対象として選択する手段を備えることを特徴とする請求項1に記載の画像処理装置。
【請求項12】
前記特徴量は、前記被写体の向き、体形、姿勢、大きさ、縦横比のうち、すくなくとも一つを含むことを特徴とする請求項11に記載の画像処理装置。
【請求項13】
前記特徴量は、前記被写体の色、ヒストグラムのうちすくなくとも1つを含むことを特徴とする請求項11に記載の画像処理装置。
【請求項14】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の検出手段が、フレームから被写体を検出する検出工程と、
前記画像処理装置の更新手段が、第1フレームから追尾対象の被写体の識別情報と同じ識別情報の被写体が検出されなかった場合、該第1フレームから検出された被写体の識別情報の中に、該追尾対象の被写体が検出されなかったタイミング以前の第2フレームから検出された被写体の識別情報とは異なる新規の識別情報が含まれていれば、該追尾対象の被写体の識別情報を該新規の識別情報に更新する更新工程と
を備えることを特徴とする画像処理方法。
【請求項15】
コンピュータを、請求項1ないし13のいずれか1項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、被写体の追尾技術に関する。
【背景技術】
【0002】
一般に、PTZカメラとよばれるパン・チルト・ズームを調節することが可能なカメラが、ユーザからの要求に応じて、撮像画像から検出した追尾対象を自動で追尾する自動追尾技術がある。自動追尾技術では、追尾対象がカメラの画角内で所望の位置にくるようにパン・チルト・ズームを自動的に制御する。特許文献1には、画面上に表示された追尾目標の座標を元に、追尾目標を画面中心に表示するために必要なPTZカメラの制御パラメータを計算する方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
自動追尾技術には、追尾対象が他の物体と交錯することにより追尾対象を見失ってしまう、ロストと呼ばれる課題がある。ロストが発生すると、自動追尾が正常に継続できなくなる。本発明では、追尾対象の被写体が撮像画像から検出されなくなっても、該追尾対象の被写体の追尾を継続可能にするための技術を提供する。
【課題を解決するための手段】
【0005】
本発明の一様態は、フレームから被写体を検出する検出手段と、第1フレームから追尾対象の被写体の識別情報と同じ識別情報の被写体が検出されなかった場合、該第1フレームから検出された被写体の識別情報の中に、該追尾対象の被写体が検出されなかったタイミング以前の第2フレームから検出された被写体の識別情報とは異なる新規の識別情報が含まれていれば、該追尾対象の被写体の識別情報を該新規の識別情報に更新する更新手段とを備えることを特徴とする。
【発明の効果】
【0006】
本発明によれば、追尾対象の被写体が撮像画像から検出されなくなっても、該追尾対象の被写体の追尾を継続可能にすることができる。
【図面の簡単な説明】
【0007】
【
図2】カメラ100およびコントローラ200のそれぞれのハードウェア構成例を示すブロック図。
【
図3】(a)はカメラ100の動作を示すフローチャート、(b)はコントローラ200の動作を示すフローチャート。
【
図6】(a)はカメラ100の動作を示すフローチャート、(b)はコントローラ200の動作を示すフローチャート。
【発明を実施するための形態】
【0008】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0009】
[第1の実施形態]
まず、ユーザにより指定された追尾対象の被写体を追尾して撮像するシステムの構成例について、
図1を用いて説明する。
図1に示す如く、本実施形態に係るシステムは、被写体を追尾して撮像する機能を有するカメラ100と、該カメラ100の制御及び該カメラ100からの情報を処理する機能を有するコントローラ200と、を有する。そして、カメラ100およびコントローラ200はLAN(Local Area Network)400に接続されており、LAN400を介して互いにデータ通信が可能なように構成されている。LAN400は有線であっても良いし無線であっても良い。また、カメラ100とコントローラ200との間のネットワークは特定のネットワークに限らない。
【0010】
先ず、カメラ100について説明する。カメラ100は、撮像部111と、該撮像部111の撮像方向(パン方向、チルト方向)及びズームを制御する駆動部109と、を有する画像処理装置である。
【0011】
撮像部111は、動画像を撮像する場合には、各フレームの画像を撮像画像として出力し、定期的若しくは不定期的に静止画像を撮像する場合には、該静止画像(フレーム)を撮像画像として出力する。撮像部111は、撮像画像や各種の情報を、LAN400を介してコントローラ200に対して送信する。駆動部109は、追尾対象の被写体として設定されている被写体を追尾して撮像するよう、該撮像部111の撮像方向(パン方向やチルト方向)やズームを制御する。
【0012】
次に、コントローラ200について説明する。コントローラ200は、カメラ100から送信された各種の情報を処理したり、ユーザ操作に応じて選択された追尾対象の被写体をカメラ100に通知したりする。
【0013】
次に、カメラ100およびコントローラ200のそれぞれのハードウェア構成例について、
図2のブロック図を用いて説明する。
図2に示した構成は、後述する各種の処理を実行可能な構成の一例に過ぎず、適宜変更/変形が可能である。
【0014】
先ず、カメラ100のハードウェア構成例について説明する。CPU101は、RAM102に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU101は、カメラ100全体の動作制御を行うと共に、カメラ100が行う処理として説明する各種の処理を実行もしくは制御する。
【0015】
RAM102は、DRAMなどの高速な記憶装置の一例である。RAM102は、記憶装置103からロードされたコンピュータプログラムやデータを格納するためのエリア、画像処理部106から出力された撮像画像を格納するためのエリア、を有する。さらにRAM102は、CPU101、推論部110、画像処理部106が各種の処理を実行する際に用いるワークエリア、を有する。このようにRAM102は、各種のエリアを適宜提供することができる。
【0016】
記憶装置103は、ROM、フラッシュメモリ、HDD、などの揮発性の記憶装置や不揮発性の記憶装置を含む。記憶装置103には、OS(オペレーティングシステム)、カメラ100が行う処理として説明する各種の処理をCPU101、推論部110、画像処理部106などに実行もしくは制御させるためのコンピュータプログラムやデータ、などが格納されている。
【0017】
推論部110は、RAM102に格納されている撮像画像から被写体を検出し、該被写体の位置や有無等を推論する。推論部110は、GPU(Graphics Processing Unit)等の画像処理や推論処理に特化した演算装置である。学習処理に利用するのは一般的にはGPUが有効であるが、FPGA(Field -Programmable Gate Array)といった再構成可能な論理回路で同等の機能を実現してもよい。また、推論部110の処理をCPU101が担ってもよい。なお、推論部110は本実施形態では使用するが、後述する第2の実施形態では使用しないため、第2の実施形態では、カメラ100は推論部110を有していなくても良い。
【0018】
上記の駆動部109は、駆動I/F108に接続されている。駆動部109は、カメラ100の撮像方向やズームを変更するための回動機構を有し、メカ駆動系及び駆動源のモータ等を有する。駆動部109は、CPU101から駆動I/F108を介して受け取る指示に基づいてパン・チルト動作といった回動や、光学的に画角を変更するためのズーム動作を行う。
【0019】
画像センサ107は、光学系、CCDやCMOSなどの撮像センサ、を有し、該光学系を介して入光した光は該撮像センサで受光し、該撮像センサは受光した光に応じた画像を出力する。
【0020】
画像処理部106は、画像センサ107から出力された画像を規定の画像フォーマットの画像に変換し、該変換した画像を撮像画像として出力する。なお、画像処理部106は、画像センサ107から出力された画像を用いて色補正、露出制御、シャープネス補正などの画質調整、画像中の所定領域を切り出すクロップ処理、などを行うようにしてもよい。
【0021】
カメラ100は、ネットワークI/F105を介してLAN400に接続されており、カメラ100は、Ethernet(登録商標)等の通信媒体を介してコントローラ200などの外部装置との間の通信を担う。なお、通信は、不図示のシリアル通信I/Fなど別のI/Fを介して行っても構わない。
【0022】
CPU101、RAM102、記憶装置103、推論部110、駆動I/F108、画像処理部106、ネットワークI/F105、はいずれも、システムバス111に接続されている。
【0023】
次に、コントローラ200について説明する。コントローラ200は、PC(パーソナルコンピュータ)、タブレット端末装置、スマートフォン、などのコンピュータ装置である。
【0024】
CPU201は、RAM202に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU201は、コントローラ200全体の動作制御を行うと共に、コントローラ200が行う処理として説明する各種の処理を実行もしくは制御する。
【0025】
RAM202は、記憶装置203からロードされたコンピュータプログラムやデータを格納するためのエリア、CPU201や推論部210が各種の処理を実行する際に用いるワークエリア、を有する。さらにRAM202は、ネットワークI/F204を介してカメラ100から受信した各種の情報を格納するためのエリアを有する。このようにRAM202は、各種のエリアを適宜提供することができる。
【0026】
記憶装置203は、ROM、フラッシュメモリ、HDD、などの揮発性の記憶装置や不揮発性の記憶装置を含む。記憶装置203には、OS(オペレーティングシステム)、コントローラ200が行う処理として説明する各種の処理をCPU201、推論部210などに実行もしくは制御させるためのコンピュータプログラムやデータ、などが格納されている。
【0027】
推論部210は、上記の推論部110と同様の機能を有する。なお、推論部210は本実施形態では使用せず、後述する第2の実施形態では使用するので、本実施形態では、コントローラ200は、推論部210を有していなくても良い。
【0028】
ユーザ入力I/F206は、キーボード、マウス、タッチパネル画面、ジョイスティック、ボタン、ダイヤルなどのユーザインターフェースであり、ユーザが操作することで各種の情報や指示をコントローラ200に対して入力することができる。
【0029】
表示部205は、液晶画面やタッチパネル画面を有し、CPU201や推論部210による処理結果を画像や文字などでもって表示することができる。なお、表示部205は、コントローラ200が有する装置であることに限らず、有線もしくは無線でコントローラ200と接続されている外部装置であっても良い。また、表示部205は、画像や文字を投影するプロジェクタなどの投影装置であっても良い。
【0030】
コントローラ200は、ネットワークI/F204を介してLAN400に接続されており、コントローラ200は、Ethernet(登録商標)等の通信媒体を介してカメラ100などの外部装置との間の通信を担う。なお、通信は、不図示のシリアル通信I/Fなど別のI/Fを介して行っても構わない。
【0031】
CPU201、RAM202、記憶装置203、推論部210、ユーザ入力I/F206、表示部205、ネットワークI/F204,はいずれも、システムバス207に接続されている。
【0032】
次に、カメラ100の動作について、
図3(a)のフローチャートに従って説明する。
図3(a)のフローチャートに従った処理は、1フレーム分の撮像画像についての処理であり、実際には、カメラ100は、
図3(a)のフローチャートに従った処理を、各フレームの撮像画像について行う。
【0033】
ステップS101では、画像処理部106はCPU101からの指示に従って上記の如く撮像画像を生成し、該生成した撮像画像をRAM102に格納する。また、CPU101は、該撮像画像を推論部110に入力し、該推論部110は、CPU101からの指示に従って、該撮像画像に対する推論結果を生成し、該生成した推論結果をRAM102に格納する。
【0034】
推論部110は、ディープラーニング等の機械学習手法を用いて作成された学習済みモデルを記憶装置103から読み出す。そして推論部110は、撮像画像を該学習済みモデルに入力して該学習済みモデルの演算(推論)を行うことで、撮像画像における被写体の位置を該被写体の推論結果として取得する。撮像画像に複数の被写体が含まれている場合には、推論部110は、それぞれの被写体について推論結果を取得する。なお、推論の処理速度向上のため、画像処理部106は撮像画像を縮小してRAM102に格納し、学習済みモデルには該縮小した撮像画像を入力するようにしても良い。
【0035】
そしてCPU101は、被写体の推論結果に対して、該被写体に固有の識別情報であるIDを付与する。撮像画像に複数の被写体が含まれている場合には、CPU101は、それぞれの被写体の推論結果に対し、該被写体に固有のIDを付与する。
【0036】
ここで、
図4(a)~(e)を参照して、推論結果について説明する。
図4では被写体を人物としている。
図4(a)は、撮像画像700に2人の人物(人物701および人物702)が存在する場合の推論結果を示す図である。
図4(a)の撮像画像700を推論部110に入力すると、推論部110からは、人物701の位置(人物701の推論結果)として「該人物701の全身を含む矩形710の左上頂点の画像座標および右下頂点の画像座標」が出力され、人物702の位置(人物702の推論結果)として「該人物702の全身を含む矩形711の左上頂点の画像座標および右下頂点の画像座標」が出力される。
【0037】
また、CPU101は、人物701の推論結果に、該人物701に固有の識別情報であるID720として「1」を付与し、人物702の推論結果に、該人物702に固有の識別情報であるID721として「2」を付与する。
【0038】
なお、推論部110が出力する人物の位置は、該人物の全身を含む矩形の左上頂点の画像座標および右下頂点の画像座標に限らない。たとえば
図4(b)に示す如く、人物701の位置として、人物701の頭部を含む矩形730の左上頂点の画像座標および右下頂点の画像座標、人物702の位置として、人物702の頭部を含む矩形731の左上頂点の画像座標および右下頂点の画像座標、を出力するようにしても良い。また、人物の位置として、人物の他の部位を含む矩形の左上頂点の画像座標および右下頂点の画像座標を出力するようにしても良い。また、矩形の左上頂点の画像座標および右下頂点の画像座標の代わりに、矩形の中心の画像座標と該矩形の幅および高さを出力するようにしても良い。
【0039】
なお、人物の検出ではなく頭部や顔等、異なる物体を検出するためには、使用する学習済みモデルを、所望の出力に対応する学習データを元に学習されている学習済みモデルに変更すればよい。
【0040】
また、被写体の検出を機械学習手法を用いて作成された学習済みモデルを用いて行うケースについて説明したが、被写体を検出する方法は特定の方法に限らない。たとえば、撮像画像中の局所的な特徴点を照合して検出するSIFT法といった方法や、テンプレート画像との類似度を求めて検出するテンプレートマッチング法といった方法を用いてもよい。
【0041】
また、推論結果に対するIDの付与は、CPU101がフレームごとに、現在の推論結果に対して実施する。このとき、CPU101は、過去のフレームの推論結果と現在のフレームの推論結果とを照合することで、被写体が移動した場合であっても同じ被写体に対しては同じIDが割り当てられるようにIDを付与する。具体的には、検出される矩形の位置や大きさを過去のフレームと現在のフレームで比較し、最も近い被写体に同じIDを付与する方法を用いてもよい。
【0042】
ここで、推論結果に対するIDの付与について
図4(c)~(e)を参照して説明する。
図4(c)~(e)には、以下の説明に必要な情報、つまり、前フレームから検出された人物701の全身を含む矩形710、該矩形710の中心740、現フレームから検出された人物701の全身を含む矩形710a、該矩形710aの中心740a、中心740を中心とする半径L1の円750、を示しており、その他の情報については記載を省略している。
【0043】
L1は予めパラメータとして記憶装置103に格納されている。CPU101は、現フレームにおいて、前フレームにおける被写体Aの矩形Aの中心位置から距離L1以内に被写体Bの矩形Bの中心があり、矩形Aの面積(画素数)と矩形Bの面積(画素数)との比(面積比)が規定範囲X内(たとえば0.9~1.1)であれば、被写体Bは被写体Aと同じ被写体であると判断し、被写体Bの推論結果には、被写体Aの推論結果に付与したIDと同じIDを付与する。規定範囲Xは予めパラメータとして記憶装置103に格納されている。
【0044】
図4(c)の例では、前フレームにおける矩形710の中心740から距離L1以内(つまり円750内)に矩形710aの中心740aがあり、矩形710の面積(画素数)と矩形710aの面積(画素数)との比(面積比)が規定範囲X内である。然るに、CPU101は、矩形710に対応する人物の推論結果に付与されたIDと同じIDを、矩形710aに対応する人物の推論結果に付与する。
【0045】
図4(d)の例では、前フレームにおける矩形710の中心740から距離L1以内(つまり円750内)に矩形710aの中心740aはない。然るに、CPU101は、矩形710に対応する人物の推論結果に付与されたIDとは異なる新規のIDを、矩形710aに対応する人物の推論結果に付与する。
【0046】
図4(e)の例では、前フレームにおける矩形710の中心740から距離L1以内(つまり円750内)に矩形710aの中心740aがあるが、矩形710の面積(画素数)と矩形710aの面積(画素数)との比(面積比)が規定範囲X内ではない。然るに、CPU101は、矩形710に対応する人物の推論結果に付与されたIDとは異なる新規のIDを、矩形710aに対応する人物の推論結果に付与する。また、前フレームと現在のフレームで矩形の縦横比の変化が閾値Y内のオブジェクトに対して同じIDを付与してもよい。
【0047】
また、過去の数フレームの同じIDに対応する矩形の位置の推移から現在のフレームの矩形の位置をカルマンフィルタ等により予測し、予測した矩形の位置に最も近い矩形に対応する人物の推論結果に該IDと同じIDを付与する方法を用いてもよい。
【0048】
また、現在のフレームで検出されたオブジェクトに対して矩形内の画像の特徴量Aを取得し、該特徴量Aを過去のフレームで検出された各オブジェクトに対応する各矩形内の画像の特徴量Bと比較し、特徴量Aに最も近い特徴量Bの矩形の人物の推論結果に付与されているIDと同じIDを人物Aの推論結果に付与する方法を用いても良い。
【0049】
以下、特徴量として画像の特徴ベクトルを使用する場合について述べる。まず、異なる角度から見た特定人物の画像に対して類似した特徴ベクトルを出力し、異なる人物の画像にはそれらと異なる特徴ベクトルを出力するように学習された機械学習モデルを用意する。具体的には、あらかじめ様々な被写体を様々な角度から撮影した画像を学習用画像として用意し、同じ被写体を撮影した画像については、同じIDでラベリングし、機械学習モデルの入力とする。出力は画像から出力される特徴ベクトルである。各学習用画像から出力された特徴ベクトルをマッピングした特徴ベクトル空間をDeep Metric Learning(深層距離学習)により学習する。深層距離学習において、2つの特徴量間の距離がデータの類似度を反映しており、意味の近い入力画像同士から出力された特徴量同士の距離は近く、意味の遠い入力画像同士から出力された特徴ベクトル同士の距離は遠くなるよう学習を行う。距離を算出する深層距離学習に用いる損失関数には、トリプレットロス、Contrastive loss、クラス分類誤差、などがある。このように学習された機械学習モデルに同じ被写体を別の角度から撮影した撮影画像を入力すると、推論結果として出力される特徴ベクトルは近いものになる。なお、損失関数は、入力画像の意味合いの近さに応じて損失が小さくなるように定義された関数であればどのようなものを使ってもよい。なお、深層距離学習を使う例を説明したが、それに限定されることはなく、特徴ベクトルのデータ群を、同じ被写体を撮影した画像の特徴ベクトル群と、異なる被写体を撮影した特徴ベクトル群と、に分離できる学習方法を使えばどのような方法を用いても実施できる。
【0050】
また、ID付与に用いる特徴量はこの限りではなく、現在のフレームの矩形内の画像の色情報を取得し、これを過去のフレームの各矩形内の色情報と比較し、最も近い人物に同じIDを付与するといった方法でもよい。具体的には、色情報は、矩形の中の特定の割合の位置の画素値や、特定の領域の画素値の平均を算出することで得られる。または、矩形の中全体の平均をとっても良いし、例えば、上半身は同じユニフォームを着ているような場合は、矩形の下方の領域の画素値の平均を取るなどしてもよく、被写体の肌や服の差が顕著に表れる領域の色を取得できるようにすればよい。また、色情報として、矩形の全体や、特定の領域のヒストグラムを得て、過去のフレームの各矩形内のヒストグラムと、ピアソンの相関関数やカイ二乗検定などいった方法で比較し、最も類似度が高い人物に同じIDを付与してもよい。
【0051】
また、同じIDを付与するための特徴量の差(上記の例では特徴量Aと特徴量Bとの差)には閾値を設けても良い。この場合、CPU101は、特徴量Aと、該特徴量Aに最も近い特徴量Bと、の差が閾値以下であれば、該特徴量Bの矩形の人物の推論結果に付与されているIDと同じIDを人物Aの推論結果に付与する。
【0052】
また、異なる角度から見た特定人物の画像に対して類似した特徴量を出力し、異なる人物の画像にはそれらと異なる特徴量を出力するように学習された機械学習モデルによって、特徴量を取得するようにしてもよい。また、これらの方法を組み合わせてIDを付与してもよい。
【0053】
ステップS102では、CPU101は、RAM102に格納された撮像画像および推論結果(該推論結果のIDを含む)を送信情報として読み出し、該読み出した送信情報をネットワークI/F105を介してコントローラ200に対して送信する。
【0054】
ステップS103では、CPU101は、ネットワークI/F105を介して「追尾対象の被写体のID(追尾被写体ID)」をコントローラ200から受信したか否かを判断する。この判断の結果、追尾被写体IDをコントローラ200から受信した場合には、処理はステップS105に進み、追尾被写体IDをコントローラ200から受信していない場合には、処理はステップS104に進む。
【0055】
ステップS104では、CPU101は、RAM102に決定済みの追尾被写体IDが格納されているか否か(追尾被写体IDは決定済みか否か)を判断する。この判断の結果、RAM102に決定済みの追尾被写体IDが格納されている(追尾被写体IDは決定済み)場合には、処理はステップS106に進む。一方、RAM102に決定済みの追尾被写体IDが格納されていない(追尾被写体IDは決定済みでない)場合には、処理はステップS101に進む。
【0056】
たとえば、CPU101は、RAM102に格納されている追尾被写体IDに初期値(たとえばNULL)が設定されている場合には、RAM102に決定済みの追尾被写体IDが格納されていない(追尾被写体IDは決定済みでない)と判断しても良い。この場合、CPU101は、RAM102に格納されている追尾被写体IDに初期値以外の値が設定されている場合には、RAM102に決定済みの追尾被写体IDが格納されている(追尾被写体IDは決定済み)と判断する。
【0057】
ステップS105では、CPU101は、ネットワークI/F105を介してコントローラ200から受信した追尾被写体IDをRAM102に格納する。ステップS106では、CPU101は、ステップS101でRAM102に格納した推論結果(現フレームの撮像画像から検出された被写体の推論結果)のうち、追尾被写体IDと同じIDが付与されている推論結果が存在するか否かを判断する。つまりCPU101は、追尾被写体IDと同じIDに対応する被写体が現フレームの撮像画像から検出されているか否かを判断する。
【0058】
この判断の結果、現フレームの撮像画像から検出された被写体の推論結果の中に、追尾被写体IDと同じIDが付与されている推論結果が存在する(追尾被写体IDと同じIDに対応する被写体が検出されている)場合には、処理はステップS109に進む。
【0059】
一方、現フレームの撮像画像から検出された被写体の推論結果の中に、追尾被写体IDと同じIDが付与されている推論結果は存在しない(追尾被写体IDと同じIDに対応する被写体は検出されていない)場合、CPU101は追尾対象の被写体のロストが発生したと判断し、現在の時刻TをRAM102に格納し、そして処理はステップS107に進む。現在の時刻はCPU101が有するタイマ機能により取得する。なお、CPU101は、現在の時刻に加えて若しくは代えて、現フレームのフレーム番号やタイムスタンプなど、追尾対象の被写体のロストが発生したタイミングを規定する情報を格納するようにしても良い。
【0060】
このときの撮像画像中の被写体の様子の例を
図4(a)、(f)を用いて説明する。ここでは追尾被写体ID=1(つまり追尾対象の被写体は人物701)であるケースについて説明する。
【0061】
図4(a)の状態の後、例えば人物701および人物702が移動し、人物702が人物701の手前(カメラ100側)を通って交錯した場合、
図4(f)に示す如く、撮像画像700において人物701は人物702によって遮蔽されて見えなくなる(人物701のロストが発生した状態)。この結果、
図4(f)の撮像画像700から得られるIDの中には追尾被写体IDは存在しない。この場合、処理はステップS106からステップS107に進む。
【0062】
ステップS107では、CPU101は、RAM102に格納されている「フレームごとの、該フレームから検出された被写体の推論結果」のうち、現在のフレームから検出された被写体の推論結果のIDと、時刻T以前(上記のタイミング以前)のフレームから検出された被写体の推論結果のIDと、を取得する。そしてCPU101は、現在のフレームから検出された被写体の推論結果のIDの中に、時刻T以前のフレームから検出された被写体の推論結果のIDのいずれとも異なる新規のIDが含まれているか否かを判断する。
【0063】
この判断の結果、現在のフレームから検出された被写体の推論結果のIDの中に、時刻T以前のフレームから検出された被写体の推論結果のIDのいずれとも異なる新規のIDが含まれている場合には、処理はステップS108に進む。一方、現在のフレームから検出された被写体の推論結果のIDの中に、時刻T以前のフレームから検出された被写体の推論結果のIDのいずれとも異なる新規のIDは含まれていない場合には、処理はステップS101に進む。
【0064】
このときの撮像画像中の被写体の様子の例を
図4(a)、(f)、(g)を用いて説明する。例えば、
図4(f)の撮像画像700を現在のフレーム、
図4(a)の撮像画像700を時刻T以前のフレームとする。このとき、
図4(f)の撮像画像700について取得した推論結果のIDはID=2のみであり、
図4(a)の撮像画像700について取得した推論結果のIDはID=1,2であるから、新規のIDは存在しない。この場合は、処理はステップS107からステップS101に進む。
【0065】
一方、
図4(f)の状態から人物701および人物702がさらに移動して交錯が終了すると、
図4(g)に示す如く、再び人物701が現れる。
図4(g)の撮像画像700を入力した推論部110からは、人物701の推論結果と、人物702の推論結果と、が出力される。ここで、交錯後の人物の推論結果には、交錯前の人物の推論結果のIDと同じIDは付与されず、新規のIDが付与される場合があり、これにより追尾対象の被写体のロストが発生する。
図4(g)の例では、撮像画像700に対する推論の結果、交錯後の人物701の推論結果には、交錯前の人物701の推論結果のID(ID=1)と同じIDは付与されず、新規のID722としてID=3が付与されている。
【0066】
図4(g)の撮像画像700について取得した推論結果のIDはID=2,3であり、
図4(a)の撮像画像700について取得した推論結果のIDはID=1,2であるから、ID=3が新規のIDとなる。この場合、処理はステップS107からステップS108に進む。
【0067】
新規のIDが付与される例として、ロストする直前の被写体の位置と再出現した被写体の位置が離れている場合や、交錯後に被写体の向きや姿勢などが変化することで、被写体の矩形のロスト前後での大きさの変化が大きい場合、がある。また、新規のIDが付与される例として、交錯後に被写体の向きや外光の当たり方が変化し、色情報などの特徴量の変化がロスト前後で大きい場合などもある。
【0068】
なお、ステップS107における判断の方法は特定の判断方法に限らない。たとえば、CPU101は、ロストが発生したフレームで検出された被写体の推論結果のIDをRAM102に格納しておく。そしてCPU101は、現在のフレームで検出された被写体の推論結果のIDの中に、RAM102に格納されているIDのいずれとも異なる新規のIDが含まれているか否かを判断するようにしても良い。たとえば、CPU101は、
図4(f)の撮像画像700(ロストが発生したフレーム)で検出された被写体の推論結果のIDをRAM102に格納しておき、
図4(g)の撮像画像700(現在のフレーム)で検出された被写体の推論結果のIDの中に、RAM102に格納されているIDのいずれとも異なる新規のIDが含まれているか否かを判断するようにしても良い。
【0069】
そしてこのような判断の結果、現在のフレームで検出された被写体の推論結果のIDの中に、RAM102に格納されているIDのいずれとも異なる新規のIDが含まれている場合には、処理はステップS108に進む。
【0070】
一方、現在のフレームで検出された被写体の推論結果のIDの中に、RAM102に格納されているIDのいずれとも異なる新規のIDが含まれていない場合には、処理はステップS101に進む。
【0071】
ステップS108では、CPU101は、RAM102に格納されている追尾被写体IDを、新規のIDに更新する。
図4(g)の撮像画像700については新規のID=3が存在するので、この場合は、CPU101は、追尾被写体IDを「3」に更新する。
【0072】
交錯によるロストが起きた場合、ロストが発生した時刻以降に新規で現れたIDは、ロスト前の追尾被写体IDである可能性が高いため、追尾被写体IDを新規のIDに更新することで、撮像画像上に存在する被写体の追尾を再開することができる。
【0073】
なお、CPU101は、ステップS108の処理の前に、新規のIDに対応する被写体の位置に基づいて、追尾被写体IDを新規のIDに更新するか否かを判断するようにしても良い。以下に
図4を用いて一例を説明する。
【0074】
図4(h)に示す如く、CPU101は、ロストした被写体の位置(
図4(f)の位置760)を中心とした半径L2の円770を設定する。ロストした被写体の位置の求め方は特定の求め方に限らない。たとえば、ロスト直前のフレームにおける追尾対象の被写体の位置に、ロスト直前のフレームにおける追尾対象の被写体の移動ベクトルを加算した位置を、ロストした被写体の位置としてとして求めても良い。また、ロストした被写体を隠蔽した被写体の位置を、ロストした被写体の位置として求めても良い。L2は予めパラメータとして記憶装置103に格納されている。そしてCPU101は、新規のIDに対応する被写体の位置が円770内の位置であれば、追尾被写体IDを新規のIDに更新する、と判断し、ステップS108の処理を行う。
【0075】
たとえば、
図4(h)に示す如く、交錯後に人物701が再出現した際に、別の人物703が画角外から入ってくる場合、人物701の推論結果に対してだけでなく、人物703の推論結果に対しても、新規のIDが付与される。
図4(h)では、人物703の推論結果には、新規のID723としてID=4が付与されている。この場合、CPU101は、人物701の位置761と位置760との間の距離D1、人物703の位置762と位置760との間の距離D2、を求める。その結果、人物701の位置761は円770の内側に存在しており(D1<L2)、人物703の位置762は円770の外側に位置している(D2>L2)。よってCPU101は、追尾被写体IDを、人物703の推論結果に付与された新規のID=4ではなく、人物701の推論結果に付与された新規のID=3に更新する。このように、追尾被写体IDを、ロストしたときの被写体の位置から離れた距離で出現した被写体のIDには更新しないので、適切な追尾を行うことができる。
【0076】
なお、ロストしたときの被写体の位置から半径L2の円内の範囲(閾値範囲)に現れた被写体のIDで追尾被写体IDを更新するとしたが、閾値範囲はこの限りではない。たとえば、閾値範囲の形状は円に限らず、矩形であってもよいし、非対称の形状であってもよい。
【0077】
また、L2の値は一定ではなくロストが発生するたびに動的に変化させても良い。例えば、追尾対象の被写体がロストする前の推論結果の矩形のサイズを元に決めてもよい。矩形のサイズがより大きいほど、それに応じてL2の値もより大きくすることで、ロスト発生時も適切な追尾被写体IDの更新が行われるようにしてもよい。
【0078】
また、例えば、追尾対象の被写体がロストする前の追尾対象の被写体の矩形の移動距離から該矩形の移動速度を算出し、その速度に応じてL2の値を決めてもよい。具体的には、速度が速いほど、L2をより大きくすることで、ロスト発生時も適切な追尾被写体IDの更新が行われるようにしてもよい。
【0079】
また、例えば、追尾対象の被写体がロストする前の推論結果の矩形の移動方向を算出し、閾値範囲の形状を変えてもよい。具体的には、追尾被写体がロスト発生前に撮像画像中で右に移動していたとすると、ロスト発生位置に対して右側を、左側に対して大きくした形状の閾値範囲を設定してもよい。
【0080】
このようにすることで、誤った追尾被写体IDの更新を抑制しつつ、適切な追尾被写体IDの更新が行われる。また、例えば、ロスト発生時からの経過時間に応じてL2の値を決めてもよい。ロスト発生時からの経過時間が長いほど、L2の値を大きくすることで、大きな物体と交錯してロストが発生した際も適切な追尾被写体IDの更新が行われるようにしてもよい。このように、追尾被写体がロストした場合においても、新規のIDで追尾被写体IDを更新することで、追尾被写体に対して適切な追尾を継続することができる。
【0081】
また、ステップS108にて新規に現れたIDについて、特徴量がロスト発生前の追尾被写体の特徴量と近い場合は、新規に現れたIDを新たな追尾被写体IDとして追尾被写体IDの更新を行ってもよい。
【0082】
特徴量として特徴ベクトルを用いる場合は、ステップS101で全被写体の特徴ベクトルをRAM102に保存しておく。特徴ベクトルの算出は、ステップS101で述べた方法を用いて行う。ステップS106にて追尾被写体IDが検出されている場合は、追尾被写体IDが振られた被写体の特徴ベクトルをRAM102に保存しておく。ステップS108にて新規に現れたIDについて、当該IDが振られた被写体の特徴ベクトルと、RAM102から読み込んだ追尾被写体の特徴ベクトルと、の差が閾値以内であれば、新規に表れたIDにより追尾被写体IDを更新する。
【0083】
また、特徴量として顔や身体の向きを用いてもよい。ステップS108にて新規に現れたIDが振られたオブジェクトについて、顔や体の向きが、ロスト発生前の追尾被写体の顔や体の向きと近い場合は、新規に現れたIDを新たな追尾被写体IDとして追尾被写体IDの更新を行ってもよい。人物の顔や身体の画像と、当該画像の顔や体の向きを顔や体の向き(全方位を4分割し、正面、右向き、左向き、後ろ向きのいずれか)を教師データとして学習した学習済モデルを用意する。顔や体の向きは、前述のもの以外に、全方位を8分割し、右斜め後ろ向き、などより細かい向きを与えてもよい。また、顔や体の向きを、正面を0°として0°-359°のように与えても良い。より細かい向きを与えるほど、推論結果も細かい向きが結果として得られる。この学習済モデルに人物の顔や身体が写った画像を入力すると、推論結果として、被写体の向きを取得することができる。具体的には、ステップS101であらかじめ全被写体の身体や顔の向きを取得しておき、ステップS106にて追尾被写体IDが検出されている場合は、追尾被写体IDが振られた被写体の向きをRAM102に保存しておく。ステップS108にて新規に現れたIDについて、当該IDが振られた被写体の向きと、RAM102から読み込んだ追尾被写体の向きが同じであれば、新規に表れたIDにより追尾被写体IDを更新する。また、被写体の画像から鼻、口、目、耳、腕などの身体の部位の位置を出力する学習済モデルを用意し、推論の結果得られた、部位の数や位置関係から顔や身体の向きを決定してもよい。例えば、認識された被写体の矩形の中で目と耳がひとつしか認識されず、鼻が左側にある場合は、被写体の向きは左横向きであると決定できる。決め方はこの限りではない。
【0084】
このような処理により、交錯時は、被写体は一方向に移動してすれ違う場合が多いため、顔や身体の向きにより、ロストが発生した際も適切な追尾被写体IDの更新が行われる。前述のように、顔や身体の向きを、より細かい向きや角度を出力するような学習済モデルを用いる場合は、ロストした追尾被写体の向きと新規に現れたIDの被写体の向きが閾値以内であれば、新規に表れたIDにより追尾被写体IDを更新してもよい。例えば、向きを全方位を8分割で出力する場合、ロストした追尾被写体の向きが、右斜め前向きであった場合、新規に現れたIDが振られた被写体の向きが、右向き、右斜め前向き、下向きのいずれかであった場合は、新規に表れたIDにより追尾被写体IDを更新するとしてもよい。例えば、向きを全方位を0°-359°で出力する場合、ロストした追尾被写体の向きが、35°であった場合、新規に現れたIDが振られた被写体の向きが、25°から45°、すなわち被写体の向き±10°の範囲内である場合は、新規に表れたIDにより追尾被写体IDを更新するとしてもよい。このようにIDを更新する条件に幅を持たせることで、ロスト後の追尾被写体のわずかな向きの変更にもロバストになる。
【0085】
また、特徴量として、顔や体の向き以外にも、被写体の姿勢や体形といった属性を用いてもよい。被写体の姿勢や体形といった属性を学習した学習済モデルを用意し、ロスト発生前の追尾被写体の属性と、ステップS108にて新規に現れたIDが振られたオブジェクトの属性が近い場合は、新規に現れたIDを新たな追尾被写体IDとして追尾被写体IDの更新を行ってもよい。具体的には、姿勢であれば、撮影画像と胴体部分の傾き角度を教師データとして学習させ、撮影画像から胴体の傾き角度を出力するような学習済モデルを用意する。体形であれば、撮影画像と豊満具合を数値化した数値を教師データとして学習させ、撮影画像から豊満具合を出力するような学習済モデルを用意する。このような学習済モデルを用いると、ロスト前後で姿勢が近いオブジェクト、体形が近いオブジェクトが分かる。このような処理を行うと、追尾対象被写体のロスト発生前後の特徴を加味し、ロストが発生した際も適切な追尾被写体IDの更新が行われる。
【0086】
また、特徴量として、検出された矩形のサイズや縦横比を用いてもよい。ステップS101で認識された被写体の矩形の面積や、縦横比がロスト発生前の追尾被写体と、ステップS108にて新規に現れたIDが振られたオブジェクトの矩形の面積や、縦横比が近い場合は、新規に現れたIDを新たな追尾被写体IDとして追尾被写体IDの更新を行ってもよい。このような処理を行うと、追尾対象被写体のロスト発生前後の大きさに関する特徴を加味し、ロストが発生した際も適切な追尾被写体IDの更新が行われる。
【0087】
また、特徴量として、被写体の色を用いてもよい。ステップS108にて新規に現れたIDについて、身体の色が、ロスト発生前の追尾被写体の身体の色と近い場合は、新規に現れたIDを新たな追尾被写体IDとして追尾被写体IDの更新を行ってもよい。身体の色は推論部110が出力した矩形の中の特定の割合の位置の画素値や、特定の領域の画素値の平均を算出することで得られる。具体的には、ステップS101であらかじめ全被写体の身体の色を取得しておき、ステップS106にて追尾被写体IDが検出されている場合は、追尾被写体IDが振られた被写体の色をRAM102に保存しておく。ステップS108にて新規に現れたIDについて、当該IDが振られた被写体の色と、RAM102から読み込んだ追尾被写体の色と、の差が閾値以内であれば、新規に表れたIDにより追尾被写体IDを更新する。身体の色の取得は、推論部110が出力した矩形の中全体の平均をとっても良いし、例えば、上半身は同じユニフォームを着ているような場合は矩形の下方の領域の画素値の平均を取るなどしてもよく、被写体の肌や服の差が顕著に表れる領域の色を取得できるようにすればよい。また、身体の色の情報として矩形の全体や、特定の領域のヒストグラムを得てもよい。その場合は、新規に現れたIDの被写体のヒストグラムと、ロスト発生前の追尾被写体のヒストグラムをピアソンの相関関数やカイ二乗検定などいった方法で比較し、類似度が高い場合はIDの更新を行う。このような処理により、追尾対象被写体の身体や服の色の特徴を加味し、ロストが発生した際も適切な追尾被写体IDの更新が行われる。また、これらの特徴量を組み合わせてIDの更新を行ってもよい。
【0088】
ステップS109では、CPU101は、ステップS101でRAM102に格納した「追尾被写体IDの推論結果(追尾対象の被写体の位置)」が、前回のステップS101でRAM102に格納した「追尾被写体IDの推論結果(追尾対象の被写体の位置)」と一致しているか否かを判断する。2つの位置が一致している、との判断は、2つの位置が同一の位置である、との判断に限らず、2つの位置の差が閾値以内である、との判断を含んでも良い。
【0089】
このような判断の結果、一致していると判断した場合には、現在のフレームについての
図3(a)のフローチャートに従った処理は終了し、一致していると判断しなかった場合には、処理はステップS110に進む。
【0090】
ステップS110では、CPU101は、ステップS101でRAM102に格納した追尾対象の被写体の位置と、前回のステップS101でRAM102に格納した追尾対象の被写体の位置と、の差分を求める。そしてCPU101は、該求めた差分を用いて、撮像部111が追尾対象の被写体を追尾して撮像できるようなパン方向およびチルト方向の角速度(ベクトル)を求める。例えば、CPU101は、水平方向の差分が大きいほど、パン方向の角速度がより大きくなるように算出すればよく、垂直方向の差分が大きいほど、チルト方向の角速度がより大きくなるように算出すればよい。
【0091】
ステップS111では、CPU101は、ステップS110で求めたベクトルを用いて、追尾対象の被写体への方向へ所望の速度でパン・チルトするための駆動パラメータを求める。具体的には、CPU101は、駆動部109に含まれるパン方向/チルト方向のそれぞれのモータ(不図示)を制御するための駆動パラメータを求める。
【0092】
ステップS112では、CPU101は、ステップS111で求めた駆動パラメータに基づいて、駆動I/F108を介して駆動部109を駆動制御し、駆動部109は該駆動制御により回動する。これにより、撮像部111の撮像方向の変更、即ちパン・チルト動作を行うことができる。
【0093】
なお、CPU101は、撮像部111の画角範囲内にできるだけ大きく追尾対象の被写体が含まれるように、撮像部111のズーム位置を制御するためのパラメータを求め、該パラメータに基づいて駆動部109を駆動制御するようにしても良い。
【0094】
次に、コントローラ200の動作について、
図3(b)のフローチャートに従って説明する。ステップS201では、CPU201は、カメラ100から送信された送信情報を、ネットワークI/F204を介して受信し、該受信した送信情報を、RAM202に格納する。
【0095】
ステップS202では、CPU201は、ステップS201でRAM202に格納した送信情報に含まれている撮像画像と推論結果とを表示部205に表示させる。表示部205における撮像画像および推論結果の表示例を
図5(a)に示す。以降、表示部205に表示される表示画面の表示制御や、該表示画面に対するユーザ操作に応じて行われる処理はいずれもCPU201が行うものとする。
【0096】
図5(a)に示す如く、表示部205の表示画面に表示される選択画面800には、送信情報に含まれる撮像画像900が表示される。そして該撮像画像900上には、送信情報に含まれる人物701に対応する推論結果に基づいて矩形910が描画されると共に、送信情報に含まれる人物702に対応する推論結果に基づいて矩形911が描画される。また、撮像画像900上には、人物701に対応する推論結果のID920である「1」と、人物702に対応する推論結果のID921である「2」と、が描画される。
【0097】
また、選択画面800の下部には、検出中IDとして、上記のID920の値およびID921の値が表示されている。コントローラ200のユーザは、表示部205に表示された選択画面800を見ることで、カメラ100による撮像画像や該撮像画像に対する推論の結果を確認することができる。
【0098】
次に、ステップS203では、CPU201は、ユーザがユーザ入力I/F206を操作して選択した追尾対象の被写体のIDを追尾被写体IDとして取得し、該取得した追尾被写体IDをRAM202に格納する。追尾被写体IDを取得するための構成については特定の構成に限らない。以下に、追尾被写体IDを取得するための構成の一例について説明する。
【0099】
ユーザは、
図5(a)の選択画面800に表示された矩形910および矩形911のうち、追尾対象の被写体として選択したい被写体の矩形を、ユーザ入力I/F206を操作して指定する。たとえば、ユーザは、ジョイスティックを左右に倒したり、左右ボタン押下したり、タッチパネル画面上で所望の矩形をタッチしたりすることで、所望の矩形を選択することができる。矩形の選択方法は特定の指定方法に限らない。
【0100】
ユーザがユーザ入力I/F206を操作して矩形910を選択すると、表示部205の表示画面800には
図5(b)の選択画面800が表示される。
図5(b)の選択画面800では、矩形910が選択されたことをユーザに視認させるべく、矩形910と矩形911とを互いに異なる表示形態でもって表示させる。このとき、矩形910が選択されているので、選択画面800の下部には、選択中IDとして、矩形910に対応する人物701のID920である「1」が表示されている。
【0101】
そして、ユーザがユーザ入力I/F206を操作して、人物701を追尾対象の被写体として決定するための操作を行うと、表示部205の表示画面800には
図5(c)の選択画面800が表示される。
図5(c)の選択画面800では、矩形910が決定されたことをユーザに視認させるべく、矩形910と矩形911とを互いに異なる表示形態でもって表示させる。
【0102】
たとえば、ユーザは、ジョイスティックを押し込んだり、決定ボタンを押下したり、タッチパネル画面上で所望の矩形を2度タッチしたりすることで、所望の矩形を決定することができる。矩形の決定方法は特定の指定方法に限らない。
【0103】
なお、
図5に示した画面は、ユーザに追尾対象の被写体の選択状態を視認させるための画面の一例に過ぎず、また、画面に対する操作についても上記の操作は一例に過ぎない。たとえば、矩形ではなくID910やID921を選択しても良いし、追尾被写体IDをユーザがユーザ入力I/F206を操作して直接入力するようにしても良い。
【0104】
次に、ステップS204では、CPU201は、ステップS203でRAM202に格納された追尾被写体IDを、ネットワークI/F204を介してカメラ100に対して送信する。
【0105】
このように、本実施形態によれば、撮像画像から追尾被写体IDと同じIDの被写体が検出されなくても、該撮像画像から検出した被写体のIDに、ロスト前の撮像画像から検出された被写体のIDとは異なる新規のIDが含まれていた場合は、該新規のIDを追尾被写体IDとして更新する。これにより、ロストが発生した後も、追尾対象の被写体を追尾して撮像することができる。
【0106】
[第2の実施形態]
以下では、第1の実施形態との差分について説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとする。本実施形態では、カメラ100は撮像画像をコントローラ200に送信し、コントローラ200は、カメラ100に追尾対象の被写体の追尾を行わせるための制御コマンドを生成し、該生成した制御コマンドをカメラ100に送信する。そしてカメラ100は該制御コマンドに従って追尾対象の被写体の追尾を行って該追尾対象の被写体の撮像を行う。
【0107】
本実施形態では、駆動部109は、コントローラ200から送信された制御コマンドに従って動作する。また、推論部210は、カメラ100から送信された撮像画像を用いて推論部110と同様の動作を行って、該撮像画像に含まれる被写体の推論結果を取得する。
【0108】
次に、画像処理装置として動作するカメラ100の動作について、
図6(a)のフローチャートに従って説明する。ステップS301では、上記のステップS101と同様、画像処理部106はCPU101からの指示に従って撮像画像を生成し、該生成した撮像画像をRAM102に格納する。そして、CPU101は、RAM102に格納された撮像画像を、ネットワークI/F105を介してコントローラ200に対して送信する。
【0109】
ステップS302では、CPU101は、コントローラ200から送信された制御コマンドをネットワークI/F105を介して受信し、該受信した制御コマンドをRAM102に格納する。
【0110】
ステップS303では、CPU101は、ステップS302でRAM102に格納した制御コマンドから、パン方向およびチルト方向それぞれに対する操作方向と制御量を示す値を読み出す。
【0111】
ステップS304では、CPU101は、ステップS303で読み出した値を元に、所望の方向へ所望の速度でパン・チルトするための駆動パラメータを求める。CPU101は、制御コマンドに含まれる操作方向と制御量を元に予め記憶装置103に格納されている変換テーブルを参照して駆動パラメータに変換しても良い。
【0112】
ステップS305では、CPU101は、ステップS304で求めた駆動パラメータに基づいて、駆動I/F108を介して駆動部109を駆動制御し、駆動部109は該駆動制御により回動する。これにより、撮像部111の撮像方向の変更、即ちパン・チルト動作を行うことができる。
【0113】
次に、コントローラ200の動作について、
図6(b)のフローチャートに従って説明する。
図6(b)のフローチャートに従った処理は、1フレーム分の撮像画像についての処理であり、実際には、コントローラ200は、
図6(b)のフローチャートに従った処理を、各フレームの撮像画像について行う。
【0114】
ステップS401では、CPU201は、カメラ100から送信された撮像画像を、ネットワークI/F204を受信し、該受信した撮像画像をRAM202に格納する。
【0115】
ステップS402では、CPU201は、ステップS401でRAM202に格納した撮像画像を推論部210に入力する。推論部210は、CPU201からの指示に従って上記の推論部110と同様の処理を行うことで、該撮像画像に含まれている被写体の推論結果を生成し、該生成した推論結果をRAM202に格納する。さらにCPU201は、第1の実施形態と同様、被写体の推論結果に対して、該被写体に固有のIDを付与する。
【0116】
ステップS403では、CPU201は、ステップS401でRAM202に格納した撮像画像と、ステップS402でRAM202に格納した推論結果(該推論結果のIDを含む)と、を表示部205に表示させる。表示内容については第1の実施形態と同様である。
【0117】
ステップS404では、CPU201は、ユーザによる追尾対象の被写体の選択操作を受け付ける。ユーザによる追尾対象の被写体の選択操作については第1の実施形態と同様である。
【0118】
ステップS405では、CPU201は、RAM202に格納されている追尾被写体IDを変更するようなユーザ操作が行われたか否かを判断する。たとえば、CPU201は、ユーザによる選択操作によって追尾対象の被写体を初めて選択する操作、もしくは従前の追尾対象の被写体とは異なる追尾対象の被写体を選択する操作、が行われたか否かを判断する。
【0119】
この判断の結果、RAM202に格納されている追尾被写体IDを変更するようなユーザ操作が行われた場合には、処理はステップS407に進む。一方、RAM202に格納されている追尾被写体IDを変更するようなユーザ操作が行われなかった場合には、処理はステップS406に進む。
【0120】
ステップS406では、CPU201は、RAM202に決定済みの追尾被写体IDが格納されているか否か(追尾被写体IDは決定済みか否か)を、上記のステップS104と同様の方法で判断する。この判断の結果、RAM202に決定済みの追尾被写体IDが格納されている(追尾被写体IDは決定済み)場合には、処理はステップS408に進む。一方、RAM202に決定済みの追尾被写体IDが格納されていない(追尾被写体IDは決定済みでない)場合には、処理はステップS401に進む。ステップS407では、CPU201は、ユーザ操作に応じて追尾対象の被写体として選択された被写体のIDを追尾被写体IDとしてRAM202に格納する。
【0121】
ステップS408では、CPU201は、上記のステップS106と同様にして、追尾被写体IDと同じIDに対応する被写体が現在のフレームの撮像画像から検出されているか否かを判断する。
【0122】
この判断の結果、追尾被写体IDと同じIDに対応する被写体が検出されている場合には、処理はステップS411に進む。一方、追尾被写体IDと同じIDに対応する被写体は検出されていない場合、第1の実施形態と同様、CPU201は追尾対象の被写体のロストが発生したと判断し、現在の時刻TをRAM202に格納し、そして処理はステップS409に進む。
【0123】
ステップS409ではCPU201はステップS107と同様に、現在のフレームから検出された被写体の推論結果のIDの中に、時刻T以前のフレームから検出された被写体の推論結果のIDのいずれとも異なる新規のIDが含まれているか否かを判断する。
【0124】
この判断の結果、現在のフレームから検出された被写体の推論結果のIDの中に新規のIDが含まれている場合には、処理はステップS410に進む。一方、現在のフレームから検出された被写体の推論結果のIDの中に新規のIDは含まれていない場合には、処理はステップS401に進む。
【0125】
ステップS410では、CPU201は、RAM202に格納されている追尾被写体IDを、新規のIDに更新する。ステップS411では、CPU201は、上記のステップS109と同様、ステップS402でRAM202に格納した「追尾被写体IDの推論結果(追尾対象の被写体の位置)」が、前回のステップS402でRAM202に格納した「追尾被写体IDの推論結果(追尾対象の被写体の位置)」と一致しているか否かを判断する。
【0126】
このような判断の結果、一致していると判断した場合には、現在のフレームについての
図6(a)のフローチャートに従った処理は終了し、一致していると判断しなかった場合には、処理はステップS412に進む。
【0127】
ステップS412では、CPU201は、上記のステップS110と同様、ステップS402でRAM202に格納した追尾対象の被写体の位置と、前回のステップS402でRAM202に格納した追尾対象の被写体の位置と、の差分を求める。そしてCPU201は、該求めた差分を用いて、撮像部111が追尾対象の被写体を追尾して撮像できるようなパン方向およびチルト方向の角速度(ベクトル)を求める。
【0128】
ステップS413では、CPU201は、ステップS412で求めたベクトルのデータを、カメラ100を制御する方法として予め取り決めているプロトコルに則って制御コマンドに変換し、該変換した制御コマンドをRAM202に格納する。
【0129】
ステップS414では、CPU201は、ステップS413でRAM202に格納した制御コマンドを、ネットワークI/F204を介してカメラ100に対して送信する。
【0130】
このように、本実施形態では、カメラ100に追尾対象の被写体の追尾を行わせるための制御コマンドを生成し、該生成した制御コマンドをカメラ100に送信する機能をコントローラ200に設けた場合も、第1の実施形態と同様の効果が得られる
上記の各実施形態で使用した数値、処理タイミング、処理順、処理の主体、データ(情報)の取得方法/送信先/送信元/格納場所などは、具体的な説明を行うために一例として挙げたもので、このような一例に限定することを意図したものではない。
【0131】
また、以上説明した各実施形態の一部若しくは全部を適宜組み合わせて使用しても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に使用しても構わない。
【0132】
(その他の実施形態)
本開示は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0133】
本明細書の発明は、以下の画像処理装置、画像処理方法、コンピュータプログラムを含む。
(項目1)
フレームから被写体を検出する検出手段と、
第1フレームから追尾対象の被写体の識別情報と同じ識別情報の被写体が検出されなかった場合、該第1フレームから検出された被写体の識別情報の中に、該追尾対象の被写体が検出されなかったタイミング以前の第2フレームから検出された被写体の識別情報とは異なる新規の識別情報が含まれていれば、該追尾対象の被写体の識別情報を該新規の識別情報に更新する更新手段と
を備えることを特徴とする画像処理装置。
(項目2)
前記更新手段はさらに、前記新規の識別情報に対応する被写体の位置が範囲内に位置しているか否かに基づいて、前記追尾対象の被写体の識別情報を前記新規の識別情報に更新するか否かを判断することを特徴とする項目1に記載の画像処理装置。
(項目3)
前記更新手段は、前記タイミングの前の前記追尾対象の被写体のサイズに応じて前記範囲のサイズを変更することを特徴とする項目2に記載の画像処理装置。
(項目4)
前記更新手段は、前記タイミングの前の前記追尾対象の被写体の移動速度に応じて前記範囲のサイズを変更することを特徴とする項目2に記載の画像処理装置。
(項目5)
前記更新手段は、前記タイミングの前の前記追尾対象の移動方向に基づいて前記範囲の形状を変更することを特徴とする項目2に記載の画像処理装置。
(項目6)
前記更新手段は、前記タイミングからの経過時間に応じて前記範囲のサイズを変更することを特徴とする項目2に記載の画像処理装置。
(項目7)
さらに、
撮像手段を備え、
前記検出手段は、前記撮像手段により撮像されたフレームから被写体を検出することを特徴とする項目1ないし6のいずれか1項目に記載の画像処理装置。
(項目8)
さらに、
前記撮像手段により撮像されたフレームから検出された被写体のうち、追尾対象の被写体の識別情報と同じ識別情報の被写体を追尾して撮像するよう前記撮像手段を制御する手段を備えることを特徴とする項目7に記載の画像処理装置。
(項目9)
前記検出手段は、前記画像処理装置と通信が可能な外部の撮像手段から受信したフレームから被写体を検出することを特徴とする項目1ないし6のいずれか1項目に記載の画像処理装置。
(項目10)
さらに、
追尾対象の被写体の識別情報と同じ識別情報の被写体を追尾して撮像するよう前記撮像手段を制御するための制御コマンドを生成し、該制御コマンドを前記撮像手段に対して送信する手段を備えることを特徴とする項目9に記載の画像処理装置。
(項目11)
さらに、
前記追尾対象の被写体が検出されなくなったタイミングの以降に、新たな識別情報を付与した被写体の、検出された被写体の特徴量が、前記追尾対象の被写体が検出されなくなる前に、前記追尾対象の被写体の特徴量と近い場合に、
前記追尾対象の被写体が検出されなくなったタイミングの以降に新たな識別情報を付与した被写体を、追尾対象として選択する手段を備えることを特徴とする項目1に記載の画像処理装置。
(項目12)
前記特徴量は、前記被写体の向き、体形、姿勢、大きさ、縦横比のうち、すくなくとも一つを含むことを特徴とする項目11に記載の画像処理装置。
(項目13)
前記特徴量は、前記被写体の色、ヒストグラムのうちすくなくとも1つを含むことを特徴とする項目11に記載の画像処理装置。
(項目14)
画像処理装置が行う画像処理方法であって、
前記画像処理装置の検出手段が、フレームから被写体を検出する検出工程と、
前記画像処理装置の更新手段が、第1フレームから追尾対象の被写体の識別情報と同じ識別情報の被写体が検出されなかった場合、該第1フレームから検出された被写体の識別情報の中に、該追尾対象の被写体が検出されなかったタイミング以前の第2フレームから検出された被写体の識別情報とは異なる新規の識別情報が含まれていれば、該追尾対象の被写体の識別情報を該新規の識別情報に更新する更新工程と
を備えることを特徴とする画像処理方法。
(項目15)
コンピュータを、項目1ないし13のいずれか1項目に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【0134】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0135】
100:カメラ 101:CPU 102:RAM 103:記憶装置 105:ネットワークI/F 106:画像処理部 107:画像センサ 108:駆動I/F 109:駆動部 110:推論部 111:システムバス 200:コントローラ 201:CPU 202:RAM 203:記憶装置 204:ネットワークI/F 205:表示部 206:ユーザ入力I/F 207:システムバス 210:推論部
【手続補正書】
【提出日】2024-10-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
フレームから被写体を検出する検出手段と、
第1フレームから追尾対象の被写体の識別情報と同じ識別情報の被写体が検出されなかった場合、該第1フレームから検出された被写体の識別情報の中に、該追尾対象の被写体が検出されなかったタイミング以前の第2フレームから検出された被写体の識別情報とは異なる新規の識別情報が含まれていれば、該追尾対象の被写体の識別情報を該新規の識別情報に更新する更新手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記更新手段はさらに、前記新規の識別情報に対応する被写体の位置が範囲内に位置しているか否かに基づいて、前記追尾対象の被写体の識別情報を前記新規の識別情報に更新するか否かを判断することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記更新手段は、前記タイミングの前の前記追尾対象の被写体のサイズに応じて前記範囲のサイズを変更することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記更新手段は、前記タイミングの前の前記追尾対象の被写体の移動速度に応じて前記範囲のサイズを変更することを特徴とする請求項2に記載の画像処理装置。
【請求項5】
前記更新手段は、前記タイミングの前の前記追尾対象の移動方向に基づいて前記範囲の形状を変更することを特徴とする請求項2に記載の画像処理装置。
【請求項6】
前記更新手段は、前記タイミングからの経過時間に応じて前記範囲のサイズを変更することを特徴とする請求項2に記載の画像処理装置。
【請求項7】
さらに、
撮像手段を備え、
前記検出手段は、前記撮像手段により撮像されたフレームから被写体を検出することを特徴とする請求項1に記載の画像処理装置。
【請求項8】
さらに、
前記撮像手段により撮像されたフレームから検出された被写体のうち、追尾対象の被写体の識別情報と同じ識別情報の被写体を追尾して撮像するよう前記撮像手段を制御する手段を備えることを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記検出手段は、前記画像処理装置と通信が可能な外部の撮像手段から受信したフレームから被写体を検出することを特徴とする請求項1に記載の画像処理装置。
【請求項10】
さらに、
追尾対象の被写体の識別情報と同じ識別情報の被写体を追尾して撮像するよう前記撮像手段を制御するための制御コマンドを生成し、該制御コマンドを前記撮像手段に対して送信する手段を備えることを特徴とする請求項9に記載の画像処理装置。
【請求項11】
さらに、
前記追尾対象の被写体が検出されなくなったタイミングの以降に、新たな識別情報を付与した被写体の、検出された被写体の特徴量が、前記追尾対象の被写体が検出されなくなる前に、前記追尾対象の被写体の特徴量と近い場合に、
前記追尾対象の被写体が検出されなくなったタイミングの以降に新たな識別情報を付与した被写体を、追尾対象として選択する手段を備えることを特徴とする請求項1に記載の画像処理装置。
【請求項12】
前記特徴量は、前記被写体の向き、体形、姿勢、大きさ、縦横比のうち、すくなくとも一つを含むことを特徴とする請求項11に記載の画像処理装置。
【請求項13】
前記特徴量は、前記被写体の色、ヒストグラムのうちすくなくとも1つを含むことを特徴とする請求項11に記載の画像処理装置。
【請求項14】
前記更新手段は、
前記第2フレームから検出された被写体が、前記第2フレーム以前のフレームにおいて検出された被写体と異なる場合、前記第2フレームから検出された被写体に対して新規の識別情報を付与する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項15】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の検出手段が、フレームから被写体を検出する検出工程と、
前記画像処理装置の更新手段が、第1フレームから追尾対象の被写体の識別情報と同じ識別情報の被写体が検出されなかった場合、該第1フレームから検出された被写体の識別情報の中に、該追尾対象の被写体が検出されなかったタイミング以前の第2フレームから検出された被写体の識別情報とは異なる新規の識別情報が含まれていれば、該追尾対象の被写体の識別情報を該新規の識別情報に更新する更新工程と
を備えることを特徴とする画像処理方法。
【請求項16】
コンピュータを、請求項1ないし14のいずれか1項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。