まず始めにniblack法による2値化について説明する。niblack法とは撮影した画像に含まれる特定の画素に対して2値化を行う場合に、特定の画素を中心とした所定の範囲に含まれる輝度値の平均値に応じて算出した閾値に基づいて2値化を行う方法である。以下、図面を参照して、niblack法について説明する。
図1は、niblack法により背景領域に含まれる画素の2値化を行う場合の例について示す図である。niblack法により、図1の画像データ101に含まれる注目画素102を2値化する場合の処理について説明する。niblack法では、まず始めに、注目画素102を中心として、所定の大きさの枠103が生成される。枠103に含まれる画素の輝度ヒストグラムを104に示す。続いて、枠103に含まれる画素の輝度値の平均値が算出される。その後、平均値に対し、例えば、所定の値だけ小さい輝度値を閾値とし、注目画素102の輝度値が閾値以上であるか、閾値より小さいかに基づき2値化が行われる。
今回は、一例として、閾値以上の輝度値を示す注目画素を2値化における1(例えば、背景領域)とし、閾値よりも小さい輝度値を示す注目画素を2値化における0(例えば、文字領域)とする例を説明する。注目画素102の輝度値105は、閾値以上の輝度値を示すため、2値化における1(背景領域)であると判定される。2値化における1と0のどちらを文字領域とするかは、文字領域と背景領域の輝度値の大小関係に応じて設定される。
続いて、niblack法において、誤認識が発生する場合の例について説明する。
始めに、枠の大きさに起因して、文字領域を背景領域であると誤認識される場合について説明する。具体例として、図2の画像データ201に含まれる注目画素202を2値化する場合の処理について説明する。図2は、niblack法により文字領域に含まれる画素の2値化を行う場合の例について示す図である。
まず、注目画素202を中心として、所定の大きさの枠203が生成される。枠203に含まれる画素の輝度ヒストグラムを204に示す。続いて、枠203に含まれる画素の輝度値の平均値が算出される。その後、上述した処理と同様の処理により閾値を算出し、注目画素202の輝度値が閾値以上であるか、閾値より小さいかに基づき2値化が行われる。注目画素202の輝度値205は、閾値よりも大きい輝度値を示すため、2値化における1(背景領域)であると誤判定される。このように2値化を行う特定の画素を中心とした所定の枠の大きさが小さい場合には、文字領域が背景領域であると誤認識される場合がある。
次に、影の境界付近において、背景領域が文字領域であると誤認識される場合について説明する。具体例として、図3の画像データ301に含まれる注目画素302を2値化する場合の処理について説明する。図3は、niblack法により影のかかる領域と影のかからない領域付近における画素の2値化を行う場合の例について示す図である。
まず、注目画素302を中心として、所定の大きさの枠303が生成される。枠303に含まれる画素の輝度ヒストグラムを304に示す。続いて、枠303に含まれる画素の輝度値の平均値が算出される。その後、上述した処理と同様の処理により閾値が算出され、注目画素302の輝度値が閾値以上であるか、閾値より小さいかに基づき2値化が行われる。前述の処理を行うと、今回の注目画素の輝度値305は、本来であれば背景領域と判定されるべきところ、閾値より小さい輝度値を示すため、2値化における0(文字領域)であると誤判定されてしまう。
以上のniblack法では、2値化を行う特定の画素を中心とした枠の大きさが小さい場合や、影のかかる領域と影のかからない領域付近における注目画素の2値化が行われる場合に、誤認識が発生する場合がある。
以降、本発明に係る処理をniblack法に適用した場合の実施例について説明する。適用する方法は、niblack法に限定されない。例えば、枠に含まれる領域の平均値を基準に2値化を行う移動平均法に本発明に係る処理を適用しても良い。
まず初めに、実施形態に係る処理を実行するハードウェアの構成について説明する。
図4は、第1の実施形態に係る処理を行う画像処理装置400の構成例を示す図である。
第1の実施形態に係る画像処理装置400は、入力部401、特定部402、生成部403、調整部404、判定部405、認識部406、出力部407を有する。
入力部401は、撮像装置等の入力装置408で撮影された画像データを受信する。入力部401は受信した画像データを特定部402へ送信する。また、入力部401は入力装置408に入力された処理に関する設定等の情報を受信し、受信した情報を対応する各処理部へ送信する。処理に関する設定等の情報と、その情報を送信する各機能部の詳細とについては後述する。
特定部402は入力部401から受信した画像データに含まれる文字線幅を特定する。以下に特定部402が文字線幅を特定する際の方法の例として、Canny法を用いた文字線幅の特定方法について図5を用いて説明する。図5は「F」という文字に対し、線幅を特定する際に計測する幅の例を示す図である。
特定部402はCanny法により入力部401から受信した画像データに含まれるエッジを抽出する。特定部402は画像データに含まれるエッジによって閉輪郭線が構成される箇所を特定する。特定部402は特定した閉輪郭線を構成する輪郭線を一定の画素数毎または領域毎に複数の線(例えば、図5の点線で示す画素数または領域)に分割する。
そして、閉輪郭線で囲まれる領域を挟むように、互いに対向し、かつ、平行な分割線のペアを特定する。図5の例では、矢印501〜504のそれぞれで示した分割線のペアを特定する。そして、特定した分割線のペア同士の間の距離を算出し、算出した距離中央値の距離を文字線幅として特定する。
なお、文字線幅として、例えば、測定した距離の最頻値または平均値、最大値等を採用することもできる。最頻値や平均値を利用することにより、文字線の長辺側の距離が文字線幅の算出の際に反映されたとしても、より適切な文字線幅を算出することができ、最大値を利用することにより、文字線幅より小さい枠となることを抑制でき、より正確に判定を行うことができる。また、ユーザが文字線幅を指定する入力を行うことで文字線幅を算出する処理を省略することもできる。
以下の例では、分割線のペアについて算出した距離の平均値を文字線幅として利用する場合について説明する。なお、特定した文字線幅が、画像サイズに対し、所定の割合以上の大きさを持つ場合には、該当する線幅は文字線幅に該当するものではないと判定し、文字線幅の特定を行う場合の対象から除外しても良い。
特定部402は抽出したエッジの情報や文字線幅の情報等を生成部403と判定部405に送信する。
生成部403は、特定部402で特定した文字線幅以上の線を辺又は内部に含み得る枠を生成する。この処理を行うことで、niblack法で誤認識が要因であった2値化を行う特定の画素を中心とした枠の大きさの設定に起因する誤りの発生リスクを低減することができる。すなわち、文字線幅に対して枠のサイズが大きくなるため、枠が文字にうもれてしまい図2の203のような状況が発生することを回避できる。
文字線幅に対して枠のサイズを大きくした場合の判定について図6を用いて説明する。図6は、niblack法により文字領域に含まれる画素の2値化を文字線幅より大きい枠を利用して行う場合の例について示す図である。
生成部403は、図6の画像データ601に含まれる注目画素602を中心として、文字線幅以上の線を辺又は内部に含み得る枠を生成する。ここでは、文字線幅以上の線を一辺にもつ正方形の枠603を生成する場合の例について説明する。枠603に含まれる画素の輝度ヒストグラムを604に示す。図6の604から分かるように注目画素602の輝度値605は閾値よりも小さい輝度値を示すため、2値化における0(文字領域)であると判定でき、図2で説明した誤認識が発生することを回避できる。すなわち、枠603の辺の長さは、文字線幅よりも大きいため、枠は、文字領域をはみ出すこととなる。そして、枠603は、輝度が高い背景領域をも取り込むこととなり、閾値も輝度が高い方にシフトし、閾値を下回る輝度の文字領域を正しく検出できることとなる。
生成部403が生成する枠の形状の例として、多角形や、円形等が挙げられるが、これらに限定されない。例えば、画像上にかかる影の領域の形状に応じて、枠の形状を決定しても良い。また、入力部401から予めユーザにより形状の設定を受け付けておいても良い。生成部403が枠の形状を決定する場合の具体例については後述する。
生成部403は生成した枠の情報等を調整部404と判定部405に送信する。
調整部404は、画像データに含まれる各画素または各領域に対し、生成部403で生成した枠を配置する位置を調整する。調整部404は、画像データに含まれる各画素または各領域が枠に含まれるように複数の配置の仕方を決定する。調整部404は、生成部403で生成した枠を配置する位置を、所定のパターンに従って複数設定する。
複数設定することで、いずれかの設定では影の影響が抑えられ、誤判定を減少させることができる。注目画素が四角形の頂点部分に位置するように4つの配置パターンを利用することもできる。また、影の領域の形状に基づいて調整しても良い。影の領域の算出方法と枠を配置する位置の設定方法、効果については後述する。調整部404は枠を配置する位置に関する情報等を判定部405へ送信する。
判定部405は、画像データに含まれる各画素または各領域が文字領域であるかどうかを判定する。判定部405は画像データに含まれる各画素または各領域の中から、文字領域であるかどうかの判定を行う注目画素または注目領域を選択する。
判定部405は、選択した注目画素または注目領域に対し、調整部404で調整したそれぞれの枠の位置において、niblack法による処理を行い、注目画素の2値化を行う。以降の処理については、例えば、文字領域の輝度値が背景領域の輝度値よりも小さい場合における判定について説明する。文字領域の輝度値が背景領域の輝度値に比べ小さいか大きいかについては、予め設定しておくことができる。例えば、入力部401で予めユーザから設定を受け付けておく(文字領域の輝度値が背景領域の輝度値より大きいか、小さいかの設定を受け付ける)。
判定部405は、注目画素または注目領域に対し、調整部404で調整した全ての枠の配置で行ったniblack法において、注目画素の輝度値が閾値より大きい輝度値となる枠の配置が存在するかどうかを判定する。注目画素の輝度値が閾値より大きい輝度値となる枠の配置が一つでも存在する場合に、該当する画素または領域を背景領域であると判定する。
逆に、注目画素の輝度値が閾値より大きい輝度値となる枠の配置が一つも存在しない場合には、文字領域であると判定する。なお、文字領域の輝度値が背景領域の輝度値よりも大きい場合(そのような設定がされている場合)においては、注目画素の輝度値が閾値より小さい輝度値となる枠の配置が一つでも存在する場合に、該当する注目画素を背景領域であると判定する。
以上のように、本実施形態の処理では、文字線幅より大きい枠を設定し、複数の枠の配置におけるniblack法を行い、少なくとも一つの枠において、注目画素の輝度値が閾値より大きい(文字の輝度が背景の輝度に比べて大きい場合には閾値より小さい)枠の配置があるか(正しく背景と文字を判定できる枠の配置があるか)に基づいて、該当する注目画素が背景領域であるとより正しく判定できる。判定部405は、判定結果を認識部406へ送信する。なお、複数の枠の設定、文字線幅に応じた枠のサイズの設定のいずれかだけを行っても良いし、双方の処理を行っても良い。
認識部406は、入力部401で受信した画像データにおいて、判定部405で文字領域と判定した画素または領域に対し、例えば、文字認識を行う。文字認識を行う際、例えば、文字領域と判定した領域を黒画素、文字領域でないと判定した領域を白画素と2値化されているため、それを用いて認識を行う。認識部406は認識した文字の情報を出力部407へ送信する。
出力部407は、入力部401から受信した画像データと、認識部406で認識した文字の情報とを対応付けて記憶装置409へ出力する。ただし、出力先については前述のものに限定されない。
次に、第1の実施形態に係る画像処理装置400が文字領域を特定する際の処理の流れについて詳細に説明する。ここでは、文字領域の輝度値が背景領域の輝度値よりも小さいものとする。
図7は第1の実施形態に係る画像処理装置400が、文字領域を特定する際の処理フローを示す図である。
第1の実施形態に係る画像処理装置400は、まず始めに入力部401で入力装置408から画像データを受信する(ステップS701)。
画像処理装置400の特定部402は、入力部401で受信した画像データに含まれる文字線幅を特定する(ステップS702)。
画像処理装置400の生成部403は、特定部402で特定した文字線幅に基づいて先に説明した枠を複数生成する。(ステップS703)。
画像処理装置400の判定部405は、受信した画像データに含まれる各画素または各領域の中から、文字領域であるかどうかの判定を行う対象としての注目画素または注目領域を選択する。(ステップS704)。
画像処理装置400の調整部404は、判定部405で選択した注目画素に対し、生成部403で生成した枠を配置する(ステップS705)。
画像処理装置400の判定部405は、調整部404で調整して配置した枠のそれぞれにおいて、niblack法による処理を行い、注目画素の輝度値が閾値以上であるかどうかを判定する(ステップS706)。画像処理装置400の判定部405は、注目画素の輝度値が閾値以上であると判定した場合(ステップS706:Yes)、注目画素は文字領域でないと判定する(ステップS707)。画像処理装置400の判定部405は、注目画素を文字領域でないと判定した後、受信部401から受信した画像データにおいて、他に注目画素があるかどうかを判定する(ステップS711)。
画像処理装置400の判定部405は、注目画素の輝度値が閾値以上でないと判定した場合(ステップS706:No)、注目画素に対し、調整部404で調整した他の枠位置での判定があるかどうかを判定する(ステップS708)。画像処理装置400の判定部405は、他の枠位置における判定がある場合(ステップS708:Yes)に、調整部404で調整した他の枠の位置に枠を移動する(ステップS709)。画像処理装置400の判定部405は、枠を移動した後、再度、注目画素の輝度値が閾値以上であるかどうかを判定する(ステップS706)。
画像処理装置400の判定部405は、注目画素に対し、他の枠の位置での判定がないと判定した場合(ステップS708:No)、注目画素は文字領域であると判定する(ステップS710)。
画像処理装置400の判定部405は、受信した画像データにおいて、他に注目画素が存在するかどうかを判定する(ステップS711)。画像処理装置400の判定部405は、入力部401で受信した画像データにおいて、判定が完了していない注目画素が存在する場合(ステップS711:Yes)、判定が完了していない注目画素を選択し(ステップS704)、再度、文字領域であるかどうかを判定する。一方、画像処理装置400の判定部405は、入力部401で受信した画像データにおいて、他に注目画素が存在しないと判定した場合(ステップS711:No)、処理を終了する。
画像処理装置400は、上述の処理フローにより文字領域を特定した後、認識部406で特定した文字領域に対して文字認識を行い、認識した文字を出力部407は出力する。
次に、影のかかった特定の文字列を含む画像について処理を行う際に画像処理装置400が誤判定を行わないことを、図8〜図14を用いて更に詳しく説明する。
図8は画像処理を行う対象となる「FUJITSU」といった特定の文字列に影がかかった画像データの例を示す図である。図9、図10は図8の画像データ800に含まれる画素801に対し、枠を配置する位置の具体例と、それぞれの枠の位置における輝度ヒストグラムを示す図である。図11、12は図8の画像データ800に含まれる画素802に対し、枠を配置する位置の具体例と、それぞれの枠の位置における輝度ヒストグラムを示す図である。図13、14は図8の画像データ800に含まれる画素803に対し、枠を配置する位置の具体例と、それぞれの枠の位置における輝度ヒストグラムを示す図である。
図8に示す「FUJITSU」の画像データ800に含まれる「I」という文字を含む領域804について、文字領域であるかどうかを判定する際の処理について説明する。図8のように「I」という文字は、文字の下部側は影がかかっている、一方、文字の上側は影がかかっていないといった状態である。なお、文字領域の輝度値は背景領域の輝度値より小さいものとする。すなわち、文字領域の輝度値<背景領域の輝度値と設定されているものとする。
図8の画素801は、影の領域の境界付近に存在する影のかかっていない背景領域である。図8の画素802は、影の領域の境界付近に存在する影のかかった背景領域である。図8の画素803は、影の領域の境界付近に存在する影のかかった文字領域である。
画像処理装置400の生成部403は、枠を生成する。枠のサイズは所定のサイズとすることもできるが好ましくは先に説明したように文字線幅に応じて決定する。ここでは、枠を文字線幅より長い辺を一辺にもつ正方形とする。
画像処理装置400の調整部404は、例えば、図8の画素801、802、803のそれぞれに対し、生成部403で生成した正方形の枠の頂点が重なるように4つの配置パターンの正方形の枠を配置する。これにより、影がかかった部分とかかっていない部分の双方が枠の中に取り込まれるのではなく、枠の中に影がかかった部分だけが取り込まれる可能性が高まり、誤判定が抑制できる。ただし、枠の配置は他にも種々あり、異なる位置に配置する種々のパターンを採用できる。
図8の画素801に対し、生成部403で生成した枠の各頂点を重ねて配置した際の図を図9(a)、図9(c)、図10(a)、図10(c)に示す。図9(a)は画素801が枠の右上の頂点と、図9(c)は画素801が枠の右下の頂点と、図10(a)は画素801が枠の左下の頂点と、図10(c)は画素801が枠の左上の頂点とそれぞれ重なるように配置した図である。図9(b)、図9(d)、図10(b)、図10(d)はそれぞれ、図9(a)の枠901、図9(c)の枠902、図10(a)の枠1001、図10(c)の枠1002の領域に含まれる画素の輝度ヒストグラムを示す。
画像処理装置400の判定部405は図9、図10の枠901、枠902、枠1001、枠1002の領域においてniblack法による処理を行い、注目画素の輝度値801が閾値以上であるかどうかを判定する。図9、図10の輝度ヒストグラムが示すように、注目画素の輝度値は枠901、枠902、枠1001、枠1002全ての領域において、閾値以上となる。よって、処理フローに従い、注目画素801は背景領域であると判定する。
続いて、図8の画素802に対し、生成部403で生成した枠の各頂点を重ねて配置した際の図を図11(a)、図11(c)、図12(a)、図12(c)に示す。図11(a)は画素802が枠の右上の頂点と、図11(c)は画素802が枠の右下の頂点と、図12(a)は画素802が枠の左下の頂点と、図12(c)は画素802が枠の左上の頂点とそれぞれ重なるように配置した図である。図11(b)、図11(d)、図12(b)、図12(d)はそれぞれ、図11(a)の枠1101、図11(c)の枠1102、図12(a)の枠1201、図12(c)の枠1202の領域に含まれる輝度ヒストグラムを示す。
画像処理装置400の判定部405は図11、図12の枠1101、枠1102、枠1201、枠1202の領域においてniblack法による処理を行い、注目画素の輝度値802が閾値以上であるかどうかを判定する。図11、図12の輝度ヒストグラムが示すように、注目画素802の輝度値は枠1102、枠1201の領域において閾値より小さくなるが、枠1101、枠1202の領域において閾値以上となる。よって、処理フローに従い、注目画素802は背景領域であると判定する。このように複数の枠を用いて判定するため、1つの枠を用いるのに対して誤判定を抑制できる。
続いて、図8の画素803に対し、生成部403で生成した枠の各頂点を重ねて配置した際の図を図13(a)、図13(c)、図14(a)、図14(c)に示す。図13(a)は画素803が枠の右上の頂点と、図13(c)は画素803が枠の右下の頂点と、図14(a)は画素803が枠の左下の頂点と、図14(c)は画素803が枠の左上の頂点とそれぞれ重なるように配置した図である。図13(b)、図13(d)、図14(b)、図14(d)はそれぞれ、図13(a)の枠1301、図13(c)の枠1302、図14(a)の枠1401、図14(c)の枠1402の領域に含まれる輝度ヒストグラムを示す。
画像処理装置400の判定部405は図13、図14の枠1301、枠1302、枠1401、枠1402の領域においてniblack法による処理を行い、注目画素の輝度値803が閾値以上であるかどうかを判定する。図13、図14の輝度ヒストグラムが示すように、注目画素803の輝度値は枠1301、枠1302、枠1401、枠1402全ての領域において閾値より小さくなる。よって、上述した処理フローに従い、注目画素803は文字領域であると判定する。
以上のように、生成部403で生成した枠を調整部404で調整した位置に複数配置し、判定部405で判定を行うことにより注目画素が文字領域であるかどうかを判定することができる。
また、例えば、影の境界の領域が曲線を含む場合には、生成部403で生成する枠を影の形状に基づいて決定することで、文字領域であるかどうかを精度良く判定することができる。以下に具体例を示す。例えば、図15に示すような「FUJITSU」の文字が書かれた画像データ1500に曲線を含む影がかかっている場合において、「U」という文字を含む領域1502について、文字領域を特定する場合の処理について説明する。図15は画像処理を行う対象となる画像データの例を示す図である。図15に示すように影が曲線を有する場合、枠の形状を矩形ではなく、例えば、三角形にすることにより文字領域の判定の精度を上げることができる。画像処理装置400が、曲線の影のかかる領域と影のかからない領域付近の画素1501について文字領域であるかどうかを判定する場合の処理について説明する。
図15の画素1501は、影のかかった背景領域である。まず始めに、画像処理装置400の生成部403は、特定部402で特定した文字線幅以上の線を辺又は内部に含み得る枠を生成する。生成部403は、例えば、画像データに含まれる「U」を含む領域1502において、影の領域が曲線であることから、特定した文字線幅以上の線を辺又は内部に含む三角形の枠を生成する。ただし、生成する枠は三角形に限定されない。例えば、直径が文字線幅以上の長さをもつ円を枠としても良い。画像内の影の領域が曲線を有するかどうかについては、入力部401から予め設定を受け付けておく。
画像処理装置400の調整部404は、図15の画素1501に対し、生成部403で生成した三角形の枠の頂点を重ね、重ねた頂点を中心として、例えば、90度ごとに回転させるように配置する。図16、図17は図15の画像データ1400に含まれる画素1401に対し、枠を配置する位置の具体例と、それぞれの枠の位置における輝度ヒストグラムを示す図である。
図15の画素1501に対し、生成部403で生成した枠の各頂点を重ねて配置した際の図を図16(a)、図16(c)、図17(a)、図17(c)に示す。図16(a)は三角形の枠が画素1501の下側に、図16(c)は三角形の枠が画素1501の左側に、図17(a)は三角形の枠が画素1501の上側に、図17(c)は三角形の枠が画素1501の右側に位置するように配置した図である。図16(b)、図16(d)、図17(b)、図17(d)はそれぞれ、図16(a)の枠1601、図16(c)の枠1602、図17(a)の枠1701、図17(c)の枠1702の領域に含まれる輝度ヒストグラムを示す。
画像処理装置400の判定部405は図16、図17の枠1601、枠1602、枠1701、枠1702の領域においてniblack法による処理を行い、注目画素の輝度値1501が閾値以上であるかどうかを判定する。図16、図17の輝度ヒストグラムが示すように、注目画素1501の輝度値は枠1701の領域において閾値より小さくなるが、枠1601、枠1602、枠1702の領域において、閾値以上となる。よって、処理フローに従い、注目画素1501は背景領域であると判定する。以上のように、生成部403で生成する枠を影の形状に基づいて決定することで、文字領域であるかどうかを精度良く判定することができる。
上述の処理では、各画素に対し4つの枠の位置における判定を行い文字領域であるかどうかを判定したが、判定を行う際の枠の決め方や配置方法については上述のものに限定されない。例えば、注目画素に対し枠の頂点ではなく枠の各辺の中点や枠の中心等を重ね判定を行っても良い。また、枠の角度についても例えば、90度ではなく任意の角度毎に配置を行っても良い。このような処理を行うことでより精度良く文字領域であるかどうかの判定を行うことができる。
次に、第2の実施形態に係る画像処理装置400について説明する。
第2の実施形態に係る画像処理装置400は、第1の実施形態に係る画像処理装置400の機能に加え、特定部402で、画像データに含まれる影の領域の境界の角度を特定する。第2の実施形態に係る画像処理装置400は、特定した影の状態に基づき、第1の実施形態で説明した枠を配置する位置や枠の角度を調整する。画像処理装置400は、影の領域の角度に応じて枠を配置する位置や枠の角度を調整することで、注目画素が文字領域であるかどうかの判定を効率良く行うことができる。影の領域の角度の算出方法や、枠の配置の仕方、については後述する。
図18は第2の実施形態に係る画像処理装置400が、文字領域を特定する際の処理フローを示す図である。
第2の実施形態に係る画像処理装置400は、まず始めに入力部401で入力装置408から画像データを受信する(ステップS1801)。
画像処理装置400の特定部402は、入力部401で受信した画像データに含まれる文字線幅を特定する(ステップS1802)。
画像処理装置400の特定部402は、受信した画像データに影が含まれるかどうかを判定する。画像データに影が含まれるかどうかを判定する際の方法としては、例えば、画像が撮影された時間帯に応じて判定する。ただし、画像データに影が含まれるかどうかの判定方法は前述のものに限定されない。画像処理装置400の特定部402は、影が存在すると判定した場合(ステップS1803:Yes)、画像データに含まれる影の角度を特定する(ステップS1804)。画像処理装置400は特定部402で影の領域の境界の角度を特定した後、生成部403で枠を生成する(ステップS1805)。一方、画像処理装置400の特定部402は画像データ内に影を含まないと判定した場合(ステップS1803:No)、生成部403で枠を生成する(ステップS1805)。
画像処理装置400の判定部405は、生成部403で枠の生成をした後、受信した画像データに含まれる各画素または各領域の中から、文字領域であるかどうかの判定を行う注目画素を選択する(ステップS1806)。
画像処理装置400の調整部404は、判定部405が選択した注目画素に対し、生成部403で生成した枠を配置する(ステップS1807)。第2の実施形態では、調整部404が枠を調整する際に、特定部402で特定した影の角度の情報に基づいて枠を配置する位置を調整する。画像処理装置400の調整部404が特定部402で特定した影の角度の情報に基づいて枠を配置する位置を調整する際の処理については後述する。
画像処理装置400の判定部405は、調整部404で調整して配置した枠において、niblack法による処理を行い、注目画素の輝度値が閾値以上であるかどうかを判定する(ステップS1808)。画像処理装置400の判定部405は、注目画素の輝度値が閾値以上であると判定した場合(ステップS1808:Yes)、注目画素は文字領域でないと判定する(ステップS1809)。
画像処理装置400の判定部405は、注目画素の輝度値が閾値以上でないと判定した後、受信部401から受信した画像データにおいて、他に注目画素があるかどうかを判定する(ステップS1813)。画像処理装置400の判定部405は、注目画素の輝度値が閾値以上でないと判定した場合(ステップS1808:No)、注目画素に対し、他の枠の位置での判定があるかどうかを判定する(ステップS1810)。
画像処理装置400の判定部405は、他の枠位置における判定があると判定した場合(ステップS1810:Yes)に、調整部404で調整した他の枠の位置に枠を移動する(ステップS1811)。画像処理装置400の判定部405は、枠を移動した後、再度、注目画素の輝度値が閾値以上であるかどうかを判定する(ステップS1808)。
画像処理装置400の判定部405は、注目画素に対し、他の枠の位置での判定がないと判定した場合(ステップS1810:No)、注目画素は文字領域であると判定する(ステップS1812)。画像処理装置400の判定部405は、他に注目画素が存在するかどうかを判定する(ステップS1813)。画像処理装置400の判定部405は、入力部401で受信した画像データにおいて、判定が完了していない注目画素が存在する場合(ステップS1813:Yes)、注目画素を選択し(ステップS1806)、注目画素が文字領域であるかどうかを判定する。一方、画像処理装置400の判定部405は、入力部401で受信した画像データにおいて、他に注目画素が存在しないと判定した場合(ステップS1813:No)、処理を終了する。
画像処理装置400は、処理フローにより文字領域を特定した後、認識部406で特定した文字領域に対してラベリングを行い、文字認識を行い、認識した文字を出力部407から出力する。
次に、第2の実施形態において、影の領域の角度の算出方法について説明する。
図19は、看板1903をカメラ1904で撮影する場合の模式図である。図20はカメラ1904で撮影した画像において、看板1903に影がかかっている状態を示す図である。図19に示すように看板1903上には、光源1901からの光が、遮蔽物1902に遮られることにより発生する影の領域が存在する。図20に示す画像に含まれる看板1903にかかった影の角度を算出する方法について以下に説明する。
画像処理装置400の判定部405は、まず始めに、任意の3次元モデル(ワールド座標系)における、光源1901の位置の座標(Rw)と壁1902の座標、看板1903の座標とから、看板1903に係る影の境界領域の終端の座標を計算する。図19において看板1903にかかる影の領域の終端の座標をAw、Bwとする。
画像処理装置400の判定部405は、ワールド座標系(Xw、Yw、Zw)と、カメラ位置(Oc)を原点とするカメラ座標系(Xc、Yc、Zc)の相対位置から、ワールド座標とカメラ座標間の座標変換行列Mwcを算出する。画像処理装置400の判定部405は、ワールド座標系における影の領域の終端の座標Aw、Bwと、座標変換行列Mwcからカメラ座標系における影の境界領域の終端の座標Ac、Bcを算出する。
続いて、画像処理装置400の判定部405は、カメラ位置(Oc)を原点とするカメラ座標系(Xc、Yc、Zc)と、スクリーンの端(Os)を原点とするスクリーン座標系(Xs、Ys、Zs)の相対位置から、カメラ座標とスクリーン座標間の座標変換行列Mcsを算出する。画像処理装置400の判定部405は、カメラ座標系における影の境界領域の終端の座標Ac、Bcと座標変換行列Mcsからスクリーン座標系における影の境界領域の終端の座標As、Bsを算出する。
画像処理装置400の判定部405は、スクリーン座標系における影の境界領域の終端の座標As、Bsのそれぞれのx座標とy座標との値から看板1903に係る影の角度を算出する。
上述の方法により影の角度を特定することができ、調整部404で影の領域の位置や角度に応じて、枠を配置する位置や角度を調整し、注目画素が文字領域であるかどうかの判定をすることができる。
影の境界の角度を特定しておくことで、例えば、以下に示すように処理量を減らすことができる。例えば、境界付近の注目画素に対し、影の境界の角度に対応するように配置することで処理量を減らすことができる。例えば、注目画素付近に存在する影の境界に沿うように画像の枠を配置することにより、少ない配置の仕方で文字領域であるかを判定することができる。以下に影の境界の角度を特定することにより、処理量を減らす場合の例について説明する。
図21は画像処理を行う対象となる画像データの例を示す図である。図21に示すような「FUJITSU」の画像データ2100に影がかかっている場合において、影の境界の角度が分かっている場合の処理について説明する。図21に示す「FUJITSU」の画像データ2100に含まれる「T」という文字を含む領域2102について、文字領域であるかどうかを判定する場合の処理について説明する。今回、画像処理装置400が影のかかる領域と影のかからない領域付近の画素2101について文字領域であるかどうかを判定する場合の処理について説明する。
図21の画素2101は、影のかかった背景領域である。まず始めに、画像処理装置400の生成部403は、特定部402で特定した文字線幅を有する箇所を含む文字領域の一部よりも大きい枠を生成する。今回の処理では特定部402で影の領域の境界の角度を特定しているので、調整部404は、影の領域の境界に枠の一辺が沿うように、あるいは平行になるように配置する。なお、配置する際、例えば、辺の中点が注目画素と重なるように配置する。図22は図21の画像データ2100に含まれる画素2101に対し、枠を配置する位置の具体例と、それぞれの枠の位置における輝度ヒストグラムを示す図である。図21の画素2101に対し、生成部403で生成した枠の上辺と下辺の中点を重ねて配置した際の図を図22(a)、図22(c)に示す。図22(b)、図22(d)はそれぞれ図22(a)の枠2201、図22(c)の枠2202の領域に含まれる輝度ヒストグラムを示す。
画像処理装置400の判定部405は図22の枠2201、枠2202の領域においてniblack法による処理を行い、注目画素の輝度値2101が閾値以上であるかどうかを判定する。図22に示すように、枠2201の領域において、注目画素2101の輝度値は閾値より小さいが、枠2201の領域において、注目画素2101の輝度値は閾値以上となる。よって、処理フローに従い、注目画素2101は背景領域であると判定する。以上のように、影の領域に沿って枠を配置することにより、正しく背景と文字を判定できる枠の配置をとることができ、より少ない枠の配置で文字領域であるかどうかを判定することができる。例えば、影のかかり方に基づいて、枠に含まれる領域が全て影の領域となるような枠の配置(正しく背景と文字を判定できる枠の配置)を特定することができれば、その枠の位置のみでの判定により、注目画素が背景領域であると判定することも可能である。
図23は、本実施形態(第1、第2の実施形態)に係る画像処理装置400をハードウェアプロセッサを用いて構成する場合の例を示す図である。画像処理装置400は、CPU(Central Processing Unit)2301とメモリ(主記憶装置)2302と、補助記憶装置2303と、I/O装置2304、ネットワークインタフェース2305を有する。これらの各装置はバス2306を介して接続される。
CPU2301は画像処理装置400全体の制御を司る。図7、図18のフローに示した各処理を実行する。メモリ2302には、本実施形態に係る処理を行うプログラムが記憶されている。
CPU2301は補助記憶装置2303から処理に関するプログラムの情報を読み出し、メモリ2302に格納する。さらにCPU2301は、メモリ2302に格納された情報に基づき、画像処理を行う。ただし、すべての処理に関する情報は常にメモリ2302に格納される必要はなく、処理に用いられるデータがメモリ2302に格納されれば良い。また、処理に関するプログラムは必ずしも補助記憶装置2303に記憶しておく必要はなく、例えば、コンピュータに挿入されるディスク等の可搬用媒体に記憶させておいても良い。
I/O装置2304は、例えば、入力装置408からの画像データの受信や、画像処理に関する設定等の入力を受け付ける。また、画像処理の結果等をディスプレイ等に出力する。
ネットワークインタフェース2305は、ネットワーク上での情報のやり取りを行うインタフェース装置である。
バス2306は上記各装置を互いに接続し、データのやり取りを行う通信経路である。
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を採ることができる。