A.実施例:
A−1.画像処理システムの構成
図1は、一実施例としての画像処理システムの構成を示す図である。この画像処理システムは、画像処理装置100と、スキャナ400と、を含んでいる。画像処理装置100とスキャナ400とは、ネットワークNTに接続されており、互いに通信可能である。
画像処理装置100は、例えば、パーソナルコンピュータである(例えば、デスクトップコンピュータ、タブレットコンピュータ)。画像処理装置100は、画像処理装置100のコントローラとしてのCPU110と、揮発性記憶装置120と、不揮発性記憶装置130と、画像を表示する表示部140と、ユーザによる操作を受け入れる操作部150と、インタフェース190と、を有している。これらの要素は、バスを介して互いに接続されている。
CPU110は、データ処理を行う演算装置(プロセッサ)である。揮発性記憶装置120は、例えば、DRAMであり、不揮発性記憶装置130は、例えば、フラッシュメモリである。不揮発性記憶装置130は、プログラム132を格納している。CPU110は、プログラム132を実行することによって、スキャナ400に原稿を読み取らせて、読み取った原稿を表す出力画像データを生成する処理を実行する(詳細は後述)。プログラム132は、例えば、スキャナ400を制御するためのスキャナドライバであってよい。CPU110は、プログラム132の実行に利用される種々の中間データを、記憶装置(例えば、揮発性記憶装置120、不揮発性記憶装置130のいずれか)に、一時的に格納する。プログラム132は、例えば、スキャナ400の製造者によって提供される。
表示部140は、画像を表示する装置であり、例えば、液晶ディスプレイである。これに代えて、LEDディスプレイ、有機ELディスプレイなどの、画像を表示する他の種類の装置を採用してもよい。操作部150は、ユーザによる操作を受け取る装置であり、例えば、表示部140上に重ねて配置されたタッチパネルである。これに代えて、ボタン、レバーなどの、ユーザによって操作される他の種類の装置を採用してもよい。ユーザは、操作部150を操作することによって、種々の指示を画像処理装置100に入力可能である。
インタフェース190は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、インタフェース190は、有線または無線のネットワークインタフェースであり、ネットワークNTに接続されている。
図1には、スキャナ400の斜視図が示されている。図中の第1方向Dp1と第2方向Dp2とは、水平な方向を示し、第3方向Dp3は、鉛直上方向を示している。第1方向Dp1と第2方向Dp2とは、互いに垂直である。また、第3方向Dp3を、上方向Dp3とも呼ぶ。
スキャナ400は、いわゆるフラットベッド式の画像読取装置である。スキャナ400は、本体部490と、本体部490の上方向Dp3側に開閉可能に取り付けられたカバー450と、を備えている。図1には、カバー450が上方向Dp3に向けて開けられた状態のスキャナ400を示している。
本体部490は、制御部410と、イメージセンサ420と、イメージセンサ420を第1方向Dp1に平行に移動させる移動装置430と、原稿台440と、を備えている。
原稿台440は、本体部490(図1)の上方向Dp3側に、設けられている。原稿台440は、カバー450を上方向Dp3に向けて開くことによって、現れる。原稿台440は、第1方向Dp1に平行な2辺と第2方向Dp2に平行な2辺とで囲まれる略矩形状の台であり、透明板(例えば、ガラス板)を用いて構成されている。原稿台440の第3方向Dp3側の面は、読取対象の原稿が載置される載置面Usである。
イメージセンサ420は、原稿台440の下側(第3方向Dp3の反対側)、すなわち、原稿台440の下に配置されている。イメージセンサ420は、原稿を光学的に読み取る一次元イメージセンサであり、CCDやCMOSなどの複数の光電変換素子(単に、光学素子とも呼ぶ)が、第2方向Dp2に並んで配置された構成を有している。イメージセンサ420は、原稿台440上の原稿を、光学的に読み取ることによって、読み取った原稿を表す信号を出力する。
移動装置430は、動力源(例えば、電気モータ)を含んでいる。移動装置430は、該動力源を用いて、イメージセンサ420を、原稿台440の載置面Usに沿う方向(図1の第1方向Dp1と平行な方向)に移動させる。
制御部410は、例えば、データ処理を行うCPU411と、揮発性記憶装置412(例えば、DRAM)と、不揮発性記憶装置413(例えば、フラッシュメモリ)と、インタフェース419と、を含むコンピュータである。制御部410の各要素は、バスを介して互いに接続されている。不揮発性記憶装置413は、予め、プログラム414を格納している。CPU411は、プログラム414を実行することによって、イメージセンサ420と移動装置430とを制御する。インタフェース419は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、インタフェース419は、有線または無線のネットワークインタフェースであり、ネットワークNTに接続されている。
CPU411は、移動装置430を制御して、イメージセンサ420を、原稿台440の第1方向Dp1とは反対方向側の端の位置から第1方向Dp1側の端の位置まで、原稿台440に沿って移動させる。CPU411は、イメージセンサ420を移動させながら、イメージセンサ420を制御して、原稿台440に載置された原稿を光学的に読み取らせる。CPU411は、イメージセンサ420から出力される信号に基づいて、読取画像を示す読取画像データを生成する。CPU411は、生成した読取画像データを、画像処理装置100へ送信する。
A−2.画像処理の概要
図2は、本実施例の画像処理のフローチャートである。本実施例では、画像処理装置100のCPU110は、スキャナドライバとして、画像処理を実行する。この画像処理では、スキャナ400に原稿を読み取らせることによって読取画像データが取得され、取得された読取画像データを用いて、傾き補正や欠落の補修などがなされた補修済画像(後述)を表す補修済画像データが生成される。ユーザは、操作部150を操作することによって、画像処理の開始指示を入力する。CPU110は、入力された開始指示に応じて、図2の処理を開始する。
S10では、CPU110は、読取画像データを取得する。具体的には、CPU110は、原稿を読み取る指示を、スキャナ400に送信する。スキャナ400の制御部410のCPU411は、画像処理装置100からの指示に応じて、原稿台440に載置された原稿を読み取ることによって、読取画像データを生成し、生成した読取画像データを、画像処理装置100に送信する。CPU110は、スキャナ400から送信される読取画像データを取得する。読取画像データのデータ形式は、種々の形式であってよい。本実施例では、読取画像データは、複数個の画素のRGB値を含むRGB画像データ、あるいは、複数個の画素の輝度値を含むモノクロ画像データである。1個の画素のRGB値は、その画素の色を示し、例えば、赤(R)と緑(G)と青(B)との3個の成分値(以下、R値、G値、B値とも呼ぶ)を含んでいる。本実施例では、各成分値の階調数は、256階調である。輝度値は、その画素の輝度を、例えば、256階調の値で示す値である。
図3は、画像処理で用いられる画像の一例を示す図である。図3(A)には、読取画像OIの一例が示されている。読取画像OIの形状は、矩形である。
読取画像OIは、矩形の原稿を読み取ることによって生成された画像である。読取画像OIは、原稿を示す原稿画像Adと、原稿画像Adの外側に位置する背景画像Abと、を含む。背景画像Abは、原稿画像Adの外側の原稿以外の領域を示す。背景画像Abは、原稿画像Adの外側の画像、すなわち、原稿画像Adの外縁と、読取画像OIの外縁(4辺)と、の間に位置する画像である。背景画像Abは、特定の背景色を有している。本実施例では、背景画像Abは、カバー450の原稿台440と対向する対向面Bs(図1)を示している。このため、特定の背景色は、対向面Bsの色である。本実施例では、対向面Bsの色は、白よりも暗く、黒よりも明るいグレーである。
原稿画像Adの形状は、原稿の矩形の右上の角に対応する領域Daと、右下の角に対応する領域Dbと、が欠けた不完全な略矩形である。右上の領域Daの欠けは、原稿の対応する部分が、原稿台440上の読取可能領域からはみ出した状態で、原稿の読み取りが行われたことに起因する。右下の領域Dbの欠けは、原稿台440上において、原稿の対応する角が折り曲げられた状態で、原稿の読取が行われたことに起因する。また、原稿画像Adの略矩形は、読取画像OIの外形の矩形に対して、傾いている。この傾きは、原稿台440上において、原稿が傾いた状態で、原稿の読み取りが行われたことに起因する。
原稿画像Adは、文字や描画などのオブジェクトOb1、Ob2と、地色領域Saと、を含んでいる。地色領域Saは、原稿の地色を示す領域である。
S15では、CPU110は、読取画像データを用いて、画像を縮小する縮小処理を実行して、縮小画像MIを示す縮小画像データを生成する。縮小処理は、公知の処理が用いられる。例えば、縮小画像MIは、縦100dpi(dot per inch)×横100dpi相当の画素数を有する。読取画像データの縦方向および横方向の解像度が、100dpi以下である場合には、S15の処理は、省略される。図3(A)は、縮小画像MIを示す図である、とも言うことができる。
S20では、CPU110は、縮小画像データに対して、縮小画像MI内のエッジを抽出するエッジ抽出処理をして、エッジ抽出データを生成する。具体的には、CPU110は、縮小画像データの各画素の値に、いわゆるソーベルフィルタ(Sobel filter)を適用して、エッジ強度Seを算出する。CPU110は、これらのエッジ強度Seを、複数個の画素の値とするエッジ抽出データを生成する。
以下に、エッジ強度の算出式(1)を示す。式(1)の階調値P(x,y)は、縮小画像MI内の特定の画素位置(x,y)の輝度を表している。位置xは、方向D1(縦方向)の画素位置を示し、位置yは、方向D2(横方向)の画素位置を示している。縮小画像MI内の画素位置(x,y)におけるエッジ強度Se(x,y)は、その画素位置(x,y)を中心とし隣り合う3行3列の9つの画素の値を用いて算出される。算出式の第1項および第2項は、9つの位置の画素の階調値に、対応する係数をそれぞれ乗じた値の和の絶対値である。第1項は、方向D1の階調値の微分(すなわち、横方向の微分)であり、第2項は、方向D2の階調値の微分(すなわち、縦方向の微分)である。算出されるエッジ強度Se(x,y)は、0〜255の範囲の256階調の値に正規化される。
生成されるエッジ抽出データによって示されるエッジ抽出画像では、縮小画像MIにおけるエッジに対応する位置、例えば、図3(A)の縮小画像MIにおける原稿画像Adと背景画像Abとの境界に対応する画素や、オブジェクトOb1、Ob2の輪郭に対応する画素の値が、他の位置の画素の値と比較して大きくなる。
S25では、CPU110は、S20にて生成済みのエッジ抽出データを二値化して、エッジ二値画像EIを示すエッジ二値画像データを生成する。例えば、CPU110は、エッジ抽出データにおいて、画素の値(すなわち、エッジ強度)が閾値(例えば、128)以上である画素を、エッジ画素PXeとして特定し、画素の値が閾値未満である画素を、非エッジ画素PXnとして特定する。エッジ二値画像データでは、エッジ画素PXeの値は、「1」とされ、非エッジ画素PXnの値は、「0」とされる。
図3(B)には、エッジ二値画像EIの一例が示されている。このエッジ二値画像EIでは、縮小画像MIにおける原稿画像Adと背景画像Abとの境界に対応する画素やオブジェクトOb1、Ob2の輪郭に対応する画素が、エッジ画素PXeとして特定されていることが解る。なお、縮小画像MI内の各画素は、読取画像OIの1個以上の画素と対応しているので、縮小画像MI内のエッジ画素PXeおよび非エッジ画素PXnを特定することは、読取画像OI内の対応するエッジ画素および非エッジ画素を特定することに等しい。
本実施例では、縮小画像データを用いて、エッジ画素PXeの特定を行うので、例えば、読取画像データを用いる場合と比較して、処理する画素数を低減できる。したがって、エッジ画素PXeの特定に要する処理時間やメモリ容量を低減できる。
S30では、CPU110は、輪郭特定処理を実行する。輪郭特定処理は、エッジ二値画像データを用いて、縮小画像MIにおいて特定された複数個のエッジ画素PXeの中から、原稿画像の輪郭を構成する複数個の輪郭画素PXoを特定することによって、原稿画像Adの輪郭を示す輪郭画像OLIを示す輪郭画像データを生成する処理である。
図3(C)には、輪郭画像OLIの一例が示されている。この例では、輪郭画像OLI内に、6本の直線L1〜L6によって示される原稿画像Adの輪郭を構成する複数個の輪郭画素PXoが特定されている。輪郭画像OLIは、縮小画像MIの複数個の画素と一対一で対応する複数個の画素で構成された画像である。輪郭画像データは、二値データであり、輪郭画像データの各画素の値は、縮小画像MIの対応する画素が、輪郭画素PXoであるか否かを示す。縮小画像MI内の各画素は、読取画像OIの1個以上の画素と対応しているので、縮小画像MI内の輪郭画素PXoを特定することは、読取画像OI内の対応する輪郭画素を特定することに等しい。輪郭特定処理の詳細は、後述する。
S40では、CPU110は、原稿領域特定処理を実行する。原稿領域特定処理は、輪郭画像データを用いて、原稿画像Adに対応する原稿領域AAを特定する処理である。図3(A)に示すように、原稿領域AAは、原稿画像Adにおいて欠けている上述した領域Da、Dbを補って得られる矩形の領域である。
S45では、CPU110は、原稿領域AAの特定結果を用いて、読取画像データに対して補修処理を実行して、補修済画像RIを示す補修済画像データを生成する。図3(D)には、補修済画像RIの一例が示されている。この補修済画像RIは、補修済みの原稿画像Adrと、補修済みの背景画像Abrと、を含んでいる。原稿画像Adrは、原稿領域AAに対応する矩形を有し、補修済画像RIの外形の矩形に対して傾いていない。また、原稿画像Adrの外側の背景画像Abrは、予め指定された指定色(例えば、白)で塗られている。補修処理の詳細は、後述する。
S50では、CPU110は、補修済画像データを出力する。本実施例では、CPU110は、補修済画像データを、画像処理装置100の内部の記憶装置(例えば、不揮発性記憶装置130)に格納する。これに代えて、CPU110は、画像処理装置100に接続された外部記憶装置(例えば、図示しないUSBメモリ)に、補修済画像データを格納してもよい。また、CPU110は、例えば、補修済画像データをプリンタに送信することによって、該プリンタに補修済画像RIを印刷させる形態で、補修済画像データを出力しても良い。補修済画像データのデータ形式としては、任意の形式を採用可能である。本実施例では、CPU110は、JPEG形式の補修済画像データを出力する。
以上説明した画像処理によれば、読取画像データを用いて、原稿を示す補修済画像RIを示す補修済画像データが出力される。この結果、原稿を適切に示す画像データを、ユーザに提供できる。
A−3.輪郭特定処理
図2のS30の輪郭特定処理について説明する。輪郭特定処理は、上述したように、エッジ二値画像データを用いて、輪郭画素PXoを特定する処理である。図4は、輪郭特定処理のフローチャートである。図5は、輪郭特定処理の説明図である。
図4のS100では、CPU110は、輪郭画像OLIを示す輪郭画像データの初期データを、揮発性記憶装置120内に準備する。初期データは、縮小画像MIやエッジ二値画像EIと同じサイズの画像を示す二値画像データであり、全ての画素の値が、初期値として、「0」に設定されている。
S105では、CPU110は、エッジ二値画像EIの外形の4個の辺に対応する4個の端、すなわち、上端TU、下端TB、左端TL、右端TR(図5)から、1個の注目端を選択する。S110では、CPU110は、注目端上の複数個の画素の中から、1個の注目画素を選択する。
S115では、CPU110は、注目画素を始点として、注目端からエッジ二値画像EIの内側に向かって探索して、最初に探索されるエッジ画素PXeを特定する。エッジ二値画像EIの内側に向かう方向は、具体的には、注目端と垂直な方向であって、かつ、注目端と向かい合うエッジ二値画像EIの他の端に向かう方向である。図5に示すように、上端TU上に位置する画素PXt1が注目画素である場合には、下側に向かって探索が行われ、最初に探索されるエッジ画素PXe1が特定される。同様にして、右端TR、下端TB、左端TL上にそれぞれ位置する画素PXt2、PXt3、PXt4が注目画素である場合には、それぞれ、左側、上側、右側に向かって検索が行われ、最初に探索されるエッジ画素PXe2、PXe3、PXe4が特定される。
S118では、CPU110は、エッジ画素は特定されたか否かを判断する。具体的には、注目画素から探索方向に探索した結果、探索の限界位置、例えば、注目端と向かい合う他の端に到達するまでに、エッジ画素PXe1が探索された場合には、エッジ画素PXe1は特定されたと判断される。探索の限界位置に到達しても、エッジ画素PXe1が探索されない場合には、エッジ画素PXe1は特定されないと判断される。
エッジ画素PXeが特定された場合には(S118:YES)、S120にて、CPU110は、特定されたエッジ画素PXeを、輪郭画素PXoとして、輪郭画像データに記録する。具体的には、特定されたエッジ画素PXeに対応する輪郭画像データにおける画素の値を「1」に変更する。
エッジ画素PXeが特定されない場合には(S118:NO)、S120はスキップされる。したがって、この場合には、注目画素に対応する輪郭画素PXoは、記録されない。
S125では、CPU110は、注目端上の全ての画素を注目画素として処理したか否かを判断する。未処理の画素がある場合には(S125:NO)、CPU110は、S110に処理を戻す。全ての画素が処理された場合(S125:YES)、CPU110は、S130に処理を進める。
S130では、CPU110は、全てのエッジ二値画像EIの端TU、TB、TL、TRを、注目端として処理したか否かを判断する。未処理の端がある場合には(S130:NO)、CPU110は、S105に処理を戻す。全ての端が処理された場合には(S130:YES)、CPU110は、輪郭特定処理を終了する。輪郭特定処理によって、図3(C)に示す輪郭画像OLIを示す輪郭画像データが生成される。
本実施例の輪郭特定処理によれば、エッジ二値画像EIの端から内側に向かってエッジ画素PXeが探索され、最初に探索される特定のエッジ画素PXe(例えば、PXe1〜PXe4)が、輪郭画素PXoとして特定される。したがって、エッジ二値画像EI内において、原稿画像Adの輪郭を、容易、かつ、適切に特定することができる。
A−4.原稿領域特定処理
図2のS40の原稿領域特定処理について説明する。原稿領域特定処理は、上述したように、輪郭画像データを用いて、原稿画像Adに対応する原稿領域AAを特定する処理である。原稿領域特定処理は、図2に示すように、S42の開始直線の決定と、S44の原稿領域AAの特定と、を含んでいる。
図6は、読取画像OIを示す図である。図7は、図6の読取画像OIの一部の領域ARの拡大図である。領域ARは、読取画像OI内の原稿画像Adの左側の外縁LPeの一部を含む領域である。原稿画像Adの外縁LPeの外側には、上述した背景画像Abが存在している。そして、原稿画像Adの外縁LPeと、背景画像Abと、の間には、影を示す影画像SHが存在している(図7)。図6では、図の煩雑を避けるために影画像SHの図示が省略されている。影画像SHは、原稿画像Adの地色領域Saの色(例えば、白)や、背景画像Abの色(例えば、グレー)よりも暗い色(例えば、黒)を有している。このような影画像SHは、例えば、カバー450の対向面Bs(図1)と、読取対象の原稿と、の段差に起因して生じる細い画像である。
開始直線Ltは、後述するS44の原稿領域AAの特定において、原稿画像Adの外縁LPeを特定するための探索の開始位置を示す直線である。開始直線Ltは、原稿画像Adの左側の外縁LPeに略平行で、かつ、原稿画像Adよりも外側に決定される。より具体的には、開始直線Ltは、影画像SHの外縁LSeの位置に決定される。S42の開始直線の決定では、原稿画像Adの外縁LPe、UPe、RPe、BPeのそれぞれに略平行な4本の開始直線Lt、Ut、Rt、Bt(図6)が決定される。
図8は、開始直線の決定の処理ステップを示すフローチャートである。図8のS310では、輪郭画像データを用いて、縮小画像MI上において複数個の候補直線を特定する。具体的には、輪郭画素PXoによって表される直線が、候補直線として採用される。候補直線を特定する方法としては、輪郭画素PXoを用いるハフ変換が用いられる。ハフ変換は、公知の処理であるので、その説明を省略する。ハフ変換の結果、図3(C)の例では、原稿画像Adの輪郭に対応した6本の候補直線L1〜L6が特定される。具体的には、候補直線L1〜L6の傾きと、位置と、を示す情報が取得される。
S320では、CPU110は、6本の候補直線L1〜L6から、原稿画像Adの外縁と平行な4本の暫定直線を選択する。具体的には、CPU110は、6本の候補直線L1〜L6から、輪郭画像OLIの外形の4個の端(辺)に位置する直線を除外する。例えば、図3(A)の例では、輪郭画像OLIの上端に位置する候補直線L2が除外される。輪郭画像OLIの4個の端に位置する直線(例えば、L2)は、読取画像OIの対応する端に位置している。このような直線L2は、読取時において、読取可能領域からはみ出した原稿上の領域Da(図3(A))に対応しており、原稿の縁を示していないと考えられる。CPU110は、残りの候補直線L1、L3〜L6から、互いに平行な2本の直線の組を、2組抽出する。図3(A)の例では、直線L3とL6の組と、直線L2とL4の組と、が抽出される。これらの4本の直線L2、L3、L4、L6が、4本の暫定直線として選択される。4本の暫定直線L2、L3、L4、L6の傾きは、原稿画像Adの傾きを示しているので、4本の暫定直線L2、L3、L4、L6を特定することによって、原稿画像Adの傾きが特定される。
S322では、CPU110は、縮小前の読取画像OI(図6)上において、縮小画像MI上にて選択された4本の暫定直線L2、L3、L4、L6に対応する参照直線L2C、L3C、L4C、L6Cを決定する。
図7にて、原稿画像Adの左側の外縁LPeと略平行な参照直線L3Cについて示すように、参照直線L2C、L3C、L4C、L6Cは、原稿画像Adから見て、原稿画像Adの外縁に沿う影画像SHよりもさらに外側に位置する。換言すれば、参照直線L2C、L3C、L4C、L6Cは、原稿画像Adから見て、決定すべき開始直線Lt、Ut、Rt、Btよりもさらに外側に位置する。この理由は、以下の通りである。
エッジ二値画像EIにて特定されるエッジ画素には、影画像SHと背景画像Abとの境界を構成する画素であって、背景画像Abに属する画素を含む。そして、エッジ二値画像EIを用いて特定される輪郭画像OLIにおける輪郭画素PXo(図3(C))には、輪郭特定処理(図4、図5)から解るように、原稿画像Adから見て外側に位置するエッジ画素PXeが優先的に選択される。このために、輪郭画素PXoに基づいて、縮小画像MIにて特定される暫定直線L2、L3、L4、L6は、背景画像Ab内に位置することになる。そして、100dpi相当の縮小画像MIにて特定された暫定直線L2、L3、L4、L6に対応する参照直線L2C、L3C、L4C、L6Cは、縮小前の読取画像OI(例えば、300〜1200dpi相当)にて決定される。このために、参照直線L2C、L3C、L4C、L6Cは、縮小前の読取画像OIにおいて、影画像SHよりも数画素分外側に位置し得る(図7)。
以上の説明から解るように、S322では、原稿画像Adの特定の外縁(例えば、外縁LPe)に沿う参照直線(例えば、参照直線L3C)であって、原稿画像Adの特定の外縁から原稿画像Adの外側に離れた参照直線が特定される。
S325では、CPU110は、4本の参照直線L2C、L3C、L4C、L6Cの中から、処理対象の一本の参照直線を選択する。例えば、原稿画像Adの左側の外縁LPeと略平行な左側の参照直線L3Cが、処理対象の参照直線として選択される(図7)。S330では、CPU110は、処理対象の一本の参照直線を注目直線として設定する。
S335では、CPU110は、注目直線上に位置する複数個の画素を、背景色を有する背景画素と、背景色とは異なる色を有する非背景画素と、に分類する。具体的には、CPU110は、特定の背景色(本実施例では、カバー450の対向面Bsの色)を示す背景色範囲内の色値を有する画素を、背景画素として分類し、背景色範囲外の色値を有する画素を、非背景画素として分類する。本実施例では、特定の背景色は、グレーであるので、背景色範囲は、グレーを示す色値の範囲である。背景色範囲は、例えば、彩度Cが彩度範囲CR1を満たし、かつ、輝度Yが輝度範囲YR1を満たす色値の範囲である。
本実施例では、対向面Bsの色は、グレー(無彩色)であるので、彩度範囲CR1は、C≦Cthを満たす彩度Cの範囲である。閾値Cthは、例えば、彩度Cが0〜255の256階調で表される場合に、32である。
輝度範囲YR1は、例えば、対向面Bsの色の輝度Ybsを中心とする範囲である。具体的には、輝度範囲YR1は、(Ybs−ΔY)≦Y≦(Ybs+ΔY)を満たす輝度Yの範囲である。ΔYは、例えば、輝度Yが0〜255の256階調で表される場合に、32である。白(輝度255)および黒(輝度0)は、輝度範囲YR1外である。
例えば、図7において、背景画像Abを構成する画素は、背景画素に分類される。また、影画像SHや原稿画像Adを構成する画素は、非背景画素に分類される。
S340では、CPU110は、注目直線上に、連続するK個以上の非背景画素が存在するか否かを判断する。Kは、2以上の整数であり、例えば、20である。注目直線上に連続するK個以上の非背景画素が存在しない場合には(S340:NO)、S342に処理を進める。
S342では、CPU110は、注目直線が、探索の限界位置に到達したか否かを判断する。図6には、下側の開始直線Btに対応する探索の限界位置LLaが、図示されている。限界位置LLaは、開始直線Btから矢印BMの方向に、所定の幅Waだけ離れた位置である。矢印AMaは、開始直線Btと垂直な方向であり、原稿画像Adの中心に近づく方向である、と言うことができる。所定の幅Waは、例えば、3〜10cm分の幅に相当する画素数である。探索の限界位置に到達した場合には(S342:YES)、CPU110は、S344にて、処理対象の参照直線を、開始直線として決定する。探索の限界位置に到達していない場合には(S342:NO)、CPU110は、S345に処理を進める。
S345では、CPU110は、現在の注目直線よりも1画素だけ原稿画像Ad側に位置する直線を、新たな注目直線として設定する。例えば、図7の参照直線L3Cが現在の注目直線である場合には、図7の隣接直線Lnxが新たな注目直線として設定される。隣接直線Lnxは、参照直線L3Cと平行であり、かつ、参照直線L3Cに対して原稿画像Adの外縁LPeに向かう側に隣接する直線である。このように、注目直線を原稿画像Adの外縁に向かって1画素分ずつずらしながら、図7の矢印AMの方向に開始直線の探索が行われる。
注目直線上に連続するK個以上の非背景画素が存在する場合には(S340:YES)、S350にて、CPU110は、現在の注目直線を、処理対象の参照直線に対応する開始直線として決定する。図7の例では、例えば、影画像SHの左側の外縁LSeの位置に、左側の参照直線L3Cに対応する開始直線Ltが決定される。
S355では、CPU110は、全ての参照直線L2C、L3C、L4C、L6Cを、処理対象として処理したか否かを判断する。未処理の参照直線がある場合には(S355:NO)、CPU110は、S325に処理を戻す。全ての参照直線が処理された場合には(S355:YES)、開始直線の決定を終了する。この時点で、4本の参照直線L2C、L3C、L4C、L6Cに対応する4本の開始直線Lt、Ut、Rt、Bt(図6)が決定されている。
開始直線Lt、Ut、Rt、Btが決定されると、図2のS44にて、原稿領域AAの特定が行われる。図9は、原稿領域AAの特定の処理ステップを示すフローチャートである。
S400では、CPU110は、4本の開始直線Lt、Ut、Rt、Btの中から、処理対象の一本の開始直線を選択する。例えば、原稿画像Adの左側の外縁LPeと略平行な左側の開始直線Ltが、処理対象の開始直線として選択される(図7)。S405では、CPU110は、処理対象の一本の開始直線を注目直線として設定する。すなわち、処理対象の一本の開始直線は、図9の原稿領域AAの特定の処理の最初の注目直線である。
S410では、CPU110は、注目直線上に位置する複数個の画素を、背景画素と、原稿画素と、影画素と、に分類する。具体的には、CPU110は、上述した特定の背景色を示す背景色範囲内の色値を有する画素を、背景画素として分類する。また、CPU110は、原稿色範囲内の色値を有する画素を、原稿画素として分類し、影色範囲内の色値を有する画素を、影画素として分類する。
原稿色範囲は、輝度Yが輝度範囲YR2を満たす、または、彩度Cが彩度範囲CR2を満たす色値の範囲である。輝度範囲YR2は、背景色範囲を定義する上述した輝度範囲YR1の上限値(Ybs+ΔY)より高い輝度Yの範囲である。すなわち、輝度範囲YR2は、Y>(Ybs+ΔY)を満たす輝度Yの範囲である。彩度範囲CR2は、背景色範囲を定義する上述した彩度範囲CR1の上限値Cthより高い彩度Cの範囲である。すなわち、彩度範囲CR2は、C>Cthを満たす彩度Cの範囲である。
影色範囲は、輝度Yが輝度範囲YR3を満たし、かつ、彩度Cが彩度範囲CR1を満たす色値の範囲である。輝度範囲YR3は、背景色範囲を定義する上述した輝度範囲YR1の下限値(Ybs−ΔY)より低い輝度Yの範囲である。すなわち、輝度範囲YR3は、Y<(Ybs−ΔY)を満たす輝度Yの範囲である。彩度範囲CR1は、背景色範囲を定義する上述した彩度範囲CR1と同じ範囲、すなわち、C≦Cthを満たす彩度Cの範囲である。このように、影画素は、背景画素とも原稿画素とも異なる色を有するので、異色画素とも呼ぶ。
S415では、CPU110は、注目直線上の全画素に占める原稿画素の割合Raを算出する。すなわち、CPU110は、注目直線上の画素の総数PNtと、注目直線上の原稿画素の個数PNpと、を算出し、割合Raを算出する(Ra=(PNp/PNt))。
S420では、CPU110は、算出された割合Raが、所定の閾値THa以上であるか否かを判断する。閾値THaは、本実施例では、5%である。算出された割合Raが、所定の閾値THa未満である場合には(S420:NO)、CPU110は、S425に処理を進める。算出された割合Raが、所定の閾値THa以上である場合には(S420:YES)、CPU110は、S460に処理を進める。
S425では、CPU110は、注目直線上の非背景画素に占める原稿画素の割合Rbを算出する。すなわち、CPU110は、注目線上の影画素の個数PNsと、原稿画素の個数PNpと、を算出し、割合Rbを算出する(Pb={PNp/(PNs+PNp)})。
S430では、CPU110は、算出された割合Rbが、所定の閾値THb以上であるか否かを判断する。閾値THbは、本実施例では、5%である。算出された割合Rbが、所定の閾値THb未満である場合には(S430:NO)、CPU110は、S435に処理を進める。算出された割合Rbが、所定の閾値THb以上である場合には(S430:YES)、CPU110は、S440に処理を進める。
S435では、CPU110は、連続カウント値Ccをリセットする、すなわち、連続カウント値Ccを0とする。連続カウント値Ccは、割合Rbが閾値THb以上である注目直線が、注目直線と交差する方向(図7の矢印AMの方向)に連続する数をカウントするための変数である。
S440では、CPU110は、連続カウント値Ccをカウントアップする、すなわち、連続カウント値Ccに1を加算する。
S445では、CPU110は、連続カウント値Ccは、所定値Mであるか否かを判断する。所定値Mは、例えば、2mm分の幅に相当する画素数である。連続カウント値CcがMであることは、割合Rbが閾値THb以上である注目直線が、M本連続したことを意味している。連続カウント値CcがMである場合には(S445:YES)、CPU110は、S470に処理を進める。連続カウント値CcがM未満である場合には(S445:NO)、CPU110は、S450に処理を進める。
S450では、CPU110は、注目直線が、探索の限界位置に到達したか否かを判断する。図6には、左側の開始直線Ltに対応する探索の限界位置LLが、図示されている。限界位置LLは、開始直線Ltから矢印AMの方向に、所定の幅Wだけ離れた位置である。矢印AMは、開始直線Ltと垂直な方向であり、原稿画像Adの中心に近づく方向である、とも言うことができる。所定の幅Wは、例えば、3〜10cm分の幅に相当する画素数である。探索の限界位置に到達した場合には(S455:YES)、CPU110は、S475にて、開始直線を外縁直線として決定する。探索の限界位置に到達していない場合には(S455:NO)、CPU110は、S455に処理を進める。
S455では、CPU110は、現在の注目直線よりも1画素だけ原稿画像Adの中心側に位置する直線を、新たな注目直線として設定する。換言すれば、現在の注目直線と平行で、現在の注目直線に対して、原稿画像Adの中心に向かう側に隣接する直線を、新たな注目直線として設定する。S455の後に、CPU110は、S410に処理を戻す。このように、開始直線(例えば、開始直線Lt)から、原稿画像Adの中心に向かって、原稿画像Adの外縁(例えば、外縁LPe)を示す直線が探索される。
S460では、CPU110は、連続カウント値Ccは、1以上であるか否かを判断する。現在の注目直線の直前の注目直線において、割合Rbが閾値THb以上である場合には(S430:YES)、連続カウント値Ccは1以上である。連続カウント値Ccが1以上である場合には(S460:YES)、CPU110は、S470に処理を進める。連続カウント値Ccが1未満、すなわち、ゼロである場合には(S460:NO)、S465にて、CPU110は、現在の注目直線を、処理対象の開始直線に対応する外縁直線として決定する。
S470では、CPU110は、連続カウント値Ccのカウント開始時の注目直線を、外縁直線として決定する。すなわち、連続カウント値Ccが1以上である場合には、割合Rbが閾値THb以上である注目直線が少なくとも2本以上連続している。本ステップでは、2本以上連続している当該注目直線のうちの最初の注目直線を外縁直線として決定する。例えば、連続カウント値CcがMであれば、M本連続している注目直線のうちの最初の注目直線を外縁直線として決定される。上述したように、M本の連続する直線は、原稿画像Adの中心から離れる側(外側)から原稿画像Adの中心に向かう側(内側)に向かって順次に、注目直線として選択されるので、M本の連続する直線のうち、原稿画像Adから見て最も外側の直線が外縁直線として決定される。
S480では、CPU110は、全ての開始直線Lt、Ut、Rt、Btを、処理対象として処理したか否かを判断する。未処理の開始直線がある場合には(S480:NO)、CPU110は、S400に処理を戻す。全ての開始直線が処理された場合には(S480:YES)、S485に処理を進める。この時点で、4本の開始直線Lt、Ut、Rt、Btに対応する4本の外縁直線、換言すれば、原稿画像Adの4個の外縁LPe、UPe、RPe、BPeに位置する4本の外縁直線が決定されている。例えば、図7の例では、原稿画像Adの左側の外縁LPeに位置する外縁直線Lfが決定される。外縁直線Lfは、対応する原稿画像Adの外縁LPeと略平行であり、対応する開始直線Ltと平行である。
S485では、CPU110は、決定された4本の外縁直線に基づいて、原稿領域AAを特定する。具体的には、4本の外縁直線で形成される矩形の内部領域を原稿領域AAとして特定される。例えば、CPU110は、4本の外縁直線の4個の交点CP1〜CP4(図6)を特定することで、該4個の交点CP1〜CP4によって定義される原稿領域AAを特定する。
A−5.補修処理
図2のS45の補修処理について説明する。補修処理は、上述したように、原稿領域AAの特定結果を用いて、読取画像データに対して実行される処理である。図10は、補修処理のフローチャートである。
図10のS510では、読取画像データに対して、原稿画像Adの傾きを補正する傾き補正処理が実行される。具体的には、例えば、原稿領域AAの左側の辺(左側の外縁直線Lf)の読取画像OIの縦方向に対する角度が算出される。そして、該角度分だけ読取画像OIを回転させることによって、原稿領域AAの左側の辺を、読取画像OIの縦方向と平行にする回転処理が実行される。
S520では、CPU110は、傾き補正済みの読取画像OIにおいて、原稿画像Adの欠落部分を描画する。具体的には、傾き補正済みの読取画像OIにおいて、輪郭画像OLIを用いて特定される原稿画像Adの輪郭よりも外側であって、かつ、原稿領域AAよりも内側の領域、具体的には、図6の領域Da、Dbが特定される。傾き補正済みの読取画像OIにおいて、領域Da、Db内の複数個の画素の値が、原稿画像Adの地色領域Saの色を示す値に置換される。地色領域Saの色を示す値には、例えば、輪郭画像OLIを用いて特定される原稿画像Adの輪郭に沿い、かつ、原稿画像Ad内に位置する複数個の画素の値の平均値が用いられる。
S530では、CPU110は、欠落部分が描画済の読取画像OIにおいて、背景画像Abの色を、指定色に変更する。具体的には、傾き補正済みの読取画像OIにおいて、原稿領域AAの外側に位置する複数個の画素の値が、予め指定された色(例えば、白)を示す値に置換される。これによって、図3(D)の補修済画像RIを示す補修済画像データが生成される。
以上説明した本実施例の原稿領域特定処理(図8、図9)によれば、CPU110は、読取画像データを用いて、読取画像OI(図6)内の注目直線を決定する(S405、S455)。注目直線は、原稿画像の外縁LPe、UPe、RPe、BPeのいずれかに平行な直線である(図6、図7)。CPU110は、読取画像データを用いて、注目直線に位置する複数個の画素を、原稿画素を含む3種類の画素、具体的には、原稿画素と背景画素と影画素とに分類する(S410)。CPU110は、3種類の画素のうち、原稿画素の個数PNpと、原稿画素を含む3種類の画素の個数(すなわち、注目直線上の画素の総数PNt)と、原稿画素を含む2種類の画素の個数(具体的には、影画素の個数PNsと原稿画素の個数PNpとの和((PNs+PNp)))と、を算出し、割合Ra、Rbを算出する(S415、S430)。CPU110は、注目直線が外縁直線であるか否かを判断するための第1の条件を満たすか否かを判断する(S420)。第1の条件は、上述のように、割合Raが閾値THa以上であることである。CPU110は、注目直線が第1の条件とは異なる第2の条件を満たすか否かを判断する(S430〜S445)。第2の条件は、注目直線を含むM本の直線であって、注目直線に平行で注目直線と交差する方向(図7の矢印AMの方向)に連続するM本の直線のそれぞれが特定条件を満たすことである(S430〜S445)。特定条件は、割合Rbが閾値THb以上であることである(S430)。CPU110は、注目直線が第1の条件を満たす場合(S420:YES)、注目直線に基づいて原稿画像Adの外縁に位置する外縁直線(例えば、図7の外縁直線Lf)を決定する(S460〜S470)。また、CPU110は、注目直線が第2の条件を満たす場合に(S430:YES、かつ、S445:YES)、注目直線に基づいて外縁直線を決定する(S470)。CPU110は、外縁直線を用いて、原稿画像Adに対応する原稿領域AAを特定する。この結果、注目直線が第1条件を満たすか否かと、注目直線が第2条件を満たすか否かと、が判断され得る。そして、注目直線が第1の条件を満たす場合と、注目直線が第2の条件を満たす場合とに、注目直線に基づいて原稿画像Adの外縁に位置する外縁直線が決定される。この結果、外縁直線を適切に決定できる。したがって、外縁直線を用いて、原稿領域AAを精度良く特定できる。
図11は、原稿領域の特定の一例を示す図である。図11(A)は、ラベルシール付きの原稿を示す原稿画像Adaと影画像SHaと背景画像Abaとを含む読取画像の拡大図ARaを示す。この拡大図ARaは、原稿画像Adaの左側の外縁LPeaの近傍を拡大して示している。原稿画像Adaは、外側に向かって突出したラベルシールを示すラベル画像LBを含んでいる。この例では、原稿画像Ada(ラベル画像LBを含む)の全体を含むように原稿領域AAが特定されることが好ましく、原稿画像Adaの一部がはみ出すような原稿領域AAが特定されることは好ましくない。したがって、図11(A)の読取画像では、原稿領域AAを定義する外縁直線は、図11(A)の直線La1の位置に決定されることが好ましい。例えば、外縁直線が、直線La2の位置に決定されると、ラベル画像LBが、原稿領域AAの外側にはみ出すので好ましくない。
図11(A)の読取画像の場合において、上述した第1の条件だけを用いるとする。すなわち、注目直線上の全画素に占める原稿画素の割合Raが閾値THa以上である場合に、注目直線を外縁直線として特定するとする。この場合には、直線La2の位置に外縁直線が決定されてしまう。例えば、直線La1が注目直線である場合には、直線La1上の画素のほとんどが背景画像Abaを示す背景画素に分類されてしまうからである。
これに対して、上述した第2の条件を用いる場合、すなわち、注目直線を含む連続するM本の直線のそれぞれにおいて直線上の非背景画素(原稿画素+影画素)に占める原稿画素の割合Rbが閾値THb以上である場合に、M本の直線のうち、原稿画像Adaから見て最も外側の直線を外縁直線として特定するとする。この場合には、直線La1の位置に外縁直線を決定することができる。
図11(B)には、複数本の黒い罫線(例えば、RL1、RL2)を端部の近傍に有する原稿を示す原稿画像Adbと影画像SHbと背景画像Abbとを含む読取画像の拡大図ARbである。拡大図ARbは、原稿画像Adbの左側の外縁LPebの近傍を拡大して示している。この例では、原稿画像Adbの全体を含む原稿領域AAを特定するために、外縁直線は、直線Lb1の位置に決定されることが好ましい。
図11(B)の読取画像の場合において、上述した第2の条件だけを用いるとする。この場合には、注目直線が、原稿画像Adbに示される罫線RL1上にある場合には、割合Rbは閾値THb未満になる。罫線RL1上にある画素は、黒色であるので、原稿画素に分類されず、影画素に分類されるためである。したがって、直線Lb1を含むM本の直線に、罫線RL1上の直線が含まれる場合には、連続カウント値Ccがリセットされる結果、直線Lb1が外縁直線として決定されない。
これに対して、上述した第1の条件を用いる場合には、直線Lb1が注目直線である場合に、割合Raが閾値THa以上になるので、直線Lb1が適切に外縁直線として決定される。
以上の説明から解るように、本実施例では、第1の条件と第2の条件とを併用して、外縁直線が決定されるので、例えば、様々な種類の読取画像を示す読取画像データが用いられる場合に、適切な原稿領域AAを特定することができる。例えば、図11(A)の原稿画像Adaを含む読取画像であっても、図11(B)の原稿画像Adbを含む読取画像であっても、これらの読取画像上に適切な原稿領域AAを特定することができる。
ここで、第2の条件では、注目直線だけでなく、注目直線を含むM本の直線のそれぞれについて、割合Rbが閾値THb以上であることが要求される理由について説明する。割合Rbは、注目直線上の画素の総数PNtに代えて、非背景画素の個数(PNp/PNt)を分母とする。このために、注目直線上の原稿画素の個数PNpが比較的少ない場合であっても、割合Rbが閾値THb以上になりやすい。したがって、注目直線だけに着目して判断すると、例えば、ノイズなどの影響によって、原稿画像Adの外縁とは無関係な場所に誤って外縁直線を決定する可能性が高くなる。本実施例の第2の条件では、注目直線を含むM本の直線のそれぞれに着目して判断するので、誤った外縁直線が決定されることを抑制できる。
さらに、上記実施例によれば、読取画像OIは、原稿画像Ad以外の領域を示す画像として、背景画像Abと、背景色とは異なる色を有する影画像SHと、を含む(図7)。CPU110は、原稿画素と背景画素と影画素との3種類の画素を用いて、割合Raを算出し、原稿画素と影画素との2種類の画素を用いて、背景画素を用いずに、割合Rbを算出する。この結果、割合Raと、割合Rbと、を用いて、原稿領域AAを精度良く特定できる。
さらに、上記実施例によれば、CPU110は、注目直線が第1の条件を満たす場合には(S420:YES)、現在の注目直線を外縁直線として決定し得る(S465)。この結果、適切な外縁直線を決定できる。
さらに、上記実施例によれば、CPU110は、注目直線が第1の条件を満たし(S420:YES)、かつ、連続カウント値Ccが1以上である場合には(S460:YES)、連続カウント値Ccのカウント開始時の注目直線を外縁直線として決定する(S470)。連続カウント値Ccが1以上である場合とは、注目直線から図7の矢印AMとは反対の方向に連続するK本の直線(KはM未満の整数)のそれぞれにおいて、割合Rbが閾値THb以上であることを意味する。矢印AMとは反対の方向は、注目直線と交差する方向であって、原稿画像Adの中心から離れる方向である。連続カウント値Ccのカウント開始時の注目直線を外縁直線として決定することは、連続するK本の直線のうち、矢印AMとは反対の方向の端に位置する直線を外縁直線として決定することを意味する。この構成によれば、K本の連続する直線のうち、原稿画像Adの中心から離れる方向の端に位置する直線が外縁直線として決定される。この結果、原稿画像Adの全体が含まれる適切な原稿領域AAを決定できる。上述したように、外縁直線は、原稿画像Adが原稿領域AAの外側にはみ出さないように決定されることが好ましい。このために、外縁直線である可能性がある直線が複数本ある場合には、該複数本の直線のうち、原稿画像Adの中心から離れた直線を、外縁直線として決定することが適切であると考えられる。
さらに、上記実施例によれば、CPU110は、注目直線が第2の条件を満たす場合には(S430:YES、かつ、S445:YES)、連続するM本の直線のうち、図7の矢印AMとは反対の方向の端に位置する直線が、外縁直線として決定される(S470)。この結果、原稿画像Adの全体が含まれる適切な原稿領域AAを決定できる。
さらに、上記実施例によれば、CPU110は、縮小画像データを解析することによって、注目直線を決定するための特定するための解析情報を取得する。具体的には、CPU110は、縮小画像データを用いてエッジ二値画像データを生成し(図2のS20、S25)、該エッジ二値画像データを用いて輪郭画像データを生成し(図2のS30)、輪郭画像データを用いて縮小画像MI上に4本の暫定直線L2、L3、L4、L6を決定する(図8のS310〜S320)。暫定直線L2、L3、L4、L6を示す情報、具体的には、S310にてハフ変換によって取得される情報は、注目直線を決定するための特定するための解析情報と言うことができる。このように、縮小画像データを解析するので、注目直線を決定するための処理時間、ひいては、外縁直線を決定するための処理時間を低減できる。また、縮小画像データを用いて解析する場合であっても、外縁直線を適切に決定できるので、読取画像OI内の原稿領域AAを精度良く特定できる。
さらに、上記実施例によれば、CPU110は、図8のS320にて、4本の暫定直線L2、L3、L4、L6を特定することによって、原稿画像Adの傾きを特定する。CPU110は、図9にて原稿領域AAを特定する際に、4本の暫定直線L2、L3、L4、L6に対応する参照直線L2C、L3C、L4C、L6Cのいずれかと平行な注目直線を決定する(S405、S455)。この結果、原稿画像Adの傾きに応じた傾きを有する注目直線が適切に決定される。
さらに、上記実施例によれば、CPU110は、原稿画像Adの特定の外縁LPe(図7)から原稿画像Adの外側に離れた参照直線L3C(図7)を特定し(図8のS322)、参照直線L3Cから特定の外縁LPeに向かって、探索条件を満たす直線を探索する(S330〜S345)。探索条件は、対象の直線上に、連続するK個以上の非背景画素が存在することである(S340)。そして、CPU110は、最初に探索条件を満たす直線を、開始直線、すなわち、図9の原稿領域AAの特定における最初の注目直線として決定する(図8のS350)。この構成によれば、参照直線L3Cを特定した後には、参照直線L3Cから特定の外縁LPeに向かって比較的簡易な探索条件を用いて注目直線を決定するので、原稿領域AAを特定するための処理時間を低減できる。例えば、図9の原稿領域AAの特定で用いられる第1の条件と第2の条件の判断では、注目直線上の複数個の画素を、背景画素と原稿画素と影画素との3種類の画素に分類する必要があるが、上記探索条件の判断では、背景画素と非背景画素の2種類の画素に分類するだけで良い。
さらに、上記実施例によれば、図9のS450にて、注目直線が探索の限界位置に到達した場合には(S450:YES)、開始直線が外縁直線として決定される(S475)。注目直線が探索の限界位置に到達した場合には、第1の条件や第2の条件を用いて原稿画像Adの外縁の位置に、外縁直線を決定することは困難であると考えられる。この場合には、開始直線が外縁直線として決定されるので、原稿画像Adの外側に、外縁直線が決定される可能性を高くすることができる。この結果、原稿画像Adの一部がはみ出ないように、適切な原稿領域AAを決定することができる。
さらに、上記実施例によれば、図8のS342にて、注目直線が探索の限界位置に到達した場合には(S342:YES)、参照直線が、開始直線として決定される(S344)。注目直線が探索の限界位置に到達した場合には、S340の判断条件では、開始条件を決定することは困難であると考えられる。この場合には、参照直線が開始直線として決定されるので、原稿画像Adの外側に、確実に開始直線を決定することができる。原稿画像Adの内部に、開始直線が誤って決定されると、図9の処理にて外縁直線を適切に決定できない可能性が高い。本実施例では、このような不都合を避けて、図9の処理にて、外縁直線を適切に決定できる可能性を高くすることができる。
B.変形例:
(1)上記実施例の原稿領域AAの特定(図9)では、注目直線に位置する複数個の画素は、3種類の画素に分類される(S410)。これに代えて、これらの複数個の画素は、4種類の画素、例えば、原稿画素と、背景画素と、影画素と、他の画素と、に分類されても良い。例えば、原稿の地色領域Saの色が白であると解っている場合には、白を示す色値を有する画素が原稿画素に分類され、背景色を示す色値を有する画素が背景画素に分類され、黒を示す色を有する画素が影画素に分類され、いずれでもない画素が他の画素に分類されても良い。さらに、この場合には、第1の条件の判断に用いられる割合Raは、他の画素を除いた3種類の画素に占める原稿画素の割合であっても良い。そして、第2の条件の判断に用いられる割合Rbは、影画素と原稿画素との2種類の画素に占める原稿画素の割合であっても良い。
また、注目直線に位置する複数個の画素は、5種類の画素に分類され、さらに、割合Raは、そのうちの4種類の画素に占める原稿画素の割合であり、割合Rbは、そのうちの3種類の画素に占める原稿画素の割合であっても良い。割合Raの算出に用いる画素は、原稿画素を含めばよく、例えば、背景画素や影画素の少なくとも一方を含まなくても良いし、他の種類の画素(例えば、ノイズ画素)を含んでも良い。また、割合Rbの算出に用いる画素は、原稿画素を含めば良く、例えば、影画素を含まなくても良いし、背景画素を含んでも良い。
一般的に言えば、注目直線に位置する複数個の画素は、原稿画素を含むN種類の画素(Nは3以上の整数)に分類され、割合Raは、N種類の画素のうち、原稿画素を含むN1種類の画素(N1は3≦N1≦Nを満たす整数)の個数に占める原稿画素の割合であり、割合Rbは、N種類の画素のうち、原稿画素を含むN2種類の画素(N2は2≦N2<N1を満たす整数)に占める原稿画素の割合であっても良い。
(2)上記実施例では、読取画像データを用いて、読取画像データによって示される読取画像OI内の原稿画像Adに対応する原稿領域AAが特定される。これに代えて、読取画像データを用いて生成される他の画像データによって示される画像内の原稿画像に対応する原稿領域が特定されても良い。他の画像データは、例えば、読取画像データに対して、画像を拡大する拡大処理を実行して得られる拡大画像データであっても良い。一般的には、読取画像データに基づく対象画像データ(例えば、読取画像データそのもの、または、上記拡大画像データ)を用いて、対象画像データによって示される対象画像内の原稿領域が特定されれば良い。
(3)上記実施例の図9のS465では、現在の注目直線が外縁直線として決定されているが、これに限られない。例えば、原稿画像Adが原稿領域AAからはみ出る可能性をより低減するために、現在の注目直線よりも、原稿画像Adの中心から所定画素(例えば、1または2画素)だけ離れた直線であって注目直線と平行な直線が、外縁直線として決定されても良い。
(4)上記実施例の図9において、S460は省略されても良い。この場合には、例えば、注目直線が第1の条件を満たす場合には(S420:YES)、常に、S465にて、CPU110は、現在の注目直線を外縁直線として決定しても良い。
(5)上記実施例の図9において、注目直線が第2の条件を満たす場合には(S430:YES、かつ、S445:YES)、連続カウント値Ccのカウント開始時の注目直線が外縁直線として決定される(S470)。これに代えて、例えば、現在の注目直線、あるいは、現在の注目直線よりも所定画素(例えば、1また2画素)だけ原稿画像Adの中心から離れた直線であって注目直線と平行な直線が、外縁直線として決定されても良い。
(6)上記実施例の図8のS325〜S355の処理は省略されても良い。この場合には、図9のS400では、S322にて決定された4本の参照直線L2C、L3C、L4C、L6Cの中から、1本の開始直線が選択され、S410では、当該選択された開始直線(参照直線)が、最初の注目直線として設定される。
(7)上記実施例の図8のS310では、ハフ変換を用いて、候補直線の傾きおよび位置が決定されている。これに代えて、最小二乗法を用いて、候補直線の傾きおよび位置が決定されてもよい。また、例えば、原稿画像Adは傾いていないことを前提とするならば、S322で決定される4本の参照直線は、読取画像OIの外形の4辺に位置する直線であっても良い。この場合には、図8のS310、S320は省略されても良い。
(6)図2の画像処理のステップは、適宜に省略や変形が可能である。例えば、上記実施例の図2のS15は省略され、縮小画像データは生成されなくても良い。この場合には、図2のS20〜S30の処理は、縮小されていない読取画像データを用いて実行されても良い。
また、S20、S25では、読取画像データを用いて、エッジ二値画像データが生成されるが、これに代えて、単純二値画像データが生成されても良い。単純二値画像データは、例えば、読取画像OI内の複数個の画素を、背景色を有する背景画素と、それ以外の色を有する非背景画素と、に分類して得られる二値画像データである。この場合には、図4の輪郭特定処理のS115では、エッジ画素に代えて、非背景画素が探索され、S120では、最初に探索された非背景画素が輪郭画素として記録される。
(8)図10の補修処理は、適宜に変更可能である。例えば、S510〜S530の3個のステップのうち、1個または2個のステップは省略されても良い。また、補修処理に代えて、原稿領域AAの特定結果は、他の画像処理、例えば、トリミング処理のために利用されても良い。
(9)原稿を光学的に読み取る装置は、図1で説明したスキャナ400に代えて、原稿を光学的に読み取ることが可能な他の種々の装置であってよい。例えば、スキャナ400は、原稿を搬送するための自動給紙装置(Auto Document Feeder)を備え、搬送される原稿を、停止したイメージセンサ420で読み取るタイプのスキャナであっても良い。また、原稿を光学的に読み取る装置は、2次元イメージセンサを用いて、原稿を光学的に読み取るデジタルカメラであっても良い。
また、画像処理装置100のCPU110は、画像処理装置100に接続されたスキャナ400から、読取画像データを取得することに代えて、不揮発性記憶装置130や、画像処理装置100に接続された図示しない外部記憶装置(例えば、USBメモリ)に予め格納された読取画像データを取得してもよい。
(10)図2の画像処理は、パーソナルコンピュータとは異なる種類の装置によって実行されても良い。例えば、画像処理は、スキャナ(例えば、スキャナ400)のCPU411によって実行されても良い。画像処理は、ネットワークに接続されたサーバ装置によって実行されても良い。画像処理は、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)によって、一部ずつ分担して実行されても良い。この場合には、該複数の装置の全体が、画像処理装置に対応する。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD−ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。