【文献】
Sven Bambach et al.,"Lending A Hand: Detecting Hands and Recognizing Activities in Complex Egocentric Interactions",2015 IEEE International Conference on Computer Vision,米国,IEEE,2015年12月 7日,pp.1949-1957
【文献】
T. Hoang Ngan Le et al.,"Robust hand detection in Vehicles",2016 23rd International Conference on Pattern Recognition (ICPR),米国,IEEE,2016年12月 4日,pp.573-578
【文献】
山下 隆義、外5名,“Deep Convolutional Neural Networkによる手形状領域の抽出”,SSII2014 第20回画像センシングシンポジウム 講演論文集,日本,画像センシング技術研究会,2014年 6月11日,pp.1-6
(58)【調査した分野】(Int.Cl.,DB名)
前記セグメントは、対象の手の第1の部分を含む第1のセグメントと、対象の少なくとも片手の第2の部分を含む第2のセグメントと、を含み、前記第1の部分と前記第2の部分とが少なくとも部分的に重なり合っている、
ことを特徴とする請求項1に記載の方法。
前記方法は、バッチ勾配降下法により、対象の手の位置及びサイズのマーキングを有するトレーニング画像データを用いて、前記第1の位置決めネットワークを訓練するステップをさらに含む、
ことを特徴とする請求項1に記載の方法。
画像における対象の手の検出システムであって、前記システムは、機械読み取り可能な命令を実行するように構成されるプロセッサを含み、前記機械読み取り可能な命令が実行される場合、前記システムは、
1つ又は複数の対象の1つ又は複数の手を捉えた画像の画像データを受信するステップと、
第1の位置決めネットワークにより画像データを処理して前記画像におけるセグメントを取得し、前記セグメントのそれぞれは、対象の手の部分を含むステップと、
前記セグメントを第1の画像領域に組み合わせるステップと、
前記第1の画像領域のサイズを所定のマージンで拡大するステップと、
グリッドに基づく検出ネットワークにより前記第1の画像領域を処理して、対象の手を捉えた第2の画像領域を取得するステップと、を実行し、
前記第1の画像領域のサイズを所定のマージンで拡大するステップは、
前記画像をn×nグリッドに分割するステップと、
前記第1の画像領域を所定のマージンで拡大するステップと、
前記第1の画像領域の境界をグリッドと位置合わせするステップと、を含み、
前記所定のマージンは、単一のグリッドユニットのサイズである
ことを特徴とする画像における対象の手の検出システム。
前記セグメントは、対象の手の第1の部分を含む第1のセグメントと、対象の少なくとも片手の第2の部分を含む第2のセグメントと、を含み、前記第1の部分と前記第2の部分とが少なくとも部分的に重なり合っている、
ことを特徴とする請求項8に記載のシステム。
前記プロセッサは、さらに、バッチ勾配降下法により、対象の手の位置及びサイズのマーキングを有するトレーニング画像データを用いて、前記第1の位置決めネットワークを訓練するように構成される、
ことを特徴とする請求項8に記載のシステム。
【発明を実施するための形態】
【0014】
機械学習において、畳み込みニューラルネットワーク(CNN又はConvNet)は、フィードフォワード人工ニューラルネットワークの一種であり、そのニューロン間の接続パターンが、動物の視覚皮質組織から発想を得ている。各皮質ニューロンは、受容野と呼ばれる視野の限定された領域において刺激に応答する。異なるニューロンの受容野は、全視野を覆うように部分的に重なり合っている。畳み込み演算によりそれらの受容野内の刺激に対する個体のニューロンの応答を数学的に近似することができる。
【0015】
画像認識について、畳み込みニューラルネットワーク(CNN)は、通常、複数層の受容野から構成することができる。これらは、入力画像を処理する一部の小型ニューロンのセットである。通常のニューラルネットワークと異なって、CNNの層は、幅、高さ、深さの三次元に配置されたニューロンを有することができる。(なお、本明細書において、「深さ」とは、ニューラルネットワークの全体の深さではなく、活性化ボリュームの第3の次元を指すものであり、ネットワーク内の層の総数を指してもよい)。例えば、CIFAR−10における入力画像は、活性化入力ボリュームを有することができ、当該ボリュームは、32×32×3(それぞれ幅、高さ、深さである)の次元を有する。CNNは、そのニューロンを幅、高さ、深さの三次元に配置することができる。CNNの各層は、いずれも3D入力ボリュームをニューロンのアクティブな3D出力ボリュームに変換することができる。例えば、CNNは、画像データを保持する入力層を有することができるため、その幅及び高さは、画像の次元になり、深さは、3(赤、緑、青のチャンネル)となる。例えば、RGB入力画像は、32×32×3の画素値を有することができ、すなわち、幅が32画素を有し、高さが32画素を有し、深さが3(すなわち、R、G及びBの3つのカラーチャンネル)である。
【0016】
手の検出は、例えば、家電製品(例えば、エアコン)用非接触型インターフェースの設計にとって重要なものである。このようなインターフェースは、例えば、家電製品を制御するために、ユーザがジェスチャーで家電製品とインタラクションすることを許容することができる。ディープCNNを有する対象の検出は、既に成功している。対象検出における方法は、手の検出に用いることができるが、いくつかの変化がある。CNNに基づいたこれらの手の検出のキーポイントは、様々な手の位置及びサイズを捉えた異なるデータ集合である。これらの技術に用いられるデータ集合は、通常その(1つ又は複数の)手を有する対象(例えば、人間)を捉えた画像を含む。画像は、通常人間の顔及び/又は体を表示する距離から対象を捉える。数多くの場合において、画像は、対象の背景を捉えることもできる。その後、これらの画像は、ディープCNNにフィードバックされて、手の検出に用いられる。
【0017】
本開示の発明者によって提供される1つの見解は、入力データ(例えば、画像)が画像内の対象の手に無関係な大量の情報を含むため、手の検出ための従来のCNNに基づいた技術は、通常時間がかかることである。多くの場合において、入力データは、これらの技術に採用されるディープCNNにおける異なる層により処理されて手が検出される。これは、大量な計算能力を必要とするため、時間がかかるようになる。本開示によって提供される当該課題に対する1つの解決策は、簡単なCNNを粗略な位置決めネットワークとして、対象の画像における、対象の1つ又は複数の手を含む1つ又は複数の領域を大まかに位置決めすることである。その後、対象の手のみを含む(1つ又は複数の)画像領域に対してより精細な検出が実行されるように、これらの領域は、グリッドに基づいた検出ネットワークを用いてさらに処理することができる。このような方式により、CNNに基づく手検出技術に採用されるディープCNNにより処理される必要のある情報がより少なくなるだけでなく、入力データが対象の(1つ又は複数の)手に関するデータのみを含むため、より高い正確さを実現することができる。
【0018】
本開示に係る手の検出は、一般的に3つの段階に分けることができる。第1の段階において、対象の画像を受信することができる。当該画像は、画像における対象の(1つ又は複数の)手と無関係な情報を含むことができる。同様に、第1の段階において、簡単なカスケードCNN(例えば、2つのサブ段階)を粗略な位置決めネットワークとして、画像における、対象の(1つ又は複数の)手の一部を含む1つ又は複数のセグメントを大まかに位置決めすることができる。対象の(1つ又は複数の)手のような位置は、対象の手の大まかな位置と理解されてもよい。これらのセグメントは、互いに重なり合っている対象の(1つ又は複数の)手の部分を含むことができる。
【0019】
第2の段階において、粗略な位置決めネットワークによって位置決めされたセグメントを処理して、画像における、対象の手を含むと予測された1つ又は複数の領域及び対象の手に関するいくつかのコンテクスト情報を取得することができる。画像において対象の片手のみを捉えた場合、1つの領域を取得することができる。画像において対象の2つの手を捉えた場合、2つの手を含む1つの領域又は2つの領域を取得することができる。当然なことながら、画像において捉えられた対象が複数存在する場合、複数の領域を取得することができる。しかし、粗略な位置決めネットワークの精度が高い必要がないため、手を含まないいくつかの領域が存在する可能性がある。これは、第3の段階で補正することができる。
【0020】
第3の段階において、第2の段階で取得された画像における領域を、グリッドに基づく検出ネットワークに供給して、対象の手のみを含む(1つ又は複数の)画像領域をより精細に認識することができる。第3の段階の結果は、対象の手のみを含む入力画像の一部である。この段階は、対象の手のより精細な検出と理解されてもよい。
【0021】
図1は、本開示に係る画像において捉えられた対象の手を認識することを概念的に示す。
図2は、本開示に係る画像において捉えられた対象の手を認識するための例示的な一方法200を示す。
図1及び
図2を互いに参照しながら説明する。まず、
図2を参照し、
図2に示された特定の一連の処理ステップは、限定するものではない。なお、処理ステップは、
図2に示された順番と異なる順番で実行することができ、また、
図2に示されたステップが必ずしも全部実行されるわけではない。いくつかの実行形式において、方法200は、
図9に示すようなシステムによって生成することができる。
【0022】
いくつかの実施例において、方法200に示す方法は、1つ又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報を処理するように設計されるデジタル回路、情報を処理するように設計されるアナログ回路、ステートマシン、及び/又は情報を電子的に処理するための他の機械装置)において生成することができる。当該1つ又は複数の処理装置は、電子記憶媒体に電子的に記憶されている命令に応答して、方法200の一部又は全ての操作を実行する1つ又は複数の装置を含むことができる。当該1つ又は複数の処理装置は、方法200の1つ又は複数の操作を実行するために特別に設計されるようにハードウェア、ファームウェア及び/又はソフトウェアによって構成される1つ又は複数の装置を含むことができる。
【0023】
202において、画像のデータを受信することができる。202において受信できる画像の例は、
図1に示す108として示されている。
図1に示すように、画像108は、対象、例えば、人間を含むことができ、対象は、ある方式で置かれた少なくとも片手を有するものとして捉えることができる。手検出の目標は、対象の手の位置及びサイズを求めることである。手の領域は、手の1つ又は複数のパラメータに関する定義を有することができる。手検出の結果は、その後のジェスチャー認識に用いることができる。いくつかの実施例において、ジェスチャーは、家電製品を制御するための1つ又は複数の制御命令に変換又はマッピングすることができる。
【0024】
図2を再度に参照し、204において、202において受信された画像データを、粗略な位置決めネットワークに送信して、画像において対象の手の一部を含む1つ又は複数のセグメントを大まかに位置決めすることに用いることができる。
図1を参照し、この例における対象は、画像108において捉えられた1つの手を有する。ステップ204の目標は、例えば、この例に示す112a−nのような画像108における複数のセグメントを認識することである。これらのセグメントのそれぞれは、少なくとも画像108において捉えられた対象の手の一部を含むことができる。1つ又は複数の方法により、204において実行されるセグメントの位置決めを実現することができる。いくつかの実行形式において、セグメントは、下記の数式1のように表現することができる。
【数1】
【0025】
ここで、R0_iは、さらに下記の数式2のように表現することができる。
【数2】
【0026】
ここで、(x0_i,y0_i)は、画像108において捉えられた対象の手の一部を有すると予測されたi番目のセグメントの座標を表し、(w0_i,h0_i)は、i番目のセグメントの幅及び高さを表し、s0_iは、i番目のセグメントが画像108において捉えられた対象の手の一部を有する信頼度を表す。
【0027】
いくつかの例において、204において、簡単なカスケードCNNを大まかな手のセグメントの位置決めに用いることができる。前述したように、ステップ204の目標は、画像108においてセグメント112a−nを大まかに位置決めすることである。この目標を実現するために、採用される粗略なCNN102は、あまり深くなくてもよい。一実行形式実現において、2つのサブ段階カスケードCNNで画像108におけるセグメント112a−nを位置決めすることができる。これは、
図3に示されている。図に示すように、
図1に示す粗略な位置決めネットワーク102に用いられたカスケードCNNは、直列に接続される第1のサブ段階302と第2のサブ段階とを有することができ、これにより、画像108の画像データを粗略なCNN102に供給することができ、セグメント112a−nを位置決めすることができる。このような方式により、画像108において捉えられた対象の手に無関係な情報の大部分を、さらなる処理により除去することができ、対象の手に関するデータに集中して、さらなる処理に用いることができる。
【0028】
図2を再度に参照し、206において、粗略な位置決めネットワークから、206において位置決めされた1つ又は複数の画像のセグメントを受信することができる。なお、206において受信された各セグメントは、対象の手の部分を含むことができる。これは、
図4に示される。
図4に示すように、4つのセグメント404a−dが、対象の手402の一部を含むと予測されている。示すように、各セグメントは、互いに重なり合っている手の部分を有することができる。この例において、404aは、他の3つのセグメントのそれぞれと重なり合っており、また、他の3つのセグメントも同様である。
【0029】
図2を再度に参照し、208において、206において受信されたセグメントを組み合わせて、画像において対象の(1つ又は複数の)手を含むと予測された1つ又は複数の領域を取得することができる。前述したように、208において取得された各領域は、画像において捉えられた対象の異なる手を含むことができる。ステップ208の目標は、対象の(1つ又は複数の)手を含む(1つ又は複数の)領域を見出し、精細なグリッドに基づく検出ネットワークの入力間の重なり合いを回避して計算を削減することである。
【0030】
208において、206において受信されたセグメントを組み合わせることにより取得することができる所定の領域セットS1は、下記の数式3のように表現することができる。
【数3】
【0031】
ここで、R1_kは、S1領域セットにおけるk番目の領域を表す。R1_kは、例えば、R0_i及びR0_jのような、重なり合っているR0セグメントから取得することができる。R0_iが、R0_i=(x0_i,y0_i,w0_i,h0_i,s0_i)のパラメータを有し、R0_jが、R0_j=(x0_j,y0_j,w0_j,h0_j,s0_j)のパラメータを有し、R1_kが、(x1_k,y1_k,w1_k,h1_k)のパラメータを有することを仮定すると、以下の数式4の関係でR1_kを取得することができる。
【数4】
【0032】
図5は、
図4に示す204において位置決めされたセグメントを組み合わせることにより取得された領域502(S1)の一例を示すものである。
【0033】
図2を再度に参照し、210において、208において取得された領域を拡大することができる。ステップ208の目標は、208において取得された領域において捉えられた対象の手に関するいくつかのコンテクスト情報を含むことであり、これは、コンテクスト情報がステップ212において対象の手をさらに認識することに役立つことができるからである。ステップ208の他の目標は、グリッドユニットのサイズが予め設定されたグリッドに分割することができるように、領域を拡大することである。
図6は、ステップ208が含み得るいくつかの操作の1つの例示的なフローチャート600を示すものである。
図2を参照して
図6を説明する。
【0034】
602において、202において受信された画像(例えば、画像108)をn*nグリッドに分割することができる。画像108が幅Wと高さHとを有すると仮定すると、単一の画像ブロックは、幅=W/n、高さ=H/nという次元を有することができる。
【0035】
604において、208において取得された領域のそれぞれを少なくとも1つのグリッドユニットのサイズで拡大して、新たな拡大領域を取得することができる。示すように、R1_iを例として、R1_iは、R1_i=(x1_i,y1_i,w1_i,h1_i)とのパラメータを有する。拡大された領域がR2_iであり且つR2_i=(x2_i,y2_i,w2_i,h2_i)とのパラメータを有すると仮定すると、R1_iとR2_iとの間の関係は、以下の数式5のように表現することができる。
【数5】
【0036】
ここで、wは、グリッドユニットの幅、即ちW/nを表し、hは、グリッドユニットの高さ、即ちH/nを表す。なお、以上の条件表現式は、R1_iが少なくとも1つの画像ブロックで拡大されて、202において受信された画像の境界を超えることができる状況を説明するためのものである。この場合、受信された画像202の境界は、拡大されたブロックR2_iの境界として用いられる。
【0037】
606において、拡大された領域の境界は、グリッドに位置合わせすることができる。S3が606で位置合わせされた後の領域セットであり且つS3が、対象の手及びいくつかのコンテクスト情報を含むm個の領域R3を有することができ、S3={R3_1,R3_2,...R3_i...,R3_m}と表現することができ、R3_iは、S3におけるi番目の領域を表し、且つR3_i=(x3_i,y3_i,w3_i,h3_i)とのパラメータを有することができると仮定すると、R3_iは、以下の数式6のように表現することができる。
【数6】
【0038】
ここで、wとhは、グリッドユニットの幅と高さである。例示的な領域S3は、
図1において114と示されている。見てわかるように、上記操作により、画像において対象の手及びいくつかのコンテクストを認識することができる。
【0039】
図7は、
図6に示すプロセスによって取得された画像領域の一例を示す。この例に示すように、
図5に示す組み合わせられた第1の画像領域を、まず、1つのグリッドユニットで拡大して、拡大領域702を取得することができる。他の画像領域704を取得するために、画像におけるグリッドユニットにマッピングされるように、領域702の境界を拡大して、位置合わせすることができる。
【0040】
引き返して
図2を参照し、212において、210で取得された画像領域(例えば、
図7に示す領域704)を、グリッドに基づく検出ネットワークに送信して、210で取得された画像領域において捉えられた対象の手のより正確(精細)な認識に用いることができる。211の目標は、精細なグリッドに基づく検出ネットワークの入力が、精細な検出に十分なコンテクストを有し、精細なグリッドに基づく検出ネットワークを、グリッドユニットのサイズが予め決定されたグリッドに分割することができることを確保することである。精細なグリッドに基づく検出ネットワークは、
図1において、106として概念的に示されている。いくつかの実行形式において、精細な検出ネットワーク106は、複数の層(例えば、3つより多くの層)を有することができる。精細な検出ネットワーク106は、受信された画像を、そのグリッドユニットのサイズが前述したw*h(すなわち、w=W/n、h=H/n)であるグリッドに分割することにより画像を処理するように設計され得る。精細な検出ネットワーク106は、それの対象の手と関連する信頼度スコアにより、精細な検出ネットワーク106によって受信された画像における各グリッドユニットを処理するように設計され得る。実行形式において、閾値信頼度スコアより高い信頼度スコアを有する画像ブロックが212において組み合わせられて、対象の手の認識を取得するために、閾値信頼度スコアを予め決定することができる。
図1に示すように、手認識116は、画像領域114を精細な検出ネットワーク106に送信することより、取得することができる。画像領域114及び116を比較すると、領域116は、対象の手にさらに集中しており、かつ、領域114より小さい。
【0041】
いくつかの実行形式において、バッチ勾配降下法でデータを訓練することにより、粗略な位置決めネットワーク102を訓練することができる。トレーニングデータは、これらの画像における対象の手の位置及びサイズの手動マーキングを有する複数のRGB画像を含むことができる。例えば、トレーニングデータにおける所定の画像において捉えられた対象の手にタグを定義することができる。タグの左上隅及び右下隅の座標は、トレーニングデータとしてマーキングすることができる。手動マーキングの他の方法も考えられる。
【0042】
精細な検出ネットワーク106の訓練について、まず、粗略な位置決めネットワークを訓練するためのトレーニングデータを、粗略な位置決めネットワーク102に送信して、ステップ204によってセグメントを取得することができる。その結果セットがW0であると仮定すると、結果セットW0における認識されたセグメントと、画像における手動マーキングとを比較して、全てのマーキングが結果セットにおいてカバーされているか否かを決定することができる。1つ又は複数のマーキングが結果セットW0にカバーされていないと、ステップ208及び210によって、これらのマーキングをカバーした1つ又は複数のセグメントを結果セットW0に追加して、新たなセットW1を取得することができる。その後、新たなセットW1を、トレーニングデータ(対象の手の手動マーキングを有する)と共に粗略な位置決めネットワーク106に送信して、第2のCNN106を訓練することができる。いくつかの実行形式において、バッチ勾配降下法により、このようなデータを用いて粗略な位置決めネットワーク106を訓練することができる。
【0043】
いくつかの実行形式において、
図1及び
図2に示す方法により、対象の複数の手を認識することができる。これは、
図8に概念的に示されている。見て分かるように、対象の各手のセグメント802、すなわち、802a及び802bは、まず、粗略な位置決めネットワーク102によって位置決めすることができる。その後、組み合わせ及び拡大プロセス104により、セグメント802aを804aに処理し、セグメント804bを、804bに処理することができる。領域804a及び804bを精細なグリッドに基づく検出ネットワーク106によってさらに処理して、対象の右手806bの認識及び対象の左手806aの認識を取得することができる。
【0044】
図9は、コンピュータシステム900のブロック図である。
図9は、単に説明するためのものである。いくつかの実施例において、コンピュータシステムは、単一のコンピュータ装置を含み、サブシステムは、コンピュータ装置のコンポーネントであってもよい。他の実施例において、コンピュータシステムは、内部コンポーネントを有する複数のコンピュータ装置を含むことができ、それぞれのコンピュータ装置は、サブシステムである。コンピュータシステム900及びそのいずれかのコンポーネント又はサブシステムは、本明細書に記載の方法を実行するように構成されるハードウェア及び/又はソフトウェア要素を含むことができる。
【0045】
コンピュータシステム900は、1つ又は複数のデータプロセッサ又は中央処理装置(CPU)905、1つ又は複数のグラフィックプロセッサ又はグラフィック処理装置(GPU)910、メモリサブシステム915、記憶サブシステム920、1つ又は複数の入力/出力(I/O)インターフェース925、通信インターフェース930などの周知なコンピュータコンポーネントを含むことができる。コンピュータシステム900は、上記のコンポーネントを相互接続し、接続性および装置間通信などの機能を提供するシステムバス935を含むことができる。
【0046】
1つ又は複数のデータプロセッサ又は中央処理装置(CPU)905は、アプリケーション固有の機能を提供するためのロジック又はプログラムコードを実行することができる。(1つ又は複数の)CPU905のいくつかの例は、1つ又は複数のマイクロプロセッサ(例えば、シングルコア及びマルチコア)又はマイクロコントローラ、1つ又は複数のフィールドゲートプログラマブルアレイ(FPGA)、及び特定用途向け集積回路(ASIC)を含むことができる。本明細書で使用されるように、プロセッサは、同一集積チップ上のマルチコアプロセッサ又は単一の回路基板上の又はネットワーク化される複数の処理ユニットを含む。
【0047】
1つ又は複数のグラフィックプロセッサ又はグラフィック処理装置(GPU)910は、グラフィックと関連する、又はグラフィック特有の機能を提供するためのロジック又はプログラムコードを実行することができる。GPU910は、従来のビデオカードによって提供されるものなど、任意の従来のグラフィック処理装置を含むことができる。様々な実施例において、GPU910は、1つ又は複数のベクトル又は並列処理装置を含むことができる。これらのGPUは、ユーザプログラム可能であり、特定タイプのデータ(例えば、ビデオデータ)を符号化/復号化するための、又は2D又は3D描画操作、テクスチャリング操作、シェーディング操作などを加速するためのハードウェア要素を含むことができる。1つ又は複数のグラフィックプロセッサ又はグラフィック処理装置(GPU)910は、任意の数のレジスタ、ロジックユニット、算術ユニット、キャッシュ、メモリインターフェースなどを含むことができる。
【0048】
メモリサブシステム915は、例えば、機械読み取り可能な製品、情報記憶装置、又はコンピュータ読み取り可能な記憶媒体を使用して、情報を記憶することができる。いくつかの例は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROMS)、揮発性メモリ、不揮発性メモリ、及び他の半導体メモリを含むことができる。メモリサブシステム915は、データ及びプログラムコード940を含むことができる。
【0049】
記憶サブシステム920もまた、機械読み取り可能な製品、情報記憶装置、又はコンピュータ読み取り可能な記憶媒体を使用して、情報を記憶することができる。記憶サブシステム920は、記憶媒体945を使用して、情報を記憶することができる。記憶サブシステム920によって使用される記憶媒体945のいくつかの例は、フロッピーディスク、ハードディスク、CD−ROMS、DVD、及びバーコードのような光学記憶媒体、リムーバブル記憶装置、ネットワークストレージなどを含むことができる。いくつかの実施例において、データ及びプログラムコード940の全部又は一部は、記憶サブシステム920を使用して記憶することができる。
【0050】
1つ又は複数の入力/出力(I/O)インターフェース925が、I/O動作を実行することができる。1つ又は複数の入力装置950及び/又は1つ又は複数の出力装置955は、1つ又は複数のI/Oインターフェース925に通信可能に結合することができる。1つ又は複数の入力装置950は、コンピュータシステム900用の1つ又は複数のソースから情報を受信することができる。1つ又は複数の入力装置950のいくつかの例は、コンピュータマウス、トラックボール、トラックパッド、ジョイスティック、ワイヤレスリモコン、描画タブレット、音声コマンドシステム、視線追跡システム、外部記憶システム、タッチスクリーンとして適切に構成されるモニタ、トランシーバとして適切に構成される通信インターフェースなどを含むことができる。様々な実施例において、1つ又は複数の入力装置950は、コンピュータシステム900のユーザが、1つ又は複数の非グラフィカル又はグラフィカルユーザインターフェースとインタラクションして、コマンド、ボタンのクリック等を介してコメントを入力すること、オブジェクト、アイコン、テキスト、ユーザインターフェースウィジェット、又はモニタ/ディスプレイ装置に現れる他のユーザインターフェース要素を選択することを許容することができる。
【0051】
1つ又は複数の出力装置955は、コンピュータシステム900用の1つ又は複数の宛先に情報を出力することができる。1つ又は複数の出力装置955のいくつかの例は、プリンタ、ファックス、マウス又はジョイスティック用のフィードバック装置、外部記憶システム、モニタ又は他のディスプレイ装置、トランシーバとして適切に構成される通信インターフェース等を含むことができる。1つ又は複数の出力装置955は、コンピュータシステム900のユーザが、オブジェクト、アイコン、テキスト、ユーザインターフェースウィジェット、又は他のユーザインターフェース要素を閲覧することを許容することができる。表示装置又はモニタは、コンピュータシステム900と共に使用されてもよく、情報を表示するために構成されるハードウェア及び/又はソフトウェア要素を含んでもよい。
【0052】
通信インターフェース930は、データの送受信を含む通信動作を実行することができる。通信インターフェース930のいくつかの例は、ネットワーク通信インターフェース(例えば、イーサネット、Wi−Fiなど)を含むことができる。例えば、通信インターフェース930は、コンピュータネットワーク、USBハブなどのような通信ネットワーク/外部バス960に結合することができる。コンピュータシステムは、例えば、通信インターフェース930又は内部インターフェースによって接続される、複数の同一コンポーネント又はサブシステムを含むことができる。いくつかの実施例において、コンピュータシステム、サブシステム、又は装置は、ネットワークを経由して通信することができる。このような場合では、1つのコンピュータは、クライアントと見なされ、また、別のコンピュータは、サーバと見なされてもよく、それぞれは、同一コンピュータシステムの一部であってもよい。クライアント及びサーバはそれぞれ、複数のシステム、サブシステム、又はコンポーネントを含むことができる。
【0053】
コンピュータシステム900は、プロセッサによって実行される、本明細書に開示される技術を実行して操作し又は他の方式で実現するための1つ又は複数のアプリケーション(例えば、ソフトウェアコンポーネント又は機能)をさらに含むことができる。これらのアプリケーションは、データ及びプログラムコード940として具現化することができる。また、コンピュータプログラム、実行可能コンピュータコード、人間読み取り可能なソースコード、シェーダコード、レンダリングエンジンなど、及びデータ(例えば、画像ファイル、オブジェクトの幾何学的記述を含むモデル、オブジェクトの順序付けされた幾何学的記述、モデルのプロセス記述を含むモデル、シーン記述子ファイルなど)が、メモリサブシステム915及び/又は記憶サブシステム920に記憶することができる。
【0054】
そのようなプログラムは、さらに、様々なプロトコルに準拠する有線、光学、及び/又は無線ネットワークを介した伝送に適合する搬送波信号を使用して符号化及び伝送することができる。したがって、本発明の実施例に係るコンピュータ読み取り可能な媒体は、そのようなプログラムで符号化されたデータ信号を使用して作成することができる。プログラムコードで符号化されたコンピュータ読み取り可能な媒体は、互換性のある装置とともにパッケージ化されてもよく、又は他の装置と別に提供されてもよい(例えば、インターネットを介してダウンロードする)。任意のそのようなコンピュータ読み取り可能な媒体は、単一のコンピュータ製品(例えば、ハードドライブ、CD、又はコンピュータシステム全体)上又は内部に存在してもよく、システム又はネットワーク内の異なるコンピュータ製品上又は内部に存在してもよい。コンピュータシステムは、本明細書で述べられた結果のいずれかをユーザに提供するための、モニタ、プリンタ、又は他の適切なディスプレイを含むことができる。
【0055】
本明細書に記載するいずれかの方法は、ステップを実行するように構成され得る1つ又は複数のプロセッサを含むコンピュータシステムによって完全に又は部分的に実行され得る。したがって、実施例は、対応するステップ又は対応するステップのグループを実行する異なるコンポーネントを潜在的に有する、本明細書に記載するいずれかの方法のステップを実行するように設定されるコンピュータシステムに関することであってよい。番号が付けられたステップとして提供されているが、本明細書の方法のステップは、同時に又は異なる順序で実行されてよい。なお、ステップの一部は、他の方法からの他のステップの一部と一緒に使用され得る。また、ステップの全て又は一部は、任意選択であってよい。なお、いずれかの方法のいずれかのステップは、モジュール、回路、又はこれらのステップを実行するために他の素子で実行され得る。
【0056】
特定の実施例の具体的な詳細は、本発明の実施例の趣旨及び範囲から逸脱することなく、任意の適切な態様で組み合わされてよい。しかしながら、本発明の他の実施例は、個別の態様の各々に関連する具体的な実施例、又はこれら個別の態様の具体的な組み合わせに関するものであってよい。
【0057】
本発明の例示的な実施例の上記の記載は、説明及び記載の目的で提供されている。網羅的であること、又は説明される精密な形態に本発明を限定することを意味せず、上記の教示に鑑みて、多くの変更及び変形が可能である。実施例は、本発明の原理及びその実際の応用を最も良く説明すべく選択され、記載されている。これにより、他の当業者が、様々な実施例において、予期される特定の用途に好適な様々な変更で、本発明を最も良く利用することを可能にする。
【0058】
その教示がこの開示において提示される1つ又は複数の発明のうちのいずれかの種々の実施例が、ソフトウェア、ファームウェア、ハードウェア又はそれらを組合せてロジックの形で生成され得る。ロジックは、この開示において提示された発明の種々の実施例において開示され得る一組のステップを実行するように、ロジックマシンの中央処理装置(CPU又はプロセッサ)に指示するように適合された1組の命令として、機械アクセス可能なメモリ、機械読み取り可能な製品、有形のコンピュータ読み取り可能な媒体、コンピュータ読み取り可能な記憶媒体、又は他のコンピュータ/機械読み取り可能な媒体に格納されてもよい。コードモジュールが、この開示において提示された発明の種々の実施例において方法又はプロセスを実行するために実行される際に、コンピュータシステム又は情報処理装置のプロセッサと共に動作可能となるため、ロジックは、ソフトウェアプログラム又はコンピュータプログラム製品の一部を形成し得る。この開示及び本明細書により提供される教示に基づいて、当業者であれば、提示された1つ又は複数の発明の種々の実施例に開示された動作又は機能のいずれかを、ソフトウェア、ファームウェア、ハードウェア又はそれらの組合せにより生成するための他の形態、変形、修正、取り替え及び/又は方法を理解するであろう。
【0059】
その教示がこの開示において提示され得るそれらの発明におけるいずれかの開示された例、実行形式、及び種々の実施例は、この開示の教示を適正かつ明確に当業者に伝えるための説明的なものに過ぎない。これらの実行形式及び実施例は例示的な図解又は特定の図を参照して説明され得るため、説明された方法及び/又は特定の構造の種々の修正又は変更が、当業者にとって明らかとなる。本開示及び本明細書から見出されたこれらの教示に依存し、かつ、その教示により当該分野の技術を進歩させた、すべてのこれらの修正、変更又は変化は、その教示がこの開示において提示され得る1つ又は複数の発明の範囲内にあると考えられるべきである。よって、当該記載及び図面は限定的な意味であると認めるべきでなく、なお、本開示において提示された発明は、決して何らの形態で図示されたそれらの実施例に限定されないということが理解される。
【0060】
したがって、上述の説明及びあらゆる図面、図解、及び図は、限定的ではなく説明的なものであるよう意図されている。よって、この開示において提示されたあらゆる発明の範囲は、上記説明及び図に示されたそれらの実施例を単純に参照することにより決定されるべきではなく、係属中の請求項、及びその完全な範囲又は同等物を参照して決定されるべきである。