(57)【特許請求の範囲】
【請求項１】
画像処理に関する連続したパラメータを記憶する複数の記憶手段と、
前記複数の記憶手段に前記パラメータを転送するためのバスのバス幅に収まるように、複数の前記パラメータの差分情報をパッキングするパッキング手段と、
前記パッキング手段によってパッキングされたデータを前記バスを介して転送する転送手段と、
前記転送手段によって転送された前記パッキングされたデータから複数の前記パラメータを復元する復元手段と、
前記復元手段によって復元された複数の前記パラメータをそれぞれ並行して、異なる前記記憶手段に設定する設定手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記パッキング手段は、
前記連続したパラメータのうち、パッキング対象となるパラメータの１つ前の基準パラメータに対する該パッキング対象となるパラメータの差分値を差分情報としてパッキングすることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記パッキングされたデータには、前記パッキング対象となるパラメータの差分値とともに、パッキング対象となるパラメータの個数及び前記差分値のデータ幅を含むヘッダ情報が含まれることを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記パッキング手段は、
前記ヘッダ情報のビット幅と、１つ以上の前記差分値のビット幅との合計が前記バスのバス幅を超えないように前記パッキング対象となるパラメータの個数を決定することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記パッキングされたデータには、前記パッキング対象となるパラメータの差分値とともに、パッキング対象となるパラメータの個数を含むヘッダ情報が含まれることを特徴とする請求項２に記載の画像処理装置。
【請求項６】
前記パッキング手段は、
前記バスのバス幅から前記ヘッダ情報のビット幅を減算した値を前記パッキング対象となるパラメータの個数で除算した除算結果が、前記パッキング対象となる各差分値のビット幅以上となるように、前記パッキング対象のパラメータの個数を決定することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記復元手段は、
前記パッキングされたデータを、前記ヘッダ情報に従ってそれぞれのパラメータの差分値に分割する分割手段と、
前記分割手段によって分割された差分値にそれぞれ前記基準パラメータを加算する加算手段と、
を備えることを特徴とする請求項３乃至６の何れか１項に記載の画像処理装置。
【請求項８】
前記パッキング対象となるパラメータの個数は、最大で前記複数の記憶手段の個数に等しいことを特徴とする請求項３乃至７の何れか１項に記載の画像処理装置。
【請求項９】
前記パッキング対象となるパラメータの個数は、最大で前記複数の記憶手段の個数のｎ倍（ｎは自然数）であることを特徴とする請求項３乃至７の何れか１項に記載の画像処理装置。
【請求項１０】
前記画像処理に関する連続したパラメータとは、入力される画像データの色座標を変換するためのルックアップテーブルの設定値であることを特徴とする請求項１乃至９の何れか１項に記載の画像処理装置。
【請求項１１】
画像処理に関する連続したパラメータを記憶する複数の記憶手段を備える画像処理装置の制御方法であって、
パッキング手段が、前記複数の記憶手段に前記パラメータを転送するためのバスのバス幅に収まるように、複数の前記パラメータの差分情報をパッキングするパッキングステップと、
転送手段が、前記パッキングステップにおいてパッキングされたデータを前記バスを介して転送する転送ステップと、
復元手段が、前記転送ステップにおいて転送された前記パッキンされたグデータから複数の前記パラメータを復元する復元ステップと、
設定手段が、前記復元ステップにおいて復元された複数の前記パラメータをそれぞれ並行して、異なる前記記憶手段に設定する設定ステップと
を実行することを特徴とする画像処理装置の制御方法。
【請求項１２】
請求項１１に記載の画像処理装置の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、その制御方法及びプログラムに関するものである。
【背景技術】
【０００２】
デジタル複合機では、スキャナで読み取った画像データに各種の画像処理を施し、プリンタで画像出力を行う。代表的な画像処理にはγ変換処理、フィルタ処理、色補正処理、階調処理などがある。入力された画像データに対してこのような画像処理を行うときは、メインメモリ上の未処理の画像データをＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）の制御により、それぞれの画像処理モジュールに転送する。その後、画像処理後の画像データをＤＭＡＣの制御により、画像処理モジュールからメインメモリに転送する。また、各画像処理をユーザなどが設定した画質モードで実行するために、各画像処理モジュールは画像処理パラメータを保持するためのレジスタやメモリを内蔵している。
【０００３】
色補正処理の方法としては、入力画像データを均等色空間データに変換するための色座標変換方法を含めて、従来から多くの提案がなされている。このような方法として、例えば、ＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）法がある。ＬＵＴ法の１つである直接変換法は、全ての入力画像データの組み合わせに対して色補正データを予め計算してその結果をＬＵＴである色補正テーブルに格納し、入力画像データに対するテーブル値を参照し、出力画像データとして出力する方法である。ＬＵＴ法で使用される色補正テーブルはＲＯＭ等の不揮発性メモリに保持される。入力画像データをメモリのアドレスとして入力し、メモリから読み出したデータを出力画像データとして出力する。
【０００４】
一般的にこれらのパラメータの設定はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が行う。しかし、ＣＰＵの負荷が高まり、レジスタに対するパラメータの書き込みから画像処理終了までの時間も長くなってしまう。そこで、特許文献１には、ＣＰＵが予めメインメモリ上に画像処理パラメータを記憶しておき、パラメータ転送用のＤＭＡＣにより、メインメモリ上の画像処理パラメータをレジスタに転送する方法が提案されている。特許文献１は、画像処理モジュールの画像処理パラメータを一旦メモリに格納してからＤＭＡ処理によって画像処理モジュールに設定するようにしているため、ＣＰＵの負荷を低減することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１８８４３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来技術では、以下に記載する問題がある。例えば、近年画質への要求が厳しくなっており、高画質化を実現するために、コピー処理時のｄｐｉの高密度化、画像データの高解像度化（データビット数の増加）、補正の細密化などが進行している。これに伴って、ＬＵＴの入力データのビット数が増加し、ＬＵＴデータの書き込み、即ち、実際に使用するＬＵＴの形成に膨大な時間が掛かってしまう。例えば、１２ビット３色の入力画像データの場合は１２２８８通りの入力が存在するため、１２２８８個の色補正テーブルを設定する必要がある。このように、ＬＵＴの設定に時間を要するために、装置全体の処理速度が低下してしまうという問題がある。これはＬＵＴの設定だけに関わらず、一般的な画像処理パラメータの設定に関しても同様である。
【０００７】
本発明は、上述の問題に鑑みて成されたものであり、制御モジュール間におけるデータ転送に関する負荷を低減することにより、画像処理に関するパラメータの設定速度を向上する画像処理装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、画像処理装置ととして実現できる。画像処理装置は、画像処理に関する連続したパラメータを記憶する複数の記憶手段と、複数の記憶手段にパラメータを転送するためのバスのバス幅に収まるように、複数のパラメータの差分情報をパッキングするパッキング手段と、パッキング手段によってパッキングされたデータをバスを介して転送する転送手段と、転送手段によって転送されたパッキングされたデータから複数のパラメータを復元する復元手段と、復元手段によって復元された複数のパラメータをそれぞれ並行して、異なる記憶手段に設定する設定手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明は、例えば、制御モジュール間におけるデータ転送に関する負荷を低減することにより、画像処理に関するパラメータの設定速度を向上する画像処理装置及びその制御方法を提供できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る画像処理装置の構成例を示すブロック図である。
【図２】第１の実施形態に係る入出力特性を示す図である。
【図３】第１の実施形態に係る入出力特性に対応するＬＵＴテーブルの一例を示す図である。
【図４】第１の実施形態に係る画像処理回路１０４の構成例を示すブロック図である。
【図５】第１の実施形態に係るパッキング処理の手順を示すフローチャートである。
【図６】第１の実施形態に係るパッキングされたデータの構成例を示す図である。
【図７】第１の実施形態に係るＬＵＴ設定部４０３の構成例を示すブロック図である。
【図８】第１の実施形態に係るパッキングされたデータの構成例を示す図である。
【図９】第２の実施形態に係るパッキング処理の手順を示すフローチャートである。
【図１０】第２の実施形態に係るパッキングされたデータの構成例を示す図である。
【図１１】第３の実施形態に係るパッキング処理の手順を示すフローチャートである。
【図１２】第３の実施形態に係るパッキングされたデータの構成例を示す図である。
【図１３】第３の実施形態に係るＬＵＴ設定部の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための最良の形態について図面を用いて説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１２】
＜第１の実施形態＞
＜画像処理装置の構成＞
以下では、図１乃至図８を参照して、第１の実施形態について説明する。まず、図１を参照して、本実施形態における画像処理装置の構成について説明する。図１に示すように、画像処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）１０１、メモリ１０２、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）１０３、及び、画像処理回路１０４を備える。なお、各コンポーネントは、内部バス１０５を介して相互通信可能に接続されている。
【００１３】
ＤＭＡ１０３は、ＣＰＵ１０１の設定に従い、メモリ１０２からデータを読み出し、読み出したデータを画像処理回路１０４に出力する。メモリ１０２は、ＲＯＭ、ＲＡＭ、ハードディスク（ＨＤ）などから構成される。ＲＯＭは、ＣＰＵ１０１が実行する各種の制御プログラムや画像処理プログラムを格納する。ＲＡＭは、ＣＰＵ１０１がデータや各種情報を格納する参照領域や作業領域として用いられる。このＲＡＭとＨＤ上で画像データを蓄積し、複数の画像の出力を行う。ＣＰＵ１０１は、ＲＡＭ上にＲＯＭやＨＤ等に格納された制御プログラムをロードし実行することにより、後述する各種処理を実行する。
【００１４】
デジタル複合機のような画像処理装置１００では、入出力特性変換処理、フィルタ処理、色補正処理、階調処理などの画像処理を実行することができる。しかし、本実施形態では、本発明の説明を容易にするため、画像処理回路１０４が実行する画像処理の一例として、入出力特性変換処理について詳細に説明する。つまり、本実施形態では、画像処理に関連する連続したパラメータであるＬＵＴ（ルックアップテーブル）の設定値について本発明を適用する例について説明する。
【００１５】
＜入出力特性変換＞
次に、図２を参照して、入出力特性変換について説明する。画像処理回路１０４は、例えば図２に示すような入出力特性２０１に基づく入出力特性変換を行うものとする。図２においては、横軸に入力データを示し、縦軸に入出力特性変換後の出力データを示す。画像処理回路１０４は、入出力特性２０１を用いて、入力される画像データを変換する。例えば、図２に示す入出力特性２０１では、入力データが値「３２」、値「９６」、値「１２８」のときは、それぞれ値「８２」、値「１２０」、値「１３０」の出力データに変換される。
【００１６】
次に、図３を参照して、図２に基づく入出力特性２０１に対応するＬＵＴデータ３０１について説明する。ここで、ＬＵＴとは、入力される画像データの色座標を変換するためのテーブルである。したがって、ＬＵＴデータとは、ＬＵＴを構成する設定値を示す。ＬＵＴデータ３０１は、図３に示すように、アドレスの項目３０２とデータの項目３０３とを含んで構成される。アドレスの項目３０２には、入出力特性２０１の入力データの各値が記述され、データの項目３０３には入出力特性２０１の出力データの各値が記述される。例えば、画像処理回路１０４に対して値「３２」の入力データが入力されると、画像処理回路１０４は、ＬＵＴデータ３０１を参照して、「３２」を示すアドレスの項目３０２を検索し、当該アドレスの項目３０２に対応付けられているデータの項目３０３から「８２」を取得する。ＬＵＴデータ３０１は、ＣＰＵ１０１によって生成される。また、ＣＰＵ１０１は、ＬＵＴデータ３０１のパッキング処理などを行う。ＬＵＴデータ３０１のパッキング処理については後述する。
【００１７】
＜画像処理回路の構成＞
次に、図４を参照して、本実施形態に係る画像処理回路１０４の構成について説明する。図４に示すように、画像処理回路１０４は、画像処理モジュール４０１と画像処理モジュール４０１がテーブルを参照するための画像処理用ＬＵＴ４０２と画像処理用ＬＵＴ４０２にテーブルを設定するためのＬＵＴ設定部４０３とを備える。
【００１８】
ＬＵＴ設定部４０３は、ＤＭＡ１０３からのＬＵＴデータ３０１を、画像処理用ＬＵＴ４０２に書き込む。なお、ＬＵＴデータ３０１の画像処理用ＬＵＴ４０２への設定処理については後述する。画像処理モジュール４０１は、例えば図２に示すような入出力特性２０１に基づく入出力変換を画像処理用ＬＵＴ４０２を参照して行う。
【００１９】
本実施形態によれば、画像処理用ＬＵＴ４０２は、１色につき４つのＳＲＡＭを含んで構成される。従来では１色のＬＵＴにつき１つのＳＲＡＭで構成されることが一般的である。しかし、ＳＲＡＭなどのメモリは、１回のリード又はライトアクセス時に１つ、多くても２つのアドレスにしかアクセスできない。このため、ＬＵＴで色補正テーブルを形成する場合には、ＬＵＴの入力が取り得るアドレスすべてに逐次的に設定する必要がある。ここで、本実施形態では、１色分に対応するメモリを４つに分割することで、４つの色補正テーブルのデータを同時に設定可能にしている。これにより、１つのＳＲＡＭでＬＵＴを構成した場合と比較して４倍速い設定が可能となる。
【００２０】
このときの各ＳＲＡＭへのアクセス方法について説明する。ＬＵＴのアドレス下位２ビットで４つのＳＲＡＭのうち何れのＳＲＡＭへのアクセスであるかを判定する。ＬＵＴのアドレス下位２ビットが０である場合は、メモリ４０２１へのアクセスとする。ＬＵＴのアドレス下位２ビットが１だった場合には、メモリ４０２２へのアクセスとする。ＬＵＴのアドレス下位２ビットが２だった場合には、メモリ４０２３へのアクセスとする。ＬＵＴのアドレス下位２ビットが３だった場合には、メモリ４０２４へのアクセスとする。また、ＬＵＴのアドレス下位２ビットを除いたものがＳＲＡＭのアドレスとして入力される。
【００２１】
＜パッキング処理＞
図２に示すように、入出力特性変換処理などで用いられる入出力特性は、隣り合う出力値が近い値（つまり、連続したパラメータ）をとることが多い。このことから、隣り合うＬＵＴデータの差分を算出し、差分情報のみを扱えば、情報量を圧縮することができる。圧縮した情報をパッキングすることで、効率良くＬＵＴデータを転送することが可能である。このときに、メモリの構成を考慮しながらＬＵＴデータのパッキング処理を行う。ここで、図５を参照して、ＣＰＵ１０１によるＬＵＴデータ３０１のパッキング処理について説明する。以下で説明する処理は、ＣＰＵ１０１によってＲＯＭ、ＨＤ等に格納された制御プログラムをＲＡＭに読み出して実行される。
【００２２】
Ｓ５０１において、ＣＰＵ１０１は、初期設定として注目するＬＵＴのアドレスｉを１に設定し、パッキングの基となるアドレスｂを０に設定し、パッキング可能な個数ｐを１に設定する。続いて、Ｓ５０２において、ＣＰＵ１０１は、注目するＬＵＴのアドレスｉに対応するデータＤｉからパッキングの基となるアドレスｂに対応するデータ（基準パラメータ）Ｄｂを差し引いたデータｄｉを算出する。さらに、Ｓ５０３において、ＣＰＵ１０１は、Ｓ５０２で算出した値ｄｉを表現するのに必要なビット数ｋｉを算出する。
【００２３】
次に、Ｓ５０４において、ＣＰＵ１０１は、ビット数ｋｉと前回のビット数ｋ（ｉ−１）とを比較し、ｋｉの方が大きい場合にはＳ５０５へ進み、それ以外の場合にはＳ５０６へ進む。Ｓ５０５において、ＣＰＵ１０１は、パッキングされる中で一番大きいビット数ｋｍａｘにｋｉを代入し、Ｓ５０７に進む。一方、ビット数Ｋｉが前回のビット数ｋ（ｉ−１）以下である場合は、Ｓ５０６において、ＣＰＵ１０１は、パッキングされる中で一番大きいビット数ｋｍａｘに前回のビット数ｋ（ｉ−１）を代入し、Ｓ５０７に進む。
【００２４】
Ｓ５０７において、ＣＰＵ１０１は、パンキングされるＬＵＴのビット幅の合計であるｋａｌｌをｋｍａｘとｐを積算することで算出する。続いて、Ｓ５０８において、ＣＰＵ１０１は、Ｓ５０７で算出したｋａｌｌとデータバスのバス幅ｍからパッキングしたＬＵＴデータの個数及びビット幅を示すヘッダ情報６０２のビット幅ｈを差し引いた値を比較する（ｍ−ｈ＞Ｋａｌｌ）。
【００２５】
図６に示すヘッダ情報６０２は、ＬＵＴ設定部４０３でパッキングされたＬＵＴのデータ６０１がどのようにパッキングされているかを判定するために用いられる。ヘッダ情報６０２は、データ幅ｗ６０３とパッキングされているＬＵＴのデータの数Ｐ６０４とを備える。ヘッダ情報６０２のビット幅ｈは、メモリの構成とバス幅ｍによって決定される。パッキングするＬＵＴのデータの数Ｐの最大値はメモリの個数となるため、メモリの個数を表現するのに必要なビット数がＰのビット幅ｈｐとなる。パッキングしたデータのデータ幅ｗの最大値はバス幅ｍからＰのビット幅ｈｐを引いた値となるので、引いた値を表現するのに必要なビット数がｗのビット幅ｈｗとなる。したがって、ヘッダ情報６０２のビット幅ｈはｈｐとｈｗを加算した値となる。
【００２６】
パッキングされたデータのビット幅の合計ｋａｌｌがデータ幅ｍからヘッダのビット幅ｈを減算した値より小さい場合はさらにデータをパッキングできると判定し、ＣＰＵ１０１は、Ｓ５０９に進み、アドレスｉ及び個数ｐに１を加算する。その後、Ｓ５０２に進み、ＣＰＵ１０１は、Ｓ５０２乃至Ｓ５０７の処理を繰り返す。つまり、Ｓ５０８でさらにパッキングが可能だと判定した場合は、ＣＰＵ１０１は、次のＬＵＴのアドレスにパッキング対象を移し、Ｓ５０２乃至Ｓ５０７の処理を実行する。
【００２７】
一方、Ｓ５０８の条件に合致しない場合は、ＣＰＵ１０１は、ｐ個のパッキングはできないと判定し、Ｓ５１０に進み、ｐから１を引き、パッキング対象のアドレスｉから１を減算する。続いて、Ｓ５１１において、ＣＰＵ１０１は、パッキング可能な数ｐと同時に書き込みが可能なレジスタの数Ｒを比較し、Ｒがｐ以下の場合はＳ５１２に進み、ｐの方が小さい場合はＳ５１３に進む。Ｓ５１２において、ＣＰＵ１０１は、パッキングするＬＵＴのデータの数ＰとしてＲを代入するし、Ｓ５１４に進む。一方、Ｓ５１３において、ＣＰＵ１０１は、パッキングするＬＵＴのデータの数Ｐとしてｐを代入し、Ｓ５１４に進む。
【００２８】
Ｓ５１４において、ＣＰＵ１０１は、図６に示すようにヘッダ情報６０２とＰ個のＬＵＴのデータ６０１をパッキングする。その後、Ｓ５１５において、ＣＰＵ１０１は、全てのＬＵＴデータに対してパッキング処理が終了したか否かを判定する。終了していなければ、Ｓ５１６に進み、ＣＰＵ１０１は、次のパッキングを行うために差分のベースとなるアドレスｂをｉから１を引くことで１つ前のパッキングの最後のアドレスを求め、パッキング可能な数ｐに１を代入して初期化する。つまり、ここでは、差分情報を算出するための基準パラメータのアドレスを設定している。その後、Ｓ５０２乃至Ｓ５１４の処理を繰り返す。一方、終了していれば、本フローチャートの処理を終了する。
【００２９】
このように、本実施形態によれば、ＣＰＵ１０１は、前回のＬＵＴのデータとパッキングするＬＵＴのデータの差分情報を計算し、複数の差分情報をパッキングして転送することで転送に関する処理負荷を低減している。また、ＬＵＴのアドレスデータが連続することを利用し、ＬＵＴのデータの個数からアドレスを割り出す作業をＬＵＴ設定部４０３に設け、ＬＵＴのアドレスデータの転送を省略することで、転送するデータ量を低減している。
【００３０】
＜ＬＵＴ設定処理＞
次に、図７及び図８を参照して、ＬＵＴ設定部４０３によるＬＵＴ設定処理について説明する。図７は、ＤＭＡ１０３から転送されたパッキングされたＬＵＴデータ３０１とヘッダ情報から基のＬＵＴの設定値を復元して画像処理用ＬＵＴ４０２へ設定するＬＵＴ設定部４０３の詳細な構成を示す。図８は、ＤＭＡ１０３から転送されるパッキングされたＬＵＴのデータのデータ構造の例を示す。
【００３１】
ＬＵＴ設定部４０３は、ヘッダ解析部７０１、データ生成部７０２、及びアドレス生成部７０３を備える。ヘッダ解析部７０１は、図８に示すヘッダ情報８０２からデータ構造を解析し、データ生成部７０２、アドレス生成部７０３へ解析した情報を出力する。データ生成部７０２は、ヘッダ解析部７０１から出力された情報に基づいてパッキングされたデータを復元する。アドレス生成部７０３は、ヘッダ解析部７０１から出力された情報に基づいてパッキングされたアドレスを復元する。
【００３２】
まず、ＣＰＵ１０１は、ＬＵＴのアドレス０に対応する値を初期値データ７００１に設定する。また、ＤＭＡ１０３から転送されたデータは、ヘッダ解析部７０１とデータ分割部７００２とに入力される。ヘッダ解析部７０１では転送されたデータからヘッダ情報を解析する。図８に示すように、例えば、データの先頭の６ビットがヘッダ情報８０２で、ヘッダ情報の先頭３ビットがデータ幅情報８０３、後尾３ビットがデータの個数情報８０４を示す。図８の例では、転送されたデータが、５ビットのデータ幅で３つのデータがパッキングされていることが分かる。
【００３３】
ヘッダ解析部７０１は解析した情報をデータ分割部７００２とセレクタ７０１６、７０１７、７０１８に出力する。データ分割部７００２は、ヘッダ解析部から送られてきた情報に基づいてデータを分割し、分割したデータを分割データ７００４、７００５、７００６、７００７に転送する。
【００３４】
加算器７００８は、分割データ７００４と１つ前に画像処理用ＬＵＴ４０２へ設定した値が保持されているカレントデータ７００３からの入力とを加算し、復元データ７０１２へ転送する。分割データ７００４に保持された値はカレントデータ７００３との差分であるため、加算器７００８で加算することでＬＵＴのデータを復元することができる。加算器７００９は、分割データ７００５とカレントデータ７００３からの入力とを加算し、復元データ７０１３へ転送する。加算器７０１０は、分割データ７００６とカレントデータ７００３からの入力とを加算し、復元データ７０１４へ転送する。加算器７０１１は、分割データ７００７とカレントデータ７００３からの入力とを加算し、復元データ７０１５へ転送する。
【００３５】
復元データ７０１２、７０１３、７０１４、７０１５に保持された値はセレクタ７０１６、７０１７に転送される。セレクタ７０１６は、ヘッダ解析部７０１から転送されたデータの個数情報８０４からカレントデータ７００３へ転送する値を決定する。データの個数情報が１の場合、復元されたデータは１つしかないので次のパッキングの基となるデータは、復元データ７０１２の値となるため、セレクタ７０１６は、復元データ７０１２から転送された値をカレントデータ７００３へ転送する。同様に、データの個数情報８０４が２の場合、次のパッキングの基となるデータは、復元データ７０１３の値となるため、セレクタ７０１６は、復元データ７０１３から転送された値をカレントデータ７００３へ転送する。データの個数情報８０４が３の場合、セレクタ７０１６は、復元データ７０１４から転送された値をカレントデータ７００３へ転送する。データの個数情報８０４が４の場合、セレクタ７０１６は、復元データ７０１５から転送された値をカレントデータ７００３へ転送する。
【００３６】
セレクタ７０１７は、ヘッダ解析部７０１から転送されたデータの個数情報８０４から画像処理用ＬＵＴ４０２に存在する複数のメモリに対して、どのメモリへ復元した値を設定するか選択する。本実施形態では、画像処理用ＬＵＴ４０２が４つのメモリに分割されている場合について想定している。また、セレクタ７０１７は、１つ前に設定したメモリを保持している。さらに、メモリ４０２１、メモリ４０２２、メモリ４０２３、メモリ４０２４の順番で書き込みを行うメモリが決定される。前回設定したメモリがメモリ４０２３で、データの個数情報８０４が２の場合には、メモリ４０２４とメモリ４０２１へ同時に書き込みが実行される。ヘッダ解析部７０１から転送されたデータの個数情報８０４が１の場合には復元データ７０１２の値を指定されたメモリへ転送する。データの個数情報８０４が２の場合には復元データ７０１２、７０１３の値を指定されたメモリへ転送する。データの個数情報８０４が３の場合には復元データ７０１２、７０１３、７０１４の値を指定されたメモリへ転送する。データの個数情報８０４が４の場合には復元データ７０１２、７０１３、７０１４、７０１５の値を指定されたメモリへ転送する。図７に示すように、セレクタ７０１７からは、各メモリへ制御信号が接続されており、書き込みを実行するメモリにのみ書き込みが行われる。
【００３７】
セレクタ７０１８は、ヘッダ解析部７０１から転送されたデータの個数情報８０４から画像処理用ＬＵＴ４０２に存在する複数のメモリに対して、復元したデータのアドレスを出力する。メモリ４０２１、メモリ４０２２、メモリ４０２３、メモリ４０２４という順番でアドレスが割り振られている。セレクタ７０１８には、１つ前に設定したメモリが保持されており、書き込みメモリがメモリ４０２３からメモリ４０２１に移るときに加算器７０２０からアドレスカウンタ７０１９に１が加算される。
【００３８】
このように、ＬＵＴ設定部４０３は、パッキングされて送られてきた複数のＬＵＴデータを復元することで、画像処理用ＬＵＴ４０２へ同時に複数のＬＵＴデータを書き込むことでＬＵＴの設定にかかる時間を削減することが可能である。ＬＵＴデータの差分情報が負である場合は２の補数を使ってパッキングしたＬＵＴデータを復元する。本実施形態では、設定するパラメータとしてＬＵＴを例に挙げたがフリップフロップで構成されたレジスタに対する画像処理パラメータの設定であってもよい。
【００３９】
入出力特性は図２に示すように隣り合う出力が近い値を取ることが多いが、全く離れた値にも設定が可能である。こういった場合でも本発明は効果を得ることができる。一般的にＣＰＵのシステムバスは３２ビットか６４ビットであり、入出力特性処理のデータ幅が８ビットの場合、差分情報は最大９ビット必要である。したがって、３２ビットの中に少なくとも３つの差分情報がパッキングできるため、少なくとも従来より３倍速い設定が可能である。
【００４０】
以上説明したように、本実施形態に係る画像処理装置は、画像処理に関する連続したパラメータ、例えば、ＬＵＴのデータを記憶するための複数のメモリを備える。また、画像処理装置は、複数のメモリにパラメータを転送するためのバスのバス幅に収まるように、複数のパラメータの差分情報をパッキングし、バスを介して転送する。さらに、画像処理装置は、転送された差分情報から複数のパラメータを復元し、復元された複数のパラメータをそれぞれ並行して、異なるメモリに設定する。また、画像処理装置は、パッキングデータのヘッダ情報のビット幅と、１つ以上の差分値のビット幅との合計がパッキングデータを転送するバスのバス幅を超えないようにパッキング対象となるパラメータの個数を決定する。このように、本画像処理装置は、複数のパラメータの差分情報をパッキングして転送し、転送先で復元して復元したパラメータを複数のメモリに同時に設定することができ、転送負荷を低減するとともに、画像処理に関するパラメータの設定速度を向上させることができる。
【００４１】
＜第２の実施形態＞
以下では、図９及び図１０を参照して、本発明の第２の実施形態について説明する。本実施形態では、ヘッダ情報をより簡易化する方法について説明する。ここでは、第１の実施形態と異なる技術、即ち、ＬＵＴのデータのパッキング方法についてのみ説明する。図９は、ＬＵＴデータのパッキングの処理手順を示す。以下で説明する処理は、ＣＰＵ１０１によってＲＯＭ、ＨＤ等に格納された制御プログラムをＲＡＭに読み出して実行される。また、図１０は、パッキングされたＬＵＴのデータを示す。１０００は、ＬＵＴのデータを１つパッキングした例である。１１００は、ＬＵＴのデータを２つパッキングした例である。１２００は、ＬＵＴのデータを３つパッキングした例である。１３００は、ＬＵＴのデータを４つパッキングした例である。
【００４２】
図９に示すＳ９０１において、ＣＰＵ１０１は、初期設定として注目するＬＵＴのアドレスｉを１設定し、パッキングの基となるアドレスｂを０設定し、パッキングする個数ｔに最大値であるｔｍａｘを設定する。このとき、ｔｍａｘには、同時に書き込み可能なメモリの個数Ｒが設定される。
【００４３】
Ｓ９０２乃至Ｓ９０４において、ＣＰＵ１０１は、パッキングする個数分、例えばｔ＝３であればＫ１、Ｋ２、Ｋ３のビット数を決定する。具体的には、Ｓ９０２において、ＣＰＵ１０１は、データバスの幅ｍからヘッダのビット幅ｈを引いた値をｔで割ることでＫｔを決定する。ヘッダのビット幅ｈは、メモリの構成によって決定される。ヘッダのビット幅ｈの最大値はメモリの個数となるため、メモリの個数を表現するのに必要なビット数がｈとなる。続いて、Ｓ９０３において、ＣＰＵ１０１は、ｔが０であるか否かを判定する。０でなければＳ９０４に進み、ＣＰＵ１０１は、ｔから１を引いてＳ９０２に処理を戻す。一方、０であれば、Ｓ９０５に進む。
【００４４】
Ｓ９０５において、ＣＰＵ１０１は、パッキングを行うＬＵＴのアドレスｉにパッキングの始めのアドレスｓｔａｒｔｉを代入する。さらに、ＣＰＵ１０１は、変数ｃｎｔに０を代入して初期化し、パッキングする個数ｊにＲを代入する。続いて、Ｓ９０６において、ＣＰＵ１０１は、注目するＬＵＴのアドレスｉに対応するデータＤｉからパッキングの基となるアドレスｂに対応するデータＤｂを差し引いたデータｄｉを算出する。さらに、Ｓ９０７において、ＣＰＵ１０１は、Ｓ９０６で算出した値ｄｉを表現するのに必要なビット数ｋｉを算出する。
【００４５】
次に、Ｓ９０８において、ＣＰＵ１０１は、パッキングに必要なデータ幅ｋｉとパッキングするデータ幅Ｋｊとを比較する。ここで、ｋｉがＫｊより大きい場合は、パッキングすることができないためＳ９０９に進む。Ｓ９０９において、ＣＰＵ１０１は、データ幅Ｋｊを広げるためにｊから１を引く。また、ＣＰＵ１０１は、変数ｃｎｔも０に戻し、ＬＵＴのアドレスｉにｓｔａｒｔｉを代入して初期化し、Ｓ９０６に処理を戻す。一方、ｋｉがＫｊ以下であれば、パッキングの対象となっているデータがパッキング可能であるため、Ｓ９１０に進み、次のデータにパッキングの対象を移す。Ｓ９１０において、ＣＰＵ１０１は、次のデータにパッキングの対象を移すためにｉに１を加算し、変数ｃｎｔに１を加算する。
【００４６】
Ｓ９１１において、ＣＰＵ１０１は、ｊが変数ｃｎｔと等しいか否かを判定する。等しい場合はＳ９１２に進み、等しくないときはＳ９０６に戻る。Ｓ９１２において、ＣＰＵ１０１は、ｊ個のデータをパッキングし、ヘッダ情報を付加する。ヘッダ情報には、ｊが使用される。このことによって、データがいくつパッキングされているか判断が可能となる。
【００４７】
その後、Ｓ９１３において、ＣＰＵ１０１は、全てのＬＵＴのデータに対してパッキング処理が行われたか否かを判定する。全てのＬＵＴのデータに対してパッキング処理が完了していない場合は、Ｓ９１４に進み、ＣＰＵ１０１は、パッキングを開始するアドレスｓｔａｒｔｉにｉ＋１を代入し、パッキングの基となるアドレスｂにｉを代入してＳ９０５に処理を戻す。一方、全てのＬＵＴのデータに対してパッキング処理が完了していれば、本フローチャートの処理を終了する。
【００４８】
以上説明したように、本実施形態では、バスのバス幅からヘッダ情報のビット幅を減算した値をパッキング対象となるパラメータの個数で除算した除算結果が、パッキング対象となる各差分値のビット幅以上となるように、パッキング対象のパラメータの個数を決定する。これにより、本実施形態に係るヘッダ情報は、パッキング対象となるパラメータの個数のみを含み、第１の実施形態に係るヘッダ情報から情報量を低減することができる。
【００４９】
＜第３の実施形態＞
以下では、図１１乃至図１３を参照して、本発明の第３の実施形態について説明する。本実施形態では、ＬＵＴを構成するＳＲＡＭの数のｎ倍個のデータをパッキングする場合について説明する。ここでは、第１の実施形態と異なる技術、即ち、ＬＵＴデータのパッキング方法とパッキングされたＬＵＴデータの復元方法のみについて詳細に説明する。まず、図１１を参照して、ＬＵＴデータのパッキング方法について説明する。以下で説明する処理は、ＣＰＵ１０１によってＲＯＭ、ＨＤ等に格納された制御プログラムをＲＡＭに読み出して実行される。図１２はパッキングデータの構造例を示す。
【００５０】
Ｓ１４０１において、ＣＰＵ１０１は、変数ｎに１を代入して初期化を行う。続いて、Ｓ１４０２において、ＣＰＵ１０１は、パッキングするデータのデータ幅Ｌｎを算出する。データバスの幅ｍからヘッダ情報のデータ幅ｈを分割したＳＲＡＭの数Ｍと変数ｎを積算した値で割ることでＬｎを算出する。ここでＬｎが整数でない場合、小数点以下は切り捨てるものとする。図１２の１５００に示すように、ヘッダ情報１５０２は、ＳＲＡＭの数Ｍのｎ倍個のデータのパッキング成功フラグｆ１５０３と成功した倍数ｎ１５０４を含む。ここで、ｎは自然数である。ヘッダ情報１５０２のビット幅ｈは、成功フラグｆ１５０３のビット幅ｈｆと倍数ｎ１５０４のビット幅ｈｎを加算した値である。また、データ幅Ｌｎが整数でなく、小数点以下を切り捨てた場合、１８０１に示すように、データ１８０１は下詰めで構成され、空白領域１８０３ができる。
【００５１】
次に、Ｓ１４０３において、ＣＰＵ１０１は、変数ｃｎｔに１を代入することで初期化する。続いて、Ｓ１４０４において、ＣＰＵ１０１は、注目するＬＵＴのアドレスｉに対応するデータＤｉからパッキングの基となるアドレスｂに対応するデータＤｂを差し引いたデータｄｉを算出する。さらに、Ｓ１４０５において、ＣＰＵ１０１は、ｄｉを表現するのに必要なビット数ｋｉを算出する。
【００５２】
Ｓ１４０６において、ＣＰＵ１０１は、ｋｉとＬｎを比較し、ｋｉが大きい場合はＳ１４１０に進み、ＬｎがＫｉ以上である場合はＳ１４０７に進む。ｋｉが大きい場合は、対象であるＤｉがパッキング可能であると判断し、次のアドレスに対象を移す。一方、ＬｎがＫｉ以上である場合には、対象であるＤｉがパッキングできないと判断する。
【００５３】
Ｓ１４０７において、ＣＰＵ１０１は、変数ｃｎｔがＭとｎを積算した値と等しいか否かを判定する。等しくない場合は、Ｓ１４０８に進み、ＣＰＵ１０１は、次のデータに対象を移すために変数ｉと変数ｃｎｔに１を加算し、Ｓ１４０４に処理を戻す。一方、等しい場合は、ｎ倍個のデータがパッキングできると判断し、より多くのデータがパッキング可能であるか調べるためにＳ１４０９に進む。Ｓ１４０９において、ＣＰＵ１０１は、より多くのデータがパッキング可能であるか調べるためにｎに１を加算し、変数ｉを初期化するためにｂに１を加算した数を代入して、処理をＳ１４０２に戻す。
【００５４】
Ｓ１４１０において、ＣＰＵ１０１は、変数ｎが１であるか否かを判定し、１である場合はＳ１４１２に進み、１でない場合はＳ１４１１に進む。ここでは、変数ｎが１である場合は、ＬＵＴの隣り合う出力値の差が大きすぎるため、複数個のＬＵＴデータのパッキングができないと判断する。
【００５５】
Ｓ１４１１において、ＣＰＵ１０１は、ＳＲＡＭの数Ｍのｎ倍個のデータのパッキングができないと判断し、パッキングする数ＰをＳＲＡＭの数Ｍのｎ−１倍個とし、Ｐ個のデータをパッキングし、ヘッダ情報を付加する。ＬＵＴが４分割され、１倍個のデータをパッキングする場合は、１５００に示すようにデータ１５０１とヘッダ情報１５０２をパッキングする。ヘッダ情報１５０２では、複数データパッキングの成功フラグｆ１５０３が１に設定され、倍数ｎ１５０４がｎ−１に設定される。このとき、ｄａｔａ１に存在するデータは、メモリ４０２１へ書き込みが実行される。ｄａｔａ２に存在するデータはメモリ４０２２へ書き込みが実行される。ｄａｔａ３に存在するデータはメモリ４０２３へ書き込みが実行される。ｄａｔａ４に存在するデータはメモリ４０２４へ書き込みが実行される。これにより、第１及び第２の実施形態で必要とされたＬＵＴ設定部４０３のセレクタ７０１７で行われた複雑なメモリ制御が不要となる。２倍個のデータをパッキングする場合は、１６００に示すようにデータ１６０１とヘッダ情報１６０２とをパッキングする。
【００５６】
Ｓ１４１２において、ＣＰＵ１０１は、ＳＲＡＭの数Ｍの１倍個のデータのパッキングに失敗したと判断し、１７００に示すように、１個のＬＵＴデータの差分情報である差分データ（差分値）１７０１とヘッダ情報１７０２とをＭ回パッキングする。ヘッダ情報１７０２では、複数データパッキングの成功フラグｆ１７０３が０に設定され、倍数ｎ１７０４が０に設定される。
【００５７】
Ｓ１４１１又はＳ１４１２のパッキングが終了すると、Ｓ１４１３において、ＣＰＵ１０１は、全てのＬＵＴデータのパッキング処理が終わったか否かを判定する。終了していない場合には、Ｓ１４１４に進み、ＣＰＵ１０１は、変数ｂにパッキングした個数Ｐを加算し、変数ｎに１を代入する。さらに、Ｓ１４１５において、ＣＰＵ１０１は、パッキングの対象アドレスｉと、変数ｂとに１を加算した値を代入し、処理をＳ１４０２に戻す。一方、Ｓ１４１３で全てのパッキングが終了していると判定されると、本フローチャートの処理を終了する。
【００５８】
次に、図１３を参照して、パッキングされたＬＵＴデータの復元方法について説明する。以下で説明する処理は、ＣＰＵ１０１によってＲＯＭ、ＨＤ等に格納された制御プログラムをＲＡＭに読み出して実行される。
【００５９】
Ｓ１９０１において、ヘッダ解析部７０１は、ヘッダ情報１５０２を解析し、解析結果をデータ分割部７００２、セレクタ７０１６、７０１７、７０１８に転送する。ここで、ヘッダ解析部７０１は、複数のＬＵＴデータパッキングの成功フラグｆ１５０３が１であるか否かを解析し、１の場合は、倍数ｎ１５０４の数も解析して、転送する。
【００６０】
次に、１９０２において、データ分割部７００２は、ヘッダ解析部７０１から転送された情報を参照しながら分割データを生成し、生成した分割データをそれぞれ分割データ７００４、７００５、７００６、７００７へ転送する。具体的には、成功フラグｆが１の場合は、倍数ｎ１５０４を参照しながらデータ１５０１を分割し、同時に分割データ７００４、７００５、７００６、７００７へ転送する。一方、成功フラグｆが０の場合は、差分データ１７０１が１つしかないため、Ｍ回の転送で全ての分割データが揃う。したがって１回目に転送されてきた差分データ１７０１は、分割データ７００４に転送される。２回目に転送されてきた差分データ１７０１は、分割データ７００５に転送される。３回目に転送されてきた差分データ１７０１は、分割データ７００６に転送される。４回目に転送されてきた差分データ１７０１は、分割データ７００７に転送される。
【００６１】
次に、Ｓ１９０３において、加算器７００８は、分割データ７００４とカレントデータ７００３とを加算し、加算結果を復元データ７０１２へ転送する。また、加算器７００９は、分割データ７００５とカレントデータ７００３とを加算し、加算結果を復元データ７０１３へ転送する。また、加算器７０１０は、分割データ７００６とカレントデータ７００３とを加算し、加算結果を復元データ７０１４へ転送する。さらに、加算器７０１１は、分割データ７００７とカレントデータ７００３とを加算し、加算結果を復元データ７０１５へ転送する。
【００６２】
次に、Ｓ１９０４において、セレクタ７０１６は、復元データ７０１５をカレントデータ７００３へ転送する。続いて、Ｓ１９０５において、セレクタ７０１７は、復元データ７０１２をメモリ４０２１へ書き込み、復元データ７０１３をメモリ４０２２へ書き込み、復元データ７０１４をメモリ４０２３へ書き込み、復元データ７０１５をメモリ４０２４へ書き込む。セレクタ７０１７の書き込みが完了すると、Ｓ１９０６において、アドレスカウンタ７０１９がインクリメントされる。
【００６３】
以上のような方法でパッキングを行うことで、本実施形態では、第１及び第２の実施形態で必要とされたＬＵＴ設定部４０３のセレクタ７０１７で行われた複雑なメモリ制御が不要となり、回路を簡素化することが可能となる。
【００６４】
＜他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005460292.tif 000002
【図２】
0005460292.tif 000003
【図３】
0005460292.tif 000004
【図４】
0005460292.tif 000005
【図５】
0005460292.tif 000006
【図６】
0005460292.tif 000007
【図７】
0005460292.tif 000008
【図８】
0005460292.tif 000009
【図９】
0005460292.tif 000010
【図１０】
0005460292.tif 000011
【図１１】
0005460292.tif 000012
【図１２】
0005460292.tif 000013
【図１３】
0005460292.tif 000014