(57)【要約】テクセルのデータセットからヒストグラム及び関連した統計値を取得する方法及びシステムが開示される。処理デバイスが、テクセルのデータセットを第１のバッファーから受信する。このデータセットは少なくとも２の次元数Ｄを有し、各テクセルは値を含む。処理デバイスは、データセットを座標の点リストにソートし、点リスト内の点は、データセット内のテクセルロケーションに対応する。処理デバイスは、Ｎ−１次元優位性に従って点リスト内の点を配列することによって点リストの次元数を縮小する。処理デバイスは、配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも１つの値を取得する。処理デバイスは、少なくとも１つの値を第２のバッファーに出力する。処理デバイスは、グラフィックス処理ユニットとすることができる。【選択図】図３
2016527631.tif 000002
【特許請求の範囲】
【請求項１】
テクセルのデータセットを第１のバッファーから処理デバイスにおいて受信することであって、前記データセットは、少なくとも２の次元数Ｄを有し、各テクセルは値を含むことと、
前記処理デバイスを用いて、前記データセットを座標の点リストにソートすることであって、前記点リスト内の点は、前記データセット内のテクセルロケーションに対応することと、
Ｎ−１次元優位性に従って前記点リスト内の点を配列することによって、前記点リストの前記次元数を縮小することと、
前記配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも１つの値を取得することと、
前記少なくとも１つの値を第２のバッファーに出力することと、
を含む、方法。
【請求項２】
Ｄが１になるまで、前記ソートすること、前記縮小すること、前記実行すること、及び前記出力することを繰り返すことを更に含む、請求項１に記載の方法。
【請求項３】
前記データセットをソートすることは、各テクセルロケーションの個々の頂点を有する頂点バッファーを生成することを含む、請求項１に記載の方法。
【請求項４】
前記点リストの前記次元数を縮小することは、頂点シェーダー通過を実行して、後続のピクセルシェーダー通過に、前記ラスター演算を実行する宛先ビンロケーションを通知することを含む、請求項１に記載の方法。
【請求項５】
ラスター演算を実行することは、置換ラスター演算、加法ラスター演算、最小ラスター演算、又は最大ラスター演算のうちの少なくとも１つを実行することを含む、請求項１に記載の方法。
【請求項６】
前記出力された前記少なくとも１つの値は、前記データセットのヒストグラム、前記データセットの最大値、前記データセットの前記最小値、前記データセットの合計値、データセットの平均値、メジアン値、若しくはモード値、前記データセットの標準偏差値、データセットの前記最小値のロケーション、又はデータセットの前記最大値のロケーションのうちの少なくとも１つである、請求項１に記載の方法。
【請求項７】
前記テクセルのデータセットは、２次元又は３次元の静止画像又はビデオから前記第１のバッファーにおいて受信される、請求項１に記載の方法。
【請求項８】
Ｄは２又は３である、請求項１に記載の方法。
【請求項９】
前記少なくとも１つの値を、ビデオ処理アプリケーションに用いられる１つ又は複数の下流のデバイスに送信することを更に含む、請求項１に記載の方法。
【請求項１０】
テクセルの２次元データセットを第１のバッファーから処理デバイスにおいて受信することであって、前記データセット内の各テクセルは値を含むことと、
前記処理デバイスを用いて、前記第１のバッファーからの前記データセットを第２のバッファーにおける座標の点リストにソートすることであって、該点リスト内の点は、前記データセット内のテクセルロケーションに対応することと、
前記第２のバッファーから値を読み出し、第１のサイズと等しい幅及び第２のサイズと等しい高さを有する第３のバッファーに列ロケーションを出力することと、
加法ラスター演算を用いて、前記第３のバッファー内の前記列テクセルロケーションにおいて値を１だけインクリメントして、少なくとも１つの値を取得することと、
前記少なくとも１つの値を第４のバッファーに出力することと、
を含む、方法。
【請求項１１】
前記第１のサイズ及び前記第２のサイズは、ヒストグラムビンサイズに対応する、請求項１０に記載の方法。
【請求項１２】
第１のサイズと等しい幅及び第２のサイズと等しい高さを有する第３のバッファーに列ロケーションを出力することは、前記第２のバッファーに位置するテクセルの位置座標の垂直座標が、前記第１のバッファーに位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて前記第３のバッファー内のテクセルロケーションに書き込むことによって、前記第２のバッファー内のテクセルの前記位置座標を新たな座標系に変換することを更に含む、請求項１０に記載の方法。
【請求項１３】
値をインクリメントすることは、前記位置座標が演算するテクセルロケーションを指示するテクセルロケーションごとに１つずつ前記第３のバッファーのテクセル値をインクリメントすることを含む、請求項１２に記載の方法。
【請求項１４】
１の高さ及び最終のヒストグラムビンサイズと等しい幅を有するビンテクセルロケーションを前記第４のバッファーに出力することを更に含む、請求項１０に記載の方法。
【請求項１５】
前記加法ラスター演算を用いて、前記第４のバッファー内の前記値を１だけインクリメントして、ヒストグラムを取得することを更に含む、請求項１４に記載の方法。
【請求項１６】
前記第１のサイズは前記第１のバッファーの幅に対応し、前記第２のサイズは１と等しい高さに対応する、請求項１０に記載の方法。
【請求項１７】
ラスター演算を実行することは、置換ラスター演算、加法ラスター演算、最小ラスター演算、又は最大ラスター演算のうちの少なくとも１つを実行することを含む、請求項１０に記載の方法。
【請求項１８】
１の高さ及び１と等しい幅を有するビンテクセルロケーションを前記第４のバッファーに出力することを更に含む、請求項１０に記載の方法。
【請求項１９】
最小ラスター演算を用いて前記第４のバッファー内の値を置換して、前記データセットの最小値を取得することを更に含む、請求項１０に記載の方法。
【請求項２０】
合計ラスター演算を用いて前記第４のバッファー内の値を置換して、前記データセットの合計値を取得することを更に含む、請求項１０に記載の方法。
【請求項２１】
前記第４のバッファー内の値を置換することは、前記第４のバッファー内の前記値に、１を前記データセットのサイズによって除算したものを乗算して、前記データセットの平均を取得することを更に含む、請求項２０に記載の方法。
【請求項２２】
前記少なくとも１つの値を、ビデオ処理アプリケーションにおいて用いられる１つ又は複数の下流のデバイスに送信することを更に含む、請求項１０に記載の方法。
【請求項２３】
テクセルの２次元データセットの最小値又は最大値を計算することと、
前記テクセルの２次元のデータセットを第１のバッファーから処理デバイスにおいて受信することであって、前記データセット内の各テクセルは、値と関連付けられていることと、
前記処理デバイスを用いて、前記第１のバッファーからの前記データセットを第２のバッファーにおける座標の点リストにソートすることであって、該点リスト内の点は、前記データセット内のテクセルロケーションに対応することと、
前記第２のバッファーからテクセル値を読み出し、該テクセル値が前記最小値と等しい場合には、単一のテクセルロケーション並びにｘ値及びｙ値を第３のバッファーに出力し、該テクセル値が前記最小値よりも大きい場合には、単一の範囲外のテクセルロケーションを出力することと、
ｘ値及びｙ値を前記第２のバッファーから読み出し、置換ラスター演算を介して該ｘ値及びｙ値を前記第３のバッファーのｘ値及びｙ値にコピーして、前記データセット内の最小値又は最大値のロケーションを計算することと、
を含む、方法。
【請求項２４】
メモリと、
前記メモリに結合された処理デバイスと、
を備え、前記処理デバイスは、
テクセルのデータセットを第１のバッファーから受信することであって、前記データセットは、少なくとも２の次元数Ｄを有し、各テクセルは値を含むことと、
前記データセットを座標の点リストにソートすることであって、前記点リスト内の点は、前記データセット内のテクセルロケーションに対応することと、
Ｎ−１次元優位性に従って前記点リスト内の点を配列することによって、前記点リストの前記次元数を縮小することと、
前記配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも１つの値を取得することと、
前記少なくとも１つの値を第２のバッファーに出力することと、
を行う、コンピューターシステム。
【請求項２５】
前記処理デバイスは、Ｄが１になるまで、前記ソートすること、前記縮小すること、前記実行すること、及び前記出力することを繰り返すことを更に行う、請求項２４に記載のシステム。
【請求項２６】
前記処理デバイスはグラフィックス処理ユニットである、請求項２４に記載のシステム。
【請求項２７】
前記処理デバイスは、前記少なくとも１つの値を、ビデオ処理アプリケーションにおいて用いられる１つ又は複数の下流のデバイスに送信することを更に行う、請求項２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施の形態は、画像処理に関し、より詳細には、ヒストグラム計算及び他の統計計算の分野に関する。
【背景技術】
【０００２】
Ｄ次元数値集合Ｓに対して行われるｍｉｎ（Ｓ）、ｍａｘ（Ｓ）、
【数１】
2016527631.tif 000003
、標準偏差σ（Ｓ）、及びｍｏｄｅ（Ｓ）等のヒストグラム計算（histogram computation）及び関連した統計演算は、画像処理システムにおいて用いられる共通の演算である。ヒストグラム計算は、大きなセットの並列実行、高速スループット、又はそれらの双方等の並列実行を伴う問題においても用いられてきた。例として、米国特許第８，４５１，３８４号に教示されているシステム及び方法は、複数のヒストグラム及びそれらの交差を利用して、高解像度ビデオにおけるショット変化検出用の幾つかの尺度のうちの１つを提供する。残念ながら、大規模マルチ並列ハードウェアを利用しながらこれらのタイプの計算を効率的に実行するものは存在していない。なお、大規模マルチ並列ハードウェアは、グラフィックス処理ユニット（ＧＰＵ：graphics processing unit）及び大規模マルチコアＳＩＭＤ又はＭＩＭＤのベクトル処理システムを含むことができる。
【０００３】
ＧＰＵに基づくヒストグラム計算を実行する初期の試みは、例えば、特許文献１（以下、‘９２２特許）に教示されているような再帰的縮小演算に関する性能が不十分であるという難点を有する。そのような再帰的縮小演算は、小さなタイルサイズに対しては大きな繰り返し再帰を必要とし、大きなタイルサイズ及びそれよりも少ない再帰に対してはキャッシュミスという難点を有する。これは、‘９２２特許によって教示されているような大きなデータセットの再帰的縮小演算の有用性及び実用性能を制限する。
【０００４】
他の従来技術の方法は、非特許文献１（以下、「Scheuermann及びHensley」）に開示されているように、現在のＧＰＵハードウェアの特徴、すなわち、頂点シェーダー（vertex shader）内のテクスチャーバッファー値の読み出しを用いて単一のステップで縮小を実行することによって再帰を回避する。Scheuermann及びHensleyによって教示されているような頂点シェーダー内のテクスチャーバッファー値の読み出しは、「散乱（scatter）」演算を可能にし、例えば、宛先書き込みロケーションは、固定されておらず、入力テクスチャーに依拠した決定に基づいて可変である。
【０００５】
これとは対照的に、‘９２２特許に教示された再帰的縮小演算は、「収集（gather）」演算しか可能にせず、この場合、書き込み演算ロケーションは固定され、読み出し演算は可変である。Scheuermann及びHensleyの方法は、良好な並列性及びスケーリング性能の更なる利益を入力データセットサイズに対してのみ示し、ヒストグラムビンサイズに対しては示さないが、大きなビンサイズがそれよりも小さなビンサイズよりも優れた性能を示す性能逆転の難点を有することに留意すべきである。この予測不能性は、特に、高モダリティを有するデータセットにおけるＧＰＵキャッシュへのメモリ書き込み要求のシリアル化に起因しており、予測可能性が不可欠なものであるリアルタイムストリーム処理アプリケーションにとってそのような方法及びシステムを完全に不適切なものにする。
【０００６】
非特許文献２（以下、「Nugteren」）には、キャッシュ衝突問題に対処する２つのヒストグラム計算方法が開示されているが、双方とも、ＧＰＵハードウェアの単一の供給業者からしか入手可能でない独自のＡＰＩ（ＣＵＤＡ）を用いる。さらに、これらの従来技術の方法は、それら自体、特異な目的、すなわち、いずれの類似の統計関数でもなく、ＧＰＵを用いたビニングされたヒストグラムの計算を対象としている。加えて、画像処理及びビデオ処理について、ヒストグラム関数は、通常、パイプラインストール及び待ち状態を導入して、ＣＰＵ上等のＧＰＵ以外で実行されてきた。これらのストールは、そのようなシステム及び方法をリアルタイムの画像処理及びビデオ処理に不適切なものにする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第７，８８９，９２２号
【非特許文献】
【０００８】
【非特許文献１】Scheuermann, T.及びHensley, J., 2007「Efficient histogram generation using scattering on GPUs」（Proceedings of the 2007 symposium on Interactive 3D graphics and games (I3D ‘O7), pp. 33-37）
【非特許文献２】Nugteren、Cedric他「High performance predictable histogramming on gpus: exploring and evaluating algorithm trade-offs」（Proceedings of the Fourth Workshop on General Purpose Processing on Graphics Processing Units, ACM, 2011）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
したがって、望まれているが、まだ提供されていないものは、高スループットでメモリ効率が良く、ＧＰＵ供給業者に依存しない柔軟なヒストグラム、並びに一貫した性能を示すヒストグラムを計算する統計的な方法及びシステムである。
【課題を解決するための手段】
【００１０】
本発明によるシステム及び方法は、ヒストグラム計算の機能を実行し、集合から次のもの、すなわち、その集合の最小値、最大値、標準偏差のうちの１つ又は複数を見つけること、及び集合のＮ番目のモードを見つけることを可能にする。本発明の好ましい実施の形態は、ＧＰＵ上で実現されるが、当業者であれば、本発明が、画像処理機能及びビデオ処理機能以外の複数の使用法を有することを理解するであろう。任意の大きなＤ次元データセットの統計解析又はヒストグラム解析を必要とするいずれの問題も利益を得る。この追加の理由によって、効率的なＧＰＵヒストグラム計算システム及び方法は、付随する利益を、ＧＰＵ上で実行される任意のリアルタイムの又は他の時間的制約のある画像処理システム若しくは方法又はビデオ処理システム若しくは方法に提供する。
【００１１】
より詳細には、テクセルのデータセットからヒストグラム及び関連した統計値を取得する方法及びシステムを提供することによって、上記で説明した問題は対処され、技術的な解決が当該技術分野において達成される。処理デバイスが、テクセルのデータセットを第１のバッファーから受信する。このデータセットは少なくとも２の次元数Ｄを有し、各テクセルは値を含む。処理デバイスは、データセットを座標の点リストにソートし、点リスト内の点は、データセット内のテクセルロケーションに対応する。処理デバイスは、Ｎ−１次元優位性（dominancy）に従って点リスト内の点を配列することによって点リストの次元数を縮小する。処理デバイスは、配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも１つの値を取得する。処理デバイスは、少なくとも１つの値を第２のバッファーに出力する。処理デバイスは、グラフィックス処理ユニットとすることができる。ソートするステップ、縮小するステップ、実行するステップ、及び出力するステップは、Ｄが１になるまで繰り返すことができる。
【００１２】
一例では、データセットをソートすることは、各テクセルロケーションの個々の頂点を有する頂点バッファーを生成することを含むことができる。点リストの次元数を縮小することは、頂点シェーダー通過を実行して、後続のピクセルシェーダー通過に、ラスター演算を実行する宛先ビンロケーションを通知することを含むことができる。ラスター演算を実行することは、ピクセルシェーダーを用いて、置換ラスター演算、加法ラスター演算、最小ラスター演算、又は最大ラスター演算のうちの少なくとも１つを実行することを含むことができる。
【００１３】
一例では、前記出力された前記少なくとも１つの値は、前記データセットのヒストグラム、前記データセットの最大値、前記データセットの前記最小値、前記データセットの合計値、データセットの平均値、メジアン値、若しくはモード値、前記データセットの標準偏差値、データセットの前記最小値のロケーション、又はデータセットの前記最大値のロケーションのうちの少なくとも１つとすることができる。
【００１４】
一例では、前記テクセルのデータセットは、２次元又は３次元の静止画像又はビデオから前記第１のバッファーにおいて受信することができる。
【００１５】
ヒストグラム及び関連した統計値をテクセルのデータセットから取得する方法及びシステムを提供することによって、上記で説明した問題は対処され、技術的解決が当該技術分野において達成される。処理デバイスが、テクセルの２次元データセットを第１のバッファーから受信し、このデータセット内の各テクセルは値と関連付けられている。処理デバイスは、第１のバッファーからのデータセットを第２のバッファーにおいて座標の点リストにソートし、この点リスト内の点は、データセット内のテクセルロケーションに対応する。処理デバイスは、第２のバッファーから値を読み出し、第１のサイズと等しい幅及び第２のサイズと等しい高さを有する第３のバッファーに列ロケーションを出力する。処理デバイスは、加法ラスター演算を用いて第３のバッファー内の列テクセルロケーションにおいて値を１だけインクリメントして、少なくとも１つの値を取得する。処理デバイスは、この少なくとも１つの値を第４のバッファーに出力する。
【００１６】
一例では、前記第１のサイズ及び前記第２のサイズは、ヒストグラムビンサイズに対応する。
【００１７】
一例では、第１のサイズと等しい幅及び第２のサイズと等しい高さを有する第３のバッファーに列ロケーションを出力することは、前記第２のバッファーに位置するテクセルの位置座標の垂直座標が、前記第１のバッファーに位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて前記第３のバッファー内のテクセルロケーションに書き込むことによって、前記第２のバッファー内のテクセルの前記位置座標を新たな座標系に変換することを更に含むことができる。値をインクリメントすることは、前記位置座標が演算するテクセルロケーションを指示するテクセルロケーションごとに１つずつ前記第３のバッファーのテクセル値をインクリメントすることを含むことができる。
【００１８】
一例では、処理デバイスは、１の高さ及び最終のヒストグラムビンサイズと等しい幅を有するビンテクセルロケーションを第４のバッファーに出力することができる。処理デバイスは、前記加法ラスター演算を用いて、前記第４のバッファー内の前記値を１だけインクリメントして、ヒストグラムを取得することができる。
【００１９】
一例では、前記第１のサイズは前記第１のバッファーの幅に対応し、前記第２のサイズは１と等しい高さに対応することができる。処理デバイスは、１の高さ及び１と等しい幅を有するビンテクセルロケーションを第４のバッファーに出力することができる。
【００２０】
一例では、ラスター演算を実行することは、置換ラスター演算、加法ラスター演算、最小ラスター演算、又は最大ラスター演算のうちの少なくとも１つを実行することを含むことができる。
【００２１】
一例では、処理デバイスは、最小ラスター演算を用いて第４のバッファー内の値を置換して、データセットの最小値を取得することができる。処理デバイスは、合計ラスター演算を用いて第４のバッファー内の値を置換して、データセットの合計値を取得することができる。第４のバッファー内の値を置換することは、第４のバッファー内の値に、１をデータセットのサイズによって除算したものを乗算して、データセットの平均を取得することを更に含むことができる。
【００２２】
テクセルのデータセット内の最小値又は最大値のロケーションを取得する方法及びシステムを提供することによって、上記で説明した問題は対処され、技術的解決が当該技術分野において達成される。処理デバイスが、テクセルの２次元データセットの最小値又は最大値を計算する。処理デバイスは、テクセルの２次元データセットを第１のバッファーから受信する。このデータセット内の各テクセルは、値と関連付けられている。処理デバイスは、第１のバッファーからのデータセットを第２のバッファーにおいて座標の点リストにソートする。この点リスト内の点は、データセット内のテクセルロケーションに対応する。処理デバイスは、第２のバッファーからテクセル値を読み出し、このテクセル値が上記最小値と等しい場合には、単一のテクセルロケーション並びにｘ値及びｙ値を第３のバッファーに出力し、上記テクセル値が上記最小値よりも大きい場合には、単一の範囲外のテクセルロケーションを出力する。処理デバイスは、ｘ値及びｙ値を第２のバッファーから読み出し、置換ラスター演算を介してこれらの値を第３のバッファーのｘ値及びｙ値にコピーして、データセット内の最小値又は最大値のロケーションを計算する。
【図面の簡単な説明】
【００２３】
【図１】本開示の例が動作することができる一例示のコンピューティングシステムを示すブロック図である。
【図２】テクセルのデータセットからヒストグラム及び関連した統計値を取得する方法の一例を示すフロー図である。
【図３】散乱縮小インクリメント（scatter-reduce-increment）演算を用いてデータセットのヒストグラムを計算するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図４Ａ】散乱縮小インクリメント演算を用いてヒストグラムを計算する方法の一例を示すフロー図である。
【図４Ｂ】散乱縮小インクリメント演算を用いてヒストグラムを計算する方法の一例を示すフロー図である。
【図５】列優位バイアス（columnar-dominant bias）を用いる散乱縮小プロセスを介した本発明の一実施形態を通したデータの推移の空間レイアウトを示す図である。
【図６】ＧＰＵ上でデータセットのヒストグラムを計算する第１の例示の従来技術のステップを示すプロセス及びデータフロー図である。
【図７Ａ】特許文献１（以下、‘９２２特許）において実行されるようなヒストグラム計算の一例に対応するプロセス及びデータフローのブロック図である。
【図７Ｂ】‘９２２特許において実行されるようなヒストグラム計算の一例に対応するプロセス及びデータフローのブロック図である。
【図７Ｃ】‘９２２特許において実行されるようなヒストグラム計算の一例に対応するプロセス及びデータフローのブロック図である。
【図８】散乱縮小置換（scatter-reduce-replace）演算を用いてデータセットの最小値を計算するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図９Ａ】散乱縮小置換演算を用いてデータセットの最小値を計算する方法の一例を示すフロー図である。
【図９Ｂ】散乱縮小置換演算を用いてデータセットの最小値を計算する方法の一例を示すフロー図である。
【図１０】散乱縮小置換演算を用いてデータセットの最大値を計算するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図１１Ａ】散乱縮小加算（scatter-reduce-add）演算を用いてデータセットの最大値を計算する方法の一例を示すフロー図である。
【図１１Ｂ】散乱縮小加算演算を用いてデータセットの最大値を計算する方法の一例を示すフロー図である。
【図１２】散乱縮小加算演算を用いてデータセットの合計値を計算するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図１３Ａ】散乱縮小加算演算を用いてデータセットの合計値を計算する方法の一例を示すフロー図である。
【図１３Ｂ】散乱縮小加算演算を用いてデータセットの合計値を計算する方法の一例を示すフロー図である。
【図１４】散乱縮小加算演算を用いてデータセットの平均値を計算するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図１５Ａ】散乱縮小加算演算を用いてデータセットの平均値を計算する方法の一例を示すフロー図である。
【図１５Ｂ】散乱縮小加算演算を用いてデータセットの平均値を計算する方法の一例を示すフロー図である。
【図１６Ａ】散乱縮小加算演算を用いてデータセットの標準偏差を計算するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図１６Ｂ】散乱縮小加算演算を用いてデータセットの標準偏差を計算するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図１６Ｃ】散乱縮小加算演算を用いてデータセットの標準偏差を計算するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図１７Ａ】散乱縮小加算演算を用いてデータセットの標準偏差を計算する方法の一例を示すフロー図である。
【図１７Ｂ】散乱縮小加算演算を用いてデータセットの標準偏差を計算する方法の一例を示すフロー図である。
【図１７Ｃ】散乱縮小加算演算を用いてデータセットの標準偏差を計算する方法の一例を示すフロー図である。
【図１８】データセット内の所与の最小値のロケーションを求めるために、図８のデータセット計算の最小値を拡張するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図１９】データセット内の最小値のロケーションを計算する方法の一例を示すフロー図である。
【図２０】データセット内の所与の最大値のロケーションを求めるために、図１０のデータセット計算の最小値を拡張するように適合された図１の例示のコンピューティングシステムのブロック図である。
【図２１】データセット内の最大値のロケーションを計算する方法の一例を示すフロー図である。
【図２２】本明細書において論述した方法論のうちの任意の１つ又は複数をマシンに実行させる一組の命令を実行することができる例示の形態のコンピューターシステムにおける上記マシンの図的表現を示す図である。
【発明を実施するための形態】
【００２４】
本明細書において説明する方法は、複数の既存のＳＩＭＤアーキテクチャー及びＭＩＭＤアーキテクチャーを扱うとともに、大きく低減されたメモリ帯域幅要件及び従来技術において教示されたものよりも低い計算集約度を示す前述の計算を実行する共通の効率的なシステム及び方法を提供する。
【００２５】
以下の説明では、多数の詳細が述べられる。しかしながら、本開示はこれらの具体的な詳細がなくても実施することができることが当業者には明らかであろう。幾つかの場合には、よく知られた構造及びデバイスは、本開示を分かりにくくしないように、詳細には示されず、ブロック図の形態で示される。
【００２６】
頂点シェーダーは、本明細書において用いられるとき、頂点バッファーに対して演算を行うＧＰＵの論理機能を指す。この頂点バッファーは、２Ｄ空間又は３Ｄ空間内の１つ又は複数の座標を含む。頂点バッファーは、ロケーション、法線ベクトル、色、及び他のユーザー定義可能データ等の頂点に関する１つ又は複数のデータを含む、ホストシステムからＧＰＵにアップロードされたバッファーを指す。ピクセルシェーダーは、特定の実行順序付けなしに、頂点シェーダー出力頂点によって指示されたとおりに、テクスチャーバッファー内のテクセルに対して並列に演算を行うＧＰＵの論理カーネル機能を指す。テクセルは、テクスチャーバッファー内のテクスチャー要素を指す。テクスチャーバッファーは、ピクチャーをピクセルのアレイによって表すことができるのと同様に、テクセルのアレイを指す。本発明の教示を簡潔かつ明瞭にするために、ＧＰＵメモリアーキテクチャーに関する専門的な解説は含まれていない。最新のＧＰＵのメモリサブシステムアーキテクチャー（複数の場合もある）及び最新のＧＰＵアーキテクチャーの他の側面に関する優れた専門的な解説は、Randima Fernando, 2004「GPU Gems: Programming Techniques, Tips and Tricks for Real-Time Graphics」に見出すことができる。この文献は、引用することによって本明細書の一部をなす。さらに、Nugterenは、ＧＰＵヒストグラム計算のメモリアクセスパターンを示し、引用することによって本明細書の一部をなす。
【００２７】
ＧＰＵに関して説明したが、本発明の実施形態は、旧式のＧＰＵハードウェア上で実施することができる。旧式のＧＰＵハードウェアは、ジオメトリーシェーダー及び他の新式のテッセレーション機能をサポートしておらず、また、頂点に対する演算並びにピクセルシェーダー又はフラグメントシェーダー及び固定機能パイプラインを伴うＡＰＩを用いていない。ピクセルシェーダー及びフラグメントシェーダーという用語は、交換可能であるが、説明を明瞭にするために、ピクセルシェーダーが本明細書において用いられる。
【００２８】
図１は、本開示の例が動作することができる、テクセルのデータセットからヒストグラム及び関連した統計値を取得する一例示のコンピューティングシステム１００のブロック図である。非限定的な例として、コンピューティングシステム１００は、ビデオカメラ若しくはオンライン記憶デバイス又は伝送媒体等の１つ又は複数のデータソース１０５からデータを受信する。コンピューティングシステム１００は、デジタルビデオ取り込みシステム１１０及びコンピューティングプラットフォーム１１５も備えることができる。デジタルビデオ取り込みシステム１１０は、デジタルビデオのストリームを処理するか、又はアナログビデオを、データソース１０５としてコンピューティングプラットフォーム１１５によって処理することができる形態であるデジタルビデオに変換する。コンピューティングプラットフォーム１１５は、例えば、１つ又は複数の中央処理ユニット１３０ａ〜１３０ｎ等の処理デバイス１２５を備えることができるホストシステム１２０を備える。処理デバイス１２５は、ホストメモリ１３５に結合されている。処理デバイスは、グラフィックス処理ユニット１４０（ＧＰＵ）を更に実装することができる。１つの例では、ＧＰＵ１４０は、中央処理ユニット１３０ａ〜１３０ｎのうちの１つ又は複数とは別個の物理チップ上に実装することができる。別の例では、ＧＰＵ１４０は、移動電話及びタブレットに見出されるような加速処理ユニットすなわちＡＰＵとして知られているものにおいて、中央処理ユニット１３０ａ〜１３０ｎと同じ物理チップ又は論理デバイス上に並置することができる。別々のＧＰＵ機能及びＣＰＵ機能は、ＧＰＵが物理拡張カードであるコンピューターサーバーシステム、並びにパーソナルコンピューターシステム及びラップトップ上に見出すことができる。ＧＰＵ／ＡＰＵは、これらのデバイス及び将来のデバイス上で高スループットヒストグラム計算及び統計計算を提供することができる。
【００２９】
ＧＰＵ１４０は、ＧＰＵメモリ１４１、頂点プロセッサ１４２、及びフラグメントプロセッサ１４３を備えることができる。一例では、ホストメモリ１３５及びＧＰＵメモリ１４１は、別々の物理チップ上に実装することもできるし、ＡＰＵ等の同じ物理チップ（複数の場合もある）又は論理デバイス上に並置することもできる。
【００３０】
処理デバイス１２５は、データソース１０５からデータを受信して、テクセルのデータセット１５０を作成するヒストグラムマネージャー１４５を実装するように構成されている。このテクセルのデータセットは、テクセルのデータセット１５５としてＧＰＵメモリ１３７に転送される。加えて、ヒストグラムマネージャー１４５は、頂点バッファー１６０ａ〜１６０ｎを作成し、ＧＰＵメモリ１３７に転送し、頂点プロセッサ１４２において頂点シェーダー１６３ａ〜１６３ｎを構成し、フラグメントプロセッサ１４３においてピクセルシェーダー１６５ａ〜１６５ｎを構成し、テクセルのデータセット１５５に記憶し、テクセルのデータセット１５５から取り出し、テクセルのデータセット１５５を操作する１つ又は複数のバッファー１６７ａ〜１６７ｎと関連付けられた状態を維持する。テクセルのデータセット１５５は、少なくとも２の次元数Ｄを有し、各テクセルは値を含む。ヒストグラムマネージャー１４５は、データセットを座標の点リストにソートするように構成され、この点リスト内の点は、データセット内のテクセルロケーションに対応する。ヒストグラムマネージャー１４５は、１つ又は複数の頂点シェーダー１６３ａ〜１６３ｎを実行して、Ｎ−１次元優位性に従って点リスト内の点を配列することによって点リストの次元数を縮小するように更に構成されている。ヒストグラムマネージャー１４５は、１つ又は複数のピクセルシェーダー１６５ａ〜１６５ｎを実行して、配列された点の各関連付けられた値に対してラスター演算を実行し、少なくとも１つの値を取得するように更に構成されている。ヒストグラムマネージャー１４５は、この少なくとも１つの値を１つ又は複数のバッファー１６７ａ〜１６７ｎの第２のテクスチャーバッファー（例えば、１６７ｂ）に出力して、結果を生成するように更に構成されている。１つの例では、この結果は、ディスプレイ１７０上に表示することができる。これらのソートするステップ、縮小するステップ、実行するステップ、及び出力するステップは、Ｄが１になるまで処理デバイス１２５によって繰り返すことができる。
【００３１】
別の例では、ヒストグラムマネージャー１４５は、上記結果を、ビデオ処理アプリケーションにおいて用いられる１つ又は複数の下流のデバイス１７５に送信することができる。一例では、下流のデバイス（複数の場合もある）１７５は、静止画像又はビデオ内のショット変化を検出するショット変化検出器を実装することができる。マシン検出可能「ショット変化」は、本明細書において用いられるとき、所与の「単一のカメラの取り込みによって取り込まれた途切れていない画像シーケンス」が別の異なる「単一のカメラによって取り込まれた途切れていない画像シーケンス」に変化したか又は変化していることを示す肯定的な表示と定義することができる。画像のシーケンス、例えば、ビデオシーケンス内のショット変化の信頼性が高い検出及びシグナリングは、当該技術分野において難しい問題である。ショット変化の信頼性が高い検出及びシグナリングは、ケイデンス検出、インターレース解除、フォーマット変換、圧縮符号化、並びにビデオインデキシング及び取り出しを含むビデオ信号処理の分野において多くの用途を見出してきた。ショット変化は、人間の視認者によって容易に識別される。そのような事象は、エピソードに分かれたテレビ番組から広告スポットへの切り替え、又はライブニューススタジオ放送が同じセット上で或るカメラアングルから別のカメラアングルに切り替わるとき等のカメラ変化を含む。
【００３２】
誤検出及び検出漏れを最小限にした、画像シーケンス内のショット変化のリアルタイム又は準リアルタイムの自動無人検出用の信頼性が高いシステム及び方法が、米国特許第８，４５１，３８４号（以下、‘３８４特許）に教示されている。この米国特許は、その全内容が引用することによって本明細書の一部をなす。‘３８４特許では、色相ヒストグラム（hue histogram）計算が実行される。この色相ヒストグラムの計算は、ホストＣＰＵ１３０ａ〜１３０ｎ上で実行することができ、これは、更なる処理に備えたＧＰＵ１４０へのその後の転送前にボトルネックを招く場合がある。別の例では、色相ヒストグラム計算は、ホストシステム１２０とＧＰＵ１４０との間のデータ及び状態の転送を最小にして十分に安定したスループットを提供し、１０８０ｉ／ｐ及び４Ｋ等の大規模フォーマットビデオのリアルタイム性能を可能にするために、ＧＰＵ１４０上で実行することができる。
【００３３】
他の例では、下流のデバイス１７５は、他の静止画像又はビデオの機能を実装することができる。これらの機能は、ビデオ及び画像用の画像／物体のセグメンテーション及び追跡、ビデオ及び画像用の視差からの深度の推定、ビデオ及び画像内のテキスト検出、無参照（no-reference）ビデオ品質推定、パッシブソナーターゲットローカライゼーション、ソナー画像認識、ベクトル場ヒストグラムを介したロボット障害物回避、画像の分類及び注釈、コンテンツに基づく画像の検索及び取り出し、ネットワークパケットの分類及び検査、又はデータベースクエリー最適化のうちの少なくとも１つ等であるが、これらに限定されるものではない。
【００３４】
図２は、テクセルのデータセットからヒストグラム及び関連した統計値を取得する方法２００の一例を示すフロー図である。方法２００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法２００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００３５】
図２に示すように、コンピューティングシステム１００が、ヒストグラム及び関連した統計演算を計算することを可能にするために、ブロック２１０において、ヒストグラムマネージャー１４５は、第１のバッファー（例えば、１６７ａ）からテクセルのデータセット１５５を受信する。このテクセルのデータセット１５５は、少なくとも２の次元数Ｄを有し、各テクセルは値を含む。ブロック２２０において、ヒストグラムマネージャー１４５は、このデータセットを座標の点リストにソートする。この点リスト内の点は、テクセルのデータセット１５５内のテクセルロケーションに対応する。ブロック２３０において、ヒストグラムマネージャー１４５は、Ｎ−１次元優位性に従って点リスト内の点を配列することによって、点リストの次元数を縮小する。ブロック２４０において、ヒストグラムマネージャーは、配列された点の各関連付けられた値に対してラスター演算を実行して、少なくとも１つの値を取得する。ブロック２５０において、ヒストグラムマネージャーは、この少なくとも１つの値を第２のバッファー（例えば、１４７ｂ）に出力する。
【００３６】
図３は、散乱縮小インクリメント演算を用いてデータセットのヒストグラムを計算するように適合された図１の例示のコンピューティングシステム１００のブロック図である。図３の要素は、図１のものと同様である。ヒストグラムマネージャー１４５は、２Ｄ又は３Ｄのデータセットをテクスチャーメモリのデータセットテクスチャーバッファー３５０から受信するように構成されている。一例では、このデータセットは、ヒストグラムマネージャー１４５によって、ホストシステム１２０のホストメモリ１３５からデータセットテクスチャーバッファー３５０にアップロードされる場合もあるし、データセットテクスチャーバッファー３５０が、ＧＰＵ１４０のテクスチャーメモリ（図示せず）に既に存在する場合もある。ヒストグラムマネージャー１４５は、データセットテクスチャーバッファー３５０に存在するデータセットから第１の頂点バッファー３６０を生成するように構成されている。第１の頂点バッファー３６０は、（ｘ，ｙ）座標又は（ｘ，ｙ，ｚ）座標の集合である点リストを含むことができる。より詳細には、この点リストは、データセットテクスチャーバッファー３５０のデータセット内の各テクセルの個々のロケーションに対応する座標のリストでポピュレートすることができる。一例では、データセットテクスチャーバッファー１５０内のデータセットのアロケーションの２Ｄレイアウト又は３Ｄレイアウトのサイズにも縦横比にも付随した要件はないことに留意すべきである。
【００３７】
ヒストグラムマネージャー１４５は、第１の頂点バッファー３６０から第１の頂点シェーダー３６５に点リストを転送するように更に構成され、第１の頂点シェーダーも、データセットテクスチャーバッファー３５０から各テクセルの値を読み出すように構成されている。ヒストグラムマネージャー１４５は、ビンキャッシュテクスチャーバッファー３７５に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー３５０に位置する関連付けられたテクセルデータ値の値に従って新たな座標系に変換されるような列局所性（columnar locality）を用いてビンキャッシュテクスチャーバッファー３７５内のテクセルロケーションに書き込むことによって、第１の頂点シェーダー３６５を実行して、第１の頂点バッファー３６０内のテクセルの位置座標を新たな座標系に変換するように更に構成されている。
【００３８】
ヒストグラムマネージャー１４５は、第１の頂点シェーダー３６５から第１のピクセルシェーダー３７０に座標を転送するように更に構成されている。ヒストグラムマネージャー１４５は、第１の頂点シェーダー３６５が第１のピクセルシェーダー３７０に演算を行うように指示する位置座標のテクセルロケーションごとに１つずつビンキャッシュテクスチャーバッファー３７５のテクセル値をインクリメントする第１のピクセルシェーダー３７０を実行するように更に構成されている。第１のピクセルシェーダー３７０の並列演算にわたって状態を維持するこれらのインクリメント演算について、ヒストグラムマネージャー１４５は、第１のピクセルシェーダー３７０内のラスター演算モードを「加算」に設定するように構成されている。
【００３９】
第１のピクセルシェーダー３７０によって書き込まれたビンキャッシュテクスチャーバッファー３７５は、ビン幅及び１つの行を有しないように構成することができ、ヒストグラムの要求されたビンサイズの幅及び高さを有するように構成することができる。大きなＮ×Ｎ中間テクスチャーを用いることによって、ビンキャッシュテクスチャーバッファー３７５にわたる同時の書き込み演算は、大きなモダリティを有する極端な場合には、データセットサイズ／ビンサイズ倍だけ縮小される。そのようなデータセットの最悪の場合は、例えば、全てが０等の同一の値を有する場合である。そのような状況では、宛先テクスチャーがサイズＮ×１である場合、書き込み要求のデータセットサイズ数は、宛先テクスチャー内の同一のテクセルロケーション、すなわちビンロケーション（０，０）について、全て一列に積み重なり、キャッシュ欠陥率が非常に増大し、パイプラインストールを引き起こす可能性が最も高くなる。
【００４０】
第１のピクセルシェーダー３７０によって実行された演算の後、ビンキャッシュテクスチャーバッファー３７５は、実質的に列ごとのヒストグラムを含む。宛先ビンキャッシュテクスチャーバッファー３８０に最終ヒストグラムを取得するために、ヒストグラムマネージャー１４５は、この場合も点リストとして第２の頂点バッファー３４５を作成する。各座標は、ビンキャッシュテクスチャーバッファー３７５のテクセルロケーションに対応する。第１の頂点シェーダー３６５及び第１のピクセルシェーダー３３０とそれぞれ実質的に同一の第２の頂点シェーダー３５５及び第２のピクセルシェーダー３６０はそれぞれ、ここでは、１の高さ及びビンサイズと等しい幅を有する宛先ビンキャッシュテクスチャーバッファー３８０に対して、同じ散乱縮小インクリメント演算を実行する。第１の散乱縮小インクリメント演算は、列優位（column-dominant）形式ではなく行優位（row-dominant）形式で実行することができ、第２の散乱縮小インクリメント演算は、行優位形式ではなく列優位形式で実行することができることが当業者によって理解されるであろう。
【００４１】
図４Ａ及び図４Ｂは、散乱縮小インクリメント演算を用いてヒストグラムを計算する方法４００の一例を示すフロー図である。方法４００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法４００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００４２】
図４Ａ及び図４Ｂに示すように、コンピューティングシステム１００がヒストグラムを計算することを可能にするために、ブロック４１０において、ヒストグラムマネージャー１４５は、ＧＰＵ上に存在するデータセットを２Ｄ若しくは３Ｄテクスチャーバッファーとして受信するか、又は第１の頂点バッファー３６０を作成するのに用いられる、ホストシステム１２０からＧＰＵ１４０にアップロードされた２Ｄ若しくは３Ｄテクスチャーバッファーを受信する。第１の頂点バッファー３６０は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック４２０において、ヒストグラムマネージャー１４５は、第１の頂点バッファー３６０及びデータセットテクスチャーバッファー３５０から第１の頂点シェーダー３６５にデータを転送する。ブロック４３０において、ヒストグラムマネージャー１４５は、第１の頂点シェーダー３６５を実行して、データセットテクスチャーバッファー３５０から値を読み出し、列ロケーションを最終の所望のヒストグラムビンサイズと等しい幅及び高さを有するビンキャッシュテクスチャーバッファー３７５に出力する。第１の頂点シェーダー３６５は、第１の頂点バッファー３６０に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー３５０に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いてビンキャッシュテクスチャーバッファー３７５内のテクセルロケーションに書き込むことによって、第１の頂点バッファー３６０内のテクセルの位置座標を新たな座標系に更に変換する。ブロック４４０において、ヒストグラムマネージャー１４５は、第１のピクセルシェーダー３７０を実行して、加法（additive）ラスター演算を介してビンキャッシュテクスチャーバッファー３７５内の列テクセルロケーションにおいて値を１だけインクリメントする。第１のピクセルシェーダー３７０は、ビンキャッシュテクスチャーバッファー３７５のテクセル値を、頂点シェーダーの位置座標が頂点シェーダーに演算するように指示するテクセルロケーションごとに１つずつインクリメントする。
【００４３】
ブロック４５０において、ヒストグラムマネージャー１４５は、ビンキャッシュテクスチャーバッファー３７５からデータを読み出し、第２の頂点バッファー３４５を作成する。この第２の頂点バッファー３４５は、点リストを含み、その各点は、ビンキャッシュテクスチャーバッファー３７５内の各データのテクセルロケーションに対応する。ブロック４６０において、ヒストグラムマネージャー１４５は、第２の頂点バッファー３４５及びビンキャッシュテクスチャーバッファー３７５からのデータを第２の頂点シェーダー３５５に供給する。ブロック４７０において、ヒストグラムマネージャー１４５は、第２の頂点シェーダー３５５を実行して、ビンキャッシュテクスチャーバッファー３７５から値を読み出し、１の高さ及び最終の所望のヒストグラムビンサイズと等しい幅を有する最終のヒストグラムテクスチャーのビンテクセルロケーションを出力する。ブロック４８０において、ヒストグラムマネージャー１４５は、第２のピクセルシェーダー３６０を実行して、加法ラスター演算を介して宛先ビンキャッシュテクスチャーバッファー３８０内の値を１だけインクリメントし、最終のヒストグラムを取得する。第１のピクセルシェーダー３７０は、第１の頂点シェーダー３６５が第１のピクセルシェーダー３７０によって演算するように指示された位置座標のテクセルロケーションごとに１つずつビンキャッシュテクスチャーバッファー３７５のテクセル値をインクリメントする。
【００４４】
図５は、散乱縮小インクリメント演算の２つのステップを通じた２Ｄデータセットテクスチャー３５０からのデータの推移の空間レイアウト５００を示している。２Ｄデータセットテクスチャーバッファー３５０は、例えば、２０４８×１０２４データセットからビンキャッシュテクスチャーバッファー３７５内の中間の２５６×２５６データセットに縮小され、宛先ビンキャッシュテクスチャーバッファー３８０内の最終の２５６×１ヒストグラムに縮小される。図５は、一実施形態の列優位形態を示している。別の実施形態では、第１の頂点シェーダー３６５は、列局所性の代わりに行局所性を用いて第１の頂点バッファー３６０内のテクセルロケーションに書き込むことによって、第１の頂点バッファー３６０内のテクセルの位置座標を新たな座標系に変換するように構成することができることが理解されるであろう。３Ｄテクスチャーの場合、第１の演算をｘｙ平面優位（planar-dominant）の方法（この場合も、ｘｙ平面優位性、ｚｙ平面優位性、又はｘｚ平面優位性の選択は任意である）で実行することができ、第２の演算を行優位方法又は列優位方法のいずれかで実行することができ、第３の演算がデータセットの最終のヒストグラムをもたらすことを除いて、演算の順序は同様であることも理解されるであろう。
【００４５】
図６は、Scheuermann及びHensleyにおいて実行されるようなヒストグラム計算の一例に対応するプロセス及びデータフローのブロック図である。Scheuermann及びHensleyでは、単一の散乱縮小インクリメント演算が存在する。上述したように、ビンサイズを増加させることによって軽減される性能のかなりのばらつきが存在する。相違として、実施形態において説明したようなキャッシュ書き込み衝突問題を軽減するより効率的で最適化された方法は、第１のビンの次元数を増加させ、Ｄ＝１になるまで、次元数を縮小し続けることである。これは、ランタイムにおいてペナルティのないメモリキャッシュ効率の最適化の利点をＧＰＵに与える。さらに、本開示の幾つかの実施形態は、一貫した予測可能な非データ依存の性能及びランタイムをＧＰＵに与え、これは、リアルタイムで又は厳しいスループット制約下で動作しなければならないシステムにとって極めて重要である。
【００４６】
図７Ａ〜図７Ｃは、特許文献１（以下、‘９２２特許）において実行されるようなヒストグラム計算の一例に対応するプロセス及びデータフローのブロック図である。‘９２２特許に教示された例は、テクスチャーメモリを読み出す能力を有しない頂点シェーダーに依拠することによって以前のＧＰＵハードウェア上であっても動作することが可能であるが、限られていない反復的な縮小技法を実施する。比較として、本開示の幾つかの実施形態では、Ｄ次元データセットテクスチャーバッファーについて、多くともＤ個の散乱縮小インクリメントステップが必要とされ、最大のデータセットを除く全ての場合について実際問題としてＤ＝２であるのに対して、図７Ａ〜図７Ｃに示す例に基づくと、必要とされる縮小ステップの数は、データセットサイズが２の累乗である場合、式１によって与えられる。
【数２】
2016527631.tif 000004
【００４７】
図７Ａ〜図７Ｃの例の場合、データセットのサイズが増加するにつれて、初期タイルサイズも増加し、縮小演算の数も増加することに留意されたい。その結果、図７Ａ〜図７Ｃの例の性能は、特に、大きなデータセットについては準最適である。
【００４８】
図８は、散乱縮小置換演算を用いてデータセットの最小値を計算するように適合された図１の例示のコンピューティングシステム１００のブロック図である。図８の要素は、第１のピクセルシェーダー８７０及び第２のピクセルシェーダー８６０が、ヒストグラム計算のように１だけインクリメントするのではなく、対応するビンキャッシュテクスチャーバッファー８７５及び宛先ビンキャッシュテクスチャーバッファー８８０に値をそれぞれ配置するように適合されているとともに、「加法」ラスター演算の代わりに「最小」ラスター演算を用いるように適合されていることを除いて、図１の要素と同様である。ビンキャッシュテクスチャーバッファー８７５は、もはやビンサイズの幅及び高さではなく、オリジナルのデータセットの幅及び１の高さである。加えて、宛先ビンキャッシュテクスチャーバッファー８８０は、１と等しい幅及び高さを有する単一の最小値を含むように適合されている。
【００４９】
図９Ａ及び図９Ｂは、散乱縮小置換演算を用いてデータセットの最小値を計算する方法９００の一例を示すフロー図である。方法９００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法９００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００５０】
図９Ａ及び図９Ｂに示すように、コンピューティングシステム１００がデータセットの最小値を計算することを可能にするために、ブロック９１０において、ヒストグラムマネージャー１４５は、ＧＰＵ１４０上に存在するデータセットを２Ｄ若しくは３Ｄテクスチャーバッファーとして受信するか、又は第１の頂点バッファー８６０を作成するのに用いられる、ホストシステム１２０からＧＰＵ１４０にアップロードされた２Ｄ若しくは３Ｄテクスチャーバッファーを受信する。第１の頂点バッファー８６０は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック９２０において、ヒストグラムマネージャー１４５は、第１の頂点バッファー８６０及びデータセットテクスチャーバッファー８５０から第１の頂点シェーダー８６５にデータを転送する。ブロック９３０において、ヒストグラムマネージャー１４５は、第１の頂点シェーダー８６５を実行して、データセットテクスチャーバッファー８５０から値を読み出し、列ロケーションを、データセットテクスチャーバッファー８５０の幅と等しい幅及び１と等しい高さを有する合計キャッシュテクスチャーバッファー８８５に出力する。第１の頂点シェーダー８６５は、合計キャッシュテクスチャーバッファー８８５に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー８５０に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて合計キャッシュテクスチャーバッファー８８５内のテクセルロケーションに書き込むことによって、第１の頂点バッファー８６０内のテクセルの位置座標を新たな座標系に更に変換する。ブロック９４０において、ヒストグラムマネージャー１４５は、第１のピクセルシェーダー８７０を実行して、データセットテクスチャーバッファー８５０から値を読み出し、最小ラスター演算を介して合計キャッシュテクスチャーバッファー８８５内の列テクセルロケーションにおいてこれらの値を置換する。
【００５１】
ブロック９５０において、ヒストグラムマネージャー１４５は、合計キャッシュテクスチャーバッファー８８５を用いて、第２の頂点バッファー８４５を作成する。この第２の頂点バッファー８４５は、点リストを含み、その各点は、合計キャッシュテクスチャーバッファー８８５内の各データのテクセルロケーションに対応する。ブロック９６０において、ヒストグラムマネージャー１４５は、第２の頂点バッファー８４５及び合計キャッシュテクスチャーバッファー８８５からのデータを第２の頂点シェーダー８５５に供給する。ブロック９７０において、ヒストグラムマネージャー１４５は、第２の頂点シェーダー８５５を実行して、１の高さ及び１の幅を有する最終合計テクスチャーバッファー８９０の単一のテクセルロケーションを供給する。ブロック９８０において、ヒストグラムマネージャー１４５は、第２のピクセルシェーダー８６０を実行して、合計キャッシュテクスチャーバッファー８８５から値を読み出し、データセットの最小値を計算するために、最小ラスター演算を介して最終合計テクスチャーバッファー８９０内の最終の単一のテクセルロケーションにおいて値を置換する。
【００５２】
図１０は、散乱縮小置換演算を用いてデータセットの最大値を計算するように適合された図１の例示のコンピューティングシステム１００のブロック図である。図１０の要素は、第１のピクセルシェーダー１０７０及び第２のピクセルシェーダー１０６０が、ヒストグラム計算のように１だけインクリメントするのではなく、対応するビンキャッシュテクスチャーバッファー１０７５及び宛先ビンキャッシュテクスチャーバッファー１０８０に値をそれぞれ配置するように適合されているとともに、「加法」ラスター演算の代わりに「最大」ラスター演算を用いるように適合されていることを除いて、図１の要素と同様である。ビンキャッシュテクスチャーバッファー１０７５は、もはやビンサイズの幅及び高さではなく、オリジナルのデータセットの幅及び１の高さである。加えて、宛先ビンキャッシュテクスチャーバッファー１０８０は、１と等しい幅及び高さを有する単一の最小値を含むように適合されている。
【００５３】
図１１Ａ及び図１１Ｂは、散乱縮小置換演算を用いてデータセットの最大値を計算する方法１１００の一例を示すフロー図である。方法１１００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法１１００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００５４】
図１１Ａ及び図１１Ｂに示すように、コンピューティングシステム１００がデータセットの最大値を計算することを可能にするために、ブロック１１１０において、ヒストグラムマネージャー１４５は、ＧＰＵ１４０上に存在するデータセットを２Ｄ若しくは３Ｄテクスチャーバッファーとして受信するか、又は第１の頂点バッファー１０６０を作成するのに用いられる、ホストシステム１２０からＧＰＵ１４０にアップロードされた２Ｄ若しくは３Ｄテクスチャーバッファーを受信する。第１の頂点バッファー１０６０は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック１１２０において、ヒストグラムマネージャー１４５は、第１の頂点バッファー１０６０及びデータセットテクスチャーバッファー１０５０から第１の頂点シェーダー１０６５にデータを転送する。ブロック１１３０において、ヒストグラムマネージャー１４５は、第１の頂点シェーダー１０６５を実行して、データセットテクスチャーバッファー１０５０から値を読み出し、列ロケーションを、データセットテクスチャーバッファー１０５０の幅と等しい幅及び１と等しい高さを有する合計キャッシュテクスチャーバッファー１０８５に出力する。第１の頂点シェーダー１０６５は、合計キャッシュテクスチャーバッファー１０８５に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー１０５０に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて合計キャッシュテクスチャーバッファー１０８５内のテクセルロケーションに書き込むことによって、第１の頂点バッファー１０６０内のテクセルの位置座標を新たな座標系に更に変換する。ブロック１１４０において、ヒストグラムマネージャー１４５は、第１のピクセルシェーダー１０７０を実行して、データセットテクスチャーバッファー１０５０から値を読み出し、最大ラスター演算を介して合計キャッシュテクスチャーバッファー１０８５内の列テクセルロケーションにおいてこれらの値を置換する。
【００５５】
ブロック１１５０において、ヒストグラムマネージャー１４５は、合計キャッシュテクスチャーバッファー１０８５を用いて、第２の頂点バッファー１０４５を作成する。この第２の頂点バッファー１０４５は、点リストを含み、その各点は、合計キャッシュテクスチャーバッファー１０８５内の各データのテクセルロケーションに対応する。ブロック１１６０において、ヒストグラムマネージャー１４５は、第２の頂点バッファー１０４５及び合計キャッシュテクスチャーバッファー１０８５からのデータを第２の頂点シェーダー１０５５に供給する。ブロック１１７０において、ヒストグラムマネージャー１４５は、第２の頂点シェーダー１０５５を実行して、１の高さ及び１の幅を有する最終合計テクスチャーバッファー１０９０の単一のテクセルロケーションを供給する。ブロック１１８０において、ヒストグラムマネージャー１４５は、第２のピクセルシェーダー１０６０を実行して、合計キャッシュテクスチャーバッファー１０８５から値を読み出し、データセットの最大値を計算するために、最大ラスター演算を介して最終合計テクスチャーバッファー１０９０内の最終の単一のテクセルロケーションにおいて値を置換する。
【００５６】
図１２は、散乱縮小加算演算を用いてデータセットの合計値を計算するように適合された図１の例示のコンピューティングシステム１００のブロック図である。図１２の要素は、第１のピクセルシェーダー１２７０及び第２のピクセルシェーダー１２６０が、図１及び図２のヒストグラム計算のように１だけインクリメントするのではなく値を加算する（例えば、「加法」ラスター演算を実行する）ように適合されていることを除いて、図１の要素と同様である。ビンキャッシュテクスチャーバッファー１２７５は、もはやビンサイズの幅及び高さではなく、オリジナルのデータセットの幅及び１の高さである。加えて、宛先ビンキャッシュテクスチャーバッファー１２８０は、１と等しい幅及び高さを有する単一の合計値を含むように適合されている。
【００５７】
図１３Ａ及び図１３Ｂは、散乱縮小加算演算を用いてデータセットの合計値を計算する方法１３００の一例を示すフロー図である。方法１３００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法１３００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００５８】
図１３Ａ及び図１３Ｂに示すように、コンピューティングシステム１００がデータセットの合計値を計算することを可能にするために、ブロック１３１０において、ヒストグラムマネージャー１４５は、ＧＰＵ１４０上に存在するデータセットを２Ｄ若しくは３Ｄテクスチャーバッファーとして受信するか、又は第１の頂点バッファー１２６０を作成するのに用いられる、ホストシステム１２０からＧＰＵ１４０にアップロードされた２Ｄ若しくは３Ｄテクスチャーバッファーを受信する。第１の頂点バッファー１２６０は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック１３２０において、ヒストグラムマネージャー１４５は、第１の頂点バッファー１２６０及びデータセットテクスチャーバッファー１２５０から第１の頂点シェーダー１２６５にデータを転送する。ブロック１３３０において、ヒストグラムマネージャー１４５は、第１の頂点シェーダー１２６５を実行して、データセットテクスチャーバッファー１２５０から値を読み出し、列ロケーションを、データセットテクスチャーバッファー１２５０の幅と等しい幅及び１と等しい高さを有する合計キャッシュテクスチャーバッファー１２８５に出力する。第１の頂点シェーダー１２６５は、合計キャッシュテクスチャーバッファー１２８５に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー１２５０に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて合計キャッシュテクスチャーバッファー１２８５内のテクセルロケーションに書き込むことによって、第１の頂点バッファー１２６０内のテクセルの位置座標を新たな座標系に更に変換する。ブロック１３４０において、ヒストグラムマネージャー１４５は、第１のピクセルシェーダー１２７０を実行して、データセットテクスチャーバッファー１２５０から値を読み出し（正：read）、加法ラスター演算を介して合計キャッシュテクスチャーバッファー１２８５内の列テクセルロケーションにおいてこれらの値を加算する。
【００５９】
ブロック１３５０において、ヒストグラムマネージャー１４５は、合計キャッシュテクスチャーバッファー１２８５を用いて、第２の頂点バッファー１２４５を作成する。この第２の頂点バッファー１２８５は、点リストを含み、その各点は、合計キャッシュテクスチャーバッファー１２８５内の各データのテクセルロケーションに対応する。ブロック１３６０において、ヒストグラムマネージャー１４５は、第２の頂点バッファー１２４５及び合計キャッシュテクスチャーバッファー１２８５からのデータを第２の頂点シェーダー１２５５に供給する。ブロック１３７０において、ヒストグラムマネージャー１４５は、第２の頂点シェーダー１２５５を実行して、１の高さ及び１の幅を有する最終合計テクスチャーバッファー１２９０の単一のテクセルロケーションを供給する。ブロック１３８０において、ヒストグラムマネージャー１４５は、第２のピクセルシェーダー１２６０を実行して、合計キャッシュテクスチャーバッファー１２８５から値を読み出し、データセットの合計値を計算するために、加法ラスター演算を介して最終合計テクスチャーバッファー１２９０内の最終の単一のテクセルロケーションにおいて値を加算する。
【００６０】
図１４は、散乱縮小加算演算を用いてデータセットの平均値を計算するように適合された図１の例示のコンピューティングシステム１００のブロック図である。図１４の要素は、合計値のそれぞれが、第１のピクセルシェーダー３７０と関連付けられたオリジナルのデータセットテクスチャーバッファー３５０の列の高さによって除算されるとともに、オリジナルのデータセットテクスチャーバッファー３５０の幅又は行によって除算されることを除いて、図１及び図１０の要素と同様である。これは、データセットの平均の最終の計算をもたらす。
【００６１】
図１５Ａ及び図１５Ｂは、散乱縮小加算演算を用いてデータセットの平均値を計算する方法１５００の一例を示すフロー図である。方法１５００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法１５００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００６２】
図１５Ａ及び図１５Ｂに示すように、コンピューティングシステム１００がデータセットの平均値を計算することを可能にするために、ブロック１５１０において、ヒストグラムマネージャー１４５は、ＧＰＵ１４０上に存在するデータセットを２Ｄ若しくは３Ｄテクスチャーバッファーとして受信するか、又は第１の頂点バッファー１４６０を作成するのに用いられる、ホストシステム１２０からＧＰＵ１４０にアップロードされた２Ｄ若しくは３Ｄテクスチャーバッファーを受信する。第１の頂点バッファー１４６０は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック１４２０において、ヒストグラムマネージャー１４４５は、第１の頂点バッファー１４６０及びデータセットテクスチャーバッファー１４５０から第１の頂点シェーダー１４６５にデータを転送する。ブロック１５３０において、ヒストグラムマネージャー１４５は、第１の頂点シェーダー１４６５を実行して、データセットテクスチャーバッファー１４５０から値を読み出し、列ロケーションを、データセットテクスチャーバッファー１４５０の幅と等しい幅及び１と等しい高さを有する合計キャッシュテクスチャーバッファー１４８５に出力する。第１の頂点シェーダー１４６５は、合計キャッシュテクスチャーバッファー１４８５に位置するテクセルの位置座標の垂直座標が、データセットテクスチャーバッファー１５０に位置する関連付けられたテクセルテクスチャーの値に従って新たな座標系に変換されるような列局所性を用いて合計キャッシュテクスチャーバッファー１４８５内のテクセルロケーションに書き込むことによって、第１の頂点バッファー１４６０内のテクセルの位置座標を新たな座標系に更に変換する。ブロック１５４０において、ヒストグラムマネージャー１４５は、第１のピクセルシェーダー１４７０を実行して、データセットテクスチャーバッファー１４５０から値を読み出し、加法ラスター演算を介して合計キャッシュテクスチャーバッファー１４８５内の列テクセルロケーションにおいてこれらの値を加算する。
【００６３】
ブロック１５５０において、ヒストグラムマネージャー１４５は、合計キャッシュテクスチャーバッファー１４８５を用いて、第２の頂点バッファー１４４５を作成する。この第２の頂点バッファー１４８５は、点リストを含み、その各点は、合計キャッシュテクスチャーバッファー１４８５内の各データのテクセルロケーションに対応する。ブロック１５６０において、ヒストグラムマネージャー１４５は、第２の頂点バッファー１４４５及び合計キャッシュテクスチャーバッファー１４８５からのデータを第２の頂点シェーダー１４５５に供給する。ブロック１５７０において、ヒストグラムマネージャー１４５は、第２の頂点シェーダー１４５５を実行して、１の高さ及び１の幅を有する最終合計テクスチャーバッファー１４９０の単一のテクセルロケーションを供給する。ブロック１５８０において、ヒストグラムマネージャー１４５は、第２のピクセルシェーダー１４６０を実行して、合計キャッシュテクスチャーバッファー１４８５から値を読み出し、加法ラスター演算を介して最終合計テクスチャーバッファー１４９０内の最終の単一のテクセルロケーションにおいてこれらの値に１／（データセットサイズ）を乗算したものを加算し、データセットの平均値を計算する。
【００６４】
図１６Ａ〜図１６Ｃは、散乱縮小加算演算を用いてデータセットの標準偏差を計算するように適合された図１の例示のコンピューティングシステム１００のブロック図である。図１６Ａ〜図１６Ｃの要素は、図１４の要素と同様であり、図１４及び図１５において説明したシステム及び方法を用いて取得された事前に計算された平均から標準偏差を計算する追加のブロック１６５０、１６６０を有する。ピクセルシェーダー１６０２は、データセット内の各データＸの
【数３】
2016527631.tif 000005
を計算するのに用いられ、計算の結果、データセットテクスチャーバッファー１６０８が得られる。ここで、
【数４】
2016527631.tif 000006
は、図１４及び図１６Ａの左半分において計算されたデータセットの平均である。同じＤ次元散乱縮小加算ブロック１６４０は、図１２において説明したデータセットの実施形態の合計と同様に、データセットテクスチャーバッファー１６０８に対して実行される。最終のブロック１６６０において、ピクセルシェーダー１６３２は、データに対して演算を行って合計
【数５】
2016527631.tif 000007
を取得し、データセットの標準偏差を与える式２を計算する。
【数６】
2016527631.tif 000008
【００６５】
本質的には、図１４のデータセットの平均を取得する機能、ピクセルシェーダー１６０２、図１２のデータセットの合計を取得するブロック／演算、及びピクセルシェーダー１６３２を組み合わせることによって、標準偏差が効率的に取得される。
【００６６】
図１７Ａ〜図１７Ｃは、散乱縮小加算演算を用いてデータセットの標準偏差を計算する方法１７００の一例を示すフロー図である。方法１７００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法１７００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００６７】
図１７Ａ〜図１７Ｃに示すように、コンピューティングシステム１００がデータセットの標準偏差を計算することを可能にするために、ブロック１７０５において、ヒストグラムマネージャー１４５は、第１の頂点バッファー１６０２に記憶されたデータセットの平均を計算する。第１の頂点バッファー１６０２は、データセットテクスチャーバッファー１４０８に関してアイデンティティ次元（identity dimensions）を有する単一の象限（quad：クアッド）を含む。ブロック１７１０において、ヒストグラムマネージャー１４５は、第１の頂点バッファー１６０２のコンテンツを第１の頂点シェーダー１６０４に転送する。第１の頂点シェーダー１６０４は、データセットテクスチャーバッファー１６０８と等しい幅及び高さを有する一時キャッシュテクスチャーバッファー１６０６のテクセルロケーションを供給する。ブロック１７１５において、ヒストグラムマネージャー１４５は、第１のピクセルシェーダー１６１０を実行して、データセットテクスチャーバッファー１４０８から値を読み出し、事前に計算された平均値合計テクスチャーバッファー１６１２から単一の値を読み出し、データセット値のそれぞれと一時キャッシュテクスチャーバッファー１６０６の各テクセルの平均値との差の２乗を計算する。
【００６８】
ブロック１７２０において、ヒストグラムマネージャー１４５は、一時キャッシュテクスチャーバッファー１６０６を用いて、第２の頂点バッファー１６１４を作成する。第２の頂点バッファー１６１４は、点リストを含み、その各点は、一時キャッシュテクスチャーバッファー１６０６内の各データのテクセルロケーションに対応する。ブロック１７２５において、ヒストグラムマネージャー１４５は、第２の頂点バッファー１６１４及び一時キャッシュテクスチャーバッファー１６０６のコンテンツを第２の頂点シェーダー１６１６に供給する。ブロック１７３０において、ヒストグラムマネージャー１４５は、第２の頂点シェーダー１６１６を実行して、一時キャッシュテクスチャー１６０６から値を読み出し、一時キャッシュテクスチャーバッファー１６０６の幅と等しい幅及び１と等しい高さを有する合計キャッシュテクスチャーバッファー１６１８の列ロケーションを出力する。ブロック１７３５において、ヒストグラムマネージャー１４５は、第２のピクセルシェーダー１６１７を実行して、データセットテクスチャーバッファー１４０８から値を読み出し、加法ラスター演算を介して、これらの値を合計キャッシュテクスチャーバッファー１４１２内の列テクセルロケーションに加算する。
【００６９】
ブロック１７４０において、ヒストグラムマネージャー１４５は、合計キャッシュテクスチャーバッファーを用いて、第３の頂点バッファー１６２０を作成する。第３の頂点バッファー１６２０は、点リストを含み、その各点は、合計キャッシュテクスチャー１６１２内の各データのテクセルロケーションに対応する。ブロック１７４５において、ヒストグラムマネージャー１４５は、第３の頂点バッファー１６２０のコンテンツを第３の頂点シェーダー１６２２に供給する。ブロック１７５０において、ヒストグラムマネージャー１４５は、第３の頂点シェーダー１６２２を実行して、１の高さ及び１の幅を有する最終合計テクスチャーバッファー１６２４の単一のテクセルロケーションを供給する。ブロック１７５５において、ヒストグラムマネージャー１４５は、第３のピクセルシェーダー１６２６を実行して、合計テクスチャーバッファー１６２８内の単一のテクセルロケーションにおいて、合計キャッシュテクスチャーバッファー１６２４から値を読み出し、加法ラスター演算を介して、これらの値に１／（データセットサイズ）を乗算したものを加算する。
【００７０】
ブロック１７６０において、ヒストグラムマネージャー１４５は、合計テクスチャーバッファー１６２８のコンテンツを用いて、第４の頂点バッファー１６３０を作成する。第４の頂点バッファー１６３０は、合計テクスチャーバッファー１６２８内の単一のテクセルロケーションに対応する単一の要素を有する点リストを含む。ブロック１７６５において、ヒストグラムマネージャー１４５は、第４の頂点バッファー１６３０のコンテンツを第４の頂点シェーダー１６３２に転送する。ブロック１７７０において、ヒストグラムマネージャー１４５は、第４の頂点シェーダー１６３２を実行して、１の高さ及び１の幅を有する最終標準偏差テクスチャーバッファー１６３４の単一のテクセルロケーションを供給する。ブロック１７７５において、ヒストグラムマネージャー１４５は、データセットの標準偏差を計算するために、第４のピクセルシェーダー１６３３を実行して、標準偏差テクスチャーバッファー１６３４内の単一のテクセルロケーションにおいて、合計テクスチャーから値を読み出し、置換ラスター演算を介して、この値に１／（データセットサイズ）を乗算したものの平方根を取る。
【００７１】
図１８は、データセット内の所与の最小値のロケーションを求めるために、図８のデータセット計算の最小値を拡張するように適合された図１の例示のコンピューティングシステム１００の（正：of）ブロック図である。１×１の事前に計算された最小テクスチャーバッファー１８０２が与えられると、ヒストグラムマネージャー１４５は、点リストを含む第１の頂点バッファー１８０４を生成するように構成される。この点リストは、データセットテクスチャーバッファー１８０６からヒストグラムマネージャー１４５によって取り出された（ｘ，ｙ）座標又は（ｘ，ｙ，ｚ）座標の集合である。次に、ヒストグラムマネージャー１４５は、データセットテクスチャーバッファー１８０４内のテクセル座標が最小値と等しい場合に限り、単一のピクセル（１と等しい幅及び高さ）への有効な宛先座標及び（ｘ，ｙ）ロケーション又は（ｘ，ｙ，ｚ）ロケーションを出力する頂点シェーダー１８０８を実行し、そうでない場合、負のロケーションが出力され、これによって、後続のピクセルシェーダー１８１０は、最小値のみを用いて演算することが確保される。複数の等しい最小値の場合、返されるロケーションは非決定的である。しかしながら、当業者であれば、複数の等しい最小値の全てのロケーションを確実に求める方法が、図１８に示すような機能を再帰的に適用し、ＮａＮ（数字でない）値を有するオリジナルのデータセット内の最小値を取り除き、最小値が変化するまで、上記機能を再び実行するものであると推量することができる。
【００７２】
図１９は、データセット内の最小値のロケーションを計算する方法１９００の一例を示すフロー図である。方法１９００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法１９００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００７３】
図１９に示すように、コンピューティングシステム１００がデータセット内の最小値のロケーションを計算することを可能にするために、ブロック１９１０において、ヒストグラムマネージャー１４５は、データセットの最小値を計算する。ブロック１９２０において、ヒストグラムマネージャー１４５は、データセットテクスチャーバッファー１８０６を用いて、第１の頂点バッファー１８０４を作成する。第１の頂点バッファー１８０４は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック１９３０において、ヒストグラムマネージャー１４５は、第１の頂点バッファー１８０４及びデータセットテクスチャーバッファー１８０６のコンテンツを第１の頂点シェーダー１８０８に入力する。ブロック１９４０において、ヒストグラムマネージャー１４５は、第１の頂点シェーダー１８０８を実行して、データセットテクスチャーバッファー１８０６から値を読み出し、データセット内の値が、１と等しい幅及び高さを有する最小ロケーションテクスチャーバッファー１８０２内の値と比較した最小値と等しい場合には、単一のテクセルロケーション並びにｘ及びｙロケーションを出力し、データセット内の値が上記最小値よりも大きい場合には、単一の範囲外のテクセルロケーションを出力する。ブロック１９５０において、ヒストグラムマネージャー１４５は、データセット内の最小値のロケーションを計算するために、第１のピクセルシェーダー１８１０を実行して、第１の頂点バッファー１８０４からｘ値及びｙ値を読み出し、置換ラスター演算を介して、これらの値を、最小ロケーションテクスチャーバッファー１８１２のｘ値及びｙ値にコピーする。
【００７４】
図２０は、データセット内の所与の最大値のロケーションを求めるために、図１０のデータセット計算の最小値を拡張するように適合された図１の例示のコンピューティングシステム１００のブロック図である。１×１の事前に計算された最大テクスチャーバッファー２００２が与えられると、ヒストグラムマネージャー１４５は、点リストを含む第１の頂点バッファー２００４を生成するように構成される。この点リストは、データセットテクスチャーバッファー２００６からヒストグラムマネージャー１４５によって取り出された（ｘ，ｙ）座標又は（ｘ，ｙ，ｚ）座標の集合である。次に、ヒストグラムマネージャー１４５は、データセットテクスチャーバッファー２００６内のテクセル座標が最大値と等しい場合に限り、単一のピクセル（１と等しい幅及び高さ）への有効な宛先座標及び（ｘ，ｙ）ロケーション又は（ｘ，ｙ，ｚ）ロケーションを出力する頂点シェーダー２００８を実行するように構成され、そうでない場合、負のロケーションが出力され、これによって、後続のピクセルシェーダー２０１０は、最小値のみを用いて演算することが確保される。複数の等しい最大値の場合、返されるロケーションは非決定的である。しかしながら、当業者であれば、複数の等しい最大値の全てのロケーションを確実に求める方法が、図２０に示すような機能を再帰的に適用し、ＮａＮ（数字でない）値を有するオリジナルのデータセット内の最大値を取り除き、最大値が変化するまで、上記機能を再び実行するものであると推量することができる。
【００７５】
図２１は、データセット内の最大値のロケーションを計算する方法２１００の一例を示すフロー図である。方法２１００は、図１のコンピューターシステム１００によって実行することができ、ハードウェア（例えば、回路部、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（例えば、処理デバイス上で実行される命令）、又はそれらの組み合わせを含むことができる。１つの例では、方法２１００は、図１のコンピューティングシステム１００のヒストグラムマネージャー１４５によって実行される。
【００７６】
図２１に示すように、コンピューティングシステム１００がデータセット内の最大値のロケーションを計算することを可能にするために、ブロック２１１０において、ヒストグラムマネージャー１４５は、データセットの最大値を計算する。ブロック２１２０において、ヒストグラムマネージャー１４５は、データセットテクスチャーバッファー２００６を用いて、第１の頂点バッファー２００４を作成する。第１の頂点バッファー２００４は、点リストを含み、その各点は、データセット内の各データのテクセルロケーションに対応する。ブロック２１３０において、ヒストグラムマネージャー１４５は、第１の頂点バッファー２００４及びデータセットテクスチャーバッファー２００６のコンテンツを第１の頂点シェーダー２００８に入力する。ブロック２１４０において、ヒストグラムマネージャー１４５は、第１の頂点シェーダー２００８を実行して、データセットテクスチャーバッファー２００６から値を読み出し、データセット内の値が、１と等しい幅及び高さを有する最大ロケーションテクスチャーバッファー２００２内の値と比較した最大値と等しい場合には、単一のテクセルロケーション並びにｘ及びｙロケーションを出力し、データセット内の値が上記最大値よりも大きい場合には、単一の範囲外のテクセルロケーションを出力する。ブロック２１５０において、ヒストグラムマネージャー１４５は、データセット内の最大値のロケーションを計算するために、第１のピクセルシェーダー２０１０を実行して、第１の頂点バッファー２００４からｘ値及びｙ値を読み出し、置換ラスター演算を介して、これらの値を、最大ロケーションテクスチャーバッファー２０１２のｘ値及びｙ値にコピーする。
【００７７】
本発明は、ヒストグラム及び関連した統計関数を計算する従来技術の方法を上回る幾つかの利点を有する。データセットの次元数を縮小する散乱縮小フレームワークの構成は、最新のＧＰＵ及びこれまでのＧＰＵのキャッシュの挙動と整合し、これによって、性能の大幅な増大が可能になる。散乱縮小フレームワークは、高モダリティを有するデータセットであっても高効率で明確に定義された挙動で、データセットのヒストグラム計算からメジアン及びモードを見つけることにわたる機能を実行するように一般化される。このプロセスは、同時代の大量に市場に出回っている商用のコンピューターハードウェア上で、４Ｋビデオ用のリアルタイムよりも大きな解像度のビデオにおいて３０ｆｐｓで動作するのに十分効率的であり、これによって、新たな応用が開ける。これらの応用には、色処理、ビデオコーダー効率の改善、ショット変化検出、動き補償されたデインターレーシング及びフレームレート変換、並びにリアルタイムシーン解析、写真測量法、及び子宮造影法用の物体セグメンテーションが含まれるが、これらに限定されるものではない。
【００７８】
図２２は、本明細書において論述した方法論のうちの任意の１つ又は複数をマシンに実行させる一組の命令を実行することができるコンピューターシステム２２００の例示の形態のマシンの図的表現を示している。幾つかの例では、このマシンは、ＬＡＮ、イントラネット、エクストラネット、又はインターネット内の他のマシンに接続（例えば、ネットワーク接続）することができる。このマシンは、クライアントサーバーネットワーク環境ではサーバーマシンの資格で動作することができる。このマシンは、パーソナルコンピューター（ＰＣ）、セットトップボックス（ＳＴＢ）、サーバー、ネットワークルーター、ネットワークスイッチ、若しくはネットワークブリッジ、又はそのマシンによって行われる動作を指定する一組の命令（逐次又は別の方法）を実行することが可能な任意のマシンとすることができる。さらに、単一のマシンしか図示されていないが、「マシン」という用語は、本明細書において論述した方法論のうちの任意の１つ又は複数を実行する一組（又は複数組）の命令を個々に又は共同で実行するマシンの任意の集合体も含むものと解釈されるものとする。
【００７９】
この一例示のコンピューターシステム２２００は、処理デバイス（プロセッサ）２２０２、メインメモリ２２０４（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、同期ＤＲＡＭ（ＳＤＲＡＭ）等のダイナミックランダムアクセスメモリ（ＤＲＡＭ））、スタティックメモリ２２０６（例えば、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ））、及びデータ記憶デバイス２２１６を備える。これらは、バス２２０８を介して互いに通信する。
【００８０】
プロセッサ２２０２は、マイクロプロセッサ、中央処理ユニット等の１つ又は複数の汎用処理デバイスを表している。より詳細には、プロセッサ２２０２は、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、又は他の命令セットを実装するプロセッサ若しくは命令セットの組み合わせを実装するプロセッサとすることができる。プロセッサ２２０２は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ等の１つ又は複数の専用処理デバイスとすることもできる。図１に示すヒストグラムマネージャー１４５は、本明細書において論述した動作及びステップを実行するように構成されたプロセッサ２２０２によって実行することができる。
【００８１】
コンピューターシステム２２００は、ネットワークインターフェースデバイス２２２２を更に備えることができる。コンピューターシステム２２００は、ビデオディスプレイユニット２２１０（例えば、液晶ディスプレイ（ＬＣＤ）又は陰極線管（ＣＲＴ））、英数字入力デバイス２２１２（例えば、キーボード）、カーソル制御デバイス２２１４（例えば、マウス）、及び信号発生デバイス２２２０（例えば、スピーカー）も備えることができる。
【００８２】
ドライブユニット２２１６は、本明細書において説明した方法論又は機能のうちの任意の１つ又は複数を具現化する一組又は複数組の命令（例えば、ヒストグラムマネージャー１４５の命令）が記憶されているコンピューター可読媒体２２２４を備えることができる。ヒストグラムマネージャー１４５の命令は、コンピューターシステム２２００によるこれらの命令の実行中は、メインメモリ２２０４及び／又はプロセッサ２２０２内にも完全に又は少なくとも部分的に存在することができ、メインメモリ２２０４及びプロセッサ２２０２もコンピューター可読媒体を構成する。ヒストグラムマネージャー１４５の命令は、ネットワークインターフェースデバイス２２２２を介してネットワーク上で更に送信又は受信することができる。
【００８３】
コンピューター可読記憶媒体２２２４は、一例では、単一の媒体であるとして示されているが、「コンピューター可読記憶媒体」という用語は、一組又は複数組の命令を記憶する単一の非一時的媒体又は複数の非一時的媒体（例えば、集中型若しくは分散型のデータベース、及び／又は関連付けられたキャッシュ及びサーバー）を含むものと解釈されるべきである。「コンピューター可読記憶媒体」という用語は、マシンによって実行される一組の命令を記憶、符号化、又は担持することが可能であるとともに、本開示の方法論のうちの任意の１つ又は複数をマシンに実行させる任意の媒体も含むものと解釈されるものとする。「コンピューター可読記憶媒体」という用語は、したがって、固体メモリ、光媒体、及び磁気媒体を含むが、これらに限定されるものではないものと解釈されるものとする。
【００８４】
上記説明では、多数の詳細が述べられている。しかしながら、この開示の利益を有する当業者には、これらの特定の詳細がなくても、この開示の例を実施することができることは明らかである。幾つかの場合には、よく知られた構造及びデバイスは、説明を分かりにくくしないように、詳細には示されず、ブロック図の形態で示されている。
【００８５】
詳細な説明の幾つかの部分は、コンピューターメモリ内のデータビットに対する操作のアルゴリズム及びシンボル表現の点から提示されている。これらのアルゴリズム的な記述及び表現は、データ処理技術における当業者が、自身の作業を他の当業者に最も効果的に伝達するのに用いる手段である。アルゴリズムは、本明細書において及び一般的には、所望の結果をもたらす自己矛盾のないステップのシーケンスであると考えられる。これらのステップは、物理量の物理的な操作を必要とするものである。必ずしもそうとは限らないが通常、これらの量は、記憶、転送、組み合わせ、比較、及びそれ以外の操作が可能な電気信号又は磁気信号の形態を取る。主として共通使用の理由から、これらの信号を、ビット、値、要素、シンボル、文字、項、数等と呼ぶことが時に便利であることが分かっている。
【００８６】
しかしながら、これらの用語及び類似の用語の全ては、適切な物理量と関連付けられるべきであり、これらの量に適用された便利なラベルにすぎないことに留意すべきである。特に別段の指定がない限り、上記論述から明らかであるように、この説明全体を通じて、「受信する」、「書き込む」、「維持する」等の用語を利用している論述は、コンピューターシステムのレジスター及びメモリ内の物理（例えば、電子）量として表されたデータを、新たな座標系に対して操作して、そのコンピューターシステムのメモリ若しくはレジスター、又は他のそのような情報記憶デバイス、伝送デバイス、若しくはディスプレイデバイス内の物理量として同様に表される他のデータに変換するコンピューターシステム又は同様の電子コンピューティングデバイスの動作及びプロセスを指すことが理解される。
【００８７】
本開示の例は、本明細書における動作を実行する装置にも関係している。この装置は、必要とされる目的用に特別に構築することもできるし、コンピューターに記憶されたコンピュータープログラムによって選択的にアクティブ化又は再構成される汎用コンピューターを含むこともできる。本明細書において開示された高スループットのヒストグラム及び統計の計算は、多くの分野における問題を解決する。この多く分野は、ほんの数例ではあるが、‘３８４特許に教示されたショット変化検出システム及び方法、ＧＰＵ又はＡＰＵを有する移動デバイス上でのリアルタイムビデオの色等化及びコントラスト強化、ヒストグラム最大値が３Ｄ容積内の突出した線分を特定するのに用いられる現代のＭＲＩ及び他の３Ｄスキャンシステムによって利用されるようなハフ変換の最大値を見つけること、並びに高スループット暗号解析システムにおける文字モード及び周波数解析ステップ等である。そのようなコンピュータープログラムは、コンピューター可読記憶媒体に記憶することができる。このコンピューター可読記憶媒体は、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、及び光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード若しくは光カード、又は電子命令を記憶するのに適した任意のタイプの媒体等であるが、これらに限定されるものではない。
【００８８】
本明細書において提示したアルゴリズム及び表示は、本質的には、どの特定のコンピューターにも他の装置にも関係付けられていない。様々な汎用システムを、本明細書における教示によるプログラムとともに用いることもできるし、必要とされる方法ステップを実行するより特殊化された装置を構築することが便利であると分かる場合もある。様々なこれらのシステムの例示の構造は、本明細書における説明から見えてくる。加えて、本開示は、どの特定のプログラミング言語に関しても説明されていない。様々なプログラミング言語を、本明細書において説明した開示の教示内容を実施するのに用いることができることが理解されるであろう。
【００８９】
上記説明は、限定ではなく例示であるように意図されていることが理解されるべきである。上記説明を読んで理解すると、他の多くの例が当業者には明らかであろう。したがって、本開示の範囲は、添付の特許請求の範囲が権利を有する均等なものの全範囲とともに、そのような特許請求の範囲に関して決定されるべきである。
【図１】
2016527631.tif 000009
【図２】
2016527631.tif 000010
【図３】
2016527631.tif 000011
【図４Ａ】
2016527631.tif 000012
【図４Ｂ】
2016527631.tif 000013
【図５】
2016527631.tif 000014
【図６】
2016527631.tif 000015
【図７Ａ】
2016527631.tif 000016
【図７Ｂ】
2016527631.tif 000017
【図７Ｃ】
2016527631.tif 000018
【図８】
2016527631.tif 000019
【図９Ａ】
2016527631.tif 000020
【図９Ｂ】
2016527631.tif 000021
【図１０】
2016527631.tif 000022
【図１１Ａ】
2016527631.tif 000023
【図１１Ｂ】
2016527631.tif 000024
【図１２】
2016527631.tif 000025
【図１３Ａ】
2016527631.tif 000026
【図１３Ｂ】
2016527631.tif 000027
【図１４】
2016527631.tif 000028
【図１５Ａ】
2016527631.tif 000029
【図１５Ｂ】
2016527631.tif 000030
【図１６Ａ】
2016527631.tif 000031
【図１６Ｂ】
2016527631.tif 000032
【図１６Ｃ】
2016527631.tif 000033
【図１７Ａ】
2016527631.tif 000034
【図１７Ｂ】
2016527631.tif 000035
【図１７Ｃ】
2016527631.tif 000036
【図１８】
2016527631.tif 000037
【図１９】
2016527631.tif 000038
【図２０】
2016527631.tif 000039
【図２１】
2016527631.tif 000040
【図２２】
2016527631.tif 000041
【国際調査報告】
2016527631.tif 000042
2016527631.tif 000043
2016527631.tif 000044
2016527631.tif 000045