(57)【特許請求の範囲】
【請求項１】
入力画像の複製である複製画像を作成する複製作成手段と、
前記入力画像の傾きである第１の傾きを検出する傾き検出手段と、
検出された前記第１の傾きに基づいて前記入力画像を補正する傾き補正手段と、
前記補正手段により補正された前記入力画像の傾きである第２の傾きを検出する傾き検出手段と、
前記第１の傾きと前記第２の傾きとに基づいて該第１の傾きの正当性を判断する判断手段とを備え、
前記判断手段において前記第１の傾きが正当であると判断された場合には、前記第１の傾きと前記第２の傾きの和に基づいて前記複製画像を補正し、補正された該複製画像を出力し、
前記判断手段において前記第１の傾きが正当でないと判断された場合には、前記複製画像を出力することを特徴とする画像処理装置。
【請求項２】
前記判断手段は、前記第２の傾きの絶対値が予め定められた閾値以下であれば、前記第１の傾きが正当であると判断することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
入力画像の複製である複製画像を作成し、
前記入力画像の傾きである第１の傾きを検出し、
検出された前記第１の傾きに基づいて前記入力画像を補正し、
補正された前記入力画像の傾きである第２の傾きを検出し、
前記第１の傾きと前記第２の傾きとに基づいて該第１の傾きの正当性を判断し、
前記第１の傾きが正当であると判断された場合には、前記第１の傾きと前記第２の傾きの和に基づいて前記複製画像を補正し、補正された該複製画像を出力し、
前記第１の傾きが正当でないと判断された場合には、前記複製画像を出力することを特徴とする画像処理方法。
【請求項４】
前記第２の傾きの絶対値が予め定められた閾値以下であれば、前記第１の傾きが正当であると判断することを特徴とする請求項３に記載の画像処理方法。
【請求項５】
前記請求項３または４に記載された方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、文字認識処理の前処理で文書画像に対する画像処理をおこなう、より詳しくは、文書の傾きを検出し補正するための画像処理装置、画像処理方法、およびその方法をコンピュータに実行させるプログラムに関する。
【０００２】
【従来の技術】
従来における画像認識装置として、入力されたイメージ画像の外接矩形を抽出し、その外接矩形を用いて、入力されたイメージ画像の傾きを検出するものがある（たとえば、特開平３−２１３０５３号公報記載の「原稿傾き検出装置」）。また、特開平９−１７１５３８号公報の画像認識装置は、傾きの微小角度の検出を強化するため、あらかじめ所定の角度の傾きを有して検出する構成である。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記特開平３−２１３０５３号公報の装置では、原稿が入力された状態において所定の基準点を基準として傾きを検出するので、特に、傾きが微小角度である場合には、検出精度が十分に得られないという問題点がある。この点は、上記の特開平９−１７１５３８号公報においても指摘されている。
【０００４】
この検出精度は、実際と検出値との微小な角度の相違である場合に限らない。検出方法によっては、「傾いていない」と判定する処理で誤認することがある。傾いていない画像に対し、この画像が「傾いていない」と判定する技術は、間違ったときの影響が非常に大きいため、通常の傾き検出よりも高い検出精度が要求されている。
【０００５】
特開平９−１７１５３８号公報に記載の装置を用いれば、微小角の検出には優れた結果が得られるが、最初に傾ける所定の角度に対し、偶然、画像の傾き角度が同じ角度であった場合には、検出する角度が微小となり、上記同様に検出精度の問題が発生する。
【０００６】
また、特開平９−１７１５３８号公報の方法では、最初の検出角度が所定値以下のみ所定の角度を回転させる最初の検出で、傾いていない画像に対し「大きく傾いている」、と判定された場合に誤認を修正することはできない。さらに、上記の各従来技術は、白黒の二値画像に対しての傾き検出の方法であり、カラーなど多値のイメージ画像に対する処理はおこなえない。
【０００７】
この発明は、上述した従来技術による問題点を解消するため、入力された画像データの傾き角度や補正後の傾き角度の信頼性を検定することにより、より精度の高い検出結果を得ることができる画像認識装置、画像認識方法、およびその方法をコンピュータに実行させるプログラムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、本発明の画像処理装置は、入力画像の複製である複製画像を作成する複製作成手段と、前記入力画像の傾きである第１の傾きを検出する傾き検出手段と、検出された前記第１の傾きに基づいて前記入力画像を補正する傾き補正手段と、前記補正手段により補正された前記入力画像の傾きである第２の傾きを検出する傾き検出手段と、前記第１の傾きと前記第２の傾きとに基づいて該第１の傾きの正当性を判断する判断手段とを備え、前記判断手段において前記第１の傾きが正当であると判断された場合には、前記第１の傾きと前記第２の傾きの和に基づいて前記複製画像を補正し、補正された該複製画像を出力し、前記判断手段において前記第１の傾きが正当でないと判断された場合には、前記複製画像を出力することを特徴とする。
【００１１】
この発明によれば、１度目の検出角度と２度目の検出角度という情報を用いて検定する構成であるため、２度目の検出結果では水平（０度）に近い値が得られるはずであり、逆に、１度目と２度目の検出結果を足し合わせたものが０度に近いという場合は、１度目で間違った角度補正をおこない、それを元に戻した結果であると簡単に両者を判別できるようになる。また、検定結果で傾きの検出結果が正当でない、と判断された場合に、複製された入力の画像データを結果出力するため、補正後の画像データを再度補正する手間を省き処理の効率化と画像品質の維持を図ることができる。また、画像の傾きの補正をおこない検定結果で正当である、と判定された場合に、１度目の補正画像は破棄することができ、複製された画像データに対する角度補正を、１度目と２度目の角度の和に基づき、ただ一度の補正でおこなえるようになる。これにより、補正にかかる回数を削減でき、画像のがたつきを防止して画像品質を維持できるようになる。
【００１２】
また、この発明にかかる画像処理装置は、前記判断手段は、前記第２の傾きの絶対値が予め定められた閾値以下であれば、前記第１の傾きが正当であると判断することを特徴とすることを特徴とする。
【００１３】
この発明によれば、しきい値を用いて検定するため、検定精度を向上できるようになる。
【００１４】
また、この発明にかかる画像処理方法は、入力画像の複製である複製画像を作成し、前記入力画像の傾きである第１の傾きを検出し、検出された前記第１の傾きに基づいて前記入力画像を補正し、補正された前記入力画像の傾きである第２の傾きを検出し、前記第１の傾きと前記第２の傾きとに基づいて該第１の傾きの正当性を判断し、前記第１の傾きが正当であると判断された場合には、前記第１の傾きと前記第２の傾きの和に基づいて前記複製画像を補正し、補正された該複製画像を出力し、前記第１の傾きが正当でないと判断された場合には、前記複製画像を出力することを特徴とする。
【００１６】
また、この発明にかかる画像処理方法は、前記第２の傾きの絶対値が予め定められた閾値以下であれば、前記第１の傾きが正当であると判断することを特徴とする。
【００１７】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる画像処理装置、画像処理方法およびその方法をコンピュータに実行させるプログラムの好適な実施の形態を詳細に説明する。
【００１８】
図１は、本発明の画像認識装置の構成例を示すブロック図である。同図に示す画像認識装置１００は、本発明の画像認識処理をマイクロプロセッサ等のデジタル処理により実行し得るために構築したものである。同図において、スキャナ１０１は、文書画像原稿を光学的に読み取り電気信号である画像データに変換する。ＣＰＵ１０２は、本発明にかかる画像認識処理を画像認識処理プログラムに基づき実行する。
【００１９】
画像認識処理プログラムは、プログラム格納ＲＯＭ／ＲＡＭ１０３、又はＣＤ−ＲＯＭ／ＦＤなどの格納媒体１０４に格納される。ＣＰＵ１０２は、この画像認識処理プログラムを読み出してワークエリアＲＡＭ１０５を用いて入力された画像データに対する後述する画像認識処理（分割処理および画像処理）を実行する。
【００２０】
なお、ＣＤ−ＲＯＭ／ＦＤなどの格納媒体１０４に格納された画像認識処理プログラムは、ＣＤ−ＲＯＭ／ＦＤドライブ１０６によって読み出される。そして、画像認識プログラムにより処理された画像データは、ＣＰＵ１０２の指示によりメモリ１０７に格納され、必要によりディスプレイ１０８に表示出力され、印字装置１０９から印字出力される。
【００２１】
（実施の形態１）
図２は、実施の形態１による画像認識処理プログラムにより構成される各機能部を示すブロック図である。図示のように各機能は、画像入力部２０１と、画像傾き検出部２０２と、画像傾き検定部２０３と、画像傾き補正部２０４によって構成されている。
【００２２】
画像入力部２０１には、画像データが入力される。この画像データは、二値、多値いずれであってもよい。画像傾き検出部２０２における画像データの傾きの検出は、画像データが二値の場合と、多値の場合とで異なる。画像データが二値の場合には、上記説明した特開平３−２１３０５３号公報の技術や、本出願人による特開平６−２００９２号公報に開示された装置、方法を使用することができる。たとえば、画像データが多値の場合であれば、画像のエッジ成分の外接矩形を直接取得し、特開平７−１４１４６５号公報に開示された方法に対し外接矩形を渡して傾きを検出する。
【００２３】
画像傾き検定部２０３では、上記画像傾き検出部２０２と異なる別の検出方法で同一の画像データに対し再度角度検出をおこなう。そして、画像傾き検定部２０３は、再度角度検出した傾き検出角度（第２の検出結果）が、画像傾き検出部２０２で得られた傾き検出角度（第１の検出結果）と近い場合に結果が正しい（信頼性あり）と判定する。たとえば、本出願人による特開平６−１５００６０号公報に記載された技術を用い、直線部分からの角度を検出しておこなう方法がある。
【００２４】
画像傾き補正部２０４は、画像傾き検定部２０３で「信頼性あり」、とされた角度に−１（度）をかけた角度だけ、元画像（画像入力部２０１に入力された画像データ）を回転させる。
【００２５】
以上の構成により、第１の検出時の検出角度が正しい傾き角度と大きく異なる場合には、「信頼性なし」となり傾きの補正を実行しないため、信頼性が向上できる。たとえば、傾いていない画像を誤検出して、さらに大きく傾けてしまう失敗を未然に防止できるようになる。
【００２６】
図３は、文字認識（ＯＣＲ）方法の処理内容全体を示すフローチャートである。上記画像データの傾き検出は、このような文字認識処理時の前処理として実行される（図中のスキュー補正に相当）。同図の処理概要を説明する。図示のように、入力される画像データは、二値の場合と、多値の場合では処理過程が異なる。
【００２７】
二値の画像データの入力時には、画像の適正化後（ステップＳ３０１）、画像データの画像（文書）の方向が判別、補正される（ステップＳ３０２）。この後、スキュー補正され（ステップＳ３０３）、ステップＳ３１０に移行する。
【００２８】
多値の画像データの入力時には、画像の適正化後（ステップＳ３０４）、画像補正用に二値化され（ステップＳ３０５）、画像の方向が判別、補正される（ステップＳ３０６）。この後、スキュー（傾き）補正される（ステップＳ３０７）。つぎに文書中の写真領域が抽出され（ステップＳ３０８）、画像データを認識用に二値化する（ステップＳ３０９）。
【００２９】
ステップＳ３１０では、上記二値、および多値に対するスキュー補正等の処理後の画像データに基づき、ノイズ・網掛け除去をおこなう。この後、上記抽出した写真領域、文字領域、その他の領域等の領域識別処理をおこなう（ステップＳ３１１）。識別後の文字領域に対しては、文字認識（ＯＣＲ）処理をおこない（ステップＳ３１２）、表領域に対しては表処理をおこない（ステップＳ３１３）、表中の文字領域のみステップＳ３１２での文字認識を実行させる。
【００３０】
この後、文字認識で得られた文字データ（文字コード）に基づき、対応するフォント、文字色をそれぞれ設定し（ステップＳ３１４，３１５）、文字認識した中間結果データ（ＤＲＦと称す）を作成する（ステップＳ３１６）。この際、上記抽出された表領域に対する表をデータ作成する。この後、タイトルを抽出し（ステップＳ３１７）、最終的な中間結果データを作成し（ステップＳ３１８）、ワークエリアＲＡＭ１０５に格納後、文字認識結果をディスプレイ１０８等に出力する。
【００３１】
上記画像の適正化処理（ステップＳ３０１，Ｓ３０４）について説明する。この処理は、入力された画像データの縦横の解像度（サイズ）に極端な差がある場合、小さな方のサイズを大きな方のサイズに合わせる処理である。この際、小さな方のサイズを整数倍に変倍することで、縦横の解像度を同じくらいの解像度に合わせる。ただし、変倍することで画像の最大サイズを超える場合は、変倍されないで処理をおこなう。具体的には、以下の式で変倍率を計算する。
【００３２】
ｉｆ（ｂｉＸＰｅｌｓＰｅｒＭｅｔｅｒ  ＜  ｂｉＹＰｅｌｓＰｅｒＭｅｔｅｒ）｛ｒａｔｅ  ＝  （ｉｎｔ）ｃｅｉｌ（（ｄｏｕｂｌｅ）  ｂｉＹＰｅｌｓＰｅｒＭｅｔｅｒ  ／  ｂｉＸＰｅｌｓＰｅｒＭｅｔｅｒ  −  ０．５）；｝
【００３３】
ここで、整数値ｒａｔｅ  ×  ｗｉｄｔｈの値が、最大処理範囲を超える場合、ｒａｔｅをデクリメントして最大処理範囲を超えない程度まで小さくする。また一方、縦横の解像度の差が倍以上あり、補正すると最大処理画像サイズを超えるような画像データに対しては、入力エラーとして再入力を促す構成としてもよい。また、入力される画像データがインデックスカラーやグレーなどのカラーマップを持った多値画像であった場合、２４ビットフルカラーへの変換処理をおこなう。これらの処理にはＲＧＫのライブラリーを使用する。
【００３４】
図４は、図３に記載の全体処理における画像の傾き補正に関する部分（ステップＳ３０１〜Ｓ３１０）に関する各処理をより詳細に説明したフローチャートである。特に、カラー（多値）の画像データ入力時に画像データが書き変わるタイミングを対応するステップ部分に併記してある。なお、図４において図３と同一の処理ステップには同一のステップ番号を附してある。
【００３５】
画像認識装置１００のＣＰＵ１０２は、スキャナ１０１等から入力された画像データの種別を判別する（ステップＳ４０１）。二値である場合には（ステップＳ４０１：二値画像）、ステップＳ３０１〜Ｓ３０３の処理を実行し、スキュー補正後の画像データに対し一度目（第１の検出結果）の文書方向が不明であるか否かを判別する（ステップＳ４０２）。文書方向が不明である場合には（ステップＳ４０２：Ｙｅｓ）、ステップＳ３０２を再実行する。文書方向が判断できれば（ステップＳ４０２：Ｎｏ）、ステップＳ３１０に移行する。
【００３６】
一方、画像データの種別がカラーである場合には（ステップＳ４０１：カラー画像）、ステップＳ３０４〜Ｓ３０７の処理を実行し、スキュー補正後の画像データに対し一度目（第１の検出結果）の文書方向が不明であるか否かを判別する（ステップＳ４０３）。文書方向が不明である場合には（ステップＳ４０３：Ｙｅｓ）、ステップＳ３０６を再実行する。文書方向が判断できれば（ステップＳ４０３：Ｎｏ）、画像回転をおこない（ステップＳ４０４）、ステップＳ３０８以降の処理を実行する。
【００３７】
上記処理において、カラーの画像データ入力時における画像書き換えのタイミングを説明する。カラーの画像データは、画像の適正化（ステップＳ３０４）、画像回転（ステップＳ４０４）時にそれぞれ書き換えられる。
【００３８】
また、カラーの画像データに基づき作成される二値の画像データについての、作成、書き換え、破棄の各タイミングを説明する。画像適正化後の二値化（ステップＳ３０５）で二値の画像データが作成され、文書方向判別、補正（ステップＳ３０６）、および、スキュー補正（ステップＳ３０７）時にそれぞれ書き換えられる。また、この二値の画像データは画像回転（ステップＳ４０４）で破棄される。
【００３９】
また、写真抽出（ステップＳ３０８）、および認識用二値化（ステップＳ３０９）時に二値の画像データが作成され、ノイズ・網掛け除去（ステップＳ３１０）で二値の画像データが書き換えられる。
【００４０】
上記画像補正用二値化処理（ステップＳ３０５）の内容について説明する。この処理では、文書方向判別、スキュー検出に用いる二値画像を生成する。この二値の画像データで認識した方向や、傾き角度は、元のカラーの画像データに対して回転して補正をする（ステップＳ４０４）ので、その時点で二値の画像は必要なく、破棄している。
【００４１】
（実施の形態２）
図５は、実施の形態２による画像認識処理プログラムにより構成される各機能部を示すブロック図である。実施の形態１で説明したと同様に各機能は、画像入力部２０１と、画像傾き検出部２０２と、画像傾き検定部２０３と、画像傾き補正部２０４によって構成されている。そして、画像傾き補正部２０４での傾き角度の補正に基づき、画像傾き検定部２０３で補正後の画像に対して傾きの検定をおこない、角度の正当性を確かめる構成の点が相違している。
【００４２】
図６は、実施の形態２による処理内容を示すフローチャートである。まず、入力された画像データの傾き角度を検出する（ステップＳ６０１）。ここで傾き角度（ａｎｇｌｅＡ）が検出される。つぎに、検出された傾き角度を相殺するマイナスの補正角度（−ａｎｇｌｅＡ）で補正する（ステップＳ６０２）。つぎに、補正した角度を検定する（ステップＳ６０３）。
【００４３】
ステップＳ６０３で実行する角度検定には、実施の形態１と異なり、最初の角度検出方法と同じ手法のものを使用しても悪影響は少ないという特徴がある。たとえば、補正後の画像を角度検出し、角度が０度付近であれば、補正は成功したと考えられる。この場合、正当性の評価（ステップＳ６０４）で、「正当性が高い」という結果を出力する。逆に、補正後の検出角度が大きい場合は、１度目の検出角度は怪しい「正当ではない」と判定する。なお、角度検定時、２度目の検出時に、１度目の検出時とは別の傾き検出方法を用いても構わない。
【００４４】
（実施の形態３）
図７は、実施の形態３による処理内容を示すフローチャートである。実施の形態３では、１度目の検出角度と２度目の検出角度という情報を用いて検定する構成である。まず、入力された画像データの傾き角度を検出する（ステップＳ７０１）。ここで傾き角度（ａｎｇｌｅＡ）が検出される。つぎに、検出された傾き角度を相殺するマイナスの補正角度（−ａｎｇｌｅＡ）で補正する（ステップＳ７０２）。
【００４５】
つぎに、補正した画像データの傾き角度を検出する（ステップＳ７０３）。ここで検出された結果は、傾き角度（ａｎｇｌｅＢ）である。つぎに、１度目の検出結果（ａｎｇｌｅＡ）と、２度目の検出結果（ａｎｇｌｅＢ）を検定する（ステップＳ７０４）。
【００４６】
そして、正常に角度が検出できていれば、本来、２度目の検出結果（ａｎｇｌｅＢ）は水平（０度）に近い値が得られる。その場合、正当性の評価（ステップＳ７０５）では、検出結果が「正当性が高い」として終了する。逆に、１度目と２度目の検出結果を足し合わせたものが０度に近いという場合は、１度目で間違った角度補正をおこない、それを元に戻したということが言える。そのため、検出結果は「正当ではない」と判断する。この場合、一時保存していた元の画像データを角度検出後の補正結果として出力することができる。
【００４７】
（実施の形態４）
実施の形態３では、上記実施の形態２で説明した正当性の評価（ステップＳ７０５）での判断において、２度目の検出結果にしきい値Ｔｈ１を設けて検定する構成である。図８は、この実施の形態４の処理内容を示すフローチャートである。ステップＳ７０１〜Ｓ７０３までは図７と同様の処理を実行する。
【００４８】
そして、正当性の評価時（ステップＳ８０１）には、ステップＳ７０４で得られた２度目の検出角度の絶対値をあらかじめ定めたしきい値Ｔｈ１と比較する。２度目の検出角度がしきい値Ｔｈ１以下であれば（ステップＳ８０１：Ｙｅｓ）、１度目の検出結果（ａｎｇｌｅＡ）に「正当性がある」と判断する（ステップＳ８０２）。一方、２度目の検出角度がしきい値Ｔｈ１を超えていれば（ステップＳ８０１：Ｎｏ）、１度目の検出結果（ａｎｇｌｅＡ）は「正当ではない」と判断する（ステップＳ８０３）。
【００４９】
このように、しきい値Ｔｈ１として十分小さいと考えられる値（たとえば、０〜１度の範囲の値）を設定し、このしきい値Ｔｈ１以下を用いて正当性を評価することにより、正当性の評価の信頼度を向上できるようになる。
【００５０】
（実施の形態５）
実施の形態５では、１度目の傾き角度の検出時（たとえばステップＳ６０１，Ｓ７０１）に、しきい値Ｔｈ２を用い検出の正当性を判断する。図９は、実施の形態５の処理内容を示すフローチャートである。ステップＳ７０１〜Ｓ７０３、ステップＳ８０１〜Ｓ８０３は、それぞれ図７，図８で説明した内容と同様の処理を実行する。
【００５１】
１度目の傾き角度検出（ステップＳ７０１）後、この１度目の検出角度の絶対値を、しきい値Ｔｈ２と比較判断する（ステップＳ９０１）。しきい値Ｔｈ２としては十分小さいと考えられる値（たとえば、０〜１度の範囲の値）を設定する。そして、１度目の検出角度の絶対値が、しきい値Ｔｈ２以下である場合には（ステップＳ９０１：Ｙｅｓ）、この１度目の傾き角度の検出値を信頼して「正当である」と評価する（ステップＳ９０２）。そして、傾きの検定（たとえばステップＳ６０３，Ｓ７０３）の処理を実行せず終了することができる。
【００５２】
一方、１度目の検出角度の絶対値が、しきい値Ｔｈ２を超える場合には（ステップＳ９０１：Ｎｏ）、つぎに、検出された傾き角度を相殺するマイナスの補正角度（−ａｎｇｌｅＡ）で補正し（ステップＳ７０２）、補正した画像データの傾き角度（ａｎｇｌｅＢ）を検出する（ステップＳ７０３）。この後、正当性の評価をおこない、ステップＳ７０４で得られた２度目の検出角度の絶対値をあらかじめ定めたしきい値Ｔｈ１と比較する（ステップＳ８０１）。
【００５３】
２度目の検出角度がしきい値Ｔｈ１以下であれば（ステップＳ８０１：Ｙｅｓ）、１度目の検出結果（ａｎｇｌｅＡ）に「正当性がある」と判断する（ステップＳ８０２）。一方、２度目の検出角度がしきい値Ｔｈ１を超えていれば（ステップＳ８０１：Ｎｏ）、１度目の検出結果（ａｎｇｌｅＡ）は「正当ではない」と判断する（ステップＳ８０３）。
【００５４】
この構成によれば、１度目の検出後、ステップＳ９０１で傾き角度の評価をおこない、「正当である」評価時には、ステップＳ７０２以降の処理を省略でき、処理速度の高速化を図ることができる。なお、しきい値Ｔｈ２の値を、しきい値Ｔｈ１より小さな値とすることにより、傾きの検定（たとえばステップＳ６０３，Ｓ７０４）の処理の不実行時における判定を高精度に維持できる。すなわち、１度目の傾き角度の検出時にしきい値Ｔｈ２を用いて高精度な検出をおこなえれば、検定をおこなわずとも画像の傾きの検出を高精度なものとして扱えるようになる。
【００５５】
（実施の形態６）
実施の形態６では、検定時に１度目の検出角度と２度目の検出角度を使用し、２つの検出角度の和の絶対値をしきい値Ｔｈ３を用いて評価する。図１０は、実施の形態６の処理内容を示すフローチャートである。前述した実施の形態で説明した各処理内容には同一符号を附してある。
【００５６】
まず画像データの画像に対する１度目の傾き角度（ａｎｇｌｅＡ）を検出し（ステップＳ７０１）、つぎに、検出された傾き角度を相殺するマイナスの補正角度（−ａｎｇｌｅＡ）で補正し（ステップＳ７０２）、補正した画像データの傾き角度（ａｎｇｌｅＢ）を検出する（ステップＳ７０３）。
【００５７】
この後、検定処理をおこなう（ステップＳ１００１）。ここでは、１度目の傾き角度の検出角度と、２度目の検出角度の和（ａｎｇｌｅＡ＋Ｂ）を計算し、その和の絶対値をしきい値Ｔｈ３と比較する。このしきい値Ｔｈ３としては、たとえば、０〜１度の範囲の値を用いる。そして、この和の絶対値がしきい値Ｔｈ３より小さければ（ステップＳ１００１：Ｙｅｓ）、１度目（ステップＳ７０１）で検出した角度（ａｎｇｌｅＡ）は「正当ではない」と判断する（ステップＳ１００２）。一方、この和の絶対値がしきい値Ｔｈ３以上であれば（ステップＳ１００１：Ｎｏ）、１度目で検出した角度は「正当である」と判断する（ステップＳ１００３）。
【００５８】
たとえば、ステップＳ１００１での判断を具体的数値で説明する。１度目の画像の傾き検出結果（ａｎｇｌｅＡ）が３．５度であると、補正により−３．５傾けて、本来であれば傾きが０度になる。そして、補正後の画像に対する再度の傾き検出結果（ａｎｇｌｅＢ）で−３．３度の傾きが検出されたとする。この場合、検出角度の絶対値の和は、３．５＋（−３．３）＝０．２であり、十分に小さい値となる。そして、しきい値Ｔｈ３が１度であるとすると、ステップＳ１００１の判断はＹｅｓとなり「正当ではない」と判断される。
【００５９】
これは、本来傾いていない画像を誤検出して傾きの補正をおこなった後、その画像に対する２度目の角度検出が比較的正しい値として得られた状態と考えることができる。このように、１度目の角度検出時に誤検出した場合には、角度の和が０度付近になる。したがって、このような場合、１度目の検出角度は「正当でない」と判断する。このような処理内容により、１度目の傾き角度検出に対する誤検出の有無を判断できるようになる。
【００６０】
（実施の形態７）
実施の形態７は、画像の傾き補正をおこなう前に、あらかじめ入力画像の複製を作っておき、検定結果が「正当でない」と判定した場合に、この複製画像を最終結果として出力する構成である。図１１は、この実施の形態７の処理内容を示すフローチャートである。
【００６１】
まず、入力された画像データに対する画像の１度目の傾き角度（ａｎｇｌｅＡ）を検出する（ステップＳ７０１）。つぎに、この入力された画像データの複製を作成しておく（ステップＳ１１０１）。この後、入力された画像データに対し、検出された傾き角度を相殺するマイナスの補正角度（−ａｎｇｌｅＡ）で補正し（ステップＳ７０２）、補正した画像データの傾き角度（ａｎｇｌｅＢ）を検出する（ステップＳ７０３）。
【００６２】
この後、検定処理をおこなう（ステップＳ１１０２）。この検定処理は、上述した各実施形態で説明したいずれの処理であってもよい（たとえば、ステップＳ７０４，Ｓ８０１，Ｓ１１０１）。この検定処理の結果、正当な条件を満たす場合（ステップＳ１１０２：Ｙｅｓ）、１度目で検出した角度（ａｎｇｌｅＡ）は「正当である」と判断する（ステップＳ１１０３）。
【００６３】
一方、この検定処理の結果、正当な条件を満たさない場合（ステップＳ１１０２：Ｎｏ）、１度目で検出した角度（ａｎｇｌｅＡ）は「正当でない」と判断し（ステップＳ１１０４）、先にステップＳ１１０１で複製していた画像データを補正画像として出力する（ステップＳ１１０５）。
【００６４】
他の処理例としては、入力された画像データを複製してこの複製された画像を角度補正した結果、正当性が得られない場合に、入力された元の画像データをそのまま出力する構成とすることもできる。いずれの場合においても、角度補正後の画像を再度回転処理して元に戻す処理を実行するものではない。このように、検定の結果、「正当でない」と判断された場合、複製された画像データを出力することで、１度補正した画像を再度逆回転させて元に戻すという処理を不要にできる。
【００６５】
（実施の形態８）
実施の形態８は、画像の傾きの検定結果が「正当である」と判定された場合に、入力された画像を１度目の検出角度で補正した画像を出力する構成としたものである。図１２は実施の形態８の処理内容を示すフローチャートである。
【００６６】
まず、入力された画像データに対する画像の１度目の傾き角度（ａｎｇｌｅＡ）を検出する（ステップＳ７０１）。そして、入力された画像データに対し、検出された傾き角度を相殺するマイナスの補正角度（−ａｎｇｌｅＡ）で補正し（ステップＳ７０２）、補正した画像データの傾き角度（ａｎｇｌｅＢ）を検出する（ステップＳ７０３）。
【００６７】
この後、検定処理をおこなう（ステップＳ１１０２）。この検定処理の結果、正当な条件を満たす場合（ステップＳ１１０２：Ｙｅｓ）、１度目で検出した角度（ａｎｇｌｅＡ）は「正当である」と判断し（ステップＳ１１０３）、Ｓ７０２において処理済みである１度目の補正した画像データを出力する（ステップＳ１２０１）。一方、この検定処理の結果、正当な条件を満たさない場合（ステップＳ１１０２：Ｎｏ）、１度目で検出した角度（ａｎｇｌｅＡ）は「正当でない」と判断する（ステップＳ１１０４）。
【００６８】
実施の形態４で説明したように、正常に角度が検出できていれば、本来、２度目の検出結果（ａｎｇｌｅＢ）は水平（０度）に近い値が得られ、また、実際には±０．２〜０．４度程度の検出誤差もあるので、２度目の検出角度を反映した画像データを出力しても、大きく結果が変わらない。このように、実施の形態８によれば、検定後の画像出力を簡単に選択して処理の簡素化を図れるようになる。
【００６９】
（実施の形態９）
実施の形態９では、検定結果で「正当性がある」と判定された場合に、入力画像に１度目の検出角度で補正した画像をさらに２度目の検出角度で補正した画像を出力する構成である。図１３は、この実施の形態９における画像認識処理プログラムにより構成される各機能部を示すブロック図である。
【００７０】
上記の実施の形態で説明したと同様に各機能は、画像入力部２０１と、画像傾き検出部２０２と、画像傾き検定部２０３と、画像傾き補正部２０４，１３０１によって構成されている。画像傾き検定部２０３は、画像傾き補正部２０４での傾き角度の補正に基づき、補正後の画像に対して傾きの検定をおこない、角度の正当性を確かめる。この後、画像傾き補正部１３０１は、検定結果で正当性があると判定された場合に、１度目の補正画像に対して２度目の検出角度を補正する。
【００７１】
図１４は実施の形態９の処理内容を示すフローチャートである。まず、入力された画像データに対する画像の１度目の傾き角度（ａｎｇｌｅＡ）を検出する（ステップＳ７０１）。そして、入力された画像データに対し、検出された傾き角度を相殺するマイナスの補正角度（−ａｎｇｌｅＡ）で補正し（ステップＳ７０２）、補正した画像データの傾き角度（ａｎｇｌｅＢ）を検出する（ステップＳ７０３）。
【００７２】
この後、検定処理をおこなう（ステップＳ１１０２）。この検定処理の結果、正当な条件を満たす場合（ステップＳ１１０２：Ｙｅｓ）、１度目で検出した角度（ａｎｇｌｅＡ）は「正当である」と判断し（ステップＳ１１０３）、画像傾き補正部１３０１は、ステップＳ７０２において処理済みである１度目の補正した画像データを補正角度（−ａｎｇｌｅＢ）で補正し（ステップＳ１４０１）、この補正した画像データを出力する（ステップＳ１４０２）。一方、検定処理の結果、正当な条件を満たさない場合（ステップＳ１１０２：Ｎｏ）、１度目で検出した角度（ａｎｇｌｅＡ）は「正当でない」と判断する（ステップＳ１１０４）。
【００７３】
上記処理内容によれば、画像傾き補正部１３０１での補正処理（ステップＳ１４０１）が加わるため、実施の形態８で説明した内容に比して処理ステップが増えた分だけ処理時間およびコストがかかるが、傾きの補正精度を少しでも向上したい場合に有効である。
【００７４】
（実施の形態１０）
実施の形態１０は、補正をおこなう前にあらかじめ入力画像の複製を作っておき、検定結果が「正当である」と判定された場合に、上記画像傾き補正部１３０１で複製画像に対して１度目の検出角度と２度目の検出角度の和の角度を補正した画像を出力する構成である。
【００７５】
図１５は、実施の形態１０による処理内容を示すフローチャートである。まず、入力された画像データに対する画像の１度目の傾き角度（ａｎｇｌｅＡ）を検出する（ステップＳ７０１）。つぎに、この入力された画像データの複製を作成しておく（ステップＳ１１０１）。そして、入力された画像データに対し、検出された傾き角度を相殺するマイナスの補正角度（−ａｎｇｌｅＡ）で補正し（ステップＳ７０２）、補正した画像データの傾き角度（ａｎｇｌｅＢ）を検出する（ステップＳ７０３）。
【００７６】
この後、検定処理をおこなう（ステップＳ１１０２）。この検定処理の結果、正当な条件を満たす場合（ステップＳ１１０２：Ｙｅｓ）、１度目で検出した角度（ａｎｇｌｅＡ）は「正当である」と判断する（ステップＳ１１０３）。この場合、画像傾き補正部１３０１による補正処理を実行する（ステップＳ１５０１）。一方、検定処理の結果、正当な条件を満たさない場合（ステップＳ１１０２：Ｎｏ）、１度目で検出した角度（ａｎｇｌｅＡ）は「正当でない」と判断する（ステップＳ１１０４）。
【００７７】
「正当である」場合の補正処理を具体的に説明すると、まず、ステップＳ７０２において処理済みである１度目の補正した画像データを破棄する。この破棄のタイミングは図４を用いて説明した時期に相当する。そして、ステップＳ１１０１で作成した複製画像を読み出す。また、１度目（ステップＳ７０１）と、２度目（ステップＳ７０３）で検出された角度の和（ａｎｇｌｅＡ＋Ｂ）を算出する。そして、読み出した複製の画像データに対し−（ａｎｇｌｅＡ＋Ｂ）の補正処理を一括して実行し、その結果を出力する（ステップＳ１５０２）。
【００７８】
近年、補正処理では高速化のために処理ステップを少しでも削減するようになっているが、この場合、請求項９で説明したように同一の画像データに対して補正を何度もおこなうと画像のがたつきが生じ、最終的に同じ角度に補正した画像が得られるとしても、画像の品質は落ちることを防止することができるようになる。
【００７９】
すなわち、この実施形態では、角度を検定するために作成した補正画像を破棄して以後使用せず、入力された画像データ（複製）に対して、１度目と２度目の検出角度の和による補正処理を実行することにより、補正処理の回数を最小限の１回に留めて、画像品質の低下を防止することができるようになる。
【００８０】
上記処理内容の変形例としては、ステップＳ１１０２での検定処理（ステップＳ１１０３，Ｓ１１０４を含む）を実行せず、ステップＳ７０３の実行後にステップＳ１５０１を実行する構成とすることもできる。この際、１度目と２度目の検出結果の和を算出し、その和の角度だけ補正をおこなって出力する。これにより、検定処理のステップを不実行とする分だけ、処理ステップ記述の簡素化と処理時間の高速化が図れるようになる。
【００８１】
（実施の形態１１）
上述した実施の形態１〜１０で説明した各処理内容では、いずれも入力される画像データが多値画像である場合と、二値画像である場合とでいずれも同一の処理内容で処理することができる。しかし、入力される画像データが多値画像である場合には、何らかの方法で二値化をおこない、その二値化された画像データを用いて画像の角度を検出することにより、メモリ容量を取らず処理も高速化できるようになる。
【００８２】
したがって、実施の形態１１では、実施の形態１〜１０で説明した各処理において、入力される画像データが多値画像である場合には、これを検出するステップを設け、多値画像を二値化した後に各処理を実行する構成とする。この二値化の手法としては、固定しきい値の一様二値化や、判別分析方法を用いた手法など特に限定されない。
【００８３】
以下、前述した実施の形態について二値化の処理を実行する構成を追加した内容を説明する。図１６は、実施の形態１１の構成を示すものであり、実施の形態１（図２）の構成に二値化の処理部を追加したブロック図である。図示のように各機能は、画像入力部２０１と、画像傾き検出部２０２と、画像傾き検定部２０３と、画像傾き補正部２０４と、多値／二値判定部１６０１と、多値の画像データを二値化する二値化処理部１６０２によって構成されている。
【００８４】
また、図１７は、実施の形態１１における他の構成例を示すものであり、実施の形態２（図５）の構成に二値化の処理部を追加したブロック図である。図示のように、全体構成は図１６と同一であり、画像傾き検定部２０３は、画像傾き補正部２０４での傾き角度の補正に基づき、補正後の画像に対して傾きの検定をおこない、角度の正当性を確かめる構成の点が相違している。このような構成時においても、多値／二値判定部１６０１と、多値の画像データを二値化する二値化処理部１６０２を追加するだけでよい。
【００８５】
また、前述した実施の形態で説明した処理内容に二値化の処理内容を追加した場合の処理内容について説明する。図１８は、この実施の形態１１による処理内容を示すフローチャートである。同図に示す処理は、実施の形態４（図８）に記載した処理内容に対応し二値化の処理ステップを追加したものである。
【００８６】
まず、入力された画像データが多値であるか二値であるかを検出する（ステップＳ１８０１）。多値であれば（ステップＳ１８０１：Ｎｏ）、この多値の画像データを二値化する（ステップＳ１８０２）。二値であれば（ステップＳ１８０１：Ｙｅｓ）、この二値の画像データを用いる。
【００８７】
以降、図８で説明した内容と同様の各処理を実行する。なお、あらかじめの設定により、ステップＳ７０２における補正時には、二値化された後の画像データに対する補正に限らず、多値の画像データに対する補正を実行できるよう切り替え可能な構成にできる。この際、ステップＳ７０３では、ステップＳ７０２で補正した画像データ（二値あるいは多値のいずれか）に対する角度の検出をおこなうようにすればよい。
【００８８】
（実施の形態１２）
実施の形態１２は、先に説明した実施の形態７（図１１）の処理内容に、入力された画像データを二値化する処理を追加した構成である。図１９は、実施の形態１２の処理内容を示すフローチャートである。
【００８９】
まず、入力された画像データが多値であるか二値であるかを検出する（ステップＳ１８０１）。二値であれば（ステップＳ１８０１：Ｙｅｓ）、この二値の画像データを用い、図１１記載とほぼ同様の各処理（ステップＳ７０１〜Ｓ１１０５）を実行する。一方、多値であれば（ステップＳ１８０１：Ｎｏ）、この多値の画像データを二値化し（ステップＳ１８０２）、以下の処理（ステップＳ１９０１以降）を実行する。
【００９０】
ステップＳ１９０１以降の処理は、基本的にステップＳ７０１以降の処理と同様であるが、画像の傾き検出（ステップＳ１９０１）後に、入力画像の複製は作成しない点が相違する。
【００９１】
上記処理において、入力された画像データが二値の場合、補正をおこなう前にあらかじめ複製を作っておき（ステップＳ１１０１）、検定結果が「正当でない」と判定された場合には（ステップＳ１１０４）、入力が二値の場合はステップＳ１１０１で複製された画像データを出力し、また、多値の場合は入力された多値の画像データそのものを最終結果として出力する。これにより、入力された画像データが多値あるいは二値いずれの場合でも、角度検出に失敗した場合に入力された画像データそのものを出力できるようになる。
【００９２】
（実施の形態１３）
実施の形態１３は、先に説明した実施の形態８（図１２）の処理内容に、入力された画像データを二値化する処理を追加した構成である。図２０は、実施の形態１３の処理内容を示すフローチャートである。
【００９３】
まず、入力された画像データが多値であるか二値であるかを検出する（ステップＳ１８０１）。二値であれば（ステップＳ１８０１：Ｙｅｓ）、この二値の画像データを用い、図１２記載とほぼ同様の各処理（ステップＳ７０１以降）を実行する。一方、多値であれば（ステップＳ１８０１：Ｎｏ）、この多値の画像データを二値化し（ステップＳ１８０２）、以下の処理（ステップＳ１９０１以降）を実行する。
【００９４】
ステップＳ１９０１以降の処理は、基本的にステップＳ７０１以降の処理と同様であるが、画像の傾き検出（ステップＳ１９０１）後に、入力画像の複製は作成しない点が相違する。
【００９５】
上記処理において、入力された画像データが二値の場合、補正をおこなう前にあらかじめ複製を作っておき（ステップＳ１１０１）、検定結果が「正当である」と判定された場合には（ステップＳ１１０３）、入力が二値の場合はステップＳ７０２で角度補正された画像データを出力し、また、多値の場合は入力された多値の画像データを補正（ステップＳ１９０２で得られた−ａｎｇｌｅＡで補正）したものを最終結果として出力する（ステップＳ２００１）。これにより、入力された画像データが多値あるいは二値いずれの場合でも、角度検出に成功した場合に入力された画像データそのものに対して補正した画像データを出力できるようになる。
【００９６】
なお、本実施の形態で説明した画像認識方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フロッピー（Ｒ）ディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、上記記録媒体を介して、インターネット等のネットワークを介して配布することができる。
【００９７】
【発明の効果】
以上説明したように、この発明によれば、画像の傾き角度が正しい傾き角度と大きく異なる場合には、補正をおこなわないため信頼性を向上させることができる。たとえば、傾いていない画像に対して傾きを誤検出し大きく傾けた補正をおこなうという失敗を未然に防止できる。特に、検定にかかる処理を実行せず、１度目と２度目の検出結果の和に基づき角度補正を実行するため、処理を簡素化でき、処理時間の高速化と処理プログラム記述の簡素化を図ることができる。
【００９８】
また、１度目の検出角度と２度目の検出角度という情報を用いて検定する構成であるため、２度目の検出結果では水平（０度）に近い値が得られるはずであり、逆に、１度目と２度目の検出結果を足し合わせたものが０度に近いという場合は、１度目で間違った角度補正をおこない、それを元に戻した結果であると簡単に両者を判別できるようになる。また、検定結果で傾きの検出結果が正当でない、と判断された場合に、複製された入力の画像データを結果出力するため、補正後の画像データを再度補正する手間を省き処理の効率化と画像品質の維持を図ることができる。また、画像の傾きの補正をおこない検定結果で正当である、と判定された場合に、１度目の補正画像は破棄することができ、複製された画像データに対する角度補正を、１度目と２度目の角度の和に基づき、ただ一度の補正でおこなえるようになる。これにより、補正にかかる回数を削減でき、画像のがたつきを防止して画像品質を維持できるようになる。また、しきい値を用いて検定する構成により、検定精度を向上できるようになる。
【図面の簡単な説明】
【図１】  この発明の本実施の形態にかかる画像認識装置の構成例を示すブロック図である。
【図２】  実施の形態１による画像認識処理プログラムにより構成される各機能部を示すブロック図である。
【図３】  本発明の画像認識処理を含む文字認識（ＯＣＲ）方法の処理内容全体を示すフローチャートである。
【図４】  図３に記載の全体処理における画像の傾き補正に関する部分の各処理をより詳細に説明したフローチャートである。
【図５】  実施の形態２による画像認識処理プログラムにより構成される各機能部を示すブロック図である。
【図６】  実施の形態２による処理内容を示すフローチャートである。
【図７】  実施の形態３による処理内容を示すフローチャートである。
【図８】  実施の形態４による処理内容を示すフローチャートである。
【図９】  実施の形態５による処理内容を示すフローチャートである。
【図１０】  実施の形態６による処理内容を示すフローチャートである。
【図１１】  実施の形態７による処理内容を示すフローチャートである。
【図１２】  実施の形態８による処理内容を示すフローチャートである。
【図１３】  実施の形態９における画像認識処理プログラムにより構成される各機能部を示すブロック図である。
【図１４】  実施の形態９による処理内容を示すフローチャートである。
【図１５】  実施の形態１０による処理内容を示すフローチャートである。
【図１６】  実施の形態１１の構成を示すブロック図である。
【図１７】  実施の形態１１の他の構成例を示すブロック図である。
【図１８】  実施の形態１１による処理内容を示すフローチャートである。
【図１９】  実施の形態１２による処理内容を示すフローチャートである。
【図２０】  実施の形態１３による処理内容を示すフローチャートである。
【符号の説明】
１００  画像認識装置
１０１  スキャナ
１０２  ＣＰＵ
１０３  プログラム格納ＲＯＭ／ＲＡＭ
１０４  格納媒体
１０５  ワークエリアＲＡＭ
１０６  ＣＤ−ＲＯＭ／ＦＤドライブ
１０７  メモリ
１０８  ディスプレイ
１０９  印字装置
２０１  画像入力部
２０２  画像傾き検出部
２０３  画像傾き検定部
２０４，１３０１  画像傾き補正部
１６０１  多値／二値判定部
１６０２  二値化処理部
【図１】
0004064677.tif 000002
【図２】
0004064677.tif 000003
【図３】
0004064677.tif 000004
【図４】
0004064677.tif 000005
【図５】
0004064677.tif 000006
【図６】
0004064677.tif 000007
【図７】
0004064677.tif 000008
【図８】
0004064677.tif 000009
【図９】
0004064677.tif 000010
【図１０】
0004064677.tif 000011
【図１１】
0004064677.tif 000012
【図１２】
0004064677.tif 000013
【図１３】
0004064677.tif 000014
【図１４】
0004064677.tif 000015
【図１５】
0004064677.tif 000016
【図１６】
0004064677.tif 000017
【図１７】
0004064677.tif 000018
【図１８】
0004064677.tif 000019
【図１９】
0004064677.tif 000020
【図２０】
0004064677.tif 000021