(57)【要約】  【課題】  画像処理に伴う処理負荷又はその実装コストを低減させる。  【解決手段】  画像処理装置２は、図３（Ａ）に例示するように、部分画像の単位で独立して復号化できる符号列と、複数の部分画像にまたがるランレングス符号とが混在した符号データを生成する。ランレングス符号には、図３（Ｂ）に例示するように、参照値データ（ランを塗潰すための画素値）と、ランブロック数とが含まれている。そして、画像処理装置２は、画像編集が指示されると、指示された編集内容に応じて、複数のブロックにまたがるランレングス符号を、図３（Ｃ）に例示するように、ブロック毎のランレングス符号に分割する。【選択図】図３
2008301029.tif 000002
【特許請求の範囲】
【請求項１】
入力された画像情報に対して、複数の画素が含まれた部分画像を設定する部分画像設定手段と、
前記部分画像に含まれる全ての画素値が、他の部分画像の既定位置にある画素値と一致する場合に、ランレングス符号化処理を行うラン符号化手段と、
前記ラン符号化手段により処理された部分画像以外の部分画像に対して、部分画像毎に独立して復号化できる符号化処理を行う独立符号化手段と
を有する画像処理装置。
【請求項２】
要求された画像編集に応じて、前記ラン符号化手段により生成されたランレングス符号を、部分画像毎に独立して復号化できる符号に変換する符号変換手段と、
前記画像編集に応じて、前記符号変換手段により変換された符号、又は、前記独立符号化手段により生成された符号を、前記部分画像の単位で操作する部分画像操作手段と、
前記部分画像操作手段により操作された画像情報を復号化する復号化手段と、
前記画像編集に応じて、前記復号化手段により復号化された画像情報を画素単位で操作する画素操作手段と
をさらに有する請求項１に記載の画像処理装置。
【請求項３】
前記符号変換手段は、単一のランレングス符号が複数の部分画像に相当し、かつ、これらの部分画像の少なくとも一部が前記画像編集の対象である場合に、このランレングス符号を、部分画像それぞれに対応するランレングス符号に分割する
請求項２に記載の画像処理装置。
【請求項４】
前記符号変換手段は、画像の回転角度に応じて、ランレングス符号の分割を行い、
前記部分画像操作手段は、前記部分画像単位で前記画像情報を、画像の回転角度に対応する順序に並び替え、
前記画素操作手段は、前記部分画像操作手段により並び替えられた画像情報値を、画像の回転角度に対応する順序に並び替える
請求項３に記載の画像処理装置。
【請求項５】
前記符号変換手段は、画像を９０度回転させる場合に、主走査方向に連続する複数の部分画像に相当するランレングス符号を分割し、
前記部分画像操作手段は、前記符号変換手段により分割されたランレングス符号に対して、並び替えを行う
請求項４に記載の画像処理装置。
【請求項６】
前記符号変換手段は、画像を１８０度回転させる場合に、主走査方向に連続する複数の部分画像に相当するランレングス符号の分割を行わず、
前記部分画像操作手段は、主走査方向１列分の部分画像を単位として、副走査方向の順序のみを入れ替え、
前記画素操作手段は、主走査方向１列分の画像領域内で、主走査方向の順序を入れ替える
請求項４に記載の画像処理装置。
【請求項７】
前記符号変換手段は、要求されたシフト処理によって削除される部分画像が、ランレングス符号に対応する複数の部分画像の一部である場合に、このランレングス符号を分割し、
前記部分画像操作手段は、符号化された画像情報の位置を、前記部分画像の単位で移動させ、
前記画素操作手段は、復号化された画像情報を画素単位で移動させる
請求項１に記載の画像処理装置。
【請求項８】
前記符号変換手段は、要求された画像合成処理において複数の画像の境界が、ランレングス符号に対応する複数の部分画像のいずれかに存在する場合に、このランレングス符号を分割し、
前記部分画像操作手段は、符号化された複数の画像情報の中から、各画像領域について少なくとも１つの画像情報を選択し、
前記画素操作手段は、複数の画像情報が選択された画像領域について、選択された複数の画像情報の中から、各画素で適用すべき画素値を選択する
請求項１に記載の画像処理装置。
【請求項９】
入力された画像情報に対して、複数の画素が含まれた部分画像を設定するステップと、
前記部分画像に含まれる全ての画素値が、他の部分画像の既定位置にある画素値と一致する場合に、ランレングス符号化処理を行うステップと、
前記ランレングス符号化処理で処理される部分画像以外の部分画像に対して、部分画像毎に独立して復号化できる符号化処理を行うステップと
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【０００２】
例えば、特許文献１には、符号化画像データを最初から順番に復号化し、起点ブロックを復号化するために必要とされる復元情報が得られたら格納し、格納された復元情報を利用して符号化画像データを所望の起点ブロックから復号化する技術が開示されている。
【特許文献１】特開２００１−８６３１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は、画像処理に伴う処理負荷又はその実装コストを低減させることを目的とする。
【課題を解決するための手段】
【０００４】
請求項１に係る本発明は、入力された画像情報に対して、複数の画素が含まれた部分画像を設定する部分画像設定手段と、前記部分画像に含まれる全ての画素値が、他の部分画像の既定位置にある画素値と一致する場合に、ランレングス符号化処理を行うラン符号化手段と、前記ラン符号化手段により処理された部分画像以外の部分画像に対して、部分画像毎に独立して復号化できる符号化処理を行う独立符号化手段とを有する。
【０００５】
請求項２に係る本発明は、要求された画像編集に応じて、前記ラン符号化手段により生成されたランレングス符号を、部分画像毎に独立して復号化できる符号に変換する符号変換手段と、前記画像編集に応じて、前記符号変換手段により変換された符号、又は、前記独立符号化手段により生成された符号を、前記部分画像の単位で操作する部分画像操作手段と、前記部分画像操作手段により操作された画像情報を復号化する復号化手段と、
前記画像編集に応じて、前記復号化手段により復号化された画像情報を画素単位で操作する画素操作手段とをさらに有する。
【０００６】
請求項３に係る本発明では、前記符号変換手段は、単一のランレングス符号が複数の部分画像に相当し、かつ、これらの部分画像の少なくとも一部が前記画像編集の対象である場合に、このランレングス符号を、部分画像それぞれに対応するランレングス符号に分割する。
【０００７】
請求項４に係る本発明では、前記符号変換手段は、画像の回転角度に応じて、ランレングス符号の分割を行い、前記部分画像操作手段は、前記部分画像単位で前記画像情報を、画像の回転角度に対応する順序に並び替え、前記画素操作手段は、前記部分画像操作手段により並び替えられた画像情報値を、画像の回転角度に対応する順序に並び替える。
【０００８】
請求項５に係る本発明では、前記符号変換手段は、画像を９０度回転させる場合に、主走査方向に連続する複数の部分画像に相当するランレングス符号を分割し、前記部分画像操作手段は、前記符号変換手段により分割されたランレングス符号に対して、並び替えを行う。
【０００９】
請求項６に係る本発明では、前記符号変換手段は、画像を１８０度回転させる場合に、主走査方向に連続する複数の部分画像に相当するランレングス符号の分割を行わず、前記部分画像操作手段は、主走査方向１列分の部分画像を単位として、副走査方向の順序のみを入れ替え、前記画素操作手段は、主走査方向１列分の画像領域内で、主走査方向の順序を入れ替える。
【００１０】
請求項７に係る本発明では、前記符号変換手段は、要求されたシフト処理によって削除される部分画像が、ランレングス符号に対応する複数の部分画像の一部である場合に、このランレングス符号を分割し、前記部分画像操作手段は、符号化された画像情報の位置を、前記部分画像の単位で移動させ、前記画素操作手段は、復号化された画像情報を画素単位で移動させる。
【００１１】
請求項８に係る本発明では、前記符号変換手段は、要求された画像合成処理において複数の画像の境界が、ランレングス符号に対応する複数の部分画像のいずれかに存在する場合に、このランレングス符号を分割し、前記部分画像操作手段は、符号化された複数の画像情報の中から、各画像領域について少なくとも１つの画像情報を選択し、前記画素操作手段は、複数の画像情報が選択された画像領域について、選択された複数の画像情報の中から、各画素で適用すべき画素値を選択する。
【００１２】
請求項９に係る本発明は、入力された画像情報に対して、複数の画素が含まれた部分画像を設定するステップと、前記部分画像に含まれる全ての画素値が、他の部分画像の既定位置にある画素値と一致する場合に、ランレングス符号化処理を行うステップと、前記ランレングス符号化処理で処理される部分画像以外の部分画像に対して、部分画像毎に独立して復号化できる符号化処理を行うステップとをコンピュータに実行させる。
【発明の効果】
【００１３】
本発明によれば、画像処理に伴う処理負荷又はその実装コストが低減する。
【発明を実施するための最良の形態】
【００１４】
本実施形態における画像形成システムの概要を説明する。
図１は、画像形成システムの概要を説明する図である。
図１に例示するように、画像形成システム１は、画像処理装置２と、プリンタ３とを有する。
画像処理装置２は、コンピュータである。本例の画像処理装置２は、ＬＡＮ等のネットワークに接続されており、ユーザ端末９２又はスキャナ９４から受信した画像情報に対して画像処理を施し、画像処理が施された画像情報をプリンタ３に送信する。本実施形態では、入力された画像（入力画像）を９０度又は１８０度に回転させる場合を画像処理の具体例として説明する。
プリンタ３は、画像形成装置の一例である。本例のプリンタ３は、ＬＡＮ等のネットワークを介して、画像処理装置２から画像情報を受信し、受信した画像情報に基づいて画像を記録用紙に印刷する。
なお、画像処理装置２は、プリンタ３の筐体内に設けられてもよい。
【００１５】
図２（Ａ）は、画像処理装置２（図１）により実行される画像符号化プログラム４の機能構成を例示し、図２（Ｂ）は、画像編集プログラム５の機能構成を例示する図である。
図２（Ａ）に例示するように、画像符号化プログラム４は、ブロック設定部４０、ラン計数部４２、モデル化部４４、及び符号化部４６を有する。本例の画像符号化プログラム４は、ＳＩＭＤ処理によって符号化処理を行う。
また、図２（Ｂ）に例示するように、画像編集プログラム５は、ラン分割部５０、符号編集部５２、復号化部５４、及び画素編集部５６を有する。
画像符号化プログラム４及び画像編集プログラム５の機能構成の一部又は全部は、例えば、記録媒体２０（図１）に記録されており、この記録媒体２０を介して画像処理装置２にインストールされる。なお、画像処理プログラム５の各機能構成は、ネットワークを介して、画像処理装置２にインストールされてもよい。
【００１６】
画像符号化プログラム４において、ブロック設定部４０は、入力された画像情報に対して、複数の画素が含まれた部分画像（ブロック）を設定する。
例えば、ブロック設定部４０は、入力画像を、Ｎ×Ｍ画素からなる矩形の画像ブロックに分割する。
【００１７】
ラン計数部４２は、部分画像（ブロック）の単位で、ランレングス符号化処理を行う。より具体的には、ラン計数部４２は、処理対象となる部分画像に含まれる全ての画素値が、他の部分画像の既定位置にある画素値と一致している場合に、この部分画像に相当するラン数をインクリメントして、ラン数（ブロック数）を符号化部４６に出力する。
本例のラン計数部４２は、直前ブロックの最後の画素値（すなわち、注目ブロックの先頭画素の直前画素値）と、注目ブロックに含まれる画素値とを比較して、直前ブロックの最後の画素値と、注目ブロックの全画素値とが一致する場合に、ラン数をインクリメントする。
【００１８】
モデル化部４４は、部分画像（ブロック）内の画素値のみを用いて、ブロックに含まれる画素値を符号化するためのモデリングを行う。符号化方式は、ブロック内の画素値のみを用いて復号化できるものであれば、どのような符号化方式でもよく、例えば、ブロック内でランが制限されたランレングス符号化方式、参照範囲がブロック内に限定された予測符号化方式などである。
【００１９】
符号化部４６は、ラン計数部４２から入力されたランレングスデータ、又は、モデル
化部４４によりモデリングされた画素値をエントロピー符号化する。
【００２０】
画像編集プログラム５において、ラン分割部５０は、入力された符号データ（画像の符号データ）を、部分画像の単位で独立に復号化できる符号データに変換する。
例えば、ラン分割部５０は、複数の部分画像（ブロック）にまたがるランレングス符号が符号データに含まれている場合には、このランレングス符号を、各ブロックに対応するランレングス符号に分割する。また、ラン分割部５０は、他の部分画像（ブロック）を参照する符号が注目ブロックの符号データに含まれている場合には、参照先の画素値を注目ブロックに挿入する。
本例のラン分割部５０は、要求されている画像編集（編集指示）に応じて、ランレングス符号の分割を行う。
【００２１】
符号編集部５２は、部分画像の単位で、符号化された画像情報を操作する。部分画像には複数の画素値が存在するため、符号編集部５２は、複数の画素値に相当する符号列を単位として、符号データに含まれる符号列を操作する。なお、実施形態の説明では、部分画像に含まれる全画素値に相当する符号群を符号列とよび、画像全体に相当する符号群を符号データとよぶ。
本例の符号編集部５２は、ラン分割部５０から入力された符号データに対して、編集処理の内容に応じた、並び替え、削除、追加、又は選択を行う。
【００２２】
復号化部５４は、符号編集部５２から入力された符号データを復号化し、復号化された画像データを画素編集部５６に出力する。ラン分割部５０により変換された符号データは、部分画像毎に独立して復号化できるため、符号列の順序が入れ替わっていても復号化できる。
【００２３】
画素編集部５６は、復号化部５４により復号化された画像データを画素単位で操作する。
本例の画素編集部５６は、復号化された画素値に対して、編集処理の内容（回転角度、シフト量及び方向、マージ位置）に応じた、並び替え、削除、追加又は選択を行う。
【００２４】
図３は、ランレングス符号の分割を説明する図である。
図３（Ａ）に例示するように、本例の画像符号化プログラム４は、部分画像の単位で独立して復号化できる符号列（非ラン符号列）と、複数の部分画像にまたがるランレングス符号（ラン符号列）とが混在した符号データを生成する。ランレングス符号には、図３（Ｂ）に例示するように、参照値データと、ランブロック数（ラン数）とが含まれている。参照値データとは、部分画像を塗潰す画素値であり、本例では、直前ブロックの最後の画素値に相当する。
このようなランレングス符号は、多数の画素値を短い符号列で表現できるため、高圧縮率に資するが、部分画像の単位で復号化することができない。例えば、図３（Ａ）の部分画像３の符号を復号化するためには、部分画像２に相当する符号から順に復号化される必要がある。
そこで、本例のラン分割部５０（図２）は、指示された編集内容に応じて、複数のブロックにまたがるランレングス符号を、図３（Ｃ）に例示するように、ブロック毎のランレングス符号に分割する。本例では、ランブロック数が３であるため、ランブロック数１のランレングス符号が３つ生成される。分割後のランレングス符号に含まれる参照値データは、元のランレングス符号の含まれる参照値データと同一である。
このように、本例のランレングス符号の分割処理には、単にランレングス符号を分割するという要素だけでなく、他のブロックに属する参照先の画素値を注目ブロックに挿入するという要素も含まれている。
【００２５】
図４は、１８０度回転処理を説明する図である。
１８０度回転処理が編集内容として指示された場合に、ラン分割部５０（図２）は、図４（Ａ）に例示するように、ラン符号列（図３（Ａ））を全て分割して、全ての符号列を部分画像単位のものにする。
【００２６】
符号編集部５２（図２）は、図４（Ｂ）に例示するように、部分画像の単位で、符号列を１８０度回転させる。これにより、部分画像の単位でみると、主走査方向及び副走査方向の鏡像処理が施されたことになる。
【００２７】
次に、復号化部５４は、符号編集部５２から順に入力される符号列を順に復号化し、復号化された画素値群を画素編集部５６に出力する。図４（Ｃ）は、復号化部５４から出力される部分画像１つ分の画素群を例示する図である。本例では、１つの部分画像に５つの画素が含まれている場合を具体例として説明するが、部分画像に含まれる画素の数はこれに限定されるものではない。
画素編集部５６は、復号化部５４から入力された部分画像の画素値群を、画素単位で主走査方向に並び替える。より具体的には、画素編集部５６は、図４（Ｃ）に例示するように、復号化部５４から入力される画素値群を、１つの部分画像に相当する数（本例では５つ）だけラインバッファに書き込み、このラインバッファから、書込みと反対の順序で読み出す。これにより、図４（Ｄ）に例示するように、１ライン分の画素群に対して主走査方向の鏡像処理が実現する。
以上のように、１８０度回転処理が、部分画像単位の１８０度回転処理（符号に対する処理）と、画素単位の１８０度回転処理（画素値に対する処理）との組合せで実現される。
【００２８】
なお、上記の例では、部分画像の単位で主走査方向及び副走査方向に鏡像処理しているが、ラインバッファのサイズが十分に確保できる場合には、図５に例示するように、主走査１ラインを１つの部分画像とみなして、部分画像の単位で副走査方向の鏡像処理のみを行い、画素単位で主走査方向全体の鏡像処理を行ってもよい。この場合には、主走査方向のランに相当するランレングス符号は分割する必要がないため、部分画像の単位で処理する対象のデータサイズが小さくなる。
また、本例では、主走査1ラインを１つの部分画像とみなし、1ライン全体を符号化しているが、図４に例示する部分画像の符号列を1ライン分まとめて、1ライン分の符号列（例えば、図４の部分画像１、２及び３の符号列）に対して副走査方向の鏡像処理を行ってもよい。
【００２９】
図６は、右方向の９０度回転処理を説明する図である。
図６（Ａ）に例示するように、ラン分割部５０は、９０度回転処理を行う場合に、主走査方向のランレングス符号を全て分割する。
【００３０】
符号編集部５２は、図６（Ｂ）に例示するように、部分画像の単位でみると画像が９０度回転するように、部分画像の符号列を並べ替える。
具体的には、符号編集部５２は、副走査方向に逆方向で部分画像の符号列を切り出し、最上部の部分画像（部分画像１）まで切り出すと、主走査方向に１つ部分画像分だけ移動して、再度、副走査方向に逆方向で部分画像の符号列を切り出す。これにより、図６（Ｂ）に例示するように、符号列が配列される。
【００３１】
次に、復号化部５４は、符号編集部５２から順に入力される符号列を順に復号化し、復号化された画素値群を画素編集部５６に出力する。
画素編集部５６は、復号化部５４から入力された部分画像の画素値群を画素単位で並び替えることにより、各部分画像の画素値群を９０度回転させる。
具体的には、画素編集部５６は、図６（Ｃ）に例示するように、復号化部５４から入力される３つの部分画像の画素値群をブロックラインバッファに書き込み、このブロックラインバッファから、書込み方向と直交する方向に読み出す。これにより、図６（Ｄ）に例示するように、各部分画像に含まれる画素群が９０度回転する。なお、ブロックラインバッファとは、画像１ページ分に相当するページバッファよりも小さい領域に対応するバッファである。
以上のように、９０度回転処理が、部分画像単位の９０度回転処理（符号に対する処理）と、画素単位の９０度回転処理（画素値に対する処理）との組合せで実現される。
【００３２】
次に、上記の変形例を説明する。
上記の例では、副走査方向のサイズが１画素の部分画像を定義しているが、これに限定されるものではなく、例えば、図７（Ａ）に例示するように、副走査方向のサイズが２画素の部分画像を定義してもよい。なお、本例では、２つの主走査ラインを部分画像としている。
この場合の１８０度回転処理を説明すると、符号編集部５２は、上記実施形態と同様に、これらの部分画像を副走査方向に並び替えるだけでよい。そして、画素編集部５６は、図７（Ｂ）に例示するように、部分画像の画素群をブロックラインバッファに書き込み、このブロックラインバッファから、書込みと逆の順序で読み出す。これにより、図７（Ｃ）に例示するように、部分画像内の画素値群が１８０度回転する。
【００３３】
次に、画像をシフトする場合を説明する。
図８（Ａ）に例示する入力画像を、図８（Ｂ）に例示するように並行移動（シフト）させて出力画像とすることがある。このようなシフト処理を行う場合には、図８（Ｂ）に例示するように、画素の移動だけでなく、余白領域の追加や、はみ出し領域の削除などを行う必要がある。
そこで、本例では、部分画像単位で、画素の移動、余白領域の追加、及びはみ出し領域の削除の少なくとも１つを行い、その後に、画素単位で、画素の移動等を行う。
【００３４】
図９は、シフト処理を説明する図である。本図では、主走査方向に５画素だけ移動させる場合を説明する。
図１０は、シフト処理（Ｓ１０）のフローチャートである。
【００３５】
図１０のステップ１０５（Ｓ１０５）において、ラン分割部５０は、要求されたシフト処理のシフト量及びシフトの方向に基づいて、削除すべき画像の範囲を特定し、特定された削除範囲にランレングス符号（複数の部分画像にまたがるもの）の一部が存在するか否かを判断し、削除範囲にランレングス符号の一部が存在する場合は、Ｓ１１０の処理に移行し、削除範囲にランレングス符号が存在しない場合、又は、削除範囲にランレングス符号全体が含まれる場合に、Ｓ１１５の処理に移行する。
【００３６】
ステップ１１０（Ｓ１１０）において、ラン分割部５０は、図９（Ａ）に例示するように、はみ出し領域（削除すべき画像領域）がランレングス符号の一部に相当する場合に、図９（Ｂ）に例示するように、ランレングス符号を分割する。本図では、部分画像１、部分画像４及び部分画像７がはみ出し領域であるため、部分画像７、８、９に相当するランレングス符号が、部分画像７の符号列と、部分画像８，９のランレングス符号に分割される。なお、本例では、１つの部分画像内には、４つの画素が主走査方向に配列されている。
【００３７】
ステップ１１５（Ｓ１１５）において、符号編集部５２は、図９（Ｃ）に例示するように、部分画像の単位で、シフト処理を行う。本例では、主走査方向上流に５画素のシフトが要求されているため、部分画像１つ分のシフトと、１画素分のシフトとが行われる。そして、部分画像１つ分のシフト処理として、主走査方向の先頭の部分画像（符号列）が削除され、１つの余白符号列が主走査方向の最後に挿入される。これにより、部分画像１、４及び７の符号列がはみ出し領域として削除され、残りの符号列の各主走査方向下流（紙面右方向）に１つの余白符号列が挿入される。
【００３８】
ステップ１２０（Ｓ１２０）において、復号化部５４は、符号編集部５２から順に入力される符号列を順に復号化し、復号化された画素値群を画素編集部５６に出力する。なお、余白符号は、余白に相当する画素値として復号化される。
【００３９】
ステップ１２５（Ｓ１２５）において、画素編集部５６は、復号化部５４から入力された画素値群を、残りのシフト量だけ画素単位でシフトさせる。
具体的には、画素編集部５６は、図９（Ｄ）に例示するように、復号化部５４から入力される画素値群の主走査方向の先頭画素をはみ出し画素として削除し、主走査方向の終端に余白画素を挿入する。
以上のように、所望のシフト処理が、部分画像の単位のシフト処理（符号に対する処理）と、画素単位のシフト処理（画素に対する処理）との組合せで実現される。
【００４０】
ステップ１３０（Ｓ１３０）において、画像処理装置２（図１）は、シフト処理が施された画像データをプリンタ３に転送する。
ステップ１３５（Ｓ１３５）において、プリンタ３は、画像処理装置２から転送された画像データに基づいて、画像を印刷する。
【００４１】
次に、複数の入力画像を合成する形態を説明する。
図１１（Ａ）に例示する入力画像Ａと、図１１（Ｂ）に例示する入力画像Ｂとを合成して、図１１（Ｄ）に例示する出力画像（合成画像）を生成する場合がある。この場合に、合成方法を指示する情報として、図１１（Ｃ）に例示するタグ情報が使用される。本例のタグ情報は、二値画像であり、一方の値が入力画像Ａの採用を指示し、他方の値が入力画像Ｂの採用を指示している。すなわち、本例のタグ情報は、画像の左側半分について入力画像Ａを採用し、画像の右側半分について入力画像Ｂを採用するよう指示している。
本実施形態では、このような合成処理（マージ処理）を、部分画像単位での合成処理と、画素単位での合成処理とを組み合わせて実現する。
【００４２】
図１２は、合成処理（マージ処理）を説明する図である。なお、本図では、２つの入力画像がマージされる場合を具体例として説明しているが、３つ以上の入力画像をマージする場合も同様に処理可能である。
図１３は、合成処理（Ｓ２０）のフローチャートである。
【００４３】
図１３のステップ２０５（Ｓ２０５）において、ラン分割部５０は、図１２（Ｂ）に例示するタグ情報に基づいて、マージの境界領域を特定し、特定された境界領域をまたぐランレングス符号（複数の部分画像にまたがるもの）が存在するか否かを判断し、境界領域をまたぐランレングス符号が存在する場合に、Ｓ２１０の処理に移行し、これ以外の場合に、Ｓ２１５の処理に移行する。
【００４４】
ステップ２１０（Ｓ２１０）において、ラン分割部５０は、図１２（Ａ）に例示するように、境界領域をまたぐランレングス符号列が存在する場合には、図１２（Ｂ）に例示するように、ランレングス符号を分割する。
なお、タグ情報は、画素それぞれについて存在する。本例では、図１２（Ｂ）に例示するように、部分画像１（部分画像Ａ１及び部分画像Ｂ１）に相当する画像領域については、入力画像Ａを指定するタグＡのみが存在し、部分画像２に相当する画像領域については、入力画像Ａを指定するタグＡと、入力画像Ｂを指定するタグＢとが混在し、部分画像３に相当する画像領域については、入力画像Ｂを指定するタグＢのみが存在する。
【００４５】
ステップ２１５（Ｓ２１５）において、符号編集部５２は、図１２（Ｃ）に例示するように、部分画像の単位で、マージ処理を行う。すなわち、符号編集部５２は、部分画像毎に、タグ情報を読み出し、読み出されたタグ情報が入力画像Ａのタグのみである場合に、入力画像Ａの部分画像に相当する符号列（本例では、部分画像Ａ１の符号列）を選択し、読み出されたタグ情報が入力画像Ａのタグと入力画像Ｂのタグとを含む場合に、入力画像Ａ及び入力画像Ｂの符号列（本例では、部分画像Ａ２の符号列及び部分画像Ｂ２の符号列）を選択し、読み出されたタグ情報が入力画像Ｂのタグのみである場合に、入力画像Ｂの符号列（本例では、部分画像Ｂ３の符号列）を選択する。なお、符号編集部５２は、選択した符号列を図１２（Ｃ）に例示するように２つのストリームとして復号化部５４に出力してもよいし、これらをマージして１つのストリームとして復号化部５４に出力してもよい。
また、本例の符号編集部５２は、読み出されたタグ情報が入力画像Ａのタグと入力画像Ｂのタグとを含む場合にのみ、図１２（Ｄ）に例示するように、部分画像を特定するための情報（部分画像ＩＤ）と、この部分画像に関するタグ情報とが含まれた画素単位タグを生成する。なお、符号編集部５２は、図１２（Ｄ）に例示するように、画素単位のマージが必要な部分画像のみについて画素単位タグを生成してもよいし、元のタグ情報全体をそのまま画素単位タグとして出力してもよい。
【００４６】
ステップ２２０（Ｓ２２０）において、復号化部５４は、符号編集部５２から順に入力される符号列を順に復号化し、復号化された画素値群を画素編集部５６に出力する。
画素編集部５６は、復号化部５４から入力された画素値群に対して、画素単位でマージする。
具体的には、画素編集部５６は、図１２（Ｄ）に例示する画素単位タグに基づいて、マージ処理を行う部分画像（本例では、部分画像２）を特定し、特定された部分画像について、タグに応じたマージ処理を行って、図１２（Ｅ）に例示するように、画素単位のマージ処理を実現する。
以上のように、合成処理（マージ処理）が、部分画像単位のマージ処理（符号に対する処理）と、画素単位のマージ処理（画素値に対する処理）との組合せで実現される。
【００４７】
［変形例］
次に、上記実施形態の変形例を説明する。上記実施形態では、説明の便宜上、ブロック（部分画像）が５×１ブロック又は４×１ブロックである場合を説明したが、３２×１のブロック（部分画像）を設定してもよい。すなわち、ブロック設定部４０は、入力された画像情報を、主走査方向に３２画素、副走査方向に１画素のブロック（部分画像）に分割する。モデル化部４４は、起点情報データ（直前ブロックの終端画素値）と注目ブロックの画素値とを用いて予測符号化を行い、注目画素値と予測値との差分を算出する。例えば、モデル化部４４は、直前画素値を予測値とした予測誤差の算出を行う。
符号化部４６は、出現した予測誤差をハーフブロック（１６×１）の単位で最小ビット数にパッキングする。最小ビット数はブロック内の誤差値のダイナミックレンジ（画素値が存在する数値幅）から算出する。また、符号化部４６は、パッキングしたデータの先頭にビットパック長を記載したヘッダを１バイト付け加える。例えばヘッダを４ｂｉｔ×２に分割し、ハーフブロック毎のビットパック長を記載することが考えられる。
このように、画素ブロックを３２×１にした場合、上記、ビットパックで、得られる符号は必ずバイトバウンダリであり扱いやすい符号構成となる。
【図面の簡単な説明】
【００４８】
【図１】画像形成システムの概要を説明する図である。
【図２】画像処理装置２（図１）により実行される画像符号化プログラム４及び画像編集プログラム５の機能構成を例示する図である。
【図３】ランレングス符号の分割を説明する図である。
【図４】１８０度回転処理を説明する図である。
【図５】主走査１ラインを部分画像とみなした場合の１８０度回転処理を説明する図である。
【図６】右方向の９０度回転処理を説明する図である。
【図７】４×２の部分画像を設定した場合の１８０度回転処理を説明する図である。
【図８】部分画像単位及び画素単位のシフト処理の概要を説明する図である。
【図９】シフト処理をより詳細に説明する図である。
【図１０】シフト処理のフローチャートである。
【図１１】合成処理の概要を説明する図である。
【図１２】合成処理をより詳細に説明する図である。
【図１３】合成処理（マージ処理）のフローチャートである。
【符号の説明】
【００４９】
１・・・画像形成システム
２・・・画像処理装置
４・・・画像符号化プログラム
４０・・・ブロック設定部
４２・・・ラン計数部
４４・・・モデル化部
４６・・・符号化部
５・・・画像編集プログラム
５０・・・ラン分割部
５２・・・符号編集部
５４・・・復号化部
５６・・・画素編集部
【図１】
2008301029.tif 000003
【図２】
2008301029.tif 000004
【図３】
2008301029.tif 000005
【図４】
2008301029.tif 000006
【図５】
2008301029.tif 000007
【図６】
2008301029.tif 000008
【図７】
2008301029.tif 000009
【図８】
2008301029.tif 000010
【図９】
2008301029.tif 000011
【図１０】
2008301029.tif 000012
【図１１】
2008301029.tif 000013
【図１２】
2008301029.tif 000014
【図１３】
2008301029.tif 000015