説明

画像処理装置及び画像処理プログラム

【課題】スキャナの画像幅が紙幅より常に広くなっていることを要せず、又は紙を載せずにスキャンすると画像が必ず黒くなることも必要としないスキャナを用いて、画像の傾き角度を検知するようにした画像処理装置を提供する。
【解決手段】画像処理装置の境界検出手段は、画像の辺部から複数画素の領域を用いて、反対側の辺部に向けて走査することによって検出した黒画素の位置に基づいて、該画像の周辺部にある余白領域と該画像の黒画素領域との境界を検出し、境界傾き算出手段は、前記境界検出手段によって検出された境界の水平又は垂直からの傾き角度を算出し、画像傾き算出手段は、前記境界傾き算出手段によって算出された境界の傾き角度に基づいて、前記画像全体の傾き角度を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置及び画像処理プログラムに関する。
【背景技術】
【0002】
紙文書をスキャンして得た文書画像の傾き角度を検知する技術として、ハフ変換を用いる方法が一般に広く使われている。この手法は、対象画像をハフ変換して画像内の直線を複数検出し、その直線を水平・垂直に近い角度を持つ長い直線に絞り込む。そして、絞り込まれた直線の水平・垂直からのずれを傾き角度として検知するものである。
しかし、この方法には処理コストが大きいという欠点がある。
そこで、ハフ変換を用いずに、簡便・確実でしかも高速に傾き角度を検知することを目的とした技術が実用化に向けて開発されている。
【0003】
これに関連する技術として、例えば、特許文献1には、文書の画像を利用して、文書の上に書かれたキーワードを操作者が指やペンで指示するだけで計算機に入力される文字列入力方法及び装置の提供を目的とし、文字列入力装置は、画像中の文書領域のエッジを検出する手段と、エッジから文書領域を表わす長方形を特定する手段と、長方形の平面における傾きから細長い物体を動かす方向を算出する手段と、その物体の移動を検出する手段と、物体の移動情報を用いて、物体が表わす指定点の座標の時系列データを求める手段と、求められた指定点の座標の時系列データの中から、操作者の指定動作に該当する部分を認識し、動作で指定される領域を算出する手段と、指定領域の近くに存在する文字列パターンを抽出する手段と、文字列パターンを文字認識により文字コードに変換する手段とからなることが開示されている。
【0004】
また、例えば、特許文献2には、少ない処理量で高速に、画像の傾き角度を検出し、文字のない画像の傾きも検出可能にすることを目的とし、黒/白画素境界判定部によって、2値イメージメモリに入力された2値画像上の黒画素と白画素の境界の点を複数個抽出し、この点列のX座標とY座標を2変数とする回帰直線の回帰係数を回帰係数算出部で計算し、画像傾き検出部で、回帰係数の値より画像の傾き角度を計算することが開示されている。
【0005】
また、例えば、特許文献3には、画像処理装置等の書類の辺縁検出において、書類に比較的大きな破損、折れ、汚れなどがあったり、大きく傾いて読み取られたりしても、安定して高精度かつ高速に辺縁検出を行うことを目的とし、書類の多値画像を2値画像に変換する画像2値化部と、変換された画像データの辺縁上の複数点の座標を検出する辺縁座標メモリと、該複数の辺縁上の点の隣合う2点を結んだ方向ベクトルを作成し、本来の辺縁上にある点を結んだ方向ベクトルの傾きは平行あるいは直角になることを利用して不適当な点の候補を除去し、残った点のみを用いて書類の辺縁直線の方程式を求めるCPUとを備えたことが開示されている。
【0006】
つまり、紙を載せずにスキャンすると画像が黒くなるスキャナを用いて、紙文書より大きな領域をスキャンし、背景(黒)と紙(白)の境界を検出して紙の傾きを算出する技術である。その際、特許文献3では、所定間隔離れた複数の垂直線・水平線に沿って前記境界の検出を繰り返し、画像データが黒(背景)から白(紙)に変わる点を複数求める。次に隣合う変化点同士を結ぶベクトルを定義し、これらのベクトル群からより多くのものが互いに平行になるベクトル群を抽出し、これらの水平・垂直からのずれを傾き角度として算出するものである。
特許文献3記載の技術を実施するには、スキャナは次のような仕様を備えていなければならない。
(1)スキャナの画像幅が紙幅より広いこと
(2)紙を載せずにスキャンすると画像が黒くなること
【特許文献1】特開平11−065753号公報
【特許文献2】特開平07−192086号公報
【特許文献3】特開平06−162190号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、スキャナの画像幅が紙幅より常に広くなっていることを要せず、又は紙を載せずにスキャンすると画像が必ず黒くなることも必要としないスキャナを用いて、画像の傾き角度を検知するようにした画像処理装置及び画像処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項1記載の発明は、画像の辺部から複数画素の領域を用いて、反対側の辺部に向けて走査することによって検出した黒画素の位置に基づいて、該画像の周辺部にある余白領域と該画像の黒画素領域との境界を検出する境界検出手段と、前記境界検出手段によって検出された境界の水平又は垂直からの傾き角度を算出する境界傾き算出手段と、前記境界傾き算出手段によって算出された境界の傾き角度に基づいて、前記画像全体の傾き角度を算出する画像傾き算出手段を具備することを特徴とする画像処理装置である。
【0009】
請求項2記載の発明は、前記境界検出手段は、複数の境界を検出し、前記境界傾き算出手段は、前記境界検出手段によって検出された複数の境界の傾き角度を各々算出し、前記画像傾き算出手段は、複数の境界の傾き角度に基づいて、前記画像全体の傾き角度を算出することを特徴とする請求項1に記載の画像処理装置である。
【0010】
請求項3記載の発明は、前記境界検出手段は、走査して得た複数の黒画素を直線の近傍に位置するものからなるセグメントに分割して境界を検出し、前記境界傾き算出手段は、前記境界検出手段によって分割されたセグメント毎に傾き角度を算出することを特徴とする請求項1に記載の画像処理装置である。
【0011】
請求項4記載の発明は、前記画像傾き算出手段は、前記境界傾き算出手段が傾き角度の算出に用いたセグメント毎に含まれる黒画素数に基づいて、各セグメントの傾き角度に重み付けを行い、前記画像全体の傾き角度を算出することを特徴とする請求項3に記載の画像処理装置である。
【0012】
請求項5記載の発明は、前記境界検出手段は、境界近傍に位置する黒画素塊のサイズを検出し、該サイズに応じて、前記境界検出手段が用いる複数画素の領域の長さを決定することを特徴とする請求項1に記載の画像処理装置である。
【0013】
請求項6記載の発明は、コンピュータを、画像の辺部から複数画素の領域を用いて、反対側の辺部に向けて走査することによって検出した黒画素の位置に基づいて、該画像の周辺部にある余白領域と該画像の黒画素領域との境界を検出する境界検出手段と、前記境界検出手段によって検出された境界の水平又は垂直からの傾き角度を算出する境界傾き算出手段と、前記境界傾き算出手段によって算出された境界の傾き角度に基づいて、前記画像全体の傾き角度を算出する画像傾き算出手段として機能させることを特徴とする画像処理プログラムである。
【発明の効果】
【0014】
請求項1の画像処理装置によれば、スキャナの画像幅が紙幅より常に広くなっていることを要せず、又は紙を載せずにスキャンすると画像が必ず黒くなることも必要としないスキャナを用いた場合であって、画像の傾き角度を検知することができる。
【0015】
請求項2の画像処理装置によれば、より正確な画像の傾き角度を検知することができる。
【0016】
請求項3の画像処理装置によれば、走査して得られる文字等の黒画素の位置が必ずしも直線上にはないために発生する検出した境界の凹凸を抑制して、より正確な画像の傾き角度を検知することができる。
【0017】
請求項4の画像処理装置によれば、長いセグメントから算出した傾き角度と短いセグメントから算出した傾き角度では精度が異なり、この異なる精度に配慮して、より正確な画像の傾き角度を検知することができる。
【0018】
境界検出手段が用いる複数画素の領域は、境界に文字等がある場合に対応するためのものである。複数画素の領域の長さが狭いと文字等の黒画素領域の凸凹に影響を受けやすくなり、広いとセグメント内の黒画素数が少なくなる。さらに、対象となる文書等の画像には様々な大きさの文字等が混在している。請求項5の画像処理装置によれば、黒画素領域のサイズに影響を受けることなく、より精度を向上させることができる。
【0019】
請求項6の画像処理プログラムによれば、スキャナの画像幅が紙幅より常に広くなっていることを要せず、又は紙を載せずにスキャンすると画像が必ず黒くなることも必要としないスキャナを用いて、画像の傾き角度を検知することができる。
【発明を実施するための最良の形態】
【0020】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、コンピュータ・プログラム、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能にほぼ一対一に対応しているが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)を含む。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。
【0021】
なお、画像内の位置を表すのに、原点(0,0)を左下隅としたxy座標で表す場合がある。つまり、画像の下辺はy=0の線分、上辺はy=maxy(画像の高さ)の線分、左辺はx=0の線分、右辺はx=maxx(画像の横幅)の線分で表す。
また、黒画素塊とは、4連結又は8連結で連続する黒画素領域を少なくとも含み、これらの画素領域の集合をも含む。これらの画素領域の集合とは、4連結等で連続した画素領域が複数あり、その複数の画素領域は近傍にあるものをいう。ここで、近傍にあるものとは、例えば、互いの画素領域が距離的に近いもの、文章としての1行から1文字ずつ切り出すように縦又は横方向に射影し、空白地点で切り出した画像領域、又は一定間隔で切り出した画像領域等がある。
なお、1つの黒画素塊で1文字の画像となる場合が多い。ただし、実際に人間が文字として認識できる画素領域である必要はない。文字の一部分、文字を形成しない画素領域等もあり、何らかの黒画素の塊であればよい。以下、文字という場合は、この黒画素塊を指す。
【0022】
本実施の形態は、境界検出モジュール12A、境界検出モジュール12B、境界検出モジュール12C、境界検出モジュール12D、境界傾き算出モジュール13A、境界傾き算出モジュール13B、境界傾き算出モジュール13C、境界傾き算出モジュール13D、画像傾き算出モジュール14、画像回転モジュール15を有している。本実施の形態は、画像の周囲に必ず存在する余白領域と画像内の黒画像領域との境界を検出し、その境界と水平又は垂直とのずれを傾き角度として、画像全体の傾き補正をするものである。
【0023】
境界検出モジュール12Aは、境界傾き算出モジュール13Aと接続されており、入力画像11を受け付け、入力画像11の辺部から複数画素の領域(以下、スリットという)を用いて、反対側の辺部に向けて走査することによって検出した黒画素の位置に基づいて、入力画像11の周辺部にある余白領域と入力画像11の黒画素領域との境界を検出し、その境界を境界傾き算出モジュール13Aへ渡す。なお、境界検出モジュール12Aは、入力画像11の上側にある境界を検出するものであり、入力画像11の辺部とは入力画像11の上辺(y=maxy)のことである。そして、反対側の辺部に向けてとは、上から下へ向けての意である。
より詳細には、スリットを上辺部の左端に置き、上から下へ走査し、そのスリット内に黒画素が入ったら、その黒画素の位置を記憶して、スリットを上辺部の右へ移動する。この手順を、スリットが右端に到達するまで繰り返して、記憶した複数の黒画素の位置を用いて、直線の近傍に位置するものからなるセグメントに分割して境界を検出する。
また、境界検出モジュール12Aは、境界近傍に位置する黒画素塊のサイズを検出し、そのサイズに応じて、スリットの長さNを決定するようにしてもよい。より詳細には、境界近傍の黒画素領域で画素塊を抽出し、その外接矩形の大きさのヒストグラムから最も頻度の高いものを文字のサイズとして算出し、スリットの長さNはその文字サイズに適正な倍数(例えば、0.5〜2倍)を掛けた値とするのが望ましい。
文字の外形が直線ではないために、検出した境界には凹凸が発生する。境界検出モジュール12Aは、この凹凸の影響を削減して境界を検出するためのものである。
【0024】
境界検出モジュール12B、12C、12Dは、境界検出モジュール12Aと同様であり、各々入力画像11の下側、右側、左側にある境界を検出するものである。そして、入力画像11の辺部とは、入力画像11の各々下辺(y=0)、右辺(x=maxx)、左辺(x=0)のことである。そして、反対側の辺部に向けてとは、各々下方から上方へ向けて、右から左へ向けて、左から右へ向けての意である。
【0025】
境界傾き算出モジュール13Aは、境界検出モジュール12A、画像傾き算出モジュール14と接続されており、境界検出モジュール12Aによって検出された境界の水平からの傾き角度を算出し、その傾き角度を画像傾き算出モジュール14へ渡す。より詳細には、境界検出モジュール12Aによって分割されたセグメント毎に傾き角度を算出する。また、境界検出モジュール12Aが傾き角度の算出に用いたセグメント毎に含まれる黒画素数に基づいて、各セグメントの傾き角度に重み付けを行い、入力画像11全体の傾き角度を算出するようにしてもよい。
境界傾き算出モジュール13B、13C、13Dは、境界傾き算出モジュール13Aと同様であり、各々入力画像11の下側、右側、左側にある境界の傾き角度を算出するものである。そして、境界傾き算出モジュール13C、13Dは、境界の垂直からの傾き角度を算出する。
【0026】
画像傾き算出モジュール14は、境界傾き算出モジュール13A、境界傾き算出モジュール13B、境界傾き算出モジュール13C、境界傾き算出モジュール13D、画像回転モジュール15と接続されている。境界傾き算出モジュール13A、境界傾き算出モジュール13B、境界傾き算出モジュール13C、境界傾き算出モジュール13Dによって各々算出された境界の傾き角度に基づいて、入力画像11全体の傾き角度を算出し、その入力画像11の傾き角度を画像回転モジュール15へ渡す。入力画像11全体の傾き角度を算出するとは、例えば、各々算出された境界の傾き角度の平均や最頻値などの公知の統計処理を施すことにより行う。
画像回転モジュール15は、画像傾き算出モジュール14と接続されており、画像傾き算出モジュール14から入力画像11の傾き角度及び対象となっている入力画像11を受け取り、その傾きに応じて入力画像11を回転し、出力画像16を生成する。入力画像11の回転はアフィン変換等を用いて行う。
【0027】
なお、境界検出モジュール(12A、12B、12C、12D)と境界傾き算出モジュール(13A、13B、13C、13D)は、各々4つずつあるが、1つずつであってもよい。その場合、境界検出モジュールに与えるパラメータ(上下右左の種別)によって、画像の上下右左のいずれかの境界を検出し、同様に、境界傾き算出モジュールに与えるパラメータ(上下右左の種別)によって、画像の上下右左のいずれかの境界の傾き角度を算出し、これを4回繰り返すようにしてもよい。また、境界検出モジュールが上下右左の全ての境界を検出した後に、境界傾き算出モジュールがそれぞれの境界の傾き角度を算出するようにしてもよい。
【0028】
また、入力画像11の4方向全ての境界の検出及びその傾きの算出を行っているが、1つの周辺部を対象としてもよく、より精度を高めるために上下左右のうち少なくとも2つの周辺部に適用するようにしてもよい。
つまり、文書には文字・表罫線・写真・グラフィックスなどが含まれる。本実施の形態における余白領域と黒画素領域の境界の検出は、文字・表罫線には有効であるが、写真・グラフィックスの場合には文字・表罫線の場合に比較すると精度が高くない傾向がある。すなわち、もし画像周辺の黒画素領域が写真・グラフィックスであると精度が低下する恐れがある。そこで、画像の上下左右に4箇所ある余白領域のうち少なくとも2つ以上の余白領域に対して黒画素領域との境界を検出することで複数の境界を得て、黒画素領域が写真・グラフィックスである場合の影響を抑えるようにしてもよい。
【0029】
次に作用・働き(動作)を説明する。
図2は、境界検出モジュールが行う処理例を示すフローチャートである。境界検出モジュール12Bが行う処理、つまり、画像の下部の余白領域と黒画素領域との境界を検出する処理例について説明する。
図2に示すフローチャートの前半(ステップS200〜ステップS220)は、スリット走査(下から上)で最初に検出した黒画素の位置を記憶する処理を、走査位置を左から右にずらしながら繰り返し、余白領域と黒画像領域の境界に位置する黒画素を複数検出する処理例を示すものである。後半(ステップS222〜ステップS236)は、この複数の黒画素が上下に大きく離れるところで複数のセグメントに分割する処理例を示すものである。
【0030】
ステップS202では、入力画像11を取得する。画像を取得するとは、スキャナで画像を読み込むこと、ファックスで画像を受信すること、画像データベース等から画像を読み出すこと等が含まれる。また、画像の周辺部には黒枠が無くてもよい。つまり、スキャナの画像幅が紙幅より常に広くなっていることを要せず、又は紙を載せずにスキャンすると画像が必ず黒くなることも必要としないスキャナを用いて読み込んだ画像であってもよい。その画像は、1枚であってもよいし、複数枚の画像であってもよい。また、画像の内容として、ビジネス用に用いられる文書、広告宣伝用のパンフレット等であってもよい。
【0031】
ステップS204では、入力画像11の下部(下辺から所定領域内)にある文字のサイズを算出する。
ステップS206では、ステップS204で算出した文字サイズに基づいて、スリットの長さNを決定する。以下、スリットの大きさを1×Nとして説明する。
ステップS208では、初期状態として左下隅にスリットを設定する。このスリットは、スリット内にある画素で黒画素があるか否かを判断するためのものである。
ステップS210では、スリット内に黒画素があるか否かを判断する。黒画素がある場合はステップS214へ進み、ない場合はステップS212へ進む。
ステップS212では、スリット内に黒画素がない場合であり、スリットを上方向に移動させる。つまり、そのスリット長さの範囲で最下端にある黒画素が見つかるまでステップS210、ステップS212の処理を繰り返す。
ステップS214では、その黒画素の位置(xy座標)を記憶する。スリット内に複数の黒画素がある場合は、その全ての黒画素の位置であってもよい。
【0032】
ステップS216では、スリットを最下段に戻す。
ステップS218では、スリットを右方向にNドット移動する。
ステップS220では、ステップS218の処理によってスリットは画像内に収まっているか否かを判断する。画像内にある場合はステップS210へ戻り、画像内にない場合はステップS222へ進む。つまり、スリットを左端から右端へ移動させるまでステップS210〜ステップS220の処理を繰り返す。
【0033】
ステップS222では、変数i、jに1を代入する。ここでの変数iは、ステップS214で記憶された黒画素の位置を特定するものである。変数jは、セグメントを特定するものである。
ステップS224では、i番目とi+1番目の黒画素位置を取得する。
ステップS226では、i番目とi+1番目の黒画素位置の上下方向(y座標の差)が所定範囲内か否かを判断する。所定範囲内であればステップS228へ進み、それ以外であればステップS232へ進む。つまり、黒画素のy座標で比較した場合に近傍にあるか否かを判断しており、近傍にあるとは黒画素の位置は直線に近似していることを表している。
ステップS228では、j番目のセグメントの要素としてi+1番目の黒画素位置を記憶する。つまり、近傍に位置する黒画素を同一のセグメントに分類する。
ステップS230では、i+1をiに代入する(iをインクリメントする)。つまり、次の黒画素を対象とする。
【0034】
ステップS232では、i+1をi、j+1をjに各々代入する。つまり、次の黒画素を対象とし、新しいセグメントを生成する。
ステップS234では、iは全黒画素数以下であるか否かを判断し、全黒画素数以下であればステップS224へ戻り、それ以外の場合は終了する(ステップS236)。つまり、ステップS214で記憶された全ての黒画素に対してセグメント化の処理(ステップS224〜ステップS232)を施したか否かを判断している。
【0035】
図3は、境界検出モジュールによる処理例を示す説明図である。
図3(b)に示している境界線検出画像32は、図3(a)に示している原画像31に対して、境界検出モジュール12Bによる処理(図2で示したフローチャートの処理)を施した結果である。なお、境界線検出画像32内の白い点がステップS214によって記憶された黒画素を表している。つまり、原画像31内のスリット単位内での最下端の黒画素の位置であり、原画像31の傾きを算出するための境界の候補である。
【0036】
図4は、境界傾き算出モジュールが行う処理例を示すフローチャートである。境界検出モジュールが検出した、セグメント分けされた「境界に位置する黒画素列」の位置情報から、各セグメントの傾きを算出する処理例である。
ステップS402では、セグメント数を取得し、変数mにその数を代入する。セグメント数は、図2に示したフローチャートでは最終的な変数jの値が該当する。
ステップS404では、変数iに1を代入する。ここでの変数iは、セグメントを特定するものである。
【0037】
ステップS406では、i番目のセグメントに属する黒画素列を取得する。つまり、着目しているセグメントに属する黒画素列を取得することであり、詳細には図2に示したフローチャートでステップS228でセグメントの要素として記憶された黒画素を取得する。そして、その黒画素を計数する。
ステップS408では、ステップS406で計数した黒画素数がT以上であるか否かを判断する。T以上であるならばステップS410へ進み、それ以外であるならばステップS416へ進む。つまり、取得した黒画素数が所定値(T)未満なら、ステップS414等(最小二乗法など)の処理に適さないため、これらの処理をバイパスする。例えば、黒画素数=1のときは最小二乗法の計算式でエラーが起きるため、これを除外する目的でT=2としてもよい。また、黒画素数が非常に少ない場合は最小二乗法で求めた傾きに大きな誤差が含まれているため、これを除外する場合はT=3又はT=4としてもよい。
【0038】
ステップS410では、最小二乗法で直線近似を行う。つまり、あるセグメントに属するn個の黒画素数を対象とした場合、その位置を数1とする。
【数1】

求めたい直線の式を数2とする。
【数2】

aとbは、数3のように表すことができる。
【数3】

すなわち、各黒画素の位置から数3を用いてa、bを求め、数2に代入することによって近似の直線式を得ることができる。
【0039】
ステップS412では、ステップS410で求めた直線の近似式より傾きを算出する。つまり、数2のaより水平又は垂直からの傾きを算出する。
ステップS414では、ステップS412で算出された傾きと黒画素数とを対応させて記憶する。このデータ構造を、図5(a)の傾き元情報51に示す。傾き元情報51は、位置欄511、傾き(角度)欄512、精度情報欄513を有している。位置欄511は、どの境界算出モジュールが処理したかを記憶しており、境界検出モジュール12Aは上、12Bは下、12Cは右、12Dは左である。傾き(角度)欄512はセグメントを近似した直線の傾き、精度情報欄513はそのセグメント内の黒画素数を記憶している。
ステップS416では、変数iにi+1を代入する。つまり、次のセグメントを対象とする。
ステップS418では、iはm以下であるか否かを判断する。以下であればステップS406へ戻り、それ以外の場合は終了する(ステップS420)。つまり、全てのセグメントに対して処理を終了したか否かを判断する。
【0040】
図5は、画像傾き算出モジュール14が処理対象とするデータの例を示す説明図である。図5(a)に示す傾き元情報51は、画像傾き算出モジュール14が入力するデータ(境界傾き算出モジュール13A等が画像傾き算出モジュール14へ渡すデータ)である。図5(b)に示す重み付き傾き情報52は、近似直線の傾きとその重みのデータである。重み付き傾き情報52は、傾き(方向を考慮)欄521、重み欄522を有している。ここで重みを用いるのは、長いセグメント(黒画素数が多いセグメント)から算出した傾きと、短いセグメントから算出したセグメントでは精度が異なるため、セグメントの長短を加味してより正確な画像全体の傾き角度を得るためである。
【0041】
画像傾き算出モジュール14は、次の3つの処理を行う。
(1)傾き元情報51の傾き(角度)欄512に記憶されている傾きから、方向を考慮した傾きを算出して、重み付き傾き情報52の傾き(方向を考慮)欄521に記憶する。つまり、位置欄511が「上」であるならばそのまま、「下」であるならば180度減算し、「右」であるならば270度減算し、「左」であるならば90度減算する。
(2)傾き元情報51の精度情報欄513に記憶されている精度情報(傾き算出に用いた黒画素数)から、重みを算出して、重み付き傾き情報52の重み欄522に記憶する。ここでの重み付けは、精度情報欄513に記憶されている黒画素数の合計に対する割合である。つまり、図5の例で1行目にある傾き「3.59」の重みは、精度情報欄513に記憶されている黒画素数の合計である257に対する38の割合0.148(38/257)である。
(3)重み付き傾き情報52を用いて、傾きの加重平均を算出して、これを画像全体の傾きとする。重み付き傾き情報52の例では2.94度となる。
次に、画像回転モジュール15は、画像傾き算出モジュール14によって算出された画像全体の傾きを修正する方向に回転させる。つまり、図5に示した例では−2.94度回転させる。
【0042】
図6を参照して、本実施の形態のハードウェア構成例について説明する。図6に示す構成は、例えばパーソナルコンピュータ(PC)などによって構成されるものであり、スキャナ等のデータ読み取り部617と、プリンタなどのデータ出力部618を備えたハードウェア構成例を示している。
【0043】
CPU(Central Processing Unit)601は、前述の実施の形態において説明した各種のモジュール、すなわち、境界検出モジュール12A、境界傾き算出モジュール13A、画像傾き算出モジュール14、画像回転モジュール15等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【0044】
ROM(Read Only Memory)602は、CPU601が使用するプログラムや演算パラメータ等を格納する。RAM(Random Access Memory)603は、CPU601の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはCPUバスなどから構成されるホストバス604により相互に接続されている。
【0045】
ホストバス604は、ブリッジ605を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス606に接続されている。
【0046】
キーボード608、マウス等のポインティングデバイス609は、操作者により操作される入力デバイスである。ディスプレイ610は、液晶表示装置又はCRT(Cathode Ray Tube)などからなり、各種情報をテキストやイメージ情報として表示する。
【0047】
HDD(Hard Disk Drive)611は、ハードディスクを内蔵し、ハードディスクを駆動し、CPU601によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、入力画像11や出力画像16などが格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
【0048】
ドライブ612は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体613に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース607、外部バス606、ブリッジ605、及びホストバス604を介して接続されているRAM603に供給する。リムーバブル記録媒体613も、ハードディスクと同様のデータ記録領域として利用可能である。
【0049】
接続ポート614は、外部接続機器615を接続するポートであり、USB、IEEE1394等の接続部を持つ。接続ポート614は、インタフェース607、及び外部バス606、ブリッジ605、ホストバス604等を介してCPU601等に接続されている。通信部616は、ネットワークに接続され、外部とのデータ通信処理を実行する。データ読み取り部617は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部618は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
【0050】
なお、図6に示すハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、図6に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えば特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図6に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などに組み込まれていてもよい。
【0051】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
【図面の簡単な説明】
【0052】
【図1】本実施の形態の構成例についての概念的なモジュール構成図である。
【図2】境界検出モジュールが行う処理例を示すフローチャートである。
【図3】境界検出モジュールによる処理例を示す説明図である。
【図4】境界傾き算出モジュールが行う処理例を示すフローチャートである。
【図5】画像傾き算出モジュールが処理対象とするデータの例を示す説明図である。
【図6】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【符号の説明】
【0053】
11…入力画像
12A…境界検出モジュール
12B…境界検出モジュール
12C…境界検出モジュール
12D…境界検出モジュール
13A…境界傾き算出モジュール
13B…境界傾き算出モジュール
13C…境界傾き算出モジュール
13D…境界傾き算出モジュール
14…画像傾き算出モジュール
15…画像回転モジュール
16…出力画像

【特許請求の範囲】
【請求項1】
画像の辺部から複数画素の領域を用いて、反対側の辺部に向けて走査することによって検出した黒画素の位置に基づいて、該画像の周辺部にある余白領域と該画像の黒画素領域との境界を検出する境界検出手段と、
前記境界検出手段によって検出された境界の水平又は垂直からの傾き角度を算出する境界傾き算出手段と、
前記境界傾き算出手段によって算出された境界の傾き角度に基づいて、前記画像全体の傾き角度を算出する画像傾き算出手段
を具備することを特徴とする画像処理装置。
【請求項2】
前記境界検出手段は、複数の境界を検出し、
前記境界傾き算出手段は、前記境界検出手段によって検出された複数の境界の傾き角度を各々算出し、
前記画像傾き算出手段は、複数の境界の傾き角度に基づいて、前記画像全体の傾き角度を算出する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記境界検出手段は、走査して得た複数の黒画素を直線の近傍に位置するものからなるセグメントに分割して境界を検出し、
前記境界傾き算出手段は、前記境界検出手段によって分割されたセグメント毎に傾き角度を算出する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記画像傾き算出手段は、前記境界傾き算出手段が傾き角度の算出に用いたセグメント毎に含まれる黒画素数に基づいて、各セグメントの傾き角度に重み付けを行い、前記画像全体の傾き角度を算出する
ことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記境界検出手段は、境界近傍に位置する黒画素塊のサイズを検出し、該サイズに応じて、前記境界検出手段が用いる複数画素の領域の長さを決定する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項6】
コンピュータを、
画像の辺部から複数画素の領域を用いて、反対側の辺部に向けて走査することによって検出した黒画素の位置に基づいて、該画像の周辺部にある余白領域と該画像の黒画素領域との境界を検出する境界検出手段と、
前記境界検出手段によって検出された境界の水平又は垂直からの傾き角度を算出する境界傾き算出手段と、
前記境界傾き算出手段によって算出された境界の傾き角度に基づいて、前記画像全体の傾き角度を算出する画像傾き算出手段
として機能させることを特徴とする画像処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2009−123155(P2009−123155A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2007−299264(P2007−299264)
【出願日】平成19年11月19日(2007.11.19)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】