(57)【要約】      （修正有）【課題】画像幅バッファおよび／または部分画像幅スライディング・バッファを用いた画像画素処理プロセッサを提供する。【解決手段】装置は、Ｗ個の画素から成る幅およびＨ個の画素から成る高さの画像に対応する画素データに画像処理動作を実施して、ＳｘＳ画素のＫ個の垂直に重なり合うステンシルを用いてＫ個の画素の垂直スライス内の出力画素データを生成するように構成された画像処理ロジック（ＩＰＬ）を含む。装置は、ＩＰＬに動作可能に接続されたラインバッファを含む。ラインバッファは、ＩＰＬに対する画素データをバッファする。ラインバッファは、Ｗの幅およびＳ−１の高さを有するフルサイズ・バッファを含む。ラインバッファは、ＳＢの幅およびＫの高さを有するスライディング・バッファ（ＳＢはＳ以上でありＷより小さい）を含む。【選択図】図２
2019023900.tif 000002
【特許請求の範囲】
【請求項１】
スライディング・バッファおよび固定バッファを含む仮想ラインバッファであって、前記固定バッファが、順番に隣接的に処理されるスライス行の間で再利用される画像データを格納するように構成され、各スライス行が、画像データの複数の行を含む、仮想ラインバッファと、
前記スライディング・バッファからの第1のデータと前記固定バッファからの第2のデータを使用して、画素のスライスの複数の部分的に重なり合うステンシルの各々においてカーネル機能を実施するように構成される画像処理ロジックであって、各ステンシルが画像データの2次元領域であり、画素の各スライスがスライス行の一部である、画像処理ロジックと
を含む、プロセッサ。
【請求項２】
前記プロセッサが、画素の各スライスに対して、
前記仮想ラインバッファから前記画像処理ロジックのメモリに、前記スライディング・バッファからの第1のデータと前記固定バッファからの第2のデータを有する画素のスライスをロードする動作と、
前記画像処理ロジックによって、画素の前記ロードされたスライスの複数の重なり合うステンシルの各々で前記カーネル機能を実施する動作と、
前記固定バッファから前記第2のデータをロードした後に、前記スライディング・バッファからの前記第1のデータの一部を前記固定バッファに移動する動作と
を含む動作を実施するように構成される、請求項1に記載のプロセッサ。
【請求項３】
前記画像処理ロジックが、前記順番で次のスライス行を処理する間に、前記固定バッファに移動された前記第1のデータを再使用するように構成される、請求項1に記載のプロセッサ。
【請求項４】
前記スライディング・バッファからロードされた前記第1のデータが、前記順番で隣接的に処理されるスライス行間で再使用されない、請求項1に記載のプロセッサ。
【請求項５】
第1の次元における前記固定バッファのサイズが、前記ステンシルのサイズよりも小さく、前記第1の次元における前記スライディング・バッファのサイズが、前記ステンシルのサイズよりも大きく、第2の次元における前記固定バッファのサイズが、前記第2の次元における前記スライディング・バッファのサイズよりも大きい、請求項1に記載のプロセッサ。
【請求項６】
前記固定バッファの前記サイズが、
前記ステンシルの前記サイズ、引く、画素のスライスにおけるステンシル間の重なりの量
で定義される、請求項5に記載のプロセッサ。
【請求項７】
(i)前記スライディング・バッファのサイズと(ii)第1の次元における前記固定バッファのサイズとの和が、前記第1の次元における2つの部分的に重なり合うステンシル領域のサイズよりも大きい、請求項5に記載のプロセッサ。
【請求項８】
前記スライディング・バッファからの前記第1のデータの一部を前記固定バッファに移動する動作が、ステンシルスライスにおけるステンシル間の重なりの量と等しいデータの一部を移動する動作を含む、請求項1に記載のプロセッサ。
【請求項９】
コンシューマ・スライディング・バッファとコンシューマ・固定バッファとを含むコンシューマ・仮想ラインバッファをさらに含み、
前記カーネル機能の出力の第1の部分を前記コンシューマ・スライディング・バッファに書き込み、前記カーネル機能の出力の第2の部分を前記コンシューマ・固定バッファに書き込むように構成される
請求項1に記載のプロセッサ。
【請求項１０】
プロセッサによって、順番に画像データの複数のスライス行を処理するステップを含み、各スライス行が画像データの複数の行を含み、前記処理するステップが、
前記プロセッサによって、仮想ラインバッファから画像処理ロジックのメモリに画素のスライスをロードするステップであって、前記仮想ラインバッファがスライディング・バッファおよび固定バッファを含み、画素の前記スライスが、前記スライディング・バッファからの第1のデータと前記固定バッファからの第2のデータとを含み、画素の各スライスが、前記複数のスライス行うちのスライス行の一部である、ステップと、
前記画像処理ロジックによって、前記スライディング・バッファからの第1のデータと前記固定バッファからの第2のデータとを使用して画素の前記ロードされたスライスの複数の部分的に重なり合うステンシルの各々でカーネル機能を実施するステップであって、各ステンシルが画像データの2次元領域である、ステップと、
前記固定バッファからの前記第2のデータをロードした後に、前記スライディング・バッファからの第1のデータの一部を前記固定バッファに移動するステップと
を反復的に含む、方法。
【請求項１１】
前記画像データの隣接するスライス行を処理するときに、前記固定バッファに移動した前記第1のデータの前記一部を再使用するステップをさらに含む、請求項10に記載の方法。
【請求項１２】
前記順番で次のスライス行を処理するときに、前記スライディング・バッファからロードされた前記第1のデータを破棄するステップをさらに含む、請求項10に記載の方法。
【請求項１３】
第1の次元における前記固定バッファのサイズが前記ステンシルのサイズよりも小さく、前記第1の次元における前記スライディング・バッファのサイズが前記ステンシルのサイズよりも大きく、第2の次元における前記固定バッファのサイズが前記第2の次元における前記スライディング・バッファのサイズよりも大きい、請求項10に記載の方法。
【請求項１４】
前記固定バッファの前記サイズが、
前記ステンシルの前記サイズ、引く、画素のスライスにおけるステンシル間の重なりの量
で定義される、請求項13に記載の方法。
【請求項１５】
(i)前記スライディング・バッファのサイズと(ii)第1の次元における前記固定バッファのサイズとの和が、前記第1の次元における2つの部分的に重なり合うステンシル領域のサイズよりも大きい、請求項13に記載の方法。
【請求項１６】
前記カーネル機能の出力の一部を前記固定バッファに移動することが、ステンシルスライスにおけるステンシル間の重なりの量と等しいデータの一部を移動することを含む、請求項10に記載の方法。
【請求項１７】
前記プロセッサが、コンシューマ・スライディング・バッファとコンシューマ・固定バッファとを含むコンシューマ・仮想ラインバッファをさらに含み、
前記カーネル機能の出力の第1の部分を前記コンシューマ・スライディング・バッファに書き込み、前記カーネル機能の出力の第2の部分を前記コンシューマ・固定バッファに書き込むステップをさらに含む、請求項10に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の記載
本願は、発明の名称を「画像信号プロセッサのための仮想ラインバッファ」とした、２０１５年１月２２日出願の米国特許番号第１４／６０３，３５４号の継続出願であり、その内容は引用により本明細書に取り込まれる。
【０００２】
本開示は画像処理に関する。より具体的には、本開示は、画像幅バッファおよび／または部分画像幅スライディング・バッファを含むラインバッファを用いた画像画素処理のためのアプローチに関する。
【背景技術】
【０００３】
コンピュータ、スマートフォン、タブレット、ウェアラブルデバイス等のようなコンシューマ電子デバイスの流行が増大し続けている。かかるデバイスはしばしば、高解像度ディスプレイ、および／または画像センサ（例えば、カメラに含まれるセンサ）のようなディスプレイを備える。画像信号処理を、画像信号プロセッサ（ＩＳＰ）を用いて（例えば、キャプチャされた画像および／または電子メモリに格納された画像を処理するために）かかるデバイス内で実施することができる。かかるＩＳＰは、幾つかの実装では、対応する有向非巡回グラフ（ＤＡＧ）に従って動作することができる。本開示の目的のため、「ＩＳＰ」という用語は画像信号処理を実装するために使用される装置を説明するために使用されるが、他の用語が適切であることもある。
【０００４】
かかるＩＳＰによる画像信号処理（例えば、画像または１組の画像に対応する画素データの処理）を幾つかの状況で使用することができる。例えば、電子デバイスに含まれる画像センサ（例えば、カメラ）によりキャプチャされた画像（または一連の画像、例えば、ビデオ）を、当該デバイスのディスプレイに表示されているおよび／または（または当該電子デバイスに動作可能に接続された）当該電子デバイスの電子メモリ（例えば、フラッシュメモリ、動的ランダム・アクセス・メモリ（ＤＲＡＭ）等）に格納された完全に処理された画像（複数可）で、ＩＳＰを用いて処理してもよい。他の事例では、例えば、メモリに格納された画像（または一連の画像、例えば、ビデオ）をＩＳＰ内で処理することができる。当該完全に処理された（当該ＩＳＰの最終段階で出力された）画像（複数可）は関連付けられた電子デバイスのディスプレイに表示され、かつ／または、同一のメモリ、または異なるメモリに格納される。所与のＩＳＰにより処理された画像の起点および宛先は、当該特定の実装に基づいて変化することができる。
【０００５】
ＩＳＰの実装は一連のカスケードされた（例えば、パイプラインされた）ラインバッファ（例えば、画像信号処理中に画像（画素）データをバッファ（格納）するための静的ＲＡＭ（ＳＲＡＭ））および関連付けられた計算カーネル（例えば、画像処理機能を当該画像画素データに実施するための画像処理ロジック）を含むことができる。かかる画像処理機能は、所与の画像または一連の画像の空間的に近接した画素のサブグループに対応する画素データの「ステンシル」に（例えば、所与のシーケンスで）実施される機能を含むことができる。例えば、かかる画像処理機能は色補完、画像鋭敏化、色補正等を含むことができる。
【０００６】
ラインバッファは、上述のようにＳＲＡＭメモリを用いて実装でき、ＩＳＰの画像処理ロジック（ＩＰＬ）段階の間の画像画素データに対する局所バッファリングを提供することができる。或る段階により処理された画素データは、全ての処理段階が当該画像（画素）データ）の処理を完了するまで、後続の処理段階等のためにラインバッファに書き込む（ラインバッファ内で再利用するためにバッファする）ことができる。しばしば、より大きなラインバッファ（より多くのラインを保持できるラインバッファ）を、平行構造を介してスループットを増大するのを促進するために使用することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
コンシューマ電子デバイスが進歩するにつれ、画像解像度の対応する増大、（例えば、より複雑な画像処理アルゴリズムを促進するための）幾つかの画像処理段階および／または画像処理スループットを高めるための要件の増大は、対応するＩＳＰ内でラインバッファを実装するために使用されるメモリ（例えば、ＳＲＡＭ）の量の不要な増大をもたらしうる。例えば、所与のＩＳＰに対する所望の性能を実現するために、当該ＩＳＰに対するラインバッファを実装するために使用されるメモリの量は、コストの視点、（例えば、使用されるシリコン領域の量、製品設計コスト等）、および／または電力消費（例えば、動的および／または静的な電力消費）の視点から禁止される量に増大しうる。
【課題を解決するための手段】
【０００８】
一般的な態様において、装置はＷ個の画素から成る幅およびＨ個の画素から成る高さを有する画像に対応する画素データに画像処理動作を実施して、ＳｘＳ画素のＫ個の垂直に重なり合うステンシルを用いてＫ個の画素の垂直スライス内の出力画素データを生成するように構成された画像処理ロジック（ＩＰＬ）であって、Ｋは１より大きくＨより小さく、Ｓは２以上でありＷはＳより大きい、画像処理ロジック（ＩＰＬ）を備える。当該装置はまた、当該ＩＰＬに動作可能に接続されたラインバッファを含み、当該ラインバッファは、当該ＩＰＬに対する当該画素データをバッファするように構成される。当該ラインバッファはＷの幅および（Ｓ−１）の高さを有するフルサイズ・バッファを含む。当該ラインバッファはまた、ＳＢの幅およびＫの高さを有するスライディング・バッファであって、ＳＢはＳ以上でありＷより小さい、スライディング・バッファを含む。
【０００９】
例示的な実装は以下の特徴の１つまたは複数を含むことができる。例えば、当該ＩＰＬを、当該出力画素データの当該垂直スライスをラスタ順で生成するように構成することができる。当該ＩＰＬの画像処理機能はプログラム可能であることができる。当該ＩＰＬの画像処理機能を固定することができる。
【００１０】
当該ＩＰＬは第１のＩＰＬであることができ、当該ラインバッファは第１のラインバッファであることができ、当該画像処理動作は第１の画像処理動作であることができ、当該出力画素データは第１の出力画素データであることができる。当該装置は、第２の画像処理動作を当該第１の出力画素データに実施して、ＴｘＴ画素のＬ個の重なり合うステンシルを用いてＬ個の画素の垂直スライス内の第２の出力画素データを生成するように構成された第２のＩＰＬであって、Ｌは１より大きくＨより小さく、Ｔは２以上である、第２のＩＰＬを含むことができる。当該装置は、当該第１のＩＰＬおよび当該第２のＩＰＬの間で動作可能に接続された第２のラインバッファであって、当該第２のラインバッファは、当該第２のＩＰＬに対する当該第１の出力画素データをバッファするように構成される、第２のラインバッファを含むことができる。当該フルサイズ・バッファは第１のフルサイズ・バッファであることができ、当該スライディング・バッファは第１のスライディング・バッファであることができる。当該第２のラインバッファは、Ｗの幅および（Ｔ−１）の高さを有する第２のフルサイズ・バッファおよびＴＢの幅およびＬの高さを有する第２のスライディング・バッファであって、ＴＢはＴ以上でありＷより小さい、第２のスライディング・バッファを含むことができる。ＬはＫに等しいことができ、ＴはＳに等しいことができる。ＬはＫに等しくなくてもよく、ＴはＳに等しくなくてもよい。
【００１１】
当該装置は、当該ラインバッファに動作可能に接続される画像データ・ソースを含むことができる。当該画像データ・ソースを、当該画像に対応する当該画素データを格納するように構成することができる。Ｗは、少なくともＳより大きな規模であることができる。当該フルサイズ・バッファは円形データ・バッファを含むことができる。当該スライディング・バッファは先入れ先出し（ＦＩＦＯ）データ・バッファを含むことができる。
【００１２】
別の一般的な態様では、装置は、Ｗ個の画素から成る幅およびＨ個の画素から成る高さを有する画像に対応する画素データに画像処理動作を実施して、ＳｘＳ個の画素のＫｘＪ個の重なり合うステンシルを用いてＫ個の画素から成る高さおよびＪ個の画素から成る幅を有するスライス内の出力画素データを生成するように構成された画像処理ロジック（ＩＰＬ）を含む。ＫおよびＪは１より大きくＨより小さく、Ｓは２以上でありＷはＳより大きい。当該装置はまた当該ＩＰＬに動作可能に接続されたラインバッファを含み、当該ラインバッファは、当該ＩＰＬに対する当該画素データをバッファするように構成される。当該ラインバッファはＷの幅および（Ｓ−１）の高さを有するフルサイズ・バッファおよびＳＢの幅およびＫの高さを有するスライディング・バッファであって、ＳＢはＳ＋（Ｊ−１）以上でありＷより小さい、スライディング・バッファを含む。
【００１３】
例示的な実装は以下の特徴の１つまたは複数を含むことができる。例えば、当該ＩＰＬは、第１のＩＰＬであることができ、当該ラインバッファは第１のラインバッファであることができ、当該画像処理動作は第１の画像処理動作であることができ、当該出力画素データは第１の出力画素データであることができる。当該装置は、第２の画像処理動作を当該第１の出力画素データに実施して、第２の出力画素データスライスを生成するように構成された第２のＩＰＬおよび当該第１のＩＰＬおよび当該第２のＩＰＬの間で動作可能に接続された第２のラインバッファであって、当該第２のラインバッファは、当該第２のＩＰＬに対する当該第１の出力画素データをバッファするように構成される、第２のラインバッファを含むことができる。当該第２のＩＰＬにより生成された当該第２の出力画素データスライスのスライスは、Ｋの高さおよびＪの幅を有することができる。当該第２のＩＰＬにより生成された当該第２の出力画素データスライスのスライスは、Ｋに等しくない高さおよびＪに等しくない幅を有することができる。当該ＩＰＬを、当該出力画素データの当該スライスをラスタ順で生成するように構成することができる。
【００１４】
別の一般的な態様では、画像信号プロセッサ（ＩＳＰ）はＷ個の画素から成る幅およびＨ個の画素から成る高さを有する画像に対応する画素データをバッファするように構成された画像データ・ソースを含む。当該ＩＳＰはまた、Ｗ個の画素から成る幅を有する第１の画像処理段階およびＨ個の画素から成る高さを有する画像に対応する画素データに第１の画像処理動作を実施して、ＳｘＳ画素のＫ個の垂直に重なり合うステンシルを用いて第１のＫ個の画素の垂直スライス内の出力画素データを生成するように構成された第１の画像処理ロジック（ＩＰＬ）であって、Ｋは１より大きくＨより小さく、Ｓは２以上でありＷはＳより大きい、第１の画像処理ロジック（ＩＰＬ）を含む。当該第１の画像処理段階はまた、当該第１のＩＰＬに動作可能に接続された第１のラインバッファを含み、当該第１のラインバッファは、当該第１のＩＰＬに対する当該画素データをバッファするように構成される。当該第１のラインバッファはＷの幅および（Ｓ−１）の高さを有する第１のフルサイズ・バッファおよびＳＢの幅およびＫの高さを有する第１のスライディング・バッファであって、ＳＢはＳ以上でありＷより小さい、第１のスライディング・バッファを含む。当該ＩＳＰはさらに第２の画像処理動作を当該第１の出力画素データに実施して、ＴｘＴ画素のＬ個の重なり合うステンシルを用いてＬ個の画素の垂直スライス内の第２の出力画素データを生成するように構成された第２のＩＰＬであって、Ｌは１より大きくＨより小さく、Ｔは２以上である、第２のＩＰＬを有する第２の画像処理段階を含む。当該第２の画像処理段階はまた、当該第１のＩＰＬおよび当該第２のＩＰＬの間で動作可能に接続された第２のラインバッファであって、当該第２のラインバッファは、当該第２のＩＰＬに対する当該第１の出力画素データをバッファするように構成される、第２のラインバッファを含む。
【００１５】
例示的な実装は以下の特徴の１つまたは複数を含むことができる。例えば、当該第２のラインバッファは、Ｗの幅および（Ｔ−１）の高さを有する第２のフルサイズ・バッファおよびＴＢの幅およびＬの高さを有する第２のスライディング・バッファであって、ＴＢはＴ以上でありＷより小さい、第２のスライディング・バッファを含むことができる。ＴはＳに等しいことができ、ＬはＫに等しいことができる。
【００１６】
１つまたは複数の実装の詳細を添付図面および下記の説明で説明する。他の特徴は当該説明と図面から、および、特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【００１７】
【図１Ａ】１実装に従う画像信号プロセッサ（ＩＳＰ）を示すブロック図である。
【図１Ｂ】１実装に従う図１Ａの当該ＩＳＰに含まれうる画像処理段階を示すブロック図である。
【図２】１実装に従う画像処理段階に含まれる仮想ラインバッファの動作を示すブロック図である。
【図３】１実装に従う仮想ラインバッファを含む画像処理段階を用いて生成しうる２つの連続するスライス行を示す図である。
【図４】１実装に従う仮想ラインバッファを含む画像処理段階を用いて画像信号処理に関連付けられた画素データの読書き動作を示す図である。
【図５】１実装に従う画像処理段階に含まれる別の仮想ラインバッファの動作を示す図である。
【図６】１実装に従う異なるステンシルサイズを使用する連続画像処理段階の仮想ラインバッファの動作を示す図である。
【図７】本明細書で説明する技術を実装するために使用できるコンピュータデバイスおよびモバイルコンピュータデバイスの例を示す図である。
【発明を実施するための形態】
【００１８】
様々な図面における同じ参照記号は同じ要素を示す。
【００１９】
本開示は画像データ（画素データ、画像画素データ、画像信号等とも称することができる）を処理するための装置および方法に関する。当該画像データは、以下でさらに詳細に説明するように仮想ラインバッファを含む画像信号プロセッサ（ＩＳＰ）により処理される。特に、本明細書で説明した技術を、１つまたは複数の仮想ラインバッファを含むＩＳＰにより、写真画像、ビデオ画像等に関する画像データ（例えば、画素データ、画像信号等）を処理するために使用することができる。かかる仮想ラインバッファを、全画像幅ラインバッファ（所与の仮想ラインバッファと同一の高さを有する従来のラインバッファ）を実装するために使用されるメモリの一部で実装することができる。したがって、本明細書で説明したアプローチを用いて実装されたＩＳＰは、全画像幅高さラインバッファを用いて実装されるＩＳＰと比較して、製品コストおよび／または電力消費を削減することができる。
【００２０】
本開示は一般に画像データ処理に関し、画像データ処理のためのＩＳＰ内の仮想ラインバッファの利用に関するが、本明細書で説明したアプローチを他のタイプのデータとともに使用しうることは理解されよう。例えば、本明細書で説明したような仮想ラインバッファを、重なり合うアドレスウィンドウで計算が反復されるデータセット（画像データまたはそれ以外）を処理するように構成された回路および／またはデバイスで使用することができる。例えば、１例として、かかるアプローチを使用してオーディオ・データを処理することができる。かかるアプローチでは、当該オーディオ・データを、例えば、時間を第１の軸とし周波数を第２の軸として、２次元で配置することができる。
【００２１】
図１Ａおよび１Ｂは、それぞれ、１実装に従うＩＳＰ１００に含まれうる画像信号プロセッサ（ＩＳＰ）１００と画像処理段階１２０を示すブロック図である。図１Ａに示すＩＳＰ１００の配置、および図１Ｂに示す画像処理段階１２０は例により、および例示の目的のために与えられる。当該特定の実装（例えば、かかるＩＳＰが含まれる特定のデバイス）に応じて、ＩＳＰ１００の配置および画像処理段階１２０は変化しうる。
【００２２】
図１Ａに示すように、ＩＳＰ１００は画像データ・ソース１１０を含む。画像データ・ソース１１０は幾つかの形態をとることができる。例えば、１実装では、画像データ・ソース１１０は、フラッシュメモリ、ＤＲＡＭ等のような電子メモリに格納された画像を含むことができる。別の実装では、当該画像データ・ソースは、画像センサ（例えば、相補型金属酸化物半導体（ＣＭＯＳ）画像センサ等）を含むことができる。他の実装では、画像データ・ソース１１０は他の形態をとることができる。
【００２３】
図１ＡのＩＳＰ１００はまた、一連のパイプラインされた（カスケードされた、逐次的な等）画像処理段階１２０、１３０、１４０を含む。図１Ａに示すように、ＩＳＰ１００に含まれる幾つかの画像処理段階は変化しうる。例えば、ＩＳＰ１００は、図１Ａに示したものよりも少ない画像処理段階を含むことができ、または、追加の画像処理段階を含むことができる。図１ＡのＩＳＰ１００は例として、かつ、例示の目的のために与えられる。ＩＳＰは一般に多くの有向グラフ形状で提供され、１つまたは複数の処理段階が、１つまたは複数のダウンストリーム処理段階により後で処理されるデータを生成する。
【００２４】
ＩＳＰ１００はさらに画像目標１５０を含む。画像目標１５０はまた、実装に応じて幾つかの形態をとることができる。例えば、画像目標１５０は、高解像度ディスプレイのような電子デバイスのディスプレイを含んでもよい。他の実装では、当該画像目標は電子メモリ、例えば、フラッシュメモリまたは他のタイプの電子メモリを含んでもよい。
【００２５】
ＩＳＰ１００では、画像処理段階１２０、１３０、１４０の各々は、入力画素ストリーム（処理されている画像に対応）を以前のブロックから受信し、（それぞれの画像処理機能を実施した後に）出力画素ストリームを生成することができる。即ち、画像処理段階１２０は、入力画素ストリームを画像データ・ソース１１０から受信し、画像処理機能を当該画素ストリームに実施し、出力画素ストリームを生成することができる。当該事例では、入力データ・ソース１１０を画素ストリーム・プロデューサ（プロデューサ）と称することができ、画像処理段階１２０を画素ストリーム・コンシューマ（コンシューマ）と称することができる。画像処理段階１２０（当該事例ではプロデューサ）により生成された出力画素ストリームを次いで、画像処理段階１３０（コンシューマ）の入力画素ストリームとして使用することができる。画像処理段階１３０は、ＩＳＰ１００の後続の画像処理段階ごとに、（段階１２０の当該画像処理と）異なる画像処理動作を当該画素ストリーム等に実施することができる。図１Ａに示すように、（プロデューサとしての）画像処理段階１４０からの出力画素ストリームは、画像目標１５０に対する入力画素ストリームとして使用することができる。特定の実装に応じて、画像処理段階１２０、１３０、１４０の各々に対する画像処理機能は固定でき、または、プログラム可能であることができる。
【００２６】
図１Ｂは、（例えば、画像処理段階１２０、１３０、１４０等に対する）図１ＡのＩＳＰ１００において実装できる画像処理段階１２０の実装を示す。他の実装では、画像処理段階１２０、１３０、１４０の配置は異なってもよい。図１Ｂに示す配置は例により、かつ、例示の目的のために与えられる。
【００２７】
画像処理段階１２０は、図１Ｂに示すように、仮想ラインバッファ１６０および画像処理ロジック（ＩＰＬ）１７０を含む。かかる配置において、仮想ラインバッファ１６０を、ＩＰＬ１７０により処理するためにＩＳＰ１００内で処理されている画像のための画素データの空間的にローカルなサブセットをバッファするように構成することができる。１実装では、（例えば、仮想ラインバッファ１６０内にバッファされている）画素データの１つのサブセットがＩＰＬ１７０により処理された後、当該処理された画素データサブセットを次の段階（例えば、コンシューマ）のラインバッファに書き込むことができ、画素データの新たなサブセットをＩＰＬ１７０による処理のために仮想ラインバッファ１６０に読み込むことができる。ＩＳＰ１００により処理されている画像に関するデータを、ラスタスキャン順序（例えば、左から右、上から下）でかかるサブセットにおいて処理することができる。
【００２８】
１実装では、ＩＰＬ１７０は、幾つかの重なり合うステンシルを用いて、与えられる場合には、（例えば、ＩＰＬ１７０の画像処理機能を所与のステンシル内の画素に対するデータに適用することによって）１組の出力画素を空間的に近接した画素のグループから生成するために使用される（サポート領域と称することができる）単一のステンシルを用いて、画像処理機能を（例えば、ラスタスキャン順序で仮想ラインバッファ１６０にバッファできる）画素データのサブセットに適用することができる。例えば、１実装では、ＳｘＳのサイズのステンシルを、そのそれぞれの画像処理動作を実施するときに、ＩＰＬ１７０により使用することができる。特定の実装に応じて、Ｓは２以上の値を有することができる。例えば、ＩＰＬ１７０は、サイズ２ｘ２、３ｘ３、４ｘ４、５ｘ５等のステンシルを使用することができる。
【００２９】
奇数サイズのステンシルに対して、所与のステンシルに対する出力画素は中央画素であることができ、偶数サイズのステンシルに対しては、所与のステンシルに対する出力画素はオフセットであることができる（即ち、ステンシルの中央で決定されない）。他の実装では、所与のステンシル動作に対する出力画素はプログラム可能であることができ、または、ＩＰＬ１７０により実装される特定の画像処理機能に依存することができる。
【００３０】
例示により、現在のＩＳＰ実装において、画像画素データがラスタスキャン順序で処理され、サイズＳｘＳのステンシルが所与のＩＰＬにより使用されると仮定すると、（画素ストリームを供給する）プロデューサ段階は、次のＩＰＬ段階がその入ってくる画素ストリームの処理を開始できる前に、（Ｓ−１）個のフルサイズ画像ラインと、Ｓ個の画素をさらに生成しなければならない。したがって、かかる実装におけるラインバッファは、画素データの（Ｓ−１）個の全画像幅ラインと、部分線内の少なくともさらにＳ個の画素に対する画素データとをバッファするのに十分なほど大きい必要がある。ＩＳＰ実装の処理段階が、同時に（例えば、スループットを高めるために並列に、または、幾つかの修正されたラスタスキャン順序で）複数の、垂直に重なり合うステンシルを処理するように構成される場合、全画像幅ラインの数を、一緒に処理された重なり合うステンシルの数に対応して増大させることができる。
【００３１】
したがって、かかる垂直に重なり合うステンシルを用いて所与の画像処理段階により画像データの処理を可能とするために、当該ＩＰＬに関連付けられたラインバッファの高さが増大する（例えば、より高くなる）。現在のＩＳＰ実装では、かかるアプローチは、画素データの重なり合うステンシルの処理をサポートするための画素データの十分な全画像幅ラインをバッファできるように、当該ラインバッファのサイズを増大させる必要がある。例えば、６個の垂直な（Ｋ＝６）重なり合う３ｘ３（Ｓ＝３）個のステンシルを処理するために、ラインバッファは、８（Ｋ＋（Ｓ−１））個の全画像幅画素データ線と、９番目のライン上の３つの追加の画素をバッファするのに十分なほど大きい必要がある。１０００画素の画像幅を有するデバイスに対して、これは、（画素ごとに１バイトを仮定して）単一のラインバッファ内だけで最低でも６４、００３ビットのＳＲＡＭを必要とする。画像処理段階の数に応じて、画素ごとのビット数、ステンシルのサイズ、および当該ステンシルの平行構造、必要なＳＲＡＭの量は容易に上述の欠点をもたらす。
【００３２】
本明細書で説明したアプローチでは、全画像幅の高さのラインバッファを用いた現在の実装の欠点を回避しつつ、仮想ラインバッファ１６０（さらに後述する）を有する図１Ｂに示す画像処理段階１２０を、複数の重なり合うステンシル（例えば、画素データの重なり合うグループ）を（例えば、並列に）処理して、複数の出力画素を生成するために使用することができる。簡潔に述べると、ＩＰＬ１７０および仮想ラインバッファ１６０は、仮想ラインバッファ１６０内のメモリ（例えば、ＳＲＡＭ）セルの数を大幅に増大させることなく、幾つかの重なり合うステンシル動作で画素データを処理することを可能とするように構成される。
【００３３】
かかるアプローチでは、仮想ラインバッファ１６０は、（ＩＰＬ１７０により処理される重なり合うステンシルの数ではなく）ＩＰＬ１７０内のステンシルのサイズに依存する高さを有する（例えば、全幅画像ラインをバッファするように構成された）フルサイズ・バッファを備えることができる。当該仮想ラインバッファはまた、処理されている（例えば、垂直におよび／または水平に重なり合う）重なり合うステンシルの数に依存する高さおよび／または幅を有する（例えば、部分幅画像ラインをバッファするように構成された）スライディング・バッファを備えることができる。当該幅はまた、当該重なり合うステンシルの画素幅（サイズ）に依存することができる。
【００３４】
上の例に戻ると、画像処理段階１２０のＩＰＬ１７０が、６（Ｋ＝６）個の垂直に重なり合う３ｘ３（Ｓ＝３）個のステンシル動作を一度に実施するように構成される場合、仮想ラインバッファ１６０を、２つの（Ｓ−１）個の全画像幅画素データ線および少なくとも３（Ｓ）個の画素から成る６（Ｋ）個の部分線をバッファするように構成することができる。当該部分線内の画素の数は、スライディング・バッファを実装するために使用されるメモリの読み書き速度および帯域幅に依存しうる。上述の例における１０００ｘ８ビットの画素の画像幅に対し、仮想ラインバッファ１６０は６４，００３ビットと比較して、１６，０１８ビットのＳＲＡＭを含むことができ、ほぼ７５％の削減である。
【００３５】
さらに、仮想ラインバッファ１６０のような仮想ラインバッファの利用により、当該ステンシルと少なくとも同じ幅（または水平に重なり合うステンシルの幅と少なくとも同じ幅）を有する画素データの追加の部分線を追加することのみによって、追加の重なり合うステンシルを処理することができる。本例では、６個の垂直に重なり合う３ｘ３個のステンシル動作により、少なくとも３つの画素の部分行に対するデータを使用することができる。
【００３６】
したがって、（例えば、仮想ラインバッファ１６０を用いた）かかるアプローチは、上述したもののような、ステンシルのサイズおよび処理されている重なり合うステンシルの数に基づく幾つかの全幅画像ラインを用いて実装されるラインバッファと比較して、追加の重なり合うステンシルを所与の時点で処理するための増分的なオーバヘッドを小型のメモリに課す。したがって、本明細書で説明したアプローチを用いることにより、仮想ラインバッファ１６０内の削減されたＳＲＡＭ容量を使用することができ、静的および動的なエネルギの利用を削減することができ、また、所与のＩＳＰに対する計算容量とラインバッファメモリ容量との比を増大させることができる。
【００３７】
図２は、１実装に従う図１Ｂの画像処理段階１２０のような画像処理段階の間で含まれうる仮想ラインバッファの動作１６０を示すブロック図である。例えば、図１Ｂの仮想ラインバッファ１６０を、図２に関して以下で説明するように構成でき、図３乃至６で示した例示的な実装に関して説明したように動作するように構成される。仮想ラインバッファの動作は、図２（ならびに図３乃至６）に関して説明したように、例により、かつ、例示の目的のために与えられる。以下の議論では、図２乃至６を必要に応じて図１Ａおよび１Ｂを参照してさらに説明する。
【００３８】
他の実装では、図２乃至６に示したアプローチを、異なる構成を有するＩＳＰおよび画像処理段階で使用することができる。例えば、所与のＩＳＰ１００において、ラインバッファ（例えば、仮想ラインバッファ１６０）の各々は同様な構成を有することができ、他の実装では、ＩＳＰ内のラインバッファの各々（またはその少なくとも幾つか）は異なる構成を有することができる。例えば、幾つかの実装では、ＩＳＰ１００内のラインバッファの各々（またはその少なくとも幾つか）は共通のステンシルサイズに基づいて動作でき、また、それぞれ（またはその少なくとも幾つか）が共通の数の重なり合うステンシル動作を一度に実施するように構成されるＩＰＬ１７０と関連して動作する。他の実装では、ＩＳＰ１００内のラインバッファの各々（またはその少なくとも幾つか）は、異なるステンシルサイズに基づいて動作でき、かつ／または、それぞれ（またはその少なくとも幾つか）が異なる数の重なり合うステンシル動作を一度に実施するように構成されたＩＰＬ１７０と関連して動作することができる。当該ラインバッファの特定の構成および所与のＩＳＰに対するＩＰＬ段階は特定の実装に依存する。
【００３９】
図２では、仮想ラインバッファ１６０を含む画像処理段階１２０により処理される画像に対する画像フレーム２００が図示される。図２に示すように、画像フレーム２００はＷ個の画素から成る幅とＨ個の画素から成る高さを有する。本例では、画像フレーム２００は、高解像度（写真またはビデオ）画像に対応すると考えることができ、ＷおよびＨは両方とも１，０００以上である。幾つかの実装では、ＷはＨに等しいことができ、他の実装ではＷおよびＨは異なる値を有することができる。
【００４０】
図２の例では、画像フレーム２００に対応する画像を、画像処理カーネル（例えば、特定の畳みこみ機能）を当該画像に対応する画素データに実施するように構成された（例えば、ＩＳＰ１００に含まれる）ＩＰＬ１７０により処理することができる。ＩＰＬ１７０は、入力画素ストリームをＩＳＰ１００の以前の（プロデューサ）段階から受信し、その画像処理カーネルを（ラスタスキャン順序で）適用して、出力画素データストリームを、Ｋ個の画素から成る垂直スライスにおいて、ＳｘＳ個の画素のＫ個の垂直に重なり合うステンシルを用いて生成することができる。１実装では、Ｋは、１より大きく、かつ、Ｈより小さいことができ、Ｓは、２以上であることができ、ＷはＳより大きいことができる。
【００４１】
関連するＩＳＰの他の画像処理段階では、別の１組のＩＰＬは、入力画素ストリームをＩＳＰ１００の以前の段階から受信し、異なる画像処理カーネルを（ラスタスキャン順序で）適用して、Ｌ個の画素の垂直スライス内の出力画素データを、ＴｘＴ個の画素から成るＬ個の垂直に重なり合うステンシルを用いて生成することができる。１実装では、Ｌは、１より大きく、かつ、Ｈより小さいことができ、Ｔは、２以上であることができ、ＷはＴより大きいことができる。幾つかの実装ではＫはＬに等しいことができ、他の実装では、ＫはＬと異なる値を有する。同様に、特定の実装ではＳはＴに等しいことができ、他の実装ではＳはＴと異なる値を有することができる。
【００４２】
図２は、特定の例におけるこれらの変数（Ｋ、Ｌ、ＳおよびＴ）の各々を参照する。図２の例では、ＫおよびＬの値は両方とも６であり、ＳおよびＴの値は両方とも３である。しかし、他の実装では、Ｋ、Ｌ、Ｓおよび／またはＴは、図２で示したもの以外の値を有することができ、図２に示す配置は例としてかつ例示の目的のために与えられたにすぎないことは理解されよう。以下の議論では、図２に示したアプローチは図２を参照して説明される。関連付けられたＩＰＬは、３ｘ３（Ｓ＝３）個の画素から成るステンシルサイズを有するＫ＝６個の垂直に重なり合うステンシルを用いて画像データを処理し、これは図２に示した例と一貫する。
【００４３】
図２では、画像フレーム２００に関連付けられた画像データの画素データの処理が、仮想ラインバッファ１６０を用いて図示されている。仮想ラインバッファ１６０を、上述したものように、関連付けられたＩＰＬにより処理するための入力画素データストリームをバッファするように構成することができる。図２に示すように、仮想ラインバッファ１６０は、画素記憶部のＷ個の画素から成る幅および２行（Ｓ−１）の高さを有するフルサイズ・バッファ１６２を含むことができ、本例では、２つの全画像幅の行に対するメモリを含む仮想ラインバッファ１６０をもたらす。
【００４４】
やはり図２に示すように、仮想ラインバッファ１６０はまた、スライディング・バッファ１６４を含むことができる。本実装例では、スライディング・バッファ１６４は、ＳＢの幅（または例えば、幅Ｔのステンシルも用いたＩＰＬの他の段階に対するＴＢ）を有することができる。図２に示すように、スライディング・バッファ１６４はＫ個の部分行から成る高さを有することができ、当該部分行は本例では６個の画素の高さであり、ＳＢはＳ以上かつＷ未満であってもよい（Ｓは本例では３以上であることができる）。したがって、本例のスライディング・バッファ１６４を、それぞれ少なくとも３（ＳＢまたはＴＢ）個の画素の幅である（例えば、１８画素を用いると、上述のように８ビット画素に対して１８ｘ８個のＳＲＡＭセルを占有する）６個の（必要に応じてＫまたはＬ個の）部分画像画素データ行として実装することができる。ＳＢ（または必要に応じてＴＢ）の値は、少なくとも部分的に、（例えば、先入れ先出し（ＦＩＦＯ）バッファとして）スライディング・バッファ１６４を実装するために使用されるＳＲＡＭの読み書き速度に依存することができる。
【００４５】
図２の画像フレーム２００に関連付けられた画像データを処理するとき、関連付けられたＩＰＬ１７０を、仮想ラインバッファ１６０と関連して、出力画素データストリームをＫ個の画素から成る垂直スライスで生成するように構成でき、当該Ｋ個の画素から成る垂直スライス（当該スライスをそれぞれスライスまたは出力スライスと称することができる）はラスタスキャン順序で生成される。ＩＰＬ段階が所与のスライスの画素を計算する順序は、所与のブロックまたはスライス内のラスタ順のような修正されたラスタ順であることができる。１実装では、画素のスライス（入力スライス）が、関連付けられたＩＰＬ１７０の回路に仮想ラインバッファ１６０から移動されるたびに、Ｋ個の出力画素の列（出力スライス）は次の（コンシューマ）段階（例えば、後続の画像処理段階１２０のラインバッファ）に書き込まれる。出力スライスの画像幅の広さの行をスライス行と称することができる。
【００４６】
図２に示したアプローチを一般化すると、コンシューマ（例えば、ＩＰＬ１７０）がＫ個の画素の列において出力スライスを生成するように構成される場合、プロデューサが入力画素ストリームをコンシューマに提供することで、（Ｓ−１）個の全画像幅ライン（行）が生成される。ＳｘＳのステンシルが使用され、コンシューマ段階がプロデューサの出力画素ストリームの処理を開始できる前に、少なくともＳ画素から成るさらにＫ個の部分行を生成する。当該ストリームはコンシューマの入力画素ストリームである。換言すれば、かかるアプローチでは、仮想ラインバッファ１６０内のＳ番目のラインから（Ｓ＋（Ｋ−１））番目のラインは全ラインである必要はない。これらのラインは、その代わり、単に高さＫ（または上述のようにＬ）およびＳＢ（または上述のようにＴＢ）以上である幅を有する小さなウィンドウ（例えば、スライディング・バッファ１６４）を含むことができる。
【００４７】
（Ｓ−１個の全画像幅画素データ線の）フルサイズ・バッファを、連続スライス行ラスタの間で再利用される重なり合う（Ｓ−１）個の全画像幅画素データ線を連続的にバッファするための円形バッファとして使用することができる。換言すれば、当該スライディング・バッファの最終のＳ−１個の行を（それらが対応する出力スライスを生成するためにＩＰＬにより処理された後）、フルサイズ・バッファ１６２に書き込んで、既に使用されもはや必要でない画素データを上書きすることができる。さらに、スライディング・バッファ１６４を、ＩＳＰ１００の以前の（プロデューサ）段階（例えば、画像処理段階１２０）からの出力画素データをバッファするために使用することができる。当該プロデューサからのバッファされた出力画素データを次いでコンシューマＩＰＬ１７０により消費して対応する出力スライスを生成でき、この処理は画像フレーム２００と関連付けられた画像全体の処理を繰り返す。
【００４８】
１実装では、図２に関して説明したようにＩＳＰが仮想ラインバッファ１６０で実装される、図１のＩＳＰ１００の初期化を以下のように実現することができる。先ず、フルサイズ・バッファ１６２の（Ｓ−１）画素データ線は、以前の（プロデューサ）段階により（例えば、ＳｘＳのステンシルが使用されるとき）埋めることができる。当該プロデューサ段階（例えば、計算カーネル）は次いで、画素データをＫ個の画素（上述の例では６個の画素）の単一の列内のスライディング・バッファ１６４に一度に書き込むことができる。当該コンシューマ計算カーネルは、スライディング・バッファ１６４内で利用可能な画素から成るＳ（３）個の列があるとすぐにその仮想ラインバッファ１６０にバッファされる画像データの処理を開始することができる。スライディング・バッファ１６４は、本例ではコンシューマ段階に対するステンシル幅と等価である。
【００４９】
幾つかの実装では、スライス行内の画素スライスの処理は逐次的なラスタスキャン順序であることができ、所与のスライス内の画素の処理は任意の順序で行うことができる。したがって、前述のように、スライディング・バッファ１６４を、例えば、カスタマイズされたＦＩＦＯメモリを用いて実装できるが、他のアプローチが可能である。画素の新たな列（出力スライス）がプロデューサ段階により生成されるたびに、当該出力スライスは、プロデューサ段階（例えば、次の画像処理段階）と関連付けられたコンシューマ段階のスライディング・バッファ１６４の端で挿入することができる。前述のように、所与の画像処理段階に対するスライディング・バッファ１６４の幅は、当該段階に基づいて出力スライス幅ならびにスライディング・バッファ１６４に対する読み書き速度を決定することができる。しかし、スライディング・バッファ１６４の幅（ＳＢまたはＴＢ）は、少なくともフルサイズ・バッファ１６２の幅よりも小さい大きさであることができ、当該幅は画像フレーム２００の幅Ｗにより決定される。
【００５０】
図１Ｂおよび２に示したもののような仮想ラインバッファ１６０を含むＩＳＰ１００を実装するためのアプローチを使用することには幾つかの効果がある。例えば、フルサイズ・バッファ１６２内の画素データ線の数は（Ｓ−１）であり、これは関連付けられたＩＰＬ１７０により使用されるステンシルサイズに依存する。フルサイズ・バッファ１６２内の画像画素データ線の数は出力スライスを生成するために処理される垂直なステンシルの数と独立であり、これがかかるアプローチを非常にスケーラブルにする。例えば、追加の重なり合うステンシルの追加を、スライディング・バッファ１６４内の均等な数の部分行（および／または列）を追加することによって行うことができる。かかるアプローチの別の効果は、スライディング・バッファ１６４の幅がフルサイズ・バッファ１６２の幅よりかなり狭いので、当該仮想ラインバッファを実装するために使用されるメモリの量を、ラインバッファ内の全ての行（単一の部分行を除く）が画像フレーム幅と同じ幅であるアプローチと比較して、大幅に減らすことができるということである。
【００５１】
図３は、１実装に従う仮想ラインバッファ１６０を含む画像処理段階１２０を用いて生成できる２つの連続するスライス行を示す図である。例示の目的のため、図３を、必要に応じて図１Ａ、１Ｂおよび２をさらに参照して説明する。しかし、図３に示すアプローチを、他の配置を有するＩＳＰ、画像処理段階およびラインバッファで実装することができる。
【００５２】
図３は、ラスタスキャン順序の繰り返しを用いて２つの連続スライス行２１０および２２０を生成するときに仮想ラインバッファ１６０にバッファされる例示的な全画像幅画素データ行を示す。第１のスキャンの間に、動作しているスライス（スライディング・バッファ１６４）は左から右に移動でき、Ｋ個の画素から成るスライスずつコンシューマ計算カーネルにより消費される。動作しているスライス（スライディング・バッファ１６４）がスライス行２１０の端に到達すると、ＷｘＫ（またはＷｘＬ）個の出力画素が計算されていることとなり、（Ｗの幅を有する）スライス行２１０全体の計算が完了する。
【００５３】
スライス行２１０に対する計算が完了した後、同一のプロセスを第２のスライス行２２０に対して繰り返すことができる。図３に示すように、第１のスライス行２１０および第２のスライス行２２０の間には（Ｓ−１）個の重なり合う画像ラインがある。ＳｘＳは、スライス行２１０および２２０を生成するために使用されるラスタスキャンで使用されるステンシルサイズを表す。（Ｓ−１）個の重なり合う行に対する理由は、第１のスライス行２１０の最後の（Ｓ−１）個の画像ラインが第２のスライス行２２０内の画素（黄色の領域）の計算に対して再利用されることである。
【００５４】
図４は、１実装に従う、本明細書で説明したもののような仮想ラインバッファ１６０を含む画像処理段階を用いて画像信号処理に関連付けられた画素データの読取り動作と書込み動作を実装するためのアプローチを示す図である。図４に示す動作は例により、かつ、例示の目的のために与えられたものであり、他のアプローチが可能である。例えば、読書き動作の順序を幾つかの適切な順序で実施することができる。他の実装では、読取り動作および書込み動作を、図４を参照して説明したのと異なるサイズの画素データのブロックに実施することができる。さらに他の実装では、画素データの通信を他のアプローチを用いて行うことができる。
【００５５】
図４では、それぞれの動作が‘Ａ’、‘Ｂ’、‘Ｃ’および‘Ｄ’で参照される矢印により指定され、これらを以下の議論では、それぞれ、動作Ａ、動作Ｂ、動作Ｃおよび動作Ｄと称する。以下の議論の目的のため、図４で示したアプローチを、必要に応じて図１、２Ａ、２Ｂおよび３をさらに参照して説明する。しかし、かかるアプローチを他の構成を有するＩＳＰと関連して使用できることは理解される。
【００５６】
図４の例示的なアプローチでは、動作Ａは画素データを仮想バッファ１６０のスライディング・バッファ１６４に書き込むことに対応する。（例えば、Ｊ個の重なり合う垂直なＳｘＳ個のステンシルがコンシューマカーネルにより処理される）１実装では、プロデューサ計算カーネル４１０は、出力画素を、コンシューマ計算カーネル４２０に関連付けられたスライディング・バッファ１６４に、一度にＪ個の画素から成る列で書き込むことができる。図４の動作Ｂは、コンシューマ計算カーネル４２０が処理（例えば、カーネルのステンシル動作の実施、対応するＩＰＬの画像処理機能の適用、所与のデータ処理機能の実施等）のために画素データを仮想ラインバッファ１６０から読み出すことに対応する。
【００５７】
本例では、コンシューマ計算カーネル４２０は、一度にＪ個の画素の列内の計算（処理）のために画素（画素データ）をスライディング・バッファ１６４から読み出すことができ、これは、コンシューマカーネル４２０の入力スライスの（フルサイズ・バッファ１６２の（Ｓ−１）個の行からの画素データと組み合わせた）最後のＪ個の行となる。
【００５８】
図４では、動作Ｃは、画素データをコンシューマカーネル４２０の仮想ラインバッファ１６０のフルサイズ・バッファ１６２に書き込むことに対応する。このアプローチでは、フルサイズ・バッファ１６２を円形バッファとして実装することができる。かかる実装では、フルサイズ・バッファ１６２内の画素のグループに対するデータがコンシューマ計算カーネル４２０により消費される（読み出される）と、（フルサイズ・バッファ１６２内の）当該データを、当該スライディング・バッファの最後の（Ｓ−１）個の行１６６内の画素に対応する画素データで上書きすることができる。換言すれば、フルサイズ・バッファ１６２を、スライディング・バッファ１６４の最後の（Ｓ−１）個のライン１６６からの画素データで連続的に更新することができる。最後の（Ｓ−１）個のライン１６６に対する画素データはフルサイズ・バッファ１６２に書き込まれ、以前にバッファされた画素データを、それがコンシューマ計算カーネル４２０により読み出された（消費された）後に上書きする。
【００５９】
図４の動作Ｄは、コンシューマ計算カーネル４２０が画素データをフルサイズ・バッファ１６２から読み出すことに対応する。当該実装では、コンシューマ計算カーネル４２０は、例えば、スライディング・バッファ１６４から読み出されたＪ個の画素と垂直に整列する画素に対する画素データの（Ｓ−１）個のラインを読み出すことができる。かかるアプローチでは、フルサイズ・バッファ１６２から読み出された画素データの最初の（Ｓ−１）個の行を、当該コンシューマ計算カーネルによりその入力スライスの最初の（Ｓ−１）個のラインとして（当該スライディング・バッファから読み出され、かつ、フルサイズ・バッファ１６２から読み出された（Ｓ−１）個のラインと垂直に整列する、Ｊ個のラインと組み合わせて）使用することができる。
【００６０】
図５は、１実装に従う画像処理段階に含まれうる別の仮想ラインバッファ１６４の動作を示す図である。図５に示すアプローチを用いると、１つより多くの水平ステンシルを一度に処理でき、画像信号データ処理のスループットが高まる。換言すれば、垂直にかつ水平に重なり合うステンシルを、図５に示したアプローチを用いて同時に処理することができる。
【００６１】
かかるアプローチでは、スライディング・バッファ１６４の幅を増大させて、所与の画像処理段階１２０に対する入力画素データストリームの画素のより広いスライスをバッファすることができる。画像処理スループットへの逆効果を防ぐために、かかるアプローチは、例えば、（例えば、水平および垂直に重なり合うステンシルに対して同一時間でより多くの画素を計算するために）図２に示したアプローチよりも多くのコンピューティングリソースを利用しうる。かかるアプローチは、画像信号処理スループットに逆効果を及ぼさないために、スライディング・バッファ１６４およびフルサイズ・バッファ１６２に対する所望の読み書き帯域幅の増大につながりうる。
【００６２】
図５では、単一の３ｘ３（ＳｘＳ）のステンシル１６８を参考までに示してある。本例では、スライディング・バッファ１６４を、（フルサイズ・バッファ１６２および関連付けられたＩＰＬ１７０内にバッファされた画素データの（Ｓ−１）個のラインに関連して）使用して、Ｋ個の垂直に重なり合うステンシルのＪ個の水平に重なり合う列に対する画素を処理することができる。換言すれば、画像フレーム２００に関連付けられた画像に対する画像データの（Ｋ＋（Ｓ−１））ｘ（Ｊ＋（Ｓ−１））個の画素をスライスとして処理して、Ｋ個の画素から成る高さおよびＪ個の画素から成る幅を有する出力スライスを生成することができる。本例では、Ｋ＝６およびＪ＝２である。他の実装では、ＫおよびＪは、異なる値を有することができる。例えば、幾つかの実装では、ＫおよびＪの値は等しいことができる。かかるアプローチでは、ＫおよびＪは、１より大きく、かつ、Ｈより小さいことができ、Ｓは２以上であることができ、ＷはＳより大きいことができる。
【００６３】
図５に示すように、仮想ラインバッファ１６０は、当該実装では、Ｗの幅および（Ｓ−１）個のデータ画素ラインから成る高さを有するフルサイズ・バッファ１６２を含むことができる。図５の仮想ラインバッファ１６０はまた、ＳＢの幅およびＫの高さを有するスライディング・バッファ１６４を含むことができ、ＳＢはＳ＋（Ｊ−１）以上かつＷ未満である。本例では、Ｊ＝２およびＳが３に等しいので、ＳＢは４以上である。
【００６４】
仮想ラインバッファ１６０は、図５に示すように、図１ＡのＩＳＰ１００の画像処理段階１２０に含まれうる。当該ＩＳＰの他の画像処理段階は、ラインバッファがＫｘ（Ｊ＋Ｓ−１）個のスライディング・バッファ１６４を用いて画像フレーム２００の画像に対するＫｘＪ個の出力画素スライスを生成することを含むことができる。他の実装では、ＩＳＰ１００の他の画像処理段階を、例えば、これらの画像処理段階がＫｘＪ個の画素ではない出力画素データスライスを生成する本明細書で説明したような他の構成を有するラインバッファを用いて実装することができる。本明細書で説明した他のアプローチでは、図５の仮想ラインバッファ１６０を、画像フレーム２００の画像に対する出力画素スライスをラスタスキャン順序で（左から右および上から下に）生成することによってスライス行を生成するために使用することができる。
【００６５】
図６は、１実装に従う、異なるステンシルサイズを使用する連続画像処理段階の仮想ラインバッファの動作を示す図である。上述のように、プロデューサ計算カーネルおよび関連付けられたコンシューマ計算カーネルのステンシルサイズは同一である必要はない。換言すれば、ステンシルサイズおよびの幅（および高さ）、プロデューサ計算カーネルによりコンシューマ計算カーネルのラインバッファに書き込まれた対応する画素出力スライス（図６のスライス１６４ａおよび１６４ｂ）、および当該コンシューマ計算カーネルによりそのラインバッファ（図６のスライス１６５）から読み出された入力画素スライスの幅（および高さ）は異なることができる。かかるケースの処理が、プロデューサ段階の出力画素スライスおよび関連付けられたコンシューマ段階の入力画素スライスが同一のサイズであるアプローチよりも複雑なラインバッファＦＩＦＯ制御ロジックを必要としてもよい。かかる制御ロジックの詳細は特定の実装に依存する。
【００６６】
図６の例では、プロデューサ段階からの出力スライスは、コンシューマ段階の入力スライス１６５よりも高く、狭い。本例では、プロデューサ段階が、Ｋの高さおよびＳまたはＳＢの幅を有する出力スライスを生成してもよい（例えば、ＳＢはまた、プロデューサ段階に対するスライディング・バッファの幅であることができる）。コンシューマ段階は、Ｌの高さおよびＴまたはＴＢの幅を有する入力スライスを読み出してもよい（例えば、ＴＢはまた、コンシューマ段階に対するスライディング・バッファの幅であることができる）。かかるアプローチでは、コンシューマ段階は、出力スライス１６４ａおよび１６４ｂの両方がプロデューサによりコンシューマのラインバッファに書き込まれた後にのみ、その入力スライス１６５の処理を開始することができる。
【００６７】
一般的な態様において、装置はＷ個の画素から成る幅およびＨ個の画素から成る高さを有する画像に対応する画素データに画像処理動作を実施して、ＳｘＳ個の画素から成るＫ個の垂直に重なり合うステンシルを用いてＫ個の画素の垂直スライス内の出力画素データを生成するように構成された画像処理ロジック（ＩＰＬ）であって、Ｋは１より大きくＨより小さく、Ｓは２以上でありＷはＳより大きい、画像処理ロジック（ＩＰＬ）を含むことができる。当該装置は、また、当該ＩＰＬに動作可能に接続されたラインバッファを含むことができ、当該ラインバッファは、当該ＩＰＬに対する画素データをバッファするように構成される。当該ラインバッファはＷの幅および（Ｓ−１）の高さを有するフルサイズ・バッファを含むことができる。当該ラインバッファはまた、ＳＢの幅およびＫの高さを有するスライディング・バッファであって、ＳＢはＳ以上でありＷより小さい、スライディング・バッファを含むことができる。
【００６８】
例示的な実装は以下の特徴の１つまたは複数を含むことができる。例えば、ＩＰＬを、出力画素データの垂直スライスをラスタ順で生成するように構成することができる。当該ＩＰＬの画像処理機能はプログラム可能であることができる。当該ＩＰＬの画像処理機能を固定することができる。
【００６９】
当該ＩＰＬは第１のＩＰＬであることができ、当該ラインバッファは第１のラインバッファであることができ、当該画像処理動作は第１の画像処理動作であることができ、当該出力画素データは第１の出力画素データであることができる。当該装置は、第２の画像処理動作を当該第１の出力画素データに実施して、ＴｘＴ個の画素から成るＬ個の重なり合うステンシルを用いてＬ個の画素から成る垂直スライス内の第２の出力画素データを生成するように構成された第２のＩＰＬであって、Ｌは１より大きくＨより小さく、Ｔは２以上である、第２のＩＰＬを含むことができる。当該装置は、当該第１のＩＰＬと当該第２のＩＰＬの間で動作可能に接続された第２のラインバッファであって、当該第２のラインバッファは、当該第２のＩＰＬに対する当該第１の出力画素データをバッファするように構成される、第２のラインバッファを含むことができる。当該フルサイズ・バッファは第１のフルサイズ・バッファであることができ、当該スライディング・バッファは第１のスライディング・バッファであることができる。当該第２のラインバッファは、Ｗの幅および（Ｔ−１）の高さを有する第２のフルサイズ・バッファおよびＴＢの幅およびＬの高さを有する第２のスライディング・バッファであって、ＴＢはＴ以上でありＷより小さい、第２のスライディング・バッファを含むことができる。ＬはＫに等しいことができ、ＴはＳに等しいことができる。ＬはＫに等しくなくてもよく、ＴはＳに等しくなくてもよい。
【００７０】
当該装置は、当該ラインバッファに動作可能に接続される画像データ・ソースを含むことができる。当該画像データ・ソースを、当該画像に対応する画素データを格納するように構成することができる。Ｗは、少なくともＳより大きな規模であることができる。当該フルサイズ・バッファは円形データ・バッファを含むことができる。当該スライディング・バッファは先入れ先出し（ＦＩＦＯ）データ・バッファを含むことができる。
【００７１】
別の一般的な態様では、装置はＷ個の画素から成る幅およびＨ個の画素から成る高さを有する画像に対応する画素データに画像処理動作を実施して、ＳｘＳ個の画素から成るＫｘＪ個の重なり合うステンシルを用いて、Ｋ個の画素から成る高さおよびＪ個の画素から成る幅を有するスライス内の出力画素データを生成するように構成された画像処理ロジック（ＩＰＬ）を含むことができる。ＫおよびＪは１より大きくＨより小さく、Ｓは２以上でありＷはＳより大きい。当該装置はまた、当該ＩＰＬに動作可能に接続されたラインバッファを含むことができ、当該ラインバッファは、当該ＩＰＬに対する画素データをバッファするように構成される。当該ラインバッファは、Ｗの幅および（Ｓ−１）の高さを有するフルサイズ・バッファおよびＳＢの幅およびＫの高さを有するスライディング・バッファであって、ＳＢはＳ＋（Ｊ−１）以上でありＷより小さい、スライディング・バッファを含むことができる。
【００７２】
例示的な実装は以下の特徴の１つまたは複数を含むことができる。例えば、当該ＩＰＬは第１のＩＰＬであることができ、当該ラインバッファは第１のラインバッファであることができ、当該画像処理動作は第１の画像処理動作であることができ、当該出力画素データは第１の出力画素データであることができる。当該装置は第２の画像処理動作を当該第１の出力画素データに実施して、第２の出力画素データスライスを生成するように構成された第２のＩＰＬと、当該第１のＩＰＬおよび当該第２のＩＰＬの間で動作可能に接続された第２のラインバッファであって、当該第２のラインバッファは、当該第２のＩＰＬに対する当該第１の出力画素データをバッファするように構成される、第２のラインバッファとを含むことができる。当該第２のＩＰＬにより生成された第２の出力画素データスライスのスライスは、Ｋの高さおよびＪの幅を有することができる。当該第２のＩＰＬにより生成された第２の出力画素データスライスのスライスは、Ｋに等しくない高さとＪに等しくない幅を有することができる。当該ＩＰＬを、当該出力画素データのスライスをラスタ順で生成するように構成することができる。
【００７３】
別の一般的な態様では、画像信号プロセッサ（ＩＳＰ）はＷ個の画素から成る幅およびＨ個の画素から成る高さを有する画像に対応する画素データをバッファするように構成された画像データ・ソースを含むことができる。当該ＩＳＰはまた、Ｗ個の画素から成る幅およびＨ個の画素から成る高さを有する画像に対応する画素データに第１の画像処理動作を実施してＳｘＳ個の画素から成るＫ個の垂直に重なり合うステンシルを用いてＫ個の画素から成る垂直スライス内の第１の出力画素データを生成するように構成された第１の画像処理ロジック（ＩＰＬ）を有する第１の画像処理段階であって、Ｋは１より大きくＨより小さく、Ｓは２以上でありＷはＳより大きい、第１の画像処理段階を含むことができる。当該第１の画像処理段階はまた、当該第１のＩＰＬに動作可能に接続された第１のラインバッファを含むことができる。当該第１のラインバッファは、当該第１のＩＰＬに対する画素データをバッファするように構成される。当該第１のラインバッファはＷの幅および（Ｓ−１）の高さを有する第１のフルサイズ・バッファとＳＢの幅およびＫの高さを有する第１のスライディング・バッファであって、ＳＢはＳ以上でありＷより小さい、第１のスライディング・バッファとを含むことができる。当該ＩＳＰはさらに、第２の画像処理動作を当該第１の出力画素データに実施して、ＴｘＴ個の画素から成るＬ個の重なり合うステンシルを用いてＬ個の画素の垂直スライス内の第２の出力画素データを生成するように構成された第２のＩＰＬを有する第２の画像処理段階であって、Ｌは１より大きくＨより小さく、Ｔは２以上である、第２の画像処理段階を含むことができる。当該第２の画像処理段階はまた、当該第１のＩＰＬと当該第２のＩＰＬの間で動作可能に接続された第２のラインバッファであって、当該第２のラインバッファは、当該第２のＩＰＬに対する当該第１の出力画素データをバッファするように構成される、第２のラインバッファを含むことができる。
【００７４】
例示的な実装は以下の特徴の１つまたは複数を含むことができる。例えば、当該第２のラインバッファは、Ｗの幅および（Ｔ−１）の高さを有する第２のフルサイズ・バッファと、ＴＢの幅およびＬの高さを有する第２のスライディング・バッファであって、ＴＢはＴ以上でありＷより小さい、第２のスライディング・バッファとを含むことができる。ＴはＳに等しいことができ、ＬはＫに等しいことができる。
【００７５】
コンピューティング・デバイス７００は、プロセッサ７０２、メモリ７０４、記憶デバイス７０６、メモリ７０４および高速拡張ポート７１０に接続する高速インタフェース７０８、および低速バス７１４および記憶デバイス７０６に接続する低速インタフェース７１２を備える。コンポーネント７０２、７０４、７０６、７０８、７１０、および７１２の各々は、様々なバスを用いて相互接続され、必要に応じて共通のマザー・ボードにまたは他の方式で搭載してもよい。プロセッサ７０２は、コンピューティング・デバイス７００内での実行のための命令を処理することができる。当該命令は、高速インタフェース７０８に接続されたディスプレイ７１６のような外部入出力デバイス上のＧＵＩに対するグラフィカル情報を表示するための、メモリ７０４に格納された命令または記憶デバイス７０６上に格納された命令を含む。他の実装では、必要に応じて、複数のメモリおよびメモリのタイプに沿って複数のプロセッサおよび／または複数のバスを使用してもよい。また、複数のコンピューティング・デバイス７００は、（例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして）必要な動作の一部を提供する各デバイスに接続されてもよい。
【００７６】
メモリ７０４は情報をコンピューティング・デバイス７００内に格納する。１実装では、メモリ７０４は揮発性メモリユニットまたはユニットである。別の実装では、メモリ７０４は不揮発性メモリユニットまたはユニットである。メモリ７０４がまた、磁気または光ディスクのような別の形態のコンピュータ可読媒体であってもよい。
【００７７】
記憶デバイス７０６は、コンピューティング・デバイス７００に対する大容量記憶を提供することができる。１実装では、記憶デバイス７０６は、記憶領域ネットワークまたは他の構成内のデバイスを含めて、フロッピディスクデバイス、ハード・ディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の同様な固体メモリデバイス、またはデバイスのアレイのようなコンピュータ可読媒体であってもよいかまたはそれらを含んでもよい。コンピュータプログラム製品を情報キャリアで有形に具現化することができる。当該コンピュータプログラム製品はまた、実行されたとき、上述したもののような１つまたは複数の方法を実施する命令を含んでもよい。情報キャリアは、コンピュータまたは、メモリ７０４、記憶デバイス７０６、またはプロセッサ７０２上のメモリのような機械可読媒体である。
【００７８】
当該高速コントローラ７０８はコンピューティング・デバイス７００に対する帯域幅集約的な動作を管理し、低速コントローラ７１２は低帯域幅−集約的な動作を管理する。かかる機能割当ては例示的なものにすぎない。１実装では、高速コントローラ７０８は（例えば、グラフィクスプロセッサまたはアクセラレータを通じて）メモリ７０４、ディスプレイ７１６に接続され、様々な拡張カード（図示せず）を受け付けうる高速拡張ポート７１０に接続される。当該実装では、低速コントローラ７１２は記憶デバイス７０６および低速拡張ポート７１４に接続される。当該低速拡張ポートは様々な通信ポート（例えば、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ(登録商標)、Ｅｔｈｅｒｎｅｔ、無線Ｅｔｈｅｒｎｅｔ）を含んでもよく、キーボード、ポインティング・デバイス、スキャナのような１つまたは複数の入出力デバイスに接続されてもよく、または、例えば、ネットワークアダプタを通じてスイッチまたはルータのようなネットワーキング・デバイスに接続されてもよい。
【００７９】
コンピューティング・デバイス７００を、本図に示すように幾つかの異なる形態で実装してもよい。例えば、コンピューティング・デバイス７００を標準サーバ７２０として実装してもよく、またはかかるサーバのグループにおいて複数回実装してもよい。コンピューティング・デバイスをまた、ラックサーバシステム７２４の一部として実装してもよい。さらに、コンピューティング・デバイスをラップトップコンピュータ７２２のようなパーソナルコンピュータで実装してもよい。あるいは、コンピューティング・デバイス７００からのコンポーネントを、デバイス７５０のようなモバイルデバイス（図示せず）内の他のコンポーネントと組み合わせてもよい。かかるデバイスの各々がコンピューティング・デバイス７００、７５０の１つまたは複数を含んでもよく、システム全体を、互いに通信する複数のコンピューティング・デバイス７００、７５０で構成してもよい。
【００８０】
コンピューティング・デバイス７５０はプロセッサ７５２、メモリ７６４、他のコンポーネントの中でもディスプレイ７５４、通信インタフェース７６６、およびトランシーバ７６８のような入出力デバイスを含む。デバイス７５０がまた、追加の記憶を提供するためのマイクロドライブまたは他のデバイスのような記憶デバイスを提供してもよい。コンポーネント７５０、７５２、７６４、７５４、７６６、および７６８の各々は、様々なバスを用いて相互接続され、当該コンポーネントの幾つかを必要に応じて共通のマザー・ボード上にまたは他の方式で搭載してもよい。
【００８１】
プロセッサ７５２は、メモリ７６４に格納された命令を含む、コンピューティング・デバイス７５０内の命令を実行することができる。当該プロセッサを、別々のおよび複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実装してもよい。当該プロセッサは、例えば、ユーザインタフェース、デバイス７５０により実行されるアプリケーション、およびデバイス７５０による無線通信の制御のようなデバイス７５０の他のコンポーネントの協調を提供してもよい。
【００８２】
プロセッサ７５２は、制御インタフェース７５８およびディスプレイ７５４に接続されたディスプレイインタフェース７５６を通じてユーザと通信してもよい。ディスプレイ７５４は、例えば、ＴＦＴＬＣＤ（Thin-Film-Transistor Liquid Crystal Display）またはＯＬＥＤ（Organic Light Emitting Diode）ディスプレイ、または他の適切なディスプレイ技術であってもよい。ディスプレイインタフェース７５６は、グラフィカルおよび他の情報をユーザに提供するためにディスプレイ７５４を駆動するための適切な回路を備えてもよい。制御インタフェース７５８は、コマンドをユーザから受信し、プロセッサ７５２に送信するためにそれらを変換してもよい。さらに、外部インタフェース７６２を、プロセッサ７５２と通信して提供し、デバイス７５０の他のデバイスとの近領域通信を可能としてもよい。外部インタフェース７６２は、例えば、幾つかの実装における有線通信を提供してもよく、または他の実装における無線通信に対して、複数のインタフェースをまた使用してもよい。
【００８３】
メモリ７６４は情報をコンピューティング・デバイス７５０内に格納する。メモリ７６４を、コンピュータ可読媒体または媒体、揮発性メモリユニットまたはユニット、または不揮発性メモリユニットまたはユニットのうち１つまたは複数として実装することができる。拡張メモリ７７４をまた、拡張インタフェース７７２を通じて提供しデバイス７５０に接続してもよい。拡張メモリ７７４、例えば、ＳＩＭＭ（Single In Line Memory Module）カードインタフェースを含んでもよい。かかる拡張メモリ７７４はデバイス７５０にさらなる記憶空間を提供してもよく、または、デバイス７５０に対するアプリケーションまたは他の情報を格納してもよい。特に、拡張メモリ７７４は、上述のプロセスを実行または補完するための命令を含んでもよく、セキュア情報を含んでもよい。したがって、例えば、拡張メモリ７７４をセキュリティモジュールとしてデバイス７５０に提供してもよく、デバイス７５０の安全な利用を可能とする命令でプログラムされてもよい。さらに、セキュアアプリケーションを、識別情報を当該ＳＩＭＭカードにハック不能方式で配置するような、追加の情報に沿って、当該ＳＩＭＭカードを介して提供してもよい。
【００８４】
後述するように、当該メモリは、例えば、フラッシュメモリおよび／またはＮＶＲＡＭメモリを含んでもよい。１実装では、コンピュータプログラム製品は情報キャリアで有形に具現化される。当該コンピュータプログラム製品は、実行されたとき、上述したもののような１つまたは複数の方法を実施する命令を含む。情報キャリアは、例えば、トランシーバ７６８または外部インタフェース７６２上で受信されうる、メモリ７６４、拡張メモリ７７４、またはプロセッサ７５２上のメモリのようなコンピュータまたは機械可読媒体である。
【００８５】
デバイス７５０は、通信インタフェース７６６を通じて無線で通信してもよく、必要に応じてデジタル信号処理回路を含んでもよい。通信インタフェース７６６は、とりわけ、ＧＳＭ(登録商標)音声呼、ＳＭＳ、ＥＭＳ、またはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ(登録商標)、ＣＤＭＡ２０００、またはＧＰＲＳのような、様々なモードまたはプロトコルのもとで通信を提供してもよいかかる通信を、例えば、無線周波数トランシーバ７６８を通じて行ってもよい。さらに、短距離通信を、例えば、Ｂｌｕｅｔｏｏｔｈ(登録商標)、ＷｉＦｉ、または他のかかるトランシーバ（図示せず）を用いて行ってもよい。さらに、ＧＰＳ（Global Positioning System）受信器モジュール７７０は、追加のナビゲーション関連および位置関連の無線データをデバイス７５０に提供してもよく、必要に応じて、デバイス７５０で実行されているアプリケーションにより使用してもよい。
【００８６】
デバイス７５０はオーディオコーデック７６０を用いて可聴に通信してもよく、発話情報をユーザから受信し、それを使用可能なデジタル情報に変換してもよい。オーディオコーデック７６０は同様に、例えばスピーカを通じて、例えば、デバイス７５０のハンドセットで、ユーザに対して可聴音を生成してもよい。かかる音は音声電話呼からの音を含んでもよく、記録された音（例えば、音声メッセージ、音楽ファイル等）を含んでもよく、また、デバイス７５上で動作しているアプリケーションにより生成された音を含んでもよい。
【００８７】
コンピューティング・デバイス７５０を、本図で示したように幾つかの異なる形態で実装してもよい。例えば、コンピューティング・デバイス７５０を携帯電話７８０として実装してもよい。コンピューティング・デバイス７５０をまた、スマートフォン７８２、携帯情報端末、または他の同様なモバイルデバイスの一部として実装してもよい。
【００８８】
本明細書で説明したシステムおよび技術の様々な実装を、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣ（Application Specific Integrated Circuits）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはそれらの組合せで実現することができる。これらの様々な実装は、少なくとも１つのプログラム可能プロセッサを含むプログラム可能システムで実行可能なおよび／または解釈可能な１つまたは複数のコンピュータプログラムでの実装を含むことができる。当該システムは、特殊目的または汎用目的であってもよく、記憶システム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータおよび命令を送受信するために接続されてもよい。
【００８９】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られる）は、プログラム可能プロセッサに対する機械命令を含み、高レベルな手続き型および／またはオブジェクト指向プログラミング言語で実装でき、かつ／またはアセンブリ／機械言語で実装することができる。本明細書で使用する際、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令を機械可読信号として受信する機械可読媒体を含めて、機械命令および／またはデータをプログラム可能プロセッサに提供するために使用される任意のコンピュータプログラム製品、装置および／またはデバイス（例えば、磁気ディスク、光ディスク、メモリ、プログラム可能ロジックデバイス（ＰＬＤ））を指す。「機械可読信号」という用語は機械命令および／またはデータをプログラム可能プロセッサに提供するために使用される任意の信号を指す。
【００９０】
ユーザとの対話を提供するために、本明細書で説明したシステムおよび技術を、情報を当該ユーザに表示するためのディスプレイデバイス（例えば、ＣＲＴ（Cathode Ray Tube）またはＬＣＤ（Liquid Crystal Display）モニタ）および当該ユーザがそれにより入力を当該コンピュータに提供できるキーボードおよびポインティング・デバイス（例えば、マウスまたはトラックボール）とを有するコンピュータ上で実装することができる。他種のデバイスを、ユーザとの対話を提供するために使用することができる。例えば、当該ユーザに提供されるフィードバックは任意の形態のセンサ・フィードバック（例えば、視覚フィードバック、可聴フィードバック、または触覚フィードバック）であることができ、当該ユーザからの入力を音響、会話、または触覚入力を含む任意の形態で受信することができる。
【００９１】
本明細書で説明したシステムおよび技術を、（例えば、データサーバとして）バック・エンドコンポーネントを含むコンピューティング・システム、またはミドルウェアコンポーネント（例えば、アプリケーションサーバ）を含むコンピューティング・システム、または、フロント・エンドコンポーネント（例えば、ユーザが本明細書で説明したシステムおよび技術の実装と対話できるグラフィカルユーザインタフェースまたはウェブ・ブラウザを有するクライアントコンピュータ）、またはかかるバック・エンド、ミドルウェア、またはフロント・エンドコンポーネントの任意の組合せを含むコンピューティング・システムで実装することができる。当該システムの当該コンポーネントを、任意の形態または媒体のデジタルデータ通信（例えば、通信ネットワーク）により相互接続することができる。通信ネットワークの例はローカル領域ネットワーク（「ＬＡＮ」）、広域ネットワーク（「ＷＡＮ」）、およびインターネットを含む。
【００９２】
当該コンピューティング・システムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは一般に互いから離れており、一般に通信ネットワークを通じて対話する。クライアントおよびサーバの関係は、当該それぞれのコンピュータ上で実行され互いに対するクライアント−サーバ関係を有するコンピュータプログラムにより生ずる。
【００９３】
幾つかの実装を説明した。それにもかかわらず、様々な修正を、本発明の趣旨および範囲から逸脱せずに行ってもよいことは理解されよう。
【００９４】
さらに、図面に示したロジック・フローは、所望の結果を達成するために示した特定の順序も逐次的順序も必要としない。さらに、他のステップを提供してもよく、またはステップを当該説明したフローから削除してもよく、他のコンポーネントを当該説明したシステムに追加するかまたは当該説明したシステムから削除してもよい。したがって、他の実装は添付の特許請求の範囲内にある。
【符号の説明】
【００９５】
１１０  画像データ・ソース
１２０  画像処理段階
１３０  画像処理段階
１４０  画像処理段階
１５０  画像目標
【図１Ａ】
2019023900.tif 000003
【図１Ｂ】
2019023900.tif 000004
【図２】
2019023900.tif 000005
【図３】
2019023900.tif 000006
【図４】
2019023900.tif 000007
【図５】
2019023900.tif 000008
【図６】
2019023900.tif 000009
【図７】
2019023900.tif 000010
【外国語明細書】
2019023900000001.pdf