(57)【要約】【課題】エッジによって画像が表現されたデータを利用して画像の差分抽出を行う。【解決手段】差分抽出装置は、エッジによる差分抽出を行うために、比較対象である２つのエッジの長さ（画素数）を揃える分割処理を実行する。エッジとは、属性が共通する１又は複数の画素を表すものをいい、エッジの境界が属性の境界でもある。いま、比較対象のエッジとして、エッジリストＡ（エッジＡ７−１〜Ａ７−５）及びＢ（エッジＢ７−１〜Ｂ７−７）があった場合、差分抽出装置は、同一の位置に相当するエッジ同士が等しい長さになるように分割してから、それぞれのエッジの属性を比較する。具体的には、差分抽出装置は、図中のエッジＡ７−２をエッジＢ７−２（さらにはエッジＢ７−３、Ｂ７−４）と比較することにより、エッジＡ７−２をエッジＡ７−２．１、Ａ７−２．２、Ａ７−２．３の３つのエッジに分割し、エッジＢ７−２、Ｂ７−３、Ｂ７−４と長さを揃える。【選択図】図１０
2012190067.tif 000002
【特許請求の範囲】
【請求項１】
画像を表す２つのエッジリストであって、各々が、第１の方向に連続し、かつ属性が共通する画素群を表すエッジの集合によって前記第１の方向に配列された画素群を表現する第１のエッジリスト及び第２のエッジリストをそれぞれ取得する取得手段と、
前記取得手段によりそれぞれ取得された、前記第１のエッジリストのエッジの画素数と、当該エッジの位置に相当する位置にある前記第２のエッジリストのエッジの画素数とが相違する場合に、当該画素数が多い方のエッジを、当該画素数が少ない方のエッジと等しい画素数の画素群を表すエッジと残りの画素群を表すエッジとに分割する分割手段と、
前記取得手段により取得され、又は前記分割手段により分割された前記第１のエッジリストのエッジの前記属性と、当該エッジの位置に相当する位置にある前記第２のエッジリストのエッジの前記属性とを、互いの画素数が等しい状態で比較する比較手段と、
前記比較手段による比較結果を２つの前記画像の差分として出力する出力手段と
を備えることを特徴とする差分抽出装置。
【請求項２】
前記属性は、エッジ内の各画素の色値が規則的である第１の属性と、エッジ内の各画素の色値が不規則的である第２の属性とを含み、
前記比較手段は、比較対象である２つの前記エッジの前記属性がいずれも前記第１の属性である場合に、前記色値をエッジ単位で比較し、比較対象である２つの前記エッジの少なくとも一方の前記属性が前記第２の属性である場合に、前記色値をエッジ内の各画素単位で比較する
ことを特徴とする請求項１に記載の差分抽出装置。
【請求項３】
画像処理装置に対する描画命令によって画像が記述された描画データを取得する取得手段と、
前記取得手段により取得された描画データに記述された描画命令を解釈し、当該描画命令により記述された画像を表す中間データであって、行方向に連続し、かつ属性が共通する画素群を表すエッジの行毎の集合によって各行各列の画素群をそれぞれ表現する中間データを生成する生成手段と、
前記取得手段により２つの描画データがそれぞれ取得され、当該描画データに基づいて前記生成手段により２つの中間データがそれぞれ生成された場合に、当該２つの中間データが表す画像の差分を抽出する抽出手段であって、第１の中間データのエッジの画素数と、当該エッジの位置に相当する位置にある第２の中間データのエッジの画素数とが相違する場合に、当該画素数が多い方のエッジを、当該画素数が少ない方のエッジと等しい画素数の画素群を表すエッジと残りの画素群を表すエッジとに分割し、画素数が等しいエッジ同士の前記属性を比較することにより前記差分をエッジ毎に抽出する抽出手段と、
前記抽出手段により抽出された差分を表すラスタデータを生成するラスタライズ手段と
を備えることを特徴とする画像処理装置。
【請求項４】
コンピュータを、
画像を表す２つのエッジリストであって、各々が、第１の方向に連続し、かつ属性が共通する画素群を表すエッジの集合によって前記第１の方向に配列された画素群を表現する第１のエッジリスト及び第２のエッジリストをそれぞれ取得する取得手段と、
前記取得手段によりそれぞれ取得された、前記第１のエッジリストのエッジの画素数と、当該エッジの位置に相当する位置にある前記第２のエッジリストのエッジの画素数とが相違する場合に、当該画素数が多い方のエッジを、当該画素数が少ない方のエッジと等しい画素数の画素群を表すエッジと残りの画素群を表すエッジとに分割する分割手段と、
前記取得手段により取得され、又は前記分割手段により分割された前記第１のエッジリストのエッジの前記属性と、当該エッジの位置に相当する位置にある前記第２のエッジリストのエッジの前記属性とを、互いの画素数が等しい状態で比較する比較手段と、
前記比較手段による比較結果を２つの前記画像の差分として出力する出力手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、差分抽出装置、画像処理装置及びプログラムに関する。
【背景技術】
【０００２】
原稿等に相違があるかないか（あるいはその相違箇所）を確認するために、画像の差分抽出が行われることがある。２つの画像を比較する場合には、２つの画像のラスタデータ（ビットマップ形式のデータ）を画素単位で比較し、その差分を抽出する手法が一般的である。また、特許文献１には、ベクタデータをユーザが認識できる形式（ＸＭＬ形式等）のテキストデータに変換し、このテキストデータを用いて差分を抽出するための技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−３０１２９４号公報（請求項１、段落００４６等）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、いわゆるエッジによって画像が表現されたデータを利用して画像の差分抽出を行うことにある。
【課題を解決するための手段】
【０００５】
本発明の請求項１に係る差分抽出装置は、画像を表す２つのエッジリストであって、各々が、第１の方向に連続し、かつ属性が共通する画素群を表すエッジの集合によって前記第１の方向に配列された画素群を表現する第１のエッジリスト及び第２のエッジリストをそれぞれ取得する取得手段と、前記取得手段によりそれぞれ取得された、前記第１のエッジリストのエッジの画素数と、当該エッジの位置に相当する位置にある前記第２のエッジリストのエッジの画素数とが相違する場合に、当該画素数が多い方のエッジを、当該画素数が少ない方のエッジと等しい画素数の画素群を表すエッジと残りの画素群を表すエッジとに分割する分割手段と、前記取得手段により取得され、又は前記分割手段により分割された前記第１のエッジリストのエッジの前記属性と、当該エッジの位置に相当する位置にある前記第２のエッジリストのエッジの前記属性とを、互いの画素数が等しい状態で比較する比較手段と、前記比較手段による比較結果を２つの前記画像の差分として出力する出力手段とを備える構成を有する。
【０００６】
本発明の請求項２に係る差分抽出装置は、請求項１に記載の構成において、前記属性は、エッジ内の各画素の色値が規則的である第１の属性と、エッジ内の各画素の色値が不規則的である第２の属性とを含み、前記比較手段は、比較対象である２つの前記エッジの前記属性がいずれも前記第１の属性である場合に、前記色値をエッジ単位で比較し、比較対象である２つの前記エッジの少なくとも一方の前記属性が前記第２の属性である場合に、前記色値をエッジ内の各画素単位で比較する。
【０００７】
本発明の請求項３に係る画像処理装置は、画像処理装置に対する描画命令によって画像が記述された描画データを取得する取得手段と、前記取得手段により取得された描画データに記述された描画命令を解釈し、当該描画命令により記述された画像を表す中間データであって、行方向に連続し、かつ属性が共通する画素群を表すエッジの行毎の集合によって各行各列の画素群をそれぞれ表現する中間データを生成する生成手段と、前記取得手段により２つの描画データがそれぞれ取得され、当該描画データに基づいて前記生成手段により２つの中間データがそれぞれ生成された場合に、当該２つの中間データが表す画像の差分を抽出する抽出手段であって、第１の中間データのエッジの画素数と、当該エッジの位置に相当する位置にある第２の中間データのエッジの画素数とが相違する場合に、当該画素数が多い方のエッジを、当該画素数が少ない方のエッジと等しい画素数の画素群を表すエッジと残りの画素群を表すエッジとに分割し、画素数が等しいエッジ同士の前記属性を比較することにより前記差分をエッジ毎に抽出する抽出手段と、前記抽出手段により抽出された差分を表すラスタデータを生成するラスタライズ手段とを備える構成を有する。
【０００８】
本発明の請求項４に係るプログラムは、コンピュータを、画像を表す２つのエッジリストであって、各々が、第１の方向に連続し、かつ属性が共通する画素群を表すエッジの集合によって前記第１の方向に配列された画素群を表現する第１のエッジリスト及び第２のエッジリストをそれぞれ取得する取得手段と、前記取得手段によりそれぞれ取得された、前記第１のエッジリストのエッジの画素数と、当該エッジの位置に相当する位置にある前記第２のエッジリストのエッジの画素数とが相違する場合に、当該画素数が多い方のエッジを、当該画素数が少ない方のエッジと等しい画素数の画素群を表すエッジと残りの画素群を表すエッジとに分割する分割手段と、前記取得手段により取得され、又は前記分割手段により分割された前記第１のエッジリストのエッジの前記属性と、当該エッジの位置に相当する位置にある前記第２のエッジリストのエッジの前記属性とを、互いの画素数が等しい状態で比較する比較手段と、前記比較手段による比較結果を２つの前記画像の差分として出力する出力手段として機能させるためのものである。
【発明の効果】
【０００９】
請求項１、４に記載の構成によれば、いわゆるエッジによって画像が表現されたデータを利用して画像の差分抽出を行うことが可能である。
請求項２に記載の構成によれば、色値の規則性に応じて比較の態様を異ならせない場合に比べ、比較の回数を少なくすることが可能である。
請求項３に記載の構成によれば、描画データ又はラスタデータを用いずに画像の差分抽出を行うことが可能である。
【図面の簡単な説明】
【００１０】
【図１】画像処理装置の構成を示すブロック図
【図２】中間データのデータ構造を示す模式図
【図３】エッジのデータ構造を示す模式図
【図４】差分抽出部の構成の一例を示すブロック図
【図５】差分エッジリストの生成処理を示すフローチャート
【図６】比較処理を示すフローチャート
【図７】本実施形態の動作を説明するための画像を例示する模式図
【図８】図７に示した画像Ａ、Ｂをエッジリストで表現した模式図
【図９】図８に示したエッジリストのうち、特に第７行（８行目）のエッジリストを抜き出して示した模式図
【図１０】図９に示したエッジリストに分割処理を実行する場合の分割前後のエッジリストを示す模式図
【図１１】図１０に示した分割後のエッジを比較することにより得られる差分エッジリストを示す模式図
【図１２】図７の画像Ａ、Ｂの比較結果を示す模式図
【図１３】差分エッジリストの他の例を示す模式図
【発明を実施するための形態】
【００１１】
［実施形態］
図１は、本発明の一実施形態である画像処理装置１００の構成を示すブロック図である。画像処理装置１００は、例えば、プリンタ、プロッタ等の画像形成装置や、あるいは画像形成装置にデータを供給するパーソナルコンピュータ等の情報処理装置に備わるものである。画像処理装置１００は、同図に示すように、第１取得部１１０と、中間データ生成部１２０と、差分抽出部１３０と、ラスタライズ部１４０と、第１出力部１５０とを備える。画像処理装置１００のこれらの構成は、具体的には、ＣＰＵ（Central Processing Unit）やメモリの協働によって実現される。
【００１２】
第１取得部１１０は、描画データを取得する手段である。ここにおいて、描画データとは、画像処理装置１００に対する描画命令によって画像が記述されたデータをいう。描画命令は、画像を構成するオブジェクト（文字、図形等）の位置や色などを数値や符号で表現することによって画像を代替的に表現するものであり、ページ記述言語（ＰＤＬ：Page Description Language）やプリンタ制御言語などで記述される。ページ記述言語の一例としては、PostScriptが挙げられる。また、プリンタ制御言語の一例としては、ＨＰＧＬ（Hewlett-Packard Graphics Language）が挙げられる。第１取得部１１０は、本発明に係る（描画データを取得する）取得手段の一例に相当するものである。
【００１３】
なお、描画データは、画像処理装置１００が解釈可能なものであれば、そのデータ形式が特に限定されない。描画データは、上述した汎用的な言語で記述されたもののほか、プリンタメーカー等によって独自に定義された形式であってもよいし、ＰＤＦ（Portable Document Format）データや、ＸＭＬ（Extensible Markup Language）を用いて描画命令が記述されたものであってもよい。一般に、描画データは、画像を数値や符号で間接的（あるいは抽象的）に表現することにより、画像を各画素の色値によって直接的（あるいは具体的）に表現したビットマップ形式のデータ（すなわちラスタデータ）に比べて、全体のデータ容量が少なくなる。
【００１４】
また、描画データには、描画命令の記述順序が実際の画像の表示に影響を与えないものがある。例えば、一部の描画データには、文字を表示させる場合の描画命令として、文字の色を指定する描画命令と、文字の位置を指定する描画命令と、文字の字体（フォント）を指定する描画命令とがあった場合、これらの記述順序が異なっていても、結果的に表示される文字自体は変わらないものがある。また、文字に下線を付して表示させる場合の描画命令も、文字自体に関する描画命令と下線に関する描画命令の記述順序が問題にならないことがある。
【００１５】
本実施形態の描画データは、オブジェクトの位置をＸ軸とＹ軸によって定義される直交座標系の座標によって表現し、オブジェクトの色を「０」以上「２５５」以下の色値によって表現する。描画データは、複数の色値（例えば、レッド、グリーン、ブルーの３色や、シアン、マゼンタ、イエロー、ブラックの４色）によって色を表現してもよいが、ここではモノクロであるとする。
【００１６】
また、本実施形態の描画データは、その一部にイメージデータを含み得る。イメージデータは、単一の色値によっては表現できないオブジェクト（写真や、階調変化が不規則な画像など）を表すために用いられるものである。イメージデータは、中間データの生成に際し、メモリのあらかじめ決められた領域に記憶される。イメージデータは、望ましくは、ビットマップ形式のデータとしてメモリに記憶されている。
【００１７】
中間データ生成部１２０は、第１取得部１１０により取得された描画データに基づいて、中間データを生成する手段である。中間データ生成部１２０は、描画データに記述された描画命令を解釈し、描画データとラスタデータのいずれとも異なる形式（中間形式）のデータである中間データを生成する。中間データ生成部１２０は、本発明に係る生成手段の一例に相当するものである。
【００１８】
本実施形態の中間データは、画像をエッジの集合によって表現するものである。ここにおいて、エッジとは、画像を複数行複数列の画素群であるラスタデータに変換した場合の各画素を、決められた方向に連続し、かつ属性が共通するもの毎にまとめたものである。ゆえに、エッジの境界は、（分割前においては）画像の属性の境界でもある。また、ここでいう属性とは、画素（又は画素群）がどのような画像を表すものであるかを示すものであり、ここでは、後述する「タグ情報」と「色情報」がその一例に該当する。
【００１９】
図２は、中間データのデータ構造を示す模式図である。ここでは、Ｘ軸とＹ軸によって定義される直交座標系を用いて、そのＸ軸方向を行方向、Ｙ軸方向を列方向として画像を表現している。また、説明の便宜上、以下においては、画像のＸ軸方向の画素数をｍとし、Ｙ軸方向の画素数をｎとする。つまり、この画像は、ｎ行ｍ列の画素群で表現されるものである。また、この画像は、画像の左上端を座標系の原点としたものであり、右にある画素ほどＸ軸の座標が大であり、下にある画素ほどＹ軸の座標が大であるとする。ここでいう座標は、画素の位置を表すものである。
【００２０】
中間データは、図２に示すように、各行の画素群をエッジリストによって表現したものである。エッジリストは、１又は複数のエッジの集合であり、行数分（ここではｎ個）存在する。例えば、ある行の全部の画素の属性が共通していれば、その行は単一のエッジによって表現される。一方、行方向に属性が異なる画素が混在していれば、その行は複数のエッジによって表現される。
なお、この例においては、行方向が本発明に係る第１の方向に相当するが、行方向と列方向のいずれを第１の方向としても問題はない。
【００２１】
図３は、エッジのデータ構造を示す模式図である。各々のエッジは、図３に示す「始点座標」、「終点座標」、「タグ情報」及び「色情報」の４種類のデータを少なくとも含む。始点座標と終点座標は、それぞれ、エッジの始点又は終点を表すＸ軸の座標である。なお、エッジが（複数ではなく）１つの画素によって構成される場合には、始点座標と終点座標とが等しくなる。また、タグ情報は、エッジが表す画像（画素群）の種別を表す情報であり、色情報は、当該画像（画素群）の色を表す情報である。
【００２２】
本実施形態のタグ情報は、エッジ内の各画素の色値が規則的な場合を表すものと、エッジ内の各画素の色値が不規則的な場合（より厳密には、不規則的である可能性がある場合）を表すものとに大別される。本実施形態のタグ情報は、具体的には、「グラフィック（Graphic）」、「テキスト（Text）」、「イメージ（Image）」及び「バックグラウンド（Background）」の４種類の種別を表す。タグ情報が「イメージ」である場合、そのエッジは、上述したイメージデータを表すエッジに相当する。タグ情報が「イメージ」であるエッジのことを、以下においては「イメージ属性のエッジ」とも表記し、他の属性についても同様の表記を用いる。ここでいうイメージ属性は、本発明に係る第２の属性の一例に相当する。一方、残りの「グラフィック」、「テキスト」及び「バックグラウンド」が表す属性は、本発明に係る第１の属性の一例に相当する。
【００２３】
テキスト属性は、文字を表す属性である。ここにおいて、文字とは、文字コードによって表現されるもの（いわゆるテキストデータ）をいい、記号や数字を含み得るが、手書きの文字を含まない。バックグラウンド属性は、画像全体のうちの背景（下地）を表す属性である。グラフィック属性は、テキスト属性、バックグラウンド属性及びイメージ属性のいずれにも属さないエッジの属性であり、例えば、いわゆるベクタ形式の画像（ベクタグラフィクス）のような図形等の画像に割り当てられる属性である。
【００２４】
本実施形態において、グラフィック属性、テキスト属性又はバックグラウンド属性を有するエッジは、いずれも、エッジ内の各画素の色値が共通している。すなわち、かかる属性を有するエッジは、共通の色値を有するという点において規則的であるといえる。一方、イメージ属性を有するエッジ（例えば、写真の画像の一部）は、エッジ内における色値の変化が予測できず、かかる点において不規則的であるといえる。
【００２５】
また、本実施形態の色情報は、各画素の色値が共通するエッジの場合、すなわちグラフィック属性、テキスト属性又はバックグラウンド属性を有するエッジの場合には、色値がそのまま記述される。一方、イメージ属性を有するエッジの場合、色情報は、色値そのものに代えて、当該エッジを表すイメージデータを識別するための識別情報が記述される。識別情報は、例えば、イメージデータの記憶領域をメモリアドレスによって特定するためのポインタである。
【００２６】
差分抽出部１３０は、２つの画像を比較し、その差分を抽出する手段である。差分抽出部１３０は、比較対象である２つの描画データが第１取得部１１０により取得され、これに基づいて中間データ生成部１２０により生成された２つの中間データを用いて、これらのデータが表す画像の差分を抽出する。差分抽出部１３０は、本発明に係る抽出手段又は差分抽出装置の一例に相当するものである。
【００２７】
本実施形態の差分抽出部１３０は、画像をエッジ単位で比較し、その比較結果をエッジリストの形式で出力する。かかるエッジリストのことを、以下においては「差分エッジリスト」という。差分抽出部１３０は、エッジ単位での画像の比較を実現するために、エッジの長さ、すなわち画素数を調整する機能を有する。差分抽出部１３０は、２つの画像上の同じ位置に相当し、かつ、長さ（画素数）が互いに等しいエッジ同士を比較するように構成されている。
【００２８】
ラスタライズ部１４０は、中間データを解釈し、中間データに基づいてラスタデータを生成する手段である。中間データに基づいてラスタデータを生成する処理のことを、以下においては「ラスタライズ処理」という。ラスタライズ部１４０は、２つの画像を比較する場合には、差分抽出部１３０により出力される差分エッジリストに基づいてラスタデータを生成する。ラスタライズ部１４０は、本発明に係るラスタライズ手段の一例に相当するものである。
【００２９】
第１出力部１５０は、ラスタライズ部１４０により生成されたラスタデータを出力する手段である。第１出力部１５０による出力とは、例えば、ラスタデータをユーザに確認可能にさせるために可視化することをいい、ラスタデータが表す画像を用紙に形成したり、ディスプレイ等の表示装置に表示させたりすることに相当する。あるいは、第１出力部１５０は、それ自体が画像を形成したり表示したりする手段を構成するのではなく、外部装置（画像形成装置や表示装置）にラスタデータを供給する手段を構成してもよい。
【００３０】
なお、ラスタライズ部１４０は、差分抽出部１３０により出力された中間データ（すなわち差分エッジリストの集合）のほか、中間データ生成部１２０により生成された中間データにラスタライズ処理を実行してもよい。この場合、中間データ生成部１２０により生成された中間データは、図１に破線で示したように、差分抽出部１３０を介することなくラスタライズ部１４０に供給される。つまり、中間データ生成部１２０により生成された中間データは、差分抽出を行う場合には差分抽出部１３０に供給され、差分抽出を行わずに単に画像そのものを出力する場合にはラスタライズ部１４０に供給される。そのため、画像処理装置１００は、図１に示した構成に加え、差分抽出を行うか否かの指示を受け付ける手段と、当該指示に応じて中間データの供給先を切り替える手段とを備えてもよい。
【００３１】
図４は、差分抽出部１３０のより詳細な構成の一例を示すブロック図である。図４に示す差分抽出部１３０は、第２取得部１３１と、分割部１３２と、比較部１３３と、第２出力部１３４とを含んで構成される。なお、図中の矢印は、データの数を示すために便宜的に付したものであり、第２取得部１３１や分割部１３２がデータの入出力経路を複数要することを意味するものではない。
【００３２】
第２取得部１３１は、外部から中間データを取得する手段である。本実施形態の第２取得部１３１は、中間データ生成部１２０から、比較対象である２つの中間データをそれぞれ取得する。以下においては、比較対象である２つの中間データのそれぞれを区別するために、一方を「第１の中間データ」といい、他方を「第２の中間データ」という。第２取得部１３１は、本発明に係る（エッジリスト又は中間データを取得する）取得手段の一例に相当するものである。
【００３３】
分割部１３２は、第１の中間データのエッジと第２の中間データのエッジとを比較するに際して、これらの長さ（すなわち画素数）が相違する場合に、長い方（すなわち画素数が多い方）のエッジを分割して２つのエッジに分ける手段である。換言すれば、分割部１３２は、比較対象である２つのエッジの長さを揃えるための手段でもある。具体的には、分割部１３２は、２つの中間データのエッジリストをあらかじめ決められた順序（例えば、第１行から順番に）でスキャンし、同一の位置に相当するエッジ同士の長さを比較し、互いの長さが相違する場合に分割を行う。分割部１３２は、本発明に係る分割手段の一例に相当するものである。
【００３４】
分割部１３２は、２つのエッジが同一の位置にあるか否かを、エッジの始点座標を基準に判断し、２つのエッジの長さを、エッジの終点座標を基準にして判断する。例えば、２つのエッジの始点座標が等しく、終点座標が異なる場合には、始点座標と終点座標の差の絶対値が相違する。かかる絶対値が相違するということは、２つのエッジの長さが異なることを意味する。なお、分割部１３２は、エッジの始点座標に代えて終点座標を基準に用いてエッジの位置を判断してもよい。
【００３５】
分割部１３２は、同一の位置にあるエッジの長さが相違する場合に、長い方のエッジを、短い方のエッジの長さと等しくなるように分割する。具体的には、分割部１３２は、行方向の画素数がｎ1のエッジとｎ2のエッジとがあり、これらがｎ1＞ｎ2という関係を有する場合に、前者の長い方のエッジを、画素数がｎ2の第１のエッジと（ｎ1−ｎ2）の第２のエッジとに分割する。なお、第１のエッジと第２のエッジは、いずれも、エッジ内の各画素の属性は共通のままである。つまり、第１のエッジと第２のエッジは、分割前のエッジと比べて長さ（すなわち始点座標と終点座標のいずれか）が異なるが、タグ情報や色情報は分割前と相違しないものである。
【００３６】
また、分割部１３２は、同一の位置にあるエッジの長さが相違しない場合、すなわち２つのエッジの始点座標と終点座標とがともに等しい場合には、これらのエッジを分割しない。分割部１３２は、かかるエッジを素通りさせ、データに変更を加えない状態で比較部１３２に供給する。
【００３７】
比較部１３３は、分割部１３２から供給される２つの中間データの属性をエッジ単位で比較する手段である。比較部１３３は、第１の中間データのエッジと第２の中間データのエッジとを、互いの長さ（すなわち画素数）が等しい状態で比較する。それゆえ、比較部１３３は、エッジの比較に際して２つのエッジの始点座標及び終点座標の異同を考慮する必要がない。したがって、比較部１３３は、２つのエッジのタグ情報又は色情報を比較することにより、これらのエッジの異同を判断する。比較部１３３は、本発明に係る比較手段の一例に相当するものである。
【００３８】
なお、比較部１３３による比較結果の表現方法は、複数考えられる。例えば、比較部１３３は、２つのエッジが相違するか否かのみを２値的に表してもよいし、タグ情報と色情報のいずれが相違するか（あるいはいずれも相違しないか）を表してもよい。また、比較部１３３は、より詳細に、２つの色情報が表す色値を比較し、その差を算出するようにしてもよい。さらに、比較部１３３は、画像が複数の属性を有する場合には、その少なくともいずれかの属性を比較するものであればよく、例えば、色情報の違いのみを比較してタグ情報の違いを比較しない構成であってもよい。
【００３９】
第２出力部１３４は、比較部１３３による比較結果を、第１の中間データが表す画像と第２の中間データが表す画像の差分として出力する手段である。本実施形態の第２出力部１３４は、比較結果をラスタライズ部１４０に出力する。第２出力部１３４は、エッジ単位又はエッジリスト単位で比較結果を出力してもよいが、画像全体の比較が終わるまで出力を待機し、画像全体分のエッジリストを中間データの形式で出力するようにしてもよい。第２出力部１３４は、本発明に係る出力手段の一例に相当するものである。
【００４０】
画像処理装置１００の構成は、以上のとおりである。この構成のもと、画像処理装置１００は、比較対象である２つの描画データを取得すると、画像の差分を表すラスタデータを生成して出力する。ユーザは、画像処理装置１００の出力結果を確認することにより、２つの画像に相違があるか否かや、具体的な相違箇所を把握する。
【００４１】
図５は、差分抽出部１３０による差分エッジリストの生成処理を示すフローチャートである。ここでは、第１の中間データのエッジのことを「エッジＡ」、これと比較される第２の中間データのエッジのことを「エッジＢ」といい、互いを区別するものとする。
なお、この例において生成される差分エッジリストは、２つの画像の色に違いがあるかを示し、タグ情報の違いについては示さないものとしている。なぜならば、２つの画像のタグ情報が相違しても、互いの色値が相違しないのであれば、結果的にユーザに視認される画像としては相違しない場合も多いからである。
【００４２】
差分抽出部１３０は、まず、同一の位置に相当するエッジＡ及びエッジＢをそれぞれ取得する。差分抽出部１３０は、Ｘ軸の座標が小さいものから順番にエッジを取得していく。ただし、後述するように、エッジは分割される場合がある。そこで、差分抽出部１３０は、分割されたエッジ（後述するエッジＡ２又はＢ２）があるか否かをエッジＡとエッジＢについて判断し（ステップＳａ１、Ｓａ３）、エッジが分割されていなければ新たなエッジＡ、Ｂを取得するように構成されている（ステップＳａ２、Ｓａ４）。一方、エッジＡ２又はＢ２が比較されずに残っている場合、差分抽出部１３０は、これを次の比較対象として以下の処理を実行する。
【００４３】
比較対象のエッジＡ及びエッジＢが準備されると、差分抽出部１３０は、これらの終点座標が等しいか否かを判断する（ステップＳａ５）。差分抽出部１３０は、この判断結果に応じて以降の処理を異ならせる。なお、比較対象のエッジＡ及びエッジＢは、Ｘ軸の座標が小さいものから順番に取得されることと、後述する分割処理が行われることとにより、始点座標が必ず等しくなる。
【００４４】
エッジＡ及びエッジＢの終点座標が等しい場合、差分抽出部１３０は、分割処理を行うことなくエッジＡ及びエッジＢを比較する比較処理を実行する（ステップＳａ６）。一方、エッジＡ及びエッジＢの終点座標が相違する場合、差分抽出部１３０は、各々の終点座標の大小を判断する（ステップＳａ７）。差分抽出部１３０は、エッジＡの終点座標の方が大である場合（すなわち、エッジＡの方が長い場合）には、エッジＡを分割する分割処理を実行し（ステップＳａ８）、エッジＢの終点座標の方が大である場合（すなわち、エッジＢの方が長い場合）には、エッジＢを分割する分割処理を実行する（ステップＳａ１０）。
【００４５】
ステップＳａ８又はＳａ１０の分割処理は、次のように行われる。例えば、エッジＡを分割する場合であれば、差分抽出部１３０は、始点座標がエッジＡの始点座標と等しく、終点座標がエッジＢの終点座標と等しくなる画素群を第１のエッジとする。この結果、第１のエッジは、エッジＢと長さ（画素数）が等しい画素群となる。また、差分抽出部１３０は、残りの画素群、すなわちエッジＡから第１のエッジを除いた残りの画素群を第２のエッジとする。なお、分割処理の具体的内容は、エッジＡの場合とエッジＢの場合とで変わらず、分割の対象となるエッジが異なるだけである。
【００４６】
第１のエッジと第２のエッジは、タグ情報及び色情報がそれぞれ共通の値となる。すなわち、これらの値は、変更されることなくコピーされる。ただし、エッジがイメージ属性である場合には、差分抽出部１３０は、イメージデータを識別するための識別情報を調整する。なぜならば、イメージデータは、第１のエッジの位置に相当するメモリアドレスと第２のエッジの位置に相当するメモリアドレスとが異なるからである。
【００４７】
ここで、説明の便宜上、エッジＡが分割された場合の第１のエッジを「エッジＡ１」と表記し、この場合の第２のエッジを「エッジＡ２」と表記する。また、エッジＢが分割された場合の第１のエッジを「エッジＢ１」と表記し、この場合の第２のエッジを「エッジＢ２」と表記する。つまり、差分抽出部１３０は、エッジＡをエッジＡ１とエッジＡ２に分割し、エッジＢをエッジＢ１とエッジＢ２に分割する。
【００４８】
差分抽出部１３０は、分割後の第１のエッジを比較に用いる。すなわち、差分抽出部１３０は、エッジＡを分割した場合には、長さが等しいエッジＡ１とエッジＢとを比較し（ステップＳａ９）、エッジＢを分割した場合には、長さが等しいエッジＡとエッジＢ１とを比較する（ステップＳａ１１）。
【００４９】
第１のエッジによる比較を終えると、差分抽出部１３０は、再びステップＳａ１以降の処理を実行する。このとき、差分抽出部１３０は、第２のエッジを用いる。具体的には、差分抽出部１３０は、直前にエッジＡを分割した場合には、新たなエッジＡを取得せずにエッジＢのみを新たに取得し、エッジＡ２と新たなエッジＢとを比較する。よって、この場合には、ステップＳａ１の判断によってステップＳａ２の処理がスキップされる。一方、直前にエッジＢを分割した場合には、差分抽出部１３０は、新たなエッジＢを取得せずにエッジＡのみを新たに取得し、新たなエッジＡとエッジＢ２とを比較する。よって、この場合には、ステップＳａ３の判断によってステップＳａ４の処理がスキップされる。なお、新たに取得したエッジと第２のエッジとの長さが異なる場合には、差分抽出部１３０は、長い方のエッジを分割する処理を再び実行する。
【００５０】
一方、長さが等しいエッジ同士を比較した場合には、差分抽出部１３０は、比較対象のエッジを全部取得したか否かを判断し（ステップＳａ１２）、取得していないエッジがあれば、ステップＳａ１以降の処理を再度実行する。この場合（すなわち直前にエッジを分割しなかった場合）、差分抽出部１３０は、エッジＡとエッジＢの双方を取得する。そして、エッジリストの先端（Ｘ軸の座標が最も小さい位置）から終端（Ｘ軸の座標が最も大きい位置）までのエッジをすべて取得して比較したら、差分抽出部１３０は本処理を終了し、次の行のエッジリストについて本処理を開始する。差分抽出部１３０は、これらの処理を中間データの全体について順次実行する。
【００５１】
図６は、ステップＳａ６、Ｓａ９及びＳａ１１の比較処理を示すフローチャートである。なお、各ステップの比較処理は、比較しているエッジが異なるものの、その処理の具体的な内容に違いはない。つまり、これらの比較処理は、比較対象のエッジが分割されたものであるか否かと、エッジＡとエッジＢのいずれが分割されたかが異なるのみである。
【００５２】
比較処理において、差分抽出部１３０は、まず、差分エッジを生成する（ステップＳｂ１）。ここにおいて、差分エッジとは、上述した差分エッジリストを構成する個々のエッジのことである。差分エッジは、ステップＳｂ１において生成された時点では、始点座標、終点座標、タグ情報及び色情報が未定義の状態である。未定義の状態は、いわゆるヌル（null）の状態であってもよいし、あらかじめ決められた初期値（「０」等）が付与された状態であってもよい。
【００５３】
次に、差分抽出部１３０は、差分エッジの始点座標と終点座標を定義する（ステップＳｂ２）。差分エッジの始点座標及び終点座標には、エッジＡの始点座標及び終点座標をそのまま用いる。なお、エッジＡとエッジＢの始点座標及び終点座標は共通であるから、差分エッジの始点座標と終点座標にエッジＢの始点座標及び終点座標を用いてもよい。なお、差分エッジのタグ情報と色情報は、この時点では未定義のままである。
【００５４】
差分抽出部１３０は、差分エッジを生成し、その始点座標と終点座標を定義したら、次いでエッジＡとエッジＢのタグ情報を比較し、双方の属性が共通しているか否かを判断する（ステップＳｂ３）。差分抽出部１３０は、双方のタグ情報が共通の属性を示している場合には、さらにそのタグ情報がイメージ属性を示すか否かを判断する（ステップＳｂ４）。なお、この判断には、エッジＡとエッジＢのいずれが用いられてもよい。
【００５５】
エッジＡ及びエッジＢがともにイメージ属性である場合、差分抽出部１３０は、差分エッジのイメージデータが記録される領域をメモリに確保し、当該領域を示す識別情報を差分エッジの色情報として定義する（ステップＳｂ５）。差分エッジのイメージデータを記憶する領域は、エッジＡ又はエッジＢのイメージデータの画素数分のデータ容量と等しければ十分であるが、これより大きなデータ容量を確保してもよい。その後、差分抽出部１３０は、エッジＡのイメージデータとエッジＢのイメージデータとを画素単位で比較し（ステップＳｂ６）、その比較結果を画素毎にメモリに記録する（ステップＳｂ７）。ステップＳｂ６の比較をエッジ内の各画素単位で行うのは、比較対象のエッジがイメージ属性であり、各画素の色値が変化する（可能性がある）からである。
【００５６】
本実施形態において、差分抽出部１３０は、エッジＡとエッジＢの各画素の色値を比較し、その差分の絶対値をメモリに記録するものとする。ただし、差分抽出部１３０は、エッジＡとエッジＢの差分を正負の符号とともに記録し、エッジＡとエッジＢのいずれの色値が大きいかがわかるように差分を記録してもよい。
【００５７】
一方、エッジＡ及びエッジＢのタグ情報が共通の属性を示すが、これがイメージ属性ではない場合、差分抽出部１３０は、エッジＡ及びエッジＢの特定の位置（例えば始点）の画素同士を比較し、その差分の絶対値を色情報として記録する（ステップＳｂ８）。この処理におけるデータの記録態様は、色情報が（識別情報ではなく）色値の差分そのものである点において、イメージ属性の場合と異なる。なお、ステップＳｂ８の処理において、画素の比較が特定の画素のみでよいのは、双方のエッジがいずれもイメージ属性でないからであり、換言すればエッジ内の各画素の色値が共通の値だからである。すなわち、エッジ内の各画素の色値が共通の値である場合、色情報の比較は、画素単位ではなくエッジ単位でよい。
【００５８】
また、エッジＡとエッジＢのタグ情報が相違する場合には、差分抽出部１３０は、エッジＡのタグ情報がイメージ属性を示すか否かを判断する（ステップＳｂ９）。エッジＡがイメージ属性である場合、差分抽出部１３０は、差分エッジのイメージデータが記録される領域をメモリに確保し、当該領域を示す識別情報を差分エッジの色情報として定義する（ステップＳｂ１０）。また、差分抽出部１３０は、エッジＡのイメージデータとエッジＢの色情報（ここでは色値）とを画素単位で比較し（ステップＳｂ１１）、その比較結果を画素毎にメモリに記録する（ステップＳｂ１２）。なお、ステップＳｂ１０、Ｓｂ１１、Ｓｂ１２の処理は、エッジＢがイメージ属性以外の属性である点を除き、上述したステップＳｂ５、Ｓｂ６、Ｓｂ７の処理と共通する。
【００５９】
さらに、エッジＡとエッジＢのタグ情報が相違し、かつ、エッジＡのタグ情報がイメージ属性以外の属性を示す場合、差分抽出部１３０は、エッジＢのタグ情報がイメージ属性を示すか否かを判断する（ステップＳｂ１３）。ステップＳｂ３、Ｓｂ９、Ｓｂ１３の判断の組み合わせによって、エッジＡとエッジＢの少なくとも一方がイメージ属性であるか否かが判断される。
【００６０】
ここで、エッジＢがイメージ属性である場合、差分抽出部１３０は、差分エッジのイメージデータが記録される領域をメモリに確保し、当該領域を示す識別情報を差分エッジの色情報として定義する（ステップＳｂ１４）。また、差分抽出部１３０は、エッジＡの色情報（ここでは色値）とエッジＢのイメージデータとを画素単位で比較し（ステップＳｂ１５）、その比較結果を画素毎にメモリに記録する（ステップＳｂ１６）。なお、ステップＳｂ１４、Ｓｂ１５、Ｓｂ１６の処理は、エッジＡとエッジＢとが入れ替わっている点を除き、上述したステップＳｂ１０、Ｓｂ１１、Ｓｂ１２の処理と共通する。
【００６１】
一方、エッジＢがイメージ属性以外の属性である場合、すなわちエッジＡとエッジＢのいずれもイメージ属性以外の属性である場合、差分抽出部１３０は、エッジＡ及びエッジＢの特定の位置（例えば始点）の画素同士を比較し、その差分の絶対値を色情報として記録する（ステップＳｂ１７）。このステップＳｂ１７の処理は、上述したステップＳｂ８の処理と共通のものである。
【００６２】
差分抽出部１３０は、以上のいずれかの態様によってエッジＡとエッジＢを比較し、差分エッジを得たら、これを差分エッジリストに追加する（ステップＳｂ１８）。差分エッジリストは、メモリのあらかじめ決められた領域に記録される。つまり、ここにおいて差分抽出部１３０は、差分エッジをメモリに出力する。その後、差分抽出部１３０は、図５に示した各処理を続行する。
【００６３】
図７は、本実施形態の動作を説明するための画像を例示する模式図である。図７は、画像Ａと画像Ｂとをビットマップ形式で表現したものを例示したものであり、１０行１６列の画素により構成された画像を示している。ここにおいて、行方向及び列方向に配列された正方形は、それぞれ画素を表している。また、各画素の内部に記載された数字は、当該画素の色値（０以上２５５以下）を表している。なお、これらの画像は、色値が「０」の画素が「Ａ」という文字の形状で配置されている画素がテキスト属性を有し、色値が「２５５」の画素がバックグラウンド属性を有し、これらのいずれとも異なる画素がイメージ属性を有するものとする。ただし、イメージ属性の画素群は、ここでは簡略的に示されているが、実際には階調がより複雑に（すなわち不規則的に）変化するのが一般的である。
【００６４】
図８は、図７に示した画像Ａと画像Ｂをそれぞれエッジリストで表現した模式図である。図８において、それぞれのエッジには、「Ａｎ−ａ（画像Ａの場合）」、「Ｂｎ−ａ（画像Ｂの場合）」という番号が割り振られている。ここにおいて、ｎの値は、そのエッジが何行目のエッジであるかを表す０以上９以下の数値であり、ａの値は、そのエッジがエッジリスト中の（左側から数えて）何番目のエッジであるかを表す１から始まる数値である。
【００６５】
図９は、図８に示したエッジリストのうち、特に第７行（８行目）のエッジリストを抜き出して示した模式図である。ここにおいて、例えばエッジＡ７−１は、始点座標が「０」であり、終点座標が「１」であるから、画素数にして２画素分の画素群である。また、エッジＡ７−１の属性は、タグ情報が「バックグラウンド」であり、色情報が「２５５」である。同様に、エッジＡ７−２は、始点座標が「２」、終点座標が「６」である５画素分の画素群であり、タグ情報が「テキスト」、色情報が「０」である。
【００６６】
また、エッジＡ７−４は、始点座標が「１１」、終点座標が「１４」である４画素分の画素群であり、タグ情報が「イメージ」である。イメージ属性のエッジの色情報には、イメージデータを参照するための識別情報が記述され、この例においては、１画素目が「１２８」、２画素目が「６４」、３画素目が「１２８」、４画素目が「６４」をそれぞれ示す４バイト分のイメージデータと対応付けられている。
【００６７】
図１０は、図９に示したエッジリストに分割処理を実行する場合の分割前後のエッジリストを示す模式図である。ここにおいて、「Ａｎ−ａ．ｂ（画像Ａの場合）」、「Ｂｎ−ａ．ｂ（画像Ｂの場合）」と示した番号は、分割されたエッジに割り振られるものであり、ｂの値がエッジの分割数を示している。例えば、エッジＡ７−２は、分割処理によってエッジＡ７−２．１、Ａ７−２．２、Ａ７−２．３の３つのエッジに分割されている。
【００６８】
図１０に示すように、分割処理を実行すると、比較対象となる２つのエッジリストを構成するエッジの数と、同一の位置に対応するエッジ同士の長さ（画素数）とがいずれも等しくなる。差分抽出部１３０は、このようにして画素数が等しい状態となったエッジ同士を比較するように構成されている。この例の場合、差分抽出部１３０は、８組のエッジを比較する。
【００６９】
図１１は、図１０に示した分割後のエッジを比較することにより得られる差分エッジリストを示す模式図である。また、図１２は、図７の画像Ａと画像Ｂの比較結果を示す模式図である。なお、この例において、各エッジのタグ情報は、いずれも未定義（null）のままである。ここでは、それぞれの差分エッジを識別するための番号を、上述したｎの値とａの値を用いて「Ｄｎ−ａ」と表記する。
【００７０】
例えば、差分エッジＤ７−１は、始点座標が「０」、終点座標が「１」を表す２画素分の画素群であり、その色情報が「０」である。エッジの色情報が「０」であるということは、当該エッジによって表される位置には画像Ａと画像Ｂとに違いがないということである。一方、差分エッジＤ７−３は、色情報が「２５５」である。エッジの色情報が「０」以外の値であるということは、当該エッジによって表される位置には画像Ａと画像Ｂとに違いがあるということである。
【００７１】
以上のように、画像処理装置１００は、中間データによって差分抽出を行うものである。また、画像処理装置１００による分割処理は、中間データによる差分抽出を容易にするものである。中間データを用いた差分抽出は、ラスタライズ処理後のラスタデータを用いて差分を抽出する場合に比べ、ハードウェア構成として要求されるメモリのデータ容量が少なくなる。また、中間データを用いた差分抽出は、画像を描画命令によって抽象的に表現した描画データを用いて差分を抽出する場合に比べ、実際には差がない部分が差分であると誤って判断される場合が少なくなる。
【００７２】
［変形例］
本発明の実施の態様は、上述した実施形態に限定されるものではなく、例えば、以下に示す変形例の形態であってもよい。また、これらの形態は、必要に応じて適宜組み合わされてもよい。
【００７３】
（変形例１）
上述したように、差分抽出部１３０は、比較した２つのエッジのタグ情報が相違するか否かを比較結果に含めて出力してもよい。例えば、差分抽出部１３０は、比較した２つのエッジの色値に相違がなかった場合であっても、これらのタグ情報が相違した場合には、両者のタグ情報が異なることを出力するようにしてもよい。
【００７４】
また、タグ情報を利用した比較結果の表現方法としては、例えば、画像に違いがあるか否かを（エッジ単位ではなく）タグ情報が共通する領域単位で判断するものが挙げられる。具体的には、比較対象の２つの画像にイメージ属性を有する領域（以下「イメージ領域」という。）が含まれ、そのイメージ領域が複数のエッジで表現される場合に、イメージ領域の一部のエッジのみに差分が生じ、他のエッジには差がないときであっても、イメージ領域に差があるとみなす、というように、エッジ単位ではなく領域単位で比較結果を表現する方法が考えられる。
【００７５】
（変形例２）
上述したように、エッジの比較をエッジ単位で行うか画素単位で行うかは、当該エッジにおける色値の変化が規則的であるか否かによって判断すればよい。ここにおいて、色値の変化が規則的である場合の例としては、色値が変化しない場合のほかに、色値が決められたパターンで変化するものが挙げられる。例えば、色値が「０」、「２５５」、「０」、「２５５」というパターンでいわば点線状に変化する場合や、いわゆるグラデーションのように、色値が決められた値（又は比率）で画素毎に増加ないし減少する場合などは、色値の変化が規則的な場合の一例に相当するものである。
【００７６】
（変形例３）
差分抽出部１３０により出力される差分エッジリストは、比較を行った単位毎の差分エッジのリストではなく、かかる差分エッジを連結したものであってもよい。
図１３は、差分抽出部１３０が出力する差分エッジリストの他の例を示す模式図である。なお、同図に示す差分エッジＤ７−１〜Ｄ７−８は、連結前の差分エッジであり、図１１に示したものである。この例において、差分抽出部１３０は、属性が共通する差分エッジが連続する場合に、これらの差分エッジを連結して一の差分エッジとする。例えば、図中の差分エッジＤ７−１と差分エッジＤ７−２は、色情報が同一の値であるため、これを１つの差分エッジで表現することが可能である。この場合、差分抽出部１３０は、これらの差分エッジを、始点座標を差分エッジＤ７−１の始点座標とし、終点座標を差分エッジＤ７−２の終点座標とする新たな差分エッジに変換する。この場合、差分エッジリストに含まれる差分エッジの数が連結前よりも少なくなり、差分エッジリストを表現するために必要なデータ容量が少なくなる。
【００７７】
また、差分抽出部１３０は、イメージ属性を有する差分エッジＤ７−６、Ｄ７−７についても、同様の連結を行ってもよい。イメージ属性を有する差分エッジの場合、差分抽出部１３０は、イメージデータについても連結を行う。図１３の例の場合、連結後のイメージ属性の差分エッジによって参照されるイメージデータは、１画素目が「１２７」、２画素目が「６４」、３画素目が「０」、４画素目が「６４」の４バイト分のイメージデータになる。
【００７８】
（変形例４）
本発明は、差分抽出装置やこれを備える画像処理装置だけでなく、コンピュータを差分抽出装置又は画像処理装置として機能させるためのプログラムや、かかるプログラムを記録した記録媒体の形態でも提供され得る。また、本発明に係るプログラムは、ネットワークやその他の通信手段を介して外部装置から取得され、コンピュータにダウンロードされるものであってもよい。
【符号の説明】
【００７９】
１００…画像処理装置、１１０…第１取得部、１２０…中間データ生成部、１３０…差分抽出部、１３１…第２取得部、１３２…分割部、１３３…比較部、１３４…第２出力部、１４０…ラスタライズ部、１５０…第１出力部
【図１】
2012190067.tif 000003
【図２】
2012190067.tif 000004
【図３】
2012190067.tif 000005
【図４】
2012190067.tif 000006
【図５】
2012190067.tif 000007
【図６】
2012190067.tif 000008
【図７】
2012190067.tif 000009
【図８】
2012190067.tif 000010
【図９】
2012190067.tif 000011
【図１０】
2012190067.tif 000012
【図１１】
2012190067.tif 000013
【図１２】
2012190067.tif 000014
【図１３】
2012190067.tif 000015