IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ カシオ計算機株式会社の特許一覧

<>
  • 特開-検出方法、検出装置及びプログラム 図1
  • 特開-検出方法、検出装置及びプログラム 図2
  • 特開-検出方法、検出装置及びプログラム 図3
  • 特開-検出方法、検出装置及びプログラム 図4
  • 特開-検出方法、検出装置及びプログラム 図5
  • 特開-検出方法、検出装置及びプログラム 図6
  • 特開-検出方法、検出装置及びプログラム 図7A
  • 特開-検出方法、検出装置及びプログラム 図7B
  • 特開-検出方法、検出装置及びプログラム 図8
  • 特開-検出方法、検出装置及びプログラム 図9
  • 特開-検出方法、検出装置及びプログラム 図10
  • 特開-検出方法、検出装置及びプログラム 図11
  • 特開-検出方法、検出装置及びプログラム 図12A
  • 特開-検出方法、検出装置及びプログラム 図12B
  • 特開-検出方法、検出装置及びプログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024032041
(43)【公開日】2024-03-12
(54)【発明の名称】検出方法、検出装置及びプログラム
(51)【国際特許分類】
   G06T 7/00 20170101AFI20240305BHJP
【FI】
G06T7/00 660Z
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022135470
(22)【出願日】2022-08-29
(71)【出願人】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】110001254
【氏名又は名称】弁理士法人光陽国際特許事務所
(72)【発明者】
【氏名】井上 聖
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA02
5L096AA06
5L096AA09
5L096BA08
5L096CA04
5L096DA02
5L096EA43
5L096FA06
5L096FA59
5L096FA69
(57)【要約】
【課題】より簡易に対象における突出部を検出することができる検出方法、検出装置及びプログラムを提供する。
【解決手段】コンピュータが実行する検出方法は、対象を撮影して得られた撮影画像において、対象に対応する対象領域を抽出し、対象領域の中から、対象の突出部を代表する代表点の候補となる候補点を抽出し、領域設定規則に従って、候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定し、設定された仮想図形領域と、対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、候補点を、代表点として検出する。
【選択図】図12A
【特許請求の範囲】
【請求項1】
コンピュータが実行する検出方法であって、
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出し、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出し、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定し、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する、
検出方法。
【請求項2】
前記重複条件は、前記仮想図形領域の面積に対する、前記仮想図形領域のうち前記対象領域と重複する重複領域の面積の割合が基準値以下である場合に満たされる面積条件である、
請求項1に記載の検出方法。
【請求項3】
前記対象領域の中から、複数の前記突出部に対応する複数の前記候補点を抽出し、
前記複数の候補点の各々に対して前記仮想図形領域を設定し、
前記複数の候補点のうち、対応する前記仮想図形領域と、前記対象領域とが前記重複条件を満たしている候補点を前記代表点として検出する、
請求項1に記載の検出方法。
【請求項4】
前記重複条件は、前記仮想図形領域の面積に対する、前記仮想図形領域のうち前記対象領域と重複する重複領域の面積の割合が基準値以下である場合に満たされる面積条件であり、
前記複数の候補点のうち、対応する前記重複領域の面積が前記面積条件を満たしている候補点が複数ある場合には、前記仮想図形領域の面積に対する前記重複領域の面積の割合が小さい順に、規定数以下の候補点を前記代表点として検出する、
請求項3に記載の検出方法。
【請求項5】
前記対象が手であり、前記突出部が指である場合には、前記規定数は5以下に定められる、
請求項4に記載の検出方法。
【請求項6】
前記領域設定規則に従って、前記仮想図形の輪郭線が前記対象領域の重心と前記候補点とを通るように前記仮想図形領域を設定する、
請求項1に記載の検出方法。
【請求項7】
前記領域設定規則に従って設定される仮想図形領域に係る前記仮想図形は、前記対象領域の重心と、前記候補点とを結ぶ線分を直径とする円である、
請求項1に記載の検出方法。
【請求項8】
前記代表点は、前記対象領域の輪郭線上にある複数の輪郭点のいずれかであり、
前記候補点を、前記複数の輪郭点の中から抽出する、
請求項1に記載の検出方法。
【請求項9】
前記代表点は、前記対象領域における前記突出部の先端に対応する点である、
請求項8に記載の検出方法。
【請求項10】
前記対象領域を包含する最小の凸多角形の頂点である複数の凸包点の中から前記候補点を抽出する、
請求項8に記載の検出方法。
【請求項11】
前記複数の凸包点を代表する複数の代表凸包点のうち、突出形状の先端に位置する場合に満たされる先端条件を満たす代表凸包点を、前記候補点として抽出する、請求項10に記載の検出方法。
【請求項12】
前記複数の代表凸包点の各々について、
前記代表凸包点と、当該代表凸包点を挟む1組の前記輪郭点のうち互いに異なる一方と、をそれぞれ結ぶ2つの仮想線分がなす角度を導出し、
前記代表凸包点からの平均距離が互いに異なる少なくとも2組の前記輪郭点についてそれぞれ前記仮想線分がなす角度を導出し、
前記代表凸包点からの平均距離が長い前記輪郭点の組ほど前記仮想線分がなす角度が小さい場合に、前記代表凸包点が前記先端条件を満たすと判別し、
前記複数の代表凸包点のうち前記先端条件を満たすと判別された代表凸包点を、前記候補点として抽出する、
請求項11に記載の検出方法。
【請求項13】
前記複数の凸包点が、或る凸包点から基準距離の範囲内に分布する凸包点群を含む場合には、前記凸包点群のうち前記対象領域の重心から最も遠い凸包点を前記複数の代表凸包点の1つとして抽出し、
前記複数の凸包点のうちの或る前記凸包点から前記基準距離の範囲内に他の凸包点がない場合には、前記或る凸包点を前記複数の代表凸包点の1つとして抽出する、
請求項11又は12に記載の検出方法。
【請求項14】
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出し、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出し、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定し、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する、
処理部を備える検出装置。
【請求項15】
コンピュータに、
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出する処理、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出する処理、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定する処理、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する処理、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検出方法、検出装置及びプログラムに関する。
【背景技術】
【0002】
従来、操作者のジェスチャーを検出し、検出されたジェスチャーに応じて機器の動作を制御する技術がある。この技術では、操作者を撮影して得られた撮影画像において、操作者の体のうちジェスチャーを行う特定の一部(例えば、手)を、対象として検出する。さらに、対象における突出部(例えば、手における指)を検出し、突出部の向きや突出部の先端(例えば、指先)の位置などをジェスチャーの要素として検出する技術も提案されている。突出部を検出する方法として、特許文献1には、手の輪郭線上の各点について当該各点における輪郭線の曲率を算出し、算出した曲率が所定値よりも小さい点を指の先端として検出する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2017-107453号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記の従来技術では、輪郭線上の各点において輪郭線の曲率を算出するために膨大な処理が必要になる。また、撮影画像の解像度が低い場合や、対象までの距離が遠い場合には、撮影画像において突出部に相当する画素数が少なくなるため、突出部を正確に検出することが困難となる。
このように、上記の従来技術には、対象における突出部を簡易かつ正確に検出することが困難であるという課題がある。
【0005】
この発明の目的は、より簡易かつ正確に対象における突出部を検出することができる検出方法、検出装置及びプログラムを提供することにある。
【課題を解決するための手段】
【0006】
上記課題を解決するため、本発明に係る検出方法は、
コンピュータが実行する検出方法であって、
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出し、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出し、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定し、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する。
【0007】
上記課題を解決するため、本発明に係る検出装置は、
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出し、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出し、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定し、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する、
処理部を備える。
【0008】
上記課題を解決するため、本発明に係るプログラムは、
コンピュータに、
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出する処理、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出する処理、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定する処理、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する処理、
を実行させる。
【発明の効果】
【0009】
本発明によれば、より簡易かつ正確に対象における突出部を検出することができる。
【図面の簡単な説明】
【0010】
図1】情報処理システムの構成を示す模式図である。
図2】検出装置の機能構成を示すブロック図である。
図3】機器制御処理の制御手順を示すフローチャートである。
図4】指検出処理の制御手順を示すフローチャートである。
図5】マスク画像の例を示す図である。
図6】指領域における複数の凸包点から代表凸包点を抽出する方法を説明する図である。
図7A】抽出された代表凸包点を示す図である。
図7B】抽出された候補点を示す図である。
図8】先端条件判別処理の制御手順を示すフローチャートである。
図9】判別用輪郭点、及び仮想線分の例を示す図である。
図10】角度θa~θcを示す図である。
図11】面積条件判別処理の制御手順を示すフローチャートである。
図12A】面積条件の判別方法を説明する図である。
図12B】抽出された代表点を示す図である。
図13】指を広げた状態の手が撮影された場合の代表点の検出結果を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態を図面に基づいて説明する。
【0012】
<情報処理システムの概要>
図1は、本実施形態の情報処理システム1の構成を示す模式図である。
情報処理システム1は、検出装置10と、撮影装置20と、プロジェクタ30とを備える。検出装置10は、無線又は有線により撮影装置20及びプロジェクタ30と通信接続されており、撮影装置20及びプロジェクタ30との間で、制御信号や画像データ等のデータの送受信を行うことが可能となっている。
【0013】
情報処理システム1の検出装置10は、操作者80(被写体)が手81(対象)によって行うジェスチャーを検出し、検出したジェスチャーに応じてプロジェクタ30の動作(投影画像Imの投影動作や、各種設定を変更する動作等)を制御する情報処理装置である。詳しくは、撮影装置20は、撮影装置20の正面に位置する操作者80及び操作者80の手81を撮影して、撮影画像Imの画像データを検出装置10に送信する。検出装置10は、撮影装置20から受信した画像データを解析して、操作者80の手81の指82(突出部)を検出し、操作者80が指82によって所定のジェスチャーを行ったか否かを判別する。検出装置10は、操作者80が、指82によって所定のジェスチャーを行ったと判別すると、制御信号をプロジェクタ30に送信し、検出したジェスチャーに応じた動作を行うようにプロジェクタ30を制御する。これにより、例えば、操作者80が、投影画像Imに向かって右方向に一本の指82(例えば、人差し指)を向けるジェスチャーを行うことで、プロジェクタ30が投影している投影画像Imを次の投影画像Imに切り替え、一本の指82を左方向に向けるジェスチャーを行うことで、投影画像Imを1つ前の投影画像Imに切り替える、といった直感的な操作が可能となる。
【0014】
<情報処理システムの構成>
図2は、検出装置10の機能構成を示すブロック図である。
検出装置10は、CPU11(Central Processing Unit)と、RAM12(Random Access Memory)と、記憶部13と、操作部14と、表示部15と、通信部16と、バス17などを備える。検出装置10の各部は、バス17を介して接続されている。検出装置10は、本実施形態ではノートPCであるが、これに限られず、例えば据置型のPC、スマートフォン、又はタブレット型端末などであってもよい。
【0015】
CPU11は、記憶部13に記憶されているプログラム131を読み出して実行し、各種演算処理を行うことで、検出装置10の動作を制御するプロセッサである。CPU11は、「処理部」に相当する。なお、検出装置10は、複数のプロセッサ(複数のCPU等)を有していてもよく、本実施形態のCPU11が実行する複数の処理を、当該複数のプロセッサが実行してもよい。この場合には、複数のプロセッサが「処理部」に相当する。また、この場合において、複数のプロセッサが共通の処理に関与してもよいし、あるいは、複数のプロセッサが独立に異なる処理を並列に実行してもよい。
【0016】
RAM12は、CPU11に作業用のメモリ空間を提供し、一時データを記憶する。
【0017】
記憶部13は、コンピュータとしてのCPU11により読み取り可能な非一時的な記録媒体であり、プログラム131及び各種データを記憶する。記憶部13は、例えばHDD(Hard Disk Drive)、SSD(Solid State Drive)等の不揮発性メモリを含む。プログラム131は、コンピュータが読み取り可能なプログラムコードの形態で記憶部13に格納されている。記憶部13に記憶されるデータとしては、撮影装置20から受信したカラー画像及び深度画像に係る撮影画像データ132、及び後述する指検出処理で生成されるマスク画像40に係るマスク画像データ133などがある。
【0018】
操作部14は、表示部15の表示画面に重ねられて設けられたタッチパネル、物理ボタン、マウスなどのポインティングデバイス、及びキーボードなどの入力装置のうち少なくとも1つを有し、入力装置に対する入力操作に応じた操作情報をCPU11に出力する。
【0019】
表示部15は、液晶ディスプレイなどの表示装置を備え、CPU11からの表示制御信号に従って表示装置において各種表示を行う。
【0020】
通信部16は、ネットワークカード又は通信モジュール等により構成され、撮影装置20及びプロジェクタ30との間で所定の通信規格に従ってデータの送受信を行う。
【0021】
図1に示す撮影装置20は、カラーカメラ21及び深度カメラ22を備える。
カラーカメラ21は、操作者80及びその背景を含む撮影範囲を撮影して、撮影範囲の二次元のカラー画像に係るカラー画像データを生成する。カラー画像データの各画素は、R(赤)、G(緑)、及びB(青)等の色情報を含む。
深度カメラ22は、操作者80及びその背景を含む撮影範囲を撮影して、撮影範囲の深度情報を含む深度画像に係る深度画像データを生成する。深度画像は、各画素が、操作者80及び背景の構造物(以下、「測距対象物」と記す)の奥行き(深度カメラ22から測距対象物までの距離)に係る深度情報を含む。深度カメラ22としては、例えば、TOF(Time Of Flight)方式で距離を検出するもの、又はステレオ方式で距離を検出するものなどを用いることができる。
カラーカメラ21により生成されたカラー画像データ、及び深度カメラにより生成された深度画像データは、撮影画像データ132(図2参照)として検出装置10の記憶部13に記録される。
本実施形態では、上記のカラー画像及び深度画像が、「対象を撮影して得られた撮影画像」に相当する。
【0022】
撮影装置20のカラーカメラ21及び深度カメラ22は、撮影装置20の正面に位置する操作者80を所定のフレームレートで連続して撮影する。図1に示す撮影装置20では、カラーカメラ21及び深度カメラ22が一体的に設けられているが、各カメラが操作者80を撮影可能であれば、この構成に限定されない。例えば、カラーカメラ21及び深度カメラ22が別個となっている構成であってもよい。
また、カラーカメラ21及び深度カメラ22は、少なくとも操作者80を含む範囲を撮影可能であればよく、カラーカメラ21により撮影される画角と、深度カメラ22により撮影される画角とが異なっていてもよい。また、カラーカメラ21により撮影される画角と、深度カメラ22により撮影される画角とが重複する撮影範囲においては、カラー画像の画素と、深度画像の画素との対応付けがなされている。これにより、カラー画像における任意の画素を指定した場合に、深度画像において当該画素に対応する画素を特定することができる。よって、カラー画像における任意の画素について、深度情報を取得することができる。
【0023】
図1に示すプロジェクタ30は、投影画像Imの画像データに応じた強度分布の投影光を高指向性で照射することにより、投影面に投影画像Imを投影(形成)する。詳しくは、プロジェクタ30は、光源と、当該光源から出力された光の強度分布を調整して光像を形成するデジタルマイクロミラー素子(DMD)等の表示素子と、表示素子が形成した光像を集光して投影画像Imとして投影する投影レンズ群などを備える。プロジェクタ30は、検出装置10から送信される制御信号に従って、投影する投影画像Imを変更したり、投影態様に係る設定(明るさ、色合い等)を変更したりする。
【0024】
<情報処理システムの動作>
次に、情報処理システム1の動作について説明する。
検出装置10のCPU11は、撮影装置20が撮影した1又は2以上のカラー画像及び深度画像を解析して、画像に写っている操作者80が、手81の指82によって所定のジェスチャーを行ったか否かを判別する。CPU11は、指82によってジェスチャーが行われたと判別すると、検出したジェスチャーに応じた動作をプロジェクタ30に行わせるための制御信号をプロジェクタ30に送信する。
【0025】
ここで、指82によるジェスチャーは、例えば、撮影装置20から見て指82を或る方向(右方向、左方向、下方向、及び上方向等)に動かしたり、所定の形状(円形等)の軌跡を描くように指82の先端を動かしたり、2以上の指82の先端同士の距離を変動させたり、指82の曲げ伸ばしを行ったりする動作などである。これらの各ジェスチャーには、プロジェクタ30の1つの動作が予め対応付けられている。例えば、指82を右方向に向けるジェスチャーに、投影されている投影画像Imを次の投影画像Imに切り替える動作を対応付け、指82を左方向に向けるジェスチャーに、投影されている投影画像Imを1つ前の投影画像Imに切り替える動作を対応付けてもよい。この場合には、指82を右方向/左方向に向けるジェスチャーを行うことで、投影画像を次の画像/前の画像に切り替えることができる。また、親指の先端と人差し指の先端との距離を増大/減少させるジェスチャーに、それぞれ投影画像Imを拡大/縮小させる動作を対応付けてもよい。これらはジェスチャーとプロジェクタ30の動作との対応付けの一例であり、任意のジェスチャーに、プロジェクタ30の任意の動作を対応付けることができる。また、操作部14に対するユーザ操作に応じて、ジェスチャーとプロジェクタ30の動作との対応付けを変更したり、新たな対応付けを生成したりすることが可能であってもよい。
【0026】
このように、操作者80の指82のジェスチャーによりプロジェクタ30を操作する場合には、撮影装置20が撮影した画像において指82(及び指82の先端)を正確に検出することが重要となる。指82を正しく検出できなければ、ジェスチャーを正しく認識することができず、操作性が激しく低下するためである。
【0027】
本実施形態における指82の検出動作の概略は、次のとおりである。
まず、操作者80及び手81を撮影した撮影画像において、手81に対応する手領域41(対象領域)(図5参照)を抽出する。
次に、手領域41の中から、指82を代表する代表点70(本実施形態では、手領域41のうち指82の先端に対応する点。図12B参照)の候補となる候補点60(図7B参照)を抽出する。候補点60の抽出は、まず、手領域41の輪郭点44(図9参照)のうち、複数の凸包点51(図6参照)を抽出し、複数の凸包点51を代表する複数の代表凸包点50(図6、7参照)を抽出し、複数の代表凸包点50のうち、後述する先端条件を満たす代表凸包点50を候補点60とする方法で抽出される。
次に、複数の候補点60の各々に対して仮想図形Sに係る仮想図形領域RS(図12A参照)を設定し、仮想図形領域RSと、手領域41と、の重複度合いが、所定の重複条件を満たしている場合に、その候補点60を、指82を代表する代表点70として検出する。本実施形態の重複条件は、仮想図形領域RSの面積に対する、手領域41との重複領域RD(図12A参照)の面積の割合が基準値以下である場合に満たされる面積条件である。
【0028】
以下、図3図13を参照して、検出装置10のCPU11が、操作者80の指82によるジェスチャーを検出してプロジェクタ30の動作を制御する動作について説明する。CPU11は、上記動作を実現するために、図3に示す機器制御処理、図4に示す指検出処理、図8に示す先端条件判別処理、及び図11に示す面積条件判別処理を実行する。
【0029】
図3は、機器制御処理の制御手順を示すフローチャートである。
機器制御処理は、例えば、検出装置10、撮影装置20及びプロジェクタ30の電源が投入され、プロジェクタ30を操作するためのジェスチャーの受け付けが開始された場合に実行される。
【0030】
機器制御処理が開始されると、CPU11は、撮影装置20に制御信号を送信して、カラーカメラ21及び深度カメラ22による撮影を開始させる(ステップS101)。撮影が開始されると、CPU11は、指検出処理を実行する(ステップS102)。
【0031】
図4は、指検出処理の制御手順を示すフローチャートである。
指検出処理が呼び出されると、CPU11は、カラーカメラ21及び深度カメラ22により撮影された撮影画像Imの撮影画像データ132(カラー画像の画像データ及び深度画像の画像データ)を取得する(ステップS201)。
【0032】
CPU11は、撮影画像において、手81に対応する手領域41を抽出し、手領域41を表すマスク画像40を生成する(ステップS202)。
例えば、CPU11は、カラー画像の色情報に基づいて、色に係る閾値処理を行うことで、カラー画像のうち肌の色(手81の色)に相当する領域を抽出する。また、CPU11は、深度画像の深度情報に基づいて、深度に係る閾値処理を行うことで、手81の位置に相当する深度範囲に属する領域を抽出する。そして、CPU11は、これらの領域が重複する領域を手領域41として抽出する。なお、この方法は一例であり、カラー画像及び深度画像の少なくとも一方を用いる任意の方法で手領域41を抽出することができる。例えば、背景との差分によって動的な領域を抜き出して行う抽出方法などを用いてもよい。
また、CPU11は、手領域41に対応する画素の画素値を「1」とし、手領域41以外の領域に対応する画素の画素値を「0」とした、2値のマスク画像40を生成する。マスク画像40の画像データは、記憶部13のマスク画像データ133に記憶される。
【0033】
図5は、マスク画像40の例を示す図である。
図5に示すマスク画像40では、操作者80の手81に相当する手領域41が抽出されている。ここでは、1本の指82(人差し指)を立てた状態の手81が撮影されており、手領域41には、この指82に相当する指領域42が含まれている。
【0034】
CPU11は、抽出した手領域41の輪郭線上にある輪郭点44(図9参照)を取得する(ステップS203)。手領域41の輪郭線は、マスク画像40において画素値が「1」となっている手領域41と、画素値が「0」となっている外部領域との境界線に相当する。CPU11は、この境界線上に位置する画素を、輪郭点44として取得する。
【0035】
CPU11は、取得した複数の輪郭点44の中から、複数の凸包点51(図6参照)を抽出し(ステップS204)、さらに、複数の凸包点51の中から、複数の凸包点51を代表する複数の代表凸包点50を抽出する(ステップS205)。複数の凸包点51は、手領域41を包含する最小の凸多角形の頂点である。ここで、凸多角形は、全ての頂点の内角が180度未満である多角形であり、当該凸多角形の頂点は、複数の輪郭点44の中から選択される。
【0036】
図6は、指領域42における複数の凸包点51から代表凸包点50を抽出する方法を説明する図である。
図7Aは、抽出された代表凸包点50を示す図である。
図6に示すように、手領域41を包含するように上記の凸多角形を設定する際、指領域42の先端(指82の先端に相当する部分)のような曲率半径の小さい曲線を含む部分には、局所的に複数の凸包点51が抽出される場合がある。このため、1つの指領域42の先端に対して代表凸包点50が1つのみ設定されるように、指領域42における2以上の凸包点51を代表する代表凸包点50が抽出される。詳しくは、図6の指領域42の先端部に示すように、複数の凸包点51が、或る凸包点51から基準距離rの範囲内に分布する、2以上の凸包点51からなる凸包点群51gを含む場合には、凸包点群51gのうち手領域41の重心Gから最も遠い凸包点51を代表凸包点50として抽出する。一方、図6の指領域42の付け根部に示すように、或る凸包点51から基準距離rの範囲内に他の凸包点51がない場合には、当該或る凸包点51を代表凸包点50として抽出する。このような方法によれば、基準距離rを適切に設定することで、図6及び図7Aに示すように、1つの指82の先端において1つの代表凸包点50を抽出することができる。
【0037】
図4に戻り、ステップS205において代表凸包点50が抽出されると、CPU11は、先端条件判別処理を実行する(ステップS206)。
図8は、先端条件判別処理の制御手順を示すフローチャートである。
先端条件判別処理は、抽出された複数の代表凸包点50の各々が、突出形状の先端に位置する場合に満たされる先端条件を満たすか否かを判別する処理である。ここで、突出形状は、指82(突出部)の先端近傍のように、他の部分から半島状に突出している部分の形状をいう。別の観点では、突出形状は、当該突出形状の輪郭線の平均の曲率半径が所定値以下となる部分をいう。複数の代表凸包点50から、先端条件を満たす代表凸包点50を抽出することで、指82の先端に相当し得ない代表凸包点50を除外して、指82の先端を表す候補点60を抽出することができる。
【0038】
先端条件判別処理が呼び出されると、CPU11は、代表凸包点50の序数を表す変数mに1を代入する(ステップS301)。CPU11は、m番目の代表凸包点50について、以降のステップS302~S306を実行することで、m番目の代表凸包点50が先端条件を満たすか否かを判別する。
【0039】
まず、CPU11は、m番目の代表凸包点50を挟む1組の判別用輪郭点44aと、1組の判別用輪郭点44bと、1組の判別用輪郭点44cとを選択する(ステップS302)。また、CPU11は、m番目の代表凸包点50と、1組の判別用輪郭点44aのうち互いに異なる一方と、をそれぞれ結ぶ2つの仮想線分Laを導出する。同様に、CPU11は、m番目の代表凸包点50と、1組の判別用輪郭点44bのうち互いに異なる一方と、をそれぞれ結ぶ2つの仮想線分Lbを導出し、m番目の代表凸包点50と、1組の判別用輪郭点44cのうち互いに異なる一方と、をそれぞれ結ぶ2つの仮想線分Lcを導出する(ステップS303)。
【0040】
図9は、判別用輪郭点44a~44c、及び仮想線分La~Lcの例を示す図である。
図9には、指領域42の先端近傍における輪郭線43上の輪郭点44が描かれており、これらの輪郭点44の中から判別用輪郭点44a~44cが選択される。ここでは、代表凸包点50となっている輪郭点44から3つの輪郭点44ごとに、判別用輪郭点44a~44cが選択されている。詳しくは、代表凸包点50となっている輪郭点44との間に2つの輪郭点44を挟む位置の輪郭点44が、判別用輪郭点44aとして選択され、判別用輪郭点44aとの間に2つの輪郭点44を挟む位置の輪郭点44が、判別用輪郭点44bとして選択され、判別用輪郭点44bとの間に2つの輪郭点44を挟む位置の輪郭点44が、判別用輪郭点44cとして選択されている。これらの3組の判別用輪郭点44a~44cは、「代表凸包点からの平均距離が互いに異なる少なくとも2組の前記輪郭点」に相当する。なお、代表凸包点50、判別用輪郭点44a~44cの相互の間隔(間に挟む輪郭点44の数)は、手領域41の大きさ(撮影装置20から手81までの距離)等に応じて適宜変更してもよい。
【0041】
図8に戻り、ステップS303が終了すると、CPU11は、3組の判別用輪郭点44a~44cについてそれぞれ仮想線分La~Lcがなす角度を導出する。すなわち、CPU11は、図10に示すように、2つの仮想線分Laがなす角度θa、2つの仮想線分Lbがなす角度θb、及び2つの仮想線分Lcがなす角度θcをそれぞれ導出する(ステップS304)。
【0042】
CPU11は、角度θa~θcが、θa>θb>θcの関係を満たすか否かを判別する(ステップS305)。言い換えると、CPU11は、代表凸包点50からの平均距離が長い判別用輪郭点の組ほど仮想線分がなす角度が小さい、との条件を満たすか否かを判別する。代表凸包点50が、突出形状の先端に位置する場合には、代表凸包点50からの平均距離が長い判別用輪郭点を通る仮想線分ほど、なす角が小さくなるため、θa>θb>θcの関係が満たされる。一方、代表凸包点50が、突出形状の先端ではない場所に位置する場合には、角度θbが角度θaよりも大きくなったり、角度θcが角度θbよりも大きくなったりするため、θa>θb>θcの関係が満たされない。
【0043】
θa>θb>θcの関係を満たすと判別された場合には(ステップS305で“YES”)、CPU11は、m番目の代表凸包点50が先端条件を満たすと判別する(ステップS306)。図10に示す例では、θa>θb>θcの関係が満たされているため、代表凸包点50は先端条件を満たす、すなわち突出形状の先端に位置すると判別される。
【0044】
ステップS306が終了した場合、又は、θa>θb>θcの関係が満たされないと判別された場合には(ステップS305で“NO”)、CPU11は、変数mの値が、図4のステップS205で抽出された代表凸包点50の数Mに一致するか否かを判別する(ステップS307)。変数mの値が代表凸包点50の数Mに一致しないと判別された場合には(ステップS307で“NO”)、CPU11は、変数mにm+1を代入し(ステップS308)、処理をステップS302に戻す。
【0045】
変数mの値が、代表凸包点50の数Mに一致すると判別された場合には(ステップS307で“YES”)、CPU11は、先端条件判別処理を終了させて、処理を図4の指検出処理に戻す。
【0046】
なお、上記では、θa>θb>θcの関係が満たされるか否かにより先端条件の判別を行ったが、先端条件の判別方法はこれに限られない。例えば、判別式を角度θa~θcについて、個別に判別式を設定してもよい。例えば、角度θa~θcが、それぞれ以下の判別式(1)~(3)を満たす場合に、代表凸包点50が先端条件を満たすと判別してもよい。
θa_min<θa<θa_max …(1)
θb_min<θb<θb_max …(2)
θc_min<θc<θc_max …(3)
また、上記では、判別用輪郭点を3組選択したが、判別用輪郭点は2組以下又は4組以上としてもよい。2組以下とすることで、先端条件の判別に係る処理をより簡易にすることができる。また、4組以上とすることで、先端判別の精度をより向上させることができる。
【0047】
図4の先端条件判別処理(ステップS206)が終了すると、CPU11は、先端条件を満たす代表凸包点50がある場合には(ステップS207で“YES”)、先端条件を満たすと判別された代表凸包点50を、代表点70の候補点60として抽出する(ステップS208)。本実施形態では、図7Aに示す8つの代表凸包点50の中から、図7Bに示す5つの候補点60が抽出されたものとする。候補点60が抽出されると、CPU11は、面積条件判別処理を実行する(ステップS209)。
【0048】
図11は、面積条件判別処理の制御手順を示すフローチャートである。
面積条件判別処理は、抽出された複数の候補点60の各々が、指82(指領域42)を代表する代表点70(本実施形態では、指82の先端の点)であるか否かを判別する処理である。
【0049】
面積条件判別処理が呼び出されると、CPU11は、候補点60の序数を表す変数nに1を代入する(ステップS401)。
CPU11は、n番目の候補点60について、以降のステップS402~S406を実行することで、n番目の候補点60が面積条件を満たすか否かを判別する。
図12Aは、面積条件の判別方法を説明する図である。
【0050】
まず、CPU11は、予め定められた領域設定規則に従って、手領域41の少なくとも一部と重なり、且つ、候補点60を輪郭線上に含む仮想図形Sに係る仮想図形領域RSを設定する。本実施形態では、CPU11は、領域設定規則に従って、仮想図形Sの輪郭線が、手領域41の重心Gと、候補点60とを通るように仮想図形領域RSを設定する。より詳しくは、CPU11は、n番目の候補点60と手領域41の重心Gとを結ぶ線分Dを直径とする円形の仮想図形Sを導出し、当該仮想図形Sにより囲まれた仮想図形領域RSを設定する(ステップS402)。ここでは、仮想図形Sとして、線分Dを直径とする円を例示したが、これに限られない。例えば、仮想図形Sは、線分Dを対角線とする矩形としてもよいし、輪郭線が重心G及び候補点60を通るその他の任意の図形(多角形、楕円等)としてもよい。
【0051】
CPU11は、仮想図形領域RSのうち手領域41と重複する重複領域RDの面積を導出する(ステップS403)。重複領域RDは、図12Aにおいてハッチングが付された領域である。
【0052】
CPU11は、仮想図形領域RSの面積に対する重複領域RDの面積の割合(以下、「面積重複率」と記す)を導出する(ステップS404)。この面積重複率は、対応する候補点60が指領域42の先端に位置する場合に小さくなり、候補点60が指領域42の先端以外に位置する場合には大きくなる傾向がある。
【0053】
CPU11は、導出した面積重複率が所定の基準値以下であるか否かを判別する(ステップS405)。基準値は、候補点60が指領域42の先端に位置する場合の面積重複率が基準値以下となり、候補点60が指領域42の先端以外に位置する場合の面積重複率が基準値より大きくなるように予め設定されて記憶部13に記憶されている。本実施形態では、基準値は70%とされている。ただし、これは例示であり、適宜変更可能である。例えば、基準値をより小さくすることで、指82以外の部分が指82と誤検出される可能性を低減することができ、基準値をより大きくすることで、指82の検出漏れの発生を抑制することができる。なお、基準値は0%よりも大きい値に設定される。
面積重複率が基準値以下であると判別された場合には(ステップS405で“YES”)、CPU11は、n番目の候補点60が、面積の小ささに係る面積条件を満たすと判別する(ステップS406)。
【0054】
ステップS406が終了した場合、又は、面積重複率が基準値より大きいと判別された場合には(ステップS405で“NO”)、CPU11は、変数nの値が、図4のステップS208で抽出された候補点60の数Nに一致するか否かを判別する(ステップS407)。変数nの値が候補点60の数Mに一致しないと判別された場合には(ステップS407で“NO”)、CPU11は、変数nにn+1を代入し(ステップS408)、処理をステップS402に戻す。ステップS402~S406の処理が各候補点60について実行されることで、全ての候補点60について、面積重複率が導出され、面積条件が満たされるか否かが判別される。本実施形態では、図12Aに示すように、5つの候補点60についての面積重複率が、39%、91%、89%、92%、93%と導出され、このうち面積重複率が39%である1つの候補点60が面積条件を満たす(面積重複率が基準値(70%)以下である)と判別され、代表点70として抽出される。図12Bは、抽出された代表点70を示す図である。
変数nの値が、候補点60の数Nに一致すると判別された場合には(ステップS307で“YES”)、CPU11は、先端条件判別処理を終了させて、処理を図4の指検出処理に戻す。
【0055】
なお、上記では、候補点60が仮想図形Sの輪郭線に含まれるように仮想図形領域RSを設定したが、これに代えて、候補点60が仮想図形Sの内部に含まれるように仮想図形領域RSを設定してもよい。例えば、仮想図形Sは、候補点60を中心とする図形(円など)としてもよい。この場合にも、上記と同様に面積重複率を導出して面積条件を判定することができる。
【0056】
図4のステップS209の面積条件判別処理が終了すると、CPU11は、面積条件を満たす候補点60があるか否かを判別する(ステップS210)。面積条件を満たす候補点60があると判別された場合には(ステップS211で“YES”)、CPU11は、面積条件を満たす候補点60のうち、面積重複率が小さい順に規定数以下の候補点60を、指82の先端を表す代表点70として検出する(ステップS211)。本実施形態では、図12Aに示す、面積重複率が39%である1つの候補点60が代表点70として検出される。当該代表点70は、指82(人差し指)の先端を表している。
【0057】
図13は、指82を広げた状態の手81が撮影された場合の代表点70の検出結果を示す図である。
図13では、7つの候補点60が抽出されており、これらの面積重複率は、それぞれ51%、53%、54%、53%、59%、81%、83%となっている。このうち、面積重複率が51%、53%、54%、53%、59%である5つの候補点60が面積条件を満たす(面積重複率が基準値(70%)以下である)と判別され、代表点70として抽出される。このように、面積条件を満たしている候補点60が複数ある場合には、CPU11は、面積重複率が小さい順に、規定数以下の候補点60を代表点70として検出する。ここで、規定数は、「対象」が手81であり、「突出部」が指82である場合には、人間の指の本数である「5」以下に定められる。規定数が5である場合には、面積条件を満たしている候補点60が6つ以上あっても、面積重複率が小さい順に5つの候補点60が代表点70として検出される。図13に示す例では、5本の指82(指領域42)の先端に位置する5つの候補点60が代表点70として検出される。なお、規定数を1又は2として、ジェスチャー検出の対象となる指82を1つ又は2つに絞ってもよい。
【0058】
図4のステップS211が終了すると、CPU11は、指検出処理を終了させて、処理を図3の機器制御処理に戻す。また、ステップS207において、先端条件を満たす代表凸包点50がないと判別された場合(ステップS207で“NO”)、又は、ステップS210において、面積条件を満たす候補点60がないと判別された場合も(ステップS210で“NO”)、CPU11は、代表点70を検出せずに指検出処理を終了させて、処理を図3の機器制御処理に戻す。
【0059】
図3の指検出処理(ステップS102)が終了すると、CPU11は、指検出処理において、指82の先端を表す代表点70が検出されたか否かを判別する(ステップS103)。代表点70が検出されたと判別された場合には(ステップS103で“YES”)、CPU11は、マスク画像40における代表点70の位置から、指82の先端の位置及び指82の向きを特定する(ステップS104)。このうち指の先端の位置は、マスク画像40における代表点70の位置である。また、指82の向きは、手領域41の重心Gと代表点70との位置関係に基づいて特定することができる。すなわち、重心Gを中心とする右方向、左方向、上方向、又は下方向の各所定角度範囲内に代表点70が位置している場合に、それぞれ、指82が右方向、左方向、上方向、又は下方向に向いていると特定することができる。
【0060】
CPU11は、指82の向き、又は、複数フレームにわたるマスク画像40における指82の先端の位置の動きから、操作者80の指82によるジェスチャーを検出したか否かを判別する(ステップS105)。ジェスチャーを検出したと判別された場合には(ステップS105で“YES”)、CPU11は、検出したジェスチャーに応じた動作を行わせるための制御信号を、プロジェクタ30に送信する(ステップS106)。当該制御信号を受信したプロジェクタ30は、制御信号に応じた動作を行う。
【0061】
ステップS106が終了した場合、ステップS103において代表点70が検出されていないと判別された場合(ステップS103で“NO”)、又は、ステップS105においてジェスチャーが検出されないと判別された場合には(ステップS105で“NO”)、CPU11は、情報処理システム1におけるジェスチャーの受け付けを終了するか否かを判別する(ステップS107)。ここでは、CPU11は、例えば、検出装置10、撮影装置20又はプロジェクタ30の電源をオフする操作がなされている場合に、ジェスチャーの受け付けを終了すると判別する。
【0062】
ジェスチャーの受け付けを終了しないと判別された場合には(ステップS107で“NO”)、CPU11は、処理をステップS102に戻し、次のフレーム期間に撮影された撮影画像に基づいて指82を検出するための指検出処理を実行する。ステップS102~S107のループ処理は、例えば、カラーカメラ21及び深度カメラ22による撮影のフレームレートで(すなわち、カラー画像及び深度画像が生成されるたびに)繰り返し実行される。
ジェスチャーの受け付けを終了すると判別された場合には(ステップS107で“YES”)、CPU11は、機器制御処理を終了させる。
【0063】
<効果>
以上のように、本実施形態に係る検出方法は、コンピュータとしてのCPU11が実行する検出方法であって、手81を撮影して得られた撮影画像において、手81に対応する手領域41を抽出し、手領域41の中から、手81の指82を代表する代表点70の候補となる候補点60を抽出し、領域設定規則に従って、候補点60を輪郭線上又は内部に含む仮想図形Sに係る仮想図形領域RSを設定し、設定された仮想図形領域RSと、手領域41と、の重複度合いが、所定の重複条件を満たしている場合に、候補点60を、代表点70として検出する。
これにより、限られた数の候補点60について重複条件を満たすか否かの判別を行う簡易な処理で、指82(指82を代表する代表点70)を適切に検出することができる。よって、CPU11による処理の負荷を軽減することができる。
また、より高速に指82を検出することが可能となるので、より高いフレームレートの撮影画像において適切に指82を検出することができる。
また、仮想図形領域RSと手領域41との重複度合いに基づいて代表点70を検出できるため、撮影画像の解像度が低い場合や、撮影装置20から手81までの距離が遠い場合のように、撮影画像における手81や指82に相当する画素数が少ない場合であっても、指82を正確に検出することができる。
また、上記方法によれば、指82以外の突出部も適切に検出することができる。例えば、手袋をはめていて、指に対応する突出部の形状が素手の指82の形状とは異なっていたり、指82以外の突出部(例えば、手81に持った棒状の部材など)を用いてジェスチャーを行ったりする場合であっても、突出部を適切に検出することができる。
【0064】
また、重複条件は、仮想図形領域RSの面積に対する、仮想図形領域RSのうち手領域41と重複する重複領域RDの面積の割合(重複面積率)が基準値以下である場合に満たされる面積条件である。これにより、重複面積率を基準値と比較する簡易な処理で、指82を検出することができる。また、重複領域RDの面積を用いるため、撮影画像の解像度が低い場合や、撮影装置20から手81までの距離が遠い場合のように、撮影画像における手81や指82に相当する画素数が少ない場合であっても、指82を正確に検出することができる。
【0065】
また、CPU11は、手領域41の中から、複数の指82に対応する複数の候補点60を抽出し、複数の候補点60の各々に対して仮想図形領域RSを設定し、複数の候補点60のうち、対応する重複領域RDの面積が面積条件を満たしている候補点60を代表点70として検出する。これにより、2以上の指82を別個に検出することができる。よって、2つの指82の先端同士の距離を変化させるジェスチャーなどを適切に検出することができる。
【0066】
また、重複条件は、仮想図形領域RSの面積に対する、仮想図形領域RSのうち手領域41と重複する重複領域RDの面積の割合が基準値以下である場合に満たされる面積条件であり、CPU11は、複数の候補点60のうち、対応する重複領域RDの面積が面積条件を満たしている候補点60が複数ある場合には、仮想図形領域RSの面積に対する重複領域RDの面積の割合が小さい順に、規定数以下の候補点60を代表点70として検出する。これにより、指82である可能性の高い候補点60から順に代表点70として検出することができる。よって、指82以外の部分を指82と誤検出する不具合の発生を抑制することができる。
【0067】
また、対象が手81であり、突出部が指82である場合には、上記の規定数は5以下に定められる。これにより、面積条件を満たす候補点60が6つ以上ある場合に、指82とは異なる部分である可能性の高い候補点60を代表点70から除外することができる。
【0068】
また、CPU11は、領域設定規則に従って、仮想図形Sの輪郭線が手領域41の重心Gと候補点60とを通るように仮想図形領域RSを設定する。これにより、手領域41の少なくとも一部と重なる仮想図形領域RSを、候補点60と対応する位置に簡易に設定することができる。
【0069】
また、領域設定規則に従って設定される仮想図形領域RSに係る仮想図形Sは、手領域41の重心Gと、候補点60とを結ぶ線分Dを直径とする円である。これにより、候補点60が指82の先端に位置する場合には重複面積率が小さくなり、候補点60が指82の先端以外に位置する場合には重複面積率が大きくなるような仮想図形領域RSを簡易に設定することができる。
【0070】
また、代表点70は、手領域41の輪郭線上にある複数の輪郭点44のいずれかであり、候補点60を、複数の輪郭点44の中から抽出する。これにより、指82の先端に位置する候補点60を効率よく抽出することができる。
【0071】
また、代表点70は、手領域41における指82の先端に対応する点である。これにより、検出した代表点70の位置から、指82の先端の位置を特定することができる。
【0072】
また、CPU11は、手領域41を包含する最小の凸多角形の頂点である複数の凸包点51の中から候補点60を抽出する。複数の凸包点51は、指82の先端を表す代表点70を含むとともに、指82の先端以外の多くの輪郭点44を含まないため、複数の凸包点51から候補点60を抽出する方法により、効率よく適切な候補点60を抽出することができる。
【0073】
また、CPU11は、複数の凸包点51を代表する複数の代表凸包点50のうち、突出形状の先端に位置する場合に満たされる先端条件を満たす代表凸包点50を、候補点60として抽出する。これにより、指82の先端を表す代表点70である可能性の高い候補点60を抽出することができる。
【0074】
また、CPU11は、複数の代表凸包点50の各々について、代表凸包点50と、当該代表凸包点50を挟む1組の判別用輪郭点のうち互いに異なる一方と、をそれぞれ結ぶ2つの仮想線分がなす角度を導出し、代表凸包点50からの平均距離が互いに異なる3組の判別用輪郭点44a~44cについてそれぞれ仮想線分La~Lcがなす角度θa~θcを導出し、代表凸包点50からの平均距離が長い判別用輪郭点の組ほど仮想線分がなす角度が小さい場合に、代表凸包点50が先端条件を満たすと判別し、複数の代表凸包点50のうち先端条件を満たすと判別された代表凸包点50を、候補点60として抽出する。これにより、代表点70である可能性の高い候補点60を、角度θa~θcを比較する簡易な処理により抽出することができる。
【0075】
また、CPU11は、複数の凸包点51が、或る凸包点51から基準距離rの範囲内に分布する凸包点群51gを含む場合には、凸包点群51gのうち手領域41の重心Gから最も遠い凸包点51を複数の代表凸包点50の1つとして抽出し、複数の凸包点51のうちの或る凸包点51から基準距離rの範囲内に他の凸包点51がない場合には、上記の或る凸包点51を複数の代表凸包点50の1つとして抽出する。これによれば、基準距離rを適切に設定することで、1つの指82について最大で1つの代表凸包点50を抽出することができる。よって、1つの指82について最大で1つの候補点60を抽出することができるので、1つの指82について2以上の候補点60が抽出されたり、2以上の代表点70が検出されたりする不具合の発生を抑制することができる。
【0076】
また、本実施形態に係る検出装置10は、CPU11を備え、CPU11は、手81を撮影して得られた撮影画像において、手81に対応する手領域41を抽出し、手領域41の中から、手81の指82を代表する代表点70の候補となる候補点60を抽出し、領域設定規則に従って、候補点60を輪郭線上又は内部に含む仮想図形Sに係る仮想図形領域RSを設定し、設定された仮想図形領域RSと、手領域41と、の重複度合いが、所定の重複条件を満たしている場合に、候補点60を、代表点70として検出する。これにより、限られた数の候補点60について重複条件を満たすか否かの判別を行う簡易な処理で、指82(指82を代表する代表点70)を適切に検出することができる。また、指82以外の突出部も適切に検出することができる。
【0077】
また、本実施形態に係るプログラム131は、コンピュータとしてのCPU11に、手81を撮影して得られた撮影画像において、手81に対応する手領域41を抽出する処理、手領域41の中から、手81の指82を代表する代表点70の候補となる候補点60を抽出する処理、領域設定規則に従って、候補点60を輪郭線上又は内部に含む仮想図形Sに係る仮想図形領域RSを設定する処理、設定された仮想図形領域RSと、手領域41と、の重複度合いが、所定の重複条件を満たしている場合に、候補点60を、代表点70として検出する処理、を実行させる。これにより、限られた数の候補点60について重複条件を満たすか否かの判別を行う簡易な処理で、指82(指82を代表する代表点70)を適切に検出することができる。また、指82以外の突出部も適切に検出することができる。
【0078】
<その他>
なお、上記実施形態における記述は、本発明に係る検出方法、検出装置及びプログラムの一例であり、これに限定されるものではない。
例えば、上記実施形態では、検出装置10、撮影装置20、及びプロジェクタ30(ジェスチャーによる操作対象機器)が別個となっている例を用いて説明したが、この態様に限られない。
例えば、検出装置10と撮影装置20とが一体となっていてもよい。一例を挙げると、検出装置10の表示部15のベゼルに、撮影装置20のカラーカメラ21及び深度カメラ22が組み込まれていてもよい。
また、検出装置10と操作対象機器とが一体となっていてもよい。例えば、上記実施形態におけるプロジェクタ30に検出装置10の機能を組み込み、検出装置10が実行していた処理をプロジェクタ30の図示しないCPUが実行してもよい。この場合には、プロジェクタ30が「検出装置」に相当し、プロジェクタ30のCPUが「処理部」に相当する。
また、撮影装置20と操作対象機器とが一体となっていてもよい。例えば、上記実施形態におけるプロジェクタ30の筐体に、撮影装置20のカラーカメラ21及び深度カメラ22が組み込まれていてもよい。
また、検出装置10、撮影装置20及び操作対象機器が全て一体となっていてもよい。例えば、操作対象機器としての検出装置10の表示部15のベゼルにカラーカメラ21及び深度カメラ22が組み込まれた態様において、操作者80の手81(指82)のジェスチャーにより検出装置10の動作を制御してもよい。
【0079】
また、上記実施形態では、仮想図形領域RSと手領域41との重複度合いに係る重複条件として、仮想図形領域RSの面積に対する重複領域RDの面積の割合が基準値以下である場合に満たされる面積条件を例示したが、これに限られない。重複条件は、例えば、仮想図形領域RSの輪郭線の長さ(上記実施形態の例では、仮想図形領域RSがなす円の円周の長さ)に対する、当該輪郭線のうち手領域41と重なる部分の長さの割合が基準値以下である場合に満たされることとしてもよい。この方法によれば、面積を導出する必要がないため、CPU11の処理負荷をより軽減することができる。
【0080】
また、対象として操作者80の手81を例示し、突出部として指82を例示したが、これに限られない。例えば、対象は、スタイラス等の棒状の部材を保持している手81であってもよく、この場合の突出部は、棒状の部材であってもよい。また、対象は、一部が突出した形状の指示部材(例えば、手指の形状を模した模型等)であってもよく、突出部は、当該指示部材における突出した部分であってもよい。
また、操作者80は人に限られず、ロボットや動物等であってもよい。
【0081】
また、撮影装置20は、必ずしもカラーカメラ21及び深度カメラ22の両方を備えていなくてもよい。例えば、カラー画像の色情報のみから手領域41を抽出する場合には、深度カメラ22を省略してもよい。また、深度画像の深度情報のみから手領域41を抽出する場合には、カラーカメラ21を省略してもよい。
【0082】
また、以上の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体として記憶部13のHDD、SSDを使用した例を開示したが、この例に限定されない。その他のコンピュータ読み取り可能な媒体として、フラッシュメモリ、CD-ROM等の情報記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も本発明に適用される。
【0083】
また、上記実施形態における検出装置10、撮影装置20及びプロジェクタ30の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。
【0084】
本発明の実施の形態を説明したが、本発明の範囲は、上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明の範囲とその均等の範囲を含む。
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
〔付記〕
<請求項1>
コンピュータが実行する検出方法であって、
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出し、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出し、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定し、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する、
検出方法。
<請求項2>
前記重複条件は、前記仮想図形領域の面積に対する、前記仮想図形領域のうち前記対象領域と重複する重複領域の面積の割合が基準値以下である場合に満たされる面積条件である、
請求項1に記載の検出方法。
<請求項3>
前記対象領域の中から、複数の前記突出部に対応する複数の前記候補点を抽出し、
前記複数の候補点の各々に対して前記仮想図形領域を設定し、
前記複数の候補点のうち、対応する前記仮想図形領域と、前記対象領域とが前記重複条件を満たしている候補点を前記代表点として検出する、
請求項1に記載の検出方法。
<請求項4>
前記重複条件は、前記仮想図形領域の面積に対する、前記仮想図形領域のうち前記対象領域と重複する重複領域の面積の割合が基準値以下である場合に満たされる面積条件であり、
前記複数の候補点のうち、対応する前記重複領域の面積が前記面積条件を満たしている候補点が複数ある場合には、前記仮想図形領域の面積に対する前記重複領域の面積の割合が小さい順に、規定数以下の候補点を前記代表点として検出する、
請求項3に記載の検出方法。
<請求項5>
前記対象が手であり、前記突出部が指である場合には、前記規定数は5以下に定められる、
請求項4に記載の検出方法。
<請求項6>
前記領域設定規則に従って、前記仮想図形の輪郭線が前記対象領域の重心と前記候補点とを通るように前記仮想図形領域を設定する、
請求項1に記載の検出方法。
<請求項7>
前記領域設定規則に従って設定される仮想図形領域に係る前記仮想図形は、前記対象領域の重心と、前記候補点とを結ぶ線分を直径とする円である、
請求項1に記載の検出方法。
<請求項8>
前記代表点は、前記対象領域の輪郭線上にある複数の輪郭点のいずれかであり、
前記候補点を、前記複数の輪郭点の中から抽出する、
請求項1に記載の検出方法。
<請求項9>
前記代表点は、前記対象領域における前記突出部の先端に対応する点である、
請求項8に記載の検出方法。
<請求項10>
前記対象領域を包含する最小の凸多角形の頂点である複数の凸包点の中から前記候補点を抽出する、
請求項8に記載の検出方法。
<請求項11>
前記複数の凸包点を代表する複数の代表凸包点のうち、突出形状の先端に位置する場合に満たされる先端条件を満たす代表凸包点を、前記候補点として抽出する、請求項10に記載の検出方法。
<請求項12>
前記複数の代表凸包点の各々について、
前記代表凸包点と、当該代表凸包点を挟む1組の前記輪郭点のうち互いに異なる一方と、をそれぞれ結ぶ2つの仮想線分がなす角度を導出し、
前記代表凸包点からの平均距離が互いに異なる少なくとも2組の前記輪郭点についてそれぞれ前記仮想線分がなす角度を導出し、
前記代表凸包点からの平均距離が長い前記輪郭点の組ほど前記仮想線分がなす角度が小さい場合に、前記代表凸包点が前記先端条件を満たすと判別し、
前記複数の代表凸包点のうち前記先端条件を満たすと判別された代表凸包点を、前記候補点として抽出する、
請求項11に記載の検出方法。
<請求項13>
前記複数の凸包点が、或る凸包点から基準距離の範囲内に分布する凸包点群を含む場合には、前記凸包点群のうち前記対象領域の重心から最も遠い凸包点を前記複数の代表凸包点の1つとして抽出し、
前記複数の凸包点のうちの或る前記凸包点から前記基準距離の範囲内に他の凸包点がない場合には、前記或る凸包点を前記複数の代表凸包点の1つとして抽出する、
請求項11又は12に記載の検出方法。
<請求項14>
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出し、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出し、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定し、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する、
処理部を備える検出装置。
<請求項15>
コンピュータに、
対象を撮影して得られた撮影画像において、前記対象に対応する対象領域を抽出する処理、
前記対象領域の中から、前記対象の突出部を代表する代表点の候補となる候補点を抽出する処理、
領域設定規則に従って、前記候補点を輪郭線上又は内部に含む仮想図形に係る仮想図形領域を設定する処理、
設定された前記仮想図形領域と、前記対象領域と、の重複度合いが、所定の重複条件を満たしている場合に、前記候補点を、前記代表点として検出する処理、
を実行させるプログラム。
【符号の説明】
【0085】
1 情報処理システム
10 検出装置
11 CPU(処理部)
12 RAM
13 記憶部
131 プログラム
132 撮影画像データ
133 マスク画像データ
14 操作部
15 表示部
16 通信部
17 バス
20 撮影装置
21 カラーカメラ
22 深度カメラ
30 プロジェクタ
40 マスク画像
41 手領域(対象領域)
42 指領域
43 輪郭線
44 輪郭点
44a~44c 判別用輪郭点
50 代表凸包点
51 凸包点
51g 凸包点群
60 候補点
70 代表点
80 操作者
81 手(対象)
82 指(突出部)
D 線分
G 重心
Im 画像
La~Lc 仮想線分
RD 重複領域
RS 仮想図形領域
S 仮想図形
r 基準距離
θa~θc 角度
図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9
図10
図11
図12A
図12B
図13