A.第1実施例:
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は、本実施例では、カバー450の原稿台440と対向する対向面Bs(図1)を示している。本実施例では、対向面Bsは、白よりも暗く、黒よりも明るいグレーで塗られている。このため、外側画像Abは、グレーのほぼ単色の画像である。
原稿画像Adの形状は、原稿の矩形の右上の角に対応する領域Daと、左下の角に対応する領域Dbと、が欠けた不完全な略矩形である。右上の領域Daの欠けは、原稿の対応する部分が、原稿台440上の読取可能領域からはみ出した状態で、原稿の読み取りが行われたことに起因する。左下の領域Dbの欠けは、原稿台440上において、原稿の対応する角が折り曲げられた状態で、原稿の読取が行われたことに起因する。また、原稿画像Adの略矩形は、読取画像OIの外形の矩形に対して、傾いている。この傾きは、原稿台440上において、原稿が傾いた状態で、原稿の読取が行われたことに起因する。
原稿画像Adは、文字や描画などのオブジェクトOb1、Ob2と、背景Bgと、を含んでいる。背景Bgは、原稿の地色の領域である。
S15では、CPU110は、読取画像データに対して、公知の縮小処理を実行して、縮小画像MIを示す縮小画像データを生成する。例えば、縮小画像MIは、縦100dpi(dot per inch)×横100dpi相当の画素数を有する。読取画像データの縦方向および横方向の解像度が、100dpi以下である場合には、S15の処理は、省略される。図3(A)は、縮小画像MIを示す図である、とも言うことができる。
S20では、CPU110は、縮小画像データを用いて、原稿画素特定処理を実行する。原稿画素特定処理は、縮小画像MI内の原稿画像Adを構成する複数個の原稿画素PXaを特定して、原稿画素特定画像CIを示す原稿画素特定画像データを生成する処理である。縮小画像MI内の各画素は、読取画像OIの1個以上の画素と対応しているので、縮小画像MI内の原稿画素PXaを特定することは、読取画像OI内の対応する原稿画素を特定することに等しい。縮小画像データを用いて、原稿領域特定処理(例えば、後述する単純二値画像データやエッジ二値画像データの生成)を行うので、例えば、読取画像データを用いる場合と比較して、処理する画素数を低減できる。したがって、原稿領域特定処理に要する処理時間やメモリ容量を低減できる。
図3(B)には、原稿画素特定画像CIの一例が示されている。原稿画素特定画像CIは、縮小画像MIの複数個の画素と一対一で対応する複数個の画素で構成された画像である。原稿画素特定画像データは、二値データであり、原稿画素特定画像データの各画素の値は、縮小画像MIの対応する画素が、原稿画素PXaであるか、原稿画素PXa1とは異なる非原稿画素PXbであるかを示す。原稿画素特定処理の詳細は、後述する。図3(B)において、黒色で示す領域は、複数個の原稿画素PXaが位置する領域であり、白色で示す領域は、非原稿画素PXbが位置する領域である。
S25では、CPU110は、原稿画素特定画像データを用いて、探索範囲決定処理を実行する。探索範囲決定処理は、原稿画素特定画像CI内にて、後述する輪郭特定処理で用いられる探索範囲SAを決定する処理である。上述したように、原稿画素特定画像CIと、読取画像OIおよび縮小画像MIとは、対応しているので、原稿画素特定画像CI内の探索範囲SAを決定することは、読取画像OIおよび縮小画像MIにおいて対応する探索範囲を決定することに等しい。なお、縮小画像データを用いて生成される原稿画素特定画像データを用いて、探索範囲決定処理を行うので、例えば、読取画像データと同じ画素数の原稿特定画像データを用いる場合と比較して、処理する画素数を低減できる。したがって、探索範囲決定処理に要する処理時間やメモリ容量を低減できる。
図3(B)には、原稿画素特定画像CI内に決定された探索範囲SAが図示されている。探索範囲SAは、4個の端TU、TB、TL、TRを有する矩形の範囲である。探索範囲決定処理の詳細は、後述する。
S30では、CPU110は、輪郭特定処理を実行する。輪郭特定処理は、決定された探索範囲SA内にて、複数個の原稿画素PXaの中から、原稿画像の輪郭を構成する複数個の輪郭画素PXoを特定することによって、原稿画像Adの輪郭を示す輪郭画像OLIを示す輪郭画像データを生成する処理である。
図3(C)には、輪郭画像OLIの一例が示されている。この例では、輪郭画像OLI内に、6本の直線L1〜L6によって示される原稿画像Adの輪郭を構成する複数個の輪郭画素PXoが特定されている。輪郭画像OLIは、縮小画像MIの複数個の画素と一対一で対応する複数個の画素で構成された画像である。輪郭画像データは、二値データであり、輪郭画像データの各画素の値は、縮小画像MIの対応する画素が、原稿構成画素であるか否かを示す。縮小画像MI内の各画素は、読取画像OIの1個以上の画素と対応しているので、縮小画像MI内の輪郭画素PXoを特定することは、読取画像OI内の対応する輪郭画素を特定することに等しい。輪郭特定処理の詳細は、後述する。
S35では、CPU110は、輪郭画像データを用いて、原稿画像Adに対応する原稿領域AAを特定する処理である。図3(A)に示すように、原稿領域AAは、原稿画像Adにおいて欠けている上述した領域Da、Dbを補って得られる矩形の領域である。
S40では、CPU110は、原稿領域AAの特定結果を用いて、読取画像データに対して補修処理を実行して、補修済画像RIを示す補修済画像データを生成する。図3(D)には、補修済画像RIの一例が示されている。この補修済画像RIは、補修済みの原稿画像Adrと、補修済みの外側画像Abrと、を含んでいる。原稿画像Adrは、原稿領域AAに対応する矩形を有し、補修済画像RIの外形の矩形に対して傾いていない。また、原稿画像Adrの外側の外側画像Abrは、予め指定された指定色(例えば、白)で塗られている。補修処理の詳細は、後述する。
S45では、CPU110は、補修済画像データを出力する。本実施例では、CPU110は、補修済画像データを、画像処理装置100の内部の記憶装置(例えば、不揮発性記憶装置130)に格納する。これに代えて、CPU110は、画像処理装置100に接続された外部記憶装置(例えば、図示しないUSBメモリ)に、補修済画像データを格納してもよい。また、CPU110は、例えば、補修済画像データをプリンタに送信することによって、該プリンタに補修済画像RIを印刷させる形態で、補修済画像データを出力しても良い。補修済画像データのデータ形式としては、任意の形式を採用可能である。本実施例では、CPU110は、JPEG形式の補修済画像データを出力する。
以上説明した画像処理によれば、読取画像データを用いて、原稿を示す補修済画像RIを示す補修済画像データが出力される。この結果、原稿を適切に示す画像データを、ユーザに提供できる。
A−3.原稿画素特定処理
図2のS20の原稿画素特定処理について説明する。原稿画素特定処理は、上述したように、図3(B)の原稿画素特定画像CIを示す原稿画素特定画像データを生成する処理である。図4は、原稿画素特定処理のフローチャートである。図5は、原稿画素特定処理で用いられる画像の一例を示す図である。
図4のS110では、CPU110は、縮小画像データがモノクロ画像データであるかカラー画像データであるかを判断する。例えば、モノクロ画像データは、1個の成分値(例えば、輝度)のみを含む画像データであり、カラー画像データは、複数個の成分値(例えば、R、G、B)を含む画像データである。上述したように、本実施例では、読取画像データは、カラー画像データであるRGB画像データと、モノクロ画像データと、のうちのいずれかであるので、縮小画像データも、これらのうちのいずれかである。縮小画像データが、モノクロ画像データである場合には(S110:YES)、S120にて、CPU110は、輝度Yに基づいて、縮小画像データを二値化して、単純二値画像BIを示す単純二値画像データを生成する。具体的には、CPU110は、縮小画像MI内の複数個の画素のうち、特定輝度範囲YR内の輝度を有する複数個の画素を、複数個の第1画素PX1として特定する。CPU110は、縮小画像MI内の複数個の画素のうち、特定輝度範囲YR外の輝度を有する複数個の画素を、複数個の第2画素PX2として特定する。なお、単純二値画像データでは、第1画素PX1の値は、「0」とされ、第2画素PX2の値は、「1」とされる。
特定輝度範囲YRは、予め定められた輝度Yの範囲である。特定輝度範囲YRは、カバー450の対向面Bs(図1)の色の輝度Ybsを中心とする範囲である。特定輝度範囲YRは、(Ybs−ΔY)≦Y≦(Ybs+ΔY)を満たす輝度Yの範囲である。ΔYは、例えば、輝度Yが0〜255の256階調で表される場合に、32である。白(輝度255)および黒(輝度0)は、特定輝度範囲YR外である。
縮小画像データが、カラー画像データである場合には(S110:NO)、S115にて、CPU110は、輝度Yと彩度Cとに基づいて、縮小画像データを二値化して、単純二値画像データを生成する。具体的には、CPU110は、上述した特定輝度範囲YR内の輝度Yを有し、かつ、特定彩度範囲CR内の彩度Cを有する複数個の画素を、複数個の第1画素PX1として特定する。CPU110は、特定輝度範囲YR外の輝度Yを有する複数個の画素と、特定彩度範囲CR外の彩度Cを有する複数個の画素を、複数個の第2画素PX2として特定する。この結果、特定輝度範囲YRと特定彩度範囲CRとを用いて、単純二値画像データを適切に生成できる。例えば、原稿画像Adの背景Bgの輝度と、カバー450の対向面Bsの輝度Ybsと、が近似していても、原稿画像Adの背景Bgの彩度と、カバー450の対向面Bsの彩度Cbsと、が十分に異なっていれば、原稿画像Adと外側画像Abとの境界が現れるような単純二値画像BIを示す単純二値画像データが生成される。
特定彩度範囲CRは、予め定められた彩度Cの範囲である。特定彩度範囲CRは、カバー450の対向面Bsの色の彩度Cbsを含む範囲である。本実施例では、対向面Bsの色は、無彩色(彩度Cbs=0)であるので、特定彩度範囲CRは、C≦Cthを満たす彩度Cの範囲である。閾値Cthは、例えば、彩度Cが0〜255の256階調で表される場合に、32である。
図5(A)には、単純二値画像BIの一例として、単純二値画像BIsが示されている。図5(A)にて、黒色で示す部分は、第1画素PX1で構成される部分であり、白色で示す部分は、第2画素PX2で構成される部分である。図5(A)に示すように、縮小画像MIの外側画像Abを構成する画素は、特定輝度範囲YRの輝度を有し、かつ、特定彩度範囲CR内の彩度を有する。このために、外側画像Abを構成する画素は、第1画素PX1として特定される。このように、特定輝度範囲YRは、外側画像Ab内の複数個の画素の輝度(例えば、輝度Ybs)を含む輝度Yの範囲であり、特定彩度範囲CRは、外側画像Ab内の複数個の画素の彩度(例えば、彩度Cbs)を含む彩度Cの範囲である、と言うことができる。
原稿画像Adは、カバー450の対向面Bsの色と比較的大きく異なる色を有する部分を含み得る。縮小画像MIの原稿画像Adのうち、当該部分を構成する画素は、第2画素PX2として特定される。原稿画像Adは、カバー450の対向面Bsの色と近似する色を有する部分を含み得る。縮小画像MIの原稿画像Adのうち、当該部分を構成する画素は、第1画素PX1として特定される。
例えば、図5(A)の単純二値画像BIsは、原稿画像Adの背景Bgの色が、カバー450の対向面Bsの色と比較的大きく異なる場合の例である。この例では、縮小画像MI(図3(A))のうち、背景Bgの全体と、オブジェクトOb1の全体と、オブジェクトOb2の一部と、を構成する画素は、第2画素PX2として特定されている。そして、縮小画像MIのうち、外側画像Abの全体と、オブジェクトOb2の他の一部と、を構成する画素は、第1画素PX1として特定されている。図5(A)の例では、単純二値画像BIsに、原稿画像Adと外側画像Abとの境界が現れていることが解る。
図5(B)には、単純二値画像BIの他の例として、単純二値画像BImが示されている。この単純二値画像BImは、原稿画像Adの背景Bgの色が、カバー450の対向面Bsの色に近似している場合の例である。この例では、縮小画像MIのうち、オブジェクトOb1の全体と、オブジェクトOb2の一部と、を構成する画素は、第2画素PX2として特定されている。そして、縮小画像MIのうち、外側画像Abの全体と、背景Bgの全体と、オブジェクトOb2の他の一部と、を構成する画素は、第1画素PX1として特定されている。図5(B)の例では、単純二値画像BImに、原稿画像Adと外側画像Abとの境界が現れていないことが解る。
S125では、CPU110は、第1画素PX1の個数M1と、第2画素PX2の個数M2と、をそれぞれ算出する。S130では、CPU110は、第2画素PX2の個数M2が、第1画素PX1の個数M1よりも多いか否か、すなわち、(M1<M2)が満たされるか否かを判断する。図5(A)の単純二値画像BIsのように、原稿画像Adと外側画像Abとの境界が現れるような適切な二値化に成功する場合には、比較的多数の第2画素PX2が特定されるので、第2画素PX2の個数M2が、第1画素PX1の個数M1よりも多くなる。これに対して、図5(B)の単純二値画像BImのように、原稿画像Adと外側画像Abとの境界が現れない場合、すなわち、適切な二値化に失敗する場合には、比較的少数の第2画素PX2しか特定されないので、第2画素PX2の個数M2が、第1画素PX1の個数M1以下になる。
第2画素PX2の個数M2が、第1画素PX1の個数M1よりも多い場合には(S130:YES)、CPU110は、後述するS135〜S145の処理をスキップして、処理をS150に進める。第2画素PX2が、第1画素PX1以下である場合には(S130:NO)、CPU110は、S135〜S145の処理を実行する。
S135では、CPU110は、縮小画像MIの各画素を、その画素の色(輝度および彩度)に応じて、複数個のクラスに分類することによって、縮小画像MIの色の分布を示すヒストグラムを生成する。具体的には、輝度のヒストグラムと、彩度のヒストグラムと、がそれぞれ生成される。
図6は、縮小画像MIのヒストグラムの一例を示す図である。図6(A)の輝度のヒストグラムには、縮小画像MIの外側画像Abに対応する輝度Ybsのピークと、原稿画像Adの背景Bgに対応する輝度Ymのピークと、が現れている。このヒストグラムは、原稿画像Adの背景Bgの色が、カバー450の対向面Bsの色に近似している場合の例である。このために、このヒストグラムでは、外側画像Abに対応する輝度Ybsのピークと、原稿画像Adの背景Bgに対応する輝度Ymのピークと、が比較的近い。この結果、図6(A)に示すように、予め定められた特定輝度範囲YRを用いた二値化(S115、S120)では、適切に二値化することができず、例えば、図5(B)の単純二値画像BImを示す単純二値画像データが生成される。
同様に、図6(B)の彩度のヒストグラムには、縮小画像MIの外側画像Abに対応する彩度Cbsのピークと、原稿画像Adの背景Bgに対応する彩度Cmのピークと、が現れている。そして、このヒストグラムでは、外側画像Abに対応する彩度Cbsのピークと、原稿画像Adの背景Bgに対応する彩度Cmのピークと、が比較的近い。この結果、図6(B)に示すように、予め定められた特定彩度範囲CRを用いた二値化(S115)では、適切に二値化することができない。
S140では、CPU110は、これらのヒストグラムに基づいて、新たな二値化閾値、具体的には、新たな特定輝度範囲YRaおよび特定彩度範囲CRaを決定する。なお、縮小画像データが、モノクロ画像データである場合には、特定輝度範囲YRaだけが決定される。
特定輝度範囲YRaは、例えば、以下のように決定される。CPU110は、図6(A)のヒストグラムのピークを特定することで、原稿画像Adの背景Bgに対応する輝度Ymを特定する。CPU110は、輝度Ybsと輝度Ymとの中央の値が、閾値Ythとなるように、YthおよびΔYaを、以下の式(1)、(2)に従って決定する。
Yth={(Ybs+Ym)/2))…(1)
ΔYa=(Yth−Ybs)…(2)
そして、CPU110は、新たなΔYaに基づいて、(Ybs−ΔY)≦Y≦(Ybs+ΔY)を満たす輝度Yの範囲を、新たな特定輝度範囲YRaとして決定する。
特定彩度範囲CRaは、例えば、以下のように決定される。CPU110は、図6(B)のヒストグラムのピークを特定することで、原稿画像Adの背景Bgに対応する彩度Cmを特定する。CPU110は、彩度Cbsと彩度Cmとの中央の値を、あらたな閾値Cthaとして決定する。CPU110は、Y≦Cthaを満たす彩度Cの範囲を、新たな特定彩度範囲CRaとして決定する。
S145では、CPU110は、決定された特定輝度範囲YRaおよび特定彩度範囲CRaを用いて、縮小画像データを二値化して、単純二値画像BIを示す単純二値画像データを、再度、生成する。これにより、S115またはS120にて最初に生成される単純二値画像データによって示される単純二値画像BIが、図5(B)に示す不適切な単純二値画像BImである場合であっても、本ステップにて2回目に生成される単純二値画像データによって示される単純二値画像BIは、図5(A)に示す適切な単純二値画像BIsとなる可能性を高くすることができる。
S150では、CPU110は、縮小画像データに対して、縮小画像MI内のエッジを抽出するエッジ抽出処理をして、エッジ抽出データを生成する。具体的には、CPU110は、縮小画像データの各画素の値に、いわゆるソーベルフィルタ(Sobel filter)を適用して、エッジ強度Seを算出する。CPU110は、これらのエッジ強度Seを、複数個の画素の値とするエッジ抽出データを生成する。
以下に、エッジ強度の算出式(3)を示す。式(3)の階調値P(x,y)は、スキャン画像SI内の特定の画素位置(x,y)の階調値を表している。位置xは、方向D1(縦方向)の画素位置を示し、位置yは、方向D2(横方向)の画素位置を示している。スキャン画像SI内の画素位置(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の輪郭に対応する画素の値が、他の位置の画素の値と比較して大きくなる。
S155では、CPU110は、S150にて生成済みのエッジ抽出データを二値化して、エッジ二値画像EIを示すエッジ二値画像データを生成する。例えば、CPU110は、エッジ抽出データにおいて、画素の値(すなわち、エッジ強度)が閾値(例えば、128)以上である画素を、エッジ画素PXeとして特定し、画素の値が閾値未満である画素を、非エッジ画素PXnとして特定する。エッジ二値画像データでは、エッジ画素PXeの値は、「1」とされ、非エッジ画素PXnの値は、「0」とされる。
図5(C)には、エッジ二値画像EIの一例が示されている。このエッジ二値画像EIでは、縮小画像MIにおける原稿画像Adと外側画像Abとの境界に対応する画素やオブジェクトOb1、Ob2の輪郭に対応する画素が、エッジ画素PXeとして特定されていることが解る。なお、縮小画像MI内の各画素は、読取画像OIの1個以上の画素と対応しているので、縮小画像MI内のエッジ画素PXeおよび非エッジ画素PXnを特定することは、読取画像OI内の対応するエッジ画素および非エッジ画素を特定することに等しい。
S160では、CPU110は、2個の二値画像データ、すなわち、単純二値画像データとエッジ二値画像データとを合成して、上述した原稿画素特定画像CI(図3(B)、図5(D))を示す原稿画素特定画像データを生成する。具体的には、CPU110は、単純二値画像データとエッジ二値画像データとの各画素の論理和を取ることによって、原稿画素特定画像データを生成する。この結果、単純二値画像データを用いて特定される複数個の第2画素PX2と、エッジ二値画像データを用いて特定される複数個のエッジ画素PXeと、を含む画素群であって、第2画素PX2ともエッジ画素PXeとも異なる画素を含まない画素群を、複数個の原稿画素PXaとして特定する。第2画素PX2ともエッジ画素PXeとも異なる画素群は、複数個の非原稿画素PXbとして特定される。
以上の説明から解るように、本実施例の原稿画素特定処理では、読取画像データを用いて生成される縮小画像データを用いて、特定輝度範囲YR(または特定輝度範囲YRa)内の輝度を有することを含む特定条件を満たす複数個の画素が、複数個の第1画素PX1として特定され、特定条件を満たさない複数個の画素が、複数個の第2画素PX2として特定されることによって、単純二値画像データが生成される(図4のS110〜S145)。さらに、縮小画像データを用いて、エッジ画素PXeを示すエッジ二値画像データが生成される(図4のS150〜S155)。そして、本実施例の画像処理では、単純二値画像データとエッジ二値画像データとを用いて、読取画像OI内の原稿画像Adに対応する原稿領域AA(図3(C))が特定される(図4のS160、図2のS25〜S35)。この結果、
読取画像OI内の原稿領域AAの特定精度を向上できる。
仮に、エッジ二値画像データだけを用いて、原稿領域AAを特定しようとする場合を考える。エッジ二値画像データによって示されるエッジ二値画像EIには、図5(C)に示すように、原稿画像Adの輪郭を示す線を構成するエッジ画素PXeが特定される。しかしながら、エッジ二値画像EIにおいて、原稿画像Adの輪郭を示す線のような細線には、断線した部分が発生しやすい。すなわち、エッジ二値画像データを用いて特定される複数個のエッジ画素PXeには、原稿画像Adの輪郭を構成する複数個の輪郭画素PXo(図3(C))の一部が含まれない可能性がある。この場合には、図2のS30の輪郭特定処理において、原稿画像Adの一部の輪郭が特定できず、その結果、原稿領域AAが適切に特定できない可能性がある。本実施例の原稿画素特定処理で生成される原稿画素特定画像CI(図5(D))では、原稿画像Adの輪郭を示す細線だけでなく、その内側の原稿画像Adの背景Bgを構成する画素も、原稿画素PXaとして特定される。したがって、本実施例では、エッジ二値画像データだけを用いて、原稿領域AAを特定しようとする場合と比較して、精度良く原稿領域AAを特定することができる。
仮に、単純二値画像データだけを用いて、原稿領域AAを特定しようとする場合を考える。単純二値画像データによって示される単純二値画像BIには、特に、原稿画像Adの背景Bgの色が、カバー450の対向面Bsの色に近似している場合には、図5(B)に示す単純二値画像BIsのように、原稿画像Adの輪郭を構成する複数個の輪郭画素PXoの一部または全部が、第2画素PX2として特定されない可能性がある。この場合には、図2のS30の輪郭特定処理において、原稿画像Adの一部の輪郭が特定できず、その結果、原稿領域AAが適切に特定できない可能性がある。本実施例の原稿画素特定処理では、例えば、単純二値画像BIにて、複数個の輪郭画素PXoの一部または全部が、第2画素PX2として特定されていなくても、エッジ二値画像EIにて、複数個の輪郭画素PXoが、エッジ画素PXeとして特定されていれば、複数個の輪郭画素PXoは、原稿画素特定画像CIにて特定される原稿画素PXaに含まれる。したがって、本実施例では、単純二値画像データだけを用いて、原稿領域AAを特定しようとする場合と比較して、精度良く原稿領域AAを特定することができる。
より具体的には、上記原稿画素特定処理では、上述したように、単純二値画像データと、エッジ二値画像データと、の各画素の論理和を取ることによって、原稿画素特定画像データが生成される(図4のS160)。換言すれば、CPU110は、複数個の第2画素PX2と、複数個のエッジ画素PXeと、を含む画素群を示す合成画像データを、原稿画素特定画像データとして生成する。この結果、原稿画素特定画像データを用いて、読取画像OI内の原稿領域AAの特定精度をより向上できる。
さらに、上記原稿領域特定処理では、特定輝度範囲YRを用いて特定される複数個の第2の画素の複数個の第2画素PX2の個数M2が、基準以下(具体的には、第1画素PX1の個数M1以下)である場合には(図4のS130:NO)、CPU110は、特定輝度範囲YRとは異なる特定輝度範囲YRaを用いて、複数個の第1画素PX1と複数個の第2画素PX2とを、再度、特定することによって、単純二値画像データを、再度、生成する(図4のS145)。上述したように、第2画素PX2の個数M2が、基準以下である場合には、複数個の第1画素PX1と複数個の第2画素PX2とを適切に特定できていない可能性が高い(例えば、図5(B))。上記構成によれば、このような場合に、特定輝度範囲YRaを用いて、複数個の第1画素PX1と複数個の第2画素PX2とが、再度特定されるので、単純二値画像データをより適切に生成できる。また、1回目は、予め定められた特定輝度範囲YRを用いて、単純二値画像データが生成されるので、1回目の単純二値画像データが適切であると判断できる場合には、ヒストグラムを用いた特定輝度範囲YRaの決定を行う必要がない。この結果、単純二値画像データの生成に要する処理時間を低減できる。
以上の説明から解るように、上記原稿画素特定処理における単純二値画像データは、第1画像データの例であり、エッジ二値画像データは、第2画像データの例であり、特定輝度範囲YRは、第1の特定輝度範囲の例であり、特定輝度範囲YRaは、第2の特定輝度範囲の例である。
A−4.探索範囲決定処理
図2のS25の探索範囲決定処理について説明する。探索範囲決定処理は、上述したように、原稿画素特定画像データを用いて、原稿画素特定画像CI内にて、探索範囲SA(図3(B))を決定する処理である。図7は、探索範囲決定処理のフローチャートである。図8は、探索範囲決定処理の説明図である。図8には、原稿画素特定画像CIが示されている。図8では、図の見やすさのために、図5(D)にて黒で塗られている領域をハッチングで示している。
図7のS205では、CPU110は、原稿画素特定画像CIの外形の4個の辺に対応する4個の端、すなわち、上端UE、下端BE、左端LE、右端REから、1個の注目端を選択する。
S210では、CPU110は、注目端から特定量ΔWだけ離れた位置を、探索位置として設定する。例えば、図8の上端UEが注目端である場合には、上端UEから特定量ΔWだけ離れた方向D1の位置、すなわち、図8のラインP1U上の位置が、探索位置に設定される。同様に、下端BEが注目端である場合には、下端BEから特定量ΔWだけ離れた方向D1の位置、すなわち、ラインP1B上の位置が、探索位置に設定される。右端RE、左端LEが注目端である場合には、それぞれ、下端BE、右端RE、左端LEからΔWだけ離れた方向D2の位置、すなわわち、ラインP1B、PIL上の位置が、探索位置に設定される。特定量ΔWは、予め設定された量であり、例えば、原稿における3mmの長さに相当する画素数である。
S215では、CPU110は、設定された探索位置に、注目端に沿う方向にM個以上連続する原稿画素PXaが存在するか否かを判断する。Mは、2以上の整数であり、例えば、20である。例えば、図8の上端UEが注目端である場合には、探索位置であるラインP1U上に、M個以上の原稿画素PXaが連続して並んでいるか否かが判断される。図8の例では、上端UEが注目端である場合には、探索位置(ラインP1U上の位置)には、M個以上の原稿画素PXaが並んでいると判断される。例えば、図8の左端LEが注目端である場合には、探索位置であるラインP1L上に、M個以上の原稿画素PXaが連続して並んでいるか否かが判断される。図8の例では、左端LEが注目端である場合には、探索位置(ラインP1L上の位置)には、M個以上の原稿画素PXaが並んでいないと判断される。
探索位置にM個以上連続する原稿画素PXaが存在しない場合には(S215:NO)、CPU110は、探索位置を、注目端から離れる方向に向かって1画素ずつずらしながら探索を行う。具体的には、注目端から離れる方向は、注目端と垂直な方向であって、かつ、注目端と向かい合う原稿画素特定画像CIの他の端に向かう方向である。
具体的には、S220では、CPU110は、探索位置を、現在の位置よりも1画素だけ注目端から離れた位置に設定する。S225では、CPU110は、新たな探索位置に、注目端に沿う方向にM個以上連続する原稿画素PXaが存在するか否かを判断する。探索位置にM個以上連続する原稿画素PXaが存在しない場合には(S225:NO)、CPU110は、S220に戻って、探索位置を、さらに、1画素だけ注目端から離れた位置に設定する。探索位置にM個以上連続する原稿画素PXaが存在する場合には(S225:YES)、S230にて、CPU110は、現在の探索位置を、注目端に対応する探索範囲SAの端の位置として決定して、処理をS260に進める。
図8の例では、注目端が左端LEである場合には、最初の探索位置は、ラインP1L上の位置である(S210、S215)。探索位置は、ラインP1L上の位置から1画素ずつ右方向(方向D2)にずらされて、探索が繰り返される(S220、S225)。例えば、図8のラインP2La、P2Lb、P2Lc上の位置が、順次に、探索位置として設定される。そして、探索位置が、図8のラインP2Lcであるときに、探索位置にM個以上連続する原稿画素PXaが存在すると判断され(S225:YES)、ラインP2Lc上の位置が、探索範囲SAの左端TLの位置として決定される(S230)。
注目端が右端REである場合には、ラインP1R上の位置から、左方向(方向D2の反対方向)に、順次に探索が行われて、図8に示す探索範囲SAの右端TRの位置が決定される(S210〜S230)。
S215にて、探索位置にM個以上連続する原稿画素PXaが存在する場合には(S215:YES)、CPU110は、探索位置を、注目端に向かって1画素ずつずらしながら探索を行う。
具体的には、S235では、CPU110は、探索位置を、現在の位置よりも1画素だけ注目端側の位置に設定する。S240では、CPU110は、新たな探索位置に、注目端に沿う方向にM個以上連続する原稿画素PXaが存在するか否かを判断する。探索位置にM個以上連続する原稿画素PXaが存在しない場合には(S240:NO)、S245にて、CPU110は、現在の探索位置より1画素だけ注目端から離れた位置を、注目端に対応する探索範囲SAの端の位置として決定して、処理をS260に進める。
探索位置にM個以上連続する原稿画素PXaが存在する場合には(S240:YES)、S250にて、CPU110は、現在の探索位置が注目端の位置であるか否かを判断する。現在の探索位置が注目端の位置でない場合には(S240:NO)、CPU110は、S235に戻って、探索位置を、さらに、1画素だけ注目端側の位置に設定する。現在の探索位置が注目端の位置である場合には(S240:YES)、S255にて、CPU110は、注目端の位置を、注目端に対応する探索範囲SAの端の位置として決定して、処理をS260に進める。
図8の例では、注目端が上端UEである場合には、例えば、最初の探索位置は、ラインP1U上の位置である(S210、S215)。探索位置は、ラインP1U上の位置から1画素ずつ上方向に(方向D1の反対方向)にずらされて、探索が繰り返される(S235、S240、S250)。例えば、図8のラインP3Ua、P3Ub、P3Uc上の位置が、順次に、探索位置として設定される。そして、探索位置が、図8のラインP3Ucであるときに、ラインP3Ucの位置は、上端UEの位置であるので(S250:YES)、原稿画素特定画像CIの上端UEの位置が、探索範囲SAの上端TUの位置として決定される(S255)。
注目端が下端BEである場合には、ラインP1B上の位置、ラインP3Ba、P3Bb、P3Bc上の位置が、順次に探索位置とされて、探索が行われる(S235、S240、S250)。そして、探索位置が、図8に示す探索範囲SAの下端TBの位置よりも1画素だけ下側のラインP3Bcであるときに、探索位置にM個以上連続する原稿画素PXaが存在しないと判断され(S240:NO)、ラインP3Bcよりも1画素だけ上側の位置が、探索範囲SAの下端TBとして決定される(S245)。
S260では、CPU110は、全ての端UE、BE、LE、REを、注目端として処理したか否かを判断する。未処理の端がある場合には(S260:NO)、CPU110は、S205に処理を戻す。全ての端が処理された場合には(S260:YES)、S265にて、CPU110は、探索範囲SAを規定する範囲情報を生成して、探索範囲決定処理を終了する。範囲情報は、例えば、原稿画素特定画像CIの4個の端UE、BE、LE、REのそれぞれと、探索範囲SAの対応する端TU、TB、TL、TRと、の間の距離DU、DB、DL、DRを示す情報である。
以上説明した本実施例の探索範囲決定処理では、例えば、注目端が左端LEである場合には、左端LEから特定量ΔWだけ離れたラインP1L上の位置に、左端LEに沿う方向に連続するM個の原稿画素PXaが存在するか否かが判断される(S210、S215)。ラインP1L上の位置に複数個の原稿画素PXaが存在しない場合に(S215:NO)、ラインP2La〜P2Lc上の位置について、特定の端から離れる方向に向かって順次に、複数個の原稿画素PXaが存在するか否かが判断される(S220)。そして、ラインP2Lc上の位置に複数個の原稿画素PXaが存在すると判断される場合に(S225:YES)、ラインP2Lc上の位置に基づいて、左端LEの端に対応する探索範囲SAの左端TLの位置が決定される(S230)。そして、本実施例の画像処理では、このように決定される探索範囲SA内にて、原稿画像Adの輪郭を構成する複数個の輪郭画素PXoが特定される(図2のS30)。
読取画像OIの端部には、読取時に光の照射が不均一になりやすいこと等に起因して影が生じやすい。特に、スキャナ400のようなフラットベッド式の読取装置では、ガラス製の原稿台440(プラテンガラスとも呼ぶ)の側端面部で光りが反射することや、原稿の原稿台440からの浮き上がりなどによって、原稿の端部に照射される光量が減少しやすいため、このような影が生じやすい。このような影が生じている部分では、読取画像OIにおいて画素の濃度が高くなるので、当該部分には、原稿画素PXaが存在しない場合であっても、誤って原稿画素PXaが特定されてしまう場合がある。上記実施例の探索範囲決定処理によれば、上述したように、左端LEから離れたラインP1L上の位置に、M個の原稿画素PXaが存在するか否かが判断され(S210、S215)、ラインP1L上の位置にM個の原稿画素PXaが存在しない場合に(S215:NO)、ラインP2La〜P2Lc上の位置について、順次に、M個の原稿画素PXaが存在するか否かが判断される(S220)。この結果、例えば、図3、図8の例のように、原稿画像Adが、左端LEから離れた位置にある場合には、探索範囲SAの左端TLは、読取画像OI(原稿画素特定画像CI)の左端LEから離れた位置に決定される。そして、このように決定された探索範囲SA内にて、複数個の輪郭画素PXoが特定される。したがって、読取画像OIの左端LEの近傍に影が生じているために、左端LEの近傍に、複数個の原稿画素PXaが存在しないにも関わらずに、誤って複数個の原稿画素PXaが存在すると判断された場合でも、原稿画像Adの輪郭を精度良く特定することができる。
さらに、本実施例の探索範囲決定処理では、例えば、注目端が下端BEである場合には、ラインP1B上の位置に、下端BEに沿う方向に連続するM個の原稿画素PXaが存在するか否かが判断される(S210、S215)。ラインP1B上の位置にM個の原稿画素PXaが存在する場合に(S215:YES)、ラインP1B上の位置よりも下端BE側の複数個のラインP3Ba〜P3Bc上の位置について、順次に、M個の原稿画素PXaが存在するか否かが判断される(S235、S240、S250)。そして、複数個のラインP3Ba〜P3Bc上の位置についての判断結果に基づいて、探索範囲SAの下端TBの位置が決定される(S245、S255)。したがって、図3、図8の例のように、ラインP1B上の位置よりも下端BE側に複数個の原稿画素PXaが存在する場合であっても、適切な探索範囲SAを規定できるので、原稿画像Adの輪郭をより精度良く特定することができる。
さらに、本実施例の探索範囲決定処理では、例えば、注目端が下端BEである場合には、複数個のラインP3Ba〜P3Bc上の位置について、ラインP1B上の位置から下端BEに向かって順次に、M個の原稿画素PXaが存在するか否かが判断される(S235、S240、S250)。そして、ラインP3Bc上の位置にM個の原稿画素PXaが存在しないと判断される場合に(S240:NO)、ラインP3Bc上の位置に基づいて、探索範囲SAの下端TBの位置が決定される。この結果、例えば、読取画像OIの下端BEに影が生じている場合であっても、下端BEとラインP1B上の位置との間に、探索範囲SAの下端BEを適切に決定できる。したがって、原稿画像Adの輪郭をさらに精度良く特定することができる。
さらに、本実施例の探索範囲決定処理では、読取画像OIおよび原稿画素特定画像CIの4個の辺に対応する4個の端UE、BE、LE、REのそれぞれを注目端として、S210〜S255の処理が実行されて、4個の辺に対応する探索範囲SAの4個の端TU、TB、TL、TRが決定される(S205、S260)。したがって、矩形の読取画像OIに対して適切な探索範囲を規定できるので、矩形の読取画像OI内の原稿画像Adの輪郭を精度良く特定することができる。
さらに、本実施例では、読取画像データは、フラットベッド式のスキャナ400を用いて生成されるので、端部に影が生じやすい読取画像において、原稿画像Adの輪郭を精度良く特定することができる。
さらに、本実施例では、読取画像データを用いて生成される原稿画素特定画像データを用いて、S210〜S255の処理が実行される。すなわち、原稿画素特定画像CI上にて探索範囲SAを決定することによって、間接的に、原稿画素特定画像CI上の探索範囲に対応する読取画像OI上の範囲が、読取画像OI上の探索範囲として決定される。したがって、原稿画素特定画像データを生成することなく、読取画像OI上にて、直接的に、探索範囲を決定する場合と比較して、効率良く、探索範囲を決定できる。
以上の説明から解るように、上記探索範囲決定処理における原稿画素特定画像CI内のラインP1U、P1B、P1R、P1Lの位置に対応する読取画像OI内の位置は、第1の位置の例であり、原稿画素特定画像CI内のラインP2La〜P2Lcの位置に対応する読取画像OI内の位置は、第2の位置の例であり、原稿画素特定画像CI内のラインP3Ua〜P3Uc、P3Ba〜P3Bcの位置に対応する読取画像OI内の位置は、第3の位置の例である。
A−5.輪郭特定処理
図2のS30の輪郭特定処理について説明する。輪郭特定処理は、上述したように、原稿画素特定画像データを用いて、探索範囲SA内にて、輪郭画素PXoを特定する処理である。図9は、輪郭特定処理のフローチャートである。図10は、輪郭特定処理の説明図である。
図9のS300では、CPU110は、輪郭画像OLIを示す輪郭画像データの初期データを、揮発性記憶装置120内に準備する。初期データは、縮小画像MIや原稿画素特定画像CIと同じサイズの画像を示す二値画像データであり、全ての画素の値が、初期値として、「0」に設定されている。
S305では、CPU110は、原稿画素特定画像CIにおいて、探索範囲SAの外形の4個の辺に対応する4個の端、すなわち、上端TU、下端TB、左端TL、右端TR(図10)から、1個の注目端を選択する。S305では、CPU110は、注目端上の複数個の画素の中から、1個の注目画素を選択する。
S315では、CPU110は、注目画素を始点として、注目端から探索範囲SAの内側に向かって探索して、最初に探索される原稿画素PXaを特定する。探索範囲SAの内側に向かう方向は、具体的には、注目端と垂直な方向であって、かつ、注目端とは向かい合う探索範囲SAの他の端に向かう方向である。図10に示すように、上端TU上に位置する画素PXt1が注目画素である場合には、下側に向かって検索が行われ、最初に探索される原稿画素PXa1が特定される。同様にして、右端TR、下端TB、左端TL上にそれぞれ位置する画素PXt2、PXt3、PXt4が注目画素である場合には、それぞれ、左側、上側、右側に向かって検索が行われ、最初に探索される原稿画素PXa2、PXa3、PXa4が特定される。
S320では、CPU110は、特定された原稿画素PXaを、輪郭画素PXoとして、輪郭画像データに記録する。具体的には、特定された原稿画素PXaに対応する輪郭画像データにおける画素の値を「1」に変更する。
S325では、CPU110は、注目端上の全ての画素を注目画素として処理したか否かを判断する。未処理の画素がある場合には(S325:NO)、CPU110は、S305に処理を戻す。全ての画素が処理された場合(S325:YES)、CPU110は、S330に処理を進める。
S335では、CPU110は、全ての探索範囲SAの端TU、TB、TL、TRを、注目端として処理したか否かを判断する。未処理の端がある場合には(S335:NO)、CPU110は、S305に処理を戻す。全ての端が処理された場合には(S335:YES)、CPU110は、輪郭特定処理を終了する。輪郭特定処理によって、図3(C)に示す輪郭画像OLIを示す輪郭画像データが生成される。
本実施例の輪郭特定処理によれば、探索範囲SAの端から探索範囲SAの内側に向かって原稿画素PXaが探索され、最初に探索される特定の原稿画素PXa(例えば、PXa1〜PXa4)が、輪郭画素PXoとして特定される。したがって、探索範囲SA内において、原稿画像Adの輪郭を、容易、かつ、適切に特定することができる。
A−6.原稿領域特定処理
図2のS35の原稿領域特定処理について説明する。原稿領域特定処理は、上述したように、輪郭画像データを用いて、原稿画像Adに対応する原稿領域AAを特定する処理である。図11は、原稿領域特定処理のフローチャートである。
図11のS310では、輪郭画像データを用いて、原稿の縁を示す直線の候補である複数個の候補直線を特定する。具体的には、輪郭画素PXoによって表される直線が、候補直線として採用される。候補直線を特定する方法としては、輪郭画素PXoを用いるハフ変換が用いられる。ハフ変換は、公知の処理であるので、その説明を省略する。ハフ変換の結果、図3(C)の例では、原稿画像Adの輪郭を示す6本の候補直線L1〜L6が特定される。
S320では、CPU110は、6本の候補直線L1〜L6から、原稿の縁を示す直線を選択する。具体的には、CPU110は、6本の候補直線L1〜L6から、輪郭画像OLIの外形の4個の端(辺)に位置する直線を除外する。例えば、図3(A)の例では、輪郭画像OLIの上端に位置する候補直線L2が除外される。輪郭画像OLIの4個の端に位置する直線(例えば、L2)は、読取画像OIの対応する端に位置している。このような直線L2は、図3(A)に示すように、読取時において、読取可能領域からはみ出した原稿上の領域Daに対応しており、原稿の縁を示していないと考えられる。CPU110は、残りの候補直線L1、L3〜L6から、互いに平行な2本の直線の組を、2組抽出する。図3(A)の例では、直線L3とL6の組と、直線L2とL4の組と、が抽出される。これらの4本の直線L2、L3、L4、L6が、原稿の縁を示す直線として選択される。
S330では、CPU110は、原稿の縁を示す直線群で形成される矩形の内部領域を原稿領域AAとして特定する。具体的には、原稿の縁を示す4本の直線L2、L3、L4、L6の4個の交点CP1〜CP4を特定することで、該4個の交点CP1〜CP4によって定義される原稿領域AAが特定される。
以上の説明から解るように、本実施例の原稿領域特定処理では、原稿画素特定画像データを用いて生成された輪郭画像データを用いて、原稿画像Adの輪郭のうち、原稿の縁を表す直線の候補である複数の候補直線L1〜L6が特定され(S310)、これらのうちの一部の直線L2、L3、L4、L6を用いて規定される原稿領域AAが決定される(S320、S330)。したがって、原稿画素特定画像データに基づいて、具体的には、原稿画素特定画像データを用いて生成された輪郭画像データを用いて、特定済みの原稿画像Adの輪郭から、適切な原稿領域AAを特定することができる。
A−7.補修処理
図2のS40の補修処理について説明する。補修処理は、上述したように、原稿領域AAの特定結果を用いて、読取画像データに対して実行される処理である。図12は、補修処理のフローチャートである。
図12のS410では、読取画像データに対して、原稿画像Adの傾きを補正する傾き補正処理が実行される。具体的には、輪郭画像OLIにて特定された直線L3の輪郭画像OLIの縦方向に対する角度が算出される。そして、該角度分だけ読取画像OIを回転させることによって、直線L3に対応する読取画像OI内の原稿画像Adの輪郭線を、読取画像OIの縦方向と平行にする回転処理が実行される。
S420では、CPU110は、傾き補正済みの読取画像OIにおいて、原稿画像Adの欠落部分を描画する。具体的には、傾き補正済みの読取画像OIにおいて、輪郭画像OLIを用いて特定される原稿画像Adの輪郭よりも外側であって、かつ、原稿領域AAよりも内側の領域、具体的には、図3(A)の領域Da、Dbが特定される。傾き補正済みの読取画像OIにおいて、領域Da、Db内の複数個の画素の値が、原稿画像Adの背景Bgの色を示す値に置換される。背景Bgの色を示す値には、例えば、輪郭画像OLIを用いて特定される原稿画像Adの輪郭に沿い、かつ、原稿画像Ad内に位置する複数個の画素の値の平均値が用いられる。
S430では、CPU110は、欠落部分が描画済の読取画像OIにおいて、外側画像Abの色を、指定色に変更する。具体的には、傾き補正済みの読取画像OIにおいて、輪郭画像OLIを用いて特定される原稿画像Adの輪郭の外側に位置する複数個の画素の値が、予め指定された色(例えば、白)を示す値に置換される。これによって、図3(D)の補修済画像RIを示す補修済画像データが生成される。
B.変形例:
(1)上記実施例では、単純二値画像データと、エッジ画像データと、の論理和を取ることによって、原稿画素特定画像データが生成される(図4のS160)。これに代えて、単純二値画像データと、エッジ画像データと、別の二値画像データと、の論理和を取ることによって、最終的な原稿画素特定画像データが生成されても良い。別の二値画像データには、例えば、読取画像データに含まれる各画素のR値を、所定の閾値で二値化して得られるR成分の二値画像データが用いられ得る。
(2)上記実施例では、第2画素PX2の個数M2が、第1画素PX1の個数M1以下である場合に(図4のS130:NO)、単純二値画像データを、再度、生成している(図4のS135〜S145)。単純二値画像データの生成を再度行うか否かの判断基準は、これに限られない。例えば、第2画素PX2の個数M2が、縮小画像MIの画素の総数の60%以下である場合に、単純二値画像データを、再度、生成しても良い。
(3)図4の原稿領域特定処理では、複数個の候補直線L1〜L6を用いて、原稿領域AAを特定している(図11のS310〜S330)が、これに限られない。例えば、原稿画像Adの傾きが発生し難い場合などには、輪郭画像OLI内に特定される複数個の輪郭画素PXoに対する外接矩形を、原稿領域AAとして特定しても良い。
(4)図2の画像処理のステップは、適宜、省略が可能である。例えば、図2のS15の縮小画像データの生成は、省略されても良い。この場合には、S20の原稿画素特定処理において、読取画像データを用いて、読取画像データと同じ画素数の単純二値画像データおよびエッジ二値画像データが生成される。
(5)図4の原稿画素特定処理のステップは、適宜、省略が可能である。例えば、図4のS110およびS115は省略されても良い。この場合には、読取画像データが、モノクロ画像データであるかカラー画像データであるかに関わらずに、S120にて特定輝度範囲YRだけを用いて、彩度を考慮することなく、単純二値画像データが生成される。
また、図4のS125〜S145は、省略されても良い。この場合には、予め定められた特定輝度範囲YRや特定彩度範囲CRを用いて、S115またはS120にて生成される単純二値画像データが、最終的な単純二値画像データとして用いられても良い。また、図4のS110〜S130は、省略されても良い。この場合には、常に、S130〜S145が実行されて、ヒストグラムに基づく特定輝度範囲YRaや特定彩度範囲CRaを用いて、S145にて生成される単純二値画像データが、常に、最終的な単純二値画像データとして用いられても良い。
(6)図7の探索範囲決定処理では、探索範囲SAを規定する範囲情報として、原稿画素特定画像CIの4個の端のそれぞれと、探索範囲SAの対応する端と、の間の距離DU、DB、DL、DRを示す情報が生成される(S265)。これに限らず、範囲情報は、例えば、矩形の探索範囲SAの4個の角の座標情報であっても良いし、探索範囲SAの上端および下端を示す縦方向の2個の座標と、左端および右端を示す横方向の2個の座標と、を示す情報であっても良い。
(7)図7の探索範囲決定処理のステップは、適宜、省略が可能である。例えば、図7のS235〜S255の処理を省略して、ラインP1U、P1B、P1L、P1Rよりも注目端側の探索を行わなくても良い。ラインP1U、P1B、P1L、P1R上の位置に、連続するM個の原稿画素PXaが存在する場合には(S215:YES)、注目端の位置を、注目端に対応する探索範囲SAの端として決定しても良い。
また、原稿画素特定画像CIの4個の端の全てについて、S210〜S255の処理を行わなくても良い。例えば、スキャナ400の構造などから影が生じやすい読取画像OIの1以上3以下の端が解っている場合には、読取画像OIの当該1以上3以下の端に対応する端について、S210〜S255の処理を行い、残りの端については、その端から内側に向かって、連続するM個の原稿画素PXaが存在するか否かを探索しても良い。
(8)図7の探索範囲決定処理では、ラインP1U、P1B、P1L、P1R上の位置に、連続するM個の原稿画素PXaが存在する場合には(S215:YES)、ラインP1U、P1B、P1L、P1Rから注目端に向かって、順次に、連続するM個の原稿画素PXaが存在するか否かを探索している(S235、S240、S250)。これに代えて、この場合には、注目端からラインP1U、P1B、P1L、P1Rに向かって、順次に、連続するM個の原稿画素PXaが存在するか否かを探索しても良い。この場合には、連続するM個の原稿画素PXaが存在する最初のライン上の位置が、探索範囲SAの端の位置に決定される。
(9)図7の探索範囲決定処理は、原稿画素特定画像データを用いて、原稿画素特定画像CIを解析することによって、間接的に、読取画像OI上に探索範囲を決定している。これに代えて、原稿画素特定画像データを用いることなく、読取画像データまたは縮小画像データを直接解析することによって、探索範囲SAを決定しても良い。例えば、読取画像OI上に、ラインP1U、P1B、P1L、P1Rに対応するラインを設定して、該ライン上に連続するM個の画素が存在するか否かを、読取画像データの画素の値を用いて決定しても良い。
(10)図9の輪郭特定処理とは異なる方法で、複数個の輪郭画素PXoが特定されても良い。例えば、探索範囲SAの端上に位置する原稿画素PXaを始点として、非原稿画素PXbと隣接する原稿画素PXaを辿ることによって、複数個の輪郭画素PXoが特定されても良い。
(11)図11の原稿領域特定処理は、適宜に変更可能である。例えば、候補直線を特定する処理(S310)は、ハフ変換を用いる処理に代えて、原稿の縁を表し得る直線を特定する他の種々の処理であってよい。例えば、CPU110は、最小二乗法を用いて、複数の輪郭画素の配置を近似する候補直線を特定してもよい。また、S320では、互いに平行な直線の組に、代えて、互いに垂直な直線の組が、2組特定されても良い。また、最も長い1本の直線だけが原稿の縁を示す直線として特定されても良い。この場合には、例えば、該1本の直線を基準に、例えば、ユーザによって指定された用紙サイズに対応する大きさの矩形が原稿領域AAとして特定されても良い。
(12)図12の補修処理は、適宜に変更可能である。例えば、S410〜S430の3個のステップのうち、1個または2個のステップは省略されても良い。また、補修処理に代えて、原稿領域AAの特定結果や、輪郭の特定結果は、他の画像処理、例えば、トリミング処理のために利用されても良い。
(13)図4の原稿画素特定処理は、一例であり、これに限られない。例えば、S115、S120にて、生成される単純二値画像データによって特定される第2画素PX2を、原稿画素PXaとして用いて、S125以降の処理は省略されても良い。また、S150、S255にて生成されるエッジ二値画像データによって特定されるエッジ画素PXeを、原稿画素PXaとして用いて、S110〜S145、S160の処理は省略されても良い。
(14)図11の原稿領域特定処理は、省略されても良い。この場合には、例えば、輪郭特定処理の後に、例えば、特定された原稿画像Adの輪郭に沿って、画像をトリミングする処理や、原稿画像Adの輪郭内の画像を補正する処理が行われても良い。
(15)原稿を光学的に読み取る装置は、図1で説明したスキャナ400に代えて、原稿を光学的に読み取ることが可能な他の種々の装置であってよい。例えば、スキャナ400は、原稿を搬送するための自動給紙装置(Auto Document Feeder)を備え、搬送される原稿を、停止したイメージセンサ420で読み取るタイプのスキャナであっても良い。また、画像処理装置100のCPU110は、画像処理装置100に接続されたスキャナ400から、読取画像データを取得することに代えて、不揮発性記憶装置130や、画像処理装置100に接続された図示しない外部記憶装置(例えば、USBメモリ)に予め格納された読取画像データを取得してもよい。
(16)図2の画像処理は、パーソナルコンピュータとは異なる種類の装置によって実行されても良い。例えば、画像処理は、スキャナ(例えば、スキャナ400)のCPU411によって実行されても良い。画像処理は、ネットワークに接続されたサーバ装置によって実行されても良い。画像処理は、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)によって、一部ずつ分担して実行されても良い。この場合には、該複数の装置の全体が、画像処理装置に対応する。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD−ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。