JP2011019096A - 画像処理装置および画像処理方法 - Google Patents
画像処理装置および画像処理方法 Download PDFInfo
- Publication number
- JP2011019096A JP2011019096A JP2009162414A JP2009162414A JP2011019096A JP 2011019096 A JP2011019096 A JP 2011019096A JP 2009162414 A JP2009162414 A JP 2009162414A JP 2009162414 A JP2009162414 A JP 2009162414A JP 2011019096 A JP2011019096 A JP 2011019096A
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- value
- prediction
- pixels
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】画像の予測符号化処理を、圧縮率を低下させずに高速で行うことを可能とする。
【解決手段】並列簡易予測処理より、符号化対象ラインにおける符号化済みの1画素および当該1画素に連続する複数の注目画素と、これらの画素に位置が対応する、符号化対象ラインの直前に符号化が行われたラインの複数画素とを比較し、両者が一致しているか否かを判定する。両者が一致していると判定された場合、当該複数の注目画素の個数分、ランレングス値を増加させる。一方、両者が一致していないと判定された場合、注目画素のそれぞれについて予測処理を行い、予測誤差値およびランレングス値を出力する。このようにして得られた予測誤差値とランレングス値とをエントロピー符号化して画像の圧縮符号化を行う。
【選択図】図6
【解決手段】並列簡易予測処理より、符号化対象ラインにおける符号化済みの1画素および当該1画素に連続する複数の注目画素と、これらの画素に位置が対応する、符号化対象ラインの直前に符号化が行われたラインの複数画素とを比較し、両者が一致しているか否かを判定する。両者が一致していると判定された場合、当該複数の注目画素の個数分、ランレングス値を増加させる。一方、両者が一致していないと判定された場合、注目画素のそれぞれについて予測処理を行い、予測誤差値およびランレングス値を出力する。このようにして得られた予測誤差値とランレングス値とをエントロピー符号化して画像の圧縮符号化を行う。
【選択図】図6
Description
本発明は、画像データを圧縮符号化する画像処理装置および画像処理方法に関する。
プリンタ装置などの画像形成装置では、入力された画像データを一時的にメモリに記憶し、このメモリに記憶された画像データを所定のタイミングで読み出して、印刷動作を行う。この場合、画像データをそのままメモリに格納しようとすると、大容量のメモリが必要になり装置のコストが嵩んでしまう。そのため、一般的には、入力された画像データを、圧縮符号化してメモリに格納するようにしている。
この、プリンタ装置などでは、予測符号化を用いた圧縮符号化が一般的に用いられる。予測符号化は、画像において、隣接する画素同士の相関が高いという性質を利用し、符号化済みの画素の画素値から符号化対象である注目画素の画素値を予測し、予測値と注目画素の実際の画素値との差分を、エントロピー符号化により符号化する。
この予測符号化に従来から用いられる方法として、平面予測方式やPaeth方式、LOCO−I(LOw COmplexity LOssless COmpression for Images)方式などが知られている。平面予測方式は、JPEG(Joint Photographic Experts Group)の可逆符号化モードに採用されている。Paeth方式は、Alan W.Paeth氏が考案した予測方式であり、国際標準化された可逆圧縮方式であるPNG(Portable Network Graphics)に採用されている。Paeth方式については、「Paeth, A.W.,"Image File Compression Made Easy", in Graphics Gems II, James Arvo, editor. Academic Press, San Diego, 1991」に記載がある。また、LOCO−I方式は、国際標準化された圧縮方式であるJPEG−LS(Joint Photographic Experts Group-LS)に採用されている。LOCO−I方式については、「M.J.Weinberger," LOCO-I: A Low Complexity, Context-Based, Lossless Image Compression Algorithm" Proc. IEEE Data Compression conference(DCC),snowbird,Utah」に記載がある。
これらの予測方式のうち、LOCO−I方式およびPaeth方式は、平面予測と比較して、画素毎の処理量が多い一方で、予測値の注目画素の画素値に対する予測誤差が小さく、より高精度な予測が可能なことが知られている。
特許文献1には、注目画素を周辺画素から予測した予測誤差をハフマン符号化する際に、予測誤差の値を、その値の範囲で複数のグループに分類して分類内部の順位を示す数値である付加ビットへ変換し、グループ値と付加ビット値とをハフマン符号化する技術が開示されている。
また、特許文献2には、複数の予測部および予測誤差算出部と、それらを選択する選択部と、選択部で選択された予測誤差や複数の予測部の識別番号を符号化する符号化部で構成される画像符号化装置が開示されている。特許文献2では、複数の予測部において予測が的中した長さをランレングスで符号化し、的中しない場合は、予測誤差算出部で求めた予測誤差を符号化するようにしている。
さらに、特許文献3には、第1および第2の予測方法を用いて注目画素の画素値を予測する技術が記載されている。すなわち、特許文献3では、先ず第1の予測方法を用いて注目画素の画素値を予測し、予測値が注目画素の画素値と一致する場合には、この第1の予測方法を示すIDを符号に付加し、一致しない場合は、第2の予測方法で注目画素の画素値を予測する。第2の予測方法による予測値が注目画素の画素値と一致する場合には、この第2の予測方法を示すIDを符号に付加する。そして、第1および第2の予測方法により予測された予測値が何れも注目画素の画素値に一致しない場合は、予測誤差が小さい方の予測方法に対して不一致を示すIDを符号に付加し、その予測誤差を符号化するようにしている。
さらにまた、特許文献4には、平面予測処理を並列的に行うことで、処理の高速化を図った技術が記載されている。
また、特許文献5には、複数の画素値からなるビット列を注目ブロックと直前ブロックで比較して、これら注目ブロックのビット列と直前ブロックのビット列とが一致するか否かで予測を行うことで、高速に予測処理を行うようにした技術が記載されている。
ところで、プリンタ装置などでは、印字のための画像処理を、プリントエンジンの印字速度に応じて行う必要がある。印字速度の高速化に対応するためには、画像の圧縮率を高めると共に、画像の圧縮符号化に要する処理速度の高速化が必要となる。すなわち、プリントエンジンの印字速度よりも画像の圧縮符号化の処理速度の方が遅くなると、良好な印字品質が得られなくなる。そのため、より高速な画像の圧縮符号化方法が求められている。
多値画像の可逆圧縮方式として知られているJPEGの可逆符号化モードは、7つの予測式で予測誤差の統計を作成し、最も良い結果が得られた予測式を1つ選択し、選択された予測式を用いて画像データの符号化を行う。しかしながら、このJPEGの可逆符号化モードでは、1つの画像に対して7つの予測式のそれぞれで予測誤差の統計を作成するために、多値画像を2回処理する2パス方式となり、処理時間が多くかかるという問題点があった。
また、上述した特許文献2によれば、複数の予測部により複数の予測処理を行い予測誤差を求めているため、多くの処理を必要とし、この場合においても処理時間が多くかかってしまうという問題点があった。
さらに、上述した特許文献3によれば、少なくとも2の予測方法を試行してから予測誤差を求めるようにしているため、多くの処理が必要となり、処理時間が多くかかってしまうという問題点があった。
さらにまた、上述した特許文献1では、入力画像の画素単位に画素毎に予測誤差を求めてハフマン符号化を行っている。すなわち、特許文献1によれば、上述した平面予測方式、Paeth方式、LOCO−I方式などを用いて、画素毎に予測処理を行う必要がある。そのため、処理速度の高速化が困難であるという問題点があった。
また、上述した特許文献4では、並列的に平面予測処理を行うように構成された回路が記載されており、処理の高速化が実現されている。ここで、近年では、CPU(Central Processing Unit)の処理性能が向上し、画像データの圧縮符号化処理をソフトウェアにより行う例も増えてきている。そのため、画像データの圧縮符号化アルゴリズムは、ソフトウェア処理でも高速化が可能である必要がある。しかしながら、この特許文献4の記載のような並列的な処理は、ハードウェア的には容易に構成することができるが、ソフトウェア的に構成した場合には擬似的な並列処理となってしまうことが考えられ、高速化が困難であるという問題点があった。
さらに、上述した特許文献5では、図9および図10にワード単位の複数画素で平面予測処理を並列的に行うことで高速化を可能としている。しかしながら、この特許文献5の例では、平面予測処理を、画像において注目画素に対して直上に隣接する画素と、注目画素の左および左上に隣接する画素とを分離した上で、平面予測の手法を用いて予測処理を行っている。そのため、正しく平面予測を行った場合に比べて圧縮率が低下してしまうという問題点があった。
本発明は、上記に鑑みてなされたものであって、画像の予測符号化処理を、圧縮率を低下させずに高速で行うことを可能とする画像処理装置および画像処理方法を提供することを目的とする。
本発明は、上述した課題を解決するために、多値画像データを圧縮符号化する画像処理装置であって、符号化対象ラインにおける符号化済みの1画素および1画素に連続する複数の注目画素とからなる第1の画素群と、符号化対象ラインの直前に符号化されたラインにおける第1の画素群と位置が対応する第2の画素群とを比較した比較結果に基づき、注目画素の画素値に対する予測値との差分である予測誤差値が0であるか否かを、複数の注目画素について纏めて判定する第1の予測手段と、第1の予測手段で複数の注目画素の予測誤差値が0ではないと判定された場合に、複数の注目画素のそれぞれについて、注目画素の画素値に対する予測値を、注目画素の画素値と注目画素の周辺画素の画素値とに基づく予測により求め、予測により求められた予測値の注目画素の画素値に対する予測誤差値を算出する第2の予測手段と、第1の予測手段および第2の予測手段で得られた予測誤差値の符号化を行う符号化手段とを有することを特徴とする。
また、本発明は、多値画像データを圧縮符号化する画像処理方法であって、符号化対象ラインにおける符号化済みの1画素および1画素に連続する複数の注目画素とからなる第1の画素群と、符号化対象ラインの直前に符号化されたラインにおける第1の画素群と位置が対応する第2の画素群とを比較した比較結果に基づき、注目画素の画素値に対する予測値との差分である予測誤差値が0であるか否かを、複数の注目画素について纏めて判定する第1の予測ステップと、第1の予測ステップで複数の注目画素の予測誤差値が0ではないと判定された場合に、複数の注目画素のそれぞれについて、注目画素の画素値に対する予測値を、注目画素の画素値と注目画素の周辺画素の画素値とに基づく予測により求め、予測により求められた予測値の注目画素の画素値に対する予測誤差値を算出する第2の予測ステップと、第1の予測ステップおよび第2の予測ステップで得られた予測誤差値の符号化を行う符号化ステップとを有することを特徴とする。
本発明によれば、画像の予測符号化処理を、圧縮率を低下させずに高速で行うことが可能となるという効果を奏する。
以下に添付図面を参照して、この発明に係る画像処理装置の最良な実施形態を詳細に説明する。図1は、この発明の実施形態による画像処理装置を適用可能な画像形成装置(カラープリンタとする)の機構部の構成例を示す。なお、本実施形態では、本発明に係る画像処理装置および画像処理方法をカラープリンタである画像形成装置に適用した例について説明するが、文字画像を含む画像に画像処理を施すものであれば、これに限定するものではない。例えば、本発明は、複写機、ファクシミリ、複合機などの画像処理装置にも適用することができる。
図1に例示されるカラープリンタ100は、4色(Y、M、C、K)の画像をそれぞれ独立の作像系1Y、1M、1C、1Kで形成し、この4色の画像を合成する4ドラムタンデムエンジンタイプの画像形成装置である。各作像系1Y、1M、1C、1Kは、像担持体としての感光体、例えば小径のOPC(有機感光体)ドラム2Y、2M、2C、2Kを有し、このOPCドラム2Y、2M、2C、2Kを取り囲むように作像の上流側から帯電手段としての帯電ローラ3Y、3M、3C、3Kと、OPCドラム2Y、2M、2C、2K上の静電潜像をそれぞれ現像剤で現像してY、M、C、K各色のトナー像とする現像装置4Y、4M、4C、4Kと、クリーニング装置5Y、5M、5C、5Kと、除電装置6Y、6M、6C、6Kなどが配置されている。
各現像装置4Y、4M、4C、4Kの脇には、Yトナー、Mトナー、Cトナー、Kトナーをそれぞれ現像装置4Y、4M、4C、4Kへ補給するトナーボトルユニット7Y、7M、7C、7Kが配置されている。また、各作像系1Y、1M、1C、1Kは各々独立な光書き込み装置8Y、8M、8C、8Kが配置され、この光書き込み装置8Y、8M、8C、8Kはレーザ光源としてのレーザダイオード(LD)光源9Y、9M、9C、9Kや、コリメートレンズ10Y、10M、10C、10K、fθレンズ11Y、11M、11C、11K、といった光学部品、偏向走査手段としてのポリゴンミラー12Y、12M、12C、12K、折り返しミラー13Y、13M、13C、13K、14Y、14M、14C、14Kなどを有する。
各作像系1Y、1M、1C、1Kは垂直に配列され、その右側には転写ベルトユニット15がOPCドラム2Y、2M、2C、2Kに接する形で配置される。転写ベルトユニット15は、転写ベルト16がローラ17〜20に張架されて図示しない駆動源により回転駆動される。装置下側には転写材としての転写紙が収納された給紙トレイ21が配置され、装置上部に定着装置22、排紙ローラ23及び排紙トレイ24が配設される。
作像時には、各作像系1Y、1M、1C、1Kにおいて、それぞれ、OPCドラム2Y、2M、2C、2Kが図示しない駆動源により回転駆動され、帯電ローラ3Y、3M、3C、3KによりOPCドラム2Y、2M、2C、2Kが一様に帯電されて光書き込み装置8Y、8M、8C、8Kが各色の画像データに基づきOPCドラム2Y、2M、2C、2Kに光書込みを行うことによって、OPCドラム2Y、2M、2C、2K上に静電潜像が形成される。
このOPCドラム2Y、2M、2C、2K上の静電潜像はそれぞれ現像装置4Y、4M、4C、4Kにより現像されてY、M、C、K各色のトナー像となり、一方、給紙トレイ21から給紙ローラ25により転写紙が水平方向に給紙されて搬送系により作像系1Y、1M、1C、1K方向へ垂直に搬送される。この転写紙は、転写ベルト16に静電的に吸着保持されて転写ベルト16により搬送され、図示しない転写バイアス印加手段により転写バイアスが印加されてOPCドラム2Y、2M、2C、2K上のY、M、C、K各色のトナー像が順次に重ねて転写されることでフルカラー画像が形成される。このフルカラー画像が形成された転写紙は、定着装置22によりフルカラー画像が定着されて排紙ローラ23により排紙トレイ24へ排出される。
上述した、カラープリンタ100における各部の制御は、電装・制御装置26により行われる。
図2は 図1の電装・制御装置26の一例の構成を示すブロック図である。図2の例では、電装・制御装置26は、CPU(Central Processing Unit)200、プリンタ用ASIC(Application Specific Integrated Circuit)230およびメインメモリ210を備える。プリンタ用ASIC230は、CPU I/F201、メインメモリアービタ(ARB)202、メインメモリコントローラ203、符号化部204、復号部205、階調処理部206およびエンジンコントローラ207を含む。
CPU200は、メインメモリ210に格納されるプログラムに従い、このカラープリンタ100の全体の動作を制御する。CPU200は、CPU I/F201を介してメインメモリアービタ202に接続される。メインメモリアービタ202は、CPU200、符号化部204、復号部205および通信コントローラ208の、メインメモリ210に対するアクセスを調停する。
メインメモリ210は、メインメモリコントローラ203を介してメインメモリアービタ202に接続される。メインメモリコントローラ203は、メインメモリ210に対するアクセスの制御を行う。メインメモリ210は、上述した、CPU200が動作するためのプログラムや、CPU200から出力される描画コマンドが格納される。メインメモリ210は、さらに、バンドデータや、ページの圧縮データなどの各種データを格納する。
符号化部204は、メインメモリ210に格納されるバンドデータを符号化する。符号化されたバンドデータは、メインメモリアービタ202およびメインメモリコントローラ203を介してメインメモリ210に供給され、ページ符号格納領域に書き込まれる。復号部205は、後述するプリンタエンジン211に同期して、符号化部204で符号化されメインメモリ210に書き込まれた符号化バンドデータをメインメモリ210から読み出して復号する。復号されたバンドデータは、階調処理部206に供給される。階調処理部206は、復号部205から供給されたバンドデータに対して階調処理を施してエンジンコントローラ207に転送する。
エンジンコントローラ207は、プリンタエンジン211を制御する。図2では、プリンタエンジン211としてC版のものだけが記載され、M版、Y版、K版については煩雑さを避けるために省略されている。
通信コントローラ208は、ネットワーク221を介しての通信を制御する。例えば、コンピュータ220から出力されたPDL(Page Description Language)データは、ネットワーク221を介して通信コントローラ208により受信される。通信コントローラ208は、受信したPDLデータを、メインメモリアービタ202およびメインメモリコントローラ203を介してメインメモリ210に転送する。
なお、ネットワーク221は、LAN(Local Area Network)などの所定の範囲内で通信を行うものでもよいし、インターネットなどより広範囲に通信可能なものでもよい。また、ネットワーク221は、有線通信に限らず無線通信を用いたものでもよいし、USB(Universal Serial Bus)やIEEE(Institute Electrical and Electronics Engineers)1394といったシリアル通信を行うものでもよい。
図3は、メインメモリ210の一例のフォーマットを示す。プログラム格納領域300は、CPU200が動作するためのプログラムが格納される。PDLデータ格納領域301は、例えばコンピュータ220から供給されたPDLデータが格納される。CMYKバンドデータ格納領域302は、CMYKバンドデータが格納される。ページ符号格納領域303は、バンドデータが圧縮符号化された符号データが格納される。ページ符号格納領域303は、複数ページ分の符号データを格納可能とされている。領域304は、上述した以外のデータが格納される。
図4は、図3におけるCMYKバンドデータ格納領域302の一例のフォーマットを示す。このように、CMYKバンドデータ格納領域302は、C版、M版、Y版およびK版の各版毎のプレーン構成とされ、各画素に対してそれぞれ8ビットが割り当てられる。すなわち、CMYKバンドデータは、各画素がそれぞれ8ビットのビット深度を持つ多値プレーン画像となっている。
ここで、メインメモリ210は、ワード単位でアクセスされる。この例では、1ワードが32ビットで構成される。上述のように、各画素がそれぞれ8ビットのビット深度を持つ場合、CMYKバンドデータ格納領域302では、連続する4画素が纏めてアクセスされることになる。
図5は、上述した構成を有するカラープリンタ100における画像処理を概略的に示す一例のフローチャートである。この図5のフローチャートを用い、上述した図2を参照しながら、カラープリンタ100の動作について概略的に説明する。
例えばコンピュータ220で生成されたPDLデータがネットワーク221を介して通信コントローラ208に受信され、メインメモリ210のPDLデータ格納領域301に記憶される(ステップS1)。CPU200は、メインメモリ210のPDLデータ格納領域301からPDLデータを読み出し、PDLを解析して(ステップS2)、解析結果に基づきCMYKのバンド画像を描画する(ステップS3)。描画されたCMYKのバンド画像によるCMYKバンドデータは、メインメモリ210のCMYKバンドデータ格納領域302に格納される(ステップS4)。このCMYKバンドデータは、上述したように、各画素が8ビットのビット深度を持つ多値プレーン画像データである。
符号化部204は、CMYKバンドデータ格納領域302からCMYKバンドデータを読み出して、本発明の実施形態による予測符号化方法に従い符号化する(ステップS5)。CMYKバンドデータが符号化された符号データは、メインメモリ210のページ符号格納領域303に格納される(ステップS6)。
復号部205は、ページ符号格納領域303からCMYKバンドデータが符号化された符号データを読み出して復号し、復号されたCMYKバンドデータを階調処理部206に供給する(ステップS7)。階調処理部206は、復号部205から供給されたCMYKバンドデータに対して階調処理を施す(ステップS8)。階調処理されたCMYKバンドデータは、プリンタエンジンコントローラ207を介してプリンタエンジン211に供給される(ステップS9)。プリンタエンジン211は、供給されたCMYKバンドデータに基づきプリントアウトを行う。
<符号化処理の概略>
図6は、本発明の実施形態による符号化部204の一例の構成を示す。符号化部204において、メインメモリ210のCMYKバンドデータ格納領域302から、画像読み込み部400によりCMYK各版毎のCMYKバンドデータが読み出される。このとき、CMYK各版毎のCMYKバンドデータは、図7に例示されるように、画像読み込み部400によりスキャンライン毎に順次、ワード単位で4画素毎に、CMYKバンドデータ格納領域302から読み出される。
図6は、本発明の実施形態による符号化部204の一例の構成を示す。符号化部204において、メインメモリ210のCMYKバンドデータ格納領域302から、画像読み込み部400によりCMYK各版毎のCMYKバンドデータが読み出される。このとき、CMYK各版毎のCMYKバンドデータは、図7に例示されるように、画像読み込み部400によりスキャンライン毎に順次、ワード単位で4画素毎に、CMYKバンドデータ格納領域302から読み出される。
画像読み込み部400によりワード単位で読み出されたCMYKバンドデータは、ラインメモリ制御部401によりラインメモリ402に格納される。ラインメモリ402は、少なくとも2ライン分のCMYKバンドデータを格納可能とされており、今回供給されたデータを格納すると共に、直前に格納した1ライン分のデータを保持するように、ラインメモリ制御部401に制御される。
例えば、ラインメモリ402は、それぞれ1ライン分の画素を格納可能な2つの領域を有し、1ライン分の画素データの符号化が終了すると、この画素データの符号化が終了したラインを一方の領域に保持し、他方の領域に次のラインの画素データを書き込むように制御される。
ラインメモリ制御部401の制御により、ラインメモリ402から、符号化対象となる連続する4画素、すなわち、1ワード分の注目画素の画素データが纏めて読み出され、並列簡易予測処理部410に渡される。それと共に、画像において当該注目画素となる4画素に対して直上に位置する、符号化済みの1ワード分の画素データが纏めて読み出され、並列簡易予測処理部410に渡される。
以下では、符号化対象である注目画素が属するラインを現ライン、現ラインに対してスキャン順で直前のラインを前ラインと呼ぶ。また、ラインメモリ402における現ラインが格納される領域を現ライン領域、前ラインが格納される領域を前ライン領域と呼ぶ。
ここで、現ラインにおける1ワード分の画素データがラインの先頭画素の画素データを含む場合には、この先頭画素の画素データのみが別途、直接的に予測処理部403に転送される。それと共に、前ラインおよび現ラインそれぞれにおいて、続く1ワード分の画素データがラインメモリ402から読み出され、並列簡易予測処理部410に渡される。
並列簡易予測処理部410は、ラインメモリ制御部401から渡された現ラインにおける1ワード分の画素データ(注目画素の画素データ)に1画素分の画素データを加えた5画素分の画素データと、前ラインにおける1ワード分の画素データに1画素分の画素データを加えた5画素分の画素データとを纏めて比較し、両者が一致するか否かを判定する。若し、両者が一致すると判定されたら、その旨がランレングス生成処理部405に通知される。一方、両者が一致しないと判定されたら、これら現ラインにおける5画素分の画素データと、前ラインにおける5画素分の画素データとが予測処理部403に渡される。
なお、詳細は後述するが、並列簡易予測処理部410における処理は、現ラインの連続する4画素を注目画素として纏めて予測処理を行い、予測値と注目画素との差分である予測誤差が「0」となる注目画素の連続数を示すランレングス値を、1ワード毎に求めるための処理である。予測処理は、後述するように、注目画素を右下の位置に含む2画素×2画素を単位として行われる。したがって、注目画素を連続する4画素とした場合、上述したように、並列簡易予測処理部410において、前ラインおよび現ラインのそれぞれで連続する5画素分の画素データを用いて処理が行われる。
予測処理部403は、ライン先頭画素に対する処理以外の場合において、並列簡易予測処理部410から渡された、現ラインにおける5画素分の画素データと、前ラインにおける5画素分の画素データとを用いて、注目画素の1画素毎に予測処理を行う。なお、予測処理部403は、直前の予測処理に用いた画素データを保持しているものとする。
本実施形態に適用可能な予測方式としては、平面予測方式、LOCO−I(LOw COmplexity LOssless COmpression for Images)方式、Paeth方式などがある。これらの予測方式は、注目画素の周辺の3画素a、bおよびcの画素値を用いて、注目画素の画素値を予測する。
ここで、図8を参照し、注目画素の周辺の3画素a、bおよびcのうち、画素aは、注目画素のスキャン順で直前の画素、画素bは、当該注目画素が属する現ラインに対してスキャン順で直前の前ライン、すなわち当該注目画素が属するラインの直上のラインにおいて当該注目画素の直上に位置する画素、画素cは、画素bのスキャン順で直前の画素である。
平面予測方式は、簡易な計算で注目画素の予測値を算出でき、高速な処理が可能である。一方、LOCO−I方式およびPaeth方式は、平面予測方式と比較して処理手順が多くなるが、より高い精度で予測値を求めることが可能である。予測処理部403で行われるこれらの予測方式については、後述する。
なお、画像の先頭の画素に対しては、上述の周辺の3画素a、bおよびcが存在しないので、画素a、bおよびcの画素値をそれぞれ「0」として注目画素の画素値を予測する。画像の先頭の画素は、例えば、画像内における画素のスキャンを、各ラインで画像の左端から右端にかけて行い、これを画像の上端のラインから下端のラインに向けて繰り返す場合、画像左上隅の画素となる。また、各ラインの先頭については、例えば画素aおよび画素cの画素値をそれぞれ「0」として予測を行うことが考えられる。これに限らず、画像の先頭画素と同様に、画素a、bおよびcの画素値をそれぞれ「0」として予測を行ってもよい。
予測処理部403で求められた予測値は、注目画素の画素値と共に予測誤差処理部404に供給される。予測誤差処理部404は、注目画素の画素値と、予測処理部403で求められた予測値との差分を予測誤差値として算出する。この予測誤差値は、ランレングス生成処理部405に供給される。
ランレングス処理部405は、予測誤差処理部404から供給された予測誤差値が「0」である場合に、ランレングス値を「1」だけ増加させる。また、並列簡易予測処理部410から、現ラインにおける5画素分の画素データと、前ラインにおける5画素分の画素データとが一致する旨の通知を受け取った場合には、ランレングス値を「4」だけ増加させる。一方、ランレングス処理部405は、予測誤差処理部404から供給された予測誤差値が「0」ではない場合は、予測誤差値とランレングス値と注目画素の画素値とを符号フォーマット生成処理部406に渡し、その後、ランレングス値を「0」にリセットする。
符号フォーマット生成処理部406は、ランレングス生成処理部405から渡されたランレングス値と、予測誤差値とをそれぞれ後述する符号フォーマットに従い符号化する。また、詳細を後述するように、予測誤差値が差分符号で表現可能な範囲外であれば、注目画素の画素値そのものを符号として用いる。符号フォーマット生成処理部406で生成された符号は、符号書き込み部407に渡され、メインメモリ210のページ符号格納領域303に書き込まれる。
<予測処理の例>
ここで、予測処理部403で用いられる予測方式について説明する。上述したように、本実施形態では、符号化済みの画素a、bおよびcの画素値から注目画素の画素値を予測する予測処理に、平面予測方式、LOCO−I方式またはPaeth方式を用いる。
ここで、予測処理部403で用いられる予測方式について説明する。上述したように、本実施形態では、符号化済みの画素a、bおよびcの画素値から注目画素の画素値を予測する予測処理に、平面予測方式、LOCO−I方式またはPaeth方式を用いる。
先ず、平面予測方式について説明する。平面予測方式は、図9に例示されるように、現ラインにおける、注目画素の直前に符号化された画素aと、前ラインにおいて注目画素および画素aそれぞれの直上に隣接する画素bおよびcとを用いて、下記の式(1)の計算を行い、注目画素に対する予測値を求める。
予測値=a+b−c …(1)
予測値=a+b−c …(1)
次に、LOCO−I方式について説明する。LOCO−I方式は、画素cの画素値と画素aおよび画素bの画素値とを比較した結果に応じて、予測値の算出方法を切り替える。図10は、LOCO−I方式による予測処理の例を示すフローチャートである。最初のステップS30で、画素cの画素値が画素aの画素値以上であって、且つ、画素cの画素値が画素bの画素値以上であるか否かが判定される。若し、画素cの画素値がこの条件を満たしていると判定されたら、処理はステップS31に移行され、画素aの画素値と画素bの画素値とが比較され、値が小さい方の画素値が予測値とされる。
一方、ステップS30で、画素cの画素値が上述の条件を満たしていない、すなわち、画素cの画素値が画素aの画素値未満であるか、または、画素cの画素値が画素bの画素値未満であると判定されたら、処理はステップS32に移行される。ステップS32では、画素cの画素値が画素aの画素値以下であって、且つ、画素cの画素値が画素bの画素値以下であるか否かが判定される。若し、画素cの画素値がこの条件を満たしていると判定されたら、処理はステップS33に移行され、画素aの画素値と画素bの画素値とが比較され、値が大きい方の画素値が予測値とされる。
一方、ステップS32で、画素cの画素値が上述の条件を満たしていない、すなわち、画素cの画素値が画素aの画素値を超えるか、または、画素cの画素値が画素bの画素値を超えると判定されたら、処理はステップS34に移行される。これは、換言すれば、画素aおよび画素bのうち何れか一方の画素値が画素cの画素値を超え、他方の画素値が画素cの画素値未満であることを意味する。ステップS34では、画素a、bおよびcの画素値について上述した式(1)の演算を行い、得られた値pを予測値とする。
次に、Paeth方式について説明する。図11は、Paeth方式による予測処理の例を示すフローチャートである。Paeth方式は、各画素a、bおよびcの単純な線形関数を計算し、各画素a、bおよびcのうち計算された値に最も近い値を予測値として選択する。より具体的には、上述の式(1)で値pを求め、求めた値pと、各画素a、bおよびcそれぞれの画素値との差分絶対値pa、pbおよびpcを算出する。算出されたこれら差分絶対値pa、pbおよびpcの大小関係に基づき、各画素a、bおよびcから予測値を選択する。
最初のステップS40で、上述の式(1)により、画素a、bおよびcの画素値から値pが計算される。そして、次のステップS41、ステップS42およびステップS43で、値pと各画素a、bおよびcそれぞれの画素値との差分絶対値pa、pbおよびpcが求められる。
なお、図11において、演算子absは、括弧内の値の絶対値を求めることを示す。また、以下では、煩雑さを避けるために、差分絶対値pa、pbおよびpcをそれぞれ値pa、pbおよびpcと呼ぶ。
ステップS43までの処理により値pa、pbおよびpcが求められると、処理はステップS44に移行される。ステップS44では、値paと値pbおよび値pcとが比較され、値paが値pb以下であって、且つ、値paが値pc以下であるか否かが判定される。若し、値paがこの条件を満たしていると判定されたら、処理はステップS45に移行され、画素aの画素値が予測値とされる。
一方、ステップS44で、値paが値pb以下であって、且つ、値paが値pc以下ではない、すなわち、値paが値pbを超えるか、または、値paが値pcを超えると判定されたら、処理はステップS46に移行される。ステップS46では、値pbと値paおよび値pcとが比較され、値pbが値pa以下であって、且つ、値pbが値pc以下であるか否かが判定される。若し、値pbがこの条件を満たしていると判定されたら、処理はステップS47に移行され、画素bの画素値が予測値とされる。
一方、ステップS46で値pbが値pa以下であって、且つ、値pbが値pc以下ではない、すなわち、値pbが値paを超えるか、または、値pbが値pcを超えると判定されたら、処理はステップS48に移行され、画素cの画素値が予測値とされる。
<符号フォーマット>
次に、図12−1および図12−2を用いて、符号フォーマット生成処理部406で生成される符号の一例のフォーマットについて説明する。本実施形態においては、予測誤差値とランレングス値とをそれぞれ符号化する。そして、図13に例示されるように、符号化されたランレングス値(符号化ランレングス値と呼ぶ)の後ろに符号化された予測誤差値(符号化予測誤差値と呼ぶ)を接続し、符号化ランレングス値および符号化予測誤差値の組を単位として符号列を生成する。
次に、図12−1および図12−2を用いて、符号フォーマット生成処理部406で生成される符号の一例のフォーマットについて説明する。本実施形態においては、予測誤差値とランレングス値とをそれぞれ符号化する。そして、図13に例示されるように、符号化されたランレングス値(符号化ランレングス値と呼ぶ)の後ろに符号化された予測誤差値(符号化予測誤差値と呼ぶ)を接続し、符号化ランレングス値および符号化予測誤差値の組を単位として符号列を生成する。
図12−1は、符号化予測誤差値の一例の符号フォーマットを示す。本実施形態では、予測誤差値は、値が大きいほど頻度が低くなるものとしてハフマン符号化される。このとき、予測誤差値を、段階的に設定された範囲に対してグループ分けし、グループ毎に異なる符号長が割り当てられるように符号化を行う。グループの識別は、生成されたハフマン符号の先頭から、グループ数に応じたビット数分の符号を用いて行う。本実施形態では、予測誤差値を8のグループに分類し、3ビットをグループの識別用に用いている。
以下では、グループの識別に用いるビットをグループ識別ビットと呼び、このグループ識別ビットに付加されるビットを付加ビットと呼ぶ。グループ識別ビットと付加ビットとで、予測誤差値毎にユニークなハフマン符号が構成される。
本実施形態では、予測誤差値Peに対して例えば次のように範囲を設定し、予測誤差値Peをグループ#0〜グループ#7の8グループに分類する。
グループ#0:Pe=1,Pe=−1
グループ#1:Pe=−3,Pe=−2,Pe=2,Pe=3
グループ#2:−7≦Pe≦−4,4≦Pe≦7
グループ#3:−15≦Pe≦−8,8≦Pe≦15
グループ#4:−31≦Pe≦−16,16≦Pe≦31
グループ#5:−63≦Pe≦−32,32≦Pe≦63
グループ#6:−127≦Pe≦−64,64≦Pe≦127
グループ#7:Pe≦−128,128≦Pe
グループ#0:Pe=1,Pe=−1
グループ#1:Pe=−3,Pe=−2,Pe=2,Pe=3
グループ#2:−7≦Pe≦−4,4≦Pe≦7
グループ#3:−15≦Pe≦−8,8≦Pe≦15
グループ#4:−31≦Pe≦−16,16≦Pe≦31
グループ#5:−63≦Pe≦−32,32≦Pe≦63
グループ#6:−127≦Pe≦−64,64≦Pe≦127
グループ#7:Pe≦−128,128≦Pe
また、各グループのグループ識別ビットと、付加ビットのビット長とを、例えば次のように設定する。
グループ#0:グループ識別ビット=「000」,付加ビット長=1ビット
グループ#1:グループ識別ビット=「001」,付加ビット長=2ビット
グループ#2:グループ識別ビット=「010」,付加ビット長=3ビット
グループ#3:グループ識別ビット=「011」,付加ビット長=4ビット
グループ#4:グループ識別ビット=「100」,付加ビット長=5ビット
グループ#5:グループ識別ビット=「101」,付加ビット長=6ビット
グループ#6:グループ識別ビット=「110」,付加ビット長=7ビット
グループ#7:グループ識別ビット=「111」,付加ビット長=8ビット
グループ#0:グループ識別ビット=「000」,付加ビット長=1ビット
グループ#1:グループ識別ビット=「001」,付加ビット長=2ビット
グループ#2:グループ識別ビット=「010」,付加ビット長=3ビット
グループ#3:グループ識別ビット=「011」,付加ビット長=4ビット
グループ#4:グループ識別ビット=「100」,付加ビット長=5ビット
グループ#5:グループ識別ビット=「101」,付加ビット長=6ビット
グループ#6:グループ識別ビット=「110」,付加ビット長=7ビット
グループ#7:グループ識別ビット=「111」,付加ビット長=8ビット
ここで、グループ#7の、注目画素の予測誤差値が−127より小さいか、若しくは、127より大きい場合は、ハフマン符号を用いずに、当該注目画素の画素値をそのまま付加ビットとして用いる。これは、予測誤差値が−255より小さいか、若しくは、255よりも大きくなった場合に、符号長が8ビットよりも大きくなり圧縮率が低下してしまうことを防止するためである。
図12−2は、符号化ランレングス値の一例の符号フォーマットを示す。本実施形態では、ランレングス値は、値が小さいほど短い符号長が割り当てられるようにハフマン符号化され、ランレングス値が「0」で1ビットの符号長が割り当てられ、符号「0」に符号化される。
以下、図12−2に例示されるように、ランレングス値が「1」の場合には、2ビットの符号長が割り当てられ、符号「10」に符号化される。また、ランレングス値が「2」〜「4」の場合は、4ビットの符号長が割り当てられ、それぞれ符号「1100」、「1101」および「1110」に符号化される。
ランレングス値が「5」以上の場合、4ビットの符号長を持つ符号「1111」の後ろに所定符号長の数値部を接続した形式に符号化される。数値部は、図12−2の下段に示されるように、例えば先頭に1ビットのヘッダを含む4ビットの符号長を有する、1または複数のフレームからなる。ランレングス値を示す符号が3ビット毎に区切られ、各フレームのヘッダを除く3ビットに対し、上述の符号「1111」側がMSBとなるように詰め込まれる。図12−2の例では、フレームは、最大数が7個に制限され、ランレングス値が「1048576」まで表現可能とされている。ランレングス値が「5」の場合は、フレームを省略することができる。
なお、ヘッダは、あるフレームに次のフレームが続くか否かを示す。例えば、ヘッダの値が「0」で次のフレームがあることを示し、ヘッダの値が「1」でそのフレームで終了することを示す。
<予測符号化処理の詳細>
次に、符号化部204で行われる、本実施形態による予測符号化処理の例について、より詳細に説明する。図14−1および図14−2は、実際のプリンタ画像の例を示す。なお、以下では、プリンタによる印刷対象の用紙において、短辺方向を横、長辺方向を縦と定義し、横方向にラインが形成されるものとする。
次に、符号化部204で行われる、本実施形態による予測符号化処理の例について、より詳細に説明する。図14−1および図14−2は、実際のプリンタ画像の例を示す。なお、以下では、プリンタによる印刷対象の用紙において、短辺方向を横、長辺方向を縦と定義し、横方向にラインが形成されるものとする。
図14−1は、一般的なビジネス文書などで多用される、白地に対して文字やCG(Computer Graphics)による画像が配置されている例である。この例では、白地が多く、画像の縦および横方向において相関が高い。また、図14−2は、画像の横方向にグラデーション処理が施された地に対して文字やCGによる画像が配置されている例であり、このような形式も、一般的なビジネス文書などで多用される。この例では、画像の縦方向において相関が高く、画像の横方向については画素値がなだらかに変化するため、縦方向に比べて相関が低くなっている。本実施例による予測符号化処理は、このような、画像の縦方向に相関が高い画像データに対して用いて好適なものである。
本実施形態による予測符号化処理を、図15および図16−1〜図16−4を用いて説明する。図15は、現ラインおよび前ラインの例を、ラインの先頭から示す。現ラインにおける画素G0、G1、G3、…と、前ラインにおける画素B0、B1、B2、…とは、それぞれ横方向の位置が対応する。また、前ラインおよび現ラインの各画素は、先頭から4画素毎に、すなわち、1ワード単位でメインメモリ210のCMYKバンドデータ格納領域302から読み出される。
図15に例示される画素配列において、先ず、予測処理部403において現ラインの先頭画素である画素G0の予測値が求められ、当該画素G0の符号化が行われる。画素G0が符号化されると、次に、並列簡易予測処理部410において、画素G0と、当該画素G0に連続する4画素G1、G2、G3およびG4とによる5画素と、当該5画素に対応する前ラインの画素B0、B1、B2、B3およびB4とを比較し、両者が一致するか否かを判定する。
両者が一致すると判定されたら、その旨がランレングス処理部405に通知され、ランレングス値に「4」が加算される。一方、両者が一致しないと判定されたら、画素G1、G2、G3およびG4について、予測処理部403においてそれぞれ予測値を求め、求められた予測値に基づき符号化を行う。
画素G0〜画素G4の処理が終了したら、並列簡易予測処理部410において、既に処理が終了した画素G4と、現ラインにおける画素G4に連続する画素G5、G6、G7およびG8との5画素と、当該5画素に対応する前ラインの5画素B4、B5、B6、B7およびB8とを比較し、両者が一致するか否かを判定する。
両者が一致すると判定されたら、その旨がランレングス処理部405に通知され、ランレングス値に「4」が加算される。一方、両者が一致しないと判定されたら、画素G5、G6、G7およびG8について、予測処理部403においてそれぞれ予測値を求め、求められた予測値に基づき符号化を行う。
さらに、画素G5〜画素G8の処理が終了したら、並列簡易予測処理部410において、既に処理が終了した画素G8と、現ラインにおける画素G8に連続する画素G9、G10、G11およびG12との5画素と、当該5画素に対応する前ラインの5画素B8、B9、B10、B11およびB12とを比較し、両者が一致するか否かを判定する。
両者が一致すると判定されたら、その旨がランレングス処理部405に通知され、ランレングス値に「4」が加算される。一方、両者が一致しないと判定されたら、画素G9、G10、G11およびG12について、予測処理部403においてそれぞれ予測値を求め、求められた予測値に基づき符号化を行う。
以降、現ラインにおける処理が終了した最終の画素と、当該最終画素に連続する4画素との5画素と、当該5画素に対応する前ラインにおける5画素とを比較して、両者が一致すればランレングス値を「4」加算し、両者が一致しなければ、最終画素の次の4画素の予測値をそれぞれ求めて符号化する処理を繰り返す。
図16−1〜図16−4を用いて、並列簡易予測処理部410における処理の意味について説明する。上述したように、並列簡易予測処理部410では、現ラインの連続する5画素G0〜G4と、対応する前ラインの5画素B0〜B4とを比較した結果、両者が一致するか否かを判定している。これは、現ラインの5画素のうち2番目からの4画素G1、G2、G3およびG4それぞれを注目画素としたときの、注目画素の周辺の3画素a、bおよびcの画素値と、注目画素の画素値とが一致するか否かを判定することと等価である。
すなわち、注目画素が画素G1である場合、図16−1に例示されるように、注目画素の周辺の3画素a、bおよびcは、それぞれ画素G0、画素B1および画素B0となる。この場合、画素G0と画素B0とで画素値が一致し、且つ、画素G1と画素B1とで画素値が一致するとき、現ラインおよび前ラインの画素値が一致する。
注目画素が画素G2、G3またはG4の場合も同様である。すなわち、注目画素が画素G2の場合、図16−2に例示されるように、注目画素の周辺の3画素a、bおよびcは、それぞれ画素G1、画素B2および画素B1となる。この場合、画素G1と画素B1とで画素値が一致し、且つ、画素G2(注目画素)と画素B2とで画素値が一致するとき、現ラインおよび前ラインの画素値が一致する。
注目画素が画素G3の場合、図16−3に例示されるように、注目画素の周辺の3画素a、bおよびcは、それぞれ画素G2、画素B3および画素B2となる。この場合、画素G2と画素B2とで画素値が一致し、且つ、画素G3(注目画素)と画素B3とで画素値が一致するとき、現ラインおよび前ラインの画素値が一致する。
また、注目画素が画素G4の場合、図16−4に例示されるように、注目画素の周辺の3画素a、bおよびcは、それぞれ画素G3、画素B4および画素B3となる。この場合、画素G3と画素B3とで画素値が一致し、且つ、画素G4(注目画素)と画素B4とで画素値が一致するとき、現ラインおよび前ラインの画素値が一致する。
注目画素と、注目画素の周辺の3画素a、bおよびcとにおいて、縦方向で画素値が一致することで必ず注目画素の予測誤差値が「0」となるならば、上述したような、現ラインと前ラインとで複数画素の画素値を纏めて比較した結果に基づく、複数画素に対する同時的な予測処理が可能となる。
この点について、予測方式として上述した各予測処理方式、すなわち、平面予測方式、LOCO−I方式またはPaeth方式を用いた場合を例にとって検証を試みる。図8に示されるように、注目画素に対して左に接する画素を画素aとし、注目画素および画素aの直上に接する画素をそれぞれ画素bおよび画素cとする。縦方向に画素値が一致するとき、注目画素の画素値Gと各画素a、bおよびcの画素値a、bおよびcは、画素値G=画素値b、画素値a=画素値cとなる。
平面予測方式では、上述した式(1)に従い予測値を求めると、画素値a=画素値cなので、予測値=a+b−c=bとなる。画素値bは注目画素の画素値Gと等しいので予測は的中し、予測誤差が「0」となる。図17−1を参照し、実際の数値を用いてより具体的に説明する。各々縦方向に隣接する注目画素Gおよび画素bの画素値をそれぞれ「30」、画素aおよび画素cの画素値をそれぞれ「80」とするとき、予測値=80+30−80=30となり、注目画素Gの画素値と一致する。したがって、予測誤差値=予測値−注目画素Gの画素値=0となる。
LOCO−I方式の場合について、上述した図10のフローチャートを参照しながら説明する。最初のステップS30の判定では、画素値a=画素値cなので、画素値bが画素値c(=画素値a)以下であれば処理がステップS31に移行され、画素値bおよび画素値aのうち値が小さい方が予測値とされる。ステップS30の判定により、画素値bは、画素値c(=画素値a)以下であるので、画素値bが予測値として選択される。これは、画素値a、bおよびcが等しい場合も含まれる。
一方、画素値bが画素値c(=画素値a)以下でない場合、すなわち画素値bが画素値cを超える場合、ステップS30の判定により処理がステップS32に移行される。ステップS32の判定では、先のステップS30の判定により画素値cが画素値b以下であることが確定しているので、処理がステップS34に移行され、上述の平面予測方式の場合と同じ計算がなされ、予測値=画素値bとされる。このように、画素値bの値如何に関わらず予測値=画素値bとされ、画素値bが注目画素Gの画素値と等しいので、予測誤差値が「0」となる。
図17−2を参照し、実際の数値を用いてより具体的に説明する。各画素値は、図17−1と同一である。画素値cと画素値aとが等しく、画素値cが「80」、画素値bが「30」で、画素値cが画素値bより大きいので、ステップS30の判定により処理がステップS31に移行される。画素値aが「80」、画素値bが「30」であるので、値が小さい画素値bが予測値として選択される。
Paeth方式の場合について、上述した図11のフローチャートを参照しながら説明する。ステップS40において、画素値aおよび画素値cが等しいので、値pは、画素値bと等しくなる。これにより、ステップS41〜ステップS43により、値pa、値pbおよび値pcは、それぞれ値pa=abs(画素値b−画素値a)、値pb=0、値pc=abs(画素値b−画素値c)のように計算される。値pb=0なので、値paおよび値pcは、それぞれ値pb以上となる。したがって、ステップS44およびステップS46の判定により、常に処理がステップS47に移行され、画素値bが予測値として選択される。この場合においても、画素値bの値如何に関わらず予測値=画素値bとされ、画素値bが注目画素Gの画素値と等しいので、予測誤差値が「0」となる。
図17−3を参照し、実際の数値を用いてより具体的に説明する。ステップS40では、値p=80+30−80=30と算出される。また、ステップS41〜ステップS43において、値pa、値pbおよび値pcがそれぞれ「50」、「0」および「50」と算出される。ステップS44では、値pa=値pcであり、且つ値paが値pb(=0)より大きいので、処理がステップS46に移行される。ステップS46では、値pb=0であって、値paおよび値pc以下となるので、処理がステップS47に移行され、画素値bが予測値として選択される。
以上のように、平面予測方式、LOCO−I方式およびPaeth方式の何れにおいても、縦方向に画素値が一致する場合には注目画素に対する予測誤差が「0」となることが検証される。したがって、これらの予測方式を用いた場合、水平方向に連続する複数画素を現ラインおよび前ラインとで比較することで、当該複数画素について同時に予測処理を行うことが可能となる。
図18−1および図18−2のフローチャートを用いて、本実施形態による予測符号化処理の例について、より具体的に説明する。なお、図18−1および図18−2に示されるフローチャートは、符号A、符号Bおよび符号Cにより連結される一連の処理を示す。
図18−1のフローチャートにおいて、ステップS100〜ステップS107の処理は、ラインの先頭における例外的な処理である。先ず、ステップS100で、画像読み込み部400により、メインメモリ210のCMYKバンドデータ格納領域302から、現ラインの先頭の画素から開始する1ワード分のデータGDATA0が読み出される。このデータGDATA0は、現ラインの先頭から4画素分の画素データを含む。この1ワードのデータGDATA0は、ラインメモリ制御処理部401により、ラインメモリ402の現ライン領域に書き込まれる(ステップS101)。
次のステップS102で、ラインメモリ制御処理部401により、ラインメモリ402の前ライン領域から、前ラインの先頭の画素から開始する1ワード分のデータBDATA0が読み出される。このデータBDATA0は、予測処理部403に渡される。
なお、メインメモリ210のCMYKバンドデータ格納領域302またはラインメモリ402から読み出される、4画素分の画素データを含む1ワードのデータは、ラインの先頭側がLSB(Least Significant Bit)、後端側がMSB(Most Significant Bit)であるものとする。すなわち、8ビットの画素データの4画素分が連なる32ビットのビット列において、ラインの先頭側の端のビットがLSB、後端側の端のビットがMSBとされる。以下では、MSBを0ビット目としてビット位置を記述する。
ステップS103で、予測処理部403は、ラインメモリ制御処理部401の制御によりラインメモリ402からデータGDATA0の31ビット目(LSB)から24ビット目までの8ビットを、注目画素のデータとして読み込む。そして、次のステップS104で、注目画素の周辺の3画素a、bおよびcのデータを用いて、平面予測方式、LOCO−I方式またはPaeth方式などにより、注目画素の画素値に対する予測値を求める。
ここで、この注目画素はラインの先頭画素であるため、注目画素の周辺の3画素a、bおよびcのうち注目画素の直上に接する画素bしか存在しないことになる。そこで、ステップS104では、例えば当該3画素a、bおよびcの画素値をそれぞれ「0」として、注目画素の予測値を求める。予測値が求められたら、次のステップS105で、予測値から注目画素の画素値が減じられて、予測誤差値が算出される。
予測誤差値が算出されると、次のステップS106およびステップS107で、予測誤差値の符号化が行われる。すなわち、ステップS106で、予測誤差値から、図12−1に示される符号フォーマットに従い予測誤差のグループを求め、さらに、ステップS107で予測誤差の付加ビットを求め、予測誤差値の符号化を行う。
なお、画像の先頭のラインを処理する場合、上述したステップS102の処理を省略することができる。
処理はステップS108に移行され、画像読み込み部400により、CMYKバンドデータ格納領域302からデータGDATA0に続く4画素分の画素データからなるデータGDATA1が読み出される。読み出されたこのデータGDATA1は、ラインメモリ制御部401の制御により、ラインメモリ402における現ライン領域の、上述のデータGDATA0の次の位置に書き込まれる(ステップS109)。
次のステップS110で、並列簡易予測処理部410は、ラインメモリ402の前ライン領域から、データGDATA1に横方向の位置が対応する4画素分の画素データからなる1ワードのデータBDATA1を、ラインメモリ制御部401の制御により読み込む。次のステップS111で、前回読み込んだデータBDATA0を左に8ビットシフトさせる。そして、データBDATA1の31ビット目から24ビット目の8ビット(すなわちBDATA1の左端の画素のデータ)を、8ビットシフトさせたデータBDATA0の下位8ビットに加えて、40ビットのデータBDATAを生成する。
なお、画像の先頭のラインを処理する場合、上述したステップS110の処理を省略し、データBDATA1の値を「0」とすることが考えられる。
ステップS112では、GDATA0およびGDATA1に対して、ステップS111と同様な処理が行われる。すなわち、並列簡易予測処理部410は、ラインメモリ402の現ライン領域から、ラインメモリ制御部401の制御によりデータGDATA1を読み込む。そして、前回読み込んだGDATA0を左に8ビットシフトさせ、データGDATA1の31ビット目から24ビット目の8ビット(すなわちGDATA1の左端の画素データ)を、8ビットシフトさせたGDATA0の下位8ビットに加えて、40ビットのデータGDATAを生成する。
次のステップS113では、今回読み込んだデータGDATA1およびデータBDATA1をそれぞれデータGDATA0およびデータBDATA0として、次回の処理に用いるデータとする。
処理は図18−2のフローチャートに移り、ステップS120において変数LOOPが「0」とされる。そして、次のステップS121で、上述のステップS111およびステップS112で生成されたデータGDATAとデータBDATAとが比較される。比較の結果、若し、データGDATAとデータBDATAとが等しいと判定されたら、その旨がランレングス生成処理部405に通知され、ランレングス生成処理部405によりランレングス値に「4」が加算される(ステップS122)。そして、処理が後述するステップS141に移行される。
換言すれば、ステップS121では、それぞれデータGDATAによる40ビットのデータ列と、データBDATAによる40ビットのデータ列とが比較し、データGDATAおよびデータBDATAとで各ビットが一致するか否かが判定される。
一方、ステップS121で、データGDATAとデータBDATAとの比較の結果、データGDATAとデータBDATAとが等しくないと判定されたら、処理はステップS123に移行される。このとき、並列簡易予測処理部410から予測処理部403に対し、データGDATAとデータBDATAとが渡される。以降、ステップS123〜ステップS130の処理では、予測処理部403により、変数LOOPの値に応じてGDATAから注目画素のデータが抽出される。
すなわち、ステップS123で変数LOOPが値「0」であるか否かが判定される。若し、値「0」ではないと判定されたら、処理はステップS125に移行される。一方、値「0」であると判定されたら、処理はステップS124に移行され、GDATAの31ビット目から24ビット目までの8ビットが、注目画素の画素データとして抽出される。これは、当該GDATAの元になる上述のGDATA0がラインの先頭画素の画素データを含む場合、先頭画素の次の画素の画素データとなる。図15を参照すると、ラインの先頭画素を画素G0とした場合、ステップS124で抽出される画素データは、画素G0に隣接する画素G1の画素データとなる。ステップS124で画素データが抽出されると、処理はステップS125に移行される。
ステップS125では、変数LOOPが値「1」であるか否かが判定される。若し、値「1」ではないと判定されたら、処理はステップS127に移行される。一方、変数LOOPが値「1」であると判定されたら、処理はステップS126に移行され、GDATAの23ビット目から16ビット目までの8ビットが、注目画素の画素データとして抽出される。これは、上述したステップS124で画素データが抽出される画素の次の画素の画素データである。ステップS126で画素データが抽出されると、処理はステップS127に移行される。
ステップS127では、変数LOOPが値「2」であるか否かが判定される。若し、値「2」ではないと判定されたら、処理はステップS129に移行される。一方、変数LOOPが値「2」であると判定されたら、処理はステップS128に移行され、GDATAの15ビット目から8ビット目までの8ビットが、注目画素の画素データとして抽出される。これは、上述したステップS126で画素データが抽出される画素の次の画素の画素データである。ステップS128で画素データが抽出されると、処理はステップS129に移行される。
ステップS129では、変数LOOPが値「3」であるか否かが判定される。若し、値「3」ではないと判定されたら、処理はステップS131に移行される。一方、変数LOOPが値「3」であると判定されたら、処理はステップS130に移行され、GDATAの7ビット目から0ビット目までの8ビットが、注目画素の画素データとして抽出される。これは、上述したステップS128で画素データが抽出される画素の次の画素の画素データである。ステップS130で画素データが抽出されると、処理はステップS131に移行される。
ステップS131では、予測処理部403により、上述のステップS123〜ステップS130で抽出された注目画素について、当該注目画素に対する周辺の3画素a、bおよびcの画素データに基づき、注目画素の画素値が予測される。3画素a、bおよびcのデータは、ステップS121からステップS123に処理が移行される際に並列簡易予測処理部410から渡されたGDATAおよびBDATAから抽出することができる。予測方式としては、例えば上述した平面予測方式、LOCO−I方式またはPaeth方式などを用いることができる。
ステップS131で注目画素の画素値の予測値が求められたら、処理はステップS132に移行され、予測値から注目画素の画素値が減じられて、予測誤差値が算出される。予測誤差値が算出されると、次のステップS133で予測誤差値が「0」であるか否かが判定される。若し、「0」であると判定されたら、処理はステップS134に移行され、ランレングス値に「1」が加算され、処理が後述するステップS139に移行される。
一方、ステップS133で予測誤差値が「0」ではないと判定されたら、処理はステップS135に移行され、図12−2に例示される符号フォーマットに従いランレングス値の符号化を行う。ランレングス値が符号化されると、次のステップS136でランレングス値が「0」に初期化される。次のステップS137およびステップS138で、図12−1に例示される符号フォーマットに従い、予測誤差値の符号化が行われる。すなわち、ステップS137で、予測誤差値から、図12−1に示される符号フォーマットにおける予測誤差値のグループを求め、さらに、ステップS138で予測誤差値の付加ビットを求め、予測誤差値の符号化を行う。予測誤差値が符号化されると、処理はステップS139に移行される。
ステップS139では、変数LOOPに「1」が加算され、次のステップS140で変数LOOPが値「4」未満であるか否かが判定される。若し、値「4」未満であると判定されたら、処理はステップS123に戻され、次の注目画素の抽出などの処理が行われる。
一方、ステップS140で変数LOOPが値「4」以上であると判定されたら、処理はステップS141に移行され、直前に予測値を求めた注目画素が現ラインの最終画素であるか否かが判定される。若し、ラインの最終画素ではないと判定されたら、処理は図18−1のフローチャートにおけるステップS108に戻され、画像読み込み部400により、次の1ワード分の画素データがCMYKバンドデータ格納領域302から読み出され、以降、この読み出された画素データに対する処理が行われる。
一方、ステップS141で、直前に予測値を求めた注目画素が現ラインの最終画素であると判定されたら、処理はステップS142に移行され、ラインメモリ402に格納される現ラインデータが前ラインデータに変換される。
次のステップS143では、画像の全ラインについて処理が終了したか否かが判定される。若し、終了したと判定されたら、一連の予測符号化処理が終了される。一方、画像の全ラインについて処理が終了していないと判定されたら、処理は図18−1のフローチャートにおけるステップS100に戻され、次のラインの処理が行われる。
以上説明したように、本実施形態によれば、画像の横方向すなわちライン方向に連続する複数画素について、現ラインおよび前ラインを比較し、両者が一致するときに、当該複数画素を順次用いて予測処理を行った場合の予測が全て的中すると判断している。そして、この場合において、予測が的中すると判断された複数画素の画素数分、ランレングス値を加算する。複数画素の比較により現ラインと前ラインとで一致しないと判断された場合には、画素毎に通常歩予測方式を用いて予測を行う。そのため、同一色の地が占める割合が多い画像や、縦方向に相関の高い画像などで処理を高速化できる。また、予測方式としても正しいため、圧縮率が損なわれることもない。
なお、上述では、5画素毎に画素値の比較を行い、1ワード単位で纏めて予測処理を行うようにしているが、これはこの例に限定されない。すなわち、5画素よりも多い画素数で画素値の比較を行い、纏めて予測処理を行うようにしてもよい。また、5画素より少ない画素数で画素値の比較を行うことも可能である。
また、上述では、予測処理部403に適用される予測方式の例として、平面予測方式、LOCO−I方式およびPaeth方式を挙げたが、これはこの例に限定されない。すなわち、予測処理部403では、画像の縦方向に画素値が一致する場合に予測誤差値が「0」となる予測方式であれば、他の方式を適用することができる。
<他の実施形態>
なお、上述では、本発明の実施形態による符号化部204を構成する各部がハードウェア的に構成されるように説明したが、これはこの例に限定されない。すなわち、本発明に実施形態に適用な可能なカラープリンタ100における符号化部204は、カラープリンタ100に組み込まれたCPU(図示しない)上で動作するプログラムとして、それぞれ実現可能である。
なお、上述では、本発明の実施形態による符号化部204を構成する各部がハードウェア的に構成されるように説明したが、これはこの例に限定されない。すなわち、本発明に実施形態に適用な可能なカラープリンタ100における符号化部204は、カラープリンタ100に組み込まれたCPU(図示しない)上で動作するプログラムとして、それぞれ実現可能である。
この場合、CPU上で符号化部204として実行されるプログラムは、例えば図6を用いて説明した符号化部204の各機能部(画像読み込み部400、ラインメモリ制御処理部401、並列簡易予測処理部410、予測処理部403、予測誤差処理部404、ランレングス生成処理部405、符号フォーマット生成処理部406および符号書き込み部407)を含むモジュール構成となっている。
このプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD(Compact Disk)、フレキシブルディスク(FD)、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録されて提供される。これに限らず、プログラムは、CPUに接続されるROM(図示しない)に予め記憶させておいてもよい。さらに、プログラムは、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、このプログラムを、インターネットなどのネットワーク経由で提供または配布するように構成してもよい。
実際のハードウェアとしては、CPUが、例えば上述した記録媒体から符号化部204として機能するプログラムを読み出して実行することにより、上述した各部が主記憶装置(図示しない)上にロードされる。そして、画像読み込み部400、ラインメモリ制御処理部401、並列簡易予測処理部410、予測処理部403、予測誤差処理部404、ランレングス生成処理部405、符号フォーマット生成処理部406および符号書き込み部407が主記憶装置上に生成されるようになっている。
204 符号化部
205 復号部
210 メインメモリ
302 CMYKバンドデータ格納領域
303 ページ符号格納領域
401 ラインメモリ制御部
402 ラインメモリ
403 予測処理部
404 予測誤差処理部
405 ランレングス生成処理部
406 符号フォーマット生成処理部
410 並列簡易予測処理部
205 復号部
210 メインメモリ
302 CMYKバンドデータ格納領域
303 ページ符号格納領域
401 ラインメモリ制御部
402 ラインメモリ
403 予測処理部
404 予測誤差処理部
405 ランレングス生成処理部
406 符号フォーマット生成処理部
410 並列簡易予測処理部
Claims (10)
- 多値画像データを圧縮符号化する画像処理装置であって、
符号化対象ラインにおける符号化済みの1画素および該1画素に連続する複数の注目画素とからなる第1の画素群と、該符号化対象ラインの直前に符号化されたラインにおける該第1の画素群と位置が対応する第2の画素群とを比較した比較結果に基づき、注目画素の画素値に対する予測値との差分である予測誤差値が0であるか否かを、該複数の注目画素について纏めて判定する第1の予測手段と、
前記第1の予測手段で前記複数の注目画素の前記予測誤差値が0ではないと判定された場合に、該複数の注目画素のそれぞれについて、該注目画素の画素値に対する予測値を、該注目画素の画素値と該注目画素の周辺画素の画素値とに基づく予測により求め、該予測により求められた該予測値の該注目画素の画素値に対する予測誤差値を算出する第2の予測手段と、
前記第1の予測手段および前記第2の予測手段で得られた前記予測誤差値の符号化を行う符号化手段と
を有する
ことを特徴とする画像処理装置。 - 前記第1の予測手段は、
前記第1の画素群および前記第2の画素群とで互いに位置が対応する画素の画素値をそれぞれ比較した比較結果に基づき、前記複数の注目画素の予測誤差値が0であるか否かを纏めて判定する
ことを特徴とする請求項1に記載の画像処理装置。 - 前記第1の予測手段は、
前記第1の画素群を構成する全画素の画素データによる第1のビット列と、前記第2の画素群を構成する全画素の画素データによる第2のビット列とを比較し、該第1のビット列と該第2のビット列とが一致した場合に、前記複数の注目画素の予測誤差値が0であると判定する
ことを特徴とする請求項1または請求項2に記載の画像処理装置。 - 前記第1の予測手段および前記第2の予測手段で求められた前記予測誤差値が0の長さを示すランレングス値を生成するランレングス生成手段をさらに有し、
前記符号化手段は、
前記第1の予測手段および前記第2の予測手段で求められた前記予測誤差値と前記ランレングス生成手段で生成された前記ランレングス値とをそれぞれ符号化する
ことを特徴とする請求項1乃至請求項3の何れか1項に記載の画像処理装置。 - 前記ランレングス生成手段は、
前記第1の予測手段で前記複数の注目画素の予測誤差値が0であると判定されたら、前記ランレングス値を該複数の注目画素の個数分だけ増加させる
ことを特徴とする請求項4に記載の画像処理装置。 - 前記符号化手段は、
前記ランレングス値および前記予測誤差値の符号化をハフマン符号を用いて行う
ことを特徴とする請求項4または請求項5に記載の画像処理装置。 - 前記符号化手段は、
前記ランレングス値および前記予測誤差値の符号化を互いに独立したハフマン木に基づきそれぞれ行う
ことを特徴とする請求項6に記載の画像処理装置。 - 前記符号化手段は、
前記予測誤差値に対応するハフマン符号の符号長が前記注目画素による画像データのビット長以上の長さになる場合に、前記符号化を行った符号として該注目画素による画像データそのものを用いる
ことを特徴とする請求項6または請求項7に記載の画像処理装置。 - 前記符号化手段は、
前記符号化を行った前記ランレングス値と、前記符号化を行った前記予測誤差値とによる組を単位として符号データを形成する
ことを特徴とする請求項4乃至請求項8の何れか1項に記載の画像処理装置。 - 多値画像データを圧縮符号化する画像処理方法であって、
符号化対象ラインにおける符号化済みの1画素および該1画素に連続する複数の注目画素とからなる第1の画素群と、該符号化対象ラインの直前に符号化されたラインにおける該第1の画素群と位置が対応する第2の画素群とを比較した比較結果に基づき、注目画素の画素値に対する予測値との差分である予測誤差値が0であるか否かを、該複数の注目画素について纏めて判定する第1の予測ステップと、
前記第1の予測ステップで前記複数の注目画素の前記予測誤差値が0ではないと判定された場合に、該複数の注目画素のそれぞれについて、該注目画素の画素値に対する予測値を、該注目画素の画素値と該注目画素の周辺画素の画素値とに基づく予測により求め、該予測により求められた該予測値の該注目画素の画素値に対する予測誤差値を算出する第2の予測ステップと、
前記第1の予測ステップおよび前記第2の予測ステップで得られた前記予測誤差値の符号化を行う符号化ステップと
を有する
ことを特徴とする画像処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009162414A JP2011019096A (ja) | 2009-07-09 | 2009-07-09 | 画像処理装置および画像処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009162414A JP2011019096A (ja) | 2009-07-09 | 2009-07-09 | 画像処理装置および画像処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011019096A true JP2011019096A (ja) | 2011-01-27 |
Family
ID=43596548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009162414A Pending JP2011019096A (ja) | 2009-07-09 | 2009-07-09 | 画像処理装置および画像処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011019096A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016092552A (ja) * | 2014-10-31 | 2016-05-23 | 株式会社リコー | 画像処理装置及び画像処理方法 |
US9407918B2 (en) | 2012-01-25 | 2016-08-02 | Kabushiki Kaisha Toshiba | Apparatus and method for coding image, and non-transitory computer readable medium thereof |
-
2009
- 2009-07-09 JP JP2009162414A patent/JP2011019096A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9407918B2 (en) | 2012-01-25 | 2016-08-02 | Kabushiki Kaisha Toshiba | Apparatus and method for coding image, and non-transitory computer readable medium thereof |
JP2016092552A (ja) * | 2014-10-31 | 2016-05-23 | 株式会社リコー | 画像処理装置及び画像処理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5369982B2 (ja) | 画像処理装置および画像処理方法 | |
JP5081539B2 (ja) | 画像データ符号化装置、画像データ符号化方法、画像形成装置、画像形成方法、画像データ復号化装置、及び画像データ復号化方法 | |
US7359557B2 (en) | Method of and apparatus for encoding, method of and apparatus for decoding, and image forming apparatus | |
JP5509957B2 (ja) | 画像処理装置および画像処理方法、ならびに、画像形成装置 | |
JP2005309865A (ja) | 画像処理装置および画像処理方法、並びに画像処理方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2011019096A (ja) | 画像処理装置および画像処理方法 | |
US20120155779A1 (en) | Image processing apparatus and image processing method | |
JP5218332B2 (ja) | 画像処理装置および画像処理方法 | |
JP2011019095A (ja) | 画像処理装置および画像処理方法 | |
JP5201040B2 (ja) | 画像処理装置、画像処理方法およびプログラム | |
JP4568685B2 (ja) | 画像処理装置および画像処理方法、並びに画像処理方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2010219777A (ja) | 画像処理装置、画像処理方法およびプログラム | |
JP2012134929A (ja) | 画像処理装置および画像処理方法 | |
JP4490783B2 (ja) | 画像処理装置および画像処理方法、並びに画像処理方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2010074444A (ja) | 画像圧縮装置、画像圧縮方法、画像復号装置、画像復号方法、及び、コンピュータプログラム | |
JP6451221B2 (ja) | 画像処理装置及び画像処理方法 | |
JP2008193138A (ja) | 画像処理装置および画像処理方法 | |
JP2013164557A (ja) | 画像形成制御装置、画像形成制御方法及び画像形成制御プログラム | |
JP2005305873A (ja) | 画像処理装置および画像処理方法、並びに画像処理方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2012147330A (ja) | 画像処理装置および画像処理方法 | |
JP4774914B2 (ja) | 画像処理装置、および画像処理方法 | |
JP2010219776A (ja) | 画像処理装置、画像処理方法およびプログラム | |
JP2012134659A (ja) | 画像処理装置および画像処理方法 | |
JP2005260872A (ja) | 画像処理装置および画像処理方法、並びに画像処理方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2004236042A (ja) | 画像処理装置および画像処理方法 |