JP2005165822A - 用紙傾き検出装置、用紙傾き検出方法及びプログラム - Google Patents
用紙傾き検出装置、用紙傾き検出方法及びプログラム Download PDFInfo
- Publication number
- JP2005165822A JP2005165822A JP2003405746A JP2003405746A JP2005165822A JP 2005165822 A JP2005165822 A JP 2005165822A JP 2003405746 A JP2003405746 A JP 2003405746A JP 2003405746 A JP2003405746 A JP 2003405746A JP 2005165822 A JP2005165822 A JP 2005165822A
- Authority
- JP
- Japan
- Prior art keywords
- paper
- straight line
- image
- black
- inclination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Character Input (AREA)
- Image Analysis (AREA)
Abstract
【課題】用紙の撮影画像からその用紙の傾きを簡単な方法で正確に検出することのできる用紙傾き検出装置を提供する。
【解決手段】画像入力装置12を通じて入力された用紙10の画像データは画像処理装置13にて二値化処理された後、水平方向をX軸、垂直方向をY軸とした画像メモリ15に画素単位で展開される。ここで、CPU11は、まず、垂直方向または水平方向の少なくとも一方向からのスキャニングにより、画像メモリ15の中で白黒反転している座標を検査する。そして、最初の白黒反転座標を開始位置として、その開始位置から白黒反転座標が一方向に連続してなる直線を用紙10の外形線の一辺として検出し、その直線の傾き角度を用紙10の傾き角度として算出する。
【選択図】 図1
【解決手段】画像入力装置12を通じて入力された用紙10の画像データは画像処理装置13にて二値化処理された後、水平方向をX軸、垂直方向をY軸とした画像メモリ15に画素単位で展開される。ここで、CPU11は、まず、垂直方向または水平方向の少なくとも一方向からのスキャニングにより、画像メモリ15の中で白黒反転している座標を検査する。そして、最初の白黒反転座標を開始位置として、その開始位置から白黒反転座標が一方向に連続してなる直線を用紙10の外形線の一辺として検出し、その直線の傾き角度を用紙10の傾き角度として算出する。
【選択図】 図1
Description
本発明は、用紙の傾きを検出するための用紙傾き検出装置、用紙傾き検出方法及びプログラムに関する。
例えば、文字認識装置では、カメラで用紙を撮影し、その撮影画像から用紙に印刷された文字を認識処理するものがある。この場合、用紙が傾いて撮影されていると、文字の認識精度に大きく影響するため、例えば用紙の傾き検出用の特殊なマークを用紙の所定位置に付けておき、文字認識の際にそのマークを基準にして用紙の傾きを補正することが一般的に行われている。
従来、この種のマークを必要とせずに、撮影画像から用紙の傾きを検出する画像処理方法として、例えば特許文献1に開示されている方法が知られている。この特許文献1では、原稿台に載置された用紙を撮影し、その撮影画像から用紙と原稿台との濃度差から用紙のエッジ(輪郭)を検出して、当該用紙の傾きを補正している。
特開2000−228719号公報
上述したように、文字認識装置などでは、撮影対象となる用紙に傾き検出用の特殊なマークを付けておくことで、そのマークを基準にして用紙の傾きを検出することが行われている。しかしながら、このような方法では、撮影対象とする用紙を自由に選べないなどの問題がある。
また、前記特許文献1などの画像処理の分野で知られている用紙のエッジ検出の方法は、一般的に複雑なアルゴリズムを必要とするため、より簡単な方法が求められるものである。
そこで、本発明は、用紙の撮影画像からその用紙の傾きを簡単な方法で正確に検出することのできる用紙傾き検出装置、用紙傾き検出方法及びプログラムを提供することを目的とする。
本発明の用紙傾き検出装置は、用紙の撮影画像を入力する画像入力手段と、この画像入力手段によって入力された撮影画像を二値化処理して得られる画像データを、水平方向をX軸、垂直方向をY軸とした画像メモリに画素単位で展開する画像展開手段と、この画像展開手段によって前記画像メモリに展開された画像データを垂直方向または水平方向の少なくとも一方向からスキャンして前記画像メモリの中で白黒反転している座標を検査する反転検査手段と、この反転検査手段によって得られた最初の白黒反転座標を開始位置として、その開始位置から白黒反転座標が一方向に連続してなる直線を前記用紙の外形線の一辺として検出する直線検出手段と、この直線検査手段によって検出された直線の傾き角度を前記用紙の傾き角度として算出する傾き角度算出手段とを具備して構成される。
このような構成によれば、用紙をカメラ等で撮影したときの画像データが画像メモリに展開された際に、垂直方向または水平方向の少なくとも一方向からのスキャニングにより、前記画像メモリの中で白黒反転している座標が検査される。そして、最初の白黒反転座標を開始位置として、その開始位置から白黒反転座標が一方向に連続してなる直線が前記用紙の外形線の一辺として検出され、その直線の傾き角度が前記用紙の傾き角度として算出される。
このように、画像メモリに展開された用紙の画像データに対し、一方向に連続する白黒反転座標を検査し、これらを結ぶ直線を用紙の外形線の一辺と見なして、その直線の傾き角度を求めることで、用紙がどの程度傾いて撮影されたのかを簡単かつ正確に検出することができる。
また、前記反転検査手段において、前記画像メモリに展開された画像データを上下左右の4方向からスキャンして前記画像メモリの中で前記用紙の外形線を構成する4辺の直線に対応した白黒反転座標をそれぞれ検査する構成とすれば、これらの直線の角度から用紙の傾きをより正確に求めることができる。
また、前記直線検出手段において、白黒反転座標の連続性が途絶える個数を計数し、その計数値が予め用紙サイズによって決められた所定数内であれば現在処理対象としている直線を有効とし、前記所定数を超えた場合にはその直線を無効とすることで、例えば画像デーの読み取り状態が悪く、用紙の外形線が所々で欠けているような場合に対処することができる。
また、前記傾き角度算出手段において、前記直線検査手段によって検出された直線の長さと予め用紙サイズによって決められた所定の長さとを比較し、前記直線の長さが前記所定の長さを満したときに、その直線の開始位置と終了位置の各座標値に基づいて前記用紙の傾き角度を算出することで、所定の長さを満足する直線を処理対象として正確に傾き角度を求めることができる。
以上のように本発明によれば、画像メモリに展開された用紙の画像データに対し、一方向に連続する白黒反転座標を検査し、これらを結ぶ直線を用紙の外形線の一辺と見なして、その直線の傾き角度を求めるようにしたことで、用紙に傾き検出用の特殊なマークがなくとも、その用紙の傾きを簡単かつ正確に検出することができ、例えば用紙に印刷された文字の認識処理を行う際に、その傾き角度を補正して正しく文字認識を行うことができるようになる。
以下、図面を参照して本発明の実施形態を説明する。
(第1の実施形態)
図1は本発明の第1の実施形態に係る用紙傾き検出装置の回路構成を示すブロック図である。この用紙傾き検出装置は、例えば撮影画像から用紙上の文字を読み取る文字読取装置などに適用されるものである。
図1は本発明の第1の実施形態に係る用紙傾き検出装置の回路構成を示すブロック図である。この用紙傾き検出装置は、例えば撮影画像から用紙上の文字を読み取る文字読取装置などに適用されるものである。
図1に示すように、本実施形態における用紙傾き検出装置は、マイクロプロセッサであるCPU11を備えると共に、このCPU11によって動作が制御される画像入力装置12、画像処理装置13、そして、ROM14、画像メモリ15、第1のパラメータテーブル16および第2のパラメータテーブル17といった各種メモリデバイスを備えて構成される。
CPU11は、本装置全体の制御を司るものであり、ROM14などに記憶されたプログラムを読み込むことにより、そのプログラムに記述された手順に従って各種処理を実行する。
画像入力装置12は、例えばカメラやスキャナなどからなり、図示せぬ原稿台などに載置された用紙10の文字印刷面を撮影して、その撮影された画像データの入力を行う。なお、用紙10の色は白であり、この用紙10を載せる原稿台の色は用紙10と区別可能な色、例えば黒であるとする。画像処理装置13は、この画像入力装置12から入力された用紙10の画像データを二値化するなどの所定の画像処理を行う。
ROM14は、CPU11の起動に必要なプログラムを含む各種データを予め記憶している。画像メモリ15は、所定サイズのイメージメモリであり、画像処理装置13によって二値化処理された用紙10の画像データを記憶する。
第1のパラメータテーブル16および第2のパラメータテーブル17は、用紙の傾きを検出するための各種パラメータ値を記憶したテーブルである。なお、第1のパラメータテーブル16に記憶される各パラメータ値については後に図3を参照して説明し、第2のパラメータテーブル17に記憶される各パラメータ値については後に図8を参照して説明する。
また、この用紙傾き検出装置には、表示装置18、入力装置19、電源装置20、媒体読取り装置21などが備えられる。
表示装置18は、例えばLCD(Liquid Crystal Display)などからなり、用紙の読み取り結果やメニュー画面等の表示を行う。入力装置19は、例えばキーボード等からなり、各種操作指示などを行う場合に用いられる。電源装置20は、各部の駆動に必要な電源電圧の供給制御を行う。
媒体読取り装置21は、記録媒体22に記録されたプログラムを含む各種情報の読み取りを行うための装置であり、例えば磁気ディスク装置等の外部記憶装置からなる。記録媒体22は、この媒体読取り装置21に用いられるメディアであり、例えば磁気ディスクなどである。
ここで、本実施形態における用紙傾き検出装置の処理動作を説明する前に、理解を容易にするため、図2を用いて本装置によって実現される用紙傾き検出方法について説明しておく。
図2はその説明図であり、原稿台に傾いて置かれた用紙10が撮影され、用紙10の撮影画像が右上がりに傾いて画像メモリ15に展開された状態を示している。図中のD1は用紙10の画像データである。
図2に示すように、画像の横方向をX軸、縦方向をY軸として、2値化された画像データが用紙10の色は白“0”で、その用紙10の周りに存在する原稿台の色が黒“1”として記憶されている。傾き検出は、図中の点線で示すように画像の原点OからX軸方向に移動しつつ垂直スキャン(上から下方向へのスキャン)を繰り返し、白黒が反転している箇所(データ値“1”と“0”が反転している座標)を検査することで行われる。
ここで、最初に見つけた白黒反転箇所をP1とすると、そこから次のX方向に移動した位置で再び続けて垂直スキャンを繰り返して連続する反転位置を見つけ出す。そして、P1から一方向に連続して所定の長さLだけ移動させた白黒反転箇所P2を見い出したとすると、このP1−P2の直線を用紙10の外形線の一辺と見なし、そのP1とP2の各座標値から用紙10がどの程度傾いているのかを算出する。
前記所定の長さLは、用紙10の撮影画像の横サイズから決められる。つまり、このLの長さ分だけ白黒反転箇所が一方向に連続していれば、用紙10の外形線の一辺と見なされる。
第1のパラメータテーブル16には、このような傾き検出に用いられる各種パラメータ値が設定される。図3にその一例を示す。ここでは、各種パラメータを以下のように定義している。なお、“rev”とは、反転(revers)のことである。“NopCount”とは不連続カウンタのことである。また、横座標/縦座標とは、図2に示すように、画像メモリ15のX座標(水平方向の座標)、Y座標(垂直方向の座標)のことである。
sizeX :調査対象画像の横pixel数
sizeY :調査対象画像の縦pixel数
revX :反転調査対象pixelの横座標
revY :反転調査対象pixelの縦座標
startX :直線の開始位置と判断したpixelの横座標
startY :直線の開始位置と判断したpixelの縦座標
PrePoint:前回検出したpixelの縦座標
NopCount:反転検出できなかった回数
angle :反転検出時の検出角度
PreAngle:前回反転検出時の検出角度
n :直線と認識するためのpixel数算出の係数
GetAngle:開始点と最終測定点との間で算出される最終角度
以下に、図4および図5に示すフローチャートを参照しながら、本装置の具体的な処理動作について説明する。
sizeY :調査対象画像の縦pixel数
revX :反転調査対象pixelの横座標
revY :反転調査対象pixelの縦座標
startX :直線の開始位置と判断したpixelの横座標
startY :直線の開始位置と判断したpixelの縦座標
PrePoint:前回検出したpixelの縦座標
NopCount:反転検出できなかった回数
angle :反転検出時の検出角度
PreAngle:前回反転検出時の検出角度
n :直線と認識するためのpixel数算出の係数
GetAngle:開始点と最終測定点との間で算出される最終角度
以下に、図4および図5に示すフローチャートを参照しながら、本装置の具体的な処理動作について説明する。
図4は本装置の第1の実施形態における処理動作を示すフローチャートであり、用紙10の撮影画像を取得してから用紙10の傾きを検出するまでの処理手順(アルゴリズム)が示されている。なお、このフローチャートで示される各処理は、本装置に備えられたマイクロプロセッサであるCPU11がROM14などに記憶されたプログラムを読み込むことにより実行される。
まず、用紙10の画像データが画像入力装置12を通じて取得される(ステップA11)。その際、このとき得られた用紙10の画像データを検査対象画像として、横方向(水平方向)のpixel数と、縦方向(垂直方向)のpixel数が求められ、横pixel数=sizeX、縦pixel数=sizeYとして、図3に示す第1のパラメータテーブル16にセットされる(ステップA12)。
次に、この画像データが画像処理装置13によって二値化されて、図2に示したように所定サイズの画像メモリ15に画素単位で展開される(ステップA13)。この画像メモリ15に展開された画像データD1の各pixel(画素)の座標値は、水平方向をX軸、垂直方向をY軸として表される。
ここで、画像メモリ15に展開された画像データD1から以下のような手順で用紙10の傾きが検出される。
すなわち、CPU11は、まず、反転調査対象pixelの横座標を示すrevXを初期設定(revX=0)した後(ステップA14)、画像メモリ15の原点(0,0)を起点にして上から下に向かって垂直スキャンを行い、白黒反転された座標(revX,revY)を調査する(ステップA15)。
図5にこのときの反転調査処理のフローチャートを示す。このフローチャートでは、ある列に含まれる各画素を上から下に2画素ずつ順に抽出していき、その2画素間で白黒の反転が見つかったら、そこを用紙10の外形線(輪郭)として認識する処理が示されている。
この図5に示すように、CPU11は、まず、反転調査対象pixelの縦座標を示すrevYを0として(ステップB11)、同じ列の中の隣接する2つの画素(revX,revY)と(revX,revY+1)の白黒状態を比較する(ステップB12)。その結果、両者間に白黒の反転が見られなかった場合には(ステップB12のYes)、revYをインクリメントして次の画素に進む(ステップB13)。なお、図中の「++」の記号は更新を表している。
この場合、revX=0であれば、画像メモリ15上の(0,0)と(0,1)、(0,1)と(0,2)、(0,2)と(0,3)、(0,3)と(0,4)…といったように、revX=0の位置から縦一列に2画素毎に白黒反転座標を順次チェックしていくことになる。
ここで、用紙10の画像データD1の縦pixel数をsizeYとした場合に、revY=sizeYになると(ステップB14のYes)、当該検査対象とする列の最後の画素までチェックしたことになるので、ここでの処理を抜ける。
一方、画像メモリ15の垂直スキャンにより、隣接する2つ画素の(revX,revY)と(revX,revY+1)の間に白黒反転を検出できた場合には(ステップB12のNo)、CPU11はそこが用紙10の外形線(輪郭)に相当するものと判断し、その座標点を傾き検出用の直線の開始位置として定める。図2の例では、点P1がこれに当たる。
このようにして最初の白黒反転位置が見つかると、処理対象を隣の列に移して前記同様に反転座標の調査を行う。その際に、反転座標が見つからないと、revY=sizeYとなるので、そのときには不連続カウンタNopCountをインクリメントする。このNopCountは、例えば画像データD1の読み取り状態が悪く、用紙10の外形線が所々で欠けているような場合に対処するものである。このNopCountの値が予め用意サイズによって決められた所定の値n以上になるとやり直しになる(ステップA16〜A23)。
詳しく説明すると、図4に示すように、前記ステップA15の反転調査処理の後、CPU11は、まず、revXをインクリメントして処理対象を隣の列に移す(ステップA16)。その際、上述した図5の反転調査処理にて白黒反転座標が見つかっているか否かを確認するため、CPU11は現在のrevYの値がsizeYであるか否かを判断する(ステップA17)。
前記反転調査処理で白黒反転座標が見つかっていなければ、revY=sizeYになっており(ステップA17のYes)、そのときにステップA15の処理に戻って次の列に対して反転調査を繰り返すことになる。
一方、前記反転調査処理で白黒反転座標が見つかっていれば、revY=sizeYでないので(ステップA17のNo)、その座標点(revX,revY)を傾き検出用の直線の開始位置として定めるべく、startY=revY,startX=revXをセットする。また、その際に、不連続カウンタNopCountを0クリアしておくと共に、前回検出した縦座標を示すPrePointにstartYをセットしておく(ステップA18)。
以後同様にして、CPU11は、revXを更新しながら垂直スキャンを繰り返して、白黒反転している画素をX軸方向に検査していく(ステップA19,A20)。上述したように、その調査中にrevY=sizeYとなれば(ステップA21のYes)、不連続カウンタNopCountをインクリメントし(ステップA22)、その値が所定値nを越えてしまった場合には(ステップA23のNo)、現在検査対象としている直線を無効とし、新たな直線を検出するべくステップA15からの処理に戻ってやり直すことになる。
また、revY=sizeYでなければ(ステップA21のNo)、隣の列で白黒反転座標が見つかったことであり、その場合には、当該列の白黒反転座標と前回検出した白黒反転座標とを比較して両者の座標点を結ぶ直線の傾き状態を検出する(ステップA24〜A26)。
この場合、前回検出した白黒反転座標(Y座標)は前記ステップA18にてPrePointにセットされており、CPU11はそのPrePointと今回の反転調査処理で得られたrevYとを比較する(ステップA24)。
その結果、PrePoint<revYであれば、つまり、今回検出した白黒反転座標のY座標が前回検出した白黒反転座標よりも大きければ(ステップA24のYes)、両者間を結ぶ直線は右下方向に傾いていることであり、CPU11は検出角度angleに「Minus」をセットする(ステップA25)。
逆に、PrePoint>revYであれば、つまり、今回検出した白黒反転座標のY座標が前回検出した白黒反転座標よりも小さければ(ステップA24のNo)、両者間を結ぶ直線は右上方向に傾いていることであり、CPU11は検出角度angleに「Plus」をセットする(ステップA26)。
なお、「Minus」はマイナス方向の傾き、「Plus」はプラス方向の傾きを表している。図2の例では、点P1と点P2を結ぶ直線は右上がりであり、これをプラス方向の傾きとする。
ここで、最初の反転列の隣の列で白黒反転座標が見つかったのか否かを判断するために、CPU11は(revX−startX−NopCount)を求める(ステップA27)。その結果、(revX−startX−NopCount)=1であれば(ステップA27のYes)、最初の反転列の隣の列で白黒反転座標が見つかったものと判断して、CPU11は前回反転検出時の検出角度を示すPreAngleに前記ステップA24の処理で得られた現在の検出角度angle(Minus/Plus)をセットする(ステップA28)。
このようにして、PreAngleをセットすると、CPU11は現在処理対象として得られている直線(revX−startX)が傾きを検出できる長さを有しているか否かを判断する(ステップA29)。これは、予め用紙サイズによって決められた所定の値(sizeX/n)を傾き検出可能な長さの条件とし、現在処理対象として得られている直線(revX−startX)がこの長さを満足しているか否かをチェックすることで判断する。
(revX−startX)<(sizeX/n)であれば、つまり、現在処理対象として得られている直線の長さが前記条件を満たしていなければ(ステップA29のYes)、CPU11はPrePointに現在のrevYをセットし直して(ステップA30)、ステップA19からの処理を繰り返すことになる。
なお、PrePointに現在のrevYをセットしたときに、CPU11はrevXの値を確認する(ステップA30)。その結果、revX=sizeXに達してしまった場合には(ステップA31のNo)、直線の取得が失敗したものとして、ここで処理を終える。
また、PrePointの更新により、さらに次の列に対する反転検査処理を行った結果、そのときに得られた反転座標を結ぶ直線の傾きが前回までの直線の傾きと異なっていた場合、つまり、PreAngle=angleでなかった場合には(ステップA32のNo)、CPU11はステップA18からの処理に戻り、startX、startY、NopCount、PrePointをリセットして、反転検査処理を最初からやり直して新たな直線を探し出す。
また、今回得られた反転座標を結ぶ直線の傾きが前回までの直線の傾きと同じ方向であった場合には(ステップA32のYes)、CPU11はその反転座標を有効として、この時点までに得られた直線の長さ(revX−startX)が前記条件(sizeX/n)を満たすか否かを判断する(ステップA29)。その結果、まだ条件を満たしていないのであれば(ステップA29のYes)、その条件を満たすまで前記反転検査処理を繰り返す。
このようにして、前記反転検査処理により同じ方向に連続する直線を見つけ出す。そして、その一方向に連続する直線の長さが前記条件を満たすと、つまり、(revX−startX)=(sizeX/n)になれば(ステップA29のNo)、CPU11は当該直線の開始点の座標(startX,startY)と終了点の座標(revX,revY)に基づいて当該直線の傾き角度GetAngleを用紙10の傾き角度として算出する(ステップA33)。
すなわち、図2の例で言えば、点P1と点P2を結ぶ長さLの直線を傾き検査対象として、その点P1、P2の各X,Y座標から当該直線の傾き角度を用紙10の傾き角度として得る。
このように、画像メモリ15に展開された用紙10の画像データD1に対し、一方向に連続する白黒反転座標を検査し、これらを結ぶ直線が所定の長さを満たす場合に用紙10の外形線の一辺と見なして、その直線の傾き角度を求めることで、用紙10がどの程度傾いて撮影されたのかを簡単かつ正確に検出することができる。これにより、例えば用紙10に印刷された文字の認識処理を行う際に、その傾き角度を補正して正しく文字認識を行うことができる。
なお、このような方法による傾き検出では、画像サイズに対して一定の割合で直線が存在すればいいので、例えばサムネイル画像のように、処理対象となる画像データが縮小されていても適用可能である。
また、前記実施形態では、画像メモリ15の上から下方向に向かってスキャニングを行い白黒反転座標を検査したが、下から上方向へスキャニングしても良い。また、このような垂直方向のスキャニングに限らず、画像メモリ15の左から右方向、または、右から左方向へ水平スキャンして白黒反転座標を検査することでも良い。
さらに、例えば画像メモリ15の上から下方向へのスキャニングにより条件を満たす直線が得られなかった場合に、引き続き下から上方向へスキャニングするなど、別の方向からのスキャニングを続けて行って白黒反転座標を検査することでも良い。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
次に、本発明の第2の実施形態について説明する。
前記第1の実施形態では、上から下に向かう一方向の処理を行うものとしたが、第2の実施形態では、この処理を上下左右の4方向から行うことで、用紙の4辺の直線を検出するものである。
図6にこの様子を示す。図2と同様に用紙10の撮影画像が画像メモリ15に展開された状態を示している。図中のD1は用紙10の画像データである。また、画像メモリ15の横方向をX軸、縦方向をY軸として、用紙10の画像データD1の各ピクセスの座標値が表されている。
まず、第1方向のスキャンとして、画像メモリ15の上から下方向へ垂直スキャンして、用紙10の外形線を構成する4辺のうちの上辺10aに対応した直線を検出し、その直線の開始座標と角度を算出する。
次に、第2方向のスキャンとして、画像メモリ15の下から上方向へ垂直スキャンして、用紙10の外形線を構成する4辺のうちの下辺10bに対応した直線を検出し、その直線の開始座標と角度を算出する。
次に、第3方向のスキャンとして、画像メモリ15の左から右方向へ水平スキャンして、用紙10の外形線を構成する4辺のうちの左辺10cに対応した直線を検出し、その直線の開始座標と角度を算出する。
次に、第4方向のスキャンとして、画像メモリ15の右から左方向へ水平スキャンして、用紙10の外形線を構成する4辺のうちの左辺10dに対応した直線を検出し、その直線の開始座標と角度を算出する。
このようにして、4方向からのスキャニングにより用紙10の外形線を構成する4辺10a〜10dの直線を検出することにより、これらの直線の角度に基づいて用紙10の傾きをより正確に求めることができる。また、例えば図7に示すように、用紙10の一部がはみ出して撮影された場合であっても、他の直線の角度から用紙10の傾きを検出することができる。
さらに、これらの直線の交点Q1〜Q4を求めて射影変換処理を行うようにすれば、例えば用紙10が斜めに撮影された状態にあっても、その状態を補正して傾きのない画像にすることができる。
第2のパラメータテーブル17には、このような傾き検出に用いられる各種パラメータ値が設定される。図8にその一例を示す。ここでは、各種パラメータを以下のように定義している。なお、横座標/縦座標とは、図6に示すように、画像メモリ15のX座標(水平方向の座標)、Y座標(垂直方向の座標)のことである。
TopStartX :直線の開始位置と判断したpixelの横座標(上辺)
TopStartY :直線の開始位置と判断したpixelの縦座標(上辺)
TopAngle :上辺の算出角度
BottomStartX:直線の開始位置と判断したpixelの横座標(下辺)
BottomStartY:直線の開始位置と判断したpixelの縦座標(下辺)
BottomAngle :下辺の算出角度
LeftStartX :直線の開始位置と判断したpixelの横座標(左辺)
LeftStartY :直線の開始位置と判断したpixelの縦座標(左辺)
LeftAngle :左辺の算出角度
RightStartX :直線の開始位置と判断したpixelの横座標(右辺)
RightStartY :直線の開始位置と判断したpixelの縦座標(右辺)
RightAngle :右辺の算出角度
TopLeftX :検出領域の左上横座標
TopLeftY :検出領域の左上縦座標
TopRightX :検出領域の右上横座標
TopRightY :検出領域の右上縦座標
BottomLeftX :検出領域の左下横座標
BottomLeftY :検出領域の左下縦座標
BottomRightX:検出領域の右下横座標
BottomRightY:検出領域の右下縦座標
以下に、図9に示すフローチャートを参照しながら、第2の実施形態として具体的な処理動作について説明する。
TopStartY :直線の開始位置と判断したpixelの縦座標(上辺)
TopAngle :上辺の算出角度
BottomStartX:直線の開始位置と判断したpixelの横座標(下辺)
BottomStartY:直線の開始位置と判断したpixelの縦座標(下辺)
BottomAngle :下辺の算出角度
LeftStartX :直線の開始位置と判断したpixelの横座標(左辺)
LeftStartY :直線の開始位置と判断したpixelの縦座標(左辺)
LeftAngle :左辺の算出角度
RightStartX :直線の開始位置と判断したpixelの横座標(右辺)
RightStartY :直線の開始位置と判断したpixelの縦座標(右辺)
RightAngle :右辺の算出角度
TopLeftX :検出領域の左上横座標
TopLeftY :検出領域の左上縦座標
TopRightX :検出領域の右上横座標
TopRightY :検出領域の右上縦座標
BottomLeftX :検出領域の左下横座標
BottomLeftY :検出領域の左下縦座標
BottomRightX:検出領域の右下横座標
BottomRightY:検出領域の右下縦座標
以下に、図9に示すフローチャートを参照しながら、第2の実施形態として具体的な処理動作について説明する。
図9は本装置の第2の実施形態における処理動作を示すフローチャートであり、4方向からのスキャニングを行って用紙の4辺の直線を検出し、さらにこれらの交点から射影補正を行うまでの処理手順(アルゴリズム)が示されている。なお、このフローチャートで示される各処理は、本装置に備えられたマイクロプロセッサであるCPU11がROM14などに記憶されたプログラムを読み込むことにより実行される。
今、用紙10の画像データが画像入力装置12を通じて取得され、図6に示すように、画像処理装置13によって二値化された画像データD1が画像メモリ15に展開されているものとする。
この用紙10の画像データD1に対し、CPU11は、まず、画像メモリ15の画像メモリ15の上から下方向へ垂直スキャンして(第1方向のスキャン)、用紙10の外形線を構成する4辺のうちの上辺10aに対応した直線を検出し、その直線の開始座標と角度を算出する(ステップC11)。
なお、スキャニングによる直線の検出方法やその直線の傾きを検出する方法については、前記第1の実施形態と同様であるため、ここではその詳しい説明は省略するものとする。
ここで算出された上辺10aに対応した直線の開始座標は(TopStartX,TopStartY)として第2のパラメータテーブル17にセットされる。また、その上辺10aに対応した直線の角度はTopAngleとして第2のパラメータテーブル17にセットされる。
次に、CPU11は、画像メモリ15の画像メモリ15の下から上方向へ垂直スキャンして(第2方向のスキャン)、用紙10の外形線を構成する4辺のうちの上辺10bに対応した直線を検出し、その直線の開始座標と角度を算出する(ステップC12)。ここで算出された下辺10bに対応した直線の開始座標は(BottomStartX,BottomStartY)として、角度はBottomAngleとして、それぞれ第2のパラメータテーブル17にセットされる。
次に、CPU11は、画像メモリ15の画像メモリ15の左から右方向へ水平スキャンして(第3方向のスキャン)、用紙10の外形線を構成する4辺のうちの左辺10cに対応した直線を検出し、その直線の開始座標と角度を算出する(ステップC13)。ここで算出された左辺10cに対応した直線の開始座標は(LeftStartX,LeftStartY)として、角度はLeftAngleとして、それぞれ第2のパラメータテーブル17にセットされる。
次に、CPU11は、画像メモリ15の画像メモリ15の右から左方向へ水平スキャンして(第4方向のスキャン)、用紙10の外形線を構成する4辺のうちの右辺10dに対応した直線を検出し、その直線の開始座標と角度を算出する(ステップC14)。ここで算出された右辺10dに対応した直線の開始座標は(RightStartX,RightStartY)として、角度はRightAngleとして、それぞれ第2のパラメータテーブル17にセットされる。
このようにして、4方向からのスキャニングにより用紙10の外形線を構成する4辺の直線とその角度を検出した後、続いて、CPU11は、これらの交点を求めて射影補正を行う。
すなわち、CPU11は、まず、上片10aに対応した直線と左片10cに対応した直線との交点Q1の座標を求める(ステップC15)。この2つの直線の交点Q1は用紙10の左上の一角に当たり、そのX,Y座標値が(TopLeftX,TopLeftY)として第2のパラメータテーブル17にセットされる。
次に、CPU11は、上片10aに対応した直線と右片10dに対応した直線との交点Q2の座標を求める(ステップC16)。この2つの直線の交点Q2は用紙10の右上の一角に当たり、そのX,Y座標値が(TopRightX,TopRightY)として第2のパラメータテーブル17にセットされる。
同様にして、CPU11は、下片10bに対応した直線に対しても、左片10cに対応した直線との交点Q3の座標、右片10dに対応した直線との交点Q4の座標をそれぞれ求める(ステップC17、C18)。この場合、交点Q3は用紙10の左下の一角に当たり、そのX,Y座標値が(BottomLeftX,BottomLeftY)として第2のパラメータテーブル17にセットされる。交点Q4は用紙10の右下の一角に当たり、そのX,Y座標値が(BottomRightX,BottomRightY)として第2のパラメータテーブル17にセットされる。
このようにして、用紙10の外形線を構成する4辺の直線の各交点のX,Y座標値が得られると、CPU11はこれらの交点のX,Y座標値に基づいて所定の射影変換処理を行うことで、傾きを補正した画像データを生成する(ステップC19)。
このように、上下左右の4方向から用紙10の外形線を構成する4辺の直線を検出する構成としたことで、用紙10の傾きをより正確に求めることができ、さらに、これらの直線の各交点の座標値から射影変換処理を行うことにより、傾きを補正した画像データを生成することができる。
また、このような上下左右の4方向から直線を検出することで、図7のように一部が検出領域からはみ出している画像データに対しても、その検出領域外の交点座標を他の直線から求めることができる、といった利点がある。
これにより、例えば本装置を文字認識装置に適用した場合であれば、用紙10が傾いて撮影された場合であっても、その傾きを補正した画像データを用いて正確な文字認識処理を行うことができる。
なお、本発明は前記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
また、上述した実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD−ROM等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、そのプログラム自体をネットワーク等の伝送媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムあるいは伝送媒体を介して提供されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
10…用紙、11…CPU、12…画像入力装置、13…画像処理装置、14…ROM、15…画像メモリ、16…第1のパラメータテーブル、17…第2のパラメータテーブル、18…表示装置、19…入力装置、20…電源装置、21…媒体読取り装置、22…媒体読取り装置、22…記録媒体、D1…画像データ、P1,P2…白黒反転座標点、P11,P12,P13…白黒反転座標点、10a〜10d…用紙の各辺の直線、Q1〜Q4…各直線の交点。
Claims (9)
- 用紙の撮影画像を入力する画像入力手段と、
この画像入力手段によって入力された撮影画像を二値化処理して得られる画像データを、水平方向をX軸、垂直方向をY軸とした画像メモリに画素単位で展開する画像展開手段と、
この画像展開手段によって前記画像メモリに展開された画像データを垂直方向または水平方向の少なくとも一方向からスキャンして前記画像メモリの中で白黒反転している座標を検査する反転検査手段と、
この反転検査手段によって得られた最初の白黒反転座標を開始位置として、その開始位置から白黒反転座標が一方向に連続してなる直線を前記用紙の外形線の一辺として検出する直線検出手段と、
この直線検査手段によって検出された直線の傾き角度を前記用紙の傾き角度として算出する傾き角度算出手段と
を具備したことを特徴とする用紙傾き検出装置。 - 前記反転検査手段は、前記画像メモリに展開された画像データを上下左右の4方向からスキャンして前記画像メモリの中で前記用紙の外形線を構成する4辺の直線に対応した白黒反転座標をそれぞれ検査することを特徴とする請求項1記載の用紙傾き検出装置。
- 前記直線検出手段は、白黒反転座標の連続性が途絶える個数を計数し、その計数値が予め用紙サイズによって決められた所定数内であれば現在処理対象としている直線を有効とし、前記所定数を超えた場合にはその直線を無効とすることを特徴とする請求項1記載の用紙傾き検出装置。
- 前記傾き角度算出手段は、前記直線検査手段によって検出された直線の長さと予め用紙サイズによって決められた所定の長さとを比較し、前記直線の長さが前記所定の長さを満したときに、その直線の開始位置と終了位置の各座標値に基づいて前記用紙の傾き角度を算出することを特徴とする請求項1記載の用紙傾き検出装置。
- 用紙の撮影画像から前記用紙の傾きを検出するための用紙傾き検出方法であって、
前記用紙の撮影画像を二値化処理して得られる画像データを、水平方向をX軸、垂直方向をY軸とした画像メモリに画素単位で展開するステップと、
前記画像メモリに展開された画像データを垂直方向または水平方向の少なくとも一方向からスキャンして前記画像メモリの中で白黒反転している座標を検査するステップと、
最初の白黒反転座標を開始位置として、その開始位置から白黒反転座標が一方向に連続してなる直線を前記用紙の外形線の一辺として検出するステップと、
この検出された直線の傾き角度を前記用紙の傾き角度として算出するステップと
を備えたことを特徴とする用紙傾き検出方法。 - 前記画像メモリの中で白黒反転している座標を検査するステップにおいて、
前記画像メモリに展開された画像データを上下左右の4方向からスキャンして前記画像メモリの中で前記用紙の外形線を構成する4辺の直線に対応した白黒反転座標をそれぞれ検査することを特徴とする請求項5記載の用紙傾き検出方法。 - 前記白黒反転座標が一方向に連続してなる直線を検出するステップにおいて、
白黒反転座標の連続性が途絶える個数を計数し、その計数値が予め用紙サイズによって決められた所定数内であれば現在処理対象としている直線を有効とし、前記所定数を超えた場合にはその直線を無効とすることを特徴とする請求項5記載の用紙傾き検出方法。 - 前記用紙の傾き角度を算出するステップにおいて、
処理対象として検出された直線の長さと予め用紙サイズによって決められた所定の長さとを比較し、前記直線の長さが前記所定の長さを満したときに、その直線の開始位置と終了位置の各座標値に基づいて前記用紙の傾き角度を算出することを特徴とする請求項5記載の用紙傾き検出方法。 - 用紙の撮影画像から前記用紙の傾きを検出する機能を備えたコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記用紙の撮影画像を二値化処理して得られる画像データを、水平方向をX軸、垂直方向をY軸とした画像メモリに画素単位で展開する機能と、
前記画像メモリに展開された画像データを垂直方向または水平方向の少なくとも一方向からスキャンして前記画像メモリの中で白黒反転している座標を検査する機能と、
最初の白黒反転座標を開始位置として、その開始位置から白黒反転座標が一方向に連続してなる直線を前記用紙の外形線の一辺として検出する機能と、
この検出された直線の傾き角度を前記用紙の傾き角度として算出する機能と
を実現させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003405746A JP2005165822A (ja) | 2003-12-04 | 2003-12-04 | 用紙傾き検出装置、用紙傾き検出方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003405746A JP2005165822A (ja) | 2003-12-04 | 2003-12-04 | 用紙傾き検出装置、用紙傾き検出方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005165822A true JP2005165822A (ja) | 2005-06-23 |
Family
ID=34728323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003405746A Pending JP2005165822A (ja) | 2003-12-04 | 2003-12-04 | 用紙傾き検出装置、用紙傾き検出方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005165822A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010056238A1 (en) * | 2008-11-13 | 2010-05-20 | Hewlett-Packard Development Company, L.P. | Systems and methods for edge detection during an imaging operation |
US8279503B2 (en) | 2008-07-17 | 2012-10-02 | Seiko Epson Corporation | Sheet media reading control method and sheet media reading device |
-
2003
- 2003-12-04 JP JP2003405746A patent/JP2005165822A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8279503B2 (en) | 2008-07-17 | 2012-10-02 | Seiko Epson Corporation | Sheet media reading control method and sheet media reading device |
WO2010056238A1 (en) * | 2008-11-13 | 2010-05-20 | Hewlett-Packard Development Company, L.P. | Systems and methods for edge detection during an imaging operation |
US9036223B2 (en) | 2008-11-13 | 2015-05-19 | Hewlett-Packard Development Company, L.P. | Systems and methods for edge detection during an imaging operation |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6774889B1 (en) | System and method for transforming an ordinary computer monitor screen into a touch screen | |
US7024041B2 (en) | Pattern inspection apparatus and method | |
JP4114959B2 (ja) | 画像処理方法及び装置 | |
JP5357572B2 (ja) | 外観検査方法および外観検査装置 | |
JP2018072115A (ja) | 線幅測定方法、線幅測定プログラム、記憶媒体及び情報処理装置 | |
JP2005165822A (ja) | 用紙傾き検出装置、用紙傾き検出方法及びプログラム | |
JP2891342B2 (ja) | 画像信号処理装置 | |
JP3698867B2 (ja) | 円形パターン判定方法、装置および記録媒体 | |
JP2005165692A (ja) | 画像処理装置、画像処理方法 | |
JP2004038884A (ja) | 代表点計測に基づく画像歪み補正方法、画像歪み補正装置及び画像歪み補正プログラム | |
JP3963156B2 (ja) | 画像処理装置および方法,画像処理のためのプログラムを記憶した媒体,ならびに検査装置 | |
JP2001041725A (ja) | 形状検査装置 | |
JP2010032287A (ja) | 外観検査装置、及び被検査物の外観検査方法 | |
JP2004179299A (ja) | 部品実装データ作成装置及び部品実装データ作成方法 | |
JP2005025605A (ja) | 物理データフィッティング係数生成システムおよび方法 | |
JP4454075B2 (ja) | パターンマッチング方法 | |
JP5343190B2 (ja) | 画像処理装置及び画像処理プログラム | |
JP2007048194A (ja) | 画像処理方法および画像処理装置 | |
JPH10340337A (ja) | 図枠線図形のある図面のイメージデータの傾き及び伸縮の補正方法 | |
JP2008258980A (ja) | 画像情報処理装置および画像傾斜角度算出方法 | |
JP2001004330A (ja) | 画像処理装置及びその画像処理方法 | |
JP2004235768A (ja) | 画像処理装置 | |
JP2005030996A (ja) | 繰り返しパターンを有する基板の検査方法 | |
JPH06259531A (ja) | ドットパターンの傾き補正方法 | |
JP2023063112A (ja) | 画像処理装置、画像処理方法及びプログラム |