以下では、添付した図面を参照して本発明が属する技術分野で通常の知識を有する者が容易に実施できるように、本発明の実施例を詳細に説明する。しかし、本発明は、様々な異なる形態で具現されることができ、ここで説明する実施例に限定されない。そして、図面において、本発明を明確に説明するために、説明と関係ない部分は省略しており、明細書の全体にわたって類似した部分に対しては、類似の図面符号を付けた。
明細書の全体において、ある部分が他の部分と“連結”されているというとき、これは“直接的に連結”されている場合だけではなく、その中間に他の要素を間に置いて“電気的に連結”されている場合も含む。また、ある部分がある構成要素を“含む”というとき、これは特に反対される記載がない限り、他の構成要素を除外するのではなく、他の構成要素を更に含むことができることを意味する。
以下、添付された図面を参考して本発明を詳細に説明することにする。図1を参照すると、本発明の一実施例によるシステム10は、NUI装置100及び動作認識装置200を含む。
本発明において、NUI装置100は、イメージセンサー、深さ感知センサー、動作認識センサー及び音声認識センサーのうち、少なくとも1つを利用して、ユーザーの動作または音声を認識できるソフトウェアプログラムやアプリケーションの命令に利用することができる全ての装置を意味する。NUI装置100は、例えば、タッチスクリーンが搭載されたタブレットPC、スマートフォン、カラーカメラ(RGB camera)またはデプスカメラ(depth camera)、キネクト(Kinect)などから具現され得る。本発明によるNUI装置100は、例えば、デプスカメラで具現されたら、ユーザーの動作を撮影し、撮影されたイメージフレームを送信するとか、撮影されたイメージフレームから前記ユーザーの関節の3次元位置などから構成されるポーズ情報を抽出し、抽出されたポーズ情報を送信することができる。
つまり、NUI装置100は、ユーザーの身体全体または一部分を撮影して、ユーザーの身体部位を判別するとか、関節の3次元位置、または前記関節の動きなどを追跡することにより、ユーザーの関節の3次元位置などから構成されるポーズ情報を含むフレームを獲得することができる。また、NUI装置100は、前記のように獲得されたポーズ情報、またはフレームを動作認識装置200に有/無線通信手段を介して送信することができる。
一方、動作認識装置200は、NUI装置100から受信したポーズ情報を分析(または受信したイメージフレームからポーズ情報を抽出し、前記抽出されたポーズ情報を分析)して、ユーザーの動作情報を獲得し、前記動作情報と既設定された比較対象情報とを比較して、現実世界におけるユーザーの動作を正確に認識し、ひいては、ユーザーの動作に対応する命令を決定することができる。
ここで、‘動作情報’とは、ユーザーのポーズを時間の順に並べたときのシーケンス情報を意味し、‘比較対象情報’は、ユーザーの動作の意味(または命令)を定義した情報として、動作認識装置200に既格納され得る。
このような動作認識装置200は、NUI装置100が実行する機能の一部を実行することができる。例えば、NUI装置100が動作認識装置200に含まれるか、または動作認識装置200にNUI装置100が含まれることにより、動作認識装置200がNUI装置100の機能の少なくとも一部を実行することができる。以下では、説明の便宜のために、NUI装置100が実行する機能の少なくとも一部を動作認識装置200が実行するものとして説明し、このような動作認識装置200のより詳細な構成は、図2を参照して後述する。
一方、本発明の一実施例によるシステム10は、命令処理装置300を更に含むことができる。
従って、動作認識装置200によって現実世界におけるユーザー動作の意味が決定され、前記意味に対応する命令が存在したら、前記命令は、有/無線通信手段を介して命令処理装置300に送信され、前記命令に符合するプロセスを進行することができる。
従って、例えば、命令処理装置300が電子機器の画面上のカーソルを表示してくれる装置であり、比較対象情報として、特定の関節の動作が前記カーソルの動きとして定義されたら、ユーザーが前記特定の関節を動かしたとき、前記動きをポーズ情報としてNUI装置100が獲得することができ、動作認識装置200が前記ポーズ情報に基づいて獲得した動作情報と比較対象情報との間の動的タイムワーピングを実行し、その結果、ユーザーの動作に対応する命令を決定することができ、命令処理装置300が前記命令に対応するプロセス、つまり、画面上のカーソルを画面上で移動させることができる。
このような命令処理装置300は、説明の便宜上、図1で動作認識装置200とは別に存在するものとして示されたが、動作認識装置200に含まれるか、または動作認識装置200を含むことができる。
以下、図2を参照して、本発明の一実施例による動作認識装置200の構成に対して具体的に説明する。
図2に示されたように、動作認識装置200は、情報受信部210、動作情報獲得部220及び動作決定部230を含む。
情報受信部210は、NUI装置100によって撮影されたイメージフレームを受信するとか、またはイメージフレームから抽出されたポーズ情報を受信することができる。
関連して、ユーザーがNUI装置100に対して現実世界における一連の動作を実行したとき、説明の便宜上、前記一連の動作をユーザーの‘実際動作’と定義する。NUI装置100は、ユーザーの実際動作を毎秒ごとに撮影し、実際動作を構成するポーズ情報を含むイメージフレームを獲得して動作認識装置200に送信することができ、またはイメージフレームからポーズ情報を抽出して前記ポーズ情報を動作認識装置200に送信することができる。
従って、情報受信部210は、イメージフレームまたはポーズ情報を受信することができ、情報受信部210がイメージフレームを受信すると、前記イメージフレームからポーズ情報を抽出することができる。前述されたところによるポーズ情報は、ユーザー関節の3次元位置などから構成されることができ、より詳細には、次のように定義することができる。
一方、動作情報獲得部220は、ユーザーの動作情報を獲得する。
つまり、動作情報獲得部220は、前記ユーザーの実際動作に対応する一連のポーズ情報のそれぞれをバイナリーベクトルに変換し、前記変換されたバイナリーベクトルを前記ユーザーの動作情報として設定することができる。
このような動作情報獲得部220は、条件設定部221及びベクトル変換部222を含むことができる。
条件設定部221は、ユーザーの実際動作に対応する一連のポーズ情報のそれぞれを因子にする条件式を生成する。
このために、条件設定部221は、1つ以上のメタ条件関数を設定することができ、メタ条件関数を構成する要素などのうち、少なくとも1つを決定することに応じて条件式を生成することができる。つまり、前記メタ条件関数は、1つ以上の変数及び定数で構成されることができ、条件設定部221は、前記定数のうち、少なくとも1つの定数を決定することに応じて条件式を生成することができる。
関連して、条件設定部221は、所定関節の位置を、2つ以上の関節に基づいて生成される平面を基準として判断する関数である平面条件関数をメタ条件関数として設定することができ、平面条件関数は、次の数式2または数式3のように表現され得る。
数式2及び数式3によれば、左手あるいは右手が右側肩、左側肩及び骨盤として表現される胴体平面の前にあるか否か、左手が右側肩から左側肩に出るベクトルを法線としながら、左側肩を通る平面を基準にして、身体の内側にあるか否か、あるいは外側にあるか否かなどが知ることができる条件式を生成することができる。
また、条件設定部221は、次の数式4のような関数、つまり、4つの関節の作り出す角度が特定の範囲にあるか否かを判断する条件式を生成することができる角度条件関数を、メタ条件関数として設定することができる。
また、条件設定部221は、メタ条件関数として、数式5のような接近条件関数を設定することができ、接近条件関数は、2つの関節間の距離が特定の範囲にあるか否かを判断する条件式を生成することができる。つまり、条件設定部221は、条件の対象となる関節2つと共に条件の基準となる関節2つ、及び倍率定数値を入力とする条件式を生成することができ、接近条件関数は、次のように数式5で表現され得る。
一方、条件設定部221は、速度条件に関する条件式を生成できるメタ条件関数を設定することができる。つまり、条件設定部221は、次の数式6のような速度方向条件関数、及び数式7のような速度大きさ条件関数のそれぞれをメタ条件関数として設定することができる。
数式6は、任意の関節の速度と、指定した2つの基準関節を連結したベクトルが作り出す角度が指定した範囲にあることを判断できる条件式を生成することができる速度方向条件関数を示す数式である。
数式6の速度方向条件関数に応じて、条件設定部221は、右手が上下あるいは左右に動いているか否か、足が垂直あるいは方向に動いているか否がなど様々な条件式を生成することができる。
一方、数式7は、任意の関節の速度の大きさが指定した2つの基準関節を連結したベクトルの大きさと比較したとき、どれだけ大きいかを探り出す条件式を生成することができる速度大きさ条件関数である。
数式6による関数は、速度の大きさと関係なく作動するので、エラーを作り出す可能性があるが、数式7による速度大きさ条件関数と共に使用すると、基準値以上の速度に対してのみ条件式が意味を有するように設定することができる。
このように、メタ条件関数を利用することにより、条件設定部221は、様々な条件式を生成することができる。
ベクトル変換部222は、条件設定部221によって生成された条件式に基づいて、ユーザーの動作をバイナリーベクトルに変換することにより、動作情報を獲得することができる。
つまり、ベクトル変換部222は、前記ユーザーの動作情報に対応するポーズ集合に含まれるポーズ情報のそれぞれを前記条件式の因子として入力して、各ポーズ情報に対応するバイナリー値を獲得することができ、これに前記一連のポーズ情報で構成される動作に対するバイナリーベクトルを生成することができ、前記バイナリーベクトルを動作情報として獲得することができる。
一方、動作決定部230は、動作情報及び比較対象情報を比較することにより、ユーザーの実際動作とマッチングされる比較対象情報を決定することができる。
このような比較対象情報を格納するための格納部(図示せず)を動作決定部230は、含むことができ、または外部に位置する格納装置(図示せず)、例えば、データベースと通信することができる。
つまり、比較対象情報は、1つ以上存在し、前記比較対象情報のそれぞれと、動作情報間に動的タイムワーピング(dynamic time warping)を実行することにより、前記1つ以上の比較対象情報のうち、ユーザーの実際動作と最も近い比較対象情報を決定することができる。
また、前記決定された比較対象情報に対応する命令が存在したら、動作決定部230は、ユーザーの実際動作に対応する命令が入力されたことを感知することができる。
一方、図4に示された実施例による動作認識方法は、図2及び図3に示された動作認識装置200で時系列的に処理されるステップなどを含む。従って、以下で省略された内容であるといっても、図2及び図3のそれぞれで示された動作認識装置200に関して以上で記述した内容は、図4に示された実施例による動作認識方法にも適用され得る。
先ず、動作認識装置200は、ユーザーの実際動作を受信することができる(S4000)。このとき、動作認識装置200は、NUI装置100を介して、ユーザーの実際動作に対応する一連のイメージフレームを受信することができ、イメージフレームを受信したら、動作認識装置200は、前記イメージフレームのそれぞれからポーズ情報を抽出することにより、動作認識装置200は、ユーザーの動作を受信することもできる。また、前記のようなポーズ情報抽出プロセスがNUI装置100によって実行され、動作認識装置200は、前記ポーズ情報を受信することにより、ユーザーの動作を受信することもできる。
また、ユーザー関節の3次元位置などから構成されるポーズ情報に基づいて、動作認識装置200は、ユーザーの動作をバイナリーベクトルに変換することにより、動作情報を獲得することができる(S4001)。
このために、動作認識装置200は、メタ条件関数を利用して、ユーザーの動作に対応するバイナリーベクトルを生成するための様々な条件式を生成することができる。
例えば、動作認識装置200は、数式2に基づいて、“左手が身体の前にあるか否か”、または“右手が身体の前にあるか否か”を決定できる条件式を生成することができる。
また、例えば、動作認識装置200は、数式3に基づいて“左手が身体の外側にあるか否か”、“右手が身体の外側にあるか否か”、“左手が身体の内側にあるか否か”、“右手が身体の内側にあるか否か”、“左手が胴体よりも高くあるか否か”、“右手が胴体よりも高くあるか否か”、“左手が頭よりも高くあるか否か”または“右手が頭よりも高くあるか否か”を決定できる条件式を生成することができる。
また、例えば、動作認識装置200は、数式4に基づいて、“左腕の肘が作る角が(0゜、60゜)の間にあるか否か”、“左腕の肘が作る角が(60゜、120゜)の間にあるか否か”、“左腕の肘が作る角が(120゜、180゜)の間にあるか否か”、“右腕の肘が作る角が(0゜、60゜)の間にあるか否か”、“右腕の肘が作る角が(60゜、120゜)の間にあるか否か”、“右腕の肘が作る角が(120゜、180゜)の間にあるか否か”、“左膝が作る角が(0゜、60゜)の間にあるか否か”、“左膝が作る角が(60゜、120゜)の間にあるか否か”、“左膝が作る角が(120゜、180゜)の間にあるか否か”、“右膝が作る角が(0゜、60゜)の間にあるか否か”、“右膝が作る角が(60゜、120゜)の間にあるか否か”、“右膝が作る角が(120゜、180゜)の間にあるか否か”、“両腕が作る角が(0゜、60゜)の間にあるか否か”、“両腕が作る角が(60゜、120゜)の間にあるか否か”または“両腕が作る角が(120゜、180゜)の間にあるか否か”を決定できる条件式を生成することができる。
また、例えば、動作認識装置200は、数式5に基づいて、“両手が互いに近くにあるか否か”、“左手が頭の近くにあるか否か”または“右手が頭の近くにあるか否か”を決定できる条件式を生成することができる。
また、例えば、動作認識装置200は、数式6に基づいて、“左手の速度方向が垂直方向であるか否か”、“右手の速度方向が垂直方向であるか否か”、“左手の速度方向が水平方向であるか否か”または“右手の速度方向が水平方向であるか否か”を決定することができる条件式を生成することができる。
併せて、例えば、動作認識装置200は、数式7に基づいて、“左手の速度が1秒ぶりに両肩を通る水準であるか否か”、または“右手の速度が1秒ぶりに両肩を通る水準であるか否か”を決定できる条件式を生成することができる。
前述されたところによる条件式は、図4の各ステップであるS4000〜S4002が実行される以前または以後に生成されることができ、または、前記各ステップが進行される途中にも生成され得る。
このように生成された様々な条件式にユーザーの動作に応じるポーズ情報を代入することができ、これにより、ユーザーの動作に対応するバイナリーベクトルを生成することができる。例えば、動作認識装置200は、30個以上の条件式を設定しておいて、ユーザー動作に対応する30次元以上のバイナリーベクトルを生成することができる。
そし、前記のように生成されたバイナリーベクトルは、動作情報として設定されることができ、動作認識装置200は、前記のような動作情報と比較対象情報との間の動作タイムワーピングを実行することができる(S4002)。動的タイムワーピングを実行するとき、バイナリーベクトルに変換された動作情報と比較対象情報との間の差の計算は、両バイナリーベクトル間の論理演算で簡単に実行され得る。
動的タイムワーピングによって決定された動作に対応する命令が存在すると、動作認識装置200は、命令処理装置300に前記命令を処理するようにすることができる。
図4を介して説明された実施例による動作認識方法は、コンピュータによって実行されるプログラムモジュールのようなコンピュータによって実行可能な命令語を含む記録媒体の形態でも具現され得る。コンピュータ読み取り可能な媒体は、コンピュータによってアクセスされ得る任意の可用媒体であることができ、揮発性及び非揮発性媒体、分離型及び非分離型媒体をいずれも含む。また、コンピュータ読み取り可能な媒体は、コンピュータ格納媒体及び通信媒体をいずれも含むことができる。コンピュータ格納媒体は、コンピュータ読み取り可能な命令語、データ構造、プログラムモジュールまたはその他のデータのような情報の格納のための任意の方法または技術で具現された揮発性及び非揮発性、分離型及び非分離型媒体をいずれも含む。通信媒体は、典型的に、コンピュータ読み取り可能な命令語、データ構造、プログラムモジュール、または搬送波のような変調されたデータ信号のその他のデータ、またはその他の送信メカニズムを含み、任意の情報伝達媒体を含む。
また、本発明の一実施例による動作認識方法は、コンピュータによって実行可能な命令語を含むコンピュータプログラム(またはコンピュータプログラム製品)で具現されることもできる。コンピュータプログラムは、プロセッサによって処理されるプログラミング可能な機械命令語を含み、高レベルのプログラミング言語(High−level Programming Language)、客体指向プログラミング言語(Object−oriented Programming Language)、アセンブリ言語または機械言語などから具現され得る。また、コンピュータプログラムは、類型のコンピュータ読み取り可能な記録媒体(例えば、メモリ、ハードディスク、磁気/光学媒体またはSSD(Solid−State Drive)など)に記録され得る。
従って、本発明の一実施例による動作認識方法は、前述したようなコンピュータプログラムがコンピューティング装置によって実行されることによって具現され得る。コンピューティング装置は、プロセッサと、メモリと、格納装置と、メモリ及び高速拡張ポートに接続している高速インタフェースと、低速バスと格納装置に接続している低速インタフェースのうち、少なくとも一部を含むことができる。このような成分などのそれぞれは、様々なバスを利用して互いに接続されており、共通マザーボードに搭載されるか、他の適切な方式で装着され得る。
ここで、プロセッサは、コンピューティング装置内で命令語を処理することができるが、このような命令語では、例えば、高速インタフェースに接続されたディスプレイのように外部入力、出力装置上にGUI(Graphic User Interface)を提供するためのグラフィック情報を表示するために、メモリや格納装置に格納された命令語を挙げることができる。他の実施例として、多数のプロセッサ及び(または)多数のバスが適切に多数のメモリ及びメモリ形態と共に利用され得る。また、プロセッサは、独立的な多数のアナログ及び(または)デジタルプロセッサを含むチップなどがなすチップセットで具現され得る。
また、メモリは、コンピューティング装置内で情報を格納する。一例として、メモリは、揮発性メモリユニットまたはそれらの集合で構成され得る。他の例として、メモリは、非揮発性メモリユニットまたはそれらの集合で構成され得る。また、メモリは、例えば、磁気あるいは光ディスクのように他の形態のコンピュータ読み取り可能な媒体であることもできる。
そして、格納装置は、コンピューティング装置に大容量の格納空間を提供することができる。格納装置は、コンピュータ読み取り可能な媒体であるとか、このような媒体を含む構成であることができ、例えば、SAN(Storage Area Network)内の装置などや他の構成も含むことができ、フロッピーディスク装置、ハードディスク装置、光ディスク装置、あるいはテープ装置、フラッシュメモリ、それと類似した他の半導体メモリ装置あるいは装置アレイであり得る。
前述した本発明の説明は、例示のためのものであり、本発明が属する技術分野の通常の知識を有する者は、本発明の技術的思想や必須の特徴を変更せずに、他の具体的な形態で容易に変形が可能であることを理解することができるだろう。従って、以上で記述した実施例などは、すべての面において例示的なものであり、限定的ではないものとして理解すべきである。例えば、単一型で説明されている各構成要素は、分散されて実施されることもでき、同様に分散されたものとして説明されている構成要素なども結合された形態で実施され得る。
本発明の範囲は、前記詳細な説明よりも後述する特許請求の範囲によって示され、特許請求の範囲の意味及び範囲、そして、その均等概念から導出されるすべての変更または変形された形態が本発明の範囲に含まれるものとして解釈されるべきである。