JP2019023900A - 画像信号プロセッサのための仮想ラインバッファ - Google Patents

画像信号プロセッサのための仮想ラインバッファ Download PDF

Info

Publication number
JP2019023900A
JP2019023900A JP2018184366A JP2018184366A JP2019023900A JP 2019023900 A JP2019023900 A JP 2019023900A JP 2018184366 A JP2018184366 A JP 2018184366A JP 2018184366 A JP2018184366 A JP 2018184366A JP 2019023900 A JP2019023900 A JP 2019023900A
Authority
JP
Japan
Prior art keywords
buffer
slice
data
pixels
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018184366A
Other languages
English (en)
Other versions
JP6678218B2 (ja
Inventor
チウリン・チュー
Qiuling Zhu
オフェル・シャチャム
Shacham Ofer
ジェイソン・ルパート・レッドグレイヴ
Rupert Redgrave Jason
ダニエル・フレデリック・フィンケルシュタイン
Frederic Finchelstein Daniel
アルバート・メイクスナー
meixner Albert
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2019023900A publication Critical patent/JP2019023900A/ja
Application granted granted Critical
Publication of JP6678218B2 publication Critical patent/JP6678218B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Image Input (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

【課題】画像幅バッファおよび/または部分画像幅スライディング・バッファを用いた画像画素処理プロセッサを提供する。【解決手段】装置は、W個の画素から成る幅およびH個の画素から成る高さの画像に対応する画素データに画像処理動作を実施して、SxS画素のK個の垂直に重なり合うステンシルを用いてK個の画素の垂直スライス内の出力画素データを生成するように構成された画像処理ロジック(IPL)を含む。装置は、IPLに動作可能に接続されたラインバッファを含む。ラインバッファは、IPLに対する画素データをバッファする。ラインバッファは、Wの幅およびS−1の高さを有するフルサイズ・バッファを含む。ラインバッファは、SBの幅およびKの高さを有するスライディング・バッファ(SBはS以上でありWより小さい)を含む。【選択図】図2

Description

関連出願の記載
本願は、発明の名称を「画像信号プロセッサのための仮想ラインバッファ」とした、2015年1月22日出願の米国特許番号第14/603,354号の継続出願であり、その内容は引用により本明細書に取り込まれる。
本開示は画像処理に関する。より具体的には、本開示は、画像幅バッファおよび/または部分画像幅スライディング・バッファを含むラインバッファを用いた画像画素処理のためのアプローチに関する。
コンピュータ、スマートフォン、タブレット、ウェアラブルデバイス等のようなコンシューマ電子デバイスの流行が増大し続けている。かかるデバイスはしばしば、高解像度ディスプレイ、および/または画像センサ(例えば、カメラに含まれるセンサ)のようなディスプレイを備える。画像信号処理を、画像信号プロセッサ(ISP)を用いて(例えば、キャプチャされた画像および/または電子メモリに格納された画像を処理するために)かかるデバイス内で実施することができる。かかるISPは、幾つかの実装では、対応する有向非巡回グラフ(DAG)に従って動作することができる。本開示の目的のため、「ISP」という用語は画像信号処理を実装するために使用される装置を説明するために使用されるが、他の用語が適切であることもある。
かかるISPによる画像信号処理(例えば、画像または1組の画像に対応する画素データの処理)を幾つかの状況で使用することができる。例えば、電子デバイスに含まれる画像センサ(例えば、カメラ)によりキャプチャされた画像(または一連の画像、例えば、ビデオ)を、当該デバイスのディスプレイに表示されているおよび/または(または当該電子デバイスに動作可能に接続された)当該電子デバイスの電子メモリ(例えば、フラッシュメモリ、動的ランダム・アクセス・メモリ(DRAM)等)に格納された完全に処理された画像(複数可)で、ISPを用いて処理してもよい。他の事例では、例えば、メモリに格納された画像(または一連の画像、例えば、ビデオ)をISP内で処理することができる。当該完全に処理された(当該ISPの最終段階で出力された)画像(複数可)は関連付けられた電子デバイスのディスプレイに表示され、かつ/または、同一のメモリ、または異なるメモリに格納される。所与のISPにより処理された画像の起点および宛先は、当該特定の実装に基づいて変化することができる。
ISPの実装は一連のカスケードされた(例えば、パイプラインされた)ラインバッファ(例えば、画像信号処理中に画像(画素)データをバッファ(格納)するための静的RAM(SRAM))および関連付けられた計算カーネル(例えば、画像処理機能を当該画像画素データに実施するための画像処理ロジック)を含むことができる。かかる画像処理機能は、所与の画像または一連の画像の空間的に近接した画素のサブグループに対応する画素データの「ステンシル」に(例えば、所与のシーケンスで)実施される機能を含むことができる。例えば、かかる画像処理機能は色補完、画像鋭敏化、色補正等を含むことができる。
ラインバッファは、上述のようにSRAMメモリを用いて実装でき、ISPの画像処理ロジック(IPL)段階の間の画像画素データに対する局所バッファリングを提供することができる。或る段階により処理された画素データは、全ての処理段階が当該画像(画素)データ)の処理を完了するまで、後続の処理段階等のためにラインバッファに書き込む(ラインバッファ内で再利用するためにバッファする)ことができる。しばしば、より大きなラインバッファ(より多くのラインを保持できるラインバッファ)を、平行構造を介してスループットを増大するのを促進するために使用することができる。
コンシューマ電子デバイスが進歩するにつれ、画像解像度の対応する増大、(例えば、より複雑な画像処理アルゴリズムを促進するための)幾つかの画像処理段階および/または画像処理スループットを高めるための要件の増大は、対応するISP内でラインバッファを実装するために使用されるメモリ(例えば、SRAM)の量の不要な増大をもたらしうる。例えば、所与のISPに対する所望の性能を実現するために、当該ISPに対するラインバッファを実装するために使用されるメモリの量は、コストの視点、(例えば、使用されるシリコン領域の量、製品設計コスト等)、および/または電力消費(例えば、動的および/または静的な電力消費)の視点から禁止される量に増大しうる。
一般的な態様において、装置はW個の画素から成る幅およびH個の画素から成る高さを有する画像に対応する画素データに画像処理動作を実施して、SxS画素のK個の垂直に重なり合うステンシルを用いてK個の画素の垂直スライス内の出力画素データを生成するように構成された画像処理ロジック(IPL)であって、Kは1より大きくHより小さく、Sは2以上でありWはSより大きい、画像処理ロジック(IPL)を備える。当該装置はまた、当該IPLに動作可能に接続されたラインバッファを含み、当該ラインバッファは、当該IPLに対する当該画素データをバッファするように構成される。当該ラインバッファはWの幅および(S−1)の高さを有するフルサイズ・バッファを含む。当該ラインバッファはまた、SBの幅およびKの高さを有するスライディング・バッファであって、SBはS以上でありWより小さい、スライディング・バッファを含む。
例示的な実装は以下の特徴の1つまたは複数を含むことができる。例えば、当該IPLを、当該出力画素データの当該垂直スライスをラスタ順で生成するように構成することができる。当該IPLの画像処理機能はプログラム可能であることができる。当該IPLの画像処理機能を固定することができる。
当該IPLは第1のIPLであることができ、当該ラインバッファは第1のラインバッファであることができ、当該画像処理動作は第1の画像処理動作であることができ、当該出力画素データは第1の出力画素データであることができる。当該装置は、第2の画像処理動作を当該第1の出力画素データに実施して、TxT画素のL個の重なり合うステンシルを用いてL個の画素の垂直スライス内の第2の出力画素データを生成するように構成された第2のIPLであって、Lは1より大きくHより小さく、Tは2以上である、第2のIPLを含むことができる。当該装置は、当該第1のIPLおよび当該第2のIPLの間で動作可能に接続された第2のラインバッファであって、当該第2のラインバッファは、当該第2のIPLに対する当該第1の出力画素データをバッファするように構成される、第2のラインバッファを含むことができる。当該フルサイズ・バッファは第1のフルサイズ・バッファであることができ、当該スライディング・バッファは第1のスライディング・バッファであることができる。当該第2のラインバッファは、Wの幅および(T−1)の高さを有する第2のフルサイズ・バッファおよびTBの幅およびLの高さを有する第2のスライディング・バッファであって、TBはT以上でありWより小さい、第2のスライディング・バッファを含むことができる。LはKに等しいことができ、TはSに等しいことができる。LはKに等しくなくてもよく、TはSに等しくなくてもよい。
当該装置は、当該ラインバッファに動作可能に接続される画像データ・ソースを含むことができる。当該画像データ・ソースを、当該画像に対応する当該画素データを格納するように構成することができる。Wは、少なくともSより大きな規模であることができる。当該フルサイズ・バッファは円形データ・バッファを含むことができる。当該スライディング・バッファは先入れ先出し(FIFO)データ・バッファを含むことができる。
別の一般的な態様では、装置は、W個の画素から成る幅およびH個の画素から成る高さを有する画像に対応する画素データに画像処理動作を実施して、SxS個の画素のKxJ個の重なり合うステンシルを用いてK個の画素から成る高さおよびJ個の画素から成る幅を有するスライス内の出力画素データを生成するように構成された画像処理ロジック(IPL)を含む。KおよびJは1より大きくHより小さく、Sは2以上でありWはSより大きい。当該装置はまた当該IPLに動作可能に接続されたラインバッファを含み、当該ラインバッファは、当該IPLに対する当該画素データをバッファするように構成される。当該ラインバッファはWの幅および(S−1)の高さを有するフルサイズ・バッファおよびSBの幅およびKの高さを有するスライディング・バッファであって、SBはS+(J−1)以上でありWより小さい、スライディング・バッファを含む。
例示的な実装は以下の特徴の1つまたは複数を含むことができる。例えば、当該IPLは、第1のIPLであることができ、当該ラインバッファは第1のラインバッファであることができ、当該画像処理動作は第1の画像処理動作であることができ、当該出力画素データは第1の出力画素データであることができる。当該装置は、第2の画像処理動作を当該第1の出力画素データに実施して、第2の出力画素データスライスを生成するように構成された第2のIPLおよび当該第1のIPLおよび当該第2のIPLの間で動作可能に接続された第2のラインバッファであって、当該第2のラインバッファは、当該第2のIPLに対する当該第1の出力画素データをバッファするように構成される、第2のラインバッファを含むことができる。当該第2のIPLにより生成された当該第2の出力画素データスライスのスライスは、Kの高さおよびJの幅を有することができる。当該第2のIPLにより生成された当該第2の出力画素データスライスのスライスは、Kに等しくない高さおよびJに等しくない幅を有することができる。当該IPLを、当該出力画素データの当該スライスをラスタ順で生成するように構成することができる。
別の一般的な態様では、画像信号プロセッサ(ISP)はW個の画素から成る幅およびH個の画素から成る高さを有する画像に対応する画素データをバッファするように構成された画像データ・ソースを含む。当該ISPはまた、W個の画素から成る幅を有する第1の画像処理段階およびH個の画素から成る高さを有する画像に対応する画素データに第1の画像処理動作を実施して、SxS画素のK個の垂直に重なり合うステンシルを用いて第1のK個の画素の垂直スライス内の出力画素データを生成するように構成された第1の画像処理ロジック(IPL)であって、Kは1より大きくHより小さく、Sは2以上でありWはSより大きい、第1の画像処理ロジック(IPL)を含む。当該第1の画像処理段階はまた、当該第1のIPLに動作可能に接続された第1のラインバッファを含み、当該第1のラインバッファは、当該第1のIPLに対する当該画素データをバッファするように構成される。当該第1のラインバッファはWの幅および(S−1)の高さを有する第1のフルサイズ・バッファおよびSBの幅およびKの高さを有する第1のスライディング・バッファであって、SBはS以上でありWより小さい、第1のスライディング・バッファを含む。当該ISPはさらに第2の画像処理動作を当該第1の出力画素データに実施して、TxT画素のL個の重なり合うステンシルを用いてL個の画素の垂直スライス内の第2の出力画素データを生成するように構成された第2のIPLであって、Lは1より大きくHより小さく、Tは2以上である、第2のIPLを有する第2の画像処理段階を含む。当該第2の画像処理段階はまた、当該第1のIPLおよび当該第2のIPLの間で動作可能に接続された第2のラインバッファであって、当該第2のラインバッファは、当該第2のIPLに対する当該第1の出力画素データをバッファするように構成される、第2のラインバッファを含む。
例示的な実装は以下の特徴の1つまたは複数を含むことができる。例えば、当該第2のラインバッファは、Wの幅および(T−1)の高さを有する第2のフルサイズ・バッファおよびTBの幅およびLの高さを有する第2のスライディング・バッファであって、TBはT以上でありWより小さい、第2のスライディング・バッファを含むことができる。TはSに等しいことができ、LはKに等しいことができる。
1つまたは複数の実装の詳細を添付図面および下記の説明で説明する。他の特徴は当該説明と図面から、および、特許請求の範囲から明らかであろう。
1実装に従う画像信号プロセッサ(ISP)を示すブロック図である。 1実装に従う図1Aの当該ISPに含まれうる画像処理段階を示すブロック図である。 1実装に従う画像処理段階に含まれる仮想ラインバッファの動作を示すブロック図である。 1実装に従う仮想ラインバッファを含む画像処理段階を用いて生成しうる2つの連続するスライス行を示す図である。 1実装に従う仮想ラインバッファを含む画像処理段階を用いて画像信号処理に関連付けられた画素データの読書き動作を示す図である。 1実装に従う画像処理段階に含まれる別の仮想ラインバッファの動作を示す図である。 1実装に従う異なるステンシルサイズを使用する連続画像処理段階の仮想ラインバッファの動作を示す図である。 本明細書で説明する技術を実装するために使用できるコンピュータデバイスおよびモバイルコンピュータデバイスの例を示す図である。
様々な図面における同じ参照記号は同じ要素を示す。
本開示は画像データ(画素データ、画像画素データ、画像信号等とも称することができる)を処理するための装置および方法に関する。当該画像データは、以下でさらに詳細に説明するように仮想ラインバッファを含む画像信号プロセッサ(ISP)により処理される。特に、本明細書で説明した技術を、1つまたは複数の仮想ラインバッファを含むISPにより、写真画像、ビデオ画像等に関する画像データ(例えば、画素データ、画像信号等)を処理するために使用することができる。かかる仮想ラインバッファを、全画像幅ラインバッファ(所与の仮想ラインバッファと同一の高さを有する従来のラインバッファ)を実装するために使用されるメモリの一部で実装することができる。したがって、本明細書で説明したアプローチを用いて実装されたISPは、全画像幅高さラインバッファを用いて実装されるISPと比較して、製品コストおよび/または電力消費を削減することができる。
本開示は一般に画像データ処理に関し、画像データ処理のためのISP内の仮想ラインバッファの利用に関するが、本明細書で説明したアプローチを他のタイプのデータとともに使用しうることは理解されよう。例えば、本明細書で説明したような仮想ラインバッファを、重なり合うアドレスウィンドウで計算が反復されるデータセット(画像データまたはそれ以外)を処理するように構成された回路および/またはデバイスで使用することができる。例えば、1例として、かかるアプローチを使用してオーディオ・データを処理することができる。かかるアプローチでは、当該オーディオ・データを、例えば、時間を第1の軸とし周波数を第2の軸として、2次元で配置することができる。
図1Aおよび1Bは、それぞれ、1実装に従うISP100に含まれうる画像信号プロセッサ(ISP)100と画像処理段階120を示すブロック図である。図1Aに示すISP100の配置、および図1Bに示す画像処理段階120は例により、および例示の目的のために与えられる。当該特定の実装(例えば、かかるISPが含まれる特定のデバイス)に応じて、ISP100の配置および画像処理段階120は変化しうる。
図1Aに示すように、ISP100は画像データ・ソース110を含む。画像データ・ソース110は幾つかの形態をとることができる。例えば、1実装では、画像データ・ソース110は、フラッシュメモリ、DRAM等のような電子メモリに格納された画像を含むことができる。別の実装では、当該画像データ・ソースは、画像センサ(例えば、相補型金属酸化物半導体(CMOS)画像センサ等)を含むことができる。他の実装では、画像データ・ソース110は他の形態をとることができる。
図1AのISP100はまた、一連のパイプラインされた(カスケードされた、逐次的な等)画像処理段階120、130、140を含む。図1Aに示すように、ISP100に含まれる幾つかの画像処理段階は変化しうる。例えば、ISP100は、図1Aに示したものよりも少ない画像処理段階を含むことができ、または、追加の画像処理段階を含むことができる。図1AのISP100は例として、かつ、例示の目的のために与えられる。ISPは一般に多くの有向グラフ形状で提供され、1つまたは複数の処理段階が、1つまたは複数のダウンストリーム処理段階により後で処理されるデータを生成する。
ISP100はさらに画像目標150を含む。画像目標150はまた、実装に応じて幾つかの形態をとることができる。例えば、画像目標150は、高解像度ディスプレイのような電子デバイスのディスプレイを含んでもよい。他の実装では、当該画像目標は電子メモリ、例えば、フラッシュメモリまたは他のタイプの電子メモリを含んでもよい。
ISP100では、画像処理段階120、130、140の各々は、入力画素ストリーム(処理されている画像に対応)を以前のブロックから受信し、(それぞれの画像処理機能を実施した後に)出力画素ストリームを生成することができる。即ち、画像処理段階120は、入力画素ストリームを画像データ・ソース110から受信し、画像処理機能を当該画素ストリームに実施し、出力画素ストリームを生成することができる。当該事例では、入力データ・ソース110を画素ストリーム・プロデューサ(プロデューサ)と称することができ、画像処理段階120を画素ストリーム・コンシューマ(コンシューマ)と称することができる。画像処理段階120(当該事例ではプロデューサ)により生成された出力画素ストリームを次いで、画像処理段階130(コンシューマ)の入力画素ストリームとして使用することができる。画像処理段階130は、ISP100の後続の画像処理段階ごとに、(段階120の当該画像処理と)異なる画像処理動作を当該画素ストリーム等に実施することができる。図1Aに示すように、(プロデューサとしての)画像処理段階140からの出力画素ストリームは、画像目標150に対する入力画素ストリームとして使用することができる。特定の実装に応じて、画像処理段階120、130、140の各々に対する画像処理機能は固定でき、または、プログラム可能であることができる。
図1Bは、(例えば、画像処理段階120、130、140等に対する)図1AのISP100において実装できる画像処理段階120の実装を示す。他の実装では、画像処理段階120、130、140の配置は異なってもよい。図1Bに示す配置は例により、かつ、例示の目的のために与えられる。
画像処理段階120は、図1Bに示すように、仮想ラインバッファ160および画像処理ロジック(IPL)170を含む。かかる配置において、仮想ラインバッファ160を、IPL170により処理するためにISP100内で処理されている画像のための画素データの空間的にローカルなサブセットをバッファするように構成することができる。1実装では、(例えば、仮想ラインバッファ160内にバッファされている)画素データの1つのサブセットがIPL170により処理された後、当該処理された画素データサブセットを次の段階(例えば、コンシューマ)のラインバッファに書き込むことができ、画素データの新たなサブセットをIPL170による処理のために仮想ラインバッファ160に読み込むことができる。ISP100により処理されている画像に関するデータを、ラスタスキャン順序(例えば、左から右、上から下)でかかるサブセットにおいて処理することができる。
1実装では、IPL170は、幾つかの重なり合うステンシルを用いて、与えられる場合には、(例えば、IPL170の画像処理機能を所与のステンシル内の画素に対するデータに適用することによって)1組の出力画素を空間的に近接した画素のグループから生成するために使用される(サポート領域と称することができる)単一のステンシルを用いて、画像処理機能を(例えば、ラスタスキャン順序で仮想ラインバッファ160にバッファできる)画素データのサブセットに適用することができる。例えば、1実装では、SxSのサイズのステンシルを、そのそれぞれの画像処理動作を実施するときに、IPL170により使用することができる。特定の実装に応じて、Sは2以上の値を有することができる。例えば、IPL170は、サイズ2x2、3x3、4x4、5x5等のステンシルを使用することができる。
奇数サイズのステンシルに対して、所与のステンシルに対する出力画素は中央画素であることができ、偶数サイズのステンシルに対しては、所与のステンシルに対する出力画素はオフセットであることができる(即ち、ステンシルの中央で決定されない)。他の実装では、所与のステンシル動作に対する出力画素はプログラム可能であることができ、または、IPL170により実装される特定の画像処理機能に依存することができる。
例示により、現在のISP実装において、画像画素データがラスタスキャン順序で処理され、サイズSxSのステンシルが所与のIPLにより使用されると仮定すると、(画素ストリームを供給する)プロデューサ段階は、次のIPL段階がその入ってくる画素ストリームの処理を開始できる前に、(S−1)個のフルサイズ画像ラインと、S個の画素をさらに生成しなければならない。したがって、かかる実装におけるラインバッファは、画素データの(S−1)個の全画像幅ラインと、部分線内の少なくともさらにS個の画素に対する画素データとをバッファするのに十分なほど大きい必要がある。ISP実装の処理段階が、同時に(例えば、スループットを高めるために並列に、または、幾つかの修正されたラスタスキャン順序で)複数の、垂直に重なり合うステンシルを処理するように構成される場合、全画像幅ラインの数を、一緒に処理された重なり合うステンシルの数に対応して増大させることができる。
したがって、かかる垂直に重なり合うステンシルを用いて所与の画像処理段階により画像データの処理を可能とするために、当該IPLに関連付けられたラインバッファの高さが増大する(例えば、より高くなる)。現在のISP実装では、かかるアプローチは、画素データの重なり合うステンシルの処理をサポートするための画素データの十分な全画像幅ラインをバッファできるように、当該ラインバッファのサイズを増大させる必要がある。例えば、6個の垂直な(K=6)重なり合う3x3(S=3)個のステンシルを処理するために、ラインバッファは、8(K+(S−1))個の全画像幅画素データ線と、9番目のライン上の3つの追加の画素をバッファするのに十分なほど大きい必要がある。1000画素の画像幅を有するデバイスに対して、これは、(画素ごとに1バイトを仮定して)単一のラインバッファ内だけで最低でも64、003ビットのSRAMを必要とする。画像処理段階の数に応じて、画素ごとのビット数、ステンシルのサイズ、および当該ステンシルの平行構造、必要なSRAMの量は容易に上述の欠点をもたらす。
本明細書で説明したアプローチでは、全画像幅の高さのラインバッファを用いた現在の実装の欠点を回避しつつ、仮想ラインバッファ160(さらに後述する)を有する図1Bに示す画像処理段階120を、複数の重なり合うステンシル(例えば、画素データの重なり合うグループ)を(例えば、並列に)処理して、複数の出力画素を生成するために使用することができる。簡潔に述べると、IPL170および仮想ラインバッファ160は、仮想ラインバッファ160内のメモリ(例えば、SRAM)セルの数を大幅に増大させることなく、幾つかの重なり合うステンシル動作で画素データを処理することを可能とするように構成される。
かかるアプローチでは、仮想ラインバッファ160は、(IPL170により処理される重なり合うステンシルの数ではなく)IPL170内のステンシルのサイズに依存する高さを有する(例えば、全幅画像ラインをバッファするように構成された)フルサイズ・バッファを備えることができる。当該仮想ラインバッファはまた、処理されている(例えば、垂直におよび/または水平に重なり合う)重なり合うステンシルの数に依存する高さおよび/または幅を有する(例えば、部分幅画像ラインをバッファするように構成された)スライディング・バッファを備えることができる。当該幅はまた、当該重なり合うステンシルの画素幅(サイズ)に依存することができる。
上の例に戻ると、画像処理段階120のIPL170が、6(K=6)個の垂直に重なり合う3x3(S=3)個のステンシル動作を一度に実施するように構成される場合、仮想ラインバッファ160を、2つの(S−1)個の全画像幅画素データ線および少なくとも3(S)個の画素から成る6(K)個の部分線をバッファするように構成することができる。当該部分線内の画素の数は、スライディング・バッファを実装するために使用されるメモリの読み書き速度および帯域幅に依存しうる。上述の例における1000x8ビットの画素の画像幅に対し、仮想ラインバッファ160は64,003ビットと比較して、16,018ビットのSRAMを含むことができ、ほぼ75%の削減である。
さらに、仮想ラインバッファ160のような仮想ラインバッファの利用により、当該ステンシルと少なくとも同じ幅(または水平に重なり合うステンシルの幅と少なくとも同じ幅)を有する画素データの追加の部分線を追加することのみによって、追加の重なり合うステンシルを処理することができる。本例では、6個の垂直に重なり合う3x3個のステンシル動作により、少なくとも3つの画素の部分行に対するデータを使用することができる。
したがって、(例えば、仮想ラインバッファ160を用いた)かかるアプローチは、上述したもののような、ステンシルのサイズおよび処理されている重なり合うステンシルの数に基づく幾つかの全幅画像ラインを用いて実装されるラインバッファと比較して、追加の重なり合うステンシルを所与の時点で処理するための増分的なオーバヘッドを小型のメモリに課す。したがって、本明細書で説明したアプローチを用いることにより、仮想ラインバッファ160内の削減されたSRAM容量を使用することができ、静的および動的なエネルギの利用を削減することができ、また、所与のISPに対する計算容量とラインバッファメモリ容量との比を増大させることができる。
図2は、1実装に従う図1Bの画像処理段階120のような画像処理段階の間で含まれうる仮想ラインバッファの動作160を示すブロック図である。例えば、図1Bの仮想ラインバッファ160を、図2に関して以下で説明するように構成でき、図3乃至6で示した例示的な実装に関して説明したように動作するように構成される。仮想ラインバッファの動作は、図2(ならびに図3乃至6)に関して説明したように、例により、かつ、例示の目的のために与えられる。以下の議論では、図2乃至6を必要に応じて図1Aおよび1Bを参照してさらに説明する。
他の実装では、図2乃至6に示したアプローチを、異なる構成を有するISPおよび画像処理段階で使用することができる。例えば、所与のISP100において、ラインバッファ(例えば、仮想ラインバッファ160)の各々は同様な構成を有することができ、他の実装では、ISP内のラインバッファの各々(またはその少なくとも幾つか)は異なる構成を有することができる。例えば、幾つかの実装では、ISP100内のラインバッファの各々(またはその少なくとも幾つか)は共通のステンシルサイズに基づいて動作でき、また、それぞれ(またはその少なくとも幾つか)が共通の数の重なり合うステンシル動作を一度に実施するように構成されるIPL170と関連して動作する。他の実装では、ISP100内のラインバッファの各々(またはその少なくとも幾つか)は、異なるステンシルサイズに基づいて動作でき、かつ/または、それぞれ(またはその少なくとも幾つか)が異なる数の重なり合うステンシル動作を一度に実施するように構成されたIPL170と関連して動作することができる。当該ラインバッファの特定の構成および所与のISPに対するIPL段階は特定の実装に依存する。
図2では、仮想ラインバッファ160を含む画像処理段階120により処理される画像に対する画像フレーム200が図示される。図2に示すように、画像フレーム200はW個の画素から成る幅とH個の画素から成る高さを有する。本例では、画像フレーム200は、高解像度(写真またはビデオ)画像に対応すると考えることができ、WおよびHは両方とも1,000以上である。幾つかの実装では、WはHに等しいことができ、他の実装ではWおよびHは異なる値を有することができる。
図2の例では、画像フレーム200に対応する画像を、画像処理カーネル(例えば、特定の畳みこみ機能)を当該画像に対応する画素データに実施するように構成された(例えば、ISP100に含まれる)IPL170により処理することができる。IPL170は、入力画素ストリームをISP100の以前の(プロデューサ)段階から受信し、その画像処理カーネルを(ラスタスキャン順序で)適用して、出力画素データストリームを、K個の画素から成る垂直スライスにおいて、SxS個の画素のK個の垂直に重なり合うステンシルを用いて生成することができる。1実装では、Kは、1より大きく、かつ、Hより小さいことができ、Sは、2以上であることができ、WはSより大きいことができる。
関連するISPの他の画像処理段階では、別の1組のIPLは、入力画素ストリームをISP100の以前の段階から受信し、異なる画像処理カーネルを(ラスタスキャン順序で)適用して、L個の画素の垂直スライス内の出力画素データを、TxT個の画素から成るL個の垂直に重なり合うステンシルを用いて生成することができる。1実装では、Lは、1より大きく、かつ、Hより小さいことができ、Tは、2以上であることができ、WはTより大きいことができる。幾つかの実装ではKはLに等しいことができ、他の実装では、KはLと異なる値を有する。同様に、特定の実装ではSはTに等しいことができ、他の実装ではSはTと異なる値を有することができる。
図2は、特定の例におけるこれらの変数(K、L、SおよびT)の各々を参照する。図2の例では、KおよびLの値は両方とも6であり、SおよびTの値は両方とも3である。しかし、他の実装では、K、L、Sおよび/またはTは、図2で示したもの以外の値を有することができ、図2に示す配置は例としてかつ例示の目的のために与えられたにすぎないことは理解されよう。以下の議論では、図2に示したアプローチは図2を参照して説明される。関連付けられたIPLは、3x3(S=3)個の画素から成るステンシルサイズを有するK=6個の垂直に重なり合うステンシルを用いて画像データを処理し、これは図2に示した例と一貫する。
図2では、画像フレーム200に関連付けられた画像データの画素データの処理が、仮想ラインバッファ160を用いて図示されている。仮想ラインバッファ160を、上述したものように、関連付けられたIPLにより処理するための入力画素データストリームをバッファするように構成することができる。図2に示すように、仮想ラインバッファ160は、画素記憶部のW個の画素から成る幅および2行(S−1)の高さを有するフルサイズ・バッファ162を含むことができ、本例では、2つの全画像幅の行に対するメモリを含む仮想ラインバッファ160をもたらす。
やはり図2に示すように、仮想ラインバッファ160はまた、スライディング・バッファ164を含むことができる。本実装例では、スライディング・バッファ164は、SBの幅(または例えば、幅Tのステンシルも用いたIPLの他の段階に対するTB)を有することができる。図2に示すように、スライディング・バッファ164はK個の部分行から成る高さを有することができ、当該部分行は本例では6個の画素の高さであり、SBはS以上かつW未満であってもよい(Sは本例では3以上であることができる)。したがって、本例のスライディング・バッファ164を、それぞれ少なくとも3(SBまたはTB)個の画素の幅である(例えば、18画素を用いると、上述のように8ビット画素に対して18x8個のSRAMセルを占有する)6個の(必要に応じてKまたはL個の)部分画像画素データ行として実装することができる。SB(または必要に応じてTB)の値は、少なくとも部分的に、(例えば、先入れ先出し(FIFO)バッファとして)スライディング・バッファ164を実装するために使用されるSRAMの読み書き速度に依存することができる。
図2の画像フレーム200に関連付けられた画像データを処理するとき、関連付けられたIPL170を、仮想ラインバッファ160と関連して、出力画素データストリームをK個の画素から成る垂直スライスで生成するように構成でき、当該K個の画素から成る垂直スライス(当該スライスをそれぞれスライスまたは出力スライスと称することができる)はラスタスキャン順序で生成される。IPL段階が所与のスライスの画素を計算する順序は、所与のブロックまたはスライス内のラスタ順のような修正されたラスタ順であることができる。1実装では、画素のスライス(入力スライス)が、関連付けられたIPL170の回路に仮想ラインバッファ160から移動されるたびに、K個の出力画素の列(出力スライス)は次の(コンシューマ)段階(例えば、後続の画像処理段階120のラインバッファ)に書き込まれる。出力スライスの画像幅の広さの行をスライス行と称することができる。
図2に示したアプローチを一般化すると、コンシューマ(例えば、IPL170)がK個の画素の列において出力スライスを生成するように構成される場合、プロデューサが入力画素ストリームをコンシューマに提供することで、(S−1)個の全画像幅ライン(行)が生成される。SxSのステンシルが使用され、コンシューマ段階がプロデューサの出力画素ストリームの処理を開始できる前に、少なくともS画素から成るさらにK個の部分行を生成する。当該ストリームはコンシューマの入力画素ストリームである。換言すれば、かかるアプローチでは、仮想ラインバッファ160内のS番目のラインから(S+(K−1))番目のラインは全ラインである必要はない。これらのラインは、その代わり、単に高さK(または上述のようにL)およびSB(または上述のようにTB)以上である幅を有する小さなウィンドウ(例えば、スライディング・バッファ164)を含むことができる。
(S−1個の全画像幅画素データ線の)フルサイズ・バッファを、連続スライス行ラスタの間で再利用される重なり合う(S−1)個の全画像幅画素データ線を連続的にバッファするための円形バッファとして使用することができる。換言すれば、当該スライディング・バッファの最終のS−1個の行を(それらが対応する出力スライスを生成するためにIPLにより処理された後)、フルサイズ・バッファ162に書き込んで、既に使用されもはや必要でない画素データを上書きすることができる。さらに、スライディング・バッファ164を、ISP100の以前の(プロデューサ)段階(例えば、画像処理段階120)からの出力画素データをバッファするために使用することができる。当該プロデューサからのバッファされた出力画素データを次いでコンシューマIPL170により消費して対応する出力スライスを生成でき、この処理は画像フレーム200と関連付けられた画像全体の処理を繰り返す。
1実装では、図2に関して説明したようにISPが仮想ラインバッファ160で実装される、図1のISP100の初期化を以下のように実現することができる。先ず、フルサイズ・バッファ162の(S−1)画素データ線は、以前の(プロデューサ)段階により(例えば、SxSのステンシルが使用されるとき)埋めることができる。当該プロデューサ段階(例えば、計算カーネル)は次いで、画素データをK個の画素(上述の例では6個の画素)の単一の列内のスライディング・バッファ164に一度に書き込むことができる。当該コンシューマ計算カーネルは、スライディング・バッファ164内で利用可能な画素から成るS(3)個の列があるとすぐにその仮想ラインバッファ160にバッファされる画像データの処理を開始することができる。スライディング・バッファ164は、本例ではコンシューマ段階に対するステンシル幅と等価である。
幾つかの実装では、スライス行内の画素スライスの処理は逐次的なラスタスキャン順序であることができ、所与のスライス内の画素の処理は任意の順序で行うことができる。したがって、前述のように、スライディング・バッファ164を、例えば、カスタマイズされたFIFOメモリを用いて実装できるが、他のアプローチが可能である。画素の新たな列(出力スライス)がプロデューサ段階により生成されるたびに、当該出力スライスは、プロデューサ段階(例えば、次の画像処理段階)と関連付けられたコンシューマ段階のスライディング・バッファ164の端で挿入することができる。前述のように、所与の画像処理段階に対するスライディング・バッファ164の幅は、当該段階に基づいて出力スライス幅ならびにスライディング・バッファ164に対する読み書き速度を決定することができる。しかし、スライディング・バッファ164の幅(SBまたはTB)は、少なくともフルサイズ・バッファ162の幅よりも小さい大きさであることができ、当該幅は画像フレーム200の幅Wにより決定される。
図1Bおよび2に示したもののような仮想ラインバッファ160を含むISP100を実装するためのアプローチを使用することには幾つかの効果がある。例えば、フルサイズ・バッファ162内の画素データ線の数は(S−1)であり、これは関連付けられたIPL170により使用されるステンシルサイズに依存する。フルサイズ・バッファ162内の画像画素データ線の数は出力スライスを生成するために処理される垂直なステンシルの数と独立であり、これがかかるアプローチを非常にスケーラブルにする。例えば、追加の重なり合うステンシルの追加を、スライディング・バッファ164内の均等な数の部分行(および/または列)を追加することによって行うことができる。かかるアプローチの別の効果は、スライディング・バッファ164の幅がフルサイズ・バッファ162の幅よりかなり狭いので、当該仮想ラインバッファを実装するために使用されるメモリの量を、ラインバッファ内の全ての行(単一の部分行を除く)が画像フレーム幅と同じ幅であるアプローチと比較して、大幅に減らすことができるということである。
図3は、1実装に従う仮想ラインバッファ160を含む画像処理段階120を用いて生成できる2つの連続するスライス行を示す図である。例示の目的のため、図3を、必要に応じて図1A、1Bおよび2をさらに参照して説明する。しかし、図3に示すアプローチを、他の配置を有するISP、画像処理段階およびラインバッファで実装することができる。
図3は、ラスタスキャン順序の繰り返しを用いて2つの連続スライス行210および220を生成するときに仮想ラインバッファ160にバッファされる例示的な全画像幅画素データ行を示す。第1のスキャンの間に、動作しているスライス(スライディング・バッファ164)は左から右に移動でき、K個の画素から成るスライスずつコンシューマ計算カーネルにより消費される。動作しているスライス(スライディング・バッファ164)がスライス行210の端に到達すると、WxK(またはWxL)個の出力画素が計算されていることとなり、(Wの幅を有する)スライス行210全体の計算が完了する。
スライス行210に対する計算が完了した後、同一のプロセスを第2のスライス行220に対して繰り返すことができる。図3に示すように、第1のスライス行210および第2のスライス行220の間には(S−1)個の重なり合う画像ラインがある。SxSは、スライス行210および220を生成するために使用されるラスタスキャンで使用されるステンシルサイズを表す。(S−1)個の重なり合う行に対する理由は、第1のスライス行210の最後の(S−1)個の画像ラインが第2のスライス行220内の画素(黄色の領域)の計算に対して再利用されることである。
図4は、1実装に従う、本明細書で説明したもののような仮想ラインバッファ160を含む画像処理段階を用いて画像信号処理に関連付けられた画素データの読取り動作と書込み動作を実装するためのアプローチを示す図である。図4に示す動作は例により、かつ、例示の目的のために与えられたものであり、他のアプローチが可能である。例えば、読書き動作の順序を幾つかの適切な順序で実施することができる。他の実装では、読取り動作および書込み動作を、図4を参照して説明したのと異なるサイズの画素データのブロックに実施することができる。さらに他の実装では、画素データの通信を他のアプローチを用いて行うことができる。
図4では、それぞれの動作が‘A’、‘B’、‘C’および‘D’で参照される矢印により指定され、これらを以下の議論では、それぞれ、動作A、動作B、動作Cおよび動作Dと称する。以下の議論の目的のため、図4で示したアプローチを、必要に応じて図1、2A、2Bおよび3をさらに参照して説明する。しかし、かかるアプローチを他の構成を有するISPと関連して使用できることは理解される。
図4の例示的なアプローチでは、動作Aは画素データを仮想バッファ160のスライディング・バッファ164に書き込むことに対応する。(例えば、J個の重なり合う垂直なSxS個のステンシルがコンシューマカーネルにより処理される)1実装では、プロデューサ計算カーネル410は、出力画素を、コンシューマ計算カーネル420に関連付けられたスライディング・バッファ164に、一度にJ個の画素から成る列で書き込むことができる。図4の動作Bは、コンシューマ計算カーネル420が処理(例えば、カーネルのステンシル動作の実施、対応するIPLの画像処理機能の適用、所与のデータ処理機能の実施等)のために画素データを仮想ラインバッファ160から読み出すことに対応する。
本例では、コンシューマ計算カーネル420は、一度にJ個の画素の列内の計算(処理)のために画素(画素データ)をスライディング・バッファ164から読み出すことができ、これは、コンシューマカーネル420の入力スライスの(フルサイズ・バッファ162の(S−1)個の行からの画素データと組み合わせた)最後のJ個の行となる。
図4では、動作Cは、画素データをコンシューマカーネル420の仮想ラインバッファ160のフルサイズ・バッファ162に書き込むことに対応する。このアプローチでは、フルサイズ・バッファ162を円形バッファとして実装することができる。かかる実装では、フルサイズ・バッファ162内の画素のグループに対するデータがコンシューマ計算カーネル420により消費される(読み出される)と、(フルサイズ・バッファ162内の)当該データを、当該スライディング・バッファの最後の(S−1)個の行166内の画素に対応する画素データで上書きすることができる。換言すれば、フルサイズ・バッファ162を、スライディング・バッファ164の最後の(S−1)個のライン166からの画素データで連続的に更新することができる。最後の(S−1)個のライン166に対する画素データはフルサイズ・バッファ162に書き込まれ、以前にバッファされた画素データを、それがコンシューマ計算カーネル420により読み出された(消費された)後に上書きする。
図4の動作Dは、コンシューマ計算カーネル420が画素データをフルサイズ・バッファ162から読み出すことに対応する。当該実装では、コンシューマ計算カーネル420は、例えば、スライディング・バッファ164から読み出されたJ個の画素と垂直に整列する画素に対する画素データの(S−1)個のラインを読み出すことができる。かかるアプローチでは、フルサイズ・バッファ162から読み出された画素データの最初の(S−1)個の行を、当該コンシューマ計算カーネルによりその入力スライスの最初の(S−1)個のラインとして(当該スライディング・バッファから読み出され、かつ、フルサイズ・バッファ162から読み出された(S−1)個のラインと垂直に整列する、J個のラインと組み合わせて)使用することができる。
図5は、1実装に従う画像処理段階に含まれうる別の仮想ラインバッファ164の動作を示す図である。図5に示すアプローチを用いると、1つより多くの水平ステンシルを一度に処理でき、画像信号データ処理のスループットが高まる。換言すれば、垂直にかつ水平に重なり合うステンシルを、図5に示したアプローチを用いて同時に処理することができる。
かかるアプローチでは、スライディング・バッファ164の幅を増大させて、所与の画像処理段階120に対する入力画素データストリームの画素のより広いスライスをバッファすることができる。画像処理スループットへの逆効果を防ぐために、かかるアプローチは、例えば、(例えば、水平および垂直に重なり合うステンシルに対して同一時間でより多くの画素を計算するために)図2に示したアプローチよりも多くのコンピューティングリソースを利用しうる。かかるアプローチは、画像信号処理スループットに逆効果を及ぼさないために、スライディング・バッファ164およびフルサイズ・バッファ162に対する所望の読み書き帯域幅の増大につながりうる。
図5では、単一の3x3(SxS)のステンシル168を参考までに示してある。本例では、スライディング・バッファ164を、(フルサイズ・バッファ162および関連付けられたIPL170内にバッファされた画素データの(S−1)個のラインに関連して)使用して、K個の垂直に重なり合うステンシルのJ個の水平に重なり合う列に対する画素を処理することができる。換言すれば、画像フレーム200に関連付けられた画像に対する画像データの(K+(S−1))x(J+(S−1))個の画素をスライスとして処理して、K個の画素から成る高さおよびJ個の画素から成る幅を有する出力スライスを生成することができる。本例では、K=6およびJ=2である。他の実装では、KおよびJは、異なる値を有することができる。例えば、幾つかの実装では、KおよびJの値は等しいことができる。かかるアプローチでは、KおよびJは、1より大きく、かつ、Hより小さいことができ、Sは2以上であることができ、WはSより大きいことができる。
図5に示すように、仮想ラインバッファ160は、当該実装では、Wの幅および(S−1)個のデータ画素ラインから成る高さを有するフルサイズ・バッファ162を含むことができる。図5の仮想ラインバッファ160はまた、SBの幅およびKの高さを有するスライディング・バッファ164を含むことができ、SBはS+(J−1)以上かつW未満である。本例では、J=2およびSが3に等しいので、SBは4以上である。
仮想ラインバッファ160は、図5に示すように、図1AのISP100の画像処理段階120に含まれうる。当該ISPの他の画像処理段階は、ラインバッファがKx(J+S−1)個のスライディング・バッファ164を用いて画像フレーム200の画像に対するKxJ個の出力画素スライスを生成することを含むことができる。他の実装では、ISP100の他の画像処理段階を、例えば、これらの画像処理段階がKxJ個の画素ではない出力画素データスライスを生成する本明細書で説明したような他の構成を有するラインバッファを用いて実装することができる。本明細書で説明した他のアプローチでは、図5の仮想ラインバッファ160を、画像フレーム200の画像に対する出力画素スライスをラスタスキャン順序で(左から右および上から下に)生成することによってスライス行を生成するために使用することができる。
図6は、1実装に従う、異なるステンシルサイズを使用する連続画像処理段階の仮想ラインバッファの動作を示す図である。上述のように、プロデューサ計算カーネルおよび関連付けられたコンシューマ計算カーネルのステンシルサイズは同一である必要はない。換言すれば、ステンシルサイズおよびの幅(および高さ)、プロデューサ計算カーネルによりコンシューマ計算カーネルのラインバッファに書き込まれた対応する画素出力スライス(図6のスライス164aおよび164b)、および当該コンシューマ計算カーネルによりそのラインバッファ(図6のスライス165)から読み出された入力画素スライスの幅(および高さ)は異なることができる。かかるケースの処理が、プロデューサ段階の出力画素スライスおよび関連付けられたコンシューマ段階の入力画素スライスが同一のサイズであるアプローチよりも複雑なラインバッファFIFO制御ロジックを必要としてもよい。かかる制御ロジックの詳細は特定の実装に依存する。
図6の例では、プロデューサ段階からの出力スライスは、コンシューマ段階の入力スライス165よりも高く、狭い。本例では、プロデューサ段階が、Kの高さおよびSまたはSBの幅を有する出力スライスを生成してもよい(例えば、SBはまた、プロデューサ段階に対するスライディング・バッファの幅であることができる)。コンシューマ段階は、Lの高さおよびTまたはTBの幅を有する入力スライスを読み出してもよい(例えば、TBはまた、コンシューマ段階に対するスライディング・バッファの幅であることができる)。かかるアプローチでは、コンシューマ段階は、出力スライス164aおよび164bの両方がプロデューサによりコンシューマのラインバッファに書き込まれた後にのみ、その入力スライス165の処理を開始することができる。
一般的な態様において、装置はW個の画素から成る幅およびH個の画素から成る高さを有する画像に対応する画素データに画像処理動作を実施して、SxS個の画素から成るK個の垂直に重なり合うステンシルを用いてK個の画素の垂直スライス内の出力画素データを生成するように構成された画像処理ロジック(IPL)であって、Kは1より大きくHより小さく、Sは2以上でありWはSより大きい、画像処理ロジック(IPL)を含むことができる。当該装置は、また、当該IPLに動作可能に接続されたラインバッファを含むことができ、当該ラインバッファは、当該IPLに対する画素データをバッファするように構成される。当該ラインバッファはWの幅および(S−1)の高さを有するフルサイズ・バッファを含むことができる。当該ラインバッファはまた、SBの幅およびKの高さを有するスライディング・バッファであって、SBはS以上でありWより小さい、スライディング・バッファを含むことができる。
例示的な実装は以下の特徴の1つまたは複数を含むことができる。例えば、IPLを、出力画素データの垂直スライスをラスタ順で生成するように構成することができる。当該IPLの画像処理機能はプログラム可能であることができる。当該IPLの画像処理機能を固定することができる。
当該IPLは第1のIPLであることができ、当該ラインバッファは第1のラインバッファであることができ、当該画像処理動作は第1の画像処理動作であることができ、当該出力画素データは第1の出力画素データであることができる。当該装置は、第2の画像処理動作を当該第1の出力画素データに実施して、TxT個の画素から成るL個の重なり合うステンシルを用いてL個の画素から成る垂直スライス内の第2の出力画素データを生成するように構成された第2のIPLであって、Lは1より大きくHより小さく、Tは2以上である、第2のIPLを含むことができる。当該装置は、当該第1のIPLと当該第2のIPLの間で動作可能に接続された第2のラインバッファであって、当該第2のラインバッファは、当該第2のIPLに対する当該第1の出力画素データをバッファするように構成される、第2のラインバッファを含むことができる。当該フルサイズ・バッファは第1のフルサイズ・バッファであることができ、当該スライディング・バッファは第1のスライディング・バッファであることができる。当該第2のラインバッファは、Wの幅および(T−1)の高さを有する第2のフルサイズ・バッファおよびTBの幅およびLの高さを有する第2のスライディング・バッファであって、TBはT以上でありWより小さい、第2のスライディング・バッファを含むことができる。LはKに等しいことができ、TはSに等しいことができる。LはKに等しくなくてもよく、TはSに等しくなくてもよい。
当該装置は、当該ラインバッファに動作可能に接続される画像データ・ソースを含むことができる。当該画像データ・ソースを、当該画像に対応する画素データを格納するように構成することができる。Wは、少なくともSより大きな規模であることができる。当該フルサイズ・バッファは円形データ・バッファを含むことができる。当該スライディング・バッファは先入れ先出し(FIFO)データ・バッファを含むことができる。
別の一般的な態様では、装置はW個の画素から成る幅およびH個の画素から成る高さを有する画像に対応する画素データに画像処理動作を実施して、SxS個の画素から成るKxJ個の重なり合うステンシルを用いて、K個の画素から成る高さおよびJ個の画素から成る幅を有するスライス内の出力画素データを生成するように構成された画像処理ロジック(IPL)を含むことができる。KおよびJは1より大きくHより小さく、Sは2以上でありWはSより大きい。当該装置はまた、当該IPLに動作可能に接続されたラインバッファを含むことができ、当該ラインバッファは、当該IPLに対する画素データをバッファするように構成される。当該ラインバッファは、Wの幅および(S−1)の高さを有するフルサイズ・バッファおよびSBの幅およびKの高さを有するスライディング・バッファであって、SBはS+(J−1)以上でありWより小さい、スライディング・バッファを含むことができる。
例示的な実装は以下の特徴の1つまたは複数を含むことができる。例えば、当該IPLは第1のIPLであることができ、当該ラインバッファは第1のラインバッファであることができ、当該画像処理動作は第1の画像処理動作であることができ、当該出力画素データは第1の出力画素データであることができる。当該装置は第2の画像処理動作を当該第1の出力画素データに実施して、第2の出力画素データスライスを生成するように構成された第2のIPLと、当該第1のIPLおよび当該第2のIPLの間で動作可能に接続された第2のラインバッファであって、当該第2のラインバッファは、当該第2のIPLに対する当該第1の出力画素データをバッファするように構成される、第2のラインバッファとを含むことができる。当該第2のIPLにより生成された第2の出力画素データスライスのスライスは、Kの高さおよびJの幅を有することができる。当該第2のIPLにより生成された第2の出力画素データスライスのスライスは、Kに等しくない高さとJに等しくない幅を有することができる。当該IPLを、当該出力画素データのスライスをラスタ順で生成するように構成することができる。
別の一般的な態様では、画像信号プロセッサ(ISP)はW個の画素から成る幅およびH個の画素から成る高さを有する画像に対応する画素データをバッファするように構成された画像データ・ソースを含むことができる。当該ISPはまた、W個の画素から成る幅およびH個の画素から成る高さを有する画像に対応する画素データに第1の画像処理動作を実施してSxS個の画素から成るK個の垂直に重なり合うステンシルを用いてK個の画素から成る垂直スライス内の第1の出力画素データを生成するように構成された第1の画像処理ロジック(IPL)を有する第1の画像処理段階であって、Kは1より大きくHより小さく、Sは2以上でありWはSより大きい、第1の画像処理段階を含むことができる。当該第1の画像処理段階はまた、当該第1のIPLに動作可能に接続された第1のラインバッファを含むことができる。当該第1のラインバッファは、当該第1のIPLに対する画素データをバッファするように構成される。当該第1のラインバッファはWの幅および(S−1)の高さを有する第1のフルサイズ・バッファとSBの幅およびKの高さを有する第1のスライディング・バッファであって、SBはS以上でありWより小さい、第1のスライディング・バッファとを含むことができる。当該ISPはさらに、第2の画像処理動作を当該第1の出力画素データに実施して、TxT個の画素から成るL個の重なり合うステンシルを用いてL個の画素の垂直スライス内の第2の出力画素データを生成するように構成された第2のIPLを有する第2の画像処理段階であって、Lは1より大きくHより小さく、Tは2以上である、第2の画像処理段階を含むことができる。当該第2の画像処理段階はまた、当該第1のIPLと当該第2のIPLの間で動作可能に接続された第2のラインバッファであって、当該第2のラインバッファは、当該第2のIPLに対する当該第1の出力画素データをバッファするように構成される、第2のラインバッファを含むことができる。
例示的な実装は以下の特徴の1つまたは複数を含むことができる。例えば、当該第2のラインバッファは、Wの幅および(T−1)の高さを有する第2のフルサイズ・バッファと、TBの幅およびLの高さを有する第2のスライディング・バッファであって、TBはT以上でありWより小さい、第2のスライディング・バッファとを含むことができる。TはSに等しいことができ、LはKに等しいことができる。
コンピューティング・デバイス700は、プロセッサ702、メモリ704、記憶デバイス706、メモリ704および高速拡張ポート710に接続する高速インタフェース708、および低速バス714および記憶デバイス706に接続する低速インタフェース712を備える。コンポーネント702、704、706、708、710、および712の各々は、様々なバスを用いて相互接続され、必要に応じて共通のマザー・ボードにまたは他の方式で搭載してもよい。プロセッサ702は、コンピューティング・デバイス700内での実行のための命令を処理することができる。当該命令は、高速インタフェース708に接続されたディスプレイ716のような外部入出力デバイス上のGUIに対するグラフィカル情報を表示するための、メモリ704に格納された命令または記憶デバイス706上に格納された命令を含む。他の実装では、必要に応じて、複数のメモリおよびメモリのタイプに沿って複数のプロセッサおよび/または複数のバスを使用してもよい。また、複数のコンピューティング・デバイス700は、(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する各デバイスに接続されてもよい。
メモリ704は情報をコンピューティング・デバイス700内に格納する。1実装では、メモリ704は揮発性メモリユニットまたはユニットである。別の実装では、メモリ704は不揮発性メモリユニットまたはユニットである。メモリ704がまた、磁気または光ディスクのような別の形態のコンピュータ可読媒体であってもよい。
記憶デバイス706は、コンピューティング・デバイス700に対する大容量記憶を提供することができる。1実装では、記憶デバイス706は、記憶領域ネットワークまたは他の構成内のデバイスを含めて、フロッピディスクデバイス、ハード・ディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の同様な固体メモリデバイス、またはデバイスのアレイのようなコンピュータ可読媒体であってもよいかまたはそれらを含んでもよい。コンピュータプログラム製品を情報キャリアで有形に具現化することができる。当該コンピュータプログラム製品はまた、実行されたとき、上述したもののような1つまたは複数の方法を実施する命令を含んでもよい。情報キャリアは、コンピュータまたは、メモリ704、記憶デバイス706、またはプロセッサ702上のメモリのような機械可読媒体である。
当該高速コントローラ708はコンピューティング・デバイス700に対する帯域幅集約的な動作を管理し、低速コントローラ712は低帯域幅−集約的な動作を管理する。かかる機能割当ては例示的なものにすぎない。1実装では、高速コントローラ708は(例えば、グラフィクスプロセッサまたはアクセラレータを通じて)メモリ704、ディスプレイ716に接続され、様々な拡張カード(図示せず)を受け付けうる高速拡張ポート710に接続される。当該実装では、低速コントローラ712は記憶デバイス706および低速拡張ポート714に接続される。当該低速拡張ポートは様々な通信ポート(例えば、USB、Bluetooth(登録商標)、Ethernet、無線Ethernet)を含んでもよく、キーボード、ポインティング・デバイス、スキャナのような1つまたは複数の入出力デバイスに接続されてもよく、または、例えば、ネットワークアダプタを通じてスイッチまたはルータのようなネットワーキング・デバイスに接続されてもよい。
コンピューティング・デバイス700を、本図に示すように幾つかの異なる形態で実装してもよい。例えば、コンピューティング・デバイス700を標準サーバ720として実装してもよく、またはかかるサーバのグループにおいて複数回実装してもよい。コンピューティング・デバイスをまた、ラックサーバシステム724の一部として実装してもよい。さらに、コンピューティング・デバイスをラップトップコンピュータ722のようなパーソナルコンピュータで実装してもよい。あるいは、コンピューティング・デバイス700からのコンポーネントを、デバイス750のようなモバイルデバイス(図示せず)内の他のコンポーネントと組み合わせてもよい。かかるデバイスの各々がコンピューティング・デバイス700、750の1つまたは複数を含んでもよく、システム全体を、互いに通信する複数のコンピューティング・デバイス700、750で構成してもよい。
コンピューティング・デバイス750はプロセッサ752、メモリ764、他のコンポーネントの中でもディスプレイ754、通信インタフェース766、およびトランシーバ768のような入出力デバイスを含む。デバイス750がまた、追加の記憶を提供するためのマイクロドライブまたは他のデバイスのような記憶デバイスを提供してもよい。コンポーネント750、752、764、754、766、および768の各々は、様々なバスを用いて相互接続され、当該コンポーネントの幾つかを必要に応じて共通のマザー・ボード上にまたは他の方式で搭載してもよい。
プロセッサ752は、メモリ764に格納された命令を含む、コンピューティング・デバイス750内の命令を実行することができる。当該プロセッサを、別々のおよび複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実装してもよい。当該プロセッサは、例えば、ユーザインタフェース、デバイス750により実行されるアプリケーション、およびデバイス750による無線通信の制御のようなデバイス750の他のコンポーネントの協調を提供してもよい。
プロセッサ752は、制御インタフェース758およびディスプレイ754に接続されたディスプレイインタフェース756を通じてユーザと通信してもよい。ディスプレイ754は、例えば、TFTLCD(Thin-Film-Transistor Liquid Crystal Display)またはOLED(Organic Light Emitting Diode)ディスプレイ、または他の適切なディスプレイ技術であってもよい。ディスプレイインタフェース756は、グラフィカルおよび他の情報をユーザに提供するためにディスプレイ754を駆動するための適切な回路を備えてもよい。制御インタフェース758は、コマンドをユーザから受信し、プロセッサ752に送信するためにそれらを変換してもよい。さらに、外部インタフェース762を、プロセッサ752と通信して提供し、デバイス750の他のデバイスとの近領域通信を可能としてもよい。外部インタフェース762は、例えば、幾つかの実装における有線通信を提供してもよく、または他の実装における無線通信に対して、複数のインタフェースをまた使用してもよい。
メモリ764は情報をコンピューティング・デバイス750内に格納する。メモリ764を、コンピュータ可読媒体または媒体、揮発性メモリユニットまたはユニット、または不揮発性メモリユニットまたはユニットのうち1つまたは複数として実装することができる。拡張メモリ774をまた、拡張インタフェース772を通じて提供しデバイス750に接続してもよい。拡張メモリ774、例えば、SIMM(Single In Line Memory Module)カードインタフェースを含んでもよい。かかる拡張メモリ774はデバイス750にさらなる記憶空間を提供してもよく、または、デバイス750に対するアプリケーションまたは他の情報を格納してもよい。特に、拡張メモリ774は、上述のプロセスを実行または補完するための命令を含んでもよく、セキュア情報を含んでもよい。したがって、例えば、拡張メモリ774をセキュリティモジュールとしてデバイス750に提供してもよく、デバイス750の安全な利用を可能とする命令でプログラムされてもよい。さらに、セキュアアプリケーションを、識別情報を当該SIMMカードにハック不能方式で配置するような、追加の情報に沿って、当該SIMMカードを介して提供してもよい。
後述するように、当該メモリは、例えば、フラッシュメモリおよび/またはNVRAMメモリを含んでもよい。1実装では、コンピュータプログラム製品は情報キャリアで有形に具現化される。当該コンピュータプログラム製品は、実行されたとき、上述したもののような1つまたは複数の方法を実施する命令を含む。情報キャリアは、例えば、トランシーバ768または外部インタフェース762上で受信されうる、メモリ764、拡張メモリ774、またはプロセッサ752上のメモリのようなコンピュータまたは機械可読媒体である。
デバイス750は、通信インタフェース766を通じて無線で通信してもよく、必要に応じてデジタル信号処理回路を含んでもよい。通信インタフェース766は、とりわけ、GSM(登録商標)音声呼、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSのような、様々なモードまたはプロトコルのもとで通信を提供してもよいかかる通信を、例えば、無線周波数トランシーバ768を通じて行ってもよい。さらに、短距離通信を、例えば、Bluetooth(登録商標)、WiFi、または他のかかるトランシーバ(図示せず)を用いて行ってもよい。さらに、GPS(Global Positioning System)受信器モジュール770は、追加のナビゲーション関連および位置関連の無線データをデバイス750に提供してもよく、必要に応じて、デバイス750で実行されているアプリケーションにより使用してもよい。
デバイス750はオーディオコーデック760を用いて可聴に通信してもよく、発話情報をユーザから受信し、それを使用可能なデジタル情報に変換してもよい。オーディオコーデック760は同様に、例えばスピーカを通じて、例えば、デバイス750のハンドセットで、ユーザに対して可聴音を生成してもよい。かかる音は音声電話呼からの音を含んでもよく、記録された音(例えば、音声メッセージ、音楽ファイル等)を含んでもよく、また、デバイス75上で動作しているアプリケーションにより生成された音を含んでもよい。
コンピューティング・デバイス750を、本図で示したように幾つかの異なる形態で実装してもよい。例えば、コンピューティング・デバイス750を携帯電話780として実装してもよい。コンピューティング・デバイス750をまた、スマートフォン782、携帯情報端末、または他の同様なモバイルデバイスの一部として実装してもよい。
本明細書で説明したシステムおよび技術の様々な実装を、デジタル電子回路、集積回路、特別に設計されたASIC(Application Specific Integrated Circuits)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現することができる。これらの様々な実装は、少なくとも1つのプログラム可能プロセッサを含むプログラム可能システムで実行可能なおよび/または解釈可能な1つまたは複数のコンピュータプログラムでの実装を含むことができる。当該システムは、特殊目的または汎用目的であってもよく、記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を送受信するために接続されてもよい。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られる)は、プログラム可能プロセッサに対する機械命令を含み、高レベルな手続き型および/またはオブジェクト指向プログラミング言語で実装でき、かつ/またはアセンブリ/機械言語で実装することができる。本明細書で使用する際、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令を機械可読信号として受信する機械可読媒体を含めて、機械命令および/またはデータをプログラム可能プロセッサに提供するために使用される任意のコンピュータプログラム製品、装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラム可能ロジックデバイス(PLD))を指す。「機械可読信号」という用語は機械命令および/またはデータをプログラム可能プロセッサに提供するために使用される任意の信号を指す。
ユーザとの対話を提供するために、本明細書で説明したシステムおよび技術を、情報を当該ユーザに表示するためのディスプレイデバイス(例えば、CRT(Cathode Ray Tube)またはLCD(Liquid Crystal Display)モニタ)および当該ユーザがそれにより入力を当該コンピュータに提供できるキーボードおよびポインティング・デバイス(例えば、マウスまたはトラックボール)とを有するコンピュータ上で実装することができる。他種のデバイスを、ユーザとの対話を提供するために使用することができる。例えば、当該ユーザに提供されるフィードバックは任意の形態のセンサ・フィードバック(例えば、視覚フィードバック、可聴フィードバック、または触覚フィードバック)であることができ、当該ユーザからの入力を音響、会話、または触覚入力を含む任意の形態で受信することができる。
本明細書で説明したシステムおよび技術を、(例えば、データサーバとして)バック・エンドコンポーネントを含むコンピューティング・システム、またはミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むコンピューティング・システム、または、フロント・エンドコンポーネント(例えば、ユーザが本明細書で説明したシステムおよび技術の実装と対話できるグラフィカルユーザインタフェースまたはウェブ・ブラウザを有するクライアントコンピュータ)、またはかかるバック・エンド、ミドルウェア、またはフロント・エンドコンポーネントの任意の組合せを含むコンピューティング・システムで実装することができる。当該システムの当該コンポーネントを、任意の形態または媒体のデジタルデータ通信(例えば、通信ネットワーク)により相互接続することができる。通信ネットワークの例はローカル領域ネットワーク(「LAN」)、広域ネットワーク(「WAN」)、およびインターネットを含む。
当該コンピューティング・システムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは一般に互いから離れており、一般に通信ネットワークを通じて対話する。クライアントおよびサーバの関係は、当該それぞれのコンピュータ上で実行され互いに対するクライアント−サーバ関係を有するコンピュータプログラムにより生ずる。
幾つかの実装を説明した。それにもかかわらず、様々な修正を、本発明の趣旨および範囲から逸脱せずに行ってもよいことは理解されよう。
さらに、図面に示したロジック・フローは、所望の結果を達成するために示した特定の順序も逐次的順序も必要としない。さらに、他のステップを提供してもよく、またはステップを当該説明したフローから削除してもよく、他のコンポーネントを当該説明したシステムに追加するかまたは当該説明したシステムから削除してもよい。したがって、他の実装は添付の特許請求の範囲内にある。
110 画像データ・ソース
120 画像処理段階
130 画像処理段階
140 画像処理段階
150 画像目標

Claims (17)

  1. スライディング・バッファおよび固定バッファを含む仮想ラインバッファであって、前記固定バッファが、順番に隣接的に処理されるスライス行の間で再利用される画像データを格納するように構成され、各スライス行が、画像データの複数の行を含む、仮想ラインバッファと、
    前記スライディング・バッファからの第1のデータと前記固定バッファからの第2のデータを使用して、画素のスライスの複数の部分的に重なり合うステンシルの各々においてカーネル機能を実施するように構成される画像処理ロジックであって、各ステンシルが画像データの2次元領域であり、画素の各スライスがスライス行の一部である、画像処理ロジックと
    を含む、プロセッサ。
  2. 前記プロセッサが、画素の各スライスに対して、
    前記仮想ラインバッファから前記画像処理ロジックのメモリに、前記スライディング・バッファからの第1のデータと前記固定バッファからの第2のデータを有する画素のスライスをロードする動作と、
    前記画像処理ロジックによって、画素の前記ロードされたスライスの複数の重なり合うステンシルの各々で前記カーネル機能を実施する動作と、
    前記固定バッファから前記第2のデータをロードした後に、前記スライディング・バッファからの前記第1のデータの一部を前記固定バッファに移動する動作と
    を含む動作を実施するように構成される、請求項1に記載のプロセッサ。
  3. 前記画像処理ロジックが、前記順番で次のスライス行を処理する間に、前記固定バッファに移動された前記第1のデータを再使用するように構成される、請求項1に記載のプロセッサ。
  4. 前記スライディング・バッファからロードされた前記第1のデータが、前記順番で隣接的に処理されるスライス行間で再使用されない、請求項1に記載のプロセッサ。
  5. 第1の次元における前記固定バッファのサイズが、前記ステンシルのサイズよりも小さく、前記第1の次元における前記スライディング・バッファのサイズが、前記ステンシルのサイズよりも大きく、第2の次元における前記固定バッファのサイズが、前記第2の次元における前記スライディング・バッファのサイズよりも大きい、請求項1に記載のプロセッサ。
  6. 前記固定バッファの前記サイズが、
    前記ステンシルの前記サイズ、引く、画素のスライスにおけるステンシル間の重なりの量
    で定義される、請求項5に記載のプロセッサ。
  7. (i)前記スライディング・バッファのサイズと(ii)第1の次元における前記固定バッファのサイズとの和が、前記第1の次元における2つの部分的に重なり合うステンシル領域のサイズよりも大きい、請求項5に記載のプロセッサ。
  8. 前記スライディング・バッファからの前記第1のデータの一部を前記固定バッファに移動する動作が、ステンシルスライスにおけるステンシル間の重なりの量と等しいデータの一部を移動する動作を含む、請求項1に記載のプロセッサ。
  9. コンシューマ・スライディング・バッファとコンシューマ・固定バッファとを含むコンシューマ・仮想ラインバッファをさらに含み、
    前記カーネル機能の出力の第1の部分を前記コンシューマ・スライディング・バッファに書き込み、前記カーネル機能の出力の第2の部分を前記コンシューマ・固定バッファに書き込むように構成される
    請求項1に記載のプロセッサ。
  10. プロセッサによって、順番に画像データの複数のスライス行を処理するステップを含み、各スライス行が画像データの複数の行を含み、前記処理するステップが、
    前記プロセッサによって、仮想ラインバッファから画像処理ロジックのメモリに画素のスライスをロードするステップであって、前記仮想ラインバッファがスライディング・バッファおよび固定バッファを含み、画素の前記スライスが、前記スライディング・バッファからの第1のデータと前記固定バッファからの第2のデータとを含み、画素の各スライスが、前記複数のスライス行うちのスライス行の一部である、ステップと、
    前記画像処理ロジックによって、前記スライディング・バッファからの第1のデータと前記固定バッファからの第2のデータとを使用して画素の前記ロードされたスライスの複数の部分的に重なり合うステンシルの各々でカーネル機能を実施するステップであって、各ステンシルが画像データの2次元領域である、ステップと、
    前記固定バッファからの前記第2のデータをロードした後に、前記スライディング・バッファからの第1のデータの一部を前記固定バッファに移動するステップと
    を反復的に含む、方法。
  11. 前記画像データの隣接するスライス行を処理するときに、前記固定バッファに移動した前記第1のデータの前記一部を再使用するステップをさらに含む、請求項10に記載の方法。
  12. 前記順番で次のスライス行を処理するときに、前記スライディング・バッファからロードされた前記第1のデータを破棄するステップをさらに含む、請求項10に記載の方法。
  13. 第1の次元における前記固定バッファのサイズが前記ステンシルのサイズよりも小さく、前記第1の次元における前記スライディング・バッファのサイズが前記ステンシルのサイズよりも大きく、第2の次元における前記固定バッファのサイズが前記第2の次元における前記スライディング・バッファのサイズよりも大きい、請求項10に記載の方法。
  14. 前記固定バッファの前記サイズが、
    前記ステンシルの前記サイズ、引く、画素のスライスにおけるステンシル間の重なりの量
    で定義される、請求項13に記載の方法。
  15. (i)前記スライディング・バッファのサイズと(ii)第1の次元における前記固定バッファのサイズとの和が、前記第1の次元における2つの部分的に重なり合うステンシル領域のサイズよりも大きい、請求項13に記載の方法。
  16. 前記カーネル機能の出力の一部を前記固定バッファに移動することが、ステンシルスライスにおけるステンシル間の重なりの量と等しいデータの一部を移動することを含む、請求項10に記載の方法。
  17. 前記プロセッサが、コンシューマ・スライディング・バッファとコンシューマ・固定バッファとを含むコンシューマ・仮想ラインバッファをさらに含み、
    前記カーネル機能の出力の第1の部分を前記コンシューマ・スライディング・バッファに書き込み、前記カーネル機能の出力の第2の部分を前記コンシューマ・固定バッファに書き込むステップをさらに含む、請求項10に記載の方法。
JP2018184366A 2015-01-22 2018-09-28 画像信号プロセッサのための仮想ラインバッファ Active JP6678218B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/603,354 US9749548B2 (en) 2015-01-22 2015-01-22 Virtual linebuffers for image signal processors
US14/603,354 2015-01-22

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017538645A Division JP6415734B2 (ja) 2015-01-22 2015-12-14 画像信号プロセッサのための仮想ラインバッファ

Publications (2)

Publication Number Publication Date
JP2019023900A true JP2019023900A (ja) 2019-02-14
JP6678218B2 JP6678218B2 (ja) 2020-04-08

Family

ID=55229810

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017538645A Active JP6415734B2 (ja) 2015-01-22 2015-12-14 画像信号プロセッサのための仮想ラインバッファ
JP2018184366A Active JP6678218B2 (ja) 2015-01-22 2018-09-28 画像信号プロセッサのための仮想ラインバッファ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017538645A Active JP6415734B2 (ja) 2015-01-22 2015-12-14 画像信号プロセッサのための仮想ラインバッファ

Country Status (8)

Country Link
US (4) US9749548B2 (ja)
EP (2) EP3667607B1 (ja)
JP (2) JP6415734B2 (ja)
KR (1) KR101972250B1 (ja)
CN (2) CN112801852B (ja)
DE (1) DE112015006042T5 (ja)
GB (2) GB2571461B (ja)
WO (1) WO2016118251A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
US10313641B2 (en) 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
US9830150B2 (en) 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10380969B2 (en) 2016-02-28 2019-08-13 Google Llc Macro I/O unit for image processor
US20180005346A1 (en) 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10474464B2 (en) 2017-07-05 2019-11-12 Deep Vision, Inc. Deep vision processor
CN108198125B (zh) * 2017-12-29 2021-10-08 深圳云天励飞技术有限公司 一种图像处理方法及装置
US11513847B2 (en) 2020-03-24 2022-11-29 Deep Vision Inc. System and method for queuing commands in a deep learning processor
KR20210150704A (ko) 2020-06-04 2021-12-13 삼성전자주식회사 라인 인터리빙 컨트롤러 및 이를 포함하는 이미지 신호 프로세서
US20220046257A1 (en) 2020-08-05 2022-02-10 Facebook, Inc. Quality metrics accelerator with inline scalers
CN113709494B (zh) * 2021-06-23 2024-04-09 珠海全志科技股份有限公司 用于超分重建的图像解压缩方法及装置
CN114005395B (zh) * 2021-10-11 2024-07-26 珠海亿智电子科技有限公司 图像实时显示容错系统、方法及芯片

Family Cites Families (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1579918A (en) * 1922-01-30 1926-04-06 Goodrich Co B F Apparatus for gauging associated elements
US4445177A (en) 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
US4835712A (en) 1986-04-14 1989-05-30 Pixar Methods and apparatus for imaging volume data with shading
JP2554255B2 (ja) * 1987-03-23 1996-11-13 旭光学工業株式会社 フイルタリング装置
DE3851005T2 (de) 1987-06-01 1995-04-20 Applied Intelligent Syst Inc Paralleles Nachbarverarbeitungssystem und -Verfahren.
US4935894A (en) 1987-08-31 1990-06-19 Motorola, Inc. Multi-processor, multi-bus system with bus interface comprising FIFO register stocks for receiving and transmitting data and control information
FR2634084A1 (fr) 1988-07-08 1990-01-12 Labo Electronique Physique Circuit integre et dispositif de traitement d'images
US5253308A (en) 1989-06-21 1993-10-12 Amber Engineering, Inc. Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing
WO1994009595A1 (en) 1991-09-20 1994-04-28 Shaw Venson M Method and apparatus including system architecture for multimedia communications
JP3482660B2 (ja) 1993-09-08 2003-12-22 ソニー株式会社 画像データ処理装置および画像データ処理方法
US5612693A (en) 1994-12-14 1997-03-18 International Business Machines Corporation Sliding window data compression using a toroidal bit shift register
EP0875031B1 (de) 1996-01-15 2001-06-20 Infineon Technologies AG Prozessor zur bildverarbeitung
GB2318954B (en) 1996-10-29 2001-05-23 Daewoo Electronics Co Ltd Reed-solomon decoder for use in advanced television
US6031573A (en) * 1996-10-31 2000-02-29 Sensormatic Electronics Corporation Intelligent video information management system performing multiple functions in parallel
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
JP3593439B2 (ja) * 1997-06-09 2004-11-24 株式会社日立製作所 画像処理装置
US6366289B1 (en) 1998-07-17 2002-04-02 Microsoft Corporation Method and system for managing a display image in compressed and uncompressed blocks
US6587158B1 (en) * 1998-07-23 2003-07-01 Dvdo, Inc. Method and apparatus for reducing on-chip memory in vertical video processing
US7010177B1 (en) 1998-08-27 2006-03-07 Intel Corporation Portability of digital images
JP2000251065A (ja) 1999-03-02 2000-09-14 Fuji Xerox Co Ltd 画像処理装置
US6757019B1 (en) 1999-03-13 2004-06-29 The Board Of Trustees Of The Leland Stanford Junior University Low-power parallel processor and imager having peripheral control circuitry
US6970196B1 (en) 1999-03-16 2005-11-29 Hamamatsu Photonics K.K. High-speed vision sensor with image processing function
JP3922859B2 (ja) 1999-12-28 2007-05-30 株式会社リコー 画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6745319B1 (en) 2000-02-18 2004-06-01 Texas Instruments Incorporated Microprocessor with instructions for shuffling and dealing data
US6728862B1 (en) 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
US6728722B1 (en) 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
US6986025B2 (en) * 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
US7286717B2 (en) 2001-10-31 2007-10-23 Ricoh Company, Ltd. Image data processing device processing a plurality of series of data items simultaneously in parallel
JP4146654B2 (ja) 2002-02-28 2008-09-10 株式会社リコー 画像処理回路、複合画像処理回路、および、画像形成装置
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
AU2003221680A1 (en) 2002-04-09 2003-10-27 The Research Foundation Of State University Of New York Multiplier-based processor-in-memory architectures for image and graphics processing
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
GB2395299B (en) 2002-09-17 2006-06-21 Micron Technology Inc Control of processing elements in parallel processors
GB2398446B (en) 2003-02-12 2006-06-07 Snell & Wilcox Ltd Image processing
US20060044576A1 (en) 2004-07-30 2006-03-02 Kabushiki Kaisha Toshiba Apparatus for image processing
US7667764B2 (en) 2004-06-04 2010-02-23 Konica Minolta Holdings, Inc. Image sensing apparatus
JP4219887B2 (ja) 2004-12-28 2009-02-04 富士通マイクロエレクトロニクス株式会社 画像処理装置及び画像処理方法
CN100527099C (zh) * 2005-02-15 2009-08-12 皇家飞利浦电子股份有限公司 用于提高数据处理设备的存储单元的性能的装置和方法
WO2006100625A1 (en) * 2005-03-21 2006-09-28 Koninklijke Philips Electronics N.V. Processing a data array with a meandering scanning order using a circular buffer memory
CN1319276C (zh) * 2005-04-19 2007-05-30 展讯通信(上海)有限公司 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法
ATE504043T1 (de) 2005-04-28 2011-04-15 Univ Edinburgh Umkonfigurierbares anweisungs-zellen-array
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
JP2007034887A (ja) 2005-07-29 2007-02-08 Matsushita Electric Ind Co Ltd ハイレベル合成コンパイラ用のシフトレジスタファイルを自動生成するための方法および装置
JP2007067917A (ja) 2005-08-31 2007-03-15 Matsushita Electric Ind Co Ltd 画像データ処理装置
US7602974B2 (en) 2005-10-21 2009-10-13 Mobilic Technology (Cayman) Corp. Universal fixed-pixel-size ISP scheme
FR2895103B1 (fr) 2005-12-19 2008-02-22 Dxo Labs Sa Procede et systeme de traitement de donnees numeriques
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US7834873B2 (en) 2006-08-25 2010-11-16 Intel Corporation Display processing line buffers incorporating pipeline overlap
US7737986B2 (en) * 2006-08-29 2010-06-15 Texas Instruments Incorporated Methods and systems for tiling video or still image data
US20080111823A1 (en) 2006-11-13 2008-05-15 Faraday Technology Corp. Graphics processing system
EP1927949A1 (en) 2006-12-01 2008-06-04 Thomson Licensing Array of processing elements with local registers
US8321849B2 (en) 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
JP2008192038A (ja) * 2007-02-07 2008-08-21 Mitsubishi Electric Corp 画像前処理装置
US20080244222A1 (en) 2007-03-30 2008-10-02 Intel Corporation Many-core processing using virtual processors
US8068114B2 (en) 2007-04-30 2011-11-29 Advanced Micro Devices, Inc. Mechanism for granting controlled access to a shared resource
JP4389976B2 (ja) 2007-06-29 2009-12-24 ブラザー工業株式会社 画像処理装置および画像処理プログラム
JP2009021459A (ja) 2007-07-13 2009-01-29 Fuji Xerox Co Ltd 面発光型半導体レーザの駆動方法および光伝送モジュール
JP4844853B2 (ja) 2007-09-05 2011-12-28 国立大学法人東北大学 固体撮像素子及びその駆動方法
JP4917561B2 (ja) 2008-03-18 2012-04-18 株式会社リコー 画像処理装置
CN102047241B (zh) 2008-05-30 2014-03-12 先进微装置公司 本地与全局数据共享
JP4999791B2 (ja) 2008-06-30 2012-08-15 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
US8456480B2 (en) 2009-01-14 2013-06-04 Calos Fund Limited Liability Company Method for chaining image-processing functions on a SIMD processor
US8332794B2 (en) 2009-01-22 2012-12-11 Taiwan Semiconductor Manufacturing Company, Ltd. Circuits and methods for programmable transistor array
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
US8626810B2 (en) * 2009-05-15 2014-01-07 Texas Instruments Incorporated Method and system for finite impulse response (FIR) digital filtering
US20110055495A1 (en) 2009-08-28 2011-03-03 Qualcomm Incorporated Memory Controller Page Management Devices, Systems, and Methods
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
US8436857B2 (en) 2009-10-20 2013-05-07 Oracle America, Inc. System and method for applying level of detail schemes
JP5185242B2 (ja) * 2009-12-04 2013-04-17 株式会社東芝 コンパイル装置
US8595428B2 (en) 2009-12-22 2013-11-26 Intel Corporation Memory controller functionalities to support data swizzling
US8749667B2 (en) 2010-08-02 2014-06-10 Texas Instruments Incorporated System and method for maintaining maximum input rate while up-scaling an image vertically
US8508612B2 (en) 2010-09-30 2013-08-13 Apple Inc. Image signal processor line buffer configuration for processing ram image data
US8797323B2 (en) 2011-01-18 2014-08-05 Intel Corporation Shadowing dynamic volumetric media
CN103339604B (zh) 2011-01-31 2016-10-26 株式会社索思未来 程序生成装置、程序生成方法、处理器装置以及多处理器系统
US9092267B2 (en) 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
GB2506037B (en) 2011-06-22 2017-06-21 Hewlett Packard Development Co Lp Processing image data strips in columnar regions
US20130027416A1 (en) 2011-07-25 2013-01-31 Karthikeyan Vaithianathan Gather method and apparatus for media processing accelerators
CN102420931B (zh) * 2011-07-26 2013-08-21 西安费斯达自动化工程有限公司 一种基于fpga的全帧率图像处理方法
JP5742651B2 (ja) 2011-10-15 2015-07-01 コニカミノルタ株式会社 画像処理装置、連携方法および連携プログラム
JP5746100B2 (ja) 2011-12-27 2015-07-08 京セラドキュメントソリューションズ株式会社 画像形成装置
US8823736B2 (en) 2012-01-20 2014-09-02 Intel Corporation Graphics tiling architecture with bounding volume hierarchies
US10244246B2 (en) 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
US9235769B2 (en) 2012-03-15 2016-01-12 Herta Security, S.L. Parallel object detection method for heterogeneous multithreaded microarchitectures
JP2013218654A (ja) * 2012-03-16 2013-10-24 Panasonic Corp 画像処理装置
TWI520598B (zh) 2012-05-23 2016-02-01 晨星半導體股份有限公司 影像處理裝置與影像處理方法
US8953882B2 (en) 2012-05-31 2015-02-10 Apple Inc. Systems and methods for determining noise statistics of image data
US20140019486A1 (en) 2012-07-13 2014-01-16 Amitava Majumdar Logic Content Processing for Hardware Acceleration of Multi-Pattern Search
US9232139B2 (en) 2012-07-24 2016-01-05 Apple Inc. Image stabilization using striped output transformation unit
CN102802038A (zh) * 2012-07-25 2012-11-28 华中科技大学 一种基于并行比特流处理器的二值图像模板匹配系统
US9378181B2 (en) 2012-11-09 2016-06-28 Intel Corporation Scalable computing array
US9058673B2 (en) 2013-03-15 2015-06-16 Oracle International Corporation Image mosaicking using a virtual grid
US8954992B2 (en) 2013-03-15 2015-02-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Distributed and scaled-out network switch and packet processing
US9477999B2 (en) 2013-09-20 2016-10-25 The Board Of Trustees Of The Leland Stanford Junior University Low power programmable image processor
CN104240181B (zh) * 2014-08-29 2017-09-15 中国航天科工集团第三研究院第八三五七研究所 一种垂直滤波器的图像垂直尺寸缩小方法
US9818166B2 (en) 2015-01-16 2017-11-14 Intel Corporation Graph-based application programming interface architectures with producer/consumer nodes for enhanced image processing parallelism
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor

Also Published As

Publication number Publication date
US20160219225A1 (en) 2016-07-28
DE112015006042T5 (de) 2017-11-09
EP3248171A1 (en) 2017-11-29
WO2016118251A1 (en) 2016-07-28
EP3667607B1 (en) 2021-03-31
EP3667607A1 (en) 2020-06-17
CN107430759A (zh) 2017-12-01
US10277833B2 (en) 2019-04-30
JP2018512633A (ja) 2018-05-17
US20190238758A1 (en) 2019-08-01
US10516833B2 (en) 2019-12-24
GB201905577D0 (en) 2019-06-05
GB2551922B (en) 2019-10-16
KR101972250B1 (ko) 2019-04-24
US20200120287A1 (en) 2020-04-16
GB2551922A (en) 2018-01-03
KR20170106434A (ko) 2017-09-20
US9749548B2 (en) 2017-08-29
GB2571461A (en) 2019-08-28
JP6678218B2 (ja) 2020-04-08
US10791284B2 (en) 2020-09-29
GB201713255D0 (en) 2017-10-04
US20170206627A1 (en) 2017-07-20
GB2571461B (en) 2019-12-18
CN112801852A (zh) 2021-05-14
CN112801852B (zh) 2022-05-31
EP3248171B1 (en) 2020-02-05
CN107430759B (zh) 2021-02-09
JP6415734B2 (ja) 2018-10-31

Similar Documents

Publication Publication Date Title
JP6415734B2 (ja) 画像信号プロセッサのための仮想ラインバッファ
US11222240B2 (en) Data processing method and apparatus for convolutional neural network
JP2019208243A (ja) 映像安定化
CN111602387B (zh) 彩色成像系统
JP2011100453A (ja) イメージプロセッサ及びそれを含む電子装置及びイメージプロセッシング方法
US10362267B2 (en) Image processing apparatus and electronic device including the same
US11055820B2 (en) Methods, apparatus and processor for producing a higher resolution frame
KR102247741B1 (ko) 이미지 프로세서, 상기 이미지 프로세서의 동작 방법, 및 상기 이미지 프로세서를 포함하는 애플리케이션 프로세서
US11663453B2 (en) Information processing apparatus and memory control method
US20170094190A1 (en) Processing display of digital camera readout with minimal latency
US10565674B2 (en) Graphics processing device and graphics processing method
US20150213787A1 (en) Display controller and display system including the same
US20240257314A1 (en) Methods of processing images using future frames and image processing devices performing the same
CN114785968A (zh) 视频信号处理电路与视频信号处理方法
JP2021108024A (ja) 画像処理装置および画像処理方法
KR20220161108A (ko) 스트림 재처리 시스템과 그 동작 방법
US7034840B2 (en) Method for an image reducing processing circuit
CN116917900A (zh) 在像素到像素神经网络中处理数据
JP2006276642A (ja) 誤差拡散回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181003

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190930

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20191218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191223

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20191224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200316

R150 Certificate of patent or registration of utility model

Ref document number: 6678218

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250