(57)【要約】【課題】  文書データや該文書データに基づいて生成される印刷データに基づいて、高品質な縮小画像の画像データを高速に生成することができる画像処理装置を提供する。【解決手段】  プリンタドライバ３０３は、文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段と、該中間画像情報に対して縮小処理を施す縮小手段と、前記縮小手段により前記縮小処理が施された前記中間画像情報に基づき、前記文書データ又は前記印刷データよりも小さな画像サイズの画像データを生成する画像データ生成手段と、を具備する。【選択図】        図３
2006270767.tif 000002
【特許請求の範囲】
【請求項１】
文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段と、
該中間画像情報に対して縮小処理を施す縮小手段と、
前記縮小手段により前記縮小処理が施された前記中間画像情報に基づき、前記文書データ又は前記印刷データよりも小さな画像サイズの画像データを生成する画像データ生成手段と、
を具備することを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記中間画像情報は、１又は複数の画素から構成される画素群に対して共通の色情報を関連づけてなる情報を含む、
ことを特徴とする画像処理装置。
【請求項３】
請求項１又は２に記載の画像処理装置において、
前記縮小手段は、前記中間画像情報に対して補間処理を施す、
ことを特徴とする画像処理装置。
【請求項４】
請求項２又は３に記載の画像処理装置において、
前記中間画像情報は、スキャンライン毎のエッジ情報列を含み、
前記エッジ情報列を構成する各エッジ情報は、スキャンライン上に連続する１又は複数の画素から構成される画素群の始点座標、終点座標、及びそれらの画素に共通の色情報を含む、
ことを特徴とする画像処理装置。
【請求項５】
請求項４に記載の画像処理装置において、
前記エッジ情報は、前記画像要素の種別を示すタグ情報を含む、
ことを特徴とする画像処理装置。
【請求項６】
請求項４又は５に記載の画像処理装置において、
前記縮小手段は、縮小後のエッジ情報列に対応する縮小前のエッジ情報列を前記中間画像情報から複数取得して、各縮小前のエッジ情報列に対してスキャンライン方向の縮小処理を施した後、それら縮小処理後のエッジ情報列に対してマージ処理を施す、
ことを特徴とする画像処理装置。
【請求項７】
請求項４又は５に記載の画像処理装置において、
前記縮小手段は、縮小後のエッジ情報列に対応する縮小前のエッジ情報列を前記中間画像情報から複数取得して、それら複数の縮小前のエッジ情報列に対してマージ処理を施した後、該マージ処理後のエッジ情報列に対してスキャンライン方向の縮小処理を施す、
ことを特徴とする画像処理装置。
【請求項８】
請求項５に記載の画像処理装置において、
前記縮小手段は、縮小後のエッジ情報列に対応する縮小前のエッジ情報列のうち、前記タグ情報により選択されるエッジ情報に基づき、前記縮小後のエッジ情報列を生成する、
ことを特徴とする画像処理装置。
【請求項９】
請求項６又は７に記載の画像処理装置において、
縮小後のエッジ情報に含まれる色値を、該縮小後のエッジ情報に対応する複数の縮小前のエッジ情報の色値に基づいて決定する、
ことを特徴とする画像処理装置。
【請求項１０】
文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成ステップと、
該中間画像情報に対して縮小処理を施す縮小ステップと、
前記縮小ステップで前記縮小処理が施された前記中間画像情報に基づき、前記文書データ又は前記印刷データよりも小さな画像サイズの画像データを生成する画像データ生成ステップと、
を具備することを特徴とする画像処理方法。
【請求項１１】
文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段、
該中間画像情報に対して縮小処理を施す縮小手段、及び
前記縮小手段により前記縮小処理が施された前記中間画像情報に基づき、前記文書データ又は前記印刷データよりも小さな画像サイズの画像データを生成する画像データ生成手段
としてコンピュータを機能させるための画像処理プログラム。
【請求項１２】
文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段と、
前記中間画像情報に基づいて、複数の層毎の画像データを生成する層状画像データ生成手段と、を含み、
前記層状画像データ生成手段は、各層の前記画像データを生成する際、縮小指示が存在する場合は前記中間画像情報に対して縮小処理を施し、前記縮小処理が施された前記中間画像情報に基づいて、前記文書データ又は前記印刷データよりも小さな画像サイズの前記画像データを生成する、
ことを特徴とする画像処理装置。
【請求項１３】
文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成ステップと、
前記中間画像情報に基づいて、複数の層毎の画像データを生成する層状画像データ生成ステップと、を含み、
前記層状画像データ生成ステップは、各層の前記画像データを生成する際、縮小指示が存在する場合は前記中間画像情報に対して縮小処理を施し、前記縮小処理が施された前記中間画像情報に基づいて、前記文書データ又は前記印刷データよりも小さな画像サイズの前記画像データを生成する、
ことを特徴とする画像処理方法。
【請求項１４】
文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段、及び
前記中間画像情報に基づいて、複数の層毎の画像データを生成するとともに、各層の前記画像データを生成する際、縮小指示が存在する場合は前記中間画像情報に対して縮小処理を施し、前記縮小処理が施された前記中間画像情報に基づいて、前記文書データ又は前記印刷データよりも小さな画像サイズの前記画像データを生成する層状画像データ生成手段
としてコンピュータを機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置、画像処理方法及び画像処理プログラムに関し、アプリケーションが作成した文書データや印刷データなどを所定の中間画像情報に変換し、該中間画像情報をもとに出力対象などとなる画像データを生成する画像処理装置、画像処理方法及び画像処理プログラムに関する。
【背景技術】
【０００２】
近年、ドキュメントはワードプロセッサなどのコンピュータ用の文書作成アプリケーションソフトウェアを用いて作成され、電子メールで配信されたり、サーバコンピュータなどに保存されたりして必要に応じて配布されるようになった。一般に文書作成ソフトウェアは独自の形式で文書データを生成しているため、このような文書データを受け取った場合、文書作成者が使用した文書作成アプリケーションソフトウェアと同等のソフトウェアを利用して、配布された文書データを閲覧・表示している。
【０００３】
一方、ドキュメントを表示閲覧・編集可能な環境は多様化する傾向にあり、オペレーティングシステムの種類やバージョンの差異に加え、ＰＤＡ（パーソナル・データ・アシスタンス）などの携帯型情報端末でも文書データの閲覧要望が高まっている。このような多様なコンピュータ環境を考えた場合、もはやドキュメントの配信先に文書データ作成時に使用した環境があるとは限らない状況になっている。そこで、あらゆるドキュメントを配信先で特定のソフトウェアが無くても当該文書データを扱うことを可能とするために、文書データを画像データで表現して配信する方式が提案されている。但し、画像データは概してデータサイズが大きくなるため、ＪＰＥＧなどの画像圧縮処理を行うことが普通である。
【０００４】
この点、下記特許文献１に開示された技術では、文書作成アプリケーションソフトウェアなどで作成された文書データから、多値画像データと、当該多値画像データの各々の画素が文字であるか否かを示す１ビットの像域フラグ画像との２つを生成し、次に当該像域フラグ画像を基に多値画像データに含まれている文字領域の位置や大きさ、文字色を判別し、文字領域とそれ以外の領域で別々の圧縮を行うことで、効率的に文書データを圧縮することが提案されている。つまり、この技術では、文字や写真／グラフィックが混在した画像データを、文字画像とそれ以外の画像に分離し、文字画像については文字の形状を二値画像として表現することでＭＭＲなどの二値画像圧縮方式で圧縮するようにし、文字画像以外の画像はＪＰＥＧなどのような多値画像圧縮方式で圧縮するようにしている。このようにすることにより、ＪＰＥＧ圧縮する部分については、文字部分のエッジなどに含まれる高周波成分を圧縮した際に発生するモスキートノイズと呼ばれる画質劣化の発生を抑えることができ、文書データの高画質且つ高圧縮の画像データ表現が可能となる。
【特許文献１】特開２００３−２４４４４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術では、文書データを展開することによって多値画像を生成し、さらにこの多値画像から二値画像を作成しなければならず、処理時間がかかるという問題がある。
【０００６】
そこで、本願出願人は次の画像処理装置を検討している。図１は、この画像処理装置の概略の構成を示す図である。画像処理装置１０は、文書データ１１、もしくは文書データをプリンタ等の画像形成装置で出力する際に生成される印刷データ１２を入力とする。文書データ１１は、ワードプロセッサ等のアプリケーションプログラム固有に定義されるデータであり、印刷データ１２は、当該文書データを画像形成装置で出力する途中に発生するデータであって、例えば、プリンタ等の印刷装置においては、一般にＰＤＬ（ページ記述言語）などと呼ばれているデータに相当する。画像処理装置１０は、これらのデータを入力として、レイヤ別画像データ１６を最終的に出力する。
【０００７】
図２はレイヤ別画像データ１６の一例を示す図である。例えば、図２（Ａ）は文書データの構成例を示しており、ここでは黒色で描かれたテキストとグラフィックス、赤色で描かれたテキストとグラフィックス、および写真などの画像データを取り込んで作成されたイメージ、から構成されている。図２（Ｂ）はイメージを含む部分を一つのレイヤに集めた様子を示すもので、このレイヤは多値画像データを圧縮する方式、例えばＪＰＥＧ圧縮することができる。図２（Ｃ）はテキストやグラフィックスを含む部分を一つのレイヤに集めた様子を示しており、同じ色の領域毎にＭＭＲ圧縮と位置・サイズ、色情報の組み合わせとして表現することができる。ここで、ＭＭＲ圧縮される領域に含まれる画像データは、テキストやグラフィックスの存在する部分が「黒」画素に相当している。そこで、「白」画素部分は復号時に透明な領域であるものとして扱うように定義しておくと、図２（Ｃ）に示すＭＭＲ圧縮データを展開してから、該データにより指定された色情報を、図２（Ｂ）に示すＪＰＥＧ圧縮データを展開した上に着色することで、元の画像図２（Ａ）を再現することができる。本画像処理装置では、図２（Ｂ）を下地として扱い、図２（Ｃ）をその上に上書きしていく関係から、図２（Ｂ）を背景（以下ＢＧ）レイヤ、図２（Ｃ）を前景（以下ＦＧ）レイヤと呼ぶ。
【０００８】
本画像処理装置では、画像情報１４は、エッジ配列データ、タグデータ、外接矩形データからなっている。エッジ配列は、ラスタデータを表現するものである。タグデータは、「テキスト」、「写真」などの文書構成要素の属性を示すものである。外接矩形データは、タグ種別毎に生成されるデータであり、タグで示される描画オブジェクトが存在する領域の外接矩形を示す。この外接矩形の外には、当該描画オブジェクトが存在しないことが保障される。画像情報１４は、レイヤ別画像処理部１５によりレイヤ別画像データ１６に変換される。このように本画像処理装置は、タグデータと呼ばれる文書構成要素の属性をもとにレイヤを分離し、画像情報１４から直接レイヤ別画像データ１６を作成することを特徴としている。
【０００９】
ところで、ＦＧレイヤとＢＧレイヤを分けて別々の圧縮を施す場合、ＢＧレイヤの解像度をＦＧレイヤの解像度よりも低くする場合が多い。これは、文字はＦＧレイヤで高解像度のまま保つことにより、文書の可読性を維持したまま、画像データのサイズを小さくするのに有効であるためである。上記特開２００３−２４４４４７号公報では、ＢＧレイヤの多値画像を縮小する画像処理装置も提案されている。一般に多値画像は、サイズが大きいため、縮小するのに時間がかかる。例えば、Ａ４サイズの３００ＤＰＩの画像を非圧縮、ＲＧＢ２４ビット形式で保存すると、約２４メガバイトのサイズになる。また、画像データを縮小する際には、単純間引きによる縮小ではなく、何らかの補間処理を伴った縮小方法が望ましい。補間縮小は、高画質な縮小画像が得られるが、補間処理のため２４メガバイトの画像データ全てに対する読み込みと、画素値の演算処理を行う必要があり、処理に時間がかかるという問題がある。
【００１０】
本発明は上記課題に鑑みてなされたものであって、その目的は、文書データや該文書データに基づいて生成される印刷データに基づいて、高品質な縮小画像の画像データを高速に生成することができる画像処理装置、画像処理方法及び画像処理プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明に係る画像処理装置は、文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段と、該中間画像情報に対して縮小処理を施す縮小手段と、前記縮小手段により前記縮小処理が施された前記中間画像情報に基づき、前記文書データ又は前記印刷データよりも小さな画像サイズの画像データを生成する画像データ生成手段と、を具備することを特徴とする。
【００１２】
また、本発明に係る画像処理装置は、文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成ステップと、該中間画像情報に対して縮小処理を施す縮小ステップと、前記縮小ステップで縮小された前記中間画像情報に基づき、前記文書データ又は前記印刷データよりも小さな画像サイズの画像データを生成する画像データ生成ステップと、を具備することを特徴とする。
【００１３】
さらに、本発明に係る画像処理装置は、文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段、該中間画像情報に対して縮小処理を施す縮小手段、及び前記縮小手段により縮小された前記中間画像情報に基づき、前記文書データ又は前記印刷データよりも小さな画像サイズの画像データを生成する画像データ生成手段としてコンピュータを機能させるための画像処理プログラムである。コンピュータは、パーソナルコンピュータ、サーバコンピュータ等の各種の汎用コンピュータのみならず、複写機や複合機等の機器に組み込まれたコンピュータも含む（以下同様）。また、プログラムは、各種のコンピュータ読み取り可能な情報記憶媒体に格納されてもよい（以下同様）。
【００１４】
本発明によれば、中間画像情報に対して縮小処理が施されるので、中間画像情報のフォーマットを適宜なものとすることで、高品質な縮小画像の画像データを高速に生成することができる。
【００１５】
なお、前記中間画像情報は、１又は複数の画素から構成される画素群に対して共通の色情報を関連づけてなる情報を含むようにしてもよい。こうすれば、画素毎に用意されたデータを処理対象とするよりも、総処理量を少なくすることができ、高速に縮小処理を行うことができるようになる。
【００１６】
また、前記縮小手段は、前記中間画像情報に対して補間処理を施すようにしてもよい。こうすれば、さらに高品質の縮小処理を行うことができる。
【００１７】
この場合、前記中間画像情報は、スキャンライン毎のエッジ情報列を含み、前記エッジ情報列を構成する各エッジ情報は、スキャンライン上に連続する１又は複数の画素から構成される画像群の始点座標、終点座標、及びそれらの画素に共通の色情報を含むようにしてもよい。このような中間画像情報に対する縮小処理は、縮小率に応じた距離だけ、始点座標及び終点座標をスキャンライン方向（負方向）に移動させる処理、縮小率に応じた数の隣接するスキャンラインに関するエッジ情報列をマージ（統合）する処理を含んでもよい。後者の処理は、対応する始点座標及び終点座標を含む各エッジ情報（複数のエッジ情報であり、各々は上記隣接するスキャンラインのそれぞれに対応するもの）に基づき、マージ後のエッジ情報を算出する処理である。この処理は、上記隣接するスキャンラインにより１つのスキャンラインを合成した場合における、該合成されたスキャンラインのエッジ情報を算出する処理である。なお、前記エッジ情報は、前記画像要素の種別を示すタグ情報を含むようにしてもよい。
【００１８】
また、前記縮小手段は、縮小後のエッジ情報列に対応する縮小前のエッジ情報列を前記中間画像情報から複数取得して、各縮小前のエッジ情報列に対してスキャンライン方向の縮小処理を施した後、それら縮小処理後のエッジ情報列に対してマージ処理を施すようにしてもよい。あるいは、前記縮小手段は、縮小後のエッジ情報列に対応する縮小前のエッジ情報列を前記中間画像情報から複数取得して、それら複数の縮小前のエッジ情報列に対してマージ処理を施した後、該マージ処理後のエッジ情報列に対してスキャンライン方向の縮小処理を施すようにしてもよい。
【００１９】
また、前記縮小手段は、縮小後のエッジ情報列に対応する縮小前のエッジ情報列のうち、前記タグ情報により選択されるエッジ情報に基づき、前記縮小後のエッジ情報列を生成するようにしてもよい。また、縮小後のエッジ情報に含まれる色値を、該縮小後のエッジ情報に対応する複数の縮小前のエッジ情報に含まれる色値に基づいて決定してもよい。
【００２０】
また、本発明の他の側面に係る画像処理装置は、文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段と、前記中間画像情報に基づいて、複数の層毎の画像データを生成する層状画像データ生成手段と、を含み、前記層状画像データ生成手段は、各層の前記画像データを生成する際、縮小指示が存在する場合は前記中間画像情報に対して縮小処理を施し、前記縮小処理が施された前記中間画像情報に基づいて、前記文書データ又は前記印刷データよりも小さな画像サイズの前記画像データを生成する。
【００２１】
また、本発明の他の側面に係る画像処理方法は、文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成ステップと、前記中間画像情報に基づいて、複数の層毎の画像データを生成する層状画像データ生成ステップと、を含み、前記層状画像データ生成ステップは、各層の前記画像データを生成する際、縮小指示が存在する場合は前記中間画像情報に対して縮小処理を施し、前記縮小処理が施された前記中間画像情報に基づいて、前記文書データ又は前記印刷データよりも小さな画像サイズの前記画像データを生成する。
【００２２】
また、本発明の他の側面に係る画像処理プログラムは、文書データ又は該文書データに基づいて生成される印刷データに基づき、中間画像情報を生成する中間画像情報生成手段、及び前記中間画像情報に基づいて、複数の層毎の画像データを生成するとともに、各層の前記画像データを生成する際、縮小指示が存在する場合は前記中間画像情報に対して縮小処理を施し、前記縮小処理が施された前記中間画像情報に基づいて、前記文書データ又は前記印刷データよりも小さな画像サイズの前記画像データを生成する層状画像データ生成手段としてコンピュータを機能させるための画像処理プログラムである。
【００２３】
これらの発明によれば、ユーザは縮小指示を与えることにより、高品質の縮小画像の画像データを高速に生成することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【００２５】
実施形態１．
（全体構成）
まず、本発明の実施形態１を説明する。図３は、本実施形態にかかる画像処理装置のブロック図である。なお、本画像処理装置は、パーソナルコンピュータ上で動作するソフトウェアとして実現されている。アプリケーション３０１は、文書の作成、編集、印刷などの機能を持つソフトウェアであり、パーソナルコンピュータ上のＯＳ（オペレーションシステム）上で動作する。プリンタドライバ３０３は、ＯＳ上で動作するソフトウェアであり、文書の印刷時にＯＳから呼び出される。
【００２６】
（印刷処理の概要）
ここでユーザが文書を印刷するときの処理の流れを、まず説明する。ユーザがアプリケーションソフトウェアのＵＩ（ユーザインターフェイス）を通じて印刷指示をすると、アプリケーションソフトウェアは、文書データ３０５を解釈し、ＯＳで定義された描画命令に変換してＯＳに渡す。ＯＳはアプリケーションソフトウェアによって送られた描画命令を印刷用の描画命令に変換してプリンタドライバに渡す。プリンタドライバは、印刷用描画命令を解釈して、多層圧縮画像データを生成する。本実施形態における多層圧縮画像データとは、文書中のオブジェクトの種類を元に画像を、ＦＧ（前景；Foreground）画像とＢＧ（背景；Background）画像に分け、夫々別々に圧縮した画像データである。例えば、ＦＧに文字を、ＢＧにグラフィックとイメージを割り当て、ＦＧ画像を可逆圧縮、ＢＧ画像を非可逆圧縮することにより、小さいデータサイズで高画質な画像データを生成することができる。
【００２７】
（プリンタドライバの構成）
図４を元に実施形態１におけるプリンタドライバの構成を説明する。プリンタドライバは、インターフェイス部４０１、中間データ生成部４０２、ＦＧ画像生成部４０３、ＦＧ画像圧縮部４０４、ＢＧ穴埋め処理部４０５、ＢＧエッジリスト縮小処理部４０６、エッジリストバッファ４０７、ＢＧ画像生成部４０８、ＢＧ画像圧縮部４０９、及びフォーマット部４１０からなる。図４のプリンタドライバの構成を説明する前に、まず本実施形態１で採用する中間データ（中間画像情報）の形式について説明する。
【００２８】
（エッジリストの説明）
本実施形態で採用する１ページ分の中間データの構造を図５に示す。１ページ分の中間データは、文書をラスタ化した時のスキャンライン数分のエッジリストというデータ構造からなる。各エッジリスト（エッジ情報列）は、そのスキャンラインを表現する複数のエッジ（エッジ情報）からなる。エッジは、スキャンライン方向に隣接する１又は複数の画素のうち、共通の色情報が与えられたものから構成される画像群であり、ここではこの画像群（エッジ）を特定するため、図６に示されるデータ構造が採用される。すなわち、エッジは、エッジが開始するＸ座標と、エッジが終了するＸ座標、エッジのタグ、及びそれらの画素に共通の色情報からなる。エッジのタグは、エッジがどのような描画オブジェクトの一部であるかを示すものであり、実施形態１では図７に示すように、Graphics、Text、Imageのいずれかである。Graphicsはベクトル表現された図形を、Textは文字、Imageはラスタ画像を示す。色情報は、タグ種別がGraphic又はTextの場合は、図形又は文字の色値そのものが入る。一方、タグ種別がImageの場合は、色情報はエッジの長さ分のラスタ画像が保存されているメモリ上のアドレスを示す。すなわち、本実施形態では、入力される文書データをラスタ化した場合に、共通の属性（色情報、描画オブジェクトの種類）を有するスキャンライン方向に連続する画素群を検出して、それら画素群を特定するデータ（スキャンラインの番号、エッジの開始Ｘ座標、終了Ｘ座標）とそれら画素群に共通する属性情報（色情報、描画オブジェクトの種類）とを対応づけ、エッジリスト群（中間画像情報）として記憶しているのである。このようにエッジを構成することにより、１ライン分のエッジリストで１つのスキャンラインを構成することができることがわかる。なお、本実施形態では、２５６諧調の白黒画像を対象とし、色値２５５が黒を、色値０が白を表すものとする。
【００２９】
（プリンタドライバの動作の説明）
次に図４を元に本実施形態のプリンタドライバの動作を説明する。インターフェイス部４０１は、ＯＳからの呼び出される関数からなる。この関数はＯＳで定義された印刷用描画命令のインターフェイスに従ったものとなる。中間データ生成部４０２は、ＯＳから呼び出される描画命令を解釈し、プリンタドライバ内部の文書データの表現であるエッジリストを生成する。この際、図８に示す対応表（タグ種別とレイヤーとを対応づけた表）を参照しながら、各レイヤー（ＦＧ又はＢＧ）のエッジリスト群を生成する。
【００３０】
生成されたエッジリストは、ＦＧ画像生成部４０３とＢＧ穴埋め処理部４０５にそれぞれ渡される。ＦＧ画像生成部４０３は、ＦＧの画像データを生成し、その画像データをＦＧ画像圧縮部４０４に渡す。ＦＧ画像圧縮部４０４は、ＦＧ画像データを所定の圧縮方式（例えばＭＭＲ圧縮等）で圧縮を行う。ＢＧ穴埋め処理部４０５は、画像データからＦＧレイヤの画像を除いた部分をその周辺のＢＧレイヤの色値で埋める。本実施形態では、ＦＧエッジの隣に存在するＢＧエッジの色値を参照して決定した色値を持つエッジをエッジリストに追加することにより、エッジリストレベルで穴埋め処理を行う。
【００３１】
ＢＧエッジリスト縮小処理部４０６は、ＢＧ穴埋め処理部４０５からエッジリストを受け取り、エッジリストの縮小処理を行い、縮小したエッジリストをＢＧ画像生成部４０８に渡す。なお、ＢＧエッジリスト縮小処理部４０６は、縮小時の補間処理のため、エッジリスト蓄積バッファ４０７を持ち、複数のエッジリストを蓄積した後、縮小されたエッジリストをひとつ出力する。蓄積するエッジリストの数は縮小率に依存する。
【００３２】
ＢＧ画像生成部４０８は、エッジリストをラスタ画像に展開し、ラスタ画像をＢＧ画像圧縮部４０９に渡す。ＢＧ画像圧縮部４０９は、ＢＧ画像データを所定の圧縮方式で圧縮を行う。本実施形態ではＪＰＥＧ圧縮を利用する。最後に、ＦＧ圧縮画像とＢＧ圧縮画像はフォーマット部４１０に渡される。フォーマット部４１０は、所定の画像フォーマットでＦＧ圧縮画像とＢＧ圧縮画像を包み、ＦＧ圧縮画像のデータ及びＢＧ圧縮画像のデータを含むデータをファイルに書き込む。
【００３３】
以下では、ＢＧエッジリスト縮小処理部４０６について詳しく説明する。本実施形態では、ラスタ画像に対する面積平均法による補間縮小処理を施した場合と同等の効果が得られるエッジリストの縮小処理を採用する。そこで、まず面積平均法によるラスタ画像の縮小処理について説明する。
【００３４】
（一般的な補間縮小の説明）
図９は、縮小処理対象となる画像例９０１を示している。各格子は一つの画素を示し、その格子内の数字は、各画素の白黒の濃度値（色値）を示している。各画素には、Ｘ座標（横方向）とＹ座標（縦方向）の座標値を指定することにより、アクセスすることができる。例えば、Ｘ＝５，Ｙ＝３の位置にある画素の濃度値は２５５となる。
【００３５】
図１０の１００１は、画像例９０１を面積平均法で１／２縮小する過程を説明するためのものである。また、図１１の１１０１は、画像例９０１を面積平均法で１／２縮小した結果得られる画像を示している。１００１における太い縦横線は、縮小後一つの画素にマッピングされる画素群を囲うものである。例えば、（Ｘ＝４，Ｙ＝４），（Ｘ＝５，Ｙ＝４），（Ｘ＝４，Ｙ＝５），（Ｘ＝５，Ｙ＝５）の位置にある４つの画素群は、縮小後一つの画素にマッピングされる。面積平均法を使う場合、これら４つの画素の平均値６４が求められ、１１０１の（Ｘ＝２，Ｙ＝２）の画素にマッピングされる。
【００３６】
（エッジリスト表現の説明）
図１２の１２０１は、画像例９０１のエッジリスト表現例である。例えば、９０１の画素列（Ｘ＝５，Ｙ＝４），（Ｘ＝６，Ｙ＝４），…，（Ｘ＝１０，Ｙ＝４）の濃度値はすべて２５５である。したがって、これらはソリッドカラー（一定の色値）を持つエッジＥ８で表現されている。また、（Ｘ＝１１，Ｙ＝４），（Ｘ＝１２，Ｙ＝４），…，（Ｘ＝２２，Ｙ＝４）の濃度値は６４、１２８、６４、１２８,…と画素毎に変化する。このような場合は、イメージ形式のデータをもつエッジＥ９として表現されている。図１３と図１４は、それぞれ図９の画像データ９０１をエッジリストで表現した場合の、ライン４とライン５の構造を示している。例えば、前述したエッジＥ８は、ライン４のエッジリスト１３０１に含まれており、開始Ｘ座標が５、終了Ｘ座標が１０、タグがGraphic、色情報が一定値の２５５となっている。また、エッジＥ９も、ライン４のエッジリスト１３０１に含まれており、その開始Ｘ座標は１１、終了Ｘ座標は２２、タグはImage、色情報はイメージデータへのポインタとなっている。ポインタ先には、６４、１２８、６４、１２８…と交互に濃度値が変化する１２バイトのイメージデータが含まれている。ライン４には、その他エッジＥ７、Ｅ８、Ｅ１１が存在する。また図１４の１４０１は、ライン５のエッジリストであり、Ｅ１２、Ｅ１３、Ｅ１４の３つのエッジを含んでいる。
【００３７】
（ＢＧエッジリスト縮小処理部４０６の詳細）
次にＢＧエッジリスト縮小処理部４０６の詳細を説明する。
【００３８】
（ページ開始処理）
ＢＧエッジリスト縮小処理部４０６は、１ページの処理の開始時にＢＧ穴埋め処理部４０５からページ開始指示を受ける。ＢＧエッジリスト縮小処理部４０６は、ページ開始指示を受けると、図２２のフローチャートで示される処理を行う。Ｓ２２０１で処理が開始されると、Ｓ２２０２に進み、ページの縮小率から蓄積すべきエッジリストの最大値を計算する。例えば、１／２縮小する場合は、蓄積すべきエッジリストの最大値は２となる。次にＳ２２０３に進み、エッジリストバッファを確保する。例えば、１／２縮小する場合は、最大で２ライン蓄積可能なサイズのバッファを確保することになる。次にEdgeListCountを０で初期化する。EdgeListCountは、蓄積したエッジリストの数を計測するためのカウンタである。
【００３９】
（エッジリスト受信処理）
ページ開始処理が終了すると、ＢＧエッジリスト縮小処理部４０６は、ＢＧ穴埋め処理部４０５からエッジリストを１ラインずつ受け取る。ＢＧエッジリスト縮小処理部４０６のエッジリスト受信処理は図２３のフローチャートで示される。Ｓ２３０１で受信処理が開始するとＳ２３０２に進み、受信したエッジリストをエッジリストバッファ４０７に蓄積する。次にＳ２３０３に進み、EdgeListCountに１を加える。次にＳ２３０４に進み、縮小時に参照すべきエッジリストが全て揃ったかどうかを検査する。例えば、１／２縮小の場合、EdgeListCountが２になったかどうかを判定すればよい。なお、本実施形態では、ラインの数は縮小率に合わせて調整されているものとする。例えば、ページのライン数は１／２縮小の場合は偶数、１/３縮小の場合は３の倍数となるように調整されている。次にフローチャートに戻り、Ｓ２３０４の判定が否定の場合は、Ｓ２３１３に進み処理を終了する。一方、Ｓ２３０４での判定が肯定の場合は、Ｓ２３０５に進みエッジリスト分割点取得処理を行う。
【００４０】
（エッジリスト分割点取得処理）
エッジリスト分割点とは、補間縮小するために参照されるエッジリスト群に含まれる全てのエッジの終了Ｘ座標の和集合である。例えば、エッジリスト表現１２０１のライン４とライン５が参照されるエッジリストである場合、エッジリスト分割点は、｛４、１０、２２、２８、３１｝となる。
【００４１】
フローチャートに戻ると、次にＳ２３０６に進み、参照される全てのエッジリストに対するループに入る。このループはＳ２３０９で終了する。すなわち、Ｓ２３０７のエッジリスト分割処理とＳ２３０８のエッジリストのＸ方向（スキャンライン方向）への縮小処理が全エッジリストに対して行われる。
【００４２】
（エッジリスト分割処理）
エッジリスト分割処理とは、対象となる複数のエッジリストに含まれるエッジを分割することにより、エッジの数とエッジの座標値（開始Ｘ座標と終了Ｘ座標）が全てのエッジリストで同一になるようにする処理である。例えば、１２０１のライン４とライン５が対象である場合、分割処理によりライン４のエッジリストからは１５０１のエッジリストが、ライン５のエッジリストからは１５０２のエッジリストが得られる。この例の場合は、ライン４は分割前とエッジの状態は変わらないが、ライン５はエッジ数が２つ増加し、Ｅ１２のエッジがＥ１２．１とＥ１２．２に、Ｅ１４のエッジがＥ１４．１とＥ１４．２に分割される。より具体的には、分割後のライン４のエッジリストは図１６で、分割後のライン５のエッジリストは図１７で示される。
【００４３】
Ｓ２３０７のエッジリスト分割処理を図２４のフローチャートをもとに説明する。エッジリスト分割処理による出力は、入力エッジリストの個々のエッジに対して分割処理が施された結果のエッジリストであり、データ構造としては、通常のエッジリストと変わりないものである。なお、以降エッジリスト[EdgeIndex]という表記は、エッジリストのEdgeIndex番目のエッジへのアクセスを意味する。
【００４４】
Ｓ２４０１でエッジリスト分割処理が開始されると、Ｓ２４０２に進みDivIndexとEdgeIndexを０に初期化する。DivIndexとは、昇順に並んだエッジリスト分割点へのインデックスである。例えば、前述の例の場合、エッジリスト分割点は｛４、１０、２２、２８、３１｝となっていた。この場合DivIndexが０の場合は、エッジ分割点として４が得られ、DivIndexが２の場合は、エッジ分割点として２２が得られる。一方、EdgeIndexは、エッジリスト内のエッジにアクセスするためのインデックスである。図１３のエッジリスト１３０１を例に取ると、EdgeIndexが０の場合はエッジＥ７、EdgeIndexが１の場合はE８が得られる。
【００４５】
フローチャートに戻ると、次にＳ２４０３に進み、繰り返し処理に入る。繰り返し処理はDivIndexが分割点より小さく、かつEdgeIndexがエッジ数より小さい間だけ行われる。Ｓ２４０４では、変数Dx、Sx、Exに値を保存する。Dxはカレントの分割点を保存するための変数である。ここでは、分割点リストのDivIndex番目の分割点を取り出し、Dxに保存する。ここで、分割点リスト[DivIndex]は、分割点リストのDivIndex番目の値を取り出すことを意味する。Sxは分割対象エッジの開始Ｘ座標を、Exは分割対象エッジの終了Ｘ座標を示している。ここでは、エッジリストのEdgeIndex番目のエッジ（分割対象エッジ）の開始Ｘ座標をSxに、エッジリストのEdgeIndex番目のエッジの終了Ｘ座標をExに保存する。以降、Ｓ２４０５〜Ｓ２４０７の判定にしたがって、Ｓ２５０１〜Ｓ２５０４に処理は分岐する。ここで、図２４のＳ２５０１〜Ｓ２５０４は図２５のエッジリスト分割処理の説明図のそれと一致するものである。
【００４６】
フローチャートに戻ると、次にＳ２４０５に進み、DxがSxより小さいかどうか判定する。Ｓ２４０５の判定が肯定の場合は、Ｓ２４１５に進みDivIndexをインクリメントする。このケースの処理は、図２５の２５０１で図示されている。このケースでは、分割対象エッジよりも分割点が前にあるケースである。この場合分割対象エッジは分割されない。しかし、次の分割点で分割される可能性があるため、EdgeIndexは更新せず、DivIndexだけをインクリメントする。
【００４７】
Ｓ２４０５で否定と判定された場合、Ｓ２４０６に進みDxがExより小さいかどうか判定する。この判定が肯定の場合、Ｓ２４１２に進む。このケースの処理は図２５の２５０２で図示されている。このケースでは、参照エッジの範囲内に分割点が存在するため、参照エッジを２つに分割することになる。ただし、分割後の左半分のエッジを分割エッジとして出力するが、右半分は、まだ以降に現れる分割点でさらに分割される可能性がある。そのため、現在参照中のエッジを分割された左半分のエッジで置き換え、DivIndexだけをインクリメントする。フローチャートに戻るとＳ２４１２で参照エッジを２つの範囲[Sx,Dx]、[Dx+１,Ex]で分割する。次にＳ２４１３に進み、[Sx,Dx]の範囲のエッジを分割エッジリストに追加する。このエッジのタグ情報、及びそれらの画素に共通の色情報も置き換える前のエッジの値を引き継ぐ。次にＳ２４１４に進み、エッジリスト[EdgeIndex]を[Dx+１,Ex]の範囲のエッジで置き換える。このとき、エッジのタグ情報、及びそれらの画素に共通の色情報は置き換える前のエッジの値を引き継ぐ。ただし、置き換える前のエッジのタグがImageの場合、色情報は(Dx-Sx)分だけポインタをずらす必要がある。次にＳ２４１５に進みDivIndexをインクリメントする。
【００４８】
Ｓ２４０６での判定が否定と判定された場合、Ｓ２４０７に進みDxとExが等しいかどうか判定する。Ｓ２４０７での判定が肯定の場合、Ｓ２４１０に進む。このケースの処理は、図２５の２５０３に図示されている。２５０３のケースでは、分割対象エッジの終了Ｘ座標と分割点座標が一致するケースである。この場合は、エッジは分割せず、そのまま出力することになる。また、この場合は、DivIndexとEdgeIndexを共にインクリメントする。フローチャートに戻るとＳ２４１０で分割対象エッジをそのまま分割エッジリストに追加し、Ｓ２４１１でDivIndexとEdgeIndexを共にインクリメントする。
【００４９】
Ｓ２４０７での判定が否定の場合は、Ｓ２４０８に進む。このケースの処理は、図２５の２５０４に図示されている。２５０４のケースでは、分割対象エッジの右側に分割点が存在するケースである。この場合は、エッジは分割せず、そのまま出力することになる。また、この場合は、同一の分割点が次のエッジを分割する可能性があるため、EdgeIndexだけインクリメントする。フローチャートに戻るとＳ２４０８に進み，分割対象エッジを分割せずにそのまま分割エッジリストに追加し、Ｓ２４０９でEdgeIndexをインクリメントする。
【００５０】
Ｓ２４１６でループが終了した場合、Ｓ２４１７に進みエッジリスト分割処理は終了する。
【００５１】
（エッジリストのＸ方向への縮小処理）
次に図２３のフローチャートに戻る。Ｓ２３０７でエッジリストの分割処理が終了すると、Ｓ２３０８に進み、エッジリストのＸ方向への縮小処理が行われる。この終了処理によって出力されるエッジリスト（Ｘ方向の縮小処理後のエッジリスト）に含まれるエッジ構造体は、図２６のＳ２６０１で示される。Ｓ２６０１のエッジ構造体は縮小後の開始Ｘ座標、縮小後の終了Ｘ座標、縮小前の開始Ｘ座標、縮小前の終了Ｘ座標、タグ、色情報からなる。Ｘ方向への縮小処理は、エッジリストをＸ方向のみに縮小する処理である。本実施形態では、面積平均法による補間処理を行うため、Ｘ方向に縮小することにより、エッジとエッジの間に新たなエッジが挿入される場合がある。図１８は分割処理後のライン４のエッジリスト１５０１とライン５のエッジリスト１５０２に対して、Ｘ方向に１／２縮小する場合の概念図である。１８０３は、１５０１と１５０２をＸ方向に１／２縮小するときに、一時的に分割される領域を示している。白い部分は一つのエッジ単体で縮小可能な領域、グレーの部分は隣合うエッジを混ぜ合わせて縮小すべき領域を示すまた、１８０１と１８０２はそれぞれ１５０１と１５０２をＸ方向に１／２縮小した結果を示す。例えば、１５０１を１／２縮小する場合、Ｅ７とＥ８の間には、Ｃ１という中間的なエッジが挿入される。１８０１と１８０２において、中間的なエッジの名前はＣ＋番号とし、それ以外をＲ＋番号としている。１８０１と１８０２のエッジリストの具体的な構造は、それぞれ図１９の１９０１と図２０の２００１で示される。ここで、Ｃ１はＣ２などの中間的なエッジのタグ値は、Unfixedとなっている。これは、このエッジが中間的なエッジであり、まだ色値が確定していないことを示している。
【００５２】
エッジリストのＸ方向への縮小処理は、図２７のフローチャートで示される。Ｓ２７０１で処理が開始されると、Ｓ２７０２に進みEdgeIndexを０で初期化する。次にＳ２７０３に進み、Ｓ２７２２までの繰り返し処理に入る。繰り返しの条件は、EdgeIndexがエッジリストのエッジ数より小さいことである。すなわち、繰り返し処理はエッジ数分繰り返される。Ｓ２７０４では、一時変数Src_Sx、Src_Exに値を保存する。Src_Sxには、エッジリストのEdgeIndex番目のエッジの開始Ｘ座標が、Src_ExにはエッジリストのEdgeIndex番目のエッジの終了Ｘ座標が保存される。すなわち、Src_SxとSrc_Exは縮小対象エッジの座標値が保存される。次にＳ２７０５に進み、変数Dst_SxとDst_Exに対して以下の計算結果が保存される。
Dst_Sx  :=  Floor(Src_Sx×X_Scale)
Dst_Ex  :=  Floor(Src_Ex×X_Scale)
【００５３】
Dst_SxとDst_Exには、それぞれSrc_SxとSrc_Exに対してX_Scaleを乗算した結果を整数化した結果が保存される。整数化はCeil関数により小数点第１位以下を切り捨てることにより行われる。ここで、X_Scaleは縮小率が保存されている。例えば、１／２縮小の場合はX_Scale=０．５という値が入る。
【００５４】
次にＳ２７０６に進み、変数Sx_Src_Range_StartとSx_Src_Range_Endに対して以下の計算結果が保存される。
Sx_Src_Range_Start  :=  Ceil(Dst_Sx/X_Scale)
Sx_Src_Range_End  :=  Ceil((Dst_Sx+１)/X_Scale)-１
【００５５】
Src_Src_Range_Startには、縮小後の座標値Dst_Sxを拡大した結果を整数化した結果が保存される。またSx_Src_Range_Endには、縮小後の座標値Dst_Sx+１を拡大した結果を整数化した結果が保存される。整数化は小数点第１以下を切り上げることにより行われる。[Sx_Src_Range_Start,Sx_Src_Range_End]という範囲は、縮小後の座標値Dst_Sxに対応する縮小前の座標範囲を示している。すなわち、Dst_Sxの位置にある画素の値を求めるには、[Sx_Src_Range_Start,Sx_Src_Range_End]の範囲にある画素の値を参照する必要がある。
【００５６】
次にＳ２７０７に進み、変数Ex_Src_Range_StartとEx_Src_Range_Endに対して以下の計算結果が保存される。
Ex_Src_Range_Start  :=  Ceil(Dst_Ex/X_Scale)
Ex_Src_Range_End  :=  Ceil((Dst_Ex+１)/X_Scale)-１
【００５７】
［Ex_Src_Range_Start,Ex_Src_Range_End]という範囲は、縮小後の座標値Dst_Exに対応する縮小前の座標範囲を示している。すなわち、Dst_Exの位置にある画素の値を求めるには、[Ex_Src_Range_Start,Ex_Src_Range_End]の範囲にある画素の値を参照する必要がある。
【００５８】
（計算例）
ここで、Ｓ２７０４〜Ｓ２７０７までの計算を図３１の例を使って説明する。Ｅ８で示されるエッジの座標値は以下の通りである。
Src_Sx=５
Src_Ex=１０
【００５９】
上記座標値に対して、X_Scale=０．５として、Ｓ２７０５の計算を行うと、以下のようになる。
Dst_Sx=Floor(５×０．５)=２
Dst_Ex=Floor(１０×０．５)=５
【００６０】
さらに上記座標値に対して、Ｓ２７０６の計算を行うと以下のようになる。
Sx_Src_Range_Start=Ceil(２/０．５)=  ４
Sx_Src_Range_End=Ceil((２+１)/０．５)-１=  ５
【００６１】
また、Ｓ２７０７の計算を行うと以下のようになる。
Ex_Src_Range_Start=Ceil(５/０．５)=  １０
Ex_Src_Range_End=Ceil((５+１)/０．５)-１=１１
【００６２】
図３１で示されるように縮小前[５,１０]の範囲にあるエッジは、Ｓ２７０４〜Ｓ２７０７までの計算によって、３１０３に示すような[４,５],[６,９],[１０,１１]の３つの部分に分けられることが分かる。このうち[４,５]と[１０,１１]の範囲は、エッジＥ８と隣のエッジにまたがる領域となっている。
【００６３】
（フローチャート）
図２７のフローチャートに戻ると、次にＳ２７０８に進む。Ｓ２７０８ではSrc_Sxの値がSx_Src_Range_Startより多いかどうかを判定する。具体的には、処理中のエッジと前隣のエッジの間に中間的なエッジを挿入すべきかどうかが判断される。Ｓ２７０８での判定が肯定の場合は、Ｓ２７０９に進み、中間的なエッジが縮小エッジリストに追加される。ここで追加されるエッジのメンバは以下の値を持つ。
縮小後開始Ｘ座標:Dst_Sx
縮小後終了Ｘ座標:Dst_Sx
縮小前開始Ｘ座標:Sx_Src_Range_Start
縮小前終了Ｘ座標:Sx_Src_Range_End
タグ:Mix
色情報:Null
【００６４】
このエッジ２つのエッジにまたがるため、タグ情報はMix、また色情報もNullとなっている。最終的には、図２３のＳ２３１０でこれらの値は決定される。一方、Ｓ２７０８で否定と判定された場合は、Ｓ２７０９の処理は行わない。図３１の例の場合には、Src_Sx=５、Sx_Src_Range_Start=４となり、Ｓ２７０８の判定は肯定となり、Ｓ２７０９に進む。この例の場合は、以下のメンバ値を持つエッジ構造体が縮小エッジリストに追加される。
縮小後開始Ｘ座標:２
縮小後終了Ｘ座標:２
縮小前開始Ｘ座標:４
縮小前終了Ｘ座標:５
タグ:Mix
色情報:Null
【００６５】
図２７のフローチャートに戻ると、次にＳ２７１０に進む。Ｓ２７１０では、Src_SxがSx_Src_Range_Startよりも大きいかどうかを判定する。Ｓ２７１０での判定が肯定の場合はＳ２７１１に進み、変数Dst_Sx２にDst_Sx+１の計算結果を代入する。一方、Ｓ２７１０での判定が否定の場合は、Dst_Sx２にDst_Sxの値を代入する。図３１の例の場合には、Ｓ２７１０での判定は肯定となるため、Ｓ２７１１に進み、Dst_Sx２には(２+１)=３という値が保存される。次にＳ２７１３に進み、Src_ExがEx_Src_Range_Endよりも小さいかどうかが判定される。Ｓ２７１３での判定が肯定の場合、変数Dst_Ex２にDst_Ex-１の計算結果を代入する。一方、Ｓ２７１３での判定が否定の場合は、Dst_Ex２にはDst_Exの値がそのまま代入される。図３１の例の場合には、Ｓ２７１３での判定は肯定となるため、Ｓ２７１４に進み、Dst_Ex２には(５-１)=４という値が保存される。Ｓ２７１０〜Ｓ２７１５で計算される[Dst_Sx２,Dst_Ex２]は、エッジを縮小した場合に隣のエッジと混ざり合う部分を除いたエッジの範囲を示している。図３１の例の場合、[Dst_Sx２,Dst_Ex２]=[３,４]となる。図３１から分かるように縮小後の範囲[３,４]に対応する縮小前の範囲は[６,９]になる。すなわち、縮小前の範囲[６,９]の色値は、E８の色値だけを参照することにより計算可能であることが分かる。
【００６６】
次にＳ２７１６に進みDst_Sx２がDst_Ex２以下かどうかを判定する。Ｓ２７１６の判定が肯定の場合のみＳ２７１７、Ｓ２７１８が実行される。Ｓ２７１６の判定は、エッジ縮小時に隣のエッジと混ざり合う部分を除いたエッジの範囲が１以上あるかどうかを判定していることになる。Ｓ２７１６での判定が肯定の場合は、Ｓ２７１７で以下の変数に対して値が計算される。
Sx_Src_Range_Start２  :=Ceil(Dst_Sx２/X_Scale)
Ex_Src_Range_End２  :=  Ceil((Dst_Ex２+１)/X_Scale)-１
【００６７】
上記計算により、縮小後の範囲[Dst_Sx２,Dst_Ex２]に対応する縮小前の範囲が求められる。さらにＳ２７１８に進み、以下のメンバ値を持つ縮小エッジ構造体を作成し、縮小エッジリストに追加する。
縮小後開始Ｘ座標:Dst_Sx２
縮小後終了Ｘ座標:Dst_Ex２
縮小前開始Ｘ座標:Sx_Src_Range_Start２
縮小前終了Ｘ座標:Sx_Src_Range_End２
タグ:参照エッジのタグ
色情報:参照エッジの色情報
【００６８】
図３１の例の場合、以下のような値となる。
Sx_Src_Range_Start２  :=  Ceil(３/０．５)=６
Ex_Src_Range_End２  :=  Ceil((４+１)/０．５)-１=９
【００６９】
次にＳ２７１９に進みSrc_Exの値がEx_Src_Range_Endより小さいかどうか判定する。Ｓ２７１９での判定が肯定の場合、Ｓ２７２０に進み、一つ前の縮小エッジの縮小後終了Ｘ座標よりもDst_Exが大きいかどうかを判定する。Ｓ２７２０での判定が肯定の場合は、Ｓ２７２１に進み、以下のメンバ値を持つ縮小エッジ構造体を作成し、縮小エッジリストに追加する。
縮小後開始Ｘ座標:Dst_Ex
縮小後終了Ｘ座標:Dst_Ex
縮小前開始Ｘ座標:Ex_Src_Range_Start
縮小前終了Ｘ座標:Ex_Src_Range_End
タグ:Mix
色情報:Null
【００７０】
図３１の例の場合、Src_Ex=１０、Ex_Src_Range_End=１１となり、Ｓ２７１９の判定は肯定となる。図３１の場合、Ｓ２７２０での判定はＥ８の前に隣接するエッジが存在し、そのエッジの縮小処理により、すでにＥ８との間に中間的なエッジが挿入されている場合には肯定となる。この判定は、同一の中間的なエッジが２つ追加されるのを防ぐためにある。Ｓ２７１９での判定が否定の場合、あるいはＳ２７２０での判定が否定の場合、Ｓ２７２１は実行されない。次にＳ２７２２に進み、EdgeIndexの値がインクリメントされる。次にＳ２７２３に進むとループの終端となり、Ｓ２７０３に戻る。Ｓ２７０３でEdgeIndexがエッジ数と等しくなったら、このループを抜け、Ｓ２７２４に進み、処理を終了する。
【００７１】
なお、Ｓ２７１６の判定は、エッジをＸ方向に縮小した結果、中間的なエッジのみが作成された場合を判定することになっている。例えば、図３２の３２０１に対して１/４縮小するケースを考える。この場合、Ｓ２７０４〜Ｓ２７１５までの処理により、Dst_Sx２=２,Dst_Ex２=１となる。よって、Ｓ２７１６の判定が否定となり、Ｓ２７１７〜Ｓ２７１８は実行されない。
【００７２】
（図２３のメインルーチンにもどる）
次に図２３のフローチャートに戻る。Ｓ２３０７とＳ２３０８の処理が終了すると、Ｓ２３０９に進む。Ｓ２３０９はループの終端であるため、Ｓ２３０６に戻る。Ｓ２３０６において全てのエッジリストに対して処理が終了したと判定された場合、ループを抜け、Ｓ２３１０に進む。Ｓ２３１０では、Ｓ２３０６〜Ｓ２３０９で分割処理、及びＸ方向の縮小処理が行われた縮小エッジリストをマージする。Ｓ２３１０の処理は、図２８のフローチャートで示される。
【００７３】
（マージ処理）
エッジリストのマージ処理は、参照しているエッジリスト内にある同一座標のエッジを一つにまとめる処理である。このとき、参照するエッジの色値の平均値をマージ後のエッジの色値になるようにする。例えば、図１８のエッジリスト１８０１とエッジリスト１８０２の場合、Ｒ７とＲ１２．１は同一座標（開始Ｘ座標及び終了Ｘ座標）を持つため、これらを一つのエッジにマージする。つまり、これらのエッジの色値の平均値をマージ後のエッジの色値とする。この場合、マージ後のエッジの開始Ｘ座標及び終了Ｘ座標はそのまま引き継ぐ。図１９の１９０１と図２０の２００１をマージした結果を図２１の２１０１に示す。ここで、”Ｒ７＋Ｒ１２．１”のような表現は、２つのエッジをマージした結果得られるエッジを示している。
【００７４】
エッジリストのマージ処理は、Ｓ２８０１で開始される。次にＳ２８０２に進み、変数EdgeIndexを０で初期化する。次にＳ２８０３に進む。Ｓ２８０３はループの開始点であり、対応するループ終端はＳ２８１０である。したがって、エッジの数分だけＳ２８０４〜Ｓ２８０９までの処理が繰り返されることになる。次にＳ２８０４に進み、全エッジリストのEdgeIndexの位置にあるエッジのタグが全てGraphicsかどうかを検査する。次にＳ２８０５に進み、全エッジのタグがGraphicsかどうか判定する。Ｓ２０８５の判定が肯定の場合は、Ｓ２８０６に進み、Graphicsエッジ専用のマージ処理を行う。一方、Ｓ２０８５の判定が否定の場合は、Ｓ２８０７に進み、汎用のエッジマージ処理を行う。Ｓ２８０６またはＳ２８０７のどちらかの処理によりマージされたエッジがひとつ作成される。次にＳ２８０８に進み、マージされたエッジを出力エッジリストに追加する。次にＳ２８０９に進み、EdgeIndexをインクリメントする。Ｓ２８１０はループの終端なので、Ｓ２８０３に戻る。Ｓ２８０３でループ条件が否定になったらＳ２８１１に進み、処理を終了する。
【００７５】
（Graphicsエッジ専用のマージ処理）
Ｓ２８０６で行われるGraphicsエッジ専用のマージ処理を図２９のフローチャートをもとに説明する。Ｓ２９０１で処理が開始される。開始時には、マージすべきエッジの位置を示すEdgeIndexが与えられているものとする。次にＳ２９０２に進み、ColorSumを０に初期化する。ColorSumは、エッジの平均値を計算するために各エッジの色値の総計を求めるための変数である。次にＳ２９０３に進む。Ｓ２９０３はループの先端であり、Ｓ２９０５が対応するループの終端である。したがって、Ｓ２９０４の処理が、全ての縮小エッジに対して繰り返されることになる。Ｓ２９０４では、ColorSumに対して、縮小エッジリストのEdgeIndexの位置にあるエッジの色値を加える。Ｓ２９０３でループを抜けるとＳ２９０６に進み、ColorAvg変数にColorSumをマージするエッジリスト数で割った値をセットする。ColroAvg変数は、全縮小エッジリストのEdgeIndexの位置にあるGraphicsエッジの色値の平均値となっている。次にＳ２９０７に進み、以下のメンバ値を持つエッジを作成する。
開始Ｘ座標:  縮小後開始Ｘ座標
終了Ｘ座標:  縮小後終了Ｘ座標
タグ:Graphic
色値:ColorAvg
【００７６】
縮小後開始Ｘ座標と縮小後終了Ｘ座標は、それぞれ縮小対象の任意のエッジリストのEdgeIndex番目のエッジの縮小後開始Ｘ座標と縮小後終了Ｘ座標の値を使えばよい。最後にＳ２９０８で処理を終了する。
【００７７】
（汎用のエッジマージ処理）
Ｓ２８０７で行われる汎用のエッジマージ処理を図３０のフローチャートをもとに説明する。Ｓ３００１で処理が開始される。開始時には、マージすべきエッジの位置を示すEdgeIndexが与えられているものとする。次にＳ３００２に進み、変数Dst_SxとDst_Exに以下の値を代入する。
Dst_Sx:=縮小後開始Ｘ座標
Dst_Ex:=縮小後終了Ｘ座標
【００７８】
また、Ｓ３００３では、変数Src_SxとSrc_Exに対して、以下の代入が行われる。
Src_Sx:=縮小前開始Ｘ座標
Src_Ex:=縮小前終了Ｘ座標
【００７９】
縮小後開始Ｘ座標と縮小後終了Ｘ座標は、それぞれ縮小対象の任意のエッジリストのEdgeIndex番目のエッジの縮小後開始Ｘ座標と縮小後終了Ｘ座標の値を使えばよい。縮小前開始Ｘ座標と縮小前終了Ｘ座標は、それぞれ縮小対象の任意のエッジリストのEdgeIndex番目のエッジの縮小前開始Ｘ座標と縮小前終了Ｘ座標の値を使えばよい。次にＳ３００４に進み、縮小イメージ保存領域を確保し、その領域へのポインタDst_Image_Ptrとする。次にＳ３００５に進む。Ｓ３００５はループの開始点であり、対応するループ終端はＳ３０１４である。したがって、変数Dst_XがDst_SxからDst_Exまで変化する間、Ｓ３００６〜Ｓ３０１３の処理が繰り返されることになる。Ｓ３００６では、ColorSumを０に初期化する。ColorSumは、縮小画像のDst_Xの位置にある画素に対応する縮小前の画像の画素の色値の総和を求めるための変数である。次にＳ３００７に進む。Ｓ３００７はループの開始点であり、対応するループの終端はＳ３０１１である。したがって、Ｓ３００８〜Ｓ３０１０の処理が全ての縮小エッジリストに対して実行されることになる。次にＳ３００８もループ開始点であり、対応するループの終端はＳ３０１０である。したがって、Ｓ３００７〜Ｓ３００９の処理が、Src_XがSrc_SxからSrc_Exまで変化する間繰り返される。図示していないが、Src_Xは繰り返し毎に１ずつインクリメントされるものとする。Ｓ３００７とＳ３００８のループは、それぞれ垂直方向、及び水平方向に縮小前の座標値が移動するためのループである。Ｓ３００９ではColorSumに対してSrc_Xの位置にある画素の色値を加える。Ｓ３００８でのループ条件が否定になるとＳ３０１１に進む。ループの先端Ｓ３００７で全ての縮小エッジに対して繰り返し処理が終了したら、ループを抜けＳ３０１２に進む。Ｓ３０１２では、以下の計算式により画素の色値の平均値を求める
ColorAvg:=ColorSum/{(Src_Ex-Src_Sx+１)×マージするエッジリスト数}
【００８０】
（Src_Ex-Src_Sx+１)は、縮小前エッジの長さを表している。次にＳ３０１３に進み、Dst_Image_Ptrから(Src_X-Src_Sx)バイト先の領域に色値の平均値(ColorAvgの値)を書き込む。次にＳ３０１４に進む。Ｓ３０１４はループ終端のためＳ３００５に進む。Ｓ３００５での繰り返し条件が否定となったら、ループを抜けＳ３０１５に進む。Ｓ３０１５では、以下のメンバ値を持つエッジを作成する。
開始Ｘ座標:縮小後開始Ｘ座標
終了Ｘ座標:縮小後終了Ｘ座標
タグ:Image
色値:Dst_Image_Ptr
【００８１】
縮小後開始Ｘ座標と縮小後終了Ｘ座標は、それぞれ縮小対象の任意のエッジリストのEdgeIndex番目のエッジの縮小後開始Ｘ座標と縮小後終了Ｘ座標の値を使えばよい。最後にＳ３０１６で処理を終了する。
【００８２】
実施形態１では、ＢＧエッジリスト縮小部４０６が受信するエッジリストに含まれる全てのエッジを補間縮小における参照エッジとしていた。しかし、本発明はこれに限ることなく、参照するエッジを限定することも可能である。具体的には、図２４のＳ２４０４において、エッジの分割処理時に分割対象エッジのタグ種別を参照し、ＢＧ画像に取り込むべきでないタグ種別を持つエッジであるならば、分割エッジリストに追加するとき、その旨をエッジにマークしておく。次に図２９のＳ２９０４及び図３０のＳ３００９において、ＢＧに取り組むべきエッジでないときは、画素の色値の平均値を計算するのにそのエッジを使わないようにすればよい。
【００８３】
実施形態１においては、図２３に示されるように、エッジの分割処理を実施した後、エッジリストのＸ方向への縮小処理を行っていた。しかし、本発明では、これに限ることなく、エッジリストのＸ方向への縮小処理後、エッジの分割処理を行ってもよい。
【００８４】
実施形態１においては、図２８のＳ２８０５でGraphicsタグの場合のみGraphicsエッジ専用のマージ処理を行い、その他の場合は汎用のマージ処理を行うようにしていた。しかし、本発明はこれに限ることなく、参照エッジがすべてImageエッジの場合は、Imageエッジ専用のマージ処理を行うようにすることも可能である。
【００８５】
実施形態２．
実施形態１においては、縮小時の補間方法として面積平均法を使っていた。しかし、本発明はこれに限ることなく、例えば、線形補間法、３次補間法などの補間方法を用いることも可能である。また、補間処理が必要ない場合には、最近傍法を用いることにより、より高速にエッジリストの縮小処理を行うことも可能である。さらに、補間処理を行うか否かをユーザが指定する手段を用意し、その指定にしたがって補間処理を行う（最近傍法を使う）、行わない（例えば面積平均法を使う）を切り替えることも可能である。
【００８６】
エッジリストの最近傍法による縮小処理を図３３のフローチャートで説明する。このフローチャートに対する入力は、エッジリストである。まずＳ３３０１で処理が開始すると、Src_Yをインクリメントする。図示していないが、ページの開始時は、Src_Yが-１に初期化されているものとする。次にＳ３３０３に進み、以下の計算を行う。
Dst_Y=Floor(Src_Y×Y_Scale)
Prev_Dst_Y=Floor((Src_Y-１)*Y_Scale)
【００８７】
Dst_Yは、現在のラインSrc_Yが縮小後割り当てられるラインを示す。Prev_Dst_Yは、Src_Yの一つ前のラインが縮小後割り当てられるラインを示す。Ｓ３３０４では、Dst_YがPrev_Dst_Yより大きいかどうかを判定する。この判定は、縮小によって割り当てられるラインが変化したかどうかを判定するものである。Ｓ３３０４の判定が否定の場合は、Ｓ３３１７に進み、処理を終了する。すなわち、この場合は入力されたラインは捨てられる(間引かれる)。Ｓ３３０４の判定が肯定の場合は、Ｓ３３０５に進み、EdgeIndexを０で初期化する。次にＳ３３０６に進む。Ｓ３３０６はループの先端であり、対応するループの終端はＳ３３１７である。したがって、Ｓ３３０７からＳ３３１６までの処理がエッジリスト中のエッジ毎に繰り返される。
【００８８】
Ｓ３３０７では、CurEdge変数にエッジリストのEdgeIndex番目のエッジを保存する。次にＳ３３０８に進み、Src_SxとSrc_ExにそれぞれCurEdgeの開始Ｘ座標とCurEdgeの終了Ｘ座標を保存する。次にＳ３３０９に進み、Dst_SxとDst_Exを以下の計算により求める。
Dst_Sx:=Ceil((Src_Sx-０．５)×X_Scale)
Dst_Ex:=Floor((Src_Ex+０．５)×X_Scale)
【００８９】
例えば、図３４におけるエッジE８を縮小する場合、以下のようになる(X_Scale=０．５の場合)。
Dst_Sx:=Ceil((５-０．５)×０．５)=３
Dst_Ex:=Floor((１０+０．５)×０．５)=５
【００９０】
ここで、Dst_Sxの計算においてSrc_Sxから０．５を引き，Dst_Exの計算においてSrc_Exに０．５を加えてからX_Scaleを乗算している。これは、隣あうエッジが縮小されたとき、エッジ間で座標値の逆転が発生しないようにするためである。
【００９１】
フローチャートに戻るとＳ３３１０に進み、CurEdgeのタグがGraphicsタグかどうかを判定する。Ｓ３３１０の判定が肯定の場合、Ｓ３３１０に進み、以下のメンバ値を持つエッジ構造体を作成し、出力エッジリストに追加する。
開始Ｘ座標:Dst_Sx
終了Ｘ座標:Dst_Sx
タグ:Graphics
色情報:CurEdgeの色情報
【００９２】
一方、Ｓ３３１０の判定が否定の場合、Ｓ３３１２に進み、縮小イメージ保存領域を確保し、その領域へのポインタをDst_Image_Ptrとする。次にＳ３３１３に進み、Src_Image_PtrにCurEdgeの色情報をコピーする。この場合CurEdgeはImageエッジであるため、CurEdgeの色情報メンバには、イメージデータへのポインタが保存されている。次にＳ３３１４に進み、Src_Image_PtrからDst_Image_Ptrにイメージデータを間引きながらコピーする。次に３３１５に進み、以下のメンバ値を持つエッジ構造体を作成し、出力エッジリストに追加する。
開始Ｘ座標:Dst_Sx
終了Ｘ座標:Dst_Sx
タグ:Image
色情報:Dst_Image_Ptr
【００９３】
Ｓ３３１１またはＳ３３１５の処理が終了すると、Ｓ３３１６に進み、EdgeIndexをインクリメントする。次にＳ３３１７に進む。Ｓ３３１７はループの終端であるため、ループの先頭であるＳ３３０６に戻る。Ｓ３３０６でのループ判定が否定となったら、Ｓ３３１８に進み、処理を終了する。
【００９４】
実施形態３．
実施形態１では、図２３に示されるようにエッジリスト分割処理Ｓ２３０７、エッジリストのＸ方向への縮小処理Ｓ２３０８を全エッジリストに対して行い、その後エッジリストのマージ処理Ｓ２３１０を行うようにしていた。しかし、本発明はこれに限ることなく、これらの処理を一つのループ内で行うことも可能である。図３５に実施形態３におけるエッジリスト表現１２０１のライン４とライン５に対する１／２補間縮小処理の流れを示す。
【００９５】
本実施形態では、分割エッジバッファ３５０１、縮小エッジバッファ３５０２の２つのバッファを用意する。分割エッジバッファ３５０１には、分割処理済みのエッジを１ラインにつき可能ならば３つ保存する。これはＸ方向の縮小処理時に前隣と後隣のエッジとの間に中間的なエッジを追加するときに、前隣と後隣のエッジを参照する必要があるためである。縮小エッジバッファはライン辺り最大３つのＸ方向への縮小処理を施したエッジを保存する。ひとつの分割エッジをＸ方向に補間縮小すると、前エッジとの隙間にひとつ、後ろのエッジとの隙間にひとつの中間的なエッジが挿入される可能性があるためである。ただし、前のエッジとの隙間の中間的なエッジが、前のエッジの補間縮小時に最終的な縮小エッジリストに対して追加済みの場合は、追加する必要はない。
【００９６】
次に、（Ｐ１）〜（Ｐ６）からなる処理ステップ例をもとに、本実施形態に係る縮小処理の詳細を説明する。初期状態では分割エッジバッファは空である。したがって、最初の処理ではライン辺り２つの分割エッジを生成し、分割エッジバッファ３５０１に保存する必要がある。（Ｐ１）の処理により、１５０２のＥ１２は、Ｅ１２．１とＥ１２．２に分割され、１５０１からはＥ７とＥ８が、１５０２からはＥ１２．１とＥ１２．２が分割エッジバッファに追加される。（ｐ１）の処理後の状態は、３５０１ａで示される。ここで、グレーアウトされたエッジは、エッジ間の中間的なエッジを追加するのに参照されるエッジであり、実際に縮小されるエッジではない。
【００９７】
（Ｐ２）の処理は、３５０１ａの状態にある分割エッジバッファに対して行われる。この処理では、分割エッジバッファに保存されているひとつめの分割エッジ、この場合はＥ７とＥ１２．１に対してＸ方向の縮小が施される。この処理により、Ｅ７及びＥ１２．１からは、それぞれ２つの縮小エッジ、Ｒ７、Ｃ１とＲ１２．２、Ｃ５が生成され、縮小エッジバッファに保存される。処理後の状態を３５０２ａに示す。
【００９８】
（Ｐ３）の処理では、縮小エッジ(Ｒ７とＲ１２．１、及びＣ１とＣ５)をマージし、縮小エッジリストンに追加する。この状態は３５０３ａで示される。（Ｐ４）の処理では、分割エッジ(Ｅ９,Ｅ１３)を分割エッジバッファに追加する。これで分割エッジバッファには３つのエッジが保存された状態となる(３５０１ｂ）。（Ｐ５）の処理では、分割エッジ(Ｅ８とＥ１２．２)をＸ方向に縮小する。縮小処理によりＥ８からは、Ｃ１、Ｒ８、C２、またＥ１２．２からはＣ５、Ｒ１２．２、Ｃ６の縮小エッジが得られる。（Ｐ６）の処理では、Ｒ８とＲ１２．２、及びC２とＣ６をマージし、縮小エッジリストに追加する。ここで、Ｃ１とＣ５をマージした結果はすでに縮小エッジリストに追加済みのため、追加しない。
【００９９】
以上、実施形態３では、分割エッジの生成と縮小エッジの生成を一つのループで行うことにより、より少ないメモリで高速に動作させることができる。
【０１００】
実施形態４．
実施形態１では、層状の画像データを生成するプリンタドライバに対する適用を示した。しかし、本発明はこれに限ることなく、別の分野への適用も可能である。例えば、文書データや、印刷データを中間データに変換し、中間データを表示装置に表示する表示装置への適用も可能である。文書データや印刷データは一般に高解像度、例えば６００ＤＰＩや３００ＤＰＩで作成される。一方、表示デバイスの解像度は一般に７５〜１００ＤＰＩ程度と解像度は低くなる。したがって、高解像度の文書データや印刷データを表示するには、解像度を落とす必要がある。また、ユーザにとっては表示デバイスに表示された結果を迅速に拡大、縮小を行いたい。しかし、ユーザからの拡大や縮小要求が発生する毎に、文書データや、印刷データを中間データに変換するのでは、応答性が悪くなる。そこで、文書データや、印刷データを高解像度の中間データに変換しておき、表示時には中間データに対して縮小を施すという方法が考えられる。このような表示装置に本発明を適用すれば、高画質な縮小画像を中間コードの段階で作成することができるため、ユーザへの応答性を損なうことなく、高画質な表示を行うことができる。
【図面の簡単な説明】
【０１０１】
【図１】関連技術に係る画像処理装置の概略構成を示す図である。
【図２】ＭＲＣ構造（レイヤ別画像データ）の説明図である。
【図３】実施形態１における画像処理装置のブロック図である。
【図４】実施形態１におけるプリンタドライバの構成を示す図である。
【図５】実施形態１におけるエッジリストの構造を示す図である。
【図６】実施形態１におけるエッジの構造を示す図である。
【図７】実施形態１におけるタグ種別を示す図である。
【図８】実施形態１におけるタグとレイヤの対応表を示す図である。
【図９】実施形態１における画像例を示す図である。
【図１０】実施形態１における画像例の平均値計算を説明する図である。
【図１１】実施形態１における画像例を面積平均法で縮小した結果を示す図である。
【図１２】エッジリスト表現の一例を説明する図である。
【図１３】図１２のエッジリスト表現におけるライン４のエッジリストを示す図である。
【図１４】図１２のエッジリスト表現におけるライン５のエッジリストを示す図である。
【図１５】図１２のエッジリスト表現のライン４とライン５に対する分割処理を説明する図である。
【図１６】図１２のエッジリスト表現のライン４に分割処理を実施した結果得られるエッジリストを示す図である。
【図１７】図１２のエッジリスト表現のライン５に分割処理を実施した結果得られるエッジリストを示す図である。
【図１８】図１２のエッジリスト表現のライン４とライン５に対して、Ｘ方向に１／２の縮小を施した結果の概念図である。
【図１９】ライン４に分割処理とＸ方向の１／２縮小を適用したエッジリストを示す図である。
【図２０】ライン５に分割処理とＸ方向の１／２縮小を適用したエッジリストを示す図である。
【図２１】ライン４とライン５に分割処理とＸ方向の１／２縮小を適用した結果をマージしてなるエッジリストを示す図である。
【図２２】実施形態１におけるＢＧエッジリスト縮小部のページ開始処理を示すフロー図である。
【図２３】実施形態１におけるＢＧエッジリスト縮小部のエッジリスト受信処理（補間縮小処理）を示すフロー図である。
【図２４】実施形態１におけるエッジリスト分割処理を示すフロー図である。
【図２５】実施形態１におけるエッジリスト分割処理の説明図である。
【図２６】実施形態１における縮小エッジ構造体を示す図である。
【図２７】実施形態１におけるエッジリストのＸ方向への縮小処理を示すフロー図である。
【図２８】実施形態１におけるエッジリストのマージ処理を示すフロー図である。
【図２９】実施形態１のＢＧ画像生成部におけるGraphicsエッジ専用マージ処理を示すフロー図である。
【図３０】実施形態１のＢＧ画像生成部における汎用のエッジマージ処理を示すフロー図である。
【図３１】エッジのＸ方向の１／２縮小例（面積平均法）を示す図である。
【図３２】エッジのＸ方向の１／４縮小例（面積平均法）を示す図である。
【図３３】ＢＧエッジリスト縮小部のエッジリスト受信処理（最近傍法による縮小処理）を示すフロー図である。
【図３４】エッジのＸ方向の１／２縮小例(最近傍法)を示す図である。
【図３５】実施形態３におけるエッジリスト表現のライン４とライン５に対する１／２補間縮小処理を説明する図である。
【符号の説明】
【０１０２】
１０  画像処理装置、１１  文書データ、１２  印刷データ、１３  解析処理部、１４  画像情報（中間画像情報）、１５  レイヤ画像処理部、１６  レイヤ別画像データ、３０１  アプリケーション、３０２  ＯＳ、３０３  プリンタドライバ、３０４  多層圧縮画像データ、３０５  文書データ、４０１  インターフェイス部、４０２  中間データ生成部、４０３  ＦＧ画像生成部、４０４  ＦＧ画像圧縮部、４０５  ＢＧ穴埋め処理部、４０６  ＢＧエッジリスト縮小処理部、４０７  エッジリストバッファ、４０８  ＢＧ画像生成部、４０９  ＢＧ画像圧縮部、４１０  フォーマット部、５０１  エッジリスト（エッジ情報列の一群）、５０２  エッジ（エッジ情報）。
【図１】
2006270767.tif 000003
【図２】
2006270767.tif 000004
【図３】
2006270767.tif 000005
【図４】
2006270767.tif 000006
【図５】
2006270767.tif 000007
【図６】
2006270767.tif 000008
【図７】
2006270767.tif 000009
【図８】
2006270767.tif 000010
【図９】
2006270767.tif 000011
【図１０】
2006270767.tif 000012
【図１１】
2006270767.tif 000013
【図１２】
2006270767.tif 000014
【図１３】
2006270767.tif 000015
【図１４】
2006270767.tif 000016
【図１５】
2006270767.tif 000017
【図１６】
2006270767.tif 000018
【図１７】
2006270767.tif 000019
【図１８】
2006270767.tif 000020
【図１９】
2006270767.tif 000021
【図２０】
2006270767.tif 000022
【図２１】
2006270767.tif 000023
【図２２】
2006270767.tif 000024
【図２３】
2006270767.tif 000025
【図２４】
2006270767.tif 000026
【図２５】
2006270767.tif 000027
【図２６】
2006270767.tif 000028
【図２７】
2006270767.tif 000029
【図２８】
2006270767.tif 000030
【図２９】
2006270767.tif 000031
【図３０】
2006270767.tif 000032
【図３１】
2006270767.tif 000033
【図３２】
2006270767.tif 000034
【図３３】
2006270767.tif 000035
【図３４】
2006270767.tif 000036
【図３５】
2006270767.tif 000037