以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための図面において、同一の構成要素には原則として同一の符号を付し、その繰り返しの説明は省略する。
本明細書においては、「ルックアップテーブル」を「LUT」と表記する。
(実施の形態1)
図1は、本発明の実施の形態1に係る画像処理装置の機能構成を示している。
図1に示すように、画像処理装置10は、画像処理回路100、CPU(中央演算処理装置)110、外部メモリ120を備えている。
画像処理回路100は、DMAコントローラ101、伸長器102、演算処理部103、基本テーブル生成部104およびLUT用メモリ105を備えている。
DMAコントローラ(アクセス制御手段)101は、CPU110の設定に従い、ダイレクトメモリアクセス(DMA)により、外部メモリ120からデータ(圧縮された差分テーブルの差分テーブル値)を読み出し、この読み出したデータを伸長器102へ出力する。
伸長器(伸長手段)102は、受け取った圧縮された差分テーブル値を伸長し、この伸長した差分テーブル値を演算処理部103へ出力する。
基本テーブル生成部(基本テーブル生成手段)104は、CPU110によって設定される基本テーブルの生成に関わる生成規則情報を基に基本テーブル値を作成し、この作成した基本テーブル値を伸長器102の出力タイミングに合わせて演算処理部103へ出力する。なお、上記基本テーブルの生成に関わる生成規則情報(以下「生成規則情報」という。)については後述する。
演算処理部(演算処理手段)103は、基本テーブル生成部104からの基本テーブル値と伸長器102からの差分テーブル値とを演算処理することによりLUT(ルックアップテーブル)データを求め、この求めたLUTデータをLUT用メモリ(ルックアップテーブル記憶手段)105に書き込む。
CPU110は、DMAコントローラ101、伸長器102、演算処理部103および基本テーブル生成部104と接続され、これら各構成要素に対して、それぞれの処理に応じた設定を行う。
外部メモリ(差分テーブル記憶手段)120は、圧縮された差分テーブル160を格納している。
本実施の形態1では、画像処理回路100による画像処理は入出力特性変換とする。ここでは、例えば図2に示すような入出力特性130aに基づく入出力特性変換を行うものとする。
入出力特性130aは入力データに対する出力データを得るためのものであり、入出力特性130aからは、例えば、入力データが値「32」、値「96」、値「128」のときは、出力データはそれぞれ値「82」、値「120」、値「130」が得られる。
図3は、図2に示す入出力特性130aに基づく入出力特性変換表130と、この入出力特性変換表130に対応するLUTデータ140とを示している。
入出力特性変換表130は、図3に示すように、入力データの項目131と出力データの項目132とから構成されている。入力データの項目131には入出力特性130aの入力データの各値が記述され、出力データの項目132には入出力特性130aの入力データの各値に対応する出力データの各値が記述される。
LUTデータ140は、図3に示すように、アドレスの項目141とデータの項目142とから構成されている。アドレスの項目141には入出力特性変換表30の項目131の各値がアドレス値として記述され、データの項目142には入出力特性変換表30の項目132の各値(出力データ値)が各データとして記述される。
本実施の形態1では、入出力特性変換表130をLUTデータ140としてLUT用メモリ105に格納するものとする。実際にはLUTデータ140のみがLUT用メモリ105に格納される。なお、LUTデータのLUT用メモリ105への格納処理(LUTデータの更新(設定)処理)については後述する。
次に、基本テーブル生成部104による基本テーブルの生成について説明する。
基本テーブル生成部104に対して設定可能な生成規則情報は例えば数式であり、この数式は複数の1次元関数とし、入力データに対する閾値によって複数の1次元関数の切り替えが可能なものとする。
ここで、上記入力データは、図2に示す入出力特性130aの入力データ、つまり図3に示す入出力特性変換表130の項目131の入力データに相当する。
さて、本実施の形態1では、生成規則情報としての数式は、次の(1)〜(5)の複数の1次元関数になっている。
基本テーブルは、入力データが値0の時は値0、入力データが値255の時は値255とする。
(1)入力データは値1から値48までは、
「基本テーブル=入力データ*2+15」とする。
(2)入力データが値49から値96までは、
「基本テーブル=112」とする。
(3)入力データが値97から値160までは、
「基本テーブル=130」とする。
(4)入力データが値161から値208までは、
「基本テーブル=150」とする。
(5)入力データが値209から値254までは、
「基本テーブル=(入力データ−208)*2+140」とする。
図4は、図2に示した入出力特性130aと、上述した生成規則情報としての数式(複数の1次元関数)に基づき生成される基本テーブルの特性を示す基本テーブル特性140a(点線で示される線分)とを示している。入出力特性130aと基本テーブル特性140aの入力データの各値は同一となっている。
図3に示した入出力特性変換表130を、基本テーブル生成部104に設定可能な基本テーブルつまり基本テーブル生成部104による数式の演算結果である基本テーブル150と、この基本テーブル150に対する差分テーブル160とに分解した例を、図5および図6に示す。
差分テーブル160は、図5および図6に示すように、基本テーブル150の各データの値と入出力特性変換表130の出力データの項目132の値(出力データの値)との差分、つまり「基本テーブル150のデータの値−入出力特性変換表130の出力データの値」を演算した結果である。
例えば、入出力特性変換表130の出力データの値が「102」、「120」、「130」の場合は、基本テーブル150の基本テーブル値はそれぞれ「111」、「112」、「130」であるので、基本テーブル150の基本テーブル値に対する差分としての差分テーブル160の差分テーブル値(差分値)は、それぞれ「−9」、「8」、「0」となる。
なお、図5および図6においては、入出力特性変換表130、LUTデータ140、基本テーブル150および差分テーブル160を示している。また、図5は入出力特性変換表130の入力データが値0から値135までの各値に対応する部分を示し、図6は入出力特性変換表130の入力データが値136から値255までの各値に対応する部分を示している。
ところで、差分テーブル160は圧縮されて外部メモリ120に格納され、基本テーブル150は基本テーブル生成部104によって生成され、LUTデータ140は基本テーブル150と差分テーブル160とを基に生成されLUT用メモリ105に格納される。
次に、画像処理装置10のLUT更新(設定)処理について、図7を参照して説明する。
なお、図7は、LUT更新(設定)処理の処理手順を示すフローチャートである。
LUT更新(設定)要求が発生すると、外部メモリ120に圧縮された差分テーブル160が格納される(ステップS101)。
CPU110は、DMAコントローラ101、伸長器102、演算処理部103および基本テーブル生成部104に対し後述する動作条件を設定し(ステップS102)、その後、DMAコントローラ101に対しDMA(ダイレクトメモリアクセス)の開始を要求する(ステップS103)。
ここで、CPU110による動作条件の設定内容について説明する。
DMAコントローラ101には、メモリ120に格納されている圧縮された差分テーブル160の格納アドレスおよびデータサイズが設定される。その格納アドレスは、差分テーブル160の先頭の差分テーブル値の格納アドレスである。伸長器102には、伸長後の差分テーブル160のサイズおよび伸長に必要な条件が設定される。演算処理部103には、処理する演算式が設定される。基本テーブル生成部104には、生成規則情報としての数式が設定される。
ところで、DMAコントローラ101は、CPU110によって設定された圧縮された差分テーブル160の格納アドレスを基に、外部メモリ120から圧縮された差分テーブル160の差分テーブル値(差分値)を読み出し(リードし)、これを伸長器102へ出力する(ステップS104)。
ステップS104を終了したDMAコントローラ101は、CPU110によって設定されたデータサイズ分の複数のデータ(差分テーブル値=差分値)を伸長器102へ出力したか否かを判断し(ステップS105)、この判断した結果、伸長器102へ出力すべきデータ(差分テーブル値)が存在する場合は、上記ステップS104に戻り、一方、前記データサイズ分のデータ(差分テーブル値)を伸長器102へ出力した場合は、処理を終了する(ステップS106)。
ここで、DMAコントローラ101は、取り込んだ差分テーブル値を伸長器102へ出力する毎に例えば「データサイズ=データサイズ−1単位」を演算し、この演算した結果が、「データサイズ≠0」の場合には伸長器102へ出力すべき差分テーブル値が存在すると判断し、一方、「データサイズ=0」の場合は全ての差分テーブル値を伸長器102へ出力したと判断するようになっている。
なお、1単位はワード(語)を意味し、例えば8ビットや16ビットである。
伸長器102は、入力された圧縮された差分テーブル値を伸長し、これを演算処理部103へ出力するとともに(ステップS107)、CPU110によって設定された伸長後の差分テーブル160のサイズ分の複数の差分テーブル値を伸長したか否かを判断する(ステップS108)。
次に、伸長器102は、ステップS108において、伸長すべき差分テーブル値が存在すると判断した場合には上記ステップS107に戻り、一方、上記設定されたサイズ分の差分テーブル値を伸長したと判断した場合は、処理を終了する(ステップS109)。
ここで、伸長器102は、差分テーブル値を伸長する毎に例えば「差分テーブルのサイズ=差分テーブルのサイズ−1単位」を演算し、この演算した結果が、「差分テーブルのサイズ≠0」の場合には伸長すべき差分テーブル値が存在すると判断し、一方、「差分テーブルのサイズ=0」の場合は全ての差分テーブル値を伸長したと判断するようになっている。
上述したようなDMAコントローラ101による圧縮された差分テーブル160の差分テーブル値の取り込み処理、および伸長器102による圧縮された差分テーブル160の差分テーブル値の伸長処理と並行して、基本テーブル生成部104は、CPU100によって設定された数式を基に基本テーブル150の基本テーブル値を作成し、この作成した基本テーブル値を、伸長器102の差分テーブル値の出力にタイミングを合わせて、演算処理部103へ出力する(ステップS110)。
演算処理部103は、伸長器102からの差分テーブル値と基本テーブル生成部104からの基本テーブル値とをCPU110によって設定された演算式に従って演算処理することにより、LUTデータを作成し、この作成したLUTデータをLUT用メモリ105に書き込む(ステップS111)。
その後、演算処理部103は、伸長器102が処理を終了し、伸長器103からの差分テーブル値が存在しない(全ての差分テーブル値を処理した)か否かを判断し(ステップS112)、この判断した結果、未処理の差分テーブル値が存在する場合にはステップS111に戻り、一方、全ての差分テーブル値を処理した場合は、全てのLUTデータをLUT用メモリ105に書き込んだと判断して、LUT更新が終了したことをCPU110へ通知する(ステップS113)。
以上でLUT更新(設定)処理の説明を終了する。なお、上述したようにしてLUT更新(設定)処理が実行されることにより、LUT用メモリ105には、図3に示すようなLUTデータ140が格納されることになる。
次に、伸長器102、演算処理部103および基本テーブル生成部104の処理、特に演算処理部103の演算処理について、図8を参照して説明する。
図8において、基本テーブルn、差分テーブルn、LUTデータnは、それぞれ入力データ(図5の入出力特性表130の項目131の入力データに対応)が値「n」の時の基本テーブル(図5の基本テーブル150の基本テーブル値に対応)、差分テーブル(図5の差分テーブル160の差分テーブル値に対応)、LUTデータ(図5のLUTデータ140の項目142のデータに対応)の各値を示す。
また、図8において、符号P101〜符号P106はデータの流れ、あるいは処理の実行を示している。
図8に示すように、伸長器102は、入力データが0から255までの圧縮された差分テーブル(差分テーブル値)に関し、入力データが0の時の差分テーブル値から順に伸長し(P101)、伸長した差分テーブルn(差分テーブル値)を入力データが0の時の差分テーブルnから順に演算処理部104へ出力するとともに(P102)、差分テーブルnを出力することを基本テーブル生成部104へ通知する(P103)。
基本テーブル生成部104は、伸長器102からの通知に従って、CPU110によって設定された数式を基に作成した基本テーブルn(基本テーブル値)を、入力データが0の時の基本テーブルn(基本テーブル値)から順に演算処理部103へ出力する(P104)。
演算処理部103は、伸長器102からの差分テーブルnと基本テーブル生成部104からの基本テーブルnとを加算する(P105)ことでLUTデータnを作成し、この作成したLUTデータnをLUT用メモリ105に書き込む(P106)。
これにより、図3の入出力特性変換表130が図3のLUTデータ140としてLUT用メモリ105に設定されることになる。
以上説明したように、実施の形態1によれば、LUTの設定時に、基本テーブル生成部104によって基本テーブルを生成するようにしているので、基本テーブルをメモリ上に予め格納する必要がなくなるため、メモリ資源のメモリ容量を削減することができる。
すなわち、基本テーブルは、数式を利用してハードウェア(基本テーブル生成部)で自動生成されるので、メモリに格納する必要がない。そのため、量子化することでサイズを小さくすることができる差分テーブルのみ圧縮してメモリに格納し、大きなサイズの基本テーブルはメモリに格納しないようにすることで、メモリ資源のメモリ容量の削減に効果がある。また、基本テーブルを差分テーブルに関わる処理のときにハードウェア(基本テーブル生成部)で自動生成させるので、基本テーブルのみを設定する時間が不要となる。
また、実施の形態1によれば、基本テーブルを、設定するLUTデータに応じて設定することができるので、従来技術の如く、基本テーブルを全てのテーブルを作成していから圧縮率がよくなるように決める必要がなくなる。
さらに、実施の形態1によれば、差分テーブルに関しても、図4に示したように、差分テーブルがとりうる値は「−15」から「+15」までとなり、8bitで表現するLUTデータが5bitで表現でき、また、量子化を行うことで、さらにメモリ容量の削減が期待できる。
すなわち、差分テーブルは、第1の差分テーブル(第1の差分)、第2の差分テーブル(第2の差分)の如く複数分割することにより、量子化による圧縮効率が上がり、更にそのサイズを小さくすることが可能である。そのため、メモリ資源のメモリ容量を抑制することができる。
(実施の形態2)
図9は、本発明の実施の形態2に係る画像処理装置の機能構成を示している。
この画像処理装置20は、図1に示した実施の形態1の画像処理装置10とは、基本的な機能は同様であるが、差分テーブルの圧縮(量子化)効率を向上させるために、差分テーブルを2つに分割する点が相違する。
なお、図9において、図1に示した実施の形態1の画像処理装置10の構成要素と同様の機能を果たす部分には同一の符号を付している。
本実施の形態2においては、外部メモリ120は、分割して圧縮した第1の差分テーブル(差分テーブルA)161および第2の差分テーブル(差分テーブルB)162を格納している。
DMAコントローラ101は、CPU110の設定に従い、ダイレクトメモリアクセス(DMA)により、外部メモリ120から圧縮された第1の差分テーブル161の差分テーブル値および第2の差分テーブル162の差分テーブル値を交互に読み出し、これらの差分テーブル値を伸長器102へ出力する。
伸長器102は、受け取った圧縮された第1の差分テーブル161の差分テーブル値、および第2の差分テーブル162の差分テーブル値を伸長し、これら各差分テーブル値を演算処理部103へ出力する。
基本テーブル生成部104は、実施の形態1の場合と同様に、CPU110によって設定される生成規則情報を基に基本テーブル値を作成し、この作成した基本テーブル値を伸長器102の出力タイミングに合わせて演算処理部103へ出力する。
演算処理部103は、基本テーブル生成部104からの基本テーブル値と、伸長器102からの第1の差分テーブル161の差分テーブル値および第2の差分テーブル162の差分テーブル値とを演算処理することによりLUTデータを求め、この求めたLUTデータをLUT用メモリ105に書き込む。
図10および図11は、実施の形態1の差分テーブル160(図5参照)を第1の差分テーブル(差分テーブルA)161と第2の差分テーブル(差分テーブルB)162とに分割した一例を示している。
なお、図10は、図5に示した入出力特性変換表130の入力データが値0から値135までの各値に対応する差分テーブル160の各差分テーブル値に対応する部分を示している。また、図11は、図5に示した入出力特性変換表130の入力データが値136から値255までの各値に対応する差分テーブル160の各差分テーブル値に対応する部分を示している。
図10および図11から明らかなように、所定の差分テーブルに関わる複数の差分テーブルとしての第1の差分テーブル161および第2の差分テーブル162は、同一の格納領域に存在する差分テーブル値(差分値)を演算して得られる演算結果が、所定の差分テーブルとしての差分テーブル160の前記同一の格納領域に存在する差分テーブル値(差分値)と同一となるに、所定の差分テーブルとしての差分テーブル160が分割されたものである。
ここで、同一の格納領域とは、入出力特性変換表130の入力データの値が同一である位置に対応する領域のことである。
例えば、図10に示すように、入出力特性変換表130の入力データが「48」、「96」の場合では、差分テーブル160の差分テーブル値は、それぞれ「−9」、「8」となっている。
この場合の差分テーブル160の差分テーブル値「−9」を、第1の差分テーブル161の差分テーブル値「−8」と第2の差分テーブル162の差分テーブル値「−1」とに分割して表すようにする。また、差分テーブル160の差分テーブル値「8」を、第1の差分テーブル161の差分テーブル値「8」と第2の差分テーブル162の差分テーブル値「0」とに分割して表すようにする。
同様に、差分テーブル160の他の差分テーブル値についても、第1の差分テーブル161の差分テーブル値と第2の差分テーブル162の差分テーブル値とに分割して表すようにする。
なお、この場合、第1の差分テーブル161の差分テーブル値と第2の差分テーブル162の差分テーブル値とを加算することにより、差分テーブル160の差分テーブル値が得られることになる。
このような第1の差分テーブル(差分テーブルA)161および第2の差分テーブル(差分テーブルB)162が圧縮されて、外部メモリ120に格納されている。
次に、画像処理装置10のLUT更新(設定)処理について、図12を参照して説明する。
なお、図12は、LUT更新(設定)処理の処理手順を示すフローチャートである。
LUT更新(設定)要求が発生すると、外部メモリ120に圧縮された第1の差分テーブル(差分テーブルA)161および第2の差分テーブル(差分テーブルB)162が格納される(ステップS201)。
CPU110は、DMAコントローラ101、伸長器102、演算処理部103および基本テーブル生成部104に対し後述する動作条件を設定し(ステップS202)、その後、DMAコントローラ101に対しDMA(ダイレクトメモリアクセス)の開始を要求する(ステップS203)。
ここで、CPU110による動作条件の設定内容について説明する。
DMAコントローラ101には、メモリ120に格納されている圧縮された第1の差分テーブル(差分テーブルA)161および第2の差分テーブル(差分テーブルB)162のそれぞれの格納アドレスおよびデータサイズが設定される。その格納アドレスは、第1の差分テーブル161の先頭の差分テーブル値の格納アドレス、および第2の差分テーブル162の先頭の差分テーブル値の格納アドレスである。
伸長器102には、伸長後の第1の差分テーブル(差分テーブルA)161および第2の差分テーブル(差分テーブルB)162のそれぞれのサイズおよび伸長に必要な条件が設定される。演算処理部103には、処理する演算式が設定される。基本テーブル生成部104には、生成規則情報としての数式が設定される。
ところで、DMAコントローラ101は、CPU110によって設定された圧縮された第1の差分テーブル161および第2の差分テーブル162のそれぞれの格納アドレスを基に、外部メモリ120から圧縮された第1の差分テーブル161および第2の差分テーブル162のそれぞれの差分テーブル値(差分値)を交互に読み出し(リードし)、これらの差分テーブル値を伸長器102へ出力する(ステップS204)。
ステップS204を終了したDMAコントローラ101は、CPU110によって設定されたデータサイズ分の複数のデータ(差分テーブル値=差分値)を伸長器102へ出力したか否かを判断し(ステップS205)、この判断した結果、伸長器102へ出力すべきデータ(差分テーブル値)が存在する場合には、上記ステップS204に戻り、一方、前記データサイズ分のデータ(差分テーブル値)を伸長器102へ出力した場合は、処理を終了する(ステップS206)。
ここで、DMAコントローラ101は、取り込んだ差分テーブル値を伸長器102へ出力する毎に例えば「データサイズ=データサイズ−1単位」を演算し、この演算した結果が、「データサイズ≠0」の場合には伸長器102へ出力すべき差分テーブル値が存在すると判断し、一方、「データサイズ=0」の場合は全ての差分テーブル値を伸長器102へ出力したと判断するようになっている。
なお、第1の差分テーブル161と第2の差分テーブル162とは同一のデータサイズとなっているので、何れか一方の差分テーブルの差分テーブル値を伸長器102へ出力する毎に上述した演算を実施するようにすればよい。
伸長器102は、交互に入力される圧縮された第1の差分テーブル161および第2の差分テーブル162のそれぞれの差分テーブル値を伸長するとともに、伸長した第1の差分テーブル161の差分テーブル値および第2の差分テーブル162の差分テーブル値を、これらの差分テーブル値の出力タイミングを合わせて演算処理部103へ出力する(ステップS207)。
その後、伸長器102は、CPU110によって設定された伸長後の差分テーブル161,162のサイズ分の複数の差分テーブル値を伸長したか否かを判断し(ステップS108)、この判断した結果、伸長すべき差分テーブル値が存在する場合には上記ステップS207に戻り、一方、上記設定されたサイズ分の差分テーブル値を伸長した場合は、処理を終了する(ステップS209)。
ここで、伸長器102は、差分テーブル値を伸長する毎に例えば「差分テーブルのサイズ=差分テーブルのサイズ−1単位」を演算し、この演算した結果が、「差分テーブルのサイズ≠0」の場合には伸長すべき差分テーブル値が存在すると判断し、一方、「差分テーブルのサイズ=0」の場合は全ての差分テーブル値を伸長したと判断するようになっている。
なお、第1の差分テーブル161と第2の差分テーブル162とは同一のサイズとなっているので、何れか一方の差分テーブルの差分テーブル値を伸長する毎に上述した演算を実施するようにすればよい。
上述したようなDMAコントローラ101による圧縮された差分テーブル161,162の差分テーブル値の取り込み処理、および伸長器102による圧縮された差分テーブル161,162の差分テーブル値の伸長処理と並行して、基本テーブル生成部104は、CPU110によって設定された数式を基に基本テーブル150の基本テーブル値を作成し、この作成した基本テーブル値を、伸長器102の第1の差分テーブルの差分テーブル値および第2の差分テーブルの差分テーブル値の出力にタイミングを合わせて、演算処理部103へ出力する(ステップS210)。
演算処理部103は、伸長器102からの第1の差分テーブル161(の差分テーブル値)および第2の差分テーブル162(の差分テーブル値)と基本テーブル生成部104からの基本テーブル150(の基本テーブル値)とを、CPU110によって設定された演算式に従って演算することにより、LUTデータを作成し、この作成したLUTデータをLUT用メモリ105に書き込む(ステップS211)。
その後、演算処理部103は、伸長器102が処理を終了し、伸長器103からの第1の差分テーブル161および第2の差分テーブル162の各差分テーブル値が存在しない(全ての差分テーブル値を処理した)か否かを判断し(ステップS212)、この判断した結果、未処理の差分テーブル値が存在する場合にはステップS211に戻り、一方、全ての差分テーブル値を処理した場合は、全てのLUTデータをLUT用メモリ105に書き込んだと判断して、LUT更新が終了したことをCPU110へ通知する(ステップS213)。
次に、伸長器102、演算処理部103および基本テーブル生成部104の処理、特に演算処理部103の演算処理について、図13を参照して説明する。
図13において、基本テーブルn、差分テーブルAn、差分テーブルBn、LUTデータnは、それぞれ入力データ(図5の入出力特性表130の項目131の入力データに対応)が値「n」の時の基本テーブル(図5の基本テーブル150の基本テーブル値に対応)、第1の差分テーブルA(図10の差分テーブル(差分テーブルA)161の差分テーブル値に対応)、第2の差分テーブルB(図10の差分テーブル(差分テーブルB)162の差分テーブル値に対応)、LUTデータ(図5のLUTデータ140の項目142のデータに対応)の各を示す。
また、図13において、符号P111〜符号P116はデータの流れ、あるいは処理の実行を示している。
最初に、伸長器102は、入力データが0から255までの圧縮された第1の差分テーブルA(差分テーブル値)および第2の差分テーブルB(差分テーブル値)に関し、入力データが0の時の差分テーブル値から順に伸長する。
伸長器102は、図13に示すように、伸長した第1の差分テーブルAn(差分テーブル値)および第2の差分テーブルBn(差分テーブル値)を、入力データが0の時の差分テーブルAnおよび差分テーブルBnから順に演算処理部103へ出力するとともに(P111、P112)、差分テーブルAnおよび差分テーブルBnを出力することを基本テーブル生成部104へ通知する(P113)。
基本テーブル生成部104は、伸長器102からの通知に従って、CPU110によって設定された数式を基に作成した基本テーブルn(基本テーブル値)を、入力データが0の時の基本テーブルnから順に演算処理部103へ出力する(P114)。
演算処理部103は、伸長器103からの差分テーブルAnおよび差分テーブルBnと基本テーブル生成部104からの基本テーブルnとを加算する(P115)ことでLUTデータnを作成し、この作成したLUTデータnをLUT用メモリ105に書き込む(P116)。
これにより、図3の入出力特性変換表130が図3のLUTデータ140としてLUT用メモリ105に設定されることになる。
本実施の形態2では、1つの差分テーブルを2つの差分テーブルに分割するようにしているが、本発明はこれに限定されることなく、3つ、4つなど3以上の差分テーブルに分割するようにしてもよい。この場合、これらの差分テーブルの差分テーブル値を加算することで、当該1つの差分テーブルの差分テーブル値が得られることになる。
また、本実施の形態2では、1つの差分テーブルを2つの差分テーブルに分割し、LUTの設定のときに第1の差分テーブルの差分テーブル値と第2の差分テーブルの差分テーブル値とを加算して、1つの差分テーブルの差分テーブル値を求めるようにしているが、本発明はこれに限定されることなく、次のようにしてもよい。
すなわち、1つの差分テーブルを2つの差分テーブルに分割し、LUTの設定のときに、第1の差分テーブルの差分テーブル値と第2の差分テーブルの差分テーブル値とを減算して、元の1つの差分テーブルの差分テーブル値を求めるようにしてもよい。
また、1つの差分テーブルを3以上の差分テーブルに分割し、LUTの設定のときに、これら分割した複数の差分テーブルの差分テーブル値を減算することで、元の1つの差分テーブルの差分テーブル値を求めるようにしてもよい。
以上説明したように、実施の形態2によれば、実施の形態1の作用効果に加えて、第1の差分テーブルおよび第2の差分テーブルの圧縮効率を向上させることができる。
すなわち、一般的に、量子化等の圧縮は、値のとりうる範囲もしくは種類が少ないもど圧縮効率が上がる。例えば、図10および図11に示したように、第1の差分テーブル(差分テーブルA)161の値は、−8、0、8、15の4種類であり、第2の差分テーブル(差分テーブルB)162の値は、−7から0の8種類である。これに対し、差分テーブルを分割しない場合(差分テーブル160)は、「−15」から「+15」の32種類となる。このようなことから、所定の差分テーブルを複数の差分テーブルに分割した場合は、明らかに圧縮効率が上がることになる。
(実施の形態3)
図14は、本発明の実施の形態3に係る画像処理装置の機能構成を示している。
この画像処理装置30は、図1に示した実施の形態1の画像処理装置10とは、基本的な機能は同様であるが、差分テーブルの圧縮(量子化)効率を向上させるために差分テーブルを2つに分割する点と、演算処理部がLUT用メモリに格納されているLUTデータを演算処理に使用する点が相違する。
なお、図14において、図1に示した実施の形態1の画像処理装置10の構成要素と同様の機能を果たす部分には同一の符号を付している。
本実施の形態3においては、外部メモリ120は、実施の形態2の場合と同様に、分割して圧縮した第1の差分テーブル(差分テーブルA)161および第2の差分テーブル(差分テーブルB)162を格納している(図10および図11参照)。
DMAコントローラ101は、CPU110の設定に従い、ダイレクトメモリアクセス(DMA)により、外部メモリ120から圧縮された第1の差分テーブル161の差分テーブル値を読み出すとともに、圧縮された第2の差分テーブル162の差分テーブル値を読み出し、これらの差分テーブル値を伸長器102へ出力する。
伸長器102は、受け取った圧縮された第1の差分テーブル161の差分テーブル値または第2の差分テーブル162の差分テーブル値を伸長し、この伸長した差分テーブル値を演算処理部103へ出力する。
基本テーブル生成部104は、実施の形態1の場合と同様に、CPU110によって設定される生成規則情報を基に基本テーブル値を作成し、この作成した基本テーブル値を伸長器102の出力タイミングに合わせて演算処理部103へ出力する。
演算処理部103は、基本テーブル生成部104からの基本テーブル値と、伸長器102からの第1の差分テーブル161または第2の差分テーブル162の差分テーブル値と、LUT用メモリ105からのLUTリードデータとを演算処理することによりLUTデータを求め、この求めたLUTデータをLUT用メモリ105に書き込む。
次に、画像処理装置30のLUT更新(設定)処理について、図15を参照して説明する。
なお、図15は、LUT更新(設定)処理の処理手順を示すフローチャートである。
LUT更新(設定)要求が発生すると、外部メモリ120に圧縮された複数の差分テーブル例えば第1の差分テーブル(差分テーブルA)161および第2の差分テーブル(差分テーブルB)162が格納される(ステップS301)。
CPU110は、DMAコントローラ101、伸長器102、演算処理部103および基本テーブル生成部104に対し後述する動作条件を設定し(ステップS302)、その後、DMAコントローラ101に対しDMA(ダイレクトメモリアクセス)の開始を要求する(ステップS303)。
ここで、CPU110による動作条件の設定内容について説明する。
DMAコントローラ101には、メモリ120に格納されている圧縮された第1の差分テーブル(差分テーブルA)161の格納アドレスおよびデータサイズが設定される。その格納アドレスは、第1の差分テーブル161の先頭の差分テーブル値の格納アドレスである。
伸長器102には、伸長後の第1の差分テーブル(差分テーブルA)161のサイズおよび伸長に必要な条件が設定される。演算処理部103には、処理する演算式が設定される。基本テーブル生成部104には、生成規則情報としての数式が設定される。
ところで、DMAコントローラ101は、CPU110によって設定された圧縮された第1の差分テーブル161の格納アドレスを基に、外部メモリ120から圧縮された第1の差分テーブル161の差分テーブル値(差分値)を読み出し(リードし)、この差分テーブル値を伸長器102へ出力する(ステップS304)。
ステップS304を終了したDMAコントローラ101は、例えば実施の形態2の場合と同様に、CPU110によって設定されたデータサイズ分の複数のデータ(差分テーブル値=差分値)を伸長器102へ出力したか否かを判断する(ステップS305)。
DMAコントローラ101は、ステップS305において、伸長器102へ出力すべきデータ(差分テーブル値)が存在すると判断した場合には、上記ステップS304に戻り、一方、前記データサイズ分のデータ(差分テーブル値)を伸長器102へ出力したと判断した場合は、処理を終了する(ステップS306)。
伸長器102は、入力された圧縮された第1の差分テーブル161の差分テーブル値を伸長し、これを演算処理部103へ出力するとともに(ステップS307)、例えば実施の形態2の場合と同様に、CPU110によって設定された伸長後の第1の差分テーブル161のサイズ分の複数の差分テーブル値を伸長したか否かを判断する(ステップS308)。
次に、伸長器102は、ステップS308において、伸長すべき差分テーブル値が存在すると判断した場合には上記ステップS307に戻り、一方、上記設定されたサイズ分の差分テーブル値を伸長したと判断した場合は、処理を終了する(ステップS309)。
上述したようなDMAコントローラ101による圧縮された差分テーブル161の差分テーブル値の取り込み処理、および伸長器102による圧縮された差分テーブル161の差分テーブル値の伸長処理と並行して、基本テーブル生成部104は、CPU110によって設定された数式を基に基本テーブル150の基本テーブル値を作成し、この作成した基本テーブル値を、伸長器102の第1の差分テーブル161の差分テーブル値の出力にタイミングを合わせて、演算処理部103へ出力する(ステップS310)。
演算処理部103は、LUT用メモリ105からLUTリードデータをリードし、リードしたLUTリードデータと伸長器102からの第1の差分テーブル(差分テーブルA)161(の差分テーブル値)と基本テーブル生成部104からの基本テーブル150(の基本テーブル値)とを、CPU110によって設定された演算式に従って演算することにより、LUTデータを作成し、この作成したLUTデータをLUT用メモリ105に書き込む(ステップS311)。
ステップS311を終了した演算処理部103は、伸長器102が処理を終了し、伸長器103からの第1の差分テーブル161の差分テーブル値が存在しない(全ての差分テーブル値を処理した)か否かを判断し(ステップS312)、この判断した結果、未処理の差分テーブル値が存在する場合にはステップS311に戻り、一方、全ての差分テーブル値を処理した場合は、第1の差分テーブル(差分テーブルA)161の処理が終了したことをCPU110へ通知する(ステップS313)。
差分テーブルを終了したことを通知されたCPU110は、1つの差分テーブルに関して複数に分割され圧縮された複数の差分テーブルを全て設定したか否かを判断し(ステップS314)、この判断した結果、未設定の差分テーブルが存在する場合には上記ステップS302に戻り、一方、複数の差分テーブルを全て設定した場合はLUT更新(設定)処理を終了する。
次に、未設定の差分テーブルが存在する場合のLUT更新(設定)処理について説明する。
この例では、第2の差分テーブル(差分テーブルB)162が未設定であるので、CPU110は、第1の差分テーブル(差分テーブルA)161の処理終了が通知されると、第2の差分テーブル(差分テーブルB)162に関する設定を、DMAコントローラ101、伸長器102には、演算処理部103および基本テーブル生成部104に対し実施し(ステップS302)、その後、DMAコントローラ101に対しDMA(ダイレクトメモリアクセス)の開始を要求する(ステップS303)。
DMAコントローラ101は、CPU110によって設定された圧縮された第2の差分テーブル(差分テーブルB)162の格納アドレスを基に、外部メモリ120から圧縮された第2の差分テーブル162の差分テーブル値(差分値)を読み出し(リードし)、この差分テーブル値を伸長器102へ出力する(ステップS304)。
ステップS304を終了したDMAコントローラ101は、例えば実施の形態2の場合と同様に、CPU110によって設定されたデータサイズ分の複数のデータ(差分テーブル値=差分値)を伸長器102へ出力したか否かを判断する(ステップS305)。
DMAコントローラ101は、ステップS305において、伸長器102へ出力すべきデータ(差分テーブル値)が存在すると判断した場合には、上記ステップS304に戻り、一方、前記データサイズ分のデータ(差分テーブル値)を伸長器102へ出力したと判断した場合は、処理を終了する(ステップS306)。
伸長器102は、入力された圧縮された第2の差分テーブル162の差分テーブル値を伸長し、これを演算処理部103へ出力するとともに(ステップS307)、例えば実施の形態2の場合と同様に、CPU110によって設定された伸長後の第2の差分テーブル162のサイズ分の複数の差分テーブル値を伸長したか否かを判断する(ステップS308)。
次に、伸長器102は、ステップS308において、伸長すべき差分テーブル値が存在すると判断した場合には上記ステップS307に戻り、一方、上記設定されたサイズ分の差分テーブル値を伸長したと判断した場合は、処理を終了する(ステップS309)。
上述したようなDMAコントローラ101による圧縮された差分テーブル162の差分テーブル値の取り込み処理、および伸長器102による圧縮された差分テーブル162の差分テーブル値の伸長処理と並行して、基本テーブル生成部104は、CPU110によって設定された数式を基に基本テーブル150の基本テーブル値を作成し、この作成した基本テーブル値を、伸長器102の第2の差分テーブル162の差分テーブル値の出力にタイミングを合わせて、演算処理部103へ出力する(ステップS310)。
演算処理部103は、LUT用メモリ105からLUTリードデータをリードし、リードしたLUTリードデータと伸長器102からの第2の差分テーブル(差分テーブルB)162(の差分テーブル値)と基本テーブル生成部104からの基本テーブル150(の基本テーブル値)とを、CPU110によって設定された演算式に従って演算することにより、LUTデータを作成し、この作成したLUTデータをLUT用メモリ105に書き込む(ステップS311)。
ステップS311を終了した演算処理部103は、伸長器102が処理を終了し、伸長器103からの第2の差分テーブル162の差分テーブル値が存在しない(全ての差分テーブル値を処理した)か否かを判断し(ステップS312)、この判断した結果、未処理の差分テーブル値が存在する場合にはステップS311に戻り、一方、全ての差分テーブル値を処理した場合は、第2の差分テーブル(差分テーブルB)162の処理が終了したことをCPU110へ通知する(ステップS313)。
差分テーブルを終了したことを通知されたCPU110は、1つの差分テーブルに関して複数に分割され圧縮された複数の差分テーブルを全て設定したか否かを判断し(ステップS314)、この判断した結果、未設定の差分テーブルが存在する場合には上記ステップS302に戻り、一方、複数の差分テーブルを全て設定した場合はLUT更新(設定)処理を終了する。
本実施の形態3では、複数の差分テーブルに関わる処理の際に、基本テーブル生成部104による基本テーブルの生成処理、演算処理部103におるLUTリードデータのリード処理を実施するようにしているが、本発明はこれに限定されることなく、次のようにしてもよい。
すなわち、複数の差分テーブルとして第1の差分テーブル(差分テーブルA)161、第2の差分テーブル(差分テーブルB)162を考えた場合、第1の差分テーブル161と基本テーブル140とを演算して第1のLUTデータを作成し、次に、この第1のLUTデータと第2の差分テーブル161と基本テーブル140とを演算して第2のLUTデータつまり最終的なLUTデータを作成するようにしてもよい。
この場合、CPU110は、差分テーブルに対する演算処理に基本テーブルを使用しないときは、基本テーブル生成部104の処理動作(基本テーブルの生成処理動作)を停止させるとともに、LUTリードデータを使用しないときは、演算処理部104のLUT用メモリ106に対するリード処理を停止させる。
次に、上述したようにしてLUTデータを作成するための、伸長部102、演算処理部103および基本テーブル生成部104の処理、特に演算処理部103の演算処理について、図16および図17を参照して説明する。
図16において、基本テーブルn、差分テーブルAn、LUTデータn、LUTリードデータnは、それぞれ入力データ(図5の入出力特性表130の項目131の入力データに対応)が値「n」の時の基本テーブル(図5の基本テーブル150の基本テーブル値に対応)、第1の差分テーブルA(図10の差分テーブル(差分テーブルA)161の差分テーブル値に対応)、LUTデータ(図5のLUTデータ140の項目142のデータに対応)、LUTリードデータを示す。
なお、図16において、符号P121〜符号P125はデータの流れ、あるいは処理の実行を示している。
また、図17において、基本テーブルn、差分テーブルAn、LUTデータn、LUTリードデータnは、それぞれ入力データ(図5の入出力特性表130の項目131の入力データに対応)が値「n」の時の基本テーブル(図5の基本テーブル150の基本テーブル値に対応)、第2の差分テーブルB(図10の差分テーブル(差分テーブルB)162の差分テーブル値に対応)、LUTデータ(図5のLUTデータ140の項目142のデータに対応)、LUTリードデータの各値を示す。
なお、図17において、符号P131〜符号P134はデータの流れ、あるいは処理の実行を示している。
さて、最初に第1の差分テーブルAに関わる処理について説明する。
図16に示すように、伸長器102は、入力データが0から255までの圧縮された第1の差分テーブルA(差分テーブル値)に関し、入力データが0の時の差分テーブル値から順に伸長し、伸長した差分テーブルAn(差分テーブル値)を入力データが0の時の差分テーブルAnから順に演算処理部103へ出力するとともに(P121)、差分テーブルAnを出力することを基本テーブル生成部104へ通知する(P122)。
基本テーブル生成部104は、伸長器102からの通知に従って、CPU110によって設定された数式を基に作成した基本テーブルn(基本テーブル値)を、入力データが0の時の基本テーブルn(基本テーブル値)から順に演算処理部103へ出力する(P123)。
差分テーブルAに関わる処理時には、LUT用メモリ105からのLUTデータリードは演算処理には使用されないため、演算処理部104は、リード処理は実施しない
演算処理部103は、伸長器103からの差分テーブルAnと基本テーブル生成部104からの基本テーブルnとを加算する(P124)ことで第1のLUTデータnを作成し、この作成した第1のLUTデータnをLUT用メモリ105に書き込む(P125)。
これにより、LUT用メモリ105には、「基本テーブル+差分テーブルA」が格納されることになる。
ちなみに、第1の差分テーブルAに関わる処理のときは、図15のLUT更新(設定)処理の処理手順におけるステップS311において、複数の差分テーブルのうち最初に処理対象となる差分テーブル例えば第1の差分テーブル(差分テーブルA)に関わる処理のときは、図15を参照して説明したように、演算処理部103によるLUTリードデータのリード処理は行われない。
次に、第2の差分テーブルBに関わる処理について説明する。
差分テーブルBに関わる処理時には、基本テーブルは演算処理に使用されないため、基本テーブル生成部104は動作しない。
図17に示すように、伸長器102は、入力データが0から255までの圧縮された第2の差分テーブルB(差分テーブル値)に関し、入力データが0の時の差分テーブル値から順に伸長し、伸長した差分テーブルBn(差分テーブル値)を入力データが0の時の差分テーブルBnから順に演算処理部104へ出力する(P131)。
演算処理部103は、入力データが0の時のLUTリードデータから順にリードし(P132)、リードしたLUTリードデータnと伸長器103からの差分テーブルBnとを加算する(P133)ことで第2のLUTデータnを作成し、この作成した第2のLUTデータnをLUT用メモリ105に書き込む(P134)。
LUT用メモリ105からリードされるLUTリードデータnは、差分テーブルAに関わる処理により「基本テーブル+差分テーブルA」となるので、差分テーブルBに関わる処理が終了した後のLUT用メモリ105には、「基本テーブル+差分テーブルA+差分テーブルB」が格納されることになる。
ちなみに、第2の差分テーブルBに関わる処理のときは、図15のLUT更新(設定)処理の処理手順におけるステップS310において、基本テーブル生成部104による基本テーブルの生成処理は実施されない。すなわちステップS310は実施されない。
図18は、演算処理部103の他の演算処理を説明する図である。
演算処理部103が図18に示すように加算および乗算の演算を実施することにより、出力データn={(入力データn+差分テーブルデータAn)*(入力データn+差分テーブルBn)、ただし、(基本テーブルを出力データn=入力データnとする)}のような多次元テーブルも設定可能となる。
以上説明したように、実施の形態3によれば、実施の形態2の作用効果に加えて、差分テーブルの分割数に制限がないので、圧縮効率に応じて差分テーブルの分割数を変更することが可能となる。
(実施の形態4)
図19は、本発明の実施の形態4に係る画像処理装置の機能構成を示している。
図19に示すように、画像処理装置40は、画像処理回路200と、テーブル情報を格納するメモリ等の外部記憶領域210とを有している。
外部記憶領域210は、ROM(読み出し専用メモリ)、DRAM(記憶保持動作が必要な随時書き込み読み出しメモリ)などのように複数のデバイスが存在していてもかまわない。
画像処理回路200は、DMAコントローラ201,202、LUT設定値演算回路203と、LUT制御回路204と、画像処理モジュール205a,206aを含む複数の画像処理モジュールと、各画像処理モジュールがテーブルを参照するための画像処理用LUT205,206とを備える。
DMAコントローラ(アクセス制御手段)201は、設定されたアドレスを基にLUTに関わる基本テーブルを、ダイレクトメモリアクセス(DMA)により外部記憶領域210から取得し、この取得した基本テーブルをLUT設定値演算回路203に転送する機能を有している。
DMAコントローラ(アクセス制御手段)202は、設定されたアドレスを基にLUTに関わる補間テーブルをDMAにより外部記憶領域210から取得し、この取得した補間テーブルをLUT演算回路203に転送する機能を有する。
また、DMAコントローラ202は、補間テーブルの該当する範囲を認識し、補間テーブルの無効な範囲は0(補間情報なし)を出力、補間テーブルが有効な範囲はDMAにより取得したデータを出力する機能も有する。
LUT設定値演算回路(演算処理手段)203は、2つのDMAコントローラ201,202の出力データの同期をとる機能を有しており、2つのDMAコントローラ201,202の出力データが有効になると、それらの有効になった出力データ(基本テーブルおよび補間テーブルの各データ)をLUT設定値演算回路203に取り込むとともに、取り込んだデータ(基本テーブルおよび補間テーブルの各データ)を基に補間演算を実行し、さらにその演算した結果(LUTデータ)を、LUT制御回路204へ出力する。
LUT制御回路(格納制御手段)204は、LUT設定値演算回路203からのデータを、選択された画像処理用LUT(LUT記憶手段)205または画像処理用LUT(LUT記憶手段)206に書き込む機能を有している。
外部記憶領域(基本テーブル記憶手段、補間テーブル記憶手段)210は、所定の画像処理に対応する基本テーブルを記憶するとともに、この基本テーブルと設定すべき所定のルックアップテーブルとの差分の結果としての補間テーブルを記憶する。
すなわち、所定の画像処理に対応するLUTに関わる基本テーブルデータおよび補間テーブルデータは予め記憶領域210に格納しておく。このとき、補間テーブルデータには予め補間テーブルが有効なLUTの範囲を付加しておく。
次に、基本テーブルと補間テーブルについて説明する。
例えば、画像処理装置40において、図20に示すように第1のLUT(LUT1)221と第2のLUT(LUT2)222とを実装する場合は、基本テーブルを第1のLUT221とし、第2のLUT222は第1のLUT221と補間テーブル230のデータ(補間テーブルデータ)とを基に作成する。
図20において、色変換やγ補正など画像処理のときに、その画像処理に対応する第1のLUT(LUT1)221または第2のLUT(LUT2)222を参照することにより、画像入力データの各値(0から255までの256階調の各値)が入力された場合に、この値とLUT221またはLUT222との交点に対応する画像出力データの値を求めることができる。
図21は、画像入力データ、第1のLUT221、第2のLUT222、第1のLUT221と第2のLUT222との差分の関係を表している。
図21において、画像入力データの項目241には、図20に示す横軸の画像入力データの各値(0から255までの256階調の各値)が記述されている。
画像出力データ用LUT値の項目242には、第1のLUT(基本テーブル)221および第2のLUT(設定したいテーブル)222のそれぞれに関わる画像入力データの各値に対応する図20に示す縦軸の画像出力データの各値が記述されている。
LUT1とLUT2の差分の項目243には、第1のLUT(基本テーブル)221の各値と第2のLUT(設定したいテーブル)222の各値との差分が記述されている。
なお、図21の第1のLUT(LUT1)221が記憶領域210に予め格納され、画像処理用LUT205または画像処理用LUT206に書き込まれる。
そして、第2のLUT(LUT2)222を作成するための第1のLUT221に対する差分は、図21の項目243に記述されている各差分値となる。
本実施の形態1では、画像入力データの0から255の256階調の各値に対応する各差分値を有する補間テーブルを作成することはせず、値0以外の差分値を有する補間テーブルを作成する。
このような補間テーブルの一例を、図22に示す。この補間テーブル230は、値0以外の差分値情報231と、所定のルックアップテーブルとしての第1のLUT(基本テーブル)221における当該差分値情報231が適用される範囲を示す範囲情報232とを含んでいる。なお、範囲情報232は、当該補間テーブル230が有効なLUTの範囲を示していると言える。
範囲情報232は、補間テーブルの有効なLUTの範囲はスタート番地からエンド番地までの範囲であり、この例ではStart50番地(スタート番地)からEnd199番地(エンド番地)までの範囲を示している。
ここで、Start50番地は、有効な範囲の開始位置を示す番地であり、図21に示す項目241の画像入力データの値「50」が位置する番地(50番地)に相当する。
また、End199番地は、有効な範囲の終了位置を示す番地であり、図21に示す項目241の画像入力データの値「199」が位置する番地(199番地)に相当する。
このような補間テーブル230が記憶領域210に予め格納される。
次に、画像処理装置40によるLUT更新(設定)処理について、図23を参照して説明する。
図23は、そのLUT更新(設定)処理の処理手順を示すフローチャートである。
図23において、第1のDMAコントローラはDMAコントローラ201を意味し、第2のDMAコントローラはDMAコントローラ202を意味し、第1の画像処理用LUTは画像処理用LUT205を意味する。
ここでは、画像処理用LUT205に第2のLUT(LUT2)222を設定する場合を想定する。
CPU(中央演算処理装置)等のフォアームウェアは、LUT設定値演算回路203に演算方法を指定するとともに、LUT制御回路204にターゲットとなる画像処理用LUT例えば第1の画像処理用LUT205の指定を行う(ステップS401)。
次に、ファームウェアは、第1のDMAコントローラ201に対して、基本テーブルデータ(第1のLUT(LUT1)221のデータ)が格納されている外部記憶領域210内のアドレスとそのテーブルサイズを設定し、その後、DMAを起動すると同時に、第2のDMAコントローラ202に対して、補間テーブルデータ(補間テーブル230のデータ)が格納されている外部記憶領域210内のアドレスとそのテーブルサイズを設定し、その後、DMAを起動する(ステップS402)。
ハードウェアにおいては、第1のDMAコントローラ201は起動がかかると、DMAにより、指定されたアドレスに基づく領域から基本テーブルデータを取得し(ステップS403)、この取得した基本テーブルデータをLUT設定値演算回路203に転送する。
一方、第2のDMAコントローラ202は起動がかかると、DMAにより、指定されたアドレスに基づく領域から補間テーブルデータを取得し(ステップS403)、この取得した補間テーブルデータあるいは0(差分なし)の補間テーブルに関するデータをLUT設定値演算回路203に転送する。
ここで、補間テーブルに関するデータの転送処理について説明する。第2のDMAコントローラ202は、0番地から255番地までの各補間テーブルデータ(差分値)をLUT設定値演算回路203に設定する際に、図22に示す補間テーブル230の範囲情報232で示される範囲(有効なLUTの範囲)の番地のときは、DMAにより取得した補間テーブルデータ(差分値情報231の各差分値)をLUT設定値演算回路203に転送し、範囲情報232で示される範囲以外の番地(有効なLUTの範囲外の番地)のときは、値0(差分なし)をLUT設定値演算回路203に転送する。
LUT設定値演算回路203は、第1のDMAコントローラ201の出力である基本テーブルデータと第2のDMAコントローラ202の出力である補間テーブルデータ(補間情報)とを基に、第1の画像処理用LUT205に設定すべき第2のLUT(LUT2)222の値(LUT設定値)をファームウェアで設定された演算方法で演算し(ステップS404)、この得算した結果をLUT演算制御回路204へ出力する。
ステップS404においては、LUT設定値演算回路203は、次の(1)、(2)の処理を実行してLUT設定値を求めるようになっている。
(1)第2のDMAコントローラ202の出力である補間テーブルデータ(補間情報)のうち、図22に示す補間テーブル230の範囲情報232で示される範囲(有効なLUTの範囲)の番地の補間テーブルデータに関わる処理のときは、基本テーブル221(図21参照)における補間テーブル(図22参照)に含まれる範囲情報232に対応する範囲のデータ(図21の符号244で示される範囲の基本テーブルデータ)と補間テーブル(図22参照)の差分値(図22の符号231で示される各差分値=各補間テーブルデータ)とを演算処理し、この演算処理した結果をLUT演算制御回路204へ出力する。
(2)一方、第2のDMAコントローラ202の出力である補間テーブルデータ(補間情報)のうち、図22に示す補間テーブル230の範囲情報232で示される範囲(有効なLUTの範囲)以外の番地(0番地から49番地までの各番地および200番地から255番地までの各番地)の補間テーブルデータに関わる処理のときは、基本テーブル221(図21参照)における範囲情報232に対応する範囲のデータ以外のデータ(図21の符号245および符号246で示される範囲の基本テーブルデータ)については、そのままLUT演算制御回路204へ出力する。
このようにしてLUT設定値演算回路203から出力された演算結果(LUT設定値)を受け取ったLUT制御回路204は、ファームウェアで設定されたターゲットとなる第1の画像処理用LUT205のテーブル格納アドレスを生成するとともに、LUTにあった制御方法で、前記受け取った演算結果(第2のLUT(LUT2)222に関わるLUT設定値)を、前記生成したテーブル格納アドレスに基づき第1の画像処理用LUT205に書き込む(ステップS405)。
ステップS405を終了したLUT制御回路204は、指定されたLUTつまりターゲットとなる第1の画像処理用LUT204へのLUTの書き込みが終了した(LUTの更新が完了した)か否かを判断し(ステップS406)、この判断した結果、指定されたLUTの書き込みが終了した場合は、ファームウェアに対して終了割り込み、または終了ステータスを発行して、LUTの設定が終了したことを通知する(ステップS407)。
ステップS406において、指定されたLUTの書き込みが終了していないと判断された場合は、上記ステップS403に戻る。
CPU(中央演算処理装置)等のフォアームウェアは、割り込み処理等を実行し(ステップS407)、このLUT更新(設定)処理を終了する。
本実施の形態4では、設定すべきLUTを求めるためのLUT設定値演算回路203による演算処理は、加算回路による加算処理としたが、本発明はこれに限定されることなく、次のようにしてもよい。
すなわち、LUT設定値演算回路203は、加算とは別の演算方法による演算処理を実施して、設定すべきLUTを求めるようにしてもよい。
また、LUT設定値演算回路203は、異なる複数の演算方法を保有し、これらの演算方法を選択できるような回路を有するようにし、この回路によって選択された演算処理を実施して、設定すべきLUTを求めるようにしてもよい。
以上説明したように、実施の形態4によれば、複数のLUTの保存するための不揮発性記憶容量を緩和するために基本テーブルと補間テーブルを実装し、基本テーブルと補間テーブルとの演算でLUTの内容を更新するに際し、ファームウェアでのLUTの取り込み、および演算をすることなく、DMAコントローラによってLUTを取り込み、また演算処理部によって基本テーブルと補間テーブル(差分テーブル)とを演算するようにしているので、DMAコントローラや演算処理部などのハードウェアによってLUTの更新処理を高速に実施することができる。すなわち、LUTの設定時間を短縮することができる。
また、ハードウェアによるLUTの更新中はファームウェアは別の作業を実施することができるため、装置性能を向上させることができる。
(実施の形態5)
図24は、本発明の実施の形態5に係る画像処理装置の機能構成を示している。
この図24に示す画像処理装置50は、図19に示した実施の形態4の画像処理装置40と機能構成において、第2のDMAコントローラ202を削除した機能構成になっている。なお、図24において、図19に示した構成要素と同様の機能を果たす部分には同一の符号を付している。
実施の形態5においても、外部記憶領域(基本テーブル記憶手段、補間テーブル記憶手段)210は、実施の形態4の場合と同様に、図20に示した第1のLUT(LUT1)221つまり図21に示した第1のLUT(基本テーブル)221と、図22に示した補間テーブル230とを格納している。
実施の形態5において、DMAコントローラ(アクセス制御手段)201は、ダイレクトメモリアクセス(DMA)により、設定されたアドレスを基に外部記憶領域)210からテーブル(基本テーブル221または補間テーブル230)を取得し、この取得したテーブルをLUT設定値演算回路203に転送する機能を有する。
この場合、DMAコントローラ201は、基本テーブルの転送時は取得した基本テーブルのデータ(基本テーブルデータ)をスルー(そのまま出力)させ、一方、補間テーブルの転送時は補間テーブルの該当する範囲を認識し、補間テーブルの無効な範囲については0(補間情報なし)を出力し、補間テーブルが有効な範囲についてはDMAにて取得したデータを出力する機能を有する。
ここで、補間テーブルの該当する範囲とは、図22の符号232で示される範囲情報に基づく範囲(50番地から199番地までの範囲)のことである。この範囲は、補間テーブルが有効な範囲と言える。
補間テーブルの無効な範囲とは、図22の範囲情報232で示される範囲以外の範囲であって、例えば、図21の項目241の画像入力データが0から255の各値あるいは0番地から255番地までの各番地における、図21の符号245および符号246で示される範囲のことである。この範囲については上述したように0(補間情報なし)が出力される。
補間テーブルが有効な範囲とは、図22の範囲情報232で示される範囲であって、例えば、図21の項目241の画像入力データが0から255の各値あるいは0番地から255番地までの各番地における、図21の符号244で示される範囲のことである。この範囲については、上述したようにDMAにより取得されたデータ(図22の差分値情報231の各差分値=補間テーブルデータ)が出力される。
また、DMAコントローラ201は、出力している情報が基本テーブルであるか補間テーブルであるかをLUT設定値演算回路203に通知する機能を有する。
LUT設定値演算回路(演算処理手段)203は、入力されたDMAコントローラ201からのデータが基本テーブルデータであるときは、その基本テーブルデータに対する演算をせずに、その基本テーブルデータをLUT制御回路204へ出力し、一方、補間テーブルデータであるときは、画像処理用LUT205からのデータとDMAコントローラ201からのデータ(補間テーブルデータ)とで演算し、この演算した結果をLUT制御回路204へ出力する機能を有する。
LUT制御回路(格納制御手段)204は、入力されたLUT設定値演算回路203からのデータを、図示しないCPU(中央演算処理装置)などファームウェアによって設定され書き込み対象として指定される画像処理用LUT(ルックアップテーブル記憶手段)205または画像処理用LUT(ルックアップテーブル記憶手段)206に書き込む機能を有する。
実施の形態5は、実施の形態4とは、LUT更新(設定)処理において、1つのDMAコントローラで時系列に基本テーブルデータと補間テーブルを読み込む、という点で、大きく異なっている。
次に、画像処理装置50のLUT更新(設定)処理について、図25を参照して説明する。
図25は、そのLUT更新(設定)処理の処理手順を示すフローチャートである。図25において、第1の画像処理用LUTは画像処理用LUT205を意味する。
この実施の形態5においても、実施の形態4の場合と同様に、画像処理用LUT205に第2のLUT(LUT2)222(図20および図21参照)を設定する場合を想定する。
CPU(中央演算処理装置)等のフォアームウェアは、LUT設定値演算回路203に演算方法を指定するとともに、LUT制御回路204にターゲットとなる画像処理用LUT例えば第1の画像処理用LUT205の指定を行う(ステップS501)。
次に、ファームウェアは、DMAコントローラ201に対して、基本テーブルデータ(第1のLUT(LUT1)221のデータ)が格納されている外部記憶領域210内のアドレスとそのテーブルサイズ、および補間テーブルデータ(補間テーブル230のデータ)が格納されている外部記憶領域210内のアドレスとそのテーブルサイズを設定し、その後、DMAを起動する(ステップS502)。
ハードウェアにおいてはDMAコントローラ201は起動がかかると、DMAにより、指定された基本テーブルデータに関するアドレスに基づく領域から基本テーブルデータを取得し(ステップS503)、この取得した基本テーブルデータをLUT設定値演算回路203へ転送すると同時に現在の出力データが基本テーブルデータであるという情報を渡す。
基本テーブルデータと基本テーブルデータであるという情報とを受け取ったLUT設定値演算回路203は、基本テーブルデータであるという情報を基に、取得したテーブルデータは基本テーブルデータであると認識し、何も演算処理することなく、当該取得した基本テーブルデータをそのままLUT制御回路204へ出力する(ステップS504)
LUT制御回路204は、LUT設定値演算回路203からの基本テーブルデータを第1の画像処理用LUT205に書き込む(ステップS505)。
次に、LUT制御回路204は、全ての基本テーブルデータを第1の画像処理用LUT205に書き込んだ(基本テーブルの更新(設定)が終了した)か否かを判断する(ステップS506)。
ステップS506において基本テーブルの更新(設定)が終了していないと判断された場合には、上記ステップS503に戻る。
ステップ506において基本テーブルの更新(設定)が終了したと判断したLUT制御回路204は、DMAコントローラ201に対して基本テーブルの更新(設定)終了を通知する。
DMAコントローラ201は、LUT制御回路204から通知された基本テーブルの更新(設定)終了を受け取ると、DMAにより、指定された補間テーブルデータに関するアドレスに基づく領域から補間テーブルデータを取得し(ステップS507)、この取得した補間テーブルデータをLUT設定値演算回路203へ転送すると同時に現在の出力データが補間テーブルデータであるという情報を渡す。
この場合、DMAコントローラ201は、補間テーブルの該当する範囲を認識し、補間テーブルの無効な範囲については0(補間情報なし)を出力し、補間テーブルが有効な範囲についてはDMAにて取得したデータを出力する。すなわち、DMAコントローラ201から出力されるデータ(補間情報)は、0番地から255番地までの各番地、あるいは画像入力データの値0から値255までの256階調の各値に対応する各差分値となっている。
LUT演算回路203は、第1の画像処理用LUT205から記憶内容(基本テーブルデータ)を読み出し、この読み出した基本テーブルデータとDMAコントローラ201からのデータ(補間情報)とを基に、ファームウェアによって指定された演算方法に従ってLUTの値(LUT設定値)を演算し(ステップS508)、この演算した結果つまりLUT設定値(第2のLUT(LUT2)222に関わるLUT設定値)をLUT制御回路204へ出力する。
ステップS508においては、LUT設定値演算回路203は、次の(1)、(2)の処理を実行してLUT設定値を求めるようになっている。
(1)第1のLUT(基本テーブル)221における補間テーブル230に含まれる範囲情報232に対応する範囲のデータ(図21の符号244で示される範囲の各データ)と補間テーブル230の差分値(図23の差分値情報231の各差分値)とを演算処理し、この演算処理した結果を出力する。
(2)第1のLUT(基本テーブル)221における範囲情報232に対応する範囲のデータ以外のデータ(図21の符号245および符号246で示される範囲のデータ)については、そのまま出力する。
このようにしてLUT設定値演算回路203から出力された演算結果(LUT設定値)を受け取ったLUT制御回路204は、ファームウェアで設定されたターゲットとなる第1の画像処理用LUT205のテーブル格納アドレスを生成するとともに、LUTにあった制御方法で、前記受け取った演算結果(第2のLUT(LUT2)222に関わるLUT設定値)を、前記生成したテーブル格納アドレスに基づき第1の画像処理用LUT205に書き込む(ステップS509)。
ステップS509を終了したLUT制御回路204は、指定されたLUTつまりターゲットとなる第1の画像処理用LUT204へのLUTの書き込みが終了した(LUTの更新が完了した)か否かを判断し(ステップS510)、この判断した結果、指定されたLUTの書き込みが終了した場合は、ファームウェアに対して終了割り込み、または終了ステータスを発行して、LUTの設定が終了したことを通知する(ステップS511)。
ステップS510において、指定されたLUTの書き込みが終了していないと判断された場合は、上記ステップS507に戻る。
CPU(中央演算処理装置)等のフォアームウェアは、割り込み処理等を実行し(ステップS512)、このLUT更新(設定)処理を終了する。
本実施の形態5においては、基本テーブルの転送と補間テーブルの転送とをハードウェアで連続的に行うようにしているが、基本テーブルの転送終了時に一旦ファームウェアに終了通知を行い、別途、補間テーブルの転送を行う方法も考えられる。
また、本実施の形態5においては、補間データで補間テーブル内の補間すべき領域外は0(差分なし)として演算するようにしているが、補間データの有効な領域のみ演算、更新する方法も考えられる。
さらに、本実施の形態5では、補間テーブルについて有効な範囲(区間)の情報をステート番地からエンド番地までというような情報としているが、本発明はこれに限定されることなく、次のようにしてもよい。
すなわち、第1のLUT(基本テーブル)に対する差分が分布するほぼ中央部250をLUT設定のスタート位置にし、この中央部250を基準にして、変更するテーブル量を指定する方法でもよい。
このようなLUT設定の方法について、図26〜図28を参照して説明する。
図26は、図20に示した内容(画像入力データ、画像出力データ、第1のLUT221、第2のLUT222)と同様である。
図27は、図21に示した内容(画像入力データ、画像出力データ用LUT値、LUT1とLUT2の差分の各値そのもの)は同様である。
図27において、画像入力データの項目241aには、図26に示す横軸の画像入力データの各値(0から255までの256階調の各値)が、図26の中央部250を基準にして、左側に位置する階調の値と、右側に位置する階調の値とが交互に記述されている。
画像出力データ用LUT値の項目242aには、第1のLUT(基本テーブル)221および第2のLUT(設定したいテーブル)222のそれぞれに関わる画像入力データの各値に対応する図26に示す縦軸の画像出力データの各値が記述されている。その画像出力データの各値そのものは図21に示した内容のものと同じである。
LUT1とLUT2の差分の項目243aには、第1のLUT(基本テーブル)221の各値と第2のLUT(設定したいテーブル)222の各値との差分が記述されている。それらの差分値そのものは図21に示した内容のものと同じである。
図28は、補間テーブル230aを示している。この補間テーブル230aは、差分値情報231aと、所定のルックアップテーブルとしての第1のLUT(基本テーブル)221における当該差分値情報231aが適用される範囲を示す範囲情報232aとを含んでいる。
差分値情報231aは、画像入力データの値が0から255までの256階調の各値に対応する各差分値(値0の場合も含む)であり、中央部250に位置する画像入力データの値に対応する差分値が先頭に位置し、次に中央部250に対し左側に位置する画像入力データの値に対応する差分値が位置し、続いて中央部250に対し右側に位置する画像入力データの値に対応する差分値が位置し、以降、中央部250に対し右側の差分値と左側の差分値とが交互に位置している。
範囲情報232aは、図22の範囲情報232で示されるStart50番地(スタート番地)からEnd199番地(エンド番地)までの範囲の補間テーブルデータ(値0以外の差分値)の個数を示している。すなわち、差分値情報231aの先頭に位置する差分値から149個目までが、補間テーブル230aが有効なLUTの範囲を示している。
そして、LUT更新(設定)のために、LUT設定演算回路203が、図27の第1のLUT(LUT1)221aのLUTデータと図28の補間テーブル230aの補間テーブルデータ(差分値)とを演算処理するようにする。
この場合、中央部250に位置する画像入力データの値に対応する第1のLUT(基本テーブル)221aのLUTデータに対して補間テーブル230aの差分値を指定し、次に、中央部250に対し左側に位置する画像入力データの値に対応する第1のLUT221aのLUTデータと、中央部250に対し右側に位置する画像入力データの値に対応する第1のLUT221aのLUTデータとに、補間テーブル230aの差分値情報231aでの差分値の並び順に、当該差分値を指定するようにする。
以上説明したように、実施の形態5によれば、実施の形態4の場合と同様の作用効果を期待することができる。
(実施の形態6)
図29は、本発明の実施の形態6に係る画像処理装置の機能構成を示している。
図29に示すように、画像処理装置60は、画像処理回路300、CPU(中央演算処理装置)360、外部メモリ370を備えている。
なお、図29において、上下方向の矢印線、左右方向の矢印線、右方向の矢印線は、各構成要素間を接続する配線(結線)を意味し、またデータあるいは命令の流れる方向も意味する。
CPU(上位の制御手段)360は、後述するメモリコントローラ350を経由して、上記各色用の画像処理パス310,320,330,340に接続され、各処理に応じた処理を行う。
外部メモリ(格納手段)370は画像データ、LUTデータを記憶する。
画像処理回路300は、ASIC(特定用途向けIC)で構成されており、複数種類の色に対応する複数の画像処理パス310,320,330,340と、メモリコントローラ350とを有している。
ここで、シアン(C)の色に対応する画像処理パス310をC用画像処理パス310とし、マゼンタ(M)の色に対応する画像処理パス320をM用画像処理パス320とし、イエロー(Y)の色に対応に対応する画像処理パス330をY用画像処理パス330とし、ブラック(K)の色に対応に対応する画像処理パス340をK用画像処理パス340とする。
C用画像処理パス310は、シアン(C)の色に対応し、互いに異なる画像処理を実行する第1の画像処理部311、第2の画像処理部312および第3の画像処理部313と、当該複数の画像処理部に対応して設けられる複数の画像処理用メモリ311a,312a,313aと、DMAコントローラ314とを有している。
M用画像処理パス320は、マゼンタ(M)の色に対応し、互いに異なる画像処理を実行する第1の画像処理部321、第2の画像処理部322および第3の画像処理部323と、当該複数の画像処理部に対応して設けられる複数の画像処理用メモリ321a,322a,323aと、DMAコントローラ324とを有している。
Y用画像処理パス330は、イエロー(Y)の色に対応し、互いに異なる画像処理を実行する第1の画像処理部331、第2の画像処理部332および第3の画像処理部333と、当該複数の画像処理部に対応して設けられる複数の画像処理用メモリ331a,332a,333aと、DMAコントローラ334とを有している。
K用画像処理パス340は、ブラック(K)の色に対応し、互いに異なる画像処理を実行する第1の画像処理部341、第2の画像処理部342および第3の画像処理部343と、当該複数の画像処理部に対応して設けられる複数の画像処理用メモリ341a,342a,343aと、DMAコントローラ344とを有している。
C用画像処理パス310におけるDMAコントローラ314と画像処理部311間の結線361と、M用画像処理パス320におけるDMAコントローラ324と画像処理部321間の結線362、Y用画像処理パス330におけるDMAコントローラ334と画像処理部331間の結線363、およびK用画像処理パス340におけるDMAコントローラ344と画像処理部341間の結線364とは、それぞれ結線362a、結線363a、および結線364aで接続されている。
C用画像処理パス310において、DMAコントローラ(アクセス制御手段)314は、CPU370の設定に従い、ダイレクトメモリアクセス(DMA)により、外部メモリ370からデータを読み出し最前段の第1の画像処理部311へ出力する。
第1の画像処理部(画像処理手段)311は、印刷時においては、入力データに対して第1の画像処理を実施し、画像処理後のデータを第2の画像処理部312へ転送する。また、第1の画像処理部311は、LUT設定時においては、LUTの設定対象でないときは、入力データをそのまま第2の画像処理部312へ転送し、LUTの設定対象のときは、管理下の画像処理用メモリ311aに入力データを格納する。
第2の画像処理部(画像処理手段)312は、印刷時においては、入力データに対して第2の画像処理を実施し、画像処理後のデータを第3の画像処理部313へ転送する。また、第2の画像処理部312は、LUT設定時においては、LUTの設定対象でないときは、入力データをそのまま第3の画像処理部313へ転送し、LUTの設定対象のときは、管理下の画像処理用メモリ312aに入力データを格納する。
第3の画像処理部(画像処理手段)313は、印刷時においては、入力データに対して第3の画像処理を実施し、画像処理後のデータを外部へ転送する。また、第3の画像処理部313は、LUT設定時においては、LUTの設定対象でないときは、最終段の画像処理部なので入力データを破棄し、LUTの設定対象のときは、管理下の画像処理用メモリ313aに入力データを格納する。
複数の画像処理用メモリ(記憶手段)311a,312a,313aは、LUT設定のときは、それぞれ第1〜第3の画像処理部311,312,313から入力されるデータを格納し、印刷処理のときは、保持しているLUTデータを、対応する画像処理部へ出力する。
他の色用画像処理パス320,330,340の各構成要素も、上記C用画像処理パス310の場合と同様の機能を有している。
なお、各色用画像処理パス310〜340における各第1の画像処理部311、321,331,341は、それぞれ同一の第1の画像処理を実行する。
また、各色用画像処理パス310〜340における各第2の画像処理部312、322,332,342は、それぞれ同一の第2の画像処理を実行する。
さらに、各色用画像処理パス310〜340における各第3の画像処理部313、323,333,343は、それぞれ同一の第3の画像処理を実行する。
次に、画像処理装置60のLUT設定処理について、図30を参照して説明する。
図30は、そのLUT設定処理の処理手順を示すフローチャートである。
この例では、C色、M色、Y色、K色の各色用の画像処理パス310,320,330,340のそれぞれの第2の画像処理部つまり画像処理用メモリをLUT設定の更新対象とする場合を想定する。
このLUT設定処理はソフトウェア側の処理とハードウェア側の処理とに分けられるので、最初にソフトウェア側の処理つまりCPU360による処理について説明する。
CPU360は、C用画像処理パス310のDMAコントローラ314に対して、必要な情報を設定する(ステップS601)。
ここで、必要な情報は、更新対象の画像処理番号(更新対象画像処理番号)、画像処理パスごとの更新の有無(画像処理パスの更新ON/OFF)、更新するLUTの外部メモリのアドレス(更新LUTアドレス)、更新するLUTのサイズ(更新LUTサイズ)である。
更新対象画像処理番号は、更新対象のLUTに関わる画像処理を示す番号(画像処理番号)を意味する。すなわち、第1の画像処理を示す画像処理番号1、第2の画像処理を示す画像処理番号2、および第3の画像処理を示す画像処理番号3のうち何れかの画像処理番号である。この例では、画像処理番号2が設定される。
画像処理パスの更新ON/OFFは、画像処理毎の更新対象の画像処理番号で示される画像処理に対応するLUTの更新(設定)を実施するか否かを示す情報(画像処理パスの更新ON/OFF)を意味する。LUTの更新(設定)を実施する場合には「画像処理パスの更新ON」が設定され、一方、LUTの更新(設定)を実施しない場合は「画像処理パスの更新OFF」が設定される。
例えば、C色、M色、Y色、K色の各色用画像処理パス310,320,330,340全てについてLUTの更新(設定)を実施する場合は、各色用画像処理パス310,320,330,340のそれぞれを示す情報に対応して「画像処理パスの更新ON」が設定される。
更新LUTアドレスは、更新対象のLUTが格納されている外部メモリ370の格納場所情報(格納アドレス)を意味する。
更新LUTサイズは、外部メモリ370に格納されている更新対象のLUTのデータサイズを意味する。
次に、CPU360は、上記設定内容に基づき動作を開始するように、C用画像処理パス310のDMAコントローラ314に起動命令(LUT更新開始命令)を書き込み(ステップS602)、DMAコントローラ314を起動させる。
そして、CPU360は、起動命令を書き込みした後は、ハードウェアからの終了割り込みを待ちつつ、他の処理が割り当てられた場合は当該他の処理を実行するとともに、ハードウェアからの終了割り込みが発行されたときは、当該割り込み等を実行し(ステップS603)、このLUT設定処理を終了する。
次に、ハードウェア側の処理について説明する。
C用画像処理パス310のDMAコントローラ314は、CPU360からのLUT更新開始命令を取得したことを条件に、次の(1)〜(3)の各処理を実行する(ステップS611)。
(1)更新対象画像処理番号で示される画像処理番号に対応する画像処理(更新対象の画像処理)を実行する画像処理部へ、LUT設定開始とともに更新LUTサイズを通知する。
ここで、更新対象画像処理番号は画像処理番号2であるとすると、更新対象は、C色、M色、Y色、K色の各色用画像処理パス310,320,330,340の第2の画像処理部312,322,332,342となる。そのため、これらの画像処理部に対してLUT設定開始を通知される。
LUT設定開始の通知を受け取った第2の画像処理部312,322,332,342はLUTデータ入力に備えてメモリライトアドレス(ライト数)を0に初期化する。
(2)更新対象画像処理番号で示される画像処理願号以外の画像処理番号に対応する画像処理(更新対象以外の画像処理)を実行する画像処理部に対しては、入力されてくるデータをそのまま出力すべき旨(入力データの転送開始)を通知する。
この例では、画像処理番号1に対応する第1の画像処理を実行する第1の画像処理部311,321,331,341画像処理番号3に対応する第3の画像処理を実行する第3の画像処理部313,323,333,343に対しては、入力されてくるデータをそのまま出力すべき旨(入力データの転送開始)が通知される。
なお、最終段の画像処理部(第3の画像処理部)は、入力されてくるデータをそのまま出力すべき旨が通知された場合は、入力データを破棄することになる。
(3)DMAコントローラの内部にCPU360によって設定された設定値(更新LUTアドレスおよび更新LUTサイズ)をロードしておく。
DMAアドレス=更新LUTアドレス
DMAサイズ=更新LUTサイズ
次に、C用画像処理パス310のDMAコントローラ314は、C色、M色、Y色、K色の各色用画像処理パス310,320,330,340の第1〜第3の画像処理に対応する第1〜第3の画像処理部への上述した内容の通知が終了したことを確認したら、次の(4)、(5)の各処理を実行する(ステップS612)。
(4)メモリコントローラ350を経由して外部メモリ370からLUTデータを1単位リードする。
ここで、リードした1単位のLUTデータを「1単位LUTデータ」と定義する。
また、リードした1単位LUTデータを次の処理に向けて、当該DMAコントローラ314の内部に設けられている図示しない記憶領域に保存しておく。
ここで、1単位はワード(語)を意味し、当該画像処理装置60の仕様に応じて決定されており、例えば8ビットや16ビットなどである。
(5)1単位LUTデータのリードが完了したら、パラメータを以下の通りに更新する。
DMAアドレス=DMAアドレス+1単位
DMAサイズ=DMAサイズ−1単位
続いて、C用画像処理パス310のDMAコントローラ314は、外部メモリ370からリードした1単位LUTデータを、「画像処理パスの更新ON」が設定されている全ての画像処理パスの第1の画像処理を実行する第1の画像処理部へライトする(ステップS613)。
この例では、C色、M色、Y色、K色の各色用の画像処理パス310,320,330,340の第1の画像処理部に1単位LUTデータがライトされる。
ここで、C色、M色、Y色、K色の各色用の画像処理パス310,320,330,340の全てに関わる第1の画像処理部311,321,331,341を「第1の画像処理部(C色、M色、Y色、K色)」と定義する。
同様に、第2の画像処理部312,322,332,342を「第2の画像処理部(C色、M色、Y色、K色)」と定義し、第3の画像処理部313,323,333,343を「第3の画像処理部(C色、M色、Y色、K色)」と定義する。
ところで、1単位LUTデータを取得した第1の画像処理部(C色、M色、Y色、K色)は、次の(a)、(b)の各処理を実行する(ステップS614)。
(a)既にDMAコントローラ314から「LUT設定開始」が通知されて、当該第1の画像処理に対応するLUTが更新対象であると認識した場合は、取得した入力データ(1単位LUTデータ)を、管理下の画像処理用メモリに格納し、次の入力に備えてライトアドレス(ライト数)を加算しておく。
ライトアドレス(ライト数)=ライトアドレス(ライト数)+1単位
(b)既にDMAコントローラ314から「入力されてくるデータをそのまま出力すべき旨」が通知されて、当該第1の画像処理に対応するLUTが更新対象ではないと認識した場合は、入力されたデータ(1単位LUTデータ)をそのまま第2の画像処理部(C色、M色、Y色、K色)へ出力する。
なお、第2の画像処理部(C色、M色、Y色、K色)、第3の画像処理部(C色、M色、Y色、K色)の動作も、第1の画像処理部(C色、M色、Y色、K色)による上記(a)および(b)の処理の場合と同様である。ただし、最終段の画像処理部この例では第3の画像処理部(C色、M色、Y色、K色)は、LUTが更新対象ではないと認識した場合は、入力されたデータ(1単位LUTデータ)を破棄する。
この例では、更新対象は第2の画像処理部(C色、M色、Y色、K色)であるので、第2の画像処理部(C色、M色、Y色、K色)が、それぞれ管理下の画像処理用メモリに1単位LUTデータを書き込み、「ライトアドレス(ライト数)=ライトアドレス(ライト数)+1単位」を演算することになる。
更新対象の画像処理部、例えば第2の画像処理部(C色、M色、Y色、K色)は、1単位LUTデータを管理下の画像処理用メモリに書き込み、ライトアドレス(ライト数)を更新した後、ライトアドレス(ライト数)がC用画像処理パス310のDMAコントローラ314から既に通知された更新LUTサイズと等しいか否かを判断する(ステップS615)。
更新対象の例えば第2の画像処理部(C色、M色、Y色、K色)は、ステップS615において、ライトアドレス(ライト数)と更新LUTサイズとが等しいと判断した場合は、LUTサイズ(更新LUTサイズ)数分のLUTデータの書き込みが終了した旨を示すLUT書き込み完了信号を、C用画像処理パス310のDMAコントローラ314へ通知する(ステップS616)。
ステップS615において、ライトアドレス(ライト数)と更新LUTサイズとが等しくないと判断された場合は、ステップS617に進む。
LUT書き込み完了信号が通知されたC用画像処理パス310のDMAコントローラ314は、DMAサイズが0になっている(DMAサイズ=0)か否かを判断し(ステップS617)、この判断した結果、「DMAサイズ≠0」の場合には、上記ステップS612に戻り、「DMAサイズ=0」の場合は、更新対象の全ての画像処理パスからLUTサイズ数分のLUT書き込み完了が通知されたか否かを判断する(ステップS618)。
ステップS618においては、C用画像処理パス310のDMAコントローラ314は、CPU360によって既に設定されている画像処理パスの更新ON/OFFおよび更新対象画像処理番号を基に、更新対象はC色、M色、Y色、K色の各色用の画像処理パス310,320,330,340であって、第2の画像処理部(C色、M色、Y色、K色)であるということを認識しているので、C色、M色、Y色、K色の全ての色用画像処理パスの第2の画像処理部(C色、M色、Y色、K色)からのLUT書き込み完了が通知されたかを確認することになる。
ところで、C用画像処理パス310のDMAコントローラ314は、ステップS618において、更新対象の全ての画像処理パスからLUT書き込み完了が通知されないと判断した場合には、更新対象の全ての画像処理パスからLUT書き込み完了が通知されるまで待機し、一方、更新対象の全ての画像処理パスからLUT書き込み完了が通知されたと判断した場合は、全ての画像処理部つまり第1〜第3の画像処理部(C色、M色、Y色、K色)に対して、LUT更新(設定)作業の終了を通知するとともに、通常の画像処理開始を通知する(ステップS619)。
LUT更新(設定)作業の終了および通常の画像処理開始が通知されたC色、M色、Y色、K色の各色用の画像処理パス310,320,330,340の第1〜第3の画像処理部(C色、M色、Y色、K色)は、入力データに、該当する画像処理を施して出力するようになる。
ステップS619を終了したC用画像処理パス310のDMAコントローラ314はLUT更新作業が終了したことを示す割り込み、または終了ステータスを、CPU360へ発行する(ステップS620)。
他の作業中であったCPU360は、例えば割り込みを受けてLUT更新作業が終了したことを認識し(ステップS603)、このLUT設定処理を終了する。
次に、画像処理装置60のLUT設定処理の際のLUTデータの流れについて、図31を参照して説明する。
図31は、そのLUT設定処理の際のLUTデータの流れを説明する図である。なお、図31において、画像処理装置60は図29に示す画像処理装置60の機能構成と同一であるが、一部、符号を省略している。
さて、ここでは、C色、M色、Y色、K色の各色用の画像処理パス310,320,330,340の第2の画像処理部(C色、M色、Y色、K色)に対応する画像処理用LUT312a,322a,332a,342aを更新する場合を想定する。
このような前提条件の下では、画像処理装置60は、次の(1)〜(4)の各処理を実行することで、LUTを更新(設定)する。
(1)C用画像処理パス310のDMAコントローラ314は、外部メモリ370に格納されている更新対象のLUTデータをDMAリード(1単位ごとリード)する。
(2)DMAコントローラ314は、取り込んだ更新用のLUTデータ(1単位LUTデータ)をC用画像処理パス310だけでなく、全ての画像処理パスの第1の画像処理部(C色、M色、Y色、K色)に同時に書き込む。
すなわち、更新用のLUTデータは、配線361を経由してC用画像処理パス310の第1の画像処理部311に書き込まれ、配線361、配線362aおよび配線362を経由してM用画像処理パス320の第1の画像処理部321に書き込まれ、配線361、配線363aおよび配線363を経由してY用画像処理パス330の第1の画像処理部331に書き込まれ、配線361、配線364aおよび配線364を経由してK用画像処理パス340の第1の画像処理部341に書き込まれる。
(3)第1の画像処理部(C色、M色、Y色、K色)は更新対象ではないので、入力データをそのまま次の第2の画像処理部(C色、M色、Y色、K色)へ転送する。
(4)第2の画像処理部(C色、M色、Y色、K色)は、更新対象なので、入力データ(1単位LUTデータ)を管理下の画像処理用メモリにアドレス順に書き込んでいく。
そして、上記(1)〜(4)の各処理を繰り返すことにより、第2の画像処理部(C色、M色、Y色、K色)の管理下の画像処理用メモリを同時に更新することが可能となる。
ところで、画像処理装置60によるLUT設定と印字動作は、図32に示すようなタイミングで実施されることになる。
すなわち、C色、M色、Y色、K色の各色の画像処理パス310,320,330,340による1枚目の印字のための処理に関わるLUT設定が実施される(P301)。これは4色一括によるLUT設定が実施されると言える。その後、印字動作(画像処理)が実施される。
次に、C色、M色、Y色、K色の全ての色に関わる1枚目の印字動作が終了した後に、C色、M色、Y色、K色の各色の画像処理パス310,320,330,340による2枚目の印字のための処理に関わるLUT設定が実施される(P302)。この場合も、4色一括によるLUT設定が実施されると言える。その後、印字動作(画像処理)が実施される。
以上説明したように、実施の形態6によれば、共通LUTデータをC色、M色、Y色、K色の4つの画像処理パスのそれぞれの画像処理用メモリに設定する場合、CPUによる4回のライト処理ではなく、DMAコントローラによる1回のDMAにより共通LUTデータを取り込み、この共通LUTデータを4つの画像処理パス同時に更新することができる。つまり共通LUTデータを、4つの画像処理パスに関わる各画像処理用メモリに同時に格納することができる。
そのため、実施の形態6によれば、LUTの更新時間の短縮、CPUの負荷軽減、メモリパス帯域の削減などの効果が期待できる。
(実施の形態7)
図33は、本発明の実施の形態7に係る画像処理装置の機能構成を示している。
図33に示す画像処理装置70は、図29に示した実施の形態6の画像処理装置60の機能構成において、配線362a、配線363aおよび配線364aを削除し、配線381、配線382、配線383および配線384を追加した構成になっている。
なお、図33において、図29に示した構成要素と同様の機能を果たす部分には同一の符号を付している。また、図33においては、第3の画像処理部から外部への配線に符号371〜符号374を付与している。
実施の形態7は実施の形態6とは相違する機能部分があるので、次に、その相違する機能について説明する。
C用画像処理パス310の第3の画像処理部313から外部への配線371と、M用画像処理パス320におけるDMAコントローラ324と画像処理部321間の結線362とは、配線381で接続されている。
M用画像処理パス320の第3の画像処理部323から外部への配線372と、Y用画像処理パス330におけるDMAコントローラ334と画像処理部331間の結線363とは、配線382で接続されている。
Y用画像処理パス330の第3の画像処理部333から外部への配線373と、K用画像処理パス340におけるDMAコントローラ344と画像処理部341間の結線363とは、配線383で接続されている。
K用画像処理パス340の第3の画像処理部343から外部への配線374と、C用画像処理パス310におけるDMAコントローラ314と画像処理部311間の結線361とは、配線384で接続されている。
第1の画像処理部311は、印刷時においては、入力データに対して第1の画像処理を実施し、画像処理後のデータを第2の画像処理部312へ転送する。
また、第1の画像処理部311は、LUT設定時においては、コピー元であるときは、管理下の画像処理用メモリ311aから格納LUTデータをリードして出力し、コピー先であるときは、入力データを管理下の画像処理用メモリ311aに格納する。
さらに、第1の画像処理部311は、LUTの設定対象でないときは、入力データをそのまま第2の画像処理部312へ転送する。
第2の画像処理部312は、印刷時においては、入力データに対して第2の画像処理を実施し、画像処理後のデータを第3の画像処理部313へ転送する。
また、第2の画像処理部312は、LUT設定時においては、コピー元であるときは、管理下の画像処理用メモリ312aから格納LUTデータをリードして出力し、コピー先であるときは、入力データを管理下の画像処理用メモリ312aに格納する。
さらに、第2の画像処理部312は、LUTの設定対象でないときは、入力データをそのまま第2の画像処理部313へ転送する。
第3の画像処理部313は、印刷時においては、入力データに対して第3の画像処理を実施し、画像処理後のデータを外部へ転送する。
また、第3の画像処理部313は、LUT設定時においては、コピー元であるときは、管理下の画像処理用メモリ313aから格納LUTデータをリードして出力し、コピー先であるときは、入力データを管理下の画像処理用メモリ313aに格納する。
さらに、第3の画像処理部313は、LUTの設定対象でないときは、最終段の画像処理部なので配線381を使いM用画像処理パス320の画像処理部321へ転送する。
複数の画像処理用メモリ311a,312a,313aは、印刷時には保持しているLUTデータを、対応する画像処理部へ出力する。
また、複数の画像処理用メモリ311a,312a,313aは、LUT設定のときに、コピー元である場合には、格納LUTデータをアドレス順に対応する画像処理部にリードさせ、一方、コピー先の場合は、転送されてくるLUTデータをアドレス順にライトされる。
さらに、複数の画像処理用メモリ311a,312a,313aは、コピー元またはコピー先でない場合は、未使用となる。
次に、画像処理装置70のLUT設定処理について、図34を参照して説明する。
図34は、そのLUT設定処理の処理手順を示すフローチャートである。
この例では、M色用画像処理パス320の第2の画像処理部322の管理下の画像処理用メモリ322aの内容を、Y色用画像処理パス330の第2の画像処理部332の管理下の画像処理用メモリ332aにコピーする場合を想定する。この場合、M色用画像処理パス320が最優先の画像処理パスとなる。
このLUT設定処理はソフトウェア側の処理とハードウェア側の処理とに分けられるので、最初にソフトウェア側の処理つまりCPU360による処理について説明する。
CPU360は、コピー元の画像処理パス例えばM用画像処理パス320のDMAコントローラ324に対して、更新対象画像処理番号、コピー先の画像処理パス名を設定する(ステップS701)。
更新対象画像処理番号は、更新対象のLUTに関わる画像処理を示す番号(画像処理番号)を意味する。すなわち、第1の画像処理を示す画像処理番号1、第2の画像処理を示す画像処理番号2、および第3の画像処理を示す画像処理番号3のうち何れかの画像処理番号である。この例では、更新対象画像処理番号として画像処理番号2が設定される。
コピー先の画像処理パス名は、コピー先の画像処理パスを示す情報を意味する。すなわち、C色、M色、Y色、K色の各色用の画像処理パス310,320,330,340のうち何れかの画像処理パスを示すパス名である。
次に、CPU360は、コピー元の画像処理パスのDMAコントローラに対して、コピー開始コマンドを発行し(ステップS702)、その後、ハードウェアからの終了割り込みを待ちつつ、他の処理が割り当てられた場合は当該他の処理を実行するとともに、ハードウェアからの終了割り込みが発行されたときは、当該割り込み等を実行し(ステップS703)、このLUT設定処理を終了する。
ところで、シアン(C)、マゼンタ(M)、イエロー(Y)、ブラック(K)の各色のうち何れの色に関わる処理を1回目のLUT更新(設定)とするかで、コピー先の画像処理パス名は、次の(1)〜(4)の4つのパターンに分けられる。
(1)C色、M色、Y色、K色の順に、LUT更新(設定)が行われる場合においては、M色、Y色、K色の各色用の画像処理パス320,330,340のうち何れかの画像処理パスを示すパス名である。
この場合、C色に関わる処理のときは、外部メモリ370からリードされたLUTデータが使用されるので、コピー処理は行われない。
また、M色に関わる処理のときは、コピー処理が行われることになり、コピー元の画像処理パスはC用画像処理パス310で、コピー先の画像処理パスはM用画像処理パス320となる。
また、Y色に関わる処理のときは、コピー処理が行われることになり、コピー元の画像処理パスはM用画像処理パス320で、コピー先の画像処理パスはY用画像処理パス330となる。
さらに、K色に関わる処理のときは、コピー処理が行われることになり、コピー元の画像処理パスはY用画像処理パス330で、コピー先の画像処理パスはK用画像処理パス340となる。
(2)M色、Y色、K色、C色の順に、LUT更新(設定)が行われる場合においては、Y色、K色、C色の各色用の画像処理パス310,330,340のうち何れかの画像処理パスを示すパス名である。
この場合、M色に関わる処理のときは、外部メモリ370からリードされたLUTデータが使用されるので、コピー処理は行われない。
また、Y色に関わる処理のときは、コピー処理が行われることになり、コピー元の画像処理パスはM用画像処理パス320で、コピー先の画像処理パスはY用画像処理パス330となる。
また、K色に関わる処理のときは、コピー処理が行われることになり、コピー元の画像処理パスはY用画像処理パス330で、コピー先の画像処理パスはK用画像処理パス340となる。
さらに、C色に関わる処理のときは、コピー処理が行われることになり、コピー元の画像処理パスはK用画像処理パス340で、コピー先の画像処理パスはC用画像処理パス310となる。
(3)Y色、K色、C色、M色の順に、LUT更新(設定)が行われる場合においては、K色、C色、M色の各色用の画像処理パス310,320,340のうち何れかの画像処理パスを示すパス名である。この場合も、上記(1)、(2)の場合と同様にして、コピー元の画像処理パスとコピー先の画像処理パスが決定される。
(4)K色、C色、M色、Y色の順に、LUT更新(設定)が行われる場合においては、C色、M色、Y色の各色用の画像処理パス310,320,330のうち何れかの画像処理パスを示すパス名である。この場合も、上記(1)、(2)の場合と同様にして、コピー元の画像処理パスとコピー先の画像処理パスが決定される。
この例では、上記(1)の処理パターンでLUT更新(設定)が行われるようになっており、また、コピー元はM色用画像処理パス320で、コピー先はY色用画像処理パス330であり、さらに更新対象画像処理番号として画像処理番号2が設定される。
次に、ハードウェア側の処理について説明する。
コピー元のM用画像処理パス320のDMAコントローラ324はコピー開始コマンドの入力を受けて、更新対象画像処理番号およびコピー先の画像処理パス名を基に、コピー元の画像処理部322に対してLUTリード開始を通知するとともに、コピー先の画像処理部332に対してLUTライト開始を通知し、さらに、コピー元またはコピー先の画像処理部以外の画像処理部へは入力データの転送を通知する(ステップS711)。
コピー元の画像処理部322およびコピー先の画像処理部332は、コピー元のM用画像処理パス320のDMAコントローラ324からのコピー開始コマンドの通知を受けて、内部のパラメータを初期化する(ステップS712)。
すなわち、コピー元の画像処理部322は、コピー開始コマンドの通知を受けて、内部のパラメータを初期化する。具体的には以下の通り更新する。
リード数(次のリードアドレス)=0
コピー先の画像処理部332は、コピー開始コマンドの通知を受けて、内部のパラメータを初期化する。具体的には以下の通り更新する。
ライト数(次のライトアドレス)=0
次に、コピー元の画像処理部322は、管理下の画像処理用メモリ322aからアドレス順に1単位LUTデータを取り出し、この取り出した1単位LUTデータを出力すると同時に、リード数(次のアドレス)を更新する(ステップS713)。具体的には以下の通り更新する。
リード数=リード数+1単位
ここで、この例では、コピー元の画像処理部322から出力された1単位LUTデータは、コピー元のM用画像処理パス320の画像処理部323に入力され、続いて配線372および配線382を経由して、コピー先のY用画像処理パス330の画像処理部331に入力され、さらにコピー先のY用画像処理パス330のコピー先の画像処理部332に入力される。
この場合、コピー元のM用画像処理パス320の画像処理部323、およびコピー先のY用画像処理パス330の画像処理部331は、更新対象外の画像処理部であるので、これらの更新対象外の画像処理部は、入力データを加工せずにそのまま次の画像処理部へ転送する(ステップS714)。
そして、コピー先の画像処理部332は、入力された1単位LUTデータを管理下の画像処理用メモリ332aにアドレス順に格納すると同時に、ライト数(次のライトアドレス)を更新する(ステップS715)。具体的には以下の通り更新する。
ライト数=ライト数+1単位
コピー先の画像処理部332は、更新した更新後のライト数が管理下の画像処理用メモリ332aのサイズと等しくなったか否かを判断し(ステップS716)、この判断した結果、更新した更新後のライト数と管理下の画像処理用メモリ332aのサイズとが等しくなった場合は、コピー元のM用画像処理パス320のDMAコントローラ324に対して転送終了を通知する(ステップS717)。
ステップS716において、更新した更新後のライト数と画像処理用メモリ332aのサイズとが等しくないと判断された場合は、上記ステップS713に戻る。
転送終了通知を受け取ったコピー元のM用画像処理パス320のDMAコントローラ324は、全ての画像処理部つまり第1〜第3の画像処理部(C色、M色、Y色、K色)に対して、LUT更新(設定)作業の終了を通知するとともに、通常の画像処理開始を通知する(ステップS718)。
ステップS718を終了したコピー元のM用画像処理パス320のDMAコントローラ324はLUT更新作業が終了したことを示す割り込み、または終了ステータスを、CPU360へ発行する(ステップS719)。
他の作業中であったCPU360は、例えば割り込みを受けてLUT更新作業が終了したことを認識し(ステップS703)、このLUT設定処理を終了する。
次に、画像処理装置70のLUT設定処理の際のLUTデータの流れについて、図35を参照して説明する。
図35は、そのLUT設定処理の際のLUTデータの流れを説明する図である。なお、図35において、画像処理装置70は図33に示す画像処理装置70の機能構成と同一であるが、一部、符号を省略している。
さて、ここでは、M色用画像処理パス320の第2の画像処理部322の管理下の画像処理用メモリ322aの内容を、Y色用画像処理パス330の第2の画像処理部332の管理下の画像処理用メモリ332aにコピーする場合を想定する。
このような前提条件の下では、画像処理装置70は、次の(1)〜(6)の各処理を実行することで、LUTを更新(設定)する。
(1)CPU360は、コピー元のM用画像処理パス320のDMAコントローラ324に対し、画像処理部322からY用画像処理パス330へコピーするようコピー開始コマンドを発行する。
(2)DMAコントローラ324は、更新対象の画像処理部322にLUTリード開始を通知する。
(3)コピー元のM用画像処理パス320の画像処理部322は、管理下の画像処理用メモリ322aからアドレス順に1単位LUTデータをリードし、このリードした1単位LUTデータを次段の画像処理部323へ出力していく。
(4)コピー元のM用画像処理パス320の画像処理部323は、更新対象ではないので、入力された1単位LUTデータをそのままコピー先のY用画像処理パス330の画像処理部331へ出力する。
(5)コピー先のY用画像処理パス330の画像処理部331は、更新対象ではないので、入力された1単位LUTデータをそのままコピー先のY用画像処理パス330の画像処理部332へ出力する。
(6)コピー先のY用画像処理パス330の画像処理部332は、更新対象なので、届いた1単位LUTデータを、管理下の画像処理用メモリ332aにアドレス順に書き込んでいく。
そして、上記(1)〜(6)の各処理を繰り返すことにより、外部メモリ370にアクセスすることなく、Y用画像処理パス330の画像処理部332の管理下の画像処理用メモリ332aにLUTデータを設定することができる。
また、上記(1)〜(6)の各処理の場合と同様にして、コピー元のY用画像処理パス330の画像処理部332からコピー先のK用画像処理パス340の画像処理部342へ1単位LUTデータをコピーしていくことで、外部メモリ370にアクセスすることなく、K用画像処理パス340の画像処理部342の管理下の画像処理用メモリ342aにLUTデータを設定することができる。
このように、C用画像処理パス310の画像処理部312の管理下の画像処理用メモリ312aにLUTデータを設定するときに、C用画像処理パス310のDMAコントローラ314が、外部メモリ370へアクセスするのみで、M色、Y色、K色の各色の画像処理パスに関わるLUTの設定はコピー処理でよいこととなる。
ところで、画像処理装置70によるLUT設定と印字動作は、図36に示すようなタイミングで実施されることになる。
(1)実施の形態6で説明したように、C色、M色、Y色、K色の各色の画像処理パス310,320,330,340による1枚目の印字のための処理に関わるLUT設定が実施される(P311)。これは、4色一括によるLUT設定が実施されると言える。
(2)C用画像処理パス310に関わる1枚目の印字動作が終了したときは、他のM色、Y色、K色の画像処理パスが1枚目の印字動作の最中であっても、実施の形態6で説明したように、C色の画像処理パス310のみによる2枚目の印字のための処理に関わるLUT設定が実施される(P312)。つまり外部メモリ370からC用画像処理パス310にLUTデータが取り込まれ、C用画像処理パス310に書き込まれていく。
(3)M用画像処理パス320に関わる1枚目の印字動作が終了したときは、他のY色、K色の画像処理パスが1枚目の印字動作の最中であっても、実施の形態7で説明したように、C色の画像処理パス310からM用画像処理パス320へLUTデータがコピーされ、2枚目の印字のための処理に関わるLUT設定が実施される(P313)。
(4)Y用画像処理パス330に関わる1枚目の印字動作が終了したときは、他のK色の画像処理パスが1枚目の印字動作の最中であっても、上記(3)の場合と同様に、M色の画像処理パス320からY用画像処理パス330へLUTデータがコピーされ、2枚目の印字のための処理に関わるLUT設定が実施される(P314)。
(5)最後に、K用画像処理パス340に関わる1枚目の印字動作が終了したときは、上記(3)の場合と同様に、Y色の画像処理パス330からY用画像処理パス340へLUTデータがコピーされ、2枚目の印字のための処理に関わるLUT設定が実施される(P315)。
このように、タンデムエンジンにおいては、4色(C色、M色、Y色、K色)の何れかが動作中で4つの画像処理用メモリに同時に書き込むことができない期間があるが、本実施の形態7の例の如く、ある色に設定したLUTを他の色の画像処理用メモリにコピーすることで、4色一括によるLUTの設定ができない期間が存在する場合にも対応することが可能である。
以上説明したように、実施の形態7によれば、共通LUTデータをC色、M色、Y色、K色の4つの画像処理パスのそれぞれの画像処理用メモリに設定する場合、CPUによる4回のライト処理ではなく、DMAコントローラによる1回のDMAにより共通LUTデータを取り込み、この共通LUTデータを所定の色の画像処理部に取り込み、その後、取り込んだLUTデータを、他の色の画像処理パスへコピーすることができるので、LUTの更新時間の短縮、CPUの負荷軽減、メモリバス帯域の削減などを期待できる。
ところで、タンデムエンジンにおいては、4色(C色、M色、Y色、K色)の何れかが印字動作(画像処理)中で、4つの画像処理用メモリに同時にLUTデータを書き込むことができない期間が存在する。この場合は、4色に関わる印字動作(画像処理)が終了するまで、LUTの設定処理が実施されないことになる。
しかし、実施の形態7によれば、所定の色に関わる画像処理用メモリに設定したLUTを他の色に関わる画像処理用メモリにコピーすることができるので、前述したLUTを4色一括で設定できない期間が存在する場合においても、既に印字動作(画像処理)を終了している画像処理パスに対してはLUTの設定処理を実施することができる。
また、実施の形態7によれば、画像処理パスの印字動作が終了した後に、LUTデータのコピーが開始されるようなハードウェア構成にすることにより、さらにCPUの負荷を軽減することが可能になる。
(実施の形態8)
図37は本発明の実施の形態8に係る画像処理装置の機能構成を示している。
図37に示すように、画像処理装置80は、画像処理回路400と、外部メモリ410と、CPU(中央演算処理装置)420とを有している。
外部メモリ410は、テーブル情報を格納するメモリなどの外部記憶領域であり、DRAM(保持記憶動作が必要な随時書き込み読み出しメモリ)、ROM(読み出し専用メモリ)のように複数のデバイスが存在していても構わない。
また、外部メモリ(第1の記憶手段、第2の記憶手段)410は、シアンの色成分に対応するLUTを記憶する第1の記憶手段の機能と、マゼンタの色成分に対応するLUTに関わる第1の差分テーブルと、イエローの色成分に対応するLUTに関わる第2の差分テーブルとを記憶する第2の記憶手段の機能とを有している。
すなわち、外部メモリ410は、C色のLUT(基本テーブル=テーブルC)411、M色に関わる第1の差分テーブル(差分テーブルM)412およびY色に関わる第2の差分テーブル(差分テーブルY)413、ブラックの色成分に対応するLUT(テーブルK)414を予め記憶するとともに、実際に画像処理を行う3原色(G,B,R)のデータ(以下「RGBデータという。)415を記憶する。
CPU(中央演算処理装置)420は、後述するメモリコントローラ407を経由して、DMAコントローラ401,402に、テーブル情報の格納場所情報(アドレス)やデータサイズなど、必要な情報を設定する。
画像処理回路400は、DMAコントローラ401,402、差分演算回路403、LUT用メモリ404、座標回転部405、画像処理部406を備えている。
DMAコントローラ(アクセス制御手段)401は、メモリコントローラ407を経由して、ダイレクトメモリアクセス(DMA)により、CPU420によって設定されたアドレスを基に、ルックアップテーブル(LUT)に関わる基本テーブルあるいは差分テーブルを外部メモリ410から取り込み、この取り込んだ情報をLUT差分回路403へ転送する。
差分演算回路(演算処理手段)403は、DMAコントローラ401から転送されてきた情報が基本テーブルの場合には、そのままLUT用メモリ404に書き込む。
具体的には、DMAコントローラ401から出力されたLUT例えばシアンの色成分に対応するLUTとしての基本テーブルを取得したときは、当該基本テーブルをLUT用メモリ404に書き込む。
また、差分演算回路403は、上記転送されてきた情報が差分テーブル情報つまり所定のLUTとの差分の結果としての差分テーブルである場合は、その差分テーブル情報とLUT用メモリ404に既に設定されている値とで演算を行うとともに、この演算した結果をLUT用メモリ404に書き込み、さらにLUT用メモリ404の更新が終了した場合に、CPU420に対して更新終了を通知する。
具体的には、DMAコントローラ401から出力された差分テーブル例えば上記第1の差分テーブルを取得したときは、当該第1の差分テーブルとLUT用メモリ404から読み出したシアンの色成分に対応するLUTとを演算処理し、この演算処理した結果を、新たなLUTすなわちマゼンタの色成分に対応するLUTとしてLUT用メモリ404に書き込む。
また、DMAコントローラ401から出力された差分テーブル例えば上記第2の差分テーブルを取得したときは、当該第2の差分テーブルとLUT用メモリ404から読み出したマゼンタの色成分に対応するLUTとを演算処理し、この演算処理した結果を、新たなLUTすなわちイエローの色成分に対応するLUTとしてLUT用メモリ404に書き込む。
LUT用メモリ(ルックアップテーブル記憶手段)404は、画像処理時に参照されるLUTを記憶する。
すなわち、LUT用メモリ404には、シアンの色成分に対応するLUT、マゼンタの色成分に対応するLUT、イエローの色成分に対応するLUT、ブラックの色成分に対応するLUTが、差分演算回路403によって時系列に書き込まれることになる。
DMAコントローラ401は、時系列にLUT用メモリ404へのLUTの更新が終了すると、LUTの更新が終了した旨をCPU420へ通知する。
DMAコントローラ402は、画像処理時に使用されるものであり、メモリコントローラ407を経由して、ダイレクトメモリアクセス(DMA)により、外部メモリ410上のデータを取り込み、この取り込んだデータを座標回転部405へ転送する。
座標回転部(座標回転手段)405は、入力データ(RGBデータ)が3原色(R,G,B)の24bit形式であった場合、8bitごとに、画像処理部406へのデータを3原色(R,G,B)、3原色(G,B,R)、3原色(B,R,G)のように3原色のデータを回転させる機能を有する。
画像処理部(画像処理手段)406が、座標回転部405からの3原色のデータ(RGBデータ)とLUT用メモリ404の記憶内容とを基に所定の画像処理を行う。
本実施の形態8では、画像処理装置は、例えば、シアン(C)色、マゼンタ(M)色、イエロー(Y)色、ブラック(K)色の各色単位ごとに時系列で処理を分割して実行する画像処理装置例えば4サイクル方式のプリンタ(あるいはそのプリンタコントローラ)を想定している。
このような4サイクル方式プリンタにおいては、図37に示す例の如く、画像処理回路400にLUT用メモリを1色分(LUTを1色分)しか実装しない場合、図38に示すように、C色、M色、Y色、K色の各色ごとの画像処理P411,P412,P413,P414の開始前に、CPU420によって、所定のタイミングでLUT更新作業P411C,P412M,P413Y,P414Kが発生する。
このとき、処理をする色の順番は装置で固定となるため、LUTの更新時は、前に処理した色のLUTと、その色のLUTとの予め設定される差分情報)とを演算し、この演算した結果を基に更新する。
そして、3原色(G,B,R)の入力信号をC色、M色、Y色、K色の順で色変換を行う場合においては、LUTの設定に関し、C色のC色用LUTと、そのC用LUTとの予め設定される第1の差分情報とを演算することでM色のM用LUTを得ることができ、また、そのM用LUTと、そのM用LUTとの予め設定される第2の差分情報とを演算することでY色のY用LUTを得ることができる。
本実施の形態8では、第1の差分情報が第1の差分テーブル(差分テーブルM)412として、また第2の差分情報が第2の差分テーブル(差分テーブルY)413として、外部メモリ410に予め記憶されている。
ところで、3原色(G,B,R)と、C色、M色、Y色、K色の各色との関係においては、C=not(R)、G=not(Y)、B=not(M)で近似される。このような特徴を生かし、図39に示すように、入力RGBの配列を回転させると、M用の差分テーブルとY用の差分テーブルの情報量を少なくすることができる。
図39において、項目510はシアン色のLUTの設定値に関する情報であり、項目520はマゼンタ色のLUTの設定値に関する情報であり、項目530はイエロー色のLUTの設定値に関する情報である。
項目510においては、入力軸を(R,G,B)とした場合の入力値(R,G,B)511と、LUT設定値(LUT設定値C)512との関係を示している。
項目520においては、入力軸を(R,G,B)から(G,B,R)へ回転させた場合の入力値(G,B,R)521と、LUT設定値(LUT設定値M)522と、第1の差分テーブル値(LUT設定値C−LUT設定値M)523との関係を示している。
項目530においては、入力軸を(R,G,B)から(B,R,G)へ回転させた場合の入力値(B,R,G)531と、LUT設定値(LUT設定値Y)532と、第2の差分テーブル値(LUT設定値M−LUT設定値Y)533との関係を示している。
そして、LUT設定値512が図37のC色のLUT(テーブルC)411として、第1の差分テーブル値523が図37の第1の差分テーブル(差分テーブルM)412として、第2の差分テーブル値533が図37の第2の差分テーブル(差分テーブルY)413として、それぞれ外部メモリ410に記憶される。
この場合、入力信号(R,G,B)の配列を回転させることにより、M色の差分テーブル(第1の差分テーブル値523=第1の差分テーブル412)、Y色の差分テーブル(第2の差分テーブル値533=第2の差分テーブル413)の情報量を少なくすることができるので、外部メモリ410のメモリ容量を節約することが可能となる。
従って、本実施の形態8では、画像処理部406による画像処理のときに、座標回転部405によって入力信号(R,G,B)の配列を回転させることを条件に、上述したM色の差分テーブルおよびY色の差分テーブルを作成して外部メモリ410に予め格納するようにしている。
次に、画像処理装置80のLUT設定処理について、図40を参照して説明する。
図40は、そのLUT設定処理の処理手順を示すフローチャートである。
ここでは、入力信号(R,G,B)を、C色、M色、Y色、K色の順に色変換する場合を想定する。
(1)入力信号(R,G,B)からC色への色変換(C成分のLUT設定および画像処理)について
CPU420は、メモリコントローラ407を介して、DMAコントローラ401に対して、C色のLUT(基本テーブル=テーブルC)411の格納アドレスを設定し、C成分のLUT更新を起動させる(ステップS801)。
DMAコントローラ401は、設定された格納アドレスを基に、DMAにより、メモリコントローラ407を介して、外部メモリ410からC色のLUT411を取り込み(ステップS802)、この取り込んだC色のLUT411を差分演算回路403に転送する。
差分演算回路403は、転送されてきたC色のLUT411が基本テーブルであるので、そのままLUT用メモリ404に書き込み(ステップS802)、C色のLUT411の書き込みが完了したら、その旨をDMAコントローラ401へ通知する。
DMAコントローラ401は、差分演算回路403からの書き込みが完了した旨を受け取ったか否か(LUTの更新が完了したか否か)を判断し(ステップS803)、この判断した結果、LUTの更新が完了していない場合にはステップS802に戻り、一方、LUTの更新が完了した場合、LUTの更新が完了した旨を示す割り込みを、メモリコントローラ407を介してCPU420へ通知する。
LUTの更新完了に関わる割り込みを受け取ったCPU420は、その割り込み処理を実行し(ステップS804)、その後、メモリコントローラ407を介して、DMAコントローラ402に対して、RGBデータ415の格納アドレスを設定し、C成分の画像処理を起動させる(ステップS805)。
DMAコントローラ402は、設定された格納アドレスを基に、DMAにより、メモリコントローラ407を介して、外部メモリ410からRGBデータ415を取り込み(ステップS806)、この取り込んだRGBデータ415を座標回転部405に転送する。
座標回転部405は、転送されてきたRGBデータ(R,G,B)415を、そのまま画像処理部406へ転送する。
画像処理部406は、転送されてきたRGBデータ415と、LUTメモリ404から読み出したLUTつまりC色のLUT(基準テーブル)411とを基に画像処理、すなわち、RGBデータ415を、3原色(R,G、B)からC成分の色に色変換する(ステップS806)。
画像処理部406は、画像処理(C成分の色への色変換)が終了したら、その旨をDMAコントローラ402へ通知する。
DMAコントローラ402は、画像処理部406からの画像処理が終了した旨を受け取ったか否かを判断し(ステップS807)、この判断した結果、画像処理が終了した旨を受け取っていない場合にはステップS806に戻り、一方、画像処理が終了した旨を受け取った場合は、画像処理が終了した旨を示す割り込みを、メモリコントローラ407を介してCPU420へ通知する。
(2)入力信号(R,G,B)からM色への色変換(M成分のLUT設定および画像処理)について
画像処理(C成分の色への色変換)が終了した旨を示す割り込みを受け取ったCPU420は、その割り込みを実行し(ステップS808)、その後、メモリコントローラ407を介して、DMAコントローラ401に対して、第1の差分テーブル(差分テーブルM)412の格納アドレスを設定し、M成分のLUT更新を起動させる(ステップS809)。
DMAコントローラ401は、設定された格納アドレスを基に、DMAにより、メモリコントローラ407を介して、外部メモリ410から第1の差分テーブル(差分テーブルM)412を取り込み(ステップS810)、この取り込んだ第1の差分テーブル(差分テーブルM)412を差分演算回路403に転送する。
差分演算回路403は、LUT用メモリ404からC色のLUT(基準テーブル)411のLUT設定値(LUTデータ)を読み出し(ステップS811)、この読み出したC色のLUT(基準テーブル)411のLUT設定値と、転送されてきた第1の差分テーブル(差分テーブルM)412とを演算して、新たなLUTつまりM成分のLUTのLUT設定値(LUTデータ)を作成し(ステップS812)、この演算結果(M成分のLUTのLUT設定値)をLUT用メモリ404に書き込む(ステップS813)。
差分演算回路403は、M成分のLUTのLUT設定値の書き込みが完了したら、その旨をDMAコントローラ401へ通知する。
DMAコントローラ401は、差分演算回路403からの書き込みが完了した旨を受け取ったか否か(LUTの更新が完了したか否か)を判断し(ステップS814)、この判断した結果、LUTの更新が完了していない場合にはステップS810に戻り、一方、LUTの更新が完了した場合、LUTの更新が完了した旨を示す割り込みを、メモリコントローラ407を介してCPU420へ通知する。
LUTの更新完了に関わる割り込みを受け取ったCPU420は、その割り込み処理を実行し(ステップS815)、その後、メモリコントローラ407を介して、DMAコントローラ402に対して、RGBデータ415の格納アドレスを設定し、M成分の画像処理を起動させる(ステップS816)。
DMAコントローラ402は、設定された格納アドレスを基に、DMAにより、メモリコントローラ407を介して、外部メモリ410からRGBデータ415を取り込み(ステップS817)、この取り込んだRGBデータ415を座標回転部405に転送する。
座標回転部405は、転送されてきたRGBデータ415の配列を、(R,G,B)から(G,B,R)へ回転させ、回転後のRGBデータ(G,B,R)415を画像処理部406へ転送する。
画像処理部406は、転送されてきたRGBデータ415と、LUTメモリ404から読み出したLUTつまりM成分のLUTとを基に画像処理、すなわち、RGBデータ415を、3原色(R,G、B)からM成分の色に色変換する(ステップS817)。
画像処理部406は、画像処理(M成分の色への色変換)が終了したら、その旨をDMAコントローラ402へ通知する。
DMAコントローラ402は、画像処理部406からの画像処理が終了した旨を受け取ったか否かを判断し(ステップS807)、この判断した結果、画像処理が終了した旨を受け取っていない場合にはステップS817に戻り、一方、画像処理が終了した旨を受け取った場合は、画像処理が終了した旨を示す割り込みを、メモリコントローラ407を介してCPU420へ通知する。
(3)入力信号(R,G,B)からY色への色変換(Y成分のLUT設定および画像処理)について
画像処理(M成分の色への色変換)が終了した旨を示す割り込みを受け取ったCPU420は、その割り込みを実行し(ステップS819)、その後、メモリコントローラ407を介して、DMAコントローラ401に対して、第2の差分テーブル(差分テーブルY)413の格納アドレスを設定し、Y成分のLUT更新を起動させる(ステップS820)。
DMAコントローラ401は、設定された格納アドレスを基に、DMAにより、メモリコントローラ407を介して、外部メモリ410から第2の差分テーブル(差分テーブルY)413を取り込み(ステップS821)、この取り込んだ第2の差分テーブル(差分テーブルY)413を差分演算回路403に転送する。
差分演算回路403は、LUT用メモリ404からM成分のLUTのLUT設定値(LUTデータ)を読み出し(ステップS822)、この読み出したM色のLUTのLUT設定値と、転送されてきた第2の差分テーブル(差分テーブルY)413とを演算して、新たなLUTつまりY成分のLUTのLUT設定値(LUTデータ)を作成し(ステップS823)、この演算結果(Y成分のLUTのLUT設定値)をLUT用メモリ404に書き込む(ステップS824)。
差分演算回路403は、Y成分のLUTのLUT設定値の書き込みが完了したら、その旨をDMAコントローラ401へ通知する。
DMAコントローラ401は、差分演算回路403からの書き込みが完了した旨を受け取ったか否か(LUTの更新が完了したか否か)を判断し(ステップS825)、この判断した結果、LUTの更新が完了していない場合にはステップS821に戻り、一方、LUTの更新が完了した場合、LUTの更新が完了した旨を示す割り込みを、メモリコントローラ407を介してCPU420へ通知する。
LUTの更新完了に関わる割り込みを受け取ったCPU420は、その割り込み処理を実行し(ステップS826)、M成分の画像処理の場合と同様にして、DMAコントローラ402に対してY成分の画像処理を起動させる。
その後、画像処理用回路400では、M成分の画像処理の場合と同様にして、Y成分の画像処理を実行する。なお、この場合、座標回転部405では、転送されてきたRGBデータ415の配列を、(R,G,B)から(B,R,G)へ回転させ、回転後のRGBデータ(B,R,G)415を画像処理部406へ転送する。
(4)入力信号(R,G,B)からK色への色変換(K成分のLUT設定および画像処理)について
Y成分の画像処理が終了した場合には、K成分のLUT更新およびK成分の画像処理については、K成分の色に関わるLUTの特性は上述したC成分、M成分、Y成分の各色に関わるLUTの特性とは全く異なっているので、C成分のLUT更新およびC成分の画像処理の場合に、外部メモリ410からK色に関わるLUT(テーブルK)414を取り込んで処理することになる。
以上説明したように、実施の形態8によれば、複数のLUTの保存するための不揮発性記憶容量を緩和するために基本テーブルと補間テーブルを実装し、基本テーブルと補間テーブルとの演算でLUTの内容を更新するに際し、ファームウェアでのLUTの取り込み、および演算をすることなく、DMAコントローラによってLUTを取り込み、また演算処理部によって基本テーブルと補間テーブル(差分テーブル)とを演算するようにしているので、DMAコントローラや演算処理部などのハードウェアによってLUTの更新処理を高速に実施することができる。すなわち、LUTの設定時間を短縮することができる。
また、ハードウェアによるLUTの更新中はファームウェアは別の作業を実施することができるため、装置性能を向上させることができる。
また、実施の形態8によれば、入力される3原色(R,G,B)のデータの配列を回転させた後、画像処理を実施するようにしているので、3原色(R,G,B)のデータの配列を回転させることを条件に、差分テーブルを作成することで、当該差分テーブルの情報量を少なくすることができる。これにより、差分テーブルを予め記憶する外部メモリのメモリ容量をより一層削減するこができる。
(実施の形態9)
図41は本発明の実施の形態9に係る画像処理装置の機能構成を示している。
図41に示す画像処理装置90は、図37に示した実施の形態8の画像処理装置80の機能構成において、DMAコントローラ402を削除した機能構成になっている。なお、図41において、図37に示した構成要素と同様の機能を果たす部分には同一の符号を付している。
実施の形態9において、DMAコントローラ401は、LUT設定用のDMAコントローラの機能と画像処理用のDMAコントローラの機能とを有している。
すなわち、LUTの更新と画像処理は時系列で実行するため、DMAコントローラ401は1つのみでよい。
CPU420は、画像処理用回路400に対してLUT更新モードであることを設定した後、DMAコントローラ401を起動する。このLUT更新モードでのLUT更新処理は、実施の形態8のLUT更新処理と同様であるので、ここではその説明を省略する。
また、色ごとに、画像処理用回路400のDMAコントローラ401から通知されるLUTの更新終了を受け取ったCPU420は、画像処理用回路400に対して画像モードであることを設定した後、DMAコントローラ401を起動する。この画像モードでの画像処理は、実施の形態8の画像処理と同様であるので、ここではその説明を省略する。なお、この画像処理においては、DMAコントローラ401が、メモリコントローラ407を介して、外部メモリ410からRGBデータ415を取り込むことになる。
以上説明したように、実施の形態9によれば、実施の形態8の作用効果に加えて、1つのDMAコントローラによって、LUTの設定に関わる処理と、画像処理に関わる処理とを時系列に実行するようにしているので、部品点数を削減することができ、画像処理回路を小型化することが可能となる。