(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
ここでは、下記の順序に従って本発明の実施の形態について説明する。
(1)スキャナーの構成:
(2)二値化処理:
(3)他の実施形態:
【0016】
(1)スキャナーの構成:
図1は、本発明の実施形態にかかる画像処理装置として機能するスキャナー1の構成を示すブロック図である。スキャナー1は、コントローラー10と、メモリー20と、UI(User Interface)部30と、通信部40と、画像読取部50とを備える。
【0017】
UI部30は、タッチパネル式のディスプレイやキー入力部を含む。ディスプレイは、表示パネルと、表示パネルに重ねられたタッチ検出パネルとを備える。ディスプレイは、コントローラー10の制御に基づいて様々な情報を表示パネルに表示する。また、ディスプレイはタッチ検出パネルに対する人の指等による接触を検出し、接触座標をコントローラー10に出力する。キー入力部は、電源ボタンやスタートボタン、キャンセルボタン、数字ボタン等のキーに対する操作を検出すると操作されたキーを示すキー操作情報をコントローラー10に出力する。
【0018】
通信部40は、リムーバブルメモリーや、外部の機器と各種の通信プロトコルに従って通信するための通信インターフェース回路を含む。画像読取部50は、原稿に発光し原稿からの反射光を受光して読み取りデータとする周知のカラーイメージセンサーや光源、機械部品等を備えている。本実施形態において、画像読取部50は、複数の色チャネルの多階調データとして画像を読み取ることができる。従って、画像読取部50から出力される画像は多値画像である。
【0019】
メモリー20には、画像読取部50が読み取った多値画像を示す多値画像データ20aや、多値画像データ20aが示す多値画像を二値化した二値画像データ20bを記録することができる。
【0020】
コントローラー10は、UI部30から取得した上記の情報に基づいて利用者の操作内容を取得することができ、当該操作内容に対応する処理を実行することができる。コントローラー10が実行可能な処理には種々の処理が含まれ、例えば、画像読取部50における読み取りの指示や読み取った多値画像を二値化する指示、読み取った多値画像や二値化された二値画像をリムーバブルメモリーや外部の機器に送信する指示等が含まれる。むろん、スキャナー1は、スキャナー1に接続された外部の機器(例えば、他のコンピューターや携帯端末等)に制御されても良い。
【0021】
コントローラー10は、CPU,RAM等を備え、メモリー20に記録された種々のプログラムを実行することによって、スキャナー1の各機能を実現する。コントローラー10が実行する種々のプログラムには、画像読取部50で読み取った多値画像を二値化する機能をコントローラー10に実現させるための画像処理プログラム11が含まれる。当該二値化を行う画像処理プログラム11は、例えば、可読性が重要である文字の書かれた文書の原稿等を、少ないデータ量で読み取る等の目的で実行される。
【0022】
当該機能を実現するため画像処理プログラム11は、取得部11aと、二値部11bと、を備えている。取得部11aは、多値画像を取得する機能をコントローラー10に実行させるプログラムモジュールである。すなわち、コントローラー10は、取得部11aの機能により、画像読取部50を制御し、スキャナー1の原稿台に置かれた原稿(ADFで搬送される原稿であっても良い)を読み取って多値画像を取得する。取得された多値画像は多値画像データ20aとしてメモリー20に記録される。
【0023】
二値部11bは、多値画像を二値化した二値画像を生成する機能をコントローラー10に実行させるプログラムモジュールである。すなわち、コントローラー10は、二値部11bの機能により、メモリー20から多値画像データ20aを取得し、多値画像データ20aの画素毎の階調を二値化した二値画像データ20bを生成する。本実施形態においてコントローラー10は、多値画像の輝度値が閾値以上である場合に1、閾値より小さい場合に0とすることによって多値画像を二値画像に変換する。
【0024】
以上のように、二値化においては多値画像の階調が閾値を境にして1または0に変換されるため、閾値が不適切であると、文字等の判読されるべきオブジェクトが周囲の領域に同化してしまう場合がある。例えば、薄い(高輝度の)文字の周囲に明るい領域が存在する場合、閾値が文字の輝度より小さい値であると、文字と周囲の領域が同化してしまう。また、濃い(低輝度の)文字の周囲に暗い領域が存在する場合、閾値が文字の輝度より大きい値であると、文字と周囲の領域が同化してしまう。
【0025】
そこで、本実施形態において二値部11bは、多値画像の内容に応じて閾値を調整する機能をコントローラー10に実行させる。具体的には、コントローラー10は、多値画像中の閉領域を検出する。本実施形態において、閉領域は、多値画像において連続した領域として認識され得る領域であり、二値化において周囲の領域と区別されるべきオブジェクトである可能性がある領域である。本実施形態において、コントローラー10は、多値画像中の各画素の特徴を特定し、共通の特徴を有する画素が連続して形成する領域を閉領域として特定する。
【0026】
本実施形態において、多値画像中の各画素の特徴はエッジである。すなわち、本実施形態においてコントローラー10は、エッジ画素が連続して形成する領域や、エッジではない非エッジ画素が連続して形成する領域がオブジェクトとして認識されるとみなす。コントローラー10は、二値部11bの機能により、多値画像中のエッジを検出し、エッジに基づいて閉領域を特定する。具体的にはコントローラー10は、多値画像の各画素を注目画素として多値画像中をスキャンし、注目画素がエッジであるか否かを特定する。エッジであるか否かは種々の処理で判定されて良く、例えば、コントローラー10が、注目画素と注目画素の周囲の画素とにおける輝度の分布範囲(例えば、標準偏差や分散等)を特定し、当該分布範囲が基準値より大きい場合に注目画素をエッジと判定する構成を採用可能である。
【0027】
エッジ画素と非エッジ画素が特定されると、コントローラー10は、二値部11bの機能により、連続するエッジによって形成された領域と、エッジではない非エッジ画素が連続して形成された領域とを、閉領域として検出する。
図8〜
図12は、
図7に示す白抜きの文字とその周囲(破線で示す範囲)から抽出された閉領域の例を示している。なお、原稿上に破線はないがここでは範囲を示すためのみに破線が付してある。また、破線の長さ方向は縮小されているため実際はより広い範囲が白抜きの文字の周囲の領域である状態を想定する。本実施形態において、
図7のような白抜きの文字であれば、文字の境界線が
図9,
図11のように独立した閉領域として抽出され、これらの閉領域の周囲や内部が
図8,
図10,
図12のように独立した閉領域として抽出される。
【0028】
本実施形態においては、エッジ画素が連続する領域と非エッジ画素が連続する領域で閉領域が特定されるため、エッジ画素に基づいて特定された閉領域に非エッジ画素は含まれない。従って、
図7に示すような白抜きの文字Aの場合に、
図9に示すような境界線が閉領域とされるが、文字Aの境界線の内側に存在する非エッジ画素(例えば、
図10)や境界線の内側で境界線と非連続に存在するエッジ画素(例えば、
図11)は他の閉領域と見なされる。さらに、文字Aの境界線の外側にエッジ画素が存在せず、非エッジ画素が原稿の読み取り範囲の境界まで連続的に存在すれば、文字等の背景に相当する部位(例えば、
図8)が独立した閉領域を形成し得る。なお、閉領域を抽出するための具体的な処理は後に詳述する。
【0029】
閉領域が取得されると、コントローラー10は、二値部11bの機能により、閉領域の内部の輝度と閉領域の周囲の輝度とに基づいて各閉領域の閾値を決定し、当該閾値に基づいて各閉領域の内部を二値化する。すなわち、各閉領域は、オブジェクト(文字のパーツ等)の一部(オブジェクトの境界や内部)や、オブジェクトの背景などであるが、二値化においては、判読されるべきオブジェクトが周囲の領域と異なる色に変換されることが重要である。
【0030】
また、閉領域が判読されるべきオブジェクトである場合、閉領域は特徴的な形状をしている。例えば、文字のパーツ等は一般的には原稿と比較して小さい。また、文字のパーツ等は一般的に細い。そこで、本実施形態においては、これらの特徴を有する閉領域は、判読されるべきオブジェクトである可能性があると見なし、閉領域の内部と閉領域の周囲の輝度を考慮して閉領域の閾値を決定する。
【0031】
すなわち、コントローラー10は、二値部11bの機能により、閉領域が基準サイズより小さいまたは基準形状より細いか否かを判定する。閉領域が基準サイズより小さいまたは基準形状より細い場合、コントローラー10は、閉領域の内部の輝度と閉領域の周囲の輝度とに基づいて閾値を決定し、当該閾値に基づいて閉領域の内部を二値化する。そして、輝度に基づいて閾値を決定する際、コントローラー10は、閉領域の内部の主要部の輝度が閉領域の周囲の輝度よりも暗い場合には閉領域の主要部を黒にするように閾値を決定する。閉領域の内部の主要部の輝度が閉領域の周囲の輝度よりも明るい場合、コントローラー10は、閉領域の主要部を白にするように閾値を決定する。この構成によれば、閉領域の内部を周囲の色と逆の色にするように閾値を決定することができる。
【0032】
一方、閉領域が基準サイズより大きいかつ基準形状より太い場合、コントローラー10は、閉領域の周囲の輝度を参照せずに閉領域の内部の輝度に基づいて閾値を決定し、当該閾値に基づいて閉領域の内部を二値化する。すなわち、閉領域が基準サイズより大きいかつ基準形状より太い場合には、判読されるべきオブジェクトである可能性が低いと見なし、閉領域の内部に着目して簡易に閾値を決定する。むろん、処理の簡易さや負荷を考慮しなくても良い場合には、判読されるべきオブジェクトである可能性が低い場合であっても、閉領域の周囲の輝度を参酌して閾値が決定されても良い。また、より簡易に、固定の閾値が使用されても良い。
【0033】
なお、基準サイズは、判読されるべきオブジェクトである可能性が高いサイズであればよく、例えば、原稿サイズに基づいて文字等のオブジェクトと見なすべきサイズを統計的に決定するなどして基準サイズを決定すれば良い。基準形状は、判読されるべきオブジェクトである可能性が高い形状であれば良く、例えば、原稿サイズに基づいて文字等のオブジェクトと見なすべき形状を統計的に決定するなどして基準サイズを決定すれば良い。
【0034】
以上のようにして閾値が決定されると、コントローラー10は、各閉領域内の画素の閾値に基づいて各閉領域内の画素を二値化する。以上の構成によれば、閉領域の内部の輝度と閉領域の周囲の輝度とに基づいて二値化閾値を変化させることができ、閉領域の内部の主要部をその周囲と同化させずに二値化することができる。
【0035】
さらに、本実施形態によれば、閉領域の形状の特徴に基づいて閉領域の周囲の輝度に基づいて閾値を決定すべきか否か特定されるため、判読されるべきオブジェクトを周囲の領域と区別して二値化できる可能性を高めることができる。さらに、オブジェクトである可能性が小さい閉領域は周囲の輝度を参照しない単純な手法で二値化することができる。従って、処理を簡易化することができる。
【0036】
(2)二値化処理:
次に、上述の構成における二値化処理を詳細に説明する。
図2は二値化処理を示すフローチャートである。当該二値化処理は、例えば、利用者がUI部30を操作して原稿を読み取って二値化する指示を行った場合において、多値画像データ20aがメモリー20に記録された状態で開始される。二値化処理が開始されると、コントローラー10は、二値部11bの機能により、多値画像の輝度を取得する(ステップS100)。すなわち、コントローラー10は、メモリー20から多値画像データ20aを取得し、各画素の色チャネル毎の階調値を各画素の輝度に変換する。色チャネル毎の階調値を輝度に変換する手法は、各種の手法を採用可能であり、例えば、Y=(30×R+59×G+11×B)/100等の式によって変換可能である。ここで、Yは輝度、Rは赤チャネルの階調値、Gは緑チャネルの階調値、Bは青チャネルの階調値である。
【0037】
次に、コントローラー10は、二値部11bの機能により、エッジを検出する(ステップS200)。すなわち、コントローラー10は、多値画像の各画素を注目画素として多値画像中をスキャンし、各注目画素について輝度分散を算出する。輝度分散は、例えば、式(1)を用いて式(2)のように算出することができる。
【数1】
【数2】
【0038】
これらの式においては、注目画素の上下左右に2画素の範囲の画素が注目画素の周囲の画素であり、合計5×5画素について統計値を算出する。すなわち、Yuは輝度平均であり、i,jは画素の位置を示す符号であり、x
i,y
iは画素の位置を示している。注目画素の位置はx
3,y
3であり、Yvは輝度分散である。輝度分散は、合計5×5画素の領域における輝度の分布範囲の広さを示している。
【0039】
そこで、コントローラー10は、輝度分散と予め決められた基準値とを比較し、輝度分散が基準値以上である場合には、注目画素をエッジ画素であるとみなす。輝度分散が基準値より小さい場合、コントローラー10は、注目画素を非エッジ画素であるとみなす。なお、注目画素の上下左右に2画素の範囲に他の画素が存在しない場合、その画素は無視され、式(1)(2)における規格化定数の値が調整される。また、エッジであるか否かの判定は、他にも種々の手法で行われて良く、例えば、各種のエッジ検出フィルタ等が用いられても良い。
【0040】
次に、コントローラー10は、二値部11bの機能により、閉領域を特定する(ステップS300)。すなわち、コントローラー10は、ステップS200で検出されたエッジを参照し、エッジが連続する領域を1個の閉領域として特定し、非エッジが連続する領域を1個の閉領域として特定する処理を、全画素について実行する。
【0041】
当該閉領域の特定は、種々の手法で実施されて良い。本実施形態においては、フィルタに基づいて各画素に領域ラベルを割り振ることによって閉領域を特定する。ここで、領域ラベルは、同一の閉領域であるか否かを示す値であり、同一の閉領域には同一のラベルが割り当てられる。すなわち、各画素に対して各画素が属する閉領域を示すラベルが割り当てられる。
【0042】
図3および
図4は、領域ラベルを割り振るためのフィルタを示す図である。これらの図においては、画素を正方形で示しており、注目画素の位置をPi、参照画素の位置をPrによって示している。なお、
図3においては、注目画素がエッジ画素である場合に適用されるフィルタを示しており、
図4においては、注目画素が非エッジ画素である場合に適用されるフィルタを示している。例えば、注目画素がエッジ画素である場合、当該注目画素に
図3に示すフィルタが適用されるため、注目画素の左、左上、上、右上に位置する画素が参照画素となる。注目画素が非エッジ画素である場合、当該注目画素に
図4に示すフィルタが適用されるため、注目画素の左、上に位置する画素が参照画素となる。なお、以上のフィルタの差異は、エッジ画素の場合にはエッジの連続性を重視して閉領域を決定し、非エッジ画素の場合には非エッジが分離性を重視して閉領域を決定することを目的にしていることに起因して生じている。なお、参照画素が存在しない場合にはその画素についての判定は行われない。
【0043】
コントローラー10は、各画素についてステップS200の結果を参照して領域ラベルを割り振る。すなわち、コントローラー10は、各画素を1個ずつ注目画素として画像全体をスキャンする。なお、本実施形態において領域ラベルは1以上の整数であり初期値は1である。例えば、注目画素のスキャンを左上の画素から開始し、1画素ずつ右に移動し、右端に到達したら1画素下の左端の画素に移動する場合、左上の画素の領域ラベルは初期値の1となる。そして、異なる閉領域が発見されると、異なる閉領域には既存の領域ラベルの最大値に1加えた値が割り振られる。
【0044】
具体的には、スキャンの過程において、コントローラー10は、注目画素がエッジ画素、非エッジ画素のいずれであるのかを判定し、注目画素がエッジ画素の場合
図3に示すフィルタ、非エッジ画素の場合
図4に示すフィルタを選択する。
図5は、画素のエッジ状態を模式的に示しており、白抜きの矩形がエッジ画素、ハッチングを付した矩形が非エッジ画素を示している。従って、例えば、画素P
1が注目画素となった場合には
図3に示すフィルタが選択され、画素P
2が注目画素となった場合には
図4に示すフィルタが選択される。
【0045】
注目画素のフィルタが選択されると、コントローラー10は、参照画素の領域ラベルに基づいて注目画素の領域ラベルを設定する。具体的には、コントローラー10は、参照画素の中から注目画素と同じエッジ状態の画素を抽出し、領域ラベルの特定元とみなす。すなわち、注目画素がエッジ画素であれば、コントローラー10は、参照画素の中からエッジ画素を抽出し、領域ラベルの特定元とみなす。注目画素が非エッジ画素であれば、コントローラー10は、参照画素の中から非エッジ画素を抽出し、領域ラベルの特定元とみなす。
【0046】
例えば、
図5に示す画素P
1が注目画素である場合、画素P
1はエッジ画素であるため、コントローラー10は、参照画素P
11,P
12,P
13,P
14の中からエッジ画素である画素P
13,P
14を抽出し、領域ラベルの特定元とみなす。画素P
2が注目画素である場合、画素P
2は非エッジ画素であるため、コントローラー10は、参照画素P
21,P
22の中から非エッジ画素である画素P
21,P
22を抽出し、領域ラベルの特定元とみなす。
【0047】
領域ラベルの特定元が抽出されると、コントローラー10は、当該領域ラベルの特定元の画素に割り振られた領域ラベルを比較し、最小値を取得し、注目画素の領域ラベルの値と見なす。例えば、画素P
1が注目画素であり、画素P
13,P
14が領域ラベルの特定元として抽出された場合、コントローラー10は、領域ラベル2,4の中の最小値2を取得し、画素P
1の領域ラベルを2に設定する。画素P
2が注目画素であり、画素P
21,P
22が領域ラベルの特定元として抽出された場合、コントローラー10は、領域ラベル1,1の中の最小値1を取得し、画素P
2の領域ラベルを1に設定する。
【0048】
以上の処理の過程で閉領域が大きくなってくると、同一の閉領域に異なる領域ラベルが割り振られる場合が発生し得る。例えば、
図5に示す例においては、同一の閉領域に属する画素P
13,P
14に異なる領域ラベル2,4が割り振られている。そこで、コントローラー10は、この状況を補正するため、領域ラベルの特定元の画素の領域ラベルが不一致である場合、最小の領域ラベルに補正する。例えば、コントローラー10は、画素P
14の領域ラベルを4から2に補正する。当該補正は、スキャンの過程で行われてもよいし、スキャンが終了した後に行われてもよい。
【0049】
以上の処理により、エッジ画素が連続する場合に各エッジ画素に同一の領域ラベルを割り振り、非エッジ画素が連続する場合に各非エッジ画素に同一の領域ラベルを割り振ることができる。しかし、以上のような注目画素のスキャンを行っていると、領域ラベルの特定元が抽出されない場合も発生する。例えば、左から右に画素をスキャンする過程で画素P
13が注目画素となった場合、注目画素の左上、上、右上に参照画素は存在しない。また、注目画素の左に存在する参照画素P
12は非エッジ画素であり、注目画素P
13はエッジ画素である。
【0050】
従って、注目画素P
13の参照画素から領域ラベルの特定元は抽出されない。この場合、コントローラー10は、注目画素が既存の閉領域と異なる閉領域に属すると見なし、既存の領域ラベルの最大値に1加えた値が割り振られる。例えば、注目画素P
13の処理を行っている段階で、既存の領域ラベルの最大値は1であるため、コントローラー10は、注目画素P
13に領域ラベル2を割り振る。
図6は、
図5に示す例各画素のスキャンが終了した場合に割り振られた領域ラベルの例を示している。以上の処理によれば、
図6に示すように、連続するエッジ画素を同一の閉領域、連続する非エッジ画素を同一の閉領域に分割することができ、容易に閉領域を特定することができる。また、本実施形態においては、輝度分散に基づいてエッジを検出し、当該エッジに基づいて閉領域を特定しているため、薄い文字のように輝度変化の少ないオブジェクトを同一の閉領域として捉えることが可能になる。このため、二値化の際にオブジェクトが消えたり分断されたりする可能性を低減することができる。
【0051】
閉領域が検出されると、コントローラー10は、二値部11bの機能により、閉領域の形状の特徴を取得する(ステップS400)。
図7は、白抜きの文字Aが含まれる多値画像を模式的に示している。この例において、ステップS300の処理が行われると、
図8〜
図12に示すように、複数の閉領域が特定される。
図8においては、文字Aの周囲に存在する閉領域をハッチングによって示している。
図9においては、文字Aの外側の境界を構成するエッジによって形成された閉領域を太い実線によって示している。
図10においては、文字Aの外側の境界の内部に存在する閉領域をハッチングによって示している。
図11においては、文字Aの内側の境界を構成するエッジによって形成された閉領域を太い実線によって示している。
図12においては、文字Aの内側の境界の内部に存在する閉領域をハッチングによって示している。
【0052】
ステップS300の処理が行われると、
図8〜
図12に示すように、複数の閉領域が特定され、各閉領域に領域ラベルが割り振られた状態になっている。ここでは、特に、
図9に示す閉領域に着目して閉領域の形状の特徴を説明する。本実施形態において、各閉領域の形状の特徴は、各閉領域に外接する矩形と閉領域の画素数とに基づいて特定される。そこで、コントローラー10は、ステップS300で特定された各閉領域に外接する矩形を特定し、その二辺の長さを特定する。
図9においては、二辺の一方(x方向に平行な辺)の長さを幅W、二辺の他方(y方向に平行な辺)の長さを高さHとして示している。この例であれば、コントローラー10は、幅Wおよび高さHを特定する。
【0053】
さらに、コントローラー10は、ステップS300で特定された各閉領域の画素数を取得する。すなわち、コントローラー10は、同一の領域ラベルが割り振られた画素数をカウントすることで、各領域ラベルが割り振られた閉領域の画素数を取得する。さらに、コントローラー10は、閾値を取得する処理を後に実行するため、閉領域に関する情報を収集する。具体的には、コントローラー10は、各閉領域に隣接する閉領域の領域ラベルを特定し、各閉領域に対応づけてメモリー20に記録する。従って、コントローラー10は、メモリー20を参照することで各閉領域に隣接する閉領域を特定することができる。さらに、コントローラー10は、各閉領域の輝度に基づいて、閉領域内の輝度の平均値、最頻値、輝度ヒストグラムを取得し、メモリー20に記録する。
【0054】
次に、コントローラー10は、二値部11bの機能により、各閉領域の閾値を取得する(ステップS500)。本実施形態においては、閉領域のサイズと形状に基づいて閾値を取得するが、コントローラー10は、各閉領域に外接する矩形のサイズ(ステップS400で取得されたW、H)を閉領域のサイズと見なす。
【0055】
文字などの、判読されるべきオブジェクトは一般的には原稿よりも小さいため、本実施形態においては、オブジェクトが小さいと見なされる基準サイズが第1基準および第2基準として予め定義されている。コントローラー10は、外接する矩形の幅Wが第1基準未満であり、外接する矩形の高さHが第2基準未満である場合に閉領域が小さいと判定する処理を各閉領域に対して実施する。以上の構成によれば、二値化によって周囲の領域に同化すべきではない閉領域を容易に特定することができる。なお、第1基準と第2基準は予め決められた固定値であっても良いし、原稿のサイズ等によって変化する可変値であっても良いし、利用者が指定した値等であっても良い。むろん、第1基準と第2基準は等しくても良いし異なっていてもよい。
【0056】
さらに、文字などの、判読されるべきオブジェクトの形状は細いパーツによって構成されていることが多い。そこで、本実施形態においては、オブジェクトが細いか否かが、閉領域に外接する矩形の縦横の長さの比に基づいて評価され、閉領域の面積と閉領域に外接する矩形の面積との比に基づいて評価される。
【0057】
すなわち、閉領域に外接する矩形の縦横の長さの比が1より小さいまたは大きいほど、閉領域が細いと推定することができる。そこで、コントローラー10は、各閉領域に外接する矩形の幅W、高さHのうち、大きい方を分母、小さい方を分子とし、比が1以下になるようにして、閉領域に外接する矩形の縦横の長さの比を取得する。
【0058】
さらに、閉領域の面積と閉領域に外接する矩形の面積との比が1より小さいまたは大きいほど、閉領域が細いと推定することができる。
図13および
図14は、閉領域の面積と閉領域に外接する矩形の面積との比を説明するための図であり、閉領域をハッチングによって示している。また、
図13は円形の閉領域の例を示し、
図14は環状の閉領域の例を示している。
図13、
図14に示された例において、閉領域に外接する矩形の大きさは等しく、ともに幅W
1、高さH
1である。
【0059】
これらの例において、
図14に示す環状の閉領域は細い線で構成され、
図13に示す円形の閉領域は円形の周の内部が同一の特徴(例えば非エッジ)で埋められることによって構成される。
図13に示す例において閉領域の面積は円の面積であり、閉領域に外接する矩形の面積はW
1×H
1である。
図14に示す例において閉領域の面積は環状の部位の面積であり、閉領域に外接する矩形の面積はW
1×H
1である。従って、両者における比、すなわち(閉領域の面積)/(閉領域に外接する矩形の面積)を比較すると、
図13のように細い線で構成されていない閉領域では比の値が大きくなる傾向にあり、
図14のように細い線で構成されている閉領域では比の値が小さくなる傾向にある。
【0060】
そこで、コントローラー10は、各閉領域の面積を示す画素数を、閉領域に外接する矩形の面積(W×H)で除することによって、比が1以下になるようにして閉領域の面積と閉領域に外接する矩形の面積との比を取得する。
【0061】
以上のように、オブジェクトが細いか否かは、閉領域に外接する矩形の縦横の長さの比に基づいて評価可能であり、閉領域の面積と閉領域に外接する矩形の面積との比に基づいて評価可能である。これらの比は個別に評価されても良いし、双方の比が同時に評価されても良い。本実施形態においては、後者が採用されており、コントローラー10は、両者の比の積を算出し、基準形状を示す形状閾値と比較する。すなわち、コントローラー10は、以下の式(3)を満足する場合に、閉領域が基準形状より細いと判定する。
【数3】
【0062】
なお、式(3)においてC
Sは閉領域の面積と閉領域に外接する矩形の面積との比であり、C
WHは閉領域に外接する矩形の縦横の長さの比である。C
thは基準形状であるか否かを判定するための形状閾値であり、C
S×C
WHの値がC
th未満である場合に閉領域が細い形状であると見なすことができるように、予め統計等によって定義されている。コントローラー10は、式(3)を満足する場合に閉領域が基準形状より細いと判定する処理を各閉領域について実施する。この構成によれば、二値化によって周囲の領域に同化すべきではない閉領域を容易に特定することができる。
【0063】
以上のように各閉領域について、基準サイズより小さいか否かの判定と、基準形状より細いか否かの判定とが行われると、コントローラー10は、これらの判定結果に基づいて閉領域毎の閾値を決定する。具体的には、閉領域が基準サイズより大きいかつ基準形状より太い場合、コントローラー10は、閉領域の周囲の輝度を参照せずに閉領域の内部の輝度に基づいて閾値を決定する。具体的には、コントローラー10は、閉領域の内部の輝度ヒストグラムの平均値をYave、最頻値をYmとした場合に、Yave−(Ym−Yave)を閾値Ythとする。
【0064】
図15は、閉領域が基準サイズより大きいかつ基準形状より太い場合における閉領域の輝度ヒストグラム(例えば、
図8に示す閉領域の輝度ヒストグラム)を示している。閉領域が基準サイズより大きいかつ基準形状より太い場合は、閉領域が文字等のオブジェクトではなく、背景等である可能性が高い。従って、輝度ヒストグラムを構成する大半の画素を白に変換することができれば適切に二値化できる可能性が高い。そして、閾値YthであるYave−(Ym−Yave)は、
図15に示すように大半の部分を白に変換する閾値である。従って、この閾値によって当該閉領域を二値化すれば、背景等が背景等として視認されるように二値化できる可能性を高めることができる。
【0065】
以上のようにして決定された閾値で二値化が行われると、原稿の地色に近い色を有するオブジェクトが存在した場合、二値化によってオブジェクトが周囲の領域と同化してしまう。そこで、本実施形態においては、閉領域が基準サイズより小さいまたは基準形状より細い場合には、閉領域の周囲の輝度も参照して閾値を決定する。
【0066】
具体的には、閉領域が基準サイズより小さいまたは基準形状より細い場合、コントローラー10は、閉領域の内部の主要部の輝度が閉領域の周囲の輝度よりも暗ければ、閉領域の主要部を黒にするように閾値を決定する。すなわち、コントローラー10は、ある閉領域に着目して閾値を決定する場合、メモリー20を参照して当該閉領域に隣接する閉領域の領域ラベルを取得する。例えば、
図6に示す例において、領域ラベル2の閉領域に着目した場合、コントローラー10は、隣接する閉領域の領域ラベル1,3を取得する。そして、コントローラー10は、領域ラベルに基づいて、着目した閉領域の輝度の最頻値と、隣接する閉領域の輝度の最頻値とを取得する。なお、本実施形態においては、閉領域の内部において最頻値の輝度を有する画素は閉領域の内部の主要部に相当する。
【0067】
さらに、コントローラー10は、着目した閉領域の輝度の最頻値と、隣接する閉領域の輝度の最頻値とを比較する。隣接する閉領域が複数個である場合、コントローラー10は、着目した閉領域の輝度の最頻値と、隣接する全ての閉領域の最頻値とを比較する。そして、着目した閉領域の輝度の最頻値が、隣接する全ての閉領域の輝度の最頻値よりも小さい場合、着目した閉領域の輝度ヒストグラムの高輝度側のテイル部分が第1比率となるように閾値を決定する。
【0068】
図16は、文字の境界によって形成された閉領域(ただし境界の色は地色に近い)の輝度ヒストグラムの例を示している。また、
図17は、
図16に示す閉領域の周囲に存在する閉領域の輝度ヒストグラムの例を示している。
図16の輝度ヒストグラムは、例えば、
図9に示す文字の境界の輝度ヒストグラムであり、
図17の輝度ヒストグラムは、例えば、
図10に示す文字の内側の輝度ヒストグラムである。ここでは、
図16に示す閉領域に着目し、当該閉領域の周囲の閉領域において、輝度ヒストグラムの最頻値が最も小さい閉領域が
図17に示す閉領域であることを想定して説明する。
【0069】
これらの例において、着目した閉領域の輝度の最頻値はY
m1であり、着目した閉領域の周囲の閉領域における輝度の最頻値はY
m2である。そして、着目した閉領域の輝度の最頻値Y
m1が、隣接する閉領域の輝度の最頻値Y
m2よりも小さい。この場合、コントローラー10は、着目した閉領域の輝度ヒストグラムの高輝度側のテイル部分の画素数を高輝度側からカウントし、カウント値/閉領域の画素数が第1比率となる輝度を閾値として決定する。
図16においては、このようにして決められた閾値Y
th1を示している。なお、第1比率は、輝度ヒストグラムの高輝度側のテイル部分が僅かな数になるように予め決められている。すなわち、当該閾値により、閉領域の主要部を黒にすることができるように第1比率が設定されている。
【0070】
一方、閉領域が基準サイズより小さいまたは基準形状より細い場合において、コントローラー10は、閉領域の内部の主要部の輝度が閉領域の周囲の輝度よりも明るければ、閉領域の主要部を白にするように閾値を決定する。この場合も、コントローラー10は、着目した閉領域の輝度の最頻値と、隣接する閉領域の輝度の最頻値とを取得する。
【0071】
さらに、コントローラー10は、着目した閉領域の輝度の最頻値と、隣接する閉領域の輝度の最頻値とを比較する。隣接する閉領域が複数個である場合、コントローラー10は、着目した閉領域の輝度の最頻値と、隣接する全ての閉領域の最頻値とを比較する。そして、着目した閉領域の輝度の最頻値が、隣接する全ての閉領域の輝度の最頻値よりも大きい場合、着目した閉領域の輝度ヒストグラムの低輝度側のテイル部分が第2比率となるように閾値を決定する。
【0072】
ここで、
図17に輝度ヒストグラムが示された閉領域に着目し、
図16に輝度ヒストグラムが示された閉領域が周囲に存在する閉領域である状態を想定する。この例において、着目した閉領域の輝度の最頻値はY
m2であり、着目した閉領域の周囲の閉領域における輝度の最頻値はY
m1である。従って、着目した閉領域の輝度の最頻値Y
m2が、隣接する閉領域の輝度の最頻値Y
m1よりも大きい。この場合、コントローラー10は、着目した閉領域の輝度ヒストグラムの低輝度側のテイル部分の画素数を低輝度側からカウントし、カウント値/閉領域の画素数が第2比率となる輝度を閾値として決定する。
【0073】
図17においては、このようにして決められた閾値Y
th2を示している。なお、第2比率も、輝度ヒストグラムの低輝度側のテイル部分が僅かな数になるように予め決められている。すなわち、当該閾値により、閉領域の主要部を白にすることができるように第2比率が設定されている。なお、第2比率は、第1比率と一致していても良いし、異なっていてもよい。また、各比率は固定値であっても良いし、輝度ヒストグラム等に応じて変化する可変値であっても良い。
【0074】
コントローラー10は、以上のようにして閉領域の閾値を取得する処理を、各閉領域について実施する。各閉領域の閾値が取得されると、コントローラー10は、二値部11bの機能により、二値化画像を取得する(ステップS600)。すなわち、コントローラー10は、各閉領域内の画素の輝度と各閉領域の閾値とを比較し、閾値より輝度が大きい画素の階調値を1とし、輝度が閾値以下の画素の階調値を0にする。コントローラー10は、以上のようにして閉領域内の画素を二値化する処理を、各閉領域について実施する。以上の構成によれば、薄い文字など地色に近い色のオブジェクトを周囲の領域(地色の領域等)に同化させずに二値化することが可能になる。また、閉領域毎に閾値を決定する構成により、白抜き文字を白抜きで再現可能になる。
【0075】
(3)他の実施形態:
以上の実施形態は本発明を実施するための一例であり、他にも種々の実施形態を採用可能である。例えば、本発明の一実施形態にかかるスキャナーは、読み取り以外の目的にも使用される電子機器である複合機等に備えられていても良い。さらに、以上の実施形態のように閉領域の周囲の輝度に基づいて閉領域の内部の二値化閾値を決定する手法は、プログラムの発明、方法の発明やスキャンデータの生成方法の発明としても実現可能である。さらに上述のようにして生成した二値化画像に対して、オブジェクトである文字に対する光学文字認識やオブジェクトであるバーに対するバーコード変換などの処理を行って、テキストデータを生成する装置や生成方法の発明としても実現可能である。
【0076】
さらに、コントローラー10の少なくとも1部における処理を、スキャナー1に接続されたコンピューターのドライバプログラム又はアプリケーションプログラムに実施させることで二値画像データを生成させてもよい。この場合、コンピューターをスキャナーの一部とみなすことができる。
【0077】
さらに、上述の実施形態は一例であり、一部の構成が省略されたり、他の構成が追加されたりする実施形態が採用され得る。例えば、コントローラー10が、閉領域の特徴を考慮せず、閉領域の内部の輝度と閉領域の周囲の輝度とに基づいて閉領域の内部を二値化する構成等が採用されてもよい。また、閉領域が細いか否かが判定される際に、閉領域に外接する矩形の縦横の長さの比と、閉領域の面積と閉領域に外接する矩形の面積との比との、一方の比のみが参酌される構成等が採用されてもよい。
【0078】
取得部は、多値画像を取得することができればよい。すなわち、取得部は、二値化すべき画像を取得することができればよく、上述の実施形態のように、スキャナーで読み取られた画像以外にも、種々の画像が多値画像となり得る。例えば、画像編集ソフトウェアで生成した画像や、ネットワークを介して取得した画像を二値化対象の多値画像として取得する構成等であっても良い。
【0079】
二値部は、多値画像を二値化した二値画像を生成することができればよい。二値画像は各画素1ビットの画像であるため、画素値が1または0であり、一方を白、他方を黒とすれば、モノクロの画像となる。通常は、白黒のモノクロであるが、むろん、用途によっては色チャネル毎(例えば、R,G,Bの各チャネル毎)に二値化されるような構成等であっても良い。
【0080】
また、二値部が検出する閉領域は、同一基準(例えば、同一閾値)で二値化される単位であれば良く、多値画像の画素の中で、共通の特徴を有する画素が連続して形成する領域である。ただし、閉領域であるため、当該領域の内部には、異なる特徴を有する画素が離散的に配置されている状態ではない。共通の特徴を有する画素が環状に配置される場合には、共通の特徴を有する画素が環状に連続していれば、環の内側を除く環状の領域が閉領域となる。すなわち、環の内側に同一の特徴の画素が離れて存在している場合や、他の特徴の画素が存在する場合、これらの画素は異なる閉領域を構成し得る。
【0081】
特徴は、上述のようなエッジ以外にも種々の特徴が想定され得る。例えば、多値画像の勾配に基づいてオブジェクトの境界を特定し、境界に囲まれる閉領域が特定される構成であっても良い。さらに、特徴が共通の画素が連続する場合に閉領域であると見なされる構成以外にも、特徴が類似した画素が連続する場合に閉領域であると見なされる構成等が採用されてもよい。
【0082】
さらに、二値化は、閉領域の内部の輝度と閉領域の周囲の輝度とに基づいて実施されれば良く、閉領域の内部の輝度と閉領域の周囲の輝度とに基づいて二値化のための閾値を決定する上述の構成以外にも種々の構成が採用されてもよい。例えば、閉領域の内部の輝度と閉領域の周囲の輝度とに基づいて閉領域の内部を白または黒とする処理等が採用されてもよい。
【0083】
また、閉領域の内部の輝度と閉領域の周囲の輝度とに基づいて二値化が行われる際に、輝度を参酌する手法は種々の手法が採用可能である。すなわち、上述のように、閉領域の内部と周囲との輝度差が参酌されても良いし、閉領域の内部と周囲との輝度の類似度等が参酌されても良く、種々の構成が採用されてよい。
【0084】
さらに、閉領域の周囲の輝度は、当該閉領域の外側の領域の輝度であっても良いし、閉領域の内側に閉領域以外の領域が存在する場合(環状等)には当該閉領域の内側の領域の輝度であっても良いし、双方であっても良い。閉領域の周囲に複数の異なる閉領域が隣接している場合、その中の1個(例えば、輝度が最も明るい、または最も暗い領域や、最も広い領域等)について輝度が参照されても良いし、複数個について輝度が参照されても良い。
【0085】
閉領域の内部の主要部は、閉領域の内部の輝度を評価するための部分であれば良く、上述の実施形態のように、閉領域の内部において輝度が最頻値に等しい画素を主要部と見なす構成以外にも種々の構成が採用されてもよい。例えば、閉領域の内部において輝度の統計値(平均値等)を取得し、輝度が統計値に等しい画素を主要部と見なす構成等が採用されてもよい。むろん、輝度が特定の範囲内(例えば、統計値から標準偏差×定数の範囲等)に存在する画素を主要部と見なしても良い。いずれにしても、閉領域の面積や特徴等に鑑みて閉領域を二値化する際に白または黒にすべき部分を主要部と見なすことができればよい。主要部の輝度や閉領域の周囲の輝度は種々の手法で決められて良く、最頻値以外にも各種の統計値等に基づいて輝度が評価されて良い。
【0086】
閉領域の形状の特徴は、上述の実施形態のように大きさや細さで評価される構成に限定されない。すなわち、二値化によって周囲と同化させないようにすべき部位であるか否かを、閉領域の形状の特徴で捉えることができればよい。従って、例えば、閉領域の周に尖った部位が存在する場合や、ジャギーな部位が存在する場合に周囲と異なる値に二値化する構成など、種々の構成が採用され得る。
【0087】
さらに本発明は、コンピューターが実行するプログラムや、方法としても適用可能である。また、以上のようなプログラム、方法は、単独の装置として実現される場合もあれば、複数の装置が備える部品を利用して実現される場合もあり、各種の態様を含むものである。また、一部がソフトウェアであり一部がハードウェアであったりするなど、適宜、変更可能である。さらに、プログラムの記録媒体としても発明は成立する。むろん、そのプログラムの記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体においても全く同様に考えることができる。