以下、画像検査装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
図1は、本実施の形態における画像検査装置1のブロック図である。
画像検査装置1は、第一画像格納部101、第二画像格納部102、アウトライン比較部103、文字画像比較部104、および出力部105を備える。
第一画像格納部101には、1または2以上の第一画像が格納される。第一画像は、2以上の文字のアウトラインデータを有する画像データである。文字のアウトラインデータとは、例えば、文字の輪郭を示すベクトルデータである。文字のアウトラインデータとは、例えば、文字のフォントを、アウトライン化したデータである。文字のアウトラインデータとは、例えば、文字のフォントの輪郭を、ベクトルデータ化したデータである。文字のアウトラインデータは、例えば、文字のフォントが有する輪郭のデータを、編集可能なベクトルデータとして抽出したものと考えてもよい。なお、第一画像は、アウトラインデータ以外の画像データや、テキストデータ等を更に有していても良い。
例えば、2以上の文字のアウトラインデータは、通常、ユーザが指定された順に配列されている。例えば、2以上の文字をアウトライン化して得られた文字のアウトラインデータは、元の文字の配列順に配列されている。
アウトラインデータは、例えば、パスと呼ばれる線と、アンカーポイント等の制御点と呼ばれるパスを操作するための点とを有している。アンカーポイントは、パスの端点や中継点等と考えてもよい。アウトラインデータが、例えば、いわゆるベジェ曲線等である場合には、アウトラインデータは、制御点としてアンカーポイントの他にハンドルと呼ばれる曲線の曲がり方等を制御するための制御点を有していてもよい。また、曲線等を定義するために用いられる座標等を、制御点と考えてもよい。ここでの線や点は、線や点の情報と考えてもよい。ここでは、制御点についての座標等の位置情報を点位置情報と呼ぶ。
第一画像は、例えば、任意に区切られた2以上の文字のアウトラインデータを有している。第一画像は、例えば、1文字単位で区切られた2以上の文字のアウトラインデータを有していても良い。また、第一画像は、1文字単位以外の任意に区切られた2以上の文字のアウトラインデータを有していても良い。任意に区切られた2以上の文字のアウトラインデータについては後述する。
1文字単位で区切られた文字のアウトラインデータとは、例えば、1文字毎に区別可能なアウトラインデータである。例えば、アウトライン比較部103等が1文字毎に区別可能なアウトラインデータである。例えば、1文字単位でグループ化やネスト化、合成、複合化等が行なわれたベクトルデータや、1文字単位でオブジェクト化されたベクトルデータである。1文字単位で区切られたアウトラインデータは、例えば、一の文字に対応するアウトラインデータが、複数のアンカーポイントやパスや制御点に対して識別可能なアウトラインデータである。
第一画像は、文字のアウトラインデータを有するデータであれば、データ構造や、ファイル形式や、データのフォーマット等は問わない。第一画像は、例えば、電子文書等のデータであってもよい。
第一画像は、例えば、印刷用の原稿の画像データである。例えば、この第一画像を用いて、印刷用のデータ(例えば、印刷機等に入力されるデータ)が作成される。第一画像が有する文字のアウトラインデータは、例えば、印刷用の原稿であるテキストデータを、アウトライン化して得られたアウトラインデータである。
第一画像格納部101は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。かかることは、以下の他の格納部についても同様である。
第二画像格納部102は、1または2以上の第二画像が格納される。第二画像は、2以上の文字のアウトラインデータを有する画像データである。第二画像は、第一画像と同様の画像である。第二画像は、例えば、第一画像と比較される画像である。第二画像は、例えば、検査対象となる画像である。第二画像は、例えば、第一画像を用いて作成された画像である。例えば、第二画像は、第一画像を原稿として作成された印刷に用いられる印刷用の画像データである。第二画像は、例えば、容器等の表面に印刷を行なう際に用いられる印刷用の画像データである。第二画像は、例えば、第一画像と対応付けて第二画像格納部102に格納されてもよい。例えば、第一画像と比較される第二画像は、この第一画像と対応付けて第二画像格納部102に格納されてもよい。
第二画像は、任意に区切られた2以上の文字のアウトラインデータを有している。例えば、第二画像は、1文字単位で区切られた2以上の文字のアウトラインデータを有していても良い。また、第二画像は、1文字単位で区切られていない2以上の文字のアウトラインデータを有していても良い。1文字単位で区切られていない2以上の文字のアウトラインデータは、例えば、1文字単位以外の任意に区切られた2以上の文字のアウトラインデータであっても良い。1文字単位で区切られていない2以上の文字のアウトラインデータについては、後述する。
なお、以下、本実施の形態においては、一例として、第一画像および第二画像が、いずれも1文字単位で区切られた2以上の文字のアウトラインデータを有している場合について説明する。
アウトライン比較部103は、第一アウトラインデータと、第二アウトラインデータと、を配列順番に沿って比較する。第一アウトラインデータとは、第一画像が有するアウトラインデータである。第二アウトラインデータとは、第二画像が有するアウトラインデータである。アウトライン比較部103は、例えば、第一アウトラインデータと、第二アウトラインデータと、を配列順番に沿って比較して一致しない部分を検出する。また、アウトライン比較部103は、例えば、第一アウトラインデータと、第二アウトラインデータと、を配列順番に沿って比較して一致する部分を検出してもよく、一致する部分と一致しない部分との両方を検出しても良い。
上述したように、比較の対象となる第一画像および第二画像が、いずれも1文字単位で区切られた2以上の文字のアウトラインデータを有している場合、アウトライン比較部103は、例えば、第一アウトラインデータと第二アウトラインデータとを、それぞれが有する1文字単位に区切られたアウトラインデータ単位で配列順番に沿って比較して、一致するか否かを判断する。例えば、アウトライン比較部103は、1文字分のアウトラインデータ同士を比較して、一致するか否かを判断する。例えば、比較により一致すると判断された1以上の1文字単位のアウトラインデータが、第一アウトラインデータと第二アウトラインデータとの、比較によって一致すると判断された部分である。また、例えば、比較により一致しないと判断された1以上の1文字単位のアウトラインデータが、第一アウトラインデータと第二アウトラインデータとの、比較によって一致しないと判断された部分である。比較は、例えば、第一画像および第二画像の全ての領域や、対応する一部の領域内に含まれる1文字単位で区切られたアウトラインデータ間で行なわれる。対応する領域は、どのように検出してもよい。例えば、ユーザにより予め対応付けられた領域を対応する領域として判断してもよい。
アウトライン比較部103は、第一アウトラインデータの1文字単位で区切られたアウトラインデータと、第二アウトラインデータの1文字単位で区切られたアウトラインデータと、をそれぞれ同じ配列順番で比較する。例えば、第一アウトラインデータおよび第二アウトラインデータがそれぞれ有する文字毎に区切られたアウトラインデータから、同じ配列順番のアウトラインデータをそれぞれ取得して比較し、比較した文字のアウトラインが一致するか否かを順番に判断していく。配列順番に沿って比較するということは、例えば、予め決められた方向(例えば、行方向や縦方向)等の、同じ配列ルートに沿って配列された、文字毎に区切られたアウトラインデータをそれぞれ取得して比較することである。配列順番に沿って比較するということは、例えば、第一画像および第二画像の同じ配列順番の文字のアウトラインデータを比較することである。配列順番に沿って比較することは、配列順番を利用して、比較することと考えてもよく、例えば、配列順番の逆順や、配列順番において、一つ置きに1文字のアウトラインデータを順次比較することと等も含む概念と考えてもよい。
文字の配列順番は、例えば、文字が読まれる順番である。例えば、アウトラインデータが複数行の文字のアウトラインデータである場合、一の行の最後の1文字の次の配列順番の文字のアウトラインデータは、一の行の次の行の最初の1文字のアウトラインデータである。配列順番は、例えば、予め決められているようにしてもよく、配列順番を指定する情報を、ユーザ等から図示しない受付部等を介して受け付けるようにしても良い。また画像処理により、アウトラインデータの並び方や、アウトラインデータの行間のスペース等を検出して、これらの情報から、配列順番を指定する情報を取得しても良い。
アウトライン比較部103がどのように1文字単位のアウトラインデータ同士の比較を行なって、1文字単位のアウトラインデータが一致しているか否かを判断してもよい。例えば、アウトライン比較部103は、比較する1文字単位のアウトラインデータの制御点の数の差が、0であるか否か、または、予め決められた閾値以下であるか否かを判断し、差が0、または閾値以下である場合に、アウトラインデータ同士が一致すると判断し、差が0または閾値以下でなければ一致しないと判断してもよい。てもよい。閾値は、例えば0以上の整数である。
アウトライン比較部103は、一致しない制御点がある場合に、比較した1文字単位のアウトラインデータ同士が一致しないと判断し、ない場合は一致すると判断してもよい。また、アウトライン比較部103は、一致する制御点の数が予め決められた閾値より小さい場合に、比較した1文字単位のアウトラインデータ同士が一致しないと判断し、閾値よりも小さくない場合に一致すると判断してもよい。また、一致しない制御点の数が予め決められた閾値よりも大きい場合に、比較した1文字単位のアウトラインデータ同士が一致しないと判断し、閾値よりも大きくない場合に、一致すると判断してもよい。また、アウトライン比較部103は、制御点の一致率が予め決められた閾値より小さい場合に、比較した1文字単位のアウトラインデータ同士が一致しないと判断し、閾値よりも小さくない場合に一致すると判断してもよい。また、アウトライン比較部103は、制御点の不一致率が予め決められた閾値よりも大きい場合に、比較した1文字単位のアウトラインデータ同士が一致しないと判断し、閾値よりも大きくない場合に、一致すると判断してもよい。
ここでの一致率とは、例えば、比較される1文字単位のアウトラインデータの一方、(例えば、比較の基準となる1文字単位のアウトラインデータや、比較の対象となる1文字単位のアウトラインデータ)が有する制御点数に対する、一致する制御点数の比率である。また、不一致率とは、例えば、比較される1文字単位のアウトラインデータの一方、(例えば、比較の基準となる1文字単位のアウトラインデータや、比較の対象となる1文字単位のアウトラインデータ)が有する制御点数に対する、一致しない制御点数の比率である。一致率の閾値は、例えば、90%以上の値であることが好ましい。なお、一致率を、比較される1文字単位のアウトラインデータの両方の制御点数の合計に対する、一致する制御点数の比率等としてもよい。かかることは、不一致率についても同様である。
例えば、アウトライン比較部103は、第一アウトラインデータが有する一の文字のアウトラインデータを比較の基準とし、第二アウトラインデータの一の文字のアウトラインデータを比較の対象として、両者の比較を行なう場合、基準となる第一アウトラインデータの一の文字のアウトラインデータが有する各制御点に対して一致する制御点を、比較対象となる第二アウトラインデータの一の文字のアウトラインデータから検出し、検出した一致する制御点数の、基準となる第一アウトラインデータの一の文字のアウトラインデータが有する検出に用いた制御点数に対する比率を、一致率として算出する。また、アウトライン比較部103は、例えば、基準となる第一アウトラインデータの一の文字のアウトラインデータが有する各制御点に対して一致しない制御点を、比較対象となる第二アウトラインデータの一の文字のアウトラインデータから検出し、検出した一致する制御点数の、基準となる第一アウトラインデータの一の文字のアウトラインデータが有する検出に用いた制御点数に対する比率を、一致率として算出してもよい
上記における制御点同士が一致するということは、例えば、一のアウトラインデータの一の制御点に対して近接した位置、例えば、予め決められた閾値以下の距離の範囲に、比較対象となる他のアウトラインデータの制御点(あるいは、制御点であって、上記の一のアウトラインデータの他の一の制御点に一致すると判断されていない制御点)が存在することと考えてもよい。制御点同士が一致するということは、例えば、制御点の点位置情報同士が一致することであってもよく、制御点の点位置情報が示す位置の間の距離が閾値以下の距離であることであってもよい。かかることは、以下においても同様である。なお、ここでの一のアウトラインデータと他のアウトラインデータとは、比較される第一のアウトラインデータと第二のアウトラインデータ、あるいは比較される第二のアウトラインデータと第一のアウトラインデータである。
例えば、比較の基準となる第一アウトラインデータの一の文字のアウトラインデータの一の制御点との距離が閾値以下となる制御点であって、同じ一の文字のアウトラインデータの他の制御点と一致していると判断されていない制御点が、比較対象となる第二アウトラインデータの同じ配列順番の一の文字のアウトラインデータに存在する場合、アウトライン比較部103は、第一アウトラインデータの一の文字のアウトラインデータの一の制御点に一致する制御点があると判断し、存在しない場合、一致する制御点がないと判断する。この場合の距離の閾値は、通常、文字のサイズよりも小さい値であり、例えば、文字のサイズの10分の1以下の値や、文字の端部以外の部分の太さよりも小さい値であることが好ましい。制御点間の距離は、例えば、アウトラインデータの各制御点の点位置情報を用いて算出可能である。点位置情報は、例えば、各文字のアウトラインデータに設定される座標系等における制御点の座標である。ここでの比較に用いられる制御点は、制御点のうちの一部、例えば、アンカーポイントやハンドル等のうちの一部であってもよく、全ての制御点であってもよい。
なお、アウトライン比較部103は、比較する1文字単位のアウトラインデータ間において、それぞれ、制御点を特徴点等として用いて、この特徴点等を用いて比較する1文字単位のアウトラインデータ間の類似度を算出し、この類似度から、アウトラインデータ同士が一致しているか否かを判断してもよい。例えば、類似度が閾値以上である場合、1文字単位のアウトラインデータ同士が一致していると判断してもよい。
アウトライン比較部103は、1文字単位のアウトラインデータ同士を比較する際に、アウトラインデータ同士のサイズを合わせる処理や、1文字単位のアウトラインデータの傾き等のゆがみを合せる処理やゆがみを除去する処理等の補正処理等を行なうようにしてもよい。例えば、1文字単位のアウトラインデータ同士の縦横のサイズ合わせのための拡大や縮小は、画像の最適化計算等を行なうことで実現可能である。また、1文字単位のアウトラインデータ同士のシアー等の変形による形状のゆがみを合せる変形処理は、例えば、アウトラインデータのラスタライズ(ラスタ画像化)と、ホモグラフ変換やアフィン変換との組合わせにより実現可能である。なお、上記以外の画像処理等を行なうことで、1文字単位のアウトラインデータ間のサイズ合わせや、形状合せや、ゆがみの除去等を行なうようにしてもよい。ここでの補正処理は、1文字単位のアウトラインデータを収めた最小矩形等を設定して、この最小矩形に対して行なうようにしても良い。画像の最適化計算やホモグラフ変換等は、公知技術であるため、ここでは詳細な説明は省略する。アウトラインデータのラスタライズは、アウトラインデータのレンダリングと考えてもよい。
アウトライン比較部103は、例えば、対応する第一画像と第二画像のアウトラインデータ同士を比較する。例えば、アウトライン比較部103は、対応付けて格納されている第一画像と第二画像のアウトラインデータ同士を比較する。なお、図示しない受付部等を介してユーザにより指定された第一画像と第二画像のアウトライン同士を比較してもよい。
なお、アウトライン比較部103が、どのように、第一画像および第二画像が、いずれも1文字単位で区切られた2以上の文字のアウトラインデータを有していると判断するかは問わない。例えば、ユーザにより、予め1文字単位で区切られていることが指定されている場合に、いずれも1文字単位で区切られた2以上の文字のアウトラインデータを有していると判断してもよい。また、区切られたアウトラインデータのそれぞれのサイズや縦横比等から、1文字単位で区切られているか否か等を判断してもよい。なお、第一画像格納部101および第二画像格納部102に格納される第一画像および第二画像が、いずれも1文字単位で区切られた2以上の文字のアウトラインデータを有しているという前提である場合、上記のような第一画像および第二画像が、いずれも1文字単位で区切られた2以上の文字のアウトラインデータを有しているか否かの判断を行なわなくても良い。
文字画像比較部104は、アウトライン比較部103が比較により一致しないと判断した部分の第一アウトラインデータと、第二アウトラインデータとを変換したラスタ画像をそれぞれ構成する画素の画素値を比較して、差異の箇所を検出する。ここでの、アウトライン比較部103が比較により一致しないと判断した部分の第一アウトラインデータと第二アウトラインデータとを変換したラスタ画像は、例えば、一致しないと判断された第一アウトラインデータと第二アウトラインデータとの少なくとも一部を変換したラスタ画像であればよく、全体であっても全体でなくても良い。また、画素の画素値が比較されるラスタ画像は、第一アウトラインデータと第二アウトラインデータとを変換したラスタ画像の少なくとも一部であればよく、全体であっても全体でなくても良い。
第一アウトラインデータと、第二アウトラインデータとを変換したラスタ画像は、例えば、文字画像比較部104が作成する。例えば、文字画像比較部104が、アウトライン比較部103の比較結果に応じて、アウトライン比較部103が比較した第一アウトラインデータと、第二アウトラインデータとをラスタ画像に変換し、変換したラスタ画像をそれぞれ構成する画素の画素値を比較して、差異の箇所を検出してもよい。以下、本実施の形態においては、文字画像比較部104がラスタ画像に変換する場合を例に挙げて説明する。ただし、これらのラスタ画像は、図示しない他の処理部等が作成してもよい。
画素の画素値とは、例えば、画素の輝度値や、RGB値や、CMYK値や、色相や、彩度、カラーコード等である。なお、以下、第一アウトラインデータをラスタ画像に変換したものを第一ラスタ画像、第二アウトラインデータをラスタ画像に変換したものを第二ラスタ画像と呼ぶ。ラスタ画像に変換する処理は、ラスタライズとも呼ばれる。ラスタ画像とは、多値の複数の画素で構成される画像であり、ビットマップ画像とも呼ばれる。変換されるラスタ画像のビット深度は問わないが、8ビット以上のビット深度であることが好ましい。また、ラスタ画像に変換する際には、アンチエイリアシング処理を行なっても良く、行なわなくても良い。また、ラスタ画像に変化する際の解像度等は問わない。通常は、第一アウトラインデータと第二アウトラインデータとを同じ設定でラスタ化するが、異なる設定で行なっても良い。
例えば、文字画像比較部104は、第一アウトラインデータおよび第二アウトラインデータの、アウトライン比較部103が比較によって一致しないと判断した1文字単位で区切られたアウトラインデータ(つまり第一のアウトラインデータと第二のアウトラインデータと)を、それぞれラスタ画像に変換し、変換したラスタ画像をそれぞれ構成する画素の画素値を比較して、差異の箇所を検出する。また、アウトライン比較部103が一致すると判断した1文字単位のアウトラインデータについては、文字画像比較部104は、ラスタ画像に変換せず、比較も行なわないようにする。
文字画像比較部104が比較する画素は、例えば、それぞれのラスタ画像の対応する画素であり、例えば、比較するラスタ画像にそれぞれ設定される座標系における同じ座標の画素や、重ねた場合に対応する(例えば、重なりあう)画素である。
例えば、文字画像比較部104は、アウトライン比較部103が一致しないと判断した1文字単位のアウトラインデータについて、上述したような最適化計算や、ホモグラフ変換等を行うことによってサイズや形状等を揃え、このサイズや形状を揃えた1文字単位のアウトラインデータをそれぞれラスタ画像に変換して得られた第一ラスタ画像と、第二ラスタ画像との対応する画素(例えば、同じ座標の画素や、重ねた場合に重なり合う画素)の画素値(例えば、輝度値)の比較を行なってもよい。あるいは、アウトライン比較部103が比較のためにサイズや、形状を変更したアウトラインデータを、そのままラスタ画像に変換した第一ラスタ画像と第二ラスタ画像との対応する画素の画素値を比較してもよい。
また、例えば、文字画像比較部104は、第一ラスタ画像と第二ラスタ画像とのサイズや形状等を、上述したような最適化計算や、ホモグラフ変換等を行うことによって揃え、揃えた第一ラスタ画像と第二ラスタ画像とを重ねた場合に対応する(重なりあう)画素間の画素値(例えば、輝度値)を比較することにより行われる。
文字画像比較部104は、第一ラスタ画像と第二ラスタ画像との比較を、通常、画素単位で行うが、画素単位で行なわないようにしても良く、例えば、複数の画素で構成されるブロック単位等で比較が行われても良い。この場合、例えば、複数の画素値の平均値等の、複数の画素値を統計処理した値を比較するようにしても良い。このような画素単位で行なわれない第一ラスタ画像と第二ラスタ画像との比較も、第一ラスタ画像と第二ラスタ画像とを構成する画素の画素値の比較と考えてもよい。
文字画像比較部104は、例えば、第一画像と第二画像とをそれぞれ構成する画素の画素値(例えば、輝度値等)の差を、予め用意された閾値と比較して差異の箇所を検出する。差異の箇所とは、差異の画素や、差異の画素群である。この閾値としては、例えば、図示しない格納部等に格納されている閾値が用いられる。例えば、画素値の差が、閾値以上である画素や画素群は、差異の箇所であると判断され、閾値未満である部分は、差異のない箇所であると判断される。上記のように、ブロック単位等で画素の画素値の比較が行なわれる場合、例えば、差異の画素として、ブロック単位の画素群が検出される。
また、文字画像比較部104は、差異のある画素や画素群の数や比率によって、1文字単位で区切られた第一ラスタ画像と第二ラスタ画像とが一致するか否か(あるいは、この第一ラスタ画像と第二ラスタ画像とにそれぞれ対応する1文字単位の第一アウトラインデータおよび第二アウトラインデータが一致するか否か)を判断してもよい。例えば、差異のある画素数が、予め決められた閾値を超えない場合に1文字単位で区切られた第一ラスタ画像と第二ラスタ画像とが一致すると判断し、超える場合に一致しないと判断してもよい。また、例えば、差異のない画素数が、予め決められた閾値を超える場合に1文字単位で区切られた第一ラスタ画像と第二ラスタ画像とが一致すると判断し、超えない場合に一致しないと判断してもよい。あるいは、例えば、上述したような一致率が閾値を超える場合に1文字単位で区切られた第一ラスタ画像と第二ラスタ画像とが一致すると判断し、超えない場合に、一致しないと判断してもよい。また、上述したような不一致率が閾値を超える場合に、1文字単位で区切られた第一ラスタ画像と第二ラスタ画像とが一致しないと判断し、超えない場合に、一致すると判断してもよい。ただし、ここでの一致率および不一致率は、上記の一致率や不一致率において、比較する1文字単位のアウトラインデータが有する制御点の数の代わりに、比較するラスタ画像の画素数を用い、一致する、あるいは一致しない制御点の数の代わりに差異のない画素数や、差異のある画素数を用いるものとする。
文字画像比較部104は、例えば、一致しないと判断された1文字単位の第一ラスタ画像および第二ラスタ画像の少なくとも一方や、この第一ラスタ画像および第二ラスタ画像の少なくとも一方に対応する1文字単位のアウトラインデータを示す情報(例えば、これらの画像やデータの座標や識別情報や配列順番を示す情報等)を、図示しない記憶媒体に蓄積する。また、文字画像比較部104は、例えば、一致すると判断された1文字単位の第一ラスタ画像および第二ラスタ画像の少なくとも一方や、この第一ラスタ画像および第二ラスタ画像の少なくとも一方に対応する1文字単位のアウトラインデータを示す情報を、図示しない記憶媒体に蓄積してもよい。ここでの座標は、例えば、第一画像や第二画像に設定される座標系における座標である。
また、文字画像比較部104は、検出した差異のある箇所を示す情報(例えば、差異が検出された画素や画素群の座標)等を、図示しない記憶媒体等に蓄積するようにしても良い。また、文字画像比較部104は、差異のない箇所を示す情報を、図示しない記憶媒体等に蓄積するようにしてもよい。ここでの座標は、例えば、第一画像や第二画像に設定される座標系における座標であってもよく、1文字単位の各ラスタ画像や、アウトラインデータに設定される座標系における座標であってもよい。
出力部105は、文字画像比較部104が検出した差異の箇所を示す情報を出力する。差異の箇所を示す情報を出力するとは、例えば、第一画像および第二画像の少なくとも一方、あるいはその一部における差異が検出された箇所を、差異が検出されなかった箇所と異なる出力態様で出力することである。例えば、差異が検出された文字に対応する1文字単位で区切られた第一アウトラインデータおよび第二アウトラインデータの少なくとも一方を、同じアウトラインデータの他の文字のアウトラインデータとは異なる出力態様で出力することである。出力態様が異なるとは、出力する1文字単位で区切られた第一アウトラインデータおよび第二アウトラインデータの少なくとも一方の背景色が異なることや、出力する1文字単位の第一アウトラインデータおよび第二アウトラインデータの少なくとも一方に、他の色の画像を合成して(例えばオーバーレイして)出力することや、出力する1文字単位の第一アウトラインデータおよび第二アウトラインデータの少なくとも一方を、予め指定されたパターンの線等で囲って出力すること等である。例えば、差異が検出された文字の第二アウトラインデータを、他とは異なる色の画像と合成して出力する。なお、出力が表示である場合、出力態様は表示態様と考えても良い。かかることは以下においても同様である。
また、差異の箇所を示す情報を出力することは、第一画像および第二画像の少なくとも一方の差異が検出された箇所を示す座標に対応する領域を、上記と同様の、他の領域とは異なる出力態様で出力することであってもよい。ここでの領域は、例えば、表示用の第一画像や第二画像における1以上の画素を含む領域である。
また、差異の箇所を示す情報を出力するということは、差異の箇所を示す情報(例えば、差異の箇所の座標等の情報)を出力することであってもよい。
ここで述べる出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。出力部105は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。出力部105は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
次に、画像検査装置1の動作の一例について図2のフローチャートを用いて説明する。
(ステップS101)アウトライン比較部103は、第一画像格納部101および第二画像格納部102から、第一画像と、第二画像とを読出す。アウトライン比較部103は、例えば、第一画像と、この第一画像に対応する第二画像とを読み出す。読み出す第一画像および第二画像は、例えば、ユーザが図示しない受付部等を介して指定した一の第一画像および第二画像である。また、読み出す第一画像および第二画像は、ユーザが図示しない受付部等を介して指定した一の第一画像(または第二画像)と、この一の第一画像または第二画像に対応付けられた一の第二画像(または第一画像)であってもよい。読み出す第一画像は、例えば、検査の基準となる第一画像であり、読み出す第二画像は、例えば、検査の対象となる第二画像である。なお、ここでは、第一画像と第二画像とは、いずれも1文字単位で区切られたアウトラインデータを有するものであるとする。
(ステップS102)アウトライン比較部103は、カウンターmの値として1を代入する。
(ステップS103)アウトライン比較部103は、第一アウトラインデータの1文字単位で区切られたアウトラインデータの中に、配列順番がm番目である文字のアウトラインデータがあるか否かを判断し、ある場合は、ステップS104に進み、ない場合、ステップS109に進む。
(ステップS104)アウトライン比較部103は、配列順番がm番目である文字に対応する第一アウトラインデータと、配列順番がm番目である文字に対応する第二アウトラインデータと、のサイズと形状とを揃える。例えば、アウトライン比較部103は、配列順番がm番目である文字に対応する第一アウトラインデータに対して、最適化計算や、ホモグラフ変換等を行なうことで、このm番目の文字に対応する第一アウトラインデータのサイズと形状を、配列順番がm番目である文字に対応する第二アウトラインデータと同じサイズおよび形状に変化させる。
(ステップS105)アウトライン比較部103は、ステップS104でサイズおよび形状を変化させたm番目である文字に対応する第一アウトラインデータと、m番目である文字に対応する第二アウトラインデータとを比較して一致しているか否かを判断する。例えば、アウトライン比較部103は、m番目の文字の第一アウトラインデータの各制御点について、一致する制御点を、m番目の文字の第二アウトラインデータが有しているか否かを判断する。例えば、アウトライン比較部103は、m番目の文字の第一アウトラインデータの各制御点について、第一アウトラインデータに設定される座標系における座標を取得し、取得した座標に一致する座標に配置された制御点を、m番目の文字の第二アウトラインデータが有しているか否かを判断する。取得した座標に一致する座標とは、取得した座標との距離が、予め決められた閾値以下である座標である。そして、一致しないと判断された制御点の数が、閾値を超えると判断された場合、このm番目の文字の第一アウトラインデータと、第二アウトラインデータとが一致しないと判断して、ステップS106に進む。また、閾値を超えないと判断された場合、このm番目の文字に対応する第一アウトラインデータと、第二アウトラインデータとが一致すると判断して、ステップS108に進む。
ここでの一致しないと判断された制御点の数は、例えば、m番目の文字の第一アウトラインデータが有する制御点のうちの、上記で検出された第二アウトラインデータが有する制御点と一致する制御点を除外した数、または、m番目の文字の第二アウトラインデータが有する制御点のうちの、上記で検出された第一アウトラインデータが有するアウトラインデータが有する制御点と一致する制御点を除外した数、またはこれらの数の和である。ここでの一致しないと判断された制御点の数は、例えば、m番目の文字の第一アウトラインデータが有する制御点の数から、一致する制御点の数を減算した値、または、m番目の文字の第二アウトラインデータが有する制御点の数から、一致する制御点の数を減算した値、または、上記の減算した値の和である。なお、上記においては、一致しない制御点数が、閾値を超えるか否かにより、m番目の文字のアウトライン同士が一致するか否かを判断したが、例えば、一致する制御点数が閾値を超えるか否かにより、m番目の文字のアウトライン同士が一致するか否かを判断してもよく、上述した一致率や不一致率を算出して、m番目の文字のアウトライン同士が一致するか否かの判断を行なっても良い。
(ステップS106)文字画像比較部104は、m番目の文字に対応する第一アウトラインデータと、第二アウトラインデータとを、それぞれ第一ラスタ画像と、第二ラスタ画像とに変換する。ラスタ画像に変換する処理は、公知であるため、ここでは詳細な説明は省略する。ここで変換するm番目の文字に対応する第一アウトラインデータは、ステップS104で変化させた第一アウトラインデータである。
(ステップS107)文字画像比較部104は、第一ラスタ画像を構成する各画素の画素値と、この各画素に対応する位置に配置された第二ラスタ画像を構成する各画素の画素値とを順次比較して、差異の箇所を検出していく。ここでは、第二ラスタ画像における差異の箇所を順次検出する。そして、差異の箇所を示す情報、例えば、差異の箇所として検出された画素の座標や、画素の領域を示す座標等を、図示しない格納部等に蓄積する。ここでの蓄積は一時記憶であっても、一時記憶でなくてもよい。
(ステップS108)アウトライン比較部103は、カウンターmの値を1インクリメントする。そして、ステップS103に戻る。
(ステップS109)出力部105は、ステップS107で検出された差異の箇所を示す情報を出力する。なお、この出力は、図示しない受付部等がユーザ等から受け付けた出力指示に応じて行なうようにしてもよい。そして、処理を終了する。
なお、ステップS103で、第一アウトラインデータの1文字単位で区切られたアウトラインデータの中に、配列順番がm番目であるアウトラインデータが含まれないと判断された場合に、第二アウトラインデータに、配列順番がm番目以降である文字に対応するアウトラインデータがあるか否かを判断し、ある場合、第二アウトラインデータのm番目以降の文字に対応するアウトラインデータや、第二画像のこのm番目以降の文字に対応するアウトラインデータが配置されている領域等を、差異の箇所として検出するようにしてもよい。そして、その後に、ステップS109に進むようにし、ステップS109においては、ここで検出された差異の箇所を示す情報を出力するようにしてよい。
また、ステップS103において、第一画像が有する第一アウトラインデータに、配列順番がm番目である文字に対応するアウトラインデータが含まれていると判断された場合に、アウトライン比較部103は、ステップS101で読み出した第二画像が有する第二アウトラインデータに、配列順番がm番目である文字に対応するアウトラインデータが含まれているか否かを判断し、含まれる場合は、ステップS104に進み、含まれない場合は、このm番目の文字以降の文字の第一アウトラインデータに対応する第二アウトラインデータが存在しないとして、第二画像のm−1番目の文字に対応するアウトラインデータが配置されていた位置以降の領域を、差異の箇所として検出するようにしてもよい。そして、この差異の箇所(例えば、m−1番目の文字を示すアウトラインデータが配置されている領域以降の領域)を示す情報を取得して、ステップS109に進み、ステップS109において、ここで検出された差異の箇所を示す情報を出力するようにしても良い。
以下、本実施の形態における画像検査装置1の具体的な動作の一例について説明する。
ユーザが、原稿のデータである一の第一画像と、この第一画像に基づいて作成された印刷用のデータである一の第二画像とを、比較して、印刷データの不備等の有無を検査するために、画像検査装置1の図示しない入力デバイス等を介して、図示しない受付部に、この第一画像と第二画像とを読み出す指示を入力したとする。
アウトライン比較部103は、図示しない受付部が受け付けた第一画像と第二画像とを読み出す指示に応じて、この指示により指定された第一画像と第二画像とをそれぞれ第一画像格納部101および第二画像格納部102からそれぞれ読み出す。
図3は、アウトライン比較部103が読み出した第一画像1000を示す図(図3(a))、第一画像1000の左上を拡大した図(図3(b))、アウトライン比較部103が読み出した第二画像を示す図(図3(c))、および第二画像2000の左上を拡大した図(図3(d))である。第一画像および第二画像が有するアウトラインデータは、いずれも1文字単位で区切られているものとする。例えば、1文字単位で、各制御点およびパスがグループ化されているものとする。ここでの制御点は、アンカーポイントおよびハンドルであるとする。なお、図3(b)および図3(d)においては、説明のため、1文字に対応するアウトラインデータを、それぞれを内包する矩形の点線で囲って示している。また、図3(a)および図3(c)では、説明のため、アウトラインの内側を黒で塗りつぶした状態を示している。図3(b)および図3(d)では、アウトラインを線で描いた状態を示している。
第一画像1000が有する第一アウトラインデータおよび第二画像2000が有する第二アウトラインデータは、それぞれ、右から左に向かって配列された1文字単位で区切られたアウトラインデータを有する複数の行が、上から下に向かって配列されたアウトラインデータであるとする。このため、第一アウトラインデータおよび第二アウトラインデータのそれぞれの配列順番が一番である文字のアウトラインデータは、最も左上に位置する1文字のアウトラインデータであり、配列順番が最後である文字のアウトラインデータは、最下行の最も右側の文字のアウトラインデータである。
アウトライン比較部103は、まず、第一画像1000において、配列順番が1番目である文字に対応するアウトラインデータが存在するか否かを判断する。ここでは、第一アウトラインデータ1001が存在すると判断されたとする。
このため、アウトライン比較部103は、第一画像1000が有する第一アウトラインデータおよび第二画像2000が有する第二アウトラインデータから、それぞれ、配列順番が1番目である文字に対応するアウトラインデータ1001およびアウトラインデータ2001を取得する。
アウトライン比較部103は、アウトラインデータ1001に対して、拡大縮小や、変形等を行なって、アウトラインデータ2001とサイズおよび形状を揃える。なお、拡大縮小や、変形を、アウトラインデータ2001に対して行なうようにしてもよく、両方に行なっても良い。
図4は、サイズおよび形状を揃えたアウトラインデータ1001を示す模式図(図4(a))、アウトラインデータ2001を示す模式図(図4(b))、サイズおよび形状を揃えたアウトラインデータ1002を示す模式図(図4(c))、およびアウトラインデータ2002を示す模式図(図4(d))である。図において、黒色四角は、制御点を示している。また、制御点の横には、各制御点の座標を示している。なお、座標におけるx1,y1等は、任意の値を示しているものとする。
アウトライン比較部103は、アウトラインデータ1001の各制御点の座標を順次取得し、取得した座標に対して、順次、アウトラインデータ2001が有する制御点の中に、一致する制御点が存在するか否かを判断する。そして、一致する制御点の数が、閾値以上であるか否かを判断する。ここでは、アウトラインデータ1001の一の制御点の座標とアウトラインデータ2001の一の制御点座標との間の距離が閾値以下となる場合、2つの制御点が一致すると判断し、閾値を超えた場合、一致しないと判断する。ここでの閾値は、例えば、アウトラインデータ1001内における最も近い制御点間の距離未満の距離であるとする。また、アウトラインデータ2001が有する制御点のうちの、一度一致するとして検出された制御点は、再度検出しないものとする。
ここでは、アウトラインデータ1001が有する全ての制御点にそれぞれ一致する制御点が、アウトラインデータ2001において検出されたとする。また、アウトラインデータ2001の全ての制御点が、アウトラインデータ1001の全ての制御点と一致したとする。このため、一致しない制御点の数が0であり、一致しない制御点の数が、予め設定された閾値以下であると判断されたとする。予め設定された閾値は、ここでは、「2」であるとする。このため、アウトライン比較部103は、アウトラインデータ1001とアウトラインデータ2001とが一致すると判断する。
このため、アウトライン比較部103は、第一画像1000において、配列順番が2番目である文字に対応するアウトラインデータが存在するか否かを判断する。ここでは、第一アウトラインデータ1002が存在すると判断されたとする。
このため、アウトライン比較部103は、第一画像1000が有する第一アウトラインデータおよび第二画像2000が有する第二アウトラインデータから、それぞれ、配列順番が2番目である文字に対応するアウトラインデータ1002およびアウトラインデータ2002を取得する。
アウトライン比較部103は、アウトラインデータ1002に対して、拡大縮小や、変形等を行なって、アウトラインデータ2002とサイズおよび形状を揃える。
アウトライン比較部103は、アウトラインデータ1002の各制御点の座標を順次取得し、取得した座標に対して、順次、アウトラインデータ2002が有する制御点の中に、一致する制御点が存在するか否かを判断する。そして、アウトライン比較部103は、一致する制御点数をカウントし、アウトラインデータ1002が有する制御点の数から、一致する制御点の数を減算する。また、アウトライン比較部103は、アウトラインデータ2002が有する制御点の数から、一致する制御点の数を減算する。そして、それぞれの減算により得られた値を加算して、一致しない制御点数を算出し、この一致しない制御点数が、閾値を超えるか否かを判断する。
ここでは、アウトラインデータ1002の制御点11に一致する制御点と、制御点12に一致する制御点と、制御点13に一致する制御点と、制御点14に一致する制御点と、の4つの制御点がアウトラインデータ2002の制御点の中に検出されず、一致しない制御点の数が「4」であったとする。
アウトライン比較部103は、この一致しない制御点の数を示す数値「4」が、閾値以上であるか否かを判断する。ここでは、上記のように閾値が「2」に設定されていたとすると、アウトライン比較部103は、アウトラインデータ1002とアウトラインデータ2002とが一致しないと判断する。
このため、文字画像比較部104は、サイズおよび形状を揃えたアウトラインデータ1002と、アウトラインデータ2002と、をそれぞれラスタ画像に変換する。変換する際には、解像度を同じ値に設定する。また、ここでは、一例として8ビットのグレースケールに変更する。
図5は、アウトラインデータ1002を変換して得られた第一ラスタ画像を示す図(図5(a))、およびアウトラインデータ2002を変換して得られた第二ラスタ画像を示す図(図5(b))であるとする。ただし、ここでのラスタ画像は、説明のためのものであり、実際に利用されるラスタ画像とは異なる場合がある。
そして、文字画像比較部104は、ラスタ画像の同じ座標に配置された画素同士の画素値である輝度値を順次比較し、輝度値の差が、閾値以上である画素を検出し、検出した画素が配置される領域の輪郭の座標を、差異の箇所を示す情報として取得する。ここでは、取得する座標は、第二画像2000内における座標とするが、アウトラインデータ2002内における座標であってもよい。そして、取得した座標を、図示しない格納部等に蓄積する。例えば、文字画像比較部104は、図5(b)の領域50を構成する画素を、差異の箇所として検出し、この領域の輪郭を示す座標等を、差異の箇所を示す情報として図示しない格納部等に蓄積する。
同様にして、文字画像比較部104は、配列順番が3番目以降である全ての文字に対応する第一アウトラインデータと第二アウトラインデータとについて、順次、アウトラインが一致するか否かを判断し、一致しない場合、ラスタ画像に変換して、差異の箇所を取得していく。
第一アウトラインデータが有する全ての1文字単位で区切られたアウトラインデータについて、上記のような処理が行なわれた後、出力部105は、差異の箇所を示す情報を出力する。ここでは、出力部105は、上記で取得して図示しない格納部に蓄積された差異の箇所を示す情報を読み出し、読み出した差異の箇所を示す情報である輪郭の座標が示す領域を、差異の箇所であることを示すグレースケール以外の色の画像に変換し第二画像を構成し、図示しないモニタ等に表示する。
図6は、出力部105がモニタ105aを用いて出力する差異の箇所を示す情報の出力例を示す図であり、具体的には、差異の箇所を示した第二画像2000の表示例を示す図である。なお、図6においては、第二画像の右上近傍を拡大表示した状態を示している。また、元の第二アウトラインデータで囲まれている領域については、予め指定された色である黒で示している。
図6に示すように、差異の箇所として検出された領域50〜52においては、予め指定された色の画像が表示されている。これにより、ユーザは、印刷用データである第二画像のアウトラインデータのどの部分に不適切な箇所があるかを容易に、確認することができる。
以上、本実施の形態によれば、2つの画像データが有する文字のアウトラインデータを適切に比較して、画像データを適切に検査することができる。
例えば、アウトラインデータ同士を、制御点同士で比較した場合、1文字単位でアウトラインデータ同士を比較して、制御点同士が異なっていることがわかったとしても、制御点により描かれるパスがどのようにずれているか等を判断することは難しく、実際に文字同士が異なっているか、あるいはどのように異なっているかを示すことは困難である。
また、例えば、アウトラインデータをラスタ画像に変換する場合、同じ形状およびサイズを有するアウトラインデータ同士であっても、アウトラインデータの配置される位置等のわずかなずれによって、得られたラスタ画像間の輪郭等の画素の画素値が異なるものとなってしまう場合がある。このため、2つの画像が有する1文字単位のアウトラインデータを、いずれもラスタ画像に変換して比較する場合、比較するアウトラインデータ同士が仮に同じ形状およびサイズを有する文字のアウトラインデータであったとしても、差異のある箇所が検出され、差異のある文字として出力される可能性があり、目視等でユーザが確認しなければならないアウトラインデータの文字数が増加してしまい、作業効率が低下することが懸念される。
しかしながら、本発明においては、アウトラインデータをアウトライン比較部103により比較を行なって、アウトラインデータが一致する文字を差異のない文字と判断してラスタ画像による比較を行なわないことにより、不適切な差異の検出を防ぐことが可能となる。また、一致しないと判断された文字のアウトラインデータについては、ラスタ画像に変換して差異の箇所を検出するため、差異の箇所を適切に示すことが可能となる。
(実施の形態2)
上記実施の形態においては、第一画像および第二画像が有するアウトラインデータが、1文字単位で区切られたアウトラインデータである場合について説明したが、本実施の形態においては、第二画像が有する第二アウトラインデータが、1文字単位で区切られていないアウトラインデータを有している場合について説明する。
図7は、本実施の形態における画像検査装置1のブロック図である。
画像検査装置2は、第一画像格納部201、第二画像格納部202、アウトライン比較部203、文字データ取得部206、文字データ比較部207、文字画像比較部204、出力部205を備える。
第一画像格納部201には、第一画像が格納される。第一画像は、第一アウトラインデータを有する画像である。本実施の形態において格納される第一画像が有する第一アウトラインデータは、任意に区切られたアウトラインデータを有している。任意に区切られたアウトラインデータは、2以上に区切られたアウトラインデータである。任意に区切られたアウトラインデータは、例えば、任意の位置において2以上に区切られたアウトラインデータである。任意に区切られたアウトラインデータは、例えば、2以上の文字のアウトラインデータであって、2以上に区切られたアウトラインデータである。任意に区切られたアウトラインデータは、例えば、2以上の文字のアウトラインデータであって、文字の配列方向における任意の位置において2以上に区切られたアウトラインデータである。
任意に区切られたアウトラインデータは、1文字単位で区切られたアウトラインデータであってもよく、2以上の文字で区切られたアウトラインデータであってもよい。区切られた部分の文字数は、同じであっても異なっていても良い。また、アウトラインデータは、必ずしも文字単位で区切られていなくてもよく、例えば、1文字のアウトラインの途中で区切られていてもよい。格納される第一画像が有する第一アウトラインデータが、1文字単位で区切られていないアウトラインデータを有する場合がある点を除けば、第一画像格納部201は、上述した第一画像格納部101と同様であり、ここでは詳細な説明は省略する。
第二画像格納部202には、第二画像が格納される。第二画像は、第二アウトラインデータを有する画像である。本実施の形態において格納される第二画像が有する第二アウトラインデータは、1文字単位で区切られていないアウトラインデータを有するアウトラインデータである。1文字単位で区切られていないアウトラインデータとは、例えば、1文字単位で取り出すことができないアウトラインデータである。1文字単位で区切られていないアウトラインデータとは、例えば、アウトラインデータを構成するパスや制御点が、いずれの文字のアウトラインデータを構成するパスであるか、識別できないアウトラインデータである。例えば、1文字単位で区切られていないアウトラインデータとは、複数の文字のアウトラインデータが、文字毎に区切られずに配置されているアウトラインデータや、文字毎に区切られずにグループ化されているアウトラインデータである。1文字単位で区切られていないアウトラインデータとは、例えば、上述したような任意に区切られたアウトラインデータであって、1文字単位で区切られたアウトラインデータを除くアウトラインデータである。1文字単位で区切られていないアウトラインデータは、例えば、一行内や一ブロック内の複数の文字のアウトラインデータであって、1文字単位で区切られていないアウトラインデータである。1文字単位で区切られていないアウトラインデータは、少なくとも複数の文字で区切られたアウトラインデータであることが好ましい。1文字単位で区切られていないアウトラインデータは、複数の文字を有する行で区切られたアウトラインデータであってもよい。格納される第二画像が有する第二アウトラインデータが、1文字単位で区切られていないアウトラインデータを有する点を除けば、第二画像格納部202は、上述した第二画像格納部102と同様であり、ここでは詳細な説明は省略する。
アウトライン比較部203は、第一画像のアウトラインデータである第一アウトラインデータと、第二画像の文字のアウトラインデータである第二アウトラインデータと、を配列順番に沿って比較する。本実施の形態のアウトライン比較部203は、特に、第二画像が、上述したような1文字単位で区切られていないアウトラインデータを有する第二アウトラインデータを有している画像である場合において、第二アウトラインデータが有する任意に区切られたアウトラインデータの区切られた一の部分と、第一アウトラインデータとを、配列順番に沿って比較して、一致しない部分を検出するものである。一致しない部分とは、例えば、一致しない比較アウトラインデータや、対象アウトラインデータの1以上の比較アウトラインデータと一致しない部分である。ただし、ここでは、部分は、対象アウトラインデータの全体も含むと考えてもよい。配列順番等については、上記実施の形態1と同様であるため、ここでは詳細な説明は省略する。
アウトライン比較部203は、第一画像のアウトラインデータである第一アウトラインデータと、第二画像の文字のアウトラインデータである第二アウトラインデータと、を配列順番に沿って比較して一致する部分を検出し、この一致する部分を除外することで、一致しない部分を検出する。好ましくは、一致する部分を全て検出し、検出した部分を全て除外することで、一致しない部分を検出する。1以上の一致する部分が検出されない場合は、全てを一致しない部分として検出する。ここでの一致する部分とは、例えば、一致する比較アウトラインデータや、対象アウトラインデータの1以上の比較アウトラインデータと一致する部分である。
ここでの除外は、例えば、一致する部分を削除することであっても良ここでの削除は、図示しないメモリ等に一旦読み出した1以上の比較アウトラインデータのうちの一致するものの削除や対象アウトラインデータからの一致する部分の削除であっても良い。また、ここでの削除は、一致すると判断された部分を、除外対象として指定する情報を、図示しない格納部等に蓄積することであっても良い。対象アウトラインデータの一致すると判断された部分とは、例えば、一致すると判断された部分や、一致すると判断された部分の制御点とパス等で接続された制御点等である。例えば、アウトライン比較部203は、一致すると判断された部分に存在する1以上の制御点を識別する情報(例えば座標や、制御点に付与された識別子等)を、除外対象を指定する情報として図示しない格納部に蓄積する。
なお、一致する部分を除外することは、例えば、一致しないと判断された部分に、一致しなかったことを示す情報等を対応付けることや、一致しないと判断された部分を、図示しない格納部に蓄積すること等も含む概念であると考えてもよい。この場合、例えば、この格納部に格納された部分(例えば、一致しないと判断された比較アウトラインや、対象アウトラインデータの一致しないと判断された部分)が、第一アウトラインデータと第二アウトラインデータとの一致しないと判断された部分に相当する。
アウトライン比較部203は、一致する部分を、例えば、以下のように検出する。アウトライン比較部203は、例えば、第一アウトラインデータが、任意に区切られたアウトラインデータを有する場合、アウトライン比較部203は、第一アウトラインデータが有する任意に区切られた一の部分と、第二アウトラインデータが有する1文字単位で区切られていないアウトラインデータとを、配列順番に沿って比較して、一致する部分を検出する。例えば、第一アウトラインデータが1文字単位で区切られたアウトラインデータを有する場合、アウトライン比較部203は、第一アウトラインデータが有する1文字単位で区切られたアウトラインデータと、第二アウトラインデータが有する1文字単位で区切られていないアウトラインデータとを、配列順番に沿って比較して、一致する部分を検出する。例えば、第一アウトラインデータが1文字単位以外で任意に区切られたアウトラインデータを有する場合、アウトライン比較部203は、第一アウトラインデータが有する1文字単位以外で任意に区切られたアウトラインデータと、第二アウトラインデータが有する1文字単位で区切られていないアウトラインデータとを、配列順番に沿って比較して、一致する部分を検出する。かかることは、任意に区切られたアウトラインデータに、1文字単位で区切られたアウトラインデータと、1文字単位以外で区切られたアウトラインデータとが混在している場合についても、同様である。
例えば、第一アウトラインデータが、任意に区切られたアウトラインデータを有する場合、(例えば、1文字単位で区切られた部分、または1文字単位以外の任意に区切られた部分)を、上記実施の形態1と同様に配列順番に沿って取得し、この取得した部分と一致するアウトラインデータを、第二アウトラインデータが有する1文字単位で区切られていないアウトラインデータから配列順番に沿って検出する。以下、第一アウトラインデータのうちの任意に区切られた各部分(例えば、1文字単位で区切られた部分、および1文字単位以外の任意に区切られた部分)を、比較アウトラインデータ、第一アウトラインデータが有する1文字単位で区切られていないアウトラインデータを、対象アウトラインデータと称す。例えば、アウトライン比較部203は、対象アウトラインデータに対して、一の比較アウトラインデータを、少なくとも一部が重なるよう配列順番に沿った方向に一定または不定の距離だけ順次移動させ、移動を行なう毎に、比較アウトラインデータの各制御点と、対象アウトラインデータの各制御点が一致するか否かを判断する。そして、一致する制御点数が閾値を超えるか否かを判断し、超えると判断された場合に、対象アウトラインデータの、比較アウトラインデータと比較された部分、あるいは比較アウトラインデータと重なる部分を、一致する部分として取得する。なお、一致する制御点数が閾値を超える場合に対象アウトラインデータの比較された部分や重なる部分を取得する代わりに、対象アウトラインデータのうちの一致しない制御点数が閾値を超えない場合や、上記実施の形態において説明した一致率と同様の一致率が、閾値を超える場合や、上記実施の形態において説明した不一致率と同様の不一致率が、閾値を超えない場合に、対象アウトラインデータの比較された部分や重なる部分を取得するようにしてもよい。ただし、ここでの一致率等は、比較に用いられる1文字単位のアウトラインデータが有する制御点数の代わりに、例えば、比較アウトラインデータが有する制御点数や、対象アウトラインデータのうちの比較アウトラインデータと重なる部分の制御点数等を用いて算出されるものとする。比較アウトラインデータと重なる部分は、例えば、対象アウトラインデータのうちの、比較アウトラインデータと重なるパスや一致する制御点等とつながっているパスも含むと考えてもよい。あるは、比較アウトラインデータの、文字の配列方向における幅で区切られた範囲のパスや制御点等と考えてもよい。
なお、比較アウトラインデータの移動は、比較アウトラインデータが有する制御点の座標の平行移動等と考えてもよい。ここでの移動は相対的な移動であってもよく、比較アウトラインデータと対象アウトラインデータとの位置関係が、比較アウトラインデータを移動させた場合と同様の関係となるように移動可能であれば、対象アウトラインデータを移動させてもよく、この場合も比較アウトラインデータを移動させたと考えてもよい。また、比較アウトラインデータは、対象アウトラインデータに対して、制御点等の座標が示す位置や領域が、重なるような位置関係となるよう移動させればよく、実際にアウトラインデータを重ねなくてもよい。なお、閾値以上の制御点が、一致していると判断することは、閾値未満の制御点が一致していないと判断することも含む概念と考えてもよい。ここでの閾値は、予め決められた数値であってもよく、比較アウトラインデータが有する全ての制御点のうちの、予め決められた比率の制御点数であってもよい。比較アウトラインデータを配列順番に沿った方向に移動させる場合の各移動は、移動によって、少なくとも比較アウトラインデータの一の制御点と、対象アウトラインデータの一の制御点との、文字の配列方向における座標が一致するような移動であって、移動距離が最短距離となるような移動であることが好ましい。ただし、ここでの移動は、この移動に限られるものではない。
アウトライン比較部203は、一の比較アウトラインデータと一致する対象アウトラインデータを取得した場合、取得した対象アウトラインデータの直後の位置から、次の配列順番の比較アウトラインデータと一致する部分を、上記と同様の処理により検出して取得するようにしてもよい。
対象アウトラインデータの最後まで、一の比較アウトラインデータを移動させた場合や、予め指定された距離以上、比較アウトラインデータを移動させた場合において、対象アウトラインデータに、上記のような一致する部分が検出できなかった場合、アウトライン比較部203は、例えば、この一の比較アウトラインデータに一致する部分が対象アウトラインデータに含まれていないと判断する。この場合、例えば、次の配列順番の比較アウトラインデータを取得して、これを直前に取得された対象アウトラインデータの直後の位置から、上記と同様に移動させて、一致する部分が検出された場合に、この一致する部分と、上記の直後との位置との間の対象アウトラインデータが配置されている位置や領域等の情報を、差異の箇所を示す情報として取得するようにしても良い。
なお、上述したように、比較アウトラインデータと、対象アウトラインデータとで一致するアウトラインデータを検出する処理を行なう場合、比較アウトラインデータと対象アウトラインデータとのサイズや形状等を揃えるようにしてもよい。なお、例えば、比較アウトラインデータと対象アウトラインデータとでは、含まれる文字数等が異なることから、文字の配列方向の長さが異なることから、文字の高さが一致するよう、比較アウトラインデータと対象アウトラインデータとの少なくとも一方を拡大縮小することが好ましい。
アウトライン比較部203は、例えば、対象アウトラインデータのうちの、一の比較アウトラインデータと一致すると判断された部分については、他の比較アウトラインデータに対する比較の対象から順次除外していく。対象アウトラインデータの除外された部分は、例えば、一の比較アウトラインデータと一致する部分である。また、アウトライン比較部203は、例えば、比較アウトラインデータのうちの、対象アウトラインデータの少なくとも一部と一致すると判断されたものについては、比較アウトラインデータから順次除外していく。除外された比較アウトラインデータは、例えば、対象アウトラインデータと一致すると判断された部分である。そして、除外されずに残った比較アウトラインデータや、対象アウトラインデータの除外されずに残った部分を、例えば、比較された第一アウトラインデータと、第二アウトラインデータとの、比較により一致しない部分と考えてよい。
文字データ取得部206は、第一アウトラインデータおよび第二アウトラインデータの、アウトライン比較部203が一致しないと判断した部分を、それぞれラスタ画像に変換し、変換したラスタ画像を用いて、第一文字データと、第二文字データとを取得する。第一アウトラインデータおよび第二アウトラインデータの、アウトライン比較部203が一致しないと判断した部分とは、一致する部分がないと判断された1以上の比較アウトラインデータ、及び対象アウトラインデータの比較アウトラインと一致する部分を除いた部分である。アウトライン比較部203が一致しないと判断した第一アウトラインデータは、例えば、アウトライン比較部203により除外されずに残った比較アウトラインデータである。アウトライン比較部203が一致しないと判断した第二アウトラインデータは、例えば、対象アウトラインデータのうちの、アウトライン比較部203により除外されずに残った部分である。第一文字データは、上記で変換した第一アウトラインデータに対応するラスタ画像に対応する文字データである。第二文字データは、上記で変換した第二アウトラインデータに対応するラスタ画像に対応する文字データである。
文字データ取得部206は、例えば、第一アウトラインデータおよび第二アウトラインデータの、アウトライン比較部203が一致しないと判断した部分を、それぞれ第一ラスタ画像および第二ラスタ画像に変換する。そして、文字データ取得部206は、変換した第一ラスタ画像に含まれる1以上の文字の画像に対応する文字データである1以上の第一文字データと、変換した第二ラスタ画像に含まれる1以上の文字の画像に対応する文字データである1以上の第二文字データを取得する。第一ラスタ画像および第二ラスタ画像が有する文字の画像は、いずれも文字のアウトラインデータをラスタ画像に変換して得られた文字の画像であることから、ここでは、第一ラスタ画像および第二ラスタ画像が有する文字の画像を、上記実施の形態1と同様に文字画像と呼ぶ。文字の画像を、文字データは、例えば、文字コードである。あるいは、文字データは文字コードに対応するハッシュ等であっても良い。文字データ取得部206は、例えば、OCR等の技術を用いて、上記の第一ラスタ画像および第二ラスタ画像から、それぞれ第一文字データと第二文字データとを取得する。第一ラスタ画像や第二ラスタ画像等の文字の画像を有するラスタ画像から、1文字単位の文字画像を検出して、検出した文字の画像に対応する文字データを取得する処理は、OCR等の技術として公知の技術であるのでここでは詳細な説明は省略する。1文字単位の文字の画像を検出することは、1文字単位の文字が配置されている文字画像の領域を検出することも含む概念である。なお、第一ラスタ画像および第二ラスタ画像の1文字単位の文字画像と、文字画像について取得された文字データとの対応関係を示す情報(例えば、文字画像の識別情報と、文字コードとを対応付けた情報等)は、例えば、図示しない記憶媒体等に蓄積しておくようにする。
文字データ比較部207は、文字データ取得部206が取得した第一文字データと、第二文字データとを配列順番に沿って比較する。文字データ比較部207は、文字データ取得部206が取得した第一文字データと第二文字データとから、同じ配列順番に沿った一文字をそれぞれ取得し、比較することで、同じ配列順番の文字データが一致するか否かを判断する。例えば、文字データ比較部207は、同じ配列順番に沿って、第一文字データと第二文字データとをそれぞれ一文字ごとに取得して比較することで、各文字データが一致するか否かを順番に判断していく。
例えば、文字データ取得部206が取得した第一文字データおよび第二文字データにおいて、上の行から下の行に向かって、左から右に向かう順に一文字ずつ文字データを読み出し、読み出した文字データ(例えば、文字コードや文字のハッシュ)を比較することで、文字データの一致、不一致を判断していく。なお、例えば、比較した文字が一致しない場合、一致する文字が現れるまで探索を行うようにしてもよい。
なお、文字データ比較部207は、さらに、文字データ取得部206が取得した第一文字データと第二文字データとを比較して、文字データについて差異の箇所を検出するようにしても良い。例えば、比較した文字が一致しない場合、一致する文字が現れるまで探索を行うことで、例えば、改行ずれや、文字の追加、削除等によって生じた文字データの差異がある箇所を検出するようにしてもよい。一致しない文字が検出された箇所は、差異のある箇所の一つである。また、比較した文字が一致しなかった場合において、第一文字データの比較に用いられた文字と、第二文字データの比較に用いられた文字の次の文字とが一致した場合には、第一画像のこの一致しなかった箇所の直前の箇所は文字が欠落しているために差異が検出された箇所となる。なお、文字データで構成される二つの文字列を比較して、一致する箇所や、差異の箇所を検出する処理は、文書校正や、文書比較等の技術等として、公知の技術であるのでここでは詳細な説明は省略する。文字データ比較部207は、検出した文字データについての差異の箇所を示す情報は、図示しない格納部等に蓄積する。文字データについての差異の箇所を示す情報は、例えば、差異として検出された文字データに対応する文字画像が配置されていた位置や領域を示す情報等である。
文字データ比較部207は、例えば、比較によって、一致すると判断された箇所を示す情報を、図示しない記憶媒体等に蓄積する。一致すると判断された箇所を示す情報は、例えば、一致すると判断された文字データに対応する文字画像の識別情報や、一致すると判断された文字画像の位置を示す情報(例えば、文字画像の領域を示す座標等の情報)等である。また、同様に、一致しないと判断された箇所、即ち差異があると判断された箇所を示す情報を、同様に、図示しない記憶媒体等に蓄積するようにしてもよい。一致しないと判断された箇所を示す情報は、一致すると判断された箇所を示す情報と同様の情報である。
文字画像比較部204は、上記実施の形態1において説明した文字画像比較部104と同様に、アウトライン比較部203が比較により一致しないと判断した部分の第一アウトラインデータと、第二アウトラインデータとを変換したラスタ画像をそれぞれ構成する画素の画素値を比較して、差異の箇所を検出するものである。本実施の形態2においては、特に、文字画像比較部204が、文字データ比較部207が比較によって一致すると判断した第一文字データと第二文字データとにそれぞれ対応する文字画像を、文字データ取得部206が取得した第一アウトラインデータに対応するラスタ画像及び第二アウトラインデータに対応するラスタ画像から取得し、それぞれの文字画像を構成する画素の画素値を比較して、差異の箇所を検出する場合について説明する。
文字画像比較部204は、例えば、文字データ比較部207が比較によって一致すると判断した第一文字データと第二文字データとにそれぞれ対応する文字画像を、文字データ取得部206が取得した第一ラスタ画像と第二ラスタ画像から取得する。そして、文字画像比較部204は、取得した文字画像間の対応する画素の画素値を比較して差異の箇所を検出する。
文字データ取得部206が取得した第一アウトラインデータに対応するラスタ画像とは、例えば、1以上の第一アウトラインデータ(例えば、比較アウトラインデータ)のうちの、アウトライン比較部209が比較の結果、第二アウトラインデータ(例えば、対象アウトラインデータ)と一致しないと判断した第一アウトラインデータを文字データ取得部206が変換した第一ラスタ画像である。また、文字データ取得部206が取得した第二アウトラインデータに対応するラスタ画像とは、例えば、第二アウトラインデータ(例えば、対象アウトラインデータ)のうちの、比較の結果、1以上の第一アウトラインデータ(例えば、比較アウトラインデータ)のうちのいずれとも一致しないと判断された部分を、文字データ取得部206が変換した第二ラスタ画像である。
文字画像比較部204が、文字画像間の差異の箇所を検出する処理や検出した箇所等を示す情報を取得する処理等は、上記実施の形態1において説明した文字画像比較部104が文字画像間の差異の箇所を検出する処理や検出した箇所等を示す情報を取得する処理等と同様であるため、ここでは詳細な説明は省略する。
また、文字画像間の比較を行なう際に、上記実施の形態1と同様に、文字画像間のサイズや形状を合わせる処理等を適宜行なうようにしても良い。
出力部205は、文字画像比較部204が検出した差異の箇所を示す情報を出力する。出力部205の構成や、出力部205による差異の箇所を示す情報を出力する処理については、上記実施の形態1における出力部105の構成や、出力部105が差異の箇所を示す情報を出力する処理等と同様であるため、ここでは詳細な説明は省略する。
なお、出力部205は、文字データ比較部207が取得した文字データの差異の箇所を示す情報を出力するようにしても良く、文字画像比較部204が検出した差異の箇所を示す情報と、この文字データの差異の箇所を示す情報との両者を出力するようにしても良い。文字データの差異の箇所を示す情報は、例えば、文字画像比較部204が検出した差異の箇所、例えば画素や画素群を示す情報の出力と同様の、異なる出力態様による出力である。例えば、出力部205は、差異の箇所として検出された文字データが取得された文字画像に対応する第二画像の領域を、他の領域とは異なる出力態様(例えば表示態様)で出力する。なお、文字データ同士を比較して、文字データの差異の箇所を示す情報を取得する処理や、文字データの差異の箇所を示す情報を出力する処理については、公知技術であるため、ここでは詳細な説明は省略する。
次に、画像検査装置2の動作の一例について図8のフローチャートを用いて説明する。なお、図8において、図2と同一符号は、画像検査装置2の対応する処理部等により行なわれる同一または相当するステップを示しており、ここでは詳細な説明は省略する。
(ステップS201)アウトライン比較部203は、ステップS101で読み出した第一画像が有する第一アウトラインデータに、配列順番がm番目である比較アウトラインデータがあるか否かを判断し、ある場合はステップS202に進み、ない場合、ステップS209に進む。
(ステップS202)アウトライン比較部203は、配列順番がm番目である比較アウトラインデータと、対象アウトラインデータと、のサイズと形状とを揃える。例えば、アウトライン比較部103は、配列順番がm番目である文字に対応する比較アウトラインデータに対して、最適化計算や、ホモグラフ変換等を行なうことで、このm番目の文字に対応する比較アウトラインデータのサイズと形状を、対象アウトラインデータと同じサイズおよび形状に変化させる。ただし、サイズまたは形状のみを揃えるようにしてもよい。なお、サイズおよび形状を揃える対象となる対象アウトラインデータは、後述するステップS204等で一致するとして取得された部分を除いた残りの部分、例えば、取得された部分の直後に位置するアウトラインデータであることが好ましい。
(ステップS203)アウトライン比較部203は、配列順番がm番目である比較アウトラインデータを、対象アウトラインデータと、少なくとも一部が重なるように配置する。例えば、アウトライン比較部203は、配列順番がm番目である比較アウトラインデータの文字の配列方向の最後尾側の部分が、対象アウトラインデータのうちの、直前に後述するステップS204等により一致するとして除外された部分の次の部分と、少なくとも一部が重なるように配置する。例えば、最後尾側の制御点と、対象アウトラインデータのうちの、直前に取得された部分の次の部分の最も先頭側の制御点との文字の配列方向における位置が同じ位置となるよう、m番目の比較アウトラインデータを配置する。配置の際に、例えば、下辺等を同一直線上に揃えるようにする。ただし、最初にこの処理を行なう場合は、対象アウトラインデータの配列順番の先頭側に、m番目の比較アウトラインデータの先頭側の少なくとも一部が重なるよう配置する。
(ステップS204)アウトライン比較部203は、配置あるいは移動させた比較アウトラインデータと、対象アウトラインデータとが一致するか否かを判断する。例えば、一致する制御点数や、一致率等が、閾値を超えるか否か等により、一致するか否かを判断する。一致する場合、ステップS205に進み、一致しない場合、ステップS206に進む。
(ステップS205)アウトライン比較部203は、m番目の比較アウトラインデータと、対象アウトラインデータのステップS204で一致すると判断された部分とを除外する。例えば、それぞれに対して除外されたことを示す情報を対応付ける。そして、ステップS206に進む。
(ステップS206)アウトライン比較部203は、カウンターmの値を1インクリメントする。そして、ステップS201に戻る。
(ステップS207)アウトライン比較部203は、一致する部分が検出されなかったか否かを判断する。例えば、対象アウトラインデータの最後まで、m番目の比較アウトラインデータを移動させた場合において、アウトラインデータが一致すると判断されなかった場合に、一致する部分が検出されなかったと判断する。一致する部分が検出されなかったと判断した場合、ステップS208に進み、一致する部分が検出されなかったと判断しなかった場合、ステップS204に戻る。
(ステップS208)アウトライン比較部203は、対象アウトラインデータと少なくとも一部が重なった状態となるよう、比較アウトラインを文字の配列方向に移動させる。ここでの移動は相対的な移動であってもよく、例えば、対象アウトラインデータを文字の配列方向と反対方向に移動させてもよい。なお、対象アウトラインデータが、区切られている場合において、移動により、一の区切られた対象アウトラインデータ上の領域を、比較アウトラインデータが超えるようになる場合、次の配列順番の区切られた対象アウトラインデータを順次読み出して、直前に読み出された区切られた部分の後ろに配列するようにすればよい。そして、ステップS204に戻る。
(ステップS209)文字データ取得部206は、一致すると判断されなかった比較アウトラインデータと、対象アウトラインデータの一致すると判断されなかった部分とを、それぞれラスタ画像に変換して、第一ラスタ画像と、第二ラスタ画像を取得する。例えば、文字データ取得部206は、除外されずに残った比較アウトラインデータと、対象アウトラインデータの除外されずに残った部分とを、それぞれラスタ画像に変換して、第一ラスタ画像と、第二ラスタ画像を取得する。
(ステップS210)文字データ取得部206は、ステップS209で取得した第一ラスタ画像と、第二ラスタ画像について、それぞれOCR等の文字認識処理を行なって、第一文字データと、第二文字データとを取得する。なお、それぞれの文字データに対応する文字画像を示す情報、例えば、文字画像が取得された文字画像を示す情報は、例えば、図示しない格納部に蓄積しておく。
(ステップS211)文字データ取得部209は、ステップS210で取得した第一文字データと、第二文字データとを配列順番に沿って比較していく。そして、一致する文字データと第二文字データとの組の情報を順次取得する。第一文字データと、第二文字データの配列順番は、例えば、これらに対応する元のアウトラインデータやラスタ画像における文字の配列順番である。なお、文字データ取得部209は、文字データの差異の箇所を示す情報を更に取得するようにしても良い。
(ステップS212)文字画像比較部204は、ステップS210で一致すると判断された第一文字データと第二文字データとにそれぞれ対応する文字画像を、ステップS210で蓄積した対応関係を示す情報等を用いて取得し、取得した文字画像同士を比較して、差異の箇所を検出する。検出した差異の箇所を示す情報を、図示しない格納部等に蓄積する。
(ステップS213)出力部205は、ステップS211で取得した差異の箇所を示す情報を出力する。なお、出力部205は、ステップS210で取得した文字データの差異の箇所を示す情報を更に出力するようにしても良い。そして処理を終了する。
以下、本実施の形態における画像検査装置2の具体的な動作について説明する。
上記実施の形態1の具体例と同様に、アウトライン比較部203が、図示しない受付部がユーザ等から受け付けた第一画像と第二画像とを読み出す指示に応じて、この指示により指定された第一画像と第二画像とをそれぞれ第一画像格納部201および第二画像格納部202からそれぞれ図示しないメモリ等に読み出したとする。
図9は、アウトライン比較部203が読み出した第一画像1100を示す図(図9(a))、アウトライン比較部103が読み出した第二画像2100を示す図(図9(b))である。第一画像1100の第一アウトラインデータは複数の文字のアウトラインデータであり、任意に区切られているものとする。ここでは、2以上の文字のアウトラインデータを有する複数の部分に区切られているものとする。例えば、アウトラインデータの区切られた部分においては、制御点およびパスがグループ化されているものとする。ここでの制御点は、アンカーポイントおよびハンドルであるとする。この区切られた各部分が、比較アウトラインデータに相当する。また、第二画像2100の第二アウトラインデータは、一行の複数の文字のアウトラインデータであり、区切られていないものとする。この第二アウトラインデータが、ここでは、対象アウトラインデータ2101であるとする。
なお、図9(a)においては、説明のため、第一アウトラインデータの区切られた部分である比較アウトラインデータを、それぞれを内包する矩形の点線で囲って示している。
アウトライン比較部203は、まず、第一画像1100において、配列順番が1番目である比較アウトラインデータが存在するか否かを判断する。ここでの配列順番が一番目である比較アウトラインデータは、例えば、文字の配列方向に沿った配列順番が、一番目の比較アウトラインデータである。ここでは、比較アウトラインデータ1101が存在すると判断されたとする。
アウトライン比較部203は、メモリに読み出された第一画像1100から比較アウトラインデータ1101を取得する。また、アウトライン比較部203は、メモリに読み出された第二画像2100から対象アウトラインデータ2101を取得する。
アウトライン比較部203は、比較アウトラインデータ1101のサイズおよび形状を対象アウトラインデータ2101のサイズおよび形状に揃える。ここでは、対象アウトラインデータ2101の一致していると判断されていない部分のうちの、最も高さの高い部分と、比較アウトラインデータ1101の最も高さの高い部分の高さとが一致するよう比較アウトラインデータ1101の高さと幅を同比率で縮小する。なお、高さだけ拡大してもよい。
図10は、アウトライン比較部203による比較アウトラインデータの移動を説明するための図であり、比較アウトラインデータ1101を対象アウトラインデータ2101に対して配置した状態を示す図(図10(a))、比較アウトラインデータ1101を対象アウトラインデータ2102に対して移動させた状態を示す図(図10(b))、比較アウトラインデータ1101を対象アウトラインデータ2102に対して移動させた結果、一致していると判断された状態を示す図(図10(c))である。図において、矢印90は、比較アウトラインデータ1101および対象アウトラインデータ2101の文字の配列方向を示している。また、点線で示した文字のアウトラインは、比較アウトラインデータ1101を示し、実線で示した文字のアウトラインは、対象アウトラインデータ2101を示している。
アウトライン比較部203は、図10(a)に示すようにサイズおよび形状を変更した比較アウトラインデータ1101の文字の配列方向の最も後ろ側に位置する制御点91aと、対象アウトラインデータ2101の最も先頭側に位置する制御点91bとの、文字の配列方向における位置が一致するよう、比較アウトラインデータを、対象アウトラインデータ2102に対して配置する。
アウトライン比較部203は、配置された比較アウトラインデータ1101の各制御点に一致する制御点を、対象アウトラインデータ2101において検出し、一致した制御点の数の、比較アウトラインデータ1101が有する制御点数に対する比率である一致率を算出する。そして、算出した一致率が、予め決められた閾値である「90%」を超えるか否かを判断する。ここでは、超えないと判断されたとする。
このため、アウトライン比較部203は、更に、比較アウトラインデータ1101を、文字の配列方向に、対象アウトラインデータ2101に対して移動させる。ここでは、比較アウトラインデータを、少しずつ文字の矢印90が示す配列方向に向かって移動させ、図10(b)に示すように、新たに比較アウトラインデータ1101の一の制御点91aと、対象アウトラインデータ2101の一の制御点92bとの、文字の配列方向における位置が一致した時点で、移動を終了する。
アウトライン比較部203は、移動させた対象アウトラインデータ2101について、上記と同様に一致率を算出し、予め決められた閾値「90%」を超えたか否かを判断する。ここでは、超えなかったと判断されたとする。
アウトライン比較部203は、上記のような移動の比較を、一致率が予め決められた閾値「90%」を超えるまで繰返し行なう。そして、ここでは、仮に、移動により比較アウトラインデータ1101の一の制御点93aと、対象アウトラインデータ2101の一の制御点93bとの、文字の配列方向における位置が新たに一致した時点で、上記のように算出した一致率が、閾値「90%」を初めて超えたとする。
アウトライン比較部203は、比較アウトラインデータ1101を除外するとともに、対象アウトラインデータ2101のうちの、比較アウトラインデータ1101において一致すると判断された部分とを、比較アウトラインデータ1101から除外する。具体的には、アウトライン比較部203は、メモリに読み出した比較アウトラインデータから、比較アウトラインデータ1101を削除するとともに、メモリに格納された対象アウトラインデータ2101から、比較アウトラインデータ1101において一致すると判断された制御点とつながっているパスと制御点とを削除する。
アウトライン比較部203は、メモリに読み出された比較アウトラインデータから、配列順番が2番目である比較アウトラインデータ1102を読み出す。また、アウトライン比較部203は、メモリに読み出された対象アウトラインデータを読み出す。ここでは、上記において、比較アウトラインデータと一致する部分が削除されているため、読み出される対象アウトラインデータは、図9に示した対象アウトラインデータから、比較アウトラインデータ1101と一致する部分が削除されたものとなる。
アウトライン比較部203は、比較アウトライン1101の場合と同様に、サイズ等をそろえ、比較アウトラインデータを1102を、対象アウトラインデータ2101と重ねて配置し、比較アウトラインデータ1102を移動させながら、一致する部分を検出するが、ここでは、対象アウトラインデータの、比較アウトラインデータ1102に対応する部分のアウトラインデータの一部が欠落し、さらに一の文字のサイズが、他の文字に比べて小さくなっており、比較アウトラインデータ2101を、対象アウトラインデータ2101の最後尾まで移動させても、一致すると判断されなかったとする。
この場合、比較アウトラインデータ1102は、メモリから削除されず、対象アウトラインデータも一致する部分がないため、メモリから削除されない。
アウトライン比較部203は、上記と同様の処理が、配列順番が3番目以降の、メモリに読み出されたすべての比較アウトラインデータに対して行う。
図11は、アウトラインの比較結果を示す図(図11(a))、ラスタ画像化した比較結果を示す図(図11(a))比較結果について文字認識を行って得られた第一文字データと第二文字データとを示す図(図11(c))、及び差異の箇所を示す図(図11(d))である。
上記と同様の処理を、配列順番が3番目以降の、メモリに読み出されたすべての比較アウトラインデータに対して行った結果、図11(a)に示すように、メモリには、比較アウトラインデータ1102と、対象アウトラインデータ2101の、いずれの比較アウトラインデータとも一致していると判断されなかった部分2102が、削除されずに残ったとする。
文字データ取得部206は、比較アウトラインデータ1102と、対象アウトラインデータの削除されずに残った部分とをそれぞれラスタ画像に変換し、図11(b)に示すように、第一ラスタ画像1102aと、第二ラスタ画像2102aとを取得する。
文字データ取得部206は、さらに、第一ラスタ画像1102aと、第二ラスタ画像2102aとに対して文字認識処理を行って、第一文字データ1102bと、第二文字データ2102bとを取得する。ここでは、第一文字データ1102bと、第二文字データ2102bのいずれも、図11(c)に示すように、「B」、「L」、「A」という文字が配列されたデータであるとする。また、文字データ取得部206は、図11(b)に示すように、各ラスタ画像において、この3つのそれぞれの文字が認識された文字画像の領域を示す情報を取得して、それぞれの文字と対応づけて、図示しない格納部等に蓄積する。例えば、第一ラスタ画像1102aの領域11a、11b、11cと、第二ラスタ画像2102aの領域21a、21b、21cとは、それぞれ、文字「B」、「L」、「A」に対応した文字画像の領域であるとする。
文字データ比較部207は、第一文字データ1102bを構成する文字と、第二文字データ2102bを構成する文字とを、配列順番に沿って、一文字ずつ読み出し、文字が一致しているか否かを判断する。ここでは、例えば、文字コードが一致しているか否かを判断する。例えば、文字データ比較部207は、第一文字データ1102bを構成する配列順番が一番目の文字「B」と、第二文字データ2102bを構成する配列順番が一番目の文字「B」とを文字コードで比較し、一致していると判断したとする。また、文字データ比較部207は、第一文字データ1102bを構成する配列順番が二番目の文字「L」と、第二文字データ2102bを構成する配列順番が二番目の文字「L」とを文字コードで比較し、一致していると判断したとする。また、配列順番が三番目の「A」と、第二文字データ2102bを構成する配列順番が三番目の文字「A」とを文字コードで比較し、一致していると判断したとする。
文字データ比較部207が第一文字データ1102bと第二文字データ2102bとの配列順番が同じである文字が、いずれも一致していると判断したため、文字画像比較部204は、上記で比較した文字にそれぞれ対応する文字画像を、第一ラスタ画像1102aと、第二ラスタ画像2102aとから読み出して、サイズや形状等をそろえる処理を行ったあと、それぞれの文字画像が有する画素の画素値を比較して、差異の箇所を検出し、差異の箇所を示す情報を取得する。ここでは、比較した画素の画素値である輝度値の差が、予め設定された閾値以上であれば、その画素を差異の箇所であると判断し、その画素を示す情報を取得する。
具体的には、文字画像比較部204は、配列順番が一番目の文字「B」に対応する文字画像11aと文字画像21aとの、対応する画素同士の画素値を比較する。ここでは、比較の結果、全ての画素が差異の箇所ではないと判断されたとする。また、文字画像比較部204は、配列順番が二番目の文字「L」に対応する文字画像11bと文字画像21bとの、対応する画素同士の画素値を比較する。ここでは、比較の結果、全ての画素が差異の箇所ではないと判断されたとする。また、文字画像比較部204は、配列順番が三番目の文字「A」に対応する文字画像11cと文字画像21cとの、対応する画素同士の画素値を比較する。ここでは、比較の結果、図11(d)に示した文字画像21cの領域80内の画素が差異の箇所であると判断されたとする。このため、文字画像比較部204は、この領域80の輪郭を示す座標の情報を取得し、図示しない格納部等に蓄積する。
そして、出力部205は、上記で取得して図示しない格納部に蓄積された差異の箇所を示す情報を読み出し、読み出した差異の箇所を示す情報である輪郭の座標が示す領域80を、差異の箇所であることを示すグレースケール以外の色の画像に変換した第二画像2100を構成して表示する。
図12は、出力部205が出力する差異の箇所を示す情報の出力例を示す図であり、具体的には、出力部205がモニタ205aを用いて表示した差異の箇所を示した第二画像2100の表示例を示す図である。なお、元の第二アウトラインデータで囲まれている領域については、ここでは予め指定された色である黒で示している。
図12に示すように、差異の箇所として検出された領域80においては、予め指定された色の画像が表示されている。これにより、ユーザは、印刷用データである第二画像のアウトラインデータのどの部分に不適切な箇所があるかを容易に、確認することができる。
以上、本実施の形態によれば、第二アウトラインデータが1文字単位で区切られていなくても、2つの画像データが有する文字のアウトラインデータを適切に比較して、画像データを適切に検査することができる。
なお、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
また、上記各実施の形態では、画像検査装置がスタンドアロンである場合について説明したが、画像検査装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、出力部や受付部は、通信回線を介して入力を受け付けたり、画面を出力したりすることになる。
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、格納部(例えば、ハードディスクやメモリ等の記録媒体)にアクセスしながらプログラムを実行してもよい。
なお、上記各実施の形態における画像検査装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、2以上の文字のアウトラインデータを有する第一画像が格納される第一画像格納部と、2以上の文字のアウトラインデータを有する第二画像が格納される第二画像格納部と、にアクセス可能なコンピュータを、第一画像のアウトラインデータである第一アウトラインデータと、第二画像の文字のアウトラインデータである第二アウトラインデータと、を配列順番に沿って比較するアウトライン比較部と、アウトライン比較部が比較により一致しないと判断した部分の第一アウトラインデータと、第二アウトラインデータとを変換したラスタ画像をそれぞれ構成する画素の画素値を比較して、差異の箇所を検出する文字画像比較部と、文字画像比較部が検出した差異の箇所を示す情報を出力する出力部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
図13は、上記プログラムを実行して、上記実施の形態による画像検査装置を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図13において、コンピュータシステム900は、CD−ROM(Compact Disk Read Only Memory)ドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図14は、コンピュータシステム900の内部構成を示す図である。図14において、コンピュータ901は、CD−ROMドライブ905に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM(Random Access Memory)913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANへの接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態による画像検査装置等の機能を実行させるプログラムは、CD−ROM921に記憶されて、CD−ROMドライブ905に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921、またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、上記実施の形態による画像検査装置の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。