A.第1実施例:
図1(A)は、一実施例としての画像処理システムを示す説明図である。この画像処理システムは、画像処理装置100と、スキャナ400と、を含んでいる。画像処理装置100とスキャナ400とは、ネットワークNTに接続されており、互いに通信可能である。
画像処理装置100は、例えば、パーソナルコンピュータである(例えば、デスクトップコンピュータ、タブレットコンピュータ)。画像処理装置100は、プロセッサ110と、揮発性記憶装置120と、不揮発性記憶装置130と、画像を表示する表示部140と、ユーザによる操作を受け入れる操作部150と、インタフェース190と、を有している。これらの要素は、バスを介して互いに接続されている。
プロセッサ110は、データ処理を行う装置であり、例えば、CPUである。揮発性記憶装置120は、例えば、DRAMであり、不揮発性記憶装置130は、例えば、フラッシュメモリである。不揮発性記憶装置130は、プログラム132を格納している。プロセッサ110は、プログラム132を実行することによって、スキャナ400に原稿を読み取らせて、読み取った原稿を表す出力画像データを生成する処理を実行する(詳細は後述)。プログラム132は、例えば、スキャナ400を制御するためのスキャナドライバであってよい。プロセッサ110は、プログラム132の実行に利用される種々の中間データを、記憶装置(例えば、揮発性記憶装置120、不揮発性記憶装置130のいずれか)に、一時的に格納する。プログラム132は、例えば、スキャナ400の製造者によって提供される。
表示部140は、画像を表示する装置であり、例えば、液晶ディスプレイである。これに代えて、LEDディスプレイ、有機ELディスプレイなどの、画像を表示する他の種類の装置を採用してもよい。操作部150は、ユーザによる操作を受け取る装置であり、例えば、表示部140上に重ねて配置されたタッチパネルである。これに代えて、ボタン、レバーなどの、ユーザによって操作される他の種類の装置を採用してもよい。ユーザは、操作部150を操作することによって、種々の指示を画像処理装置100に入力可能である。
インタフェース190は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、インタフェース190は、有線または無線のネットワークインタフェースであり、ネットワークNTに接続されている。
図1(A)、図1(B)には、スキャナ400の斜視図が示されている。図中の第1方向Dp1と第2方向Dp2とは、水平な方向を示し、第3方向Dp3は、鉛直上方向を示している。第1方向Dp1と第2方向Dp2とは、互いに垂直である。以下、第1方向Dp1を「+Dp1方向」とも呼び、第1方向Dp1の反対の方向を「−Dp1方向」とも呼ぶ。第2方向Dp2と第2方向Dp2に反対の方向と第3方向Dp3と第3方向Dp3に反対の方向とについても、同様に、それぞれ、「+Dp2方向」「−Dp2方向」「+Dp3方向」「−Dp3方向」とも呼ぶ。また、第3方向Dp3を、上方向Dp3とも呼ぶ。
スキャナ400は、本体部490と、本体部490の上方向Dp3側に開閉可能に取り付けられた搬送装置450と、を有している。図1(A)は、搬送装置450が閉じられた状態のスキャナ400を示し、図1(B)は、搬送装置450が上方向Dp3に向けて開けられた状態のスキャナ400を示している。
本体部490には、制御部410と、原稿を光学的に読み取る読取部420と、読取部420を第1方向Dp1に平行に移動させる移動装置430と、が収容されている。移動装置430は、読取部420を移動させる図示しない動力源(例えば、電気モータ)を含んでいる。搬送装置450は、原稿を搬送するための装置であり、自動給紙装置(Auto Document Feeder)とも呼ばれる。本実施例では、搬送装置450は、スキャンすべき原稿を載せ置くための給紙トレー456と、給紙トレー456上の原稿を搬送する搬送ローラ452と、搬送ローラ452を回転させる図示しない動力源(例えば、電気モータ)と、スキャン済の原稿を載せ置くための排紙トレー458と、を有している。
本体部490(図1(B))の上方向Dp3側の面には、原稿台440が設けられている。原稿台440は、搬送装置450を上方向Dp3に向けて開くことによって、現れる。原稿台440は、第1方向Dp1に平行な2辺と第2方向Dp2に平行な2辺とで囲まれる略矩形状の台であり、透明板(例えば、ガラス板)を用いて構成されている。原稿台440は、フラットベッドとも呼ばれる。
読取部420は、原稿台440の−Dp3方向側(すなわち、原稿台440の下)に配置されている。読取部420は、原稿を光学的に読み取る光学センサであり、CCDやCMOSなどの複数の光電変換素子(単に、光学素子とも呼ぶ)が、第2方向Dp2に並んで配置された構成を有している。読取部420は、原稿台440上の原稿を、光学的に読み取ることによって、読み取った原稿を表す信号を出力する。
制御部410は、読取部420と移動装置430と搬送装置450とを制御する。制御部410は、例えば、データ処理を行うプロセッサ411(例えば、CPU)と、揮発性記憶装置412(例えば、DRAM)と、不揮発性記憶装置413(例えば、フラッシュメモリ)と、インタフェース419と、を含むコンピュータである。制御部410の各要素は、バスを介して互いに接続されている。不揮発性記憶装置413は、予め、プログラム414を格納している。プロセッサ411は、プログラム414を実行することによって、読取部420と移動装置430と搬送装置450とを制御する。インタフェース419は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、インタフェース419は、有線または無線のネットワークインタフェースであり、ネットワークNTに接続されている。
スキャナ400は、搬送装置450(図1(A))を用いて原稿を読み取るモード(搬送モードと呼ぶ)と、搬送装置450を用いずに原稿台440(図1(B))を用いて原稿を読み取るモード(台モードと呼ぶ)と、で動作可能である。制御部410のプロセッサ411は、画像処理装置100からの指示に従って、搬送モードと台モードとのいずれかの読取モードで、スキャナ400を制御する。
搬送モードで原稿を読み取る場合、図1(A)のように、搬送装置450が閉じられた状態で(すなわち、搬送装置450が原稿台440上に載った状態で)、スキャナ400が用いられる。制御部410のプロセッサ411は、移動装置430を制御して、読取部420を、予め決められた位置(例えば、原稿台440のうちの第1方向Dp1とは反対方向側の端の位置)に配置する。そして、プロセッサ411は、搬送装置450の搬送ローラ452を回転させることにより、原稿を、給紙トレー456から、原稿台440上の読取部420に対向する位置を通って、排紙トレー458へ至る経路454に沿って、搬送する。プロセッサ411は、読取部420(すなわち、光学素子)を移動させずに、読取部420に、読取部420に対して移動する原稿を読み取らせる。これにより、原稿の全体が読み取られる。読取部420は、読み取った画像(「読取画像」と呼ぶ)を表す信号を出力する。プロセッサ411は、読取部420からの信号を用いて、読取画像を表す読取画像データを生成し、生成した読取画像データを、画像処理装置100へ送信する。
原稿台440を用いて原稿を読み取る場合、原稿台440上に原稿が載せ置かれる。制御部410のプロセッサ411は、移動装置430を制御して、読取部420を、原稿台440のうち第1方向Dp1とは反対方向側の端の位置から第1方向Dp1側の端の位置まで移動させる。また、プロセッサ411は、原稿を移動させずに、読取部420(すなわち、光学素子)を原稿に対して第1方向Dp1に移動させながら、読取部420に原稿を読み取らせる。これにより、原稿の全体が読み取られる。プロセッサ411は、読取部420からの信号を用いて読取画像を表す読取画像データを生成し、生成した読取画像データを、画像処理装置100へ送信する。
図2は、スキャン処理の例を示すフローチャートである。本実施例では、画像処理装置100のプロセッサ110は、スキャナドライバとして、スキャン処理を実行する。このスキャン処理では、スキャナ400に原稿を読み取らせることによって読取画像データが取得され、取得された読取画像データを用いて、傾きなどが補正された原稿を表す出力画像データが生成される。ユーザは、操作部150を操作することによって、スキャン処理の開始指示を入力する。開始指示は、読取モードを指定する指示を含んでいる。プロセッサ110は、入力された開始指示に応じて、図2の処理を開始する。
S110では、プロセッサ110は、入力された開始指示に基づいて、ユーザによって指定された読取モードを特定する(指定モードと呼ぶ)。S120では、プロセッサ110は、指定モードで原稿を読み取る指示を、スキャナ400に送信する。スキャナ400の制御部410のプロセッサ411は、画像処理装置100からの指示に応じて、指定モードで原稿を読み取り、読取部420からの信号を用いて読取画像データを生成し、生成した読取画像データを、画像処理装置100に送信する。S130では、画像処理装置100のプロセッサ110は、スキャナ400からの読取画像データを取得する。読取画像データのデータ形式は、種々の形式であってよい。本実施例では、読取画像データは、赤R、緑G、青Bのビットマップデータであることとする。
図3(A)は、読取画像の例を示す説明図である。読取画像I1aの形状は、第1方向D1に平行な2個の辺Si3、Si4と、第1方向D1に垂直な第2方向D2に平行な2個の辺Si1、Si2と、で囲まれる矩形状である。図中では、第1方向D1が垂直方向を示し、第2方向D2が水平方向を示している。以下、第1方向D1と、第1方向D1に反対の方向と、第2方向D2と、第2方向D2に反対の方向とを、それぞれ、「+D1方向」、「−D1方向」、「+D2方向」、「−D2方向」とも呼ぶ。また、原稿と画像とに対する方向に関し、+D1方向側を下側とも呼び、−D1方向側を上側とも呼び、+D2方向側を右側とも呼び、−D2方向側を左側とも呼ぶ。本実施例では、読取画像に対応する読取領域の形状と大きさは、読取モードに拘わらず、原稿台440の全体の形状と大きさと、それぞれ同じである。ただし、読取画像に対応する読取領域の形状と大きさが、ユーザによって指定されてもよい。
読取画像I1aは、矩形の原稿Daを読み取ることによって生成された画像の例である。読取画像I1aは、原稿Daなどの対象物を表す前景領域Adと、対象物を表さない領域である背景領域Abと、を表している。本実施例では、背景領域Abは、搬送装置450(図1(A))の−Dp3方向側の面を表し得る。図中では、背景領域Abにハッチングが付されている。また、原稿Daは、読取画像I1aに対して斜めに傾斜しており、原稿Daの一部は、読取画像I1aの外にはみ出ている。図3(A)の例では、原稿Daの下側の一部が、読取画像I1aの下側の辺Si1の外にはみ出、原稿Daの上側の一部が、読取画像I1aの上側の辺Si2の外にはみ出ている。
図2のS140では、プロセッサ110は、読取画像中の原稿の縁を表す縁直線と縁直線によって形成される矩形の内部領域である原稿領域とを特定する処理を実行する(詳細は後述)。S150では、プロセッサ110は、読取画像から原稿領域を抽出し、抽出した原稿領域の傾きを縁直線を用いて補正することによって、原稿を表す出力画像データを生成する(なお、画像の一部分を抽出して残りの部分を除去する処理は、クロップとも呼ばれる)。図3(F)は、出力画像データによって表される出力画像I2aの例を示す説明図である。出力画像I2aは、図3(A)の読取画像I1aのうちの背景領域Abを表さずに、読取画像I1aから抽出された前景領域Adを表している。また、前景領域Adの傾きは補正されている。出力画像データのデータ形式としては、任意の形式を採用可能である。本実施例では、プロセッサ110は、JPEG形式の出力画像データを生成する。また、プロセッサ110は、ユーザによって指定されたデータ形式の出力画像データを生成してもよい。
図2のS160では、プロセッサ110は、生成した出力画像データを、記憶装置に格納する。そして、プロセッサ110は、図2の処理を終了する。本実施例では、プロセッサ110は、出力画像データを、画像処理装置100の内部の記憶装置(例えば、不揮発性記憶装置130)に格納する。ただし、プロセッサ110は、画像処理装置100に接続された外部記憶装置(例えば、図示しないUSBメモリ)に、出力画像データを格納してもよい。また、プロセッサ110は、ユーザによって選択された記憶装置に、出力画像データを格納してもよい。ユーザは、記憶装置に格納された出力画像データを、自由に利用できる。
図4は、縁直線と原稿領域を特定する処理(図2:S140)の例を示すフローチャートである。S210では、プロセッサ110は、読取画像を解析することによって、原稿を表す前景領域と背景領域とを分離する。このような分離の方法としては、公知の方法を採用可能である。本実施例では、スキャナ400によって生成される読取画像のうちの背景領域は、予め決められた色(例えば、黒色など)で表されることとする。プロセッサ110は、予め決められた背景色範囲(例えば、黒を表す色範囲)の色を示す領域を背景領域として特定し、他の色を示す領域を前景領域として特定する。図3(A)の前景領域Adと背景領域Abとは、S210で分離された領域を示している。
S220では、プロセッサ110は、読取画像を解析することによって、前景領域の輪郭を表す輪郭画素を特定する。輪郭画素を特定する方法としては、公知の方法を採用可能である。例えば、プロセッサ110は、前景領域の画素のうち、背景領域の画素に隣接する画素を、輪郭画素として特定する。例えば、前景領域の注目画素を中心とする3×3の9個の画素のうち、1以上の画素が背景領域の画素である場合に、注目画素は、輪郭画素として特定される。また、プロセッサ110は、前景領域の画素のうち、読取画像の端を表す画素も、輪郭画素として特定する。これにより、図3(A)の読取画像I1aのように、原稿Daの一部が読取画像I1aの外にはみ出ている場合であっても、プロセッサ110は、読取画像の中の前景領域Adの縁の全周に亘って、輪郭画素を特定できる。また、プロセッサ110は、ソーベルフィルタなどのエッジ検出フィルタを用いて、輪郭画素を特定してもよい。
S230では、プロセッサ110は、原稿の縁を表す直線の候補である候補直線を特定する。プロセッサ110は、S220で特定した輪郭画素によって表される直線を、候補直線として採用する。図3(B)は、読取画像I1aから特定される候補直線の例を示している。図3(B)の例では、6本の候補直線LA1〜LA4、LB1、LB2が特定されている。4本の候補直線LA1〜LA4は、読取画像I1aの端を形成せずに背景領域Abに接する直線であり、読取画像I1aの端よりも内側を通る直線である。2本の候補直線LB1、LB2は、読取画像I1aの端を形成する直線である。候補直線LB1、LB2は、原稿Daのうちの読取画像I1aからはみ出た部分を示している。
このような候補直線を特定する方法としては、公知の方法を採用可能である。例えば、プロセッサ110は、輪郭画素を用いるハフ変換によって、候補直線を特定する。図3(C)は、読取画像I1aのハフ変換の結果の例を示すグラフである。横軸は、角度Angを示し、縦軸は、距離Dsを示している。角度Angと距離Dsとの1個の組合せは、読取画像I1a上の1本の直線を表している。角度Angは、読取画像I1a上の基準方向(図示せず)と直線との間の角度を示している。距離Dsは、読取画像I1a上の基準点(図示せず)と直線との間の距離を示している。
プロセッサ110は、ハフ変換を実行することによって、角度Angと距離Dsとの組合せ毎に、その組合せによって特定される直線と重なる輪郭画素の総数を算出する(以下、「輪郭画素数」と呼ぶ)。輪郭画素数が多い場合、輪郭画素数に対応付けられた角度Angと距離Dsとによって特定される直線は、多数の輪郭画素によって表される輪郭を表していると推定される。すなわち、輪郭画素数が多いほど、読取画像内において角度Angと距離Dsとによって特定される直線(より具体的には、複数の輪郭画素によって表される線分)の長さが長い。プロセッサ110は、角度Angと距離Dsとのそれぞれの範囲を複数の部分範囲に分割し、角度Angの部分範囲と距離Dsの部分範囲との組合せ(セルと呼ぶ)毎に、輪郭画素数を算出する。角度Angの部分範囲の中心値は、セルを代表する角度Angとして採用可能である。同様に、距離Dsの部分範囲の中心値は、セルを代表する距離Dsとして採用可能である。
図3(C)のグラフ中では、輪郭画素数が多い角度Angと距離Dsとの組合せが、黒点で示されている。具体的には、4本の候補直線LA1〜LA4を表す4個の黒点と、2本の候補直線LB1、LB2を表す2個の黒点と、が示されている。図中の第1角度Ang1は、読取画像I1a(図3(B))の辺Si1、Si2を表す直線(ここでは、第2方向D2に平行な直線)の角度Angである。第1距離Ds1は、読取画像I1aの辺Si1を表す直線の距離Dsである。第2距離Ds2は、読取画像I1aの辺Si2を表す直線の距離Dsである。辺Si1に重なる候補直線LB1を形成する複数の輪郭画素は、辺Si1を表す第1角度Ang1と第1距離Ds1との組み合わせ(セル)の輪郭画素数を増大させる。同様に、辺Si2に重なる候補直線LB2を形成する複数の輪郭画素は、辺Si2を表す第1角度Ang1と第2距離Ds2との組み合わせの輪郭画素数を増大させる。
また、原稿Daが読取画像I1aに対して傾斜しているので、図3(B)中の上側の候補直線LA3と下側の候補直線LA4とは、第2方向D2に対して、傾斜している。図3(C)中の角度Ang2と距離Ds4とは、上側の内直線LA3の複数の輪郭画素が集中するセルの角度Angと距離Dsとを示し、角度Ang2と距離Ds3とは、下側の内直線LA4の複数の輪郭画素が集中するセルの角度Angと距離Dsとを示している。本実施例では、原稿Daの形状は略矩形状であり、内直線LA3と内直線LA4とは、互いに平行である。従って、図3(C)のグラフにおいて、内直線LA3に対応する角度Angと、内直線LA4に対応する角度Angとは、同じである(ここでは、角度Ang2)。また、下側の内直線LA4は、下側の端直線LB1と同様に辺Si1に沿って延びているものの、端直線LB1に対して、若干、傾斜している。従って、図3(C)のグラフでは、内直線LA4に対応する角度Ang2は、端直線LB1に対応する第1角度Ang1とは異なっている。また、内直線LA4に対応する距離Ds3も、端直線LB1に対応する距離Ds1と、異なり得る。また、上側の内直線LA3は、上側の端直線LB2と同様に辺Si2に沿って延びているものの、端直線LB2に対して、若干、傾斜している。従って、図3(C)のグラフでは、内直線LA3に対応する角度Ang2は、端直線LB2に対応する第1角度Ang1とは異なっている。また、内直線LA3に対応する距離Ds4も、端直線LB2に対応する距離Ds2と、異なり得る。
また、図3(C)中の角度Ang3は、左側の内直線LA1(図3(B))の複数の輪郭画素が集中するセルの角度Angを示している。本実施例では、原稿Daの形状は、略矩形状である。左側の内直線LA1(図3(B))と右側の内直線LA2とは、互いに平行である。従って、右側の内直線LA2の複数の輪郭画素が集中するセルの角度Angは、左側の内直線LA1に対応する角度Ang3と同じである。なお、左側の内直線LA1と右側の内直線LA2との間では、距離Dsは、異なっている。また、本実施例では、左側の候補直線LA1と右側の候補直線LA2とは、上側の候補直線LA3と下側の候補直線LA4と、直交する。従って、図3(C)のグラフでは、左右の内直線LA1、LA2に対応する角度Ang3は、上下の内直線LA3、LA4に対応する角度Ang2とは90度異なっている。
図4のS230では、プロセッサ110は、S220で特定された複数の輪郭画素を用いて図3(C)で説明したグラフを生成し、生成したグラフを用いて、原稿の縁を表す直線の候補である候補直線を特定する。プロセッサ110は、例えば、輪郭画素数が所定の閾値以上であり、かつ、輪郭画素数が極大(すなわち、局所的なピーク)を示すセルを代表する角度Angと距離Dsの組合せによって特定される直線を、候補直線として採用する。本実施例では、輪郭画素数の閾値は、予め決められている。閾値は、例えば、原稿Da上で2cmの長さに相当する画素数に設定される。図3(C)の例では、6本の直線LA1〜LA4、LB1、LB2が特定される。なお、プロセッサ110は、読取画像に応じて閾値を変更してもよい。例えば、プロセッサ110は、読取画像から検出された輪郭画素の総数が多いほど大きくなるように、閾値を調整してもよい。
また、1本の直線を表す複数の輪郭画素は、角度Angと距離Dsとの少なくとも一方が互いに異なる複数のセルに分散して割り当てられ得る。このような複数のセルは、角度Angと距離Dsとがおおよそ同じである小さい範囲内に集まっている。プロセッサ110は、1本の直線を表す複数の輪郭画素が分散し得る程度の所定のサイズの範囲(線分布範囲と呼ぶ)内の複数のセルに複数の輪郭画素が分散している場合には、その範囲内におけるピークを示す1つのセルに対応付けられた1本の直線を、候補直線として採用する。また、プロセッサ110は、そのような線分布範囲内の複数のセルの輪郭画素数の合計値が、輪郭画素数の閾値以上である場合に、その線分布範囲内のピークに対応する1本の直線を、候補直線として採用してもよい。
S240では、プロセッサ110は、特定された1以上の候補直線を、端直線と内直線とに分類する。端直線は、読取画像の端を形成する候補直線であり、内直線は、読取画像の端よりも内側を通る候補直線である。図3(C)に示すグラフにおいて、読取画像の端(すなわち、4辺)を表す直線の角度Angと距離Dsとの組み合わせは、予め決められている。プロセッサ110は、角度Angと距離Dsとの組み合わせのうち、読取画像の端を表す組み合わせによって表される候補直線を、端直線に分類し、他の候補直線を、内直線に分類する。以下、内直線の符号として「LA」から始まる符号を用い、端直線の符号として「LB」から始まる符号を用いる。
図4のS313では、プロセッサ110は、複数の候補直線から、所定の平行条件、または、所定の垂直条件を満たす2本の内直線で構成される直線ペアを検索し、見つかった直線ペアを、原稿の縁を表す縁直線を特定するための基準直線として選択する(内基準ペアとも呼ぶ)。平行条件は、2本の直線が予め決められた平行状態にあることを示す条件であり、垂直条件は、2本の直線が予め決められた垂直状態にあることを示す条件である。
予め決められた平行状態は、2本の直線のなす角度(例えば、小さい方の角度)が、第1許容幅以下である状態である。第1許容幅がゼロである場合、平行状態の2本の直線は互いに厳密に平行である。第1許容幅がゼロよりも大きい場合であっても、第1許容幅が小さい場合には、平行状態の2本の直線は、略平行である。第1許容幅は、5度以下が好ましく、3度以下が特に好ましく、1度以下であることが最も好ましい。
予め決められた垂直状態は、2本の直線のなす角度(例えば、小さい方の角度)と90度との間の差分の絶対値が、第2許容幅以下である状態である。第2許容幅がゼロである場合、垂直状態の2本の直線は互いに厳密に垂直である。第2許容幅がゼロよりも大きい場合であっても、第2許容幅が小さい場合には、垂直状態の2本の直線は、略垂直である。第2許容幅は、5度以下が好ましく、3度以下が特に好ましく、1度以下であることが最も好ましい。
図3(B)の例では、平行条件を満たす内基準ペアの候補として、直線ペアLA1、LA2と、直線ペアLA3、LA4と、の2個のペアが検出される。また、垂直条件を満たす内基準ペアの候補として、直線ペアLA1、LA3と、直線ペアLA3、LA2と、直線ペアLA2、LA4と、直線ペアLA4、LA1と、の4個のペアが検出される。複数のペアの候補が検出される場合、プロセッサ110は、複数のペアの候補のうちの1つのペアを選択する。複数のペアの候補から1つのペアを選択する方法としては、種々の方法を採用可能である。本実施例では、プロセッサ110は、2本の候補直線の輪郭画素数の合計値が最も多いペア、すなわち、最も長い合計長を有するペアを、選択する。図3(D)は、図3(B)の複数の候補直線から最終的に選択される内基準ペアの2本の候補直線(すなわち、2本の内直線)の例を、太線で示している。この例では、他の候補直線と比べて長い2本の候補直線LA1、LA2が、平行条件を満たす内基準ペアとして選択される。
図4のS316では、プロセッサ110は、S313で条件を満たす2本の内直線(すなわち、内基準ペア)が検出されたか否かを判断する。内基準ペアが検出された場合(S316:Yes)、S350で、プロセッサ110は、検出された基準ペアを構成する2本の候補直線を、原稿の縁を表す直線として、特定する。以下、特定される2本の候補直線のうちの、1本の候補直線を、第1候補直線と呼び、別の1本の候補直線を、第2候補直線とも呼ぶ。図3(D)の例では、太線で示される候補直線LA1、LA2が、S350で特定される2本の候補直線の例である。
S370では、プロセッサ110は、第1候補直線と第2候補直線と組み合わせることによって矩形を形成する追加の2本の候補直線を、原稿の縁を表す直線として特定する。図3(E)は、図3(D)の第1および第2の候補直線LA1、LA2に基づいて特定される追加の2本の候補直線の例を、太線で示している。この例では、候補直線LA3、LA4が、矩形を形成する追加の2本の候補直線として、特定される。以下、特定される追加の2本の候補直線のうちの、1本の候補直線を、第3候補直線と呼び、別の1本の候補直線を、第4候補直線とも呼ぶ。以下、S350、S370によって特定される4本の候補直線(すなわち、原稿の縁を表すと判断された4本の候補直線)のそれぞれを、縁直線とも呼ぶ。
S370では、プロセッサ110は、第1候補直線と第2候補直線とが矩形の4個の辺のうちの2個の辺を表すと仮定し、残りの2個の辺にそれぞれ対応する位置関係の2個の候補直線を、複数の候補直線の中から検索する。このような追加の2個の候補直線は、第1候補直線と第2候補直線との間の位置関係に応じて、特定される。第1候補直線と第2候補直線とが平行条件を満たす場合、第3候補直線と第4候補直線とのそれぞれとして、例えば、第1候補直線との垂直条件を満たす候補直線が、特定される。第1候補直線と第2候補直線とが垂直条件を満たす場合、第3候補直線として、第1候補直線との垂直条件を満たす候補直線が、特定され、第4候補直線として、第1候補直線との平行条件を満たす候補直線が、特定される。なお、第3候補直線と第4候補直線との少なくとも一方は、第2候補直線との位置関係(すなわち、垂直条件、または、平行条件)に基づいて、特定されてよい。本実施例では、プロセッサ110は、第1候補直線または第2候補直線に基づく適切な位置関係の候補直線のうちの輪郭画素数の多い候補直線を優先して選択することによって、第3および第4候補直線を特定する。
なお、第3および第4候補直線は、S230(図4)で特定された全ての候補直線の中から、検索されてよい。
以上、S350、S370によって、4個の縁直線が特定される。図3(E)の例では、4本の候補直線LA1〜LA4が、縁直線として特定される。S380では、プロセッサ110は、4個の縁直線によって形成される矩形の内部領域を、原稿を表す原稿領域として特定する。図3(E)の例では、4本の候補直線LA1〜LA4をそれぞれ延長することによって形成される矩形Raの内側の領域Aiaが、原稿領域として特定される。原稿領域Aiaは、原稿Da(図3(A))を表す領域である。また、図3(A)で説明したように、原稿Da(図3(A))の一部は読取画像I1aの外にはみ出ている。従って、原稿領域Aia(図3(E))の一部も、読取画像I1aの外にはみ出ている。
4個の縁直線と原稿領域とが特定されたことに応じて、プロセッサ110は、図4の処理(すなわち、図2のS140)を終了する。なお、S316では、プロセッサ110は、縁直線の基準となる内基準ペアを選択可能か否かを判断している、といえる。
図2のS150では、プロセッサ110は、S140で特定された4個の縁直線と原稿領域とを用いて、原稿を表す出力画像データを生成する。上述したように、本実施例では、読取画像から原稿領域が抽出され、そして、縁直線に基づいて原稿領域の傾きが補正される。図3(E)の実施例では、読取画像I1dから原稿領域Aiaが抽出される。そして、4本の縁直線が、矩形状の出力画像の4本の縁を形成するように、原稿領域Aiaが回転される。以上の処理によって得られる画像が、出力画像である。このように生成される出力画像の矩形状の縁は、4本の縁直線で形成される矩形に対応している。例えば、図3(F)に示す出力画像I2aの矩形状の縁は、図3(E)の矩形Raに対応している。
また、図3(E)で説明したように、4本の縁直線で形成される矩形Raの一部は、読取画像I1aの外にはみ出得る。図3(F)に示すように、出力画像I2aのうちの一部の領域Ax1、Ax2は、読取画像I1aの前景領域Ad(図3(E))には含まれていない。このように出力画像のうちの一部の領域は、前景領域から欠落し得る(欠落領域と呼ぶ)。本実施例では、原稿領域が欠落領域を含む場合、プロセッサ110は、欠落領域の画像を、原稿の余白との差異が小さくなるように、修正する。このような修正の方法としては、種々の方法を採用可能である。本実施例では、プロセッサ110は、原稿の余白の色のベタ画像を表すように、欠落領域の画像を修正する。余白の色としては、予め決められた色(例えば、白色)が用いられる。これに代えて、プロセッサ110は、前景領域を解析することによって、原稿の余白の色を算出してもよい。
次に、図4のS316で複数の候補直線から内基準ペアを選択可能と判断されない場合(S316:No)の処理について、説明する。図5は、読取画像の別の例を示す説明図である。図5(A)の読取画像I1bは、一部が折り曲げられた状態の矩形の原稿Dbを読み取ることによって生成される読取画像の例である。読取画像I1bは、原稿Dbを表す前景領域Adと、背景領域Abと、を表している。図5(A)の例では、原稿Dbは、読取画像I1bに対して傾いていない。原稿Dbの左上の角Dbcは、読取画像I1bの左上の角I1bcに、重なっている。読取画像I1b内において、原稿Dbの第1方向D1方向の長さは、読取画像I1bの第1方向D1方向の長さと同じである。そして、矩形の原稿Dbの左下の角が折り曲げられた状態で、スキャン処理が行われている。この結果、読取画像I1bのうち、原稿Dbよりも右側の部分に加えて、原稿Dbの左下の一部分に対応する略三角形の部分が、背景領域Abである。
図5(B)は、読取画像I1b(図5(A))から特定される候補直線の例を示している。図5(B)の例では、3本の端直線LB1〜LB3と、2本の内直線LA1、LA2とが、特定される。図5(B)中において、候補直線LB1は、読取画像I1bの下側の端(ここでは、辺Si1)の一部を形成する直線であり、候補直線LB2は、読取画像I1bの上側の端(ここでは、辺Si2)の一部を形成する直線であり、候補直線LB3は、読取画像I1bの左側の端(ここでは、辺Si4)の一部を形成する直線である。また、候補直線LA1は、原稿Dbの左下の折り目を表す直線である。候補直線LA2は、原稿Dbの右側の縁を表す直線である。
このような読取画像I1bが処理される場合、図4のS313では、条件を満たす内基準ペアが検出されない(S316:No)。この場合、S323で、プロセッサ110は、複数の候補直線から、平行条件、または、垂直条件を満たす1本の内直線と1本の端直線とで構成される直線ペアを検索し、見つかった直線ペアを、縁直線を特定するための基準の直線として選択する(混合基準ペアとも呼ぶ)。例えば、図5(B)の例では、平行条件を満たす混合基準ペアの候補として、1個の直線ペアLA2、LB3が検出される。また、垂直条件を満たす混合基準ペアの候補として、直線ペアLB2、LA2と、直線ペアLA2、LB1と、の2個のペアが検出される。このように複数のペアの候補が検出された場合に1つのペアを選択する方法としては、S313で説明した方法と同じ方法を採用してよい。図5(C)は、図5(B)の複数の候補直線から最終的に選択される混合基準ペアの2本の候補直線(すなわち、1本の内直線と1本の端直線)の例を、太線で示している。本実施例では、他の候補直線と比べて長い2本の候補直線LA2、LB2が、垂直条件を満たす混合基準ペアとして選択される。
図4のS326では、プロセッサ110は、S323で条件を満たす1本の内直線と1本の端直線(すなわち、混合基準ペア)が検出されたか否かを判断する。混合基準ペアが検出された場合(S326:Yes)、プロセッサ110は、S350へ移行する。S350、S370、S380の処理は、S316の判断結果がYesである場合のS350、S370、S380の処理と、それぞれ同じである。図5(C)の太線の候補直線LA2、LB2は、S350で図5(B)の複数の候補直線の中から特定される縁直線である第1候補直線および第2候補直線の例を示している(ここでは、混合基準ペアと同じ)。図5(D)の太線の候補直線LB1、LB3は、S370において、図5(C)の第1および第2の候補直線LA2、LB2に基づいて特定される、追加の縁直線である第3および第4候補直線の例を示している。候補直線LB1は、候補直線LA2との垂直条件を満たす候補直線であり、候補直線LB3は、候補直線LA2との平行条件を満たす候補直線である。図5(D)の矩形Rbは、4個の縁直線LB2、LA2、LB1、LB3によって形成される矩形を示し、矩形Rbの内部の領域Aibは、S380で特定される原稿領域を示している。なお、S326では、プロセッサ110は、縁直線の基準となる混合基準ペアを選択可能か否かを判断している、といえる。
図5(E)の画像I2bは、S150(図2)で生成される出力画像である。この出力画像I2bは、図5(D)において太線で示される4本の縁直線LB2、LA2、LB1、LB3に基づいて傾きが補正された前景領域Ad(図5(A))を表している。この出力画像I2bは、図5(D)の矩形Rbの内部の原稿領域Aibを表している。なお、図5(E)中において、出力画像I2bのうちの左下の一部の領域Axbは、前景領域Ad(図5(A))に含まれていない欠落領域である。プロセッサ110は、欠落領域Axbの画像を、原稿の余白の色を表すベタ画像に修正する。なお、この欠落領域Axbは、読取画像I1b内の背景領域Abに対応する。このように、欠落領域が読取画像の外に対応するのではなく読取画像内の背景領域に対応する場合には、欠落領域の画像の修正が省略されてもよい。すなわち、背景領域の画像がそのまま出力画像の欠落領域の画像として用いられてもよい。
次に、図4のS326で複数の候補直線から混合基準ペアを選択可能と判断されない場合(S326:No)の処理について、説明する。図6は、読取画像の別の例を示す説明図である。図6(A)の読取画像I1cは、原稿台440(図1(B))よりも大きな原稿Dcを読み取ることによって生成される画像の例である。読取画像I1cは、背景領域を表さずに、原稿Dcの内部の一部分を表している。すなわち、読取画像I1cの全体が、前景領域Adを表している。読取画像I1c内において、原稿Dcは、読取画像I1cよりも大きい。
図6(B)は、読取画像I1c(図6(A))から特定される候補直線の例を示している。図6(B)の例では、4本の端直線LB1〜LB4が、特定される。図6(B)中において、候補直線LB1は、読取画像I1cの下側の端(ここでは、辺Si1)を形成する直線であり、候補直線LB2は、読取画像I1cの上側の端(ここでは、辺Si2)を形成する直線であり、候補直線LB3は、読取画像I1cの右側の端(ここでは、辺Si3)を形成する直線であり、候補直線LB4は、読取画像I1cの左側の端(ここでは、辺Si4)を形成する直線である。
このような読取画像I1cが処理される場合、図4のS313では、条件を満たす内基準ペアが検出されない(S316:No)。そして、S323では、条件を満たす混合基準ペアが検出されない(S326:No)。この場合、S333で、プロセッサ110は、複数の候補直線から、平行条件、または、垂直条件を満たす2本の端直線で構成される直線ペアを検索し、見つかった直線ペアを、縁直線を特定するための基準の直線として選択する(端基準ペアとも呼ぶ)。例えば、図6(B)の例では、平行条件を満たす端基準ペアの候補として、直線ペアLB1、LB2と、直線ペアLB3、LB4と、の2個のペアが検出される。また、垂直条件を満たす端基準ペアの候補として、直線ペアLB2、LB3と、直線ペアLB3、LB1と、直線ペアLB1、LB4と、直線ペアLB4、LB2と、の4個のペアが検出される。このように複数のペアの候補が検出された場合に1つのペアを選択する方法としては、S313で説明した方法と同じ方法を採用してよい。図6(C)は、図6(B)の複数の候補直線から最終的に検出される2本の候補直線(すなわち、2本の端直線)の例を、太線で示している。本実施例では、他の候補直線と比べて長い2本の候補直線LB3、LB4が、平行条件を満たす端基準ペアとして選択される。
図4のS336では、プロセッサ110は、S333で条件を満たす2本の候補直線(すなわち、端基準ペア)が検出されたか否かを判断する。端基準ペアが検出された場合(S336:Yes)、プロセッサ110は、S350へ移行する。S350、S370、S380の処理は、上述した通りである。図6(C)の太線の候補直線LB3、LB4は、S350で図6(B)の複数の候補直線の中から特定される縁直線である第1候補直線および第2候補直線の例を示している(ここでは、端基準ペアと同じ)。図6(D)の太線の候補直線LB1、LB2は、S370において、図6(C)の第1および第2の候補直線LB3、LB4に基づいて特定される、追加の縁直線である第3および第4候補直線の例を示している。候補直線LB1は、候補直線LB3との垂直条件を満たす候補直線であり、候補直線LB2は、候補直線LB3との垂直条件を満たす候補直線である。図6(D)の矩形Rcは、4個の縁直線LB1〜LB4によって形成される矩形を示し、矩形Rcの内部の領域Aicは、S380で特定される原稿領域を示している。なお、S336では、プロセッサ110は、縁直線の基準となる端基準ペアを選択可能か否かを判断している、といえる。
図6(E)の画像I2cは、S150(図2)で生成される出力画像である。この出力画像I2cは、図6(D)において太線で示される4本の縁直線LB1〜LB4に基づいて傾きが補正された前景領域Ad(図6(A))を表している。この出力画像I2cは、図6(D)の矩形Rcの内部の原稿領域Aicを表している。なお、図6(D)の実施例では、4本の縁直線LB1〜LB4は読取画像I1cに対して傾斜しておらず、また、原稿領域Aicは、読取画像I1cの全体と同じである。従って、出力画像I2cは、読取画像I1cと同じである。
次に、図4のS336で複数の候補直線から端基準ペアを選択可能と判断されない場合(S336:No)の処理について、説明する。図7は、読取画像の別の例を示す説明図である。図7(A)の読取画像I1dは、コンパクトディスクなどの非矩形状(ここでは、円形状)の原稿Ddを読み取ることによって生成された画像の例である。読取画像I1dは、原稿Ddを表す前景領域Adと、背景領域Abと、を表している。図7(A)の例では、原稿Ddの一部が、読取画像I1dの外にはみ出ている。
図7(B)は、読取画像I1d(図7(A))から特定される候補直線の例を示している。図7(B)の例では、1本の候補直線LB1が特定される。この候補直線LB1は、読取画像I1dの端のうち原稿Ddと重なる部分を示す端直線である。内直線は、特定されない。
このような読取画像I1dが処理される場合、図4のS313では、条件を満たす内基準ペアが検出されない(S316:No)。S323では、条件を満たす混合基準ペアが検出されない(S326:No)。そして、S333では、条件を満たす端基準ペアが検出されない(S336:No)。この場合、プロセッサ110は、S390で、原稿の縁を示す縁直線と原稿を表す原稿領域とを特定しない、と決定し、そして、図4の処理を終了する。
縁直線が特定されない場合、図2のS150では、プロセッサ110は、読取画像を、そのまま、出力画像として用いる。図7(C)は、図7(A)の読取画像I1dを用いて生成される出力画像I2dを示している。この出力画像I2dは、読取画像I1dと同じである。
以上のように、本実施例では、プロセッサ110は、図4のS313、S316で、内基準ペアを選択可能か否かを判断する。そして、内基準ペアを選択可能と判断された場合(S316:Yes)、プロセッサ110は、S350、S370で、内基準ペアを用いて縁直線を特定する。
内基準ペアを選択可能と判断されない場合(S316:No)、プロセッサ110は、S323、S326で、混合基準ペアを選択可能か否かを判断する。そして、混合基準ペアを選択可能と判断された場合(S326:Yes)、プロセッサ110は、S350、S370で、混合基準ペアを用いて縁直線を特定する。
混合基準ペアを選択可能と判断されない場合(S326:No)、プロセッサ110は、S333、S336で、端基準ペアを選択可能か否かを判断する。そして、端基準ペアを選択可能と判断された場合(S336:Yes)、プロセッサ110は、S350、S370で、端基準ペアを用いて縁直線を特定する。
このように、プロセッサ110は、内基準ペア、混合基準ペア、端基準ペアの順に、基準直線(ここでは、2本の候補直線で構成される基準ペア)を選択可能か否かを判断する。ここで、基準ペアに含まれる候補直線の総数に対する端直線の総数の割合を、端直線割合と呼び、基準ペアに含まれる候補直線の総数に対する内直線の総数の割合を、内直線割合と呼ぶ。各基準ペアの端直線割合は、内基準ペア(ゼロ%)、混合基準ペア(50%)、端基準ペア(100%)である。また、各基準ペアの内直線割合は、内基準ペア(100%)、混合基準ペア(50%)、端基準ペア(ゼロ%)である。比較的先に利用される基準ペアの端直線割合は、比較的後に利用される基準ペアの端直線割合よりも、低い。そして、比較的先に利用される基準ペアの内直線割合は、比較的後に利用される基準ペアの内直線割合よりも、高い。このように、縁直線の特定のための基準直線としては、内直線が端直線よりも優先して利用される。従って、図3(A)の画像例のように読取画像の端から原稿の一部がはみ出る場合であっても、適切に、縁直線を特定できる。
また、図4のS313では、プロセッサ110は、複数の候補直線が内直線と端直線とを含む場合に、端直線を含まずに内直線のみで構成される直線群である内基準ペアを検索する。そして、内基準ペアを選択可能と判断された場合(S316:Yes)、プロセッサ110は、S350、S370で、内基準ペアを用いて縁直線を特定する。従って、図3(A)の画像例のように読取画像の端から原稿の一部がはみ出る場合であっても、読取画像の端のうちの原稿と重なる部分を誤って縁直線として特定することを抑制でき、複数の候補直線から原稿の縁を表す縁直線を適切に特定できる。
また、図4のS323では、プロセッサ110は、複数の候補直線が内直線と端直線とを含む場合に、端直線と内直線との両方を含む直線群である混合基準ペアを検索する。そして、混合基準ペアを選択可能と判断された場合(S326:Yes)、プロセッサ110は、S350、S370で、混合基準ペアを用いて縁直線を特定する。従って、図5(A)の内直線LA1のように、原稿Dbの折り目のように原稿の縁とは異なる境界線を表す内直線LA1が特定された場合であっても、内直線と端直線との両方を用いることによって、適切な縁直線を特定できる。また、原稿が折り曲げられている場合の折り目に限らず、原稿の一部が切り取られている場合の切れ目ように、読取画像が、原稿の本来の縁とは異なる境界線を表す場合に、適切な縁直線を特定できる。
また、図4のS316、S326、S336で説明したように、内基準ペアを選択可能と判断されず(S316:No)、混合基準ペアを選択可能と判断されない場合(S326:No)、プロセッサ110は、端直線のみで構成されている端基準ペアを選択可能と判断される場合に(S336:Yes)、端基準ペアを用いる縁直線の特定を行う(S350)。従って。混合基準ペアを選択可能と判断されない場合であっても、プロセッサ110は、端基準ペアを用いて、適切に、縁直線を特定できる。
また、図4のS313、S316で説明したように、プロセッサ110は、複数の候補直線から、1以上の内直線を含む2本の候補直線であって、予め決められた平行状態または予め決められた垂直状態の第1候補直線と第2候補直線とを選択できる場合に、第1候補直線と第2候補直線とで構成される基準ペア(ここでは、内基準ペア)を選択できると判断する。プロセッサ110は、このような第1候補直線と第2候補直線とを用いることによって、縁直線を適切に特定できる。
なお、図4のS323、S326で説明したように、プロセッサ110は、複数の候補直線から、1本の内直線と1本の端直線とで構成される2本の候補直線であって、平行条件または垂直条件を満たす2本の候補直線を選択できる場合に、その2本の候補直線で構成される基準ペア(ここでは、混合基準ペア)を選択できると判断する。また、図4のS333、336で説明したように、プロセッサ110は、複数の候補直線から、1以上の端直線を含む2本の候補直線であって、平行条件または垂直条件を満たす2本の候補直線を選択できる場合に、その2本の候補直線で構成される基準ペア(ここでは、端基準ペア)を選択できると判断する。いずれの場合も、プロセッサ110は、平行条件または垂直条件を満たす2本の候補直線を用いることによって、縁直線を適切に特定できる。
また、図4のS350で説明したように、プロセッサ110は、基準ペアを構成する2本の候補直線(すなわち、平行状態または垂直状態の2本の候補直線)を、原稿の縁を表す候補直線として特定する。そして、S370で説明したように、プロセッサ110は、特定された2本の候補直線と組み合わせることによって矩形を形成する別の2本の候補直線を特定する。そして、S380で説明したように、プロセッサ110は、読取画像のうち、特定された4本の候補直線で形成される矩形の内部領域を、原稿を表す原稿領域として特定する。これにより、プロセッサ110は、原稿を表す適切な矩形領域を、特定できる。
B.第2実施例:
図8は、縁直線と原稿領域を特定する処理(図2:S140)の別の実施例を示すフローチャートである。図示されたフローチャートは、処理の一部を示している。本実施例では、読取モードに応じて、処理が切り替えられる。
第2実施例では、上記の第1実施例と同様に、図4のS210からS240の処理が実行される。そして、処理は、S240から、図8のS400へ移行する。S400では、プロセッサ110は、読取画像データの生成に用いられたスキャナ400の読取モードが、搬送装置450を用いる搬送モードであるか否かを判断する。読取モードが搬送モードである場合(S400:Yes)、プロセッサ110は、図4のS313へ移行する。S313以降の処理は、上記の第1実施例の処理と同じである。
読取モードが搬送モードではなく台モードである場合(S400:No)、S410で、プロセッサ110は、S230(図4)で特定された複数の候補直線が、1以上の端直線を含むか否かを判断する。読取モードが台モードである場合、ユーザは、原稿台440(図1(B))から原稿がはみ出ないように注意しつつ、原稿台440上に原稿を載せ置く。従って、候補直線が端直線を含む場合、端直線は、図3(A)の端直線LB1、LB2のように原稿のうちの読取画像からはみ出た部分ではなく、原稿の縁を表していると推定される。本実施例では、複数の候補直線が1以上の端直線を含む場合、端直線を優先して用いることによって、縁直線を特定する。まず、複数の候補直線が1以上の端直線を含む場合(S410:Yes)の処理について説明する。
図9は、読取画像の別の例を示す説明図である。図9(A)の読取画像I1eは、一部が折り曲げられた状態の矩形の原稿Deを読み取ることによって生成された画像の例である。読取画像I1eは、原稿Deを表す前景領域Adと、背景領域Abと、を表している。図9(A)の例では、原稿Deは、読取画像I1eに対して傾いていない。原稿Deの左上の角Decは、読取画像I1eの左上の角I1ecに、重なっている(すなわち、原稿Deの読み取り時には、原稿Deの左上の角Decは、原稿台440(図1(B)の角に配置されている)。原稿Deの上側の縁は、読取画像I1eの上側の辺Si2に重なり、原稿Deの左側の縁は、読取画像I1eの左側の辺Si4に重なっている。読取画像I1e内において、原稿Deの第1方向D1方向の長さは、読取画像I1eの第1方向D1方向の長さよりも短い。そして、矩形の原稿Deの左下の角が折り曲げられた状態で、原稿Deがスキャナ400に読み取られている。
図9(B)は、読取画像I1e(図9(A))から特定される候補直線の例を示している。図9(B)の例では、2本の端直線LB1、LB2と、3本の内直線LA1〜LA3とが、特定される。図9(B)中において、候補直線LB1は、読取画像I1eの左側の端(ここでは、辺Si4)の一部を形成する直線であり、候補直線LB2は、読取画像I1eの上側の端(ここでは、辺Si2)の一部を形成する直線である。また、候補直線LA1は、原稿Deの左下の折り目を表す直線であり、候補直線LA2は、原稿Deの右側の縁を表す直線であり、候補直線LA3は、原稿Deの下側の縁の折れていない部分を表す直線である。
このような読取画像I1eが処理される場合、図8のS410では、複数の候補直線が1以上の端直線を含むと判断される。この場合、S420で、プロセッサ110は、複数の候補直線に含まれる端直線の全てを、縁直線として特定する。図9(C)は、図9(B)の複数の候補直線から、S420で縁直線として特定される直線の例を、太線で示している。本実施例では、2本の端直線LB1、LB2が、それぞれ、縁直線として特定される。
図9のS430では、プロセッサ110は、S420で特定された縁直線と組み合わせて矩形を形成する候補直線を、追加の縁直線として特定する。S430の処理は、図4のS370の処理と同様に、行われる。すなわち、S420で特定された1以上の縁直線との位置関係(すなわち、垂直条件、または、平行条件)に基づいて、矩形の残りの辺に対応する追加の縁直線が特定される。図9(D)は、図9(C)の縁直線LB1、LB2に基づいて特定される追加の縁直線の例を、太線で示している。この例では、候補直線LA2、LA3が、矩形を形成する追加の縁直線として、特定される。候補直線LA2は、候補直線LB1との平行条件を満たす直線である。候補直線LA3は、候補直線LB1との垂直条件を見たす直線である。なお、S430で特定される追加の縁直線の総数は、矩形の辺の総数である「4」からS420で特定される縁直線の総数を引いた差と同じである。例えば、S420で特定される縁直線の総数が「1」である場合、S430で、3本の追加の縁直線が特定され得る。
S580は、図4のS380と同じである。プロセッサ110は、4個の縁直線によって形成される矩形の内部領域を、原稿を表す原稿領域として特定する。図9(D)の例では、4本の縁直線LA2、LA3、LB1、LB2をそれぞれ延長することによって形成される矩形Reの内側の領域Aieが、原稿領域として特定される。4個の縁直線と原稿領域とが特定されたことに応じて、プロセッサ110は、図8の処理(すなわち、図2のS140)を終了する。
図2のS150では、プロセッサ110は、S420、S430で特定された4個の縁直線と、S580で特定された原稿領域と、を用いて、出力画像データを生成する。図9(E)の画像I2eは、図9(A)の読取画像I1eから生成される出力画像の例である。この出力画像I2eは、図9(D)の矩形Reの内部の原稿領域Aieを表している。なお、図9(E)中において、出力画像I2eのうちの左下の一部の領域Axxは、前景領域Ad(図9(A))に含まれていない欠落領域である。プロセッサ110は、欠落領域Axxの画像を、原稿の余白の色を表すベタ画像に修正する。
次に、複数の候補直線が端直線を含まない場合(S410:No)の処理について説明する。図10は、読取画像の別の例を示す説明図である。図10(A)の読取画像I1fは、原稿Deの全体が原稿台440の縁よりも内側に配置された状態で、原稿Deがスキャナ400に読み取られる場合の、読取画像の例である。読取画像I1fは、原稿Deを表す前景領域Adと、背景領域Abと、を表している。この例では、原稿Deは、図9(C)の原稿Deと同様に、左下の角が折り曲げられた状態で、読み取られている。また、前景領域Adは、背景領域Abに囲まれている。
図10(B)は、読取画像I1fから特定される候補直線の例を示している。図10(B)の例では、5本の内直線LA1〜LA5が、特定される。図10(B)中において、候補直線LA1は、原稿Deの左下の折り目を表す直線であり、候補直線LA2は、原稿Deの右側の縁を表す直線であり、候補直線LA3は、原稿Deの下側の縁の折れていない部分を表す直線であり、候補直線LA4は、原稿Deの左側の縁を表す直線であり、候補直線LA5は、原稿Deの上側の縁を表す直線である。
このような読取画像I1fが処理される場合、図8のS410では、複数の候補直線が1以上の端直線を含まないと判断される(S410:No)。この場合、プロセッサ110は、S513、S516を実行する。S513、S516は、図4のS313、S316と、それぞれ、同じである。S513では、プロセッサ110は、複数の候補直線から、平行条件または垂直条件を満たす2本の内直線を検索し、見つかった2本の内直線を、内基準ペアとして選択する。図10(C)は、図10(B)の複数の候補直線から最終的に選択される内基準ペアの2本の候補直線(すなわち、2本の内直線)の例を、太線で示している。この例では、他の候補直線と比べて長い2本の候補直線LA2、LA5が、垂直条件を満たす内基準ペアとして選択される。
図8のS516では、プロセッサ110は、S513で条件を満たす2本の内直線(すなわち、内基準ペア)が検出されたか否かを判断する。内基準ペアが検出された場合(S516:Yes)、プロセッサ110は、S550、S570を実行して、S580へ移行する。S550、S570は、図4のS350、S370と、それぞれ、同じである。S550では、プロセッサ110は、S513で検出された内基準ペアを構成する2本の候補直線を、原稿の縁を表す縁直線として、特定する。図10(C)の例では、候補直線LA2、LA5が、縁直線として特定される。S570では、プロセッサ110は、特定された2本の縁直線と組み合わせて矩形を形成する追加の2本の候補直線を、原稿の縁を表す直線として特定する。図10(D)は、図10(C)に示す2本の縁直線LA2、LA5に基づいて特定される追加の2本の候補直線の例を、太線で示している。この例では、候補直線LA3、LA4が、矩形を形成する追加の2本の候補直線として、特定される。S580では、プロセッサ110は、4個の縁直線によって形成される矩形の内部領域を、原稿を表す原稿領域として特定する。図10(D)の例では、4本の縁直線LA2〜LA5をそれぞれ延長することによって形成される矩形Rfの内側の領域Aifが、原稿領域として特定される。4個の縁直線と原稿領域とが特定されたことに応じて、プロセッサ110は、図8の処理(すなわち、図2のS140)を終了する。
図2のS150では、プロセッサ110は、図8のS550、S570で特定された4個の縁直線と、S580で特定された原稿領域と、を用いて、出力画像データを生成する。図10(E)の画像I2fは、図10(A)の読取画像I1fから生成される出力画像の例である。この出力画像I2fは、図10(D)の矩形Rfの内部の原稿領域Aifを表している。なお、図10(E)中において、出力画像I2fのうちの左下の一部の領域Axyは、前景領域Ad(図10(A))に含まれていない欠落領域である。プロセッサ110は、欠落領域Axyの画像を、原稿の余白の色を表すベタ画像に修正する。
図8のS516の判断結果がNoである場合(すなわち、条件を満たす2本の候補直線が検出されない場合)、プロセッサ110は、S590で、原稿の縁を示す縁直線と原稿を表す原稿領域とを特定しない、と決定し、そして、図8の処理を終了する。
搬送モードでは、原稿の読み取り中に原稿が搬送されるので、読取部420に対する原稿の位置ズレが生じ易い。読取部420に対する原稿の位置がずれた場合、端直線は、図3(B)の縁直線LB1、LB2のように、原稿の縁ではなく、原稿のうちの読取画像からはみ出た部分を示し得る。本実施例では、読取モードが搬送モードである場合(図8:S400:Yes)、プロセッサ110は、第1実施例と同様に、内直線を優先的に用いることによって、縁直線と原稿領域とを特定する。従って、適切な縁直線と原稿領域とを特定できる。
また、台モードでは、原稿の読み取り中に原稿が移動されないので、読取部420に対する原稿の位置ズレは生じ難い。従って、端直線は、原稿の縁を表している、と推定できる。本実施例では、読取モードが台モードである場合(図8:S400:No)、プロセッサ110は、複数の候補直線が1以上の単直線を含むか否かを判断する(S410)。そして、プロセッサ110は、複数の候補直線が1本以上の端直線を含む場合(S410:Yes)、その1本以上の端直線を含む直線群(ここでは、1本以上の端直線で構成される直線群)を用いて縁直線を特定する(S420)。また、複数の候補直線が1本以上の端直線を含まない場合(S410:No)、プロセッサ110は、内直線のみからなる直線群を用いて縁直線を特定し得る(S550)。このように、縁直線と原稿領域との特定には、端直線が優先的に用いられるので、適切な縁直線と原稿領域とを特定できる。
C.変形例:
(1)読取画像から候補直線を特定する処理(図4:S230)は、図3(C)で説明したハフ変換を用いる処理に代えて、原稿の縁を表し得る直線を特定する他の種々の処理であってよい。例えば、プロセッサ110は、最小二乗法を用いて、複数の輪郭画素の配置を近似する候補直線を特定してもよい。
(2)縁直線の特定のために選択され得る1以上の基準直線(以下、基準直線群、または、基準直線セットとも呼ぶ)は、内基準ペアと混合基準ペアと端基準ペアとの3つの種類の直線ペアに限らず、種々の候補直線であってよい。例えば、内基準ペアと混合基準ペアと端基準ペアから予め任意に選択された2種類の直線ペアのみが利用可能であってよい。
また、複数の候補直線から基準直線のセットを選択可能と判断するための条件(例えば、図4のS316、S326、S336の条件)は、垂直条件または平行条件を満たす2本の候補直線が検出されることに代えて、他の種々の条件であってよい。例えば、垂直条件を満たす2本の候補直線が検出されることと、平行条件を満たす2本の候補直線が検出されることと、のいずれか一方のみを採用してもよい。
また、縁直線の特定のために選択される基準直線のセットに含まれる候補直線の総数は、2本に限らず、1本でもよく、3本以上であってもよい。上記の各実施例の基準ペアは、矩形を形成する4辺のうちの2辺に対応する2本の候補直線を示している。これに代えて、矩形を形成する4辺のうちの3辺に対応する3本の候補直線が、基準直線のセットとして選択されてもよい。このような3本の基準直線は、例えば、垂直条件と平行条件とを用いることによって、特定可能である。具体的には、平行条件を満たす2本の候補直線と、それら2本の候補直線の一方との垂直条件を満たす1本の候補直線と、の3本の候補直線が特定されてよい。3本の基準直線が選択される場合、基準直線セットの種類(すなわち、3本の基準直線の組み合わせの種類)としては、種々の種類を採用可能である。例えば、「3本の内直線」と「2本の内直線と1本の端直線」と「1本の内直線と2本の端直線」と「3本の端直線」との4種類の組み合わせから予め任意に選択された2種以上の組み合わせが利用可能であってよい。
いずれの場合も、矩形の複数の辺を形成可能な複数の候補直線は、矩形の原稿の縁を表している可能性が高い。従って、矩形を形成する4辺のうちの2以上の辺にそれぞれ対応することを示す条件を満たす2以上の候補直線は、縁直線を特定するための基準直線として利用可能である。そして、そのような基準直線は、縁直線として採用可能である。
また、複数の候補直線から基準直線のセットを選択可能と判断するための条件としては、平行条件と垂直条件とは異なる条件を採用してもよい。例えば、読取画像内での長さが予め決められた基準長より長い所定の基準数(例えば、1本、2本、3本、4本など)以上の候補直線が検出されることを、条件として採用してもよい。長い候補直線は、短い候補直線と比べて、原稿の縁を表している可能性が高い。従って、長い候補直線は、縁直線を特定するための基準直線として利用可能である。そのような基準直線は、縁直線として採用可能である。基準長としては、候補直線を特定するための長さの閾値(例えば、輪郭画素数の閾値)よりも、大きい値が用いられる。なお、基準数の候補直線、すなわち、基準直線のセットとしては、内直線の総数が互いに異なる(すなわち、端直線の総数が互いに異なる)複数種類の基準直線のセットを利用可能である。例えば、基準数が「1」である場合、1本の内直線のセットと、1本の端直線のセットと、の2種類のセットが利用可能である。また、基準数が「2」である場合には、図4の実施例と同様に3種類の直線ペアが利用可能である。いずれの場合も、基準直線のセットを構成する内直線を、最も長い内直線から順番に選択し、基準直線のセットを構成する端直線を、最も長い端直線から順番に選択することが好ましい。
なお、プロセッサ110は、複数の候補直線から、予め決められた特定の条件を満たす候補直線を、基準直線として選択してよい。そのような条件は、2本の候補直線が平行状態または垂直状態にあることや、読取画像内での長さが所定の基準長より長いことに限らず、注目している候補直線が他の候補直線と比べて原稿の縁を表す可能性が高いことを示す種々の条件であってよい。このような条件下で選択された基準直線を用いることによって、原稿の縁の少なくとも一部を表す直線と原稿の傾きとの少なくとも一方を含む原稿情報を、適切に特定できる。なお、このような基準直線は、縁直線として特定可能である。
いずれの場合も、複数種類の基準直線セットのそれぞれの選択可能性の判断を、内直線を優先する順番(例えば、内直線割合の高い順番、端直線割合の低い順番、内直線の総数が多い順番、端直線の総数が少ない順番、など)に行うことが好ましい。これにより、図3(A)の読取画像I1aように原稿の一部が読取画像の外にはみ出る場合であっても、適切な縁直線を特定できる。
また、複数種類の基準直線セットの間で、基準直線のセットを選択可能と判断するための条件が異なっていてもよい。例えば、内基準ペアのための条件と、端基準ペアのための条件とが、平行状態または垂直状態の2本の候補直線(すなわち、内基準ペア、または、端基準ペア)を選択できることであり、混合基準ペアのための条件が、垂直状態ではなく平行状態2本の候補直線(すなわち、混合基準ペア)を選択できることであってもよい。一般的には、Q種類(Qは2以上の整数)の基準直線セットを利用可能な場合、第R種の基準直線のセット(1≦R≦Q)を選択可能と判断するための条件が、第R条件を満たす候補直線(すなわち、第R種の基準直線のセット)を選択できることであってよい。ここで、Q個の条件の全てが同じであってよく、Q個の条件の全てが互いに異なっていてもよい。また、Q個の条件のうちの一部のS個(2≦S≦Q−1)の条件が同じであり、残りのQ−S個の条件は、それぞれ、他の条件と異なっていてもよい。
(3)3本以下の縁直線を用いて、複数の候補直線から矩形を形成する追加の縁直線を特定する処理(図4:S370)は、垂直条件、または、平行条件を用いる処理に代えて、他の種々の処理であってよい。例えば、以下の処理を採用してもよい。予め決められた複数種類の定型サイズ(例えば、「A4サイズ」と「レターサイズ」と「B5サイズ」)から、前景領域の形状と大きさとに最も近い定型サイズを特定する(対象サイズと呼ぶ)。例えば、前景領域に定型サイズを重ねる場合の互いに重ならない部分の合計面積が最小となる定型サイズが、対象サイズとして選択される。特定した対象サイズの縁を特定済の縁直線に重ねる。重ねられた対象サイズの縁のうちの縁直線が対応付けられていない縁の近傍の候補直線を、追加の縁直線として特定する。候補直線が縁の近傍にあると判断するための条件は、候補直線が縁に沿って延びることを示す種々の条件であってよい(近傍条件と呼ぶ)。近傍条件は、例えば、縁と候補直線とが平行条件を満たし、かつ、読取画像上での縁と候補直線との間の最短距離が、所定の距離閾値以下であることであってよい。距離閾値は、ゼロ以上であり、対象サイズの短辺の長さと比べて十分に小さい値(例えば、短辺の長さの1/10以下の値)に設定される。
このように、矩形を形成する追加の候補直線を特定するための条件(矩形条件とも呼ぶ)は、候補直線が特定済の縁直線に組み合わされることによって矩形を形成することを示す種々の条件であってよい。このような矩形条件を満たす候補直線を、追加の候補直線として特定してよい。また、追加の候補直線を特定するための矩形(すなわち、複数の候補直線によって形成される矩形)は、厳密な矩形と、厳密な矩形から許容範囲内で変形した矩形と、を含み得る。変形の許容範囲は、垂直条件と平行条件と近傍条件などの矩形条件によって許容される範囲である。
(4)図4のS313等で説明したように、垂直条件は、略垂直を示してよく、平行条件は、略平行を示してよい。そして、上述したように、縁直線を用いて特定される矩形の原稿領域(例えば、図4のS380で特定される原稿領域)の形状は、厳密な矩形に限らず、略矩形であり得る。ここで、プロセッサ110は、原稿領域の全体を包含する出力画像を表す出力画像データを生成してよい。例えば、出力画像は、原稿領域の全体を包含する最小矩形の画像であってよい。また、プロセッサ110は、原稿領域の一部のみを含む出力画像を表す出力画像データを生成してよい。例えば、出力画像は、原稿領域に含まれる最大矩形の画像であってよい。
(5)読取画像データを用いる画像処理は、図2、図4、図8で説明した処理に代えて、読取画像データによって表される読取画像を解析して縁直線と原稿の傾きとの少なくとも一方を含む原稿情報を特定する種々の処理を採用可能である。例えば、図4のS370、S380が省略されてよい。また、図8のS570、S580が省略されてよい。これらの場合、プロセッサ110は、例えば、S350、S550で特定される縁直線を用いて読取画像における原稿の傾きを特定し、読取画像に対して傾き補正を行うことによって得られる画像を出力画像として用いてよい。この場合、出力画像は、前景領域に加えて、背景領域を含み得る。
また、プロセッサ110は、出力画像データを生成せずに、読取画像内の縁直線を示す情報と、読取画像に対する原稿の傾きを示す情報と、の少なくとも一方を、出力する出力部として動作してもよい。出力先としては、例えば、記憶装置(例えば、不揮発性記憶装置130(図1))と表示部(例えば、表示部140)との少なくとも一方を採用してよい。出力先が記憶装置である場合、プロセッサ110は、例えば、読取画像内の縁直線を示す情報と、読取画像に対する原稿の傾きを示す情報と、の少なくとも一方を含むデータを、記憶装置に格納してもよい。出力先が表示部である場合、プロセッサ110は、例えば、表示部140に読取画像を表示し、表示された読取画像上に縁直線を重ねて表示してもよい。ユーザは、表示された縁直線を観察することによって、原稿の傾きと原稿の縁と原稿領域とを容易に確認できる。
(6)原稿を光学的に読み取る装置は、図1(A)、図1(B)で説明したスキャナ400に代えて、原稿を光学的に読み取ることが可能な他の種々の装置であってよい。例えば、スキャナ400から搬送装置450が省略されてもよい。また、スキャナ400から原稿台440が省略されてもよい。また、デジタルカメラを用いて原稿を撮影することによって生成された画像データが、読取画像データとして用いられてもよい。いずれの場合も、画像処理装置100のプロセッサ110は、画像処理装置100にネットワークNTや図示しないケーブル(例えば、USBケーブル)を介して接続された読取装置(例えば、スキャナ400やデジタルカメラ)から、読取画像データを取得してよい。また、プロセッサ110は、画像処理装置100に接続された図示しない外部記憶装置(例えば、USBメモリ)から、読取画像データを取得してもよい。
(7)図1の画像処理装置は、パーソナルコンピュータとは異なる種類の装置であってもよい。例えば、画像処理装置は、スキャナ(例えば、スキャナ400)やデジタルカメラなどの原稿を光学的に読み取る読取装置に組み込まれていてもよい。画像処理装置は、ネットワークに接続されたサーバ装置であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、画像処理装置による画像処理の機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(これらの装置を備えるシステムが画像処理装置に対応する)。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図2のS140の処理の機能を、専用のハードウェア回路によって実現してもよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD−ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。