以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。なお本実施の形態においては、デジタルカラー複合機(以下、MFP(MultiFunction Peripheral)という)を例に説明を行う。なおMFPはカラーコピー機能、カラープリント機能及びカラースキャナ機能等の種々の機能を有しているが、本発明の技術はカラー原稿を読み取ることにより得られるカラー画像を圧縮する処理を行う場合などに適用可能であり、例えばMFPのカラーコピー機能及びカラースキャナ機能に好適である。またMFPのカラースキャナ機能には、カラー原稿を読み取って得られたカラー画像データを圧縮して他の装置へ送信するデータ送信機能、及びカラー画像データを圧縮してMFP内部のメモリなどに記憶する保存機能等があるが、本発明の技術はこれらの機能における画像データの圧縮処理を行う場合に適用可能である。
図1は、本発明に係るMFPの構成を示すブロック図である。本発明に係るMFPは、画像入力装置11、画像出力装置12、送信装置13、操作パネル15及び画像処理装置20等を備えて構成されている。操作パネル15は、MFPの動作モードなどを設定する設定ボタン及びテンキー、処理の開始指示などを受け付けるスタートキー、並びに電源キー及び各種のファンクションキー等の種々のハードウェアキーを有している。また操作パネル15は、MFPの動作状態、ユーザへの警告メッセージ及びユーザの操作を補助する各種のメニュー等を表示するディスプレイを有している。なお、ユーザの操作を受け付けるハードウェアキーに代えて、ディスプレイ上にタッチパネルを設ける構成としてもよい。操作パネル15は、受け付けた指示又は設定等を画像入力装置11、画像出力装置12、送信装置13及び画像処理装置20へ与え、これにより各装置は受け付けた指示又は設定等に応じた処理を行うことができる。
画像入力装置11は、原稿に光を照射する光源、及びCCD(Charge Coupled Device)などのイメージセンサが並設された受光部等を備えるスキャナにて構成されている。画像入力装置11は、光源から原稿へ光を照射すると共に、受光部を一方向へ移動させて、原稿からの反射光をR(赤)G(緑)B(青)の3つの色成分に分解して受光部で読み取り、RGBのアナログ信号として画像処理装置20へ与える。
画像処理装置20は、A/D変換部21、シェーディング補正部22、入力階調補正部23、領域分離処理部24、色補正部25、黒生成下色除去部26、空間フィルタ処理部27、出力階調補正部28、階調再現処理部29、圧縮処理部30及び記憶部31等を備えている。画像入力装置11から入力されたRGBのアナログ信号は、画像処理装置20のA/D変換部21〜階調再現処理部29の各部にて画像処理が施されて画像出力装置12へ出力されるか、又は、画像処理装置20のA/D変換部21〜領域分離処理部24、圧縮処理部30の各部にて画像処理が施されて送信装置13へ出力される。
A/D変換部21は、画像入力装置11から与えられたRGBのアナログ信号を例えば各8ビットのデジタルの画像データに変換するものであり、変換したRGBの画像データをシェーディング補正部22に与える。シェーディング補正部22は、A/D変換部21から与えられたRGBの画像データに対して、画像入力装置11の照明系、結像系及び撮像系等において生じる各種の歪みを取り除くシェーディング処理を行い、シェーディング処理後のRGBの画像データを入力階調補正部23へ与える。
入力階調補正部23は、シェーディング補正部22にて歪みが取り除かれたRGBの画像データ(RGBの反射率信号)に対して、カラーバランスの調整及びコントラストの調整等の処理を行うと共に、濃度信号など画像処理装置20の各部の処理に適した信号形式に変換し、処理後のRGBの画像データを領域分離処理部24へ与える。
領域分離処理部24は、入力階調補正部23から与えられたRGBの画像データに係る画像の各画素が、文字により構成される文字領域、網点画像により構成される網点領域又は写真で構成される写真領域のいずれに属する画素であるかを判定することによって、各画素を分離する。領域分離処理部24は、処理結果として各画素がいずれの領域に属しているかを示す情報を、領域分離信号として黒生成下色除去部26、空間フィルタ処理部27及び階調再現処理部29へ与えると共に、入力階調補正部23から与えられたRGBの画像データをそのまま色補正部25及び圧縮処理部30へ与える。
色補正部25は、領域分離処理部24から与えられたRGBの画像データを、C(シアン)M(マゼンタ)Y(イエロー)の色空間の画像データに変換すると共に、画像出力装置12での色再現の忠実化実現のために、CMYの各色成分に色補正処理を行う。色補正処理は、具体的には、不要吸収成分をそれぞれ含むCMYのトナー又はインク等の分光特性に基づいた色濁りを、CMYの各色成分から取り除く処理である。色補正部25は、変換したCMYの画像データを黒生成下色除去部26へ与える。
黒生成下色除去部26は、領域分離処理部24から与えられる領域分離信号、及び色補正部25から与えられるCMYの画像データの各色成分に基づいて、K(黒)の色成分を生成する黒生成処理を行うと共に、元のCMYの各色成分から黒生成処理にて生成されたK成分を差し引いて新たなCMYの画像データを生成する処理を行う。これにより、色補正部25から与えられたCMYの画像データは、CMYKの4つの色成分を有する画像データに変換される。
例えば、スケルトンブラックによる黒生成処理を行う場合に、スケルトンカーブの入出力特性をy=f(x)とし、入力される画像の画素値をC、M、Yとし、出力される画素値をC'、M'、Y'、K'とし、UCR(Under Color Removal、下色除去)率をα(0<α<1)とすると、黒生成下色除去処理は以下の式で表される。黒生成下色除去部26の黒生成下色除去処理により変換されたCMYKの画像データは、空間フィルタ処理部27へ与えられる。
K' = f{min(C、M、Y)}
C' = C−αK'
M' = M−αK'
Y' = Y−αK'
空間フィルタ処理部27は、領域分離処理部24から与えられる領域分離信号に基づいて、黒生成下色除去部26から与えられたCMYKの画像データに係る画像に対して、デジタルフィルタによる空間フィルタ処理を行う。これにより、画像の空間周波数特性が補正され、画像出力装置12が出力する画像にぼやけ又は粒状性劣化等を生じることが防止される。空間フィルタ処理部27にて空間フィルタ処理が施された画像に係るCMYKの画像データは、出力階調補正部28にて画像出力装置12の出力特性に基づく出力階調補正処理が施された後に、階調再現処理部29へ与えられる。
階調再現処理部29は、領域分離処理部24から与えられる領域分離信号に応じて、出力階調補正部28から与えられたCMYKの画像データに対して、階調再現処理を行う。階調再現処理は、画像データに係る画像を複数の画素に分類して中間調を再現できるようにする処理であり、二値又は多値のディザ法又は誤差拡散法等を用いることができる。
例えば、領域分離処理部24にて文字領域に分離された領域には、特に黒文字又は色文字の再現性を高めることを目的として、空間フィルタ処理部27が鮮鋭強調のフィルタ処理を施して高周波成分を強調する。階調再現処理部29は、領域分離処理部24にて文字領域に分離された領域に対して、特に黒文字又は色文字の再現性を高めることを目的とし、画像出力装置12の高域周波数成分の再現に適した高解像度のスクリーンでの二値化処理又は多値化処理を施す。
また、例えば領域分離処理部24にて網点領域に分離された領域には、空間フィルタ処理部27がローパスフィルタ処理を施して入力網点成分を除去する。階調再現処理部29は、フィルタ処理が施された画像データに対して、画像出力装置12における階調再現性を重視したスクリーンでの二値化処理又は多値化処理を施す。
また、例えば領域分離処理部24にて写真領域に分離された領域には、階調再現処理部29が、画像出力装置12における階調再現性を重視したスクリーンでの二値化処理又は多値化処理を施す。
階調再現処理部29による処理が施されたCMYKの画像データは、図示しない画像メモリなどの記憶手段に一時的に蓄積された後、画像形成のタイミングに合わせて記憶手段から読み出されて画像出力装置12へ与えられる。画像出力装置12は、与えられた画像データに係る画像を紙などの記録媒体上に出力するものであり、電子写真方式又はインクジェット方式等のプリンタである。例えば、電子写真方式の場合には、画像出力装置12は、感光体ドラムを所定の電位に帯電する帯電器、与えられた画像信号に応じてレーザ光を発して感光体ドラム表面に静電潜像を生成するレーザ書込器、感光体ドラム表面に生成された静電潜像にトナーを供給して顕像化する現像器及び感光体ドラム表面に形成されたトナー像を紙上に転写する転写器等を備える。なお、画像出力装置12は、ディスプレイなどの表示装置であってもよい。
画像処理装置20の圧縮処理部30は、領域分離処理部24から与えられたRGBの画像データに対して、データ量を低減する圧縮処理を行い、圧縮した画像データを記憶部31へ蓄積する。記憶部31はハードディスク又はフラッシュメモリ等の大容量の記憶素子で構成されており、記憶部31に蓄積された画像データは送信装置13へ与えられる。
送信装置13は、ネットワークカード又はモデム等の一又は複数の通信用ハードウェアを有し、これらの通信手段により他の装置へ画像データの送信を行う。例えば、操作パネル15にてMFPの動作モードが電子メール送信に設定されている場合、送信装置13は、記憶部31に蓄積された画像データを電子メールに添付して予め設定された宛先へ送信する。また例えばファクシミリ通信を行う場合には、通信装置13は、指定された相手先との送信手続をモデムにて行って送信可能な状態が確保された後、画像入力装置11にて読み取られて所定の形式で圧縮された画像データを記憶部31から読み出し、圧縮形式の変更などのファクシミリ通信に必要な処理を施して、相手先に通信回線を介して順次送信する。
また、図示は省略するが、送信装置13は、他の装置からファクシミリ通信により送信された画像データを受信する受信装置としての機能を有していてもよい。この場合、送信装置13は、通信手続を行いながら、相手先から送信された画像データを受信して画像処理装置20へ与える。画像処理装置20は、受信した画像データに伸長処理を施し、伸長した画像データに対して必要に応じて回転処理又は解像度変換処理等の画像処理を施し、出力階調補正部28による階調補正処理及び階調再現処理部29による階調再現処理を施して画像出力装置12へ出力する。これにより、ファクシミリ通信により送信装置13にて受信された画像データに係る画像が形成されて出力される。
また、送信装置13は、ネットワークカード及びネットワークケーブル等により、LAN(Local Area Network)などのネットワークに接続された他のコンピュータ又はMFP等の通信機能を有する装置との間でデータ通信を行うことができる。これにより、MFPは画像入力装置11にて読み取った画像データを他の装置へ与えて保存することができ、他の装置から与えられた画像データを画像出力装置12から出力することができる。
なお、上述の画像形成処理及び画像送信処理等の種々の処理は、MFPに搭載された不図示のCPU(Central Processing Unit)によって各部が制御されることにより行われる。
圧縮処理部30は、画像入力装置11から与えられてA/D変換部21〜領域分離処理部24にて種々の画像処理が施された入力画像データを、文字及び線画等を含む前景レイヤと、文字及び線画以外の画像で構成される背景レイヤとに分離する。圧縮処理部30は、入力画像データから分離した前景レイヤに対して、その画素色をインデックス化し、最終的にJBIG、MMR又はLZW等の可逆圧縮技術を用いて圧縮処理を行う。また圧縮処理部30は、背景レイヤに対して、JPEGなどの非可逆圧縮技術を用いて圧縮処理を行う。
また、圧縮処理部30は、前景レイヤの各画素を1ビットのデータに変換した複数のマスクと、各マスクの色情報とに分解し、各マスクを可逆圧縮技術にて圧縮し、各マスクの色情報を可逆圧縮技術又は非可逆圧縮技術にて圧縮する。これにより、複数ビットの画素値を有する前景レイヤを直接的に圧縮する場合と比較して、圧縮率を向上することができる。
図2は、画像処理装置20の圧縮処理部30の構成を示すブロック図である。圧縮処理部30は、色変換処理部50、前景抽出処理部51、ライン検知処理部52、レイアウト解析処理部53、前景レイヤ生成処理部54、背景レイヤ生成処理部55及び画像圧縮部56等を備えて構成されている。
色変換処理部50は、圧縮処理部30に入力されたRGBの画像データ(入力画像)を、YCbCrの画像データに変換して出力する。色変換処理部50は、例えば下記のマトリクス演算式を用いることによって、画像データの色空間の変換を行うことができる。なお、圧縮処理部30は、色変換処理部50による変換を行わずに、後段の処理をRGBの画像データにて行ってもよく、また例えばL*a*b*の色空間の画像データに変換して後段の処理を行ってもよい。
前景抽出処理部51は、色変換処理部50から与えられた画像データを複数の画素ブロックに分割して、画素ブロック単位で入力画像データの背景の代表色(画素ブロック背景代表色)を抽出し、抽出した画素ブロック背景代表色と入力画像データとを比較することによって、入力画像データの各画素ブロックが前景に相当する画素ブロック(前景画素ブロック)であるか否かを示すマスク情報(前景画素ブロックマスク)を生成すると共に、各画素ブロックの前景の代表色(画素ブロック前景代表色)を算出する。前景抽出処理部51が生成及び算出した前景画素ブロックマスク、画素ブロック前景代表色及び画素ブロック背景代表色は、ライン検知処理部52及び背景レイヤ生成処理部55へ与えられる。(詳細は、後述の(1)前景抽出処理部51を参照。)
ライン検知処理部52は、前景抽出処理部51が出力する前景画素ブロックマスクに基づいて、入力画像データに含まれる水平ライン、垂直ライン又は表等を形成するラインを検知し、検知結果をライン情報としてレイアウト解析処理部53へ出力する。またライン検知処理部52は、ラインの検知結果に基づいて、前景画素ブロックマスクからライン部分を除去する補正を行い、補正後の前景画素ブロックマスクを出力する。(詳細は、後述の(2)ライン検知処理部52を参照。)
レイアウト解析処理部53は、前景抽出処理部51が出力した前景画素ブロックマスク、及び、ライン検知処理部52が出力したライン情報に基づいて、入力画像データに含まれる文字列の領域に係る情報(文字列領域情報)を生成して前景レイヤ生成処理部54へ出力する。(詳細は、後述の(3)レイアウト解析処理部53を参照。)
前景レイヤ生成処理部54は、入力画像データ、前景抽出処理部51が出力する画素ブロック背景代表色及び画素ブロック前景代表色、ライン検知処理部52にて補正された前景画素ブロックマスク、並びに、レイアウト解析処理部53が出力する文字列領域情報を用いて、入力画像データの各画素が前景画素であるか否かを示す前景画素マスク、及び、前景画素の色をインデックス化した前景インデックス色情報を生成し、生成した前景画素マスク及び前景インデックス色情報に基づいて、各前景インデックス色に対応した2値画像(前景レイヤ)と、この前景インデックス色に係る情報を格納するテーブルとを作成する。(詳細は、後述の(4)前景レイヤ生成処理部54を参照。)
背景レイヤ生成処理部55は、入力画像データから前景画素を除いた背景レイヤを生成するためのものであり、入力画像データの前景画素の部分を、前景画素でない周辺の背景画素を用いて穴埋めする処理を行う。詳しくは、背景レイヤ生成処理部55は、前景レイヤ生成処理部54が出力する前景レイヤを参照することによって、入力画像データの前景画素に相当する部分を探索し、前景画素に相当する部分をこの周辺に存在する背景画素の画素値(又は背景画素の平均値など)を用いて穴埋め処理することによって、背景レイヤを生成する。このときに背景レイヤ生成処理部55は、前景画素部分の近傍に背景画素が存在しない場合、近傍の穴埋め処理に用いた画素値を流用して穴埋め処理を行ってもよい。又は、前景抽出処理部51が出力した画素ブロック前景代表色を用いて穴埋め処理を行ってもよい(この場合、前景抽出処理部51が出力した画素ブロック前景代表色と周辺の背景画素の画素値との差分が小さいときにのみ、画素ブロック前景代表色を用いて穴埋め処理を行う構成としてもよい)。背景レイヤ生成処理部55が、前景画素に相当する部分の穴埋め処理を行うことによって、背景レイヤの圧縮率を高めることができる。(詳細は、後述の(5)背景レイヤ生成処理部55を参照。)
画像圧縮部56は、前景レイヤ生成処理部54が生成した前景レイヤ及び背景レイヤ生成処理部55が生成した背景レイヤに対してそれぞれ適した圧縮処理を施すことによって、画像データのデータ量を低減する処理を行う。画像圧縮部56は、例えば可逆圧縮方式のMMRにより前景レイヤを圧縮し、例えば非可逆圧縮方式のJPEGにより背景レイヤを圧縮する。なお、MMR及びJPEG等の圧縮方式は、既知の技術であるため詳細な説明は省略する。また画像圧縮部56は、前景レイヤ及び背景レイヤと共に、前景インデックス色に係る情報を格納したテーブルの圧縮を行う。
以上のようにして圧縮処理部30は、画像圧縮部56が前景レイヤ及び背景レイヤをそれぞれ圧縮した画像データを出力する。圧縮処理部30にて圧縮された画像データは、画像処理装置20の記憶部31に蓄積され、送信装置13により電子メール又はファクシミリ通信等の手段により他の装置へ送信される。
次に、圧縮処理部30の各部が行う処理の詳細について説明する。
(1)前景抽出処理部51
図3及び図4は、前景抽出処理部51の構成を示すブロック図である。前景抽出処理部51は、入力画像データから前景画素ブロックマスクを生成する画像処理、並びに、画素ブロック前景代表色及び画素ブロック背景代表色を算出する画像処理を行う。この処理を行うために前景抽出処理部51は、平坦画素ブロック抽出処理部61、背景代表色算出処理部62、前景画素ブロック抽出処理部63及び前景代表色算出処理部64を備えている。
前景抽出処理部51の平坦画素ブロック抽出処理部61は、入力画像データを所定サイズの画素ブロック(画像領域)に分割し、画像データ中の複数の画素ブロックから、画素ブロックに含まれる画素間の画素値の差が所定値より小さい画素ブロックを平坦画素ブロック(平坦領域)に分類すると共に、平坦画素ブロック以外の画素ブロックを前景画素ブロック(変化領域)に分類することで前景画素ブロックを抽出する処理を行うものである。この処理を行うために平坦画素ブロック抽出処理部61は、初期平坦画素ブロック抽出処理部71、水平方向連結平坦画素ブロック抽出処理部72、垂直方向連結平坦画素ブロック抽出処理部73、ブロックベース平坦画素ブロック抽出処理部74及びアップサンプリング処理部75を備えている。
初期平坦画素ブロック抽出処理部71は、画素ブロック内の各画素の画素値を調べて最大画素値と最小画素値との差分を算出し、差分が所定値より小さい画素ブロックを平坦画素ブロックの候補(以下、平坦画素ブロック候補という)として抽出する処理を行う。初期平坦画素ブロック抽出処理部71は、抽出した平坦画素ブロック候補を、水平方向連結平坦画素ブロック抽出部72〜ブロックベース平坦画素ブロック抽出処理部74へ順に与える。
水平方向連結平坦画素ブロック抽出処理部72は、入力画像データの水平方向について近接する(連続する)複数の平坦画素ブロック候補を検索して、複数の平坦画素ブロック候補の近接数を算出し、算出した近接数が所定値を超える場合に、これらの近接する複数の平坦画素ブロック候補を平坦画素ブロックであると判定する。
同様に、垂直方向連結平坦画素ブロック抽出処理部73は、入力画像データの垂直方向について近接する複数の平坦画素ブロック候補を検索して、複数の平坦画素ブロック候補の近接数を算出し、算出した近接数が所定値を超える場合にこれらの近接する複数の平坦画素ブロック候補を平坦画素ブロックであると判定する。
ブロックベース平坦画素ブロック抽出処理部74は、入力画像データの各画素ブロックについて、その周囲の画素ブロックが平坦画素ブロック又は平坦画素ブロック候補であるか否かを調べ、所定数以上の平坦画素ブロック又は平坦画素ブロック候補が周囲に存在している画素ブロックを平坦画素ブロックであると判定する。
ただし、平坦画素ブロック抽出処理部61は、最初に初期平坦画素ブロック抽出処理部71による平坦画素ブロック候補の抽出処理を行った後、水平方向連結平坦画素ブロック抽出処理部72、垂直方向連結平坦画素ブロック判定処理部73及びブロックベース平坦画素ブロック抽出処理部74による平坦画素ブロックの抽出処理を繰り返し行っている。
例えば、平坦画素ブロック抽出処理部61は、入力画像データをサイズが16画素×16画素の画素ブロック(以下、単に16×16画素ブロックという)に分割し、各16×16画素ブロックが平坦画素ブロック候補であるか否かを初期平坦画素ブロック抽出処理部71にて判定した後、平坦画素ブロック候補が平坦画素ブロックであるか否かを水平方向連結平坦画素ブロック抽出処理部72、垂直方向連結平坦画素ブロック抽出処理部73及びブロックベース平坦画素ブロック抽出処理部74にてそれぞれ判定する。
その後、平坦画素ブロック抽出処理部61は、平坦画素ブロックであると判定された16×16画素ブロックを、アップサンプリング処理部75にて更にサイズの小さい画素ブロックに分割し、例えば8画素×8画素の画素ブロック(以下、単に8×8画素ブロックという)に分割して、各8×8画素ブロックが平坦画素ブロックであるか否かを水平方向連結平坦画素ブロック抽出処理部72、垂直方向連結平坦画素ブロック抽出処理部73及びブロックベース平坦画素ブロック抽出処理部74にてそれぞれ判定する。このように、平坦画素ブロック抽出処理部61は、画素ブロックのサイズが予め定められた所定サイズ(例えば4画素×4画素の画素ブロック)に達するまで、入力画像データの分割と平坦画素ブロックの抽出処理とを繰り返し、最終的に各判定処理において一度でも平坦画素ブロックであると判定された画素ブロックを平坦画素ブロックに分類し、これ以外の画素ブロックを前景画素ブロックに分類する。
図5は、初期平坦画素ブロック抽出処理部71が行う処理を説明するための模式図であり、入力画像データを16×16画素ブロックに分割し、各16×16画素ブロックが平坦画素ブロック候補であるか否かを判定する例を図示してある。初期平坦画素ブロック抽出処理部71は、例えば図5(a)に示すように入力画像データ中の1つの16×16画素ブロックを処理対象とした場合、図5(b)〜図5(f)に示す複数のパターンで32画素×32画素の判定領域を設定し、各判定領域が平坦であるか否かに基づいて、処理対象の16×16画素ブロックが平坦画素ブロック候補であるか否かを判定する。このとき初期平坦画素ブロック抽出処理部71は、32画素×32画素の各判定領域が平坦であるか否かを、各判定領域内の最大画素値と最小画素値との差分が所定値(例えば32)以下であるか否かに応じた判定することができる。初期平坦画素ブロック抽出処理部71は、全パターンの判定領域が平坦であると判定した場合に、処理対象の16×16画素ブロックを平坦画素ブロック候補であると判定する。初期平坦画素ブロック抽出処理部71は、入力画像データの全ての16×16画素ブロックについて同様の処理を行って、入力画像データ中の全ての平坦画素ブロック候補を抽出する。
図6は、水平方向連結平坦画素ブロック抽出処理部72が行う処理を説明するための模式図である。水平方向連結平坦画素ブロック抽出処理部72は、入力画像データの水平方向に関して、平坦画素ブロック候補が連続する数をカウントし(図6(a)参照)、平坦画素ブロック候補の連続数が所定数以上の場合に、これら連続する複数の平坦画素ブロック候補が平坦画素ブロックであると判定する。
ただし水平方向連結平坦画素ブロック抽出処理部72は、水平方向に関する平坦画素ブロック候補の連続数をカウントする際に、平坦画素ブロックの所定範囲内での途切れを許容する。水平方向連結平坦画素ブロック抽出処理部72は、平坦画素ブロック候補の連続数を水平方向へ順にカウントしていき、平坦画素ブロック候補でない画素ブロックを見出した場合であっても、平坦画素ブロック候補でない画素ブロックの連続数(即ち平坦画素ブロック候補の途切れ数)が、この時点での平坦画素ブロック候補の連続数に所定数(例えば0.3)を積算した値より少ないときには、水平方向に平坦画素ブロック候補が連続しているとみなしてカウントを続行する。
例えば図6(b)に示すように、水平方向連結平坦画素ブロック抽出処理部72が、水平方向に平坦画素ブロック候補が5つ連続した後に、平坦画素ブロック候補でない画素ブロック(ハッチングを付したブロック)を見出した場合、この時点での連続数は5であり、連続数に所定数として0.3を乗算した値は1.5であるため、この値よりも平坦画素ブロック候補でない画素ブロックの連続数は少ない。よって水平方向連結平坦画素ブロック抽出処理部72は、図示のような平坦画素ブロック候補の途切れを許容して、水平方向への連続数のカウントを続行する。これにより、例えば画像中に表などが描かれており、平坦な画像領域が表の枠などを構成する線分で途切れるような場合であっても、これらの領域を平坦な領域として扱うことができ、精度のよい平坦画素ブロックの抽出を行うことができる。
図7は、垂直方向連結平坦画素ブロック抽出処理部73が行う処理を説明するための模式図である。垂直方向連結平坦画素ブロック抽出処理部73は、入力画像データの垂直方向に関して、平坦画素ブロック候補が連続する数をカウントし(図7(a)参照)、平坦画素ブロック候補の連続数が所定数以上の場合に、これら連続する複数の平坦画素ブロック候補が平坦画素ブロックであると判定する。
ただし垂直方向連結平坦画素ブロック抽出処理部73は、垂直方向に関する平坦画素ブロック候補の連続数をカウントする際に、平坦画素ブロックの所定範囲内での途切れを許容する。垂直方向連結平坦画素ブロック抽出処理部73は、平坦画素ブロック候補の連続数を垂直方向へ順にカウントしていき、平坦画素ブロック候補でない画素ブロックを見出した場合であっても、平坦画素ブロック候補でない画素ブロックの連続数(即ち平坦画素ブロック候補の途切れ数)が、この時点での平坦画素ブロック候補の連続数に所定数(例えば0.3)を積算した値より少ないときには、垂直方向に平坦画素ブロック候補が連続しているとみなしてカウントを続行する。
例えば図7(b)に示すように、垂直方向連結平坦画素ブロック抽出処理部73が、垂直方向に平坦画素ブロック候補が5つ連続した後に、平坦画素ブロック候補でない画素ブロック(ハッチングを付したブロック)を見出した場合、この時点での連続数は5であり、連続数に所定数として0.3を乗算した値は1.5であるため、この値よりも平坦画素ブロック候補でない画素ブロックの連続数は少ない。よって垂直方向連結平坦画素ブロック抽出処理部73は、図示のような平坦画素ブロック候補の途切れを許容して、垂直方向への連続数のカウントを続行する。これにより、例えば画像中に表などが描かれており、平坦な画像領域が表の枠などを構成する線分で途切れるような場合であっても、これらの領域を平坦な領域として扱うことができ、精度のよい平坦画素ブロックの抽出を行うことができる。
図8は、ブロックベース平坦画素ブロック抽出処理部74が行う処理を説明するための模式図である。ブロックベース平坦画素ブロック抽出処理部74は、平坦画素ブロック候補として抽出された画素ブロックを注目画素ブロック(図8においてハッチングを付したブロック)とし、注目画素ブロックの画素値の平均値(画素平均値)を算出すると共に、注目画素ブロックの周囲8方向(図8の矢印参照)に存在する画素ブロックについて、各画素ブロック画素平均値をそれぞれ算出する。これらの算出結果に基づいて、ブロックベース平坦画素ブロック抽出処理部74は、注目画素ブロックの画素平均値に最も近い画素平均値を有する画素ブロックを選択し、画素平均値の差が所定値より小さいか否かを判定する。注目画素ブロックと周囲の画素ブロックとの画素値平均値の差が所定値より小さい場合、両画素ブロックはローカルな(グローバルであってもよい)同一の背景に属するものであると判断できるため、ブロックベース平坦画素ブロック抽出処理部74は同一背景に属する画素ブロックをグループ化する。ブロックベース平坦画素ブロック抽出処理部74は、入力画像データに含まれる全ての平坦画素ブロック候補について同様の処理を行って得られた一又は複数のグループについて、各グループに属する画素ブロックの数が所定数を超えるか否かを判定し、所定数を超えるグループに属する画素ブロックを平坦画素ブロックとして抽出する。
図9は、アップサンプリング処理部75が行う処理を説明するための模式図である。アップサンプリング処理部75は、水平方向連結平坦画素ブロック抽出処理部72〜ブロックベース平坦画素ブロック抽出処理部74の処理を終えた入力画像データについて、画素ブロックの分割サイズを変更する処理を行う。例えば図9に示すように入力画像データが8×8画素ブロックに分割されていた場合、アップサンプリング処理部75は、1つの8×8画素ブロックを4つの4×4画素ブロックに分割する。アップサンプリング処理部75は、分割サイズを変更した入力画像データを水平方向連結平坦画素ブロック抽出処理部72へ与え、水平方向連結平坦画素ブロック抽出処理部72〜ブロックベース平坦画素ブロック抽出処理部74は分割サイズが変更されて入力画像データに対して同様の処理を繰り返し行う。このように、画素ブロックのサイズを変更して平坦画素ブロックの抽出を繰り返し行うことによって、平坦画素ブロックの抽出精度を向上することができる。
平坦画素ブロック抽出処理部61による入力画像データからの平坦画素ブロックの抽出結果は、背景代表色算出処理部62、前景画素ブロック抽出処理部63及び前景代表色算出処理部64へ与えられる。
背景代表色算出処理部62は、平坦画素ブロック抽出処理部61が抽出した平坦画素ブロック毎に平均画素値を算出し、算出した画素ブロック毎の平均画素値を画素ブロック背景代表色として出力する。
前景画素ブロック抽出処理部63は、入力画像データを所定サイズに分割した画素ブロックの画素値と、背景代表色算出処理部62が算出した画素ブロック背景代表色(各平坦画素ブロックの平均画素値)とを比較して、両値の差分が所定値より大きい場合に、この画素ブロックを前景画素ブロックとして抽出する。前景画素ブロックとして抽出する画素ブロックのサイズは、入力データの解像度などに応じて、前景画素が抽出できる大きさに予め設定されており、例えば入力画像データの解像度が300dpiの場合に画素ブロックのサイズを2画素×2画素に設定することができる。
図10は、前景画素ブロック抽出処理部63が行う処理を説明するための模式図である。なお、本図では、平坦画素ブロック抽出処理部61が4×4画素ブロック単位で平坦画素ブロックの抽出を行い、背景代表色算出処理部62が4×4画素ブロック単位での画素ブロック背景代表色の算出を行い、前景画素ブロック抽出処理部63が2画素×2画素の画素ブロック(以下、2×2画素ブロックという)単位での前景画素ブロックの抽出を行う場合の例を示してある。平坦画素ブロック及び画素ブロック背景代表色に係る4×4ブロック(図10において細実線で区切られた領域)と、前景画素ブロックに係る2×2画素ブロック(図10においてハッチングを付した領域)との対応関係は、図10(a)〜(d)に示すように4通りである。即ち、2×2画素ブロックが4×4画素ブロックの左上、右上、左下又は右下のいずれかの位置に対応する。
前景画素ブロック抽出処理部63は、処理対象の2×2画素ブロックの位置に応じて、周囲の4つの4×4画素ブロック(図10において太実線で囲まれた領域)について画素ブロック背景代表色をそれぞれ取得し、2×2画素ブロックの画素値(4つの画素値をそれぞれ個別に用いてもよく、4つの画素値の平均値を用いてもよい)と、4つの画素ブロック背景代表色との各差分が所定値(例えば80)より大きいか否かを判定する。判定の結果、2×2画素ブロックの画素値と4つの画素ブロック背景代表色との差分の全てが所定値より大きい場合、前景画素ブロック抽出処理部63は、この2×2画素ブロックを前景画素ブロックであると判定する。
前景画素ブロック抽出処理部63は、入力画像データの全ての2×2画素ブロックに対して上記の処理を行って、入力画像データから前景画素ブロックを抽出し、抽出された前景画素ブロックを前景画素ブロックマスクとして出力する。上記の方法で前景画素ブロックの抽出を行うことによって、平坦画素ブロックの境界を前景画素ブロックとして検知することを回避できる。
前景代表色算出処理部64は、入力画像データ入力画像データを所定サイズに分割した画素ブロックの画素値と、背景代表色算出処理部62が算出した画素ブロック背景代表色とを比較して、両値の差分が最大となる画素値を、この画素ブロックの前景代表色として算出する。例えば画素ブロック背景代表色が4×4画素ブロック毎に算出されたものである場合、前景代表色算出処理部64は、入力画像データの4×4画素ブロックに含まれる各画素の画素値と、この4×4画素ブロックに係る画素ブロック背景代表色との差分をそれぞれ算出し、各差分が所定値(例えば96)より大きいか否かを判定し、差分が所定値より大きい画素の画素値から、差分が最大となる画素値を取得し、この画素値を画素ブロック前景代表色として出力する。これにより、前景代表色算出処理部64は、簡易な演算処理によって画素ブロック前景代表色の算出を行うことができる。
以上の処理によって、前景抽出処理部51は、前景画素ブロックマスク、画素ブロック前景代表色及び画素ブロック背景代表色の生成又は算出を行うことができ、これらをライン検知処理部52及び背景レイヤ生成処理部55へ出力する。
(2)ライン検知処理部52
図11は、ライン検知処理部52の構成を示すブロック図である。ライン検知処理部52は、前景抽出処理部51にて生成された前景画素ブロックマスクを用いて、入力画像中の水平ライン、垂直ライン及び表等を形成するラインの検知処理を行う。この処理を行うためにライン検知処理部52は、水平ライン候補抽出処理部81、垂直ライン候補抽出処理部82、ライン候補結合処理部83、ライン分布判定処理部84及びライン最終判定処理部85を備えている。
図12は、水平ライン候補抽出処理部81が行う処理を説明するための模式図である。なお、図12の上段には、前景画素ブロックマスクの一例として、入力画像データにおける前景画素ブロックを実線で囲んだ領域として図示してある。水平ライン候補抽出処理部81は、前景画素ブロックマスクに基づいて水平方向に所定数以上連続する複数の前景画素ブロックを探し出し、連続する一群の前景画素ブロックを水平ライン候補とし、1つの水平ライン候補に対して1つのラベルを付す処理を行う。図12の下段には、上段の例に対して水平ライン候補抽出処理部81が2つの水平ライン候補(ハッチングを付した2つの領域)を抽出し、それぞれにラベルを付した例を図示してある。
図示は省略するが、垂直ライン候補抽出処理部82は、水平ライン候補抽出処理部81が行う上述の処理と同様の処理を、入力画像データの垂直方向について行う。即ち、垂直ライン候補抽出処理部82は、前景画素ブロックマスクに基づいて垂直方向に所定数以上連続する複数の前景画素ブロックを探し出し、連続する一群の前景画素ブロックを垂直ライン候補とし、1つの垂直ライン候補に対して1つのラベルを付す処理を行う。
図13は、ライン候補結合処理部83が行う処理を説明するための模式図である。なお、図13の上段には、水平ライン候補抽出処理部81の処理結果として、2つの水平ライン候補にそれぞれラベルを付した例(即ち、図12の下段と同じ例)を図示してある。ライン候補結合処理部83は、抽出された水平ライン候補及び垂直ライン候補について、入力画像データの水平方向又は垂直方向の同一ライン上に存在し、且つ、互いに近接する複数のライン候補を探し出し、これら複数のライン候補を1つのライン候補として、各ライン候補に付されたラベルを1つのラベルに統合することによって、ライン候補を結合する。図13の上段に示された2つの水平ライン候補は、水平方向の同一ライン上に存在し、且つ、互いに近接するため、図13の下段に示すようにラベルを統合して水平ライン候補を結合することができる。
図14は、ライン分布判定処理部84が行う処理を説明するための模式図であり、ライン候補結合処理部83の処理結果として、図13の下段に示した1つのライン候補を拡大して図示してある。ライン分布判定処理部84は、ライン候補結合処理部83による結合処理を終えたライン情報を取得し、ラベルが付された各ライン候補の太さ(水平方向のライン候補であれば垂直方向の画素数、垂直方向のライン候補であれば水平方向の画素数)の分布を抽出し、抽出結果に基づいて各ライン候補がラインであるか否かの判定を行う。ライン分布判定処理部84は、ライン候補について抽出した太さの分布を調べ、例えば極端に太い部分を有するライン候補はラインではないと判断し、このライン候補を除外する。このようにライン分布判定処理部84は、ライン候補の太さの分布に基づいて、ラインではないと判断できるライン候補を除外する処理を行う。
図15は、ライン最終判定処理部85が行う処理を説明するための模式図である。ライン最終判定処理部85は、抽出された水平方向のライン候補と垂直方向のライン候補とが接続するか否かを判定し、相互に接続する複数のライン候補の数が所定数を超える場合には、これら複数のライン候補を画像中の表を形成するラインであると識別し、これら以外のライン候補を水平方向又は垂直方向の単独のラインであると識別する。またライン最終判定処理部85は、各ライン候補のライン長が所定長を超えるか否かを調べることによって、表を形成するライン又は単独ラインの識別を行う。図15には、水平単独ライン、垂直単独ライン及び表を形成するラインと識別されたラインをそれぞれ実線で示し、表を形成するラインであるか否かの判定を行う際に用いられたライン候補の接続点を丸印で囲んで示してある。このように、単独ラインと表を形成するラインとの識別を行うことによって、後段の処理において画像データの内容に応じた適切な画像処理を施すことが可能となる。
次に、ライン検知処理部52の各処理部が行う処理の詳細な手順を、フローチャート又は数式等に基づいて説明する。
図16は、水平ライン候補抽出処理部81が行う処理の手順を示すフローチャートである。なお本処理において変数x及びyを用いているが、これらの変数は画像データ中の画素ブロックの水平方向及び垂直方向の位置(座標)を示すものであり、画像の左上の点を(x、y)=(0、0)とし、画像の水平右向きにxの値が増加し、画像の垂直下向きにyの値が増加するものとする。また本処理においては、水平方向の座標xの値を格納するために変数minX及びmaxXを用いる。水平ライン候補抽出処理部81は、まず、変数yの値を0に設定し(ステップS1)、変数xの値を0に設定する(ステップS2)。
次いで、水平ライン候補抽出処理部81は、(x、y)に位置する画素ブロックが水平方向のラインの始点となり得るライン候補であるか否かを判定し(ステップS3)、ラインの始点となり得ると判定した場合には(S3:YES)、始点設定処理を行う(ステップS4)。始点設定処理において、水平ライン候補抽出処理部81は、変数minXに現時点での変数xの値(即ち、水平方向ラインの始点座標)を設定する。
始点設定処理:minX=x;
また水平ライン候補抽出処理部81は、(x、y)の画素ブロックがラインの始点となり得ないと判定した場合(S3:NO)、(x、y)の画素ブロックがラインの連続部分となり得るライン候補であるか(即ち、直前の画素ブロックがライン候補であり、(x、y)の画素ブロックがこのライン候補に連続するものであるか)否かを判定する(ステップS5)。ラインの連続部分となり得ると判定した場合(S5:YES)、水平ライン候補抽出処理部81は、終点更新処理を行う(ステップS6)。終点更新処理において、水平ライン候補抽出処理部81は、変数maxXに現時点でのxの値(即ち、現時点での水平方向ラインの終点座標)を設定する。
終点設定処理:maxX=x;
また水平ライン候補抽出処理部81は、(x、y)の画素ブロックがラインの連続部分となり得ないと判定した場合(S5:NO)、変数minX及びmaxXの差分から算出されるライン長が、所定値TH_MIN_RUNLENGTH(例えば50)以上であるか否かを判定する(ステップS7)。ステップS7にて行うライン長判定は、以下の式で表される。
ライン長判定:(maxX−minX+1)≧TH_MIN_RUNLENGTH;
ライン長が所定値以上の場合(S7:YES)、水平ライン候補抽出処理部81は、始点minXから終点maxXまでの複数の画素ブロックをライン候補として抽出し、ライン情報更新処理を行う(ステップS8)。ライン情報更新処理は、抽出したライン候補にラベルを付すと共に、既に付されたラベルを更新する処理である。水平ライン候補抽出処理部81は、抽出したライン候補の直上に位置する他のライン候補を探し出し、これら他のライン候補に付されたラベルを参照して、新たに抽出したライン候補に対するラベル付けを行う。このとき水平ライン候補抽出処理部81は、始点minXから終点maxXまでの座標に対して、その一部又は全部のx座標が重なり合う直上のライン候補が存在する場合、新たに抽出したライン候補を直上のライン候補に統合する。
図17は、水平ライン候補抽出処理部81が行うライン候補に対するラベル付けを説明するための模式図である。水平ライン候補抽出処理部81は、新たに抽出したライン候補に対するラベル付けを行う場合、まず、新たなライン候補に重なり合う直上のライン候補としてラベル2が付されたライン候補を探し出し、新たに抽出したライン候補にラベル2を付す。次いで水平ライン候補抽出処理部81は、新たなライン候補に重なり合う直上のライン候補としてラベル1が付されたライン候補を探し出す。このとき、ラベル付け対象のライン候補には既にラベル2が付されているため、水平ライン候補抽出処理部81は、ラベル1及びラベル2を統合する。ラベルの統合では値の小さいラベルを優先し、ラベル2が付されたライン候補をラベル1に変更することで行うことにより、ラベルの値と副走査座標との相関を保持することができる。また、新たに抽出したライン候補の直上に重なり合う他のライン候補が存在しない場合、水平ライン候補抽出処理部81は、このライン候補に新たなラベルを付す。
ステップS4、S6若しくはS8の処理を終えた後、又は、ステップS7にてライン長が所定値より小さい場合(S7:NO)、水平ライン候補抽出処理部81は、現時点での変数xの値が最大値(水平方向の画素ブロック数)に達したか否かを判定する(ステップS9)。変数xが最大値に達していない場合(S9:NO)、水平ライン候補抽出処理部81は、変数xの値に1を加算し(ステップS10)、ステップS3へ処理を戻して、水平方向の次の画素ブロックに対する処理を行う。変数xが最大値に達した場合(S9:YES)、水平ライン候補抽出処理部81は、変数yの値が最大値(垂直方向の画素ブロック数)に達したか否かを判定する(ステップS11)。変数yが最大値に達していない場合(S11:NO)、水平ライン候補抽出処理部81は、変数yの値に1を加算し(ステップS12)、ステップS2へ処理を戻して、画像データにおける次段先頭の画素ブロックに対する処理を行う。変数yが最大値に達した場合(S11:YES)、水平ライン候補抽出処理部81は、画像データの全ての画素ブロックに対する処理を終えたため、ラベル付けの処理を終了する。
以上の処理によって、水平ライン候補抽出処理部81は水平方向のライン候補の抽出と抽出したライン候補に対するラベル付けとを行うことができ、抽出したライン候補とこのライン候補に付したラベルとについての情報を含むライン情報を出力する。
なお、垂直ライン候補抽出処理部82については、上述の水平ライン候補抽出処理部81が行う処理を水平方向に代えて垂直方向に行うことによって、垂直方向のライン方向の抽出及びラベル付けを行うことができる。
ライン候補結合処理部83は、水平ライン候補抽出処理部81及び垂直ライン候補抽出処理部82が抽出したライン候補について、ライン方向において重なり合い、且つ、互いに近接する複数のライン候補を結合(ラベルを統合)する。ライン候補結合処理部83は、例えば第1ライン候補及び第2ライン候補を結合するか否かを判定するために、下記の2つの判定条件を用いる。なお、下記の判定条件において、minXはx方向の最小座標であり、maxXはx方向の最大座標であり、minYはy方向の最小座標であり、maxYはy方向の最大座標であり、TH_LINEGAPは近接判定用の閾値(例えば2)である。また下記の判定条件は水平方向のライン候補を結合する際に用いる判定条件であり、垂直方向のライン候補のための判定条件は、下記の判定条件のx方向及びy方向を交換したものである。
重なり判定条件:
第1ライン候補のmaxY≧第2ライン候補のminY
且つ
第1ライン候補のminY≦第2ライン候補のmaxY
近接判定条件:
|第2ライン候補のminX−第1ライン候補のmaxX−1|≦TH_LINEGAP
又は
|第1ライン候補のminX−第2ライン候補のmaxX−1|≦TH_LINEGAP
ライン候補結合処理部83は、上記の重なり判定条件及び近接判定条件を満たす2つのライン候補を結合し、ライン情報を更新して出力する。
図18は、ライン分布判定処理部84が行う処理の手順を示すフローチャートであり、水平方向のライン候補に対して行う処理の手順を示してある(垂直方向のライン候補に対して行う処理の手順は、x方向及びy方向を交換して同様の処理を行えばよいため、図示を省略する)。ライン分布判定処理部84は、水平方向のライン候補に対する処理を行う場合、画像データの垂直方向に処理を進める。
ライン分布判定処理部84は、まず、変数xの値を0に設定し(ステップS21)、変数yの値を0に設定する(ステップS22)。次いで、ライン分布判定処理部84は、(x、y)に位置する画素ブロックが水平方向のライン候補の垂直方向の始点(即ち、水平方向のラインの上端の点)であるか否かを判定し(ステップS23)、ライン候補の始点であると判定した場合には(S23:YES)、始点設定処理を行う(ステップS24)。始点設定処理において、ライン分布判定処理部84は、変数minYに現時点での変数yの値(即ち、水平方向ラインの垂直方向の始点座標)を設定する。
始点設定処理:minY=y;
またライン分布判定処理部84は、(x、y)の画素ブロックがライン候補の始点でないと判定した場合(S23:NO)、(x、y)の画素ブロックがライン候補の連続部分であるか(即ち、直前の画素ブロックがライン候補であり、(x、y)の画素ブロックがこのライン候補に連続するものであるか)否かを判定する(ステップS25)。ライン候補の連続部分であると判定した場合(S25:YES)、ライン分布判定処理部84は、終点更新処理を行う(ステップS26)。終点更新処理において、ライン分布判定処理部84は、変数maxYに現時点でのyの値(即ち、現時点での水平方向ラインの垂直方向の終点座標)を設定する。
終点設定処理:maxY=y;
またライン分布判定処理部84は、(x、y)の画素ブロックがライン候補の連続部分でないと判定した場合(S25:NO)、ライン候補の太さ算出処理を行う(ステップS27)。太さ算出処理において、ライン分布判定処理部84は、変数maxY及び変数minYの差分に基づいてライン候補の太さを算出し、このライン候補に付されたラベルに対応づけて算出した太さを記憶する。
ライン候補の太さ算出処理:ライン候補の太さ=maxY−minY+1;
ステップS24、S26又はS27の処理を終えた後、ライン分布判定処理部84は、現時点での変数yの値が最大値(垂直方向の画素ブロック数)に達したか否かを判定する(ステップS28)。変数yが最大値に達していない場合(S28:NO)、ライン分布判定処理部84は、変数yの値に1を加算し(ステップS29)、ステップS23へ処理を戻して、垂直方向の次の画素ブロックに対する処理を行う。変数yが最大値に達した場合(S28:YES)、ライン分布判定処理部84は、変数xの値が最大値(水平方向の画素ブロック数)に達したか否かを判定する(ステップS30)。変数xが最大値に達していない場合(S30:NO)、ライン分布判定処理部84は、変数xの値に1を加算し(ステップS31)、ステップS22へ処理を戻して、処理を繰り返す。変数xが最大値に達した場合(S30:YES)、ライン分布判定処理部84は、画像データの全ての画素ブロックに対する処理を終えたため、ライン候補の太さを算出する処理を終了する。
以上の処理を行うことによって、ライン分布判定処理部84は画像データに含まれるライン候補の太さ分布を得ることができる。その後、ライン分布判定処理部84は、ライン候補に付されたラベルを基に太さの分布を調べ、各ライン候補の太さの最大値及び最小値を取得して閾値(TH_MAXTHICK(例えば6)及びTH_MINTHIC(例えば4))との比較を行い、各ライン候補がラインであるか否かの判定を行う。ライン分布判定処理部84は、下記の太さ判定条件を満たすライン候補をラインとし、太さ判定条件を満たさないライン候補はラインでないものとみなして、このライン候補に係る情報をライン情報から削除する。
太さ判定条件:
太さの最大値≦TH_MAXTHICK
且つ
太さの最小値≦TH_MINTHICK
図19は、ライン最終判定処理部85が行う処理の手順を示すフローチャートである。なお本処理において変数i及びjを用いているが、これらの変数はそれぞれ水平方向のライン候補に付されたラベル値及び垂直方向のライン候補に付されたラベル値を示すものである。ライン最終判定処理部85は、まず、変数iの値を1に設定し(ステップS41)、変数jの値を1に設定する(ステップS42)。次いで、ライン最終判定処理部85は、水平方向のラベルiのライン候補と垂直方向のラベルjのライン候補とが接続しているか否かを判定する(ステップS43)。
図20は、水平方向及び垂直方向のライン候補の接続判定を説明するための模式図である。ライン最終判定処理部85は、水平方向のライン候補(水平ライン候補)と垂直方向のライン候補(垂直ライン候補)とが接続するか否かを、下記の接続判定条件を満たすか否かに応じて判定する。
接続判定条件:
垂直ライン候補のmaxX≧水平ライン候補のminX
且つ
水平ライン候補のmaxX≧垂直ライン候補のminX
且つ
垂直ライン候補のmaxY≧水平ライン候補のminY
且つ
水平ライン候補のmaxY≧垂直ライン候補のminY
水平方向及び垂直方向のライン候補が接続すると判定した場合(S43:YES)、ライン最終判定処理部85は、ステップS43にて接続すると判定した両ライン候補について、接続すると判定したのが初めてであるか否かを調べる(ステップS44)。両ライン候補の接続が初めての場合(S44:YES)、ライン最終判定処理部85は、両ライン候補に新規の表ラベルを設定する(ステップS45)。なお、表ラベルとは、画像中に含まれる表に対して付されるものであり、ライン最終判定処理部85が1つの画像データに対する処理を終えた場合、この画像データ中の1つの表に対して1つの表ラベルがそれぞれ付される。ライン候補の接続が初めてであるか否かは、既に表ラベルが付されているか否かに応じて判断することができる。
両ライン候補の接続が初めてでない場合(S44:NO)、ライン最終判定処理部85は、いずれか一方のライン候補について、接続すると判定したのが初めてであるか否かを調べる(ステップS46)。これは、いずれか一方のライン候補に表ラベルが付されているか否かに応じて判断することができる。いずれか一方のライン候補の接続が初めての場合(S46:YES)、ライン最終判定処理部85は、接続が初めてでない他方のライン候補に付された表ラベルを、接続が初めてのライン候補に対して設定する(ステップS47)。また、両ライン候補について、接続が初めてではない場合(S46:NO)、ライン最終判定処理部85は、両ライン候補にそれぞれ付された表ラベルを調べ、値が小さい方の表ラベルに統合すべく、値が大きい方の表ラベルが付されたライン候補について表ラベルを更新する処理を行う(ステップS48)。
ステップS45、S47若しくはS48の処理を終えた後、又は、ステップS43にて水平方向及び垂直方向のライン候補が接続しないと判定した場合(S43:NO)、ライン最終判定処理部85は、現時点での変数jの最大値(垂直方向のライン候補の総数)に達したか否かを判定する(ステップS49)。変数jが最大値に達していない場合(S49:NO)、ライン最終判定処理部85は、変数jの値に1を加算し(ステップS50)、ステップS43へ処理を戻して、水平方向及び垂直方向のライン候補の次の組み合わせに対する処理を行う。変数jが最大値に達した場合(S49:YES)、ライン最終判定処理部85は、変数iの値が最大値(水平方向のライン候補の総数)に達したか否かを判定する(ステップS51)。変数iが最大値に達していない場合(S51:NO)、ライン最終判定処理部85は、変数iの値に1を加算し(ステップS52)、ステップS42へ処理を戻して、水平方向及び垂直方向のライン候補の次の組み合わせに対する処理を行う。変数iが最大値に達した場合、ライン最終判定処理部85は処理を終了する。
ライン最終判定処理部85は、図19に示した処理を行うことによって、画像データ中の複数のライン候補から、表を形成する可能性のあるライン候補を検出することができ、このようなライン候補に対して表ラベルを付すことができる。その後、ライン最終判定処理部85は、各ライン候補が単独の水平ラインであるか否か、単独の垂直ラインであるか否か、表を形成する水平ラインであるか否か、又は、表を形成する垂直ラインであるか否かの最終判定を行う。
ライン最終判定処理部85は、ライン候補が単独のもの(即ち表ラベルが付されていないもの)である場合、ライン候補のライン長が所定値TH_ISO_RUNLENGTH(例えば100)以上であるか否かに応じて、ライン候補が単独のラインであるか否かを最終判定する。
単独水平ラインの条件:
水平ライン候補のmaxX−水平ライン候補のminX+1≧TH_ISO_RUNLENGTH;
単独垂直ラインの条件:
垂直ライン候補のmaxY−垂直ライン候補のminY+1≧TH_ISO_RUNLENGTH;
またライン最終判定処理部85は、ライン候補が票を形成する可能性があるもの(即ち表ラベルが付されたもの)である場合、上記と同様の所定値TH_ISO_RUNLENGTHを用いた判定に加えて、同一の表ラベルが付された複数のライン候補の最大ライン長に所定重み係数TH_LINERATIO(例えば0.8)を乗算した値を用いた判定を行う。ライン最終判定処理部85は、表を形成する可能性があるライン候補のライン長が、所定値TH_ISO_RUNLENGTH以上である場合、又は、最大ライン長の所定重み係数TH_LINRATIOを乗じた値以上である場合に、このライン候補を、表を形成するライン候補であると判定する。これにより、単独のラインとしては短いラインであっても、表の一部のラインであれば、ライン最終判定処理部85は、ラインとして判定することができる。
表を形成する水平ラインの条件:
水平ライン候補のmaxX−水平ライン候補のminX+1≧同一表ラベルのライン候補の最大ライン長×TH_LINERATIO≫10;
又は
水平ライン候補のmaxX−水平ライン候補のminX+1≧TH_ISO_RUNLENGTH;
表を形成する垂直ラインの条件:
垂直ライン候補のmaxY−垂直ライン候補のminY+1≧同一表ラベルのライン候補の最大ライン長×TH_LINERATIO≫10;
又は
垂直ライン候補のmaxY−垂直ライン候補のminY+1≧TH_ISO_RUNLENGTH;
以上の処理により、ライン検知処理部52は、前景抽出処理部51から与えられた前景画素ブロックマスクから画像中の水平ライン、垂直ライン又は表を形成するラインを検知することができ、検知されたラインに係る情報をライン情報としてレイアウト解析処理部53へ出力することができる。なお、以降の処理(レイアウト解析処理部53、前景レイヤ生成処理部54及び背景レイヤ生成処理部55の処理)においては、前景抽出処理部51が生成した前景画素ブロックマスクから、ライン検知処理部52が検知したラインに相当する画素ブロックを除外する補正を行った前景画素ブロックマスクを用いる。
(3)レイアウト解析処理部53
図21は、レイアウト解析処理部53の構成を示すブロック図である。レイアウト解析処理部53は、前景抽出処理部51にて生成されてライン検知処理部52の検知結果に基づいてラインを構成する画素ブロックを除外するよう補正された前景画素ブロックマスクと、ライン検知処理部52の検知結果であるライン情報とを用いて、画像データに含まれる文字列の領域に係る情報(文字列領域情報)を生成する処理を行う。この処理を行うためにレイアウト解析処理部53は、ラベリング処理部91、非文字矩形除去処理部92、表内矩形特定処理部93、近傍矩形間距離算出処理部94、文字列方向推定処理部95、文字列方向補正処理部96、文字列領域抽出処理部97及び非文字列領域除去処理部98を備えている。
ラベリング処理部91は、画像データ中において連続する複数の前景画素ブロックの塊に固有のラベルを割り当てることによって、前景画素ブロックを分類する処理を行うものである。図22は、ラベリング処理部91が行う処理の手順を示すフローチャートである。また図23は、ラベリング処理部91が行う処理を説明するための模式図である。
ラベリング処理部91は、まず、変数yの値を0に設定し(ステップS61)、変数xの値を0に設定する(ステップS62)。次いで、ラベリング処理部91は、(x、y)に位置する処理対象の画素ブロックが、水平方向に連続する複数の前景画素ブロックで構成される領域(前景領域)の始点(直前の画素ブロックが前景画素ブロックでない点)であるか否かを判定し(ステップS63)、処理対象の画素ブロックが前景領域の始点である場合(S63:YES)、始点設定処理を行う(ステップS64)。始点設定処理において、ラベリング処理部91は、変数minXに現時点での変数xの値を設定する。
始点設定処理:minX=x;
またラベリング処理部91は、処理対象の画素ブロックが前景領域の始点でないと判定した場合(S63:NO)、処理対象の画素ブロックが、水平方向に連続する前景領域の連続部分(直前の画素ブロックが前景画素ブロックである点)であるか否かを判定する(ステップS65)。処理対象の画素ブロックが前景領域の連続部分であると判定した場合(S65:YES)、ラベリング処理部91は、終点更新処理を行う(ステップS66)。終点更新処理において、ラベリング処理部91は、変数maxXに現時点でのxの値を設定する。
終点設定処理:maxX=x;
またラベリング処理部91は、処理対象の画素ブロックが前景領域の連続部分でないと判定した場合(S65:NO)、矩形情報更新処理を行う(ステップS67)。矩形情報更新処理は、前景領域にラベルを付すと共に、既に付されたラベルを更新する処理である。また矩形情報とは、各ラベルが付された前景領域の座標情報(例えば水平方向の最小座標、水平方向の最大座標、垂直方向の最小座標及び垂直方向の最大座標)及び各前景領域に含まれる前景画素ブロックの数等の情報で構成されるものである(なお、各前景領域は必ずしも矩形とは限らず、矩形情報には矩形以外の形状の前景領域についての情報が含まれていてもよい)。ラベリング処理部91は、処理対象の画素ブロックを含む前景領域の直上に位置する他の前景領域を探し出し、これら他の前景領域に付されたラベルを参照して、新規のラベル付け又は既に付されたラベルの統合を行う。
例えば図23に示すように、処理対象の画素ブロックを含む前景領域(処理対象の前景領域)にラベル付けを行う場合、ラベリング処理部91は、まず、処理対象の前景領域に重なり合う直上の前景領域として、ラベル2が付された前景領域を探し出し、処理対象の前景領域にラベル2を付す。次いで、ラベリング処理部91は、処理対象の前景領域に重なり合う直上の前景領域として、ラベル1が付された前景領域を探し出す。このとき、処理対象の前景領域には既にラベル2が付されているため、ラベリング処理部91は、ラベル1及びラベル2を統合する。ラベルの統合では値の小さいラベルを優先し、ラベル2が付された前景領域をラベル1に変更することで行う。これにより、ラベルの値と副走査座標との相関を保持することができる。また、処理対象の前景領域の直上に重なり合う他の前景領域が存在しない場合、ラベリング処理部91は、処理対象の前景領域に新規のラベルを付し、矩形情報に新規のラベルに係る座標情報などを追加する。
ステップS64、S66又はS67の処理を終えた後、ラベリング処理部91は、現時点での変数xの値が最大値(水平方向の画素ブロック数)に達したか否かを判定する(ステップS68)。変数xが最大値に達していない場合(S68:NO)、ラベリング処理部91は、変数xの値に1を加算し(ステップS69)、ステップS63へ処理を戻して、水平方向の次の画素ブロックに対する処理を行う。変数xが最大値に達した場合(S68:YES)、ラベリング処理部91は、変数yの値が最大値(垂直方向の画素ブロック数)に達したか否かを判定する(ステップS70)。変数yが最大値に達していない場合(S70:NO)、ラベリング処理部91は、変数yの値に1を加算し(ステップS71)、ステップS62へ処理を戻して、画像データにおける次段先頭の画素ブロックに対する処理を行う。変数yが最大値に達した場合(S70:YES)、ラベリング処理部91は、ラベル付けの処理を終了する。
以上の処理によって、ラベリング処理部91は、画像データ中の前景画素ブロックが連続した前景領域に対してラベル付けを行うことができ、ラベル付けの結果を矩形情報として出力する。図24は、ラベリング処理部91による処理の一例を示す模式図である。なお、図24には、ラベリング処理部91に入力された前景画素ブロックマスクにて前景画素ブロックと指定された一又は複数の画素ブロックによる領域(前景領域)を実線で囲んだ領域として図示してある。ラベリング処理部91は、一又は複数の前景領域に対して重複することのないラベルを付し、各前景領域の座表示情報及び画素ブロック数等をラベルに対応づけた矩形情報を生成し、非文字矩形除去処理部92へ出力する。図24に示す例では、18個の領域に対してラベル1〜18が付されている。
非文字矩形除去処理部92は、ラベリング処理部91によってラベル付けされた各前景領域について、前景領域の高さ(垂直方向の画素ブロック数)若しくは前景領域の幅(水平方向の画素ブロック数)等の前景領域の大きさ、又は、前景領域に含まれる画素ブロックの数等の情報に基づいて、各前景領域が画像中の文字に相当し得るものであるか否かを判定し、文字に相当し得ない前景領域を除外する処理を行う。例えば各前景領域の高さ又は幅のいずれかが、画像データのサイズに対して大きすぎる又は小さすぎる場合、非文字矩形除去処理部92は、この前景領域が文字に相当し得ないと判定することができる(判定方法はこれに限らない)。非文字矩形除去処理部92は、文字に相当し得ないと判定した前景領域に係る情報を矩形情報から除外して、表内矩形特定処理部93へ与える。
表内矩形特定処理部93は、非文字矩形除去処理部92が出力した矩形情報と、前景抽出処理部51が出力したライン情報とが入力されている。表内矩形特定処理部93は、ライン情報に含まれる表を形成するラインに係る情報に基づいて、矩形情報に含まれる各前景領域が表の内部に位置するものであるか否かを判定する。表の内部に位置すると判定された複数の前景領域(表の一区画内に位置する複数の領域)について、レイアウト解析処理部53は、後段の処理結果に関わらず、これらを1つの文字列として扱う。これにより、レイアウト解析処理部53は、通常の文字列とは分布が異なる表内の文字列を容易且つ確実に抽出することができる。表内矩形特定処理部93は、各前景領域が表の内部に位置するものであるか否かに関する情報を矩形情報に付加し、近傍矩形間距離算出処理部94へ与える。
図25は、近傍矩形間距離算出処理部94が行う処理を説明するための模式図である。近傍矩形間距離算出処理部94は、矩形情報に含まれる各前景領域について、画像における上下左右のいずれかの方向に位置し、且つ、所定の条件を満たす周辺の他の前景領域を抽出し、抽出した他の前景領域と処理対象の前景領域との間の距離を算出する処理を行う。なお図25に示す例は、図24に示したラベリング処理の処理結果の例に対して、近傍矩形間距離算出処理部94が距離算出を行うために抽出する2つの領域の関係を矢印で示した(矢印の始点が処理対象の前景領域であり、矢印の終点が周辺の他の前景領域である)ものである。
図26は、近傍矩形間距離算出処理部94が行う処理の手順を示すフローチャートである。なお本処理において変数i及びjを用いているが、これらの変数はラベリング処理部91が各前景領域に対して付したラベル値を格納するためのものである。近傍矩形間距離算出処理部94は、まず、変数iの値を1に設定し(ステップS81)、変数jの値を1に設定する(ステップS82)。次いで、近傍矩形間距離算出処理部94は、ラベルiの前景領域に対するラベルjの前景領域の方向を判定する処理を行う(ステップS83)。方向判定処理において近傍矩形間距離算出処理部94は、ラベルiの前景領域及びラベルjの前景領域について、下記の条件1〜4を満たすか否かを順に判定する。ただし下記の条件式において、minXは各前景領域の水平方向(右方向)の最小座標を示し、maxXは各前景領域の水平方向の最大座標を示し、minYは各前景領域の垂直方向(下方向)の最小座標を示し、maxYは各前景領域の垂直方向の最大座標を示す。
条件1:
ラベルjの前景領域のmaxX>ラベルiの前景領域のmaxX;
且つ
ラベルjの前景領域のminX>ラベルiの前景領域のminX;
条件2:
ラベルjの前景領域のminX<ラベルiの前景領域のminX;
且つ
ラベルjの前景領域のmaxX<ラベルiの前景領域のmaxX;
条件3:
ラベルjの前景領域のminY<ラベルiの前景領域のminY;
且つ
ラベルjの前景領域のmaxY<ラベルiの前景領域のmaxY;
条件4:
ラベルjの前景領域のmaxY>ラベルiの前景領域のmaxY;
且つ
ラベルjの前景領域のminY>ラベルiの前景領域のminY;
近傍矩形間距離算出処理部94は、条件1〜4の判定をこの順に行い、ラベルiの前景領域及びラベルjの前景領域が条件1を満たす場合、ラベルjの前景領域がラベルiの前景領域の右側に位置すると判定する。条件1を満たさずに条件2を満たす場合、近傍矩形間距離算出処理部94は、ラベルjの前景領域がラベルiの前景領域の左側に位置すると判定する。条件1、2を満たさずに条件3を満たす場合、近傍矩形間距離算出処理部94は、ラベルjの前景領域がラベルiの前景領域の上側に位置すると判定する。条件1〜3を満たさずに条件4を満たす場合、近傍矩形間距離算出処理部94は、ラベルjの前景領域がラベルiの前景領域の下側に位置すると判定する。
方向判定処理の後、近傍矩形間距離算出処理部94は、ラベルjの前景領域がラベルiの前景領域の右方向に存在するか否かを判定する(ステップS84)。ステップS84の判定では、ステップS83の方向判定処理でラベルjの前景領域がラベルiの前景領域の右側に位置すると判定されたことに加えて、ラベルiの前景領域及びラベルjの前景領域の一部又は全部が水平方向に関して重なり合うか否かの判定を行う。近傍矩形間距離算出処理部94は、水平方向の重なり判定を、下記の条件を満たすか否かを判定することで行う。
水平方向重なり条件:
ラベルiの前景領域のmaxY>ラベルjの前景領域のminY;
且つ
ラベルiの前景領域のminY<ラベルjの前景領域のmaxY;
近傍矩形間距離算出処理部94は、ステップS83の方向判定処理でラベルjの前景領域がラベルiの前景領域の右側に位置すると判定され、且つ、上記の水平方向重なり条件を満たす場合に、ラベルjの前景領域がラベルiの前景領域の右方向に存在すると判定し(ステップS84:YES)、右方向最短距離算出処理を行う(ステップS85)。右方向最短距離算出処理において近傍矩形間距離算出処理部94は、ラベルiの前景領域及びラベルjの前景領域の距離Distを下記の式で算出する。
Dist=ラベルjの前景領域のminX−ラベルiの前景領域のmaxX;
更に近傍矩形間距離算出処理部94は、下記の5つの条件(右方向最短距離条件1〜5)を満たすか否かを判定し、5つの条件全てを満たす場合に、算出した距離Distをラベルiの前景領域の右方向最短距離として、右方向に存在する前景領域のラベルjと共に記憶する(既に別の前景領域が右方向最短距離として記憶されている場合、これを新たな値で更新する)。近傍矩形間距離算出処理部94が判定する第1の条件は、距離Distが所定の閾値(例えば36)より小さいこと、である。
右方向最短距離条件1:
Dist<閾値;
近傍矩形間距離算出処理部94が判定する第2の条件は、ラベルiの前景領域とラベルjの前景領域を1つに統合したときの矩形の高さと、それぞれラベルiの前景領域及びラベルjの前景領域の高さの差分を算出し、算出した2つの差分のうちの値が小さい方の差分が所定の閾値(例えば36)より小さいこと、である。
右方向最短距離条件2:
MIN(統合前後のラベルiの前景領域の高さの差分、ラベルiの前景領域とラベルjの前景領域を1つに統合したときの矩形の高さとラベルjの前景領域の高さの差分)<閾値;
近傍矩形間距離算出処理部94が判定する第3の条件は、ラベルjの前景領域の水平方向の最大座標maxXが、ラベルiの前景領域の水平方向の最大座標maxXより大きいこと、である。
右方向最短距離条件3:
ラベルjの前景領域のmaxX>ラベルiの前景領域のmaxX;
近傍矩形間距離算出処理部94が判定する第4の条件は、ラベルiの前景領域の水平方向の最小座標minXが、ラベルjの前景領域の水平方向の最小座標minX以下、である。
右方向最短距離条件4:
ラベルiの前景領域のminX≦ラベルjの前景領域のminX;
近傍矩形間距離算出処理部94が判定する第5の条件は、ラベルiの前景領域について既に別の前景領域との右方向最短距離が記憶されている場合に、算出した距離Distが、記憶されている右方向最短距離より小さいこと、である。
右方向最短距離条件5:
Dist<記憶された右方向最短距離;
右方向最短距離条件1〜5の全てを満たすと判定した場合、近傍矩形間距離算出処理部94は、算出したDistを右方向最短距離として記憶する。またステップS84にて、ラベルjの前景領域がラベルiの前景領域の右方向に存在しないと判定した場合(S84:NO)、近傍矩形間距離算出処理部94は、ラベルjの前景領域がラベルiの前景領域の上方向に存在するか否かを判定する(ステップS86)。ステップS86の判定では、ステップS83の方向判定処理でラベルjの前景領域がラベルiの前景領域の上側に位置すると判定されたことに加えて、ラベルiの前景領域及びラベルjの前景領域の一部又は全部が垂直方向に関して重なり合うか否かの判定を行う。近傍矩形間距離算出処理部94は、垂直方向の重なり判定を、下記の条件を満たすか否かを判定することで行う。
垂直方向重なり条件:
ラベルiの前景領域のmaxX>ラベルjの前景領域のminX;
且つ
ラベルiの前景領域のminX<ラベルjの前景領域のmaxX;
近傍矩形間距離算出処理部94は、ステップS83の方向判定処理でラベルjの前景領域がラベルiの前景領域の上側に位置すると判定され、且つ、上記の垂直方向重なり条件を満たす場合に、ラベルjの前景領域がラベルiの前景領域の上方向に存在すると判定し(ステップS86:YES)、上方向最短距離算出処理を行う(ステップS87)。上方向最短距離算出処理において近傍矩形間距離算出処理部94は、ラベルiの前景領域及びラベルjの前景領域の距離Distを下記の式で算出する。
Dist=ラベルiの前景領域のminY−ラベルjの前景領域のmaxY;
更に近傍矩形間距離算出処理部94は、下記の5つの条件(上方向最短距離条件1〜5)を満たすか否かを判定し、5つの条件全てを満たす場合に、算出した距離Distをラベルiの前景領域の上方向最短距離として、上方向に存在する前景領域のラベルjと共に記憶する(既に別の前景領域が上方向最短距離として記憶されている場合、これを新たな値で更新する)。近傍矩形間距離算出処理部94が判定する第1の条件は、距離Distが所定の閾値(例えば36)より小さいこと、である。
上方向最短距離条件1:
Dist<閾値;
近傍矩形間距離算出処理部94が判定する第2の条件は、ラベルiの前景領域とラベルjの前景領域を1つに統合したときの矩形の幅と、それぞれラベルiの前景領域及びラベルjの前景領域の幅の差分を算出し、算出した2つの差分のうちの値が小さい方の差分が所定の閾値(例えば36)より小さいこと、である。
上方向最短距離条件2:
MIN(統合前後のラベルiの前景領域の幅の差分、ラベルiの前景領域とラベルjの前景領域を1つに統合したときの矩形の幅とラベルjの前景領域の幅の差分)<閾値;
近傍矩形間距離算出処理部94が判定する第3の条件は、ラベルjの前景領域の垂直方向の最小座標minYが、ラベルiの前景領域の垂直方向の最小座標minYより小さいこと、である。
上方向最短距離条件3:
ラベルjの前景領域のminY<ラベルiの前景領域のminY;
近傍矩形間距離算出処理部94が判定する第4の条件は、ラベルiの前景領域の垂直方向の最大座標maxYが、ラベルjの前景領域の垂直方向の最大座標maxYより大きいこと、である。
上方向最短距離条件4:
ラベルiの前景領域のmaxY>ラベルjの前景領域のmaxY;
近傍矩形間距離算出処理部94が判定する第5の条件は、ラベルiの前景領域について既に別の前景領域との上方向最短距離が記憶されている場合に、算出した距離Distが、記憶されている上方向最短距離より小さいこと、である。
上方向最短距離条件5:
Dist<記憶された上方向最短距離;
上方向最短距離条件1〜5の全てを満たすと判定した場合、近傍矩形間距離算出処理部94は、算出したDistを上方向最短距離として記憶する。またステップS86にて、ラベルjの前景領域がラベルiの前景領域の上方向に存在しないと判定した場合(S86:NO)、近傍矩形間距離算出処理部94は、ラベルjの前景領域がラベルiの前景領域の左方向に存在するか否かを判定する(ステップS88)。ステップS88の判定では、ステップS83の方向判定処理でラベルjの前景領域がラベルiの前景領域の左側に位置すると判定されたことに加えて、ラベルiの前景領域及びラベルjの前景領域の一部又は全部が水平方向に関して重なり合うか否かの判定を行う。近傍矩形間距離算出処理部94は、水平方向の重なり判定を、ステップS84にて用いたものと同じ水平方向重なり条件を満たすか否かを判定することで行う。
近傍矩形間距離算出処理部94は、ステップS83の方向判定処理でラベルjの前景領域がラベルiの前景領域の左側に位置すると判定され、且つ、水平方向重なり条件を満たす場合に、ラベルjの前景領域がラベルiの前景領域の左方向に存在すると判定し(ステップS88:YES)、左方向最短距離算出処理を行う(ステップS89)。左方向最短距離算出処理において近傍矩形間距離算出処理部94は、ラベルiの前景領域及びラベルjの前景領域の距離Distを下記の式で算出する。
Dist=ラベルiの前景領域のminX−ラベルjの前景領域のmaxX;
更に近傍矩形間距離算出処理部94は、下記の5つの条件(左方向最短距離条件1〜5)を満たすか否かを判定し、5つの条件全てを満たす場合に、算出した距離Distをラベルiの前景領域の左方向最短距離として、左方向に存在する前景領域のラベルjと共に記憶する(既に別の前景領域が左方向最短距離として記憶されている場合、これを新たな値で更新する)。近傍矩形間距離算出処理部94が判定する第1の条件は、距離Distが所定の閾値(例えば36)より小さいこと、である。
左方向最短距離条件1:
Dist<閾値;
近傍矩形間距離算出処理部94が判定する第2の条件は、ラベルiの前景領域とラベルjの前景領域を1つに統合したときの矩形の高さと、それぞれラベルiの前景領域及びラベルjの前景領域の高さの差分を算出し、算出した2つの差分のうちの値が小さい方の差分が所定の閾値(例えば36)より小さいこと、である。
左方向最短距離条件2:
MIN(統合前後のラベルiの前景領域の高さの差分、ラベルiの前景領域とラベルjの前景領域を1つに統合したときの矩形の高さとラベルjの前景領域の高さの差分)<閾値;
近傍矩形間距離算出処理部94が判定する第3の条件は、ラベルjの前景領域の水平方向の最小座標minXが、ラベルiの前景領域の水平方向の最小座標minXより小さいこと、である。
左方向最短距離条件3:
ラベルjの前景領域のminX<ラベルiの前景領域のminX;
近傍矩形間距離算出処理部94が判定する第4の条件は、ラベルiの前景領域の水平方向の最大座標maxXが、ラベルjの前景領域の水平方向の最大座標maxXより大きいこと、である。
左方向最短距離条件4:
ラベルiの前景領域のmaxX>ラベルjの前景領域のmaxX;
近傍矩形間距離算出処理部94が判定する第5の条件は、ラベルiの前景領域について既に別の前景領域との左方向最短距離が記憶されている場合に、算出した距離Distが、記憶されている左方向最短距離より小さいこと、である。
左方向最短距離条件5:
Dist<記憶された左方向最短距離;
左方向最短距離条件1〜5の全てを満たすと判定した場合、近傍矩形間距離算出処理部94は、算出したDistを左方向最短距離として記憶する。またステップS88にて、ラベルjの前景領域がラベルiの前景領域の左方向に存在しないと判定した場合(S88:NO)、近傍矩形間距離算出処理部94は、ラベルjの前景領域がラベルiの前景領域の下方向に存在するか否かを判定する(ステップS90)。ステップS90の判定では、ステップS83の方向判定処理でラベルjの前景領域がラベルiの前景領域の下側に位置すると判定されたことに加えて、ラベルiの前景領域及びラベルjの前景領域の一部又は全部が垂直方向に関して重なり合うか否かの判定を行う。近傍矩形間距離算出処理部94は、垂直方向の重なり判定を、ステップS86にて用いたものと同じ垂直方向重なり条件を満たすか否かを判定することで行う。
近傍矩形間距離算出処理部94は、ステップS83の方向判定処理でラベルjの前景領域がラベルiの前景領域の下側に位置すると判定され、且つ、垂直方向重なり条件を満たす場合に、ラベルjの前景領域がラベルiの前景領域の下方向に存在すると判定し(ステップS90:YES)、下方向最短距離算出処理を行う(ステップS91)。下方向最短距離算出処理において近傍矩形間距離算出処理部94は、ラベルiの前景領域及びラベルjの前景領域の距離Distを下記の式で算出する。
Dist=ラベルjの前景領域のminY−ラベルiの前景領域のmaxY;
更に近傍矩形間距離算出処理部94は、下記の5つの条件(下方向最短距離条件1〜5)を満たすか否かを判定し、5つの条件全てを満たす場合に、算出した距離Distをラベルiの前景領域の下方向最短距離として、下方向に存在する前景領域のラベルjと共に記憶する(既に別の前景領域が下方向最短距離として記憶されている場合、これを新たな値で更新する)。近傍矩形間距離算出処理部94が判定する第1の条件は、距離Distが所定の閾値(例えば36)より小さいこと、である。
下方向最短距離条件1:
Dist<閾値;
近傍矩形間距離算出処理部94が判定する第2の条件は、ラベルiの前景領域とラベルjの前景領域を1つに統合したときの矩形の幅と、それぞれラベルiの前景領域及びラベルjの前景領域の幅の差分を算出し、算出した2つの差分のうちの値が小さい方の差分が所定の閾値(例えば36)より小さいこと、である。
下方向最短距離条件2:
MIN(統合前後のラベルiの前景領域の幅の差分、ラベルiの前景領域とラベルjの前景領域を1つに統合したときの矩形の幅とラベルjの前景領域の幅の差分)<閾値;
近傍矩形間距離算出処理部94が判定する第3の条件は、ラベルjの前景領域の垂直方向の最大座標maxYが、ラベルiの前景領域の垂直方向の最大座標maxYより大きいこと、である。
下方向最短距離条件3:
ラベルjの前景領域のmaxY>ラベルiの前景領域のmaxY;
近傍矩形間距離算出処理部94が判定する第4の条件は、ラベルiの前景領域の垂直方向の最小座標minYが、ラベルjの前景領域の垂直方向の最小座標minYより小さいこと、である。
下方向最短距離条件4:
ラベルiの前景領域のminY<ラベルjの前景領域のminY;
近傍矩形間距離算出処理部94が判定する第5の条件は、ラベルiの前景領域について既に別の前景領域との下方向最短距離が記憶されている場合に、算出した距離Distが、記憶されている下方向最短距離より小さいこと、である。
下方向最短距離条件5:
Dist<記憶された下方向最短距離;
下方向最短距離条件1〜5の全てを満たすと判定した場合、近傍矩形間距離算出処理部94は、算出したDistを下方向最短距離として記憶する。
ステップS85、S87、S89若しくはS91にて最短距離を算出した後、又は、ステップS90にてラベルjの前景領域がラベルiの前景領域の下方向に存在しないと判定した場合(S90:NO)、近傍矩形間距離算出処理部94は、現時点での変数jの最大値(前景領域の総数)に達したか否かを判定する(ステップS92)。変数jが最大値に達していない場合(S92:NO)、近傍矩形間距離算出処理部94は、変数jの値に1を加算し(ステップS93)、ステップS83へ処理を戻して、2つの前景領域の次の組み合わせに対する処理を行う。変数jが最大値に達した場合(S92:YES)、近傍矩形間距離算出処理部94は、変数iの値が最大値(前景領域の総数)に達したか否かを判定する(ステップS94)。変数iが最大値に達していない場合(S94:NO)、近傍矩形間距離算出処理部94は、変数iの値に1を加算し(ステップS95)、ステップS82へ処理を戻して、2つの前景領域の次の組み合わせに対する処理を行う。変数iが最大値に達した場合(S94:YES)、近傍矩形間距離算出処理部94は処理を終了する。
近傍矩形間距離算出処理部94は、画像データ中のラベルが付された各前景領域について、上下左右方向に近接する他の前景領域との最短距離をそれぞれ算出し、算出結果を文字列方向推定処理部95へ出力する。
文字列方向推定処理部95は、矩形情報に含まれる各前景領域について、水平方向に並ぶ前景領域の数及びこれら複数の前景領域間の距離総和、並びに、垂直方向に並ぶ前景領域の数及びこれら複数の前景領域間の距離総和を算出する。算出結果に基づいて、文字列方向推定処理部95は、水平方向の前景領域数及び垂直方向の前景領域数を比較し、且つ、水平方向の前景領域間の距離総和及び垂直方向の前景領域間の距離総和を比較し、両比較結果に基づいて複数の前景領域が水平方向又は垂直方向の文字列を構成するものであるか否かを推定する。
図27は、文字列方向推定処理部95が行う処理の手順を示すフローチャートである。なお本処理において変数iを用いているが、これらの変数はラベリング処理部91が各前景領域に対して付したラベル値を格納するためのものである。文字列方向推定処理部95は、まず、変数iの値を1に設定する(ステップS101)。次いで文字列方向推定処理部95は、ラベルiの前景領域について、水平方向の前景領域数及び距離総和算出処理を行う(ステップS102)。水平方向の前景領域数及び距離総和算出処理において、文字列方向推定処理部95は、近傍矩形間距離算出処理部94の算出結果に基づいて、ラベルiの前景領域について左方向及び右方向に最短距離で位置する他の前景領域を順に探索することで、水平方向に並ぶ前景領域数と、これらの前景領域間の距離の総和を算出する。
次いで、文字列方向推定処理部95は、ラベルiの前景領域について、垂直方向の前景領域数及び距離総和算出処理を行う(ステップS103)。垂直方向の前景領域数及び距離総和算出処理において、文字列方向推定処理部95は、近傍矩形間距離算出処理部94の算出結果に基づいて、ラベルiの前景領域について上方向及び下方向に最短距離で位置する他の前景領域を順に探索することで、垂直方向に並ぶ前景領域数と、これらの前景領域間の距離の総和を算出する。
次いで、文字列方向推定処理部95は、ラベルiの前景領域について、この前景領域を含む複数の前景領域を文字列とした場合の文字列の方向を判定する処理を行う(ステップS104)。文字列方向判定処理において、文字列方向推定処理部95は、ステップS102及びS103の算出結果に基づいて、下記の条件が成立するか否かを判定することによって、文字列の方向を判定する。
水平方向条件:
(水平方向距離総和×垂直方向前景領域数≦垂直方向距離総和×水平方向前景領域数 且つ 水平方向前景領域数≧閾値1 且つ 垂直方向前景領域数≧閾値2)
又は
(水平方向前景領域数≧閾値1 且つ 垂直方向前景領域数<閾値2)
垂直方向条件:
(水平方向距離総和×垂直方向前景領域数≧垂直方向距離総和×水平方向前景領域数 且つ 垂直方向前景領域数≧閾値1 且つ 水平方向前景領域数≧閾値2)
又は
(垂直方向前景領域数≧閾値1 且つ 水平方向前景領域数<閾値2)
文字列方向推定処理部95は、上記の水平方向条件が成立する場合、ラベルiの前景領域が含まれる文字列の方向が水平方向であると判定する。また文字列方向推定処理部95は、上記の垂直方向条件が成立する場合、ラベルiの前景領域が含まれる文字列の方向が垂直方向であると判定する。水平方向条件及び垂直方向条件の両条件が成立しない場合、文字列方向推定処理部95は、ラベルiの前景領域が文字列の方向に関して不定であると判定する。文字列方向推定処理部95は、文字列方向の判定結果を、ラベルiに対応づけて記憶する。なお上記の水平方向条件及び垂直方向条件において用いる閾値1、2は、予め決定されるものであり、その値として例えば3をそれぞれ設定することができる。
文字列方向判定処理の終了後、文字列方向推定処理部95は、変数iの値が最大値(前景領域の総数)に達したか否かを判定し(ステップS105)、変数iの値が最大値に達していない場合(S105:NO)、変数iの値に1を加算し(ステップS106)、ステップS102へ処理を戻して、次のラベルiの前景領域について同様の処理を行う。変数iの値が最大値に達した場合(S105:YES)、文字列方向推定処理部95は、処理を終了する。
図28は、文字列方向推定処理部95が行う処理の一例を示す模式図であり、図25に示した距離算出処理の結果に対して、文字列方向推定処理部95が文字列方向を推定する処理を行ったものである。文字列方向推定処理部95は、上述の処理を行うことによって、画像データ中のラベルが付された各前景領域を、水平方向の文字列(に含まれる前景領域)、垂直方向の文字列(に含まれる前景領域)又は不定の前景領域のいずれかと判定することができる。図示の例ではラベル1〜5、11〜13、15、17、18が付された前景領域が水平方向の文字列と判定され、ラベル8〜10が付された前景領域が垂直方向の文字列と判定され、ラベル6、7、14、16が付された前景領域が不定と判定されている。文字列方向推定処理部95は、各前景領域の文字列の方向についての推定結果を、文字列方向補正処理部96へ出力する。
文字列方向補正処理部96は、文字列方向推定処理部95が推定した文字列の方向が妥当であるか否かを判定し、方向が妥当でないと判定した前景領域について、文字列の方向を不定に修正する処理を行う。図29は、文字列方向補正処理部96が行う処理の手順を示すフローチャートである。なお本処理において変数iを用いているが、これらの変数はラベリング処理部91が各前景領域に対して付したラベル値を格納するためのものである。文字列方向補正処理部96は、まず、変数iの値を1に設定する(ステップS111)。
次いで文字列方向補正処理部96は、ラベルiの前景領域が水平方向の文字列に含まれる前景領域であるか否かを調べ(ステップS112)、水平方向の文字列に含まれる前景領域である場合(S112:YES)、水平方向領域数算出処理を行う(ステップS113)。水平方向領域数算出処理において、文字列方向補正処理部96は、ラベルiが付された前景領域に対して水平方向に並ぶ他の前景領域について、各前景領域が水平方向又は垂直方向のいずれの文字列に含まれると判定されたかを調べ、水平方向の前景領域数と垂直方向の前景領域数とをそれぞれ算出する。
次いで文字列方向補正処理部96は、算出した水平方向の前景領域数及び垂直方向の前景領域数に基づいて、ラベルiの前景領域に係る方向を補正する水平方向補正処理を行う(ステップS114)。水平方向補正処理において、文字列方向補正処理部96は、算出した水平方向の前景領域数及び垂直方向の前景領域数が下記の水平方向補正条件を満たすか否かを判定し、水平方向補正条件を満たす場合にラベルiの前景領域に係る方向を不定に補正する。なお、水平方向補正条件に用いられる閾値は予め決定されるものであり、その値として例えば2を設定することができる。
水平方向補正条件:
水平方向の前景領域数<垂直方向の前景領域数;
又は
水平方向の前景領域数<閾値;
また、ラベルiの前景領域が水平方向の文字列に含まれる前景領域でない場合(S112:NO)、文字列方向補正処理部96は、ラベルiの前景領域が垂直方向の文字列に含まれる前景領域であるか否かを調べる(ステップS115)。垂直方向の文字列に含まれる前景領域である場合(S115:YES)、文字列方向法制処理部96は、垂直方向領域数算出処理を行う(ステップS116)。垂直方向領域数算出処理において、文字列方向補正処理部96は、ラベルiが付された前景領域に対して垂直方向に並ぶ他の前景領域について、各前景領域が垂直方向又は水平方向のいずれの文字列に含まれると判定されたかを調べ、垂直方向の前景領域数と水平方向の前景領域数とをそれぞれ算出する。
次いで文字列方向補正処理部96は、算出した垂直方向の前景領域数及び水平方向の前景領域数に基づいて、ラベルiの前景領域に係る方向を補正する垂直方向補正処理を行う(ステップS117)。垂直方向補正処理において、文字列方向補正処理部96は、算出した垂直方向の前景領域数及び水平方向の前景領域数が下記の垂直方向補正条件を満たすか否かを判定し、垂直方向補正条件を満たす場合にラベルiの前景領域に係る方向を不定に補正する。なお、垂直方向補正条件に用いられる閾値は予め決定されるものであり、その値として例えば2を設定することができる。
垂直方向補正条件:
垂直方向の前景領域数<水平方向の前景領域数;
又は
垂直方向の前景領域数<閾値;
ステップS114若しくはS117の補正処理の終了後、又は、ステップS115にてラベルiの前景領域が垂直方向の文字列に含まれる前景領域でない場合(S115:NO)、文字列方向補正処理部96は、変数iの値が最大値(前景領域の総数)に達したか否かを判定し(ステップS118)、変数iの値が最大値に達していない場合(S118:NO)、変数iの値に1を加算し(ステップS119)、ステップS112へ処理を戻して、次のラベルiの前景領域について同様の処理を行う。変数iの値が最大値に達した場合(S118:YES)、文字列方向補正処理部96は、処理を終了する。
図30は、文字列方向補正処理部96が行う処理の一例を示す模式図であり、図28に示した文字列方向推定処理の結果に対して、文字列方向補正処理部96が文字列方向の補正処理を行ったものである。文字列方向補正処理部96は、上述の処理を行うことによって、文字列方向推定処理部95が推定した各前景領域の方向が妥当であるか否かを判定し、方向が妥当でないと判定した前景領域について、文字列の方向を不定に修正する処理を行う。図示の例では、文字列方向補正処理部96は、前景領域8〜10の方向が妥当でないと判定し、これらの前景領域を不定に修正している。文字列方向補正処理部96は、各前景領域の文字列の方向を補正して、文字列抽出処理部97へ出力する。
文字列抽出処理部97は、画像データから文字列方向が同じ前景領域を探し出し、前景領域間の距離が短く、且つ、文字列方向に垂直な方向についての位置関係が適切である複数の前景領域を文字列として抽出し、文字列に係る情報(文字列情報)を作成して出力する。図31〜図34は、文字列抽出処理部97が行う処理の手順を示すフローチャートである。文字列抽出処理部97は、文字列方向が水平又は不定と推定された複数の前景領域を水平方向に統合して水平方向の文字列を生成する水平文字列生成処理を行い(ステップS121)、同様に、文字列方向が垂直又は不定と推定された複数の前景領域を垂直方向に統合して垂直方向の文字列を生成する垂直文字列生成処理を行う(ステップS122)。その後、文字列抽出処理部97は、水平方向の文字列及び垂直方向の文字列に重複する前景領域を、いずれかの文字列に統合する重複領域統合処理を行って(ステップS123)、処理を終了する。
ステップS121にて行う水平文字列生成処理にて、まず文字列抽出処理部97は、変数iの値を1に設定する(ステップS131)。なお、変数iは、画像データ中の各前景領域に付されたラベル値を格納するためのものである。次いで、文字列抽出処理部97は、ラベルiの前景領域について、右方向領域統合処理を行う(ステップS132)。右方向領域統合処理において、文字列抽出処理部97は、文字列方向が水平方向であると判定されたラベルiの前景領域について、右方向に連続する前景領域が存在する場合、この右方向の前景領域をラベルiの前景領域に水平方向の文字列として統合するか否かを判定する。文字列抽出処理部97は、ラベルiの前景領域が含まれる文字列(複数の前景領域)について垂直方向の最小座標upper_pos及び最大座標lower_posを取得し、右方向の前景領域の垂直方向の最小座標minY及び最大座標maxYが下記の水平方向統合条件を満たす場合に、右方向の前景領域をラベルiの前景領域に統合する。なお、水平方向統合条件に含まれるオフセットは、例えば予め決定した固定値(例えば8)を用いてもよく、また例えばlower_pos及びupper_posの差分値に所定係数(例えば0.2)を積算した値を用いてもよい。
水平方向統合条件:
右方向の前景領域のminY≧(upper_pos−オフセット);
且つ
右方向の前景領域のmaxY≦(lower_pos+オフセット);
右方向領域統合処理の終了後、文字列抽出処理部97は、変数iの値が最大値(前景領域の総数)に達したか否かを判定し(ステップS133)、変数iの値が最大値に達していない場合(S133:NO)、変数iの値に1を加算し(ステップS134)、ステップS132へ処理を戻して、次のラベルiの前景領域について同様の処理を行う。
変数iの値が最大値に達した場合(S133:YES)、文字列抽出処理部97は、ラベルiの前景領域について、左方向領域統合処理を行う(ステップS135)。左方向領域統合処理において、文字列抽出処理部97は、文字列方向が水平方向であると判定されたラベルiの前景領域について、左方向に連続する前景領域が存在する場合、この左方向の前景領域をラベルiの前景領域に水平方向の文字列として統合するか否かを判定する。左方向領域統合処理は、右方向領域統合処理と同様の処理をラベルiの左方向の前景領域に対して行えばよく、水平方向統合条件についても右方向の前景領域のminY及びmaxYに代えて左方向の前景領域のminY及びmaxYについて同様の判定を行えばよい。
左方向領域統合処理の終了後、文字列抽出処理部97は、変数iの値が1であるか否かを判定し(ステップS136)、変数iの値が1でない場合(S136:NO)、変数iの値から1を減算し(ステップS137)、ステップS135へ処理を戻して、1つ前のラベルiの前景領域について同様の処理を行う。変数iの値が1である場合(S136:YES)、文字列抽出処理部97は、水平文字列生成処理を終了する。
ステップS122にて行う垂直文字列生成処理にて、まず文字列抽出処理部97は、変数iの値を1に設定する(ステップS141)。なお、変数iは、画像データ中の各前景領域に付されたラベル値を格納するためのものである。次いで、文字列抽出処理部97は、ラベルiの前景領域について、下方向領域統合処理を行う(ステップS142)。下方向領域統合処理において、文字列抽出処理部97は、文字列方向が垂直方向であると判定されたラベルiの前景領域について、下方向に連続する前景領域が存在する場合、この下方向の前景領域をラベルiの前景領域に垂直方向の文字列として統合するか否かを判定する。文字列抽出処理部97は、ラベルiの前景領域が含まれる文字列(複数の前景領域)について水平方向の最小座標left_pos及び最大座標right_posを取得し、下方向の前景領域の水平方向の最小座標minX及び最大座標maxXが下記の垂直方向統合条件を満たす場合に、下方向の前景領域をラベルiの前景領域に統合する。なお、垂直方向統合条件に含まれるオフセットは、例えば予め決定した固定値(例えば8)を用いてもよく、また例えばleft_pos及びright_posの差分値に所定係数(例えば0.2)を積算した値を用いてもよい。
垂直方向統合条件:
下方向の前景領域のminX≧(left_pos−オフセット);
且つ
下方向の前景領域のmaxX≦(right_pos+オフセット);
下方向領域統合処理の終了後、文字列抽出処理部97は、変数iの値が最大値(前景領域の総数)に達したか否かを判定し(ステップS143)、変数iの値が最大値に達していない場合(S143:NO)、変数iの値に1を加算し(ステップS144)、ステップS142へ処理を戻して、次のラベルiの前景領域について同様の処理を行う。
変数iの値が最大値に達した場合(S143:YES)、文字列抽出処理部97は、ラベルiの前景領域について、上方向領域統合処理を行う(ステップS145)。上方向領域統合処理において、文字列抽出処理部97は、文字列方向が垂直方向であると判定されたラベルiの前景領域について、上方向に連続する前景領域が存在する場合、この上方向の前景領域をラベルiの前景領域に垂直方向の文字列として統合するか否かを判定する。上方向領域統合処理は、下方向領域統合処理と同様の処理をラベルiの上方向の前景領域に対して行えばよく、垂直方向統合条件についても下方向の前景領域のminY及びmaxYに代えて上方向の前景領域のminY及びmaxYについて同様の判定を行えばよい。
上方向領域統合処理の終了後、文字列抽出処理部97は、変数iの値が1であるか否かを判定し(ステップS146)、変数iの値が1でない場合(S146:NO)、変数iの値から1を減算し(ステップS147)、ステップS145へ処理を戻して、1つ前のラベルiの前景領域について同様の処理を行う。変数iの値が1である場合(S146:YES)、文字列抽出処理部97は、垂直文字列生成処理を終了する。
ステップS123にて行う重複領域統合処理にて、まず文字列抽出処理部97は、変数iの値を1に設定し(ステップS151)、変数jの値を1に設定する(ステップS152)。なお、変数iは水平文字列生成処理又は垂直文字列生成処理にて複数の前景領域を統合して生成した文字列に付されるラベル値を格納するためのものであり、変数jは画像データ中の各前景領域に付されたラベル値を格納するためのものである。
次いで、文字列抽出処理部97は、ラベルiの文字列の領域とラベルjの前景領域とが重複するか否かを判定する(ステップS153)。ラベルiの文字列領域とラベルjの前景領域とが重複するか否かは、下記の重複判定条件を満たすか否か(換言すれば、ラベルjの前景領域がラベルiの文字列の領域内に収まるものであるか否か)に応じて判定することができる。なお重複判定条件において、minX、minY、maxX及びmaxYとは、各前景領域又は各文字列領域の水平方向最小座標、垂直方向最小座標、水平方向最大座標及び垂直方向最大座標である。
重複判定条件:
ラベルjの前景領域のminX≧ラベルiの文字列領域のminX;
且つ
ラベルjの前景領域のminY≧ラベルiの文字列領域のminY;
且つ
ラベルjの前景領域のmaxX≦ラベルiの文字列領域のmaxX;
且つ
ラベルjの前景領域のmaxY≦ラベルiの文字列領域のmaxY;
文字列抽出処理部97は、ラベルiの文字列領域とラベルjの前景領域とが重複すると判定した場合(S153:YES)、ラベルiの文字列にラベルjの前景領域を統合する領域統合処理を行って(ステップS154)、また、ラベルiの文字列領域とラベルjの前景領域とが重複しないと判定した場合(S153:NO)、領域統合処理を行わずに、ステップS155へ処理を進める。文字列抽出処理部97は、変数jの値が最大値(前景領域の総数)に達したか否かを判定し(ステップS155)、変数jの値が最大値に達していない場合(S155:NO)、変数jの値に1を加算し(ステップS156)、ステップS153へ処理を戻して、次のラベルjの前景領域について同様の処理を行う。
変数jの値が最大値に達した場合(S155:YES)、文字列抽出処理部97は、変数iの値が最大値(文字列の総数)に達したか否かを判定し(ステップS157)、変数iの値が最大値に達していない場合(S157:NO)、変数iの値に1を加算し(ステップS158)、ステップS152へ処理を戻して、次のラベルiの文字列について同様の処理を行う。変数iの値が最大値に達した場合(S157:YES)、文字列抽出処理部97は、重複領域統合処理を終了する。
図35は、文字列抽出処理部97が行う処理の一例を示す模式図であり、図30に示した文字列方向補正処理の結果に対して、文字列抽出処理部97が文字列の抽出処理を行ったものである。文字列抽出処理部97は、上述の処理を行うことによって、画像データ中の複数の前景領域を統合し、水平方向文字列又は垂直方向文字列として抽出する。図示の例では、前景領域1〜10を水平方向文字列1として抽出し、前景領域11〜18を水平方向文字列2として抽出している。文字列抽出処理部97は、文字列を抽出した結果を文字列情報として非文字列領域除去処理部98へ出力する。
非文字列領域除去処理部98は、文字列抽出処理部97が抽出した各文字列について、文字列領域の幅又は高さが所定値(例えば4)以下の場合に、この文字列を除去することによって、領域のサイズから文字列らしくないものを除去する処理を行うものである。
除去条件:
文字列領域の幅≦閾値;
又は
文字列領域の高さ<閾値;
以上の処理により、レイアウト解析処理部53は、ライン検知処理部52から与えられた前景画素ブロックマスク及びライン情報から、画像データに含まれる文字列を抽出し、抽出した文字列に係る情報を文字列情報として前景レイヤ生成処理部54へ出力することができる。
(4)前景レイヤ生成処理部54
図36は、前景レイヤ生成処理部54の構成を示すブロック図である。また図37は、前景レイヤ生成処理部54の処理の概要を説明するための模式図である。前景レイヤ生成処理部54は、ライン検知処理部52が出力する前景画素ブロックマスク及び前景レイヤ生成処理部54が出力する文字列情報を基に、前景画素の位置情報である前景マスクと、前景画素の色をインデックス化した前景インデックス色情報とを生成し、最終的には各前景インデックス色に対応した2値画像と前景インデックス色情報とを出力する処理を行う。この処理を行うために、前景レイヤ生成処理部54は、前景領域前景代表色算出処理部101、文字列領域前景代表色算出処理部102、前景代表色統合処理部103、前景画素マスク抽出処理部104及び2値画像生成処理部105を備えている。
前景レイヤ生成処理部54は、まず前景領域前景代表色算出処理部101にて、前景画素ブロックマスクの各前景領域について前景代表色を算出する。文字列領域前景代表色算出処理部102は、各前景領域の前景代表色に基づいて、レイアウト解析処理部53が出力する文字列情報の各文字列領域について前景代表色を算出する。前景代表色統合処理部103は、画像データにおける各文字列領域の前景代表色を頁単位で統合することにより、ページ全体の描画に必要な前景代表色の色数を削減する。前景画素マスク抽出処理部104は、画像データの各前景領域の画素値と、各前景領域の前景代表色及び/又は文字列領域の前景代表色とを比較することによって前景画素を抽出し、前景画素の抽出結果である前景画素マスクを生成して出力する。2値画像生成処理部105は、抽出された前景画素を文字列領域の前景代表色に対応付けて2値画像として出力する。
前景領域前景代表色算出処理部101は、レイアウト解析処理部53のラベリング処理部91にて前景領域に付されたラベル値、及び、前景抽出処理部51が生成した画素ブロック前景代表色を基に、前景領域の前景代表色を算出する。前景領域前景代表色算出処理部101は、まず、ラベルが付された前景領域を囲む矩形領域を処理対象として抽出し、この矩形領域の画素ブロック背景代表色(背景代表色が不定値でない画素ブロック背景代表色)の平均値を算出する。次いで、前景領域前景代表色算出処理部101は、処理対象の矩形領域に含まれる前景画素ブロックの画素ブロック前景代表色を量子化する。
図38は、画素ブロック前景代表色の量子化を説明するための模式図である。前景領域前景代表色算出処理部101は、画素ブロック前景代表色をLCH色空間の色に変換し、輝度Lを5段階の輝度範囲に量子化すると共に、彩度C及び色相Hを1つの無彩色及び12の有彩色の13段階に量子化する。図38(a)に示すように本例では、輝度L=0〜63にインデックスL=0を割り当て、輝度L=64〜127にインデックスL=1を割り当て、輝度L=128〜191にインデックスL=2を割り当て、輝度L=192〜223にインデックスL=3を割り当て、輝度L=224〜255にインデックスL=4を割り当てている。また図38(b)に示すように本例では、彩度C及び色相Hをベクトルとして扱い、ベクトル長を示す彩度C=0〜20の場合にインデックスCH=0を割り当て、彩度C>20の場合にはベクトルの角度を示す色相Hの値に応じてインデックスCH=1〜12を割り当てている。
前景領域前景代表色算出処理部101は、量子化した画素ブロック前景代表色について、量子化レベル(上記のインデックス)毎に、画素ブロック数の累積和、及び、画素ブロック前景代表色の累積和を算出し、画素ブロック数が最大となる量子化レベルと、この量子化レベルの近傍量子化レベルにおける画素ブロック数及び画素ブロック前景代表色の累積和とから、前景領域の前景代表色を算出する。例えば、前景領域前景代表色算出処理部101は、前景領域の前景代表色として、前景領域に含まれる画素ブロックの画素ブロック前景代表色の平均値を用いてもよい。前景領域毎に前景代表色を算出することによって、前景代表色の過分割を抑制することができる。
文字列領域前景代表色算出処理部102は、前景領域前景代表色算出処理部101にて算出された各前景領域の前景代表色から、文字列領域の前景代表色を算出する。文字列領域前景代表色算出処理部102は、まず、各文字列領域に含まれる前景領域の前景代表色を量子化する(量子化の手順は前景領域前景代表色算出処理部101と同じである)。量子化によって、前景代表色は輝度のインデックスLと彩度及び色相のインデックスCHとの組み合わせにより5×13=65通りに分割される。
次いで、文字列領域前景代表色算出処理部102は、5段階に量子化された輝度を基準に、量子化レベル(インデックス)に対するラベル付けを行う。この際に文字列領域前景代表色算出処理部102は、各インデックスに属する画素数(画素ブロック数)が所定の閾値以上となるものをラベル付けの対象とし、画素数が閾値に満たないものはラベル付けの対象としない。なおラベル付けを行うか否かを判断するための閾値は、予め決定された固定値であってもよく、処理対象の文字列領域に含まれる画素数に所定係数(例えば0.1)を積算した値を用いてもよい。
文字列領域前景代表色算出処理部102は、輝度のインデックスL=0から順に画素数が所定値を超えるインデックスを探索してラベルを付し、対象となるインデックスが連続して存在する場合には、連続する複数のインデックスに対して同一のラベルを付すことでインデックスを統合する。また文字列領域前景代表色算出処理部102は、同一のラベルを付した複数のインデックスに係る画素ブロック数及び前景代表色の累積和を加算し、各ラベルについて前景代表色の累積和を画素ブロック数の累積和で除算したもの(即ち、平均値)を、そのラベルの代表色として算出する。このようなラベル付けを量子化のインデックスの全てに対して行うことで、輝度を基準としたインデックスの統合を行うことができる。
次いで、文字列領域前景代表色算出処理部102は、13段階に量子化された彩度及び色相のうち、12個の有彩色(即ちインデックスCH=1〜12)を基準として、色相軸において隣り合う(図38(b)に記載の円の周方向に隣り合う)ラベルが統合可能であるか否かを判定して、ラベルの統合を行う。隣り合う2つのラベルが統合可能であるか否かは、各ラベルの代表色から色相の成分を求めて差分値を算出し、この差分値が所定値(例えば30°)より小さいか否かに基づいて判定でき、差分値が所定値より小さい場合に文字列領域前景代表色算出処理部102は両ラベルを統合する。この処理を有彩色インデックスの全てに対して行うことによって、文字列領域前景代表色算出処理部102は、各文字列領域単位で前景代表色をインデックス化することができる。インデックス化をページ全体で行うより、文字列領域単位でインデックス化を行う方が、前景代表色の過分割を抑制することができる。
前景代表色統合処理部103は、文字列領域前景代表色算出処理部102にて算出された各文字列領域の前景代表色をページ単位で統合する処理を行うものであり、これによりページ全体の描画に必要な前景代表色数を削減することができる。図39は、前景代表色統合処理部103の構成を示すブロック図である。また図40は、前景代表色統合処理部103が行う処理の手順を示すフローチャートである。前景代表色統合処理部103は、文字列領域前景代表色算出処理部102が算出した前景代表色のインデックスの総数をページ毎に算出し、このインデックス総数が閾値(例えば31)を超えるか否かをインデックス数判定処理部111にて判定する(ステップS161)。
インデックス総数が閾値を超える場合(S161:YES)、前景代表色統合処理部103は、色差ヒストグラム生成処理部112にてページ毎の色差ヒストグラムの生成を行う(ステップS162)。図41は、色差ヒストグラムの一例を示す模式図である。前景代表色統合処理部103の色差ヒストグラム生成処理部112は、各前景代表色について、色差が最小となる他の前景代表色を探索して、探索により見出した他の前景代表色との色差を横軸とし、この色差を有する他の前景代表色の数(度数)を縦軸とした色差ヒストグラムを生成する。なお色差は、例えばL*a*b*の色空間において、ΔL+Δa*+Δb*として算出することができる。
次いで前景代表色統合処理部103のインデックス統合処理部113は、作成した色差ヒストグラムに基づいて、前景代表色のインデックスを統合する(ステップS163)。インデックスの統合は、ステップS162にて作成した色差ヒストグラムのうち、色差が最も小さい複数の前景代表色についてインデックスを1つにまとめることによって行うことができる。図41に示す例では、色差が最も小さい3つの前景代表色(図中のハッチングを付した部分)が1つの前景代表色に統合される。
インデックスの統合処理を行った後、前景代表色統合処理部103は、ステップS161へ処理を戻し、インデックス総数が閾値を超えるか否かの判定を再度行う。インデックス総数が閾値以下の場合(S161:NO)、前景代表色統合処理部103は、処理を終了する。以上の処理を前景代表色統合処理部103が頁単位で行うことによって、ページ全体の描画に必要な前景代表色数を削減することができる。
次いで、前景画素マスク抽出処理部104は、前景領域前景代表色算出処理部101が算出した前景代表色、及び/又は、文字列領域前景代表色算出処理部102が算出して前景代表色統合処理部103が統合した前景代表色と、入力画像データの画素値とを比較することによって、文字列領域の前景代表色に対応する前景画素マスクの作成を行う。まず、前景画素マスク抽出処理部104は、各文字列領域について、入力画像データと文字列領域の前景代表色及び背景代表色との差分値をそれぞれ算出する。前景画素マスク抽出処理部104は、処理対象の領域に背景代表色が存在し、入力画像データの画素値と前景代表色との差分値が所定の閾値より小さく、且つ、入力画像データの画素値と文字列領域の前景代表色との差分値に所定係数(例えば1.5)を積算した値が、入力画像データの画素値と背景代表色との差分値より小さい場合、入力画像データの対象画素が前景画素であると判定する。前景画素マスク抽出処理部104は、以上の処理を繰り返し行うことによって、前景画素に関する情報を有する前景画素マスクを生成し、2値画像生成処理部105へ与える。
次いで、2値画像生成処理部105は、前景画素マスク抽出処理部104が抽出した前景画素マスクを、前景代表色統合処理部103にて統合された前景色のインデックス毎に分離することによって、前景色毎の前景画素マスクを生成する。前景色毎の前景画素マスクは、2値の画像として生成することができ、2値画像生成処理部105は、生成した前景色毎の前景画素マスクを前景レイヤ2値画像として出力する。また2値画像生成処理部105は、前景レイヤ2値画像と共に、前景色のインデックスに係る情報として前景インデックス色情報を出力する。
以上の処理により、前景レイヤ生成処理部54は、前景画素の色をインデックス化した前景インデックス色情報と、各前景代表色のインデックスに対応した前景レイヤ2値画像とを生成し、背景レイヤ生成処理部55及び画像圧縮部56へ出力することができる。なお、インデックス毎の複数の前景レイヤ2値画像を論理和演算することによって、入力画像データの前景画素マスクを得ることができる。
(5)背景レイヤ生成処理部55
背景レイヤ生成処理部55は、背景レイヤの圧縮率を高めるために、入力画像データの前景画素の部分を、前景画素ではない周辺の背景画素を用いて穴埋めする処理を行うものであり、処理結果を背景レイヤとして出力する。図42は、背景レイヤ生成処理部55が行う処理を説明するための模式図である。図示のように、例えば文字と写真などの画像とを含む入力画像データからは、色変換処理部50〜前景レイヤ生成処理部54がそれぞれ行う処理によって、文字画素の位置を示す前景画素マスクを生成することができる。背景レイヤ生成処理部55は、前景画素マスクに基づいて入力画像データ中の前景画素の位置を把握し、前景画素部分を周辺の背景画素に置き換えることによって、背景レイヤの生成を行う。
図43は、背景レイヤ生成処理部55が行う処理の手順を示すフローチャートである。背景レイヤ生成処理部55は、入力画像データから1つの画素を処理対象として取得し(ステップS171)、取得した処理対象の画素が前景画素であるか否かを前景画素マスクに基づいて判定する(ステップS172)。処理対象の画素が前景画素でない場合(S172:NO)、背景レイヤ生成処理部55は、処理対象の画素値を背景レイヤの画素値としてそのまま出力すると共に(ステップS173)、この画素値を背景画素値として記憶し(ステップS174)、ステップS176へ処理を進める。
また、処理対象の画素が前景画素である場合(S172:YES)、背景レイヤ生成処理部55は、ステップS174にて記憶した背景画素値を基に、例えば記憶した複数の背景画素値の平均値又は最近に記憶した背景画素値等の画素値を処理対象の画素値と置き換え(ステップS175)、背景レイヤの画素値として出力する。その後、背景レイヤ生成処理部55は、入力画像データの全画素について上記の処理を終了したか否かを判定し(ステップS176)、全画素の処理を終了していない場合(S176:NO)、ステップS171へ処理を戻し、入力画像データの次の1画素について同様の処理を行う。全画素に対する処理を終了した場合(S176:YES)、背景レイヤ生成処理部55は、処理を終了する。
以上の処理により、背景レイヤ生成処理部55は、入力画像データから前景画素を取り除いた背景レイヤを生成して画像圧縮部56へ出力することができる。これにより画像圧縮部56は、前景レイヤ生成処理部55にて生成された前景レイヤと、背景レイヤ生成処理部55が生成した背景レイヤとに対して、それぞれ異なる圧縮方式によるデータ圧縮を行うことができる。
次に、圧縮処理部30の各部が行う処理の流れをフローチャートを参照して説明する。図44〜図48は、圧縮処理部30が行う処理の手順を示すフローチャートである。圧縮処理部30は、領域分離処理部24からの入力画像データに対して、まず、色変換処理部50による色変換を行い(ステップS201)、変換後の画像データに対して、前景抽出処理部51による前景抽出処理を行って(ステップS202)、画素ブロック背景代表色、画素ブロック前景代表色及び前景画素ブロックマスクを得る。
次いで圧縮処理部30は、前景抽出処理により得られた前景画素ブロックマスクに基づいて、ライン検知処理部52によるライン検知処理を行って(ステップS203)、ライン情報を生成し、このライン情報に基づいてレイアウト解析処理部53が入力画像データのレイアウト解析処理を行って(ステップS204)、入力画像データ中の文字列に係る文字列領域情報を生成する。
次いで圧縮処理部30は、上記の処理により得られた画素ブロック背景代表色、画素ブロック前景代表色、前景画素ブロックマスク及び文字列領域情報等に基づいて、入力画像データから前景画素を抽出した前景レイヤの生成処理を前景レイヤ生成処理部54にて行い(ステップS205)、生成した前景レイヤに基づいて、入力画像データの背景をなす背景レイヤの生成処理を背景レイヤ生成処理部55にて行う(ステップS206)。その後、圧縮処理部30は、生成した前景レイヤ及び背景レイヤのそれぞれに適した方式での画像圧縮処理を画像圧縮部56にて行い(ステップS207)、処理を終了する。
ステップS202にて行う前景抽出処理において、圧縮処理部30の前景抽出処理部51は、まず、入力画像データを分割するブロックサイズ(例えば8画素×8画素など)を設定し(ステップS211)、設定したブロックサイズとなるように、入力画像データを複数の画素ブロックに分割する(ステップS212)。次いで前景抽出処理部51は、分割した画素ブロックに含まれる画素値の差を判定することによって、複数の画素ブロックから平坦画素ブロックを抽出する(ステップS213)。その後、前景抽出処理部51は、画素ブロックのブロックサイズが所定サイズに達したか否かを判定し(ステップS214)、ブロックサイズが所定サイズに達していない場合(S214:NO)、ブロックサイズを小さいサイズに変更し(ステップS215)、ステップS212へ処理を戻して、画素ブロックの分割及び平坦画素ブロックの抽出を繰り返し行う。
画素ブロックのブロックサイズが所定サイズに達した場合(S214:YES)、前景抽出処理部51は、抽出した平坦画素ブロックの画素値から画素ブロック背景代表色を算出し(ステップS216)、算出した画素ブロック背景代表色と各画素ブロックの画素値との比較により前景画素ブロックを抽出して前景画素ブロックマスクを生成し(ステップS217)、各画素ブロックの画素値と画素ブロック背景代表色との比較により画素ブロック前景代表色を算出して(ステップS218)、前景抽出処理を終了する。
ステップS203にて行うライン検知処理において、圧縮処理部30のライン検知処理部52は、まず、入力画像データの水平方向に連続する複数の前景画素ブロックを水平ライン候補として抽出し(ステップS221)、同様に入力画像データの垂直方向に連続する複数の前景画素ブロックを垂直ライン候補として抽出する(ステップS222)。次いでライン検知処理部52は、抽出したライン候補について、水平方向又は垂直方向の同一ライン上に存在して近接する複数のライン候補を1つのライン候補に結合した後(ステップS223)、各ライン候補の太さの分布に基づいて各ライン候補がラインであるか否かの判定を行う(ステップS224)。次いでライン検知処理部52は、各ラインが水平方向又は垂直方向の単独ラインであるか、又は、画像中の表を構成するラインであるかの判定を行い(ステップS225)、最終的に検知されたラインに係る情報をライン情報として出力して、ライン検知処理を終了する。
ステップS204にて行うレイアウト解析処理において、圧縮処理部30のレイアウト解析処理部53は、まず、画像データ中において連続する複数の前景画素ブロックに対して、前景領域としての固有のラベルを割り当てるラベリング処理を行い(ステップS231)、ラベル付けされた各前景領域についての高さ、幅又は画素ブロック数等の情報に基づいて、各前景領域が文字に相当するものであるか否かを判定し、文字に相当しない前景領域を除外する(ステップS232)。次いでレイアウト解析処理部53は、ライン検知処理部52が出力したライン情報を基に、画像中の表内に位置する前景領域を文字列として抽出する処理を行う(ステップS233)。
次いでレイアウト解析処理部53は、各前景領域について、上下左右のいずれかに位置する近傍の他の前景領域との間の距離を算出すると共に(ステップS234)、前景領域の水平方向の連続数及び平均距離(又は距離総和)を算出し(ステップS235)、同様に垂直方向の連続数及び平均距離(又は距離総和)を算出する(ステップS236)。次いでレイアウト解析処理部53は、水平方向の連続数及び平均距離と垂直方向の連続数及び平均距離とを比較することによって、複数の前景領域が水平方向又は垂直方向の文字列を構成するものであるか否かを推定し(ステップS237)、推定した文字列の方向が妥当であるか否かを判定して、妥当でないと判定した文字列の方向を補正する処理を行う(ステップS238)。次いでレイアウト解析処理部53は、画像データから推定した文字列方向が同じ複数の前景領域を探し出し、前景領域間の距離が短く、且つ、文字列方向に垂直な方向についての位置関係が適切な複数の前景領域を文字列として抽出し、文字列に係る情報を文字列情報として作成すると共に(ステップS239)、文字列領域の幅又は高さに基づいて、文字列らしくない領域を文字列情報から削除する処理を行って(ステップS240)、レイアウト解析処理を終了する。
ステップS205にて行う前景レイヤ生成処理において、圧縮処理部30の前景レイヤ生成処理部54は、まず、前景画素ブロックマスクの各前景領域について前景代表色を算出し(ステップS251)、各前景領域の前景代表色に基づいて各文字列領域の前景代表色を算出し(ステップS252)、算出した各文字列領域の前景代表色を画像データのページ単位で統合する処理を行う(ステップS253)。次いで前景レイヤ生成処理部54は、画像データの画素値と前景代表色及び背景代表色との比較結果から前景画素を抽出し(ステップS254)、前景画素を前景代表色ごとに分離し、前景色毎の前景画素マスク(2値画像)を作成して(ステップS255)、前景レイヤ生成処理を終了する。
以上の構成の画像形成装置は、入力画像データから文字列領域を抽出する処理を色変換処理部50〜レイアウト解析処理部53にて行い、前景レイヤ生成処理部54が文字列領域から前景画素の抽出を行う構成とすることにより、文字列領域単位で色情報のインデックス化などを行うことができ、前景代表色などの色情報を文字列領域単位で扱うことができるため、入力画像データが過分割された領域単位(例えば画素ブロック単位)で色情報が扱われることがなく、精度よく前景画素の抽出を行うことができる。
また、ライン検知処理部52が入力画像データからラインを抽出し、前景画素ブロックマスクからラインを構成する画素ブロックを除外する補正を行うことによって、前景画素の抽出対象からラインを除外することができるため、前景画素として文字のみを扱うことが可能となり、画像圧縮部56による入力画像データの圧縮率を向上することができる。またこのとき、ラインは背景として扱われるため、シャギーなどの発生を抑制することができ、画質向上を実現できる。また、ライン検知処理部52はラインを検知することによって画像中の表を検知することができ、レイアウト解析処理部53が表中の文字列を抽出することができるため、文字列領域の抽出精度を向上することができる。
また、入力画像データから平坦画素ブロック抽出処理部61が平坦画素ブロックを抽出する際に、画素ブロックのサイズを徐々に小さく分割して平坦画素ブロックであるか否かの判定を繰り返し行う構成とすることにより、入力画像データの広域的な領域から局所的な領域までを参照しながら平坦画素ブロックの抽出を行うことができるため、背景代表色及び前景代表色等を高精度に算出でき、前景画素を高精度に抽出することができる。
また、前景領域間の距離及び連続数に応じて文字列方向推定処理部95が文字列方向を推定し、推定した方向に連なる前景領域を文字列領域抽出処理部97が統合して文字列領域として抽出することにより、入力画像データから文字列領域の抽出を高精度に行うことができる。また、入力画像データの各画素の画素値と、前景代表色及び背景代表色とのそれぞれの差分を求め、差分が所定条件を満たす画素を前景画素として前景レイヤ生成処理部54が抽出する構成とすることにより、前景代表色及び背景代表色に基づく入力画像データからの前景画素の抽出を精度よく行うことができる。また、前景代表色統合処理部103が、文字列領域についての前景代表色を、入力画像データのページ単位で統合する構成とすることにより、前景画像に係る色数を低減することができ、色情報をインデックス化した際にインデックス数を低減することができる。
また、画像圧縮部56は、前景レイヤ生成処理部54が生成した前景レイヤ及び背景レイヤ生成処理部55が生成した背景レイヤに対して、例えば可逆圧縮方式のMMRにより前景レイヤを圧縮し、例えば非可逆圧縮方式のJPEGにより背景レイヤを圧縮するなど、それぞれ適した圧縮処理を施すことによって、入力画像データの圧縮率を高めることができる。
なお、本実施の形態においては、前景画素を抽出する画像処理を行う画像処理装置20をMFPに搭載する例を示したが、これに限るものではなく、フラットヘッドスキャナなどの画像読取装置に同様の構成を適用してもよく、画像の圧縮処理を行うその他の装置(例えばプロダクトスキャナ又はファイリングサーバ等)に同様の構成を適用してもよい。また、本実施の形態に係るMFPはカラーの画像データを扱う構成としたが、これに限るものではなく、白黒の画像データを扱う構成であってもよい。
また、本発明の画像処理をMFP又は画像読取装置等のハードウェアが行う構成として実現するのみでなく、コンピュータに画像処理を実行させるコンピュータプログラムとして実現することもでき、このコンピュータプログラムのプログラムコード(実行形式プログラム、中間コードプログラム又はソースプログラム等)を、コンピュータにて読み取ることができる記録媒体に記録する構成とすることができる。これにより、本発明の前景画素抽出処理及び圧縮処理等の画像処理を行うコンピュータプログラムを記録した記録媒体を持ち運び自由に提供することができる。
上述の実施の形態1に係るMFP及び変形例に係る画像読取装置等の装置が、ROM(Read Only Memory)又はハードディスク等の記憶手段を備えている場合には、この記憶手段にコンピュータプログラムのプログラムコードを記憶する構成であってもよく、またこれらの装置が、記録媒体を着脱してプログラムコードを読み取る装置を備えて、記録媒体から読み取ったコンピュータプログラムを実行することで画像処理を行う構成であってもよい。これらの場合、記憶手段又は記録媒体等に格納されたコンピュータプログラムは、MFP又は画像読取装置等の装置に備えられたCPUなどが直接的に読み出して実行させる構成であってもよく、記憶手段又は記録媒体からプログラムコードをRAM(Random Access Memory)などの記憶エリアにダウンロードしてCPUなどが実行させる構成であってもよい(プログラムコードをダウンロードするためのコンピュータプログラムは、予め装置本体に備えられているものとする)。
MFP又は画像読取装置等の装置に着脱することができる記録媒体としては、磁気テープ若しくはカセットテープ等のテープ系媒体、フレキシブルディスク若しくはハードディスク等の磁気ディスク媒体、CD(Compact Disc)、MO(Magneto-Optical)、MD(Mini Disc)若しくはDVD(Digital Versatile Disk)等の光ディスク媒体、IC(Integrated Circuit)カード、メモリカード若しくは光カード等のカード系媒体、又は、マスクROM、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)若しくはフラッシュメモリ等の半導体メモリ媒体等のように、コンピュータプログラムを固定的に担持する媒体であってよい。これらの記録媒体がMFP又は画像読取装置等の装置に装着され、記録媒体に記録されたコンピュータプログラムが読み取られて実行されることにより、上述の画像処理が行われる。
またMFP又は画像読取装置等の装置がインターネットなどの通信ネットワークに接続してデータの送受信を行うことができる構成の場合には、通信ネットワークを介してコンピュータプログラムをダウンロードし、ダウンロードしたコンピュータプログラムを実行することで画像処理を行う構成であってもよい。この場合、通信ネットワークを介して画像処理用のコンピュータプログラムをダウンロードするためのコンピュータプログラムは、装置本体に予め備える構成であってもよく、記録媒体などを介してインストールされる構成であってもよい。なお本発明は、上記のコンピュータプログラムのプログラムコードが、電子的な伝送で具現化された搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
またこれらのコンピュータプログラムを実行するコンピュータは、フラットヘッドスキャナ、フィルムスキャナ又はデジタルカメラ等の画像入力装置、コンピュータプログラムを実行して画像処理などの様々な処理を行う処理装置、処理結果を表示するCRT(Cathode Ray Tube)ディスプレイ又は液晶ディスプレイ等の画像表示装置、及び画像処理の結果などを紙などの媒体に出力するプリンタなどの画像出力装置等を備えて構成され、更には通信ネットワークに接続するためのネットワークカード又はモデム等の通信手段が備えられてもよい。
(変形例1)
また、上述の実施の形態においては、圧縮処理部30がライン検知処理部52を備える構成としたが、これに限るものではなく、ライン検知処理部52を備えない構成であってもよい。図49は、変形例1に係るレイアウト解析処理部53aの構成を示すブロック図であり、圧縮処理部30がライン検知処理部52を備えない場合のレイアウト解析処理部53aの構成である。変形例1に係るレイアウト解析処理部53aは、図21に示したレイアウト解析処理部53から表内矩形特定処理部93を除いた構成である。即ち、変形例1に係るレイアウト解析処理部53aは、ラベリング処理部91及び非矩形文字列除去処理部92による処理結果が近傍矩形間距離算出処理部94へ与えられ、入力画像データから表内の文字列を抽出する処理を行わない構成である。変形例1に係るレイアウト解析処理部53aの各部が行う処理は、上述のレイアウト解析処理部53の各部が行う処理と同じである。
図50及び図51は、変形例1に係る圧縮処理部30が行う処理の手順を示すフローチャートである。変形例1に係る圧縮処理部30が行う処理は、図44のフローチャートに示した処理からステップS203のライン検知処理を行う手順を除いたものである。また変形例1に係る圧縮処理部30のレイアウト解析処理部53aがステップS204にて行うレイアウト解析処理は、図47のフローチャートに示した処理からステップS233の抽出処理の手順を除いたものである。
(変形例2)
また、上述の実施の形態においては、前景抽出処理部51の平坦画素ブロック抽出処理部61は、水平方向連結平坦画素ブロック抽出処理部72、垂直方向連結平坦画素ブロック抽出処理部73及びブロックベース平坦画素ブロック抽出処理部74の処理を、画素ブロックのサイズを変更しながら繰り返し行っているが、これに限るものではない。図52は、変形例2に係る平坦画素ブロック抽出処理部61aの構成を示すブロック図である。変形例2に係る平坦画素ブロック抽出処理部61aは、初期平坦画素ブロック抽出処理部71による処理の終了後、ブロックベース平坦画素ブロック抽出処理部74による平坦画素ブロックの抽出処理を、画素ブロックのサイズを変更しながら繰り返し行い、繰り返しの結果得られたサイズの画素ブロックに対して水平方向連結平坦画素ブロック抽出処理部72及び垂直方向連結平坦画素ブロック抽出処理部73が平坦画素ブロックの抽出処理を行う。水平方向連結平坦画素ブロック抽出処理部72及び垂直方向連結平坦画素ブロック抽出処理部73が行う抽出処理は画素ブロックのサイズが小さい場合に特に有効であるため、繰り返し行う処理をブロックベース平坦画素ブロック抽出処理部74の抽出処理のみとすることによって、抽出精度を低下させることなく処理速度を向上することができる。