(57)【要約】【課題】２値に基づく画像の分類および分割のための方法および装置を提供する。【解決手段】２値分類の方法および装置は、複数の異なるサブ群を検出するべく複数の浮動小数点の値の符号を利用することと、群に含まれる複数の項目がすべて同一のサブ群に属するかどうかを検出することと、元々のサブ群を複数の同種のサブ群に分割することと、浮動小数点の値の配列に基づいて複数のサブ群を分類することを含む。レイ群におけるコヒーレンスの検出は、複数のレイを含むレイ群を生成することと、レイ群の各レイについて起点と方向を決定することと、レイ群がコヒーレントかどうかを判断することと、複数のレイすべてについて、座標ｘ、ｙおよびｚそれぞれに関して同一の方向に進むと判断される場合、レイ群をコヒーレントであると判断することと、その他の場合にはレイ群をインコヒーレントであると判断し、コヒーレントなレイ群とインコヒーレントなレイ群とを互いに異なるように通過させることによって行われる。【選択図】図２
2009515261.tif 000002
【特許請求の範囲】
【請求項１】
２値分類の方法であって、
複数の異なるサブ群を検出するべく複数の浮動小数点の値の符号を利用することと、
群に含まれる複数の項目がすべて同一のサブ群に属するかどうかを検出することと、
元々のサブ群を複数の同種のサブ群に分割することと、
浮動少数点の値の配列に基づいて複数のサブ群を分類することと
を有する方法。
【請求項２】
２値分類を行うべく、複数のＳＩＭＤ命令が提供される
請求項１に記載の方法。
【請求項３】
群に含まれる複数の項目がすべて同一のサブ群に属するかどうかを検出することはさらに、
前記群に含まれる複数の項目がすべて同一の符号を有するかどうかを検出すること
を含む
請求項１に記載の方法。
【請求項４】
複数のレイ群においてコヒーレンスを検出すること
をさらに有する
請求項１に記載の方法。
【請求項５】
複数のレイ群においてコヒーレンスを検出することはさらに、
複数のレイを含む一のレイ群を生成することと、
前記レイ群の各レイについて一の起点と一の方向を決定することと、
前記レイ群がコヒーレントかどうかを判断することと、
複数のレイすべてについて、座標ｘ、ｙおよびｚそれぞれに関して同一の方向に進むと判断される場合、一のレイ群をコヒーレントであると判断することと、
その他の場合には一のレイ群をインコヒーレントであると判断し、前記コヒーレントなレイ群と当該インコヒーレントなレイ群とを互いに異なるように通過させることと
を含む
請求項４に記載の方法。
【請求項６】
前記レイ群がコヒーレントかどうかを判断することはさらに、
ｉが１からＮの値を取り、Ｎはパケット内に含まれる複数のレイの数である場合に、全ｄｘｉ＞０もしくは全ｄｘｉ＜０、および全ｄｙｉ＞０もしくは全ｄｙｉ＜０、および全ｄｚｉ＞０もしくは全ｄｚｉ＜０に従って、前記レイ群がコヒーレントかどうかを判断すること
を含む
請求項５に記載の方法。
【請求項７】
その他の場合には一のレイ群をインコヒーレントであると判断し、前記コヒーレントなレイ群と当該インコヒーレントなレイ群とを互いに異なるように通過させることはさらに、
一のレイ群において複数の方向座標が０であれば、その他の場合には前記レイ群をインコヒーレントであると判断し、前記コヒーレントなレイ群と当該インコヒーレントなレイ群とを互いに異なるように通過させること
を含む
請求項５に記載の方法。
【請求項８】
その他の場合には一のレイ群をインコヒーレントであると判断し、前記コヒーレントなレイ群と当該インコヒーレントなレイ群とを互いに異なるように通過させることはさらに、
コヒーレンス特性に基づいて前記レイ群を複数のサブ群に分割すること
を含む
請求項５に記載の方法。
【請求項９】
一のレイ群をインコヒーレントであると判断し、前記コヒーレントなレイ群と当該インコヒーレントなレイ群とを互いに異なるように通過させることはさらに、
複数の異なるサブ群の結果を合成すること
を含む
請求項５に記載の方法。
【請求項１０】
元々のサブ群を複数の同種のサブ群に分割することはさらに、
複数のＳ．Ｓ．Ｅ．命令を用いて複数のインコヒーレントなレイ群を分割すること
を
含む
請求項１に記載の方法。
【請求項１１】
前記レイ群の各レイについて一の起点と一の方向を決定することはさらに、
データを一のＳ．Ｓ．Ｅ．実施用の一の形式へと再編成することを含み、それぞれの起点および方向ベクトルは、４つのレイ毎に３つのＳ．Ｓ．Ｅ数で表されるとしてもよい
請求項５に記載の方法。
【請求項１２】
複数の浮動小数点の値の符号に基づき、群に含まれる複数の項目がすべて同一のサブ群に属するかどうかを検出することはさらに、
前記群の第１行の複数の符号ビットがすべて同一であるかどうか項目毎に検出することと、
前記元々の群に含まれる複数の他の行の複数の符号ビットを前記第１行と比較することと、
前記コヒーレントな群を検出するべく複数の比較結果を利用することと
を含む
請求項３に記載の方法。
【請求項１３】
複数のＳ．Ｓ．Ｅ．命令を用いて元々のサブ群を複数の同種のサブ群に分割することはさらに、
１行毎に群を処理することと、
任意の行の第１の項目と同一のサブ群に属する、当該行内の複数の項目を決定することと、
前記行の前記第１の項目と同一のサブ群に属している複数の項目を全て１つのサブ群として処理することと、
前記行にあるサブ群の数は、１つ、２つもしくは３以上かどうか検出することと、
サブ群の数が２つだけである場合には、第２のサブ群を処理することと、
サブ群の数が３以上である場合には、前記群に存在する可能性のある複数のサブ群すべてを示す複数の論理マスクを利用することと
を含む
請求項１に記載の方法。
【請求項１４】
複数のＳ．Ｓ．Ｅ．命令を用いて元々のサブ群を複数の同種のサブ群に分割することはさらに、
複数の最も一般的なケースを特定して、当該特定されたケースを効果的に処理するべくアルゴリズムを最適化させること
を含む
請求項１に記載の方法。
【請求項１５】
前記群に存在する可能性のある複数のサブ群すべてを示す複数のＳ．Ｓ．Ｅ論理マスクを用いて元々のサブ群を複数の同種のサブ群に分割することは、
存在する可能性のある複数の論理マスクをすべて特定するべく、一連の複数のＳ．Ｓ．Ｅ．値を用いることと、
この複数の計算には複数のＳ．Ｓ．Ｅ演算だけを用いることと
を含む
請求項１３に記載の方法。
【請求項１６】
関連データを持つ一の機械アクセス可能媒体を備える製造物であって、当該データにアクセスした場合に機械は、
複数の異なるサブ群を検出するべく複数の浮動小数点の値の符号を利用し、
群に含まれる複数の項目がすべて同一のサブ群に属するかどうかを検出し、
元々のサブ群を複数の同種のサブ群に分割し、
浮動小数点の値の配列に基づいて複数のサブ群を分類する
製造物。
【請求項１７】
複数のレイ群においてコヒーレンスを検出すること
をさらに含む
請求項１６に記載される製造物。
【請求項１８】
複数のレイ群においてコヒーレンスを検出することはさらに、
複数のレイを含む一のレイ群を生成することと、
前記レイ群の各レイについて一の起点と一の方向を決定することと、
前記レイ群がコヒーレントかどうかを判断することと、
複数のレイすべてについて座標ｘ、ｙおよびｚそれぞれに関して同一の方向（正または負）に進むと判断される場合、一のレイ群をコヒーレントであると判断することと、
その他の場合には一のレイ群をインコヒーレントであると判断し、前記コヒーレントなレイ群と当該インコヒーレントなレイ群とを互いに異なるように通過させることと
を含む
請求項１７に記載される製造物。
【請求項１９】
２値分類ロジックを有する一のグラフィクスコントローラ
を備え、
当該２値分類ロジックは
複数の異なるサブ群を検出するべく複数の浮動小数点の値の符号を利用して、群に含まれる複数の項目がすべて同一のサブ群に属するかどうかを検出して、元々のサブ群を複数の同種のサブ群に分割して、浮動小数点の値の配列に基づいて複数のサブ群を分類する
システム。
【請求項２０】
前記２値分類ロジックはさらに複数のレイ群においてコヒーレンスを検出することを含み、
複数のレイ群においてコヒーレンスを検出することは、複数のレイを含む一のレイ群を生成することと、前記レイ群の各レイについて一の起点と一の方向を決定することと、前記レイ群がコヒーレントかどうかを判断することと、複数のレイすべてについて座標ｘ、ｙおよびｚそれぞれに関して同一の方向（正または負）に進むと判断される場合、一のレイ群をコヒーレントであると判断することを含む
請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施は広くは、２値に基づく画像の分類および分割のためのスキームに関連するとしてもよい。特に本発明の実施は、レイトレーシングにおけるレイの分類に関する。
【背景技術】
【０００２】
２値分類では、任意のオブジェクトを２つのグループに分けることを含みうる。一方のグループはある特性を有し、他方は有さない。２値分類は通常、意思決定、画像分割、データ圧縮、コンピュータ・ビジョン、医療分野での検査、品質管理などの分野で利用されている。２値分類には多くの方法があり、例を挙げると、以下に限定されないが、デシジョン・ツリー（決定木）、ベイジアン・ネットワーク、サポート・ベクター・マシンおよびニューラル・ネットワークがある。アプリケーションによっては、分類は複数回にわたって行われ、何百万回にもおよぶこともある。２値に基づく決定は２つの可能性のうち一方を選択することが含まれる。つまり、（１）グループに属するオブジェクトはすべてある特性を有する、と（２）グループ内の少なくとも２つのオブジェクトが異なる特性を有する、という可能性のうち一方を選択する。ある実施において、画像処理に関してあるピクセル群が任意の特性を有するかどうかを決定する必要がある場合もある。例えば、ピクセル群の色が互いに類似しているかどうか、もしくは同一のオブジェクトに属しているかどうか等を決定する必要がある場合がある。
【０００３】
大域照明に関する問題を解決する方法として、レイ（ｒａｙ）をトレーシングする方法がある。つまり、レイと任意の形状の間で生じる相互作用を判断するアプローチである。レイトレーシング（Ｒａｙ  Ｔｒａｃｉｎｇ）は、様々な媒体における波動伝播に関する様々な物理現象をモデル化するために従来用いられてきた方法の１つである。レイトレーシングは、例えば、フォトリアル・コンピュータ・グラフィクスにおいて照明に関する解決方法を算出するべく用いられたり、無線通信において複雑な環境下におけるチャネルモデリングに利用したり、高度な音声アプリケーションにおける音声レンダリングに利用されてもよい。
【０００４】
大域照明のタスクにおいては、シーン（幾何学的オブジェクト、物質の特性、光などを含む）の３次元描写は、コンピュータのモニタでの表示もしくはハードコピー（印刷または撮影）の作成に適するべく２次元の表現へと変換される場合がある。複数のレイをまとめて処理すること、すなわち単一の命令を利用すること（最新コンピュータの複数データ処理機能（ＳＩＭＤ：単一命令多重データ処理））が有利である場合がある。任意のレイ群を２値分類した場合にその分類結果によって、異なる処理方法が利用され得る。ある実装においては、２値分類は、複数のレイ群をレイトレーシングする場合の最初に実施されるステップであるとしてもよい。大域照明分野の数多くのアプリケーションにおいて必要となるリアルタイム性能を実現するためには、当該分類ステップは非常に高速で実行されるのが望ましい。
【図面の簡単な説明】
【０００５】
添付図面は、本明細書に組み込まれるとともにその一部を成し、本発明の原理に即した実施を図示するものであり、明細書とともに用いられて、該実施を説明する。添付図面は必ずしも実寸には即しておらず、本発明の原理を図示することに重点を置いている。以下に図面を説明する。
【０００６】
【図１】カメラから画面上のピクセルを介してシーンにおけるオブジェクトまでたどった、複数のレイの一例を示す図である。
【０００７】
【図２】レイトレーシングプロセスの一例を示す図である。
【０００８】
【図３】インコヒーレントなレイ群を分離するプロセスの一例を示す図である。
【０００９】
【図４】各座標（ｘ、ｙおよびｚ）についてレイの方向が異なる４×４のピクセル群の例を示す概念図である。
【００１０】
【図５】ストリーミング・ＳＩＭＤ・エクステンション（Ｓ．Ｓ．Ｅ）命令を用いてインコヒーレントなレイ群を分離するプロセスの一例を示す図である。
【００１１】
【図６】任意のレイ群においてコヒーレントかどうかを検出するためのプロセスの一例を示す図である。
【００１２】
【図７】Ｓ．Ｓ．Ｅインプレメンテーションにおいてさらに処理を行うべくインコヒーレントなレイ群を分離するプロセスの一例を示す図である。
【００１３】
【図８】画像分類／分割ロジックを有するコンピュータシステムの一例を示す図である。
【発明を実施するための最良の形態】
【００１４】
以下に記述する詳細な説明は、添付図面を参照にしている。異なる図面において同一の参照番号が用いられる場合には、同一もしくは同様の構成要素を指すとしてよい。以下の記述では、本発明の様々な側面を完全に理解していただくべく、特定の構造、アーキテクチャ、インターフェース、方法などの具体例を詳細に説明しているが、説明を目的としてものであり本発明を限定するものではない。しかし、本開示内容に従えば、本発明の様々な側面は、本明細書に記載する具体的な内容とは異なる例においても実施することができるのは、当業者には明らかである。また、公知のデバイス、回路および方法の説明は、不必要な記述により本発明の説明があいまいになることを避けるべく、省略している。
【００１５】
本明細書では便宜上、実施によっては、本発明の実施形態をレイトレーシング分野で使用される用語および例に基づき説明している。本発明の実施形態はレイトレーシングに限定されない。また、特定のＳＩＭＤインプレメンテーションにも限定されない。当業者であれば、本明細書で説明するアルゴリズムを、異なるＳＩＭＤアーキテクチャで実行することができる。
＜レイキャスティング＞
【００１６】
レイキャスティングは、レイトレーシングとも呼ばれるが、本明細書では、選択点から特定の視線に沿って見える物を特定する技術を指すと理解されたい。構成によっては、レイとは、空間内の１点で発生する無限の長さを持つ半直線で、当該１点から方向ベクトルに沿って進む位置ベクトルによって示されるとしてもよい。レイトレーシングは、レイの位置ベクトルによって示されるある視点から、レイの方向ベクトルによって示される視線に沿った、１または複数のレイを発生させることによって、可視性を判断することを目的としてコンピュータグラフィクスで利用することができる。当該視線上にある最も近接した可視面の位置を決定するためには、仮想シーン内における全ての形状との間での交差について当該レイを試験して、最も近い交差を保持する必要がある。
【００１７】
図１は、カメラ１０２から画面上のピクセル１０４を介してシーン１０６内のオブジェクトまでたどった複数のレイを含む、実施形態１００の一例を示す図である。同図には、９つの４×４のレイ群１０８が幾何学的に互いに離間して示されている。説明の便宜上特定の構成を有しているが、図１に示した実施形態は別の構成で実装されてもよい。実施によっては、アルゴリズムの複雑さに応じて、第１次の目線がシーン内のオブジェクトに衝突した後に第二次のレイが生成されるとしてもよい。第二次のレイの例を挙げると、以下に限定されないが、影のレイ（シーン内で光の方向に進む）、反射したレイおよび屈折したレイ等がある。実施によっては、レイトレーシング技術を用いて、算出された軌跡に沿って衝突点からの二次的なレイを生成することによって光学的に正しい影、反射もしくは屈折を算出するとしてもよい。このように、通常のシーンのレンダリングを行うことは何百万本もレイをトレーシングし、複数のデータストリームが同時に処理されていることを含む。こういった機能を利用するためには、レイ群を複数まとめて処理するのが効果的な場合もある。プロセッサ固有の命令、例えばＳｔｒｅａｍｉｎｇ  Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ／Ｍｕｌｔｉｐｌｅ  Ｄａｔａ（ＳＩＭＤ）Ｅｘｔｅｎｓｉｏｎ（Ｓ．Ｓ．Ｅ）命令を利用することによって、４つの浮動小数点の数または整数を同時に処理し得る。
【００１８】
図２は、レイトレーシングプロセス２００の一例を示す図である。説明の便宜上、図２は図１に示した実施形態１００に基づいた内容となっているが、プロセス２００は別のハードウェアおよび／またはソフトウェアを実行することによって実現され得ると理解されたい。
【００１９】
まず最初に、レイ群（レイキャスティング）が複数生成されるとしてもよい（動作２０２）。実装によっては、隣接し合うピクセルを通って進むレイを、図１に示すように複数まとめている。複数のレイがほぼ一緒にシーンを通過する場合に、通過アルゴリズムをより効率よく実行できるとしてもよい。しかし、幾つかのオブジェクトと交差すると、これらの複数のレイはコヒーレントでなくなってしまう場合がある。特に、一群を構成している複数のレイが別々のオブジェクトと交差する場合にはこの傾向が強まる。
【００２０】
起点（視点）および各レイの方向を決定する（動作２０４）。実装によっては、起源点は
【数１】
2009515261.tif 000003
と示し、方向は
【数２】
2009515261.tif 000004
と示すとしてもよい。視線はカメラの投影の中心で発生し、像面のピクセルを通過していくとしてもよい。異なる座標を識別するべく（ｘ、ｙ、ｚに替えて）数字を付すとしてもよい。例えば、レイの方向は
【数３】
2009515261.tif 000005
と示すとしてもよい。また添え字「ｉ」も、同一レイ群に属する異なるレイを区別するべく用いられる（４×４のレイ群の各レイを示すべくｉ＝１〜１６）。
【００２１】
レイ群がコヒーレントかどうか判断する（動作２０６）。実装によっては、以下に示す式（１）に従ってコヒーレントかどうか判断するとしてもよい。
【数４】
2009515261.tif 000006
ここで、ｉは１からＮの値をとり、Ｎはパケット内のレイの数とする。
【００２２】
レイ群に含まれるレイがすべて、座標ｘ、ｙおよびｚのそれぞれについて同一方向（正方向または負方向）に進んでいると判断された場合に（動作２０８）、当該レイ群はコヒーレントであると判断される（動作２１０）。レイ群に含まれるレイのすべてが座標ｘ、ｙおよびｚのそれぞれについて同一方向に進んでいない場合に（動作２０８）、当該レイ群はインコヒーレントであるとみなされる（動作２１２）。実装によっては、インコヒーレントなレイ群の進み方は、コヒーレントなレイ群とは異なっているとしてもよい。また、式（１）では完全な同等関係は定義されていないとしてもよい。例えば、方向座標の一部がゼロであるレイ群はインコヒーレントなレイ群として処理されるとしてもよい。
＜分離アルゴリズム＞
【００２３】
実装によっては、大域照明タスクで生成されるレイパケットの大半はコヒーレントである。しかし、１つのパケット内に多数のレイが含まれている場合、当該パケット内のレイの一部が異なる方向に進むという可能性もあり、つまりコヒーレントとなる場合もある。図１に示すように、１パケット内に含まれるレイの数が１６で、４個のピクセルから成る行が４行並べられるパケットを複数使用するとしてもよい。例示を目的として、図３は、このパケット構成を持つインコヒーレントなレイ群を分離するプロセス３００の一例を示す。説明の便宜上、図３は図１に示した実施形態１００に基づく内容となっているが、プロセス１００は別のハードウェアおよび／またはソフトウェアを実行することによって実施され得ると理解されたい。
【００２４】
まず最初に、レイ群がコヒーレントであるかどうかを判断する（動作３０２）。いくつかの実装によると、この判断は上記の式（１）に基づいて行うとしてもよいし、別の手段を用いて行うとしてもよい。
【００２５】
当該レイ群がコヒーレントであると判断された場合（動作３０２）、当該レイ群はまとめて処理される（動作３０４）。
【００２６】
当該レイ群がインコヒーレントであると判断された場合（動作３０２）、当該レイ群はコヒーレンス特性に従って複数のサブ群に分割される（動作３０６）。本例において各座標は２つの異なる方向を与え得るので、８つの異なるサブ群を定義することができる。
【００２７】
各サブ群について（動作３０８）、個別にレイトレーシングアルゴリズムを実行するとしてもよい（動作３１０）。
【００２８】
実行結果を合成する（動作３１０）。このステップでは、各サブ群から元々のレイ群へと交差データを複製する。当該交差データは、各レイの交差点までの距離および各レイが交差したオブジェクトの識別子を含む。
【００２９】
当業者であれば、アルゴリズム３００の実施形態はどの高級言語で実装してもよく、また、レイトレーシングでのデータ処理量をサポートするような方法で実装され得ることに想到するであろう。
＜Ｓ．Ｓ．Ｅの実行＞
【００３０】
図４は、各座標（ｘ，ｙ，ｚ）についてレイの方向が異なる、４×４のピクセル（４０２）から成るレイ群４００の例を示す概念図である。具体的には、４×４のレイ群の方向符号および対応するコンパクトＳ．Ｓ．Ｅレイアウト４０４を図示している。領域４０６は正の方向を示し、領域４０８は負の方向を示す。
【００３１】
図５は、Ｓ．Ｓ．Ｅ命令に適した形式にレイ方向データを再編成するプロセス５００の一例を示す図である。説明の便宜上、図５は図４に示した実施形態４００に基づいた内容となっているが、プロセス５００は別のハードウェアおよび／またはソフトウェアを実行することによって実施され得ると理解されたい。例えば、レイトレーシングを加速させる以外にも、多量のデータを処理しなければならないほかのアプリケーション（例えば、イメージの分割および分類に関する問題）も同様に恩恵を受けるとしてもよい。
【００３２】
データは当初、Ｓ．Ｓ．Ｅの実行に適さない形式で格納されているとしてもよい（動作５０２）。実装によっては、各起点／方向ベクトルは３つの浮動少数点の数（各座標に１つ）で表されるとしてもよい。このようにして、全てのベクトルは連続して以下のように格納されているとしてもよい（動作５０２）。
【数５】
2009515261.tif 000007
【００３３】
本実装に係るレイアウトは、４つの方向ベクトルが格納されていることを表している。４つの方向ベクトルは、
【数６】
2009515261.tif 000008
である（４×４のレイ群の第１行）。しかし、実装によっては、各Ｓ．Ｓ．Ｅ数が異なるベクトルの成分を含むので（最初の（ｄｘ１，ｄｙ１，ｄｚ１，ｄｘ２）等）、この形式は４方向ＳＩＭＤ処理には理想的でない場合がある。Ｓ．Ｓ．Ｅユニットの処理能力を最大限に利用するためには、データは以下のように並べ替えられる（動作５０４）。
【数７】
2009515261.tif 000009
【００３４】
３つの同種のＳ．Ｓ．Ｅベクトルであるｄｉｒ［０］［０］、ｄｉｒ［０］［１］およびｄｉｒ［０］［２］を上記に示す。具体的には、ｄｉｒ［ｉ］［ｊ］において、指標「ｉ」は列（０から３）で、指標「ｊ」は座標（ｘ、ｙおよびｚ）を表す。
【００３５】
一実装において、図４に示した１６本のレイのデータ４０４は、ｄｉｒ［０］［２］のすぐ後に、ｄｉｒ［１］［０］が続くように、メモリに連続的に格納されるとしてもよい。ｄｉｒ［ｉ］［ｊ］はそれぞれ１６バイト（４×３２ビット）を占有するので、４×４のレイ群全体の方向ベクトルを格納するためには合計１６×３×４＝１９２バイトを必要とするとしてもよい。図３に図示されている上述したプロセス３００によると、最初にパケット内の全てのレイがコヒーレントであるかどうかを判断する。これは、図４において、すべてのｘセクタ、ｙセクタおよびｚセクタが領域４０６もしくは４０８の一方である状態に対応する。
【００３６】
図６は、Ｓ．Ｓ．Ｅ命令を用いてコヒーレントかどうかについてレイ群を試験するプロセス６００の例を示す図であり、図２に示したステップ２０６の実施形態を実装する。説明の便宜上、図６は図４に示した実施形態４００に基づいた内容となっているが、プロセス６００は別のハードウェアおよび／またはソフトウェアを実行することによって実施され得ると理解されたい。当該プロセスは例えば、以下に限定されないが、ＭＯＶＭＳＫＰＳ演算（符号ビットの４ビットマスクを生成）などの様々な演算に基づいて実施することができる。一例を挙げると、Ｓ．Ｓ．Ｅ．固有命令を利用するとしてもよい。Ｓ．Ｓ．Ｅ．固有命令は例えば、ＩＡ−３２Ｉｎｔｅｌ（登録商標）アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル、
（http://www.intel.com/design/Pentium4/manuals/25366513.pdf）で開示されているものを利用してもよい。
【００３７】
プロセス６００は、任意のパケットに含まれる全てのレイについて方向ｘ、ｙおよびｚを検査する。説明を簡単にするべく、４本のレイを含む行を４行備えるパケットについて説明する。プロセス６００は、これより多い、または、少ない本数のレイを含むレイ群に対して実施され得ると理解されたい。
【００３８】
まず、４ビットマスクｃｍ［０］を算出する。当該マスクは、第１行目のレイについてｘ方向の符号を格納している（動作６１０）。この動作は、
【数８】
2009515261.tif 000010
として実現されるとしてもよい。
【００３９】
続いて、マスクｃｍ［０］はｘ方向のコヒーレンスを検出するべく試験されるとしてもよい（実施形態６１２）。全てのレイのｘ方向が正の方向（この場合、ｃｍ［０］は「０」となる）もしくは負の方向（この場合、ｃｍ［０］は１５となる）であれば、動作６２０に進む。そうでない場合には、当該レイ群はインコヒーレントなレイ群として処理されるとしてもよい（動作６６０に進む。動作６６０は図２の実施形態２１２に対応する）。
【００４０】
同様にｙ方向のマスクは、動作６２０において
【数９】
2009515261.tif 000011
として算出されるとしてもよく、コヒーレントかどうか判断する試験を動作６２２で行うとしてもよい。
【００４１】
ｚ方向のマスクは、動作６３０において
【数１０】
2009515261.tif 000012
として算出されるとしてもよく、コヒーレントかどうか判断する試験を動作６３２で行うとしてもよい。
【００４２】
残りの他の行については（例えば、ｄｉｒ［１］、ｄｉｒ［２］およびｄｉｒ［３］で表される行）、方向マスクを、既に判明している第１行目のマスクｃｍ［ｊ］と比較するとしてもよい。レイ群全体でコヒーレントと判断されるためには、方向毎に生成されるマスク同士が同一でなければならない。以下のように試験が行われるとしてもよい（ｘ方向の試験）。
【数１１】
2009515261.tif 000013
同様の試験をｙ方向（マスクｃｍ［１］を利用）およびｚ方向（マスクｃｍ［２］を利用）に関しても行うとしてもよい。これらの演算は動作６４０で実施されるとしてもよい。レイ群がインコヒーレントであると判明した場合には、動作６６０へと進む。それ以外の場合には、動作６５０において当該レイ群はコヒーレントなレイ群として処理される。
【００４３】
図７は、Ｓ．Ｓ．Ｅ．インプレメンテーションにおいてさらに処理を行うべく、Ｓ．Ｓ．Ｅ．命令を用いてインコヒーレントなレイ群を分割するプロセス７００の一例を示す図である。当該プロセス７００は図６に示した実施形態６６０に対応する。説明の便宜上、図７は図４に示した実施形態４００に基づいた内容となっているが、プロセス７００は別のハードウェアおよび／またはソフトウェアを実行することによって実施され得ると理解されたい。例示を目的として、当該プロセスは、図４に図示されるような４×４のレイパケットのような、複数のレイから成るパケットの各行に対して実装される。
【００４４】
プロセス７００は、１行ごとに行われるとしてもよい。各行のレイをコヒーレントなサブ群に分割するとしてもよい。この分割は、マスク（論理Ｓ．Ｓ．Ｅ．値）の生成に基づいて実施するとしてもよい。当該マスクは１と０を含み、１はあるサブ群に属するレイを示し、０はそれ以外のレイを示す。ある行に含まれる４本のレイすべてが別の方向に進んでいるという可能性もあり、この場合はサブ群を４つ形成する必要がある。また、ある行のレイはすべてコヒーレントとなっている可能性もあり、この場合はサブ群が１つしか形成されない。多くの場合は、各行には１つまたは２つのサブ群が形成される。以下に説明する図７に図示したプロセスはこのような一般的なケースを扱う。図４において、第０行および第１行はコヒーレントであり（第０行では全てのレイが正の方向を向き、第１行では全てのレイの方向が一致している）、第２行はサブ群が２つあり、第３行はサブ群が３つある。
【００４５】
動作７０２では、各行において、当該行の第１レイ（指標０に対応）と同一の方向に進むレイはどれか判断する。この判断は、座標ｘ、ｙおよびｚそれぞれの個別マスクを第１レイの適切なマスク（以下に示すシャッフリング・オペレータ（ｓｈｕｆｆｌｉｎｇ  ｏｐｅｒａｔｏｒ）を用いて取得する）と比較することによって行うとしてもよい。４つの同一の値が返され、続いて、マスクと比較されるとしてもよい。これは、以下の６つの演算を実行することによって行うとしてもよい。
【数１２】
2009515261.tif 000014
この結果、第１レイの方向と一致する方向に関しては、論理変数への適切な入力（ｘ方向についてはｍ［０］、ｙ方向についてはｍ［１］、ｚ方向についてはｍ［２］）としては、０になる（全て０を含む）。
【００４６】
動作７０２において第１レイと同一方向に進むと判断されたレイはすべて、動作７０４において処理されるとしてもよい。変数ｍａｃｔが１を保持するレイ全てについてこの処理が行われるとしてもよい。
【数１３】
2009515261.tif 000015
【００４７】
動作７０６で判断されるように、当該行においてインコヒーレントなレイがない場合には、次の行を取り出すとしてもよい（動作７２０）。この判断は、
【数１４】
2009515261.tif 000016
を０と比較することによって、上述した変数ｍａｌｌの符号ビットをテストすることに基づいて行うとしてもよい。真と判断されれば、当該行にはインコヒーレントなレイはないとされる。
【００４８】
一方、動作７０６においてインコヒーレントなレイがあると判断された場合には、当該行には１方向においてだけ異なるサブ群が２つあるかどうかを判断する（動作７０８）。この判断は、ｊ＝１、２、３について、０でない
【数１５】
2009515261.tif 000017
は１つだけであることを確認することによって行われるとしてもよい。
【００４９】
動作７０８においてサブ群は２つだけであると判断された場合には、動作７１０において第２サブ群を処理する。この処理は例えば、変数ｍａｌｌが１であるレイすべてについて行われるとしてもよい。
【００５０】
それ以外の場合には（動作７１２）、当該行が有している可能性のあるサブ群をすべて特定して処理してもよい。これは、値ｍ［０］、ｍ［１］およびｍ［２］を用いて様々なマスクを形成し、形成したマスクを当該行を処理する際に用いて行うとしてもよいが、マスクに０でない成分がある場合に限られる。マスク値は７つあり、（上述したサブ群以外に）存在する可能性のあるサブ群を指す。
【数１６】
2009515261.tif 000018
存在する可能性のあるサブ群を示す論理表現は他にも可能である。
【００５１】
通常の実装においては、プロセス７００に基づいて最も一般的な２つのケースを効率よく処理する。
（１）行の４本のレイ全てがコヒーレントである場合（処理する必要があるサブ群は１つだけ）。
（２）インコヒーレントな値を示すのは座標（ｘ、ｙおよびｚ）のうち１つだけである場合。この場合に処理されるのは２つのサブ群であるが、パラグラフ［００５０］で説明したマスクによって定義される計算をすべて行うことは避けられる。
＜システム＞
【００５２】
図８は、画像分類／分割ロジック８０２を含むコンピュータシステム８００の例を示す。画像分類／分割ロジック８０２は、上述したプロセスのうちの１つであるとしてもよい。代表的な例を挙げると、コンピュータシステム８００は、プロセッサ（ＣＰＵ）８２０とチップセット８０６の間で情報を授受するためのプロセッサシステムバス８０４を備える。本明細書で説明しているように、「チップセット」という用語は、所望のシステム機能を実現するべくＣＰＵ８２０に接続される様々なデバイスをまとめて指し示すべく使用されるとしてもよい。実装によっては、ＣＰＵ８２０はマルチコア・チップ・マルチプロセッサ（ＣＭＰ）であってもよい。
【００５３】
代表的な例を挙げると、チップセット８０６は、グラフィクスコントローラ８１０が集積化されたメモリコントローラ８０８を有する。実装によっては、グラフィクスコントローラ８１０はディスプレイ８１２に接続されるとしてもよい。別の実装では、グラフィクスコントローラ８１０はチップセット８０６に接続され、メモリコントローラ８０８からは分離しているとしてもよい。この場合、チップセット８０６は、互いに分離しているメモリコントローラとグラフィクスコントローラを有する。グラフィクスコントローラは独立した構成としてもよい。代表的な例を挙げると、メモリコントローラ８０８はまたメインメモリ８１４に接続されるとしてもよい。実装によっては、メインメモリ８１４は、以下に限定されないが、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、ＤＤＲ−ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ）、ＲＤＲＡＭ（Ｒａｍｂｕｓ  ＤＲＡＭ）等のデータの高速バッファリングをサポートすることが出来るデバイスを含むとしてもよい。
【００５４】
さらに図示されているように、チップセット８０６は入出力（Ｉ／Ｏ）コントローラ８１６を含むとしてもよい。図８ではチップセット８０６を互いに独立しているグラフィクスコントローラ８１０とＩ／Ｏコントローラ８１６を含むものとして図示しているが、一実施形態によると、グラフィクスコントローラ８１０は、例えばシステム・オン・チップ（ＳＯＣ）を実現するべく、ＣＰＵ８２０内に集積化されているとしてもよい。別の実施形態によれば、グラフィクスコントローラ８１０およびＩ／Ｏコントローラ８１６の機能はチップセット８０６内で統合される。
【００５５】
一実施形態によると、画像分類／分割ロジック８０２は、システム・オン・チップと同様に、メモリコントローラとＩ／Ｏコントローラがチップセット内に集積化され、ＣＰＵに集積化されたメモリコントローラを有するコンピュータシステム内で実行されるとしてよい。従って、図８は一実施形態を例示しているに過ぎず、本発明を限定するものではないことは当業者には明らかである。一実施形態によると、グラフィクスコントローラ８１０は、画像分類／分割ロジック８０２から受け取ったデータを表示するべくレンダリングするレンダリングエンジン８１８を含む。
【００５６】
上記で１以上の実装を説明および図示したが、本発明を網羅したものではなく、本発明の範囲を開示した形態そのものに限定するものでもない。上述の教示内容を鑑みて様々な変形および変更を実施することが可能であり、そのような変形および変更は本発明を様々な方法で実施することによって得られるとしてもよい。
【００５７】
システムの説明において独立した構成要素を含むものとしたが、当該構成要素はハードウェア、ソフトウェア／ファームウェアもしくは両者の組み合わせにおいて実現されるとしてもよい。ハードウェアを用いて実現した場合、システムが備える構成要素の一部は単一のチップまたはデバイス内で組み合わせられるとしてもよい。実装を幾つか挙げて説明してきたが、本発明は、明示されたものに限定されるべきではなく、情報の処理、送信、出力および格納が可能なプロセッサを複数含むデバイスもしくはインターフェースであればどのようなデバイスもしくはインターフェースを含むと解釈すべきである。プロセスは例えば、ローカルシステムのプロセッサまたはそれ以外の部分で実行されるソフトウェアにおいて実現されるとしてもよい。
【００５８】
例えば、図２、図３、図５、図６および図７に示した動作のうち少なくとも一部は、機械可読媒体で実現される命令もしくは命令群として実現されるとしてもよい。本願の明細書において使用した素子、動作または命令はいずれも、そう明示していない限り、本発明にとって必要不可欠であると理解されるべきではない。また本明細書では、冠詞「ａ」は１または複数を含むものとする。本発明の上述した実施は、本発明の目的および原理から大きく離れることなく、変更または変形することができるとしてもよい。そのような変更または変形は、本開示内容の範囲に含まれるものとし、本願特許請求の範囲によって保護されるものとする。
【図１】
2009515261.tif 000019
【図２】
2009515261.tif 000020
【図３】
2009515261.tif 000021
【図４】
2009515261.tif 000022
【図５】
2009515261.tif 000023
【図６】
2009515261.tif 000024
【図７】
2009515261.tif 000025
【図８】
2009515261.tif 000026
【国際調査報告】
2009515261.tif 000027
2009515261.tif 000028
2009515261.tif 000029
2009515261.tif 000030
2009515261.tif 000031