説明

画像処理装置、その制御方法、及びプログラム

【課題】制御モジュール間におけるデータ転送に関する負荷を低減することにより、画像処理に関するパラメータの設定速度を向上する画像処理装置及びその制御方法を提供する。
【解決手段】画像処理装置は、画像処理に関する連続したパラメータ、例えば、LUTのデータを記憶するための複数のメモリを備える。また、画像処理装置は、複数のメモリにパラメータを転送するためのバスのバス幅に収まるように、複数のパラメータの差分情報をパッキングし、バスを介して転送する。さらに、画像処理装置は、転送された差分情報から複数のパラメータを復元し、復元された複数のパラメータをそれぞれ並行して、異なるメモリに設定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、その制御方法及びプログラムに関するものである。
【背景技術】
【0002】
デジタル複合機では、スキャナで読み取った画像データに各種の画像処理を施し、プリンタで画像出力を行う。代表的な画像処理にはγ変換処理、フィルタ処理、色補正処理、階調処理などがある。入力された画像データに対してこのような画像処理を行うときは、メインメモリ上の未処理の画像データをDMAC(Direct Memory Access Controller)の制御により、それぞれの画像処理モジュールに転送する。その後、画像処理後の画像データをDMACの制御により、画像処理モジュールからメインメモリに転送する。また、各画像処理をユーザなどが設定した画質モードで実行するために、各画像処理モジュールは画像処理パラメータを保持するためのレジスタやメモリを内蔵している。
【0003】
色補正処理の方法としては、入力画像データを均等色空間データに変換するための色座標変換方法を含めて、従来から多くの提案がなされている。このような方法として、例えば、LUT(Look Up Table)法がある。LUT法の1つである直接変換法は、全ての入力画像データの組み合わせに対して色補正データを予め計算してその結果をLUTである色補正テーブルに格納し、入力画像データに対するテーブル値を参照し、出力画像データとして出力する方法である。LUT法で使用される色補正テーブルはROM等の不揮発性メモリに保持される。入力画像データをメモリのアドレスとして入力し、メモリから読み出したデータを出力画像データとして出力する。
【0004】
一般的にこれらのパラメータの設定はCPU(Central Processing Unit)が行う。しかし、CPUの負荷が高まり、レジスタに対するパラメータの書き込みから画像処理終了までの時間も長くなってしまう。そこで、特許文献1には、CPUが予めメインメモリ上に画像処理パラメータを記憶しておき、パラメータ転送用のDMACにより、メインメモリ上の画像処理パラメータをレジスタに転送する方法が提案されている。特許文献1は、画像処理モジュールの画像処理パラメータを一旦メモリに格納してからDMA処理によって画像処理モジュールに設定するようにしているため、CPUの負荷を低減することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−188434号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記従来技術では、以下に記載する問題がある。例えば、近年画質への要求が厳しくなっており、高画質化を実現するために、コピー処理時のdpiの高密度化、画像データの高解像度化(データビット数の増加)、補正の細密化などが進行している。これに伴って、LUTの入力データのビット数が増加し、LUTデータの書き込み、即ち、実際に使用するLUTの形成に膨大な時間が掛かってしまう。例えば、12ビット3色の入力画像データの場合は12288通りの入力が存在するため、12288個の色補正テーブルを設定する必要がある。このように、LUTの設定に時間を要するために、装置全体の処理速度が低下してしまうという問題がある。これはLUTの設定だけに関わらず、一般的な画像処理パラメータの設定に関しても同様である。
【0007】
本発明は、上述の問題に鑑みて成されたものであり、制御モジュール間におけるデータ転送に関する負荷を低減することにより、画像処理に関するパラメータの設定速度を向上する画像処理装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、画像処理装置ととして実現できる。画像処理装置は、画像処理に関する連続したパラメータを記憶する複数の記憶手段と、複数の記憶手段にパラメータを転送するためのバスのバス幅に収まるように、複数のパラメータの差分情報をパッキングするパッキング手段と、パッキング手段によってパッキングされたデータをバスを介して転送する転送手段と、転送手段によって転送されたパッキングされたデータから複数のパラメータを復元する復元手段と、復元手段によって復元された複数のパラメータをそれぞれ並行して、異なる記憶手段に設定する設定手段とを備えることを特徴とする。
【発明の効果】
【0009】
本発明は、例えば、制御モジュール間におけるデータ転送に関する負荷を低減することにより、画像処理に関するパラメータの設定速度を向上する画像処理装置及びその制御方法を提供できる。
【図面の簡単な説明】
【0010】
【図1】第1の実施形態に係る画像処理装置の構成例を示すブロック図である。
【図2】第1の実施形態に係る入出力特性を示す図である。
【図3】第1の実施形態に係る入出力特性に対応するLUTテーブルの一例を示す図である。
【図4】第1の実施形態に係る画像処理回路104の構成例を示すブロック図である。
【図5】第1の実施形態に係るパッキング処理の手順を示すフローチャートである。
【図6】第1の実施形態に係るパッキングされたデータの構成例を示す図である。
【図7】第1の実施形態に係るLUT設定部403の構成例を示すブロック図である。
【図8】第1の実施形態に係るパッキングされたデータの構成例を示す図である。
【図9】第2の実施形態に係るパッキング処理の手順を示すフローチャートである。
【図10】第2の実施形態に係るパッキングされたデータの構成例を示す図である。
【図11】第3の実施形態に係るパッキング処理の手順を示すフローチャートである。
【図12】第3の実施形態に係るパッキングされたデータの構成例を示す図である。
【図13】第3の実施形態に係るLUT設定部の処理手順を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための最良の形態について図面を用いて説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【0012】
<第1の実施形態>
<画像処理装置の構成>
以下では、図1乃至図8を参照して、第1の実施形態について説明する。まず、図1を参照して、本実施形態における画像処理装置の構成について説明する。図1に示すように、画像処理装置100は、CPU(Central Processing Unit:中央処理装置)101、メモリ102、DMA(Direct Memory Access)103、及び、画像処理回路104を備える。なお、各コンポーネントは、内部バス105を介して相互通信可能に接続されている。
【0013】
DMA103は、CPU101の設定に従い、メモリ102からデータを読み出し、読み出したデータを画像処理回路104に出力する。メモリ102は、ROM、RAM、ハードディスク(HD)などから構成される。ROMは、CPU101が実行する各種の制御プログラムや画像処理プログラムを格納する。RAMは、CPU101がデータや各種情報を格納する参照領域や作業領域として用いられる。このRAMとHD上で画像データを蓄積し、複数の画像の出力を行う。CPU101は、RAM上にROMやHD等に格納された制御プログラムをロードし実行することにより、後述する各種処理を実行する。
【0014】
デジタル複合機のような画像処理装置100では、入出力特性変換処理、フィルタ処理、色補正処理、階調処理などの画像処理を実行することができる。しかし、本実施形態では、本発明の説明を容易にするため、画像処理回路104が実行する画像処理の一例として、入出力特性変換処理について詳細に説明する。つまり、本実施形態では、画像処理に関連する連続したパラメータであるLUT(ルックアップテーブル)の設定値について本発明を適用する例について説明する。
【0015】
<入出力特性変換>
次に、図2を参照して、入出力特性変換について説明する。画像処理回路104は、例えば図2に示すような入出力特性201に基づく入出力特性変換を行うものとする。図2においては、横軸に入力データを示し、縦軸に入出力特性変換後の出力データを示す。画像処理回路104は、入出力特性201を用いて、入力される画像データを変換する。例えば、図2に示す入出力特性201では、入力データが値「32」、値「96」、値「128」のときは、それぞれ値「82」、値「120」、値「130」の出力データに変換される。
【0016】
次に、図3を参照して、図2に基づく入出力特性201に対応するLUTデータ301について説明する。ここで、LUTとは、入力される画像データの色座標を変換するためのテーブルである。したがって、LUTデータとは、LUTを構成する設定値を示す。LUTデータ301は、図3に示すように、アドレスの項目302とデータの項目303とを含んで構成される。アドレスの項目302には、入出力特性201の入力データの各値が記述され、データの項目303には入出力特性201の出力データの各値が記述される。例えば、画像処理回路104に対して値「32」の入力データが入力されると、画像処理回路104は、LUTデータ301を参照して、「32」を示すアドレスの項目302を検索し、当該アドレスの項目302に対応付けられているデータの項目303から「82」を取得する。LUTデータ301は、CPU101によって生成される。また、CPU101は、LUTデータ301のパッキング処理などを行う。LUTデータ301のパッキング処理については後述する。
【0017】
<画像処理回路の構成>
次に、図4を参照して、本実施形態に係る画像処理回路104の構成について説明する。図4に示すように、画像処理回路104は、画像処理モジュール401と画像処理モジュール401がテーブルを参照するための画像処理用LUT402と画像処理用LUT402にテーブルを設定するためのLUT設定部403とを備える。
【0018】
LUT設定部403は、DMA103からのLUTデータ301を、画像処理用LUT402に書き込む。なお、LUTデータ301の画像処理用LUT402への設定処理については後述する。画像処理モジュール401は、例えば図2に示すような入出力特性201に基づく入出力変換を画像処理用LUT402を参照して行う。
【0019】
本実施形態によれば、画像処理用LUT402は、1色につき4つのSRAMを含んで構成される。従来では1色のLUTにつき1つのSRAMで構成されることが一般的である。しかし、SRAMなどのメモリは、1回のリード又はライトアクセス時に1つ、多くても2つのアドレスにしかアクセスできない。このため、LUTで色補正テーブルを形成する場合には、LUTの入力が取り得るアドレスすべてに逐次的に設定する必要がある。ここで、本実施形態では、1色分に対応するメモリを4つに分割することで、4つの色補正テーブルのデータを同時に設定可能にしている。これにより、1つのSRAMでLUTを構成した場合と比較して4倍速い設定が可能となる。
【0020】
このときの各SRAMへのアクセス方法について説明する。LUTのアドレス下位2ビットで4つのSRAMのうち何れのSRAMへのアクセスであるかを判定する。LUTのアドレス下位2ビットが0である場合は、メモリ4021へのアクセスとする。LUTのアドレス下位2ビットが1だった場合には、メモリ4022へのアクセスとする。LUTのアドレス下位2ビットが2だった場合には、メモリ4023へのアクセスとする。LUTのアドレス下位2ビットが3だった場合には、メモリ4024へのアクセスとする。また、LUTのアドレス下位2ビットを除いたものがSRAMのアドレスとして入力される。
【0021】
<パッキング処理>
図2に示すように、入出力特性変換処理などで用いられる入出力特性は、隣り合う出力値が近い値(つまり、連続したパラメータ)をとることが多い。このことから、隣り合うLUTデータの差分を算出し、差分情報のみを扱えば、情報量を圧縮することができる。圧縮した情報をパッキングすることで、効率良くLUTデータを転送することが可能である。このときに、メモリの構成を考慮しながらLUTデータのパッキング処理を行う。ここで、図5を参照して、CPU101によるLUTデータ301のパッキング処理について説明する。以下で説明する処理は、CPU101によってROM、HD等に格納された制御プログラムをRAMに読み出して実行される。
【0022】
S501において、CPU101は、初期設定として注目するLUTのアドレスiを1に設定し、パッキングの基となるアドレスbを0に設定し、パッキング可能な個数pを1に設定する。続いて、S502において、CPU101は、注目するLUTのアドレスiに対応するデータDiからパッキングの基となるアドレスbに対応するデータ(基準パラメータ)Dbを差し引いたデータdiを算出する。さらに、S503において、CPU101は、S502で算出した値diを表現するのに必要なビット数kiを算出する。
【0023】
次に、S504において、CPU101は、ビット数kiと前回のビット数k(i−1)とを比較し、kiの方が大きい場合にはS505へ進み、それ以外の場合にはS506へ進む。S505において、CPU101は、パッキングされる中で一番大きいビット数kmaxにkiを代入し、S507に進む。一方、ビット数Kiが前回のビット数k(i−1)以下である場合は、S506において、CPU101は、パッキングされる中で一番大きいビット数kmaxに前回のビット数k(i−1)を代入し、S507に進む。
【0024】
S507において、CPU101は、パンキングされるLUTのビット幅の合計であるkallをkmaxとpを積算することで算出する。続いて、S508において、CPU101は、S507で算出したkallとデータバスのバス幅mからパッキングしたLUTデータの個数及びビット幅を示すヘッダ情報602のビット幅hを差し引いた値を比較する(m−h>Kall)。
【0025】
図6に示すヘッダ情報602は、LUT設定部403でパッキングされたLUTのデータ601がどのようにパッキングされているかを判定するために用いられる。ヘッダ情報602は、データ幅w603とパッキングされているLUTのデータの数P604とを備える。ヘッダ情報602のビット幅hは、メモリの構成とバス幅mによって決定される。パッキングするLUTのデータの数Pの最大値はメモリの個数となるため、メモリの個数を表現するのに必要なビット数がPのビット幅hpとなる。パッキングしたデータのデータ幅wの最大値はバス幅mからPのビット幅hpを引いた値となるので、引いた値を表現するのに必要なビット数がwのビット幅hwとなる。したがって、ヘッダ情報602のビット幅hはhpとhwを加算した値となる。
【0026】
パッキングされたデータのビット幅の合計kallがデータ幅mからヘッダのビット幅hを減算した値より小さい場合はさらにデータをパッキングできると判定し、CPU101は、S509に進み、アドレスi及び個数pに1を加算する。その後、S502に進み、CPU101は、S502乃至S507の処理を繰り返す。つまり、S508でさらにパッキングが可能だと判定した場合は、CPU101は、次のLUTのアドレスにパッキング対象を移し、S502乃至S507の処理を実行する。
【0027】
一方、S508の条件に合致しない場合は、CPU101は、p個のパッキングはできないと判定し、S510に進み、pから1を引き、パッキング対象のアドレスiから1を減算する。続いて、S511において、CPU101は、パッキング可能な数pと同時に書き込みが可能なレジスタの数Rを比較し、Rがp以下の場合はS512に進み、pの方が小さい場合はS513に進む。S512において、CPU101は、パッキングするLUTのデータの数PとしてRを代入するし、S514に進む。一方、S513において、CPU101は、パッキングするLUTのデータの数Pとしてpを代入し、S514に進む。
【0028】
S514において、CPU101は、図6に示すようにヘッダ情報602とP個のLUTのデータ601をパッキングする。その後、S515において、CPU101は、全てのLUTデータに対してパッキング処理が終了したか否かを判定する。終了していなければ、S516に進み、CPU101は、次のパッキングを行うために差分のベースとなるアドレスbをiから1を引くことで1つ前のパッキングの最後のアドレスを求め、パッキング可能な数pに1を代入して初期化する。つまり、ここでは、差分情報を算出するための基準パラメータのアドレスを設定している。その後、S502乃至S514の処理を繰り返す。一方、終了していれば、本フローチャートの処理を終了する。
【0029】
このように、本実施形態によれば、CPU101は、前回のLUTのデータとパッキングするLUTのデータの差分情報を計算し、複数の差分情報をパッキングして転送することで転送に関する処理負荷を低減している。また、LUTのアドレスデータが連続することを利用し、LUTのデータの個数からアドレスを割り出す作業をLUT設定部403に設け、LUTのアドレスデータの転送を省略することで、転送するデータ量を低減している。
【0030】
<LUT設定処理>
次に、図7及び図8を参照して、LUT設定部403によるLUT設定処理について説明する。図7は、DMA103から転送されたパッキングされたLUTデータ301とヘッダ情報から基のLUTの設定値を復元して画像処理用LUT402へ設定するLUT設定部403の詳細な構成を示す。図8は、DMA103から転送されるパッキングされたLUTのデータのデータ構造の例を示す。
【0031】
LUT設定部403は、ヘッダ解析部701、データ生成部702、及びアドレス生成部703を備える。ヘッダ解析部701は、図8に示すヘッダ情報802からデータ構造を解析し、データ生成部702、アドレス生成部703へ解析した情報を出力する。データ生成部702は、ヘッダ解析部701から出力された情報に基づいてパッキングされたデータを復元する。アドレス生成部703は、ヘッダ解析部701から出力された情報に基づいてパッキングされたアドレスを復元する。
【0032】
まず、CPU101は、LUTのアドレス0に対応する値を初期値データ7001に設定する。また、DMA103から転送されたデータは、ヘッダ解析部701とデータ分割部7002とに入力される。ヘッダ解析部701では転送されたデータからヘッダ情報を解析する。図8に示すように、例えば、データの先頭の6ビットがヘッダ情報802で、ヘッダ情報の先頭3ビットがデータ幅情報803、後尾3ビットがデータの個数情報804を示す。図8の例では、転送されたデータが、5ビットのデータ幅で3つのデータがパッキングされていることが分かる。
【0033】
ヘッダ解析部701は解析した情報をデータ分割部7002とセレクタ7016、7017、7018に出力する。データ分割部7002は、ヘッダ解析部から送られてきた情報に基づいてデータを分割し、分割したデータを分割データ7004、7005、7006、7007に転送する。
【0034】
加算器7008は、分割データ7004と1つ前に画像処理用LUT402へ設定した値が保持されているカレントデータ7003からの入力とを加算し、復元データ7012へ転送する。分割データ7004に保持された値はカレントデータ7003との差分であるため、加算器7008で加算することでLUTのデータを復元することができる。加算器7009は、分割データ7005とカレントデータ7003からの入力とを加算し、復元データ7013へ転送する。加算器7010は、分割データ7006とカレントデータ7003からの入力とを加算し、復元データ7014へ転送する。加算器7011は、分割データ7007とカレントデータ7003からの入力とを加算し、復元データ7015へ転送する。
【0035】
復元データ7012、7013、7014、7015に保持された値はセレクタ7016、7017に転送される。セレクタ7016は、ヘッダ解析部701から転送されたデータの個数情報804からカレントデータ7003へ転送する値を決定する。データの個数情報が1の場合、復元されたデータは1つしかないので次のパッキングの基となるデータは、復元データ7012の値となるため、セレクタ7016は、復元データ7012から転送された値をカレントデータ7003へ転送する。同様に、データの個数情報804が2の場合、次のパッキングの基となるデータは、復元データ7013の値となるため、セレクタ7016は、復元データ7013から転送された値をカレントデータ7003へ転送する。データの個数情報804が3の場合、セレクタ7016は、復元データ7014から転送された値をカレントデータ7003へ転送する。データの個数情報804が4の場合、セレクタ7016は、復元データ7015から転送された値をカレントデータ7003へ転送する。
【0036】
セレクタ7017は、ヘッダ解析部701から転送されたデータの個数情報804から画像処理用LUT402に存在する複数のメモリに対して、どのメモリへ復元した値を設定するか選択する。本実施形態では、画像処理用LUT402が4つのメモリに分割されている場合について想定している。また、セレクタ7017は、1つ前に設定したメモリを保持している。さらに、メモリ4021、メモリ4022、メモリ4023、メモリ4024の順番で書き込みを行うメモリが決定される。前回設定したメモリがメモリ4023で、データの個数情報804が2の場合には、メモリ4024とメモリ4021へ同時に書き込みが実行される。ヘッダ解析部701から転送されたデータの個数情報804が1の場合には復元データ7012の値を指定されたメモリへ転送する。データの個数情報804が2の場合には復元データ7012、7013の値を指定されたメモリへ転送する。データの個数情報804が3の場合には復元データ7012、7013、7014の値を指定されたメモリへ転送する。データの個数情報804が4の場合には復元データ7012、7013、7014、7015の値を指定されたメモリへ転送する。図7に示すように、セレクタ7017からは、各メモリへ制御信号が接続されており、書き込みを実行するメモリにのみ書き込みが行われる。
【0037】
セレクタ7018は、ヘッダ解析部701から転送されたデータの個数情報804から画像処理用LUT402に存在する複数のメモリに対して、復元したデータのアドレスを出力する。メモリ4021、メモリ4022、メモリ4023、メモリ4024という順番でアドレスが割り振られている。セレクタ7018には、1つ前に設定したメモリが保持されており、書き込みメモリがメモリ4023からメモリ4021に移るときに加算器7020からアドレスカウンタ7019に1が加算される。
【0038】
このように、LUT設定部403は、パッキングされて送られてきた複数のLUTデータを復元することで、画像処理用LUT402へ同時に複数のLUTデータを書き込むことでLUTの設定にかかる時間を削減することが可能である。LUTデータの差分情報が負である場合は2の補数を使ってパッキングしたLUTデータを復元する。本実施形態では、設定するパラメータとしてLUTを例に挙げたがフリップフロップで構成されたレジスタに対する画像処理パラメータの設定であってもよい。
【0039】
入出力特性は図2に示すように隣り合う出力が近い値を取ることが多いが、全く離れた値にも設定が可能である。こういった場合でも本発明は効果を得ることができる。一般的にCPUのシステムバスは32ビットか64ビットであり、入出力特性処理のデータ幅が8ビットの場合、差分情報は最大9ビット必要である。したがって、32ビットの中に少なくとも3つの差分情報がパッキングできるため、少なくとも従来より3倍速い設定が可能である。
【0040】
以上説明したように、本実施形態に係る画像処理装置は、画像処理に関する連続したパラメータ、例えば、LUTのデータを記憶するための複数のメモリを備える。また、画像処理装置は、複数のメモリにパラメータを転送するためのバスのバス幅に収まるように、複数のパラメータの差分情報をパッキングし、バスを介して転送する。さらに、画像処理装置は、転送された差分情報から複数のパラメータを復元し、復元された複数のパラメータをそれぞれ並行して、異なるメモリに設定する。また、画像処理装置は、パッキングデータのヘッダ情報のビット幅と、1つ以上の差分値のビット幅との合計がパッキングデータを転送するバスのバス幅を超えないようにパッキング対象となるパラメータの個数を決定する。このように、本画像処理装置は、複数のパラメータの差分情報をパッキングして転送し、転送先で復元して復元したパラメータを複数のメモリに同時に設定することができ、転送負荷を低減するとともに、画像処理に関するパラメータの設定速度を向上させることができる。
【0041】
<第2の実施形態>
以下では、図9及び図10を参照して、本発明の第2の実施形態について説明する。本実施形態では、ヘッダ情報をより簡易化する方法について説明する。ここでは、第1の実施形態と異なる技術、即ち、LUTのデータのパッキング方法についてのみ説明する。図9は、LUTデータのパッキングの処理手順を示す。以下で説明する処理は、CPU101によってROM、HD等に格納された制御プログラムをRAMに読み出して実行される。また、図10は、パッキングされたLUTのデータを示す。1000は、LUTのデータを1つパッキングした例である。1100は、LUTのデータを2つパッキングした例である。1200は、LUTのデータを3つパッキングした例である。1300は、LUTのデータを4つパッキングした例である。
【0042】
図9に示すS901において、CPU101は、初期設定として注目するLUTのアドレスiを1設定し、パッキングの基となるアドレスbを0設定し、パッキングする個数tに最大値であるtmaxを設定する。このとき、tmaxには、同時に書き込み可能なメモリの個数Rが設定される。
【0043】
S902乃至S904において、CPU101は、パッキングする個数分、例えばt=3であればK1、K2、K3のビット数を決定する。具体的には、S902において、CPU101は、データバスの幅mからヘッダのビット幅hを引いた値をtで割ることでKtを決定する。ヘッダのビット幅hは、メモリの構成によって決定される。ヘッダのビット幅hの最大値はメモリの個数となるため、メモリの個数を表現するのに必要なビット数がhとなる。続いて、S903において、CPU101は、tが0であるか否かを判定する。0でなければS904に進み、CPU101は、tから1を引いてS902に処理を戻す。一方、0であれば、S905に進む。
【0044】
S905において、CPU101は、パッキングを行うLUTのアドレスiにパッキングの始めのアドレスstartiを代入する。さらに、CPU101は、変数cntに0を代入して初期化し、パッキングする個数jにRを代入する。続いて、S906において、CPU101は、注目するLUTのアドレスiに対応するデータDiからパッキングの基となるアドレスbに対応するデータDbを差し引いたデータdiを算出する。さらに、S907において、CPU101は、S906で算出した値diを表現するのに必要なビット数kiを算出する。
【0045】
次に、S908において、CPU101は、パッキングに必要なデータ幅kiとパッキングするデータ幅Kjとを比較する。ここで、kiがKjより大きい場合は、パッキングすることができないためS909に進む。S909において、CPU101は、データ幅Kjを広げるためにjから1を引く。また、CPU101は、変数cntも0に戻し、LUTのアドレスiにstartiを代入して初期化し、S906に処理を戻す。一方、kiがKj以下であれば、パッキングの対象となっているデータがパッキング可能であるため、S910に進み、次のデータにパッキングの対象を移す。S910において、CPU101は、次のデータにパッキングの対象を移すためにiに1を加算し、変数cntに1を加算する。
【0046】
S911において、CPU101は、jが変数cntと等しいか否かを判定する。等しい場合はS912に進み、等しくないときはS906に戻る。S912において、CPU101は、j個のデータをパッキングし、ヘッダ情報を付加する。ヘッダ情報には、jが使用される。このことによって、データがいくつパッキングされているか判断が可能となる。
【0047】
その後、S913において、CPU101は、全てのLUTのデータに対してパッキング処理が行われたか否かを判定する。全てのLUTのデータに対してパッキング処理が完了していない場合は、S914に進み、CPU101は、パッキングを開始するアドレスstartiにi+1を代入し、パッキングの基となるアドレスbにiを代入してS905に処理を戻す。一方、全てのLUTのデータに対してパッキング処理が完了していれば、本フローチャートの処理を終了する。
【0048】
以上説明したように、本実施形態では、バスのバス幅からヘッダ情報のビット幅を減算した値をパッキング対象となるパラメータの個数で除算した除算結果が、パッキング対象となる各差分値のビット幅以上となるように、パッキング対象のパラメータの個数を決定する。これにより、本実施形態に係るヘッダ情報は、パッキング対象となるパラメータの個数のみを含み、第1の実施形態に係るヘッダ情報から情報量を低減することができる。
【0049】
<第3の実施形態>
以下では、図11乃至図13を参照して、本発明の第3の実施形態について説明する。本実施形態では、LUTを構成するSRAMの数のn倍個のデータをパッキングする場合について説明する。ここでは、第1の実施形態と異なる技術、即ち、LUTデータのパッキング方法とパッキングされたLUTデータの復元方法のみについて詳細に説明する。まず、図11を参照して、LUTデータのパッキング方法について説明する。以下で説明する処理は、CPU101によってROM、HD等に格納された制御プログラムをRAMに読み出して実行される。図12はパッキングデータの構造例を示す。
【0050】
S1401において、CPU101は、変数nに1を代入して初期化を行う。続いて、S1402において、CPU101は、パッキングするデータのデータ幅Lnを算出する。データバスの幅mからヘッダ情報のデータ幅hを分割したSRAMの数Mと変数nを積算した値で割ることでLnを算出する。ここでLnが整数でない場合、小数点以下は切り捨てるものとする。図12の1500に示すように、ヘッダ情報1502は、SRAMの数Mのn倍個のデータのパッキング成功フラグf1503と成功した倍数n1504を含む。ここで、nは自然数である。ヘッダ情報1502のビット幅hは、成功フラグf1503のビット幅hfと倍数n1504のビット幅hnを加算した値である。また、データ幅Lnが整数でなく、小数点以下を切り捨てた場合、1801に示すように、データ1801は下詰めで構成され、空白領域1803ができる。
【0051】
次に、S1403において、CPU101は、変数cntに1を代入することで初期化する。続いて、S1404において、CPU101は、注目するLUTのアドレスiに対応するデータDiからパッキングの基となるアドレスbに対応するデータDbを差し引いたデータdiを算出する。さらに、S1405において、CPU101は、diを表現するのに必要なビット数kiを算出する。
【0052】
S1406において、CPU101は、kiとLnを比較し、kiが大きい場合はS1410に進み、LnがKi以上である場合はS1407に進む。kiが大きい場合は、対象であるDiがパッキング可能であると判断し、次のアドレスに対象を移す。一方、LnがKi以上である場合には、対象であるDiがパッキングできないと判断する。
【0053】
S1407において、CPU101は、変数cntがMとnを積算した値と等しいか否かを判定する。等しくない場合は、S1408に進み、CPU101は、次のデータに対象を移すために変数iと変数cntに1を加算し、S1404に処理を戻す。一方、等しい場合は、n倍個のデータがパッキングできると判断し、より多くのデータがパッキング可能であるか調べるためにS1409に進む。S1409において、CPU101は、より多くのデータがパッキング可能であるか調べるためにnに1を加算し、変数iを初期化するためにbに1を加算した数を代入して、処理をS1402に戻す。
【0054】
S1410において、CPU101は、変数nが1であるか否かを判定し、1である場合はS1412に進み、1でない場合はS1411に進む。ここでは、変数nが1である場合は、LUTの隣り合う出力値の差が大きすぎるため、複数個のLUTデータのパッキングができないと判断する。
【0055】
S1411において、CPU101は、SRAMの数Mのn倍個のデータのパッキングができないと判断し、パッキングする数PをSRAMの数Mのn−1倍個とし、P個のデータをパッキングし、ヘッダ情報を付加する。LUTが4分割され、1倍個のデータをパッキングする場合は、1500に示すようにデータ1501とヘッダ情報1502をパッキングする。ヘッダ情報1502では、複数データパッキングの成功フラグf1503が1に設定され、倍数n1504がn−1に設定される。このとき、data1に存在するデータは、メモリ4021へ書き込みが実行される。data2に存在するデータはメモリ4022へ書き込みが実行される。data3に存在するデータはメモリ4023へ書き込みが実行される。data4に存在するデータはメモリ4024へ書き込みが実行される。これにより、第1及び第2の実施形態で必要とされたLUT設定部403のセレクタ7017で行われた複雑なメモリ制御が不要となる。2倍個のデータをパッキングする場合は、1600に示すようにデータ1601とヘッダ情報1602とをパッキングする。
【0056】
S1412において、CPU101は、SRAMの数Mの1倍個のデータのパッキングに失敗したと判断し、1700に示すように、1個のLUTデータの差分情報である差分データ(差分値)1701とヘッダ情報1702とをM回パッキングする。ヘッダ情報1702では、複数データパッキングの成功フラグf1703が0に設定され、倍数n1704が0に設定される。
【0057】
S1411又はS1412のパッキングが終了すると、S1413において、CPU101は、全てのLUTデータのパッキング処理が終わったか否かを判定する。終了していない場合には、S1414に進み、CPU101は、変数bにパッキングした個数Pを加算し、変数nに1を代入する。さらに、S1415において、CPU101は、パッキングの対象アドレスiと、変数bとに1を加算した値を代入し、処理をS1402に戻す。一方、S1413で全てのパッキングが終了していると判定されると、本フローチャートの処理を終了する。
【0058】
次に、図13を参照して、パッキングされたLUTデータの復元方法について説明する。以下で説明する処理は、CPU101によってROM、HD等に格納された制御プログラムをRAMに読み出して実行される。
【0059】
S1901において、ヘッダ解析部701は、ヘッダ情報1502を解析し、解析結果をデータ分割部7002、セレクタ7016、7017、7018に転送する。ここで、ヘッダ解析部701は、複数のLUTデータパッキングの成功フラグf1503が1であるか否かを解析し、1の場合は、倍数n1504の数も解析して、転送する。
【0060】
次に、1902において、データ分割部7002は、ヘッダ解析部701から転送された情報を参照しながら分割データを生成し、生成した分割データをそれぞれ分割データ7004、7005、7006、7007へ転送する。具体的には、成功フラグfが1の場合は、倍数n1504を参照しながらデータ1501を分割し、同時に分割データ7004、7005、7006、7007へ転送する。一方、成功フラグfが0の場合は、差分データ1701が1つしかないため、M回の転送で全ての分割データが揃う。したがって1回目に転送されてきた差分データ1701は、分割データ7004に転送される。2回目に転送されてきた差分データ1701は、分割データ7005に転送される。3回目に転送されてきた差分データ1701は、分割データ7006に転送される。4回目に転送されてきた差分データ1701は、分割データ7007に転送される。
【0061】
次に、S1903において、加算器7008は、分割データ7004とカレントデータ7003とを加算し、加算結果を復元データ7012へ転送する。また、加算器7009は、分割データ7005とカレントデータ7003とを加算し、加算結果を復元データ7013へ転送する。また、加算器7010は、分割データ7006とカレントデータ7003とを加算し、加算結果を復元データ7014へ転送する。さらに、加算器7011は、分割データ7007とカレントデータ7003とを加算し、加算結果を復元データ7015へ転送する。
【0062】
次に、S1904において、セレクタ7016は、復元データ7015をカレントデータ7003へ転送する。続いて、S1905において、セレクタ7017は、復元データ7012をメモリ4021へ書き込み、復元データ7013をメモリ4022へ書き込み、復元データ7014をメモリ4023へ書き込み、復元データ7015をメモリ4024へ書き込む。セレクタ7017の書き込みが完了すると、S1906において、アドレスカウンタ7019がインクリメントされる。
【0063】
以上のような方法でパッキングを行うことで、本実施形態では、第1及び第2の実施形態で必要とされたLUT設定部403のセレクタ7017で行われた複雑なメモリ制御が不要となり、回路を簡素化することが可能となる。
【0064】
<他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
画像処理に関する連続したパラメータを記憶する複数の記憶手段と、
前記複数の記憶手段に前記パラメータを転送するためのバスのバス幅に収まるように、複数の前記パラメータの差分情報をパッキングするパッキング手段と、
前記パッキング手段によってパッキングされたデータを前記バスを介して転送する転送手段と、
前記転送手段によって転送された前記パッキングされたデータから複数の前記パラメータを復元する復元手段と、
前記復元手段によって復元された複数の前記パラメータをそれぞれ並行して、異なる前記記憶手段に設定する設定手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記パッキング手段は、
前記連続したパラメータのうち、パッキング対象となるパラメータの1つ前の基準パラメータに対する該パッキング対象となるパラメータの差分値を差分情報としてパッキングすることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記パッキングされたデータには、前記パッキング対象となるパラメータの差分値とともに、パッキング対象となるパラメータの個数及び前記差分値のデータ幅を含むヘッダ情報が含まれることを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記パッキング手段は、
前記ヘッダ情報のビット幅と、1つ以上の前記差分値のビット幅との合計が前記バスのバス幅を超えないように前記パッキング対象となるパラメータの個数を決定することを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記パッキングされたデータには、前記パッキング対象となるパラメータの差分値とともに、パッキング対象となるパラメータの個数を含むヘッダ情報が含まれることを特徴とする請求項2に記載の画像処理装置。
【請求項6】
前記パッキング手段は、
前記バスのバス幅から前記ヘッダ情報のビット幅を減算した値を前記パッキング対象となるパラメータの個数で除算した除算結果が、前記パッキング対象となる各差分値のビット幅以上となるように、前記パッキング対象のパラメータの個数を決定することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記復元手段は、
前記パッキングされたデータを、前記ヘッダ情報に従ってそれぞれのパラメータの差分値に分割する分割手段と、
前記分割手段によって分割された差分値にそれぞれ前記基準パラメータを加算する加算手段と、
を備えることを特徴とする請求項3乃至6の何れか1項に記載の画像処理装置。
【請求項8】
前記パッキング対象となるパラメータの個数は、最大で前記複数の記憶手段の個数に等しいことを特徴とする請求項3乃至7の何れか1項に記載の画像処理装置。
【請求項9】
前記パッキング対象となるパラメータの個数は、最大で前記複数の記憶手段の個数のn倍(nは自然数)であることを特徴とする請求項3乃至7の何れか1項に記載の画像処理装置。
【請求項10】
前記画像処理に関する連続したパラメータとは、入力される画像データの色座標を変換するためのルックアップテーブルの設定値であることを特徴とする請求項1乃至9の何れか1項に記載の画像処理装置。
【請求項11】
画像処理に関する連続したパラメータを記憶する複数の記憶手段を備える画像処理装置の制御方法であって、
パッキング手段が、前記複数の記憶手段に前記パラメータを転送するためのバスのバス幅に収まるように、複数の前記パラメータの差分情報をパッキングするパッキングステップと、
転送手段が、前記パッキングステップにおいてパッキングされたデータを前記バスを介して転送する転送ステップと、
復元手段が、前記転送ステップにおいて転送された前記パッキンされたグデータから複数の前記パラメータを復元する復元ステップと、
設定手段が、前記復元ステップにおいて復元された複数の前記パラメータをそれぞれ並行して、異なる前記記憶手段に設定する設定ステップと
を実行することを特徴とする画像処理装置の制御方法。
【請求項12】
請求項11に記載の画像処理装置の制御方法をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2011−130214(P2011−130214A)
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【出願番号】特願2009−286965(P2009−286965)
【出願日】平成21年12月17日(2009.12.17)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】