以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための図面において同一の構成要素には原則として同一の符号を付し、その繰り返しの説明は省略する。
(実施の形態1)
本発明の実施の形態1に係る画像処理装置について詳細に説明する。
図1は、実施の形態1に係る画像処理装置の構成を示している。
図1に示すように、画像処理装置100は、CPU(中央演算処理装置)101、メモリ102、DMA(ダイレクトメモリアクセス)コントローラ103、データ伸長部104、画像処理部105、画像出力部106、メモリバス制御部107、ラインバッファ108およびLUT(ルックアップテーブル)用メモリ109を備えている。
CPU101は、バス110を介してDMAコントローラ103、データ伸長部104、画像処理部105、画像出力部106およびメモリバス制御部107と接続され、これら各構成要素に対し各処理に応じた動作条件情報の設定を行う。
具体的には、CPU101は、画像処理時には、DMAコントローラ103、データ伸長部104、画像処理部105、画像出力部106およびメモリバス制御部107に対し所定の動作条件情報を設定し、DMAコントローラ103に対しダイレクトメモリアクセス(以下「DMA」という)を開始させるとともに、ルックアップテーブル(以下「LUT」という)の設定処理時には、DMAコントローラ103、データ伸長部104およびメモリ制御部107に対し所定の動作条件情報を設定し、DMAコントローラ103に対しDMAを開始させる。
なお、画像処理時およびLUTの設定処理時に設定される所定の動作条件情報の詳細については後述する。なお、LUTの設定処理とは、指定されたLUTデータ(画像処理時に使用されるLUTデータ)をLUT用メモリに格納することを意味する。
メモリ102は、圧縮された画像データ(以下「圧縮画像データ」という)を格納するとともに、圧縮されたLUTデータ(以下「圧縮LUTデータ」という)を格納する。具体的には、メモリ102は、画像処理時には圧縮画像データを格納し、一方、LUTの設定処理時には圧縮LUTデータを格納する。
圧縮画像データは、所定のデータ形式例えばラスター形式で生成された画像処理対象の画像データが、所定の圧縮方法例えば2次元ランレングス符号化のようなライン間相関を利用した方式の圧縮方法(圧縮方式)で圧縮されたものである。なお、圧縮LUTデータの詳細については後述する。
DMAコントローラ103は、CPU101によって設定された設定内容を基に、DMAにより、メモリ102から圧縮されたデータ(圧縮画像データまたは圧縮LUTデータ)を読み出して、データ伸長部104へ出力する。
具体的には、DMAコントローラ103は、画像処理時には、メモリ102から圧縮画像データを読み出し、これをデータ伸長部104へ出力し、一方、LUTの設定処理時には、メモリ102から圧縮LUTデータを読み出し、これをデータ伸長部104へ出力する。
データ伸長部104は、画像処理時には、DMAコントローラ103からの圧縮画像データを伸長し、この伸長した画像データを画像処理部105へ出力するとともに、LUTの設定処理時には、入力された圧縮LUTデータを伸長し、この伸長したLUTデータをLUT用メモリ109へ格納する。
なお、データ伸長部104は、画像処理時には、参照用の画像データをラインバッファ108から読み出すとともに、伸長した画像データをラインバッファ108に書き込む。
画像処理部105は、データ伸長部104からのデータ(画像データ)と後述するLUT用メモリ109から読み出したLUTデータとを基に画像処理を実行し、この実行した結果(出力画像データ)を画像出力部106へ出力する。
画像出力部106は、画像処理部105からの画像処理されたデータ(出力画像データ)を出力する。
メモリバス制御部107は、画像処理時には、データ伸長部104とラインバッファ108と接続するとともに画像処理部105とLUT用メモリ109とを接続し、一方、LUT設定時には、データ伸長部104とLUT用メモリ109とを接続する。
このようにLUTの設定処理時において、データ伸長部104とLUT用メモリ109とが接続されることにより、データ伸長部104はLUT用メモリ109をラインバッファとして使用することが可能となる。そして、データ伸長部104による圧縮LUTデータの伸長処理が終了した場合は、LUT用メモリ109には指定されたLUTデータ(伸長されたLUTデータ)が格納されていることになる。
ラインバッファ108は、画像処理時に伸長用のメモリとして使用されるものであり、伸長された画像データを保持する。
LUT用メモリ109は、画像処理時には、指定されたLUTデータ(画像処理部105によって使用されるLUTデータ)を格納するメモリとして使用され、LUTの設定処理時には、伸長されたLUTデータを格納する伸長用のメモリ(ラインバッファ)として使用される。
なお、画像処理時においては、DMAコントローラ103、データ伸長部104、画像処理部105および画像出力部106は、CPU101によって設定されたサイズ分のデータについての処理を実行し終了するか、あるいはCPU101から出力される停止要求を受け取るまでは、各構成要素の処理を繰り返す。
これに対し、LUTの設定処理時においては、DMAコントローラ103およびデータ伸長部104は、CPU101によって設定されたサイズ分のデータについての処理を実行し終了するか、あるいはCPU101から出力される停止要求を受け取るまでは、各構成要素の処理を繰り返す。
なお、実施の形態1では、伸長手段はデータ伸長部104に対応し、画像処理手段は画像処理部105に対応し、圧縮データ記憶手段はメモリ102に対応し、読出手段はDMAコントローラ103に対応し、ルックアップテーブルデータ記憶手段はLUT用メモリ109に対応し、上位の制御手段はCPU101に対応する。
次に、圧縮LUTデータについて説明する。
図2は、実施の形態1に係るLUTデータ群の一例を示している。
図2に示すように、LUTデータ群10は、1つのLUTデータが1つのラインに対応する画像データとして定義され、当該複数のラインに対応する複数のLUTデータが画像処理対象の画像データのデータ形式と同じデータ形式例えばラスター形式に従って1つの情報として生成されたものである。
このような1つの情報としてのLUTデータ群10は、画像処理対象の画像データに対し実施される所定の圧縮方法(例えばライン間相関を利用した方式)に基づく圧縮処理の場合と同一の圧縮方法(例えばライン間相関を利用した方式)で圧縮される。そして、このようにして圧縮されたLUTデータ群(ラスター形式の画像データ)が、LUTの設定処理が実施されるときにメモリ102に格納され、圧縮LUTデータとして使用される。
以上説明したように、実施の形態1では、LUTデータ群は、ラスター形式に従って生成された、複数のラインに対応する複数のLUTデータとしての1つの情報を意味する。換言すれば、1つの情報は、LUTデータ群(複数のLUTデータ)に対応するラスター形式の画像データを意味する。圧縮LUTデータは、1つの情報すなわち圧縮されたラスター形式の画像データ(LUTデータ群)を意味する。
実施の形態1において、ラスター形式に従って複数のLUTデータが1つの情報として生成され、1つの情報としてのLUTデータ群が圧縮されている理由は次の通りである。
すなわち、複数のLUTデータがラスター形式に従って1つの情報つまりLUTデータ群(ラスター形式の画像データ)として生成された場合に、そのLUTデータ群(1つの情報)が圧縮されるときは、圧縮されたLUTデータ群(1つの情報)に対応する1つのファイルが生成され、そのファイルには、例えば圧縮方法を示す情報(冗長部分)などのヘッダが生成され付加される。そのため、複数のLUTデータが存在する場合であっても、1つの情報としてのLUTデータ群に対する圧縮処理を実施、すなわち前記ヘッダが付加されたファイルの生成処理(換言すれば圧縮処理)を1回のみ実施すればよいので、圧縮処理効率が向上するからである。
これに対し、複数のLUTデータがそれぞれ圧縮された場合では、圧縮された各LUTデータに対応する複数のファイルが生成され、それぞれのファイルには、例えば圧縮方法を示す情報などのヘッダが生成され付加される。そのため、そのようなヘッダが付加されたファイルの生成処理(換言すれば圧縮処理)を、LUTデータの数に応じて実施しなければならず、圧縮処理効率は低いものとなる。
ちなみに、図2に示すLUTデータ群10は、LUTデータ1からLUTデータ8はそれぞれ1つのラインに対応する画像データとして定義され、例えばラスター形式に従ってこれら8つのラインに対応する画像データが1つの情報としてのLUTデータ群(ラスター形式の画像データ)になっている。そして、その1つの情報としてのLUTデータ群(ラスター形式の画像データ)が、例えばライン間相関を利用した方式の圧縮方法に従って圧縮される。
ここで、LUTデータ群の一例を図3に示す。この図3に示す例のLUTデータ群は、画像処理部105の画像処理を、「0」から「15」の値をとる4bit(ビット)の入力データを「0」から「3」の値をとる2bit(ビット)の出力データにする階調変換とした場合において、画像処理対象の画像データの種類に応じて出力値を変更するために、LUTデータ1からLUTデータ8までの複数(8つ)のLUTデータを有している。
このような複数のLUTデータが、画像処理対象の画像データのデータ形式と同じデータ形式例えばラスター形式に従って1つの情報つまりLUTデータ群(ラスター形式の画像データ)として生成される。
なお、実施の形態1において、画像処理対象の画像データの種類には、写真を示す画像データ、図形を示す画像データ、文字を示す画像データなどが含まれる。また、画像処理の種類には、階調変換、入出力特性変換、色空間変換、ハーフトーンなどが含まれる。
次に、画像処理装置のLUTの設定処理について、図4を参照して説明する。
図4は、そのLUTの設定処理の処理手順を示すフローチャートである。
実施の形態1では、CPU101は、例えば、写真の画像データに対する階調変換を実施する場合、文字(テキスト)の画像データに対する階調変換を実施する場合、写真の画像データに対する例えば色空間変換を実施する場合など、画像データの種類と画像処理の種類に応じてLUTデータが異なり、LUTデータ群中の何れのLUTデータ(何ライン目のLUTデータ)を使用すればよいかを知っている。
図4に示すように、CPU101がLUT設定要求を認識すると、CPU101は、図2に示すようなLUTデータ群10に対応する、当該CPU101が生成した圧縮LUTデータ、または、データを送受信する通信手段(図示せず)を介して取得した圧縮LUTデータを、メモリ102に格納する(ステップS101)。
CPU101は、DMAコントローラ103、データ伸長部104およびメモリバス制御部107に対し後述する動作条件情報を設定し(ステップS102)、その後、DMAコントローラ103に対しDMAを開始させる(ステップS103)。
ここで、動作条件情報の内容について説明する。
動作条件情報として、DMAコントローラ103には、メモリ102に格納されている圧縮LUTデータの格納アドレスおよびデータサイズが設定され、データ伸長器104には、圧縮LUTデータにかかわる伸長すべきデータ(画像データ)の画像サイズが設定され、メモリバス制御部107には、LUTの設定である旨が設定される。
上記データサイズは、アクセス対象の圧縮LUTデータ(複数(N)のラインに対応する画像データに対応する圧縮LUTデータ)のデータサイズ(情報量)を意味する。また、上記画像サイズは、伸長処理後のLUTデータの全部または一部(先頭のラインからNライン未満のラインまでの一部のラインつまり一部のLUTデータ)のデータサイズ(情報量)を意味する。
例えば、図2に示したLUTデータ群10に対応する圧縮LUTデータにおいては、図5に示すように、データサイズは、1ライン目から8ライン目までの8つのラインに対応する画像データの圧縮処理後のサイズであり、一方、画像サイズは、指定されるLUTデータが例えば2ライン目のLUTデータであるとした場合には、1ライン目から2ライン目までの2つのラインに対応する画像データの伸長処理後のサイズとなる。
さて、CPU101によって動作条件情報(LUTの設定である旨)が設定されたメモリ制御部107は、図6に示すように、データ伸長部104とLUT用メモリ109とを接続する。これにより、データ伸長部104はLUT用メモリ109をラインバッファとして使用することが可能となる。
このメモリバス制御部107の処理と並行して、CPU101によって動作条件情報(圧縮LUTデータの格納アドレスおよびデータサイズ)が設定されたDMAコントローラ103は、CPU101によって設定された設定内容を基に、DMAによりメモリ102から圧縮LUTデータをリードして、データ伸長部104へ出力する(ステップ104)。
ステップS104を終了したDMAコントローラ103は、CPU101によって設定されたデータサイズに対応するデータ(圧縮LUTデータ)をデータ伸長部104へ出力したか、またはCPU101から停止要求を受け取ったかを判断する(ステップ105)。
ここで、DMAコントローラ103は、「データサイズ=データサイズ−1単位」を演算し、この演算した結果、データサイズ=0になった場合に、設定されたデータサイズに対応するデータをデータ伸長部104へ出力したと判断するようになっている。なお、1単位はワード(語)を意味し、画像処理装置100の仕様に応じて決定されており、例えば8ビットや16ビットなどである。
DMAコントローラ103は、ステップS105において前記データサイズに対応するデータをデータ伸長部104へ出力していないと判断した場合、または前記停止要求を受け取っていないと判断した場合には、ステップS104に戻り、一方、ステップS105において前記データサイズに対応するデータをデータ伸長部104へ出力したと判断した場合、または前記停止要求を受け取ったと判断した場合は、このDMA処理を終了する(ステップS106)。
ところで、DMAコントローラ103から出力された圧縮LUTデータ(複数のラインのLUTデータに対応する画像データ)を受け取ったデータ伸長部104は、その受け取った圧縮LUTデータを伸長する(ステップS107)。
この場合、データ伸長部104は、圧縮されている1つのラインに対応するLUTデータごとに伸長し、この伸長した1つのラインに対応するLUTデータをラインバッファとしてのLUT用メモリ109に格納する。LUT用メモリ109の内容は、データ伸長部104によって伸長された最新のラインに対応するLUTデータとなる。
ステップS107を終了したデータ伸長部104は、CPU101によって設定された画像サイズに対応するデータ(圧縮LUTデータの全部または一部)を伸長したか否かを判断する(ステップS108)。
ここで、データ伸長部104は、「画像サイズ=画像サイズ−1単位」を演算し、この演算した結果、画像サイズ=0になった場合に、画像サイズに対応するデータを伸長したと判断するようになっている。
データ伸長部104は、ステップS108において前記画像サイズに対応するデータを伸長していないと判断した場合には、上記ステップS107に戻り、一方、ステップS108において前記画像サイズに対応するデータを伸長したと判断した場合は、伸長処理を終了した旨をCPU101へ通知する。
画像サイズに対応するデータが伸長された場合、例えば、CPU101が設定する画像サイズが図5に示すように1ライン目から2ライン目までの2つのラインに対応する圧縮されたLUTデータ(画像データ)に関するデータで、その2つのラインに対応する圧縮されたLUTデータが伸長された場合は、データ伸長部104による伸長処理が終了した時点で、LUT用メモリ109には2ライン目のLUTデータ(LUTデータ2)が格納されたことになる。
データ伸長部104から伸長処理を終了した旨を通知されたCPU101は、DMAコントローラ103およびデータ伸長部104に対し停止要求を送出する(ステップS109)。
このステップS109が終了した後は、このLUTの設定処理が終了される。すなわち、上述したように、DMAコントローラ103は、CPU101によって設定されたサイズに対応するデータに対するDMA処理を実行し終了するか、あるいはCPU101から送出される停止要求を受け取るまでは、DMA処理を繰り返す。データ伸長部103は、CPU101によって設定されたサイズに対応するデータに対する伸長処理を実行し終了するまでは、その伸長処理を繰り返す。
次に、画像処理装置の画像処理について、図7を参照して説明する。
図7は、その画像処理の処理手順を示すフローチャートである。
この画像処理においては、LUT用メモリ109には、上述したLUTの設定処理が実施されたことにより、既に、当該画像処理で使用されるLUTデータ(1つのラインに対応するLUTデータ)が格納されている。
さて、CPU101が画像処理要求を認識すると、CPU101は、生成した圧縮画像データ、またはデータを送受信する通信手段(図示せず)を介して取得した圧縮画像データを、メモリ102に格納する(ステップS201)。
CPU101は、DMAコントローラ103、データ伸長部104、画像処理部105、画像出力部106およびメモリバス制御部107に対し後述する動作条件情報を設定し(ステップS202)、その後、DMAコントローラ103に対しDMAを開始させる(ステップS203)。
ここで、動作条件情報の内容について説明する。
動作条件情報として、DMAコントローラ103には、メモリ102に格納されている圧縮画像データの格納アドレスおよびデータサイズが設定され、データ伸長器104には、圧縮画像データにかかわる伸長すべきデータ(画像データ)の画像サイズが設定され、画像処理部105および画像出力部106には、出力すべきデータ(画像データ)つまり出力画像データの出力画像サイズが設定され、メモリバス制御部107には、画像処理である旨が設定される。
なお、実施の形態1において、データサイズは、画像処理対象の圧縮画像データ(複数(M)のラインに対応する画像データ)のデータサイズ(情報量)を意味する。また、画像サイズは、伸長処理後の画像データ(複数(M)のラインに対応する画像データ)のデータサイズ(情報量)を意味する。さらに、出力画像サイズは、出力すべき画像データ(複数(M)のラインに対応する画像データ)のデータサイズ(情報量)を意味する。
さて、CPU101によって動作条件情報(画像処理である旨)が設定されたメモリ制御部107は、図8に示すように、データ伸長部104とラインバッファ108とを接続するとともに、画像処理部105とLUT用メモリ109とを接続する。
このメモリバス制御部107の処理と並行して、CPU101によって動作条件情報(圧縮画像データの格納アドレスおよびデータサイズ)が設定されたDMAコントローラ103は、CPU101によって設定された設定内容を基に、DMAによりメモリ102から圧縮画像データをリードして、データ伸長部104へ出力する(ステップ204)。
ステップS204を終了したDMAコントローラ103は、上記図4のステップS105の場合と同様にして、CPU101によって設定されたデータサイズに対応するデータ(圧縮画像データ)をデータ伸長部104へ出力したか、またはCPU101から停止要求を受け取ったかを判断し(ステップ205)、その判断した結果、前記データサイズに対応するデータをデータ伸長部104へ出力していない場合、または前記停止要求を受け取っていない場合には、ステップS204に戻り、一方、前記データサイズに対応するデータをデータ伸長部104へ出力した場合、または前記停止要求を受け取った場合は、このDMA処理を終了する(ステップS206)。
ところで、DMAコントローラ103から出力された圧縮画像データを受け取ったデータ伸長部104は、その受け取った圧縮画像データを伸長するとともに、この伸長した画像データを画像処理部105へ出力する(ステップS207)。
伸長処理を実施するに際し、データ伸長部104は、伸長されている参照用の画像データ(1つのラインに対応する画像データ)をラインバッファ108からリードし、このリードした参照用の画像データを参照して、伸長対象の圧縮されている画像データ(1つのラインに対応する画像データ)を伸長する。次に、データ伸長部104は、伸長した1つのラインに対応する画像データを、ラインバッファ108にライトするとともに画像処理部105へ出力する。
例えば、データ伸長部104による2ライン目の画像データに対する伸長処理のときは、1ライン目の画像データがラインバッファ108からリードされるとともに、2ライン目の画像データが、リードされた1ライン目の画像データを参照して伸長処理された後、ラインバッファ108にライトされる。その2ライン目の画像データに対する伸長処理が終了した時点においては、2ライン目の画像データ(1つのラインに対応する画像データを構成する複数の画素に対応する全ての画素データ)がラインバッファ108に格納されることになる。
ステップS207を終了したデータ伸長部104は、上記図4のステップS108の場合と同様にして、ステップCPU101によって設定された画像サイズに対応するデータを画像処理部105へ出力したか、またはCPU101から停止要求を受け取ったかを判断し(ステップS208)、その判断した結果、前記画像サイズに対応するデータを画像処理部105へ出力していない場合、または前記停止要求を受け取っていない場合には、上記ステップS207に戻り、一方、前記画像サイズに対応するデータを画像処理部105へ出力した場合、または前記停止要求を受け取った合は、この伸長処理を終了する(ステップS209)。
データ伸長部104から出力された画像データを受け取った画像処理部105は、その画像データとLUT用メモリ109から読み出したLUTデータとを基に画像処理を実施し、この画像処理結果である画像データ(出力画像データ)を画像出力部106へ出力する(ステップS210)。
画像出力部106は、画像処理部105からの出力画像データを出力する(ステップS211)。
画像処理部105および画像出力部106は、CPU101によって設定された出力画像サイズに対応するデータ(画像データ)を出力したか否かを判断する(ステップS212)。
ここで、画像処理部105および画像出力部106は、「出力画像サイズ=出力画像サイズ−1単位」を演算し、この演算した結果、出力画像サイズ=0になった場合に、出力画像サイズに対応するデータを出力したと判断するようになっている。
ステップS212において出力画像サイズに対応するデータが出力されていないと判断された場合は、ステップS210に戻る。これに対し、ステップS212において出力画像サイズに対応するデータが出力されたと判断された場合においては、画像処理部105は画像処理を終了したと認識する。これに対し、画像出力部106は出力処理を終了したと認識し、出力処理を終了した旨をCPU101へ通知する。
そして、画像出力部106から出力処理を終了した旨を通知されたCPU101は、DMAコントローラ103、データ伸長部104、画像処理部105および画像出力部106に対し停止要求を送出する(ステップS213)。このステップS213が終了した後は、この画像処理が終了される。
すなわち、上述したように、DMAコントローラ103およびデータ伸長部104は、CPU101によって設定されたサイズに対応するデータに対する処理を実行し終了するか、あるいはCPU101から送出される停止要求を受け取るまでは、それぞれの処理を繰り返す。一方、画像処理部105および画像出力部106は、CPU101によって設定されたサイズに対応するデータに対する処理を実行し終了するまでは、それぞれの処理を繰り返す。
なお、実施の形態1では、図3に示したLUTデータ群の一例は、予め設定された画像データの種類の順番に従って各LUTデータが配置されているが、LUTデータ群は、図9に示すように、類似したLUTデータ同士が隣接して配置されるようなっていてもよい。これにより、類似したLUTデータ同士が隣接されて配置されているLUTデータ群が圧縮された場合の圧縮効率を向上させることができる。
(実施の形態2)
次に、本発明の実施の形態2に係る画像処理装置について詳細に説明する。
図10は、実施の形態2に係る画像処理装置の構成を示している。
図10に示すように、画像処理装置200は、CPU201、メモリ202、DMAコントローラ203、データ伸長部204、第1の画像処理部205、第2の画像処理部206、画像出力部207、メモリバス制御部208、ラインバッファ209、第1のLUT用メモリ210および第2のLUT用メモリ211を備えている。
CPU201は、バス212を介して、DMAコントローラ203、データ伸長部204、第1の画像処理部205、第2の画像処理部206、画像出力部207およびメモリバス制御部208と接続され、これらの各構成要素に対し各処理に応じた動作条件情報の設定を行う。
具体的には、CPU201は、画像処理時には、DMAコントローラ203、データ伸長部204、第1の画像処理部205、第2の画像処理部206、画像出力部207およびメモリバス制御部208に対し所定の動作条件情報を設定し、DMAコントローラ203に対しDMA(ダイレクトメモリアクセス)を開始させるとともに、LUT(ルックアップテーブル)の設定処理時には、DMAコントローラ203、データ伸長部204およびメモリ制御部208に対し所定の動作条件情報を設定し、DMAコントローラ203に対しDMAを開始させる。
なお、画像処理時およびLUTの設定処理時に設定される所定の動作条件情報の詳細については、後述する。
メモリ202は、圧縮画像データを格納するとともに、圧縮LUTデータを格納する。具体的には、メモリ202は、画像処理時には圧縮画像データを格納し、一方、LUTの設定処理時には圧縮LUTデータを格納する。
実施の形態2では、画像処理対象の画像データは、ラスター形式に従って生成されている。このラスター形式の画像データが例えば2次元ランレングス符号化のようなライン間相関を利用した方式の圧縮方法(圧縮方式)で圧縮されている。すなわち、画像処理対象の画像データに対応する圧縮画像データは、実施の形態1の場合と同様に、ラスター形式の画像データが2次元ランレングス符号化のようなライン間相関を利用した方式の圧縮方法(圧縮方式)で圧縮されたものである。なお、圧縮LUTデータの詳細については後述する。
DMAコントローラ203は、CPU201によって設定された設定内容を基に、DMAにより、メモリ202から圧縮されたデータ(圧縮画像データまたは圧縮LUTデータ)を読み出して、データ伸長部204へ出力する。
具体的には、DMAコントローラ203は、画像処理時には、メモリ202から圧縮画像データを読み出し、これをデータ伸長部204へ出力し、一方、LUTの設定処理時には、メモリ202から圧縮LUTデータを読み出し、これをデータ伸長部204へ出力する。
データ伸長部204は、DMAコントローラ203からの圧縮されたデータ(圧縮画像データまたは圧縮LUTデータ)を伸長し、その後、そのデータの種類に応じた処理を実行する。
すなわち、データ伸長部204は、DMAコントローラ203からの圧縮画像データを伸長し、この伸長した後の画像データを第1の画像処理部205へ出力する。この伸長処理を実施するに際し、データ伸長部204は、参照用の画像データをラインバッファ209から読み出すとともに、この読み出した参照用の画像データを参照して前記圧縮画像データを伸長し、この伸長した画像データをラインバッファ209に書き込む。
また、データ伸長部204は、DMAコントローラ203からの圧縮LUTデータを伸長し、その圧縮LUTデータにおける現在伸長したLUTデータに関するアドレス情報をメモリバス制御部208へ通知するとともに、伸長したLUTデータを、メモリバス制御部208による切り替え制御により切り替えられた第1のLUT用メモリ210または第2のLUT用メモリ211に格納する。
第1の画像処理部205および第2の画像処理部206は、それぞれのLUTデータを使用して画像処理を実施するようになっている。
実施の形態2では、複数の画像処理部205,206は、互いに異なる画像処理を実行するものであり、複数種類の画像処理を実行する。しかも、複数の画像処理部205,206は、画像処理ごとの複数種類の画像処理モードのうち指定される画像処理モードに応じて該当する画像処理を実行するようになっている。
すなわち、複数の画像処理部205,206は、それぞれ対応する画像処理を実施するにあたり、複数種類の画像処理モードに対応する複数のLUTデータの中から、指定される画像処理モードに対応するLUTデータを使用して当該画像処理を実施するようになっている。
ここで、複数種類の画像処理は、階調変換、色空間変換、入出力特性変換、ハーフトーンなどを含んでいる。また、複数種類の画像処理モードは、写真画質、文字画質、図形画質などを含んでいる。
第1の画像処理部205は、データ伸長部203からの画像データと、配下の第1のLUT用メモリ210から読み出したLUTデータとを基に第1の画像処理を実行し、この実行した結果(画像データ)を第2の画像処理部206へ出力する。
第2の画像処理部206は、第1の画像処理部205からの画像データと、配下の第2のLUT用メモリ210から読み出したLUTデータとを基に、上記第1の画像処理とは異なる第2の画像処理を実行し、この実行した結果(画像データ)を画像出力部207へ出力する。
画像出力部207は、第2の画像処理部206からの画像データを出力する。
メモリバス制御部208は、ラインバッファとして使用される第1のLUT用メモリ210とラインバッファとして使用される第2のLUT用メモリ211との切り替え制御を行う。
すなわち、メモリバス制御部208は、画像処理時には、データ伸長部204とラインバッファ209とを接続するとともに、第1の画像処理部205と第1のLUT用メモリ210とを接続し、さらに第2の画像処理部206と第1のLUT用メモリ211とを接続する。また、メモリバス制御部208は、LUTの設定処理時には、設定処理にかかわるLUTデータを使用して実施される画像処理を実行する画像処理部に対応する第1のLUT用メモリ210または第2のLUT用メモリ211とデータ伸長部204とを接続する。
このようにLUTの設定処理時において、データ伸長部204と第1のLUT用メモリ210または第2のLUT用メモリ211とが接続されることにより、データ伸長部204はそれらのLUT用メモリをラインバッファとして使用することが可能となる。そして、データ伸長部204による、指定されたラインまでの圧縮LUTデータの伸長処理が終了した場合は、各LUT用メモリ210,211にはそれぞれ指定されたLUTデータ(伸長されたLUTデータ)が格納されていることになる。
ラインバッファ209は、画像処理時に伸長用のメモリとして使用されるものであり、伸長された画像データを保持する。
第1のLUT用メモリ210は、画像処理時には、第1の画像処理部205によって使用されるLUTデータを格納するメモリとして使用され、LUTの設定処理時には、伸長されたLUTデータを格納する伸長用のメモリ(ラインバッファ)として使用される。
第2のLUT用メモリ211は、画像処理時には、第2の画像処理部206によって使用されるLUTデータを格納するメモリとして使用され、LUTの設定処理時には、伸長されたLUTデータを格納する伸長用のメモリ(ラインバッファ)として使用される。
なお、画像処理時においては、DMAコントローラ203、データ伸長部204、複数の画像処理部205,206および画像出力部207は、CPU201によって設定されたサイズに対応するデータについての処理を実行し終了するか、あるいはCPU201から出力される停止要求を受け取るまでは、各構成要素の処理を繰り返す。
これに対し、LUTの設定処理時においては、DMAコントローラ203およびデータ伸長部204は、CPU201によって設定されたサイズに対応するデータについての処理を実行し終了するか、あるいはCPU201から出力される停止要求を受け取るまでは、各構成要素の処理を繰り返す。
なお、実施の形態2では、伸長手段はデータ伸長部204に対応し、複数の画像処理手段は第1の画像処理部205および第2の画像処理部206に対応し、圧縮データ記憶手段はメモリ202に対応し、読出手段はDMAコントローラ203に対応し、複数のルックアップテーブルデータ記憶手段は第1のLUT用メモリ210および第2のLUT用メモリ211に対応し、制御手段はメモリバス208に対応し、上位の制御手段はCPU201に対応する。
次に、圧縮LUTデータについて説明する。
図11は、実施の形態2に係るLUTデータ群の一例を示している。
図11において、第1の画像処理用LUTデータ1から第1の画像処理用LUTデータ8までは、第1の画像処理部205によって実施される第1の画像処理にかかわるLUTデータであり、第2の画像処理用LUTデータ1から第2の画像処理用LUTデータ8までは、第2の画像処理部206によって実施される第2の画像処理にかかわるLUTデータである。
実施の形態2では、LUTデータ群20においては、図11に示すように、複数の画像処理部つまり複数種類の画像処理のそれぞれに対応する複数のLUTデータ、すなわち画像処理ごとの画像処理モードの数に応じた複数のLUTデータの管理を単純化するため、複数種類の画像処理(複数の画像処理部)で共通する画像処理モード(写真画質、文字画質等)において使用されるLUTデータに関し、それぞれの画像処理(画像処理部)で使用される実際のLUTデータを横方向に結合(複数の画像処理に対応する複数のLUTデータを組にして横方向に結合)して1つのラインに対応する画像データとしてとらえる。
例えば、図11において、1ライン目に注目してみると、第1の画像処理用LUTデータ1と第2の画像処理用LUTデータ1とはそれぞれ同一の画像処理モードに対応するLUTデータであり、それらのLUTデータが組となり横方向に結合されている。また、5ライン目に注目してみると、第1の画像処理用LUTデータ5と第2の画像処理用LUTデータ5とはそれぞれ同一の画像処理モードに対応するLUTデータであり、それらのLUTデータが組となり横方向に結合されている。
また、この1つのラインに対応する画像データの生成が画像処理モードの数に応じて実施され、この処理により得られる複数のラインのそれぞれに対応する画像データが縦方向に結合されている。例えば、図11に示す例では、1ライン目から8ライン目までの8つのラインのそれぞれに対応する、1つのラインに対応する画像データが縦方向に結合されている。
そして、複数のLUTデータが横方向に結合された1つのラインに対応する画像データが画像処理モードの数に対応するラインの数に応じて縦方向に結合されたものを、1つの情報と定義される。
この1つの情報が画像処理対象の画像データの所定のデータ形式と同一のデータ形式の画像データに変換され、この変換された結果がLUTデータ群として定義される。このLUTデータ群が、画像処理対象の画像データに対し実施される所定の圧縮方法に基づく圧縮処理の場合と同一の圧縮方法で圧縮される。この圧縮されたLUTデータ群が圧縮LUTデータとして使用される。
実施の形態2では、所定のデータ形式はラスター形式を採用し、所定の圧縮方法は例えばライン間相関を利用した方式の圧縮方法を採用している。
次に、圧縮LUTデータについて具体的に説明する。
ここで、第1の画像処理部210が実行する第1の画像処理は例えば色空間変換処理であり、第2の画像処理部211が実行する第2の画像処理が階調変換処理であるとする。
この場合、図11において、1ライン目の第1の画像処理用LUTデータ1から8ライン目の第1の画像処理用LUTデータ8までの8つのラインに対応する各LUTデータは、それぞれ色空間変換処理のときに使用されるLUTデータであり、1ライン目の第2の画像処理用LUTデータ1から8ライン目の第2の画像処理用LUTデータ8までの8つのラインに対応する各LUTデータは、それぞれ階調変換処理のときに使用されるLUTデータである。
1ライン目に注目して説明する。第1の画像処理用LUTデータ1と第2の画像処理用LUTデータ1とは、色空間変換処理と階調変換処理とで共通する画像処理モード(例えば写真画質)で使用され、画像処理ごとに設定されるLUTデータであり、しかも、これらのLUTデータが組として横方向に結合されて1つのラインに対応する画像データとして定義される。
2ライン目においても、第1の画像処理用LUTデータ2と第2の画像処理用LUTデータ2とは、色空間変換処理と階調変換処理とで共通する画像処理モード(例えば文字画質)で使用され、画像処理ごとに設定されるLUTデータであり、しかも、これらのLUTデータが組として横方向に結合されて1つのラインに対応する画像データとして定義される。
同様に、3ライン目から8ライン目の各ラインにおいても、第1の画像処理用LUTデータと第2の画像処理用LUTデータとは、横方向に結合されて1つのラインに対応する画像データとして定義される。このようにして得られる8つのラインのそれぞれの1つのラインに対応する画像データが縦方向に結合されたものが、1つの情報として定義される。
すなわち、図11に示すLUTデータ群20においては、第1の画像処理用LUTデータと第2の画像処理用LUTデータとは、同じ数だけ存在し、また1ライン目から8ライン目までの各画像処理用LUTデータ(画像処理ごとの縦方向に結合された8つの画像処理用LUTデータ)に係る画像処理モードの種類の並びも同じである。また、1つのラインに注目した場合、横方向に結合されている第1の画像処理用LUTデータおよび第2の画像処理用LUTデータは、それぞれ同じ画像処理モードに係るLUTデータである。
そして、図11に示すLUTデータ群20は、ラスター形式に従って1つの情報すなわちLUTデータ群(複数のLUTデータ)に対応するラスター形式の画像データとして生成されている。
この1つの情報としてのLUTデータ群(ラスター形式の画像データ)が例えば2次元ランレングス符号化のようなライン間相関を利用した方式の圧縮方法(圧縮方式)で圧縮される。このようにして圧縮されたLUTデータ群(ラスター形式の画像データ)が、LUTの設定処理が実施されるときにメモリ202に格納され、圧縮LUTデータとして使用される。
上述した1つのラインに対応する画像データを縦方向に結合するに際し、上述したようにして生成される複数(K1)のラインのそれぞれに対応する1つのラインにかかわる画像データのうち任意の複数(K2)のラインのそれぞれに対応する1つのラインにかかわる画像データを縦方向に結合するときに、効率的に圧縮するためライン間相関を考慮して、任意の複数(K2)のラインのそれぞれに対応する1つのラインにかかわる画像データを並び替えるようにする。ここで、「K2≦K1」の関係が成立している。
なお、実施の形態2では、第1の画像処理用LUTデータおよび第2の画像処理用LUTデータは、それぞれ複数の要素データを有している。その複数の要素データとは、入力データに対応する値(出力値)を示すデータ、あるいは入力データをアドレスとして扱う場合に当該アドレスに対応する値(出力値)を示すデータのことである。また、第1の画像処理用LUTデータおよび第2の画像処理用LUTデータは、それぞれ同じデータサイズのデータ(固定長のデータ)であるとする。
実施の形態2において、ラスター形式に従って画像処理(画像処理部)ごとの複数のLUTデータが1つの情報として生成され、1つの情報としてのLUTデータ群(ラスター形式の画像データ)が圧縮されている理由は、実施の形態1の場合と同様である。
次に、画像処理装置のLUTの設定処理について、図12を参照して説明する。
図12は、そのLUT設定処理の処理手順を示すフローチャートである。
実施の形態2では、CPU201は、例えば、写真の画像データに対する階調変換を実施する場合、文字(テキスト)の画像データに対する階調変換を実施する場合、写真の画像データに対する例えば色空間変換を実施する場合など、画像データの種類(画像処理モードの種類)と画像処理の種類に応じてLUTデータが異ということを認識し、またLUTデータ群中の何れのLUTデータ(何ライン目のLUTデータ)を使用すればよいかを知っている。
図12に示すように、CPU201がLUT設定要求を認識すると、CPU201は、図11に示すようなLUTデータ群に対応する、当該CPU201が生成した圧縮LUTデータ、またはデータを送受信する通信手段(図示せず)を介して取得した圧縮LUTデータを、メモリ202に格納する(ステップS301)。
CPU201は、DMAコントローラ203、データ伸長部204およびメモリバス制御部208に対し後述する動作条件情報を設定し(ステップS302)、その後、DMAコントローラ203に対しDMAを開始させる(ステップS303)。
ここで、動作条件情報の内容について説明する。
動作条件情報として、DMAコントローラ203には、メモリ202に格納されている圧縮LUTデータの格納アドレスおよびデータサイズが設定され、データ伸長器204には、圧縮LUTデータにかかわる伸長すべきデータ(画像データ)の画像サイズが設定され、メモリバス制御部208には、LUTの設定である旨および第1の画像処理用LUTデータと第2の画像処理用LUTデータとの境界を示す境界情報が設定される。
実施の形態2において、データサイズおよび画像サイズは、実施の形態1の場合と同様の内容を意味する。
実施の形態2において、境界情報は、第1の画像処理用LUTデータの1つのラインに対応するLUTデータのサイズ、第2の画像処理用LUTデータを構成する複数の要素データのうち先頭(第1番目)の要素データの位置(アドレス)を示す位置情報など、第1の画像処理用LUTデータと第2の画像処理用LUTデータとを区別できる情報を意味する。この境界情報は、1つのラインに注目した場合、第1の画像処理用LUTデータおよび第2の画像処理用LUTデータを区別する情報を示す区別情報であると言える。
実施の形態2では、第1の画像処理用LUTデータおよび第2の画像処理用LUTデータはそれぞれ固定長のデータとしているので、境界情報で示される第1の画像処理用LUTデータと第2の画像処理用LUTデータとの境界を示す位置は同一となる。
さて、CPU201によって動作条件情報(LUTの設定である旨および境界情報)が設定されたメモリバス制御部208は、ラインバッファとして使用される第1のLUT用メモリ210とラインバッファとして使用される第2のLUT用メモリ211との切り替え制御を行う。
すなわち、メモリバス制御部208は、第1の画像処理用LUTデータにかかわるLUTの設定処理のときは、データ伸長部204と第1のLUT用メモリ210とを接続し、一方、第2の画像処理用LUTデータにかかわるLUTの設定処理のときは、データ伸長部204と第2のLUT用メモリ211とを接続するようになっている。なお、メモリバス制御部208の詳細な処理については後述する。
これにより、データ伸長部204は、第1のLUT用メモリ210および第2のLUTデータ211をそれぞれラインバッファとして使用することが可能となる。
このメモリバス制御部208の処理と並行して、CPU201によって動作条件(圧縮LUTデータの格納アドレスおよびデータサイズ)が設定されたDMAコントローラ203は、CPU201からの設定内容を基に、メモリ202から圧縮LUTデータをリードして、データ伸長部204へ出力する(ステップ304)。
ステップS304を終了したDMAコントローラ203は、上記図4に示した実施の形態1の処理手順のステップS105の場合と同様にして、CPU201によって設定されたデータサイズに対応するデータ(圧縮LUTデータ)をデータ伸長部204へ出力したか、またはCPU201から停止要求を受け取ったかを判断する(ステップ305)。
DMAコントローラ203は、ステップS305において前記データサイズに対応するデータをデータ伸長部204へ出力していないと判断した場合、または前記停止要求を受け取っていないと判断した場合には、ステップS304に戻り、一方、ステップS305において前記データサイズに対応するデータをデータ伸長部204へ出力したと判断した場合、または前記停止要求を受け取ったと判断した場合は、このDMA処理を終了する(ステップS306)。
ところで、DMAコントローラ203から出力された圧縮LUTデータ(画像処理ごとの複数のラインのLUTデータに対応する画像データ)を受け取ったデータ伸長部104は、ラインバッファとしての第1のLUT用メモリ210および第2のLUTデータ211を使用して、その受け取った圧縮LUTデータを伸長する(ステップS307)。
この場合、データ伸長部204は、圧縮されている1つのラインに対応するLUTデータごとに伸長するに際し、伸長した第1の画像処理用LUTデータはラインバッファとしての第1のLUT用メモリ210に格納し、一方、伸長した第2の画像処理用LUTデータについてはラインバッファとしての第2のLUT用メモリ211に格納する。第1のLUT用メモリ210および第2のLUT用メモリ211のそれぞれの内容は、データ伸長部204によって伸長された最新のラインに対応するLUTデータとなる。
ステップS207を終了したデータ伸長部204は、上記図4に示した実施の形態1の処理手順のステップS108の場合と同様にして、CPU201によって設定された画像サイズに対応するデータ(圧縮LUTデータの全部または一部)を伸長したか否かを判断し(ステップS308)、その判断した結果、前記画像サイズに対応するデータを伸長していない場合には、上記ステップS207に戻り、一方、前記画像サイズに対応するデータを伸長した場合は、伸長処理を終了した旨をCPU201へ通知する。
例えば、図11に示すLUTデータ群20に対応する圧縮LUTデータに対する、画像サイズに対応するデータの伸長処理が実施される場合、CPU201が設定する画像サイズが1ライン目から2ライン目までの2つのラインに対応する圧縮されたLUTデータ(画像データ)に関するデータで、その2つのラインに対応する圧縮されたLUTデータが伸長された場合は、データ伸長部204による伸長処理が終了した時点で、第1のLUT用メモリ210には2ライン目の第1の画像処理用LUTデータ(第1の画像処理用LUTデータ2)が格納され、第2のLUT用メモリ211には第2の画像処理用LUTデータ(第2の画像処理用LUTデータ2)が格納されたことになる。
データ伸長部204から伸長処理を終了した旨を通知されたCPU201は、DMAコントローラ203およびデータ伸長部204に対し停止要求を送出する(ステップS309)。
このステップS309が終了した後は、このLUTの設定処理が終了される。すなわち、上述したように、DMAコントローラ203は、CPU201によって設定されたサイズに対応するデータに対する処理を実行し終了するか、あるいはCPU201から送出される停止要求を受け取るまでは、DMA処理を繰り返す。データ伸長部203は、CPU201によって設定されたサイズに対応するデータに対する伸長処理を実行し終了するまでは、その伸長処理を繰り返す。
ところで、LUTの設定処理時、CPU201は、メモリバス制御部208に対し、上述したように、処理がLUTの設定である旨と、図11に示すLUTデータ群20における第1の画像処理用LUTデータと第2の画像処理用LUTデータとの境界を示す境界情報とを送出する。
この実施の形態2では、境界情報は、第2の画像処理用LUTデータの先頭のデータの位置を示す位置情報(アドレス情報)とする。
例えば、第2の画像処理用LUTデータの先頭のデータがラインのn番目のデータとすると、データ伸長部204がメモリバス制御部208に向けて出力するアドレスとLUTデータとの関係は、図13に示すように、データ伸長部204から出力されるアドレスが「0」から「n−2」までは第1の画像処理用LUTデータとなり、データ伸長部204から出力されるアドレスが「n−1」からは第2の画像処理用LUTデータとなる。この例では、境界情報は、第2の画像処理用LUTデータの先頭のデータを意味するn番目のデータに対応するアドレス「n−1」を示すアドレス情報となる。
次に、メモリバス制御部208の処理について図14を参照して説明する。
データ伸長部204からラインバッファ(第1のLUT用メモリ210または第2のLUT用メモリ211)に対するリードまたはライトの要求が発生した場合(ステップS401)、メモリバス制御部208は、データ伸長部204から出力されたリードまたはライトにかかわるアドレスを取得する。
例えば、リードのときはリード対象のLUTデータが格納されている場所のアドレスを取得し、一方、ライトのときはライト対象のLUTデータを格納する場所のアドレスを取得する。
既にCPU201によって動作条件情報(LUTの設定処理である旨および境界情報)が設定されているメモリバス制御部208は、その動作条件情報のうち境界情報を基に、データ伸長部204からのアドレスが第1の画像処理用LUTデータにかかわるアドレスの範囲に含まれるか否かを判断する(ステップS402)。
ここで、具体的に説明する。図13において、第1の画像処理用LUTデータにかかわるアドレスは「0」〜「n−2」までの範囲である。そのため、CPU201によって設定される境界情報(第2の画像処理用LUTデータの先頭のデータの位置を示す位置情報(アドレス情報)はアドレス値=「n−1」となる。
そして、メモリバス制御部208は、データ伸長部204からのアドレス値が境界情報としてのアドレス値「n−1」未満の場合には、データ伸長部204からのアドレスが第1の画像処理用LUTデータにかかわるアドレスの範囲内であると判断し、一方、データ伸長部204からのアドレス値が境界情報としてのアドレス値「n−1」以上の場合は、データ伸長部204からのアドレスが第1の画像処理用LUTデータにかかわるアドレスの範囲外であると判断する。
さて、メモリバス制御部208は、ステップS402においてデータ伸長部204からのアドレスが第1の画像処理用LUTデータにかかわるアドレスの範囲内であると判断した場合には、図15に示すように、データ伸長部204と第1のLUT用メモリ210とを接続する(ステップS403)。
これに対し、メモリバス制御部208は、ステップS402においてデータ伸長部204からのアドレスが第1の画像処理用LUTデータにかかわるアドレスの範囲外(つまり第2の画像処理用LUTデータにかかわるアドレスの範囲内)であると判断した場合は、図16に示すように、データ伸長部204と第2のLUT用メモリ211とを接続する(ステップS404)。
また、メモリバス制御部208は、データ伸長部204と第2のLUT用メモリ211とを接続するときは、第2の画像処理用LUTデータを第2のLUT用メモリ211のアドレス「0」から順にリードまたはライトさせるために、データ伸長部204から出力されるアドレスデータに対するアドレス変換処理208Aを実施する。
上述したようにしてデータ伸長部204と第1のLUT用メモリ210とが接続された場合は、データ伸長部204による第1のLUT用メモリ210に対するリードまたはライトが実行される。また、データ伸長部204と第2のLUT用メモリ211とが接続された場合は、データ伸長部204による第2のLUT用メモリ211に対するリードまたはライトが実行される。
次に、アドレス変換処理208Aについて説明する。
第1の画像処理用LUTデータおよび第2の画像処理用LUTデータが、それぞれ16の要素データから構成されているとする。
この場合、データ伸長部204から出力されるアドレスと画像処理用LUTデータとの関係は、データ伸長部204から出力されるアドレスが「0」〜「15」までの範囲は第1の画像処理用LUTデータであり、データ伸長部204から出力されるアドレスが「16」〜「31」までの範囲は第2の画像処理用LUTデータとなる。そのため、第2の画像処理用LUTデータの先頭の要素データは17番目(n番目)の要素データとなり、境界情報としてのアドレス値「n−1」はアドレス「16」となる。
アドレス変換処理208Aにおいては、メモリバス制御部208は、データ伸長部204からのアドレスの値から境界情報としてのアドレス値「n−1」を減算した値をアドレス変換結果とする。従って、データ伸長部204からのアドレスが「16」、「17」の場合、アドレス変換結果はそれぞれ「0」、「1」となる。
これにより、例えば、CPU201が設定する画像サイズが図11に示したLUTデータ群20における1ライン目から2ライン目までの2つのラインに対応する圧縮されたLUTデータ(画像データ)に関するデータで、その2つのラインに対応する圧縮されたLUTデータが伸長された場合は、データ伸長部204による伸長処理が終了した時点では、図17に示すように、第1のLUT用メモリ210には、2ライン目の第1の画像処理用LUTデータ(第1の画像処理用LUTデータ2)が格納され、第2のLUT用メモリ211には2ライン目の第2の画像処理用LUTデータ(第2の画像処理用LUTデータ2)が格納されたことになる。
なお、図17において、1行目はデータ伸長部204における画像処理用LUTデータにかかわるアドレスを示し、2行目は各アドレスに対応する画像処理用LUTデータの各要素データを示し、3行目は第1のLUT用メモリ210における第1の画像処理用LUTデータが格納されているアドレスを示し、4行目は第1のLUT用メモリ210における各アドレスに対応して格納されている第1の画像処理用LUTデータの各要素データを示し、5行目は第2のLUT用メモリ211における第2の画像処理用LUTデータが格納されているアドレスを示し、6行目は第2のLUT用メモリ211における各アドレスに対応して格納されている第2の画像処理用LUTデータの各要素データを示す。
第1の画像処理用LUTデータの各要素データは、アドレスが「0」〜「n−1」に対応して格納され(上記の例ではアドレス「0」〜「16」に対応して格納される)、第2の画像処理用LUTデータの各要素データは、アドレス「0」から順に格納される(上記の例ではアドレス「0」〜「16」に対応して格納される)。
ところで、実施の形態2では、メモリバス制御部208によって第1のLUT用メモリ210と第2のLUT用メモリ211とを切り替えて、該当するLUT用メモリとデータ伸長部204と接続することにより、複数のLUT用メモリ自体をデータ伸長部204のラインバッファとして順番に使用するため、LUT用メモリごとにサイズが異なる場合、あるいは複数のLUT用メモリの総容量が、画像処理対象の画像データに対する伸長処理のときに使用されるラインバッファ209の容量より大きい場合であっても、ラインバッファとして使用される複数のLUT用メモリは、複数のLUTデータの伸長処理に対処することが可能である。
また、第1のLUT用メモリ210および第2のLUT用メモリ211の如く個別のLUT用メモリ自体の容量がラインバッファ209の容量よりも大きい場合にも、複数のLUTデータの伸長処理に対処することが可能である。
次に、画像処理装置の画像処理について、図18を参照して説明する。
図18は、その画像処理の処理手順を示すフローチャートである。
この画像処理(第1の画像処理および第2の画像処理)においては、第1のLUT用メモリ210および第2のLUT用メモリ211には、上述したLUTの設定処理が実施されたことにより、既に、それぞれ当該第1の画像処理および第2の画像処理に対応するLUTデータ(1つのラインに対応するLUTデータ)が格納されている。
CPU201が画像処理要求を認識すると、CPU201は、生成した圧縮画像データ、またはデータを送受信する通信手段(図示せず)を介して取得した圧縮画像データを、メモリ202に格納する(ステップS501)。
CPU201は、DMAコントローラ203、データ伸長部204、第1の画像処理部205、第2の画像処理部206、画像出力部207およびメモリバス制御部208に対し後述する動作条件情報を設定し(ステップS502)、その後、DMAコントローラ203に対しDMAを開始させる(ステップS503)。
ここで、動作条件情報の内容について説明する。
動作条件情報として、DMAコントローラ203には、メモリ202に格納されている圧縮画像データの格納アドレスおよびデータサイズが設定され、データ伸長器204には、圧縮画像データにかかわる伸長すべきデータ(画像データ)の画像サイズが設定され、第1の画像処理部205、第2の画像処理部206および画像出力部207には、出力画像サイズが設定され、メモリバス制御部208には、画像処理である旨が設定される。
なお、実施の形態2において、データサイズ、画像サイズおよび出力画像サイズは、実施の形態1の場合と同様の内容を意味する。
さて、CPU201によって動作条件情報(画像処理である旨)が設定されたメモリ制御部208は、図19に示すように、データ伸長部204とラインバッファ209とを接続するとともに、第1の画像処理部205と第1のLUT用メモリ210とを接続し、さらに第2の画像処理部206と第2のLUT用メモリ211とを接続する。
このメモリバス制御部208の処理と並行して、CPU201によって動作条件情報(圧縮画像データの格納アドレスおよびデータサイズ)が設定されたDMAコントローラ203は、CPU201からの設定内容を基に、DMAにより、メモリ202から圧縮画像データをリードして、データ伸長部204へ出力する(ステップ504)。
ステップS504を終了したDMAコントローラ203は、上記図4に示した実施の形態1の処理手順のステップS105の場合と同様にして、CPU201によって設定されたデータサイズに対応するデータ(圧縮画像データ)をデータ伸長部204へ出力したか、またはCPU201から停止要求を受け取ったかを判断し(ステップ505)、その判断した結果、前記データサイズに対応するデータをデータ伸長部204へ出力していない場合、または前記停止要求を受け取っていない場合には、ステップS504に戻り、一方、前記データサイズに対応するデータをデータ伸長部204へ出力した場合、または前記停止要求を受け取った場合は、このDMA処理を終了する(ステップS506)。
ところで、DMAコントローラ203から出力された圧縮画像データを受け取ったデータ伸長部204は、ラインバッファ209を使用して、その受け取った圧縮画像データを伸長するとともに、この伸長した画像データを第1の画像処理部205へ出力する(ステップS507)。
伸長処理を実施するに際し、データ伸長部204は、伸長されている参照用の画像データ(1つのラインに対応する画像データ)をラインバッファ209からリードし、このリードした参照用の画像データを参照して、伸長対象の圧縮されている画像データ(1つのラインに対応する画像データ)を伸長する。次に、データ伸長部204は、伸長した画像データを、ラインバッファ209にライトするとともに第1の画像処理部205へ出力する。
ここで、データ伸長部204による伸長処理を具体的に説明する。例えば、伸長処理のときに、mライン目のn番目の画像データ(つまり要素データ)を伸長する場合に「m−1」ライン目のn番目の画像データ(つまり要素データ)を参照するものとする。
また、ラインバッファ209には、図20に示すように、「m−1」ライン目の画像データが格納されているものとする。図20に示す例では、例えば、アドレス0には要素データ「m−1:1」が、アドレス1には要素データ「m−1:2」が、アドレス2には要素データ「m−1:3」が、アドレスnには要素データ「m−1:n−1」が、それぞれ格納されている。
mライン目の先頭の要素データを伸長する場合、データ伸長部204は、ラインバッファ209から「m−1」ライン目の画像データにかかわるアドレス0の要素データ「m−1:1」をリードし、このリードした要素データ「m−1:1」を参照してmライン目の先頭の要素データ「m:1」に対する伸長処理を実施するとともに、伸長処理を実施した後のmライン目の先頭の要素データ「m:1」をラインバッファ209のアドレス0にライトする。
このようにしてmライン目の先頭の要素データ「m:1」がラインバッファ209に格納された時点では、ラインバッファ209は、図21(a)に示すような内容になっている。
次に、mライン目の2番目の要素データ「m:2」を伸長する場合は、データ伸長部204は、上記同様にして、ラインバッファ209から「m−1」ライン目の画像データにかかわるアドレス1の要素データ「m−1:2」をリードし、このリードした要素データ「m−1:2」を参照してmライン目の2番目の要素データ「m:2」に対する伸長処理を実施するとともに、伸長処理を実施した後のmライン目の2番目の要素データ「m:2」をラインバッファ209のアドレス1にライトする。
このようにしてmライン目の2番目の要素データ「m:2」がラインバッファ209に格納された時点では、ラインバッファ209は、図21(b)に示すような内容になる(図21(a)に示す内容から図21(b)に示す内容に遷移する)。
上記同様にして、mライン目のn番目の要素データ「m:n」に対する伸長処理を終了した時点では、ラインバッファ209は、図21(c)に示すような内容になる(図21(b)に示す内容から図21(c)に示す内容に遷移する)。
そして、mライン目の画像データに対する伸長処理が終了したときは、mライン目の全ての要素データがラインバッファ209に格納されることになる。
再度、図18を参照して説明する。ステップS507を終了したデータ伸長部204は、上記図4に示した実施の形態1の処理手順のステップS108の場合と同様にして、ステップCPU201によって設定された画像サイズに対応するデータを第1の画像処理部205へ出力したか、またはCPU201から停止要求を受け取ったかを判断し(ステップS508)、その判断した結果、前記画像サイズに対応するデータを第1の画像処理部205へ出力していない場合、または前記停止要求を受け取っていない場合には、上記ステップS507に戻り、一方、前記画像サイズに対応するデータを第1の画像処理部205へ出力した場合、または前記停止要求を受け取った合は、この伸長処理を終了する(ステップS509)。
データ伸長部204から出力された画像データを受け取った第1の画像処理部205は、その画像データと第1のLUT用メモリ210から読み出したLUTデータとを基に第1の画像処理を実施し、この画像処理した結果(画像データ)を第2の画像処理部206へ出力する(ステップS510)。
なお、ステップS510において、第1の画像処理部205は、データ伸長部205からの画像データにかかわる要素データを基に第1のLUT用メモリ210に対するアクセスに関するアドレスを生成し、第1のLUT用メモリ210から前記生成したアドレスに対応するLUTデータの要素データをリードし、さらにリードしたLUTデータの要素データと前記画像データの要素データとを基に第1の画像処理を実施する。
第1の画像処理部205から出力された画像データを受け取った第2の画像処理部206は、その画像データと第2のLUT用メモリ211から読み出したLUTデータとを基に第2の画像処理を実施し、この画像処理した結果(画像データ)を画像出力部207へ出力する(ステップS511)。
なお、ステップS511において、第2の画像処理部206は、第1の画像処理部205からの画像データにかかわる要素データを基に第2のLUT用メモリ211に対するアクセスに関するアドレスを生成し、第2のLUT用メモリ211から前記生成したアドレスに対応するLUTデータの要素データをリードし、さらにリードしたLUTデータの要素データと前記画像データの要素データとを基に第2の画像処理を実施する。
画像出力部207は、第2の画像処理部206からの画像データを出力する(ステップS512)。
第1の画像処理部205、第2の画像処理部206および画像出力部207は、CPU201によって設定された出力画像サイズに対応するデータ(画像データ)を出力したか否かを判断する(ステップS513)。
ここで、第1の画像処理部205、第2の画像処理部206および画像出力部207は、「出力画像サイズ=出力画像サイズ−1単位」を演算し、この演算した結果、出力画像サイズ=0になった場合に、出力画像サイズに対応するデータを出力したと判断するようになっている。
ステップS513において出力画像サイズに対応するデータを出力していないと判断された場合は、ステップS510に戻る。これに対し、ステップS513において出力画像サイズに対応するデータが出力されたと判断された場合においては、第1の画像処理部205および第2の画像処理部206は画像処理を終了したと認識する。これに対し、画像出力部207は出力処理を終了したと認識し、出力処理を終了した旨をCPU201へ通知する。
そして、画像出力部207から出力処理を終了した旨を通知されたCPU201は、DMAコントローラ203、データ伸長部204、第1の画像処理部205、第2の画像処理部206および画像出力部207に対し停止要求を送出する(ステップS514)。
このステップS514が終了した後は、この画像処理が終了される。すなわち、上述したように、DMAコントローラ203およびデータ伸長部204は、CPU201によって設定されたサイズに対応するデータに対する処理を実行し終了するか、あるいはCPU201から送出される停止要求を受け取るまでは、それぞれの処理を繰り返す。一方、第1の画像処理部205、第2の画像処理部206および画像出力部106は、CPU201によって設定されたサイズに対応するデータに対する処理を実行するまでは、それぞれの処理を繰り返す。
(実施の形態3)
次に、本発明の実施の形態3に係る画像処理装置について詳細に説明する。
実施の形態3に係る画像処理装置は、図10に示した実施の形態2に係る画像処理装置の構成および機能と同様になっている。
ところで、上述した実施の形態2では、LUTデータ群は、図11に示したように、画像処理モード毎に、1つのラインにかかわる画像データに対応し、異なる画像処理にかかわる第1の画像処理用LUTデータおよび第2の画像処理用LUTデータが組として横方向に結合されるようになっている。すなわち、第1の画像処理用LUTデータと第2の画像処理用LUTデータとは、同じ数だけ存在し(縦方向のLUTデータの数が同じ)、また1ライン目から8ライン目までの8つの画像処理用LUTデータ(画像処理ごとの縦方向に結合された8つの画像処理用LUTデータ)にかかわる画像処理モードの種類の並びも同じになっている。
この実施の形態3では、LUTデータの圧縮効率を優先させるたに画像処理部(画像処理)毎にライン間相関を考慮してLUTデータを縦方向に結合する場合(画像処理ごとの縦方向に結合された複数の画像処理用LUTデータにかかわる画像処理モードの種類の並びが異なる場合)や、画像処理部(画像処理)毎のLUTデータの数が一致しない場合において、LUTの設定処理が実施できるようになっている。
次に、上述したようなLUTデータ群にかかわるLUTデータの設定処理(LUTデータの更新処理を含む)について説明する。
この場合、第1の画像処理部205および第2の画像処理部206は、それぞれ異なるラインに対応するLUTデータを参照することになる。
図22は、実施の形態3に係るLUTデータ群の一例を示している。
図22に示すように、LUTデータ群30は、LUTデータ間および不足領域が結合用データで結合されている。
実施の形態3では、結合用データは、ダミーデータやヌルデータと同じ意味を有するものであり、全て同じ値になっている。また、結合用データの値は圧縮効率等を考慮して任意に設定可能になっている。
なお、LUTデータ間の結合用データの数は、圧縮処理および伸長処理において参照されるLUTデータ(の要素データ)の範囲によって決定される。
例えば、図23に示すように、mライン目のラインにおけるR番目のデータを処理する際に、「m−1」ライン目のラインにおける「R−2」番目のデータ、「R−1」番目のデータ、「R」番目のデータおよび「R+1」番目のデータと、mライン目のラインにおける「R−2」番目のデータおよび「R−1」番目のデータを使用するものとする。
このような前提条件は、1つのラインに対応するLUTデータつまり第1の画像処理用LUTデータおよび第2の画像処理用LUTデータに対する圧縮処理および伸長処理の際に適用される。
ところで、mライン目のラインにおける「R−2」番目および「R−1」番目のそれぞれの領域にLUTデータに関する要素データが存在しない場合は、これら「R−2」番目および「R−1」番目には結合用データが登録されることになっている。そのため、この例では結合用データの数は2となる。
例えば、図24(a)に示すように、第1の画像処理用LUTデータの最終の要素データがラインのn番目のデータであり、また第2の画像処理用LUTデータの先頭の要素データがラインの「n+3」番目のデータであるとした場合、「n+1」番目のデータおよび「n+2」番目のデータはそれぞれ結合用データとなる。
そのため、データ伸長部204は、mライン目のラインにおける第1の画像処理用LUTデータに対する伸長処理を実施するに際し、図24(b)に示すように、n番目のデータ(第1の画像処理用LUTデータに関する最終の要素データ)が伸長処理対象のデータとなった場合、「m−1」ライン目のラインにおける「n+1」番目のデータとしての結合データを参照するものの、第2の画像処理用LUTデータを参照することはない。
また、データ伸長部204は、mライン目のラインにおける第2の画像処理用LUTデータに対する伸長処理を実施するに際し、図24(c)に示すように、「n+3」番目のデータ(第2の画像処理用LUTデータに関する先頭の要素データ)が伸長処理対象のデータとなった場合、「m−1」ライン目のラインおよびmライン目のラインにおける「n+1」番目および「n+2」番目の各データとしての結合データを参照するものの、第1の画像処理用LUTデータを参照することはない。
このように、第1の画像処理用LUTデータに対する伸長処理のときは、第2の画像処理用LUTデータが参照されることはなく、一方、第2の画像処理用LUTデータに対する伸長処理のときは、第1の画像処理用LUTデータが参照されることはないので、異なるラインに対応するLUTデータを、第1のLUT用メモリ210および第2のLUT用メモリ211に設定(格納)することが可能になる。
なお、実施の形態3では、第1の画像処理用LUTデータに関する最終の要素データと第2の画像処理用LUTデータに関する先頭の要素データとの間においては、LUTデータに関する2つの要素データに対応する領域に2つの結合用データが配置されるようになっているで、これに限定されることなく、LUTデータに関する要素データが存在すべき領域に当該要素データが存在しない場合は、存在すべき要素データの数に応じた数の結合データが配置されるようにしてもよい。
例えば、図24(c)において、第2の画像処理用LUTデータの先頭の要素データがラインの「n+2」番目のデータのときは、結合用データは「n+1」番目に配置されるので、結合用データの数は1となり、また、その先頭の要素データがラインの「n+4」番目のデータのときは、結合用データは「n+1」番目〜「n+3」番目のそれぞれに配置されるので、結合用データの数は3となる。
ところで、図22に示したLUTデータ群30を用いてLUTの設定処理を行う場合、CPU201は、メモリバス制御部208に対し、処理がLUTの設定である旨、結合用データの値、第1のLUT用メモリ210に格納すべき第1の画像処理用LUTデータに係るライン(指定ライン)を示す情報、第2のLUT用メモリ211に格納すべき第2の画像処理用LUTデータに係るライン(指定ライン)を示す情報、および例えば図22に示したLUTデータ群における第1の画像処理用LUTデータと第2の画像処理用LUTデータとの境界を示す境界情報とを指定する。
境界情報は、第1の画像処理用LUTデータの先頭の要素データおよび最終の要素データのそれぞれの位置を示す位置情報、第2の画像処理用LUTデータの先頭の要素データおよび最終の要素データのそれぞれの位置を示す位置情報である。
例えば、境界情報が、第1の画像処理用LUTデータの先頭の要素データがラインの1番目(先頭)のデータ、第1の画像処理用LUTデータの最終の要素データがラインのn番目のデータ、第2の画像処理用LUTデータの先頭の要素データがラインの「n+3」番目のデータ、第2の画像処理用LUTデータの最終の要素データがラインの最終のデータ、という位置情報である場合、データ伸長部204から出力されるアドレスとLUTデータの関係は、図25に示すように、データ伸長部204から出力されるアドレスが「0」から「n−1」までは第1の画像処理用LUTデータ、データ伸長部204から出力されるアドレスが「n」から「n+1」までは結合用データ、データ伸長部204から出力されるアドレスが「n+2」からは第2の画像処理用LUTデータとなる。
次に、メモリバス制御部208のLUTの処理について、図26を参照して説明する。
図26は、メモリバス制御部208の処理の処理手順を示すフローチャートである。
このメモリバス制御部208による処理は、LUTの設定処理(LUTデータの更新処理を含む)のときに適用される。
実施の形態3では、CPU201によって、DMAコントローラ203には、メモリ202に格納されている圧縮LUTデータの格納アドレスおよびデータサイズが、またデータ伸長器204には、圧縮LUTデータにかかわる伸長すべきデータ(画像データ)の画像サイズが、さらにメモリバス制御部208には、処理がLUTの設定である旨、結合用データの値、第1の画像処理用LUTデータに係る指定ライン情報、第2の画像処理用LUTデータに係る指定ライン情報および境界情報が、それぞれ動作条件情報として設定される。
なお、データ伸長部204に設定される画像サイズは、第1の画像処理用LUTデータに係る指定ラインと第2の画像処理用LUTデータに係る指定ラインとで、値の大きいラインの方の値が採用される。メモリバス制御部208は、データ伸長部204から伸長処理中のラインが何ライン目なのかを示すライン情報を入力するものとする。
実施の形態3では、「区分情報」は「境界情報」に対応し、「画像処理ごとの複数のラインに対応する複数のルックアップテーブルデータのうち伸長すべきルックアップテーブルデータの範囲を示す情報」は「第1の画像処理用LUTデータに係る指定ライン情報、第2の画像処理用LUTデータに係る指定ライン情報」に対応し、「画像処理ごとの当該範囲のうち最大の範囲に対応する画像データに関する画像サイズ」は「第1の画像処理用LUTデータに係る指定ラインと第2の画像処理用LUTデータに係る指定ラインとで、値の大きいラインの方の値に対応する画像サイズ」に対応する。
さて、図26に示すように、データ伸長部204からラインバッファ(第1のLUT用メモリ210または第2のLUT用メモリ211)に対するリードまたはライトが発生した場合(ステップS601)、メモリバス制御部208は、データ伸長部204から出力されたリードまたはライトにかかわるアドレスを取得する。
例えば、リードのときはリード対象のLUTデータが格納されている場所のアドレスを取得し、一方、ライトのときはライト対象のLUTデータを格納する場所のアドレスを取得する。
既にCPU201によって上記動作条件情報が設定されているメモリバス制御部208は、その動作条件情報のうち境界情報を基に、データ伸長部204からのアドレスが第1の画像処理用LUTデータにかかえわるアドレスの範囲に含まれるか否かを判断する(ステップS602)。
メモリバス制御部208は、ステップS602においてデータ伸長部204からのアドレスが第1の画像処理用LUTデータにかかわるアドレスの範囲内であると判断した場合は、データ伸長部204からのライン情報が第1の画像処理用LUTデータにかかわる指定ライン以下であるか否かを判断する(ステップS603)。
メモリバス制御部208は、ステップS603において上記ライン情報が上記指定ライン以下であると判断した場合は、図27に示すように、データ伸長部204と第1のLUT用メモリ210とを接続する(ステップS604)。このステップS604が終了した場合は、この処理が終了される。
なお、ステップS604において、メモリバス制御部208は、データ伸長部204と第1のLUT用メモリ210とを接続するときは、第1の画像処理用LUTデータを第1のLUT用メモリ210のアドレス「0」から順にリードまたはライトさせるために、データ伸長部204から出力されるアドレスデータに対するアドレス変換処理208Bを実施するようになっている。アドレス変換処理208Bは上述したアドレス変換処理208Aと同様の機能を有する。
上述したようにしてデータ伸長部204と第1のLUT用メモリ210とが接続された場合は、データ伸長部204による第1のLUT用メモリ210に対するリードまたはライトが実行される。
ところで、メモリバス制御部208は、ステップS603において上記ライン情報が上記指定ラインを超えていると判断した場合は、第1のLUT用メモリ210および第2のLUT用メモリ211に対するリードまたはライトが実施されないようにするとともに、CPU201によって設定された結合用データをデータ伸長部204に向けて出力する(ステップS605)。このステップS605が終了した場合は、この処理が終了される。
メモリバス制御部208は、ステップS602においてデータ伸長部204からのアドレスが第1の画像処理用LUTデータにかかわるアドレスの範囲外であると判断した場合は、データ伸長部204からのアドレスが第2の画像処理用LUTデータにかかわるアドレスの範囲に含まれるか否かを判断する(ステップS606)。
メモリバス制御部208は、ステップS606においてデータ伸長部204からのアドレスが第2の画像処理用LUTデータにかかわるアドレスの範囲内であると判断した場合は、データ伸長部204からのライン情報が第2の画像処理用LUTデータに係る指定ライン以下であるか否かを判断する(ステップS607)。
メモリバス制御部208は、ステップS607において上記ライン情報が上記指定ライン以下であると判断した場合は、実施の形態2の図16に示したように、データ伸長部204と第2のLUT用メモリ211とを接続する(ステップS608)。
なお、ステップS608において、メモリバス制御部208は、データ伸長部204と第2のLUT用メモリ211とを接続するときは、第2の画像処理用LUTデータを第2のLUT用メモリ211のアドレス「0」から順にリードまたはライトさせるために、データ伸長部204から出力されるアドレスデータに対するアドレス変換処理208Aを実施するようになっている。
上述したようにしてデータ伸長部204と第2のLUT用メモリ211とが接続された場合は、データ伸長部204による第2のLUT用メモリ211に対するリードまたはライトが実行される。
メモリバス制御部208は、ステップS606において、データ伸長部204からのアドレスが第1の画像処理用LUTデータにかかわるアドレスの範囲外で、かつ第2の画像処理用LUTデータにかかわるアドレスの範囲外であると判断した場合、ステップS607において、データ伸長部204からのライン情報が第2の画像処理用LUTデータにかかわる指定ラインを超えていると判断した場合は、ステップS605に進む。
上述した処理が実施されることにより、例えば、CPU201が設定する第1の画像処理用LUTデータに係る指定ライン、および第2の画像処理用LUTデータに係る指定ラインが、それぞれ図22に示したLUTデータ群30における6ライン目および5ライン目とした場合、1ライン目から6ライン目までの6つのラインに対応する画像データ(LUTデータ)に関する画像サイズがデータ伸長部204に設定される。そして、データ伸長部204からは、図25に示した内容のデータが出力される。
一方、メモリバス制御部208には、処理がLUTの設定である旨、結合用データの値、第1の画像処理用LUTデータに係る指定ライン情報=6ライン目、第2の画像処理用LUTデータに係る指定ライン情報=5ライン目、および境界情報が設定される。その境界情報は、第1の画像処理用LUTデータの先頭の要素データに関する位置情報=1番目のデータ(アドレス「0」)および最終の要素データに関する位置情報=n番目のデータ(アドレス「n−1」)、第2の画像処理用LUTデータの先頭の要素データに関する位置情報=「n+3」番目のデータ(アドレス「n−2」)および最終の要素データに関する位置情報=最終のデータとなる。
この場合、5ライン目のラインにかかわるLUTデータに対する伸長処理が終了したときは、図28に示すように、第1のLUT用メモリ211には5ライン目のラインにかかわる第1の画像処理用LUTデータが格納され、第2のLUT用メモリ211には5ライン目のラインにかかわる第2の画像処理用LUTデータ5が格納される。
なお、図28において、1行目はデータ伸長部204における画像処理用LUTデータにかかわるアドレスを示し、2行目は各アドレスに対応する画像処理用LUTデータの各要素データを示し、3行目は第1のLUT用メモリ210における第1の画像処理用LUTデータが格納されているアドレスを示し、4行目は第1のLUT用メモリ210における各アドレスに対応して格納されている第1の画像処理用LUTデータの各要素データを示し、5行目は第2のLUT用メモリ211における第2の画像処理用LUTデータが格納されているアドレスを示し、6行目は第2のLUT用メモリ211における各アドレスに対応して格納されている第2の画像処理用LUTデータの各要素データを示す。
図28において、第1の画像処理用LUTデータ「5:1」、第1の画像処理用LUTデータ「5:2」、第1の画像処理用LUTデータ「5:3」および第1の画像処理用LUTデータ「5:n」は、5ライン目のラインにかかわる第1の画像処理用LUTデータに関する要素データを示す。また、第2の画像処理用LUTデータ「5:1」および第2の画像処理用LUTデータ「5:2」は、5ライン目のラインにかかわる第2の画像処理用LUTデータに関する要素データを示す。
次に、6ライン目のラインにかかわるLUTデータに対する伸長処理が終了したときは、図28に示す内容は図29に示す内容に遷移する。すなわち、図29に示すように、第1のLUT用メモリ210には6ライン目のラインにかかわる第1の画像処理用LUTデータ6が格納される。これに対し、第2のLUTメモリ211は、リードまたはライトが実行されないためメモリ内の書き換えは行われず、5ライン目のラインにかかわる第2の画像処理用LUTデータ5が格納されたままとなっている。
図29において、第1の画像処理用LUTデータ「6:1」、第1の画像処理用LUTデータ「6:2」、第1の画像処理用LUTデータ「6:3」および第1の画像処理用LUTデータ「6:n」は、6ライン目のラインにかかわる第1の画像処理用LUTデータに関する要素データを示す。
なお、実施の形態3では、画像処理部(画像処理)毎のLUTデータの数が一致しない場合におけるLUTの設定処理(LUTデータの更新処理を含む)について説明したが、これに限定されることなく、実施の形態2の図11に示したLUTデータ群20に関し、第1の画像処理用データと第2の画像処理用データとで異なるラインのLUTデータを設定する場合(異なるラインのLUTデータを画像処理に対応するLUT用メモリに格納する場合)のLUTの設定処理(LUTデータの更新処理を含む)にも適用することができる。
(実施の形態4)
次に、本発明の実施の形態4に係る画像処理装置について詳細に説明する。
図30は、実施の形態4に係る画像処理装置の機能構成を示している。
図30に示すように、画像処理装置300は、画像生成部310と圧縮処理部320と記憶部330とを有している。
画像生成部310は、所定のデータ形式に従って画像処理対象の画像データを生成するとともにLUTデータを生成するものであり、例えばラスター形式に画像データを生成する。
また、画像生成部310は、次の(1)〜(3)の3つのLUTデータの生成処理のうち何れかの生成処理を実行するようになっている。
(1)画像生成部310は、1つのLUTデータを1つのラインに対応する画像データと定義して、複数のラインに対応する複数のLUTデータを、画像処理対象の画像データのデータ形式と同じデータ形式例えばラスター形式に従って1つの情報として生成する。この1つの情報はラスター形式の画像データであり、LUTデータ群である。このようにして生成されたLUTデータ群は、例えば図2に示した実施の形態1のLUTデータ群10に対応する。
なお、例えば図3に示した実施の形態1のLUTデータ群の一例の如く、予め設定された画像データの種類の順番に従って各LUTデータを配置するようにしてもよいし、例えば図9に示した実施の形態1のLUTデータ群の一例の如く、類似したLUTデータ同士を隣接して配置するようにしてもよい。
これにより、後述する圧縮処理部320によって、類似したLUTデータ同士が隣接されて配置されているLUTデータ群を圧縮する場合に、圧縮効率を向上させることができる。
(2)画像生成部310は、複数種類の画像処理(すなわち、これらの画像処理を実行する複数の画像処理部)で共通する画像処理モード(写真画質、文字画質等)において使用されるLUTデータに関し、それぞれの画像処理(画像処理部)で使用されるLUTデータを組として横方向に結合し、これら結合した各LUTデータを1つのラインに対応する画像データと定義する。
これは、複数の画像処理部つまり複数種類の画像処理のそれぞれに対応する複数のLUTデータ、すなわち画像処理ごとの画像処理モードの数に応じた複数のLUTデータの管理を単純化するためである。
次に、画像生成部310は、1つのラインに対応する画像データの生成を画像処理モードの数に応じて実施するとともに、この処理により得られる複数のラインに対応する複数の画像データを縦方向に結合する。
さらに、画像生成部310は、複数のLUTデータが横方向に結合された1つのラインに対応する画像データが画像処理モードの数に対応するラインの数に応じて縦方向に結合されたものを、画像処理対象の画像データのデータ形式と同じデータ形式例えばラスター形式に従って1つの情報として生成する。この1つの情報はラスター形式の画像データであり、LUTデータ群である。このようにして生成されたLUTデータ群は、例えば図11に示した実施の形態2のLUTデータ群20に対応する。
(3)画像生成部310は、上記(2)の生成処理のときに、画像処理部(画像処理)毎のLUTデータの数が一致しない場合、LUTデータ間および不足領域を結合用データで結合する。この結合用データは、ダミーデータやヌルデータと同じ意味を有するものであり、全て同じ値になっている。また、結合用データの値は圧縮効率等を考慮して任意に設定可能になっている。なお、LUTデータ間の結合用データの数は、圧縮処理および伸長処理において参照されるLUTデータ(の要素データ)の範囲によって決定されるようになっている。
このようにLUTデータ間および不足領域を結合用データで結合することにより、画像処理部(画像処理)毎のLUTデータの数が一致し、しかも種類の異なるLUTデータを扱えるようになる。
次に、画像生成部310は、1つのラインに対応する画像データの生成を画像処理モードの数の多い方の画像処理モードの数に応じて実施するとともに、この処理により得られる複数のラインに対応する複数の画像データを縦方向に結合する。
さらに、画像生成部310は、複数のLUTデータが横方向に結合された1つのラインに対応する画像データが画像処理モードの数に対応するラインの数に応じて縦方向に結合されたものを、画像処理対象の画像データのデータ形式と同じデータ形式例えばラスター形式に従って1つの情報として生成する。この1つの情報はラスター形式の画像データであり、LUTデータ群である。このようにして生成されたLUTデータ群は、例えば図22に示した実施の形態3のLUTデータ群30に対応する。
圧縮処理部320は、所定の圧縮方法に従って画像データを圧縮するとともにLUTデータ群を圧縮するものであり、例えば、ライン間相関を利用した方式の圧縮方法に従って画像データを圧縮する。
また、圧縮処理部320は、画像生成部310によって生成された1つの情報としてのLUTデータ群を、画像処理対象の画像データに対し実施される所定の圧縮方法、例えばライン間相関を利用した方式に基づく圧縮処理の場合と同一の圧縮方法(例えばライン間相関を利用した方式)で圧縮する。
なお、実施の形態4において、画像生成部310がラスター形式に従って複数のLUTデータを1つの情報として生成し、圧縮処理部320が、その1つの情報としてのLUTデータ群を、ライン間相関を利用した方式の圧縮方法に従って圧縮する理由は次の通りである。
(A)すなわち、複数のLUTデータがラスター形式に従って1つの情報つまりLUTデータ群(ラスター形式の画像データ)を生成した場合に、そのLUTデータ群(1つの情報)が圧縮されるときは、圧縮されたLUTデータ群(1つの情報)に対応する1つのファイルが生成され、そのファイルには、例えば圧縮方式を示す情報(冗長部分)などのヘッダが生成され付加される。そのため、複数のLUTデータが存在する場合であっても、1つの情報としてのLUTデータ群に対する圧縮処理を実施、すなわち前記ヘッダが付加されたファイルの生成処理(換言すれば圧縮処理)を1回のみ実施すればよいので、圧縮処理効率が向上するからである。
これに対し、複数のLUTデータがそれぞれ圧縮された場合では、圧縮された各LUTデータに対応する複数のファイルが生成され、それぞれのファイルには、例えば圧縮方式を示す情報などのヘッダが生成され付加される。そのため、そのようなヘッダが付加されたファイルの生成処理(換言すれば圧縮処理)を、LUTデータの数に応じて実施しなければならず、圧縮処理効率は低いものとなる。
(B)また、1つの情報としてのLUTデータ群を圧縮する場合は、圧縮対象のデータ(要素データ)が存在するラインにおける所定のデータ(要素データ)および当該ラインの例えば1つ前のラインにおける所定のデータ(要素データ)を参照することができ、圧縮効率の向上を期待することができるからである。しかも、図9に示した実施の形態1のLUTデータ群の一例の如く、1つの情報としての、類似したLUTデータ同士が隣接して配置されているLUTデータ群を圧縮する場合にあっては、より一層、圧縮効率を向上させることができるからである。
これに対し、複数のLUTデータをそれぞれ圧縮する場合では、参照できるデータ(要素データ)は隣接するデータのみしか存在しないので、圧縮効率は期待することはできない。
記憶部330は、画像生成部310によるLUTデータ群の生成処理や、圧縮処理部320による圧縮処理の際に使用される作業領域331と、画像生成部310によって生成されたLUTデータ群や、圧縮処理部320によって圧縮されたLUTデータなど各種のデータを記憶するデータ記憶領域332と、を有する。
図30に示した画像処理装置300の機能は、実施の形態1から実施の形態3の何れかの実施の形態に係る画像処理装置に組み込むことができる。
図31は、画像処理装置300の機能を実施の形態1に係る画像処理装置に組み込んだ場合の画像処理装置の構成を示し、図32は画像処理装置300の機能を実施の形態2または実施の形態3に係る画像処理装置に組み込んだ場合の画像処理装置の構成を示す。
図31に示す画像処理装置400は、図1に示した実施の形態1に係る画像処理装置100の構成において、ハードディスクなどの記憶装置410を追加した構成になっている。なお、図31において、図1に示した構成要素と同様の機能を果たす部分には同一の符号を付している。
記憶装置410は、上記記憶部330(特に、データ記憶領域332)に対応するものであり、上記画像生成部310の機能を実現させるためのプログラム、および圧縮処理部320の機能を実現されるためのプログラムが格納されている。ここで、画像生成部310の機能とは、少なくとも上記(1)の生成処理の機能のことである。
メモリ102には、圧縮画像データおよび圧縮LUTデータを格納する領域と、記憶装置410から読み出されたプログラムを記憶する領域と、上記記憶部330の作業領域331として機能する領域とが割り当てられている。
実施の形態4では、画像処理装置400においては、CPU101が、画像生成部310の機能を実現させるためのプログラム、および圧縮処理部320の機能を実現されるためのプログラムを記憶装置410からメモリ102に読み出して実行することにより、画像生成部310の機能および圧縮処理部320の機能が実現されるようになっている。
また、CPU101は、LUTの設定処理のときは、記憶装置410から圧縮LUTデータを読み出するとともに、この読み出した圧縮LUTデータをメモリ102に格納する。
図32に示す画像処理装置500は、図10に示した実施の形態2に係る画像処理装置200の構成において、ハードディスクなどの記憶装置510を追加した構成になっている。なお、図32において、図10に示した構成要素と同様の機能を果たす部分には同一の符号を付している。
記憶装置510は、上記記憶部330(特に、データ記憶領域332)に対応するものであり、上記画像生成部310の機能を実現させるためのプログラム、および圧縮処理部320の機能を実現されるためのプログラムが格納されている。ここで、画像生成部310の機能とは、少なくとも上記(2)および(3)の各生成処理の機能のことである。
メモリ202には、圧縮画像データおよび圧縮LUTデータを格納する領域と、記憶装置510から読み出されたプログラムを記憶する領域と、上記記憶部330の作業領域331として機能する領域とが割り当てられている。
実施の形態4では、画像処理装置500においては、CPU201が、画像生成部310の機能を実現させるためのプログラム、および圧縮処理部320の機能を実現されるためのプログラムを記憶装置510からメモリ202に読み出して実行することにより、画像生成部310の機能および圧縮処理部320の機能が実現されるようになっている。
また、CPU201は、LUTの設定処理のときは、記憶装置510から圧縮LUTデータを読み出するとともに、この読み出した圧縮LUTデータをメモリ202に格納する。
なお、画像処理装置400によるLUTの設定処理および画像処理は実施の形態1の場合と同様なので、ここではその詳細な説明については省略する。また、画像処理装置500によるLUTの設定処理および画像処理は実施の形態2または実施の形態3の場合と同様なので、ここではその詳細な説明については省略する。
なお、実施の形態4では、画像処理装置300は、図示しない通信回線を介して、LUTの設定処理および画像処理を実施する画像処理装置、例えば実施の形態1に係る画像処理装置100(図1参照)、実施の形態2および実施の形態3に係る画像処理装置200(図10参照)と接続するようにし、圧縮LUTデータを、当該画像処理装置300に設けられる通信装置(図示せず)、および通信回線(図示せず)を介して、画像処理装置100、あるいは画像処理装置200に向けて送信するようにしてもよい。