(57)【要約】【課題】原稿画像データにおける原稿の傾き角度を原稿のフォーマットにかかわらず容易に判定する。【解決手段】予め設定された互いに長さが異なる複数種類のベースラインを行方向に沿って所定画素ずつ移動させ、原稿画像データの各行および各列における最も外側のエッジのうち上記各ベースラインに直交する列上に存在するエッジであって当該各ベースラインとの距離が最も短いエッジと上記各ベースラインとの距離であるデルタ値をベースライン毎かつ上記各ベースラインを上記所定画素ずつ移動させる毎に算出するデルタ値算出部９０と、上記デルタ値のヒストグラムを上記ベースライン毎に生成するデルタ値ヒストグラム生成部９２と、上記各ベースラインに対応する上記ヒストグラムのピーク値を算出するモード検出部９４と、算出した上記ピーク値に基づいて原稿の傾き角度を算出する回転ベクトル算出部９６とを備える。【選択図】図６
2011199871.tif 000002
【特許請求の範囲】
【請求項１】
原稿を読み取って取得した原稿画像データにおける原稿の正規位置に対する傾き角度を判定する原稿傾き判定装置であって、
上記原稿画像データは、行方向および列方向にマトリクス状に配列された複数の画素のデータからなり、
上記原稿画像データにおける、列方向に延伸する垂直エッジおよび行方向に延伸する水平エッジを検出するエッジ検出部と、
上記エッジ検出部の検出結果に基づいて、上記原稿画像データの各行における最も左に位置する垂直エッジを当該各行における左エッジとして検出し、上記各行における最も右に位置する垂直エッジを当該各行における右エッジとして検出し、上記原稿画像データの各列における最も上に位置する水平エッジを当該各列における上エッジとして検出し、上記各列における最も下に位置する水平エッジを当該各列における下エッジとして検出し、上記原稿画像データの各画素または上記原稿画像データにおける互いに重複しない複数の画素群が上記左エッジ、上記右エッジ、上記上エッジ、上記下エッジ、および非エッジのいずれであるかを示すエッジデータを生成するエッジデータ生成部と、
互いに異なる長さで行方向に延伸する複数のベースラインを上記各行において行方向に沿って所定画素ずつ移動させたときの、当該各ベースラインにおける移動方向の端部と、当該端部を通り当該各ベースラインの延伸方向に直交する列上に存在する上エッジまたは下エッジのうち当該端部から最も近いエッジとの距離であるデルタ値、および、互いに異なる長さで列方向に延伸する複数のベースラインを上記各列において列方向に沿って所定画素ずつ移動させたときの、当該各ベースラインにおける移動方向の端部と、当該端部を通り当該各ベースラインの延伸方向に直交する行上に存在する左エッジまたは右エッジのうち当該端部から最も近いエッジとの距離であるデルタ値を、ベースライン毎かつ上記各ベースラインを上記所定画素ずつ移動させる毎に算出するデルタ値算出部と、
上記デルタ値のヒストグラムを上記ベースライン毎に生成するヒストグラム生成部と、
上記各ベースラインに対応する上記ヒストグラムのピーク値を算出するピーク値算出部と、
上記ピーク値算出部の算出した上記ピーク値に基づいて上記傾き角度を算出する傾き角度算出部とを備え、
上記ピーク値算出部は、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応するヒストグラムのピーク値を算出し、２番目以降のベースラインに対応するヒストグラムのピーク値を算出する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出したピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムのピーク値を算出し、
上記傾き角度算出部は、長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて上記傾き角度を算出することを特徴とする原稿傾き判定装置。
【請求項２】
上記エッジデータ生成部は、
上記原稿画像データを行方向ｋ画素（ｋは２以上の整数）×列方向１画素のサイズからなる互いに重複しない複数の水平片に分割し、当該各水平片に含まれる各画素の画素値の平均値を当該水平片の集約尺度として算出し、上記各水平片と当該各水平片の集約尺度とを対応付けた水平片データを生成する水平片エッジ集約尺度算出部と、
上記原稿画像データを行方向１画素×列方向ｋ画素のサイズからなる互いに重複しない複数の垂直片に分割し、当該各垂直片に含まれる各画素の画素値の平均値を当該垂直片の集約尺度として算出し、上記各垂直片と当該各垂直片の集約尺度とを対応付けた垂直片データを生成する垂直片エッジ集約尺度算出部と、
上記水平片データに基づいて水平エッジデータを生成する水平エッジ検出部と、
上記垂直片データに基づいて垂直エッジデータを生成する垂直エッジ検出部とを備え、
上記水平エッジデータおよび上記垂直エッジデータからなる上記エッジデータを生成し、
上記水平エッジ検出部は、
上記水平エッジデータと畳み込み行列式［−１，１］Ｔとの畳み込み演算を行い、この畳み込み演算によって算出される値に対応する回転角度の絶対値が予め設定される水平データ閾値よりも大きい水平片の値をエッジであることを示す値、その他の水平片の値を非エッジであることを示す値にすることで上記水平エッジデータを生成し、
上記垂直エッジ検出部は、
上記垂直エッジデータと畳み込み行列式［−１，１］との畳み込み演算を行い、この畳込み演算によって算出される値に対応する回転角度の絶対値が予め設定される垂直データ閾値よりも大きい垂直片の値をエッジであることを示す値、その他の垂直片の値を非エッジであることを示す値にすることで上記垂直エッジデータを生成することを特徴とする請求項１に記載の原稿傾き判定装置。
【請求項３】
上記エッジデータ生成部は、上記エッジデータを生成した後、当該エッジデータの生成に用いた原稿画像データにおける上記左エッジ、上記右エッジ、上記上エッジ、および上記下エッジを非エッジに置換した原稿画像データに基づいてエッジデータを生成することにより、複数層のエッジデータを生成し、
上記デルタ値算出部は上記各層のエッジデータに基づいて層毎に上記デルタ値を算出し、
上記ヒストグラム生成部は上記各層について上記デルタ値のヒストグラムを生成し、
上記ピーク値算出部は上記各層についてヒストグラムのピーク値を算出し、
上記傾き角度算出部は、上記各層について長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて傾き角度候補を算出し、上記各層について算出した傾き角度候補のうちの１つを上記傾き角度として選択することを特徴とする請求項１または２に記載の原稿傾き判定装置。
【請求項４】
上記エッジデータ生成部は、
上記エッジ検出部の検出結果に基づいて、各行の垂直エッジのうち最も左に位置する垂直エッジを示す列番号のリストである左リスト、および各行の垂直エッジのうち最も右に位置するエッジを示す列番号のリストである右リストを生成する垂直エッジリスト生成部と、
上記エッジ検出部の検出結果に基づいて、各列の水平エッジのうち最も上に位置する水平エッジを示す行番号のリストである上リスト、および各列の水平エッジのうち最も下に位置する水平エッジを示す行番号のリストである下リストを生成する水平エッジリスト生成部とを備え、
上記デルタ値算出部は、上記左リスト、上記右リスト、上記上リスト、および上記下リストを用いて上記デルタ値を算出することを特徴とする請求項１から３のいずれか１項に記載の原稿傾き判定装置。
【請求項５】
上記ヒストグラム生成部は、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応するヒストグラムを生成し、２番目以降のベースラインに対応するヒストグラムを生成する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出したピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムを生成し、上記所定範囲外のデルタ値についてはヒストグラムを生成しないことを特徴とする請求項１から４のいずれか１項に記載の原稿傾き判定装置。
【請求項６】
上記原稿画像データの解像度を所定の解像度に変換する解像度変換処理を行う解像度変換部と、
上記原稿画像データをカラー画像データからグレースケール画像データに変換する色変換処理を行う色変換部とを備え、
上記エッジ検出部は、上記解像度変換処理および上記色変換処理が施された後の原稿画像データに基づいて上記垂直エッジおよび上記水平エッジを検出することを特徴とする請求項１から５のいずれか１項に記載の原稿傾き判定装置。
【請求項７】
原稿を読み取って取得した原稿画像データにおける原稿の正規位置に対する傾き角度を判定する原稿傾き判定方法であって、
上記原稿画像データは、行方向および列方向にマトリクス状に配列された複数の画素のデータからなり、
上記原稿画像データにおける、列方向に延伸する垂直エッジおよび行方向に延伸する水平エッジを検出するエッジ検出工程と、
上記エッジ検出工程の検出結果に基づいて、上記原稿画像データの各行における最も左に位置する垂直エッジを当該各行における左エッジ、上記各行における最も右に位置する垂直エッジを当該各行における右エッジ、上記原稿画像データの各列における最も上に位置する水平エッジを当該各列における上エッジ、上記各列における最も下に位置する水平エッジを当該各列における下エッジとして検出し、上記原稿画像データの各画素または上記原稿画像データにおける互いに重複しない複数の画素群が上記左エッジ、上記右エッジ、上記上エッジ、上記下エッジ、および非エッジのいずれであるかを示すエッジデータを生成するエッジデータ生成工程と、
互いに異なる長さで行方向に延伸する複数のベースラインを上記各行において行方向に沿って所定画素ずつ移動させたときの、当該各ベースラインにおける移動方向の端部と、当該端部を通り当該各ベースラインの延伸方向に直交する列上に存在する上エッジまたは下エッジのうち当該端部から最も近いエッジとの距離であるデルタ値、および、互いに異なる長さで列方向に延伸する複数のベースラインを上記各列において列方向に沿って所定画素ずつ移動させたときの、当該各ベースラインにおける移動方向の端部と、当該端部を通り当該各ベースラインの延伸方向に直交する行上に存在する左エッジまたは右エッジのうち当該端部から最も近いエッジとの距離であるデルタ値を、ベースライン毎かつ上記各ベースラインを上記所定画素ずつ移動させる毎に算出するデルタ値算出工程と、
上記デルタ値のヒストグラムを上記ベースライン毎に生成するヒストグラム生成工程と、
上記各ベースラインに対応する上記ヒストグラムのピーク値を算出するピーク値算出工程と、
上記ピーク値算出工程で算出した上記ピーク値に基づいて上記傾き角度を算出する傾き角度算出工程とを含みえ、
上記ピーク値算出工程では、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応するヒストグラムのピーク値を算出し、２番目以降のベースラインに対応するヒストグラムのピーク値を算出する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出したピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムのピーク値を算出し、
上記傾き角度算出工程では、長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて上記傾き角度を算出することを特徴とする原稿傾き判定方法。
【請求項８】
請求項１から６のいずれか１項に記載の原稿傾き判定装置を動作させるプログラムであって、コンピュータを上記各部として機能させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原稿画像データにおける原稿の傾きを判定する原稿傾き判定装置および原稿傾き判定方法に関するものである。
【背景技術】
【０００２】
原稿をスキャナの原稿載置台上に載置する際、原稿が正規の読取位置に対して斜めに置かれてしまう場合がある。この様な場合、読み取られた原稿ページ（原稿画像データ）において原稿の画像が傾いたり回転したりしてしまう。また、原稿が原稿レイアウト属性に応じた原稿画像データの画像境界線（例えばページ境界線）に対して傾いてしまう場合がある。このような原稿の傾きは、自動原稿供給装置を用いて原稿を読み取る場合にも起こり得る。
【０００３】
多くの理由により、原稿画像データにおける原稿傾き角度を正確に判定することが求められている。例えば、画像処理技術の中には正確な原稿の傾き角度を必要とするものがあり、原稿傾き角度の正確な判定が求められている。また、任意に載置された原稿を自動的に処理する機能を有する画像読取システムでは原稿の傾きおよび傾き角度を自動的に判定する技術が重要である場合がある。また、演算資源が制限されている装置では、原稿の傾きを効率よく判定することが求められている。
【０００４】
原稿の傾きを判定する技術として、例えば、特許文献１には、２値画像データに基づいて黒画素と白画素との境界点を複数個抽出し、各境界点の点列の座標データを求め、この点列座標から回帰直線を算出し、回帰係数に基づいて画像の傾きを求める技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１９２０８６号公報（平成７年７月２８日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術では、原稿における文書のフォーマットによっては正確な判定が困難な場合がある。また、原稿画像の傾きを判定する際、判定に用いるデータをユーザーが選択する必要があり、ユーザーにとって手間であるという問題もある。
【０００７】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、原稿画像データにおける原稿の傾き角度を、原稿のフォーマットにかかわらず容易に判定することのできる原稿傾き判定装置および原稿傾き判定方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の原稿傾き判定装置は、上記の課題を解決するために、原稿を読み取って取得した原稿画像データにおける原稿の正規位置に対する傾き角度を判定する原稿傾き判定装置であって、上記原稿画像データは、行方向および列方向にマトリクス状に配列された複数の画素のデータからなり、上記原稿画像データにおける、列方向に延伸する垂直エッジおよび行方向に延伸する水平エッジを検出するエッジ検出部と、上記エッジ検出部の検出結果に基づいて、上記原稿画像データの各行における最も左に位置する垂直エッジを当該各行における左エッジとして検出し、上記各行における最も右に位置する垂直エッジを当該各行における右エッジとして検出し、上記原稿画像データの各列における最も上に位置する水平エッジを当該各列における上エッジとして検出し、上記各列における最も下に位置する水平エッジを当該各列における下エッジとして検出し、上記原稿画像データの各画素または上記原稿画像データにおける互いに重複しない複数の画素群が上記左エッジ、上記右エッジ、上記上エッジ、上記下エッジ、および非エッジのいずれであるかを示すエッジデータを生成するエッジデータ生成部と、互いに異なる長さで行方向に延伸する複数のベースラインを上記各行において行方向に沿って所定画素ずつ移動させたときの、当該各ベースラインにおける移動方向の端部と、当該端部を通り当該各ベースラインの延伸方向に直交する列上に存在する上エッジまたは下エッジのうち当該端部から最も近いエッジとの距離であるデルタ値、および、互いに異なる長さで列方向に延伸する複数のベースラインを上記各列において列方向に沿って所定画素ずつ移動させたときの、当該各ベースラインにおける移動方向の端部と、当該端部を通り当該各ベースラインの延伸方向に直交する行上に存在する左エッジまたは右エッジのうち当該端部から最も近いエッジとの距離であるデルタ値を、ベースライン毎かつ上記各ベースラインを上記所定画素ずつ移動させる毎に算出するデルタ値算出部と、上記デルタ値のヒストグラムを上記ベースライン毎に生成するヒストグラム生成部と、上記各ベースラインに対応する上記ヒストグラムのピーク値を算出するピーク値算出部と、上記ピーク値算出部の算出した上記ピーク値に基づいて上記傾き角度を算出する傾き角度算出部とを備え、上記ピーク値算出部は、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応するヒストグラムのピーク値を算出し、２番目以降のベースラインに対応するヒストグラムのピーク値を算出する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出したピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムのピーク値を算出し、上記傾き角度算出部は、長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて上記傾き角度を算出することを特徴としている。
【０００９】
また、本発明の原稿傾き判定方法は、原稿を読み取って取得した原稿画像データにおける原稿の正規位置に対する傾き角度を判定する原稿傾き判定方法であって、上記原稿画像データは、行方向および列方向にマトリクス状に配列された複数の画素のデータからなり、上記原稿画像データにおける、列方向に延伸する垂直エッジおよび行方向に延伸する水平エッジを検出するエッジ検出工程と、上記エッジ検出工程の検出結果に基づいて、上記原稿画像データの各行における最も左に位置する垂直エッジを当該各行における左エッジ、上記各行における最も右に位置する垂直エッジを当該各行における右エッジ、上記原稿画像データの各列における最も上に位置する水平エッジを当該各列における上エッジ、上記各列における最も下に位置する水平エッジを当該各列における下エッジとして検出し、上記原稿画像データの各画素または上記原稿画像データにおける互いに重複しない複数の画素群が上記左エッジ、上記右エッジ、上記上エッジ、上記下エッジ、および非エッジのいずれであるかを示すエッジデータを生成するエッジデータ生成工程と、互いに異なる長さで行方向に延伸する複数のベースラインを上記各行において行方向に沿って所定画素ずつ移動させたときの、当該各ベースラインにおける移動方向の端部と、当該端部を通り当該各ベースラインの延伸方向に直交する列上に存在する上エッジまたは下エッジのうち当該端部から最も近いエッジとの距離であるデルタ値、および、互いに異なる長さで列方向に延伸する複数のベースラインを上記各列において列方向に沿って所定画素ずつ移動させたときの、当該各ベースラインにおける移動方向の端部と、当該端部を通り当該各ベースラインの延伸方向に直交する行上に存在する左エッジまたは右エッジのうち当該端部から最も近いエッジとの距離であるデルタ値を、ベースライン毎かつ上記各ベースラインを上記所定画素ずつ移動させる毎に算出するデルタ値算出工程と、上記デルタ値のヒストグラムを上記ベースライン毎に生成するヒストグラム生成工程と、上記各ベースラインに対応する上記ヒストグラムのピーク値を算出するピーク値算出工程と、上記ピーク値算出工程で算出した上記ピーク値に基づいて上記傾き角度を算出する傾き角度算出工程とを含みえ、上記ピーク値算出工程では、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応するヒストグラムのピーク値を算出し、２番目以降のベースラインに対応するヒストグラムのピーク値を算出する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出したピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムのピーク値を算出し、上記傾き角度算出工程では、長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて上記傾き角度を算出することを特徴としている。
【００１０】
上記原稿傾き判定装置および上記原稿傾き判定方法によれば、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応する上記ヒストグラムのピーク値を算出し、２番目以降のベースラインに対応するヒストグラムのピーク値を算出する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出されたピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムのピーク値を算出し、長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて上記傾き角度を算出する。
【００１１】
これにより、原稿画像データにおける原稿の傾き角度を、原稿のフォーマットにかかわらず容易に判定することができる。
【００１２】
また、傾き角度に対応するピーク値を長さの短いベースラインから順に順次絞り込んでいくことができるので、傾き角度を精度よく算出することができる。
【００１３】
また、２番目以降のベースラインについては上記所定範囲内のデルタ値のヒストグラムのピーク値を算出するだけでよいので、全てのデルタ値についてヒストグラムのピーク値を算出する場合に比べて演算量を低減し、処理速度を向上させることができる。
【００１４】
また、上記エッジデータ生成部は、上記原稿画像データを行方向ｋ画素（ｋは２以上の整数）×列方向１画素のサイズからなる互いに重複しない複数の水平片に分割し、当該各水平片に含まれる各画素の画素値の平均値を当該水平片の集約尺度として算出し、上記各水平片と当該各水平片の集約尺度とを対応付けた水平片データを生成する水平片エッジ集約尺度算出部と、上記原稿画像データを行方向１画素×列方向ｋ画素のサイズからなる互いに重複しない複数の垂直片に分割し、当該各垂直片に含まれる各画素の画素値の平均値を当該垂直片の集約尺度として算出し、上記各垂直片と当該各垂直片の集約尺度とを対応付けた垂直片データを生成する垂直片エッジ集約尺度算出部と、上記水平片データに基づいて水平エッジデータを生成する水平エッジ検出部と、上記垂直片データに基づいて垂直エッジデータを生成する垂直エッジ検出部とを備え、上記水平エッジデータおよび上記垂直エッジデータからなる上記エッジデータを生成し、上記水平エッジ検出部は、上記水平エッジデータと畳み込み行列式［−１，１］Ｔとの畳み込み演算を行い、この畳み込み演算によって算出される値に対応する回転角度の絶対値が予め設定される水平データ閾値よりも大きい水平片の値をエッジであることを示す値、その他の水平片の値を非エッジであることを示す値にすることで上記水平エッジデータを生成し、上記垂直エッジ検出部は、上記垂直エッジデータと畳み込み行列式［−１，１］との畳み込み演算を行い、この畳込み演算によって算出される値に対応する回転角度の絶対値が予め設定される垂直データ閾値よりも大きい垂直片の値をエッジであることを示す値、その他の垂直片の値を非エッジであることを示す値にすることで上記垂直エッジデータを生成する構成としてもよい。
【００１５】
上記の構成によれば、エッジ位置を水平片毎および垂直片毎に算出することにより、画素毎にエッジ位置を算出する場合に比べてノイズの影響を低減することができ、また演算量を低減して処理速度を向上させることができる。
【００１６】
また、上記エッジデータ生成部は、上記エッジデータを生成した後、当該エッジデータの生成に用いた原稿画像データにおける上記左エッジ、上記右エッジ、上記上エッジ、および上記下エッジを非エッジに置換した原稿画像データに基づいてエッジデータを生成することにより、複数層のエッジデータを生成し、上記デルタ値算出部は上記各層のエッジデータに基づいて層毎に上記デルタ値を算出し、上記ヒストグラム生成部は上記各層について上記デルタ値のヒストグラムを生成し、上記ピーク値算出部は上記各層についてヒストグラムのピーク値を算出し、上記傾き角度算出部は、上記各層について長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて傾き角度候補を算出し、上記各層について算出した傾き角度候補のうちの１つを上記傾き角度として選択する構成としてもよい。
【００１７】
上記の構成によれば、原稿画像データにおける最も外側のエッジに加えて、当該エッジよりも内側に存在するエッジを参照して傾き角度を算出できる。
【００１８】
また、上記エッジデータ生成部は、上記エッジ検出部の検出結果に基づいて、各行の垂直エッジのうち最も左に位置する垂直エッジを示す列番号のリストである左リスト、および各行の垂直エッジのうち最も右に位置するエッジを示す列番号のリストである右リストを生成する垂直エッジリスト生成部と、上記エッジ検出部の検出結果に基づいて、各列の水平エッジのうち最も上に位置する水平エッジを示す行番号のリストである上リスト、および各列の水平エッジのうち最も下に位置する水平エッジを示す行番号のリストである下リストを生成する水平エッジリスト生成部とを備え、上記デルタ値算出部は、上記左リスト、上記右リスト、上記上リスト、および上記下リストを用いて上記デルタ値を算出する構成としてもよい。
【００１９】
上記の構成によれば、上記リストを用いて上記デルタ値を算出することにより、デルタ値の算出処理を簡略化することができる。
【００２０】
また、上記ヒストグラム生成部は、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応する上記ヒストグラムを生成し、２番目以降のベースラインに対応するヒストグラムを生成する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出されたピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムを生成し、上記所定範囲外のデルタ値についてはヒストグラムを生成しない構成としてもよい。
【００２１】
上記の構成によれば、全てのデルタ値についてのヒストグラムを生成する場合に比べて、ヒストグラムの生成処理を簡略化することができる。
【００２２】
また、上記原稿画像データの解像度を所定の解像度に変換する解像度変換処理を行う解像度変換部と、上記原稿画像データをカラー画像データからグレースケール画像データに変換する色変換処理を行う色変換部とを備え、上記エッジ検出部は、上記解像度変換処理および上記色変換処理が施された後の原稿画像データに基づいて上記垂直エッジおよび上記水平エッジを検出する構成としてもよい。
【００２３】
上記の構成によれば、原稿傾き判定装置に備えられる各部が、当該各部の特性に応じた所定の解像度の原稿画像データに基づいて処理することができ、またグレースケール画像データに基づいて処理することができるので、処理速度を向上させることができる。
【００２４】
なお、上記原稿傾き判定装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記各部として動作させることにより、上記原稿傾き判定装置をコンピュータにて実現させるプログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に含まれる。
【発明の効果】
【００２５】
以上のように、本発明の原稿傾き判定装置および原稿傾き判定方法は、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応する上記ヒストグラムのピーク値を算出し、２番目以降のベースラインに対応するヒストグラムのピーク値を算出する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出されたピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムのピーク値を算出し、長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて上記傾き角度を算出する。
【００２６】
それゆえ、原稿画像データにおける原稿の傾き角度を、原稿のフォーマットにかかわらず容易に判定することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態にかかる原稿傾き判定装置の構成を示す説明図である。
【図２】図１の原稿傾き判定装置に備えられるエッジデータ生成部の構成を示す説明図である。
【図３】図２のエッジデータ生成部において行われる水平エッジデータ生成処理の概要を示す説明図である。
【図４】図２のエッジデータ生成部において行われる垂直エッジデータ生成処理の概要を示す説明図である。
【図５】図１の原稿傾き判定装置に備えられる層処理部の構成および層処理部におけるデータの流れを示す説明図である。
【図６】図５に示した層処理部に備えられるベースライン処理部の構成およびベースライン処理部におけるデータの流れを示す説明図である。
【図７】図６に示したベースライン処理部におけるデルタ値の算出方法を示す説明図である。
【図８】図６に示したベースライン処理部における折り畳み演算処理の方法を示す説明図である。
【図９】図１に示した原稿傾き判定装置の変形例を示す説明図である。
【図１０】図９に示した原稿傾き判定装置に備えられるヒストグラム生成部における処理を示す説明図である。
【図１１】図９に示した原稿傾き判定装置に備えられるヒストグラム生成部におけるヒストグラム生成処理を示す説明図である。
【図１２】図１１の処理におけるヒストグラムのビンと回転角との関係を示す説明図である。
【発明を実施するための形態】
【００２８】
本発明の一実施形態について、図面を参照しながら説明する。なお、図面全体を通して、同様の機能を有する部材には同じ符号を付している。
【００２９】
図１は本実施形態にかかる原稿傾き判定装置２の概略構成を示す説明図である。この図に示すように、原稿傾き判定装置２は、画像取得部４、画像前処理部（解像度変換部、色変換部）６、エッジデータ生成部８、層処理部１０、および回転評価部（傾き角度算出部）１２を備えている。なお、原稿傾き判定装置２は、例えば、スキャナ（画像読取装置）、多機能周辺機器（ＭＦＰ；multifunction peripheral、複合機）、コピー機などの画像処理装置に備えられるものであってもよく、他の画像処理装置に備えられるものであってもよい。また、原稿傾き判定装置２は、パーソナルコンピュータ等の演算装置内に備えられていてもよい。また、原稿傾き判定装置２の各部は、複数の装置（例えば近接配置された複数の装置、あるいは遠隔配置された複数の装置）に分散して配置されていてもよい。また、原稿傾き判定装置２は、コンピュータ読み取り可能なプログラム（あるいはそれを記録した記録媒体）と、当該プログラムに応じた処理を実行するコンピュータ装置とによって実現されるものであってもよい。
【００３０】
画像取得部４は、入力画像データ５を取得し、取得した入力画像データ５を画像前処理部６に出力する。
【００３１】
画像前処理部６は、入力画像データ５に正規化処理を行い、正規化処理後の画像データをエッジデータ生成部８に出力する。なお、画像取得部４が、正規化処理された入力画像データを取得してもよく、その場合には画像前処理部６が画像取得部４から入力される正規化処理後の入力画像データをそのままエッジデータ生成部８に出力するようにしてもよい。
【００３２】
具体的には、画像前処理部６は、解像度変換部（ダウンサンプラー）および色変換部を備えている（いずれも図示せず）。上記解像度変換部は、例えば、高解像度の入力画像データ（例えば３００ｄｐｉ（dots per inch））をより低い解像度（例えば７５ｄｐｉ）に解像度変換（ダウンサンプリング）する。入力画像データの解像度をダウンサンプリングすることにより、原稿傾き判定装置２の演算速度を向上させることができる。また、上記色変換部は、例えば、ダウンサンプリングされた画像データを、必要に応じて、グレースケールデータに変換する。例えば、上記色変換部は、ＲＧＢ（赤，緑，青）からなる入力画像データ５を従来から公知の変換方法を用いてＲＧＢからＹへ変換するものであってもよく、他の色空間の入力画像データをグレースケールに変換するものであってもよい。なお、グレースケール値の上限値を定めてもよい。また、グレースケール値の閾値を設定し、この閾値を超えるグレースケール値については上記閾値に設定するようにしてもよい。例えば、８ビットのグレースケール値の場合、上記閾値は、典型的には２３５に設定される。なお、まず入力画像データ５をグレースケールのデータに変換し、その後に解像度変換（ダウンサンプリング）を行うようにしてもよい。また、解像度変換および色変換は必須ではなく、省略してもよい。本実施形態では、解像度変換（ダウンサンプリング）および色変換が行われた入力画像データを入力画像データ５の正規化画像データ７と称する。
【００３３】
エッジデータ（エッジバッファ）生成部８は、画像前処理部６から入力される正規化された画像データに基づいて水平エッジデータ（水平エッジバッファ）および垂直エッジデータ（垂直エッジバッファ）からなるエッジデータ９を生成し、層処理部１０に出力する。
【００３４】
図２は、エッジデータ生成部８の構成を示す説明図である。この図に示すように、エッジデータ生成部８は、垂直片エッジ集約尺度算出部２０と水平片エッジ集約尺度算出部２４とを備えている。垂直片エッジ集約尺度算出部２０は、垂直片エッジ集約尺度（例えば垂直片に含まれる画素値の平均値）を算出し、その算出結果に基づいて垂直片エッジデータ（垂直片エッジバッファ）２１を生成して垂直エッジ検知部２２に出力する。水平片エッジ集約尺度算出部２４は、水平片エッジ集約尺度（例えば水平片に含まれる画素値の平均値）を算出し、その算出結果に基づいて水平片エッジデータ（水平片エッジバッファ）２５を生成して水平エッジ検知部２６に出力する。なお、水平片エッジとは水平方向に延伸する一片の帯状の領域（短冊領域）のエッジであり、垂直片エッジとは垂直方向に延伸する一片の帯状の領域（短冊領域）のエッジである。
【００３５】
図３は、水平片エッジ集約尺度算出部２４における水平片エッジデータの作成方法を示す説明図である。図３に示すように、水平片エッジ集約尺度算出部２４は、正規化画像データ３０を互いに重複しない１×ｋ個（ｋは２以上の整数）の画素からなるブロック（水平片、画素群）に分割する。図３では、分割されたブロックのうちの７個を符号３１〜３７で示している。また、水平片エッジ集約尺度算出部２４は、各水平片について当該水平片の集約尺度を算出する。また、水平片エッジ集約尺度算出部２４は、各水平片と当該各水平片に対応する集約尺度とを対応付けた水平片エッジデータ(水平片エッジバッファ)４０を生成して記憶する。例えば、図３に示すように、水平片３１〜３７は、当該水平片３１〜３７に対応する集約尺度と対応付けられたデータ４１〜４７として水平片エッジデータ(水平片エッジバッファ)４０に含められる。水平片の幅（上記ｋ）は、典型的には８画素、１６画素、あるいは３２画素に設定される。また、集約尺度としては、例えば水平片内の画素値の平均値が用いられる。
【００３６】
図４は、垂直片エッジ集約尺度算出部２０における垂直片エッジデータの作成方法を示す説明図である。図４に示すように、垂直片エッジ集約尺度算出部２０は、正規化画像データ３０を互いに重複しないｋ×１個の画素からなるブロック（垂直片、画素群）に分割する。図４では、分割されたブロックのうちの５個を符号５１〜５５で示している。また、垂直片エッジ集約尺度算出部２０は、各垂直片について当該垂直片の集約尺度を算出する。また、垂直片エッジ集約尺度算出部２０は、各垂直片と当該各垂直片に対応する集約尺度とを対応付けた垂直片エッジデータ(垂直片エッジバッファ)５０を生成して記憶する。例えば、図４に示すように、垂直片５１〜５５は、当該垂直片５１〜５５に対応する集約尺度と対応付けられたデータ５６〜６０として垂直片エッジデータ(垂直片エッジバッファ)５０に含められる。垂直片の高さ（上記ｋ）は、典型的には８画素、１６画素、あるいは３２画素に設定される。また、集約尺度としては、例えば垂直片内の画素値の平均値が用いられる。
【００３７】
図２に示したように、垂直片エッジ集約尺度算出部２０によって生成された垂直片エッジデータは垂直エッジ検出部２２に入力され、水平片エッジ集約尺度算出部２４によって生成された水平片エッジデータは水平エッジ検出部２６に入力される。垂直エッジ検出部２２および水平エッジ検出部２６は、例えば局所差分演算や閾値演算を行うものであってもよい。
【００３８】
垂直エッジ検出部２２は、垂直片エッジデータ２１に基づいて各垂直片がエッジであるか否かを示す垂直エッジデータ２３を生成する。また、水平エッジ検出部２６は、水平片エッジデータ２５に基づいて各水平片がエッジであるか否かを示す水平エッジデータ２７を生成する。
【００３９】
典型的には、垂直エッジ検出部２２は、以下の数式に基づいて算出されるＥＶｒ，ｃを垂直エッジデータ２３として算出する。また、水平エッジ検出部２６は、以下の数式に基づいて算出されるＥＨｒ，ｃを水平エッジデータ２７として算出する。
【００４０】
【数１】
2011199871.tif 000003
【００４１】
【数２】
2011199871.tif 000004
【００４２】
ここで、ＢＶｒ，ｃは垂直片エッジデータを示しており、ＢＨｒ，ｃはおよび水平片エッジデータを示している。また、ｒ，ｃは、水平片エッジデータ、水平エッジデータ、垂直片エッジデータ、および垂直エッジデータにおける行および列の位置を示している。また、ＤＶは垂直畳み込み行列式［−１，１］を示しており、ＤＨは水平畳み込み行列式［−１，１］Ｔを示している。また、θＶは予め設定される垂直バッファ閾値を示しており、θＨは予め設定される水平バッファ閾値を示している。また、＊は畳み込み演算を示している。なお、θＶ＝θＨであってもよい。本実施形態ではθＶ＝θＨ＝３としている。
【００４３】
層処理部１０は、エッジデータ９（垂直エッジデータおよび水平エッジデータ）に基づいて、後述する各層（１または複数の層）のエッジデータについてそれぞれ回転ベクトル（回転ベクトル推定値）１１を算出し、算出した回転ベクトル群（各層についての回転ベクトル１１のグループ）を回転評価部１２に出力する。
【００４４】
回転評価部１２は、層処理部１０から入力された少なくとも１つの層に関連付けられた１または複数の回転ベクトル１１の中から、１つの回転ベクトル（回転ベクトル推定値）１３を選択する。また、回転評価部１２は、選択した回転ベクトル１３を原稿傾き判定装置２あるいは他の装置における更なる処理を行う処理部（図示せず）に出力する。
【００４５】
なお、上記回転ベクトルは傾き角度の特性を示すものである。本実施形態では、回転ベクトルとして、ベースライン値（ベースラインの長さ）βと後述するデルタ値Δとを用いて定義される回転ベクトル（傾き角度）θ＝ａｒｃｔａｎ（Δ／β）を用いる。
【００４６】
図１に示したように、層処理部１０は、少なくとも１つの層について回転ベクトル１１を算出する。垂直エッジデータ（垂直エッジバッファ）の第１の層は、各行を左から走査したときに初めに検出されるゼロでないエントリー（エッジ）の位置（左エッジ）、および各行を右から走査したときに初めに検出されるゼロでないエントリー（エッジ）の位置（右エッジ）である。エッジが含まれない行に対して当該行がエッジを含まない行であることを示す非エッジマーカーを関連付けてもよい。水平エッジデータ（水平エッジバッファ）の第１の層は、各列を上から走査したときに初めに検出されるゼロでないエントリー（エッジ）の位置（上エッジ）、および各列を下から走査したときに初めに検出されるゼロでないエントリー（エッジ）の位置（下エッジ）である。エッジが含まれない列に対して当該列がエッジを含まない列であることを示す非エッジマーカーを関連付けてもよい。したがって、上記第１の層は、画像座標を規定する２つの直交方向（垂直方向および水平方向）についての最も外側のエッジ、すなわち上端エッジ（上エッジ）、下端エッジ（下エッジ）、左端エッジ（左エッジ）、および右端エッジ（右エッジ）とみなすことができる。
【００４７】
２層目以降の層は、その前の層に対応する全ての左エッジ、右エッジ、上エッジ、および下エッジををゼロ（非エッジ）に置換することによって決定される。
【００４８】
図５は、層処理部１０の典型的な構成例を示す説明図である。この図に示すように、層処理部１０は、垂直左右エッジ検出部（垂直立上り立下りエッジ検出部、エッジ検出部）７２、垂直エッジリスト生成部（エッジデータ生成部）７４、水平上下エッジ検出部（水平立上り立下りエッジ検出部、エッジ検出部）７６、水平エッジリスト生成部（エッジデータ生成部）７８、ベースライン処理部８０、垂直層更新部８４、水平層更新部８６、および回転ベクトル選択部（傾き角度算出部）８２を備えている。
【００４９】
垂直左右エッジ検出部７２には、Λ＝［λ１，λ２，…，λＭ］で示される層セット内におけるＭ個（Ｍは１以上の整数）の層λｉの各層について、現在の層（現在の処理対象とする層）に対応する垂直エッジデータ７０が入力される。また、水平上下エッジ検出部７６には、現在の層（現在の処理対象とする層）に対応する水平エッジデータ７１が入力される。なお、垂直立上りエッジおよび垂直立下りエッジは、それぞれ左エッジおよび右エッジに対応しており、水平立上りエッジおよび水平立下りエッジは、それぞれ上エッジおよび下エッジに対応している。
【００５０】
垂直左右エッジ検出部７２は、現在の層の垂直エッジデータ７０における各行を行毎に左から右および右から左の各方向に走査することにより、当該現在の層の垂直エッジデータ７０における立上りエッジ（左エッジ）および立下りエッジ（右エッジ）のエッジ位置７３を検出する。水平上下エッジ検出部７６は、現在の層の水平エッジデータ７１における各列を列毎に上から下および下から上の各方向に走査することにより、当該現在の層の水平エッジデータ７１における立上りエッジ（上エッジ）および立下りエッジ（下エッジ）のエッジ位置７７を検出する。また、垂直左右エッジ検出部７２は検出したエッジ位置７３を垂直エッジリスト生成部７４および垂直層更新部８４に出力し、水平上下エッジ検出部７６は検出したエッジ位置７７を水平エッジリスト生成部７８および水平層更新部８６に出力する。
【００５１】
典型的な層セットは、Λ１＝［１］、Λ２＝［１，３］、および、Λ３＝［１，３，５］を含む。
【００５２】
垂直エッジリスト生成部７４は、左リストおよび右リストを含むエッジリスト７５を生成してベースライン処理部８０に出力する。左リストは各行を左から走査したときに最初に出現するエッジの列番号（行内にエッジが存在しない場合には無効エッジ番号）を示したリストであり、右リストは各行を右から走査したときに最初に出現するエッジの列番号（行内にエッジが存在しない場合には無効エッジ番号）を示したリストである。
【００５３】
水平エッジリスト生成部７８は、上リストおよび下リストを含むエッジリスト７９を生成してベースライン処理部８０に出力する。上リストは各列を上から走査したときに最初に出現するエッジの行番号（列内にエッジが存在しない場合には無効エッジ番号）を示したリストであり、下リストは各列を下から走査したときに最初に出現するエッジの行番号（列内にエッジが存在しない場合には無効エッジ番号）を示したリストである。
【００５４】
ベースライン処理部８０は、Ｂ＝［β１，β２，…，βＮ］で示されるベースラインセットＢに含まれる各ベースラインβｉについて、回転角度候補を算出して回転ベクトル選択部８２に出力する。典型的なベースラインセットＢはＢ＝［３２，６４，１２８，２５６，５１２，５７６］、すなわちβ１＝３２画素、β２＝６４画素、β３＝１２８画素、β４＝２５６画素、β５＝５１２画素、β６＝５７６画素であり、この場合、傾き角度を０．１°程度の精度で検出できる。なお、各ベースラインの長さを水平片の長さ（上記ｋ）の整数倍に設定してもよい。
【００５５】
図６は、ベースライン処理部８０の構成を示す説明図である。この図に示すように、ベースライン処理部８０は、デルタ値算出部９０、デルタ値ヒストグラム生成部（ヒストグラム生成部）９２、モード検出部（ピーク値算出部）９４、回転ベクトル算出部（傾き角度算出部）９６、および絞込範囲算出部９８を備えている。
【００５６】
デルタ値算出部（制限デルタ値算出部）９０には、現在の層の垂直エッジリスト７５（左リストおよび右リスト）、現在の層の水平エッジリスト７９（上リストおよび下リスト）、および現在のベースライン８８が入力される。
【００５７】
デルタ値算出部９０は、現在の立上がり−立下がりの組み合わせについての制限されたデルタ値９１を算出する。「制限された」という用語は、角度推定値が区間［−４５°，４５°］の範囲内に制限されることを示している。ベースラインは回転角に関連付けられた正接ベクトルのｘ成分と考えられ、算出されたデルタ値はこの正接ベクトルのｙ成分と考えられる。デルタ値は局所的なベースラインからの局所的な変位であってもよい。デルタ値算出部９０は、現在のベースライン値を用いて、各エッジリスト（左エッジリスト（左リスト）、右エッジリスト（右リスト）、上エッジリスト（上リスト）、および下エッジリスト（下リスト））をそれぞれ当該ベースラインの延伸方向（例えば水平方向）に１画素ずつ（あるいは所定画素ずつ（例えば水平片の長さ（上記ｋ）に相当する画素ずつ））走査する。非無効エッジ座標（有効エッジ）に遭遇すると、エッジリストにおける現在のベースラインのオフセット位置（ベースラインに直交する直線上の位置）に有効エッジが存在しているかどうかが判定される。その位置に有効エッジが存在している場合、その座標で示された差（当該有効エッジと現在のベースラインとの距離）が局所的なデルタ値とされる。すなわち、有効エッジが検出された座標から現在のベースラインの位置に対応する座標を減算する。現在のベースラインにおける両端部のいずれかにおいて無効エッジ番号に遭遇した場合、その位置ではデルタ値は算出されない。
【００５８】
図７はデルタ値の算出方法を示す説明図であり、水平エッジデータの一部１００を示している。図７における灰色の画素（例えば符号１０１）は非エッジ画素を示しており、白色の画素（例えば符号１０２）はエッジ画素を示している。水平エッジデータに対応するエッジリスト（水平エッジリスト）は、エッジが配置されている行を各列について挙げている。符号１０４、１０８で示される長さの現在のベースラインについて、エッジ位置１０３に対応するエッジリストエントリーが検査される場合、現在のベースライン１０４に対応するオフセットにおけるエッジリストエントリーが検査され、このオフセットに有効エッジが存在するかどうかが判定される。このオフセットにおけるエッジリスト内のエントリーは、エッジ位置１０５に対応し、デルタ値１０６は、これらの対応するエッジリストエントリーの間の相対差を検査することによって判定される。同様に、エッジ位置１０７に対応するエッジリストエントリーが検査される時は、現在のベースライン１０８に対応するオフセットにおけるエッジリストエントリーが検査され、このオフセットに有効エッジが存在するかどうかが判定される。このオフセットにおけるエッジリスト内のエントリーはエッジ位置１０９に対応し、デルタ値１０６はこれらの対応するエッジリストエントリーの間の相対差を検査することによって判定される。
【００５９】
局所的なデルタ値が現在のベースラインよりも大きい場合、角度の大きさは４５°よりも大きいため、折り畳み演算（folding operation）が行われる。図８は折り畳み演算の方法を示す説明図である。黒い実線１１０は、エッジデータ（この図に示す例では水平エッジデータ）におけるエッジ位置（画像データの座標系における位置）を示している。例えば、位置１１２のエッジ点を検査する場合、現在のベースライン１１３に直交するオフセット位置にエッジが存在しているか否かを判定する。この図に示す例の場合、オフセット距離Δ１（符号１１５）の位置にエッジ点１１４が存在する。また、オフセット距離Δ１（符号１１５）は現在のベースライン１１３の長さよりも短いので、オフセット距離Δ１（符号１１５）が記録される。
【００６０】
一方、位置１１６のエッジ点を検査する場合、エッジ点１１８がベースライン１１７からオフセット距離Δ２（符号１１９）の位置に存在している。ところが、このオフセット距離Δ２（符号１１９）の長さは現在のベースライン１１７の長さよりも長い。このため、余接（コタンジェント）は［−４５°，４５°］の間に制限された回転角の代表値とされる。オフセット値を現在のベースライン１１７に関連付けるために、オフセット値Δ２（符号１１９）をベースライン１１７の長さに対応する長さ１２０に応じて再設定し、オフセット値Δ２’（符号１２０）が記録される。三角形の相似を利用することにより、Δ２’はΔ２’＝（−β２）／Δ２を演算することで容易に算出できる。ここで、βは現在のベースラインの長さである。Δ２’（符号１２１）の正負を反転させることによって現在のベースライン１１７に関連付けられるデルタ値に対応するオフセット値１２３が求められる。このようにして、図８に示したように、エッジ点１１８のオフセット値（デルタ値Δ２）を制限範囲内の回転角をもたらすオフセット値（デルタ値Δ２’）に変換する折り畳み処理が行われる。
【００６１】
なお、図７および図８では、水平方向に延伸するベースラインを水平方向に走査して各エッジ点に対応するデルタ値を算出する場合について説明したが、垂直方向に延伸するベースラインを垂直方向に走査する場合についても略同様の処理により各エッジ点に対応するデルタ値を算出することができる。
【００６２】
図６に示したように、４つのエッジリストのそれぞれを処理することによって求められたデルタ値群９１は、デルタ値ヒストグラム生成部９２に入力される。デルタ値ヒストグラム生成部９２は、デルタ値ヒストグラム９３を生成してモード検出部９４に出力する。デルタ値ヒストグラム９３は２βｉ＋ｌビンを含む。ここで、βｉは現在のベースラインの長さであり、ビンは整数の閉区間［−βｉ，βｉ］にマップされる。
【００６３】
モード検出部９４は、ビン番号の下境界−上境界対（［ｌｂｉ，ｕｂｉ］）で示される現在の範囲（現在の絞込み範囲）８９内のピーク値を算出する。ピーク値の算出方法としては、当該技術分野において従来から公知の方法を用いることができる。このピーク値は、制限されたモード９５と呼ばれ、例えば、最大値を有する現在の範囲８９内のビン番号を算出することによって算出可能である。なお、ピーク値の算出は、長さの短いベースラインからベースラインの長さ順に行う。また、第１のベースライン（最も長さが短いベースライン）については上記ヒストグラムの全体をピーク値の算出範囲に含める。その後、次のベースラインについてのピーク値を算出するヒストグラムの範囲は、現在のベースラインについて算出したピーク値（回転ベクトル９７）によって制限される。
【００６４】
制限されたモード９５は回転ベクトル算出部９６に入力される。回転ベクトル算出部９６は、現在のベースライン８８に関連付けられた回転ベクトル９７を算出する。回転ベクトル９７は［βｉ，Δｉ］で示される。ここで、Δｉ＝bincentersｉ（ｌｂｉ＋mdindexｉ−１）である。また、ｉはベースラインを示す数字（ベースラインの繰り返しを示す数字）であり、mdindexｉはモード番号であり、bincentersｉはヒストグラムビンの中央値を置換値にマップした値である。算出された回転ベクトル９７は、現在のベースラインと対応付けて記録されるとともに、次のベースラインの絞込範囲を算出するために絞込範囲算出部９８に出力される。
【００６５】
絞込範囲算出部９８は、次のベースライン（ｉ＋１）のための、次の絞込み範囲９９を算出する。次の絞込み範囲９９の中央のビン番号（ｅｃｉ＋1）は、
ｅｃｉ＋1＝ｓ・Δｉ＋βｉ＋１＋１
により、現在のデルタ推定値Δｉを次のヒストグラムの範囲内にマッピングすることによって算出される。ここで、ｓ＝βｉ＋１／βｉである。
【００６６】
また、本実施形態では、絞込み範囲を、
ｌｂｉ＋１＝ｍａｘ（ｅｃｉ＋１−ｎ，mnindｉ＋１）、および、
ｕｂｉ＋１＝ｍｉｎ（ｅｃｉ＋１＋ｎ，mxindｉ＋１）
によって算出する。ここで、mnindｉ＋１およびmxindｉ＋１は、それぞれ、次の繰り返しのヒストグムの範囲の最初のビンおよび最後のビンである。また、ｍａｘ関数およびｍｉｎ関数は、絞込み範囲を有効ヒストグラム範囲に制限する。本実施形態ではｎ＝２である。
【００６７】
このように、第１のベースライン（最も長さが短いベースライン）についてはヒストグラム全体におけるピーク値を算出する。また、２番目以降のベースラインについては、当該ベースラインに対応するヒストグラムのうち、当該ベースラインの次に短いベースラインについて算出したピーク値に対応するデルタ値を含む所定範囲（本実施形態では２βｉ＋ｌビン）内のヒストグラムのピーク値を算出する。
【００６８】
回転ベクトル選択部８２は、図５に示したように、現在の層について全ベースラインに基づいて算出した回転ベクトル群（回転ベクトル候補群）８１の中から、現在の層に最も適合する回転ベクトル（現在の層の回転ベクトル候補）８３を選択する。典型的には、最も正確、かつ最も可能性の高い推定値を選択する。
【００６９】
例えば、回転ベクトル選択部８２は、全てのベースラインについての回転ベクトルの平均値を算出する。そして、当該平均値と最終の回転ベクトル（最も正確な回転ベクトルの推定値）との差が閾値よりも小さい場合には最終の回転ベクトルを最も良好な回転ベクトルとして選択し、それ以外の場合には上記平均値を最も良好な回転ベクトルとして選択する。なお、回転ベクトル選択部８２が、最終の回転ベクトルを現在の層に対応する最も正確な回転ベクトル候補８３として選択するようにしてもよい。また、回転ベクトル選択部８２が、上記回転ベクトルのモードを現在の層に対応する回転ベクトル候補８３として選択するようにしてもよい。また、回転ベクトル選択部８２が、上記各回転ベクトルの加重平均値（例えば対応するベースラインの長さに応じた重み（加重）を各回転ベクトルに加えて算出した加重平均値など）を現在の層に対応する回転ベクトル候補８３として選択するようにしてもよい。
【００７０】
回転ベクトル選択部８２によって選択された各層についての回転ベクトル８３からなる回転ベクトル群１１は回転評価部１２に出力される。
【００７１】
垂直層更新部８４および水平層更新部８６は、層セットにおける現在の層および現在の層と次の層までの間に介在する層を無効化し、次の層（次に現在の層トする層）の垂直エッジデータ８５を垂直左右エッジ検出部７２に入力させ、次の層（次に現在の層トする層）における水平エッジデータ８７を水平上下エッジ検出部７６に入力させる。層処理部１０は、次の層の垂直エッジデータ８５および次の層における水平エッジデータ８７に対して、前回現在の層とした層において垂直エッジデータ７０および水平エッジデータ７１に対して行った処理と同様の処理を行う。
【００７２】
回転評価部１２は、各層の回転ベクトル（回転ベクトル推定値）８３からなる回転ベクトル群１１に基づいて最終的な回転ベクトル（傾き角度）１３を算出する。例えば、次式によって各層の回転ベクトル１１の加重平均値が回転ベクトル１３として算出される。
【００７３】
【数３】
2011199871.tif 000005
【００７４】
ここで、ｗλ＝ｅ１／λであり、ｒλは層セットΛ内の層λに対応する回転ベクトルである。
【００７５】
図９は、上述した原稿傾き判定装置２の変形例である原稿傾き判定装置１４０の構成を示す説明図である。この原稿傾き判定装置１４０では、垂直エッジデータおよび水平エッジデータを直接処理することにより傾き角度を判定する。なお、この原稿傾き判定装置１４０は、例えば、スキャナ（画像読取装置）、多機能周辺機器（ＭＦＰ；multifunction peripheral、複合機）、コピー機などの画像処理装置に備えられるものであってもよく、他の画像処理装置に備えられるものであってもよい。また、原稿傾き判定装置２は、パーソナルコンピュータ等の演算装置内に備えられていてもよい。また、原稿傾き判定装置２の各部は、複数の装置（例えば近接配置された複数の装置、あるいは遠隔配置された複数の装置）に分散して配置されていてもよい。また、原稿傾き判定装置２は、コンピュータ読み取り可能なプログラム（あるいはそれを記録した記録媒体）と、当該プログラムに応じた処理を実行するコンピュータ装置とによって実現されるものであってもよい。
【００７６】
画像取得部１４２は、入力画像データ１４１を取得し、取得した入力画像データ１４１を画像前処理部１４４に出力する。
【００７７】
画像前処理部１４４は、入力画像データ１４１に正規化処理を行い、正規化処理後の画像データをエッジデータ生成部１４８に出力する。なお、画像取得部１４２が、正規化処理された入力画像データを取得してもよく、その場合には画像前処理部１４４が画像取得部１４２から入力される正規化処理後の入力画像データをそのままエッジデータ生成部１４８に出力するようにしてもよい。
【００７８】
具体的には、画像前処理部１４４は、解像度変換部（ダウンサンプラー）および色変換部を含んでいてよい。上記解像度変換部は、例えば、高解像度の入力画像データ（例えば３００ｄｐｉ（dots per inch））をより低い解像度（例えば７５ｄｐｉ）に解像度変換（ダウンサンプリング）する。入力画像データの解像度をダウンサンプリングすることは、原稿傾き判定装置１４０の演算能力（演算速度）に影響する。また、上記色変換部は、例えば、ダウンサンプリングされた画像データを、必要に応じて、グレースケールデータに変換する。例えば、上記色変換部は、ＲＧＢ（赤，緑，青）からなる入力画像データ１４１を従来から公知の変換方法を用いてＲＧＢからＹへ変換するものであってもよく、他の色空間の入力画像データをグレースケールに変換するものであってもよい。なお、グレースケール値の上限値を定めてもよい。また、グレースケール値の閾値を設定し、この閾値を超えるグレースケール値については上記閾値に設定するようにしてもよい。例えば、８ビットのグレースケール値の場合、上記閾値は、典型的には２３５に設定される。なお、まず入力画像データ１４１をグレースケールのデータに変換し、その後に解像度変換（ダウンサンプリング）を行うようにしてもよい。本実施形態では、解像度変換（ダウンサンプリング）および色変換が行われた入力画像データを入力画像データ１４１の正規化画像データ７と称する。
【００７９】
エッジデータ（エッジバッファ）生成部１４８は、図１に示したエッジデータ生成部８と同様、画像前処理部１４４から入力される正規化された画像データに基づいて、水平エッジデータ（水平エッジバッファ）および垂直エッジデータ（垂直エッジバッファ）を含むエッジデータ１５０を生成し、ヒストグラム生成部１５２に出力する。なお、エッジデータ生成部１４８は、図１に示したエッジデータ生成部８と同様、垂直片エッジデータ（垂直片エッジバッファ）を生成する垂直片エッジ集約尺度算出部２０と水平片エッジデータ（水平片エッジバッファ）を生成する水平片エッジ集約尺度算出部２４とを備え、垂直片エッジデータおよび水平片エッジデータに基づいてエッジデータ１５０を生成する構成であってもよい。
【００８０】
ヒストグラム生成部１５２は、長さ順に配列されたベースラインを用いて、エッジデータ１５０における各エッジ点について、累進的に制限されるヒストグラム（ベースライン毎にピーク値を算出するデルタ値の範囲が順次制限されるヒストグラム）におけるエントリーを演算することにより、回転ベクトル１５４を推定する。また、ヒストグラム生成部１５２は、推定した回転ベクトル１５４を原稿傾き判定装置１４０あるいは他の装置における更なる処理を行う処理部（図示せず）に出力する。
【００８１】
回転ベクトルは傾き角度の特性を示すものである。本実施形態では、回転ベクトルとして、ベースライン値βとデルタ値Δとを用いて定義される回転ベクトル（傾き角度）θ＝ａｒｃｔａｎ（Δ／β）を用いる。
【００８２】
図１０はヒストグラム生成部１５２における処理を示す説明図である。ヒストグラム生成部１５２は、Ｂ＝［β１，β２，…，βＮ］で示されるベースラインセットの長さセットＢに含まれる各ベースラインの長さβｉについて、エッジデータにおける各エッジのデルタ値のヒストグラムを生成する。典型的なベースラインセットＢはＢ＝［３２，６４，１２８，２５６，５１２，５７６］であり、この場合、傾き角度を０．１°程度の精度で検出できる。
【００８３】
各ベースラインについて一定サイズのヒストグラムを生成あるいは選択して用いてよく、各ベースラインについての一定サイズのデルタ値のヒストグラムを記録するために共通のメモリーを用いてもよい。例えば、デルタ値の各ヒストグラムは２β１＋１ビンを含んでいてもよい。ここで、β１は最も短いベースライン、または最初のベースラインの長さであり、ビンは整数の閉区間［−β１，β１］にマップされる。また、最初の繰り返し（最初のベースラインについてのヒストグラム）は推定区間［−４５°，４５°］を対象としていてもよい。
【００８４】
まず、ヒストグラム生成部１５２は、ヒストグラムサイズを初期化し（１７０）、ヒストグラム中心オフセットを０に初期化する（１７２）。次に、ヒストグラム生成部１５２は、未処理のベースラインが残っているか否かを判断する（１７４）。ベースラインセットに含まれる全てのベースラインの処理が完了している場合（１７５）、ヒストグラム生成部１５２は、ヒストグラム生成処理を終了し（１７６）、直近に算出した回転デルタ値を用いて回転ベクトルを判定する。
【００８５】
ベースラインセットに含まれるベースラインの中に未処理のベースラインが残っている場合（１７７）、ヒストグラム生成部１５２は、前回のヒストグラムを消去し（１７８）、ベースラインセット内における次のベースライン（次に現在のベースラインとするベースライン）に関連付けられたヒストグラムを生成する。ヒストグラムを消去する際（１７８）、各ビン内の蓄積カウント（デルタ値の度数）を０に設定する。
【００８６】
次に、ヒストグラム生成部１５２は、エッジデータ中に、現在のベースラインについて未処理のエッジが残っているか否かを判断する（１８０）。未処理のエッジが残っている場合（１８１）、ヒストグラム生成部１５２は、未処理のエッジについて現在のベースラインに対応するデルタ値を算出する（１８２）。デルタ値の算出方法としては、図１を参照して説明した方法と同様の方法を用いることができる。
【００８７】
次に、ヒストグラム生成部１５２は、ステップ１８２で算出したデルタ値を、現在のヒストグラム中心オフセット（ヒストグラムの中心に対するオフセット量）に基づいて調整する（１８４）。なお、最初のヒストグラム（最初のベースラインに対応するヒストグラム）については当該ヒストグラムの中心がゼロに設定されるので調整の必要はない。２番目以降のヒストグラムについては、後述するステップ１９０において、各ベースラインについての繰り返し演算（各ベースラインについてのデルタ値の算出処理）の後、次のベースラインの繰り返し演算のためのヒストグラム中心オフセットが、現在ベースラインについて算出された回転デルタ値に基づいて更新される。
【００８８】
具体的には、算出されたデルタ値をΔmeasured、調整後のデルタ値をΔadjusted、現在のヒストグラムの中心オフセット値をCenterOffsetとすると、調整後のデルタ値Δadjustedは、
Δadjusted＝Δmeasured−CenterOffset、
により算出される。したがって、ヒストグラムのサイズを一定にすること、およびヒストグラム中心を調整することにより、ベースラインの長さが累積的に増大するデルタ値の制限されたウィンドウを実現できる。
【００８９】
ヒストグラム生成部１５２は、上記調整後のデルタ値を現在のベースラインの長さに関連付けられたヒストグラム内に蓄積し（１８６）、ステップ１８０の処理に戻る。
【００９０】
ステップ１８０において、エッジデータ内の全てのエッジが現在のベースラインにおいて処理されたと判断した場合（１８７）、ヒストグラム生成部１５２は、現在の繰り返し演算（現在のベースライン）についての回転デルタ値を算出する（１８８）。例えば、ヒストグラム生成部１５２は、グローバルヒストグラムモードを検出し、検出したモードのモード番号をビンの中央値のリストにマッピングし、中央値のオフセットに基づいて調整することにより上記回転デルタ値を算出する。
【００９１】
次に、ヒストグラム生成部１５２は、次の繰り返し（次のベースライン）のために、ヒストグラム中心オフセットを算出した回転デルタ値に更新する（１９０）。したがって、現在の繰り返し（現在のベースライン）のための回転ベクトルは［βｉ，Δｉ］となる。ここで、Δｉ＝bincentersｉ（ｌｂｉ＋mdindexｉ−１）であり、bincentersｉはヒストグラムビンの中心を置換値にマッピングするものである。
【００９２】
ステップ１９０の処理の後、ヒストグラム生成部１５２は、ステップ１７４の処理に戻る。
【００９３】
垂直エッジデータおよび水平エッジデータを直接処理する上記の実施形態について、図１１を参照しながらより詳細に説明する。図１１は、各ベースラインに対応するヒストグラムの生成方法を示す説明図である。
【００９４】
図１１におけるヒストグラム２１０は、長さがβｉ＝８である第１のベースライン２００に関連付けられる一定サイズのデルタ値ヒストグラムである。このデルタ値ヒストグラム２１０は、１７個のビン２１１〜２２７を有している。１７個のビン２１１〜２２７は、整数の区間［−８，８］内のデルタ値に関連付けられており、区間［ｔａｎ−１（（−８）／８），ｔａｎ−１（８／８）］＝［−４５°，４５°］の範囲内の回転角（傾き角度）に相当している。この繰り返し演算による回転角の算出精度（ベースライン２００に基づいて算出される傾き角度の算出精度）は、７．１２５°以下である。
【００９５】
図１１の例では、エッジ点２０８についてのデルタ値の算出結果を各ベースラインに対応するヒストグラムに反映させる場合の処理を示している。
【００９６】
第１のベースラインについての繰り返し演算において、ベースラインβ１＝８のオフセット位置におけるデルタ値がデルタ値ヒストグラム２１０内のヒストグラム中心オフセット（第１の繰り返しでは０）との比較結果に応じたビン（例えばビン２２２）に蓄積される。
【００９７】
例えば、第１のベースラインについての繰り返し演算によって算出された回転デルタ値（ヒストグラム２１０におけるデルタ値のピーク値）が、ビン２２２に関連付けられたデルタ値である場合、長さがβ２＝１６である第２のベースライン２０２に関連付けられるデルタ値ヒストグラム２３０の中心（ヒストグラム中心）は、第１のベースラインについての繰り返し演算によって算出されたデルタ値オフセット（ビン２２２に対応するオフセット量）の周辺に設定される（２３９）。これにより、デルタ値ヒストグラム２３０は、１７個のビン２３１〜２４７を有し、これら１７個のビン２３１〜２４７は整数の区間［−２，１４］内のデルタ値に関連付けられ、区間［ｔａｎ−１（（−２）／１６），ｔａｎ−１（１４／１６）］＝［−７．１°，４１．２°］内の回転角に相当するように設定される。
【００９８】
第２のベースラインについての繰り返し演算によって算出された回転デルタ値（ヒストグラム２３０におけるデルタ値のピーク値）が、ビン２４１に関連付けられたデルタ値である場合、長さがβ３＝３２である第３のベースライン２０４に関連付けられるデルタ値ヒストグラム２５０の中心は、第２のベースラインについての繰り返し演算によって算出されたデルタ値オフセット（ビン２４１に対応するオフセット量）の周辺に設定される（２５９）。これにより、デルタ値ヒストグラム２５０は、１７個のビン２５１〜２６７を有し、これら１７個のビン２５１〜２６７は整数の区間［８，２４］内のデルタ値に関連付けられ、区間［ｔａｎ−１（８／３２），ｔａｎ−１（２４／３２）］＝［１４．０°，３６．９°］内の回転角に相当するように設定される。
【００９９】
第３のベースラインについての繰り返し演算によって算出された回転デルタ値（ヒストグラム２５０におけるデルタ値のピーク値）が、ビン２６１に関連付けられたデルタ値である場合、長さがβ４＝６４である第４のベースライン２０６に関連付けられるデルタ値ヒストグラム２７０の中心は、第３のベースラインについての繰り返し演算によって算出されたデルタ値オフセット（ビン２６１に対応するオフセット量）の周辺に設定される（２７９）。これにより、デルタ値ヒストグラム２７０は、１７個のビン２７１〜２８７を有し、これら１７個のビン２７１〜２８７は整数の区間［２８，４４］内のデルタ値に関連付けられ、区間［ｔａｎ−１（２８／６４），ｔａｎ−１（４４／６４）］＝［２３．６°，３４．５°］内の回転角に相当するように設定される。
【０１００】
第４のベースラインがベースラインセット内の最後のベースラインであり、第４のベースラインの繰り返し演算によって算出された回転デルタ値がビン２８０に関連付けられる回転デルタ値である場合、回転ベクトルは３０．０°の回転角に相当する［６４，３７］である。
【０１０１】
図１２は、デルタ値ヒストグラムのビンと回転角との関係を示している。
【０１０２】
以上のように、本実施形態にかかる原稿傾き判定装置は、原稿画像データの各行および各列における最も外側のエッジを検出するエッジ検出部（垂直左右エッジ検出部７２および水平上下エッジ検出部７６）と、予め設定された互いに長さが異なる複数種類のベースラインを行方向に沿って所定画素ずつ移動させ、上記各ベースラインに直交する列上に存在する上記エッジのうち当該各ベースラインとの距離が最も短いエッジと上記各ベースラインとの距離であるデルタ値をベースライン毎かつ上記各ベースラインを上記所定画素ずつ移動させる毎に算出するデルタ値算出部９０と、上記デルタ値のヒストグラムを上記ベースライン毎に生成するデルタ値ヒストグラム生成部９２と、上記各ベースラインに対応する上記ヒストグラムのピーク値を算出するモード検出部９４と、算出した上記ピーク値に基づいて原稿の傾き角度を算出する回転ベクトル算出部９６とを備えるている。また、モード検出部９４は、長さが最も短いベースラインからベースラインの長さ順に各ベースラインに対応するヒストグラムのピーク値を算出し、２番目以降のベースラインに対応するヒストグラムのピーク値を算出する際、当該ベースラインに対応する上記デルタ値のうち、当該ベースラインの次に短いベースラインについて算出したピーク値に対応するデルタ値を含む所定範囲内のデルタ値のヒストグラムのピーク値を算出する。また、回転ベクトル選択部８２は、長さが最も長いベースラインについて算出した上記ピーク値に対応する上記デルタ値に基づいて上記傾き角度を算出する。
【０１０３】
これにより、原稿画像データにおける原稿の傾き角度を、原稿のフォーマットにかかわらず容易に判定することができる。また、傾き角度に対応するピーク値を長さの短いベースラインから順に順次絞り込んでいくことができるので、傾き角度を精度よく算出することができる。また、２番目以降のベースラインについては上記所定範囲内のデルタ値のヒストグラムのピーク値を算出するだけでよいので、全てのデルタ値についてヒストグラムのピーク値を算出する場合に比べて演算量を低減し、処理速度を向上させることができる。
【０１０４】
また、本実施形態にかかる原稿傾き判定装置は、原稿を読み取って取得した原稿画像データにおける原稿の傾き角度を判定する原稿傾き判定装置（原稿傾き判定システム）であって、ａ）上記原稿画像データを正規化した正規化画像データに基づいて垂直エッジデータおよび水平エッジデータを生成するエッジデータ生成部と、ｂ）上記垂直エッジデータおよび上記水平エッジデータにおける現在の層（現在の処理対象とする層）を処理することによって、当該現在の層の回転ベクトルを生成する層処理部と、ｃ）上記現在の層の回転ベクトルを含む複数の回転ベクトルの中から、上記原稿の傾き角度に対応する回転ベクトルを選択する回転評価部とを備えていてもよい。
【０１０５】
また、本実施形態にかかる原稿傾き判定装置は、上記原稿画像データを取得する画像取得部と、上記画像取得部が取得した原稿画像データを正規化する画像前処理部とを備えていてもよい。
【０１０６】
また、上記画像前処理部は、ａ）上記原稿画像データの解像度を変換する解像度変換部と、ｂ）上記原稿画像データをカラー画像データからグレースケール画像データに変換する変換部とを備えていてもよい。
【０１０７】
また、上記エッジデータ生成部は、ａ）正規化された原稿画像データを互いに重複しないｋ×１個の画素からなる垂直片に分割し、各垂直片の集約尺度を算出して垂直片データを生成する垂直片エッジ集約尺度算出部と、ｂ）正規化された原稿画像データを互いに重複しない１×ｋ個の画素からなる水平片に分割し、各水平片の集約尺度を算出して水平片データを生成する水平片エッジ集約尺度算出部と、ｃ）上記垂直片データにおける第１のエッジ群を検出することにより上記垂直エッジデータを生成するための垂直エッジ検出部と、ｄ）上記水平片データにおける第２のエッジ群を検出することにより上記水平エッジデータを作成する水平エッジ検出部とを備えていてもよい。
【０１０８】
上記層処理部は、ａ）上記垂直エッジデータにおける現在の層に対応する垂直エッジの位置を検出する垂直上下エッジ検出部（垂直立上り立下りエッジ検出部）と、ｂ）上記水平エッジデータにおける現在の層に対応する水平エッジの位置を検出する水平左右エッジ検出部（水平立上り立下りエッジ検出部）と、ｃ）上記垂直左右エッジ検出部の検出結果に基づいて、各行の垂直エッジのうち最も左のエッジを示す列番号のリストである左リスト、および各行の垂直エッジのうち最も右のエッジを示す列番号のリストである右リストを生成する垂直エッジリスト生成部と、ｄ）上記水平上下エッジ検出部の検出結果に基づいて、各列の水平エッジのうち最も上のエッジを示す行番号のリストである上リスト、および各列の水平エッジのうち最も下のエッジを示す行番号のリストである右リストを生成する水平エッジリスト生成部と、ｅ）上記左リスト、上記右リスト、上記上リスト、および上記下リストを、予め設定される複数のベースラインのうちの少なくとも１つのベースラインの長さに応じて処理することで現在の層に対応する回転ベクトル候補を生成するベースライン処理部とを備えていてもよい。
【０１０９】
また、上記ベースライン処理部は、上記左リスト、上記右リスト、上記上リスト、および上記下リストを、上記各ベースラインの長さに応じて処理することで現在の層に対応する複数の回転ベクトル候補を生成する構成であってもよい。
【０１１０】
また、上記層処理部は、現在の層に対応する上記複数の回転ベクトル候補の中から現在の層に関連付ける回転ベクトル候補を選択する回転ベクトル選択部（層評価値選択部）を備えていてもよい。
【０１１１】
また、上記回転ベクトル選択部は、現在の層に対応する上記複数の回転ベクトル候補のうち、最も正確な回転ベクトル候補を選択する構成であってもよい。
【０１１２】
また、上記回転ベクトル選択部は、ａ）上記複数の回転ベクトル候補の平均値と上記最も正確な回転ベクトル候補との差が予め設定される第１閾値よりも小さい場合には上記最も正確な回転ベクトル候補を現在の層に関連付ける回転ベクトル候補として選択し、ｂ）上記差が上記第１閾値以上である場合には上記平均値を現在の層に関連付ける回転ベクトル候補として選択する構成であってもよい。
【０１１３】
また、上記層処理部は、ａ）垂直層無効器と、ｂ）水平層無効器とを備えていてもよい。
【０１１４】
また、上記ベースライン処理部は、ａ）上記左リスト、上記右リスト、上記上リスト、および上記下リストのうちのいずれかのリストにおけるエッジ位置において上記ベースラインの長さに関連付けられるデルタ値を算出するデルタ値算出部と、ｂ）上記デルタ値算出部によって算出された複数のデルタ値のヒストグラムを生成するデルタ値ヒストグラム生成部と、ｃ）上記ヒストグラムに対応する複数のヒストグラムビンにおける現在の絞込み範囲内における上記ヒストグラムのピーク値を検出するモード検出部と、ｄ）上記ピーク値に基づいて上記ベースラインの長さに関連付ける回転ベクトルを算出する回転ベクトル算出部と、ｅ）上記回転ベクトル算出部が算出した上記上記ベースラインの長さに関連付ける回転ベクトルと、上記複数のベースラインの中から選択される次のベースラインの長さとに基づいて上記ヒストグラムに対応する複数のヒストグラムビンについての次の絞込み範囲を算出する絞込範囲算出部とを備えていてもよい。
【０１１５】
また、上記デルタ値算出部は、上記ベースラインの長さに関連付ける上記デルタ値の大きさを当該ベースラインの長さに相当する大きさ以下に制限する構成であってもよい。
【０１１６】
また、本実施形態にかかる原稿傾き判定装置は、各種画像処理装置（例えばスキャナ、多機能周辺機器、コピー機など）または各種演算装置（例えばパーソナルコンピュータなど）に備えられるものであってもよい。
【０１１７】
また、本実施形態にかかる原稿傾き判定装置は、原稿を読み取って取得した原稿画像データにおける原稿の傾き角度を判定する原稿傾き判定装置（原稿傾き判定システム）であって、ａ）上記原稿画像データを正規化した正規化画像データに基づいて垂直エッジデータおよび水平エッジデータを生成するエッジデータ生成部と、ｂ）ヒストグラムを生成するヒストグラム生成部とを備えており、上記ヒストグラムは、ｉ）第１のベースラインの長さについて上記垂直エッジおよび上記水平エッジに関連付けられたデルタ値の第１ヒストグラム、およびｉｉ）第２のベースラインの長さについて上記垂直エッジおよび上記水平エッジに関連付けられたデルタ値の第２ヒストグラムを含み、１）上記第１のベースラインの長さは上記第２のベースラインの長さよりも短く、２）上記第１ヒストグラムおよび上記第２ヒストグラムのサイズは同じであり、３）上記第２ヒストグラムの中心は上記第１ヒストグラムに基づいて判定された第１のデルタ値の周辺に中心が設定されている構成であってもよい。
【０１１８】
また、上記エッジデータ生成部は、ａ）正規化された原稿画像データを互いに重複しないｋ×１個の画素からなる垂直片に分割し、各垂直片の集約尺度を算出して垂直片データを生成する垂直片エッジ集約尺度算出部と、ｂ）正規化された原稿画像データを互いに重複しない１×ｋ個の画素からなる水平片に分割し、各水平片の集約尺度を算出して水平片データを生成する水平片エッジ集約尺度算出部と、ｃ）上記垂直片データにおける第１のエッジ群を検出することにより上記垂直エッジデータを生成するための垂直エッジ検出部と、ｄ）上記水平片データにおける第２のエッジ群を検出することにより上記水平エッジデータを作成する水平エッジ検出部とを備えていてもよい。
【０１１９】
上記第１のデルタ値は、上記第１ヒストグラムにおけるピーク値であってもよい。
【０１２０】
上記第１の制限されたヒストグラムおよび上記第２の制限されたヒストグラムは、同一のメモリー位置内に記憶されていてもよい。
【０１２１】
また、本実施形態において、原稿傾き判定装置２に備えられる各部（各ブロック）を、ＣＰＵ等のプロセッサを用いてソフトウェアによって実現してもよい。この場合、原稿傾き判定装置２は、各機能を実現する制御プログラムの命令を実行するＣＰＵ（central processing unit）、上記プログラムを格納したＲＯＭ（read only memory）、上記プログラムを展開するＲＡＭ（random access memory）、上記プログラムおよび各種データを格納するメモリー等の記憶装置（記録媒体）などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである原稿傾き判定装置２の制御プログラムのプログラムコード（実行形式プログラム、中間コードプログラム、ソースプログラム）をコンピュータで読み取り可能に記録した記録媒体を、原稿傾き判定装置２に供給し、そのコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に記録されているプログラムコードを読み出し実行することによって達成される。
【０１２２】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー（登録商標）ディスク／ハードディスク等の磁気ディスクやＣＤ−ＲＯＭ／ＭＯ／ＭＤ／ＤＶＤ／ＣＤ−Ｒ等の光ディスクを含むディスク系、ＩＣカード（メモリカードを含む）／光カード等のカード系、あるいはマスクＲＯＭ／ＥＰＲＯＭ／ＥＥＰＲＯＭ／フラッシュＲＯＭ等の半導体メモリー系などを用いることができる。
【０１２３】
また、原稿傾き判定装置２を通信ネットワークと接続可能に構成し、通信ネットワークを介して上記プログラムコードを供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、ＬＡＮ、ＩＳＤＮ、ＶＡＮ、ＣＡＴＶ通信網、仮想専用網（virtual private network）、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、ＩＥＥＥ１３９４、ＵＳＢ、電力線搬送、ケーブルＴＶ回線、電話線、ＡＤＳＬ回線等の有線でも、ＩｒＤＡやリモコンのような赤外線、Ｂｌｕｅｔｏｏｔｈ（登録商標）、８０２．１１無線、ＨＤＲ、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【０１２４】
また、原稿傾き判定装置２の各ブロックは、ソフトウェアを用いて実現されるものに限らず、ハードウェアロジックによって構成されるものであってもよく、処理の一部を行うハードウェアと当該ハードウェアの制御や残余の処理を行うソフトウェアを実行する演算手段とを組み合わせたものであってもよい。
【０１２５】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０１２６】
本発明は、画像データにおける原稿の傾きを判定する原稿傾き判定装置および原稿傾き判定方法に適用できる。
【符号の説明】
【０１２７】
２，１４０  原稿傾き判定装置
４，１４２  画像取得部
６，１４４  画像前処理部
８，１４８  エッジデータ生成部
１０  層処理部
１２  回転評価部（傾き角度算出部）
２０  垂直片エッジ集約尺度算出部
２２  垂直エッジ検出部
２４  水平片エッジ集約尺度算出部
２６  水平エッジ検出部
７２  垂直左右エッジ検出部（エッジ検出部）
７４  垂直エッジリスト生成部（エッジデータ生成部）
７６  水平上下エッジ検出部（エッジ検出部）
７８  水平エッジリスト生成部（エッジデータ生成部）
８０  ベースライン処理部
８１  回転ベクトル推定値
８２  回転ベクトル選択部（傾き角度算出部）
８４  垂直層更新部
８６  水平層更新部
９０  デルタ値算出部
９２  デルタ値ヒストグラム生成部（ヒストグラム生成部）
９４  モード検出部（ピーク値算出部）
９６  回転ベクトル算出部（傾き角度算出部）
９８  絞込範囲算出部
１５２  ヒストグラム生成部
【図１】
2011199871.tif 000006
【図２】
2011199871.tif 000007
【図３】
2011199871.tif 000008
【図４】
2011199871.tif 000009
【図５】
2011199871.tif 000010
【図６】
2011199871.tif 000011
【図７】
2011199871.tif 000012
【図８】
2011199871.tif 000013
【図９】
2011199871.tif 000014
【図１０】
2011199871.tif 000015
【図１１】
2011199871.tif 000016
【図１２】
2011199871.tif 000017