(58)【調査した分野】(Int.Cl.,DB名)
前記仮直線から所定距離の範囲内に境界線がないと前記境界線判定部が判定した場合に、前記仮直線決定部は、前記選択した近似直線以外の近似直線を前記複数の近似直線の中から再選択し、再選択された近似直線に基づいて仮直線を再決定することを特徴とする請求項1〜5のいずれか一項に記載の画像処理装置。
前記候補画素検出部は、前記分類部が再分類した前記座標グループに基づいて算出した近似直線についても前記所定の範囲内に境界線がないと前記境界線判定部が判定した場合に、検出閾値を変えて候補画素を再検出することを特徴とする請求項8に記載の画像処理装置。
【発明を実施するための形態】
【0015】
<1.ハードウエア構成>
以下、本発明の一側面に係る画像読取装置及び画像処理システムについて図を参照しつつ説明する。
図2は、画像処理システムのハードウエア構成図である。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【0016】
画像処理システム1は、画像読取装置10及びコンピュータ装置30を備える。画像読取装置10は、2次元の原稿を読み取って、この原稿に対応する画像信号を生成する。画像読取装置10は、例えば、複数の光源で露光された2次元原稿を走査して読み取る画像読取装置であってよい。このような、例えば画像読取装置の例として、例えばフィーダスキャナ、フラットベッドスキャナ、ハンディスキャナ等の各種スキャナ装置が挙げられる。画像読取装置10は画像処理装置の一例である。
【0017】
コンピュータ装置30は、有線又は無線の通信回線を介して画像読取装置10との間で通信が可能であり、この通信回線を経由して画像読取装置10が読み取った原稿の画像信号を画像読取装置10から受信する。
【0018】
画像読取装置10は、CPU(Central Processing Unit: 中央処理ユニット)11、メモリ12、イメージセンサ13、AFE(Analog Front-End Processor)14と、シェーディング処理部15と、ブロックバッファ16を備える。また、画像読取装置10は、画像処理制御部17と、画像メモリ18と、調停部19と、入力部20と、出力部21と、インタフェース(I/F)22とバス23を備える。
【0019】
CPU11は、メモリ12に格納されたコンピュータプログラムに従い画像読取装置10の動作を制御する。ある実施例では、CPU11は、画像読取装置10が読み取る原稿画像の画像処理を行ってもよい。メモリ12にはこのような画像処理用のコンピュータプログラムが格納されてもよい。メモリ12には、CPU11により実行されるコンピュータプログラムや、このコンピュータプログラムの実行の際に使用されるデータが格納される。メモリ12は、プログラムを記憶するための非揮発性記憶装置や、データを一次的に記憶するための揮発性メモリを含んでいてよい。
【0020】
イメージセンサ13は、2次元の原稿を撮像して、原稿に対応する画像信号を出力する。イメージセンサ13は、例えば、1次元又は2次元に配列されたCCD(Charge Coupled Device)センサやCMOS(Complementary Metal Oxide Semiconductor)センサ等の撮像素子と、この撮像素子に原稿の像を結像する光学系を備える。AFE14は、イメージセンサ13から出力される画像信号に対して増幅やその他の信号処理を施した後、処理された画像信号をシェーディング処理部15へ入力する。
【0021】
シェーディング処理部15は、AFE14から受信した画像信号を、画像データとしてブロックバッファに収容し、この画像データにシェーディング処理を施した後に、画像処理制御部17に出力する。画像処理制御部17は、シェーディング処理が施された後の画像データに所定の画像処理を施し、画像データを画像メモリ18に格納する。他の実施例においてシェーディング処理部15は、シェーディング処理が施された後の画像データを画像メモリ18に格納し、画像処理制御部17は、画像メモリ18から画像データを入力してもよい。調停部19は、画像処理制御部17が画像処理の際に行うメモリ12に対するアクセスと、CPU11によるメモリ12へのアクセスとが競合しないように、これらのアクセスを調停する。
【0022】
ある実施例では、シェーディング処理部15、画像処理制御部17及び調停部19は、論理回路として画像読取装置10に実装されてよい。論理回路は、例えば、LSI(large scale integration)やASIC(Application Specific Integrated Circuit)、FPGA(Field-Programming Gate Array)等であってよい。他の実施例では、シェーディング処理部15、画像処理制御部17及び調停部19は、CPUやDSP(digital signal processor)等のプロセッサと、このプロセッサが実行するプログラムを格納するメモリを含む電子回路として画像読取装置10に実装されてよい。
【0023】
入力部20は、ユーザによる入力操作を受け付ける入力装置である。入力部20は、例えば、ボタン、スクロールホイール、キーパッド、キーボード、ポインティングデバイス、タッチパネル等であってよい。出力部21は、画像読取装置10から各種情報をユーザに提示するための出力装置である。例えば、出力部21は、ユーザに提示する情報を利用者に可視的に表示する表示デバイスであってよい。出力部21は、発光素子や、液晶ディスプレイ、有機エレクトロルミネッセンスディスプレイ等の表示装置であってよい。または、出力部21は、音声信号を出力するスピーカやその駆動回路であってよい。
【0024】
I/F22は、画像読取装置10とコンピュータ装置30との間の有線及び/又は無線による通信インタフェースである。画像読取装置10は、読み取った原稿の画像データをI/F22を介してコンピュータ装置30へ送信することが可能である。画像読取装置10は、画像読取装置10の動作に関する設定情報や指示をI/F22を介してコンピュータ装置30から受信する。ある実施例では、画像読取装置10は、コンピュータ装置30により処理が施された画像データをI/F22を介して受信してよい。CPU11、シェーディング処理部15、画像処理制御部17、画像メモリ18、調停部19、入力部20、出力部21及びI/F22は、バス23によって電気的に接続されている。
【0025】
一方、コンピュータ装置30は、CPU31と、補助記憶装置32と、メモリ33と、入力部34と、出力部35と、媒体読取部36と、I/F37とバス38を備える。CPU31は、補助記憶装置32に格納されたコンピュータプログラムを実行することにより、コンピュータプログラムに応じた情報処理を実行する。ある実施例では、CPU31は、画像読取装置10により読み取られた原稿画像の画像処理を行ってもよい。補助記憶装置32にはこのような画像処理用のコンピュータプログラムが格納されてもよい。補助記憶装置32は、コンピュータプログラムを記憶するための、不揮発性記憶装置や、読み出し専用メモリ(ROM: Read Only Memory)やハードディスクなどを含んでいてもよい。
【0026】
メモリ33には、CPU31が現在実行中のプログラムや、このプログラムによって一時的に使用されるデータが記憶される。メモリ33は、ランダムアクセスメモリ(RAM: Random Access Memory)を含んでいてよい。入力部34は、ユーザによる入力操作を受け付ける入力装置である。入力部34は、例えば、キーパッド、キーボード、ポインティングデバイス、タッチパネル等であってよい。
【0027】
出力部35は、コンピュータ装置30によって処理された信号を出力する出力装置である。例えば、出力部35は、コンピュータ装置30によって処理された情報を利用者に可視的に表示する表示デバイスであってよい。出力部35は、例えば、液晶ディプレイ、CRT(Cathode Ray Tube)ディスプレイ、有機エレクトロルミネッセンスディスプレイなどの表示装置であってよい。または、出力部35は、音声信号を出力するスピーカやその駆動回路であってよい。
【0028】
媒体読取部36は、コンピュータに読み取り可能な可搬型記録媒体に記憶されたデータを読み取る入力装置である。媒体読取部36は、例えばCD−ROMドライブ装置やDVD−ROMドライブ装置、フレキシブルディスクドライブ装置、CD−Rドライブ装置や、DVD−Rドライブ装置、MOドライブ装置、フラッシュメモリ装置へのアクセス装置であってよい。
【0029】
I/F37は、画像読取装置10とコンピュータ装置30との間の有線及び/又は無線による通信インタフェースである。コンピュータ装置30は、画像読取装置10が読み取った原稿の画像データを、I/F37を経由して受信することが可能である。コンピュータ装置30は、画像読取装置10の動作に関する設定情報や指示をI/F37を介して画像読取装置10へ送信する。CPU31、補助記憶装置32、メモリ33、入力部34、出力部35、媒体読取部36及びI/F37は、バス38によって電気的に接続されている。
【0030】
<2.第1実施例>
<2.1. 概要説明>
図3は、画像処理システム1の処理の第1例の説明図である。ステップS101において画像処理システム1は、画像データを入力する。
図4の(A)は入力される画像データを示す。画像データ50は、画像読取装置10により読み取られた原稿に対応する原稿領域51を含む。ステップS102において画像処理システム1は、原稿領域の辺のそれぞれについて、各辺での原稿領域とその外側との境界線を構成する画素の候補となる候補画素を検出する。
図4の(A)〜
図4の(C)及び
図5の(A)及び
図5の(B)において、例として辺52の境界線53で検出した候補画素を黒ドットで示す。
【0031】
ステップS103において画像処理システム1は、原稿領域の辺のいずれかを選択する。以下のステップS104〜S106は、原稿領域の辺毎に実行される。
【0032】
ステップS104において画像処理システム1は、境界線53の複数の部位においてそれぞれ検出された候補画素毎に異なるグループに分類することにより、複数の座標グループを生成する。
図4の(B)は、座標グループcg1〜cg4に分類された候補画素を示す。
【0033】
ステップS105において画像処理システム1は、複数の座標グループに属する候補画素の集合により形成される直線グループを決定する。このとき、画像処理システム1は、各座標グループcg1〜cg4に属する候補画素に基づいて、境界線53の近似直線をそれぞれ算出する。候補画素の座標から近似直線を算出するために、最小二乗法やハフ変換などの様々な算出法を利用することができる。
図4の(C)において、近似直線al1〜al4は、それぞれ各座標グループcg1〜cg4に属する候補画素に基づいて算出される近似直線である。
【0034】
次に、画像処理システム1は、近似直線al1〜al4のそれぞれについて、各近似直線から所定の距離の範囲にある候補画素の集合を形成し、それぞれの集合を1つの直線グループとして決定する。
図5の(A)は、近似直線al1から所定の距離の範囲にある候補画素の集合により形成される直線グループlg1の説明図である。直線グループlg1には、座標グループcg1、cg2及びcg4に属する候補画素が含まれる。これら座標グループcg1、cg2及びcg4に属する候補画素は、近似直線al1から所定の距離の範囲にある。他の近似直線al2〜al4についても同様に直線グループを決定する。
【0035】
ステップS106において画像処理システム1は、境界線53の仮直線を決定する。画像処理システム1は、ステップS105で生成した直線グループのうち、最も所属する候補画素が多い直線グループを選択する。本例では、最も所属する候補画素が多い直線グループとして、
図5の(A)に示す直線グループlg1が選択される。
【0036】
画像処理システム1は、選択された直線グループに含まれる候補画素に基づいて境界線53の仮直線を決定する。候補画素の座標から仮直線を決定するために、最小二乗法やハフ変換などの様々な算出法を利用することができる。
図5の(B)に示す例では、画像処理システム1は、座標グループcg1、cg2及びcg4に属する候補画素に基づいて、境界線53の仮直線tlを決定する。
【0037】
ステップS107において画像処理システム1は、全ての辺において仮直線を決定したか判断する。いずれかの辺において仮直線を決定していない場合(ステップS107:N)には、処理はステップS108へ進む。全ての辺において仮直線を決定した場合(ステップS107:Y)には、処理はS109へ進む。ステップS108において画像処理システム1は、未だ仮直線を決定していない辺を選択し、処理をステップS104に戻す。
【0038】
ステップS109において画像処理システム1は、画像データに現れる原稿の縁の影画像の検出結果に応じて仮直線を境界線として採用するか否かを判断する。
図6の(A)〜
図6の(C)は、仮直線と原稿の縁の影画像の説明図である。原稿の縁では、照明光に照明された原稿の影が画像読取装置の原稿裏当てに映るため、画像データには原稿の縁に影画像が生じる。なお、
図6の(A)〜
図6の(C)の例示では、簡単のため左辺についてのみ影画像が描かれているが、右辺、上辺及び下辺についても影画像は生じる。
【0039】
図6の(A)に示すように、仮直線が原稿領域の辺の境界を正しく示す場合には、仮直線tlから所定距離Dの範囲内に影画像があり、原稿の縁に沿って発生する影の線の延伸方向と仮直線の方向との差が少ないことが期待できる。しかし、仮直線が原稿領域の辺の境界を正しく示さない場合には、
図6の(B)に示すように仮直線から所定距離Dの範囲内に影画像がないことが考えられる。または、
図6の(C)に示すように原稿の縁に沿って発生する影の線の延伸方向と仮直線の方向とが大きく異なることが考えられる。
【0040】
画像処理システム1は、仮直線から所定距離Dの範囲内に影画像があるか否かに応じて、仮直線を境界線として採用できるか否かを判断する。これに加えて又は代えて、画像処理システム1は、原稿の縁に沿って発生する影の線の延伸方向と仮直線の方向との差に応じて、仮直線を境界線として採用できるか否かを判断する。
【0041】
ステップS110において画像処理システム1は、影画像の検出位置に応じて仮直線の位置を補正することにより境界線を決定する。ステップS111において画像処理システム1は、ステップS110で決定した境界線の位置で、入力した画像データから原稿領域の画像を切り出す。その後に処理が終了する。
【0042】
<2.2. 装置構成>
続いて、画像処理制御部17の構成について説明する。
図7は画像処理制御部17の構成例の第1例を示す図である。画像処理制御部17は、画像入力部60、候補画素検出部61、候補画素記憶部62、分類部63、近似直線算出部64、仮直線決定部65、影検出部66、境界線判定部67、補正部68及び画像切出部69を備える。なお、
図7は、以下の説明に関係する機能を中心として示している。このため、画像処理制御部17は図示の構成要素以外の他の構成要素を含んでいてよい。候補画素記憶部62に格納される候補画素は、メモリ12に格納される。
【0043】
変形例では、画像入力部60、候補画素検出部61、候補画素記憶部62、分類部63、近似直線算出部64、仮直線決定部65、影検出部66、境界線判定部67、補正部68及び画像切出部69により行われる処理の一部又は全部を、画像処理制御部17に代わってCPU11が実行してもよい。また、これらの処理の一部又は全部が、コンピュータ装置30のCPU31によって実行してもよい。コンピュータ装置30は、候補画素記憶部62としてメモリ33に候補画素を記憶してもよい。
【0044】
CPU31にこれらの情報処理を実行させるコンピュータプログラムは、機械可読記録媒体に記録されて、媒体読取部36により読み取られて補助記憶装置32にインストールされてもよい。また、CPU31にこれらの情報処理を実行させるコンピュータプログラムは、図示しないネットワークインタフェースを介してネットワークからダウンロードされ、補助記憶装置32にインストールされてもよい。
【0045】
画像入力部60は、画像データ50を入力する。候補画素検出部61は、原稿領域の辺のそれぞれについて候補画素を検出する。候補画素検出部61は、検出した画素を候補画素記憶部62に格納する。分類部63は、候補画素を異なる複数の座標グループに分類する。
【0046】
近似直線算出部64は、各座標グループに属する候補画素に基づいて、境界線53の近似直線をそれぞれ算出する。仮直線決定部65は、近似直線のそれぞれについて直線グループを生成する。仮直線決定部65は、原稿領域の辺毎に、生成した直線グループのうち最も所属する候補画素が多い直線グループを選択して、選択した直線グループに基づいて仮直線を決定する。
【0047】
影検出部66は、仮直線から所定距離Dの範囲内において原稿の縁の影画像を探索する。このため、影検出部66は、最大値点検出部80と、分布算出部81と、判定部82を備える。最大値点検出部80、分布算出部81、及び判定部82の各々の処理については後述する。
【0048】
境界線判定部67は、原稿領域の辺毎に、仮直線から所定距離Dの範囲内に原稿の縁の影画像があるか否かに応じて、仮直線を境界線として採用するか否かを判断する。補正部68は、境界線として採用された仮直線の位置を影画像の検出位置に応じて補正することにより境界線を決定する。画像切出部69は、補正部68が決定した境界線の位置で、入力した画像データから原稿領域の画像を切り出す。画像切出部69により切り出された画像は、コンピュータ装置30に出力される。
【0049】
<2.3. 画像処理>
<2.3.1. 座標グループ生成処理>
続いて、画像処理制御部17の各構成要素により実行される処理について説明する。なお、以下の説明では、原稿領域の左辺の境界線を決定する場合の処理を例として説明するが、右辺についても同様に境界線を決定することができる。また、座標グループを生成する際に候補画素を走査する方向を90°変えることによって、上辺及び下辺の境界線についても同様に決定することができる。
【0050】
分類部63は、候補画素検出部61により検出された候補画素を異なる複数のグループに分類することによって座標グループを生成する。
図8は、候補画素検出部61により検出された候補画素の説明図である。候補画素検出部61は、検出ラインL1〜L6、…においてそれぞれ境界線110の候補画素P1〜P6、…を検出する。検出ラインL1〜L6、…は、画像データの上から下へ向かう方向である走査方向SDに並べて、所定画素数dy毎に配列される。
【0051】
なお、以下の説明において画像データの上から下に向かう方向をY軸方向と表記し、左から右に向かう方向をX軸方向と表記することがある。またX軸方向及びY軸方向における各点の座標を、それぞれX座標及びY座標と表記することがある。
【0052】
分類部63は、処理対象として注目する候補画素(以下「注目候補画素」と表記する)を、走査方向SDの方向に向かって、連続する候補画素P1、P2、…、P(i−1)、Pi、P(i+1)、…に順次変化させる。すなわち分類部63は、走査方向SDの方向に向かって注目候補画素を走査する。分類部63は、注目候補画素を順次変化させながら、一つ上の検出ラインの候補画素と同じ座標グループに注目候補画素を入れるか否かを判断する。
【0053】
図9は、座標グループ生成処理の一例の説明図である。
図9の座標グループ生成処理は、
図3の座標グループ生成処理S104に相当する。ステップS201において分類部63は、処理を開始する最初の注目候補画素を選択する。例えば分類部63は、上から2番目以下の候補画素を最初の注目候補画素を選択してよい。これは、後述のステップS205及びS206において、注目候補画素と一つ上の検出ラインで検出された候補画素との相対位置関係を判断するためである。
【0054】
ステップS202において分類部63は、第1個目の座標グループcg1を生成する。ステップS203において分類部63は、注目候補画素の検出ラインを示す変数「i」にステップS201で選択した注目候補画素の検出ラインを代入する。分類部63は、現在形成中の座標グループcgjを参照するインデックス「j」に「1」を代入する。
【0055】
ステップS204において分類部63は、第(i−1)番目の検出ラインの候補画素P(i−1)から注目候補画素Piへ向かう方向の傾きθを決定する。
図10の(A)を参照して候補画素P(i−1)から候補画素Piへ向かう方向の傾きθを説明する。
図10の(A)及び
図10の(B)において一点鎖線は検出ラインを示す。
【0056】
傾きθは、候補画素P(i−1)と候補画素Piとを結ぶ直線Lと走査方向SDとのなす角として定められる。ここで原稿は、画像読取装置10のイメージセンサ13に対して、最大45°傾いた状態で読み取られることが想定される。このため、1本の境界線上にある候補画素間を結ぶ直線は、最大で45°傾くことが予定される。もし、候補画素間を結ぶ直線の傾きが45°以上傾いている場合には、これらの候補画素は1本の境界線上にないと判断できる。
【0057】
このため、ステップS205において分類部63は、傾きθが45°よりも大きいか否かを判断する。傾きθが45°以下である場合には、
図10の(A)に示すように、注目候補画素Piを、1つ上の検出ライン上の候補画素P(i−1)と同じ座標グループcgに含める。一方で、
図10の(B)に示すように傾きθが45°を超える場合には、注目候補画素Piを、1つ上の検出ライン上の候補画素P(i−1)と同じ座標グループcg1に含めない。なお、検出ライン間のY軸方向の間隔は一定値dyであるため、分類部63は、候補画素間のX座標の大きさがdyを超えるか否かによって、傾きθが45°を超えるか否かを判断してもよい。
【0058】
図9を参照する。傾きθが45°よりも大きい場合(ステップS205:Y)には、処理はオペレーションS206へ進む。傾きθが45°以下の場合(ステップS205:N)には、処理はオペレーションS209へ進む。ステップS206において分類部63は、現在形成中の座標グループcgjが空であるか否かを判断する。cgjが空の場合(ステップS206:Y)には、分類部63は新たな座標グループを生成せずに、処理はステップS215へ進む。cgjが空でない場合(ステップS206:N)には、分類部63は、ステップS207でインデックスjを1つ増加させ、ステップS208で新たな座標グループcgjを生成する。その後、処理はステップS215へ進む。
【0059】
なお、本実施例では、ステップS208で生成した新たな座標グループcgjに、注目候補画素Piを含めない。このため
図10の(B)に示すように、傾きθが45°よりも大きい場合には、注目候補画素Piは新たな座標グループcg2にも、候補画素P(i−1)が属する座標グループcg1にも属さない。変形例では、分類部63は、ステップS208で生成した新たな座標グループcgjに注目候補画素Piを含めてもよい。
【0060】
隣接する候補画素間を結ぶ直線の傾きθが45°を超える場合として、例えば以下の2つの場合が想定される。
【0061】
(1)ノイズにより候補画素を誤検出した場合である。この場合、誤検出した候補画素の位置は本来の境界線から離れた位置で検出される。
図11の(A)に示す例では、候補画素P1〜P6のうち、候補画素P4が本来の境界線BLから離れた位置で検出される。
【0062】
このような誤検出が生じやすい場合の例として、原稿領域と画像データの背景領域の明度差が小さい場合がある。
図11の(B)は、原稿領域と背景領域の明度差が小さい画像データの模式図である。画像データ100は、原稿領域101と背景領域102を含み、原稿領域101と背景領域102の明度差が比較的小さい。このような場合には原稿領域1001と背景領域102との境界における明度変化と、原稿領域101内における明度変化の違いを峻別しにくくなる。このため、例えば
図11の(B)に示すように、参照符号103で示す部分では正常に境界線の位置で候補画素が検出される一方で、参照符号104で示す部分では境界線から離れた位置で候補画素が誤検出されることが生じることがある。
【0063】
境界線の近似直線を算出する際に、誤検出した候補画素を使用すると、近似直線の傾きに誤差が生じる原因となる。分類部63が、誤検出された候補画素を他の候補画素と同じ座標グループに含めないことで、座標グループに属する候補画素に基づいて算出される近似直線の傾きに、誤検出した候補画素による誤差が生じることを防止する。
【0064】
(2)辺にタブが存在し、タブ部分で候補画素の一方が検出され、タブでない部分で候補画素の他方が検出された場合である。この場合、これらの候補画素は同一直線の境界線上に存在しない。
図11の(C)は、タブ部分及びタブでない部分で検出される候補画素の模式図である。候補画素P1〜P3はタブでない部分の境界線BL1上で検出される一方で、候補画素P4〜P6はタブ部分の境界線BL2上で検出される。
【0065】
候補画素P1〜P6はそもそも同一直線上で検出された点でないため、これらの候補画素に基づいて境界線の近似直線を算出すると、近似直線の傾きに誤差が生じる原因となる。分類部63が、タブ部分で検出された候補画素とタブ部分以外の候補画素とを同じ座標グループに含めないことで、これらの候補画素を混ぜて近似直線を算出した場合に生じる傾きの誤差を防止する。
【0066】
図9を参照する。ステップS209において分類部63は、注目候補画素Piが境界線の変曲点であるか否かを判断する。すなわち分類部63は、注目候補画素Piの前後において境界線が曲折するか否かを判断する。
【0067】
上述の通り、画像読取装置10のイメージセンサ13に対して、原稿が最大45°傾いた状態で読み取られる場合がある。原稿が最大45°傾いた状態で読み取られた場合の候補画素の状態を
図12の(A)に示す。点P1は、原稿のいずれかの辺の境界BL1上で検出された候補画素である。点P3は、原稿の他の辺の境界BL2上で検出された候補画素である。候補画素P2は、境界BL1及びBL2が交わるコーナーで検出された候補画素である。
【0068】
候補画素P1からP2に向かう直線の傾きは45°である。このため、注目候補画素がP2である場合のステップS205の判断は「いいえ(N)」となり、分類部63は、候補画素P1とP2を異なる座標グループに分離しない。また、候補画素P2からP3に向かう直線の傾きも45°であるため、注目候補画素がP3である場合のステップS205の判断では、分類部63は、候補画素P2及びP3と異なる座標グループに分類しない。したがって、ステップS205の判断では、候補画素P1とP3は異なる座標グループに分類されない。
【0069】
候補画素P1及びP3は同一直線上で検出された点でないため、これらの候補画素に基づいて境界線の近似直線を算出すると、近似直線の傾きに誤差が生じる原因となる。したがって分類部63は、注目候補画素Piが境界線の変曲点であるか否かを判断し、変曲点の前後で座標グループを分割する。
【0070】
図12の(B)は、変曲点の検出方法の一例の説明図である。点Pi、P(i−1)及びP(i+1)は、それぞれ注目候補画素、注目候補画素よりも1つ上の検出ラインの候補画素、及び注目候補画素よりも1つ下の検出ラインの候補画素である。注目候補画素Piの座標を(xi,yi)とし、候補画素P(i−1)の座標を(x(i−1),y(i−1))とし、注目候補画素P(i+1)の座標を(x(i+1),y(i+1))とする。
【0071】
分類部63は、次式(1)により、候補画素の軌跡の2回微分値Aを算出する。
A=(dx2/dy2)−(dx1/dy1) …(1)
dx1=xi−x(i−1), dy1=yi−y(i−1)
dx2=x(i+1)−xi, dy2=y(i+1)−yi
【0072】
注目候補画素が変曲点でない場合、境界線の傾きdx1/dy1、dx2/dy2は一定であるから2回微分値Aの絶対値|A|は比較的小さく、注目候補画素が変曲点の場合には絶対値|A|が比較的大きくなる。分類部63は、絶対値|A|が所定閾値Th1よりも大きいか否かを判断することによって注目候補画素が変曲点であるか否かを判断する。
【0073】
ここで式(1)の右辺第1項(dx2/dy2)は、注目候補画素Piと候補画素P(i+1)とを結ぶ直線の傾き、すなわち直線の方向に相当する。右辺第2項(dx1/dy1)は、候補画素P(i−1)と注目候補画素Piとを結ぶ直線の方向に相当する。したがって2回微分値Aの絶対値|A|は、候補画素P(i−1)及びPiを結ぶ直線の方向と候補画素Pi及びP(i+1)を結ぶ直線の方向との間の変化量に相当する。また、所定閾値Th1は第2閾値の一例である。
【0074】
図9及び
図13の(A)〜
図13の(C)を参照し、変曲点の前後で座標グループを分割する処理を説明する。注目候補画素Piが変曲点でない場合(ステップS209:N)には、処理はステップS210へ進む。ステップS210において分類部63は、現在形成中の座標グループcg1に注目候補画素Piを追加する。その後、処理はステップS215へ進む。
【0075】
変曲点が検出される前の状態を
図13の(A)に示す。点P1〜P4は、原稿のコーナー部で検出された候補画素である。候補画素の座標P1〜P4は、それぞれ(x1,y1)、(x2,y2)、(x3,y3)及び(x4,y4)である。いま、注目候補画素Piは候補画素P2であり、1つ上の検出ラインの候補画素P1は、座標グループcgmに所属する。注目候補画素P2は変曲点でないため、次式にて算出される2回微分の絶対値|A|が比較的小さく、変曲点の検出閾値Th1を超えない。
|A|=|(x3−x2)/(y3−y2)−(x2−x1)/(y2−y1)|
【0076】
その結果、処理はステップS210へ進む。ステップS210において注目候補画素P2は、座標グループcgmに加えられる。
【0077】
その後、注目候補画素Piは候補画素P2からP3に変わる。
図13の(B)は、注目候補画素Piが候補画素P3である場合における2回微分の説明図である。注目候補画素P3は変曲点であるため、次式にて算出される2回微分の絶対値|A|が比較的大きくなり、変曲点の検出閾値Th1を超える。
|A|=|(x4−x3)/(y4−y3)−(x3−x2)/(y3−y2)|
【0078】
図9において、注目候補画素Piが変曲点である場合(ステップS209:Y)には、処理はステップS211に進む。ステップS211において分類部63は、現在形成中の座標グループcgjが空であるか否かを判断する。cgjが空の場合(ステップS211:Y)には、分類部63は新たな座標グループを生成せずに、処理はステップS214へ進む。cgjが空でない場合(ステップS211:N)には、分類部63は、ステップS212でインデックスjを1つ増加させ、ステップS213で新たな座標グループcgjを生成する。ステップS214において分類部63は、変曲点の前後の座標グループcg(j−1)及びcgjの両方に変曲点の候補画素Piを追加する。その後、処理はステップS215へ進む。
【0079】
図13の(C)は、変曲点P3が検出された結果、座標グループcgmに加えて新たな座標グループが生成された状態を示す。座標グループcgm及びcgm+1の両方に、変曲点の候補画素P3が加えられている。
【0080】
図9を参照する。ステップS215において分類部63は、注目候補画素Piの検出ラインが最後の検出ラインであるか否かを判定する。注目候補画素Piの検出ラインが最後の検出ラインである場合(ステップS215:Y)には、座標グループ生成処理が終了する。注目候補画素Piの検出ラインが最後の検出ラインでない場合(ステップS215:N)には、処理はステップS216へ進む。ステップS216において分類部63は、注目候補画素Piを次の検出ラインの候補画素に進めて処理をステップS204に戻す。
【0081】
<2.3.2. 直線グループ生成処理>
図14は、直線グループ生成処理の説明図である。
図14の直線グループ生成処理は、
図3の直線グループ生成処理S105に相当する。ステップS301において近似直線算出部64は、処理対象として注目する座標グループcgjを参照するインデックス「j」に「1」を代入する。以下、画素グループcgjを「注目座標グループcgj」と表記することがある。ステップS302において近似直線算出部64は、注目座標グループcgjに属する候補画素に基づいて、境界線53の近似直線aljを算出する。ステップS303において仮直線決定部65は、注目座標グループcgjに属する候補画素を含む直線グループlgjを生成する。
【0082】
ステップS304において仮直線決定部65は、座標グループを参照するインデックス「k」に「1」を代入する。ステップS305において仮直線決定部65は、座標グループcgkが注目座標グループcgjと等しいか否かを判断する。座標グループcgkが注目座標グループcgjと異なる場合(ステップS305:Y)には、処理はステップS306へ進む。座標グループcgkが注目座標グループcgjと同じ場合(ステップS305:N)には、ステップS306〜S308がスキップされて、処理はステップS309へ進む。
【0083】
ステップS306において仮直線決定部65は、近似直線aljと座標グループcgkとの間の距離dを判定する。距離dの算出には様々な算出方法を使用することができる。
図15の(A)は、近似直線aljと座標グループcgkの距離dの算出方法の例示の説明図である。仮直線決定部65は、座標グループcgkの両端の端点と近似直線aljとのそれぞれの距離d1及びd2の平均を、距離dとして算出してよい。仮直線決定部65は、距離d1及びd2のうちいずれか長い方又は短い方を距離dとして算出してもよい。仮直線決定部65は、座標グループcgkに含まれるいずれかの候補画素と近似直線aljとの距離を、距離dとして算出してよい。
【0084】
図15の(B)は、近似直線aljと座標グループcgkの距離dの算出方法の例示の他の説明図である。仮直線決定部65は、座標グループcgkに基づいて算出される近似直線alkと近似直線aljとの間の距離を、距離dとして算出してもよい。
【0085】
ステップS307において仮直線決定部65は、距離dが所定の閾値Th2以下であるか否かを判断する。距離dが閾値Th2以下である場合(ステップS307:Y)には、処理はステップS308へ進む。距離dが閾値Th2を超える場合(ステップS307:N)には、ステップS308がスキップされて、処理はステップS309へ進む。ステップS308において仮直線決定部65は、座標グループcgkの候補画素を、直線グループlgjに追加する。
【0086】
ステップS309において仮直線決定部65は、インデックスkの値を1つ増加する。ステップS310において仮直線決定部65は、インデックスkの値が、座標グループの総数CGNを超えるか否かを判断する。kの値がCGNを超える場合(ステップS310:Y)には、処理はステップS311へ進む。kの値がCGNを超えない場合(ステップS310:N)には、処理はステップS305へ戻る。
【0087】
ステップS311において仮直線決定部65は、注目座標グループcgjのインデックスjの値を1つ増加する。ステップS312において仮直線決定部65は、インデックスjの値が、座標グループの総数CGNを超えるか否かを判断する。jの値がCGNを超える場合(ステップS312:Y)には直線グループ生成処理が終了する。jの値がCGNを超えない場合(ステップS312:N)には、処理はステップS302へ戻る。
【0088】
上記のステップS301〜S312により形成される直線グループlgjについて説明する。
図16は、直線グループの説明図である。
図16において点線120は原稿領域を示し、黒ドットは候補画素を示す。
図16の例において、複数の座標グループcg1〜cg4が形成され、近似直線alは座標グループcg1に基づいて算出された原稿領域の境界線の近似直線である。また、直線グループlgは、近似直線aljから所定の距離の範囲にある座標グループcg1、cg2及びcg4の候補画素の集合である。
【0089】
直線グループlgは、1つの座標グループcg1に属する候補画素だけでなく、この候補画素に基づき算出された境界線の近似直線alから所定の距離の範囲にある他の座標グループcg2及びcg4の候補画素も含む。したがって、仮直線決定部65は、同一直線上に位置する境界線を検出した候補画素でありながら異なる座標グループに分類された候補画素同士を1つの集合として識別する。
【0090】
<2.3.3. 仮直線決定処理>
図17は、仮直線決定処理の一例の説明図である。
図17の仮直線決定処理は、
図3の仮直線決定処理S106に相当する。ステップS401において仮直線決定部65は、生成された直線グループの中からいずれかの直線グループを選択する。ステップS402において仮直線決定部65は、ステップS401で選択した直線グループに含まれる候補画素に基づいて、原稿領域の境界線の仮直線を算出する。
【0091】
後述の通り、仮直線決定部65により決定された仮直線を境界線判定部67が原稿領域の辺の境界線として採用しない場合には、仮直線決定部65は仮直線決定処理を再実行して他の仮直線決定部65を決定する。ステップS401において仮直線決定部65は、それまでに仮直線決定処理の仮直線算出に使用された直線グループ以外の直線グループのうち、最も多い候補画素を含む直線グループを選択する。
【0092】
<2.3.4. 採否判定処理>
図18及び
図19は、採否判定処理の一例の説明図である。
図18及び
図19の採否判定処理は、
図3の採否判定処理S109に相当する。ステップS501において影検出部66は、原稿領域の辺のいずれかを選択する。以下のステップS502〜S505及びS508〜522は、原稿領域の辺毎に実行される。
【0093】
ステップS502において最大値点検出部80は、仮直線上の複数の座標毎に、各座標から原稿領域の内側に向かう第1方向に沿う画素の明度の微分の絶対値が最大となる点を、各座標から所定距離の範囲において検出する。以下の説明及び添付図面においてこの点を「最大値点」と表記することがある。
【0094】
図20の(A)及び
図20の(B)は最大値点の検出処理を説明するための図である。仮直線が原稿領域の左辺及び右辺の仮直線である場合、第1方向及びこれに直交する第2方向の一例は、それぞれX軸方向及びY軸方向である。仮直線が原稿領域の上辺及び下辺の仮直線である場合、第1方向及び第2方向の一例は、それぞれY軸方向及びX軸方向である。
【0095】
最大値点検出部80は、最大値点を探す第2方向の画素範囲を決定する。以下の説明及び添付図面において最大値点を探す第2方向の画素範囲を「探索範囲」と表記することがある。例えば、最大値点検出部80は、仮直線決定部65が原稿領域の四辺についてそれぞれ決定した仮直線の交点に挟まれた範囲を探索範囲として決定してよい。
図20の(A)の例では、左辺の仮直線tllについて最大値点を探す探索範囲は、仮直線tllと上辺の仮直線tluとの交点p1と、仮直線tllと下辺の仮直線tlbとの交点p2との間に挟まれた範囲である。
【0096】
最大値点検出部80は、探索範囲内の複数の第2方向の座標毎に最大値点を探索する。
図20の(B)の例では、最大値点検出部80は、第2方向の座標c1、c2…cnについて最大値点が検出される。範囲Rは、最大値点を探す第1方向の画素範囲である。以下の説明及び添付図面において最大値点を探す第1方向の画素範囲を「注目範囲」と表記することがある。
【0097】
注目範囲は、仮直線tllよりも外側の範囲を含んでもよい。例えば、ある実施例では、仮直線tllよりも画素1個分外側にずれた座標から、内側に画素62個分ずれた座標までの64画素の範囲である。最大値点検出部80は、探索範囲内の複数の座標c1、c2…cn毎に、注目範囲内における第1方向に沿った画素の明度の微分値を算出する。
【0098】
例えば、最大値点検出部80は、第1方向に沿った隣接画素同士の明度の差分を微分値として算出してよい。最大値点検出部80は、第2方向に沿って並ぶ複数画素の明度を平均化し、平均化された明度の微分値を算出してもよい。
【0099】
図21の(A)は、画像データ中の画素の第1方向における明度変化を示す。
図21の(A)は、地色が明るい原稿を撮像した画像データの例であり、原稿領域の明度は背景領域の明度よりも高い。原稿領域の縁では、縁で生じる影により背景領域の本来の明度よりも明度が低くなり原稿領域と影との間で急な明度変化が生じる。その後、原稿領域から離れるにつれて漸次高くなる。
【0100】
図21の(B)は、
図21の(A)の明度の微分の絶対値を示す。原稿領域の縁における明度変化により原稿の縁で微分の絶対値が大きくなるが、原稿領域内は地色が一定であるため微分の絶対値は縁での値よりも小さい。また、背景領域では影による明度変化があるが変化が緩やかであるため微分の絶対値は縁での値よりも小さくなる。したがって、原稿の縁の位置は、微分の絶対値が最大値となる最大値点となる。
【0101】
図21の(C)は、地色が暗い原稿を撮像した画像データにおける画素の第1方向における明度変化を示す。原稿領域の明度は背景領域の明度よりも低い。原稿領域の縁では、
図21の(A)の例と同様に、縁で生じる影により背景領域の本来の明度よりも明度が低くなり原稿領域と影との間で急な明度変化が生じる。その後、原稿領域から離れるにつれて漸次高くなる。
【0102】
図21の(D)は、
図21の(B)の明度の微分の絶対値を示す。原稿領域の縁における明度変化により原稿の縁で微分の絶対値が大きくなり、原稿領域内及び背景領域では微分の絶対値は縁での値よりも小さくなる。したがって、原稿の縁の位置は、微分の絶対値が最大値となる最大値点となる。
【0103】
図18を参照する。ステップS503において分布算出部81は、各座標c1、c2…cnで検出した最大値点と仮直線との間の位置ずれ量の度数分布を算出する。
図22の(A)は、最大値点と仮直線との間の位置ずれ量を説明するための図である。点pt1、pt2…ptnは、第2方向の座標がそれぞれ座標c1、c2…cnである仮直線tl上の点である。
【0104】
最大値点pm1、pm2…pmnと仮直線tlとの間の位置ずれ量D1、D2…Dnは、座標c1、c2…cnの最大値点pm1、pm2…pmnの第1方向の座標と、点pt1、pt2…ptnの第1方向の座標との間の差である。
【0105】
図22の(B)は、最大値点と仮直線との間の位置ずれ量D1、D2…Dnの度数分布を説明するための図である。注目範囲に影画像があると最大値点は原稿の縁で検出されるため、仮直線の方向と原稿の縁の方向とが同じならば、位置ずれ量D1、D2…Dnは互いにほぼ等しくなる。しかし、影画像の明度のムラにより最大値点の検出位置のバラツキが生じ、位置ずれ量D1、D2…Dnがある程度分散する。このため、注目範囲に影画像がある場合の位置ずれ量D1、D2…Dnの度数分布には、ある範囲の幅Wを持つピークが現れる。
【0106】
一方で、注目範囲に影画像がない場合にはピークが現れないか、ピークの幅Wが予定の範囲から逸脱する。
図23の(A)は仮直線tlが影画像から離れている状態の模式図であり、
図23の(B)はこのとき算出される度数分布の模式図である。仮直線が影画像から離れて影画像が注目範囲に入らないと、原稿の縁で発生する明度変化で最大値点を検出しないため、座標c1、c2…cnの間で最大値点がばらつくことになる。このため、度数分布にピークが現れない。
【0107】
図24の(A)は縦筋ノイズを仮直線tlとして検出した状態の模式図であり、
図24の(B)はこのとき算出される度数分布の模式図である。縦筋ノイズが仮直線tlとして検出された場合は、縦筋ノイズ自身と隣接画素との間の明度変化で最大値点が検出される。このため、最大値点と仮直線との間の位置ずれ量が常に非常に小さくなるため、度数分布にピークが現れる。しかし、縦筋ノイズの発生位置のX軸方向(第1方向)の座標は変動せず、また影画像のような幅や明度ムラがないため、注目範囲に影画像がある場合と比べてピークの幅が狭くなる。
【0108】
図25の(A)は、比較的小さな角度で仮直線tlが傾いている状態の模式図であり、
図25の(B)はこのとき算出される度数分布の模式図である。仮直線tlが原稿の縁に対して傾いていると、最大値点が検出される原稿の縁と仮直線tlとの距離が変動するので、位置ずれ量D1、D2…Dnのバラツキが増加する。この結果、度数分布に現れるピークの幅Wが広がる。しかし傾きがある程度小さければ、ピークの幅Wの広がりは抑えられる。
【0109】
図26の(A)は、比較的大きな角度で仮直線tlが傾いている状態の模式図であり、
図26の(B)はこのとき算出される度数分布の模式図である。仮直線tlの傾きが過度に大きい場合には、仮直線tlの傾きと原稿の縁と距離の変化量が大きくなるため、位置ずれ量D1、D2…Dnは広範囲に分散する。このため、度数分布にピークが現れなくなる。
【0110】
判定部82は、注目範囲に影画像があるか否かをピークの幅Wに基づいて判断する。例えば判定部82は、所定の閾値Thfよりも頻度が大きい範囲をピークの幅Wとし、この幅Wが所定の数値範囲内のときに注目範囲に影画像があると判断する。なお、この結果、注目範囲に影画像があっても、仮直線tlの傾きが過度に大きい場合には注目範囲に影画像があると判断されない。
【0111】
例えば、ある実施例において、閾値Thfが全体の全度数の3%であり、判定部82は幅Wが2画素から6画素であるときに注目範囲に影画像があると判断する。
【0112】
他の実施例では、判定部82は、ピークの幅Wと高さHに基づいて注目範囲に影画像があるか否かを判断する。例えば判定部82は、高さHの所定割合rの頻度よりも頻度が大きい範囲をピークの幅Wとしてよい。例えば判定部82は、高さHの30%となる頻度の範囲をピークの幅Wとしてよい。また判定部82は、所定割合rを高さHに応じて変動させてもよい。例えば判定部82は、高さHが全体度数の7割を超える場合に、高さHの30%となる頻度の範囲をピークの幅Wとしてよい。高さHが全体度数の7割以下の場合に、高さHの350%となる頻度の範囲をピークの幅Wとしてよい。
【0113】
判定部82は、ピークの頂点が生じる位置ずれ量Dを、影画像の検出位置として決定する。影画像の検出位置は、補正部68による仮直線の位置の補正に使用される。なお、
図25の(A)、
図25の(B)、
図26の(A)及び
図26の(B)を参照して説明したとおり仮直線tlの傾きに応じてピークの幅Wが変化する。このため変形例では、補正部68は、ピークの幅Wに応じて仮直線の傾きを補正してもよい。
【0114】
図18を参照する。ステップS504において境界線判定部67は、判定部82が注目範囲に影画像があると判断したか否かに応じて、仮直線を辺の境界線として採用できるか否かを判断する。判定部82は、仮直線tlの傾きが過度に大きい場合も注目範囲に影画像がないと判断するため、この場合も境界線判定部67は、仮直線を採用できないと判断する。境界線として採用できる場合(ステップS504:Y)に処理はステップS505に進む。仮直線を境界線として採用できない場合(ステップS504:N)に処理はステップS508に進む。ステップS505において境界線判定部67は、仮直線を境界線として採用する。
【0115】
ステップS506において影検出部66は、全ての辺において境界線を決定したか判断する。いずれかの辺において境界線を決定していない場合(ステップS506:N)には、処理はステップS507へ進む。全ての辺において仮直線を決定した場合(ステップS506:Y)に採否判定処理が終了する。ステップS507において影検出部66は、未だ境界線を決定していない辺を選択し、処理をステップS502に戻す。
【0116】
仮直線を境界線として採用できない場合には、
図17の仮直線決定処理を再度実行することにより仮直線を決定し直す。ステップS508において仮直線決定部65は、仮直線算出に使用されていない直線グループ、すなわちステップS401でまだ選択されていない直線グループが残っているか否かを判断する。直線グループが残っている場合(ステップS508:Y)に処理はステップS509へ進む。直線グループが残っていない場合(ステップS508:N)に処理はステップS511へ進む。
【0117】
ステップS509において仮直線決定部65は、仮直線算出に使用した直線グループを破棄する。ステップS510において仮直線決定部65は、仮直線決定処理を再度実行し仮直線を決定し直す。その後に処理はステップS502に戻り、決定し直した仮直線が境界線として採用できるか否かが判定される。
【0118】
仮直線決定部65が直線グループを選択し尽くしても採用できる仮直線が見つからない場合には、
図14の直線グループ生成処理を再度実行することにより直線グループを生成し直す。ステップS511において近似直線算出部64は、同じ座標グループについて直線グループ生成処理をN1回繰り返したか否かを判断する。N1は正の整数である。すでに直線グループ生成処理がN1回繰り返し実行されている場合(ステップS511:Y)に処理はステップS514へ進む。まだ直線グループ生成処理がN1回繰り返し実行されていない場合(ステップS511:N)に処理はステップS512へ進む。
【0119】
ステップS512において仮直線決定部65は、ステップS307の判定で使用される閾値Th2を変更する。閾値Th2を変更することによって生成される直線グループが変化する。ステップS513において近似直線算出部64及び仮直線決定部65は、直線グループ生成処理を再度実行する。その後、ステップS510において仮直線決定部65は、再生成された直線グループに対して仮直線決定処理を実行し仮直線を決定し直す。その後に処理はステップS502に戻る。
【0120】
同じ座標グループについて直線グループ生成処理をN1回繰り返しても採用できる仮直線が見つからない場合には、
図9の座標グループ生成処理を再度実行することにより座標グループを生成し直す。ステップS514において分類部63は、同じ候補画素について座標グループ生成処理をN2回繰り返したか否かを判断する。N2は正の整数である。すでに座標グループ生成処理がN2回繰り返し実行されている場合(ステップS514:Y)に処理はステップS518へ進む。まだ座標グループ生成処理がN2回繰り返し実行されていない場合(ステップS514:N)に処理はステップS515へ進む。
【0121】
ステップS515において分類部63はステップS209の変曲点の検出で使用される閾値Th1を変更する。閾値Th1を変更することによって生成される座標グループが変化する。ステップS516において分類部63は、直線グループ生成処理の繰り返し回数のカウント数を「0」にリセットする。この結果、座標グループの再生成後に採用できる仮直線が見つからない場合には、直線グループ生成処理がN1回まで繰り返し実行可能になる。
【0122】
ステップS517において分類部63は、座標グループ生成処理を再度実行する。その後にステップS513において近似直線算出部64及び仮直線決定部65は、再生成された直線グループに対して直線グループ生成処理を再度実行し、直線グループを決定し直す。その後、ステップS510において仮直線決定部65は仮直線を決定し直す。その後に処理はステップS502に戻る。
【0123】
同じ候補画素について座標グループ生成処理をN2回繰り返しても採用できる仮直線が見つからない場合には、
図3の候補画素検出処理S102を再度実行することにより候補画素を検出し直す。ステップS518において候補画素検出部61は、同じ辺について候補画素検出処理をN3回繰り返したか否かを判断する。N3は正の整数である。すでに候補画素検出処理がN3回繰り返し実行されている場合(ステップS518:Y)に処理はステップS522へ進む。まだ候補画素検出処理がN3回繰り返し実行されていない場合(ステップS518:N)に処理はステップS519へ進む。
【0124】
ステップS519において候補画素検出部61は、候補画素の検出に使用する検出閾値を変更する。例えば候補画素検出部61は、注目画素と隣接画素の明度差とこの検出閾値の比較結果に応じて注目画素を候補画素として検出する。検出画素を変更することにより検出される候補画素が変化する。
【0125】
ステップS520において候補画素検出部61は、直線グループ生成処理及び座標グループ生成処理の繰り返し回数のカウント数を「0」にリセットする。この結果、候補画素の再検出後に採用できる仮直線が見つからない場合には、直線グループ生成処理及び座標グループ生成処理がそれぞれ(N1×N2)回及びN2回まで繰り返し実行可能になる。
【0126】
ステップS521において候補画素検出部61は、候補画素検出処理を再度実行する。その後にステップS517において分類部63は、再検出された候補画素に対して座標グループ生成処理を再度実行し、座標グループを決定し直す。その後、ステップS513において近似直線算出部64及び仮直線決定部65は、直線グループを決定し直し、ステップS510において仮直線決定部65は仮直線を決定し直す。その後に処理はステップS502に戻る。
【0127】
同じ辺について候補画素検出処理をN3回繰り返しても採用できる仮直線が見つからない場合には境界線の検出に失敗したと判断され、ステップS522において処理が異常終了される。この場合は、
図3の境界線補正処理S110と画像切出処理S111が中止される。
【0128】
<2.4. 実施例の効果>
本実施例によれば、原稿領域の辺の境界線の候補として算出した仮直線の適否を原稿の縁の影画像を用いて判断することができるので、境界線の算出精度が向上する。また、適切な仮直線が見つかるまで、候補座標検出処理、座標グループ生成処理、直線グループ生成処理及び仮直線決定処理を反復するので、精度の高い境界線を算出する可能性を向上することができる。
【0129】
また、検出した影画像に基づいて仮直線の位置や角度を補正するため、境界線の算出精度が向上する。
【0130】
<3.第2実施例>
続いて、画像処理システム1の他の実施例について説明する。本実施例では、原稿の縁の影画像を用いて、座標グループに属する候補画素に基づき算出される複数の近似直線の中から境界線を選択する。このため、仮直線決定処理を省いてもよい。
【0131】
図27は、画像処理システム1の処理の第2例の説明図である。ステップS601において画像処理システム1は、画像データを入力する。ステップS602において画像処理システム1は、原稿領域の辺のそれぞれについて、各辺での原稿領域とその外側との境界線を構成する画素の候補となる候補画素を検出する。
【0132】
ステップS603において画像処理システム1は、原稿領域の辺のいずれかを選択する。ステップS604は、原稿領域の辺毎に実行される。ステップS604において画像処理システム1は、境界線53の複数の部位においてそれぞれ検出された候補画素毎に異なるグループに分類することにより、複数の座標グループを生成する。ステップS604の座標グループ生成処理は、
図3の座標グループ生成処理S104と同じ処理であってよい。
【0133】
ステップS605において画像処理システム1は、全ての辺において座標グループを生成したか判断する。いずれかの辺において座標グループを生成していない場合(ステップS605:N)には、処理はステップS606へ進む。全ての辺において座標グループを生成した場合(ステップS605:Y)には、処理はS607へ進む。ステップS606において画像処理システム1は、未だ座標グループを生成していない辺を選択し、処理をステップS604に戻す。
【0134】
ステップS607において画像処理システム1は、座標グループ毎にそれぞれのグループに属する候補画素に基づき、各辺毎に境界線の近似直線を算出する。画像処理システム1は、各近似直線から所定距離の範囲における原稿の縁の影画像を検出結果に応じて、近似直線のいずれかを境界線として選択する。
【0135】
ステップS608において画像処理システム1は、影画像の検出位置に応じて境界線の位置を補正する。ステップS609において画像処理システム1は、ステップS608で決定した境界線の位置で、入力した画像データから原稿領域の画像を切り出す。その後に処理が終了する。
【0136】
図28は、画像処理制御部17の構成例の第2例を示す図である。
図7に示す構成要素と同一の構成要素については同一の参照符号を生成する。特に説明しない限り、同一の参照符号が付された構成要素の動作は同じである。境界線選択部90を備える。なお、
図28は、以下の説明に関係する機能を中心として示している。このため、画像処理制御部17は図示の構成要素以外の他の構成要素を含んでいてよい。
【0137】
近似直線算出部64は、各座標グループに属する候補画素に基づいて、境界線53の近似直線をそれぞれ算出する。影検出部66は、近似直線算出部64が算出した近似直線から所定距離Dの範囲内において原稿の縁の影画像を探索する。境界線選択部90は、原稿領域の辺毎に、影画像の検出結果に応じて近似直線のいずれかを境界線として選択する。
【0138】
補正部68は、境界線選択部90が選択した境界線の位置を影画像の検出位置に応じて補正する。補正部68は、第1実施例の仮直線の補正と同様に境界線の角度を補正してもよい。画像切出部69は、補正部68が補正した境界線の位置で、入力した画像データから原稿領域の画像を切り出す。
【0139】
図29及び
図30は、境界線選択処理の一例の説明図である。
図29及び
図30の境界線選択処理は、
図27の境界線選択処理S607に相当する。ステップS701において影検出部66は、原稿領域の辺のいずれかを選択する。以下のステップS702〜S710及びS712〜719は、原稿領域の辺毎に実行される。
【0140】
ステップS702において近似直線算出部64は、選択された辺について生成された座標グループのいずれかを選択する。ステップS703において近似直線算出部64は、選択した座標グループに属する候補画素に基づいて、辺の境界線の近似直線を算出する。
【0141】
ステップS704において最大値点検出部80は、近似直線上の複数の座標毎に最大値点を検出する。
図31は、第2実施例における最大値点の探索範囲を説明するための図である。いま、座標グループcg1の属する候補座標に基づいて算出された近似直線alから所定距離Dの範囲内において影画像を探索する場合を想定する。
【0142】
座標グループcg1〜cg6は、いずれも左辺について検出された候補画素の座標グループである。探索範囲は、例えば、座標グループcg1が生成された辺と同一の辺について検出された候補画素の第2方向の座標の最小値から最大値までの範囲であってよい。
【0143】
ステップS705において分布算出部81は、近似直線上の複数の座標毎に検出した最大値点と近似直線との間の位置ずれ量の度数分布を算出する。ステップS706において影検出部66は、全ての座標グループにおいて度数分布を算出したか判断する。いずれかの座標グループにおいて度数分布を算出していない場合(ステップS706:N)には、処理はステップS707へ進む。全ての座標グループにおいて度数分布を算出した場合(ステップS706:Y)に処理はステップS708に進む。ステップS707において影検出部66は、未だ度数分布を算出していない座標グループを選択し、処理をステップS703に戻す。
【0144】
ステップS708において境界線選択部90は、注目範囲に影画像があるか否かを判断することにより、各近似直線が境界線として採用可能か否かを判断する。採用可能な近似直線がある場合(ステップS708:Y)に処理はステップS709へ進む。採用可能な近似直線がない場合(ステップS708:N)に処理はステップS712へ進む。
【0145】
ステップS709において境界線選択部90は、近似直線を境界線として採用する。ステップS710において影検出部66は、全ての辺において境界線を選択したか判断する。いずれかの辺において境界線を選択していない場合(ステップS710:N)には、処理はステップS711へ進む。全ての辺において仮直線を決定した場合(ステップS710:Y)に境界線選択処理が終了する。ステップS711において影検出部66は、未だ境界線を選択していない辺を選択し、処理をステップS702に戻す。
【0146】
境界線として採用できる近似直線がない場合には、
図9の座標グループ生成処理を再度実行する。ステップS712において分類部63は、同じ候補画素について座標グループ生成処理をN2回繰り返したか否かを判断する。すでに座標グループ生成処理がN2回繰り返し実行されている場合(ステップS712:Y)に処理はステップS715へ進む。まだ座標グループ生成処理がN2回繰り返し実行されていない場合(ステップS712:N)に処理はステップS713へ進む。
【0147】
ステップS713において分類部63は閾値Th1を変更する。ステップS714において分類部63は、座標グループ生成処理を再度実行する。その後に処理はステップS702に戻る。
【0148】
同じ候補画素について座標グループ生成処理をN2回繰り返しても採用できる近似直線が見つからない場合には、
図3の候補画素検出処理S102を再度実行する。ステップ715において候補画素検出部61は、同じ辺について候補画素検出処理をN3回繰り返したか否かを判断する。すでに候補画素検出処理がN3回繰り返し実行されている場合(ステップS715:Y)に処理はステップS719へ進む。まだ候補画素検出処理がN3回繰り返し実行されていない場合(ステップS715:N)に処理はステップS716へ進む。
【0149】
ステップS716において候補画素検出部61は、候補画素の検出に使用する検出閾値を変更する。ステップS717において候補画素検出部61は、座標グループ生成処理の繰り返し回数のカウント数を「0」にリセットする。ステップS718において候補画素検出部61は、候補画素検出処理を再度実行する。その後にステップS714において分類部63は座標グループ生成処理を再度実行し、処理はステップS702に戻る。
【0150】
同じ辺について候補画素検出処理をN3回繰り返しても採用できる仮直線が見つからない場合には境界線の検出に失敗したと判断され、ステップS719において処理が異常終了される。この場合は、
図27の境界線補正処理S608と画像切出処理S609が中止される。
【0151】
本実施例によれば、原稿領域の辺の境界線の候補として算出した近似直線の適否を原稿の縁の影画像を用いて判断することができるので、境界線の算出精度が向上する。また、適切な近似直線が見つかるまで、候補座標検出処理及び座標グループ生成処理を反復するので、精度の高い境界線を算出する可能性を向上することができる。
【0152】
また、検出した影画像に基づいて境界線の位置や角度を補正するため、境界線の算出精度が向上する。