(57)【要約】【課題】ヒストグラム処理のためのメモリの容量及び処理時間を削減する。【解決手段】テーブルメモリ３は、（ａ）階調値の下位４ビットの値にそれぞれ対応する行と、プロセッサエレメントＰＥ０〜ＰＥ３５１にそれぞれ対応する列とを有する下位ビットヒストグラムテーブルＨ１と、（ｂ）階調値の下位４ビットの値にそれぞれ対応する行と、階調値の上位４ビットの値にそれぞれ対応する列とをそれぞれ有し、１６個の画素データの階調値の出現頻度をそれぞれ格納するＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１と、（ｃ）階調値の下位４ビットの値にそれぞれ対応する行と、階調値の上位４ビットの値にそれぞれ対応する列とをそれぞれ有し、画像データの全体の２２分の１の画素データの階調値の出現頻度をそれぞれ格納する全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１とを格納する。【選択図】図１
2011192171.tif 000002
【特許請求の範囲】
【請求項１】
レジスタとアキュムレータとをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントに接続された記憶手段と、
上記各プロセッサエレメントを制御する制御手段とを備え、
画素値をそれぞれ有する複数の画素データを含む入力される画像データの各画素値の出現頻度を示すヒストグラムデータを生成するＳＩＭＤ（Single Instruction Multiple Data）型プロセッサを備えた画像処理装置であって、
上記記憶手段は、画素値の上位ビットの値と画素値の下位ビットの値とにより特定される格納位置に、対応する画素値の出現頻度を格納する第１と第２の２次元ヒストグラムテーブルを有し、
上記制御手段は、
入力される画像データの画素データを上記複数のプロセッサエレメントの個数の単位で入力し、当該入力された複数の画素データをそれぞれ上記各プロセッサエレメントのレジスタに格納し、
上記各レジスタに格納された画素データを読み出して、当該画素データの画素値に対応する上記第１の２次元ヒストグラムテーブルの格納位置に所定値を加算するように制御することにより当該入力された複数の画素データの画素値の出現頻度を示す第１の２次元ヒストグラムテーブルを生成し、上記生成された第１の２次元ヒストグラムテーブルの各出現頻度を、上記第２の２次元ヒストグラムテーブルに累積加算することを上記各プロセッサエレメントのレジスタへの格納毎に繰り返すことにより、上記入力された画像データの全体の画素データの画素値の出現頻度を示す第２の２次元ヒストグラムテーブルを生成し、
当該生成された第２の２次元ヒストグラムテーブルの出現頻度のデータを上記ヒストグラムデータとして出力することを特徴とする画像処理装置。
【請求項２】
上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の下位ビットの値にそれぞれ対応する複数の行と、画素値の上位ビットの値にそれぞれ対応する複数の列とを有し、
上記記憶手段は、画素値の下位ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記制御手段は、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の下位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された行及び上記画素データの画素値の上位ビットの値に対応する列で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを特徴とする請求項１記載の画像処理装置。
【請求項３】
上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の上位ビットの値にそれぞれ対応する複数の行と、画素値の下位ビットの値にそれぞれ対応する複数の列とを有し、
上記記憶手段は、画素値の上位ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記制御手段は、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の上位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された行及び上記画素データの画素値の下位ビットの値に対応する列で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを特徴とする請求項１記載の画像処理装置。
【請求項４】
上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の下位ビットの値にそれぞれ対応する複数の列と、画素値の上位ビットの値にそれぞれ対応する複数の行とを有し、
上記記憶手段は、画素値の下位ビットの値にそれぞれ対応する複数の列と、上記各レジスタにそれぞれ対応する複数の行とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記制御手段は、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の下位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された列及び上記画素データの画素値の上位ビットの値に対応する行で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを特徴とする請求項１記載の画像処理装置。
【請求項５】
上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の上位ビットの値にそれぞれ対応する複数の列と、画素値の下位ビットの値にそれぞれ対応する複数の行とを有し、
上記記憶手段は、画素値の上位ビットの値にそれぞれ対応する複数の列と、上記各レジスタにそれぞれ対応する複数の行とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記制御手段は、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の上位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された列及び上記画素データの画素値の下位ビットの値に対応する行で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを特徴とする請求項１記載の画像処理装置。
【請求項６】
上記制御手段は、上記複数のプロセッサエレメントを複数のプロセッサエレメントグループにグループ化し、上記各プロセッサエレメントグループ毎に、上記第１と第２の２次元ヒストグラムテーブルを並列に生成するように制御し、上記生成された複数の第２の２次元ヒストグラムテーブルに基づいて、上記ヒストグラムデータを生成して出力するように制御することを特徴とする請求項１乃至５のうちのいずれか１つに記載の画像処理装置。
【請求項７】
レジスタとアキュムレータとをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントに接続された記憶手段と、
上記各プロセッサエレメントを制御する制御手段とを備え、
画素値をそれぞれ有する複数の画素データを含む入力される画像データの各画素値の出現頻度を示すヒストグラムデータを生成するＳＩＭＤ型プロセッサを備えた画像処理装置のための処理方法であって、
上記記憶手段は、画素値の上位ビットの値と画素値の下位ビットの値とにより特定される格納位置に、対応する画素値の出現頻度を格納する第１と第２の２次元ヒストグラムテーブルを有し、
上記制御手段が、入力される画像データの画素データを上記複数のプロセッサエレメントの個数の単位で入力し、当該入力された複数の画素データをそれぞれ上記各プロセッサエレメントのレジスタに格納するステップと、
上記制御手段が、上記各レジスタに格納された画素データを読み出して、当該画素データの画素値に対応する上記第１の２次元ヒストグラムテーブルの格納位置に所定値を加算するように制御することにより当該入力された複数の画素データの画素値の出現頻度を示す第１の２次元ヒストグラムテーブルを生成し、上記生成された第１の２次元ヒストグラムテーブルの各出現頻度を、上記第２の２次元ヒストグラムテーブルに累積加算することを上記各プロセッサエレメントのレジスタへの格納毎に繰り返すことにより、上記入力された画像データの全体の画素データの画素値の出現頻度を示す第２の２次元ヒストグラムテーブルを生成するステップと、
上記制御手段が、当該生成された第２の２次元ヒストグラムテーブルの出現頻度のデータを上記ヒストグラムデータとして出力するステップとを含むことを特徴とする画像処理装置の処理方法。
【請求項８】
上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の下位ビットの値にそれぞれ対応する複数の行と、画素値の上位ビットの値にそれぞれ対応する複数の列とを有し、
上記記憶手段は、画素値の下位ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記第２の２次元ヒストグラムテーブルを生成するステップは、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の下位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された行及び上記画素データの画素値の上位ビットの値に対応する列で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを含むこと特徴とする請求項７記載の画像処理装置の処理方法。
【請求項９】
上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の上位ビットの値にそれぞれ対応する複数の行と、画素値の下位ビットの値にそれぞれ対応する複数の列とを有し、
上記記憶手段は、画素値の上位ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記第２の２次元ヒストグラムテーブルを生成するステップは、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の上位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された行及び上記画素データの画素値の下位ビットの値に対応する列で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを含むこと特徴とする請求項７記載の画像処理装置の処理方法。
【請求項１０】
上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の下位ビットの値にそれぞれ対応する複数の列と、画素値の上位ビットの値にそれぞれ対応する複数の行とを有し、
上記記憶手段は、画素値の下位ビットの値にそれぞれ対応する複数の列と、上記各レジスタにそれぞれ対応する複数の行とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記第２の２次元ヒストグラムテーブルを生成するステップは、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の下位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された列及び上記画素データの画素値の上位ビットの値に対応する行で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを含むこと特徴とする請求項７記載の画像処理装置の処理方法。
【請求項１１】
上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の上位ビットの値にそれぞれ対応する複数の列と、画素値の下位ビットの値にそれぞれ対応する複数の行とを有し、
上記記憶手段は、画素値の上位ビットの値にそれぞれ対応する複数の列と、上記各レジスタにそれぞれ対応する複数の行とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記第２の２次元ヒストグラムテーブルを生成するステップは、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の上位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された列及び上記画素データの画素値の下位ビットの値に対応する行で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを含むこと特徴とする請求項７記載の画像処理装置の処理方法。
【請求項１２】
上記画像処理装置の処理方法は、上記制御手段が、上記複数のプロセッサエレメントを複数のプロセッサエレメントグループにグループ化し、上記各プロセッサエレメントグループ毎に、上記第１と第２の２次元ヒストグラムテーブルを並列に生成するように制御し、上記生成された複数の第２の２次元ヒストグラムテーブルに基づいて、上記ヒストグラムデータを生成して出力するように制御するステップをさらに含むことを含むことを特徴とする請求項７乃至１１のうちのいずれか１つに記載の画像処理装置の処理方法。
【請求項１３】
請求項６乃至１２のうちのいずれか１つに記載の画像処理装置の処理方法の各ステップを含むことを特徴とするコンピュータにより実行可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ（Single Instruction Multiple Data）単位で複数の入力画素データを並列処理するＳＩＭＤ型プロセッサを備えた画像処理装置及び当該画像処理装置の処理方法、並びに当該処理方法を用いたプログラムに関する。
【背景技術】
【０００２】
従来、画像処理装置において取り扱われる画像データは副走査方向に並んだ複数のライン画像データから成り、各ライン画像データは主走査方向に配列された複数の画素データから成る。そして、ライン画像データは、複数のＳＩＭＤから成る。ここで、「ＳＩＭＤ」とは、１つの処理単位として処理される所定数（以下、ＳＩＭＤ数という。）の画素データである。このようなＳＩＭＤを処理単位とする演算処理、つまりＳＩＭＤ単位処理では、ＳＩＭＤ単位を構成している複数の画素データを一度に入力し、入力した複数の画素データを並列に処理するので、一度に大量のデータを処理することができ、演算処理を短時間で行うことができるという利点がある（例えば、特許文献１及び２参照。）。
【０００３】
図１３は、従来技術に係るＳＩＭＤ型プロセッサを用いた階調値のヒストグラムデータを生成するためのヒストグラム処理を示すブロック図である。図１３において、従来技術に係るＳＩＭＤ型プロセッサは、３５２個のプロセッサエレメントＰＥ０〜ＰＥ３５１と、ヒストグラムテーブルＨ１００とを備えて構成される。さらに、各プロセッサエレメントＰＥｎ（ｎ＝０，１，…，３５１）は、レジスタＲ０を含む複数のレジスタと、アキュムレータＡとを備えて構成される。ここで、ヒストグラムテーブルＨ１００の列の数は、ＳＩＭＤ数（図１３では、３５２である。）と同一であり、行の数は、階調数（図１３では、２５６である。）と同一である。
【０００４】
従来技術に係るＳＩＭＤ型プロセッサは、入力される階調値のヒストグラムデータを生成するときに、１ＳＩＭＤ毎に、以下に説明する従来技術に係るヒストグラム処理を行う。図１３に示すように、始めに、３５２個の画素データの各階調値は、それぞれプロセッサエレメントＰＥ０〜ＰＥ３５１のレジスタＲ０に出力される。次に、各プロセッサエレメントＰＥｎのアキュムレータＡは、プロセッサエレメントＰＥｎのレジスタＲ０に格納された階調値と、比較対象の階調値００ｈ，０１ｈ，…，ＦＥｈ，ＦＦｈ（以下、本明細書において、末尾にｈが付加された値は１６進数を表す。）とを順次比較する。そして、各プロセッサエレメントＰＥｎのアキュムレータＡは、プロセッサエレメントＰＥｎレジスタＲ０に格納された階調値と比較対象の階調値とが一致するときに、ヒストグラムテーブルＨ１００において、当該比較対象の階調値に対応する行と、プロセッサエレメントＰＥｎに対応する列とで表される格納位置のデータに１を加算する。画像データ全体の画素データに対して、ＳＩＭＤ単位で従来技術に係るストグラム処理を繰り返して実行された後に、ヒストグラムテーブルＨ１００において、各行毎に全てのデータが加算されて、階調値のヒストグラムデータが生成される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術に係るＳＩＭＤ型プロセッサは、図１３に示すように、プロセッサエレメントＰＥｎ毎に、当該プロセッサエレメントＰＥｎのレジスタＲ０に格納される階調値のヒストグラムテーブルを生成するので、階調数の増加に比例して必要とされるメモリの容量が増大するという課題があった。さらに、各プロセッサエレメントＰＥｎのアキュムレータＡにおいて、階調数分（図１３では、２５６回である。）の比較処理及び判断処理を行う必要があり、階調数の増加に比例して、ヒストグラムデータを生成するための処理時間が増加するという課題があった。
【０００６】
本発明の目的は以上の問題点を解決し、従来技術に比較して、ヒストグラム処理のためのメモリの容量及び処理時間を削減できるＳＩＭＤ型プロセッサを備えた画像処理装置及び当該画像処理装置の処理方法、並びに当該処理方法を用いたプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
第１の発明に係る画像処理装置は、
レジスタとアキュムレータとをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントに接続された記憶手段と、
上記各プロセッサエレメントを制御する制御手段とを備え、
画素値をそれぞれ有する複数の画素データを含む入力される画像データの各画素値の出現頻度を示すヒストグラムデータを生成するＳＩＭＤ型プロセッサを備えた画像処理装置であって、
上記記憶手段は、画素値の上位ビットの値と画素値の下位ビットの値とにより特定される格納位置に、対応する画素値の出現頻度を格納する第１と第２の２次元ヒストグラムテーブルを有し、
上記制御手段は、
入力される画像データの画素データを上記複数のプロセッサエレメントの個数の単位で入力し、当該入力された複数の画素データをそれぞれ上記各プロセッサエレメントのレジスタに格納し、
上記各レジスタに格納された画素データを読み出して、当該画素データの画素値に対応する上記第１の２次元ヒストグラムテーブルの格納位置に所定値を加算するように制御することにより当該入力された複数の画素データの画素値の出現頻度を示す第１の２次元ヒストグラムテーブルを生成し、上記生成された第１の２次元ヒストグラムテーブルの各出現頻度を、上記第２の２次元ヒストグラムテーブルに累積加算することを上記各プロセッサエレメントのレジスタへの格納毎に繰り返すことにより、上記入力された画像データの全体の画素データの画素値の出現頻度を示す第２の２次元ヒストグラムテーブルを生成し、
当該生成された第２の２次元ヒストグラムテーブルの出現頻度のデータを上記ヒストグラムデータとして出力することを特徴とする。
【０００８】
上記画像処理装置において、上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の下位ビットの値にそれぞれ対応する複数の行と、画素値の上位ビットの値にそれぞれ対応する複数の列とを有し、
上記記憶手段は、画素値の下位ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記制御手段は、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の下位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された行及び上記画素データの画素値の上位ビットの値に対応する列で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを特徴とする。
【０００９】
また、上記画像処理装置において、上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の上位ビットの値にそれぞれ対応する複数の行と、画素値の下位ビットの値にそれぞれ対応する複数の列とを有し、
上記記憶手段は、画素値の上位ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記制御手段は、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の上位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された行及び上記画素データの画素値の下位ビットの値に対応する列で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを特徴とする。
【００１０】
さらに、上記画像処理装置において、上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の下位ビットの値にそれぞれ対応する複数の列と、画素値の上位ビットの値にそれぞれ対応する複数の行とを有し、
上記記憶手段は、画素値の下位ビットの値にそれぞれ対応する複数の列と、上記各レジスタにそれぞれ対応する複数の行とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記制御手段は、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の下位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された列及び上記画素データの画素値の上位ビットの値に対応する行で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを特徴とする。
【００１１】
またさらに、上記画像処理装置において、上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の上位ビットの値にそれぞれ対応する複数の列と、画素値の下位ビットの値にそれぞれ対応する複数の行とを有し、
上記記憶手段は、画素値の上位ビットの値にそれぞれ対応する複数の列と、上記各レジスタにそれぞれ対応する複数の行とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記制御手段は、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の上位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された列及び上記画素データの画素値の下位ビットの値に対応する行で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを特徴とする。
【００１２】
また、上記画像処理装置において、上記制御手段は、上記複数のプロセッサエレメントを複数のプロセッサエレメントグループにグループ化し、上記各プロセッサエレメントグループ毎に、上記第１と第２の２次元ヒストグラムテーブルを並列に生成するように制御し、上記生成された複数の第２の２次元ヒストグラムテーブルに基づいて、上記ヒストグラムデータを生成して出力するように制御することを特徴とする。
【００１３】
第２の発明に係る画像処理装置の処理方法は、
レジスタとアキュムレータとをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントに接続された記憶手段と、
上記各プロセッサエレメントを制御する制御手段とを備え、
画素値をそれぞれ有する複数の画素データを含む入力される画像データの各画素値の出現頻度を示すヒストグラムデータを生成するＳＩＭＤ型プロセッサを備えた画像処理装置のための処理方法であって、
上記記憶手段は、画素値の上位ビットの値と画素値の下位ビットの値とにより特定される格納位置に、対応する画素値の出現頻度を格納する第１と第２の２次元ヒストグラムテーブルを有し、
上記制御手段が、入力される画像データの画素データを上記複数のプロセッサエレメントの個数の単位で入力し、当該入力された複数の画素データをそれぞれ上記各プロセッサエレメントのレジスタに格納するステップと、
上記制御手段が、上記各レジスタに格納された画素データを読み出して、当該画素データの画素値に対応する上記第１の２次元ヒストグラムテーブルの格納位置に所定値を加算するように制御することにより当該入力された複数の画素データの画素値の出現頻度を示す第１の２次元ヒストグラムテーブルを生成し、上記生成された第１の２次元ヒストグラムテーブルの各出現頻度を、上記第２の２次元ヒストグラムテーブルに累積加算することを上記各プロセッサエレメントのレジスタへの格納毎に繰り返すことにより、上記入力された画像データの全体の画素データの画素値の出現頻度を示す第２の２次元ヒストグラムテーブルを生成するステップと、
上記制御手段が、当該生成された第２の２次元ヒストグラムテーブルの出現頻度のデータを上記ヒストグラムデータとして出力するステップとを含むことを特徴とする。
【００１４】
上記画像処理装置の処理方法において、上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の下位ビットの値にそれぞれ対応する複数の行と、画素値の上位ビットの値にそれぞれ対応する複数の列とを有し、
上記記憶手段は、画素値の下位ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記第２の２次元ヒストグラムテーブルを生成するステップは、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の下位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された行及び上記画素データの画素値の上位ビットの値に対応する列で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを含むこと特徴とする。
【００１５】
また、上記画像処理装置の処理方法において、上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の上位ビットの値にそれぞれ対応する複数の行と、画素値の下位ビットの値にそれぞれ対応する複数の列とを有し、
上記記憶手段は、画素値の上位ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記第２の２次元ヒストグラムテーブルを生成するステップは、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の上位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された行及び上記画素データの画素値の下位ビットの値に対応する列で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを含むこと特徴とする。
【００１６】
さらに、上記画像処理装置の処理方法において、上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の下位ビットの値にそれぞれ対応する複数の列と、画素値の上位ビットの値にそれぞれ対応する複数の行とを有し、
上記記憶手段は、画素値の下位ビットの値にそれぞれ対応する複数の列と、上記各レジスタにそれぞれ対応する複数の行とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記第２の２次元ヒストグラムテーブルを生成するステップは、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の下位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された列及び上記画素データの画素値の上位ビットの値に対応する行で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを含むこと特徴とする。
【００１７】
またさらに、上記画像処理装置の処理方法において、上記第１と第２の２次元ヒストグラムテーブルはそれぞれ、画素値の上位ビットの値にそれぞれ対応する複数の列と、画素値の下位ビットの値にそれぞれ対応する複数の行とを有し、
上記記憶手段は、画素値の上位ビットの値にそれぞれ対応する複数の列と、上記各レジスタにそれぞれ対応する複数の行とを有する第３の２次元ヒストグラムテーブルをさらに有し、
上記第２の２次元ヒストグラムテーブルを生成するステップは、上記各レジスタに格納された画素データを読み出して、当該レジスタ及び当該画素データの画素値の上位ビットの値に対応する上記第３の２次元ヒストグラムテーブルの格納位置に所定のフラグデータを格納した後に、上記第１の２次元ヒストグラムテーブルの格納位置のうち、上記第３の２次元ヒストグラムテーブルにおいて上記フラグデータが格納された列及び上記画素データの画素値の下位ビットの値に対応する行で表される格納位置に上記所定値を加算するように制御することにより、上記第１の２次元ヒストグラムテーブルを生成することを含むこと特徴とする。
【００１８】
また、上記画像処理装置の処理方法において、上記制御手段が、上記複数のプロセッサエレメントを複数のプロセッサエレメントグループにグループ化し、上記各プロセッサエレメントグループ毎に、上記第１と第２の２次元ヒストグラムテーブルを並列に生成するように制御し、上記生成された複数の第２の２次元ヒストグラムテーブルに基づいて、上記ヒストグラムデータを生成して出力するように制御するステップをさらに含むことを含むことを特徴とする。
【００１９】
第３の発明に係るコンピュータにより実行可能なプログラムは、上記画像処理装置の処理方法の各ステップを含むことを特徴とする。
【発明の効果】
【００２０】
本発明に係る画像処理装置、画像処理装置の処理方法、及び当該処理方法を用いたプログラムによれば、入力される画像データの画素データを上記複数のプロセッサエレメントの個数の単位で入力し、当該入力された複数の画素データをそれぞれ上記各プロセッサエレメントのレジスタに格納し、上記各レジスタに格納された画素データを読み出して、当該画素データの画素値に対応する上記第１の２次元ヒストグラムテーブルの格納位置に所定値を加算するように制御することにより当該入力された複数の画素データの画素値の出現頻度を示す第１の２次元ヒストグラムテーブルを生成し、上記生成された第１の２次元ヒストグラムテーブルの各出現頻度を、上記第２の２次元ヒストグラムテーブルに累積加算することを上記各プロセッサエレメントのレジスタへの格納毎に繰り返すことにより、上記入力された画像データの全体の画素データの画素値の出現頻度を示す第２の２次元ヒストグラムテーブルを生成するので、従来技術に比較して、画素値のヒストグラムデータの生成処理のために必要とされる記憶手段のサイズを大幅に削減し、上記生成処理のための処理時間を大幅に短縮できる。
【図面の簡単な説明】
【００２１】
【図１】ＳＩＭＤ型プロセッサ１と、ＲＡＭ１１−０〜１１−３１と、メモリコントローラ１０−０〜１０−３１とを備えた本発明の第１の実施形態に係る画像処理装置の構成を示すブロック図である。
【図２】図１のグローバルプロセッサ２によって実行されるヒストグラム処理を示すフローチャートである。
【図３】図２のステップＳ２において、各アキュムレータＡｎ（ｎ＝０，２，…，３５１）によって実行される下位ビットヒストグラムテーブル生成処理を示すフローチャートである。
【図４】図２のステップＳ３において、各プロセッサエレメントグループＰＥＧｍ（ｍ＝０，１，…，２１）において実行されるＳＩＭＤ単位累積処理を示すフローチャートである。
【図５】図２のステップＳ４において、各アキュムレータＡｎによって実行される全体累積処理を示すフローチャートである。
【図６】図１のプロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ０に格納される画素データＤ０〜Ｄ３５１の階調値と、下位ビットヒストグラムテーブルＨ１との関係を示すブロック図である。
【図７】図１のプロセッサエレメントＰＥ０〜ＰＥ１５の各レジスタＲ０に格納される画素データＤ０〜Ｄ１５の階調値と、下位ビットヒストグラムテーブルＨ１と、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０との関係を示すブロック図である。
【図８】図５のステップＳ４３における加算処理を示すブロック図である。
【図９】ＳＩＭＤ型プロセッサ１Ａと、ＲＡＭ１１−０〜１１−３１と、メモリコントローラ１０−０〜１０−３１とを備えた本発明の第２の実施形態に係る画像処理装置の構成を示すブロック図である。
【図１０】図９のグローバルプロセッサ２によって実行されるヒストグラム処理を示すフローチャートである。
【図１１】図１０のステップＳ３Ａにおいて、各プロセッサエレメントグループＰＥＧｍにおいて実行されるＳＩＭＤ単位累積処理を示すフローチャートである。
【図１２】（ａ）は、１２８階調の画素値をそれぞれ有する画素データＤ０〜Ｄ３５１に対してヒストグラム処理を行うときの、第１の実施形態の変形例に係る下位ビットヒストグラムテーブルＨ１Ａを示すブロック図であり、（ｂ）は、１２８階調の画素値をそれぞれ有する画素データＤ０〜Ｄ３５１に対してヒストグラム処理を行うときの、第１の実施形態の変形例に係るＳＩＭＤ単位ヒストグラムテーブルＨ２−０Ａ〜Ｈ２−２１Ａ及び全体ヒストグラムテーブルＨ３−０Ａ〜Ｈ３−２１Ａを示すブロック図である。
【図１３】従来技術に係るＳＩＭＤ型プロセッサを用いた階調値のヒストグラムデータを生成するためのヒストグラム処理を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【００２３】
第１の実施形態．
図１は、ＳＩＭＤ型プロセッサ１と、ＲＡＭ（Random Access Memory）１１−０〜１１−３１と、メモリコントローラ１０−０〜１０−３１とを備えた本発明の第１の実施形態に係る画像処理装置の構成を示すブロック図である。また、図２は、図１のグローバルプロセッサ２によって実行されるヒストグラム処理を示すフローチャートである。さらに、図３は、図２のステップＳ２において、各アキュムレータＡｎ（ｎ＝０，１，…，３５１）によって実行される下位ビットヒストグラムテーブル生成処理を示すフローチャートであり、図４は、図２のステップＳ３において、各プロセッサエレメントグループＰＥＧｍ（ｍ＝０，１，…，２１）において実行されるＳＩＭＤ単位累積処理を示すフローチャートであり、図５は、図２のステップＳ４において、各アキュムレータＡｎによって実行される全体累積処理を示すフローチャートである。
【００２４】
詳細後述するように、本実施形態に係る画像処理装置は、レジスタとアキュムレータとをそれぞれ備えた３５２個のプロセッサエレメントＰＥ０〜ＰＥ３５１と、各プロセッサエレメントＰＥ０〜ＰＥ３５１に接続されたテーブルメモリ３と、各プロセッサエレメントＰＥ０〜ＰＥ３５１を制御するグローバルプロセッサ２とを備え、階調値をそれぞれ有する複数の画素データを含む入力される画像データの各階調値の出現頻度を示すヒストグラムデータを生成するＳＩＭＤ型プロセッサ１を備えた画像処理装置である。ここで、グローバルプロセッサ２は、プロセッサエレメントＰＥ０〜ＰＥ３５１を２２個のプロセッサエレメントグループＰＥＧ０〜ＰＥＧ２１にグループにグループ化し、上記各プロセッサエレメントグループＰＥＧｍ（ｍ＝１，２，…，２１）毎に、後述するように、ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍと、全体ヒストグラムテーブルＨ３−ｍとを並列に生成するように制御し、生成された全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１に基づいて、ヒストグラムデータを生成して出力するように制御することを特徴としている。テーブルメモリ３は、プロセッサエレメントグループＰＥＧｍ毎に、階調値の下位４ビットの値にそれぞれ対応する複数の行と、階調値の上位４ビットの値にそれぞれ対応する複数の列とを有し、対応する階調値の出現頻度を格納するＳＩＭＤ単位ヒストグラムテーブルＨ２−０と全体ヒストグラムテーブルＨ３−ｍとを有する。さらに、テーブルメモリ３は、階調値の下位４ビットの値にそれぞれ対応する複数の行と、上記各レジスタにそれぞれ対応する複数の列とを有する下位ビットヒストグラムテーブルＨ１を有する。
【００２５】
さらに、グローバルプロセッサ２は、入力される画像データの画素データをプロセッサエレメントＰＥ０〜ＰＥ３５１の個数（３５２である。）の単位で入力し、当該入力された複数の画素データＤ０〜Ｄ３５１をそれぞれ上記各プロセッサエレメントＰＥ０〜ＰＥ３５１のレジスタＲ０に格納し、各プロセッサエレメントグループＰＥＧｍにおいて、上記各レジスタＲ０に格納された画素データＤ０〜Ｄ３５１を読み出して、当該画素データＤ０〜Ｄ３５１の階調値に対応するＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の格納位置に１を加算するように制御することにより当該入力された複数の画素データＤ０〜Ｄ３５１の階調値の出現頻度を示すＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１を生成し、上記生成されたＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各出現頻度を、全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１に累積加算することを上記各プロセッサエレメントＰＥ０〜ＰＥ３５１のレジスタＲ０への格納毎に繰り返すことにより、上記入力された画像データの全体の画素データのうちの２２分の１の画素データの階調値の出現頻度を示す全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１を生成し、当該生成された全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１に基づいて階調値のヒストグラムデータを生成して出力することを特徴としている。
【００２６】
また、グローバルプロセッサ２は、上記各レジスタＲ０に格納された画素データＤ０〜Ｄ３５１を読み出して、当該レジスタＲ０及び当該画素データＤ０〜Ｄ３５１の階調値の下位４ビットの値に対応する下位ビットヒストグラムテーブルＨ１の格納位置に所定のフラグデータを格納した後に、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の格納位置のうち、下位ビットヒストグラムテーブルＨ１において上記フラグデータが格納された行及び上記画素データＤ０〜Ｄ３５１の階調値の上位４ビットの値に対応する列で表される格納位置に１を加算するように制御することにより、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１を生成することを特徴としている。
【００２７】
図１の画像処理装置は、ＳＩＭＤ型プロセッサ１と、ＲＡＭ１１−０〜１１−３１と、ＲＡＭ１１−０〜１１−３１にそれぞれ接続されたメモリコントローラ１０−０〜１０−３１とを備えて構成される。本実施形態において、ＳＩＭＤ数は３５２である。また、ＳＩＭＤ型プロセッサ１は、グローバルプロセッサ（ＧＰ）２と、３５２個のプロセッサエレメントＰＥ０〜ＰＥ３５１と、テーブルメモリ３とを備えて構成される。各プロセッサエレメントＰＥｎは、３２個の８ビットの汎用レジスタ（以下、レジスタという。）Ｒ０〜Ｒ３１と、１６ビットのアキュムレータＡｎとを備えて構成される。さらに、プロセッサエレメントＰＥ０〜ＰＥ３５１は、１６個のプロセッサエレメント毎に、プロセッサエレメントグループＰＥＧ０〜ＰＥＧ２１にグループ化されている。また、詳細後述するように、テーブルメモリ３は、それぞれ２次元ヒストグラムテーブルである、下位ビットヒストグラムテーブルＨ１と、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１と、全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１とを有する。
【００２８】
ここで、プロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ０は、メモリコントローラ１０−０に接続され、プロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ１は、メモリコントローラ１０−１に接続され、以下、同様に、プロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲｉ（ｉ＝０，１，…，３１）は、メモリコントローラ１０−ｋに接続される。グローバルプロセッサ２は、ＳＩＭＤ型プロセッサ１の全体の動作、ならびにプロセッサエレメントＰＥ０〜ＰＥ３５１の各動作を制御するとともに、各メモリコントローラ１０−０〜１０−３１に対して動作設定用データ及びデータ転送のためのコマンドなどを送信する。また、各メモリコントローラ１０−ｉは、グローバルプロセッサ２からの動作設定用データ及びデータ転送のためのコマンドに従って、プロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタと、ＲＡＭ１１−ｉと、画像処理装置内のバスとの間でのデータの送受信を行う。なお、図１において、メモリコントローラ１０−０は、画像処理装置内のバスから画素データを受信し、受信した画素データをＳＩＭＤ単位で（すなわち、３５２個ずつ）、２５６階調の階調値を有する画素データＤ０〜Ｄ３５１としてプロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ０に出力する。また、メモリコントローラ１０−３１は、プロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ３１から出力された各データを、階調値のヒストグラムデータとして、画像処理装置内のバスに出力する。なお、プロセッサエレメントＰＥ０〜ＰＥ３５１の他のレジスタＲ１〜Ｒ３０は、画像データに対する変倍処理などの画像処理のために用いられる。
【００２９】
次に、図２〜図８を参照して、図１のグローバルプロセッサ２によって実行されるヒストグラム処理を説明する。始めに、グローバルプロセッサ２は、ヒストグラム処理を実行する前に、テーブルメモリ３をクリアする。そして、図２のステップＳ１において、グローバルプロセッサ２は、メモリコントローラ１０−０を、３５２個の画素データを、画素データＤ０〜Ｄ３５１としてプロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ０にそれぞれ格納するように制御する。次に、ステップＳ２において、グローバルプロセッサ２は、各プロセッサエレメントＰＥｎのアキュムレータＡｎに対して、図３の下位ビットヒストグラムテーブル生成処理を並列に実行するように制御することにより、下位ビットヒストグラムテーブルＨ１を生成する。ここで、本実施形態において、下位ビットヒストグラムテーブルＨ１の第１列〜第３５２列は、プロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ０にそれぞれ対応し、下位ビットヒストグラムテーブルＨ１の第１行〜第１６行は、２５６階調の階調値の下位４ビットの値０ｈ〜Ｆｈにそれぞれ対応する。
【００３０】
図３の下位ビットヒストグラムテーブル生成処理のステップＳ２１において、アキュムレータＡｎは、プロセッサエレメントＰＥｎのレジスタＲ０に格納された画素データＤｎを読み出し、下位ビットヒストグラムテーブルＨ１の第ｎ列の各行に０をセットする。そして、ステップＳ２２において、比較対象の階調値ｋを０ｈに初期化する。さらに、ステップＳ２３において、アキュムレータＡｎは、画素データＤｎの階調値の上位４ビットの値をマスクし、階調値の下位４ビットの値が比較対象の階調値ｋと等しいか否かを判断し、ＹＥＳのときはステップＳ２４に進む一方、ＮＯのときは、ステップＳ２５に進む。ステップＳ２４において、アキュムレータＡｎは、下位ビットヒストグラムテーブルＨ１において、第ｎ列の、画素データＤｎの階調値の下位４ビットの値に対応する行に、フラグデータをセットし、ステップＳ２５に進む。ステップＳ２５では、比較対象の階調値ｋがＦｈであるか否かが判断され、ＹＥＳのときは図２のヒストグラム処理のステップＳ３に戻る一方、ＮＯのときは、ステップＳ２６に進む。そして、ステップＳ２６において、比較対象の階調値ｋに１が加算されてステップＳ２３に戻る。なお、本実施形態において、ステップＳ２４におけるフラグデータの値は１である。
【００３１】
図６は、図１のプロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ０に格納される画素データＤ０〜Ｄ３５１の階調値と、下位ビットヒストグラムテーブルＨ１との関係を示すブロック図である。図６に示すように、プロセッサエレメントＰＥ０のレジスタＲ０に階調値２１ｈが格納された場合には、図３のステップＳ２４の処理を実行することにより、画素データＤ０の階調値２１ｈの下位４ビットの値が１ｈであるので、下位ビットヒストグラムテーブルＨ１の第２行（階調値１ｈに対応する。）の第１列（プロセッサエレメントＰＥ０に対応する。）に１がセットされる。同様に、プロセッサエレメントＰＥ１のレジスタＲ０に階調値３４ｈが格納された場合には、画素データＤ１の階調値３４ｈの下位４ビットの値が４ｈであるので、下位ビットヒストグラムテーブルＨ１の第４行（階調値４ｈに対応する。）の第２列（プロセッサエレメントＰＥ１に対応する。）に１がセットされる。
【００３２】
図２に戻り、ステップＳ２に続いて、ステップＳ３において、グローバルプロセッサ２は、各プロセッサエレメントグループＰＥＧｍにおいて、図４のＳＩＭＤ単位累積処理を並列に実行することにより、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１を生成するように制御する。ここで、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１はそれぞれ、プロセッサエレメントグループＰＥＧ０〜ＰＥＧ２１に対応して設けられる。各ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍは、階調値の上位４ビットの値と、階調値の下位４ビットの値とにより特定される格納位置に、プロセッサエレメントグループＰＥＧｍ内のレジスタに格納された１６個の画素データの階調値の出現頻度を格納する。具体的には、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍの第１行〜第１６行は、２５６階調の階調値の下位４ビットの値０ｈ〜Ｆｈにそれぞれ対応し、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍの第１列〜第１６列は、２５６階調の階調値の上位４ビットの値０ｈ〜Ｆｈにそれぞれ対応する。
【００３３】
図４のＳＩＭＤ単位累積処理のステップＳ３１において、プロセッサエレメントグループＰＥＧｍ内の各アキュムレータにより、ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍをクリアするように制御する。具体的には、プロセッサエレメントグループＰＥＧｍ内の各アキュムレータを、ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍの当該アキュムレータに対応する列の各行に０をセットするように制御する。そして、ステップＳ３２において、パラメータｋは０に初期化され、ステップＳ３３において、プロセッサエレメント番号ｊはｍ×１６＋ｋに初期化される。次に、ステップＳ３４において、プロセッサエレメントＰＥｊのアキュムレータＡｊにより、プロセッサエレメントＰＥｊのレジスタＲ０の画素データＤｊを読み出す。さらに、ステップＳ３５において、アキュムレータＡｊにより、下位ビットヒストグラムテーブルＨ１において、プロセッサエレメントＰＥｊに対応する列（第ｊ列である）のうち、フラグデータ（１である。）がセットされている行を検索する。そして、ステップＳ３６において、アキュムレータＡｊにより、ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍにおいて、上記検索された行と、画素データＤｊの階調値の上位４ビットの値に対応する列とで表される格納位置にセットされている値に１を加算し、ステップＳ３７において、パラメータｋに１が加算される。次に、ステップＳ３８において、パラメータｋが１５より大きいか否かが判断され、ＹＥＳのときは図２のヒストグラム処理のステップＳ４に戻る一方、ＮＯのときは、ステップＳ３４に戻る。
【００３４】
図７は、図１のプロセッサエレメントＰＥ０〜ＰＥ１５の各レジスタＲ０に格納される画素データＤ０〜Ｄ１５の階調値と、下位ビットヒストグラムテーブルＨ１と、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０との関係を示すブロック図である。図７に示すように、プロセッサエレメントＰＥ０のレジスタＲ０に階調値２１ｈが格納された場合には、図４のステップＳ３５において、下位ビットヒストグラムテーブルＨ１の第１列（プロセッサエレメントＰＥ０に対応する。）において、１がセットされている行（図７では、第２行である。）が検索される。そして、図４のステップＳ３６の処理を実行することにより、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０において、上記検索された行と、画素データＤ０の階調値の上位４ビットの値２ｈに対応する列とで表される格納位置（第２行の第３列である。）にセットされている値に１が加算される。
【００３５】
図２に戻り、ステップＳ４において、グローバルプロセッサ２は、各プロセッサエレメントＰＥｎのアキュムレータＡｎに対して、図５の全体累積処理を並列に実行するように制御することにより、全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１を更新する。ここで、全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１はそれぞれ、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１と同様に構成される。具体的には、全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１はそれぞれ、プロセッサエレメントグループＰＥＧ０〜ＰＥＧ２１に対応して設けられる。各全体ヒストグラムテーブルＨ３−ｍは、階調値の上位４ビットの値と、階調値の下位４ビットの値とにより特定される格納位置に、プロセッサエレメントグループＰＥＧｍ内のレジスタに格納された全ての画素データの階調値の出現頻度を格納する。具体的には、各全体ヒストグラムテーブルＨ３−ｍの第１行〜第１６行は、２５６階調の階調値の下位４ビットの値０ｈ〜Ｆｈにそれぞれ対応し、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍの第１列〜第１６列は、２５６階調の階調値の上位４ビットの値０ｈ〜Ｆｈにそれぞれ対応する。
【００３６】
図５の全体累積処理のステップＳ４１において、アキュムレータＡｎは、パラメータｎｐをｍｏｄ（ｎ，１６）に設定し、パラメータｎｇを（ｎ−ｎｐ）／１６に設定する。ここで、「ｍｏｄ（ａ，ｂ）」は整数ａを整数ｂで割ったときの剰余を表し、パラメータｎｇは、アキュムレータＡｎが含まれるプロセッサエレメントグループの番号に対応し、パラメータｎｐは、プロセッサエレメントグループＰＥＧｎｇ内でのアキュムレータＡｎの番号に対応する。次に、ステップＳ４２において、階調値ｋが０ｈに初期化される。さらに、ステップＳ４３において、アキュムレータＡｎは、ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｎｇにおいて、第ｎｐ列の階調値ｋに対応する行にセットされた値を、全体ヒストグラムテーブルＨ３−ｎｇにおいて、第ｎｐ列の階調値ｋに対応する行にセットされた値に累積加算する。次に、ステップＳ４４において、階調値ｋがＦｈに等しいか否かが判断され、ＹＥＳのときは図２のヒストグラム処理のステップＳ５に戻る一方、ＮＯのときはステップＳ４５に進む。ステップＳ４５では、階調値ｋに１が加算され、ステップＳ４３に戻る。
【００３７】
図８は、図５のステップＳ４３における加算処理を示すブロック図である。図８に示すように、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０の１行目の各列にセットされた値は、全体ヒストグラムテーブルＨ３−０の１行目の各列にセットされた値に、並列に加算される。
【００３８】
図２に戻り、ステップＳ５において、グローバルプロセッサ２は、全ての画素データを処理したか否かを判断し、ＹＥＳのときはステップＳ６に進む一方、ＮＯのときはステップＳ１に戻り、次の３５２個の画素データを処理する。全ての画素データの処理を終了すると、グローバルプロセッサ２は、ステップＳ６において、全ての全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１を加算してヒストグラムデータを生成して、メモリコントローラ１０−３１に出力するように、アキュムレータＡ０〜Ａ３５１を制御する。具体的には、各アキュムレータＡｎは、当該アキュムレータＡｎが含まれるプロセッサエレメントグループの番号ｎｇ、及び、プロセッサエレメントグループＰＥＧｎｇ内でのアキュムレータＡｎの番号ｎｐを、図５のステップＳ４１と同様に算出し、全体ヒストグラムテーブルＨ３−ｎｇの第ｎｐ列のデータを順次読み出してプロセッサエレメントＰＥｎのレジスタＲ３１に格納する。そして、各アキュムレータＡｎは、プロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタＲ３１に格納されたデータを、全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各同一のセルのデータが加算されるように加算して、レジスタＲ３１を介してメモリコントローラ１０−３１に出力する。最後に、メモリコントローラ１０−３１は、入力されたデータを、階調値のヒストグラムデータとして、画像処理装置のバスに出力する。
【００３９】
以上説明したように、本実施形態によれば、図１に示すように、ヒストグラム処理のために生成される下位ビットヒストグラムテーブルＨ１と、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１と、全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１との合計のサイズは、４８行×３５２列（１６行×３５２列＋２２×１６行×１６列＋２２×１６行×１６列）であり、従来技術に係るヒストグラム処理のために生成されるヒストグラムテーブルＨ１００（図１３参照。）のサイズ（２５６行×３５２列）の５分の１以下である。従って、従来技術に比較して、ヒストグラム処理のために必要とされるテーブルメモリ３のサイズを大幅に削減できる。
【００４０】
また、従来技術に係るヒストグラム処理では、各アキュムレータＡｎにおいて、階調数と同一の回数（例えば、図１３では、２５６回である。）だけ、画素データＤｎの階調値と比較対象の階調値とが等しいか否かの判断処理を行う必要があった。一方、本実施形態によれば、各アキュムレータＡｎにおいて、画素データＤｎの階調値の下位４ビットの値のみを比較対象の階調値と比較するので（図３のステップＳ２３）、上記判断処理の回数は１６回のみである。従って、本実施形態によれば、ヒストグラム処理のための処理時間を従来技術に比較して大幅に削減できる。
【００４１】
なお、本実施形態において、ステップＳ２４におけるフラグデータの値は１であったが、本発明はこれに限らず、０以外の所定の値であってもよい。また、ステップＳ３６において累積加算される値は１であったが、本発明はこれに限らず、２以上の所定の値であってもよい。
【００４２】
第２の実施形態．
図９は、ＳＩＭＤ型プロセッサ１Ａと、ＲＡＭ１１−０〜１１−３１と、メモリコントローラ１０−０〜１０−３１とを備えた本発明の第２の実施形態に係る画像処理装置の構成を示すブロック図である。また、図１０は、図９のグローバルプロセッサ２によって実行されるヒストグラム処理を示すフローチャートであり、図１１は、図１０のステップＳ３Ａにおいて、各プロセッサエレメントグループＰＥＧｍにおいて実行されるＳＩＭＤ単位累積処理を示すフローチャートである。本実施形態に係るヒストグラム処理は、第１の実施形態に比較して、下位ビットヒストグラムテーブルＨ１を生成することなく、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１を生成することを特徴としている。図９において、ＳＩＭＤ型プロセッサ１Ａは、第１の実施形態に係るＳＩＭＤ型プロセッサ１と比較して、テーブルメモリ３に代えてテーブルメモリ３Ａを備えたことを特徴としている。テーブルメモリ３Ａは、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１と、全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１のみを格納する。
【００４３】
図１０のヒストグラム処理は、第１の実施形態に係るヒストグラム処理（図２参照。）に比較して、ステップＳ２及びＳ３における各処理を、ステップＳ３Ａにおける処理に置き換えたものである。ステップＳ３Ａにおいて、グローバルプロセッサ２は、各プロセッサエレメントグループＰＥＧｍにおいて、図１１のＳＩＭＤ単位累積処理を並列に実行することにより、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１を生成するように制御する。図１１のＳＩＭＤ単位累積処理のステップＳ３１において、プロセッサエレメントグループＰＥＧｍ内の各アキュムレータにより、ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍをクリアするように制御する。そして、ステップＳ３２において、パラメータｋは０に初期化され、ステップＳ３３において、プロセッサエレメント番号ｊはｍ×１６＋ｋに初期化される。次に、ステップＳ３４において、プロセッサエレメントＰＥｊのアキュムレータＡｊにより、プロセッサエレメントＰＥｊのレジスタＲ０の画素データＤｊを読み出してステップＳ３９に進む。
【００４４】
図１１のステップＳ３９において、アキュムレータＡｊにより、ＳＩＭＤ単位ヒストグラムテーブルＨ２−ｍにおいて、画素データＤｊの階調値の下位４ビットの値に対応する行と、画素データＤｊの階調値の上位４ビットの値に対応する列とで表される格納位置にセットされている値に１を加算する。例えば、図７に示すように、プロセッサエレメントＰＥ０のレジスタＲ０に階調値２１ｈが格納された場合には、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０において、画素データＤ０の階調値の下位４ビットの値１ｈに対応する行と、画素データＤ０の階調値の上位４ビットの値２ｈに対応する列とで表される格納位置にセットされている値に１が加算される。そして、ステップＳ３７において、パラメータｋに１が加算される。さらに、ステップＳ３８において、パラメータｋが１５より大きいか否かが判断され、ＹＥＳのときは図２のヒストグラム処理のステップＳ４に戻り、ＮＯのときは、ステップＳ３４に戻る。
【００４５】
従って、本実施形態によれば、下位ビットヒストグラムテーブルＨ１を生成することなく、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１を生成するので、第１の実施形態に比較して、ヒストグラム処理のために必要とされるテーブルメモリ３Ａのサイズ及び処理時間をさらに削減できる。
【００４６】
なお、ステップＳ３９において累積加算される値は１であったが、本発明はこれに限らず、２以上の所定の値であってもよい。
【００４７】
第１の実施形態の変形例．
上記各実施形態では、２５６階調の画素データＤ０〜Ｄ３５１に対してヒストグラム処理を行った。しかしながら、本発明はこれに限らず、階調数は任意の値であってよい。図１２（ａ）は、１２８階調の画素値をそれぞれ有する画素データＤ０〜Ｄ３５１に対してヒストグラム処理を行うときの、第１の実施形態の変形例に係る下位ビットヒストグラムテーブルＨ１Ａを示すブロック図であり、図１２（ｂ）は、１２８階調の画素値をそれぞれ有する画素データＤ０〜Ｄ３５１に対してヒストグラム処理を行うときの、第１の実施形態の変形例に係るＳＩＭＤ単位ヒストグラムテーブルＨ２−０Ａ〜Ｈ２−２１Ａ及び全体ヒストグラムテーブルＨ３−０Ａ〜Ｈ３−２１Ａを示すブロック図である。図１２（ａ）において、下位ビットヒストグラムテーブルＨ１Ａの第１列〜第３５２列は、プロセッサエレメントＰＥ０〜ＰＥ３５１にそれぞれ対応し、下位ビットヒストグラムテーブルＨ１Ａの第１行〜第８行は、１２８階調の階調値の下位３ビットの値０ｈ〜８ｈにそれぞれ対応する。また、図１２（ｂ）において、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０Ａ〜Ｈ２−２１Ａ及び全体ヒストグラムテーブルＨ３−０Ａ〜Ｈ３−２１Ａの第１行〜第８行は、１２８階調の階調値の下位３ビットの値０ｈ〜８ｈにそれぞれ対応し、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０Ａ〜Ｈ２−２１Ａ及び全体ヒストグラムテーブルＨ３−０Ａ〜Ｈ３−２１Ａの第１列〜第８列は、１２８階調の階調値の上位４ビットの値０ｈ〜Ｆｈにそれぞれ対応する。
【００４８】
本変形例では、図３の下位ビットヒストグラムテーブル生成処理のステップＳ２５における判断処理及び図５の全体累積処理のステップＳ４４における判断処理において、階調値ｋが８ｈと等しいか否かを判断する。
【００４９】
同様に、階調数が５１２の場合には、プロセッサエレメントＰＥ０〜ＰＥ３５１にそれぞれ対応する列と、５１２階調の階調値の下位５ビットの値０ｈ〜８ｈにそれぞれ対応する行とを有する下位ビットヒストグラムテーブルＨ１Ａを生成し、５１２階調の階調値の上位４ビットの値０ｈ〜８ｈにそれぞれ対応する列と、５１２階調の階調値の下位５ビットの値０ｈ〜８ｈにそれぞれ対応する行とを有するＳＩＭＤ単位ヒストグラムテーブルＨ２−０Ａ〜Ｈ２−２１Ａ，全体ヒストグラムテーブルＨ３−０Ａ〜Ｈ３−２１Ａとを生成すればよい。
【００５０】
また、本変形例において、第２の実施形態と同様に、下位ビットヒストグラムテーブルＨ１Ａを生成せずに、画素データＤ０〜Ｄ３５１に基づいて、ＳＩＭＤ単位ヒストグラムテーブルＨ２−０Ａ〜Ｈ２−２１Ａ，全体ヒストグラムテーブルＨ３−０Ａ〜Ｈ３−２１Ａを生成してもよい。
【００５１】
さらに、上記各実施形態及び変形例において、下位ビットヒストグラムテーブルＨ１の各列をプロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタに対応して設け、下位ビットヒストグラムテーブルＨ１の各行と、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各行と、各全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各行とを、階調値の下位ビットの各値に対応して設け、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各列と、各全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各列とを、階調値の上位ビットの各値に対応して設けた。しかしながら、本発明はこれに限らず、下位ビットヒストグラムテーブルＨ１の各列をプロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタに対応して設け、下位ビットヒストグラムテーブルＨ１の各行と、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各行と、各全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各行とを、階調値の上位ビットの各値に対応して設け、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各列と、各全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各列とを、階調値の下位ビットの各値に対応して設けてもよい。また、下位ビットヒストグラムテーブルＨ１の各行をプロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタに対応して設け、下位ビットヒストグラムテーブルＨ１の各列と、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各列と、各全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各列とを、階調値の下位ビットの各値に対応して設け、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各行と、各全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各行とを、階調値の上位ビットの各値に対応して設けてもよい。さらに、下位ビットヒストグラムテーブルＨ１の各行をプロセッサエレメントＰＥ０〜ＰＥ３５１の各レジスタに対応して設け、下位ビットヒストグラムテーブルＨ１の各列と、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各列と、各全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各列とを、階調値の上位ビットの各値に対応して設け、各ＳＩＭＤ単位ヒストグラムテーブルＨ２−０〜Ｈ２−２１の各行と、各全体ヒストグラムテーブルＨ３−０〜Ｈ３−２１の各行とを、階調値の下位ビットの各値に対応して設けてもよい。
【００５２】
上記各実施形態において、ＳＩＭＤ数は３５２であり、プロセッサエレメントグループＰＥＧ０〜ＰＥＧ２１の総数は２２個であり、階調数は１２８であった。しかしながら、本発明はこれに限らず、ＳＩＭＤ数、プロセッサエレメントグループの総数、及び階調数はそれぞれ、任意の値であってよい。
【００５３】
また、上記各実施形態及び変形例において、プロセッサエレメントＰＥ０〜ＰＥ３５１を２２個のプロセッサエレメントグループＰＥＧ０〜ＰＥＧ２１にグループ化した。しかしながら、本発明はこれに限らず、プロセッサエレメントＰＥ０〜ＰＥ３５１をグループ化しなくてもよい。この場合は、１つのＳＩＭＤ単位ヒストグラムテーブルと、１つの全体ヒストグラムテーブルとを生成する。また、プロセッサエレメントＰＥ０〜ＰＥ３５１を２つ以上のプロセッサエレメントグループにグループ化してもよい。この場合は、各プロセッサエレメントグループ毎に、ＳＩＭＤ単位ヒストグラムテーブルと、全体ヒストグラムテーブルとを並列に生成する。好ましくは、上記各実施形態及び変形例のように、各ＳＩＭＤ単位ヒストグラムテーブル及び各全体ヒストグラムテーブルの行数と列数とをできるだけ近い値に設定し、かつ、各ＳＩＭＤ単位ヒストグラムテーブル及び各全体ヒストグラムテーブルの列数（又は行数）と、プロセッサエレメントグループの総数とを乗じた値がＳＩＭＤ数になるように、プロセッサエレメントＰＥ０〜ＰＥ３５１を複数のプロセッサエレメントグループにグループ化する。これにより、各プロセッサエレメントグループにおいて、図４と同様のＳＩＭＤ単位累積処理を並列に実行できるので、処理時間を最小にできる。
【００５４】
さらに、上記各実施形態及び変形例において、画素データの階調値のヒストグラムデータを生成したが、本発明はこれに限らず、画素データの各色成分の濃度などの画素値のヒストグラムデータを生成してもよい。
【００５５】
なお、上記各実施形態及び変形例に係るヒストグラム処理の処理ステップを含むプログラムはコンピュータにより実行可能である。
【産業上の利用可能性】
【００５６】
以上詳述したように、本発明に係る画像処理装置、画像処理装置の処理方法、及び当該処理方法を用いたプログラムによれば、入力される画像データの画素データを上記複数のプロセッサエレメントの個数の単位で入力し、当該入力された複数の画素データをそれぞれ上記各プロセッサエレメントのレジスタに格納し、上記各レジスタに格納された画素データを読み出して、当該画素データの画素値に対応する上記第１の２次元ヒストグラムテーブルの格納位置に所定値を加算するように制御することにより当該入力された複数の画素データの画素値の出現頻度を示す第１の２次元ヒストグラムテーブルを生成し、上記生成された第１の２次元ヒストグラムテーブルの各出現頻度を、上記第２の２次元ヒストグラムテーブルに累積加算することを上記各プロセッサエレメントのレジスタへの格納毎に繰り返すことにより、上記入力された画像データの全体の画素データの画素値の出現頻度を示す第２の２次元ヒストグラムテーブルを生成するので、従来技術に比較して、画素値のヒストグラムデータの生成処理のために必要とされる記憶手段のサイズを大幅に削減し、上記生成処理のための処理時間を大幅に短縮できる。
【符号の説明】
【００５７】
１，１Ａ…ＳＩＭＤ型プロセッサ、
２…グローバルプロセッサ、
３，３Ａ…テーブルメモリ、
１０−０〜１０−３１…メモリコントローラ、
１１−０〜１１−３１…ＲＡＭ、
Ａ０〜Ａ３５１…アキュムレータ、
Ｄ０〜Ｄ３５１…画素データ、
Ｈ１，Ｈ１Ａ…下位ビットヒストグラムテーブル、
Ｈ２−０〜Ｈ２−２１，Ｈ２−０Ａ〜Ｈ２−２１Ａ…ＳＩＭＤ単位ヒストグラムテーブル、
Ｈ３−０〜Ｈ３−２１，Ｈ３−０Ａ〜Ｈ３−２１Ａ…全体ヒストグラムテーブル、
ＰＥ０〜ＰＥ３５１…プロセッサエレメント、
ＰＥＧ０〜ＰＥＧ２１…プロセッサエレメントグループ、
Ｒ０〜Ｒ３１…レジスタ、
【先行技術文献】
【特許文献】
【００５８】
【特許文献１】特開２００８−５１２７６２号公報。
【特許文献２】特開２００４−２０１０４７号公報。
【図１】
2011192171.tif 000003
【図２】
2011192171.tif 000004
【図３】
2011192171.tif 000005
【図４】
2011192171.tif 000006
【図５】
2011192171.tif 000007
【図６】
2011192171.tif 000008
【図７】
2011192171.tif 000009
【図８】
2011192171.tif 000010
【図９】
2011192171.tif 000011
【図１０】
2011192171.tif 000012
【図１１】
2011192171.tif 000013
【図１２】
2011192171.tif 000014
【図１３】
2011192171.tif 000015