(57)【要約】【課題】可逆符号化データ及び不可逆符号化データの混在した符号化画像データの復号に要するメモリ量を削減する。【解決手段】画像データ中の画素ブロックを毎にＪＰＥＧ符号化するか否かを判断する（Ｓ１４０５）。ランレングス符号化を行うと判断した場合には、ステップＳ１４０９に進む。また、ＪＰＥＧ符号化を行うと判断した場合にはＪＰＥＧ符号化を行ない、その結果をＪＰＥＧバッファに一時的に蓄積する。そして、符号化対象であった同領域を所定値で置換え、ランレングス符号化を行う。１ラスタユニットの符号化が完了した場合（Ｓ１４１０）、符号化対象が最初のラスタユニットである場合には、そのランレングス符号化データを出力するだけにする（Ｓ１４１２、Ｓ１４１３がＹＥＳ）。一方、２番目以降のラスタユニットに対する符号化が完了した場合には、第ｉ番目のランレングス符号化データの出力（Ｓ１４１２）に続いて、第ｉ−１番目のＪＰＥＧ符号化結果を出力する（Ｓ１４１４）。【選択図】  図１４
2004304361.tif 000002
【特許請求の範囲】
【請求項１】
画像データを所定サイズの画素ブロック単位に符号化する画像処理方法であって、
画像データを不可逆符号化する第１の符号化工程と、
画像データを可逆符号化する第２の符号化工程と、
前記画像データの画素ブロック単位に前記第１の符号化工程を行うか否かを判定工程と、
該判定工程で前記第１の符号化工程で符号化すると判定した場合、前記第１の符号化工程による符号化して得られた画素ブロックの符号データを一時的に蓄積する第１の蓄積工程と、
前記第１の符号化工程で符号化した対象となった画素ブロック内の全画素値を所定値で置換える置換え工程と、
該置換え工程による置換え後の画素ブロック、及び、前記判定工程で第１の符号化工程で行わないと判定された画素ブロックに対し、前記第２の符号化工程で符号化を行わせ、得られた符号データを一時的に蓄積する第２の蓄積工程と、
前記第１の蓄積工程で蓄積された符号化データを、前記第２の蓄積工程で蓄積された符号化データよりも、所定単位だけ遅らせて出力する出力工程と
を備えることを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像データを圧縮符号化技術に関するものである。
【０００２】
【従来の技術】
従来より、画像情報を複数の領域に分割し、それぞれの領域に対して適した符号化法（ハイブリッド符号化法）を適用することにより、符号化効率の向上を実現する方法が数多く提案されている。
【０００３】
ここで、ハイブリッド符号化で採用する符号化の種類としては、デジタルカメラで撮像された自然画等の中間調領域についてはＪＰＥＧ符号化、文字・線画といった領域についてはランレングス符号化を行うのが一般的であろう。
【０００４】
【発明が解決しようとする課題】
ところで、昨今のプリンタは記録解像度が１０００ｄｐｉを越えるものが存在し、ホストコンピュータからプリンタへ出力する画像データの情報量は大きなものとなる。特に、カラープリンタの場合には、色成分の数だけ増えることになり、その情報量は膨大なものとなる。従って、かかるプリントシステムに上記のようなハイブリッド符号化法を適用することが望まれる。
【０００５】
かかるシステムを考察した場合に問題となるのは、例えば、プリンタがインクジェットプリンタのような場合、基本的には記録ヘッドを搭載したキャリッジを走査運動を行ない印刷するものであるから、少なくともそのプリンタには１走査分の記録イメージを展開するメモリを必要とするのは勿論であるが、復号処理に十分なバッファメモリを必要とする。
【０００６】
本発明は可逆符号化データ及び不可逆符号化データの混在した符号化画像データの復号に要するメモリ量を削減する技術を提供しようとするものである。
【０００７】
【課題を解決するための手段】
かかる課題を解決するため、例えば本発明の画像処理方法は以下の工程を備える。すなわち、
画像データを所定サイズの画素ブロック単位に符号化する画像処理方法であって、
画像データを不可逆符号化する第１の符号化工程と、
画像データを可逆符号化する第２の符号化工程と、
前記画像データの画素ブロック単位に前記第１の符号化工程を行うか否かを判定工程と、
該判定工程で前記第１の符号化工程で符号化すると判定した場合、前記第１の符号化工程による符号化して得られた画素ブロックの符号データを一時的に蓄積する第１の蓄積工程と、
前記第１の符号化工程で符号化した対象となった画素ブロック内の全画素値を所定値で置換える置換え工程と、
該置換え工程による置換え後の画素ブロック、及び、前記判定工程で第１の符号化工程で行わないと判定された画素ブロックに対し、前記第２の符号化工程で符号化を行わせ、得られた符号データを一時的に蓄積する第２の蓄積工程と、
前記第１の蓄積工程で蓄積された符号化データを、前記第２の蓄積工程で蓄積された符号化データよりも、所定単位だけ遅らせて出力する出力工程とを備える。
【０００８】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【０００９】
先ず、本願発明者が検討したハイブリッド符号化法の概要を説明することとする。
【００１０】
図１は本願発明者によるハイブリッド符号化法のブロック図を示している。同図では、画像に適用する複数の符号化法として、可逆符号化法であるランレングス符号化１０２と、非可逆符号化法であるＪＰＥＧ符号化部１０３の２種類を用意している。入力端子１００から入力された画像は、まずプレーン分割部１０１においてプレーン分割処理が行われる。具体的には、画像を任意サイズの小ブロック（例えば８×８の正方ブロックで、以降画素ブロックと言う）に分割し、この画素ブロックをあらかじめ定められた条件に従って、前記２種類の符号化法のうち、どちらの符号化を行うべきかという判定を行う。例えば、ブロック内の最大、最小濃度値の差を求め、この差がある一定値より大きい場合、ブロック内には文字部やエッジ部が含まれていると考え、このようなブロックには無歪符号化（可逆符号化）、すなわち図１の例であればランレングス符号化部１０２による符号化を行わせる。また上記条件に適合しない場合は、非可逆であるものの、より圧縮率の高いＪＰＥＧ符号化を行う。なお、ランレングス符号化やＪＰＥＧ符号化のアルゴリズムに関しては、広く知られるところであるため、ここでの詳細な説明は省略する。
【００１１】
図２はプレーン分割処理の概念図を示している。図１の例ではＪＰＥＧを用いるため、図２では画像を画素ブロックに分割し、各ブロック単位でプレーン分割処理を行っている。同図において、斜線で示したブロックが、前記判定により、ＪＰＥＧ符号化を行うべきであると判断されたブロックである。このようなブロックは原画像から抽出され、原画像とは別の２０１に示すようなＪＰＥＧプレーンを構成する。なお、ブロックが抽出された原画像の該当する領域（８×８画素領域）は、任意の値、たとえば（Ｒ，Ｇ，Ｂ）＝（２５５，２５５，２５５）で埋めることでランレングスプレーンとする。これにより、ＪＰＥＧで符号化すると判定された画素ブロック位置の領域については、ランレングス符号化の効率を極限まで高める。
【００１２】
このような処理により生成された２つの画像情報（プレーン）は、それぞれランレングス符号化部１０２とＪＰＥＧ符号化部１０３に入力され、圧縮符号化される。
【００１３】
圧縮符号化されたデータはフォーマット形成部１１０に入力され、図３に示したようなフォーマットを形成した後、出力端子から出力する。同図に示したフォーマットでは、図２に示したラスターユニット（同図では８ライン単位）毎に、ランレングスデータ、ＪＰＥＧブロック位置情報、ＪＰＥＧデータの３種類のデータを交互に転送するようになっている。ここでＪＰＥＧブロック位置情報とは、図２において示された各ブロックに対して割り当てられた１ビットの識別情報であり、プレーン分割部１０１でＪＰＥＧプレーンに分類されたブロックには“１”を、ランレングスプレーンに分類されたブロックには“０”を割り当てる。この１ビットの情報により、復号化側では、復号したＪＰＥＧブロックをランレングスプレーン上に合成することが可能となる。
【００１４】
出力された画像情報はメモリやハードディスク等の記憶装置に保存されたり、通信路を介して別のコンピュータやデバイスに転送される。
【００１５】
上記処理で生成された符号化データを受信し、復号する装置としては、例えば図４のような構成のプリンタを考えた。ここで、４００はプリンタ装置であり、４０１は装置全体の制御を司るＣＰＵ、４０２は印刷処理（復号処理を含む）を行うためのプログラムを格納しているＲＯＭである。４０３は各種バッファ及びＣＰＵ４０１のワークエリアとして使用するＲＡＭである。４０４はホストコンピュータからの印刷データ（ハイブリッド符号化法で圧縮符号化された画像データ）を受信するためのインタフェース、４０５はインク液滴を吐出するプリンタエンジンである。ただし、印刷方式はこれに限らず、他の方式でも構わない。
【００１６】
図５は図４の構成における、復号処理に係る機能を模試的に示す構成である。以下に説明する構成は、プログラムモジュールであると考えると分かり易いが、ハードウェアでもって実現しても構わないのは勿論である。
【００１７】
図５において、入力端子５００から入力された符号化情報のうち、ランレングス、およびＪＰＥＧの符号化データは、それぞれの復号化部に入力され、各プレーンの復号化処理が行われる。次にプレーン合成部５０９において、復号化されたランレングスプレーンに対し、復号化されたＪＰＥＧプレーンの各ブロックを合成することにより、原画像を再構成する。
【００１８】
上記ハイブリッド符号化及びその復号方法は様々な用途に応用でき、例としてはホストコンピュータにおけるプリンタドライバの一部に上記符号化方法を適用し、プリンタ内では上記復号方法を適用した処理を行うことが考えられ、それら２者間に流れる画像データに適用して、情報量を削減することが可能となる。
【００１９】
ところで、ランレングス符号化の中には、符号化したい注目画素と同一か否かの比較を行う参照画素の位置が、図６に示すように左方に加え上方に持つものも存在する。すなわち、左方だけでなく、上方のある任意の位置と注目画素を比較し、同一濃度値であれば、連続する画素の数を符号として出力するようなランレングス符号化も存在する。さらに、参照画素位置は注目画素と隣接しているとは限らず、同図に示すように、数画素離れている場合も考えられる。このような場合には、復号装置内で合成結果の画像を保存するためのバッファメモリとは別に、復号化したＪＰＥＧブロックを保存するためのバッファメモリも必要となる。
【００２０】
上記問題点について図示したものが図７である。同図は復号化装置内部のバッファメモリの利用状況を示しており、７００が最終的な合成画像を保存するためのバッファメモリ、７０１が復号化したＪＰＥＧブロックを保存しておくためのバッファメモリである。図３に示したようなフォーマットで符号化装置から復号化装置に画像情報が転送された場合、復号化側ではまず「０１」ラスターユニットのランレングス符号化データを復号化し、バッファメモリ７００の先頭から格納する。次に、「０１」ラスターユニットのＪＰＥＧデータを復号化することになるが、復号化した画像ブロックを直ちにバッファメモリ７００上に合成することはできない。なぜなら、「０２」ラスターユニットのランレングスデータが上方参照を用いて符号化されている場合、ＪＰＥＧブロックを合成する前の「０１」ラスターユニットを参照する必要があるからである。よって、「０１」ラスターユニットのＪＰＥＧブロックは、「０２」ラスターユニットのランレングスデータを復号化した後に合成される必要があるため、その間、一時的に図７に示したＪＰＥＧ復号化用のバッファメモリ７０１に蓄積しておく必要がある。より分かりやすく説明すると、ＪＰＥＧ符号を行うと判断された画素ブロックの存在していた領域は、所定値で置き換わっており、この所定値を参照してランレングス符号化を行っていることが有り得るからである。
【００２１】
このようなハイブリッド符号化法を、例えばホストコンピュータとプリンタ間に流れる画像情報に適用した場合、復号化装置はプリンタ内部に組み込む必要がある。ここで、プリンタがインクジェットプリンタであって、印字可能幅を２０ｃｍとし、印刷解像度を６００ｄｐｉとした場合、図７に示したＪＰＥＧ復号化用のメモリバッファは、約１１１ＫＢ必要ということになり、復号化装置が使用可能なリソース（メモリ）が少ない場合に適用できないことになる。
【００２２】
また、図７によれば、ＪＰＥＧ復号化モジュールから出力されたＪＰＥＧブロックを一度バッファメモリ７０１に蓄積しておき、さらに合成するためにバッファメモリ７００にコピーする処理が必要があるため、処理速度の観点からも問題と成り得る。
【００２３】
本実施形態では、かかる問題点も一掃する。このため、図１のフォーマット形成部１１０においては、図８に示すようなフォーマットのデータを形成する。
【００２４】
同図では、データ系列の先頭にヘッダ部が生成されている。このヘッダ部には圧縮符号化対象となる画像のサイズや画素あたりの階調数、一つのラスターユニットが何ラインで構成されているか等の情報が含まれている。続いて符号化後の２種類の画像情報が格納されるが、本実施形態の特徴として、ランレングスデータのみ、他の情報に対して１ラスターユニット分先行している。このようにフォーマットを形成することにより、前記問題点を解決することが可能となる。尚、１ラスターユニットだけ先行させるのは、注目画素を符号化する際に、参照する画素位置が１ラスタユニット以内にあるとした場合である。
【００２５】
図９は、本実施形態における復号化装置内部のメモリの使用状況を示すものである。復号化手順を以下に説明する。
【００２６】
図８に示すデータ系列を受信した復号化装置は、まずヘッダ部を解析し、次に「０１」ラスターユニットのランレングスデータの復号化を行う。復号化された画像は、図９に示すバッファメモリ９００の先頭部に格納する。次に復号化装置は、後続する「０２」ラスターユニットのランレングスデータの復号化を行う。この際に「０１」ラスターユニットの画素を参照（上方参照）する可能性があるが、「０１」ラスターユニット内にはＪＰＥＧブロックが合成されていないため、問題なく復号することが可能である。その結果、得られた画像情報は、合成画像用バッファメモリに上記「０１」ラスターユニットの復号化画像情報に続いて格納される。次に復号化装置は、後続する「０１」ラスターユニットのＪＰＥＧデータを復号化し、「０１」ラスターユニットのＪＰＥＧブロック位置情報を参照しながら、合成画像用バッファの「０１」ラスターユニット部分にブロック単位で合成してゆく。このように、ＪＰＥＧブロックの合成を、ランレングスデータの復号化に対して、常に１ラスターユニット分遅延させて行う。この結果、復号処理を行う側（実施形態ではプリンタ）では、受信したＪＰＥＧのデータを、復号してダイレクトにバッファ９００の該当する位置に上書きできることなり、従来必要であったＪＰＥＧ復号化用バッファメモリが不要、もしくは少なくできる。また、特に、合成画像用バッファメモリにＪＰＥＧブロックを直接合成する場合には、１画素ブロックのＪＰＥＧ符号化データを格納するメモリがあれば良くなり、ＪＰＥＧ復号化用の別途バッファメモリは不要になり、尚且つ、そこからのコピー処理も不要とすることができるようになる。
【００２７】
以上の説明からもわかるように、復号する側（実施形態ではプリンタ）では、１ラスタユニットだけ先行して受信したランレングス符号化データを受信することになるので、基本的には、受信した順にランレングス符号化データについてはランレングス復号処理し、ＪＰＥＧ符号化した位置については、その後に受信するＪＰＥＧ符号化データに従って復号結果をダイレクトに該当する位置に上書きするだけで良い。換言すれば、上記処理の特徴となる処理の主要部分は符号化する側にあると言える。
【００２８】
符号化する側の処理は、先に説明したようにホストコンピュータ上で動作するコンピュータプログラムで実現できる。そこで、上記機能を実現する具体的な構成と処理手順を図１３、図１４に従って以下に説明する。なお、以下の説明では、プリンタドライバに適用した例について説明することとする。
【００２９】
図１３はホストコンピュータのブロック構成図であり、一般のパーソナルコンピュータ等の汎用情報処理装置の構成で構わない。図示において、１３０１は装置全体の制御を司るＣＰＵであり、１３０２はブートプログラム及びＢＩＯＳ等を記憶しているＲＯＭである。１３０３はＣＰＵ１３０１のワークエリアとして使用するＲＡＭであって、ここにＯＳやアプリケーション、並びにプリンタドライバがロードされ実行されることになる（図示のランレングスバッファ、ＪＰＥＧバッファ、ｆｌａｇバッファについては、図１４のフローチャートの説明で明らかにする）。１３０４はＯＳ、アプリケーション、各種データファイル、プリンタドライバを記憶しているハードディスクである。１３０５はキーボードやポインティングデバイス（ＰＤ）であり、１３０６はビデオメモリを内蔵し、表示しようとするイメージのビデオメモリへの描画並びにビデオメモリからのデータを読み込みビデオ信号として出力する表示制御部、１３０７はビデオ信号に従って画像を表示する表示装置である。そして、１３０８はＩ／Ｏインタフェースであり、プリンタと接続するためのものである。なお、プリンタがネットワークに上に存在する場合には、同インタフェースはネットワークインタフェースとなる。
【００３０】
さて、上記構成において、アプリケーションを実行させ、印刷処理を行うと、、プリンタドライバは印刷イメージを生成し、その生成した印刷イメージの圧縮符号化を行ない、その結果をＯＳに渡すことで、Ｉ／Ｏインタフェース１３０８を介してプリンタに図８に示す形式のデータを出力することになる。
【００３１】
図１４は、このプリンタドライバの圧縮処理の手順を示すフローチャートである。なお、この圧縮符号化処理を開始するに当たって、ＲＡＭ１３０３にランレングス符号化したデータを一時的に格納するためのランレングスバッファ、ＪＰＥＧ圧縮したデータを一時的に格納するためのＪＰＥＧバッファ、及び、位置情報（該当する画素ブロックがランレングス符号化する場合には０、ＪＰＥＧ符号化する場合には１）を格納するｆｌａｇバッファが確保される。
【００３２】
また、各ランレングスバッファは１ラスタユニット分だけ確保し、ｆｌａｇバッファ及びＪＰＥＧバッファは２ラスタ分だけ確保すれば十分である。また、着目しているラスタに対する符号化する順序は１次元である。以下の説明ではｆｌａｇ（ｉ，ｊ）等と２次元として説明するが、これは便宜的なものであることに注意されたい。
【００３３】
先ず、ステップＳ１４０１において、ヘッダ部を生成し、その出力する処理を行う。次いで、ステップＳ１４０２、Ｓ１４０３で変数ｉ、ｊを共に１に初期化する。変数ｉは何番目のラスタユニットであるかを示す情報を格納し、変数ｊは着目している画素ブロックがラスタユニット中の何番目かを示す情報を格納するものである。
【００３４】
次いで、ステップＳ１４０４に進んで、ｆｌａｇバッファ中の（ｉ，ｊ）を０に初期化する。要するに、注目画素ブロックの位置は（ｉ，ｊ）と表現できるので、その画素ブロックについてはランレングス符号化したものとしてセットすることを意味する。
【００３５】
次いで、ステップＳ１４０５に進み、注目画素ブロックはＪＰＥＧ符号化すべきか、ランレングス符号化すべきかを判断する。この判断は先に説明したようにして行うこととし、ここでの詳述は省略する。
【００３６】
ＪＰＥＧ符号化すべきであると判断した場合には、ステップＳ１４０６に進み、ｆｌａｇ（ｉ，ｊ）を１にセットし直し、ステップＳ１４０７でＪＰＥＧ圧縮符号化を行う。生成された符号化データは、ＪＰＥＧバッファに格納（蓄積）する。この結果、オリジナル画像中の注目画素ブロックの領域は、用済みであるのでＲＧＢそれぞれの値を所定値（実施形態では２５５）で埋める（ステップＳ１４０８）。
【００３７】
この後、ステップＳ１４０９に進み、注目画素ブロックについてラインレングス符号化を行う。ここで注意したい点は、このステップＳ１４０９の処理は、ステップＳ１４０５でＮｏと判断した場合と、ステップＳ１４０８から以降した場合の２種類あることである。後者の場合、画素ブロック内の全ての画素値が一律同じ値になっているので、ランレングス符号化の符号化効率は最大限となる。
【００３８】
処理がステップＳ１４０９に進むと、注目画素ブロックの位置がラスタユニットの終端位置にあるか否かを変数ｊを調べることで判定する。途中であると判断した場合には、ステップＳ１４１１に進み、次の位置の画素ブロックに対する処理を行うべく、変数ｊを１つインクリメントし、ステップＳ１４０４に戻ることになる。
【００３９】
また、ステップＳ１４１０で、１ラスタユニット分の符号化処理が完了したと判断した場合には、ステップＳ１４１２に進み、ランレングスバッファには１ラスタユニット分のランレングス符号化データが格納されていることになるので、その符号データを出力する。
【００４０】
ステップＳ１４１３に処理が進むと、変数ｉは１であるか否か、すなわち、ｓ最初のラスターユニットの符号化処理であったか否かを判断する。最初のラスタユニットのデータの場合、図８に示すようにランレングス符号化データのみを出力することになるので、ステップＳ１４１６に進み、次のラスタユニットの符号化を行うべく、変数ｉを１だけインクリメントし、ステップＳ１４０３に戻る。このとき、ｆｌａｇバッファ、ＪＰＥＧバッファには、前回、すなわち、ｉ−１番目のラスターユニットに対応するデータが格納されていることになることに注意されたい。
【００４１】
上記のようにして２番目以降のラスタユニットの符号化を行ない、そのランレングス符号化データの出力処理が完了すると、ステップＳ１４１３での判定処理ではｉは１以外となり、ステップＳ１４１４に進むことになる。このステップＳ１４１４に処理が進むと、ステップＳ１４１２で第ｉ番目のランレングス符号化データの出力に続いて、第ｉ−１番目に生成されたｆｌａｇデータ並びに第ｉ−１番目のＪＰＥＧ符号化データを出力することになる。
【００４２】
処理がステップＳ１４１５に進むと、変数ｉを調べて最終ラスタユニットに対する処理が終了したか否かを判断し、否の場合には、ステップＳステップＳ１４１６を経て、ステップＳ１４０３に戻ることになる。
【００４３】
また、ステップＳ１４１５において、変数ｉが最終ラスタを示すと判定された場合、ｆｌａｇバッファ、ＪＰＥＧバッファには第ｉ番目のデータが未出力状態で残っていることになるので、ステップＳ１４１７でその出力処理を行い、本処理を終了することになる。
【００４４】
以上の結果、図８に示したデータフォーマットに従った印刷データの出力がなされることになる。なお、ランレングス符号化は、画素ブロック単位に行うのではなく、ラスタユニット単位に行っても構わない。この場合には、ステップＳ１４０９の処理をステップＳ１４０１の直後で行えば良い。
【００４５】
＜第２の実施形態＞
上記第１の実施形態では、ＪＰＥＧの処理単位が８画素正方ブロックであるため、１つのラスターユニットが８ラインで構成されていた。これに対し、本第２の実施形態では図１０に示すように、１つのラスターユニットが８×３＝２４ラインで構成されている場合のデータ系列生成方法について述べる。つまり、記録ヘッドが縦２４のノズルを有している場合である。なお、第１の実施形態で一つのラスターユニットを構成していた８ラインを、本実施形態ではバンドと呼ぶこととする。
【００４６】
本第２の実施形態では、図６に示すランレングス符号化の上方参照画素の位置が、注目画素と８画素以上離れないこととする。この場合、図１０に示す「０２」ラスターユニットの０１バンドを正しく復号化するためには、復号化時に「０１」ラスターユニットの「０３」バンド上にＪＰＥＧブロックが合成されていないことが条件となる。そこで本第２の実施形態では、図１のフォーマット形成部１１０において図１１に示すようなデータ系列を生成する。図１１のデータ系列では、第１の実施形態と同様、先頭にヘッダ部が存在し、次に「０１」ラスターユニットの「０１」バンドから「０３」バンドまでのランレングスデータが続く。なお、同図中（０１ＲＵ：０１Ｂ）〜（０１ＲＵ：０３Ｂ）は、「０１」ラスターユニットの「０１」バンドから「０３」バンドを意味する。
【００４７】
また、図１１のフォーマットでは、（０１ＲＵ：０１Ｂ）から（０１ＲＵ：０２Ｂ）のＪＰＥＧブロック位置情報とＪＰＥＧデータが続いている。すなわち、（０１ＲＵ：０３Ｂ）のＪＰＥＧブロック位置情報とＪＰＥＧデータはここには含まれていない。次に（０２ＲＵ：０１Ｂ）から（０２ＲＵ：０３Ｂ）のランレングスデータが続き、その後に（０１ＲＵ：０３Ｂ）〜（０２ＲＵ：０２Ｂ）のＪＰＥＧブロック位置情報およびＪＰＥＧデータが続く。すなわち、ＪＰＥＧブロック位置情報およびＪＰＥＧデータが、ランレングスデータに対して１バンド分遅延してフォーマットが形成されることになる。
【００４８】
図１１に示すデータ系列を受け取った復号化装置では、まずヘッダ部の解析を行った後、（０１ＲＵ：０１Ｂ）から（０１ＲＵ：０３Ｂ）のランレングスデータを復号化する。復号化した結果得られた画像情報を図１２に示す合成画像用バッファメモリ１２００の先頭部分に格納する。次に、（０１ＲＵ：０１Ｂ）から（０１ＲＵ：０２Ｂ）のＪＰＥＧデータを復号化し、ＪＰＥＧブロック位置情報を参照しながら、合成画像用バッファメモリ１２００の所定位置にブロック単位で合成を行う。ここまで復号化が終了した際のメモリ使用状況が図１２に示されている。
【００４９】
次に、復号化装置では（０２ＲＵ：０１Ｂ）から（０２ＲＵ：０３Ｂ）のランレングスデータの復号化を行い、その結果得られた画像情報をバッファメモリ１２００の未使用領域の先頭部に格納する。この際に、（０１ＲＵ：０３Ｂ）にはＪＰＥＧブロックが合成されていないため、（０２ＲＵ：０１Ｂ）のランレングスデータは問題なく復号化することが可能である。
【００５０】
次に、復号化装置では（０１ＲＵ：０３Ｂ）から（０２ＲＵ：０２Ｂ）のＪＰＥＧデータを復号化し、ＪＰＥＧブロック位置情報を参照しながら、バッファメモリ１２００上の所定の位置にブロック単位で合成を行う。
【００５１】
以上述べたように、図１１で示すようなフォーマットでデータ系列を生成することにより、復号化装置で従来必要であったＪＰＥＧ復号化用バッファメモリがなくても画像情報を復号化することが可能となる。また、上記処理により、従来必要であったＪＰＥＧ復号化用バッファから合成画像用バッファへのＪＰＥＧブロックのコピー処理が不要となる。以上が、第２の実施形態を説明した。
【００５２】
また、本第２の実施形態においても、復号する側（実施形態ではプリンタ）では、受信したランレングス符号化データに基づき復号処理し、ＪＰＥＧ符号化した位置については、ＪＰＥＧ符号化データに従って復号結果をダイレクトに合成しているだけでよく、その主要部分は符号化する側にあると言える。
【００５３】
第２の実施形態における符号化側の処理手順は、１つのラスタユニットが複数のバンドで構成される点を除けば、先に説明した第１の実施形態と実質的に同じであり、図１４のフローチャートからすれば当業者にとっては自明のものであるので、その説明は省略することとする。
【００５４】
以上であるが、本実施形態での記載からも明らかなように、本発明の特徴の主要部分は画像データを圧縮符号化する側にある。圧縮符号化する側では、上記の如く、プリンタドライバ等のコンピュータプログラムで実現しているわけであるから、本発明はコンピュータプログラムをもその範疇とすることも明らかである。また、通常、コンピュータプログラムはＣＤＲＯＭ等のコンピュータ可読記憶媒体をコンピュータにセットし、システムにコピーもしくはインストールすることで実行可能となるわけであるから、本発明はかかるコンピュータ可読記憶媒体をもその範疇とすることも明らかである。
【００５５】
更にまた、上記処理を実現するためのコンピュータプログラムであるが、そのプログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５６】
以上説明したように、第１の実施形態によれば、ＪＰＥＧブロックの合成を、ランレングスデータの復号化に対して、常に１ラスターユニット分遅延させて行うことにより、ＪＰＥＧ復号化用バッファメモリが不要、もしくは少なくできるようになる。また、合成画像用バッファメモリにＪＰＥＧブロックを直接合成することもできるので、ＪＰＥＧ復号化用バッファメモリからのコピー処理も不要にできるようになる。
【００５７】
また、第２の実施形態によれば、図１１で示すようなフォーマットでデータ系列を生成することにより、ＪＰＥＧ復号化用バッファメモリがなくても画像情報を復号化することが可能となり、第１の実施形態と同様の効果を奏することも可能になる。
【００５８】
なお、実施形態では符号化の種類として、ランレングス符号化とＪＰＥＧ符号化を例にして説明したが、これによって本願発明が限定されるものではないし、符号化単位も８×８画素に限るものではない。要するに、ランレングス符号化の如く可逆符号化と、ＪＰＥＧ等の不可逆符号化の２種類を用いるものであれば良い。
【００５９】
以上であるが、本実施形態に対応する実施態様を列挙すると次の通りである。
【００６０】
［実施態様１］  画像データを所定サイズの画素ブロック単位に符号化する画像処理方法であって、
画像データを不可逆符号化する第１の符号化工程と、
画像データを可逆符号化する第２の符号化工程と、
前記画像データの画素ブロック単位に前記第１の符号化工程を行うか否かを判定工程と、
該判定工程で前記第１の符号化工程で符号化すると判定した場合、前記第１の符号化工程による符号化して得られた画素ブロックの符号データを一時的に蓄積する第１の蓄積工程と、
前記第１の符号化工程で符号化した対象となった画素ブロック内の全画素値を所定値で置換える置換え工程と、
該置換え工程による置換え後の画素ブロック、及び、前記判定工程で第１の符号化工程で行わないと判定された画素ブロックに対し、前記第２の符号化工程で符号化を行わせ、得られた符号データを一時的に蓄積する第２の蓄積工程と、
前記第１の蓄積工程で蓄積された符号化データを、前記第２の蓄積工程で蓄積された符号化データよりも、所定単位だけ遅らせて出力する出力工程と
を備えることを特徴とする画像処理方法。
【００６１】
［実施態様２］  前記所定単位は、前記第１の符号化工程における符号化対象画素の位置と、参照する画素位置との距離を隔てた距離を有することを特徴とする実施態様１に記載の画像処理方法。
【００６２】
［実施態様３］  前記第１の符号化工程はＪＰＥＧ符号化による符号化工程、前記第２の符号化工程はランレングス符号化工程による符号化工程であることを特徴とする実施態様１又は２に記載の画像処理方法。
【００６３】
［実施態様４］  前記出力工程による出力先は、印刷装置であることを特徴とする実施態様１乃至３のいずれか１項に記載の画像処理方法。
【００６４】
［実施態様５］  画像データを所定サイズの画素ブロック単位に符号化する画像処理装置であって、
画像データを不可逆符号化する第１の符号化手段と、
画像データを可逆符号化する第２の符号化手段と、
前記画像データの画素ブロック単位に前記第１の符号化手段を行うか否かを判定手段と、
該判定手段で前記第１の符号化手段で符号化すると判定した場合、前記第１の符号化手段による符号化して得られた画素ブロックの符号データを一時的に蓄積する第１の蓄積手段と、
前記第１の符号化手段で符号化した対象となった画素ブロック内の全画素値を所定値で置換える置換え手段と、
該置換え手段による置換え後の画素ブロック、及び、前記判定手段で第１の符号化手段で行わないと判定された画素ブロックに対し、前記第２の符号化手段で符号化を行わせ、得られた符号データを一時的に蓄積する第２の蓄積手段と、
前記第１の蓄積手段で蓄積された符号化データを、前記第２の蓄積手段で蓄積された符号化データよりも、所定単位だけ遅らせて出力する出力手段と
を備えることを特徴とする画像処理装置。
【００６５】
［実施態様６］  画像データを所定サイズの画素ブロック単位に符号化する画像処理装置として機能するコンピュータプログラムであって、
画像データを不可逆符号化する第１の符号化手段と、
画像データを可逆符号化する第２の符号化手段と、
前記画像データの画素ブロック単位に前記第１の符号化手段を行うか否かを判定手段と、
該判定手段で前記第１の符号化手段で符号化すると判定した場合、前記第１の符号化手段による符号化して得られた画素ブロックの符号データを一時的に蓄積する第１の蓄積手段と、
前記第１の符号化手段で符号化した対象となった画素ブロック内の全画素値を所定値で置換える置換え手段と、
該置換え手段による置換え後の画素ブロック、及び、前記判定手段で第１の符号化手段で行わないと判定された画素ブロックに対し、前記第２の符号化手段で符号化を行わせ、得られた符号データを一時的に蓄積する第２の蓄積手段と、
前記第１の蓄積手段で蓄積された符号化データを、前記第２の蓄積手段で蓄積された符号化データよりも、所定単位だけ遅らせて出力する出力手段と
して機能することを特徴とするコンピュータプログラム。
【００６６】
［実施態様７］  前記コンピュータプログラムはプリンタドライバの一部であることを特徴とする実施態様６に記載のコンピュータプログラム。
【００６７】
［実施態様８］  実施態様６又は７に記載のコンピュータプログラムを記憶することを特徴とするコンピュータ可読記憶媒体。
【００６８】
【発明の効果】
以上説明したように本発明によれば、可逆符号化データ及び不可逆符号化データの混在した符号化画像データの復号に要するメモリ量を削減することが可能になる。
【図面の簡単な説明】
【図１】実施形態における符号化処理のブロック構成図である。
【図２】実施形態におけるプレーン分割の概念図である。
【図３】課題となるデータフォーマットを示す図である。
【図４】実施形態におけるプリンタのハードウェア構成図である。
【図５】図４の構成における復号処理に係る機能ブロック図である。
【図６】ランレングス符号化の参照位置を示す図である。
【図７】図３のデータフォーマット時の復号化装置内部でのメモリ使用状態を示す図である。
【図８】第１の実施形態におけるデータフォーマットを示す図である。
【図９】第１の実施形態における復号化装置内部でのメモリ使用例を示す図である。
【図１０】第２の実施形態におけるラスターユニットを説明するための図である。
【図１１】第２の実施形態におけるデータフォーマットを示す図である。
【図１２】第２の実施形態における復号化装置内部でのメモリ使用例を示す図である。
【図１３】第１の実施形態におけるホストコンピュータのハードウェア構成図である。
【図１４】第１の実施形態における符号化処理手順を示すフローチャートである。
【図１】
2004304361.tif 000003
【図２】
2004304361.tif 000004
【図３】
2004304361.tif 000005
【図４】
2004304361.tif 000006
【図５】
2004304361.tif 000007
【図６】
2004304361.tif 000008
【図７】
2004304361.tif 000009
【図８】
2004304361.tif 000010
【図９】
2004304361.tif 000011
【図１０】
2004304361.tif 000012
【図１１】
2004304361.tif 000013
【図１２】
2004304361.tif 000014
【図１３】
2004304361.tif 000015
【図１４】
2004304361.tif 000016