(57)【特許請求の範囲】
【請求項１】
画像データを記憶する記憶部と、
前記画像データを正方形領域単位でブロック化して固定長圧縮する手段と、前記画像データの属性情報を同じブロック単位でブロック化する手段と、前記正方形領域単位のブロックで固定長圧縮された前記画像データ及び属性情報を１ブロックごとにパッキングして前記記憶部に格納する手段とを備えた２次元ブロックデータフォーマット変換部と、
前記画像データをライン方向の複数画素単位でブロック化して固定長圧縮する手段と、前記画像データの属性情報を同じライン方向のブロック単位でブロック化する手段と、前記ライン方向の複数画素単位のブロックで固定長圧縮された前記画像データ及び属性情報を１ブロックごとにパッキングして前記記憶部に格納する手段とを備えた１次元ブロックデータフォーマット変換部と、
前記２次元ブロックデータフォーマット変換部により前記記憶部に格納された主走査方向及び副走査方向の複数の正方形領域単位ブロックにより構成されるブロック群における各正方形領域単位ブロックの向きを固定したまま前記ブロック群を90°の整数倍回転させる画像回転部と、
前記１次元ブロックデータフォーマット変換部により前記記憶部に格納されたパッキングデータをライン方向のブロック単位で復号してラスターデータに変換する伸張部と
を備えたことを特徴とする画像処理装置。
【請求項２】
固定長圧縮画像と属性情報が正方形領域単位ブロックごとにパッキングされているデータについて正方形領域単位ブロック単位に90°回転したアドレスを発生する手段と、回転したアドレスに従って一度のメモリリードアクセスで正方形領域単位ブロックを前記記憶部から読み出す手段と、読み出した１ブロックのデータを回転する画像回転器と、回転した１ブロックのデータをラスター順に前記記憶部に書き込む手段とを備えたことを特徴とする請求項１記載の画像処理装置。
【請求項３】
固定長圧縮画像と属性情報が正方形領域単位ブロックごとにパッキングされているデータについて正方形領域単位ブロック単位にデータをラスター順に前記記憶部から読み出す手段と、読み出した１ブロックのデータを回転する画像回転器と、ブロック単位に90°回転したアドレスを発生する手段と、回転した正方形領域単位ブロックを、回転したアドレスに従って一度のメモリライトアクセスで前記記憶部に書き込む手段とを備えたことを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記画像データは、非圧縮画像データであることを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記画像データは、可変長圧縮画像データまたは固定長圧縮画像データであることを特徴とする請求項１に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関し、特に、ブロック単位で固定長圧縮した画像情報と属性情報をパッキングして、画像データを高速に処理する画像処理装置に関する。
【背景技術】
【０００２】
画像のデータフォーマットには、JPEG等の標準の可変長圧縮フォーマットが存在する。それらは、固定長圧縮方式より、伸張後の画像劣化が少ないことが多い。したがって、配信に用いられるか紙出力されるか分からない画像を、とりあえず圧縮して保存するには、JPEGの様な可変長圧縮フォーマットが適している。この際、属性情報は、画像とは別に保存される。属性情報を可逆圧縮して保存するか、そのまま保存するかは任意である。
【０００３】
画像を回転するためには、例えば、図17（ａ）に示すように、主走査方向８line×副走査方向８画素の画像を、あらかじめパッキング（１回のメモリアクセスで読み出せるように１かたまりにまとめること）しておくと、メモリアクセス回数を減らし、高速な回転処理を行うことができる。１画素が１byte（８bit）で表される場合、８画素だと８byteである。通常、画像を回転処理する場合、８×８画素ずつ回転させるとすると、メモリアクセスは、８byte×８回必要となる。これに対し、あらかじめ８×８画素ずつパッキングされていれば、メモリアクセスは、64byte×１回で済む。メモリは、連続したアドレスであれば、バーストアクセスができるので、図17（ｂ）に示すような８回の２wordバーストアクセスに対し、図17（ｃ）に示すように、１回の16wordバーストアクセスで済む後者のアクセス方法では、転送準備と終了処理が１回ですむので、メモリアクセス時間が短縮される。
【０００４】
バースト転送によりメモリアクセス数を減少させると、メモリアクセス時間が短縮されることの他に、システムとしてみて、他のDMACによるメモリアクセスを邪魔しないで済むというメリットが得られる。１画素の情報量が少なければ少ないほど、このメリットは大きくなる。MFPのように、１画素１bit（CMYK画像）の情報量の場合、32×32画素ずつ回転させるとすると、メモリアクセスは１word（4byte）×32回必要となるが、あらかじめ32×32画素ずつパッキングしてあれば、32word（128byte）×１回のアクセスで済む。
【０００５】
画像を回転することを考慮すると、圧縮方法としては、固定長符号が有利である。固定長符号は、数画素ごとに固定されたビット長に圧縮される。圧縮された後の符号が、ある単位（ブロックと呼ぶ）ごとに決まったビット長になることから、ブロックごとの先頭アドレスを特定できる。したがって、隣のブロック同士に相関の無い固定長符号方式の場合は、必要なブロックのみを取り出すことができる。隣のブロック同士に相関の無い固定長符号の場合は、メモリ上には圧縮した画像を置いたまま、回転に必要なブロックを取得して回転し、再圧縮してメモリに戻すことが可能であり、メモリの使用効率を高めることが可能である。
【０００６】
画像の固定長圧縮には、１lineの数画素を１ブロックとして圧縮する方法と、例えば、図18に示すように、８×８画素を１ブロックとするような、２次元の画像を１ブロックとして圧縮する方法がある。画像を回転するためには、メモリアクセス数が減る分、後者の方が有利である。例えば、特許文献３には、固定長の符号化を行い、かつ90°単位の回転処理が可能な方法が開示されている。可変長符号方式でも、例えば、特許文献１などに開示されている方法のように、ブロックとアドレスの関連を記憶することで、回転を行うことはできる。
【０００７】
ところで、画像情報のうちには、属性情報と呼ばれる画素の色以外の情報がある。例えば、その画素が、写真か文字またはグラフィックか等を表すフラグを、画像処理のためのパラメータとして、画素ごとにもつ場合である。文字と写真を分離する信号という意味で、分離情報または分離信号とも呼ばれる。属性情報は画素ごとに持つが、情報量は、画素ごとに１bitであったり２bitであったりする。この属性情報付き画像のデータフォーマットとしては、一般的に、次の２種類がある。（１）画像は画像で１ファイルとし、属性情報は属性情報で１ファイルとして扱う。（２）１画素に付き１属性情報をセットとして、点順次で並べて扱う。例えば、RGB（24bit）の画像に８bitの属性情報があるとすると、まとめて32bitを１画素として扱う。例えば、特許文献２に開示されている方法のように、画像と属性情報を、ある単位ブロックでパッキングする方法がある。シリアルに入力された画像と属性情報を、直接ブロック単位でパッキングしてパラレル化し、回転処理を行った後、再びシリアルに変換して出力している。これは、ビデオI/Fからのシリアル入力及びシリアル出力を意図しているものである。
【０００８】
画素の色深度情報と属性情報は、その特性が異なるため、圧縮する場合のアルゴリズムは異なる方が効率的である。例えば、RGB画像と文字写真分離情報では、RGBに対してJPEG等の標準圧縮方式が提案されているのに対し、文字写真分離情報は、同じ情報が並ぶため、例えば、ランレングス圧縮等が向いている。また、JPEGは画像を扱うので、人間の目をごまかせれば良いため、量子化の段階でデータの欠落が起こる非可逆性圧縮であるが、分離情報は、可逆圧縮されることが必要である。図19に示すように、文字部分と写真部分は連続しているため、分離情報も同じパターンが繰り返し発生するため、圧縮しやすい。このように、画像と付属情報は、圧縮率や情報の欠落の可否を考慮すると、別々に扱った方が効率的な面があることがわかる。
【０００９】
図20は、画像回転器の従来例の機能ブロック図である。メモリからのリードは、固定長符号画像がｍ wordであり、属性情報がｎ wordである。固定長圧縮画像と属性情報は、別々にａ×ａ画素ずつブロック化されて保存されているので、画像用と属性用の２アクセスで、１ブロックのデータリードを行うことができる。データライトも２アクセス必要である。DMAコントローラは、回転前画像リード用と回転後画像ライト用、及び回転前属性リード用と回転後属性ライト用の４つが必要である。図20中の画像ブロックは、例えば、８×８画素のRGB画像などである。
【００１０】
図21を参照しながら、非圧縮画像を90°回転する従来の方法を説明する。非圧縮画像を90°または270°回転する場合は、メモリへのアクセスを考慮して、通常はいくつかのブロックに分けて回転を行う。例えば、図21に示すように、８画素×８ラインを１ブロックとしてブロックに番号を付ける。回転の順番は、大きく分けて２種類ある。１つ目は、A1ブロック→B1ブロック→C1ブロック・・・、A2ブロック→B2ブロック→C2ブロック・・・、・・・の順で回転を行っていく方法である。これを仮に「回転リード」と呼ぶ。回転後の並びの順番に従って読み出し、通常の順番で書き込む方法である。２つ目は、D1ブロック→D2ブロック→D3ブロック・・・、C1ブロック→C2ブロック→C3ブロック・・・、・・・の順で回転を行っていく方法である。これを仮に「回転ライト」と呼ぶ。通常の順番で読み出し、回転後の並びの順番に従って書き込む方法である。
【００１１】
各ブロックは８ラインで構成されているため、ブロック１つにつき最低８回のメモリリードが必要である。回転リードの場合は、回転後にメモリに書き戻さなくても、ブロック−ラスター変換バッファを用いて、直接ラスター化が可能である。しかし、回転ライトの場合は、それは不可能である。なお、いずれの方法で回転を行う場合でも、画像とは別に属性情報も回転する必要がある。このようにして、画像をブロック単位で回転することができる。圧縮した画像の場合も、同様な方法で回転することができる。以下に、これに関連する従来技術の例をいくつかあげる。
【００１２】
特許文献１に開示された「画像処理装置」は、合成画像を出力する際に使用するバッファメモリ量が小さくて済み、合成画像を作成する処理時間が短くて、さらに、画質の劣化が少ない画像処理装置である。入力された画像データを、画像圧縮伸張部で、ブロック毎に圧縮する。圧縮コードデータを、コードバッファに、ブロック毎に記憶する。コードバッファに記憶された圧縮コードデータを、コードバッファ制御部で、指定された編集モードに応じたブロックの順番で読み出す。画像圧縮伸張部は、コードバッファ制御部によって読み出された圧縮コードデータを伸張する。
【００１３】
特許文献２に開示された「画像情報の複合処理方法」は、画像データビット数より大きいメモリデータバス幅を有効に活用して、メモリ読み書きを高速化し、画像回転角などの選択、設定の自由度を高くし、画像データと対の特徴信号を、その関係を保ったまま回転処理し、回転処理のメモリアドレス制御を簡易化する方法である。シリアル画像データを入力し、画像データの特徴を示す特徴信号を入力し、画像データと特徴信号からなる画像情報を、主走査数×副走査数のブロックパラレルデータに変換する。１アドレスにパラレルデータを記憶する。この記憶手段のデータバス幅に応じて、ブロックサイズを変更する。記憶手段から読み出すパラレルデータを、シリアル画像データと特徴信号に戻す。
【００１４】
特許文献３に開示された「画像圧縮処理装置」は、周波数の高いエッジ部分も画質の良い画像を作成でき、かつラインごと固定された符号量であるため、ラインごとのスタートアドレスを管理するテーブルが必要なく、コストが低く、かつ信頼性の高い画像圧縮処理装置である。複数の固定長符号化手段で、画像データを複数画素のブロック単位に、相異なる符号長に変換する。所定数のブロックで発生する符号長の合計を、符号長合計計算手段で計算する。符号長合計計算手段の出力値を、所定値以下に収めるように、複数の固定長符号化手段の使用割合を制御する。
【特許文献１】特開平10-075345号公報
【特許文献２】特開2002-125118号公報
【特許文献３】特開2003-219188号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかし、従来の圧縮画像の回転方法では、画像と属性情報が別々にパッキングされているため、メモリアクセス回数が多くなり、回転などの画像処理のためのメモリリードライト時間が長くなるという問題がある。
【００１６】
本発明の目的は、上記従来の問題を解決して、画像処理装置において回転処理などを行うために、バースト転送でメモリに対して画像情報が入出力される場合のメモリアクセスバースト数を減らし、メモリアクセス時間を短縮することである。
【課題を解決するための手段】
【００１７】
本発明の画像処理装置は、画像データを記憶する記憶部と、前記画像データを正方形領域単位でブロック化して固定長圧縮する手段と、前記画像データの属性情報を同じブロック単位でブロック化する手段と、前記正方形領域単位のブロックで固定長圧縮された前記画像データ及び属性情報を１ブロックごとにパッキングして前記記憶部に格納する手段とを備えた２次元ブロックデータフォーマット変換部と、前記画像データをライン方向の複数画素単位でブロック化して固定長圧縮する手段と、前記画像データの属性情報を同じライン方向のブロック単位でブロック化する手段と、前記ライン方向の複数画素単位のブロックで固定長圧縮された前記画像データ及び属性情報を１ブロックごとにパッキングして前記記憶部に格納する手段とを備えた１次元ブロックデータフォーマット変換部と、前記２次元ブロックデータフォーマット変換部により前記記憶部に格納された主走査方向及び副走査方向の複数の正方形領域単位ブロックにより構成されるブロック群における各正方形領域単位ブロックの向きを固定したまま前記ブロック群を９０°の整数倍回転させる画像回転部と、前記１次元ブロックデータフォーマット変換部により前記記憶部に格納されたパッキングデータをライン方向のブロック単位で復号してラスターデータに変換する伸張部とを備えたことを特徴とする画像処理装置である。
【発明の効果】
【００１８】
正方形領域単位ブロックの画像データを固定長圧縮したデータと属性情報をパッキングして記憶部に格納し、パッキングしたデータを読み出して回転処理を行う構成としたので、画像を回転する際に、記憶部に対する１回のアクセスで２次元のブロックを読み取ることができ、記憶部に対するアクセス数が少なくなり、記憶部に対するアクセス時間が短くなる。
また、ライン方向の複数画素単位で固定長圧縮された画像データと属性情報をパッキングして記憶部に格納し、ラスターデータに変換して画像処理を行う構成としたので、画像を回転しない場合は、圧縮されてパッキングされたデータを容易にラスターで取り出して、ライン単位で処理することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明を実施するための最良の形態について、図１〜図16を参照しながら詳細に説明する。
【実施例１】
【００２０】
本発明の実施例１は、正方形ブロックの画像を固定長圧縮したデータと属性情報をパッキングして格納し、パッキングしたデータを読み出して回転処理を行う画像処理装置である。
【００２１】
本発明の実施例１における画像処理装置の基本的な構成は、従来の画像処理装置と同様である。本発明の実施例１における画像処理装置は、固定長圧縮された画像と属性情報をパッキングする点が、従来のものと異なる。
【００２２】
図１は、本発明の実施例１における画像処理装置で用いるデータフォーマットの図である。１ブロックの固定長圧縮された画像と属性情報がパッキングされた状態を示す。図２は、画像処理装置で用いる回転器の機能ブロック図である。図３は、パッキングされたデータからラスターデータを得て、ラスターデータを画像処理する方法を示す図である。図４は、パッキングされたデータからラスターデータを得て印刷する方法を示す図である。図５は、ブロック-ラスター変換器の機能説明図である。図６は、非圧縮画像などを２次元ブロックで固定長圧縮して、属性情報とともにパッキングする画像処理モジュールの機能ブロック図である。図７は、非圧縮画像などを２次元ブロックで固定長圧縮して、属性情報とともにパッキングし、ラスターデータに変換して画像処理を行うモジュールの機能ブロック図である。図８は、２次元ブロックで固定長圧縮して、属性情報とともにパッキングした画像データを回転する方法を示す図である。
【００２３】
図２〜図８において、画像回転器１は、ブロック単位の画像データを、ブロック内において画素単位で回転してブロック全体を回転する手段である。分離手段２は、固定長圧縮画像と属性情報を分離する手段である。伸張器３は、固定長圧縮画像を非圧縮画像に戻す手段である。画像回転手段４は、画像データを、画素単位で回転する手段である。ここでいう回転は、90°単位の回転である。属性情報回転手段５は、属性情報を、画素単位で回転する手段である。固定長圧縮手段６は、非圧縮画像を固定長圧縮する手段である。パッキング手段７は、固定長圧縮画像と属性情報を、１つのデータにまとめる手段である。ブロック−ラスター変換器８は、ブロック単位の画像データからラスターデータを生成する手段である。画像処理部９は、ラスターデータを画像処理して新しいラスターデータを生成する手段である。プロッタ10は、ラスターデータ単位で印刷する手段である。CPU11は、画像処理のプログラムを実行する演算処理装置である。メモリ12は、画像処理のプログラムと画像データを記憶する手段である。データフォーマット変換器13は、非圧縮画像などから、ブロック単位の固定長圧縮画像と属性情報とのパッキングデータに変換する手段である。復号回転器14は、ブロック単位の固定長圧縮画像と属性情報とのパッキングデータを復号するとともに画像を回転する手段である。
【００２４】
上記のように構成された本発明の実施例１における画像処理装置の機能と動作を説明する。最初に、図１を参照しながら、固定長圧縮した画像情報と、属性情報を、パッキングしてメモリに格納する方法を説明する。矩形の１ブロックの画像情報を固定長圧縮する。矩形ブロックは、例えば、画面上で８×８画素のブロックである。矩形ブロックは、長方形のブロックでも正方形のブロックでもよい。このブロックの画素の属性情報をまとめて、固定長圧縮画像情報の直後のアドレスに格納する。属性情報は、２次元ブロックにパッキングされていてもよい。これを繰り返すことにより、メモリの一定アドレスごとに、１ブロックの画像情報と属性情報が連続して記憶される。
【００２５】
次に、図２を参照しながら、画像処理装置で用いる画像回転器の動作を説明する。１ブロックの固定長圧縮画像のデータサイズは、ｍ wordである。それに対応する属性情報のデータサイズは、ｎ wordである。ｍとｎは、画像の特性や固定長圧縮方式により決まる一定の値である。したがって、メモリからのリードは、１アクセスに付き（ｍ＋ｎ）wordである。固定長圧縮画像及び属性情報は、ａ×ａ画素ずつブロック化されているので、１アクセスで、１ブロックのデータリードを行うことができる。ａは、例えば８や16である。データライトも同じく１アクセスでできる。DMAコントローラは、回転前データリード用と回転後データライト用の２つが必要である。図２中の画像ブロックは、例えば、８×８画素のRGB画像などである。
【００２６】
画像回転器１において、最初に、分離手段２により固定長圧縮画像と属性情報を分離する。属性情報それだけを、属性情報回転手段５により回転する。一方、固定長圧縮画像は、伸張器３により復号して非圧縮画像にする。この非圧縮画像を、画像回転手段４により回転する。回転した非圧縮画像を、固定長圧縮手段６により固定長圧縮する。固定長圧縮画像と属性情報を、パッキング手段７によりパッキングする。パッキングされたデータのフォーマットとサイズは、回転前のパッキングデータのフォーマットとサイズに等しい。このようにして、画像回転器１は、１ブロックの固定長圧縮画像と属性情報を回転する。
【００２７】
次に、図３と図４と図５を参照しながら、正方形ブロックの画像を固定長圧縮した画像データと属性情報から、ラスターデータを得て、ラスターデータを画像処理する方法を説明する。図３に示すように、ａ×ａ画素単位でブロック化された固定長圧縮画像データをラスター単位で画像処理する場合、伸張後にブロック−ラスター変換器が必要である。まず、ａ×ａ画素単位でブロック化された固定長圧縮画像データを、伸張器３で復号して非圧縮画像にする。ａ×ａ画素単位でブロック化された非圧縮画像を、ブロック−ラスター変換器８で、ａライン分のバッファを使ってラスターデータに変換する。ブロック−ラスター変換器８については後述する。このラスターデータを、画像処理部９で処理して、処理後の画像のラスターデータを得る。
【００２８】
また、図４に示すように、ａ×ａ画素単位でブロック化された固定長圧縮画像データを印刷する場合も、伸張後にブロック‐ラスター変換器が必要である。まず、ａ×ａ画素単位でブロック化された固定長圧縮画像データを、伸張器３で復号して非圧縮画像にする。ａ×ａ画素単位でブロック化された非圧縮画像を、ブロック−ラスター変換器８で、ａライン分のバッファを使ってラスターデータに変換する。このラスターデータを、プロッタ10で印刷する。
【００２９】
ブロック−ラスター変換器８では、図５に示すように、ブロックをラスターに変えるためには、１ページ幅分のラインバッファを最低ａライン分持つ必要がある。画像データは、ブロック単位で圧縮されてパッキングされているため、伸張後の１ブロックの画像は、図５の斜線部のブロックとなる。ブロック単位で解凍されたデータを、正方形ブロック単位でバッファに書き込んでいく。ａライン分のデータを書き込んだら、ライン単位で読み取る。ブロック‐ラスター変換を高速に行うには、ａ×２ラインのラインバッファを備えて、トグル処理を行う必要がある。しかし、１ページの幅が大きければ大きいほど、ハードウエアのサイズが大きくなり、コストがかかるので、高速処理が必要ない場合は、交代バッファにしないでコストを削減する。
【００３０】
次に、図６を参照しながら、２次元ブロック（正方形ブロック）の画像情報を固定長圧縮して、属性情報とともにパッキングするハードウエアモジュールについて説明する。入力画像データの例として示してある可変長符号画像は、例えばJPEGのように、８×８画素（サブサンプリングされている場合は16×16画素）ごとに可変長圧縮されている画像である。入力画像としては、可変長符号の他に、非圧縮画像でも固定長圧縮画像でもよい。入力画像は、何らかの手段で入力されて、データフォーマット変換器13により非圧縮画像に戻されて、属性情報とともにメモリ12に格納されているものとする。入力画像は、データフォーマット変換器13により、８×８画素のブロックごとに固定長圧縮されて、属性情報とともにパッキングされて、図１に示したフォーマットでメモリ12に書き込まれる。
【００３１】
ブロック単位で圧縮された可変長符号（JPEG等）を、ブロック単位で圧縮された固定長符号に変換し、属性情報をブロック単位で付加してパッキングしてメモリに保存すると、次の２つのメリットが得られる。すなわち、（１）画像の回転を行う際に、非圧縮画像に展開する必要がなく、メモリ量を削減できる。さらに、（２）メモリアクセス回数が少なくなってメモリアクセスが早くなり、他のデバイスのメモリアクセスも妨げない。ところで、可変長符号（JPEG）は、復号しつつ回転することは可能だが、メモリに書き込む際に、再び可変長符号（JPEG）にして書き込むことはできない。ただし、非圧縮画像または固定長圧縮画像にして書き戻すことは可能である。最初から非圧縮画像でメモリに保存されている場合、または、隣のブロック同士に相関の無い固定長符号でメモリに保存されている場合は、そのまま回転できる。固定長符号と属性情報のパッキングデータにフォーマット変換をしておくと、後で回転処理がしやすいというメリットがある。
【００３２】
次に、図７を参照しながら、２次元ブロック（正方形ブロック）の画像情報を固定長圧縮して、属性情報とともにパッキングし、パッキングしたデータを回転してラスターデータに変換し、ラスターデータを画像処理するハードウエアモジュールを説明する。入力画像を、データフォーマット変換器13により、８×８画素のブロックごとに固定長圧縮して、属性情報とともにパッキングしてメモリ12に書き込むところまでは、図６のモジュールと同じである。パッキングされたデータを、復号回転器14により復号して非圧縮画像にし、さらに回転して、回転した非圧縮画像とする。具体的な回転方法は後述する。回転した非圧縮画像を、ブロック−ラスター変換器８でラスターデータに変換する。このラスターデータを、画像処理部９で処理して、処理後の画像のラスターデータを得る。
【００３３】
固定長符号と属性情報のパッキングデータがメモリ12に保存されている状態であれば、各ブロックの先頭アドレスとブロックのデータ長が分かっている。したがって、90°または180°または270°方向に回転するように、ブロックごとにメモリ12からデータを読み出すことができる。ブロックを復号回転器14で回転した後にラスターに変換すれば、メモリ12に書き戻すことなしに、直接ライン単位で処理する画像処理部９に入力できる。この場合のメリットは、（１）メモリに非圧縮画像を置くことなく、90°や270°の画像回転が可能であり、低コストとなる。（２）固定長符号と属性情報がパッキングされているので、メモリアクセス数が少なくなり、パフォーマンスが向上する。特に、復号回転後にメモリ12にデータを書き戻すことなくラスターに変換し、画像処理部９に入力することができるので、メモリ容量が少なくてすみ、パフォーマンスも格段に向上するというメリットがある。
【００３４】
次に、図８を参照しながら、ブロック化された画像データを90°回転する方法を説明する。８画素×８ラインの正方形ブロックごとに固定長圧縮された画像データと属性情報が、１つのデータにパッキングされて、メモリに連続的に格納されている。従来の非圧縮画像同様に、「回転リード」（回転したアドレスでリードする）と「回転ライト」（回転したアドレスでライトする）が可能である。各ブロックのデータはすでにパッキングされているため、一度のメモリリードアクセスで、８×８画素のブロックを読み取ることができる。各ブロックのデータ長は、固定長圧縮のアルゴリズムと属性情報の大きさによって変化する。固定長圧縮のため、各ブロックのスタートアドレスは決まっており、次のブロックのスタートアドレスは、各ブロックのデータ長に依存して決まる。ブロック１つあたりのデータ長を考慮して、「回転リード」（回転後の並びの順番に従って読み出す方法）または「回転ライト」（回転後の並びの順番に従って書き込む方法）を行う。そのためのメモリリード及びメモリライトアドレス発生を行う。図７の場合は、回転リードを行う必要があり、回転ライトはできない。
【００３５】
「回転リード」の場合は、次のようにメモリリードアドレスとメモリライトアドレスを発生する。最初に、A1ブロックを読み出すために、A1ブロックの先頭アドレスを求める。（全体の先頭アドレス）＋（ブロックサイズ）×（１ラインのブロック数）×（１列のブロック数−１）で求まる。A1ブロックを読み出して回転し、回転したA1ブロックを回転後のメモリ領域の先頭アドレスに書き込む。書込みの順序は、通常のラスター順と同じである。次に、B1ブロックを読み出す。このアドレスは、（A1ブロックの先頭アドレス）−（ブロックサイズ）×（１ラインのブロック数）で求まる。B1ブロックを回転し、回転したB1ブロックを、回転後のメモリ領域のA1ブロックの次のアドレスに書き込む。これを繰り返す。１列の回転が終わったら、A2ブロックを読み出す。A2ブロックの先頭アドレスは、（A1ブロックの先頭アドレス）＋（ブロックサイズ）で求まる。回転後のA2ブロックは、単に前回の次のアドレスに書き込めばよい。
【００３６】
「回転ライト」の場合は、次のようにメモリリードアドレスとメモリライトアドレスを発生する。読出しの順序は、通常のラスター順と同じである。すなわち、最初にD1ブロックを読み出し、以下、ラスター順に次々にブロックを読み出す。D1ブロックを回転して、回転後のD1ブロックを、回転後のメモリ領域の対応アドレスに書き込む。D1ブロックの書込みアドレスは、（書込領域の先頭アドレス）＋（ブロックサイズ）×（１列のブロック数−１）で求まる。回転後のD2ブロックは、（D1ブロックの先頭アドレス）＋（ブロックサイズ）×（１列のブロック数）で求まる。これを繰り返し、１ライン分の回転が終わったら、C1ブロックを読み出す。C1ブロックの書込みアドレスは、（D1ブロックの先頭アドレス）−（ブロックサイズ）で求まる。
【００３７】
上記のように、本発明の実施例１では、画像処理装置を、正方形ブロックの画像を固定長圧縮したデータと属性情報をパッキングして格納し、パッキングしたデータを読み出して回転処理を行う構成としたので、画像を回転する際に、１回のメモリアクセスで２次元のブロックを読み取ることができ、メモリアクセス数が少なくなり、メモリアクセス時間が短くなる。
【実施例２】
【００３８】
本発明の実施例２は、ライン方向の８画素のブロック単位で固定長圧縮された画像データと属性情報をパッキングしてメモリに格納し、ラスターデータに変換して画像処理を行う画像処理装置である。
【００３９】
本発明の実施例２における画像処理装置の基本的構成は実施例１と同じである。本発明の実施例２における画像処理装置が実施例１と異なるところは、入力画像をライン方向の複数画素単位で固定長圧縮し、その属性情報とともにパッキングする点である。
【００４０】
図９は、本発明の実施例２における画像処理装置で用いる回転器の機能ブロック図である。図10は、画像処理装置で、パッキングされたデータからラスターデータを得て画像処理する場合を示す図である。図11は、画像処理装置で、パッキングされたデータからラスターデータを得て印刷する場合を示す図である。図12は、非圧縮画像などを１次元ブロックで固定長圧縮して、属性情報とともにパッキングする画像処理モジュールの機能ブロック図である。図13は、１次元ブロックで固定長圧縮して属性情報とともにパッキングされたデータのイメージである。図14は、非圧縮画像などを１次元ブロックで固定長圧縮して、属性情報とともにパッキングし、パッキングした画像データを回転し、復号し、ラスター画像を処理する画像処理モジュールの機能ブロック図である。図15は、非圧縮画像などを１次元ブロックで固定長圧縮して、属性情報とともにパッキングし、パッキングした画像データを復号して回転し、ブロックデータをラスターデータに変換し、ラスターデータを画像処理する画像処理モジュールの機能ブロック図である。図16は、回転アクセスアドレス発生方法の説明図である。
【００４１】
図９〜図16において、画像処理部９は、ラスターデータを画像処理して新しいラスターデータを生成する手段である。プロッタ10は、ラスターデータ単位で印刷する手段である。CPU11は、画像処理のプログラムを実行する演算処理装置である。メモリ12は、画像処理のプログラムと画像データを記憶する手段である。画像回転器21は、正方形ブロックにまとめた画像データを、正方形ブロック内において画素単位で回転して正方形ブロック全体を回転する手段である。分離手段22は、固定長圧縮画像と属性情報を分離する手段である。伸張器23は、固定長圧縮画像を非圧縮画像に戻す手段である。画像回転手段24は、画像データを、画素単位で回転する手段である。属性情報回転手段25は、属性情報を、画素単位で回転する手段である。固定長圧縮手段26は、非圧縮画像をライン方向の複数画素単位、例えば８画素単位で固定長圧縮する手段である。パッキング手段27は、固定長圧縮画像と属性情報を、１つのデータにまとめる手段である。ブロック−ラスター変換器28は、正方形ブロック単位の画像データからラスターデータを生成する手段である。データフォーマット変換器29は、非圧縮画像などから、ライン方向の複数画素単位の固定長圧縮画像と属性情報とのパッキングデータに変換する手段である。パッキングデータ回転器30は、ライン方向の複数画素単位のパッキングデータを正方形ブロックにして回転する手段である。パッキングデータ復号器31は、ライン方向の複数画素単位のパッキングデータを復号してラスターデータにする手段である。パッキングデータ復号回転器32は、ライン方向の複数画素単位の固定長圧縮画像と属性情報とのパッキングデータを復号するとともに画像を回転する手段である。
【００４２】
上記のように構成された本発明の実施例２における画像処理装置の機能と動作を説明する。最初に、ライン方向の複数画素単位で圧縮することの意味を説明する。画像を回転する場合は、実施例１の正方形ブロック単位の固定長圧縮が有利である。画像を回転しないでラスターで扱いたい場合は、ライン方向の複数画素単位の固定長圧縮が有利である。画像回転器は、２次元のブロックで画像を読み取り、回転してメモリに書き戻すので、ライン方向の複数画素単位でパッキングされたａ画素分のパッキングデータは、副走査方向にａライン分読み取る必要がある。ライン方向の複数画素ごとに圧縮されてパッキングされたデータは、ラスターで取り出すことが容易である。画像処理はラスター単位で行うことも多いので、伸張後の画像データを直接画像処理部に入力したり、ラスター単位での入力が必要なプロッタに出力したりする場合に有利な画像フォーマットといえる。
【００４３】
次に、図９を参照しながら、画像処理装置で用いる画像回転器の動作を説明する。１ライン（ａ画素）の固定長圧縮画像のデータサイズは、ｐ wordである。それに対応する属性情報のデータサイズは、ｑ wordである。したがって、メモリからのリードは、１アクセスに付き（ｐ＋ｑ）wordである。固定長圧縮画像及び属性情報は、ａ画素ずつ符号化されているので、ａ回のアクセスで、１ブロックのデータを読み出すことができる。データライトも同じく、ａ回のアクセスでできる。DMAコントローラは、回転前データリード用と回転後データライト用の２つが必要である。図９中の画像ブロックは、例えば、８画素のRGB画像などである。
【００４４】
画像回転器21では、最初に、分離手段22で固定長圧縮画像と属性情報を分離する。属性情報を、属性情報回転手段25で回転する。回転した属性情報を正方形ブロックにして、ライン方向の複数画素ごとに属性情報を取り出す。固定長圧縮画像を、伸張器23で復号して、非圧縮画像にする。非圧縮画像を、画像回転手段24で回転する。回転した非圧縮画像を、正方形ブロックにして、ライン方向の複数画素ごとに固定長圧縮手段26で固定長圧縮する。固定長圧縮画像と属性情報を、パッキング手段27でパッキングする。パッキングされたデータのフォーマットとサイズは、回転前のパッキングデータのフォーマットとサイズに等しい。このようにして、画像回転器21は、ａ画素を１ブロックとした固定長圧縮画像と属性情報を回転する。
【００４５】
次に、図10を参照しながら、ライン方向の複数画素単位で圧縮することのメリットを説明する。メモリから、ａ画素単位でパッキングしたデータを読み込む。ａ画素単位でパッキングしたデータを、伸張器23で非圧縮画像に戻すと、ａ画素のラスターデータになる。このラスターデータを、画像処理部９で処理して、処理後のラスターデータを得る。メモリからａ画素単位でパッキングしたデータを読み込んで伸張すると、伸張後のデータはラスターなので、画像を回転しないでライン単位で処理する場合は、そのまま画像処理部に入力できる。
【００４６】
次に、図11を参照しながら、画像を回転しないでプロッタ出力する場合を説明する。メモリから、ａ画素単位でパッキングしたデータを読み込む。ａ画素単位でパッキングしたデータを、伸張器23で非圧縮画像に戻すと、ａ画素のラスターデータになる。このラスターデータをプロッタ10で印刷する。プロッタにはラスターで画像を入力する必要がある。メモリからａ画素単位でパッキングしたデータを読み込んで伸張すると、圧縮データはライン方向にａ画素分ずつパッキングされているため、伸張後の画像もラスターで得られる。伸張後の画像データをメモリに書き戻すことなく、直接プロッタに出力できる。
【００４７】
次に、図12を参照しながら、非圧縮画像などを１次元ブロックで固定長圧縮して、属性情報とともにパッキングする画像処理モジュールについて説明する。図12では、入力データの例として、１次元可変長符号画像と固定長符号画像と非圧縮画像を示してある。１次元とあるのは、データの圧縮方向が１次元的であることを示しており、実際には、２次元の画像を扱っている。入力画像は、何らかの手段で入力されて、データフォーマット変換器29により非圧縮画像に戻されて、属性情報とともにメモリ12に格納されているものとする。入力画像は、データフォーマット変換器29により、ラスター方向の８画素のブロックごとに固定長圧縮されて、属性情報とともにパッキングされて、図１に示したフォーマットでメモリ12に書き込まれる。
【００４８】
次に、図13を参照しながら、ライン方向の複数画素単位に固定長圧縮して属性情報とともにパッキングする方法を説明する。１ラインの画像データを、ａ画素ずつのブロックに分割する。ａ画素のブロックを固定長圧縮して、その属性情報とともに１つにまとめてメモリに格納する。90°回転する際には、このデータフォーマットでは、正方形ブロックになるように、ａライン分のパッキングデータをメモリから読み取る。ａライン分のパッキングデータを復号して、正方形ブロックにした後、画像回転を行う。回転した正方形ブロックを、再びa画素ごとに、a個の固定長符号に圧縮しなおす。このようにして回転を行うことができるので、画像全体を非圧縮画像に展開する必要はない。メモリ量が削減できるという利点はあるが、メモリアクセス数は実施例１より多い。
【００４９】
回転時のメモリアクセス数では実施例１に劣るが、ラスター変換をバッファなしに行うことができる点が、実施例１より優れている。可変長符号は、復号しつつ回転することは可能だが、メモリに書き込む際に、再び可変長符号（JPEG）にして書き込むことはできない。非圧縮画像または固定長圧縮画像にして書き戻すことは可能である。最初から、非圧縮画像または隣のブロック同士に相関の無い固定長符号でメモリに保存されている場合は、そのまま回転できるが、固定長符号と属性のパッキングデータにフォーマット変換をしておくと、後で回転処理がしやすいというメリットがある。
【００５０】
次に、図14を参照しながら、非圧縮画像などを１次元ブロックで固定長圧縮して、属性情報とともにパッキングし、パッキングした画像データを回転し、復号し、ラスターデータを処理する画像処理モジュールについて説明する。入力画像を、データフォーマット変換器29により、８画素のブロックごとに固定長圧縮して、属性情報とともにパッキングしてメモリ12に書き込むところまでは、図12のモジュールと同じである。回転する場合は、パッキングデータ回転器30で回転する。パッキングデータ回転器30は、リードもライトもメモリ12に対して行うため、回転リードも回転ライトも可能である。パッキングされたデータを、パッキングデータ復号器31により復号してラスターデータにする。ラスターデータを、画像処理部９で処理して、処理後の画像のラスターデータを得る。
【００５１】
１次元ブロックで固定長圧縮して、属性情報とともにパッキングした画像データの場合、パッキングデータを復号してラスターデータに変換する際に、ブロック‐ラスター変換用ラインバッファを持つ必要がない。しかしながら、画像を回転する際には、復号と回転を行いつつ、ラスターに変換することは不可能であるため、ブロック‐ラスター変換用ラインバッファを持つ必要がある。あるいは、回転専用のモジュールを別に持って、メモリ経由であらかじめ回転を行っておく必要がある。
【００５２】
次に、図15を参照しながら、非圧縮画像などを１次元ブロックで固定長圧縮して、属性情報とともにパッキングした画像データを復号して回転し、ブロックデータをラスターデータに変換し、ラスターデータを画像処理する画像処理モジュールについて説明する。入力画像を、データフォーマット変換器29により、８画素のブロックごとに固定長圧縮して、属性情報とともにパッキングしてメモリ12に書き込むところまでは、図12のモジュールと同じである。パッキングされたデータを、パッキングデータ復号回転器32により復号して回転し、回転したブロックデータにする。この場合は、回転リードを行う必要があり、回転ライトは不可である。ブロックデータを、ブロック−ラスター変換器28でラスターデータにする。ラスターデータを、画像処理部９で処理して、処理後の画像のラスターデータを得る。非圧縮画像などを１次元ブロックで固定長圧縮して、属性情報とともにパッキングした画像データの場合も、復号と回転を同時に行うためには、ブロック‐ラスター変換用ラインバッファを持つ必要がある。
【００５３】
次に、図16を参照しながら、回転アクセスアドレス発生方法を説明する。データが、画像と属性情報を含めて８画素ごとにパッキングされているとする。従来例の非圧縮画像同様に、「回転リード」（回転後の並びの順番に従って読み出す方法）または「回転ライト」（回転後の並びの順番に従って書き込む方法）が可能である。各ブロックは、８画素ごとにパッキングされているため、ブロック１つにつき最低８回のメモリリードが必要である。回転リードの場合は、回転後にメモリに書き戻さなくても、ブロック‐ラスター変換バッファを用いて、直接ラスター化が可能である。回転ライトの場合は、直接ラスター化は不可能である。
【００５４】
「回転リード」の場合は、次のようにメモリリードアドレスとメモリライトアドレスを発生する。最初に、A1ブロックの第１ラインブロックを読み出すために、その先頭アドレスを求める。（全体の先頭アドレス）＋（ラインブロックサイズ）×（１ラインのブロック数）×（１列のラインブロック数−８）で求まる。A1ブロックの第２ラインブロックの先頭アドレスは、（A1ブロックの第１ラインブロックの先頭アドレス）＋（ラインブロックサイズ）×（１ラインのブロック数）となる。このようにして、A1ブロックの第８ラインブロックまで読み出す。A1ブロックを回転し、回転したA1ブロックを回転後のメモリ領域の先頭アドレスに書き込む。書込みの順序は、通常のラスター順と同じである。ただし、A1ブロックの第２ラインブロックは、（A1ブロックの第１ラインブロックの書込み先頭アドレス）＋（ラインブロックサイズ）×（１ラインのブロック数）となる。以下同様である。次に、B1ブロックを読み出す。この読出しアドレスは、（A1ブロックの先頭アドレス）−（ラインブロックサイズ）×（１ラインのブロック数）×８で求まる。B1ブロックを回転し、回転したB1ブロックを、回転後のメモリ領域のA1ブロックの次のアドレスに書き込む。これを繰り返す。１列の回転が終わったら、A2ブロックを読み出す。A2ブロックの読出し先頭アドレスは、（A1ブロックの読出し先頭アドレス）＋（正方形ブロックサイズ）で求まる。回転後のA2ブロックは、正方形ブロックとしては、単に前回の正方形ブロックの次のアドレスに書き込めばよい。
【００５５】
「回転ライト」の場合は、次のようにメモリリードアドレスとメモリライトアドレスを発生する。読出しの順序は、通常のラスター順と同じである。すなわち、最初にD1ブロックを読み出し、以下、ラスター順に次々にブロックを読み出す。ただし、D1ブロックの第２ラインブロックの先頭アドレスは、（D1ブロックの第１ラインブロックの先頭アドレス）＋（ラインブロックサイズ）×（１ラインのブロック数）となる。D1ブロックを回転して、回転後のD1ブロックを、回転後のメモリ領域の対応アドレスに書き込む。D1ブロックの第１ラインブロックの書込みアドレスは、（書込領域の先頭アドレス）＋（ラインブロックサイズ）×（１列のブロック数−１）で求まる。D1ブロックの第２ラインブロックの書込みアドレスは、（D1ブロックの第１ラインブロックの先頭アドレス）＋（ラインブロックサイズ）×（１列のブロック数）である。回転後のD2ブロックの第１ラインブロックの書込み先頭アドレスは、（D1ブロックの書込み先頭アドレス）＋（正方形ブロックサイズ）×（１列のブロック数）で求まる。これを繰り返し、８ライン分の回転が終わったら、C1ブロックを読み出す。C1ブロックの書込みアドレスは、（D1ブロックの書込み先頭アドレス）−（正方形ブロックサイズ）で求まる。
【００５６】
１次元ブロックで固定長圧縮して、属性情報とともにパッキングした画像データのメリットを以下に示す。
（１）属性情報と画像情報がパッキングされているため、メモリアクセス数を1/2にできる。
（２）画像自体が固定長圧縮されているため、メモリアクセス時間が短い。
（３）実施例１のデータフォーマットと比べて、回転しない場合は、メモリからリードした後、ブロック‐ラスター変換バッファなしで、直接ラスターデータに変換できる。
【００５７】
上記のように、本発明の実施例２では、画像処理装置を、ライン方向の８画素単位で固定長圧縮された画像データと属性情報をパッキングしてメモリに格納し、ラスターデータに変換して画像処理を行う構成としたので、圧縮されてパッキングされたデータを容易にラスターで取り出して、ライン単位で処理することができる。
【産業上の利用可能性】
【００５８】
本発明の画像処理装置は、固定長圧縮した画像データを高速に回転処理する画像処理装置として最適である。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施例１における画像処理装置で用いるデータフォーマットの図である。
【図２】本発明の実施例１における画像処理装置で用いる回転器の機能ブロック図である。
【図３】本発明の実施例１における画像処理装置で、パッキングされたデータからラスターデータを得る方法を示す図である。
【図４】本発明の実施例１における画像処理装置で、パッキングされたデータからラスターデータを得て印刷する方法を示す図である。
【図５】本発明の実施例１における画像処理装置のブロック-ラスター変換器の機能説明図である。
【図６】本発明の実施例１における画像処理装置の画像処理モジュールの機能ブロック図である。
【図７】本発明の実施例１における画像処理装置の他の画像処理のモジュールの機能ブロック図である。
【図８】本発明の実施例１における画像処理装置で画像を回転する方法の説明図である。
【図９】本発明の実施例２における画像処理装置で用いる回転器の機能ブロック図である。
【図１０】本発明の実施例２における画像処理装置で、パッキングされたデータからラスターデータを得て画像処理する場合を示す図である。
【図１１】本発明の実施例２における画像処理装置で回転しないでプロッタ出力する場合を示す図である。
【図１２】本発明の実施例２における画像処理装置の画像処理モジュールの機能ブロック図である。
【図１３】本発明の実施例２における画像処理装置で固定長圧縮画像を属性情報とともにパッキングしたデータの概念図である。
【図１４】本発明の実施例２における画像処理装置の画像処理モジュールの機能ブロック図である。
【図１５】本発明の実施例２における画像処理装置の画像処理モジュールの機能ブロック図である。
【図１６】本発明の実施例２における画像処理装置で回転アクセスアドレスを発生する方法の説明図である。
【図１７】従来の画像データのパッキング方法とメモリアクセス方法を示す図である。
【図１８】従来の固定長データパッキング方法を示す図である。
【図１９】従来の写真と文字の混在するデータの例を示す図である。
【図２０】従来の画像回転器の機能ブロック図である。
【図２１】非圧縮画像を90°回転する従来例の説明図である。
【符号の説明】
【００６０】
１・・・画像回転器、２・・・分離手段、３・・・伸張器、４・・・画像回転手段、５・・・属性情報回転手段、６・・・固定長圧縮手段、７・・・パッキング手段、８・・・ブロック−ラスター変換器、９・・・画像処理部、10・・・プロッタ、11・・・CPU、12・・・メモリ、13・・・データフォーマット変換器、14・・・復号回転器、21・・・画像回転器、22・・・分離手段、23・・・伸張器、24・・・画像回転手段、25・・・属性情報回転手段、26・・・固定長圧縮手段、27・・・パッキング手段、28・・・ブロック−ラスター変換器、29・・・データフォーマット変換器、30・・・パッキングデータ回転器、31・・・パッキングデータ復号器、32・・・パッキングデータ復号回転器。
【図１】
0004610450.tif 000002
【図２】
0004610450.tif 000003
【図３】
0004610450.tif 000004
【図４】
0004610450.tif 000005
【図５】
0004610450.tif 000006
【図６】
0004610450.tif 000007
【図７】
0004610450.tif 000008
【図８】
0004610450.tif 000009
【図９】
0004610450.tif 000010
【図１０】
0004610450.tif 000011
【図１１】
0004610450.tif 000012
【図１２】
0004610450.tif 000013
【図１３】
0004610450.tif 000014
【図１４】
0004610450.tif 000015
【図１５】
0004610450.tif 000016
【図１６】
0004610450.tif 000017
【図１７】
0004610450.tif 000018
【図１８】
0004610450.tif 000019
【図１９】
0004610450.tif 000020
【図２０】
0004610450.tif 000021
【図２１】
0004610450.tif 000022