(57)【特許請求の範囲】
【請求項１】
２値画像内のオブジェクトに対してラベリングを行う画像処理方法であって、
前記２値画像において、その内部における黒画素数が所定割合以上であるような所定サイズのブロックを、黒ブロックとして検出する黒ブロック検出工程と、
検出された黒ブロック内および該黒ブロックに連結している黒画素について、所定のラベル値で置き換えるラベル付け工程とを有し、
前記黒ブロック検出工程は、前記黒ブロックを検出すると検出を終了し、前記ラベル付け工程は、前記検出された黒ブロックを起点として、前記ラベル値による置き換えを行うことを特徴とする画像処理方法。
【請求項２】
前記黒ブロック検出工程においては、その内部が全て黒画素からなるブロックを、前記黒ブロックとして検出することを特徴とする請求項１記載の画像処理方法。
【請求項３】
前記黒ブロック検出工程は、
前記２値画像全体を前記所定サイズのブロックに分割する分割工程と、
前記ブロックごとに黒ブロックであるか否かを判定する判定工程と、
を有することを特徴とする請求項１記載の画像処理方法。
【請求項４】
前記黒ブロック検出工程は、
前記２値画像において前記所定サイズのブロック位置を順次ずらすことによって、黒ブロックを検出することを特徴とする請求項１記載の画像処理方法。
【請求項５】
前記黒ブロック検出工程は、前記２値画像において前記所定サイズの黒ブロックが検出されなかった場合に、該所定サイズよりも小さなサイズの黒ブロックを検出することを特徴とする請求項１記載の画像処理方法。
【請求項６】
前記ラベル付け工程は、
前記黒ブロック内の基準ラインを前記ラベル値で置き換える基準ラベル付け工程と、
前記基準ラインよりも上部に連結している黒画素を前記ラベル値で置き換える上部ラベル付け工程と、
前記基準ラインよりも下部に連結している黒画素を前記ラベル値で置き換える下部ラベル付け工程と、
を有することを特徴とする請求項１記載の画像処理方法。
【請求項７】
上記黒ブロックは矩形であることを特徴とする請求項１記載の画像処理方法。
【請求項８】
上記黒ブロックは多角形であることを特徴とする請求項１記載の画像処理方法。
【請求項９】
上記黒ブロックは円形であることを特徴とする請求項１記載の画像処理方法。
【請求項１０】
２値画像内のオブジェクトに対してラベリングを行なう画像処理装置であって、
前記２値画像において、その内部における黒画素数が所定割合以上であるような所定サイズのブロックを、黒ブロックとして検出する黒ブロック検出手段と、
検出された黒ブロック内及び該黒ブロックに連結している黒画素について、所定のラベル値で置き換えるラベル付け手段ととを有し、
前記黒ブロック検出手段は、前記黒ブロックを検出すると検出を終了し、前記ラベル付け手段は、検出された前記黒ブロックを起点として、前記ラベル値による置き換えを行うことを特徴とする画像処理装置。
【請求項１１】
コンピュータ上で実行されることによって、請求項１乃至９のいずれかに記載の画像処理方法を実現するプログラム。
【請求項１２】
請求項１１記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、２値画像に対してオブジェクト毎にラベル付けを行う画像処理装置及びその方法に関する。
【０００２】
【従来の技術】
２値画像に対してそのオブジェクト毎にラベル付けを行うための、所謂ラベリングのアルゴリズムが種々提案されている。
【０００３】
しかしながら、一般的な２値画像は微小なノイズ領域を含んでおり、このようなノイズ領域はもちろんオブジェクトではないため、本来ラベルを付ける必要はない。したがって処理時間の観点からも、画像内の微小ノイズ領域に対してはラベルを振らないように制御することが望ましい。
【０００４】
上記制御を実現するために例えば、ラベリングの前処理として周知の孤立点除去を行なうことによって、画像内のノイズを減らして無駄なラベル付けを回避し、ラベリングの高速化を図ることができる。
【０００５】
【発明が解決しようとする課題】
しかしながら、ラベリングの前処理として孤立点除去を行ったとしても、完全に孤立していない、数画素程度が連結したノイズを除去することはできなかった。したがって、微小ノイズ領域に対してラベルを振ってしまうという問題は完全には解決されなかった。
【０００６】
そこで、ラベリングの高速化手法として、例えば特開2000-285240に記載された方法が提案されている。該方法によれば、一般的な塗りつぶしアルゴリズムを用いてまず黒画素の連結領域を塗りつぶした後、該塗りつぶした領域に対して一つのラベルを割り当てる。この塗りつぶし及びラベル割り当て処理を繰り返すことによって、全画像に対するラベリングが行われる。この方法においては、塗りつぶした画素数が少ないときには、該領域が孤立した微小なノイズ領域であると考えられるため、該領域に対してラベルを与えずに処理をスキップすることを特徴とする。該特徴により、余分なラベル割り当てを排除することができる。
【０００７】
しかしながら、この特開2000-285240に記載されたラベリング方法によっても、連結領域の塗りつぶし処理は全ての黒画素について行なう必要があった。したがって、特にノイズの多い画像については、ラベリングの高速化に限界があった。
【０００８】
本発明は上記問題を解決するためになされたものであり、ノイズの影響を排除排した高速なラベリング処理を実現する画像処理装置及びその方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る画像処理方法は以下の工程を備える。
【００１０】
すなわち、２値画像内のオブジェクトに対してラベリングを行う画像処理方法であって、前記２値画像において、その内部における黒画素数が所定割合以上であるような所定サイズのブロックを、黒ブロックとして検出する黒ブロック検出工程と、検出された黒ブロック内および該黒ブロックに連結している黒画素について、所定のラベル値で置き換えるラベル付け工程とを有し、前記黒ブロック検出工程は、前記黒ブロックを検出すると検出を終了し、前記ラベル付け工程は、前記検出された黒ブロックを起点として、前記ラベル値による置き換えを行うことを特徴とする。
【００１１】
【発明の実施の形態】
以下、本発明に係る一実施形態について、図面を参照して詳細に説明する。
【００１２】
＜第１実施形態＞
図１は、本実施形態が実行されるコンピュータシステムの構成を示すブロック図である。図1において、101はCPUで、システム全体の制御を行なっている。102はキーボードで、マウス102aとともにシステムへの入力を行うために使用される。103は表示装置であり、CRTや液晶等で構成されている。104はROM、105はRAMであり、システムの記憶装置を構成し、システムが実行するプログラムやシステムが利用するデータを記憶する。106はハードディスク装置、107はフロッピーディスク装置であり、システムのファイルシステムに使用される外部記憶装置を構成している。108はプリンタである。
【００１３】
109はネットワークインタフェース（I/F）であり、不図示のLANまたはWANに接続している。I/F109を介して、コンピュータプログラムやデジタル画像等のデータファイルを外部のコンピュータシステムと授受することができる。外部コンピュータより受信したプログラムやデータはハードディスク106に記録されたり、直接RAM105に展開して実行される。
【００１４】
110はイメージスキャナであり、原稿台上の写真や印刷物をデジタル画像データとしてRAM105上に取り込むことができる。
【００１５】
図２に、イメージスキャナ110から取り込んで２値化した画像の一例を示す。図中の２つの矩形は、写真等の矩形の原稿を示すオブジェクトであり、３つの楕円はノイズを示している。この２値画像は、幅Ｗ画素、高さＨ画素のビットマップとしてRAM105に保持されている。各画素は8ビット値を有し、黒画素は値255、白画素は値0によって示される。
【００１６】
同図においては説明のため、ノイズを簡略化して示したが、実際の２値画像におけるノイズはサイズも形状も不定であり、その数も数百から数千個程度になることが多い。なお、本実施形態における２値化は、所定の閾値との比較によって行なう周知の単純二値化法を用いるとし、ここでは詳細な説明を省略する。
【００１７】
ここで、図２に示す２値画像における理想的なラベリング処理とは、黒画素同士の連結に基づき、例えば上方の矩形オブジェクトに含まれる全ての画素に対して画素値1を与え、下方の矩形オブジェクトに含まれる全画素に対しては画素値2を与えることである。すなわち、微小なノイズ分にはラベルを与えず、画素値255のままにしておく。
【００１８】
●ラベリング処理概要
以下、上記理想的なラベリングを実現するための本実施形態におけるラベリング方法について、詳細に説明する。
【００１９】
図３は、図２における上方の矩形オブジェクトを含む左上部分に対応し、本実施形態における塗りつぶし処理の起点となるブロックの探索方法を説明するための図である。
【００２０】
まず図３に示すように、図２に示したＷ画素×Ｈ画素のビットマップ全体を、ｗ画素×ｈ画素のブロックに分け、その内部が全て値255の黒画素で占められるようなブロック（以下、「黒ブロック」と称する）を図中矢印方向に探索する。図３において黒矩形で示したブロックが、見つかった黒ブロックである。
【００２１】
本実施形態では、見つかった黒ブロックと黒画素が連結している領域を塗りつぶすことによって、高速なラベリングを実現する。図４に、本実施形態におけるラベリング処理全体のフローチャートを示し、説明する。
【００２２】
まずステップS401で、変数ｃに値1を代入し、ステップS402で黒ブロック探索を行う。この黒ブロック探索処理の詳細については後述する。
【００２３】
次にステップS403において黒ブロックが見つかったか否かを判断し、見つかったらステップS404へ進むが、見つからなければ処理を終了する。
【００２４】
ステップS404では、見つかった黒ブロックを起点にして、黒画素連結領域をラベルｃで塗りつぶす。この塗りつぶし処理の詳細については後述する。
【００２５】
そしてステップS405で変数ｃを1だけインクリメントしてステップS402に戻り、以上の処理を繰り返す。
【００２６】
この処理の結果、所定以上の大きさを持つオブジェクトのみに対して、ラベル1,2,…,cを与えることができる。
【００２７】
●黒ブロック探索処理
以下、図４のステップS402に示した黒ブロック探索処理の詳細を図５のフローチャートに示し、説明する。なお、図２に示す２値画像のビットマップは２次元配列としてアクセスできるものとし、以下、画像左上を起点として水平方向にi番目、垂直方向にj番目の画素の値をbuf(i,j)と表記する。
【００２８】
まずステップS501〜S504において、変数ｙ，ｘ，ｊ，ｉをそれぞれ値0で初期化する。そしてステップS505でbuf(x+i,y+j)が黒画素を示す255であるか否かを判断し、255であればステップS506へ、255でなければステップS510へ進む。
【００２９】
ステップS506では変数ｉを値1だけインクリメントし、ステップS507でｉがブロック幅を示すｗに等しければステップS508へ進み、異なればステップS505へ進む。
【００３０】
ステップS508では変数ｊを値1だけインクリメントし、ステップS509でｊがブロック高さを示すｈに等しければ処理を終了し、このとき、(x,y)を左上起点とするｗ×ｈ画素ブロックが黒ブロックであるとして検出される。ｊがｈと異なるときはステップS504へ戻る。
【００３１】
ステップS510ではｘにｗを加え、ステップS511でｘが画像幅を示すＷ以上であればステップS512へ進み、そうでなければステップS503へ戻る。
【００３２】
ステップS512ではｙにｈを加え、ステップS513でｙが画像高さを示すＨ以上であれば処理を終了し、このとき、黒ブロックは存在しないと判定される。ｙがＨ未満であればステップS502へ戻る。
【００３３】
以上の処理によって、Ｗ画素×Ｈ画素の２値画像からｗ画素×ｈ画素の黒ブロックが検出される。
【００３４】
●連結領域の塗りつぶし処理
以下、図４のステップS404に示した連結領域の塗りつぶし処理の詳細を図６のフローチャートに示し、説明する。
【００３５】
なお、オブジェクトの塗りつぶし処理としては種々の方法が知られており、本実施形態ではどのような塗りつぶし方法を用いても良い。したがって、ここでは基本的な方法について説明することとし、説明の簡略化のためオブジェクトは外に凸である単純な形状であると仮定する。
【００３６】
上述した黒ブロック探索処理の結果、図７に示すように(x，y)を左上起点とするブロックが黒ブロックとして検出されている。そこで本実施形態の塗りつぶし処理においては、この黒ブロックの中心点である（(x+w)/2，(y+h)/2）を起点として、黒画素で連結している領域をラベルｃで塗りつぶす。すなわち、値255である画素値を値ｃで置き換える。
【００３７】
具体的にはまずステップS601において、黒ブロックの中心点（(x+w)/2，(y+h)/2）を含む走査線について、該走査線上の黒連結部分をラベルｃで塗りつぶす。すなわち、図７に示す黒ブロックを含むオブジェクトにおける上記走査線の左端（x0，y+h/2）と右端（x1，y+h/2）を結ぶ線分（図７においてオブジェクトを水平方向に切断する線分）がラベルｃで塗りつぶされる。なお、上記（x0，y+h/2）と（x1，y+h/2）を結ぶ線分を以下では連結線分と称し、その塗りつぶし処理の詳細については後述する。
【００３８】
そして、ステップS602で連結線分から下にある黒連結部分を塗りつぶし、ステップS603で連結線分から上にある黒連結部分を塗りつぶす。なお、ステップS62，S603における塗りつぶし処理の詳細については後述する。
【００３９】
この処理の結果、黒ブロックと黒画素で連結した領域を、ラベルｃで塗りつぶすことができる。
【００４０】
●連結線分の塗りつぶし処理
以下、図６のステップS601に示した連結線分の塗りつぶし処理の詳細を図８のフローチャートに示し、説明する。なお、説明の簡略化のために、処理の起点となる黒ブロックの中心点（(x+w)/2，(y+h)/2）を、座標（X，Y）で示すとする。すなわち、Ｘ=(x+w)/2、Ｙ=(y+h)/2とする。
【００４１】
まず、ステップS801で変数ｉにＸを代入し、ステップS802でｉを値1だけデクリメントする。そして、ステップS803でbuf(i,Y)が値255に等しいか否かを判定し、異なればステップS804へ進むが、等しければステップS802へ戻ってｉをさらにデクリメントする。
【００４２】
ステップS804では変数ｘ0に値ｉ+1を格納し、ステップS805では変数ｉにＸを代入する。そしてステップS806でｉを値1だけインクリメントし、ステップS807でbuf(i,Y)が値255に等しいか否かを判定し、等しければステップS808へ進むが、異なればステップS806へ戻ってｉをさらにインクリメントする。
【００４３】
ステップS808では、変数ｘ1に値i-1を格納し、ステップS809では変数ｉに値ｘ0を代入し、ステップS810ではbuf(i,Y)にｃを代入する。そしてステップS811でｉを値1だけインクリメントし、ステップS812でｉがｘ1よりも大きければ処理を終了するが、そうでなければステップS810に戻る。
【００４４】
この処理により、変数ｘ0，ｘ1に連結線分の両端におけるｘ座標を格納し、該連結線分をラベルcで塗りつぶすことができる。
【００４５】
●連結線分から下（上）の塗りつぶし処理
以下、図６のステップS602に示した連結線分から下にある黒連結部分の塗りつぶし処理の詳細を図９のフローチャートに示し、説明する。なお、ここでもＹ=y+h/2とし、したがって、(x0，Y)と(x1，Y)を結ぶ連結線分より下の黒連結部分をラベルcで塗りつぶす。
【００４６】
まず、ステップS901で変数Ｙを値1だけインクリメントし、ステップS902で変数ｉにｘ0を代入する。そしてステップS903でbuf(i，Y)が値255に等しいか否かを判定し、異なればステップS904へ、等しければステップS906へ進む。
【００４７】
ステップS904ではｉを値1だけインクリメントし、ステップS905でｉがｘ1よりも大きければ処理を終了するが、そうでなければステップS903に戻る。
【００４８】
ステップS906ではＸにｉを代入し、ステップS907で（X，Y）を起点として、横方向、すなわち走査線上の連結線分を塗りつぶす。なお、この走査線上の塗りつぶし処理については図８のフローチャートで示したため、ここではその詳細な説明を省略する。
【００４９】
なお、図６のステップS603に示した連結線分から上にある黒連結部分の塗りつぶし処理については、基本的に上述した図９のフローチャートに示す、下方向への塗りつぶし処理と同様であり、ステップS901においてＹをインクリメントする代わりにデクリメントすれば良く、他のステップについては同様の処理を行えば良い。
【００５０】
以上説明したように本実施形態によれば、所定サイズの黒ブロックを含むオブジェクト、すなわち所定サイズ以上の面積をもつオブジェクトについてのみ、ラベル付けを行うことができる。したがって、微小なノイズ領域に対してラベルを付けてしまうことがなく、高速なラベリングが可能になる。
【００５１】
＜第２実施形態＞
以下、本発明に係る第２実施形態について説明する。
【００５２】
上述した第１実施形態においては、２値画像から黒ブロックの探索を行なう際にまず２値画像全体をブロックに分割した後に、各ブロックの内部が全て黒画素であるか否かをチェックした。しかしながら黒ブロックの探索方法としては他の方法も適用可能であり、例えば第２実施形態においては、２値画像内におけるブロックの左上座標を連続的に変化させていく方法について説明する。この方法によれば演算負荷は高くなるものの、黒ブロックの検出性能を向上することができる。
【００５３】
図１０は、第２実施形態において矩形オブジェクト内の黒ブロックを探索する様子を示す図である。同図によれば第２実施形態における探索の起点(x，y)は、第１実施形態で図３に示したブロック境界からは外れた位置にあることが分かる。
【００５４】
図１１に、第２実施形態における黒ブロックの探索処理のフローチャートを示し、詳細に説明する。
【００５５】
まずステップS1101〜S1104において、変数ｙ，ｘ，ｊ，ｉをそれぞれ値0で初期化する。そしてステップS1105でbuf(x+i,y+j)が黒画素を示す255であるか否かを判断し、255であればステップS1106へ、255でなければステップS1110へ進む。
【００５６】
ステップS1106では変数ｉを値1だけインクリメントし、ステップS1107でｉがブロック幅を示すｗに等しければステップS1108へ進み、異なればステップS1105へ進む。
【００５７】
ステップS1108では変数ｊを値1だけインクリメントし、ステップS1109でｊがブロック高さを示すｈに等しければ処理を終了し、このとき、(x,y)を左上起点とするｗ×ｈ画素ブロックが黒ブロックであるとして検出される。ｊがｈと異なるときはステップS1104へ戻る。
【００５８】
ステップS1110ではｘにｉ+1を加える。なお、ここでｘを単に値1だけインクリメントしても、最終的には全く同様の結果が得られるが、ｉ+1を加えることで探索の無駄を省き、処理を高速化できる。
【００５９】
そして、ステップS1111でｘが画像幅を示すＷ以上であればステップS1112へ進み、そうでなければステップS1103へ戻る。
【００６０】
ステップS1112ではｙを値1だけインクリメントし、ステップS1113でｙが画像高さを示すＨに等しければ処理を終了し、このとき、黒ブロックは存在しないと判定される。ｙがＨに等しくなければステップS1102へ戻る。
【００６１】
以上の処理によって、Ｗ画素×Ｈ画素の２値画像からｗ画素×ｈ画素の黒ブロックが検出される。
【００６２】
以上説明したように第２実施形態によれば、所定サイズの黒ブロックをより高精度に検出することができる。したがって、有効なオブジェクトのみについてのラベリングを、より高精度に行うことができる。
【００６３】
なお、上述した各実施形態によれば、ブロック内の全画素が黒画素であることを黒ブロックの判定条件としたが、例えばノイズの状態によっては、黒領域の内部に白画素が多数混入することがある。そこで本発明においては例えば、ブロック内部の黒画素数をカウントし、これが所定の閾値を超えた場合に黒ブロックであると判定しても良い。
【００６４】
また、探索すべき黒ブロックは必ずしも矩形である必要はなく、例えば六角形等の多角形や、円形もしくは楕円形であってもよいし、想定されるオブジェクトの形状に応じて選択可能なようにしてもよい。
【００６５】
また、探索ブロックのサイズも１つの所定サイズに限らず、例えば大きなブロックサイズから探索をはじめ、オブジェクトが見つからなければ徐々にサイズを小さくして探索を繰り返すようにしても良い。これにより、想定されたよりも小さなオブジェクトをノイズと誤認し、無視してしまう危険性を回避できる。
【００６６】
＜他の実施形態＞
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００６７】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００６８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００６９】
【発明の効果】
以上説明したように本発明によれば、ノイズの影響を排除排した高速なラベリング処理を実現することができる。
【図面の簡単な説明】
【図１】本発明に係る一実施形態における画像処理装置の構成を示すブロック図である。
【図２】本実施形態におけるラベリング対象の２値画像例を示す図である。
【図３】本実施形態における黒ブロック探索方法を説明するための図である。
【図４】本実施形態におけるラベリング処理の概要を示すフローチャートである。
【図５】本実施形態における黒ブロック探索処理を示すフローチャートである。
【図６】本実施形態における塗りつぶし処理を示すフローチャートである。
【図７】本実施形態における連結線分塗りつぶし方法を説明するための図である。
【図８】本実施形態における連結線分塗りつぶし処理を示すフローチャートである。
【図９】本実施形態における連結線分下領域の塗りつぶし処理を示すフローチャートである。
【図１０】第２実施形態における黒ブロック探索方法を説明するための図である。
【図１１】第２実施形態における黒ブロック探索処理を示すフローチャートである。
【符号の説明】
101  CPU
102  キーボード
103  表示部
104  ROM
105  RAM
106  ハードディスク
107  フロッピーディスク
108  プリンタ
109  ネットワークI/F
110  イメージスキャナ
【図１】
0003814547.tif 000002
【図２】
0003814547.tif 000003
【図３】
0003814547.tif 000004
【図４】
0003814547.tif 000005
【図５】
0003814547.tif 000006
【図６】
0003814547.tif 000007
【図７】
0003814547.tif 000008
【図８】
0003814547.tif 000009
【図９】
0003814547.tif 000010
【図１０】
0003814547.tif 000011
【図１１】
0003814547.tif 000012