(57)【要約】    【課題】複数のデータを同時処理するプロセッサエレメント数が少なくても、２次元フィルタなど周辺画素を参照する画像処理を、ハードウェア構成を複雑にすることなく、効率よく処理する。    【解決手段】リングバッファ６０を設けて冗長画素データを含む画素データを順次にレジスタ群１２に供給し、ＰＥアレイ１４の各アレイが対応するレジスタからデータを受け取り参照画素を利用した演算を行う。各ＰＥの演算では、処理のつなぎ目でも、冗長画素データを利用して有効な処理を行え、無効化を抑制できる。【選択図】図１
2008158836.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサエレメントの各々に１の対象画素データを割り当て当該プロセッサエレメントの各々が当該対象画素データの隣接画素データを参照して当該対象画素データを処理する画像処理装置において、
上記複数のプロセッサエレメントの各々に対応する位置の一連の画素データと、当該一連の画素データに対してその並び方向に隣接する位置の画素データとからなる一塊の画素データを、所定の個数、当該画素データの並び方向と直交する方向に一塊ずつ読み出し可能に保持するリングバッファと、
上記リングバッファから出力される上記一塊の画素データを保持するレジスタ群とを有し、
上記レジスタ群に保持されている画素データを上記複数のプロセッサエレメントに選択的に供給することを特徴とする画像処理装置。
【請求項２】
上記リングバッファを２つ設け、上記所定の個数の上記一塊のデータの読み出しを、２つの上記リングバッファを用いて交互に実行する請求項１記載の画像処理装置。
【請求項３】
ページバッファまたはバンドバッファから画像データの画像データを一時記憶する補助的なリングバッファを設け、上記リングバッファは上記所定の個数の上記一塊のデータを上記補助的なリングバッファから取得する請求項１記載の画像処理装置。
【請求項４】
上記並び方向に隣接する位置の画素データの個数は、上記並び方向に位置する参照対象の画素データの個数と同じである請求項１〜３のいずれかに記載の画像処理装置。
【請求項５】
マルチプレクサ群を設け、当該マルチプレクサ群を用いて上記レジスタ群に保持されている画素データを上記複数のプロセッサエレメントに選択的に供給する請求項１〜４のいずれかに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  ｓｔｒｅａｍ）方式で画像データを処理する画像処理装置に関し、とくに、複数のデータを同時処理するプロセッサエレメント（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ）数が少なくても、２次元フィルタなど周辺画素を参照する画像処理を、効率よく処理できるようにしたものである。
【背景技術】
【０００２】
周辺画素を参照する二次元フィルタ等の画像処理をＳＩＭＤ方式で実行する場合、プロセッサエレメント（以下、単にＰＥともいう）のアレイの両側の、参照領域（ウインドウ）の大きさに応じた所定数のＰＥでは、参照画素の一部が利用できなくなり、処理結果が無効となる。例えば、７×７のウインドウの場合、前後３つずつのＰＥで参照画素の参照ができなくなる。ＰＥの数が少ないほど、１ライン分の画素をより多くの回数で処理しなくてはならないので、その分、無効な処理結果が増え、処理のスループットが減少する。
【０００３】
特許文献１は、ＰＥアレイに対応したレジスタファイルに処理ライン上の画素データを割り当てる際に、その端で折り返して順逆に並べることにより、端領域のＰＥも、折り返しがある部分では、隣接画素データを参照可能になり、処理結果の無効化を抑制できる。ただし、この場合、レジスタファイルが大きくなってしまう。
【０００４】
なお、上述の従来技術やその問題点は、この発明の背景の一部を説明するためにのみ説明している。この発明は上述の従来技術や問題点に限定されるものではない点に留意されたい。
【特許文献１】特開２００４−２０６３８７公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この発明は、以上の事情を考慮してなされたものであり、複数のデータを同時処理するプロセッサエレメント数が少なくても、２次元フィルタなど周辺画素を参照する画像処理を、効率よく処理できる画像処理装置を提供することを目的としている。
【課題を解決するための手段】
【０００６】
この発明によれば、上述の目的を達成するために、特許請求の範囲に記載のとおりの構成を採用している。ここでは、発明を詳細に説明するのに先だって、特許請求の範囲の記載について補充的に説明を行なっておく。
【０００７】
すなわち、この発明の一側面によれば、上述の目的を達成するために、複数のプロセッサエレメントの各々に１の対象画素データを割り当て当該プロセッサエレメントの各々が当該対象画素データの隣接画素データを参照して当該対象画素データを処理する画像処理装置に：上記複数のプロセッサエレメントの各々に対応する位置の一連の画素データと、当該一連の画素データに対してその並び方向に隣接する位置の画素データとからなる一塊の画素データを、所定の個数、当該画素データの並び方向と直交する方向に一塊ずつ読み出し可能に保持するリングバッファと；上記リングバッファから出力される上記一塊の画素データを保持するレジスタ群とを設け、上記レジスタ群に保持されている画素データを上記複数のプロセッサエレメントに選択的に供給するようにしている。
【０００８】
この構成においては、プロセッサアレイの端部領域における処理結果の無効化を抑制でき、処理効率を増大できる。しかも、特許文献１のように、二重、三重にレジスタファイルを設ける必要がないのでハードウェア構成を簡素化できる。
【０００９】
また、この構成において、上記リングバッファを２つ設け、上記所定の個数の上記一塊のデータの読み出しを、２つの上記リングバッファを用いて交互に実行するようにしてもよい。このようにすると、一方の読み出し時に他方の書き込みを行うことができ、１のリングバッファにおいて書き込み・読み出しを同時に行う必要がなくなり、リングバッファの書き込み読み出し制御を簡素化できる。
【００１０】
また、ページバッファまたはバンドバッファから画像データの画像データを一時記憶する補助的なリングバッファを設け、上記リングバッファは上記所定の個数の上記一塊のデータを上記補助的なリングバッファから取得するようにしてもよい。
【００１１】
また、上記並び方向に隣接する位置の画素データの個数は、典型的には、上記並び方向に位置する参照対象の画素データの個数と同じである。もちろん、冗長な画素データをさらに含ませても良いし、隣接する位置の画素データの個数を、並び方向に位置する参照対象の画素データの個数より少なくしても良い。この場合、一部で処理結果が無効になるが、それでも従来の処理結果の無効化を一部抑制できる。
【００１２】
また、マルチプレクサ群を設け、当該マルチプレクサ群を用いて上記レジスタ群に保持されている画素データを上記複数のプロセッサエレメントに選択的に供給するようにしてもよい。
【００１３】
なお、この発明は装置またはシステムとして実現できるのみでなく、方法としても実現可能である。また、そのような発明の一部をソフトウェアとして構成することができることはもちろんである。またそのようなソフトウェアをコンピュータに実行させるために用いるソフトウェア製品もこの発明の技術的な範囲に含まれることも当然である。
【００１４】
この発明の上述の側面および他の側面は特許請求の範囲に記載され以下実施例を用いて詳述される。
【発明の効果】
【００１５】
この発明によれば、複数のデータを同時処理するプロセッサエレメント数が少なくても、２次元フィルタなど周辺画素を参照する画像処理を、ハードウェア構成を複雑にすることなく、効率よく処理できる画像処理装置を実現できる。
【発明を実施するための最良の形態】
【００１６】
以下、この発明の実施例について説明する。
【実施例１】
【００１７】
図１は、この発明の適用した原理的な実施例１の画像処理装置１００を全体として示しており、図１において、画像処理装置１００は、ＳＩＭＤ処理装置１０、汎用プロセッサ２０、外部メモリ３０等を外部バス４０に接続して構成されている。
【００１８】
汎用プロセッサ２０は、画像処理全体の制御を司るものであり、その処理の一環としてＳＩＭＤ処理装置１０にＳＩＭＤ命令をディスパッチし、処理結果を受け取る。外部メモリ３０は、プログラム領域およびデータ領域を保持し、また、ページメモリ、バンドバッファ等のメモリを構成するものである。ＳＩＭＤ命令の処理対象は外部メモリ３０内のページメモリまたはバンドバッファ内のデータである。外部メモリ３０は１つのメモリとして示されているが、これに限定されず、種々の態様で実現可能であり、バンドバッファを専用メモリで構成しても良い。
【００１９】
ＳＩＭＤ処理装置１０は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ  ｓｔｒｅａｍ）方式で画像データを処理する装置であり、例えば、拡張カードとして実装される。ＳＩＭＤ処理装置１０は、内部メモリ１１、レジスタ群１２、マルチプレクサ群１３、ＰＥアレイ１４、制御部１５等を含んで構成されている。制御部１５は、典型的には、通常のＳＩＳＤのＣＰＵであり、内部メモリ１１に記憶されているプログラムに基づいてＳＩＭＤ処理装置１０全体の制御を行う。また、内部メモリ１１は、プログラム領域、データ領域を有し、データ領域に種々のデータを保持し、さらに、後述するリングバッファ６０、７０を構成する。ＰＥアレイ１４は、複数個、例えば、１６個のプロセッサエレメントＰＥからなる。レジスタ群１２は、ＰＥアレイ１４の各プロセッサエレメントで実行される演算のオペランドを保持するものである。マルチプレクサ群１３は、演算の内容に応じてレジスタ群１２のうちの所望のレジスタのデータを対応するＰＥに供給するものである。
【００２０】
図２は、この実施例の原理的な動作例を示している。この例では１６個のＰＥでＰＥアレイ１４を構成しているものとして説明する。この図において、Ｎライン分の画素データがバンドバッファ３０Ａに保持されている。参照画素の個数だけ各ラインのデータの両サイドにダミーデータ（梨子地で示す）が配されている。また、１６画素ごとのつなぎ目に両端に参照画素の個数だけのオーバラップ領域を設定する。画像処理が例えば対象画素を中心にして（２ｎ＋１）×（２ｎ＋１）（例えば７×７）のウインドウを用いる場合には、このダミーデータおよびオーバラップの長さは典型的にはｎビットである。もちろんウインドウの形状は矩形に限らず、また左右、上下に非対称であってもよい。なお、このダミーデータは当初からバンドバッファに含ませても良いし、後の段階で付加しても良い。バンドバッファ３０Ａは典型的には外部メモリ３０の一部であり、他の専用メモリで構成しても良い。ダミーデータを付加することにより、画像の端の部分でも形式的には有効に演算が可能になるが、この処理結果はダミーデータに依存するものであり、無効として扱っても良い。
【００２１】
この例では、Ｎ（縦）×１６＋２ｎ（横）の画素データ（以下ではカラムデータとも呼ぶ）を例えばバンドバッファ３０Ａから読み出してリングバッファ６０に書き込み、１６＋２ｎの画素データを順次にカラム方向（縦方向）に矢印ａに示すように読み出していく。読み出しと同時に次回のカラムデータを書き込んでいく。
【００２２】
レジスタ群１２は、例えば、（１６＋２ｍ）×（１＋２ｍ）の個数のレジスタを有し（ｍ＞＝ｎ）、（１６＋２ｎ）×（１＋２ｎ）の画素データを保持し（図３（Ａ））、各ＰＥに当該ＰＥのウインドウに対応する（１＋２ｎ）×（１＋２ｎ）例えば７×７の画素データを供給する。１回目の読み出しがある程度進んだ状態では、図の一番左のＰＥには、破線の矩形ｂで示す領域の画素データをマルチプレクサ群１３（図１）を介して受け取り（図３（Ｂ）、より右側のＰＥは、ずれた分だけ当該矩形ｂをシフトされた矩形の領域の画素データをマルチプレクサ群１３を介して受け取り（図３（Ｃ））、ｎ×ｎの画素データを利用した画像処理、例えば二次元フィルタ処理を行う。なお、処理結果は図示しない出力バッファ等の一時保持されて、まとめて汎用プロセッサ２０または外部メモリ３０に返される。
【００２３】
カラムデータ（Ｎ×１６＋２ｎ）ごとにリングバッファ６０を巡回させながら各ＰＥでの演算処理を実行し、すべてのバンドバッファ３０Ａ内の画素データの処理を終了するまで、その処理を繰り返す。
【００２４】
この実施例においては、リングバッファ６０を設けて所望の画素データを順次にレジスタ群１２に供給し、参照画素を利用した演算を簡易に行うことができる。冗長分の画素データを余分に保持する若干のレジスタを必要とするだけであり、ハードウェア構成は簡素である。また、冗長分の画素データに対して新たにレジスタを増加させるのでなく、余っているレジスタを援用することも可能である。リングバッファ６０は制御部１５（ＣＰＵ）上でプログラム（配列や読み出しポインタ、書き込みポインタ等）で実装できる。
【実施例２】
【００２５】
図４は、この発明の実施例２を説明するものであり、この実施例においては、図４に示すように、２つのリングバッファ６０１、６０２を交互に用いている。この実施例では、例えば、１回目のカラムデータの処理でリングバッファ６０１を用い、２回目のカラムデータの処理でリングバッファ６０２を用いる。１回目のカラムデータを処理するためにリングバッファ６０１から読み出しを行っているときに、リングバッファ６０２に２回目のカラムデータを書き込むことができ、１つのリングバッファで読み出し書き込みを相前後して行う必要がなく、制御が容易になる。
【実施例３】
【００２６】
図５は、この発明の実施例３を説明するものであり、この実施例においては、図５に示すように、リングバッファを二重に用いる。すなわち、バンドバッファ（Ｎライン）の一部の画素データ（Ｍ×Ｎ画素）を前段のリングバッファ７０に記憶する。ただしＭ＞＝１６＋２ｎである。前段のリングバッファ７０から１回目のカラムデータをリングバッファ６０に供給し、１回目のカラムデータを処理する。リングバッファ７０は繰り返し利用され、リングバッファ６０も繰り返し利用される。この実施例では、ローカルな内部メモリ１１にはバンドバッファやページメモリのデータではなく、リングバッファ７０およびリングバッファ６０の全体の画像データの一部であるので、メモリのコストを削減できる。
【００２７】
図６は、この実施例の動作を７×７の空間フィルタを例にして説明するものである。図６においては、リングバッファ７０（第１のバッファ）で図の水平方向に循環させてデータの読み書きを行ない、１６画素＋オーバラップ（３＋３画素）のデータ幅のカラムデータがリングバッファ７０に過加えられたら、このカラムデータをリングバッファ６０（第１のバッファ）に書き込み、その後、垂直方向に循環させて、１６画素＋オーバラップ（３＋３画素）のデータを順次にレジスタ群１２に書き込んでいく。各ＰＥは７×７の画素データを用いて空間フィルタ処理を行う。
【００２８】
なお、この発明は特許請求の範囲の記載に基づいて決定されるものであり、実施例の具体的な構成、課題、および効果には限定されない。この発明は上述の実施例に限定されるものではなくその趣旨を逸脱しない範囲で種々変更が可能である。
【図面の簡単な説明】
【００２９】
【図１】この発明の実施例１の構成を説明する図である。
【図２】上述実施例１の動作を説明する図である。
【図３】上述実施例１の動作を説明する図である。
【図４】この発明の実施例２を説明する図である。
【図５】この発明の実施例３を説明する図である。
【図６】上述実施例３の動作例を説明する図である。
【符号の説明】
【００３０】
１０    ＳＩＭＤ処理装置
１１    内部メモリ
１２    レジスタ群
１３    マルチプレクサ群
１４    ＰＥアレイ
１５    制御部
２０    汎用プロセッサ
３０    外部メモリ
３０Ａ    バンドバッファ
４０    外部バス
６０    リングバッファ
７０    リングバッファ
１００    画像処理装置
６０１    リングバッファ
６０２    リングバッファ
【図１】
2008158836.tif 000003
【図３】
2008158836.tif 000004
【図２】
2008158836.tif 000005
【図４】
2008158836.tif 000006
【図５】
2008158836.tif 000007
【図６】
2008158836.tif 000008