(58)【調査した分野】(Int.Cl.,DB名)
色彩が黒色である背景部に載置された帳票を走査することで前記帳票の画像を読み取る読取部を有する画像読取装置のコンピュータに実行させるための画像読取プログラムであって、
スキュー角度算出部が、前記読取部により読み取られた前記帳票の画像を含む読取画像の画像データに基づき、前記帳票の画像の傾きを補正するのに用いるスキュー角度を算出するスキュー角度算出ステップと、
外接領域検出部が、前記スキュー角度に基づき前記読取画像内の前記帳票の画像を回転させた第1スキュー補正後画像を生成し、生成した前記第1スキュー補正後画像を走査することで、前記第1スキュー補正後画像に含まれる、前記帳票の画像に外接する外接四角形を検出する外接領域検出ステップと、
を前記コンピュータに実行させ、
前記外接領域検出ステップでは、前記外接領域検出部が、前記第1スキュー補正後画像を走査する度に、走査した範囲に含まれる連続する黒色以外の色の画素の画素数を算出し、算出した前記画素数が第1の数値を連続して、第2の数値の回超えている場合に、最初に前記第1の数値を超えた際に走査された位置を前記外接四角形の辺として検出し、
前記第1の数値は、前記帳票に含まれるタブの縦方向の前記画素数よりも小さい、
画像読取プログラム。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0016】
<構成例>
図1は、本発明の一実施の形態における画像読取装置100の構成例の概要を示す斜視図である。
図2は、本発明の一実施の形態における画像読取装置100の構成例の概要を示すブロック図である。
【0017】
図1に示されるように、画像読取装置100は、帳票(所定の業務で用いられる書面であり、例えば請求書や小切手である)を吸入する吸入口110と、吸入口110から吸入された帳票を排出する排出口120とを有する。
【0018】
また、画像読取装置100は、所定のハードウェアおよびソフトウェアにより実装される。例えば、画像読取装置100は、プロセッサやメモリなどを有するコンピュータにより構成され、プロセッサにより実行されるメモリ上のプログラムが、画像読取装置100としてコンピュータを機能させる。
【0019】
吸入口110から吸入された帳票は、搬送ローラ(不図示)によって画像読取装置100の内部へと移動され、色彩が黒色である背景部に載置される。そして、帳票は、背景部に載置された状態で画像が読み取られる。これによって、読取部130により、帳票の画像データが取得される。
【0020】
画像データが取得された帳票は、搬送ローラによって、排出口120から画像読取装置100外へと搬送される。排出口120から排出された帳票は、スタッカ121に蓄積される。
【0021】
図2に示されるように、画像読取装置100は、読取部130と、スキュー角度算出部140と、外接領域検出部150と、画像切出部160と、画像記憶部170とを有する。
【0022】
読取部130は、色彩が黒色である背景部に載置された帳票を走査(スキャン)することで、帳票の画像を読み取る。これによって、読取部130は、帳票の画像データを取得する。
【0023】
スキュー角度算出部140は、読取部130により読み取られた画像の画像データに基づき、帳票の傾き(背景部に対する、水平方向の傾き)の程度を示すスキュー角度を算出する。スキュー角度算出部140は、算出したスキュー角度を、外接領域検出部150と画像切出部160へ入力する。
【0024】
外接領域検出部150は、スキュー角度算出部140が算出したスキュー角度に基づき、読取部130により読み取られた画像を回転(正常な方向に補正)させた第1スキュー補正後画像(後述、
図5(a))を生成する。
【0025】
また、外接領域検出部150は、生成した第1スキュー補正後画像を走査することで、第1スキュー補正後画像に含まれる、帳票の画像に外接する外接四角形を検出する。外接領域検出部150は、検出した外接四角形の四隅点の座標を画像切出部160に入力する。
【0026】
画像切出部160は、外接領域検出部150が検出した外接四角形の四隅点の座標に基づき、読取部130により読み取られた画像(帳票画像)から帳票の画像(切出後帳票画像)を切り出す。
【0027】
また、画像切出部160は、切り出した帳票の画像(切出後帳票画像)を、スキュー角度算出部140から入力されたスキュー角度に基づき回転させた第2スキュー補正後画像を生成する。そして、画像切出部160は、生成した第2スキュー補正後画像を画像記憶部170に記憶する。
【0028】
図3(a)と
図3(b)とは、従来の画像読取装置における読取方法を説明するための図である。
図3(a)は、縦方向および横方向に走査することで帳票3000の端点を抽出する処理を説明するための図であり、
図3(b)は、帳票の四隅点の座標を抽出する処理を説明する図である。
【0029】
図3(a)に示されるように、従来の画像読取装置は、縦方向に走査することで、縦方向の各走査線と帳票の端との交点を帳票の端点として抽出する。また、画像読取装置は、横方向に走査することで、横方向の各走査線と帳票の端との交点を帳票の端点として抽出する。
【0030】
次に、
図3(b)に示されるように、画像読取装置は、抽出した帳票の各端点より最小二乗法で四本の端辺を抽出する。そして、抽出した4本の端辺の各交点を帳票の四隅点(P0〜P3)として抽出する。その後、画像読取装置は、抽出した四隅点(P0〜P3)に基づき、帳票の画像の切り出しを行い、切り出した画像に対するスキュー補正を行う。
【0031】
ここで、最小二乗法で四本の端辺を抽出した場合、直線P1−P3部分には実際にはタブが含まれているにも関わらず、タブを含まない辺(直線P1−P3)を端辺として抽出してしまう。そして、4本の端辺の各交点である四隅点に基づき帳票の画像を切り出した場合、タブ部分(突き出し部分)の画像が欠損した画像データしか取得できないという問題がある。
【0032】
図4(a)〜(c)は、本発明の一実施の形態における画像読取装置100のスキュー角度を算出する処理を説明するための図である。
【0033】
図4(a)に示されるように、画像読取装置100の読取部130は、所定間隔ごとに、横方向に帳票400を走査することで、横方向の走査線410と帳票400の端との交点を帳票の端点として抽出する。
【0034】
詳細には、読取部130は、走査した位置の色が背景色から帳票色(背景色以外の色)へ変化した位置を第1端点411として抽出し、その後、走査した位置の色が帳票色から背景色へ変化した位置を第2端点412として抽出する。読取部130は、所定間隔ごとに横方向に帳票400を走査する。そのため、読取部130は、走査した位置ごとに第1端点411と第2端点412とを抽出する。
【0035】
読取部130は、第1端点411と第2端点412とを抽出する度に、抽出した第1端点411と第2端点412とを、スキュー角度算出部140に入力する。
【0036】
スキュー角度算出部140は、前回入力された第1端点411の座標と、直前に入力された第1端点411の座標とを結ぶ直線の角度を算出する。また、スキュー角度算出部140は、前回入力された第2端点412の座標と、直前に入力された第2端点412の座標とを結ぶ直線の角度を算出する。なお、算出した角度が、135°〜225°(135°以上であって、かつ225°以下)以外である場合、スキュー角度算出部140は、算出した角度に、90°、180°、270°うちのいずれかの値を加算することで、算出した角度が135°〜225°(図中、12〜20)の範囲に属するように補正する。なお、算出した角度に、90°、180°、270°うちのいずれかの値を加算しても135°〜225°の範囲に属しない場合、スキュー角度算出部140は、算出した角度を破棄しても良い。
【0037】
図4(b)に示されるように、画像読取装置100の読取部130は、所定間隔ごとに、縦方向に帳票400を走査することで、縦方向の走査線420と帳票400の端との交点を帳票400の端点として抽出する。
【0038】
詳細には、読取部130は、走査した位置の色が背景色から帳票色(背景色以外の色)へ変化した位置を第1端点411として抽出し、その後、走査した位置の色が帳票色から背景色へ変化した位置を第2端点412として抽出する。読取部130は、所定間隔ごとに縦方向に帳票400を走査する。そのため、読取部130は、走査した位置ごとに第1端点411と第2端点412とを抽出する。
【0039】
読取部130は、所定間隔ごとに、第1端点411と第2端点412とを抽出する度に、抽出した第1端点411と第2端点412とを、スキュー角度算出部140に入力する。
【0040】
スキュー角度算出部140は、前回入力された第1端点411の座標と、直前に入力された第1端点411の座標とを結ぶ直線の角度を算出する。また、スキュー角度算出部140は、前回入力された第2端点412の座標と、直前に入力された第2端点412の座標とを結ぶ直線の角度を算出する。なお、算出した角度が、135°〜225°(135°以上であって、かつ225°以下)以外である場合、スキュー角度算出部140は、算出した角度に、90°、180°、270°うちのいずれかの値を加算することで、算出した角度を、135°〜225°の範囲に属するように補正する。なお、算出した角度に、90°、180°、270°うちのいずれかの値を加算しても135°〜225°の範囲に属しない場合、スキュー角度算出部140は、算出した角度を破棄しても良い。
【0041】
図4(c)に示されるように、スキュー角度算出部140は、算出したすべての角度(補正した角度については、補正後の角度)の数を角度ごとに集計する。そして、スキュー角度算出部140は、集計した結果、数が最大の角度をスキュー角度として算出する。そして、スキュー角度算出部140は、算出したスキュー角度を外接領域検出部150と画像切出部160へ入力する。
【0042】
図4(c)に示される例では、スキュー角度算出部140が集計した角度は、202°(図中、18)の値が多い。そのためスキュー角度算出部140は、202°をスキュー角度として算出する。なお、スキュー角度算出部140は、算出したすべての角度(補正した角度については、補正後の角度)の平均値をスキュー角度として算出しても良い。また、スキュー角度算出部140は、算出したすべての角度(補正した角度については、補正後の角度)の中央値をスキュー角度として算出しても良い。
【0043】
外接領域検出部150は、走査することで読み込んだ帳票画像を、スキュー角度算出部140から入力されたスキュー角度だけ回転させることで、
図5(a)に示される第1スキュー補正後画像500を生成する。
【0044】
そして、外接領域検出部150は、生成した第1スキュー補正後画像500を走査することで、第1スキュー補正後画像500における外接領域の四隅点501の座標であるp0(xx0,yy0)と、四隅点502の座標であるp1(xx1,yy1)と、四隅点503の座標であるp2(xx2,yy2)と、四隅点504の座標であるp3(xx3,yy3)とを算出する。外接領域検出部150が、第1スキュー補正後画像500における外接領域の四隅点501の座標p0〜p3を算出する具体的な方法については、
図6〜
図8を用いて後述する。
【0045】
次に、
図5(b)に示されるように、画像切出部160は、算出した第1スキュー補正後画像における外接領域の四隅点501〜504の座標p0(xx0,yy0)〜p3(xx3,yy3)を帳票画像における外接領域の四隅点の座標p0(x0,y0)〜p3(x3,y3)へと変換する。
【0046】
詳細には、画像切出部160は、以下の式(1)と式(2)とを用いて、座標p0(xx0,yy0)を座標p0(x0,y0)へと変換する。
式(1):p0(x0)=X0+cosθ×xx0−sinθ×yy0
式(2):p0(y0)=Y0+cosθ×yy0+sinθ×xx0
また、画像切出部160は、以下の式(3)と式(4)とを用いて、座標p1(xx1,yy1)を座標p1(x1,y1)へと変換する。
式(3):p1(x1)=X0+cosθ×xx1−sinθ×yy1
式(4):p1(y1)=Y0+cosθ×yy1+sinθ×xx1
また、画像切出部160は、以下の式(5)と式(6)とを用いて、座標p2(xx2,yy2)を座標p2(x2,y2)へと変換する。
式(5):p2(x2)=X0+cosθ×xx2−sinθ×yy2
式(6):p2(y2)=Y0+cosθ×yy2+sinθ×xx2
また、画像切出部160は、以下の式(7)と式(8)とを用いて、座標p3(xx3,yy3)を座標p3(x3,y3)へと変換する。
式(7):p3(x3)=X0+cosθ×xx3−sinθ×yy3
式(8):p3(y3)=Y0+cosθ×yy3+sinθ×xx3
画像切出部160は、変換した後の帳票画像における外接領域の四隅点の座標p0(x0,y0)〜p3(x3,y3)と、帳票画像から切出後帳票画像を切り出す範囲を特定するためのパラメータとに基づいて、帳票画像から切出後帳票画像を切り出す。例えば、パラメータに基づいて、四隅点の座標p0(x0,y0)〜p3(x3,y3)を結んだ矩形よりも大きい範囲が、切出後帳票画像を切り出す範囲として特定される場合がある。その場合、画像切出部160は、四隅点の座標p0(x0,y0)〜p3(x3,y3)を結んだ矩形の外周を所定長(例えば、15mm)で囲う範囲で帳票画像から切出後帳票画像を切り出す。
【0047】
画像切出部160は、切出後帳票画像を、スキュー角度だけ回転させることで、第2スキュー補正後画像を生成する。そして、画像切出部160は、生成した第2スキュー補正後画像を、画像記憶部170に記憶する。
【0048】
次に、
図6〜8を用いて、第1スキュー補正後画像(前述、
図5(a))における外接領域の四隅点501の座標p0〜p3を算出する具体的な方法について説明する。
【0049】
図6は、本発明の一実施の形態における外接領域検出部150が、横方向の横線ノイズ601および縦方向の縦線ノイズ602を帳票と誤認識することなく、帳票の外接領域を検出する処理を説明するための図である。
【0050】
外接領域検出部150は、スキュー角度だけ回転されることでスキュー補正された第1スキュー補正後画像500を横方向(例えば、右方向から左方向や、左方向から右方向)に走査し、その後、縦方向(例えば、上方向から下方向や、下歩行から上方向)に走査することで、第1スキュー補正後画像500に含まれる帳票画像の外接領域の四隅点を算出する。これによって、外接領域検出部150は、第1スキュー補正後画像500に含まれる帳票画像の外接領域を検出する。
【0051】
図6に示されるように、外接領域検出部150は、横方向に第1スキュー補正後画像を走査する。
【0052】
外接領域検出部150は、縦方向に延びる走査線620が横方向(右方向から左方向)に一行分、第1スキュー補正後画像を走査する度に、走査した範囲に含まれる、連続する帳票色の画素数(以下、連続帳票画素数と呼ぶ場合がある)を算出し、算出した連続帳票画素数を保持する。そして、外接領域検出部150は、連続帳票画素数を算出する度に、直近のM(第2の数値)回の間に算出した連続帳票画素数が、L(第1の数値)を連続してM回超えたか否かを判定する。算出した連続帳票画素数がL(第1の数値)を連続してM(第2の数値)回超えている場合、外接領域検出部150は、最初に連続帳票画素数がLを超えた際に走査線620により走査された位置(図中、X+2)を、帳票の外接領域(帳票と背景画像との境目)として検出する。
【0053】
なお、Lの数値を大きくすることで、横方向の横線ノイズ601を、帳票として誤認識しにくくなる。
【0054】
また、Mの数値を大きくすることで、縦方向の縦線ノイズ(Lの数値を超えるノイズ)を、帳票として誤認識しにくくなる。
【0055】
上述した方式により帳票の外接領域(帳票と背景画像との境目)として検出することで、横線ノイズ601および縦線ノイズ602への耐性を強化できる。また、帳票の角が円弧であっても安定して帳票の外接領域を検出できる。
【0056】
なお、
図7に示されるように、タブ紙の帳票のエッジを検出する場合は、Lの数値を、タブの高さ(縦方向の長さ)よりも小さくする。これによって、タブと背景画像との境目を、帳票の外接領域として検出できる。また、タブと帳票とを識別可能になる。逆に、Lの数値を、タブの高さよりも大きくすることで、タブを除く帳票部分のみを外接領域として検出できる。
【0057】
次に、帳票の一部(隅部)が外側に向けて折れていることで、隅部が突き出している帳票(以下、突き出し帳票と呼ぶ場合がある)のエッジを検出する処理について、
図8を用いて説明する。
【0058】
まず、外接領域検出部150は、縦方向の走査線620が右方向から左方向に、第1スキュー補正後画像を一行分、走査する度に、走査した範囲に含まれる連続帳票画素数を算出し、算出した連続帳票画素数を保持する。そして、外接領域検出部150は、連続帳票画素数を算出する度に、算出した連続帳票画素数がLを超えたか否かを判定する。そして、外接領域検出部150は、Lを超えた位置(図中、X)から、右方向(帳票の外側方向)に、これまでに算出した連続帳票画素数をトレースする。なお、外接領域検出部150は、連続帳票画素数が、連続的に減少することを前提にトレースする。そして、外接領域検出部150は、連続帳票画素数が、0になる直前の位置(図中、X+3)を、帳票の外接領域(帳票と背景画像との境目)として検出する。これによって、突き出し帳票について、突き出した帳票の一部(隅部)を含めた外接領域を検出できる。
【0059】
<全体処理>
図9は、本発明の一実施の形態における全体処理の概要を示す図である。
【0060】
まず、S901にて、読取部130は、縦方向に走査する列の位置を特定するためのX座標に初期値(例えば、0)を設定する。また、読取部130は、横方向に走査する行の位置を特定するためのY座標に初期値(例えば、0)を設定する。
【0061】
次に、S902にて、読取部130は、S901にて設定したX座標にて縦方向に帳票を走査することで、縦方向の走査線と帳票の端との交点を帳票の端点として抽出し、抽出した端点の座標をスキュー角度算出部140に入力する。
【0062】
詳細には、読取部130は、走査した位置の色が背景色から帳票色(背景色以外の色)へ変化した位置を第1端点として抽出し、その後、走査した位置の色が帳票色から背景色へ変化した位置を第2端点として抽出する。そして、読取部130は、抽出した第1端点の座標と、第2端点の座標とをスキュー角度算出部140に入力する。
【0063】
次に、S903にて、読取部130は、次に走査する位置を決定する。詳細には、読取部130は、縦方向に走査する列の位置を特定するためのX座標に所定値(例えば、1)を加算する。
【0064】
次に、S904にて、読取部130は、S903にて加算した後のX座標にて縦方向に帳票を走査することで、縦方向の走査線と帳票の端との交点を帳票の端点として抽出し、抽出した端点の座標をスキュー角度算出部140に入力する。
【0065】
詳細には、読取部130は、走査した位置の色が背景色から帳票色(背景色以外の色)へ変化した位置を第1端点として抽出し、その後、走査した位置の色が帳票色から背景色へ変化した位置を第2端点として抽出する。そして、読取部130は、抽出した第1端点の座標と、第2端点の座標とをスキュー角度算出部140に入力する。
【0066】
次に、S905にて、スキュー角度算出部140は、前回入力された第1端点の座標と、直前に入力された第1端点の座標とを結ぶ直線の角度を算出する。また、スキュー角度算出部140は、前回入力された第2端点の座標と、直前に入力された第2端点の座標とを結ぶ直線の角度を算出する。
【0067】
次に、S906にて、読取部130は、すべての縦方向への走査が完了したかを判定する。読取部130が、すべての縦方向への走査が完了していないと判定する場合(S906−No)、S903へ戻る。一方、読取部130が、すべての縦方向への走査が完了したと判定する場合(S906−Yes)、S907へ進む。
【0068】
次に、S907にて、読取部130は、S901にて設定したY座標にて横方向に帳票を走査することで、横方向の走査線と帳票の端との交点を帳票の端点として抽出し、抽出した端点の座標をスキュー角度算出部140に入力する。
【0069】
詳細には、読取部130は、走査した位置の色が背景色から帳票色(背景色以外の色)へ変化した位置を第1端点として抽出し、その後、走査した位置の色が帳票色から背景色へ変化した位置を第2端点として抽出する。そして、読取部130は、抽出した第1端点の座標と、第2端点の座標とをスキュー角度算出部140に入力する。
【0070】
次に、S908にて、読取部130は、次に走査する位置を決定する。詳細には、読取部130は、横方向に走査するY座標に所定値(例えば、1)を加算する。
【0071】
次に、S909にて、読取部130は、S908にて加算した後のY座標にて横方向に帳票を走査することで、横方向の走査線と帳票の端との交点を帳票の端点として抽出し、抽出した端点の座標をスキュー角度算出部140に入力する。
【0072】
次に、S910にて、スキュー角度算出部140は、前回入力された第1端点の座標と、直前に入力された第1端点の座標とを結ぶ直線の角度を算出する。また、スキュー角度算出部140は、前回入力された第2端点の座標と、直前に入力された第2端点の座標とを結ぶ直線の角度を算出する。
【0073】
次に、S911にて、読取部130は、すべての横方向への走査が完了したかを判定する。読取部130が、すべての横方向への走査が完了していないと判定する場合(S911−No)、S908へ戻る。一方、読取部130が、すべての縦方向への走査が完了したと判定する場合(S911−Yes)、S912へ進む。
【0074】
次に、S912にて、スキュー角度算出部140は、S905にて算出したすべての角度およびS910にて算出したすべての角度に基づいて、スキュー角度を算出する。スキュー角度算出部140は、算出したスキュー角度を外接領域検出部150に入力する。
【0075】
次に、S913にて、外接領域検出部150は、走査することで読み込んだ帳票画像をS912にて入力されたスキュー角度だけ回転させることで、第1スキュー補正後画像を生成する。
【0076】
次に、S914にて、外接領域検出部150は、S913にて生成した第1スキュー補正後画像を走査することで、第1スキュー補正後画像における外接領域の四隅点の座標を算出する。外接領域検出部150は、算出した四隅点の座標を画像切出部160に入力する。
【0077】
次に、S915にて、画像切出部160は、S914にて算出した第1スキュー補正後画像における外接領域の四隅点の座標を、帳票画像における外接領域の四隅点の座標へと変換する。
【0078】
次に、S916にて、画像切出部160は、S915にて変換した後の帳票画像における外接領域の四隅点の座標と、切出後帳票画像を切り出す範囲を特定するためのパラメータとに基づいて、帳票画像から切出後帳票画像を切り出す。
【0079】
次に、S917にて、画像切出部160は、S916にて切出した後の切出後帳票画像を、S912にて入力されたスキュー角度だけ回転させることで、第2スキュー補正後画像を生成し、生成した第2スキュー補正後画像を、画像記憶部170に記憶する。
【0080】
<本実施の形態の効果>
以上説明した本実施の形態における画像読取装置100によれば、画像切出部160が、外接四角形の四隅点の座標に基づき、読取部130により読み取られた画像から前記帳票の画像を切り出すことで、帳票が矩形状でない場合であっても、欠損のない画像データを取得できる。また、突き出しのある帳票とない、突きだしのない帳票が混在していても、これらを一括で読取りできる。さらに、突き出し量、突き出し位置が不定であっても安定して欠損のない画像データを取得できる。さらに、矩形状の画像の画像データを取得できる。
【0081】
また、外接領域検出部150が、第1スキュー補正後画像を走査する度に、走査した範囲に含まれる連続する黒色以外の色の画素の画素数を算出し、算出した画素数が第1の数値を連続して、第2の数値の回超えている場合に、最初に前記第1の数値を超えた際に走査された位置を外接四角形の辺として検出することで、横方向の横線ノイズ601および縦方向の縦線ノイズ602を帳票と誤認識することなく、帳票の外接領域を検出できる。
【0082】
また、第1の数値を帳票に含まれるタブの縦方向の画素数よりも小さくすることで、タブと帳票とを識別可能になる。
【0083】
また、外接領域検出部150が、第1スキュー補正後画像を走査する度に、走査した範囲に含まれる連続する黒色以外の色の画素の画素数を算出し、算出した画素数が第1の数値を超えている場合、これまでに算出した画素数をトレースし、画素数が0になる直前の位置を外接四角形の辺として検出することで、突き出し帳票の画像データを欠損なく取得できる。
【0084】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。