本発明の一実施形態について図1ないし図12に基づいて説明すると以下の通りである。すなわち、本実施の形態に係る画像処理装置1は、画像データから写真領域や文字領域など特徴領域(特性の領域)を判定し、特徴領域に応じて可逆圧縮または非可逆圧縮(画像データ処理)を行うものである。画像処理装置1は、例えば、複写機、プリンタ、スキャナ、ファクシミリ、あるいはこれらを統合したデジタル複合機などにより実現できる。
まず、図1を参照して画像処理装置1における圧縮処理に係る構成について説明する。図1は、本発明の実施形態を示すものであり、画像処理装置1における圧縮処理に係る要部構成について示すブロック図である。
(画像処理装置の圧縮処理に係る構成)
図1に示すように、本実施の形態に係る画像処理装置1は、圧縮処理に係る構成として、割り込み制御部11、CPU12、メモリコントローラ14、HDDコントローラ15、画像処理部16、指示データ生成部17、および画質改善画像処理部18を備えている。そして、これら各部はシステムバス2を通じてデータの送受信を行うことができる。
割り込み制御部11は、当該画像処理装置1が備える各部からイベント信号を受信するとCPU12に対してイベント発生を通知するものである。このイベント信号の例としては、例えば、DMA転送完了の通知、スレーブモジュール(本実施形態ではメモリコントローラ14等)との通信エラーなどによるDMA転送の中止を示す通知などが挙げられる。つまり、イベント信号は、各DMA部から割り込み制御部11に対して出力される通知信号である。各DMA部から通知されたこれらの通知信号は、割り込み制御部11が備える不図示のレジスタに保持されように構成されている。そして、CPU12が該当するレジスタから通知信号を読み出すことにより、何のイベントが発生したのかを判定することができる。CPU12は判定したイベントの種類によって、次に動作すべき内容を決定する。
CPU12は、画像処理装置1が備える各部の各種制御を行うものである。具体的には、CPU12は、後述するDRAM(メインメモリ)3からプログラムデータを、メモリコントローラ14を介して読み出し、この読み出した命令を解釈して動作する。CPU12は、これらの命令を順番に読み出すことで、画像処理装置1全体の各部を制御することができる。なお、この命令としては、例えばDMA部に対する起動および終了命令、あるいは割り込み処理命令などが挙げられる。
メモリコントローラ14は、DRAM3と接続されており、CPU12、または各DMA部からの指示に応じて該DRAM3に対するデータの読み出し、および書込みを制御するモジュールである。つまり、メモリコントローラ14は、スレーブモジュールとして動作するものであり、マスタモジュールであるCPU12や各DMA部により指示されたDRAM3のアドレスから、指示されたデータサイズのデータを読み出したり、書き込んだりする。そして、メモリコントローラ14は、読み出し要求によってDRAM3から読み出したデータを、読み出しの要求を行ったマスタモジュール(CPU12または各DMA部)に転送する。あるいは、メモリコントローラ14は、書き込み要求により書き込むべきデータをマスタモジュールから取得し、DRAM3に対して書き込みを行う。また、メモリコントローラ14は、DRAM3に格納されているデータが消えないようにするために、リフレッシュ制御などを行うものでもある。
HDDコントローラ15は、DMA部を有しており、CPU12からのDMA部に対する起動命令に応じて、ハードディスク(HDD)に対し、データの読み出し、あるいは書き込みを行うモジュールである。HDDコントローラ15は、全てのデータ転送が完了すると、割り込み制御部11に対して完了通知を行う。そして、この通知は、割り込み制御部11を介してCPU12に通知される。なお、HDDコントローラ15が扱うデータとは、画像データ、指示データ、圧縮データ、プログラムデータなど、HDDに格納するデータ全てが対象となる。
画質改善画像処理部18は、DMA部を有し、高画質化処理および解像度変換処理など画質改善にかかる処理を実現するモジュールである。画質改善画像処理部18は、CPU12からのDMA部に対する起動命令に応じて、DRAM3から画像データを取得する。そして、CPU12からの指示に応じて、取得した画像データに対して、高画質化処理および解像度変換処理等を実施する。
画像処理部16は、DMA部を有し、画像処理機能を実現するモジュールである。画像処理部16は、CPU12からのDMA部に対する起動命令に応じて、DRAM3から画像データを取得し、データバッファであるSRAM25に保存する。そして、画像処理部16は、SRAM25に保存した画像データを読み出し、CPU12からの指示に従って画像処理を行い、出力バッファであるSRAM25に書き込む。このようにして、画像処理が完了すると、画像処理部16では、DMA部がDRAM3に対して書き込みを行う。この一連の処理を繰り返し、全ての画像データに対する画像処理を完了すると、画像処理部16は、割り込み制御部11に対して完了通知を送る。そして、この完了通知は、画像処理部16を介してCPU12通知される。なお、画像処理部16において実行される画像処理としては、例えば、画像データの高画質化処理、解像度変換処理、暗号化処理、圧縮処理、伸張処理などの処理が挙げられる。なお、圧縮処理および伸張処理が本発明の画像データ処理に相当する。
また、画像処理部16は、特に圧縮処理を実行する部材として、圧縮モジュール13を備えている。圧縮モジュール13の詳細については後述する。
指示データ生成部17は、DMA部を有し、圧縮方式指示データ(指示データと称する)を生成するモジュールである。この指示データとは、画像データの圧縮形式を特定するためのデータである。以下において、この指示データの生成処理について説明する。
本実施の形態に係る画像処理装置1は、以下のような流れで画像データの指示データの生成を行っている。すなわち、CPU12からの起動命令に応じて、指示データ生成17がDRAM3からデータを読み出し、指示データ生成17内部で画像解析を行う。指示データ生成部17は、画像解析結果から各画素(本実施形態ではRGB各8bit合計24bitを1画素とする)毎に、4bitの指示データ(指示データと称する)を生成する。つまり、1画素24bitの画像データにつき、4bitの指示データを生成する。例えば、100MBの画像データを圧縮処理する場合、該100MBの画像データに対する指示データは16.7MBのサイズとなる。このようにして、CPU12からの制御指示の下、指示データ生成部17が指示データを生成する。
生成された指示データは、CPU12からの指示に応じて指示データ生成部17が備えるDMAが、メモリコントローラ14を介してDRAM3に書き込む。そして、全ての画素に対する指示データをDRAM3に書き込むと、割り込み制御部11に対して指示データ生成処理の完了通知を行う。この完了通知は、割り込み制御部11を介してCPU12に通知される。
画像データに対して実行される画像解析とは、例えば、領域判定などの処理が挙げられる。つまり、領域判定処理において、色変化および濃度変化の大きく高周波成分の多い画像は、写真領域であると判定され、この領域に対して非可逆圧縮を行う指示データが生成される。なお、画像解析の具体的処理内容については、公知の技術であるため、その詳細はここでは省略する。
圧縮モジュール13は、複数のDMA部からなる圧縮モジュールDMA24を有しており、CPU12からの指示に応じてデータの圧縮処理を行うモジュールである。図1に示すように圧縮モジュール13は、3つの圧縮コアモジュール(画像データ非可逆圧縮コア21、画像データ可逆圧縮コア22、指示データ可逆圧縮コア23)を備えている。なお、本明細書では、画像データ非可逆圧縮コア21、画像データ可逆圧縮コア22、指示データ可逆圧縮コア23をそれぞれ区別して説明する必要がない場合は、これらを総称して単に圧縮コアモジュールと称することとする。
圧縮モジュール13は、DRAM3から画像データと指示データを読み込むと、3つの圧縮コアモジュールに分散して、可逆圧縮および非可逆圧縮が行われる。より具体的には、画像データ非可逆圧縮コア21は、画像データのうち写真等を含む所定領域(写真領域)に対して非可逆圧縮を行う。一方、画像データ可逆圧縮コア22は、この同じ画像データのうち文字等が存在する領域(文字領域)に対して可逆圧縮を行う。また、指示データ可逆圧縮コア23は、この画像データに対応する指示データの可逆圧縮を実行する。以下において、図2を参照して、本実施の形態に係る圧縮モジュール13のより詳細な構成について説明する。図2は、本発明の実施形態を示すものであり、圧縮モジュール13の要部構成を説明するブロック図である。
なお、図2では、説明を簡便にするために、圧縮モジュール13がDRAM3から第1画像データ、圧縮方式指示データ、第2画像データをそれぞれ読み出すように記載されている。しかしながら、実際には、システムバス2を通じてメモリコントローラ14を介してDRAM3から上述した各種画像データを読み出す。
(圧縮モジュールの構成)
図2に示すように、本実施の形態に係る圧縮モジュール13は、圧縮モジュールDMA24(DMA部24a〜DMA部24g)、SRAM25(SRAM25a〜25g)、アービタ26、SRAMリードコントローラ27a〜27c、データ置換部28a〜28b、圧縮コアモジュール(画像データ非可逆圧縮コア21、画像データ可逆圧縮コア22、指示データ可逆圧縮コア23)、SRAMライトコントローラ29a〜29cとを備えてなる構成である。
なお、圧縮モジュールDMA24(特にDMA部24a〜24c)、SRAM25(特にSRAM25a〜25c)、アービタ26、SRAMリードコントローラ27a〜27cによって本発明の転送部を実現する。
また、圧縮モジュール13が備えるDMA部24a〜24g、SRAM25a〜25g、SRAMリードコントローラ27a〜27c、データ置換部28a〜28b、圧縮コアモジュール、SRAMライトコントローラ29a〜29cそれぞれの個数は上述した個数に限定されるものではない。圧縮処理対象となるデータの種類等に応じて適宜設けることができる。
SRAM25は、DRAM3から読み出した指示データ、画像データ(第1画像データ、第2画像データ)、およびこれらの各種データを圧縮処理した結果得られる4つの圧縮データ(圧縮データ24d〜24g)を格納するメモリである。
第1画像データとは、例えばスキャナからの取得画像であり、第2画像データとは、例えばFAX画像など様々な画像形式が挙げられる。
アービタ26は、データを読み出すためにSRAM25へアクセスするモジュールを決定するものである。より具体的には、アービタ26は、SRAMリードコントローラ27a〜27cのSRAM25に対するアクセス許可を発行する。このため、アービタ26により許可を発行されたSRAMリードコントローラだけがSRAM25にアクセスしてデータを読み出すことができる。
データ置換部28a〜28bは、SRAMリードコントローラ27b、27cによりSRAM25から読み出された画像データを、指示データの内容に従って置換処理するものである。そして、データ置換部28a〜28cは、置換処理した結果を圧縮コアモジュールに対して出力する。なお、この置換処理の詳細については後述する。
SRAMライトコントローラ29a〜29cは、各圧縮コアモジュールによって圧縮処理されたデータ(第1〜第4圧縮データ)をSRAM25(SRAM25d〜25g)にそれぞれ書き込むものである。SRAM25に書き込まれたデータそれぞれを、DMA24d〜24gが、メモリコントローラ14を介してDRAM3に書き込む。
上記した構成を有する圧縮モジュール13は、2種類の画像データ(第1画像データセットおよび第2画像データ)を並列的に圧縮処理することが可能となっている。そこで、上述した図2、ならびに図3、4を参照にして、圧縮モジュール13における圧縮処理の処理フローについて説明する。図3は、本発明の実施形態を示すものであり、圧縮モジュール13における圧縮処理の処理フローを示すフローチャートである。
(圧縮処理の処理フロー)
まず、前提として、並列的に圧縮処理を行う2種類の画像データとして、第1画像データとその指示データとを含むデータ(第1画像データセット)と、第1画像データとは異なる画像データである第2画像データとが図2に示すようにDRAM3に記憶されているものとする。そして、第1画像データはその一部が非可逆圧縮され、それ以外は可逆圧縮されるものとする。また、指示データは可逆圧縮されるものとする。第2画像データは、非可逆圧縮のみ実行されるものとする。
また、指示データのSRAM25へのDMA転送は、DMA部24aが、第1画像データのSRAM25へのDMA転送は、DMA部24bが行うものとする。また、第2画像データのSRAM25へのDMA転送は、DMA部24cが行うものとする。一方、可逆圧縮された指示データのDRAM3へのDMA転送は、DMA部24dが、可逆圧縮された第1画像データのDRAM3へのDMA転送は、DMA部24eが、非可逆圧縮された第1画像データのDRAM3へのDMA転送は、DMA部24fがそれぞれ行うものとする。また非可逆圧縮された第2画像データのDRAM3へのDMA転送は、DMA部24gが行うものとする。
なお、2種類の画像データそれぞれの画像圧縮処理は独立して起動および終了が可能である。このため、説明の便宜上、以下のフローチャートではそれぞれの場合について個別に説明する。
(第1画像データセットの圧縮処理)
まず、第1画像データセットの圧縮処理について説明する。
図3に示すように、CPU12は、DMA部(DMA部24a、24b)のソース動作設定を行う(ステップS11、これ以降S11のように称する)。DMAのソース動作設定とは、DMA部24a、24bそれぞれが取得するデータが格納されているDRAM3における位置(アドレス)、および画像サイズに応じたデータサイズなどを設定することである。この設定は、CPU12が、DRAM3に格納する原稿のデータサイズや、DRAM3の使用状況に基づいて自動的に行うように構成されている。
なお、ステップS11では、CPU12が、DMA部24aおよびDMA部24bそれぞれが扱うデータについても設定する。具体的には、CPU12は、各DMA部24a、24bそれぞれが読み出すデータの格納位置を示すアドレスを指示することでこの設定を行う。例えば、指示データおよび第1画像データそれぞれが、図2に示すようにDRAM3に格納されている場合、CPU12は、DMA部24aに対し、指示データの格納アドレスをアドレス0x0000_0000とし、DMA部24bに対し、第1画像データの格納アドレスをアドレス0x1000_0000として設定する。
次に、CPU12は、DMA部(DMA部24dからDMA部24f)のデスティネーション(destination)動作設定を行う(S12)。
このデスティネーション(destination)動作設定とは、圧縮処理後のデータを、DRAM3のどの位置(アドレス)に格納すべきか指定することである。
より具体的には、CPU12は、DMA部24dに対し、可逆圧縮後の指示データ(第1圧縮データ)を、開始アドレス0x3000_0000に格納するように設定する。DMA部24eに対しては、可逆圧縮後の画像データ(第2圧縮データ)を、開始アドレス0x4000_0000に格納するように設定する。DMA部24eに対しては、非可逆圧縮後の画像データ(第3圧縮データ)を、開始アドレス0x5000_0000に格納するように設定する。
以上のようにソース動作設定およびデスティネーション(destination)動作設定が完了すると、CPU12は、圧縮モジュールDMA24を起動させる(S13)。CPU12により圧縮モジュールDMA24に対して起動指示がなされると、各DMA部(本実施形態ではDMA部24a、24b)は、DRAM3に対してデータを要求する。
まず、DMA部24bは、第1画像データをDRAM3からSRAMのデータサイズ分だけ読み出す。そして、読み出したデータをSRAM25に格納する(S14)。
具体的には、図4に示すように、DRAM3から読み出されたデータがSRAM25に読み出される。図4は、本発明の実施形態を示すものであり、DRAM3からSRAM25へのデータの読み出し例を示す図である。
すなわち、DRAM3に格納されている画像データは、主走査方向(図の左右方向)について100画素あり、図4に示すように連続的にデータが格納されているものとする。本実施形態では、8×8画素単位で非可逆圧縮処理を行うように構成されている。一方、SRAM25には8×8画素3つ分の容量があるため、主走査方向の24画素分、副走査方向(図の上下方向)の8ライン分の矩形領域データ(192画素)を、DMA部24bはDRAM3から読み出し、SRAM25に格納する。その結果、SRAM25には、図4に示すように、画素データが格納される。
次に、DMA部24aは、指示データをDRAM3からSRAMのデータサイズ分だけ読み出す。そして、読み出したデータをSRAM25に格納する(S15)。
具体的には、上記した第1画像データと同様に、図4に示すように、DRAM3から読み出されたデータがSRAM25に読み出される。
すなわち、指示データについても第1画像データと同様に、設定された開始アドレスから連続的にデータが格納されているものとする。なお、指示データが必要となる領域部分は、第1画像データにおける非可逆圧縮を実行する画像領域に対応した矩形領域部分である。このため、DMA部24aは、該当領域箇所の主走査方向における24画素、副走査方向における8画素分のデータを取得してSRAM25に格納する。
このように指示データおよび第1画像データの取得が完了すると、圧縮モジュールDMA24は、SRAMリードコントローラ27a〜27cに対して、データ取得完了を通知する。この通知を受信すると、SRAMリードコントローラ27a〜27cは、画像データおよび指示データをアービタ26の調停結果に従って、画像データ、指示データの読み込み処理を開始する。そして、データ置換部28a、28bは、SRAMリードコントローラ27b、27cによりSRAM25から読み出された画像データを、指示データの内容に従って置換処理する。そして、置換処理を行うと、SRAMリードコントローラ27a〜27cは、圧縮コアモジュールに対して転送する(S16)。
ここで、図5を参照して、データ置換部28a、28bによって実行される置換処理について説明する。図5は、本発明の実施形態を示すものであり、データ置換部28a、28bによって実行される置換処理を示す図である。
まず、置換処理後の結果を画像データ非可逆圧縮コア21に出力する場合について説明する。
データ置換部28a、28bは、画像データの画素「001」と、対応する指示データ「1」とを、それぞれのSRAM25より取得する。ここで指示データは、「0」または「1」の2値により示されるもので、「0」は可逆圧縮処理を行うべき画素であることを意味し、「1」は非可逆圧縮処理を行うべき画素であることを意味するものとする。
このように、指示データの値「1」は、対応する第1画像データの画素「001」について非可逆圧縮処理を行うことを意味する。このため、第1画像データの画素「001」は画像データ非可逆圧縮コア21に出力される。
次に、第1画像データの画素「002」と対応する指示データの値も「1」である。このため、画素「002」についても画像データ非可逆圧縮コア21に出力する。このように、順次、画像データ非可逆圧縮コア21への出力を繰り返す。
図5において、第1画像データの画素「007」を処理する場合、指示データの値は「0」となる。ここで、指示データの値「0」は可逆圧縮を行うことを意味するため、画像データの画素「007」を「0x00」に置換して、画像データ非可逆圧縮コア21に出力する。
このように置換処理を主走査方向の8画素、副走査方向における8ライン分の合計64画素分すなわち64回繰り返すと、図5の右側に示すような置換処理後のデータが非可逆圧縮コア21に転送される。
なお、本実施形態では、処理を簡単にするため置換処理は「0x00」への単純置換としているが、実際には画質向上のために様々な方法が考えられる。
次に、図6を参照して置換処理後の結果を画像データ可逆圧縮コア22に出力する場合について説明する。図6は、本発明の実施形態を示すものであり、データ置換部28a、28bによって実行される置換処理を示す図である。
ここでの置換処理の処理手順は図5と同様となる。つまり、主走査方向の8画素、副走査方向の8画素分の矩形領域を1ラインずつ処理する。具体的には、第1画像データの画素の番号が若い順に処理をする。
ただし、置換処理後の結果を画像データ非可逆圧縮コア21に出力する場合と比較して以下の点で異なる。すなわち、指示データの値に対する置換処理が逆転する点である。より具体的には、指示データの値「1」は非可逆圧縮処理を行うことを意味する。このため、指示データの値が「1」に対応する第1画像データの画素を「0x00」に置換して画像データ可逆圧縮コア22に出力する。一方、指示データの値が「0」に対応する第1画像データの画素は可逆圧縮を行うことを意味するため、そのまま可逆圧縮コアへ出力する。
ところで、SRAMリードコントローラ27a〜27cそれぞれは、同じ指示データを格納したSRAM25aと、第1画像データを格納したSRAM25bにアクセスするため、アービタ26によってSRAM25a、25bに対するアクセス制御の調停が行われる。
以下において、図7を参照してアービタ26による調停処理について説明する。図7は、本発明の実施形態を示すものであり、アービタ26による調停処理のタイムチャートを示す図である。
本実施の形態に係るSRAMリードコントローラ27a〜27cは、上記したように、各DMA部24a、24bからデータ取得完了通知を受信すると、SRAM25にデータを要求するために、リクエスト信号(「req1」、「req2」、「req3」)を、すべてHighアクティブにする。アービタ26はリクエストを発行しているSRAMリードコントローラ27a〜27cのうちから1つを選択し、アドレス有効信号(「avalid1」、「avalid2」、または「avalid3」)をアクティブにする。
図7に示す実施形態では、置換処理後の画像データの出力先として画像データ可逆圧縮コア22が選択され、「avalid 1」がアクティブとなっているものとする。このように、「avalid 1」がアクティブ(High)となりSRAM25へのアクセス権を得たSRAMリードコントローラ27aは、次のクロック(「clock」)で出力しているアドレス(「address」)に対応するデータ(「data」)を取得することが可能となる。
一方、SRAMリードコントローラ27a〜27cとSRAM25a、25bとの間におけるインタフェースを提供するSRAM I/Fは、アービタ26からSRAMリードコントロール選択信号を受信する。そして、このSRAMリードコントロール選択信号に応じて、各SRAMリードコントローラ27a〜27cから入力されるリクエスト信号を、SRAMチップセレクト信号(「CS」)に出力する。また、SRAM I/Fは、SRAMリードコントロール選択信号に応じて、各SRAMリードコントローラからのアドレス信号をSRAM25に出力する。
以上のようにして、本実施形態では、アービタ26による調停処理により、複数モジュール(SRAMリードコントローラ27a〜27c)からの同じSRAM25に対する時分割アクセスを実現することができる。ただし、SRAMのリードポートを3ポート備えた構成とすれば、このような時分割制御を省略することができる。
画像データおよび指示データが圧縮コアモジュールに対して転送されると、圧縮コアモジュールにおいて、圧縮処理(可逆圧縮処理または非可逆圧縮理)が行なわれる(S17)。
圧縮処理された画像データおよび指示データは、SRAMライトコントローラ29a〜29cによってSRAM25(SRAM25d〜25g)に格納される(S18)。
また、本実施の形態に係る画像処理装置1では、3つの圧縮コアモジュールそれぞれは、圧縮処理が完了すると、圧縮モジュールDMA24(DMA部24d〜24g)に対して、その完了を示す完了通知を行うように構成されている。より具体的には、指示データ可逆圧縮コア23は、指示データの可逆圧縮処理が完了するたびにDMA部24dに完了通知を行う。画像データ可逆圧縮コア22は、画像データの可逆圧縮処理が完了するたびにDMA部24eに完了通知を行う。また、画像データ非可逆圧縮コア21は、画像データの非可逆圧縮が完了するたびにDMA部24fに完了通知を行う。
圧縮モジュールDMA24(DMA部24d〜24g)は、完了通知を受信したものから順に、SRAM25(SRAM25d〜25f)に格納された圧縮データ(第1圧縮データ〜第3圧縮データ)を、ステップS12において設定したデスティネーション(destination)動作設定に基づきDRAM3に対して書き込む(S19)。
DRAM3に格納されている指示データおよび第1画像データすべてに対して圧縮処理が完了するまで(ステップS20において「YES」と判定されるまで)、上記したステップS14からステップS19までの処理を繰り返す。
ステップS20において「YES」と判定されると、圧縮モジュールDMA24(DMA部24d〜24f)は、CPU12に対して圧縮処理の終了通知を行う。
以上のようにして、本実施の形態に係る画像処理装置1では、「第1画像データセットの圧縮処理」を実行する。
ところで、アービタ26によりSRAMリードコントローラ27a〜27cのSRAM25に対するアクセスは時分割制御されているが、指示データの可逆圧縮処理、画像データの可逆圧縮処理、ならびに画像データの非可逆圧縮処理それぞれは、実質的には並列して処理が進められる。
また、可逆圧縮、非可逆圧縮はそれぞれ圧縮方式が異なるため圧縮処理にかかる時間が異なる。このため、画像データ非可逆圧縮コア21により実行される処理と、画像データ可逆圧縮コア22、および指示データ可逆圧縮コア23により実行される処理とでは、終了タイミングが異なるものとなる。
例えば、画像データ可逆圧縮コア22および指示データ可逆圧縮コア23それぞれの処理能力を75MB/s、画像データ非可逆圧縮コア21の処理能力を200MB/sと仮定すると、圧縮処理にかかる時間の関係は図8のように表される。図8では、塗りつぶされた1ブロックが、SRAMサイズ分の画像データ、指示データそれぞれに対する圧縮処理時間を示している。図8に示す例では、画像データ非可逆圧縮コア21は、画像データ可逆圧縮コア22または指示データ可逆圧縮コア23の半分以下の時間で圧縮処理が完了している。図8は、本発明の実施形態を示すものであり、指示データ可逆圧縮コア23、画像データ可逆圧縮コア22、画像データ非可逆圧縮コア21それぞれで第1画像データセットの圧縮処理を行った場合における処理時間の比較を示す図である。
なお、上述したように、アービタ26によって、SRAMリードコントローラ27a〜27cそれぞれのSRAM25に対するアクセスタイミングが調整されている。しかしながら、SRAMリードコントローラ27a〜27cそれぞれのSRAM25に対するアクセスタイミングのタイムラグは、非常に小さい。このため、画像データ非可逆圧縮コア21、画像データ可逆圧縮コア22、指示データ可逆圧縮コア23それぞれで実行される圧縮処理は、それぞれほぼ同じタイミングで並列して実行されるものとしてみなすことができる。このため、図8では、SRAMサイズ分の指示データ、画像データに対する圧縮処理の開始はほぼ同時となるように表している。
図8からも明らかなように、圧縮処理の処理速度が異なる場合、圧縮処理の処理速度が速い方は、圧縮処理の処理速度が遅い方の処理が完了するのを待たなければ、次のSRAMサイズ分の指示データ、画像データに対する圧縮処理を実行することができない。つまり、画像データ非可逆圧縮コア21が次の圧縮処理を開始するまでの間に待ち時間が発生している。
ところで、本実施の形態に係る画像処理装置1は、上記したように、並列的に圧縮処理を行う2種類の画像データとして、第1画像データとその指示データとを含むデータ(第1画像データセット)に加えて、第2画像データがDRAM3に記憶されている。
そこで、本実施の形態に係る画像処理装置1は、画像データ非可逆圧縮コア21において発生している上述の待ち時間を利用して、この第2画像データの圧縮処理を行うように構成されている。
以下において、まず図9を参照して第2画像データの圧縮処理の処理フローを説明する。そして、画像データ非可逆圧縮コア21において実行される第1画像データおよび第2画像データの圧縮処理について説明する。
(第2画像データの圧縮処理)
図9を参照すると、第2画像データの圧縮処理は以下のようになる。図9は、本発明の実施形態を示すものであり、圧縮モジュール13における圧縮処理の処理フローを示すフローチャートである。
まず、前提として、第2画像データについては、非可逆圧縮のみが行われるものとする。
図9に示すように、CPU12は、DMA部(DMA部24c)のソース動作設定を行う(S31)。なお、このステップS31では、具体的には、CPU12は、DMA部24cが読み出すデータの格納位置を示すアドレスを指示する。例えば、CPU12は、DMA部24cに対し、第2画像データの格納アドレスをアドレス0x2000_0000として設定する。
次に、CPU12は、DMA部24gのデスティネーション(destination)動作設定を行う(S32)。より具体的には、CPU12は、DMA部24gに対し、非可逆圧縮後の画像データ(第4圧縮データ)を、開始アドレス0x6000_0000に格納するように設定する。
以上のようにソース動作設定およびデスティネーション動作設定が完了すると、CPU12は、圧縮モジュールDMA24を起動させる(S33)。CPU12により圧縮モジュールDMA24に対して起動指示がなされると、DMA部(本実施形態ではDMA部24c)は、DRAM3に対してデータを要求する。
まず、DMA部24cは、第2画像データをDRAM3からSRAMのデータサイズ分だけ読み出す。そして、読み出したデータをSRAM25に格納する(S34)。
具体的には、上述した図4と同様にして、DRAM3から読み出されたデータがSRAM25に読み出される。
DRAM3から第2画像データの取得が完了すると、すなわち第2画像データのSRAMデータサイズ分の読み出しが完了すると、圧縮モジュールDMA24は、SRAMリードコントローラ27cに対して、データ取得完了を通知する。
この通知を受信すると、SRAMリードコントローラ27cは、第2画像データの読み込み処理を開始する。そして、SRAMリードコントローラ27cは、CPU12からの指示に応じて、データ置換部28a、28bによる置換処理を省略して、読み出した第2画像データをアービタ26の調停結果に従って圧縮コアモジュール(画像データ非可逆圧縮コア21)に転送する(S35)。
第2画像データが圧縮コアモジュール(画像データ非可逆圧縮コア21)に対して転送されると、この圧縮コアモジュールにおいて、圧縮処理(非可逆圧縮理)が行なわれる(S36)。
圧縮処理された第2画像データは、SRAMライトコントローラ29cによってSRAM25gに格納される(S37)。
また、画像データ非可逆圧縮コア21は、画像データの非可逆圧縮が完了するたびにDMA部24fに完了通知を行う。
圧縮モジュールDMA24(DMA部24g)は、完了通知を受信するとSRAM25gに格納された圧縮データ(第4圧縮データ)を、ステップS12において設定したデスティネーション(destination)動作設定に基づきDRAM3に対して書き込む(S38)。
DRAM3に格納されている第2画像データすべてに対して圧縮処理が完了するまで(ステップS39において「YES」と判定されるまで)、上記したステップS34からステップS38までの処理を繰り返す。
ステップS39において「YES」と判定されると、圧縮モジュールDMA24(DMA部24g)は、CPU12に対して圧縮処理の終了通知を行う。
以上のようにして、本実施の形態に係る画像処理装置1では、「第2画像データセットの圧縮処理」を実行する。
以上のように、「第2画像データの圧縮処理」は、図3に示す、上記した「第1画像データセットの圧縮処理」と比較して、指示データをDRAM3から読み出すステップ(S15)が無い点を除きほぼ同様な処理を行う。
本実施形態では、説明の便宜上、「第1画像データセットの圧縮処理」と「第2画像データセットの圧縮処理」とを別々に説明したが、画像処理装置1では、両者の処理を並列して行っている。特に、上述したように、本実施の形態に係る画像処理装置1では、画像データ非可逆圧縮コア21において発生する、第1画像データの圧縮処理後の待ち時間を利用して、第2画像データの圧縮処理を行う構成である。このため、画像データ非可逆圧縮コア21の利用にはハードウェア的に工夫が必要となる。
以下において、第1画像データセットおよび第2画像データの画像データ非可逆圧縮コア21における並列処理について説明する。
(画像データ非可逆圧縮コアにおける並列処理)
本実施の形態に係る画像処理装置1では、前提として、第2画像データよりも第1画像データセットに対する圧縮処理が優先されるように設定されているものとする。
まず、SRAMリードコントローラ27cは第1画像データセットのデータ転送を行うDMA部24a、24bと、第2画像データのデータ転送を行うDMA部24cとからそれぞれデータの読み込み完了通知を受信するように構成されている。
ここで、第1画像データ1セットを優先して圧縮処理する必要があるため、DMA部24a〜24cそれぞれからデータの読み込み完了通知を受信している場合、SRAMリードコントローラ27cは第1画像データセットのデータ転送を優先させる。
なお、DMA部24cのみからデータの読み込み完了通知を受信した場合、第1画像データセットが完全にSRAM25に格納されていない状態であると判定される、このため、この場合ではSRAMリードコントローラ27cは優先度の低い第2画像データのデータ転送を行う。
また、SRAM25a、25b内に格納された指示データおよび第1画像データの、圧縮コアモジュールへの転送が完了した直後において、処理すべき第2画像データがSRAM25c内に存在し、かつDMA部24cから読み込み完了通知を受信している場合、SRAMリードコントローラ27cは第2画像データの転送を行う。
これら2つの条件を満たす場合以外は、DMA部24cから読み込み完了通知を受信している場合であっても、SRAMリードコントローラ27cは第1画像データセットを優先的に転送する。
このように、上記した2つの条件を満たす場合以外では、第1画像データセットを優先的に転送するように構成されているため、本実施の形態に係る画像処理装置1は、所望されるパフォーマンスを守ることができる。
すなわち、SRAMリードコントローラ27cは、予め設定されている優先度に従って、第1画像データセットまたは第2画像データを画像データ非可逆圧縮コア21に送信することができる。
このため、第1画像データセットに対する処理について時間制約がある場合、該第1画像データセットに対する処理を優先することができる。なお、時間制約がある処理とは、例えば、第1画像データセットが、当該画像処理装置1において提示されているカタログスペックを守らなければならないコピージョブなどである。
上記では第1画像データセットを第2画像データよりも優先して圧縮処理を行う場合について説明した。しかしながら、第1画像データセットよりも第2画像データを優先して圧縮処理を行う場合も、優先度を切り替えるだけで同様に処理することができる。つまり、第2画像データを優先処理するように設定されている場合、SRAMリードコントローラ27cは、DMA部24a、24bとDMA部24cとからの読み込み完了通知について優先関係を逆転して解釈することとなる。
また、画像データ非可逆圧縮コア21には、第1画像データセットと第2画像データとの異なる種類の画像データが入力される。このため、SRAMリードコントローラ27cは、画像データ非可逆圧縮コア21に対して画像データを供給する際には、どちらの画像データを転送中なのかを示す必要がある。SRAMリードコントローラ27cは、図10に示すように、画像データ非可逆圧縮コア21に対して出力する信号中にimage number信号(送信データ指示信号)を含めることによって、どちらの画像データを転送中なのか示すことができる。
より具体的には、画像データ非可逆圧縮コア21に対して画像データが転送される際、画像データ非可逆圧縮コア21は、image number信号を含む図10に示す信号の入力を受ける。図10は、画像データ非可逆圧縮コア21が画像データを受信する際の信号波形を示す図である。
図10に示すように、image valid信号が「High」の時、image dataは有効な画像データとして画像データ非可逆圧縮コア21に対して供給される。このとき、同時にimage number信号も画像データ非可逆圧縮コア21に対して示すことにより、供給される画像データが第1画像データであるのか、あるいは第2画像データであるのか区別することができる。図10に示す例では、image number信号が「High」の時、第1画像データの供給を受けており、「Low」の時、第2画像データの供給を受けていると画像データ非可逆圧縮コア21は認識する。
また、画像データ非可逆圧縮コア21はimage number信号によって示された2種類の画像データが、図11に示すようにランダムに入力されることから、それぞれの画像データに応じた圧縮処理を時分割的に実現する必要がある。そして、画像データ非可逆圧縮コア21は2種類の画像データを時分割で圧縮処理するために、レジスタ設定セットを2つ有する必要がある。なお、図11は、本発明の実施形態を示すものであり、2種類の画像データを時分割で圧縮処理した場合の処理状態の一例を示す図である。
そこで、本実施の形態に係る画像データ非可逆圧縮コア21は、図12に示すように、圧縮コア31と、2種類のレジスタセット(第1レジスタセット33a、第2レジスタセット33b)を有するレジスタ32とを備えた構成とする。図12は、本発明の実施形態を示すものであり、画像データ非可逆圧縮コア21の要部構成を示すブロック図である。
第1レジスタセット(第1データ処理情報)33aおよび第2レジスタセット(第2データ処理情報)33bには、第1画像データおよび第2画像データそれそれに応じた圧縮処理を実行するためのレジスタ設定セットが記録されている。例えば非可逆圧縮方式がJPEGの場合、このレジスタ設定セットとしては、画素サンプリング設定、量子化テーブル設定、ハフマンテーブル設定などが挙げられる。
なお、このレジスタ32における第1レジスタセット33aおよび第2レジスタセット33bは、レジスタI/F34を介してCPU12によって設定される。
圧縮コア31は、画像データ非可逆圧縮コア21の中核となる部分であり、画像データを非可逆圧縮するために演算処理するものである。圧縮コア31は、image number信号に応じて、レジスタ32における第1レジスタセット33aまたは第2レジスタセット33bいずれかを選択する。そして、レジスタ32から、選択した第1レジスタセット33aまたは第2レジスタセット33bのレジスタ設定の供給を受け、第1画像データまたは第2画像データの非可逆圧縮処理を実行する。
圧縮コア31は、非可逆圧縮処理後の圧縮データ(第3圧縮データまたは第4圧縮データ)をSRAMライトコントローラ29cに渡してSRAM25fまたはSRAM25gに格納させる。
この圧縮データの転送においても、画像データ非可逆圧縮コア21は、SRAMライトコントローラ29cに対して圧縮データが第1画像データの圧縮データ(第3圧縮データ)であるのか、第2画像データの圧縮データ(第4圧縮データ)であるのか示す必要がある。そこで、圧縮コア31は、圧縮データを出力する際、SRAMリードコントローラ27cから第1画像データまたは第2画像データを受信するときと同様の、image number信号を含む信号をSRAMライトコントローラ29cに出力する。
SRAMライトコントローラ29cは、このimage number信号に応じて、転送する圧縮データが第3圧縮データであるのか、あるいは第4圧縮データであるのか判定する。そして、SRAMライトコントローラ29cは、する圧縮データが第3圧縮データであると判定した場合、SRAM25fに、第4圧縮データであると判定した場合、SRAM25gにそれぞれ格納する。
SRAM25fに格された第3圧縮データは、DMA部24fによってDRAM3の所定の位置に格納される。また、SRAM25gに格納された第4圧縮データは、DMA部24gによってDRAM3の所定の位置に格納される。
以上の構成により、2種類の画像データに対する圧縮処理を、画像データ非可逆圧縮コア21において、並列的に処理することができる。この結果、画像データ非可逆圧縮コア21は図8に示した待ち時間の間に第2画像データの圧縮処理を実施することができるため、画像データに対する圧縮処理の効率化を図ることができる。
なお、上記では、画像データを圧縮する圧縮処理を例に挙げて説明したが、これに限定されるものではなく、逆に圧縮された画像データの伸張処理でも同様に実現できる。すなわち、圧縮された画像データの伸張処理においても、可逆圧縮された画像データを伸張する場合と、非可逆圧縮された画像データを伸張する場合とでは同様に処理能力に差が出る。このため、圧縮された画像データの伸張処理の場合であっても、上記した圧縮処理と同様に、伸張処理の待ち時間に異なる種類の画像データの伸張処理を行うことで、処理効率を向上させることができる。
また、上記では画像データ可逆圧縮コア22と画像データ非可逆圧縮コア21との間において処理能力に差がある場合について説明した。しかしながら、例えば、同じ可逆圧縮または非可逆圧縮同士であっても、圧縮モジュールの処理能力に差がある場合には同様に、処理能力が高い方に生じる待ち時間に異なる種類の画像データの圧縮処理を行うことで処理効率を向上させることができる。
以上のように、本実施の形態に係る画像処理装置1は、画像データを圧縮する画像データ可逆圧縮コア22と、該画像データ可逆圧縮コア22とは画像データの圧縮方式が異なるとともに、圧縮処理時間が小さい画像データ非可逆圧縮コア21を備える。さらに、画像処理装置1は、第1画像データセットを、該第1画像データを構成する領域の特性に応じて、画像データ可逆圧縮コア22によって圧縮する第1領域部分と、画像データ非可逆圧縮コア21によって圧縮する第2領域部分とに分離するCPU12も備えている。そして、画像処理装置1では、画像データ可逆圧縮コア22により第1領域部分が圧縮されている間に、第2領域部分と第1画像データとは異なる第2画像データとを圧縮するように構成されている。
このため、本実施の形態に係る画像処理装置1は、DRAM3に記憶している第1画像データセットおよび第2画像データに対して効率よく圧縮処理を実行することができる。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。