(57)【特許請求の範囲】
【請求項１】
信号成分と背景成分とから成り、第１の方向と当該第１の方向と交差する第２の方向に配列された画像のデータを、少なくとも第１の方向に沿って抽出して符号化する符号化する工程（ａ）と、
前記符号化された符号データの中から、所定値以上の長さで同一の成分が連続する符号列を抽出する工程（ｂ）と、
前記抽出した符号列の中点位置の符号、又は中点近傍で出現頻度が多い符号を前記代表符号として、前記符号列毎に割り当て記憶する工程（ｃ）と、
前記工程（ａ）と、前記工程（ｂ）と、前記工程（ｃ）とを、前記第２の方向にわたって繰り返し実施する工程（ｍ）と、
前記記憶された代表符号の中から、第１の代表符号と、前記第１の代表符号の成分と同一な成分である第２の代表符号を前記第２の方向から検索する工程（ｄ）と、
前記検索された前記第１の代表符号及び前記第２の代表符号を結ぶ線分が前記画像の中で成す角度を算出する工程（ｅ）と、
前記工程（ｄ）と、前記工程（ｅ）とを、全ての前記代表符号に対して実施して前記算出した角度のデータを蓄積する工程（ｎ）と、
前記蓄積した角度の出現回数に応じたヒストグラムを作成し、前記ヒストグラムの頂点に対応する角度を、前記ヒストグラムにおける一定の幅を有する領域の面積中心により算出することにより前記画像の傾きを算出する工程（ｆ）とを備えることを特徴とする画像傾き検出方法。
【請求項２】
請求項１に記載の画像傾き検出方法において、
前記画像を構成する符号データの出現回数により、前記信号成分と前記背景成分とを判別する工程（ｇ）を更に備えることを特徴とする画像傾き検出方法。
【請求項３】
請求項２に記載の画像傾き検出方法において、
前記出現回数が多い符号データを、前記背景成分と判定すると共に、前記出現回数が少ない符号データを、前記信号成分と判定することを特徴とする画像傾き検出方法。
【請求項４】
請求項１乃至３のいずれか１項に記載の画像傾き検出方法において、
前記画像のデータを符号化する方式は、ランレングス符号化であることを特徴とする画像傾き検出方法。
【請求項５】
請求項４に記載の画像傾き検出方法において、
前記背景成分を示す符号データは、白ランであると共に、
前記信号成分を示す符号データは、黒ランであることを特徴とする画像傾き検出方法。
【請求項６】
請求項１乃至５のいずれか１項に記載の画像傾き検出方法において、
前記工程（ａ）は、前記画像のデータを抽出するライン毎に異なる間隔で抽出することを特徴とする画像傾き検出方法。
【請求項７】
請求項１乃至６のいずれか１項に記載の画像傾き検出方法において、
前記工程（ｂ）は、前記連続する長さが前記所定値以上、かつ、他方の所定値以下である符号列を抽出することを特徴とする画像傾き検出方法。
【請求項８】
請求項１乃至７のいずれか１項に記載の画像傾き検出方法において、
前記工程（ｄ）は、前記画像の中で、前記記憶された一方の代表符号を起点にして、前記代表符号と同一な前記成分の符号データを略直線状に辿ることにより到達可能な他方の代表符号を、前記記憶された代表符号の中から順次検索することを特徴とする画像傾き検出方法。
【請求項９】
請求項１乃至７のいずれか１項に記載の画像傾き検出方法において、
前記工程（ｄ）は、前記画像の中で、前記記憶された一方の代表符号を起点にして、前記代表符号とは同一な前記成分の符号データと、一定の割合を超えない数の前記代表符号とは異なる前記成分の符号データとを略直線状に辿ることにより到達可能な他方の代表符号を、前記記憶された代表符号の中から順次検索することを特徴とする画像傾き検出方法。
【請求項１０】
請求項１乃至９のいずれか１項に記載の画像傾き検出方法において、
前記工程（ｆ）は、
第１の方向または第２の方向の何れか一方の方向に沿って算出した角度を、余角関係にある角度に変換する工程を更に備えることを特徴とする画像傾き検出方法。
【請求項１１】
請求項１乃至１０のいずれか１項に記載の画像傾き検出方法において、
前記ヒストグラムは、
前記画像のデータを抽出する間隔に関する情報、または前記角度を算出した２つの代表符号間の距離に関する情報の少なくとも一方を含むことを特徴とする画像傾き検出方法。
【請求項１２】
請求項１乃至１１のいずれか１項に記載の画像傾き検出方法を実行することを特徴とする画像傾き検出装置。
【請求項１３】
信号成分と背景成分とから成り、第１の方向と当該第１の方向と交差する第２の方向に配列された画像のデータを、少なくとも第１の方向に沿って抽出して符号化する符号化する機能と、
前記符号化された符号データの中から、所定値以上の長さで同一の成分が連続する符号列を抽出する機能と、
前記抽出した符号列の中点位置の符号、又は中点近傍で出現頻度が多い符号を前記代表符号として、前記符号列毎に割り当て記憶する機能と、
前記符号化する機能と、前記抽出する機能と、前記記憶する機能とを、前記第２の方向にわたって繰り返し実施する機能と、
前記記憶された代表符号の中から、第１の代表符号と、前記第１の代表符号の成分と同一な成分である第２の代表符号を前記第２の方向から検索する機能と、
前記検索された前記第１の代表符号及び前記第２の代表符号を結ぶ線分が前記画像の中で成す角度を算出する機能と、
前記検索する機能と、前記算出する機能とを、全ての前記代表符号に対して実施して前記算出した角度のデータを蓄積する機能と、
前記蓄積した角度の出現回数に応じたヒストグラムを作成し、前記ヒストグラムの頂点に対応する角度を、前記ヒストグラムにおける一定の幅を有する領域の面積中心により算出することにより前記画像の傾きを算出する機能とをコンピュータに実現させることを特徴とする画像傾き検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像入力手段から入力した画像の処理に係り、特に、直線部分を含む画像傾き検出方法、画像傾き検出装置および画像傾き検出プログラムに関する。
【背景技術】
【０００２】
従来、帳票等の文書を入力して、その画像の傾きを検出する方法としては、下記特許文献１に記載されているように、文字や罫線等の直線が水平方向や垂直方向に連続して並ぶ傾向を利用して、短冊状に分割した領域毎に所定の画素の出現回数をヒストグラム化し、そのヒストグラムのピークの位置を求めることにより、画像の傾きを検出していた。
【０００３】
【特許文献１】特開２０００−２２８９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の方法では、画像を構成する文字と直線とを区別することなく抽出するため、文書毎に異なる文字数や文字の書体は、傾きを検出する際の誤差要因となり、傾き角度を精度良く求めることはできなかった。また、画像全体を対象としてヒストグラムを作成するため、角度を算出するのに多くの時間を要した。
【課題を解決するための手段】
【０００５】
上記した課題を解決するために、本発明の画像傾き検出方法は、信号成分と背景成分とから成る画像のデータを、水平方向または垂直方向の少なくとも１つの方向に沿って抽出して符号化する工程（ａ）と、前記符号化された符号データの中から、所定値以上の長さで同一の成分が連続する符号列を抽出する工程（ｂ）と、前記抽出した符号列の代表である代表符号を、前記符号列毎に割り当て記憶する工程（ｃ）と、前記画像の中で、前記代表符号の成分と同一な成分である前記符号データと共に略直線状に並ぶ複数の前記代表符号を、前記記憶された代表符号の中から検索する工程（ｄ）と、前記検索された複数の代表符号を結ぶ線分が前記画像の中で成す角度を算出する工程（ｅ）と、前記算出した角度のデータを蓄積して統計処理により前記画像の傾きを算出する工程（ｆ）とを備えることを特徴とする。
この発明によれば、代表符号と同一な成分の符号データと共に略直線状に並ぶ複数の代表符号を検索することにより、画像の中から直線成分を抽出し、抽出した直線成分から角度を算出するため、文字に多く含まれる非直線部の影響を排除できることから、画像の傾きを精度良く検出できる。更に、画像全体を対象とすることなく、直線成分の角度を対象として統計処理するため、短時間で画像の傾きを算出できる。
【０００６】
本発明では、前記画像を構成する符号データの出現回数により、前記信号成分と前記背景成分とを判別する工程（ｇ）を更に備えることが好ましい。
また、本発明では、前記出現回数が多い符号データを、前記背景成分と判定すると共に、前記出現回数が少ない符号データを、前記信号成分と判定することが好ましい。
この発明によれば、符号データの出現回数に基き、信号成分と背景成分とを判定するため、これらを識別するための情報を入力することなく処理できる。
【０００７】
本発明では、前記画像のデータを符号化する方式は、ランレングス符号化であることが好ましい。
また、本発明では、前記背景成分を示す符号データは、白ランであると共に、前記信号成分を示す符号データは、黒ランであることが好ましい。
この発明によれば、画像のデータは、ランレングス変換により圧縮されて符号化されるため、データの保持や移動等の扱いが容易になる。
【０００８】
本発明では、前記工程（ａ）は、前記画像のデータを抽出するライン毎に異なる間隔で抽出することが好ましい。
この発明によれば、画像のデータは、ライン毎に異なる間隔で抽出されるため、模様のような等間隔のパターンを有する画像に対して、同一のパターンの抽出により生じる誤差要因を排除でき、角度を精度良く算出できる。
【０００９】
本発明では、前記工程（ｂ）は、前記連続する長さが前記所定値以上、かつ、他方の所定値以下である符号列を抽出することが好ましい。
この発明によれば、抽出する符号列の長さの上限と下限を決めることで、角度を算出する対象となる符号列の長さの分布を平準化できるため、画像の傾きを精度良く検出できる。
【００１０】
本発明では、前記工程（ｃ）は、前記抽出した符号列の中点位置の符号、又は中点近傍で出現頻度が多い符号を前記代表符号として割り当てても良い。
【００１１】
本発明では、前記工程（ｄ）は、前記画像の中で、前記記憶された一方の代表符号を起点にして、前記代表符号と同一な前記成分の符号データを略直線状に辿ることにより到達可能な他方の代表符号を、前記記憶された代表符号の中から順次検索することが好ましい。
この発明によれば、画像の中で、２つの代表符号を端点として、前記代表符号と同一な成分の符号データで構成される直線を抽出できる。
【００１２】
本発明では、前記工程（ｄ）は、前記画像の中で、前記記憶された一方の代表符号を起点にして、前記代表符号とは同一な前記成分の符号データと、一定の割合を超えない数の前記代表符号とは異なる前記成分の符号データとを略直線状に辿ることにより到達可能な他方の代表符号を、前記記憶された代表符号の中から順次検索することが好ましい。
この発明によれば、画像の中で、２つの代表符号を端点として、前記代表符号とは同一な成分の符号データと、異なる成分の符号データとで構成される鎖線や点線のような直線も抽出できる。
【００１３】
本発明では、前記工程（ｆ）は、前記信号成分を示す代表符号から算出された角度に基き、前記画像の傾きを算出することが好ましい。
この発明によれば、画像の中の信号成分を示す画像を対象にして、画像の傾きを検出できる。
【００１４】
本発明では、前記工程（ｆ）は、前記算出した角度の出現回数に応じたヒストグラムを作成する工程と、前記ヒストグラムの頂点に対応する角度を、前記ヒストグラムにおける一定の幅を有する領域の面積中心により算出する工程とを有することが好ましい。
この発明によれば、角度の出現回数をヒストグラムで示すと共に、ヒストグラムの一定幅の中から面積中心値を算出するため、角度を精度良く算出できる。
【００１５】
本発明では、前記工程（ｆ）は、水平方向または垂直方向の何れか一方の方向に沿って算出した角度を、余角関係にある角度に変換する工程を更に備えることが好ましい。
この発明によれば、水平方向および垂直方向に沿って符号列を抽出して、それぞれ算出した角度は、同一の基準軸からの角度に統一されるため、これらの角度をまとめて統計処理できる。
【００１６】
本発明では、前記ヒストグラムは、前記画像のデータを抽出する間隔に関する情報、または前記角度を算出した２つの代表符号間の距離に関する情報の少なくとも一方を含むことが好ましい。
この発明によれば、データを抽出した条件をヒストグラムに反映できるため、角度の算出精度がより向上する。
【００１７】
また、上記した方法を実行させる画像傾き検出装置により、高精度で高速な画像傾き検出装置を提供できる。
【００１８】
更に、この発明はコンピュータプログラムとして捉えることができる。即ち、信号成分と背景成分とから成る画像のデータを、水平方向または垂直方向の少なくとも１つの方向に沿って抽出して符号化する機能と、前記符号化された符号データの中から、所定値以上の長さで同一の成分が連続する符号列を抽出する機能と、前記抽出した符号列の代表である代表符号を、前記符号列毎に割り当て記憶する機能と、前記画像の中で、前記代表符号の成分と同一な成分である前記符号データと共に略直線状に並ぶ複数の前記代表符号を、前記記憶された代表符号の中から検索する機能と、前記検索された複数の代表符号を結ぶ線分が前記画像の中で成す角度を算出する機能と、前記算出した角度のデータを蓄積して統計処理により前記画像の傾きを算出する機能とをコンピュータに実現させることを要旨とする。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施形態について、入力した画像の傾きを求める方法について、プログラムのフローチャートを参照しつつ説明する。
（実施形態）
【００２０】
図１（ａ）は、この発明の実施形態としての画像傾き検出装置１００の斜視図である。この画像傾き検出装置１００は、スキャナ１０２と、コンピュータ１０４と、モニタ１０５と、キーボード１０６と、マウス１０７と、ケーブル１０８とを備える。スキャナ１０２は、画像入力手段の一つであり、内部に配置されたラインセンサの走査により、読み込んだ画像を電子データに変換して出力する。出力された画像の電子データは、ケーブル１０８を介してコンピュータ１０４に送られる。コンピュータ１０４は、ハードウェアとして、図示を略したＣＰＵ、ＲＯＭ、ＲＡＭ、ハードディスクおよび入出力インターフェイス等を備える。また、このコンピュータ１０４は、基本ソフトウェアである所定のオペレーティングシステム（ＯＳ）により管理される。このオペレーティングシステムの管理下で、ＲＯＭやハードディスクに記憶されたドライバを含む種々のソフトウェアにより、所定の機能が実行され、例えば、入出力インターフェイスを介してモニタ１０５、マウス１０７およびキーボード１０６との間でデータが授受される。更に、このコンピュータ１０４には、後述する画像傾き検出プログラムが実行可能にインストールされており、前記したハードウェア資源とソフトウェアとが有機的に協働することで、画像入力手段から入力した画像の電子データに対して所定の機能が実行される。
【００２１】
図１（ｂ）は、モニタ１０５に表示された文書画像１１２を説明する図である。本実施形態では、この図１（ｂ）に示すように、スキャナ１０２のような画像入力手段から入力され、階調情報を含む多値で構成される入力画像１１０において、文書画像１１２が所定の基準線に対して、角度ＷＤｅｇで傾いて入力された場合を想定する。この文書画像１１２は、罫線等の直線を示す直線画像１１４と、文字を示す文字画像１１８と、背景を示す背景画像１２０とから成る。このような入力画像１１０から直線画像１１４を抽出し、抽出した直線画像１１４を統計処理することにより文書画像１１２の傾きを検出するプログラムを、図２〜図１２のフローチャートに基いて説明する。尚、入力画像１１０は、多値で構成されるデータに限らず、ランレングス変換により符号化を行い、背景成分を白ランで示すと共に、信号成分を黒ランで示す２値画像のデータであっても良い。
【００２２】
図２は、本実施形態の画像傾き検出プログラムの処理を示すフローチャートである。この処理が実行されると、最初に、以降の処理で必要な初期値を設定する工程（ステップＳ１０）が実行される。この工程で設定される値は、入力画像１１０の幅ｗ（単位：ピクセル）、入力画像１１０の高さｈ（単位：ピクセル）、解像度ｒ（単位：ｄｐｉ）、実寸の探索幅ＲＴ（単位：ポイント）、最小抽出線幅ＲＷｍｉｎ（単位：ポイント）、最大抽出線幅ＲＷｍａｘ（単位：ポイント）、直線抽出時の画素割合の最小値ＬＰＭｉｎおよび背景色情報ＣＬｂａｃｋである。尚、これらの中で、実寸の探索幅ＲＴ、最小抽出線幅ＲＷｍｉｎ、最大抽出線幅ＲＷｍａｘおよび直線抽出時の画素割合の最小値ＬＰｍｉｎについては、入力されない場合のデフォルト値として、ＲＴ＝２０、ＲＷｍｉｎ＝０．２５、ＲＷｍａｘ＝６およびＬＰＭｉｎ＝０．５を採用するように設定されている。更に、背景色情報ＣＬｂａｃｋは、入力画像１１０の中で背景成分に該当するデータを識別するための情報であり、この情報が入力されない場合、後述する背景色ＣＬｂａｃｋの計算（ステップＳ５０）の処理により算出される。尚、上記した単位である１ポイントは、本実施形態においては１／７２インチとする。
【００２３】
次に、横方向（Ｘ方向）の探索による直線部の傾きヒスグラムの作成工程（ステップＳ３０）が実行される。この工程の詳細は、後述する。
【００２４】
続いて、縦方向（Ｙ方向）の探索による直線部の傾きヒスグラムの作成工程（ステップＳ２０）が実行される。この工程の詳細は、後述する。
【００２５】
次に、背景色情報ＣＬｂａｃｋが入力されているか、否かを判定する（ステップＳ４０）。ここで、背景色情報ＣＬｂａｃｋが入力されている場合（ステップＳ４０でＹｅｓ）、次の工程（ステップＳ６０）に進む。また、背景色情報ＣＬｂａｃｋが入力されていない場合（ステップＳ４０でＮｏ）、信号成分と背景成分とを判別するべく、背景色ＣＬｂａｃｋを計算する工程（ステップＳ５０）が実行された後、次の工程（ステップＳ６０）に進む。尚、背景色ＣＬｂａｃｋを計算する工程（ステップＳ５０）の詳細は、後述する。
【００２６】
次に、ＣＬｂａｃｋ以外の色に対する直線部の傾きヒストグラムを全て選択する（ステップＳ６０）。この工程では、前記縦方向のヒストグラムおよび前記横方向のヒストグラムをそれぞれ構成するデータの中から、背景色情報ＣＬｂａｃｋが示す背景成分のデータを除外して、信号成分のデータのみの構成とする。
【００２７】
続いて、前記した２つのヒストグラムにおいて、同じ傾きに対する各度数を合計して、１つのヒストグラムに統合する（ステップＳ７０）。ここで、横方向および縦方向に沿って算出した直線部の角度の基準軸は、同一では無く、それぞれ直交する。従って、何れか一方の方向に沿った角度に統一するべく、他方の方向に沿って算出した角度を、余角関係にある角度に変換することで、同一の基準軸から算出した角度に統一する。ここで、余角関係に変換する角度は、正の角度だけではなく、負の角度も含まれる。例えば、−３０度の場合、−６０度に変換される。更に、統一されたヒストグラムには−４５度から４５度の範囲に入らない角度も現れるので、これらの角度について、９０度の整数倍の角度を加減して、−４５度から４５度の範囲に収まるように変換を行い、変換後の角度に対する度数に変換前の角度に対する度数を加える。例えば、−６０度や７５度の場合、それぞれ３０度と、−１５度に変換される。これにより、例えば、傾いた矩形の直行する２辺の傾きが一致するので、矩形全体の傾きを正しく抽出できる。
【００２８】
次に、直線部の傾きを示すデータを統計処理することにより、１つに統合した傾きヒストグラムに基き画像全体の傾きＷＤｅｇを計算する工程（ステップＳ８０）が実行される。この工程の詳細は、後述する。
【００２９】
最後に、算出した傾きＷＤｅｇを出力して（ステップＳ９５）、一連の処理を終了する。
【００３０】
図３は、横方向（Ｘ方向）の探索により、直線部の傾き角度の出現回数に応じたヒストグラムの作成工程（ステップＳ３０）の詳細を示すフローチャートである。この処理が呼び出されて実行されると、最初に、入力画像１１０のデータを１つの方向に沿って抽出して符号化するべく、横方向のライン毎に探索する探索幅ｔを計算する工程（ステップＳ３１）が実行される。この探索幅ｔは、実寸の探索幅ＲＴおよび解像度ｒを用いて、以下のように計算される。
ｔ＝ＲＴ÷７２×ｒ
【００３１】
次に、入力画像１１０に対して探索する探索行ｎを初期化して、一行目（ｎ＝１）に設定する（ステップＳ３２）。
【００３２】
続いて、設定した探索行ｎに対する直線候補位置リストを作成する工程（ステップＳ３３）が実行される。この工程の詳細は、後述する。
【００３３】
次に、探索行ｎと、前記工程で作成した直線候補位置リストとを組合せて探索行リストに追加する（ステップＳ３４）。
【００３４】
次に、乱数ｕを発生させて、次に探索する探索行を計算する（ステップＳ３５）。乱数ｕは、以下の範囲で発生する。
−（ｔ÷３）＜ｕ＜（ｔ÷３）
【００３５】
また、次に探索する探索行ｎ１は、現在の探索幅ｎ０、探索幅ｔおよび乱数ｕを用いて、以下のように計算される。このようにして、画像のデータは、探索するライン毎に異なる間隔で抽出される。
ｎ１＝ｎ０＋ｔ＋ｕ
【００３６】
続いて、次に探索する探索行ｎ１は、入力画像１１０の高さｈ以下に収まるか、否かを判定する（ステップＳ３６）。ここで、次に探索する探索行ｎ１は、入力画像１１０の高さｈ以下に収まる場合（ステップＳ３６でＹｅｓ）、設定した探索行ｎに対する直線候補位置リストを作成する工程（ステップＳ３３）に戻る。また、次に探索する探索行ｎ１は、入力画像１１０の高さｈ以下に収まらない場合（ステップＳ３６でＮｏ）、次の工程（ステップＳ３７）に進む。
【００３７】
次に、探索行リストから傾きヒストグラムを作成する工程（ステップＳ３７）が実行され、一連の処理を終了して、この処理の呼び出し元に戻る。尚、この工程の詳細は、後述する。
【００３８】
図４は、設定した探索行ｎに対する直線候補位置リストを作成する工程（ステップＳ３３）の詳細を示すフローチャートである。この処理が呼び出されて実行されると、最初に、最小抽出線幅Ｗｍｉｎおよび最大抽出線幅Ｗｍａｘを計算する工程（ステップＳ３３０）が実行される。これらの値は、最小抽出線幅ＲＷｍｉｎ、最大抽出線幅ＲＷｍａｘ、および解像度ｒを用いて以下のように計算される。
Ｗｍｉｎ＝ＲＷｍｉｎ÷７２×ｒ
Ｗｍａｘ＝ＲＷｍａｘ÷７２×ｒ
【００３９】
次に、横方向の探索位置ｘ、および同一成分の符号列を示すランデータの開始位置ｓを初期化する（ステップＳ３３２）。具体的には、以下のような値を代入する。
ｘ＝１
ｓ＝ｘ
【００４０】
次に、探索位置ｘの画素と、この探索位置ｘから横方向（Ｘ方向）に１つ増分した位置（ｘ＋１）の画素とを抽出して、これらの画素の色に関する情報を符号化し、両者が異なる、即ち、画素間で所定の基準値を越えて色が変化しているか、または、横方向の探索位置が入力画像１１０の幅ｗに達したか、否かを検出する（ステップＳ３３４）。ここで、横方向の隣接する探索位置の画素間で色の変化は所定の基準値以下であり、かつ、横方向の探索位置が入力画像１１０の幅ｗに達していない場合（ステップＳ３３４でＮｏ）、次の探索位置ｘを横方向（Ｘ方向）に１つ増分した位置（ｘ＋１）に設定して（ステップＳ３３６）、この検出工程（ステップＳ３３４）を再度実行する。また、横方向の隣接する探索位置の画素間で色が所定の基準値を越えて変化している場合、または、横方向の探索位置ｘが入力画像１１０の幅ｗに達した場合（ステップＳ３３４でＹｅｓ）、ランデータの終端位置ｅを（ｅ＝ｘ）に設定して、次の工程（ステップＳ３３８）に進む。
【００４１】
次に、ランデータの終端位置ｅから、所定の基準値を越えて色変化することなく符号が連続する長さを示すランデータの長さｄと、符号列の代表符号として割り当てるランデータの中点位置ｃと、ランデータの色の平均値Ｃｌとを計算する（ステップＳ３３８）。ランデータの長さｄおよびランデータの中点位置ｃは、それぞれ以下のように計算される。
ｄ＝ｅ−ｓ
ｃ＝（ｓ＋ｅ）÷２
【００４２】
次に、ランデータの長さｄが所定値（最小抽出線幅ＲＷｍｉｎ）以上であり、かつ、他方の所定値（最大抽出線幅ＲＷｍａｘ）以下であるか、否かを判定する（ステップＳ３４０）。ここで、ランデータの長さｄが最小抽出線幅ＲＷｍｉｎ以上であり、かつ最大抽出線幅ＲＷｍａｘ以下である場合（ステップＳ３４０でＹｅｓ）、次の工程（ステップＳ３４２）に進む。また、ランデータの長さｄが最小抽出線幅ＲＷｍｉｎ以下であるか、または最大抽出線幅ＲＷｍａｘ以上である場合（ステップＳ３４０でＮｏ）、次の工程（ステップＳ３４２）を実行することなく、更に次の工程（ステップＳ３４４）に進む。
【００４３】
次に、探索行ｎに対する直線候補位置リストにランデータの中点位置ｃと、ランデータの色の平均値Ｃｌとを登録して記憶する（ステップＳ３４２）。
【００４４】
続いて、横方向の探索位置が入力画像１１０の幅ｗに達したか、否かを判定する（ステップＳ３４４）。ここで、横方向の探索位置ｘが入力画像１１０の幅ｗに達した場合（ステップＳ３４４でＹｅｓ）、一連の処理を終了して、この処理の呼び出し元に戻る。また、横方向の探索位置ｘが入力画像１１０の幅ｗに達していない場合（ステップＳ３４４でＮｏ）、次の探索位置ｘを横方向（Ｘ方向）に１つ増分した位置（ｘ＋１）に設定すると共に、ランデータの開始位置ｓを探索位置ｘに設定して（ステップＳ３４６）、前記した検出工程（ステップＳ３３４）に戻る。
【００４５】
図５は、探索行リストから直線部の傾きヒストグラムを作成する工程（ステップＳ３７）の詳細を示すフローチャートである。尚、この工程での処理の理解を容易にするべく、図１３（ｃ）および（ｄ）も参照して説明する。この処理が呼び出されて実行されると、最初に、探索行リストの中から隣接する探索行ｎ１およびｎ２を選択する工程（ステップＳ３７０）が実行される。ここで、ｎ１とｎ２とは、ｎ１＜ｎ２の関係にあり、更に、後述する工程（ステップＳ３８８）から戻って実行される場合には、選択されるｎ１およびｎ２は、この工程が実行されて以来、未選択な組合せになるように選択される。ここで、図１３（ｃ）は、入力画像１１０の所定の領域の拡大図であり、直線画像１１４と、文字画像１１８と、背景画像１２０とから成る。この工程で選択された探索行ｎ１と探索行ｎ２は、所定の領域内をＸ方向に平行して並んでいる。また、探索行ｎ１は、背景画像１２０と直線画像１１４とを横切り、探索行ｎ２は、背景画像１２０と、直線画像１１４と、文字画像１１８とを横切る。
【００４６】
続いて、探索行ｎ１およびｎ２に対応する直線候補位置リストから、同一色の代表符号Ｐ１およびＰ２を選択する（ステップＳ３７２）。ここで、Ｐ１およびＰ２の列方向（Ｘ方向）の位置を、ｍ１およびｍ２とする。また、これらの色をｃｌとする。尚、後述する工程（ステップＳ３８６）から戻って実行される場合には、Ｐ１およびＰ２は、この工程が実行されて以来、未選択な組合せになるように選択される。ここで、図１３（ｄ）は、探索行ｎ１およびｎ２上の各画素の色情報の並びを示す。ここで、背景画像１２０の色は０を示し、直線画像１１４や文字画像１１８は、それぞれの色を示す０以外の数値を示す。この色情報の並びに基いて、代表符号のＰ１とＰ２とを選択できる。
【００４７】
続いて、選択されたＰ１とＰ２とを結ぶ線分が、入力画像１１０の中で成す角度を算出するべく、Ｐ１からＰ２に向かう線分の傾きａを計算する（ステップＳ３７４）。この傾きａは、以下のように計算される。尚、計算された傾きａは、図１３（ｃ）に示すように、Ｐ１とＰ２とが横方向（Ｘ方向）に探索するラインと成す角度Ｄｅｇ１の正接関数（ｔａｎ）の値を示す。
ａ＝（ｍ２−ｍ１）÷（ｎ２−ｎ１）
【００４８】
次に、傾きａが−１と１との間に入っているか、否かを判定する（ステップＳ３７６）。これは、言い換えると、Ｐ１とＰ２とを結ぶ線分が成す角度が−４５度から＋４５度の範囲に入っているか、否かを調べることを意味する。ここで、傾きａが−１と１との間に入っている場合（ステップＳ３７６でＹｅｓ）、次の工程（ステップＳ３７８）に進む。また、傾きａが−１と１との間に入っていない場合（ステップＳ３７６でＮｏ）、このＰ１とＰ２の組合せをヒストグラムに反映させることなく、全ての代表符号の組合せを選択したか、否かを判定する工程（ステップＳ３８６）に進む。
【００４９】
次に、Ｐ１とＰ２の線分上での画素割合ＬＰを縦方向探索により計算する（ステップＳ３７８）。尚、この工程の詳細は、後述する。
【００５０】
次に、算出された画素割合ＬＰは、画素割合の最小値ＬＰＭｉｎ以上であるか、否かを判定する（ステップＳ３８０）。ここで、画素割合ＬＰは、画素割合の最小値ＬＰＭｉｎ以上である場合（ステップＳ３８０でＹｅｓ）、次の工程（ステップＳ３８２）に進む。また、画素割合ＬＰは、画素割合の最小値ＬＰＭｉｎよりも小さい場合（ステップＳ３８０でＮｏ）、全ての代表符号の組合せを選択したか、否かを判定する工程（ステップＳ３８６）に進む。
【００５１】
ここで、最小値ＬＰＭｉｎを適切に設定することで、種々の線分を抽出できる。例えば、最小値ＬＰＭｉｎを１に設定すると、２つの代表符号（Ｐ１，Ｐ２）間を、ｃｌと同一色である画素で辿れる線分のみを抽出する。また、この最小値ＬＰＭｉｎを０．５近傍に設定すると、２つの代表符号（Ｐ１，Ｐ２）間を、略同じ数のｃｌと同一色である画素と、ｃｌと異なる画素とで辿れる線分、例えば、点線のような線分を抽出する。
【００５２】
次に、Ｐ１およびＰ２間の線分の長さＬＬと傾きＬＤとを計算する（ステップＳ３８２）。これらは、以下のように計算される。
ＬＬ＝ＳＱＲＴ（（ｍ２−ｍ１）×（ｍ２−ｍ１）＋（ｎ２−ｎ１）×（ｎ２−ｎ１））
ＬＤ＝ａｒｃｔａｎ（ａ）
ここで、ＳＱＲＴ（）は、平方根を求める関数を示し、ａｒｃｔａｎ（）は、正接関数の逆関数を示す。
【００５３】
続いて、検出された線分の色ｃｌに対応する傾きヒストグラムに対して、傾きＬＤの度数にＬＬを加算する（ステップＳ３８４）。この場合、簡易的な方法として、Ｐ１およびＰ２間の線分の長さＬＬの代わりに、前記した乱数により異なる探索行の間隔を傾きＬＤの度数に追加することで、ＬＬの計算を省くこともできる。
【００５４】
次に、全ての代表符号の組合せを選択したか、否かを判定する（ステップＳ３８６）。ここで、全ての代表符号の組合せを選択した場合（ステップＳ３８６でＹｅｓ）、次の工程（ステップＳ３８８）に進む。また、全ての代表符号の組合せを選択していない場合（ステップＳ３８６でＮｏ）、代表符号Ｐ１とＰ２とを選択して、Ｐ１からＰ２に向かう線分の傾きａを計算する工程（ステップＳ３７２）に戻る。
【００５５】
次に、全ての探索行の組合せを選択したか、否かを判定する（ステップＳ３８８）。ここで、全ての探索行の組合せを選択した場合（ステップＳ３８８でＹｅｓ）、一連の処理を終了して、この処理の呼び出し元に戻る。また、全ての探索行の組合せを選択していない場合（ステップＳ３８８でＮｏ）、探索行リストの中から隣接する探索行ｎ１およびｎ２を選択する工程（ステップＳ３７０）に戻る。
【００５６】
図６は、Ｐ１とＰ２の線分上での画素割合ＬＰを縦方向探索により計算する工程（ステップＳ３７８）の詳細を示すフローチャートである。尚、この工程での処理の理解を容易にするべく、図１３（ｃ）と（ｄ）に加えて、（ｅ）も参照して説明する。この処理が呼び出されて実行されると、最初に、直線の探索行ｙと、画素数ｐｎを初期化する工程（ステップＳ３５０）が実行される。ここで、探索行ｙは初期値ｎ１が選択される（ｙ＝ｎ１）と共に、画素数ｐｎは初期値０が選択される（ｐｎ＝０）。
【００５７】
次に、直線の探索列ｘを計算する（ステップＳ３５４）。ここでは、Ｐ１からＰ２に向かう直線の傾きａを用いて、以下のように計算される。
ｘ＝ｍ１＋ａ×（ｙ−ｎ１）
【００５８】
次に、探索列ｘおよび探索行ｙで特定される位置の画素の色が、ｃｌと同一色であるか、否かを判定する（ステップＳ３５６）。ここで、探索列ｘおよび探索行ｙで特定される位置の画素の色が、ｃｌと同一色である場合（ステップＳ３５６でＹｅｓ）、次の工程（ステップＳ３５８）に進む。また、探索列ｘおよび探索行ｙで特定される位置の画素の色が、ｃｌと同一色でない場合（ステップＳ３５６でＮｏ）、次の工程（ステップＳ３５８）を実行することなく、更に次の工程（ステップＳ３６０）に進む。
【００５９】
次に、画素数ｐｎの値に１画素を加える（ステップＳ３５８）。
【００６０】
次に、探索行ｙが代表符号Ｐ２のＹ座標と同一か、否かを判定する（ステップＳ３６０）。ここで、探索行ｙが代表符号Ｐ２のＹ座標と同一である場合（ステップＳ３６０でＹｅｓ）、次の工程（ステップＳ３６４）に進む。また、探索行ｙが代表符号Ｐ２のＹ座標と同一でない場合（ステップＳ３６０でＮｏ）、探索行ｙを次の行にセットして（ステップＳ３６２）、直線の探索列ｘを計算する工程（ステップＳ３５４）に戻る。
【００６１】
最後に、Ｐ１とＰ２の線分上の画素割合ＬＰを計算して（ステップＳ３６４）、一連の処理を終了し、この処理の呼び出し元に戻る。ここで、画素割合ＬＰは、前記工程で求めた画素数ｐｎを、代表符号Ｐ１およびＰ２間のＹ方向の長さで除することにより、以下のように計算される。
ＬＰ＝ｐｎ÷（ｎ２−ｎ１）
【００６２】
ここで、図１３（ｃ）において、Ｐ１およびＰ２から成る直線ベクトルＶ１０と、Ｐ１およびＰ３から成る直線ベクトルＶ２０とを想定する。図１３（ｅ）は、Ｖ１０およびＶ２０を上記した工程に従い抽出した画素の色情報の並びを示す。Ｖ１０のように、画素を抽出する軌跡が、直線画像１１４と大部分が重なる場合、画素の色情報は、信号成分である直線画像１１４の色情報でほぼ占有される。他方で、Ｖ２０のように、画素を抽出する軌跡が、背景成分である背景画像１２０と多く重なる場合、画素の色情報は、背景画像１２０の色情報が多く出現する。このようなＶ１０とＶ２０に対して、画素割合ＬＰを算出すると、直線ベクトルＶの長さに比例して、これらの違いが明確化する。
【００６３】
図７は、縦方向（Ｙ方向）の探索による傾きヒスグラムの作成工程（ステップＳ２０）の詳細を示すフローチャートである。尚、縦方向（Ｙ方向）の探索は、前記した横方向（Ｘ方向）の探索と探索方向が異なるだけで、それ以外は同一な処理であるため、各図面の説明に留め、各工程の説明は略す。即ち、図８は、設定した探索行ｍに対する直線候補位置リストを作成する工程（ステップＳ２３）の詳細を示すフローチャートである。また、図９は、探索列リストから傾きヒストグラムを作成する工程（ステップＳ２７）の詳細を示すフローチャートである。更に、図１０は、Ｐ１とＰ２の線分上での画素割合ＬＰを横方向探索により計算する工程（ステップＳ２７８）の詳細を示すフローチャートである。
【００６４】
図１１は、背景色ＣＬｂａｃｋを計算する工程（ステップＳ５０）の詳細を示すフローチャートである。この処理が呼び出されて実行されると、最初に、探索行ｙを、画像の先頭行（ｙ＝１）に初期化する工程（ステップＳ５１）が実行される。
【００６５】
次に、行毎の探索列ｘを、行の先頭位置（ｘ＝１）に初期化する（ステップＳ５２）。
【００６６】
続いて、探索列ｘおよび探索行ｙで特定される位置の画素の色を抽出して、色の出現数を保存する色リストに登録し、その出現数を１にする（ステップＳ５３）。ここで、既に登録されている場合は、対応する色の出現数を１つ増加する。
【００６７】
次に、探索列ｘと、入力画像１１０の幅ｗとが等しいか、否かを判定する（ステップＳ５４）。ここで、探索列ｘと、入力画像１１０の幅ｗとが等しい場合（ステップＳ５４でＹｅｓ）、次の工程（ステップＳ５６）に進む。また、探索列ｘと、入力画像１１０の幅ｗとが異なる場合（ステップＳ５４でＮｏ）、探索列ｘを１つ増加して（ステップＳ５５）、探索列ｘおよび探索行ｙで特定される位置の画素の色を抽出して、色の出現数を保存する色リストに登録し、その出現数を１にする工程（ステップＳ５３）に戻る。
【００６８】
次に、探索行ｙと、入力画像１１０の高さｈとが等しいか、否かを判定する（ステップＳ５６）。ここで、探索行ｙと、入力画像１１０の高さｈとが等しい場合（ステップＳ５６でＹｅｓ）、次の工程（ステップＳ５８）に進む。また、探索行ｙと、入力画像１１０の高さｈとが異なる場合（ステップＳ５６でＮｏ）、探索行ｙを１つ増加して（ステップＳ５７）、行毎の探索列ｘを、行の先頭位置（ｘ＝１）に初期化する工程（ステップＳ５２）に戻る。
【００６９】
最後に、色リストの中で、最も出現数の多い色を背景色ＣＬｂａｃｋに設定し（ステップＳ５８）、一連の処理を終了し、この処理の呼び出し元に戻る。
【００７０】
図１２は、抽出した線分が成す角度のデータを統計処理することにより、入力画像１１０の傾きＷＤｅｇを計算する工程（ステップＳ８０）の詳細を示すフローチャートである。この処理が呼び出されて実行されると、最初に、傾きヒストグラムにおいて、度数が最大となる階級を選択する工程（ステップＳ８１）が実行される。ここで、度数が最大な階級をＶとし、その角度をＤｅｇ、度数をＦとする。
【００７１】
次に、ヒストグラム探索用に、各値を初期化する（ステップＳ８２）。即ち、ヒストグラム探索用の階級Ｖ１にＶを設定し、度数の累積値ＦＳｕｍ、および度数と角度の積の累積値ＦＰＳｕｍに対して０を設定する。
【００７２】
次に、各累積値を計算する（ステップＳ８３）。ここで、階級Ｖ１の角度をＤｅｇ１、度数をＦ１とすると、各累積値は以下のように計算される。
ＦＳｕｍ＝ＦＳｕｍ＋Ｆ１
ＦＰＳｕｍ＝ＦＰＳｕｍ＋Ｄｅｇ１×Ｆ１
【００７３】
次に、Ｖ１の１つ前の階級の度数が０、またはＦ１よりも大きいか、否かを判定する（ステップＳ８４）。ここで、Ｖ１の１つ前の階級の度数が０、またはＦ１よりも大きい場合（ステップＳ８４でＹｅｓ）、次の工程（ステップＳ８６）に進む。また、Ｖ１の１つ前の階級の度数が０でもなく、かつＦ１よりも大きくない場合（ステップＳ８４でＮｏ）、Ｖ１を１つ前の階級に更新して（ステップＳ８５）、各累積値を計算する工程（ステップＳ８３）に戻る。
【００７４】
次に、ヒストグラム探索用の階級Ｖ１にＶを設定する（ステップＳ８６）。
【００７５】
次に、Ｖ１の１つ後の階級の度数が０、またはＦ１よりも大きいか、否かを判定する（ステップＳ８７）。ここで、Ｖ１の１つ後の階級の度数が０、またはＦ１よりも大きい場合（ステップＳ８７でＹｅｓ）、次の工程（ステップＳ９０）に進む。また、Ｖ１の１つ後の階級の度数が０でもなく、かつＦ１よりも大きくない場合（ステップＳ８７でＮｏ）、Ｖ１を１つ後の階級に更新して（ステップＳ８８）、各累積値を計算する（ステップＳ８９）。その後、Ｖ１の１つ後の階級の度数が０、またはＦ１よりも大きいか、否かを判定する工程（ステップＳ８７）に戻る。
【００７６】
次に、全体の傾き角度ＷＤｅｇを以下のように計算して、一連の処理を終了し、この処理の呼び出し元に戻る（ステップＳ９０）。
ＷＤｅｇ＝ＦＰＳｕｍ÷ＦＳｕｍ
【００７７】
このようにして、ヒストグラム度数の増減の変化から一定の幅を有する領域を規定し、この領域において度数分布の面積中心を求めることにより、ヒストグラムの頂点に対応する角度を精度良く求めることができる。
【００７８】
以上、本発明を図示した実施形態に基いて説明したが、本発明は、本実施形態に限定されるものではなく、以下に述べるような変形例も想定できる。
（１）連続する符号列を画素の色の変化により検出したが、画素の色に限定されるものではなく、例えば、カラー画像の場合は、画素の輝度の変化により検出しても良い。
（２）画像入力手段は、スキャナ１０２に限定されず、例えばエリアセンサを有する機器から取得されても良い。また、入力画像１１０は、画像データから形成されることに限定されず、例えばプリンタのような印刷手段から出力された印刷データから形成されても良い。更に、入力画像１１０を形成するデータは、ネットワークやメディア等を介して入力されても良い。
【図面の簡単な説明】
【００７９】
【図１】（ａ）は、本発明の実施形態に係る画像傾き検出装置の外観を示し、（ｂ）は、モニタに表示された文書画像を示す図。
【図２】本発明の実施形態に係る画像傾き検出の処理を示すフローチャート。
【図３】横方向の探索により、直線部の傾き角度を示すヒスグラムの作成工程を示すフローチャート。
【図４】設定した探索行に対する直線候補位置リストの作成工程を示すフローチャート。
【図５】探索行リストから直線部の傾きを示すヒストグラムの作成工程を示すフローチャート。
【図６】縦方向探索により線分上での画素割合を計算する工程を示すフローチャート。
【図７】縦方向の探索により、直線部の傾き角度を示すヒスグラムの作成工程を示すフローチャート。
【図８】設定した探索列に対する直線候補位置リストの作成工程を示すフローチャート。
【図９】探索列リストから直線部の傾きを示すヒストグラムの作成工程を示すフローチャート。
【図１０】横方向探索により線分上での画素割合を計算する工程を示すフローチャート。
【図１１】背景色を計算する工程を示すフローチャート。
【図１２】傾きヒストグラムから入力画像の傾きを計算する工程を示すフローチャート。
【図１３】（ｃ）は、入力画像の所定の領域の拡大を示し、（ｄ）は、探索行上の各画素の色情報の並びを示し、（ｅ）は、直線ベクトルを抽出した画素の色情報の並びを示す図。
【符号の説明】
【００８０】
１００…検出装置、１０２…スキャナ、１０４…コンピュータ、１０５…モニタ、１０６…キーボード、１０７…マウス、１０８…ケーブル、１１０…入力画像、１１２…文書画像、１１４…直線画像、１１８…文字画像、１２０…背景画像。
【図１】
0004692109.tif 000002
【図２】
0004692109.tif 000003
【図３】
0004692109.tif 000004
【図４】
0004692109.tif 000005
【図５】
0004692109.tif 000006
【図６】
0004692109.tif 000007
【図７】
0004692109.tif 000008
【図８】
0004692109.tif 000009
【図９】
0004692109.tif 000010
【図１０】
0004692109.tif 000011
【図１１】
0004692109.tif 000012
【図１２】
0004692109.tif 000013
【図１３】
0004692109.tif 000014