(57)【特許請求の範囲】
【請求項１】
入力された画像データを圧縮された状態で回転可能とする画像処理装置であって、
前記画像データの回転角度を記憶する記憶手段と、
前記画像データにおいて、所定の数の画素からなるブロックにより構成されるタイルごとに、圧縮することによって得られた前記ブロックにおける色の配置の情報と、前記色の配置に対応する色情報と、前記画像データにおける当該タイルの位置の情報とを保持する保持手段と、
前記記憶手段にて記憶した当該画像データの回転角度に応じて前記ブロックにおける色の配置を変換し、変換された色の配置、配置に対応する色情報、及び前記タイルの位置の情報から回転後の画像データを形成する回転手段と
を有することを特徴とする画像処理装置。
【請求項２】
前記入力された画像データを所定の数の画素からなるブロックに分割する分割手段と、
前記ブロックにおけるの色の配置、及び前記色の配置に対応する色情報とを取得し、前記画像データを圧縮する取得手段と
を更に有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記色の配置は、配置の組み合わせに対応付けられたパターンであることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記保持手段は、前記色の配置に対応した順にて前記ブロックに含まれる色数の前記色情報を保持することを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
前記保持手段にて保持する情報は、構成する情報の種類ごとに保持されることを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
前記保持手段は、前記保持する情報ごとに参照するアドレスのテーブルを保持することを特徴とする請求項１乃至５のいずれか一項に記載の画像処理装置。
【請求項７】
前記タイルが有する情報は、前記入力された画像データにおける当該タイルの座標、画素データのビット数、前記色情報のビット数を含むことを特徴とする請求項１乃至６のいずれか一項に記載の画像処理装置。
【請求項８】
前記回転手段は、前記画像データの回転角度に応じて前記ブロックの読み出しの順を変更することを特徴とする請求項１乃至７のいずれか一項に記載の画像処理装置。
【請求項９】
入力された画像データを圧縮された状態で回転可能とする画像処理装置であって、
前記画像データの回転角度を記憶する記憶手段と、
前記画像データにおいて、所定の数の画素からなるブロックにより構成されるタイルごとに、圧縮することによって得られた前記ブロックにおける色の配置の情報と、前記色の配置に対応する色情報と、前記画像データにおける当該タイルの位置の情報とを保持する保持手段と、
前記画像データの回転角度に応じた回転前と回転後との色の配置に対応する位置情報を保持する回転位置保持手段と、
前記回転位置保持手段にて保持する位置情報に応じて回転後の対応する色の配置と色情報とを用いて回転後の画像データを形成する回転手段と
を有することを特徴とする画像処理装置。
【請求項１０】
入力された画像データを圧縮された状態で回転可能とする画像処理装置の制御方法であって、
前記画像処理装置の記憶手段が、前記画像データの回転角度を記憶する記憶工程と、
前記画像処理装置の保持手段が、前記画像データにおいて、所定の数の画素からなるブロックにより構成されるタイルごとに、圧縮することによって得られた前記ブロックにおける色の配置の情報と、前記色の配置に対応する色情報と、前記画像データにおける当該タイルの位置の情報とを保持する保持工程と、
前記画像処理装置の回転手段が、前記記憶手段にて記憶した当該画像データの回転角度に応じて前記ブロックにおける色の配置を変換し、変換された色の配置、配置に対応する色情報、及び前記タイルの位置の情報から回転後の画像データを形成する回転工程と
を特徴とする制御方法。
【請求項１１】
入力された画像データを圧縮された状態で回転可能とする画像処理装置の制御方法であって、
前記画像処理装置の記憶手段が、前記画像データの回転角度を記憶する記憶工程と、
前記画像処理装置の保持手段が、前記画像データにおいて、所定の数の画素からなるブロックにより構成されるタイルごとに、圧縮することによって得られた前記ブロックにおける色の配置の情報と、前記色の配置に対応する色情報と、前記画像データにおける当該タイルの位置の情報とを保持する保持工程と、
前記画像処理装置の回転位置保持手段が、前記画像データの回転角度に応じた回転前と回転後との色の配置に対応する位置情報を保持する回転位置保持工程と、
前記画像処理装置の回転手段が、前記回転位置保持工程において保持する位置情報に応じて回転後の対応する色の配置と色情報とを用いて回転後の画像データを形成する回転工程と
を有することを特徴とする制御方法。
【請求項１２】
コンピュータを、
画像データの回転角度を記憶する記憶手段、
前記画像データにおいて、所定の数の画素からなるブロックにより構成されるタイルごとに、圧縮することによって得られた前記ブロックにおける色の配置の情報と、前記色の配置に対応する色情報と、前記画像データにおける当該タイルの位置の情報とを保持する保持手段、
前記記憶手段にて記憶した当該画像データの回転角度に応じて前記ブロックにおける色の配置を変換し、変換された色の配置、配置に対応する色情報、及び前記タイルの位置の情報から回転後の画像データを形成する回転手段
として機能させるためのプログラム。
【請求項１３】
コンピュータを、
画像データの回転角度を記憶する記憶手段、
前記画像データにおいて、所定の数の画素からなるブロックにより構成されるタイルごとに、圧縮することによって得られた前記ブロックにおける色の配置の情報と、前記色の配置に対応する色情報と、前記画像データにおける当該タイルの位置の情報とを保持する保持手段、
前記画像データの回転角度に応じた回転前と回転後との色の配置に対応する位置情報を保持する回転位置保持手段、
前記回転位置保持手段にて保持する位置情報に応じて回転後の対応する色の配置と色情報とを用いて回転後の画像データを形成する回転手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を所定のブロック単位に圧縮する画像データ圧縮処理、当該ブロック単位に圧縮されたデータへの画像処理、および画像データへ復元処理を行う画像処理装置、画像処理方法、及びプログラムに関する。特に、圧縮されたデータの復元時の回転処理に関する。
【背景技術】
【０００２】
従来、高解像度のカラー画像への需要は高く、それらの高画質化への要望へ応えるべくデジタル複合機では、１２００ｄｐｉ（ｄｏｔｓ  ｐｅｒ  ｉｎｃｈ）やそれを超える解像度の画像を扱う事が多くなってきている。デジタル複合機に限らずこれら画像を扱う画像処理装置（デジタルカメラやファクシミリ装置）では、メモリ／ハードディスク量の節約や、それらへの書き込み時間を短縮するために、カラー画像データの圧縮を行い、低コスト化や高速化を実現している。従来、カラー静止画像の圧縮方式には、離散コサイン変換を利用したＪＰＥＧ方式や、Ｗａｂｅｌｅｔ変換を利用した方式が多く使われている。
【０００３】
高解像度化が進むにつれて回転処理に代表される画像処理を必要とする画素数が飛躍的に増えその処理負荷が増大しているという課題もある。例えば６００ｄｐｉから１２００ｄｐｉに解像度が倍になることで処理すべき画素数は４倍になる。前述した画像圧縮を用いた場合はその画素データを参照し、その画素データを変換しようとすると圧縮データの復号処理が必要になってくる。つまり圧縮データのままで回転処理に代表される画像処理を行う事は出来ず、必ず復号処理が必要になり、高解像度データ全ての画素に対して画素単位に処理を行う必要が出てしまい、処理時間の増大をまねくこととなる。
【０００４】
符号化された画像を復号時に回転させる画像符号化装置として、特許文献１がある。特許文献１に記載の画像符号化装置によれば、画像をＭ×Ｎ画素のブロックに分割・可変長符号化し、画像のブロック単位の可変長符号ごとに符号長を示す符号情報と格納される先頭アドレスを付加する。復号時に９０°、１８０°、２７０°の回転をさせる場合ブロックの読み出し順序を変えている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２７１７９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の画像符号化装置では、復号してバッファに格納しバンドメモリに転送する際に各ブロック内の画像を回転させるので、高速演算器又は専用ハードウェアが必要なうえバッファ用のメモリが必要になり、高価になってしまう。さらに、圧縮されたデータを復号した後、回転を行うため、高解像度画像の処理には時間が掛かってしまう。
【０００７】
本発明は、このような問題を鑑みてなされたもので、その目的とするところは、圧縮データの状態で回転処理を容易に行うことで、安価でかつ高解像度画像でも処理時間が短い画像処理装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明は以下の構成を有する。入力された画像データを圧縮された状態で回転可能とする画像処理装置であって、前記画像データの回転角度を記憶する記憶手段と、前記画像データにおいて、所定の数の画素からなるブロックにより構成されるタイルごとに、圧縮することによって得られた前記ブロックにおける色の配置の情報と、前記色の配置に対応する色情報と、前記画像データにおける当該タイルの位置の情報とを保持する保持手段と、前記記憶手段にて記憶した当該画像データの回転角度に応じて前記ブロックにおける色の配置を変換し、変換された色の配置、配置に対応する色情報、及び前記タイルの位置の情報から回転後の画像データを形成する回転手段とを有する。
【発明の効果】
【０００９】
本発明によれば、安価でかつ高解像度画像でも処理時間が短い回転画像処理を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係る画像処理装置の全体ブロック図。
【図２】図１におけるコントローラのブロック図。
【図３】本実施形態に係る画像を分割した際のブロックのパターンを示す図。
【図４】本実施形態に係るブロックのパターンとその識別子を示す図。
【図５】第一の実施形態に係る画像圧縮のフローを示す図。
【図６】本実施形態に係るブロックのパターンのフラグへの変換を示す図。
【図７】第一の実施形態に係る圧縮処理に対する入力と出力の関係を示す図。
【図８】第一の実施形態に係るページとタイルとブロックの関係を示す図。
【図９】本実施形態に係るパケットの構成およびヘッダの構成を示す図。
【図１０】本実施形態に係るパケット管理テーブルの例を示す図。
【図１１】第一の実施形態に係る圧縮データのメモリ空間上でのレイアウトを示す図。
【図１２】第一の実施形態に係る画像展開／回転部の動作の概略フローを示す図。
【図１３】第一の実施形態に係るコントローラの動作のフローを示す図。
【図１４】本実施形態に係るパケットの構成およびヘッダの構成を示す図。
【図１５】本実施形態に係るパケット管理テーブルの例を示す図。
【図１６】本実施形態に係るパケットの配置の概略図。
【図１７】第一の実施形態に係る画像展開／回転部の動作の詳細フローを示す図。
【図１８】本実施形態に係るブロックの読み出し順序を示す図。
【図１９】本実施形態に係るパケット内のデータの読み出し順序を示す図。
【図２０】本実施形態に係る回転終了後の全体イメージ図。
【図２１】第二の実施形態に係る回転時のパターンフラグと第１色位置の関係を示す図。
【図２２】第二の実施形態に係る画像展開／回転部の動作の詳細フローを示す図。
【発明を実施するための形態】
【００１１】
＜第一の実施形態＞
以下、本発明を実施するための最良の形態について図面を用いて説明する。図１に、本発明の一実施形態としての画像処理装置の全体ブロック図を示す。本発明の実施形態における画像処理装置はスキャン、プリント、コピーを行うＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎａｌ  Ｐｒｉｎｔｅｒ）を想定している。画像処理装置は、コントローラ１０１、スキャナ１０２、プリンタ１０３、通信ＩＦ１０４、メモリ１０５から構成されている。コントローラ１０１は、画像処理装置全体の制御を司る部分である。コントローラ１０１はスキャナ１０２やプリンタ１０３をはじめとする各ブロックと電気的に接続されており、高度な機能を実現する為の制御を行っている。詳細については後述する。
【００１２】
スキャナ１０２は原稿画像を光学的に読み取って電気的な画像信号に変換するブロックであり、密着型イメージセンサ（不図示）、読み取り駆動部（不図示）、読み取り点灯制御部（不図示）等により構成される。読み取り駆動部によって搬送される密着型イメージセンサによって原稿全体がスキャンされる際、読み取り点灯制御部によって密着型イメージセンサ内部のＬＥＤが点灯制御される。同時に、密着型イメージセンサ内部のフォトセンサが原稿画像を光学的に読み取って、電気的な画像データに変換する。プリンタ１０３は電気的な画像信号を記録紙上に可視像としてプリントするブロックであり、レーザビームプリンタやインクジェットプリンタにより構成される。通信ＩＦ１０４は外部機器とのデータの送受を行うブロックであり、インターネット網やＬＡＮに接続したり、公衆電話回線に接続してＦＡＸ通信をおこなったり、ＵＳＢインタフェースによりＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）と接続する。メモリ１０５は、例えばＤＤＲ−ＳＤＲＡＭやＨＤＤなどのメモリデバイスであり、画像データを一時的に格納するだけでなく、画像処理装置の機能を実現する為にコントローラ部が使用する制御プログラムやデータなどを格納する。
【００１３】
図２にコントローラ１０１のブロック図を示す。コントローラ１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１やスキャナ用画像処理部２１１、画像圧縮部２１２、パケット生成部２１３、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２１４、２２１、パケット展開部２２２、画像展開／回転部２２３、プリント用画像処理部２２４を含む。以下、各部の概略を説明する。ＣＰＵ２０１はコントローラ部全体を制御する。スキャナ用画像処理部２１１はスキャナ１０２が読み込んだ画像データに対して、シェーディング補正等を施し、ＭＴＦ補正、色変換処理、フィルタ処理、ガンマ処理等の各種画像処理を行う。その後、画像圧縮部２１２へ画像データを転送する。
【００１４】
続いて、画像圧縮部２１２の詳細に関して説明を行う。まずページ単位のスキャナ用画像処理部２１１から受信した画像データから２×２画素のブロックを抽出し、そのブロック単位でデータの圧縮を行う。なお、２ｘ２画素のブロックを最小単位として説明を進めるが、これに限るものではなく、必要に応じてブロックのサイズを変更してもよい。その際、以下で述べるデータのサイズ等は処理するブロックのサイズに応じて適時調整することとなる。
【００１５】
［色パターン］
処理の説明の前に、２×２の４画素データ中に占める色の種類数である色数に応じて発生する組み合わせについて述べる。ここではブロックにおける画素数が４画素であるため、ブロック内に占める色数は最大４色になり、ブロック内では１〜４色の組み合わせしか存在しない。それら４色がとりうる組み合わせ（パターン）について図３を使って説明する。まずブロック内が１色の場合、４画素が同色で構成されている事になるので、その組み合わせは１通りである。次にブロック内が２色の場合を考える。２色が４画素内へレイアウトされる場合の数は、左上の画素を第１色、他方を第２色として考えると、左上以外残りの３画素へ第１色もしくは第２色が入るので、４画素同色の場合を除くと、全部で７通りの組み合わせが考えられる。次にブロック内が３色の場合を考える。３色が４画素内へレイアウトされる場合の数は、３色のうち１色だけ２度使われる場合の数と言い換える事が可能で、４画素の座標のうち、２画素が同じ色になる場合の数を求めればよい。つまり３色の場合の数は、４つの座標から２つの座標を取る組み合わせとなり、全部で６通りとなる。最後にブロック内が４色の場合は１色の場合と同様１パターンしか存在しない。これら１〜４色すべての場合の数を合計すると全部で１５通りのパターンが考えられる。これらすべてのパターンを識別するためにフラグを対応付けて付与する事を考えると、データ量としては４ｂｉｔ必要となる。図示すると図４のようになり、以降これらのパターンに対応付けられたフラグをパターンフラグと呼ぶ。
【００１６】
［画像圧縮処理］
上記のように２×２画素の取りうる組み合わせを踏まえて、画像圧縮部２１２にて行われる処理フローを、図５を用いて説明する。なお本実施形態において、入力としては、例えば色情報としてＲＧＢ（Ｒｅｄ，Ｇｒｅｅｎ，Ｂｌｕｅ）それぞれ８ｂｉｔの２５６階調を有しており、またデータとしては８ｂｉｔデータの点順次で１画素あたり２４ｂｉｔ画像として説明を行う。しかし、この設定に限定されるものではなく、ｂｉｔ数に関しては必要に応じて変更してもよい。この場合、以下で説明するデータのサイズも異なってくることはいうまでも無い。
【００１７】
まず２×２画素に分割されたブロックを入力する（Ｓ１０１）。そして、入力されたブロック内全ての２画素の組み合わせに対して、当該画素が有する２４ｂｉｔのコンペアを取る（Ｓ１０２）。このコンペアを取った結果、全ビット一致していた場合（すなわち、同一の画素値を有する場合）は１を出力し、不一致の場合は０を出力する。図６において、より具体的に示す。２×２画素からなるブロックの各画素において左上、右上、左下、右下の順に座標１、２、３、４とすると、２画素の組は、１−２、１−３、１−４、２−３、２−４、３−４の全部で６通りある。そのため、６回コンペアを取る必要があり、結果として６ｂｉｔが出力される。例えば全画素同色の場合には、全てのコンペア結果が１を出力し、これに対し、４画素それぞれが異なる画素値を有している場合には、全てのコンペア結果が０を出力する。前述の通り、４画素で色の一致から出現しうるパターン数は１５通りであるため、その６ｂｉｔのコンペア結果に対して４ｂｉｔのパターンフラグを割り当てて変換することが可能である（Ｓ１０３）。
【００１８】
４ｂｉｔのパターンフラグへ変換した後、続いて４画素内で出現した色数および色画素データ（色情報）を抽出する（Ｓ１０４）。これにより、色取得、及び配置取得を行う。パターンフラグから、２ｘ２画素のブロックにおける左上の画素の色を第１色とした場合の第２色以降がどの位置にあるかを求める事が出来る。なお、本実施形態においては、ブロックに含まれる画素数が４であるため、ブロックに含まれる色の数も最大４色となる。ブロックを構成する画素数が増加すれば、ブロックに含まれる最大色数も変化することとなる。
【００１９】
ここで図７を参照して説明を行う。Ｓ１０４にて４画素内が１色で構成されていることが確定した場合には、Ｓ１０５にて1色（２色目以降は存在しない）であると判定する。なお、Ｓ１０５においては、抽出された色数が所定の数以上か否かを判定している（ここでは、単数色か否かを判定している）。そして、パターンフラグ４ｂｉｔと１色目の２４ｂｉｔを出力する（Ｓ１０６）。同様に、Ｓ１０４にて４画素内が２色で構成されていることが確定した場合には、Ｓ１０７にて２色であると判定する。そして、２色目の画素値を有する画素の座標をパターンフラグより算出し、パターンフラグ４ｂｉｔと２色分の画素値４８ｂｉｔを出力する（Ｓ１０８）。また、３色、４色で構成されている場合も同様の処理を行う（Ｓ１０９、Ｓ１１０、Ｓ１１１）。この時、ブロック内の画素の座標（左上、右上、左下、右下の順に１、２、３、４）の順にこれまで出現していなかった色データを記憶する。
【００２０】
このように、２×２画素からなるブロック内の４色９６ｂｉｔの入力データを４ｂｉｔのパターンフラグとそこに存在する色数分だけ画素値を取得し出力することで、比較的簡単な処理で出力データ量を削減することが可能になる。またパターンフラグを参照することで、そのブロック内の色数を特定することが可能になる。さらには、パターンフラグと色の記憶順により、ブロックに含まれる各画素が有する画素値を特定することができる。この処理を画像ブロック全てに対して行うことで、画像全面のデータ圧縮が可能になる。
【００２１】
［ヘッダ情報］
パケット生成部２１３は、画像圧縮部２１２により圧縮された画像データを所定の大きさの単位（本実施形態では３２×３２画素とし、この単位をタイルと呼ぶ）で読み出し、タイルに所定の固定長のヘッダ情報を付与する。図８にタイルとブロックとの関係を示す。
【００２２】
ヘッダにはページＩＤ、タイル座標、色空間、画素データのビット数、タイルのデータサイズ、回転角度情報等の情報を記述する。図９にタイルに付与されたヘッダ情報の構成例を示す。ページＩＤには、ページ単位にユニークなＩＤ番号を付与する。タイル座標には、そのタイルがページ単位のラスタ画像上どの位置にあるかを記述してある。ここには、Ｘ座標とＹ座標と２次元で座標が示されているとする。色空間には、そのタイルがＲＧＢ画像なのかＣＭＹＫ画像なのかＧＲＡＹ−ＳＣＡＬＥ画像なのかの識別子が記述されている。画素データのビット数には、タイル内の１画素あたりのビット長が書かれている。データサイズには、そのタイルの第２、３、４色画素データのデータサイズがＢｙｔｅ単位で記述されている。回転角度情報には、画像の回転角度の情報が含まれており、時計回りに０°、９０°、１８０°、２７０°のいずれかの角度になる。なお、ヘッダ情報はこの構成に限定されるものではない。また、回転角度の情報は、回転する単位（例えば、ページ単位、タイル単位）にて保持してもよい。
【００２３】
以後このタイルの情報とヘッダ情報とを含めたデータの単位をパケットと呼ぶことにする。パケットのデータ構造の作り方について述べる。画像圧縮部２１２で生成されるデータは大きくパターンフラグ・第１色画素データ・第２、３、４色画素データの３つのデータ種に分類可能である。各データのサイズは、タイルの単位である３２×３２画素のＲＧＢ各色８ビット画像の場合、以下のようになる。
【００２４】
パターンフラグ（各ブロック４ｂｉｔ）：４×１６×１６／８＝１２８Ｂｙｔｅ
第１色のデータサイズ（各ブロック２４ｂｉｔ）：２４×１６×１６／８＝７６８Ｂｙｔｅ
第２、３、４色のデータサイズ（各ブロック最大７２ｂｉｔ）：最大７２×１６×１６／８＝最大２３０４Ｂｙｔｅ（画像によって異なる）
これらのデータサイズを格納可能な記憶部（不図示）をパケット生成部２１３に用意しておき、データ種ごと領域をまとめて格納する。タイル単位で圧縮処理が終了しデータサイズが確定した後ヘッダを付加することで、図９のようなパケットのデータ構造を作ることができる。
【００２５】
ここで第１色画素データ以降のメモリ領域に関しては、画素データがピクセル単位で量子化や符号化されることなく格納されている。つまり、１画素入力、１画素出力で完結する色処理、例えばＬＵＴを用いた色変換や、ガンマ補正処理、行列演算を用いた色空間変換処理等は特にパターンフラグを参照する必要はなく、直接処理を行うことが可能になる。このように圧縮データを直接用いることで、メモリバス上の転送効率が向上し、かつオリジナルの画像に対して少ない画素数のデータに対して処理することになるので、高速処理が可能になる。
【００２６】
また前述のように（図９のように）画像データをメモリ上へ格納することで、第１色画素データ領域は、画像を２×２画素単位における左上の座標の画素をサンプリングした画像結果がメモリ上に連続して存在することになる。本実施形態で説明している画像処理装置においては、蓄積したＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）画像データやスキャンの画像データのプレビュー表示や、前述したネットワーク送信などの機能も有している。例えばプリント解像度が６００ｄｐｉであったとしてもプレビューや送信時にそこまでの解像度は通常必要とされず、３００ｄｐｉやそれ以下で十分な場合が多い。こういった縮小データを得る必要がある場合は、パターンフラグや第２、３、４色を用いず、第１色の画像データのみ扱うことで、簡単に半分のサイズのラスタ画像を得る事が出来る。
【００２７】
タイルの座標とサイズ、パケットが格納されているアドレスをリストとして列挙し、パケット管理テーブルとして作成することで、任意のパケットへのアクセスが可能になる。パケット管理テーブルの例を図１０に示す。このようにしてタイル単位で画像をパケットとしてメモリへ書き出すと図１１のようにパケット毎にサイズが異なり、それぞれのパケットの先頭アドレスがとびとびになってしまう。そのためパケット管理テーブルを用いて、任意の座標のパケットに対する先頭アドレスを探索する。このようにタイル単位に任意のデータへのアクセスが可能になるので、画像の部分的な処理が可能になる。
【００２８】
さらに、パケット生成部２１３は生成したパケットをＤＭＡＣ２１４に転送する。ＤＭＡＣ２１４、２２１は、画像データのメモリ１０６からの転送を制御するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能を有している。パケット展開部２２２は、ＤＭＡＣ２２１からパケットを受信する。さらにパケットのヘッダから取得した回転角度情報とパターンフラグ・第１色画素データ・第２、３、４色画素データそれぞれを画像展開／回転部２２３に送出する。
【００２９】
ここで画像展開／回転部２２３における処理の流れに関して説明する。画像展開／回転部２２３では前述したようなパターンフラグ、画素データに基づいてラスタ画像データへ戻す処理を行う。図１２に画像展開／回転部２２３で行われる処理のフローチャートを示す。画像展開／回転部２２３ではまずパケット展開部２２２から転送されたデータのうち、回転角度情報を読み出す（Ｓ２０１）。そして、読み出した回転角度に応じたブロック読み出し順序を決定する（Ｓ２０２）。さらに、ブロック読み出し順序と同じ順序でパターンフラグを読み出す（Ｓ２０３）。さらに、回転角度とパターンフラグから第１色の位置を判断する（Ｓ２０４）。そして、回転角度情報に応じて第１色画素データを読み出す（Ｓ２０５）。続いて、回転角度とパターンフラグから第２，３，４色の位置を判断する（Ｓ２０６）。そして、色数に応じた第２、３、４色画素データを読み出す（Ｓ２０７）。さらに、パターンフラグにより定まる色の配置と第１色画素の位置に応じて画素データを配置する（Ｓ２０８）。このようにすることにより、２×２画素からなるブロックを展開、そして復号する。より具体的な処理方法に関しては図１７等を用いて後述する。
【００３０】
プリント用画像処理部２２４はスキャナ用画像処理された画像データに対して２値化処理、中間調処理、そしてＲＧＢｔｏＣＭＹＫ等色変換処理等を行い中間調画像に変換する。さらに、記録解像度にあわせて解像度変換し、画像の変倍、スムージング、濃度補正等の各種画像処理を施して高精細な画像データに変換し、レーザビームプリンタ等に出力する。
【００３１】
［画像処理フロー］
図１３は、第一の実施形態における画像処理装置の動作を示すフローチャートである。第一の実施形態では、画像データがスキャナから読み込まれて時計回りに９０°の回転処理が行われプリンタに出力されるまでを述べる。特に画像展開／回転部２２３の動作に関して詳述する。ここでの画像データのサイズは、例として６４×９６画素、パケット生成時のタイルの大きさは３２×３２画素とする。スキャナ１０２においてＲＧＢ３色の画像データの読み取りを行う（Ｓ３０１）。次に、コントローラ１０１のスキャナ用画像処理部２１１にてシェーディング処理やフィルタ処理等の画像処理を行う（Ｓ３０２）。そして、画像圧縮部２１２にて画像圧縮処理を行う（Ｓ３０３）。その圧縮データをパケット生成部２１３にてパケットに変換して生成する（Ｓ３０４）。その後、ＤＭＡＣ２１４を介してメモリ１０５へ格納して保持する（Ｓ３０５）。図１４（Ａ）にタイル座標（０，０）で表されるパケットのデータ構造を示す。メモリへの格納後、ＣＰＵ２０１によりパケット管理テーブルの更新が行われる（Ｓ３０６）。ここで、更新される前のパケット管理テーブルを図１５（Ａ）に、そして、パケットの配置概略図を図１６（Ａ）に示す。また、更新された後の時計回りに９０°回転したパケット管理テーブルを図１５（Ｂ）に、そして、パケットの配置概略図を図１６（Ｂ）に示す。
【００３２】
Ｓ３０６にてパケット管理テーブルを更新した後、ＣＰＵ２０１により全てのパケットのヘッダが有する回転角度情報を０°から９０°に書き換える（Ｓ３０７）。図１４（Ｂ）にパケット管理テーブルの更新とヘッダ内の回転角度情報の書き換えが終了した時点における、タイル座標（０，０）で表されるパケットのデータ構造を示す。次に全てのパケットの回転角度情報が書き換えられているか判定し（Ｓ３０８）、書き換えられていればパケット管理テーブルに従って、メモリ１０５に格納され、保持しているパケットデータを、ＤＭＡＣ２２１を介して読み込む（Ｓ３０９）。具体的には、更新されたパケット管理テーブルのパケット（０，０）から順番にアドレスを指定し読み出しを行う。なお、Ｓ３０８にて全ての書き換えが終了していないと判定された場合には、Ｓ３０７へ戻り、回転角度情報の書き換えが全てのブロックへ適用されるまで繰り返される。次に、パケット展開部２２２でパケットの展開が行われる（Ｓ３１０）。さらに、画像展開／回転部２２３にてラスタ画像データへ展開しながら回転を行う（Ｓ３１１）。ラスタの画像データをプリント用画像処理部２２４に入力し、そこでディザ法や誤差拡散法による面積階調処理を行う（Ｓ３１２）。これにより、画像データを形成し、プリンタ１０３へ出力する（Ｓ３１３）。
【００３３】
［画像回転／回転処理］
続いて、画像展開／回転部２２３における処理（Ｓ３１１）の詳細について述べる。図１７は第一の実施形態の図１３におけるＳ３１１の詳細を示したフローチャートである。まず、画像展開／回転部２２３は、回転角度情報を読み出す（Ｓ４０１）。次に、回転角度情報に応じたブロックの読み出し順序を決定する（Ｓ４０２）。タイル内のブロックにＸ座標とＹ座標で示される二次元のブロック座標を与えると、回転角度０°では、ブロック座標（０，０）から（１，０）、（２，０）・・・の順でブロックを読み出し、処理する。図１８（Ａ）に、回転角度０°の時のブロック読み出し順序を示す。一方、回転角度９０°の場合、ブロック座標（０，１５）から（０，１４）、（０，１３）・・・の順でブロックを読み出し、処理する。図１８（Ｂ）に、回転角度９０°の時のブロック読み出し順序を示す。次に、Ｓ４０２で決定したブロック読み出し順序に従い、パターンフラグを読み出す（Ｓ４０３）。図１９（Ａ）に回転角度０°におけるメモリ配置されたパケットのパターンフラグの読み出し順序を示す。図１９（Ｂ）に回転角度９０°におけるメモリ配置されたパケットのパターンフラグの読み出し順序を示す。次に、回転角度情報とパターンフラグより第１色がブロックのどの位置に該当するかを判断する（Ｓ４０４）。回転角度が０°の場合、第１色の位置はブロックの左上画素であるため、回転角度が９０°では、第１色の位置はブロックの右上画素になる。
【００３４】
次に、回転角度情報に応じたブロックの第１色画素データを読み出す（Ｓ４０５）。図１９（Ａ）に回転角度０°の時、そして、図１９（Ｂ）に回転角度９０°の時のメモリ配置されたパケットの第１色画素データの読み出し順序を示す。続いて、Ｓ４０３で読み出したパターンフラグにより、処理中のブロックに第２，３，４色が存在するか判定し（Ｓ４０６）、存在する場合、Ｓ４０４で判断した第１色の位置とパターンフラグより第２，３，４色の位置を判断する（Ｓ４０７）。次に、回転角度情報とパターンフラグに応じてブロックの第２，３，４色画素データを読み出す（Ｓ４０８）。パターンフラグによっては、第２，３，４色画素データが存在しないブロックもあるため、パターンフラグを用いて第２，３，４色画素データを読み出すか否かを判断する必要がある。図１９（Ａ）に回転角度０°の時、図１９（Ｂ）に回転角度９０°の時の、メモリ配置されたパケットの第２，３，４色画素データの読み出し順序を示す。
【００３５】
次に、Ｓ４０４で判断した第１色の位置にＳ４０５で読み出した第１色画素データを、Ｓ４０７で判断した第２，３，４色の位置にＳ４０８で読み出した第２，３，４色画素データを配置する（Ｓ４０９）。Ｓ４０６にて第２，３，４色が存在しないと判定された場合は、Ｓ４０４で判断した第１色の位置にＳ４０５で読み出した第１色画素データで配置を行う（Ｓ４０９）。パターンフラグの値が“Ａ”の場合（すなわち、色数は第１から第３までの３色）の具体例を示す。回転角度が９０°では、第１色の位置は右上画素であり、右下、左上、左下の順で第２，第３の色データは格納されている。そのため、右下が第２色・左上と左下が第３色となる。以上述べた原理により、画素データの配置を行う。全てのブロックに対して処理が終了したかを判定し（Ｓ４０９）、終了していればデータをプリント用画像処理部２２４に転送する。もちろん、各ブロックの画像展開／回転終了毎にプリント用画像処理部２２４に転送してもよい。Ｓ４１０にて全てのブロックに対する処理が終了していないと判定された場合には、Ｓ４０３へ戻り、全てのブロックに対して本処理が終了するまで繰り返す。図２０（Ａ）に回転処理を終えた画像の全体図を示す。
【００３６】
以上説明してきた構成をとることで、比較的単純な圧縮方式を用い、圧縮された状態で画像データを回転可能となる。これにより、展開した後の画像データに対し回転処理を適用するよりも高速演算器もしくは専用ハードウェアやバッファ用のメモリが必要とする量が削減でき、安価な画像処理装置の提供が可能である。バッファ用のメモリを例に取り具体的な効果を述べる。バッファ用のメモリの容量と処理パフォーマンスは比例関係にあるため、例えばＲＧＢ各８ビット、３２×３２画素のバッファ用のメモリを用意した場合では、３２×３２×８×３＝２４ＫＢｙｔｅのメモリが削減できる。なお本実施形態では２×２画素からなるブロックを最小単位として記述していたが、これに限るものではない。また圧縮の説明の際画像データとしてＲＧＢ８ｂｉｔを例として説明していたが、ＣＭＹＫの色空間を取るものや、ＧＲＡＹスケールのデータ、また８ｂｉｔ以外の画素値をとるものでも良い。
【００３７】
＜第二の実施形態＞
以下、添付図面を参照して、本発明の第二の実施形態について詳細に説明する。本実施形態では画像展開／回転部の別実施形態を説明する。本発明の第二の実施形態における画像処理装置の構成は図１と、コントローラ１０１の構成は図２と同一である。ただし、画像展開／回転部２２３内に更新前のパターンフラグと第１色の位置と、回転角度に応じて更新したパターンフラグと第１色の位置と第２，３，４色の位置の情報を記憶する手段（回転位置保持手段）を設けている。そこで図２１に回転角度９０°、１８０°、２７０°の時の回転前と回転後の位置関係を示す。ここで図２１にて示した回転前と回転後の情報を位置情報と呼ぶ。本実施形態では、更新した後の色の位置はパターンフラグを参照した際の第１色から第４色まで色のうち、いずれの位置と等しいかを示している。
【００３８】
本実施形態における画像処理装置の動作を示すフローチャートは、図１３とほぼ同一である。第二の実施形態では、画像データがスキャナから読み込まれて時計回りに２７０°の回転処理が行われプリンタに出力されるまでを述べる。特に画像展開／回転部２２３の動作に関して詳述する。ここで、画像データのサイズは６４×９６画素、パケット生成時のタイルの大きさは３２×３２画素とする。図１３のフローチャートにおいて、処理内容に第一の実施形態との差分がある。差分として、Ｓ３０６におけるＣＰＵ２０１によるパケット管理テーブルの更新と、Ｓ３０７におけるＣＰＵ２０１による全てのパケットのヘッダの回転角度情報を０°から２７０°への書き換えである。更新された後の時計回りに２７０°回転したパケット管理テーブルを図１５（Ｃ）に、パケットの配置概略図を図１６（Ｃ）に示す。図１４（Ｃ）にパケット管理テーブルの更新とヘッダ内の回転角度情報の書き換えが終了した時点の、タイル座標（０，０）で表されるパケットのデータ構造を示す。第二の実施形態では、時計回りに２７０°回転を行うための、変更が行われる。
【００３９】
［画像展開／回転処理］
以下、画像展開／回転部２２３における処理（Ｓ３１１）の詳細について述べる。図２２は第二の実施形態の図１３におけるＳ３１１に対応する処理の詳細を示したフローチャートである。まず、画像展開／回転部２２３は、回転角度情報を読み出す（Ｓ５０１）。次に、回転角度情報に応じたブロックの読み出し順序を決定する（Ｓ５０２）。回転角度２７０°の場合、ブロック座標（１５，０）から（１５，１）、（１５，２）・・・の順でブロックを読み出し、処理する。図１８（Ｃ）に、回転角度２７０°の時のブロック読み出し順序を示す。次に、Ｓ４０２で決定したブロック読み出し順序に従い、パターンフラグを読み出す（Ｓ５０３）。図１９（Ｃ）に回転角度２７０°におけるメモリ配置されたパケットのパターンフラグの読み出し順序を示す。次に、回転角度に応じてパターンフラグと第１色の位置と第２，３，４色の位置を更新する（Ｓ５０４）。次に、回転角度情報に応じたブロックの第１色画素データを読み出す（Ｓ５０５）。続いて、Ｓ５０４で更新したパターンフラグより、処理中のブロックに第２，３，４色が存在するか否かを判定する（Ｓ５０６）。第２，３，４色が存在する場合、第２，３，４色画素データを読み出す（Ｓ５０７）。パターンフラグによっては、第２，３，４色画素データが存在しないブロックもあるため、パターンフラグを用いて第２，３，４色画素データを読み出すか否かを判定する必要がある。
【００４０】
図１９（Ｃ）に回転角度２７０°の時のメモリ配置されたパケットの第２，３，４色画素データの読み出し順序を示す。次に、Ｓ５０４で更新した第１色の位置と第２，３，４色の位置からＳ５０５で読み出した第１色画素データとＳ５０８で読み出した第２，３，４色画素データを配置する（Ｓ５０８）。Ｓ５０６にて第２，３，４色が存在しないと判定された場合は、Ｓ５０４で更新したパターンフラグと第１色の位置にＳ５０５で読み出した第１色画素データで配置を行う（Ｓ５０８）。パターンフラグの値が“Ｂ”の場合（すなわち、色数は第１から第３までの３色）の具体例を示す。図２１に示すように、パターンフラグが“Ｂ”で回転角度が２７０°の場合、回転後のパターンフラグは９であり、第１色の位置は左下に位置する画素である。さらに、左上、右下、右上の順で第２，３，４色データは格納されているため、左上と右下が第２色となり、右上が第３色となる。以上述べた方法により、位置情報を用いて画素データの配置を行う。全てのブロックに対して処理が終了したかを判定し（Ｓ５０９）、終了していればデータをプリント用画像処理部２２４に転送する。もちろん、各ブロックの画像展開／回転終了毎にプリント用画像処理部２２４に転送してもよい。Ｓ５０９にて全てのブロックが終了していないと判定された場合には、Ｓ５０３へ戻り、全てのブロックに対し本処理が終了するまで処理を繰り返す。図２０（Ｂ）に回転処理を終えた画像の全体図を示す。
【００４１】
なお本実施形態では２×２画素からなるブロックを最小単位として記述していたが、これに限るものではない。また圧縮の説明の際画像データとしてＲＧＢ８ｂｉｔを例として説明していたが、ＣＭＹＫの色空間を取るものや、ＧＲＡＹスケールのデータ、また８ｂｉｔ以外の画素値をとるものでも良い。また、ブロックのサイズを変更した場合には、フラグパターンや扱う色の数も増減することは言うまでも無い。
【００４２】
以上説明してきた構成をとることで、比較的単純な圧縮方式を用い、圧縮された状態で画像データを回転可能となる。これにより、展開した後の画像データに対し回転処理を適用するよりも高速演算器もしくは専用ハードウェアやバッファ用のメモリが必要とする量が削減でき、安価な画像処理装置の提供が可能である。
【００４３】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005501041.tif 000002
【図２】
0005501041.tif 000003
【図３】
0005501041.tif 000004
【図４】
0005501041.tif 000005
【図５】
0005501041.tif 000006
【図６】
0005501041.tif 000007
【図７】
0005501041.tif 000008
【図８】
0005501041.tif 000009
【図９】
0005501041.tif 000010
【図１０】
0005501041.tif 000011
【図１１】
0005501041.tif 000012
【図１２】
0005501041.tif 000013
【図１３】
0005501041.tif 000014
【図１４】
0005501041.tif 000015
【図１５】
0005501041.tif 000016
【図１６】
0005501041.tif 000017
【図１７】
0005501041.tif 000018
【図１８】
0005501041.tif 000019
【図１９】
0005501041.tif 000020
【図２０】
0005501041.tif 000021
【図２１】
0005501041.tif 000022
【図２２】
0005501041.tif 000023