説明

画像処理装置、方法、および、プログラム

【課題】種々の画像において適切に文字を扱うことができる技術を提供することを目的とする。
【解決手段】前記対象画像から、網点画像を表す網点領域と、網点領域とは異なるとともに文字列を表す文字列領域とを検出し、対象画像中の文字列領域を拡大する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、方法、および、プログラムに関するものである。
【背景技術】
【0002】
従来より、画像中の文字を扱う技術が知られている。例えば、文字要素を1文字ずつ分類して拡大する技術が知られている。
【0003】
【特許文献1】特開平11−25283号公報
【0004】
ところで、画像には、文字やイラストや写真等のように様々な種類の対象を表すものがある。ところが、従来は、このような種々の画像において適切に文字を扱うことに関しては十分な工夫がなされていないのが実情であった。
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、上記の課題の少なくとも一部を解決するためになされたものであり、種々の画像において適切に文字を扱うことができる技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【0007】
[適用例1]対象画像を表す対象画像データを処理する画像処理装置であって、前記対象画像から、網点画像を表す網点領域と、前記網点領域とは異なるとともに文字列を表す文字列領域とを検出する領域分類部と、前記対象画像中の前記文字列領域を拡大する画像処理部と、を備える、画像処理装置。
【0008】
この構成によれば、網点領域と、網点領域とは異なる文字列領域とが検出され、文字列領域が拡大されるので、種々の画像において適切に文字を扱うことができる。
【0009】
[適用例2]適用例1に記載の画像処理装置であって、前記領域分類部は、前記網点画像が文字を含むか否かに拘わらず、前記網点画像を表す領域を前記網点領域として検出する、画像処理装置。
【0010】
この構成によれば、網点画像が文字を含むか否かに拘わらず、文字列拡大の影響によって網点領域が過剰に変形することを抑制できる。
【0011】
[適用例3]適用例1または適用例2に記載の画像処理装置であって、前記領域分類部は、余白領域を検出し、前記画像処理部は、前記文字列領域を、前記文字列領域に隣接する前記余白領域内で拡大する、画像処理装置。
【0012】
この構成によれば、文字列領域が、文字列領域に隣接する余白領域内で拡大されるので、画像のレイアウトが過剰に崩れることを抑制できる。
【0013】
[適用例4]適用例1ないし適用例3のいずれかに記載の画像処理装置であって、前記領域分類部は、前記対象画像データに含まれる複数の画素の中から文字を表す文字画素を検出し、離れて配置された文字画素間を連結することによって得られる連結領域を含む領域を前記文字列領域として検出する、画像処理装置。
【0014】
この構成によれば、文字画素の連結によって文字列領域が検出されるので、文字列領域を検出する処理の負荷を軽減できる。
【0015】
[適用例5]適用例4に記載の画像処理装置であって、前記領域分類部は、所定の方向に沿って前記文字画素を連結する異方性連結によって前記連結領域を得る、画像処理装置。
【0016】
この構成によれば、文字列領域を適切に検出することができる。
【0017】
[適用例6]適用例5に記載の画像処理装置であって、前記領域分類部は、前記所定の方向が互いに異なるN種類(Nは2以上の整数)の異方性連結のそれぞれの結果に関して、前記文字画素が連結した領域の前記所定方向に沿った長さの代表値を決定し、前記代表値が最も長い前記異方性連結に従って前記文字列領域を検出する、画像処理装置。
【0018】
この構成によれば、種々の対象画像に関して、適切に文字列領域を検出することができる。
【0019】
[適用例7]対象画像を表す対象画像データを処理する画像処理方法であって、前記対象画像から、網点画像を表す網点領域と、前記網点領域とは異なるとともに文字列を表す文字列領域とを検出する工程と、前記対象画像中の前記文字列領域を拡大する工程と、を有する画像処理方法。
【0020】
[適用例8]対象画像を表す対象画像データを処理するためのコンピュータプログラムであって、前記対象画像から、網点画像を表す網点領域と、前記網点領域とは異なるとともに文字列を表す文字列領域とを検出する機能と、前記対象画像中の前記文字列領域を拡大する機能と、をコンピュータに実現させるコンピュータプログラム。
【0021】
[適用例9]適用例2に記載の画像処理装置であって、前記画像処理部は、前記網点領域を拡大せずに前記文字列領域を拡大する、画像処理装置。
【0022】
この構成によれば、網点領域が拡大されないので、対象画像のレイアウトが過剰に崩れることを抑制できる。
【0023】
なお、本発明は、種々の形態で実現することが可能であり、例えば、画像処理方法および装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【発明を実施するための最良の形態】
【0024】
次に、この発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.第1実施例:
B.文字列領域拡大の変形例:
C.文字列検出の変形例:
D.画素分類処理の実施例:
E.変形例:
【0025】
A.第1実施例:
本発明の実施例について説明する。
A−1.プリンタ10の概略構成:
図1は、本願の画像処理装置の実施例としてのプリンタ10の概略構成を示す説明図である。プリンタ10は、印刷機能の他に、スキャナ機能、コピー機能を備えた、いわゆる複合機プリンタである。プリンタ10は、制御ユニット20、キャリッジ移動機構60、キャリッジ70、紙送り機構80、スキャナ91、操作パネル96を備えている。
【0026】
キャリッジ移動機構60は、キャリッジモータ62、駆動ベルト64、摺動軸66を備えており、摺動軸66に移動自在に保持されたキャリッジ70を、主走査方向に駆動させる。キャリッジ70は、インクヘッド71とインクカートリッジ72とを備えており、インクカートリッジ72からインクヘッド71に供給されたインクを、印刷用紙Pに吐出する。紙送り機構80は、紙送りローラ82、紙送りモータ84、プラテン86を備えており、紙送りモータ84が紙送りローラ82を回転させることで、プラテン86の上面に沿って印刷用紙Pを搬送する。スキャナ91は、光学的に画像を読み込むイメージスキャナであり、本実施例においては、CCD(Charge Coupled Devices)方式を用いたが、CIS(Contact Image Sensor)方式など種々の方式を用いることができる。
【0027】
上述した各機構は、制御ユニット20により制御される。制御ユニット20は、CPU30、RAM40、ROM50を備えるマイクロコンピュータとして構成されており、ROM50に記憶されたプログラムをRAM40に展開して実行することで、上述の各機構の制御のほか、図1に示す機能部として機能する。これらの機能部の詳細については、後述する。
【0028】
以上のような構成を有するプリンタ10は、スキャナ91によって読み取った画像を、印刷用紙Pに印刷することで、コピー機として機能する。なお、上述の印刷機構は、インクジェット式に限らず、レーザ式、熱転写式など、種々の印刷方式を用いることができる。
【0029】
A−2.画像複製処理:
プリンタ10を用いて所定の画像のコピーを行う画像複製処理の流れを示すフローチャートを図2に示す。また、図3は、この画像複製処理を示す概略図である。この処理は、ユーザが、コピーの対象とする画像(例えば、印刷物等の原稿)をプリンタ10にセットし、操作パネル96を用いてコピーの指示操作を行うことにより開始される。この処理が開始されると、CPU30は、画像入力処理として、スキャナ91を用いて、結像された光学像を電気信号に変換する(ステップS100)。そして、画像変換処理として、得られたアナログ信号をAD変換回路でデジタル信号に変換し、更に、画像全体が一様な明るさとなるようにシェーディング補正を行う(ステップS110)。
【0030】
次のステップS122では、CPU30は、得られた画像データ(「対象画像データSI」とも呼ぶ)に対して、領域の分類を行う(ステップS122)。この処理では、対象画像データSIによって表される対象画像SIIの全体が、網点部分を表す網点領域と、文字列を表す文字列領域と、余白を表す余白領域とに分類される。図3の分類画像DAIは、対象画像SIIに対する領域分類処理の結果を表している。対象画像SIIは、水平方向(x方向)に延びる5つの文字列CS1〜CS5と、絵部分PBとを表している。絵部分PBは、文字CSPと写真とを重ね合わせた画像を表している。コピー対象である元画像(例えば、原稿)では、この絵部分PBは網点によって表されていることとする。
【0031】
分類画像DAIが示すように、対象画像SIIは、5つの文字列領域CA1〜CA5と、1つの網点領域DAと、1つの余白領域BAとに分類されている。5つの文字列領域CA1〜CA5は、5つの文字列CS1〜CS5を、それぞれ表している。網点領域DAは、網点で表された絵部分PBを表している。余白領域BAは、残りの部分を表している。なお、領域分類処理の詳細については、後述する。
【0032】
次のステップS132では、CPU30は、文字列領域を拡大した拡大画像を生成する。この処理では、文字列領域が拡大される。図3の拡大領域画像EAIでは、分類画像DAI中の5つの文字列領域CA1〜CA5が、5つの拡大文字列領域ECA1〜ECA5に、それぞれ置換されている。そして、対象画像SII中の文字列領域が表す画像が、拡大文字列領域と一致するように拡大される。図3の拡大画像PIでは、対象画像データSI中の5つの文字列CS1〜CS5が、5つの拡大文字列ECS1〜ECS5に、それぞれ置換されている。このような拡大画像PIは、対象画像SIIと、拡大された文字列画像とを合成することによって生成される。拡大画像PIを生成する処理(「画像合成処理」とも呼ぶ)の詳細については、後述する。
【0033】
画像合成処理を行うと、CPU30は、出力時に色合い等が再現できるように、ガンマ補正や、入力画像と出力画像の色情報の誤差を小さくする色補正などの全体補正処理を行い(ステップS140)、印刷制御部35の処理として、キャリッジ移動機構60、キャリッジ70、紙送り機構80等を駆動させて、画像を印刷用紙P上に出力する(ステップS150)。このようにして、画像の複製処理は完了する。
【0034】
領域分類処理:
図4は、図2のステップS122に示す領域分類処理の手順を示すフローチャートである。最初のステップS700では、CPU30は、画像入力部31の処理として、上記ステップS110で得られた画像データ(ここでは、RGBデータ)をRAM40に読み込む。そして、CPU30は、続く各ステップS710〜S750の処理を、領域分類部33の処理として実行する。
【0035】
ステップS710では、CPU30は、領域分類部33の処理として、画素毎の判定処理(属性判定処理とも呼ぶ)を行う。ここで、画素の属性は、画素が表す画像領域の種類に関する属性を表している。本実施例では、この処理によって、対象画像SIIを表す複数の画素は、文字を表す文字画素と、網点部分を表す網点画素と、余白を表す余白画素に分類される。なお、後述するように、文字が網点によって表されている場合には、その文字を表す画素は網点画素に分類される。このような画素の分類方法としては、任意の方法を採用可能である。画素分類の実施例の詳細については、後述する。
【0036】
次のステップS720、S730では、CPU30は、領域分類部33の文字列検出部336の処理として、文字列領域を検出する。まず、CPU30は、図形の拡大(expansion)と縮退(shrinking)とによって文字画素を連結する(S720)。
【0037】
図5は、図形の拡大と縮退との概略図である。図中には、対象画像データSIが示されている。対象画像データSIは、水平方向(x方向)と垂直方向(y方向)に沿ってマトリクス状に配置された複数の画素pixのそれぞれの階調値を表している。以下、左上の頂点(隅)の画素(「基準画素pix_s」と呼ぶ)を基準に、+x方向と+y方向とのそれぞれの方向に画素pixが並んでいることとする。また、図中では、複数の画素pixが、文字画素と非文字画素(文字画素ではない画素)とに分けて表されている。
【0038】
図5の下部には、図形の拡大と縮退の概要が示されている。図形の拡大は、或る注目画素pix_iが「文字画素」である場合に、その注目画素pix_iの周囲の画素の属性を文字画素に設定する処理である。これにより、文字(文字画素の領域)が拡大される。以下、属性が「文字画素」に設定される画素領域を「文字拡大領域」と呼ぶ。図5の例では、注目画素pix_iを中心とする所定の矩形領域が、文字拡大領域として利用される。この矩形領域のx方向の長さは9画素であり、y方向の長さは3画素である。その結果、+x方向と−x方向とのそれぞれの方向に4画素ずつ文字画素の領域が広がり、さらに、+y方向と−y方向とのそれぞれの方向に1画素ずつ文字画素の領域が広がる。このように、図5に示す実施例では、文字がx方向に沿って広く拡大される。なお、図形の拡大では、対象画像データSIの全ての画素に対して上述の矩形領域が適用される。
【0039】
一方、図形の縮退は、注目画素pix_iが「非文字画素」である場合に、その注目画素pix_iの周囲の画素の属性を「非文字画素」に設定する処理である。これにより、文字(文字画素の領域)が縮退する。以下、属性が「非文字画素」に設定される画素領域を「文字縮退領域」と呼ぶ。図5の例では、文字拡大領域と同じ9×3画素の矩形領域が、文字縮退領域として利用される。その結果、+x方向と−x方向とのそれぞれの方向に4画素ずつ文字画素の領域が縮退し、さらに、+y方向と−y方向とのそれぞれの方向に1画素ずつ文字画素の領域が縮退する。このように、図5に示す実施例では、文字がx方向に沿って強く縮退する。なお、図形の縮退では、対象画像データSIの全ての画素に対して上述の矩形領域が適用される。
【0040】
図6(A)〜6(C)、図7(A)〜(C)は、図形の拡大と縮退とによる文字画素の連結を示す概略図である。各図は、x方向とy方向とに沿って配置された複数の画素を示している。図中の1つの黒ドットは、1つの文字画素を表している。黒ドットの無い部分は「非文字画素」を表している。
【0041】
図6(A)は、図4のステップS710の結果の一例を示している。この例は、x方向に延びる2本の文字列CSa、CSbを表している。本実施例では、CPU30は、図形の拡大を2回繰り返し、続けて、図形の縮退を2回繰り返す。これにより、各画素の属性は、図6(A)、6(B)、6(C)、7(A)、7(B)の順番に変化する。
【0042】
最初の図形拡大によって、各画素の属性は、図6(A)から図6(B)に変化する。次の図形拡大によって、各画素の属性は、図6(B)から図6(C)に変化する。図形拡大によって文字画素の領域が広がるので、各文字を表す文字画素は、新たに設定された文字画素によって連結される。特に、本実施例では、x方向に沿って広く文字画素の領域が広がる(図5)。その結果、x方向に延びる2本の文字列CSa、CSbのそれぞれにおいて、x方向に沿って文字が連結される。
【0043】
次に、図形縮退によって、各画素の属性は、図6(C)から図7(A)に変化する。次の図形縮退によって、各画素の属性は、図7(A)から図7(B)に変化する。これらの図形縮退によって、過剰に広がった文字画素の領域が縮退する。ただし、文字列中の文字間は文字画素によって埋められているので、文字間の文字画素による連結は維持される。これらの結果、CPU30は、複数の文字の文字画素がx方向に沿って連結した領域を形成する。
【0044】
図4の次のステップS730では、CPU30は、文字列領域を検出する。図7(B)、7(C)は、検出された文字列領域CAa、CAbを示している。本実施例では、文字画素が連結した領域を包含する矩形領域を、文字列領域として検出する。そして、1つの文字列領域は、1つの連結領域を包含する最小の矩形領域である。この矩形領域の4つの頂点は、1つの連結領域におけるx方向の最大画素位置と最小画素位置とy方向の最大画素位置と最小画素位置とを組み合わせて得られる4つの画素位置に設定される。このような文字列領域は、連結領域毎に検出される。図7(B)の例では、2つの文字列領域CAa、CAbが検出されている。以上のように、CPU30は、複数の文字が連結した連続な文字列領域を検出する。
【0045】
図7(C)は、図6(A)と同じ画像に、2つの文字列領域CAa、CAbを重ね合わせた様子を示している。図示するように、第1文字列領域CAaは、第1文字列CSaを表す文字画素を包含する最小の矩形領域である。また、第2文字列領域CAbは、第2文字列CSbを表す文字画素を包含する最小の矩形領域である。本実施例では、文字拡大領域と文字縮退領域とが同じであり、さらに、図形拡大の回数と図形縮退の回数も同じである。従って、過不足の無い文字列領域の検出が可能である。
【0046】
なお、図5に示す実施例では、x方向に沿って文字(文字画素)を広く連結する処理(拡大−縮退)を採用したが、他の方向(例えば、y方向)に沿って文字を広く連結する処理を採用してもよい。以下、このような方向性を有する画素連結を、異方性連結と呼ぶ。
【0047】
図4の次のステップS740では、CPU30は、領域分類部33の余白検出部338の処理として、余白領域を検出する。具体的には、CPU30は、ステップS710で特定された余白画素から、ステップS730で検出された文字列領域に含まれる画素(文字画素)を除いた残りの画素によって表される領域を、余白領域として検出する。検出された余白領域からは、文字列領域の周囲の余白のサイズ(画素数)と、文字列領域間の距離(行間)とを特定可能である。
【0048】
次のステップS750では、CPU30は、領域分類部33の処理として、領域分類の結果をRAM40に書き込む。本実施例では、対象画像データSIの各画素が、文字列領域と網点領域と余白領域とのいずれに属するかを表すデータが、RAM40に書き込まれる。そして、CPU30は、領域分類処理を終了し、処理を図2の画像複製処理に戻す。なお、CPU30(領域分類部33)は、ステップS710で検出された網点画素によって表される領域を、そのまま網点領域として採用する。
【0049】
画像合成処理:
図8は、図2のステップS132に示す画像合成処理の手順を示すフローチャートである。CPU30は、画像合成部36の処理として、図8の各ステップS800〜S830を実行する。CPU30は、最初のステップS800でRAM40に格納された対象画像データSIを参照し、次のステップS810でRAM40に格納された領域分類の結果を参照する。
【0050】
次のステップS820では、CPU30は、網点領域を拡大せずに、文字列領域を拡大する。図9は、文字列領域拡大の概略図である。図中には、図3に示した画像と同じ分類画像DAIと拡大領域画像EAIとが示されている。CPU30は、検出された1以上の文字列領域のそれぞれを、後述する条件を満たす範囲内で最大限に拡大する。その条件は、以下の通りである。CPU30は、文字列領域を、その文字列領域に接する余白領域内で拡大する。ここで、文字列領域の重心位置は固定される。また、文字列領域の縦横比率は維持されない、すなわち、x方向の拡大率と、y方向の拡大率とは、互いに独立に調整される。複数の文字列領域が余白領域を挟んで並ぶ場合には、各文字列領域が重ならないように、各文字列領域を拡大する。この際、x方向の拡大率とy方向の拡大率は、各文字列領域に共通である。これらの結果、分類画像DAI中の5つの文字列領域CA1〜CA5は同じ拡大率で拡大されて、5つの拡大文字列領域ECA1〜ECA5が、それぞれ生成される。
【0051】
また、本実施例では、CPU30は、拡大文字列領域の周囲に余白BCを残すこととしている。こうすれば、拡大された文字列が他の画像部分(例えば、他の文字列)と接触することが防止されるので、文字列を読みやすくすることができる。このような余白BCのサイズとしては、種々のサイズを採用可能である(この場合、余白BCのサイズは、拡大文字列領域から余白領域以外の他の画像領域(例えば、他の拡張文字列領域)までの最短距離に相当する)。例えば、CPU30は、所定サイズ(例えば、所定画素数や印刷結果における所定長さ)を採用可能である。この代わりに、CPU30は、対象画像データSIに従って余白BCのサイズを決定してもよい。例えば、拡大文字列領域の幅WC(長手方向と垂直な方向の長さ)が大きいほど、その拡大文字列領域の周囲の余白BCのサイズを大きくしてもよい。また、CPU30は、ユーザの指示に従って余白BCのサイズを決定してもよい。なお、CPU30は、拡大文字列領域の周囲に余白BCを残すこと無く、文字列領域を最大限に拡大してもよい。
【0052】
また、本実施例では、CPU30は、拡大領域画像EAI(対象画像SII)の縁EDに余白BEを残すこととしている。こうすれば、拡大された文字列が縁EDと接触することが防止されるので、文字列を読みやすくすることができる。このような余白BEのサイズとしては、種々のサイズを採用可能である(この場合、余白BEのサイズは、拡大領域画像EAI(対象画像SII)の縁EDから拡大文字列領域までの最短距離に相当する)。例えば、CPU30は、所定サイズ(例えば、所定画素数や印刷結果における所定長さ)を採用可能である。この代わりに、CPU30は、印刷設定に従って余白BEのサイズを決定してもよい。例えば、プリンタの中には、印刷用紙Pの四辺に余白を残さないフチなし印刷が可能なものがある。フチなし印刷は、印刷用のデータをわずかに拡大印刷してフチなしにて印刷するものである。ここで、拡大文字列領域が印刷用紙Pの外にはみ出ないように、余白BEのサイズを決定してもよい。ここで、余白BEのサイズが、印刷用紙Pの大きさに従った可変値であってもよい。なお、CPU30は、縁EDに余白BEを残すこと無く、文字列領域を最大限に拡大してもよい。
【0053】
次にCPU30は、文字列領域内の画像を、拡大文字列領域に合わせて拡大する。拡大後の画像のサイズと形状と位置とは、その文字列領域に対応付けられた拡大文字列領域と同じである。画像拡大方法としては、種々の方法を採用可能である。例えば、アフィン変換(線形変換)を採用してもよい。図3に示す実施例では、CPU30は、文字列CS1を表す画像を拡大することによって、拡大文字列ECS1を表す画像を生成する。他の文字列CS2〜CS5についても同様である。そして、CPU30は、生成した画像と対象画像SIIとを合成することによって、拡大画像PIを生成する(拡大画像PIを表す画像データを生成する)。なお、本実施例では、CPU30は、網点領域を拡大しない。その結果、網点によって表されている文字CSPは、拡大されない。
【0054】
図8の次のステップS830では、CPU30は、拡大画像PIを表す画像データをRAM40に格納する。そして、CPU30は、画像合成処理を終了し、処理を図2の画像複製処理に戻す。図2のステップS140、S150では、この拡大画像PIを表す画像データに従って、処理が実行される。
【0055】
以上のように、本実施例では、対象画像SII中の文字列が拡大されるので、画像全体を大きくせずに、文字列を読みやすくすることができる。また、文字列(複数の文字)を表す連続する文字列領域が拡大されるので、拡大後の文字列内で文字が崩れることを抑制できる。また、文字列を表す画像を拡大することによって文字を表す線も太くなるので、文字の可読性を高めることができる。また、対象画像SII中の余白内で文字列領域を拡大するので、種々の対象画像SIIに関して、拡大画像PIのレイアウトが過剰に崩れることを抑制できる。その結果、拡大画像PIを見たユーザが、文字列を誤読することを抑制できる。さらに、網点領域が拡大対象から外れているので、網点によって表される画像(例えば、写真やイラスト)の拡大に起因して拡大画像PIのレイアウトが過剰に崩れることを抑制できる。そして、文字列を拡大できなくなることを抑制できる。また、本実施例では、網点画像が文字を含むか否かに拘わらずに、網点画像を表す領域が網点領域として検出される。従って、網点によって表される画像部分に文字が含まれる場合であっても、その文字部分が拡大対象として利用されることが抑制される。その結果、その網点によって表される画像部分が不自然に変形されることを抑制できる。
【0056】
また、図5〜図7に示すように、離れて配置された文字画素間を連結することによって得られる連結領域を含む領域が文字列領域として利用されるので、1つの文字列領域は、対象画像データSI中の1本の文字列の全体を含むことが可能である。そして、1つの文字列領域は分断されずに拡大されるので、文字列の途中で書式が変わることを抑制できる(例えば、文字列の途中で改行されることを抑制できる)。その結果、拡大画像PIを見たユーザが、文字列を誤読することを抑制できる。また、文字を1文字ずつ認識するための解析を省略できるので、処理の負担を軽減できる。
【0057】
また、図5〜図7に示すように、異方性連結によって文字画素が連結されるので、文字列領域を適切に検出することができる。また、行間を表す部分が文字を表す領域として認識されることを抑制できる。その結果、文字列領域の拡大に行間を利用することができるので、文字を大きくすることが容易である。
【0058】
なお、本実施例では、画像合成部36(図1)が特許請求の範囲における「画像処理部」に相当する。
【0059】
B.文字列領域拡大の変形例:
図10は、文字領域拡大の別の実施例の概略図である。図9に示す実施例との差違は、文字領域の重心位置が可変である点だけである。図10には、分類画像DAIaと拡大領域画像EAIaとが示されている。分類画像DAIaは、図9の分類画像DAIから第4文字列領域CA4と第5文字列領域CA5とを削除したものと同じである。従って、網点領域DAと文字列領域との間の余白領域BAは、図9の分類画像DAIと比べて広い。
【0060】
CPU30(図1)は、3つの文字列領域CA1〜CA3を拡大することによって、3つの拡大文字列領域ECA1a〜ECA3aを、それぞれ生成する。この際、CPU30は、文字列領域と網点領域DAとの間の余白領域BAを最大限に利用する。具体的には、CPU30は、各拡大文字列領域ECA1a〜ECA3aの重心位置を、各文字列領域CA1〜CA3の重心位置よりも網点領域DA側に移動させる。その結果、図10の拡大領域画像EAIaに示すように、各拡大文字列領域ECA1a〜ECA3aを大きくすることができる。
【0061】
なお、文字列領域拡大としては、他の種々の態様を採用可能である。例えば、文字列領域の縦横比率を維持してもよい。こうすれば、文字が過剰に変形することを抑制できる。また、文字列領域の拡大率の上限を予め決めても良い。こうすれば、文字列が過剰に大きくなることを抑制できる。また、複数の文字列領域が余白領域を挟んで並ぶ場合に、拡大率が文字列領域毎に異なっていても良い。また、拡大文字列領域が、余白領域以外の他の領域(例えば、網点領域)内に広がってもよい。
【0062】
C.文字列検出の変形例:
図11は、文字列検出の別の実施例を示す概略図である。図11の実施例は、図4のステップS720の代わりに実行される処理を示している。図5に示す実施例との差違は、所定方向に沿って文字画素を連結する代わりに、x方向に沿って文字画素を広く連結した結果とy方向に沿って文字画素を広く連結した結果との一方を、これらの結果の比較によって選択する点だけである。この選択によって、対象画像データSIにおける文字列の延びる方向に適した文字列検出が可能となる。
【0063】
最初のステップS900では、CPU30は、対象画像データSIの文字画素に対して、x方向に沿って文字(文字画素)を広く連結する拡大−縮退を実行する(以下、「x方向連結」と呼ぶ)。このx方向連結は、図5〜図7で説明した処理と同じである。そして、CPU30は、このx方向連結の結果を表すx方向連結画像CI_xを生成する。このx方向連結画像CI_xは、図7(B)の画像と同様に、文字(文字画素)が連結した連結領域を表している。このx方向連結画像CI_x中の最長連結領域CAx_maxは、x方向に沿った長さが最大である連結領域を示している(この長さを「x方向最大長Lx_max」と呼ぶ)。
【0064】
次のステップS910では、CPU30は、対象画像データSIの文字画素に対して、y方向に沿って文字(文字画素)を広く連結する拡大−縮退を実行する(以下、「y方向連結」と呼ぶ)。このy方向連結では、文字拡大領域と文字縮退領域とのそれぞれとして、9×3画素の矩形領域の代わりに、3(x方向)×9(y方向)画素の矩形領域が利用される。これにより、y方向に沿って文字(文字画素)が広く連結される。そして、CPU30は、このy方向連結の結果を表すy方向連結画像CI_yを生成する。このy方向連結画像CI_yも、文字(文字画素)が連結した連結領域を表している。このy方向連結画像CI_y中の最長連結領域CAy_maxは、y方向に沿った長さが最大である連結領域を示している(この長さを「y方向最大長Ly_max」と呼ぶ)。
【0065】
次のステップS920では、CPU30は、x方向最大長Lx_maxとy方向最大長Ly_maxとを比較する。x方向最大長Lx_maxがy方向最大長Ly_maxより大きい場合には、CPU30は、x方向連結画像CI_xを選択する。そして、図4の次のステップS730では、CPU30は、選択したx方向連結画像CI_xに従って文字列領域を検出する。逆に、x方向最大長Lx_maxがy方向最大長Ly_max以下である場合には、CPU30は、y方向連結画像CI_yを選択する。そして、図4の次のステップS730では、CPU30は、選択したy方向連結画像CI_yに従って文字列領域を検出する。
【0066】
このように、x方向連結とy方向連結との内の最大長の長い方を選択する理由は、以下の通りである。すなわち、対象画像データSIにおける文字列の延びる方向は、種々の方向を取り得る。例えば、文字列がx方向に延びる場合や、文字列がy方向に延びる場合がある。いずれの場合も、通常は、行間は文字間よりも広い。従って、文字列がx方向に延びる対象画像に対しては、x方向連結の方がy方向連結よりも長い連結領域が得られる。図11に示すx方向連結画像CI_xとy方向連結画像CI_yとは、このような場合を示している。逆に、文字列がy方向に延びる対象画像に対しては、y方向連結の方がx方向連結よりも長い連結領域が得られる。以上により、x方向連結とy方向連結との内の最大長の長い方を選択することによって、対象画像データSIにおける文字列の延びる方向に適した文字列検出が可能となる。
【0067】
なお、比較対象は最大長に限らず、文字画素の連結結果に含まれる1以上の連結領域のそれぞれの長さから得られる代表値を採用可能である。代表値としては、各連結領域の長さの関数で表される種々の値を採用可能である(例えば、平均値、最大値、中央値(メディアン)、最小値)。いずれの場合も、特定の方向に沿って文字画素を広く連結した結果(異方性連結の結果)を評価するためには、連結領域のその方向に沿った長さの代表値を利用すればよい。そして、その代表値が大きいほど、その異方性連結が対象画像データSIに適しているということができる。
【0068】
また、異方性連結の方向の選択肢としては、x方向と、x方向と垂直なy方向との2方向に限らず、種々の方向を採用可能である。例えば、x方向と、y方向と、x方向と45度の角度をなす方向との3方向を採用してもよい。一般には、文字列検出部336(CPU30)は、方向性が互いに異なるN種類(Nは2以上の整数)の異方性連結を利用可能である。ここで、文字列検出部336(CPU30)は、長さの代表値が最も長い異方性連結に従って文字列領域を検出すればよい。この代わりに、文字列検出部336(CPU30)は、ユーザの指示に従って、N種類の異方性連結の中から利用する異方性連結を選択してもよい。
【0069】
また、特定の方向に沿って文字画素を広く連結させる処理(異方性連結処理)としては、図5に示す処理に限らず、種々の処理を採用可能である。例えば、文字拡大領域と文字縮退領域とのそれぞれとしては、9×3画素の矩形領域に限らず、種々の異方性領域(例えば、10×3の矩形領域や、楕円領域)を採用可能である。また、文字縮退領域が文字拡大領域と異なっていてもよい。また、図形拡大と図形縮退とのそれぞれの回数も任意に設定可能であり、図形縮退の回数が図形拡大の回数と異なっていても良い。また、図形縮退を省略してもよい。一般的には、異方性の連結処理としては、1画素以上離れた2つの文字画素間が連結され得る距離(「連結可能距離」と呼ぶ)に関して、特定方向に沿った連結可能距離が、特定方向と垂直な方向に沿った連結可能距離よりも長いような任意の処理を採用可能である。
【0070】
また、文字画素を連結する処理としては、このような方向性を有する処理に限らず、他の処理を採用可能である。例えば、図5に示す処理において、文字拡大領域と文字縮退領域とが等方性領域(略円)であってもよく、また、正方形であってもよい。
【0071】
D.画素分類処理の実施例:
D−1.画素分類処理の第1実施例:
図4のステップS710に示した画素分類処理(画素毎の領域分類処理)の流れを示すフローチャートを図12に示す。この処理が開始されると、CPU30は、まず、RAM40に格納された対象画像データSIを参照する(S200)。
【0072】
次のステップS205では、CPU30は、積分データ生成部32の処理として、対象画像データを解析することによって第1積分データID1(図1)と第2積分データID2(図1)とを生成する。画像データの読み込みをバンド単位で行う場合には、バンド単位で積分データID1、ID2を生成してもよい。CPU30は、生成した積分データID1、ID2をRAM40に格納する。積分データID1、ID2の詳細については、「D−2.積分データを利用した計算」で後述する。
【0073】
次のステップS210では、CPU30は、領域分類部33に含まれる特徴量算出部332の処理として、注目画素を含む部分領域における輝度値の統計的分散(以下、単に「分散」と呼ぶ)を算出する。図13は、対象画像データSIと注目画素pix_kを示す概略図である。なお、画素が表す輝度値は、画素が表すRGBの階調値から公知の手法により求めることができる。
【0074】
図13中には、注目画素pix_kが示されている。注目画素pix_kは、その画素が、エッジ部分と網点部分とのいずれに該当するかという属性判定の対象の画素である。本実施例では、CPU30は、画像の左上隅の画素から右下隅の画素まで注目画素を順番に移動させて、各画素の属性を判定する。
【0075】
後述するように、注目画素pix_kの判定には、注目画素pix_kを含む3つの部分領域SAk0、SAk1、SAk2のそれぞれにおける輝度値の分散が利用される。各領域SAk0〜SAk2は、注目画素pix_kを中心とする正方形の領域である(第1部分領域SAk0は5×5画素に対応し、第2部分領域SAk1は7×7画素に対応し、第3部分領域SAk2は9×9画素に対応している)。
【0076】
CPU30は、以下の数式1に従って、各部分領域SAk0、SAk1、SAk2の分散を算出する。
【0077】
【数1】

【0078】
後述するように、CPU30は、第1積分データID1(図1)を利用することによって輝度値fの平均値E(f)を算出し、第2積分データID2を利用することによって輝度値fの2乗の平均値E(f2)を算出する。算出された分散は、次のステップS220で利用される。
【0079】
次に、CPU30は、領域分類部33の領域判定部334(属性判定部334とも呼ぶ)の処理として領域判定処理(属性判定処理とも呼ぶ)を行い、注目画素がエッジ構成部分であるのか、それとも網点構成部分であるのかを判定する(ステップS220)。この属性判定処理の詳細については、「D−3.属性判定処理」において後述する。
【0080】
なお、ステップS220では、CPU30は、先ず、画像データSIの複数の画素を、網点画素とエッジ画素とに分類する。次に、CPU30は、網点画素の内の所定の条件を満たす画素を、余白画素として識別する。余白画素の条件としては、対象画像SIIの背景部分を表すことを示す任意の条件を採用可能である。例えば、所定の色範囲(例えば、輝度値が所定の閾値以上の色範囲)内の色を示すことを採用可能である。次に、CPU30は、対象画像データSIの複数の画素の内の、エッジ画素によって囲まれる閉領域内の画素を、文字画素として識別する。これらの結果、CPU30は、対象画像データSIの複数の画素を、文字画素と網点画素と余白画素とに分類する。
【0081】
そして、注目画素の属性を判定すると、CPU30は、その結果をRAM40に書き込む(ステップS240)。そして、対象画像データによって表される対象画像の全ての画素について、上記の処理が終了したか否かを判断し(ステップS250)、終了していなければ(ステップS250:NO)、処理を上記ステップS210に戻し、終了していれば(ステップS250:YES)、画素分類処理を終了して、処理を図4の領域分類処理に戻す。
【0082】
D−2.積分データを利用した計算:
図14は、対象画像データSIと第1積分データID1との概略図である。以下、基準画素pix_sからx方向にxa番目、y方向にya番目の画素を、pix(xa、ya)で表す。また、その画素の輝度値をf(xa、ya)で表す。なお、xaの範囲は1〜Nxであり、yaの範囲は1〜Nyである(Nx、Nyは整数であり、対象画像データSIに応じて決まる)。
【0083】
第1積分データID1は、対象画像データSIの各画素pixの輝度積分値(輝度値の合計値)を表している。或る画素pix(xt、yt)の輝度積分値p(xt、yt)は、以下の数式2で表される。
【0084】
【数2】

【0085】
この輝度積分値p(xt、yt)は、基準画素pix_sと、画素pix(xt、yt)との2つの画素が対角画素である矩形領域IAt内の輝度値の合計値を表している(図14では、矩形領域IAtにハッチングが付されている)。
【0086】
図15は、第1積分データID1を利用した平均値算出を示す概略図である。図15は、図14と同じ対象画像データSIと第1積分データID1とを示している。各画像データSI、ID1には、注目画素pix_k(=pix(xk、yk))を中心とする対象矩形領域Adが示されている。この対象矩形領域Adのx方向の画素数Wは「2×dx+1」であり、y方向の画素数Hは「2×dy+1」である(dxは1以上の整数、dyは1以上の整数)。
【0087】
また、図中には、対象矩形領域Adの4つの隅画素pix_a〜pix_dが示されている。第1隅画素pix_aは、基準画素pix_sに最も近い隅画素である。第4隅画素pix_dは、基準画素pix_sから最も遠い隅画素である。第2隅画素pix_bは、第1隅画素pix_aと同じ画素行に含まれる他の隅画素であり、第3隅画素pix_cは、第1隅画素pix_aと同じ画素列に含まれる他の隅画素である。
【0088】
また、図15には、隅矩形領域ALが示されている。この隅矩形領域ALは、基準画素pix_sと第4隅画素pix_dとの2つの画素が対角画素である矩形領域である。この隅矩形領域ALは、直交する2本の直線L1、L2によって4つの領域Aa、Ab、Ac、Adに分割される。第1直線L1は、対象矩形領域Adの−y側の辺(隣接する画素間の境界線を表す画素境界線)を通るx方向と平行な直線であり、第2直線L2は、対象矩形領域Adの−x側の辺(画素境界線)を通るy方向と平行な直線である。第1領域Aaは、基準画素pix_sを含み、対象矩形領域Adの対角方向の左上(−xかつ−y側)に位置する矩形領域である。第2領域Abは、対象矩形領域Adの−y側に位置する矩形領域である。第3領域Acは、対象矩形領域Adの−x側に位置する矩形領域である。
【0089】
図15の上部は、平均値E(f)の算出の比較例を示している。平均値E(f)は、対象矩形領域Adにおける輝度値fの平均値を表している。比較例では、対象矩形領域Ad内の各画素の輝度値が対象画像データSIから読み出され、合計値が算出される。そして、合計値を総画素数(W×H)で割ることによって、平均値E(f)が算出される。この場合には、1つの注目画素pix_kに関する平均値E(f)の算出に、H×W回の対象画像データSI(RAM40)に対するアクセスが必要である。例えば、H=9、W=9の場合には、81回のアクセスが要る。そして、81個の値の演算(加算)も要る。
【0090】
図15の下部は、本実施例における平均値E(f)の算出を示している。図中には、平均値E(f)の算出に利用される4つの算出画素pix_1〜pix_4が示されている。CPU30は、これら4つの算出画素pix_1〜pix_4を、4つの隅画素pix_a〜pix_dの位置に従って選択する。
【0091】
第1算出画素pix_1は、第1隅画素pix_aから、行(y方向位置)と列(x方向位置)とを基準画素pix_s側に1つずつシフトした位置の画素である。この第1算出画素pix_1の輝度積分値p(x1、y1)は、第1領域Aa内の輝度値の合計値を表している。
【0092】
第2算出画素pix_2は、第2隅画素pix_bから、行(y方向位置)を基準画素pix_s側に1だけシフトした位置の画素である。この第2算出画素pix_2の輝度積分値p(x2、y2)は、第1領域Aaと第2領域Abとの全体の内の輝度値の合計値を表している。
【0093】
第3算出画素pix_3は、第3隅画素pix_cから、列(x方向位置)を基準画素pix_s側に1だけシフトした位置の画素である。この第3算出画素pix_3の輝度積分値p(x3、y3)は、第1領域Aaと第3領域Acとの全体の内の輝度値の合計値を表している。
【0094】
第4算出画素pix_4は、第4隅画素pix_dと同じである。第4算出画素pix_4の輝度積分値p(x4、y4)は、隅矩形領域AL全体の内の輝度値の合計値を表している。
【0095】
これら4つの算出画素pix_1〜pix_4は、対象矩形領域Adの輪郭線(対象矩形領域Adを囲む矩形状の画素境界線)上の4つの頂点に対して基準画素pix_sの方向にそれぞれ隣接している。そして、CPU30は、これらの算出画素pix_1〜pix_4を利用し、以下の数式3に従って、平均値E(f)を算出する。
【0096】
【数3】

【0097】
この実施例では、HとWとの大きさに拘わらずに、第1積分データID1(RAM40)に対する4回のアクセスで、1つの注目画素pix_kに関する平均値E(f)を算出することができる。このように、実施例では、上述の比較例と比べて、RAM40に対するアクセス数を大幅に低減することができる。また、4つの値の演算(加算)で分子を算出することができるので、演算負荷を大幅に軽減することができる。
【0098】
輝度値fの2乗(f2)の平均値E(f2)の算出も、輝度値fの平均値E(f)の算出と同様である。図12のステップS205で生成される第2積分データID2(図1)は、対象画像データSIの各画素pixの輝度2乗積分値psを表している。ある画素pix(xt、yt)の輝度2乗積分値ps(xt、yt)は、以下の数式4で表される。
【0099】
【数4】

【0100】
図12のステップS210では、CPU30は、上述した4つの算出画素pix_1〜pix_4の輝度2乗積分値psを第2積分データID2(RAM40)から取得し、以下の数式5に従って輝度値fの2乗の平均値E(f2)を算出する。
【0101】
【数5】

【0102】
図12のステップS210では、CPU30は、算出した平均値E(f)、E(f2)を利用して分散V(f)を算出する(数式1)。なお、第1部分領域SAk0(図13)の分散VAR0の算出では、dx=dy=2である(図15)。第2部分領域SAk1の分散VAR1の算出では、dx=dy=3である。第3部分領域SAk2の分散VAR2の算出では、dx=dy=4である。
【0103】
D−3.属性判定処理:
図16は、図12のステップS220に示した領域判定処理(属性判定処理)の流れを示すフローチャートである。CPU30は、図16に示す各ステップS500〜S520の処理を、領域分類部33に含まれる領域判定部334の処理として実行する。このような属性判定処理も画像処理の一種である。
【0104】
最初のステップS500では、CPU30は、注目画素が、網点部分を表しているか否かを、輝度値の分散を利用して判断する。
【0105】
図17は、エッジ部分と網点部分との2つの部分領域における輝度値の例を示している。注目画素pix_kがエッジ部分を表す場合は、部分領域内で色が大きく変化するので、通常は輝度値の分散は大きい。注目画素pix_kが網点部分を表す場合は、部分領域内で色が周期的に変化する。ただし、網点部分での色の変化はエッジ部分と比べて小さい場合が多いので、通常は輝度値の分散はエッジ部分と比べて小さい。
【0106】
図18(A)、18(B)、18(C)は、それぞれ、5×5画素、7×7画素、9×9画素の部分領域における分散のヒストグラムの例を示している(横軸は、標準偏差(分散の正の平方根)が均等に並ぶように設定されている)。各ヒストグラムは、網点部分とエッジ部分とのそれぞれの分散を示している。これらのヒストグラムは、様々な画像データの様々な領域の解析結果に従って作成されている。図示するように、網点部分とエッジ部分との間では、分散分布の偏りが互いに異なっている。従って、分散の大きさを閾値で判定することによって、エッジ部分と網点部分とを、或る程度の精度で判定できる。
【0107】
さらに、複数の部分領域の分散を総合することによって、判定の精度を向上させることもできる。図19は、網点部分を表す部分領域の一例を示している。図中には、5×5画素、7×7画素、9×9画素のそれぞれの分散VARx0〜VARx2が示されている。図18の各ヒストグラムに示す分散VARx0〜VARx2は、図19に示すこれらの分散を示している。
【0108】
図18に示すように、5×5画素の分散VARx0は、網点部分の典型的な分散分布における特に大きい値(頻度の比較的少ない値)を示している。その結果、この分散VARx0のみを利用する場合には、注目画素pix_kがエッジ部分であると誤判定する可能性が高くなる。一方、7×7画素の分散VARx1と、9×9画素の分散VARx2とは、典型的な分散分布におけるピークに近い値(頻度の比較的多い値)を示している。その結果、これらの分散VARx1、VARx2を利用すれば、誤判定の可能性を低減できる。
【0109】
複数の部分領域のそれぞれの分散は、注目画素pix_kの周辺における色変化パターン(例えば、対象画像が表す被写体や網点サイズ)に従って変わる。その結果、複数の部分領域の内の判定に適した部分領域は、色変化パターンに従って変わり得る。例えば、9×9画素の分散よりも、5×5画素の分散を利用した方が、誤判定の可能性を低減できる場合もあり得る。
【0110】
そこで、本実施例では、色変化パターンに拘わらずに判定精度を高めるために、CPU30は、サイズの異なる3つの部分領域SAk0、SAk1、SAk2(図13)のそれぞれの分散VAR0、VAR1、VAR2を利用して判定を行う。具体的には、CPU30は、以下の数式6に従って算出される評価値EVaが0以上の場合に、注目画素pix_kがエッジ部分であると判定し、評価値EVaが0未満の場合に、網点部分であると判定する。
【0111】
【数6】

【0112】
識別子tは、部分領域の識別子である。本実施例では、t=0が5×5画素に対応し、t=1は7×7画素に対応し、t=2は9×9画素に対応している。最大値Tは、識別子tの最大値である(本実施例では2)。係数Catは、各部分領域に対する重みを表す所定の正値である。閾値THatは、部分領域毎に予め決められた分散の閾値である。分散VARtは、各部分領域での分散である。符号関数signは、引数の符号を返す関数である。VARt>THatの場合にはsign=+1であり、VARt=THatの場合にはsign=0であり、VARt<THatの場合にはsign=−1である。
【0113】
評価値EVaは、分散VARtが閾値THatよりも大きいか否かの判定結果を、各部分領域毎に重みを付けて足し合わせた値を表している。従って、図19に示す例のように一部の部分領域からは正しい判定結果が得られない場合であっても、さらに他の部分領域を利用することによって、正しい判定結果を得ることができる。これらの結果、色変化パターンに拘わらずに判定精度を高めることができる。なお、閾値THa0、THa1、THa2と係数Ca0、Ca1、Ca2とのそれぞれは、多数の画像を分析することで、予め、実験的、経験的に求められる。
【0114】
CPU30は、評価値EVaを算出し、評価値EVaが0未満であるか否かを判定する(図16:S500)。CPU30は、評価値EVaが0未満であれば注目画素を網点部分と判断し(S510)、評価値EVaが0以上であれば注目画素をエッジ部分と判断する(S520)。そして、CPU30は、属性判定処理を終了し、図12に示した画素分類処理に処理を戻す。
【0115】
なお、上述したように、CPU30は、網点画素とエッジ画素との分類結果に従って、文字画素と網点画素と余白画素との分類を実行する。なお、通常は、網点部分の輝度値の分散は、その網点部分が文字を含むか否かに拘わらずに、エッジ部分の輝度値の分散よりも小さい。従って、網点部分が文字を含むか否かに拘わらずに、網点部分の画素は網点画素として分類される。
【0116】
以上のように、画素分類処理の第1実施例では、サイズの異なる複数の部分領域のそれぞれの分散を利用して属性が判定される。すなわち、局所的な視点と大域的な視点との両方を考慮して属性が判定される。その結果、判定精度を高めることができる。また、積分データを利用して分散が算出されるので、対象画像データSIの複数の画素位置のそれぞれに関する分散を算出する場合であっても、メモリに対するアクセス数が過剰に多くなることを抑制できる。そして、演算負荷を軽減できる。
【0117】
なお、本実施例においては、変化を検知しやすいことから、RGBの階調値から輝度の階調値を算出し、算出した輝度の階調値を用いて属性判定を行ったが、階調値は輝度に限るものではなく、色を表す階調値であればよい。例えば、画像データがYCbCr形式で与えられる場合には、輝度の階調値として画像データのY成分を直接用いてもよいし、Cb成分やCr成分を用いてもよいし、画素のR成分などを用いてもよい。
【0118】
かかる構成のプリンタ10は、注目画素の周辺の所定範囲の画素群の分散を算出し、これを基に評価値EVaを算出し、その結果に基づいて注目画素の属性を判定する。したがって、分散計算を中心とした簡単な演算処理で、エッジ構成部分、網点構成部分といった画素の属性の判定を行うことができる。また、当該判定技術は、簡単な演算処理で構成されることから、ソフトウェアで安価に構成することができる。また、簡単な演算処理の組合せで構成されるので、SIMD(Single Instruction Multiple Data)向き並列処理として実装でき、高速処理が可能となる。例えば、画像データの読み込みと領域分類(判定)とを並列化してもよい。
【0119】
D−4.画素分類処理の第2実施例:
図20は、図12のステップS220に示した領域判定処理(属性判定処理)の別の実施例を示すフローチャートである。図16の実施例との差違は、網点部分とエッジ部分とに加えて、文字内部とその他との4種類の判定が行われる点である。なお、CPU30(図1)は、図20に示す各ステップS400〜S445の処理を、領域分類部33に含まれる領域判定部334の処理として、実行する。
【0120】
最初のステップS400では、CPU30は、注目画素の色が背景色範囲に含まれているか否かを判定する。注目画素の色が背景色範囲に含まれている場合には、CPU30は、その注目画素を「その他」と判断する(S445)。背景色範囲は、対象画像の背景部分を表す色の範囲を示している。CPU30は、例えば、対象画像中の所定の縁部分(例えば、縁からの距離が20画素以内の部分)の平均色を中心とする所定サイズの色範囲を背景色範囲として採用する。例えば、白い紙を用いた印刷物を対象画像が表す場合には、紙の白色を表す色範囲が背景色範囲として採用される。この代わりに、所定の色範囲(例えば、輝度値が所定の閾値以上の色範囲)が背景色範囲として採用されてもよい。
【0121】
次のステップS410、S420、S430では、CPU30は、注目画素が、文字内部、網点部分、エッジ部分のいずれに該当するかを、輝度値の分散を利用して判断する。
【0122】
図21は、3つの部分領域における輝度値の例を示している。図17との差異は、文字内部が追加されている点だけである。注目画素pix_kが文字内部を表す場合は、しばしば部分領域内の各画素の色がほぼ同じであるので、通常は輝度値の分散は、網点部分と比べて小さい。
【0123】
図22(A)、22(B)、22(C)は、それぞれ、3つの部分領域における分散のヒストグラムの例を示している。図18との差異は、文字内部のヒストグラムが追加されている点だけである。図示するように、文字内部と網点部分との間では、分散分布の偏りが互いに異なっている。従って、網点部分とエッジ部分との判定と同様に、分散の大きさを閾値THb0、THb1、THb2で判定することによって、文字内部と網点部分とを、或る程度の精度で判定できる。
【0124】
図20のステップS410では、CPU30(図1)は、図16と同様の方法で、注目画素が「文字内部」であるか否かを判定する。ステップS420は、図16のステップS500と同じである(注目画素が「網点部分」であるか否かの判定)。ステップS430では、CPU30は、図16と同様の方法で、注目画素が「エッジ部分」であるか否かを判定する。ステップS430では、分散が過剰に大きい場合に、注目画素がエッジ部分では無いと判定される。ただし、ステップS430を省略してもよい。この場合には、背景でもなく文字内部でもなく網点部分でもないと判断された画素の全てが、エッジ部分であると判断される。
【0125】
なお、ステップS410、S430のそれぞれの判定には、上述の評価値EVa(数式6)と同様の評価値が利用される。ステップS410では、CPU30は、評価値が0未満の場合に、注目画素が文字内部であると判定し、評価値が0以上の場合に、文字内部では無いと判定する。ステップS430では、CPU30は、評価値が0未満の場合に、注目画素がエッジ部分であると判定し、評価値が0以上の場合に、エッジ部分では無いと判定する。各評価値の算出に利用される係数(係数Catに相当)と閾値(閾値THatに相当)とは、多数の画像を分析することで、予め、実験的、経験的に求められる。
【0126】
図23は、文字と網点とを表す画像部分IPの判定結果の概略図である。第1パターンP1は、各画素がエッジ部分か否かを表す2値パターンである。第2パターンP2は、各画素が文字内部か否かを表す2値パターンである。第3パターンP3は、各画素が網点部分か否かを表す2値パターンである。第4パターンP4は、各画素がその他か否かを表す2値パターンである。図中では、各部分に該当する画素が実線またはハッチングで表されている。図示するように、文字の輪郭を表す画素はエッジ部分と判定され、文字の内部を表す画素は文字内部と判定され、網点画像を表す画素は網点部分と判定され、背景はその他と判定される。
【0127】
図12のステップS240では、CPU30は、領域判定部334の処理として判定結果をRAM40に書き込む。書き込まれる判定結果としては、例えば、図23に示す4つの2値パターンデータを採用してもよく、また、各画素が4つの属性のいずれであるかを示す4値パターンデータを採用してもよい。
【0128】
ここで、CPU30は、エッジ部分と文字内部との両方の画素を文字画素として識別し、そして、その他と判定された画素を余白画素として識別する。また、図12のステップS240では、CPU30は、文字画素と網点画素と余白画素とを識別可能な任意のデータをRAM40に格納すればよい。このようなデータとしては、例えば、3つの属性のいずれであるかを示す3値パターンデータを採用可能である。
【0129】
以上のような画素分類処理の各実施例と、文字画素連結による文字列領域の検出とを組み合わせることによって、文字列領域の検出に要する負担を軽減することができる。例えば、文字を1文字ずつ認識する解析処理(例えば、いわゆるOCR(optical character recognition)や、文字を表す領域を1文字ずつ分類する処理を省略できる。
【0130】
なお、画素が表す画像種類の分類方法としては、上述の各実施例の方法に限らず、周知の種々の方法を採用可能である。ここで、注目画素とその周辺の所定範囲内の画素とを含む一部の領域内における画素値の分布に従って注目画素の種類を特定する方法を採用すれば、分類処理の負担を軽減することができる。例えば、上述の各実施例において、分散の代わりに、注目画素pix_kの周辺の画素値の最大差分を利用してもよい。
【0131】
また、識別される画素の種類としては、余白と網点と文字との3種類に限らず、少なくとも網点と文字とを含む任意の種類を採用可能である。例えば、文字領域が余白以外の他の領域(例えば、網点領域)内にも広がる場合には、余白画素の特定を省略してもよい。
【0132】
C.変形例:
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0133】
変形例1:
上述の各実施例において、文字列とは異なる画像を表す部分も文字列領域として分類される場合がある。例えば、対象画像データSIにグラフを表す部分が含まれる場合には、そのグラフを表す部分が文字列領域として分類され得る。この場合には、グラフも、文字列と同様に、拡大されるが、実用上の問題は無い。但し、グラフを表す領域を、文字列領域から区別し、グラフ領域を拡大対象から外してもよい。
【0134】
変形例2:
上述の各実施例において、文字列領域の検出方法としては、文字画素検出と文字画素連結とを組み合わせた方法に限らず、任意の方法を採用可能である。例えば、いわゆるOCR(optical character recognition)を利用して文字列領域を検出してもよい。
【0135】
また、網点領域を検出する方法としても、種々の方法を採用可能である。例えば、パターンマッチングに従って網点領域を検出してもよい。
【0136】
いずれの場合も、CPU30(領域分類部33)は、網点画像が文字を含むか否かに拘わらずに、網点画像を表す領域を網点領域として検出することが好ましい。こうすれば、網点によって表される画像に文字が含まれている場合であっても、文字列拡大の影響によって網点領域が過剰に変形することを抑制できる。例えば、先ず対象画像から網点領域を分類(検出)し、次に網点領域を除いた残りの領域から文字列領域を分類(検出)すればよい。
【0137】
変形例3:
上述の各実施例において、CPU30(画像合成部36)は、文字列領域と同様に、網点領域を拡大してもよい。この場合も、CPU30(領域分類部33)が網点領域と文字列領域とを分類することによって、網点によって表される画像が不自然に変形されることを抑制できる。
【0138】
変形例4:
上述の各実施例において、対象画像データとしては、スキャナ91によるスキャンによって生成された画像データに限らず、種々の画像データを採用可能である。例えば、プリンタ10は、着脱可能なメモリカードや、ネットワークを介して接続された他の装置から対象画像データを取得してもよい。
【0139】
また、上述の各実施例において、文字列領域が拡大された後の画像データの用途としては、印刷に限らず、種々の用途を採用可能である。例えば、ディスプレイ装置に画像を表示してもよく、画像データを含むデータファイルをユーザに提供してもよい。
【0140】
変形例5:
以上、本発明の実施例について説明したが、本発明はこうした実施例に限られるものではなく、本発明の要旨を脱しない範囲において、種々なる態様で実施できることは勿論である。例えば、本発明の画像処理装置は、実施例に示したプリンタ複合機に限らず、プリンタ単独機、デジタル複写機、イメージスキャナなど各種デジタル機器に搭載することができる。また、画像処理装置としての構成に限らず、判定画像処理方法や、コンピュータプログラム等の形態でも実現することができる。
【0141】
また、図11の実施例のように対象画像中の文字列を検出する画像処理装置、文字列の検出方法、文字列を検出するためのコンピュータプログラム等の形態でも実現することができる。このような形態を採用すれば、種々の画像において適切に文字列を検出することができる。なお、このような画像処理装置としては以下の構成を採用可能である。例えば、対象画像を表す対象画像データを処理する画像処理装置は、対象画像から文字列を表す文字列領域を検出する領域検出部を備えている。そして、この領域検出部は、上述の適用例3、4、5に示す領域分類部と同じ特徴を有する。
【0142】
変形例6:
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図1の領域分類部33の機能を、論理回路を有するハードウェア回路によって実現してもよい。
【0143】
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア(コンピュータプログラム)は、コンピュータ読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやCD−ROMのような携帯型の記録媒体に限らず、各種のRAMやROM等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
【図面の簡単な説明】
【0144】
【図1】本願の画像処理装置の実施例としてのプリンタ10の概略構成を示す説明図である。
【図2】画像複製処理の流れを示すフローチャートである。
【図3】画像複製処理を示す概略図である。
【図4】図2のステップS122に示す領域分類処理の手順を示すフローチャートである。
【図5】図形の拡大と縮退との概略図である。
【図6】図形の拡大と縮退とによる文字画素の連結を示す概略図である。
【図7】図形の拡大と縮退とによる文字画素の連結を示す概略図である。
【図8】図2のステップS132に示す画像合成処理の手順を示すフローチャートである。
【図9】文字列領域拡大の概略図である。
【図10】文字領域拡大の別の実施例の概略図である。
【図11】文字列検出の別の実施例を示す概略図である。
【図12】画素分類処理の流れを示すフローチャート。
【図13】対象画像データSIと注目画素を示す概略図である。
【図14】対象画像データSIと第1積分データID1との概略図である。
【図15】第1積分データID1を利用した平均値算出を示す概略図である。
【図16】領域判定処理(属性判定処理)の流れを示すフローチャートである。
【図17】部分領域における輝度値の例を示す説明図。
【図18】分散のヒストグラムの例を示す説明図。
【図19】網点部分を表す部分領域の一例を示す説明図。
【図20】領域判定処理(属性判定処理)の別の実施例を示すフローチャートである。
【図21】3つの部分領域における輝度値の例を示す説明図。
【図22】分散のヒストグラムの例を示す説明図。
【図23】文字と網点とを表す画像部分IPの判定結果の概略図である。
【符号の説明】
【0145】
10…プリンタ
20…制御ユニット
30…CPU
31…画像入力部
32…積分データ生成部
33…領域分類部
35…印刷制御部
36…画像合成部
40…RAM
50…ROM
60…キャリッジ移動機構
62…キャリッジモータ
64…駆動ベルト
66…摺動軸
70…キャリッジ
71…インクヘッド
72…インクカートリッジ
80…紙送り機構
82…ローラ
84…モータ
86…プラテン
91…スキャナ
96…操作パネル
332…特徴量算出部
334…領域判定部(属性判定部)
336…文字列検出部
338…余白検出部
P…印刷用紙
ID1…第1積分データ
ID2…第2積分データ

【特許請求の範囲】
【請求項1】
対象画像を表す対象画像データを処理する画像処理装置であって、
前記対象画像から、網点画像を表す網点領域と、前記網点領域とは異なるとともに文字列を表す文字列領域とを検出する領域分類部と、
前記対象画像中の前記文字列領域を拡大する画像処理部と、
を備える、画像処理装置。
【請求項2】
請求項1に記載の画像処理装置であって、
前記領域分類部は、前記網点画像が文字を含むか否かに拘わらず、前記網点画像を表す領域を前記網点領域として検出する、画像処理装置。
【請求項3】
請求項1または請求項2に記載の画像処理装置であって、
前記領域分類部は、余白領域を検出し、
前記画像処理部は、前記文字列領域を、前記文字列領域に隣接する前記余白領域内で拡大する、
画像処理装置。
【請求項4】
請求項1ないし請求項3のいずれかに記載の画像処理装置であって、
前記領域分類部は、前記対象画像データに含まれる複数の画素の中から文字を表す文字画素を検出し、離れて配置された文字画素間を連結することによって得られる連結領域を含む領域を前記文字列領域として検出する、
画像処理装置。
【請求項5】
請求項4に記載の画像処理装置であって、
前記領域分類部は、所定の方向に沿って前記文字画素を連結する異方性連結によって前記連結領域を得る、画像処理装置。
【請求項6】
請求項5に記載の画像処理装置であって、
前記領域分類部は、前記所定の方向が互いに異なるN種類(Nは2以上の整数)の異方性連結のそれぞれの結果に関して、前記文字画素が連結した領域の前記所定方向に沿った長さの代表値を決定し、前記代表値が最も長い前記異方性連結に従って前記文字列領域を検出する、画像処理装置。
【請求項7】
対象画像を表す対象画像データを処理する画像処理方法であって、
前記対象画像から、網点画像を表す網点領域と、前記網点領域とは異なるとともに文字列を表す文字列領域とを検出する工程と、
前記対象画像中の前記文字列領域を拡大する工程と、
を有する画像処理方法。
【請求項8】
対象画像を表す対象画像データを処理するためのコンピュータプログラムであって、
前記対象画像から、網点画像を表す網点領域と、前記網点領域とは異なるとともに文字列を表す文字列領域とを検出する機能と、
前記対象画像中の前記文字列領域を拡大する機能と、
をコンピュータに実現させるコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2009−105541(P2009−105541A)
【公開日】平成21年5月14日(2009.5.14)
【国際特許分類】
【出願番号】特願2007−273810(P2007−273810)
【出願日】平成19年10月22日(2007.10.22)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】