(57)【要約】      （修正有）【課題】ハード規模を削減できる、またはメモリ転送効率を高めることができる画像処理技術を提供する。【解決手段】符号化装置２００は、画像の符号化単位を複数の領域に分割する分割手段と、複数の領域のそれぞれをラインと交差する方向に沿って区切る境界ごとに、その境界を特定するための境界ヘッダを生成するヘッダ生成手段と、ラインを進めたときの境界の変位を示す軌跡情報を生成する軌跡生成手段と、生成された境界ヘッダと生成された軌跡情報とを含む符号化データを生成する際、境界の数に応じて境界ヘッダおよび軌跡情報の並べ方を変える整列手段と、を備える。【選択図】図２
2018098611.tif 000002
【特許請求の範囲】
【請求項１】
画像の符号化単位を複数の領域に分割する分割手段と、
前記複数の領域のそれぞれをラインと交差する方向に沿って区切る境界ごとに、その境界を特定するための境界ヘッダを生成するヘッダ生成手段と、
ラインを進めたときの前記境界の変位を示す軌跡情報を生成する軌跡生成手段と、
生成された前記境界ヘッダと生成された前記軌跡情報とを含む符号化データを生成する際、前記境界の数に応じて前記境界ヘッダおよび前記軌跡情報の並べ方を変える整列手段と、を備える符号化装置。
【請求項２】
前記整列手段は、前記境界の数と、ラインが延びる方向における該ラインの画素数に応じた所定数と、の比較の結果に応じて並べ方を変える請求項１に記載の符号化装置。
【請求項３】
前記軌跡生成手段は、ラインごとに、そのラインと次のラインとの間における、そのラインに存在する前記境界の変位を含む前記軌跡情報を生成し、
前記整列手段は、前記境界の数が前記所定数より大きい場合、前記所定数の前記境界ヘッダと残りの前記境界ヘッダとを、最初のラインに対応する前記軌跡情報を挟んで並べる請求項２に記載の符号化装置。
【請求項４】
前記整列手段は、あるラインについて、該ラインで終端する前記境界の数がまだ並べられていない前記境界ヘッダの数よりも小さい場合、まだ並べられていない前記境界ヘッダから該ラインで終端する前記境界の数の前記境界ヘッダを選択して該ラインに対応する前記軌跡情報の次に並べ、該ラインで終端する前記境界の数がまだ並べられていない前記境界ヘッダの数以上の場合、全てのまだ並べられていない前記境界ヘッダを該ラインに対応する前記軌跡情報の次に並べる請求項３に記載の符号化装置。
【請求項５】
前記整列手段は、前記境界の数が前記所定数と等しいかそれよりも小さい場合、生成された全ての前記境界ヘッダの次に前記軌跡情報を並べる請求項２から４のいずれか一項に記載の符号化装置。
【請求項６】
前記複数の領域のそれぞれは、隣接する異なる色の画素からなる領域と、隣接する同じ色の画素からなる領域とからなる請求項１から５のいずれか一項に記載の符号化装置。
【請求項７】
前記複数の領域のそれぞれは、隣接する同じ色の画素からなる請求項１から５のいずれか一項に記載の符号化装置。
【請求項８】
前記境界は、対応する領域の端の画素の集合で表される請求項１から７のいずれか一項に記載の符号化装置。
【請求項９】
前記境界ヘッダは、対応する境界の両端の座標と対応する領域の属性とを含む請求項１から８のいずれか一項に記載の符号化装置。 
【請求項１０】
前記境界ヘッダは、対応する境界の両端の座標と対応する領域の画素値とを含む請求項１から８のいずれか一項に記載の符号化装置。
【請求項１１】
画像の符号化単位を複数の領域に分割することと、
前記複数の領域のそれぞれをラインと交差する方向に沿って区切る境界ごとに、その境界を特定するための境界ヘッダを生成することと、
ラインを進めたときの前記境界の変位を示す軌跡情報を生成することと、
生成された前記境界ヘッダと生成された前記軌跡情報とを含む符号化データを生成する際、前記境界の数に応じて前記境界ヘッダおよび前記軌跡情報の並べ方を変えることと、を含む符号化方法。
【請求項１２】
コンピュータを請求項１乃至１０のいずれか一項に記載の装置の各手段として機能させるためのプログラム。
【請求項１３】
画像の符号化単位を分割して得られる複数の領域のそれぞれをラインと交差する方向に沿って区切る境界を特定するための境界ヘッダと、ラインを進めたときの前記境界の変位を示す軌跡情報と、を含む符号化データを復号し、前記画像を出力する復号装置であって、
前記符号化データを前記境界ヘッダと前記軌跡情報とに分離する分離手段と、
前記境界の数に応じて、全ての前記境界ヘッダを一度に保持手段に格納するか否かを決定する決定手段と、
ラインごとに、前記保持手段に保持される前記境界ヘッダに基づいてそのラインを復号する復号手段と、を備える復号装置。
【請求項１４】
前記軌跡情報に基づいて、前記境界ヘッダによって特定される前記境界の位置を更新する第１更新手段をさらに備え、
前記復号手段は、前記保持手段に保持される前記境界ヘッダおよび更新された前記境界の位置に基づいてラインを復号する請求項１３に記載の復号装置。
【請求項１５】
前記決定手段は、前記境界の数がラインが延びる方向における該ラインの画素数に応じた所定数より大きい場合、最初のラインに対して前記所定数の前記境界ヘッダを一度に前記保持手段に格納すると決定する請求項１３または１４に記載の復号装置。
【請求項１６】
前記保持手段は、最大で前記所定数の前記境界ヘッダを保持できるよう構成される請求項１５に記載の復号装置。
【請求項１７】
あるラインで終端する前記境界の有無を判定する判定手段と、
あるラインで終端する前記境界が有ると判定された場合、前記保持手段を更新する第２更新手段と、をさらに備える請求項１５または１６に記載の復号装置。
【請求項１８】
画像の符号化単位を分割して得られる複数の領域のそれぞれをラインと交差する方向に沿って区切る境界を特定するための境界ヘッダと、ラインを進めたときの前記境界の変位を示す軌跡情報と、を含む符号化データを復号し、前記画像を出力する復号方法であって、
前記符号化データを前記境界ヘッダと前記軌跡情報とに分離することと、
前記境界の数に応じて、全ての前記境界ヘッダを一度に保持手段に格納するか否かを決定することと、
ラインごとに、前記保持手段に保持される前記境界ヘッダに基づいてそのラインを復号することと、を含む復号方法。
【請求項１９】
コンピュータを請求項１３乃至１７のいずれか一項に記載の装置の各手段として機能させるためのプログラム。
【請求項２０】
画像の符号化単位を分割して得られる複数の領域のそれぞれをラインと交差する方向に沿って区切る境界を特定するための境界ヘッダと、ラインを進めたときの前記境界の変位を示す軌跡情報と、を含む符号化データの生成方法であって、
前記境界の数が所定数より大きい場合、前記所定数の前記境界ヘッダを示す第１ビット列を生成することと、
最初のラインに対応する前記軌跡情報を示す第２ビット列を前記第１ビット列の後に配置することと、
残りの前記境界ヘッダを示す少なくともひとつのビット列を前記第２ビット列の後に配置することと、を含む生成方法。
【請求項２１】
前記第２ビット列の後に配置することは、あるラインで終端する前記境界の数がまだ配置されていない前記境界ヘッダの数よりも小さい場合、まだ配置されていない前記境界ヘッダから該ラインで終端する前記境界の数の前記境界ヘッダを選択して該ラインに対応する前記軌跡情報の後に配置し、該ラインで終端する前記境界の数がまだ配置されていない前記境界ヘッダの数以上の場合、全てのまだ配置されていない前記境界ヘッダを該ラインに対応する前記軌跡情報の後に配置することを含む請求項２０に記載の生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置、符号化方法、復号装置、復号方法および生成方法に関する。
【背景技術】
【０００２】
境界の軌跡と領域の色とを用いて画像を表現する方法として、ＰＤＬ（ページ記述言語）が広く普及している。ＰＤＬでは画像をグラフィックオブジェクトの集合として表現しており、グラフィックオブジェクトは輪郭を成す境界と色とによって表現される。ＰＤＬで記述された画像を印刷装置によって印刷するために、ソフトウエア処理によってＰＤＬをハード処理に適した中間言語に変換し、その後、ハードウエアによって中間言語をラスタ画像に変換する技術が普及している。
【０００３】
例えば、特許文献１には、境界情報と塗り情報とによって表現されたグラフィックオブジェクトの集合からなる画像データ（中間データ）からラスタ画像を生成する方法が開示されている。境界情報は、軌跡（座標）を計算するための計算式を特定する情報と、計算式のパラメータと、を含む。また、画像データは、境界情報および塗り情報以外に、グラフィックオブジェクトの重なりの上下関係を示す層情報を含む。ラスタ画像は以下のごとく生成される。画像のラインごとにグラフィックオブジェクトの境界のＸ座標が計算され、隣接する境界の間の画素値が、対応するグラフィックオブジェクトの塗り情報を参照して求められる。同じ境界の間で複数のグラフィックオブジェクトが重なっていれば、層情報を参照して上下関係を求め、最も上（前面）にあるグラフィックオブジェクトの塗り情報が参照される。塗り情報が透明度を有する場合は、さらに下（後面）のグラフィックオブジェクトの塗り情報が参照され、複数のグラフィックオブジェクトの画素値をブレンドする計算が行われる。境界情報のうち、画素を生成したラインで終端せず次のラインで使われる境界については、パラメータを参照してＹ座標をインクリメントしたときのＸ座標が計算される。そして前記ラインで処理された全てのグラフィックオブジェクトの境界情報は、計算されたＸ座標の昇順にソートされ、次のラインの処理のために記憶される。以上を各ラインについて繰り返すことにより、ラスタ画像が生成される。
【０００４】
しかしながら、ＰＤＬで記述された画像が複雑な形状のグラフィックオブジェクトを含んでいたり、非常に多くのグラフィックオブジェクトを含む場合、中間言語も多数の境界データを含み、データ量や復号に必要になるメモリ容量が増大する。そこで、グラフィックオブジェクトの一部または全てをソフト処理によりラスタ画像に変換し、ラスタ画像を含む中間言語を生成して、データ量や復号に必要なメモリ容量を削減することがある。このとき中間言語に含まれるラスタ画像は圧縮されるが、グラフィック画像の劣化を回避するためにその圧縮には可逆符号化が用いられる。グラフィック画像を圧縮するために好適な可逆符号化方法として、ラスタ画像を隣接する同一色の画素から成る領域の集合とみなして、領域の境界の軌跡と画素値とを用いた符号化を行う可逆符号化技術が使われている。
また、画像品位を損なわずにデータ量をより小さくするために、非可逆符号化と可逆符号化とを領域毎に使い分ける符号化技術を用いることも考えられる。このような符号化では、領域の境界の軌跡と、境界に対応する領域が非可逆符号化された領域または可逆符号化された領域のいずれであるかを示す属性と、ラスタ画像を非可逆符号化した符号データと、可逆符号化された領域の画素値と、が符号化データに含まれる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１４９０３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の符号化技術では、復号の際のメモリ転送効率が低下する虞がある。または、復号の際に使用するメモリの容量が大きくなり、ハード規模が増大する虞がある。
【０００７】
本発明はこうした課題に鑑みてなされたものであり、その目的は、ハード規模を削減できる、またはメモリ転送効率を高めることができる画像処理技術の提供にある。
【課題を解決するための手段】
【０００８】
本発明のある態様は符号化装置に関する。この符号化装置は、画像の符号化単位を複数の領域に分割する分割手段と、複数の領域のそれぞれをラインと交差する方向に沿って区切る境界ごとに、その境界を特定するための境界ヘッダを生成するヘッダ生成手段と、ラインを進めたときの境界の変位を示す軌跡情報を生成する軌跡生成手段と、生成された境界ヘッダと生成された軌跡情報とを含む符号化データを生成する際、境界の数に応じて境界ヘッダおよび軌跡情報の並べ方を変える整列手段と、を備える。
【発明の効果】
【０００９】
本発明によれば、ハード規模を削減できる、またはメモリ転送効率を高めることができる画像処理技術を提供できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態に係る画像処理システムのハードウエア構成図である。
【図２】符号化装置の機能および構成を示すブロック図である。
【図３】図２の符号化装置における符号化処理の流れを示すフローチャートである。
【図４】図２の符号化装置に入力される矩形領域の一例を示す図である。
【図５】図２の符号化装置に入力される矩形領域の他の例を示す図である。
【図６】図４の矩形領域から生成される色別領域と色別領域の境界とを示す図である。
【図７】図６の境界を数値で表した境界情報を示す図である。
【図８】図７の境界情報を整列することによって得られる符号化データを示す図である。
【図９】図１の復号装置の機能および構成を示すブロック図である。
【図１０】図９の分離部をハードウエアで実装した場合のハードウエア構成図である。
【図１１】図９の復号装置における復号処理の流れを示すフローチャートである。
【図１２】図１１の復号処理におけるライン復号処理の流れを示すフローチャートである。
【図１３】図１１の復号処理における後続境界選択処理の流れを示すフローチャートである。
【図１４】符号化装置の機能および構成を示すブロック図。
【図１５】図４に示される矩形領域において、ハッチがかかっていない領域を異なる画素値の領域が結合された領域であるとした場合の境界の数値データを示す図。
【図１６】図１５の符号化データを復号する復号装置の機能および構成を示すブロック図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態を説明する。ただし、本発明の実施の形態は以下の実施の形態に限定されるものではない。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【００１２】
ラスタ画像を隣接する複数の画素から成る領域の集合とみなして、領域の境界の軌跡と画素値とを用いた符号化を行い、そのように符号化されたデータを復号する技術として、本出願人は特願２０１６−０７７５８０に記載の技術を提案している。そこでは、画像を隣接する画素からなる領域に分割し、領域を境界の開始点および変位量並びに領域の属性で表現することで符号化した符号化データを復号する方法が開示されている。符号化データには、境界の開始点座標および終端点座標並びに境界に囲まれる領域の属性からなるヘッダに続いて、境界の変位量の符号が順に記録される。属性は、領域が異なる色の画素を含み非可逆符号化された領域または単一色の画素からなる領域のいずれであるかを示し、単一色の画素からなる領域の場合は画素値を含む。また、ヘッダは開始点の座標順にソートされ、変位量の符号は適用対象の境界の座標順にソートされる。また、上記文献に記載の技術では、Ａ４サイズなどの一ページの画像をより少ない画素数の矩形画像に分割して、矩形画像ごとに符号化と復号とを行う。符号化データは１ライン目から最終ラインまで順に復号される。各ラインの復号において、開始点が当該ライン上にある境界データが読み出され、隣の境界との間のＸ座標の差分が計算され、ヘッダから読み出した属性が単一色の画素からなる領域を示す場合は、ヘッダから読みだした画素値が計算によって求めたＸ座標の差分に応じて出力される。また、ヘッダから読み出した属性が異なる色の画素を含み非可逆符号化された領域を示す場合は、非可逆符号化データの復号手段が出力する画素がＸ座標の差分に応じて出力される。これを１ライン分行うことにより１ラインの画像を復号する。境界データは、終端点が当該ラインでなければ、当該境界データのＹ座標をインクリメントしたときのＸ座標が、当該ラインにおける当該境界データの座標と変位量とから計算され、次のラインの復号のために記憶される。
【００１３】
上記文献に記載の方法では、ライン上の各画素の値が異なる場合、ライン上の全ての画素が境界となる。したがって、境界情報の数は矩形画像の画素数が上限となる。また、領域は重なりを持たないため、符号化データは境界情報と境界情報の個数を示す情報とから構成され、符号化データのサイズも矩形画像の画素数によって上限が決まる。
【００１４】
本発明者は、上記文献に記載の方法について、以下の課題を認識した。上記文献に記載の方法では、全ての境界のヘッダの後に変位量の符号が続く符号化データを復号する際に、メモリをランダムアクセスすることによって符号化データの読み込みが行われるため、メモリ転送効率が低下しうる。あるいはまた、ランダムアクセスを回避するために、復号手段に符号化データに含まれる全ての境界のヘッダをバッファするためのメモリを設けてもよいが、その場合、ハード規模が増大しうる。
本実施の形態では、説明を簡単にするため、画像を隣接する同一色の画素からなる領域に分割する例を挙げて説明する。しかしながら、複数の異なる色の画素を含み非可逆符号化される領域と単一色の画素からなる領域とが混在する場合にも本実施の形態に係る技術的思想を適用できることは、本明細書に触れた当業者には明らかである。
【００１５】
図１は、実施の形態に係る画像処理システム１００のハードウエア構成図である。画像処理システム１００は、画像データの符号化技術および復号技術に関し、特に、画像データを色別の領域に分割し、領域の境界の軌跡と画素値とを用いた符号化を行う可逆符号化技術および復号技術に関する。画像処理システム１００は、ＣＰＵ１０１と、ＲＡＭ１０２と、ＲＯＭ１０３と、外部ＩＦ１０４と、ＤＭＡＣ１０５と、復号装置１０６と、画像処理装置１０７と、印刷装置１０８と、インターコネクト１０９と、を備える。
【００１６】
ＣＰＵ１０１は、システム１００全体の制御を行う。ＲＡＭ１０２は、メモリコントローラとＤＲＡＭとから構成され、ＣＰＵ１０１で動作するプログラムが展開されるほか、ＣＰＵ１０１およびシステム１００上で動作する処理装置のワークメモリとして使われる。ＲＯＭ１０３は、ＣＰＵ１０１で動作するプログラムが記憶される。外部ＩＦ１０４は、外部機器とデータの送受信を行う。外部ＩＦ１０４は例えばＥｔｈｅｒｎｅｔやＵＳＢなどのＩＦ（InterFace）である。ＤＭＡＣ１０５は、ＣＰＵ１０１の制御の下、外部ＩＦ１０４、復号装置１０６、画像処理装置１０７、印刷装置１０８のそれぞれとＲＡＭ１０２との間で符号化データ、復号画像データ、印刷画像データを送受信させる。復号装置１０６は、符号化データを復号して復号画像データを生成する。画像処理装置１０７は、復号画像データを印刷装置１０８の特性に合うよう処理するとともに、印刷装置１０８の入力データフォーマットに合うように変換して印刷画像データを生成する。印刷装置１０８は、電子情報である印刷画像データに基づいて、トナーやインクを紙面などの記録媒体に定着させることで、紙面に画像を形成する。インターコネクト１０９は、ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、外部ＩＦ１０４、ＤＭＡＣ１０５、復号装置１０６、画像処理装置１０７、印刷装置１０８の間に介在し、それらを相互に接続する。インターコネクト１０９は、例えば共有バスやスイッチによって構成されたデータ転送経路である。
【００１７】
画像処理システム１００では、図１では図示されない外部のホストコンピュータなどの符号化装置によって画像データを符号化して符号化データを生成し、外部ＩＦ１０４で符号化データを受信する。符号化データは復号されるまで、ＣＰＵ１０１の制御の下でＲＡＭ１０２に保持される。あるいはまた、外部ＩＦ１０４で画像データを受信して、ＣＰＵ１０１で画像データの符号化を行ってもよい。この場合、画像処理システム１００は符号化装置を含む。
【００１８】
図２は、符号化装置２００の機能および構成を示すブロック図である。符号化装置２００は、画像を表す画像データを取得し、取得された画像データを符号化して符号化データを生成する。符号化装置２００において、画像データは所定の符号化単位ごとに符号化される。符号化単位は符号化装置において一度に符号化する画素の集まりまたは画像領域であってもよい。符号化単位は例えば４×４画素、８×８画素、１６×１６画素、３２×３２画素、６４×６４画素であってもよい。以下、説明を簡単にするため、符号化単位として１６×１６画素の画像データを採用し、その符号化単位を符号化および復号する場合を例として説明するが、本実施の形態は１６×１６画素に限定されるものではない。
【００１９】
符号化対象の画像データは、符号化装置２００に入力される前に、１６×１６画素の矩形領域（符号化単位）に分割される。分割の結果得られる矩形領域は予め定められた順序に従って、符号化装置２００に入力される。画像データのサイズが１６×１６画素の整数倍でない場合は、１６×１６画素の整数倍となるように右端、下端にパディング画素が付加された後に、矩形領域に分割される。
【００２０】
領域分割部２０１は、符号化装置２００に入力された１６×１６画素の矩形領域を画素の色で複数の色別領域に分割する。色別領域は、隣接する同じ色の画素からなる領域である。境界生成部２０２は、領域分割部２０１による分割の結果得られる色別領域をラインと交差する方向に沿って区切る境界を示す境界情報を生成する。例えば境界生成部２０２は、色別領域の左端の画素の座標の集合と色別領域の画素値（色）とから境界情報を生成する。ヘッダ生成部２０３は、境界ごとに、その境界を特定するための境界ヘッダを生成する。境界ヘッダは、対応する境界の両端の座標と対応する領域の画素値とを含む。例えばヘッダ生成部２０３は、境界生成部２０２によって生成された境界情報の始点のＸ座標およびＹ座標と、終点のＹ座標と、その境界情報が表す境界に対応する色別領域の画素値と、から境界ヘッダを生成する。境界情報に含まれる境界の座標は境界の位置を表す。軌跡生成部２０４は、ラインを進めたときの境界の変位を示す軌跡情報を生成する。例えば軌跡生成部２０４は、境界生成部２０２によって生成された境界情報を参照し、Ｙ方向に隣接する２つのラインの間における境界のＸ方向の変位（オフセット）を、各境界、各ラインについて計算する。軌跡生成部２０４は、この計算の結果得られる変位の集合を含む軌跡情報を生成する。整列部２０５は、ヘッダ生成部２０３によって生成された境界ヘッダと軌跡生成部２０４によって生成された軌跡情報とを含む符号化データを生成する際、境界の数に応じて境界ヘッダおよび軌跡情報の並べ方を変える。例えば整列部２０５は、後述する規則に従って、境界ヘッダと軌跡情報とを整列する。
【００２１】
領域分割部２０１、境界生成部２０２、ヘッダ生成部２０３、軌跡生成部２０４、整列部２０５はいずれも汎用プロセッサとプロセッサとによって実行されるソフトウエアによって実装されてもよい。あるいはまた、それらはいずれも専用ハードウエアによって実装されてもよい。従って、符号化装置２００は、汎用プロセッサとプロセッサとによって実行されるソフトウエアによって実装されてもよく、または専用ハードウエアによって実装されてもよい。あるいはまた、符号化装置２００は、汎用プロセッサと専用ハードウエアとを組み合わせて実装されてもよい。
【００２２】
以下、図３〜図８を用いて、図２の符号化装置２００における符号化処理を説明する。図３は、図２の符号化装置２００における符号化処理の流れを示すフローチャートである。図４は、図２の符号化装置２００に入力される矩形領域の一例を示す図である。図５は、図２の符号化装置２００に入力される矩形領域の他の例を示す図である。図６は、図４の矩形領域から生成される色別領域と色別領域の境界とを示す図である。図７は、図６の境界を数値で表した境界情報を示す図である。図８は、図７の境界情報を整列することによって得られる符号化データを示す図である。
【００２３】
符号化装置２００は符号化対象の画像を分割して得られる１６×１６画素の矩形領域４００を読み込む（Ｓ３０１）。矩形領域４００において、ハッチのパターンが色別領域の画素値に対応している。すなわち、２つの色別領域のハッチのパターンが同じであれば、それらの色別領域の色は同じであり、パターンが異なれば色も異なる。
【００２４】
図４、図５、図６において、ラインＬ０〜ラインＬ１５はそれぞれ、ラインが延びる方向すなわち横方向（Ｘ方向）に連なる１６個の画素からなるラインを示す。領域分割部２０１はラインＬ０〜ラインＬ１５のそれぞれを左から右へと走査して、互いに隣接しかつ同じ画素値を有する複数の画素から成る色別領域に分割する。また領域分割部２０１は、同じ画素値を有する画素と隣接しない画素があればそれをひとつの色別領域としてもよい。あるラインの各色別領域は符号化装置２００の内部記憶領域に記憶され、次のラインを処理する際に参照される。
【００２５】
矩形領域４００の最初のラインＬ０は、次の８つの色別領域に分割される。
０番目の画素（０，０）と１番目の画素（１，０）の色別領域０
２番目の画素（２，０）と３番目の画素（３，０）の色別領域１
４番目の画素（４，０）と５番目の画素（５，０）の色別領域２
６番目の画素（６，０）と７番目の画素（７，０）の色別領域３
８番目の画素（８，０）と９番目の画素（９，０）の色別領域４
１０番目の画素（１０，０）と１１番目の画素（１１，０）の色別領域５
１２番目の画素（１２，０）と１３番目の画素（１３，０）の色別領域６
１４番目の画素（１４，０）と１５番目の画素（１５，０）の色別領域７
【００２６】
矩形領域４００の次のラインＬ１は、先ず次の９つの色別領域に分割される。
０番目の画素（０，１）の色別領域８’
１番目の画素（１，１）と２番目の画素（２，１）の色別領域９’
３番目の画素（３，１）と４番目の画素（４，１）の色別領域１０’
５番目の画素（５，１）と６番目の画素（６，１）の色別領域１１’
７番目の画素（７，１）と８番目の画素（８，１）の色別領域１２’
９番目の画素（９，１）と１０番目の画素（１０，１）の色別領域１３’
１１番目の画素（１１，１）と１２番目の画素（１２，１）の色別領域１４’
１３番目の画素（１３，１）と１４番目の画素（１４，１）の色別領域１５’
１５番目の画素（１５，１）の色別領域１６’
【００２７】
次に色別領域８’〜色別領域１６’は、前のラインＬ０から得られた色別領域０〜色別領域７と比較され、同じ色かつ隣接する色別領域は、前のラインＬ０から得られた色別領域０〜色別領域７に統合される。ラインＬ０の色別領域とラインＬ１の色別領域とが隣接するとは、それらの色別領域がそれぞれ同じＸ座標の画素を含むことを意味する。その結果、以下の色別領域が生成される。
色別領域０：画素（０，０）、画素（１，０）、画素（１，１）、画素（２，１）
色別領域１：画素（２，０）、画素（３，０）、画素（３，１）、画素（４，１）
色別領域２：画素（４，０）、画素（５，０）、画素（５，１）、画素（６，１）
色別領域３：画素（６，０）、画素（７，０）、画素（７，１）、画素（８，１）
色別領域４：画素（８，０）、画素（９，０）、画素（９，１）、画素（１０，１）
色別領域５：画素（１０，０）、画素（１１，０）、画素（１１，１）、画素（１２，１）
色別領域６：画素（１２，０）、画素（１３，０）、画素（１３，１）、画素（１４，１）
色別領域７：画素（１４，０）、画素（１５，０）、画素（１５，１）
色別領域８：画素（０，１）
以降のラインＬ２〜ラインＬ１５もそれぞれ同様に処理される（Ｓ３０２）。
【００２８】
ただし、あるライン上で、同じ画素値の色別領域が複数あり、かつそれら複数の色別領域がいずれも直前のライン上にある同じ色の一つの色別領域と隣接している場合には、それら複数の色別領域のうちのいずれか一つのみが統合される。図５に示されるように、同じ色の画素が隣接していても、異なる複数の色別領域に分割される場合がある。ラインＬ８において、色別領域８と隣接し、かつ同じ画素値の色別領域は二つ生成される（画素（０，８）、画素（１，８）の色別領域と画素（４，８）、画素（５，８）の色別領域）。左側の色別領域から処理されれば、画素（０，８）、画素（１，８）の色別領域が先に処理され、色別領域８と統合される。その結果、画素（４，８）、画素（５，８）の色別領域は、色別領域８と隣接しかつ同じ色の色別領域であるが、異なる色別領域１５として分割される。
【００２９】
以上の処理によって、矩形領域４００は図６に示される色別領域０〜色別領域２０に分割される。
境界生成部２０２は色別領域０〜色別領域２０のそれぞれの左端画素の座標と画素値とからなる境界情報を生成する（Ｓ３０３）。本実施の形態において、境界は対応する色別領域の左端の画素の座標の集合として表される。図６において、縦の太い実線は境界を示し、横の太い破線は境界が繋がっていることを示す補助線を示す。白丸は境界の開始点を示し、黒丸は境界の終端点を示す。以降、色別領域Ｒの境界を境界Ｒと表記する。例えば境界９は（２，２）を開始点として、（３，３）（４，４）（５，５）（６，６）と続き、（７，７）を終端点とする。
【００３０】
ヘッダ生成部２０３は、境界生成部２０２によって生成された境界情報を参照し、境界ごとに、その境界の開始点の座標（Ｘ，Ｙ）と、終端点のＹ座標と、その境界に対応する色別領域の画素値と、を含む境界ヘッダを生成する（Ｓ３０４）。
【００３１】
軌跡生成部２０４は、境界生成部２０２によって生成された境界情報を参照し、Ｙ方向に隣接する２つのラインの間における境界のＸ方向の変位を、各境界、各ラインについて計算する。軌跡生成部２０４は、この計算の結果得られる変位の集合を含むライン別軌跡情報を生成する（Ｓ３０５）。
【００３２】
図７は図６の境界０〜境界２０の数値データを示す。境界０〜境界２０の境界ヘッダはそれぞれ、対応する境界の開始点の座標（開始Ｘ座標，先頭Ｙ座標）と、終端点のＹ座標である終端Ｙ座標と、対応する色別領域の画素値である領域色と、を有する。境界０の境界別軌跡情報は、ラインを進めたときの境界０のＸ座標の変位の集合を示す。境界１〜境界２０についても同様である。例えば境界２は座標Ｙ＝０〜１５にまたがって存在するため、境界２の境界別軌跡情報は、以下の１５個の変位の集合として生成される。
ライン０からライン１へのＸ座標の変位は＋１である
ライン１からライン２へのＸ座標の変位は＋１である
ライン２からライン３へのＸ座標の変位は＋１である
ライン３からライン４へのＸ座標の変位は＋１である
ライン４からライン５へのＸ座標の変位は＋１である
ライン５からライン６へのＸ座標の変位は＋１である
ライン６からライン７へのＸ座標の変位は＋１である
ライン７からライン８へのＸ座標の変位は−１である
ライン８からライン９へのＸ座標の変位は−１である
ライン９からライン１０へのＸ座標の変位は−１である
ライン１０からライン１１へのＸ座標の変位は−１である
ライン１１からライン１２へのＸ座標の変位は−１である
ライン１２からライン１３へのＸ座標の変位は−１である
ライン１３からライン１４へのＸ座標の変位は−１である
ライン１４からライン１５へのＸ座標の変位は−１である
【００３３】
軌跡生成部２０４は、生成された境界別軌跡情報を参照し、ラインごとに、そのラインと次のラインとの間における、そのラインに存在する境界の変位を含むライン別軌跡情報を生成する。図８にはライン別軌跡情報の例が示される。例えば、「軌跡情報＠Ｙ＝０」はラインＬ０の軌跡情報であり、ラインＬ０とラインＬ１との間における、ラインＬ０に存在する境界０〜７の変位を含む。「境界０（０）」はラインＬ０からラインＬ１へ進むときの境界０の変位を示し、＋１である。
【００３４】
境界生成部２０２は、境界データの生成が終わると、符号化データの先頭に境界の総数である境界数（Ｅ）を出力する（Ｓ３０６）。
【００３５】
整列部２０５は、符号化処理のステップＳ３０７〜Ｓ３１７の処理を実行することにより、ヘッダ生成部２０３によって生成された境界ヘッダと、軌跡生成部２０４によって生成された軌跡情報と、を整列して、符号化データを生成する。整列部２０５は、境界数（Ｅ）と横方向におけるラインの画素数（＝１６）とを比較する（Ｓ３０７）。なお、他の実施の形態では、ラインの画素数に応じた所定数、例えばラインの画素数よりも大きな所定数と境界数とが比較されてもよい。整列部２０５は、この比較の結果に応じて境界ヘッダおよびライン別軌跡情報の並べ方を変える。例えば、境界数（Ｅ）が１６以下の場合、整列部２０５は境界数（Ｅ）の後に、全ての境界ヘッダを開始点の座標順に並べて出力し（Ｓ３０８）、その次に全てのライン別軌跡情報を適用対象の境界の座標順に並べて出力する（Ｓ３０９）。
【００３６】
境界数（Ｅ）が１６より大きい場合、整列部２０５は境界数（Ｅ）の後に、先ず１６個の境界ヘッダを開始点の座標順に出力する（Ｓ３１０）。続いて整列部２０５は１ライン分の（この場合、最初のラインＬ０についての）ライン別軌跡情報を適用対象の境界の座標順に出力する（Ｓ３１１）。次に、整列部２０５はまだ符号化データに出力されていない境界ヘッダの有無を判定する（Ｓ３１２）。符号化データに出力されていない境界ヘッダがある場合、整列部２０５はラインＬ０で終端する境界の有無を判定する（Ｓ３１３）。さらに、ラインＬ０で終端する境界がある場合は、整列部２０５はラインＬ０で終端した境界の数（ｎ）と符号化データに出力されていない境界ヘッダの数とを比較する（Ｓ３１４）。ラインＬ０で終端した境界の数（ｎ）が符号化データに出力されていない境界ヘッダの数より小さい場合、整列部２０５は未出力の境界ヘッダからｎ個の境界ヘッダを選択する。整列部２０５は、選択されたｎ個の境界ヘッダをステップＳ３１１で出力されたライン別軌跡情報の後に出力する（Ｓ３１５）。また、ラインＬ０で終端した境界の数（ｎ）が符号化データに出力されていない境界ヘッダの数以上の場合、整列部２０５はステップＳ３１１で出力されたライン別軌跡情報の後に全ての未出力の境界ヘッダを出力する（Ｓ３１６）。整列部２０５は、処理したラインが最終ラインであるかを判定し（Ｓ３１７）、最終ラインであれば符号化を終了する。最終ラインでなければ、以降、ステップＳ３１１〜Ｓ３１６の処理が次のラインに対して繰り返される。
【００３７】
上記の処理によると、整列部２０５は、Ｅ＞１６の場合、１６個の境界ヘッダと残りの境界ヘッダとを、最初のラインＬ０に対応するライン別軌跡情報を挟んで並べる。図８は符号化データの一例を示す。ステップＳ３０６の処理により、符号化データの先頭には境界数を表すデータ領域８０２（ビット列）が配置される。ステップＳ３１０の処理により、データ領域８０２の後には、１６個の境界ヘッダがＹ座標、Ｘ座標の昇順に並べられたデータ領域８０４が配置される。ステップＳ３１１の処理により、データ領域８０４の後には、最初のラインＬ０についてのライン別軌跡情報（軌跡情報＠Ｙ＝０）を表すデータ領域８０６が配置される。軌跡情報＠Ｙ＝０はラインＬ０に存在しラインＬ０で終端しない境界０、境界１、境界２、境界３、境界４、境界５、境界６、境界７のそれぞれについて、ラインＬ０とラインＬ１との間のＸ座標の変位量を含む。
【００３８】
ラインＬ０が当該ラインのとき、ステップＳ３１３においてＮｏすなわちラインＬ０で終端する境界はないと判定される。したがって、ステップＳ３１７でのＮｏ判定を経て処理はステップＳ３１１に戻り、データ領域８０６の後に次のラインＬ１についてのライン別軌跡情報（軌跡情報＠Ｙ＝１）を表すデータ領域８０８が配置される。軌跡情報＠Ｙ＝１はラインＬ１に存在しラインＬ１で終端しない境界８、境界２、境界５のそれぞれについて、ラインＬ１とラインＬ２との間のＸ座標の変位量を含む。当該ラインＬ１について、ステップＳ３１２、Ｓ３１３ではいずれもＹｅｓと判定され、ステップＳ３１４ではｎ＝６≧４（＝未出力の境界の数）なのでＮｏと判定され、ステップＳ３１６に進む。ステップＳ３１６の処理により、データ領域８０８の後には、まだ符号化データに出力されていない残りの４個の境界ヘッダがＹ座標、Ｘ座標の昇順に並べられたデータ領域８１０が配置される。
【００３９】
以降の符号化処理ではステップＳ３１２の判定において必ずＮｏと判定されるので、最終ラインＬ１５に至るまでステップＳ３１１の処理が繰り返し実行される。その結果、データ領域８１０の後に、ラインＬ２〜Ｌ１４についてのライン別軌跡情報（軌跡情報＠Ｙ＝２〜１４）を表すデータ領域８１２が配置される。なお、ラインＬ１５は最終ラインであり、ラインＬ１５を超えて存在する境界はないので、ラインＬ１５についてのライン別軌跡情報はない。
【００４０】
軌跡情報＠Ｙ＝２はラインＬ２に存在しラインＬ２で終端しない境界８、境界９、境界１０、境界２、境界１１、境界１２、境界５、境界１３のそれぞれについて、ラインＬ２とラインＬ３との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝３はラインＬ３に存在しラインＬ３で終端しない境界８、境界９、境界１０、境界２、境界１１、境界１２、境界５のそれぞれについて、ラインＬ３とラインＬ４との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝４はラインＬ４に存在しラインＬ４で終端しない境界８、境界９、境界１０、境界２、境界１１、境界１２、境界５のそれぞれについて、ラインＬ４とラインＬ５との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝５はラインＬ５に存在しラインＬ５で終端しない境界８、境界９、境界１０、境界２、境界１１、境界１２のそれぞれについて、ラインＬ５とラインＬ６との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝６はラインＬ６に存在しラインＬ６で終端しない境界８、境界９、境界１０、境界２、境界１１、境界１２のそれぞれについて、ラインＬ６とラインＬ７との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝７はラインＬ７に存在しラインＬ７で終端しない境界８、境界２のそれぞれについて、ラインＬ７とラインＬ８との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝８はラインＬ８に存在しラインＬ８で終端しない境界８、境界１４、境界１５、境界１６、境界１７、境界２、境界１８、境界１９のそれぞれについて、ラインＬ８とラインＬ９との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝９はラインＬ９に存在しラインＬ９で終端しない境界１４、境界１５、境界１６、境界１７、境界２、境界１８、境界１９、境界２０のそれぞれについて、ラインＬ９とラインＬ１０との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝１０はラインＬ１０に存在しラインＬ１０で終端しない境界１４、境界１５、境界１６、境界１７、境界２、境界１８、境界１９、境界２０のそれぞれについて、ラインＬ１０とラインＬ１１との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝１１はラインＬ１１に存在しラインＬ１１で終端しない境界１５、境界１６、境界１７、境界２、境界１８、境界１９、境界２０のそれぞれについて、ラインＬ１１とラインＬ１２との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝１２はラインＬ１２に存在しラインＬ１２で終端しない境界１５、境界１６、境界１７、境界２、境界１８、境界１９、境界２０のそれぞれについて、ラインＬ１２とラインＬ１３との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝１３はラインＬ１３に存在しラインＬ１３で終端しない境界１６、境界１７、境界２、境界１８、境界１９、境界２０のそれぞれについて、ラインＬ１３とラインＬ１４との間のＸ座標の変位量を含む。軌跡情報＠Ｙ＝１４はラインＬ１４に存在しラインＬ１４で終端しない境界１６、境界１７、境界２、境界１８、境界１９、境界２０のそれぞれについて、ラインＬ１４とラインＬ１５との間のＸ座標の変位量を含む。
【００４１】
このように、符号化データにおいて、境界データの数が所定数（＝１６）を超える場合、一部の境界ヘッダの出力は後回しにされる。外部のホストコンピュータなどの符号化手段によって生成された符号化データは、外部ＩＦ１０４で受信され、ＣＰＵ１０１の制御の下、ＲＡＭ１０２に転送され記憶される。
【００４２】
図９は、図１の復号装置１０６の機能および構成を示すブロック図である。復号装置１０６は、読込部９０１と、分離部９０２と、第１キュー９０３と、境界選択部９０４と、後続境界記憶部９０５と、先行境界記憶部９０６と、画素数計算部９０７と、領域色読取部９０８と、画素出力部９０９と、更新部９１０と、第２キュー９１１と、カウント部９１２と、を含む。読込部９０１は、符号化データを先頭からシーケンシャルに読み込む。分離部９０２は、読込部９０１によって読み込まれた符号化データを、境界ヘッダとライン別軌跡情報とに分離する。第１キュー９０３は、分離部９０２における分離処理により得られた境界ヘッダを新規境界ヘッダとして記憶するＦＩＦＯである。第１キュー９０３への書き込みおよび第１キュー９０３からの読み出しは境界ヘッダの単位で行われる。また、第１キュー９０３の先頭に記憶されている境界ヘッダを第１キュー９０３から削除せずに参照可能とするよう第１キュー９０３を構成することが可能である。第１キュー９０３は、最大で１６個の境界ヘッダを保持できるよう構成される。
【００４３】
境界選択部９０４は、第２キュー９１１に記憶されている継続境界の情報と第１キュー９０３に記憶されている新規境界ヘッダとを比較する。具体的には、境界選択部９０４は座標（Ｘ，Ｙ）が小さい（Ｙ座標が小さいか、Ｙ座標が同値の場合はＸ座標が小さい）方の境界を後続境界として選択する。詳細な選択方法については、図１２を用いて後述する。
【００４４】
後続境界記憶部９０５は、境界選択部９０４によって選択された後続境界を記憶する。先行境界記憶部９０６は、境界選択部９０４によって新たに後続境界が選択されるとき、既に後続境界記憶部９０５に記憶されていた後続境界を先行境界として記憶する。画素数計算部９０７は、後続境界のＸ座標と先行境界のＸ座標との差分を計算し、計算結果を出力画素数とする。領域色読取部９０８は、先行境界記憶部９０６に記憶されている先行境界の画素値を読み取る。画素出力部９０９は、領域色読取部９０８で読み取った画素値を出力画素値として、画素数計算部９０７による計算の結果得られた出力画素数だけ出力画素値を連続して出力する。
【００４５】
更新部９１０は、先行境界の終端点のＹ座標を読み取る。更新部９１０は、読み取られたＹ座標が処理中のラインのＹ座標より大きいとき、分離部９０２における分離処理により得られた処理中のラインのライン別軌跡情報によって、境界の座標（Ｘ，Ｙ）を更新する。第２キュー９１１は、更新部９１０によって座標（Ｘ，Ｙ）が更新された境界の情報を継続境界の情報（以下、継続境界情報という）として記憶するＦＩＦＯである。第２キュー９１１への書き込みおよび第２キュー９１１からの読み出しは継続境界情報の単位で行われる。また、第２キュー９１１の先頭に記憶されている継続境界情報を第２キュー９１１から削除せずに参照可能とするよう第２キュー９１１を構成することが可能である。第２キュー９１１は、最大で１６個の境界ヘッダを保持できるよう構成される。
【００４６】
ここで、継続境界情報は、境界の更新された座標（Ｘ，Ｙ）と、終端点のＹ座標と、対応する色別領域の画素値と、を含む。例えば図６の例で、境界０の境界ヘッダがラインＬ０の復号処理において更新されると、座標はラインＬ１上の座標（１，１）となる。この座標は終端点のＹ座標（１）、色別領域の画素値（０ｘＡＡＡＡＡＡ）とともに第２キュー９１１に継続境界情報として記憶される。カウント部９１２は、画素出力部９０９が矩形領域の横方向の画素数である１６個の画素を出力するごとにカウントアップすることによって復号済のライン数（以下、復号済ライン数）をカウントする。
【００４７】
読込部９０１、分離部９０２、第１キュー９０３、境界選択部９０４、後続境界記憶部９０５、先行境界記憶部９０６、画素数計算部９０７、領域色読取部９０８、画素出力部９０９、更新部９１０、第２キュー９１１、カウント部９１２はいずれも汎用プロセッサとプロセッサとによって実行されるソフトウエアによって実装されてもよい。あるいはまた、それらはいずれも専用ハードウエアによって実装されてもよい。従って、復号装置１０６は、汎用プロセッサとプロセッサとによって実行されるソフトウエアによって実装されてもよく、または専用ハードウエアによって実装されてもよい。あるいはまた、復号装置１０６は、汎用プロセッサと専用ハードウエアとを組み合わせて実装されてもよい。
【００４８】
図１０は、図９の分離部９０２をハードウエアで実装した場合のハードウエア構成図である。分離部９０２は、境界数読取部１００１と、境界ヘッダ読取部１００２と、軌跡情報読取部１００３と、境界ヘッダカウント部１００４と、第１比較部１００５と、終端座標読取部１００６と、終端記憶部１００７と、第２比較部１００８と、を有する。境界数読取部１００１は、符号化データの先頭を参照し、境界数を読み取る。境界ヘッダ読取部１００２は、第１比較部１００５の比較結果と第２比較部１００８の比較結果とに応じて、符号化データから境界ヘッダを読み取る。軌跡情報読取部１００３は、更新部９１０からの要求に応じて、符号化データからライン別軌跡情報を読み取る。
【００４９】
境界ヘッダカウント部１００４は、境界数読取部１００１によって読み取られた境界数をカウント値の初期値としてセットし、後に境界ヘッダ読取部１００２が境界ヘッダを読み取るごとに該カウント値をデクリメントする。この動作により、符号化データからまだ読み出していない境界ヘッダの数がカウントされる。すなわち、境界ヘッダカウント部１００４のカウント値は、符号化データからまだ読み出していない境界ヘッダの数を表す。
【００５０】
第１比較部１００５は、境界数読取部１００１によって読み取られた境界数と矩形領域の横方向の画素数である１６とを比較し、比較結果を境界ヘッダ読取部１００２に出力する。具体的には、第１比較部１００５は、境界数が１６以下であるか否かを判定し、判定結果を境界ヘッダ読取部１００２に出力する。終端座標読取部１００６は、境界ヘッダの終端Ｙ座標を読み取る。終端記憶部１００７は、矩形領域のラインごとにそのラインで終端する境界の数をカウントして記憶する。第２比較部１００８は、復号済ライン数がカウント部９１２によって更新されると、まだ読み出されていない境界ヘッダの数と直前のラインにおいて終端した境界の数とを比較し、比較結果を境界ヘッダ読取部１００２に出力する。
【００５１】
境界数読取部１００１、境界ヘッダ読取部１００２、軌跡情報読取部１００３、境界ヘッダカウント部１００４、第１比較部１００５、終端座標読取部１００６、終端記憶部１００７、第２比較部１００８はいずれも汎用プロセッサとプロセッサとによって実行されるソフトウエアによって実装されてもよい。あるいはまた、それらはいずれも専用ハードウエアによって実装されてもよい。従って、分離部９０２は、汎用プロセッサとプロセッサとによって実行されるソフトウエアによって実装されてもよく、または専用ハードウエアによって実装されてもよい。あるいはまた、分離部９０２は、汎用プロセッサと専用ハードウエアとを組み合わせて実装されてもよい。
【００５２】
以下、図８および図１１〜図１３を用いて、図９の復号装置１０６における復号処理を説明する。図１１は、図９の復号装置１０６における復号処理の流れを示すフローチャートである。図１２は、図１１の復号処理における１ライン復号処理の流れを示すフローチャートである。図１３は、図１１の復号処理における後続境界選択処理の流れを示すフローチャートである。
【００５３】
復号装置１０６は、ＤＭＡＣ１０５によりＲＡＭ１０２から転送される符号化データ（図８参照）を読込部９０１により読み込む（Ｓ１１０１）。境界数読取部１００１は、読み込まれた符号化データの先頭から境界数（Ｅ）を読み取り、記憶する（Ｓ１１０２）。第１比較部１００５は、読み取られた境界数（Ｅ）が１ラインの画素数である１６以下であるか否かを判定する（Ｓ１１０３）。境界数（Ｅ）が１６以下であれば、境界ヘッダ読取部１００２は符号化データから全ての境界ヘッダを読み出し、第１キュー９０３に格納する（Ｓ１１０４）。この場合、軌跡情報読取部１００３は符号化データの残りの部分を全てライン別軌跡情報として更新部９１０に転送する。復号装置１０６は後述する１ライン復号処理を行う（Ｓ１１０５）。境界数（Ｅ）が１６以下の場合、復号装置１０６は１ライン復号処理を行った当該ラインが最終ライン（Ｌ１５）であるか否かを判定する（Ｓ１１０６）。復号装置１０６は、最終ラインでなければ次のラインの復号処理を行い、最終ラインであれば復号処理を終了する。上記の通り、ステップＳ１１０３では、境界数と所定数（＝１６）との大小関係に応じて、全ての境界ヘッダを一度に第１キュー９０３に格納するか否かが決定される。
【００５４】
ステップＳ１１０３における判定の結果、境界数（Ｅ）が１７以上の場合、分離部９０２は符号化データから１６個の境界ヘッダを読み出し、第１キュー９０３に格納する（Ｓ１１０７）。図８の符号化データは境界数が２１なので、ステップＳ１１０７ではそれらのなかから１６個の境界ヘッダが第１キュー９０３に読み込まれる。復号装置１０６は後述する１ライン復号処理を行う（Ｓ１１０８）。１ライン復号処理が終わると、復号装置１０６はまだ第１キュー９０３に読み込まれていない境界ヘッダ（以下、残り境界ヘッダという）があるか否かを判定する（Ｓ１１０９）。図８の符号化データでは、最初に１６個の境界ヘッダが第１キュー９０３に読み込まれたため、残り５個の残り境界ヘッダがある。ステップＳ１１０９による判定の結果、残り境界ヘッダがある場合、復号装置１０６は復号対象のラインＬで終端した境界があるか否かを判定する（Ｓ１１１０）。図８の符号化データでは、最初のライン（Ｌ０）で終端する境界はないため、復号装置１０６はラインＬ０が最終ラインか否か判定した（Ｓ１１１４）後、次のラインＬ１の処理を行う。ラインＬ２，Ｌ３，Ｌ４，Ｌ５，Ｌ６，Ｌ８，Ｌ１０，Ｌ１２，Ｌ１４においても同様の処理となる。
【００５５】
ステップＳ１１１０における判定の結果、復号対象のラインＬで終端した境界がある場合、第２比較部１００８はラインＬで終端した境界数（ｎ）と残り境界ヘッダの数とを比較する（Ｓ１１１１）。ラインＬ１では、境界０、境界１、境界３、境界４、境界６、境界７の６個の境界が終端しているため、ステップＳ１１１１では終端した境界数（＝６）が残り境界数（＝５）より小さいか否かが判定される。ステップＳ１１１１における判定の結果、ラインＬで終端した境界数（ｎ）が残り境界ヘッダの数より小さい場合、境界ヘッダ読取部１００２はｎ個の残り境界ヘッダを選択して第１キュー９０３に格納する（Ｓ１１１２）。一方、ラインＬで終端した境界数（ｎ）が残り境界ヘッダの数より大きいか等しい場合、境界ヘッダ読取部１００２は全ての残り境界ヘッダを第１キュー９０３に格納する（Ｓ１１１３）。図８の符号化データでは、ラインＬ１で終端した境界数（＝６）は残り境界数（＝５）より小さくないため、５個全ての残り境界ヘッダが第１キュー９０３に格納される。もし、残り境界数が６より大きければ、ステップＳ１１１２の処理において６個の残り境界ヘッダが選択され、第１キュー９０３に格納される。ラインＬ３、Ｌ５、Ｌ７、Ｌ９、Ｌ１１、Ｌ１３では、そこで終端する境界があるが、既に全ての境界ヘッダが読み込まれているため、ステップＳ１１０９で残り境界ヘッダがないと判定され、第１キュー９０３への境界ヘッダの格納は行われない。そして、復号装置１０６は１ライン復号処理を行った当該ラインが最終ライン（Ｌ１５）であるか否かを判定する（Ｓ１１１４）。ステップＳ１１１４における判定の結果、最終ライン（Ｌ１５）でなければステップＳ１１０８に戻って次のラインの処理が行われ、最終ラインであれば復号処理が終了する。
【００５６】
図１１の１ライン復号処理（Ｓ１１０５、Ｓ１１０８）は図１２に示されるフローで行われる。復号装置１０６は、最初に後続境界記憶部９０５に復号対象のラインＬの後続境界が記憶されているか否かを判定する（Ｓ１２０１）。後続境界記憶部９０５に当該ラインＬの後続境界が記憶されている場合、復号装置１０６はその後続境界を先行境界記憶部９０６に転送する（Ｓ１２０２）。あるラインの処理を開始した時点では後続境界は後続境界記憶部９０５に記憶されていない。境界選択部９０４は、後述する後続境界選択処理に従って、第１キュー９０３および第２キュー９１１を参照して後続境界を選択する（Ｓ１２０３）。復号装置１０６は、後続境界選択処理において、後続境界が選択されたか、またはいずれのキューからも境界が選択されなかったか判定する（Ｓ１２０４）。後続境界が選択された場合、境界選択部９０４は第１キュー９０３および第２キュー９１１のうち選択されたキューから後続境界を後続境界記憶部９０５に転送し、そこに格納する（Ｓ１２０５）。
【００５７】
次に復号装置１０６は先行境界記憶部９０６に先行境界が記憶されているか否かを判定する（Ｓ１２０６）。あるラインで最初に後続境界が選択される場合は、先行境界記憶部９０６に先行境界は記憶されておらず、あるラインで２個目以降の後続境界が選択される場合は、先行境界記憶部９０６に先行境界が記憶されている。先行境界記憶部９０６に先行境界が記憶されている場合、領域色読取部９０８はその先行境界から領域色を読み取る（Ｓ１２０７）。次に、画素数計算部９０７は、後続境界記憶部９０５に後続境界が記憶されているか確認し（Ｓ１２０８）、記憶されていれば、先行境界のＸ座標と後続境界のＸ座標との差分を出力画素数に設定する（Ｓ１２０９）。ライン上の最も右の色別領域以外はステップＳ１２０９により出力画素数が設定される。また、後続境界記憶部９０５に後続境界が記憶されていなければ、画素数計算部９０７は先行境界のＸ座標と矩形領域の右端の座標（Ｘ＝１６）との差分を出力画素数に設定する（Ｓ１２１０）。ライン上の最も右の色別領域ではステップＳ１２１０により出力画素数が設定される。画素出力部９０９は、ステップＳ１２０７で読み取った領域色をステップＳ１２０９またはステップＳ１２１０で設定した出力画素数だけ連続して出力する（Ｓ１２１１）。更新部９１０は、先行境界の終端Ｙ座標が当該ライン（Ｌ）であるか否かを判定する（Ｓ１２１２）。そして、当該ラインであれば（Ｙ＝Ｌ）、更新部９１０は先行境界を削除する（Ｓ１２１３）。それ以外の値（Ｙ＞Ｌ）であれば、更新部９１０は分離部９０２からライン別軌跡情報を読み出して先行境界の座標情報を更新し、その後、第２キュー９１１に転送し、格納する（Ｓ１２１４）。この時点で復号装置１０６は後続境界記憶部９０５に後続境界が記憶されていないかを判定し（Ｓ１２１５）、記憶されていなければ、ライン上の最も右の色別領域の処理が終わったものとして１ライン復号処理を終了する。また、後続境界記憶部９０５に後続境界が記憶されていれば、処理はステップＳ１２０１に戻り、次の色別領域の処理が行われる。
【００５８】
図１２の後続境界選択処理（Ｓ１２０３）は図１３に示されるフローで行われる。先ず、復号装置１０６は、第１キュー９０３に新規境界ヘッダが記憶されているか否かを判定する（Ｓ１３０１）。第１キュー９０３に新規境界ヘッダがなければ、復号装置１０６は第２キュー９１１に継続境界情報が記憶されているか否かを判定する（Ｓ１３０２）。第２キュー９１１に継続境界情報がなければ復号装置１０６は「後続境界なし」と判定する。ステップＳ１３０２で第２キュー９１１に継続境界情報があれば、復号装置１０６は第２キュー９１１の先頭の継続境界情報のＹ座標が当該ラインＬであるか否かを判定する（Ｓ１３０３）。そのＹ座標が当該ラインＬとは異なる場合、復号装置１０６は「後続境界なし」と判定し、一致する場合は「継続境界」を後続境界として選択する。ステップＳ１３０１で新規境界ヘッダがあると判定された場合、復号装置１０６は第１キュー９０３の先頭の新規境界ヘッダの開始Ｙ座標が当該ラインＬであるか判定する（Ｓ１３０４）。その開始Ｙ座標が当該ラインＬでなければ、復号装置１０６はステップＳ１３０２の判定を行う。その開始Ｙ座標が当該ラインＬであれば、復号装置１０６は第２キュー９１１に継続境界情報が記憶されているか否かを判定する（Ｓ１３０５）。第２キュー９１１に継続境界情報があれば、復号装置１０６は第２キュー９１１の先頭の継続境界情報のＹ座標が当該ラインＬであるか判定し（Ｓ１３０６）、なければ「新規境界」を後続境界として選択する。ステップＳ１３０６で継続境界のＹ座標が当該ラインＬと一致すると判定された場合、復号装置１０６は継続境界のＸ座標と新規境界ヘッダの開始Ｘ座標とを比較する（Ｓ１３０７）。ステップＳ１３０６で継続境界のＹ座標が当該ラインＬと一致しないと判定された場合、復号装置１０６は「新規境界」を後続境界として選択する。ステップＳ１３０７で継続境界のＸ座標が新規境界ヘッダの開始Ｘ座標よりも小さければ、復号装置１０６は「継続境界」を後続境界として選択し、逆ならば「新規境界」を後続境界として選択する。なお、「後続境界なし」と判定された場合は、１ライン復号処理において後続境界記憶部９０５は空となる。
【００５９】
本実施の形態に係る符号化・復号方法によると、符号化単位の横方向の画素数と同じ数のヘッダを記憶可能なバッファメモリと、符号化データを先頭から順に読込むための単純な読込手段を設ければよいため、復号装置のハード規模を削減できる。また、アドレス順にＤＲＡＭアクセスすることによって符号化データを読むことができるため、メモリ転送効率が向上する。
【００６０】
また、本実施の形態に係る符号化・復号方法では、矩形領域のラインを復号する際にそのラインの復号に必要な境界ヘッダがキューに格納されていることが保証される一方、不要な境界ヘッダは読み出されない。したがって、キューのサイズを低減することができる。その結果、色別領域の境界と該色別領域の画素値とを含む符号化データを生成する符号化装置のハードウエア規模を削減することができる。また、その符号化データを復号して画像を生成する復号装置のハードウエア規模を削減できる。また、符号化データを読み出す際のメモリ転送効率を高めることができる。
【００６１】
以上、実施の形態に係る画像処理システム１００の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００６２】
以下では、複数の異なる色の画素を含み非可逆符号化される領域と単一色の画素からなる領域とが混在する場合の符号化装置、符号化データおよび復号装置について述べる。
【００６３】
図１４は、符号化装置１４００の機能および構成を示すブロック図である。符号化装置１４００は、画像を表す画像データを取得し、取得された画像データを符号化して符号化データを生成する。符号化装置１４００において、画像データは所定の符号化単位ごとに符号化される。以下、説明を簡単にするため、符号化単位として１６×１６画素の画像データを採用し、その符号化単位を符号化および復号する場合を例として説明するが、本例は１６×１６画素に限定されるものではない。符号化装置１４００は、領域分割部１４０１と、境界生成部１４０２と、ヘッダ生成部１４０３と、画素置換部１４０４と、非可逆符号化部１４０５と、軌跡生成部２０４と、整列部２０５と、を備える。
【００６４】
領域分割部１４０１は、符号化装置１４００に入力された１６×１６画素の矩形領域を画素の色で複数の色別領域に分割する。さらに、あらかじめ定められた数よりも小さな画素数の領域が、あらかじめ定められた数よりも多く隣接する場合、前記隣接する領域を結合し、非可逆符号化領域とする。例えば、２画素よりも小さな領域が４つ以上隣接する場合は、前記隣接する領域を結合して一つの非可逆符号化領域とする。ただし、単一色の画素からなる領域と非可逆符号化領域の決定方法は一例であり、上記の方法に限定されるものではない。領域分割部１４０１は、分割および結合により得られた領域毎に非可逆符号化領域または単一画素値からなる領域のいずれであるかを示す属性を生成する。
【００６５】
境界生成部１４０２は、領域分割部１４０１による分割の結果得られる色別領域をラインと交差する方向に沿って区切る境界を示す境界情報を生成する。例えば境界生成部１４０２は、色別領域の左端の画素の座標の集合と色別領域の画素値（色）とから境界情報を生成する。
【００６６】
ヘッダ生成部１４０３は、境界ごとに、その境界を特定するための境界ヘッダを生成する。境界ヘッダは、対応する境界の両端の座標と対応する領域の属性と対応する領域の画素値とを含む。例えばヘッダ生成部１４０３は、境界生成部１４０２によって生成された境界情報の始点のＸ座標およびＹ座標と、終点のＹ座標と、その境界情報が表す境界に対応する色別領域の属性と、その境界情報が表す境界に対応する色別領域の画素値と、から境界ヘッダを生成する。境界情報に含まれる境界の座標は境界の位置を表す。
【００６７】
画素置換部１４０４は、符号化装置１４００に入力された１６×１６画素の矩形領域の画素のうち、単一色の領域に含まれる画素の画素値を置換する。例えば画素置換部１４０４は、１６×１６画素の矩形領域の画像を非可逆符号化した際に非可逆符号化データのデータ量がより小さくなる画素値を選択し、選択された画素値で元の画素値を置換する。非可逆符号化部１４０５は、画素値を置換した１６×１６画素の矩形領域の画像に対してＪＰＥＧなどの非可逆符号化を行い、非可逆符号化データを生成する。
【００６８】
図１５は、図４に示される矩形領域４００において、ハッチがかかっていない領域を異なる画素値の領域が結合された領域であるとした場合の境界０〜境界２０の数値データを示す図である。境界０〜境界２０の境界ヘッダはそれぞれ、対応する境界の属性と、開始点の座標（開始Ｘ座標，先頭Ｙ座標）と、終端点のＹ座標である終端Ｙ座標と、対応する色別領域の画素値である領域色と、を有する。属性は境界と対応する領域が単一画素値の領域であるか、異なる画素値の領域が結合された非可逆符号化領域であるかを示す。境界０〜境界２０の境界別軌跡情報は、ラインを進めたときの境界０〜境界２０のＸ座標の変位の集合を示す。
【００６９】
図１６は、図１５の符号化データを復号する復号装置１６００の機能および構成を示すブロック図である。復号装置１６００は、読込部９０１と、分離部９０２と、第１キュー９０３と、境界選択部９０４と、後続境界記憶部９０５と、先行境界記憶部９０６と、画素数計算部９０７と、領域色読取部９０８と、更新部９１０と、画素出力部１６０２と、第２キュー９１１と、非可逆符号データ復号部１６０１と、カウント部９１２と、を備える。
【００７０】
非可逆符号データ復号部１６０１は、入力される符号化データに含まれる非可逆符号化データを処理単位ごとに１６×１６画素の画像データに復号する。さらに１６×１６の画素を並べ替え、１６×１画素のライン毎に画素出力部１６０２に出力する。画素出力部１６０２は、境界の属性に従って、領域色読取部９０８で読み取った画素値または非可逆符号復号部１６０１によって復号された画素のいずれかを出力する。画素出力部１６０２は、境界の属性が単一色の領域の場合、領域色読取部９０８で読み取った画素値を出力画素値として、画素数計算部９０７による計算の結果得られた出力画素数だけ出力画素値を連続して出力する。また、画素出力部１６０２は、非可逆符号データ復号部１６０１から入力された画素のうち、出力した画素と同じ（Ｘ、Ｙ）座標の画素を廃棄する。境界の属性が非可逆符号化領域の場合、画素数計算部９０７による計算の結果得られた出力画素数だけ連続して、非可逆符号データ復号部１６０１から入力された画素を出力する。
【００７１】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７２】
１０１  ＣＰＵ、  １０２  ＲＡＭ、  １０３  ＲＯＭ、  １０４  外部ＩＦ、  １０５  ＤＭＡＣ、  １０６  復号装置、  １０７  画像処理装置、  １０８  印刷装置、  １０９  インターコネクト。
【図１】
2018098611.tif 000003
【図２】
2018098611.tif 000004
【図３】
2018098611.tif 000005
【図４】
2018098611.tif 000006
【図５】
2018098611.tif 000007
【図６】
2018098611.tif 000008
【図７】
2018098611.tif 000009
【図８】
2018098611.tif 000010
【図９】
2018098611.tif 000011
【図１０】
2018098611.tif 000012
【図１１】
2018098611.tif 000013
【図１２】
2018098611.tif 000014
【図１３】
2018098611.tif 000015
【図１４】
2018098611.tif 000016
【図１５】
2018098611.tif 000017
【図１６】
2018098611.tif 000018