【実施例】
【0044】
以下では、
図1を用いて説明した画像2値化手法を適用した画像2値化方法および画像2値化装置についての実施例を詳細に説明する。なお、以下では、画像読取装置(たとえば、スキャナ装置)から入力画像を取得する画像2値化装置について説明するが、スキャナ装置を含んだ画像2値化装置を構成することとしてもよい。
【0045】
図2は、本実施例に係る画像2値化装置10の構成を示すブロック図である。なお、同図には、画像2値化装置10の特徴を説明するために必要な構成要素のみを示しており、一般的な構成要素についての記載を省略している。
【0046】
図2に示すように、画像2値化装置10は、画像読取装置20と接続されており、画像読取装置20が読み取った画像(たとえば、帳票をスキャンした画像)を取得する。なお、画像読取装置20としては、たとえば、いわゆるスキャナ装置を用いることができる。
【0047】
画像2値化装置10は、制御部11と、記憶部12とを備えており、制御部11は、マスク画像生成部11aと、マスク画像修正部11bと、型抜き部11cと、ラベリング部11dと、閾値決定部11eと、2値化処理部11fとをさらに備えている。そして、記憶部12は、ラベル情報12aと、閾値情報12bとを記憶する。
【0048】
マスク画像生成部11aは、画像読取装置20から入力画像が入力された場合に、入力画像のエッジ強度に基づくマスク画像を生成する処理部である。具体的には、マスク画像生成部11aは、ソーベルフィルタを用いて入力画像からエッジを抽出することによって微分画像を生成し、生成した微分画像を所定のエッジ強度閾値を用いて閾値処理することでマスク画像を生成する。
【0049】
ここで、マスク画像生成部11aによるマスク画像生成処理の処理手順について
図3を用いて説明しておく。
図3は、マスク画像生成処理の処理手順を示す図である。
【0050】
図3に示すように、マスク画像生成部11aは、水平方向および垂直方向のソーベルフィルタを入力画像に対してそれぞれ掛けることにより、微分値を各画素値とする水平方向のエッジ画像および垂直方向の微分画像を生成する(
図3の(1)参照)。
【0051】
なお、本実施例では、微分フィルタの一例としてソーベルフィルタを用いる場合について説明するが、プレヴィットフィルタやラプラシアンフィルタ等のソーベルフィルタ以外のフィルタを微分フィルタとして用いてもよい。
【0052】
つづいて、マスク画像生成部11aは、水平方向および垂直方法のそれぞれの微分画像ごとにエッジ強度閾値を決定する(
図3の(2)参照)。なお、かかるエッジ強度閾値決定処理の具体的な内容については、
図4を用いて後述することとする。
【0053】
つづいて、マスク画像生成部11aは、微分画像ごとに決定したエッジ強度閾値をそれぞれ用いて各微分画像の閾値処理を行う(
図3の(3)参照)。
【0054】
具体的には、マスク画像生成部11aは、微分値の絶対値であるエッジ強度がエッジ強度閾値以上の画素のうち、微分値が負の画素を黒画素(画素値「−1」)とし、微分値が正の画素を白画素(画素値「1」)とする。また、マスク画像生成部11aは、エッジ強度がエッジ強度閾値未満の画素をグレー画素(画素値「0」)とする。これにより、黒、白またはグレーの3色であらわされたエッジ画像が得られる。このように、閾値処理後の微分値画像がエッジ画像となる。
【0055】
そして、マスク画像生成部11aは、エッジ画像の各画素のうち黒画素または白画素を「白画素」へ変換するとともにグレー画素を「黒画素」へ変換したうえで、両エッジ画像を合成することで(
図3の(4)参照)、白黒2値のマスク画像を生成する。なお、以下では、マスク画像の白画素を「有効画素」と呼び、黒画素を「無効画素」と呼ぶ場合がある。
【0056】
ここで、
図3の(2)に示したエッジ強度閾値決定処理について
図4を用いて説明する。
図4は、エッジ強度閾値決定処理の説明図である。なお、同図では、一例として、水平方向の微分画像についてのエッジ強度閾値決定処理を示している。また、同図の(A)には、水平方向の微分画像の微分値分布を、同図の(B)には、エッジ強度分布の2次微分値に基づいてエッジ強度閾値が決定される様子を、それぞれ示している。なお、エッジ強度分布とは、微分値の絶対値であるエッジ強度の分布である。
【0057】
図4の(A)に示したように、入力画像の微分値分布(言い換えると、微分画像の画素値分布)は、なだらかな分布の山の頂点付近(微分値が「0」の近傍)に急峻なピークを有する形状となっている(同図の(A−1)参照)。ここで、かかる微分値分布は、同図の(A−2)に示した背景領域の微分値分布と、同図の(A−3)に示した罫線・文字領域の微分値分布とが合成されていると考えられる。
【0058】
具体的には、背景領域の画素は、微分値が「0」のものが圧倒的に多い。これは、背景領域には、エッジが存在しないのが通常であるためである。ただし、汚れ等による微小な濃淡差もあるため、背景領域には微分値が「0」以外の画素もわずかながら存在する。したがって、背景領域のエッジ強度分布は、
図4の(A−2)に示したように、微分値「0」を頂点として指数関数的に減少する傾向がある。
【0059】
一方、罫線や文字を構成する画素は、背景領域との濃淡差によってさまざまなエッジ強度を持つこととなる。ただし、背景領域との境界部分では画像ぼけ等によって濃淡変化がなだらなかとなるため、微分値「0」近傍の値を持つ画素が相対的に多くなる。したがって、罫線・文字領域の微分値分布は、
図4の(A−3)に示したように、微分値「0」を頂点としてなだらかに減少する傾向がある。
【0060】
そこで、マスク画像生成部11aは、微分画像のエッジ強度分布の変曲点を検出し、検出した変曲点におけるエッジ強度をエッジ強度閾値とすることで、背景領域および罫線・文字領域を分離することとした。
【0061】
具体的には、マスク画像生成部11aは、
図4の(B)に示したように、エッジ画像の微分値の絶対値であるエッジ強度の分布を取ることで、エッジ強度を階級値とするエッジ強度分布を生成する。
【0062】
また、マスク画像生成部11aは、かかるエッジ強度分布の1次微分値を求める。また、マスク画像生成部11aは、反転後の1次微分値をさらに1次微分することによってエッジ強度分布の2次微分値を得る。なお、
図4の(B)では、1次微分値に対して「−1」を掛けて正負を反転させたものを示している。
【0063】
なお、
図4の(B)に示したエッジ強度分布の左側の縦軸は「画素数」であり、「●」印でプロットされた分布の度数をあらわしている。また、同エッジ強度分布の右側の縦軸は「微分値」であり、「▲」印でプロットされた分布および「■」印でプロットされた分布の度数をあらわしている。
【0064】
つづいて、マスク画像生成部11aは、エッジ強度分布の2次微分値の正負が変わる点(ゼロクロス点)を変曲点として検出する。具体的には、マスク画像生成部11aは、正負が変わる前後の各2次微分値(プロット値)を結ぶ直線と微分値「0」との交点を変曲点として検出する。そして、マスク画像生成部11aは、検出した変曲点におけるエッジ強度をエッジ強度閾値として決定する。
【0065】
このように、マスク画像生成部11aは、入力画像のエッジ強度を用いてエッジ強度分布を生成するとともに、生成したエッジ強度分布の2次微分値に基づいて当該エッジ強度分布の変曲点を検出し、検出した変曲点におけるエッジ強度をエッジ強度閾値として決定する。したがって、罫線・文字領域と背景領域とが適切に分離されたマスク画像を得ることができる。
【0066】
また、本実施例では、背景領域のエッジ強度分布および罫線・文字領域のエッジ強度分布の形状の違いに着目してエッジ強度閾値を決定することとした。したがって、
図4の(A)に示したように、2つの分布が重なっている場合であっても、背景領域と罫線・文字領域とを適切に分離することができる。
【0067】
なお、ここでは、ゼロクロス点を変曲点として検出する場合について説明したが、これに限ったものではない。たとえば、正負が変わった直前または直後のプロット値を変曲点として検出してもよい。このようにすれば、ゼロクロス点を算出する必要がなくなるため、変曲点の検出に要する処理負荷を低減することができる。また、移動平均等により平滑化した値を用いて変曲点を検出することとすれば、ノイズの影響が除外されるため、変曲点をより適切に検出することができる。
【0068】
また、ここでは、水平方向のエッジ画像についてのエッジ強度閾値決定処理について説明したが、垂直方向のエッジ画像についても同様の手順でエッジ強度閾値を決定することができる。また、マスク画像生成部11aは、マスク画像を生成すると、生成したマスク画像をエッジ画像とともにマスク画像修正部11bへ渡す処理を行う。
【0069】
図2の説明に戻り、マスク画像修正部11bについて説明する。マスク画像修正部11bは、エッジ画像を用いてマスク画像の修正を行う処理部である。
【0070】
ここで、マスク画像修正部11bによるマスク画像修正処理について
図5を用いて説明する。
図5は、マスク画像修正処理の説明図である。なお、同図の(A)には、マスク画像の修正すべき箇所を、同図の(B)には、マスク画像修正処理の動作例を、同図の(C)には、谷画像および山画像による修正後のマスク画像の一例を、それぞれ示している。
【0071】
図5の(A−1)に示したように、入力画像において2つの線が近接している場合、エッジ画像では、一方の線から得られるエッジ画素のうち正のエッジ強度を持つ正エッジ画素(白画素)が、他方の線から得られるエッジ画素のうち負のエッジ強度を持つ負エッジ画素(黒画素)と接することがある。このような場合、マスク画像では、これら2つの線が1本の線としてあらわされることとなる。
【0072】
また、
図5の(A−2)に示したように、入力画像中に太い線が存在する場合、エッジ画像では、かかる線から得られる正エッジ画素(白画素)および負エッジ画素(黒画素)が離れる場合がある。このような場合、マスク画像では、1本の線が2本線としてあらわされることとなる。
【0073】
そこで、マスク画像修正部11bは、異なる線からそれぞれ得られる正エッジ画素および負エッジ画素間の境界(
図5の(A−1)に示した「谷」)を検出し、かかる谷を含んだ谷領域に位置するマスク画像の白画素を黒画素へ置き換えることで、1つに結合した線を本来の2本線に修正する。
【0074】
また、マスク画像修正部11bは、1つの線から得られる正エッジ画素および負エッジ画素間の境界(
図5の(A−2)に示した「山」)を検出し、かかる山を含んだ山領域に位置するマスク画像上の黒画素を白画素へ置き換えることで、2本に分離した線を本来の1本線に修正する。
【0075】
具体的には、
図5の(B)に示したように、マスク画像修正部11bは、エッジ画像を所定の走査方向(ここでは、右方向)に向かって1画素ずつ走査していき、白画素から黒画素へ変化している境界である谷を検出する。そして、マスク画像修正部11bは、谷を検出すると、検出した谷の両側に位置する白画素および黒画素を含んだ領域を谷領域として抽出する(同図の(B−1)参照)。
【0076】
同様に、マスク画像修正部11bは、黒画素から白画素へ変化している境界である山を検出すると、検出した山の両側に位置する黒画素および白画素を含んだ領域を山領域として抽出する(
図5の(B−2)参照)。
【0077】
また、マスク画像修正部11bは、黒画素および白画素が隣接している領域だけでなく、黒画素および白画素がグレー画素を介して所定の幅閾値(ここでは、8画素)以内で近接している領域も谷領域や山領域として抽出する。たとえば、マスク画像修正部11bは、黒画素からグレー画素を1画素介して白画素へ変化している場合には、これら黒画素、グレー画素および白画素を含んだ領域を山領域として抽出する(
図5の(B−3)参照)。
【0078】
なお、マスク画像修正部11bは、白画素および黒画素がグレー画素を介して所定の幅閾値以上離れている場合には、かかる領域を谷領域または山領域として検出しない(
図5の(B−4)参照)。また、ここでは、水平方向のエッジ画像から谷領域および山領域を抽出する場合のみを示しているが、垂直方向のエッジ画像からも同様に谷領域および山領域を抽出する。
【0079】
つづいて、マスク画像修正部11bは、抽出した谷領域を黒画素(無効画素)としその他の領域を白画素(有効画素)とした谷画像を生成する。同様に、マスク画像修正部11bは、抽出した山領域を白画素(有効画素)としその他の領域を黒画素(無効画素)とした山画像を生成する。
【0080】
そして、マスク画像修正部11bは、谷画像の黒画素(無効画素)に対応するマスク画像の白画素(有効画素)を黒画素(無効画素)へ置き換える。すなわち、マスク画像に谷画像を重ね合わせて、谷画像の黒い部分に位置するマスク画像の白い部分を黒に置き換える。これにより、
図5の(C)に示したように、異なる線同士の境界部分が黒画素となり、結合してしまった罫線や文字同士が分離される。
【0081】
また、マスク画像修正部11bは、山画像の白画素(有効画素)に対応するマスク画像の黒画素(無効画素)を白画素(有効画素)へ置き換える。これにより、
図5の(C)に示したように、本来ならば1つの線であるべき2本線の境界部分が白画素となり、分離してしまった1つの罫線や文字が結合される。
【0082】
つまり、谷画像や山画像を用いてマスク画像を修正することによって、後述するラベリング処理を適切に行うことが可能となる。
【0083】
このように、マスク画像修正部11bは、正エッジ画素(白画素)と負エッジ画素(黒画素)との境界領域であって、正エッジ画素および負エッジ画素の並び順が、1つの線分から得られる正エッジ画素および負エッジ画素の並び順とは逆である境界領域を谷領域として抽出する。また、マスク画像修正部11bは、抽出した谷領域に位置するマスク画像の有効画素(白画素)を無効画素(黒画素)と置き換える。したがって、マスク画像において結合してしまった罫線や文字同士を適切に分離することができる。
【0084】
また、マスク画像修正部11bは、正エッジ画素(白画素)と負エッジ画素(黒画素)との境界領域であって、正エッジ画素および負エッジ画素の並び順が、1つの線分から得られる正エッジ画素および負エッジ画素の並び順と同じである境界領域を山領域として抽出する。また、マスク画像修正部11bは、抽出した山領に位置するマスク画像の無効画素(黒画素)を有効画素(白画素)と置き換える。したがって、マスク画像において分離してしまった1つの罫線や文字を適切に結合することができる。
【0085】
なお、マスク画像修正部11bは、修正後のマスク画像を型抜き部11cおよびラベリング部11dへ渡す処理を併せて行う。
【0086】
図2の説明に戻り、型抜き部11cについて説明する。型抜き部11cは、マスク画像修正部11bから修正後のマスク画像(以下、単に「マスク画像」と記載する)を受け取った場合に、受け取ったマスク画像を用いて入力画像の型抜きを行う処理部である。具体的には、型抜き部11cは、マスク画像の有効画素(白画素)に対応する画素を入力画像から抽出することによって型抜き画像を生成する処理を行う。
【0087】
また、型抜き部11cは、型抜き画像を生成すると、生成した型抜き画像を閾値決定部11eおよび2値化処理部11fへ渡す処理を併せて行う。
【0088】
ラベリング部11dは、マスク画像修正部11bからマスク画像を受け取った場合に、受け取ったマスク画像の有効画素を連続領域ごとに区分けするラベリング処理を行う処理部である。これにより、マスク画像は、罫線ごとあるいは文字ごとに区分けされる。
【0089】
また、ラベリング部11dは、ラベリング処理を完了すると、各連続領域の位置情報をラベル情報12aとして記憶部12へ記憶させる。
【0090】
閾値決定部11eは、型抜き部11cから型抜き画像を受け取った場合に、マスク画像の各連続領域に対応する型抜き画像の個別領域をラベル情報12aに基づいて特定し、特定した個別領域ごとに2値化閾値を決定する処理部である。具体的には、閾値決定部11eは、個別領域の輝度分布を生成し、生成した輝度分布に基づいて2値化閾値を決定する処理を行う。
【0091】
ここで、閾値決定部11eによる閾値決定処理について
図6を用いて説明する。
図6は、閾値決定処理の説明図である。なお、同図の(A−1)には、入力画像の一例を、同図の(A−2)には、入力画像から生成されるマスク画像を、同図の(A−3)には、入力画像上にマスク画像を重ね合わせた図を、同図の(A−4)には、入力画像の2値画像をそれぞれ示している。また、同図の(B)には、個別領域の輝度分布の一例を、それぞれ示している。
【0092】
図6の(A−2)に示したマスク画像を用いて同図の(A−1)に示した入力画像を型抜きすると、同図の(A−3)の領域200aや領域200bに示したように、入力画像の罫線や文字とともに周囲の背景も抜き出されることとなる。これは、マスク画像では、罫線や文字が入力画像よりも太く、背景を完全に除去しきれないためである。なお、同図の(A−3)に示した領域200aは、同図の(A−2)に示した連続領域100aに対応する型抜き画像の個別領域の一部であり、同図の(A−3)に示した領域200bは、同図の(A−2)に示した連続領域100bに対応する型抜き画像の個別領域の一部である。
【0093】
ここで、背景領域の色は、罫線・文字領域の色よりも薄いのが通常である。言い換えれば、背景領域の輝度は、罫線・文字領域の輝度よりも高いのが通常である。そこで、閾値決定部11eは、
図6の(B)に示したように、個別領域の輝度分布を生成し、生成した輝度分布のうち、最も高輝度側に位置する山部とかかる山部に隣接する他の山部によって形成される谷部400における輝度値を2値化閾値として決定する。これにより、型抜き処理において除去しきれなかった背景領域をより確実に除去する2値化閾値を個別領域ごとに得ることができる。そして、この結果、同図の(A−4)に示したように、型抜き処理において除去しきれなかった背景領域がより確実に除去された2値画像を得ることができる。
【0094】
なお、
図6の(A−3)に示した領域200aのように、罫線の外側および内側に存在する背景の輝度が異なる領域では、輝度の高い(明るい)背景のみが除去され、輝度の低い(暗い)背景が除去されずに残存することとなる。このため、同図の(A−4)に示した領域300aのように、2値画像では、一部が入力画像と比較して若干太く表示される場合がある。ただし、マスク画像を用いて入力画像の型抜きを行った時点で、大部分の背景領域を罫線・文字領域から分離することができているため、背景領域がわずかに残っていたとしても、これによって2値画像の視認性が損なわれることはない。
【0095】
また、閾値決定部11eは、2値化閾値を決定すると、決定した2値化閾値を対応する個別領域の位置情報とともに閾値情報12bとして記憶部12へ記憶させる処理を併せて行う。
【0096】
図2の説明に戻り、2値化処理部11fについて説明する。2値化処理部11fは、型抜き部11cから型抜き画像を受け取った場合に、型抜き画像の個別領域および各個別領域に適用すべき2値化閾値を閾値情報12bに基づいて特定したうえで、個別領域ごとに2値化処理を行う処理部である。なお、2値化処理部11fは、全ての個別領域についての2値化を終えると、2値化後の型抜き画像を2値画像として出力する。
【0097】
記憶部12は、不揮発性メモリやハードディスクドライブといった記憶デバイスで構成される記憶部であり、ラベル情報12aと、閾値情報12bとを記憶する。ラベル情報12aは、ラベリング部11dによって生成される情報であり、マスク画像の連続領域を識別する識別情報ごとに、対応する連続領域の位置情報を関連付けた情報である。また、閾値情報12bは、閾値決定部11eによって生成される情報であり、個別領域の位置情報ごとに、対応する個別領域に対して適用される2値化閾値を関連付けた情報である。
【0098】
次に、本実施例に係る画像2値化装置10が実行する処理手順について
図7を用いて説明する。
図7は、画像2値化装置10が実行する処理手順を示すフローチャートである。
【0099】
図7に示すように、画像2値化装置10では、マスク画像生成部11aが、平均値フィルタ等を用いて入力画像を平滑化したうえで(ステップS101)、ソーベルフィルタを用いて水平方向および垂直方向に一次微分を行って微分画像をそれぞれ生成する(ステップS102)。
【0100】
つづいて、マスク画像生成部11aは、エッジ強度分布を用いて各微分画像のエッジ強度閾値を決定し(ステップS103)、決定したエッジ強度閾値を用いて各微分画像を閾値処理することによってエッジ画像を生成する(ステップS104)。そして、マスク画像生成部11aは、各エッジ画像を合成することによってマスク画像を生成する(ステップS105)。
【0101】
つづいて、画像2値化装置10では、マスク画像修正部11bが、各エッジ画像を用いて谷画像および山画像を生成するとともに生成した谷画像および山画像を用いてマスク画像を修正し(ステップS106)、型抜き部11cが、修正後のマスク画像を用いて入力画像の型抜きを行うことによって型抜き画像を生成する(ステップS107)。また、ラベリング部11dは、修正後のマスク画像のラベリング処理を行う(ステップS108)。
【0102】
つづいて、画像2値化装置10では、閾値決定部11eが、型抜き画像の個別領域を1つ選択し(ステップS109)、選択した個別領域の輝度分布に基づいて2値化閾値を決定し(ステップS110)、2値化処理部11fが、決定した2値化閾値を用いて個別領域内の画素を2値化する(ステップS111)。
【0103】
そして、画像2値化装置10では、全ての個別領域について処理済みか否かを判定し(ステップS112)、処理済みでなければ(ステップS112、No)、未処理の個別領域についてステップS109〜S112の処理を繰り返す。一方、全ての個別領域について処理済みである場合には(ステップS112、Yes)、処理を終了する。
【0104】
上述してきたように、本実施例では、マスク画像生成部が、入力画像の微分値の絶対値であるエッジ強度を求めるとともに、かかるエッジ強度が所定のエッジ強度閾値以上の画素を有効画素としエッジ強度閾値未満の画素を無効画素とした2値のマスク画像を生成し、型抜き部が、マスク画像の有効画素に対応する画素を入力画像から抽出することによって型抜き画像を生成し、ラベリング部が、マスク画像の有効画素を連続領域ごとに区分けし、閾値決定部が、連続領域に対応する型抜き画像の個別領域ごとに、かかる個別領域の輝度分布に基づいて2値化閾値を決定し、2値化処理部が、個別領域ごとに、2値化閾値を用いてかかる個別領域に含まれる画素を2値化することとした。したがって、入力画像の罫線や文字あるいは背景に多様な濃淡差がある場合であっても適切な2値画像を得ることができる。
【0105】
ところで、帳票等では、各項目の境界線が、罫線ではなく背景色の違いで表現される場合がある。このような境界線では、罫線とは異なりエッジが片側にしかあらわれないため、マスク画像においてかすれが生じ易く、適切な型抜き画像を生成することができないおそれがある。
【0106】
そこで、マスク画像修正部11bは、上記のような境界線や罫線のように比較的長く連続する線分のエッジをエッジ強度閾値とは異なる条件を用いて検出し、検出結果を用いてマスク画像を修正することによって上記のかすれを解消することとしてもよい。ここで、かかるマスク画像修正処理について
図8を用いて説明する。
図8は、マスク画像修正処理の他の処理手順を示すフローチャートである。
【0107】
図8に示すように、マスク画像修正部11bは、所定のエッジ強度以上の画素が水平方向に所定以上連続している領域を水平方向の微分画像から抽出する(ステップS201)。同様に、マスク画像修正部11bは、所定のエッジ強度以上の画素が垂直方向に所定以上連続している領域を垂直方向の微分画像から抽出する(ステップS202)。たとえば、マスク画像修正部11bは、エッジ強度が「2」以上の画素が50画素以上連続している領域を各エッジ画像から抽出する。
【0108】
つづいて、マスク画像修正部11bは、各微分画像から抽出した領域に対応するマスク画像の無効画素(黒画素)を有効画素(白画素)へ置き換え(ステップS203)、処理を終了する。
【0109】
これにより、背景色の違いで表現された境界線や罫線のマスク画像におけるかすれを解消できるため、より適切な型抜き画像を得ることができる。
【0110】
また、上述してきた実施例では、マスク画像を用いて入力画像から罫線および文字の両方を抜き出すこととしたが、罫線だけあるいは文字だけを入力画像から抜き出すこともできる。
【0111】
かかる場合、型抜き部11cは、マスク画像の各連続領域の中から所定の条件に合致する連続領域をラベル情報12aを用いて特定し、特定した連続領域のみを用いて入力画像の型抜きを行う。たとえば、型抜き部11cは、水平方向または垂直方向に50画素以上連続している連続領域のみを用いて入力画像の型抜きを行うことで、文字や点線あるいはノイズを抜き出すことなく、罫線だけを抜き出すことができる。