A.第1実施例:
A−1.画像処理システムの構成
図1は、一実施例としての画像処理システムの構成を示す図である。この画像処理システムは、画像処理装置800と、スキャナ900と、を含んでいる。画像処理装置800とスキャナ900とは、ネットワークNTに接続されており、互いに通信可能である。
画像処理装置800は、例えば、パーソナルコンピュータである(例えば、デスクトップコンピュータ、タブレットコンピュータ)。画像処理装置800は、画像処理装置800のコントローラとしてのCPU810と、記憶装置815と、画像を表示する表示部840と、ユーザによる操作を受け入れる操作部850と、インタフェース890と、を有している。記憶装置815は、揮発性記憶装置820と、不揮発性記憶装置830と、を含んでいる。これらの要素は、バスを介して互いに接続されている。
CPU810は、データ処理を行う演算装置(プロセッサ)である。揮発性記憶装置820は、例えば、DRAMであり、不揮発性記憶装置830は、例えば、フラッシュメモリである。不揮発性記憶装置830は、プログラム832を格納している。CPU810は、プログラム832を実行することによって、スキャナ900に原稿を読み取らせて、読み取った原稿を示す出力画像データを生成する処理を実行する(詳細は後述)。プログラム832は、例えば、スキャナ900を制御するためのスキャナドライバであってよい。CPU810は、プログラム832の実行に利用される種々の中間データを、記憶装置815(例えば、揮発性記憶装置820、不揮発性記憶装置830のいずれか)に、一時的に格納する。プログラム832は、例えば、スキャナ900の製造者によって提供される。
表示部840は、画像を表示する装置であり、例えば、液晶ディスプレイである。これに代えて、LEDディスプレイ、有機ELディスプレイなどの、画像を表示する他の種類の装置を採用してもよい。操作部850は、ユーザによる操作を受け取る装置であり、例えば、表示部840上に重ねて配置されたタッチパネルである。これに代えて、ボタン、レバーなどの、ユーザによって操作される他の種類の装置を採用してもよい。ユーザは、操作部850を操作することによって、種々の指示を画像処理装置800に入力可能である。
インタフェース890は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、インタフェース890は、有線または無線のネットワークインタフェースであり、ネットワークNTに接続されている。
図1には、スキャナ900の斜視図が示されている。図中の第1方向Dp1と第2方向Dp2とは、水平な方向を示し、第3方向Dp3は、鉛直上方向を示している。第1方向Dp1と第2方向Dp2とは、互いに垂直である。また、第3方向Dp3を、上方向Dp3とも呼ぶ。
スキャナ900は、いわゆるフラットベッド式の画像読取装置である。スキャナ900は、本体部990と、本体部990の上方向Dp3側に開閉可能に取り付けられたカバー950と、を備えている。図1には、カバー950が上方向Dp3に向けて開けられた状態のスキャナ900を示している。
本体部990は、制御部910と、原稿を光学的に読み取るイメージセンサ920と、イメージセンサ920を第1方向Dp1に平行に移動させる移動装置930と、原稿台940と、を備えている。
原稿台940は、本体部990(図1)の上方向Dp3側に、設けられている。原稿台940は、カバー950を上方向Dp3に向けて開くことによって、現れる。原稿台940は、第1方向Dp1に平行な2辺と第2方向Dp2に平行な2辺とで囲まれる略矩形状の台であり、透明板(例えば、ガラス板)を用いて構成されている。原稿台940の第3方向Dp3側の面は、読取対象の原稿が載置される載置面Usである。
イメージセンサ920は、原稿台940の下側(第3方向Dp3の反対側)、すなわち、原稿台940の下に配置されている。イメージセンサ920は、原稿を光学的に読み取る一次元イメージセンサであり、CCDやCMOSなどの複数の光電変換素子(単に、光学素子とも呼ぶ)が、第2方向Dp2に並んで配置された構成を有している。イメージセンサ920は、原稿台940上の原稿を、光学的に読み取ることによって、読み取った原稿を示す信号を出力する。
移動装置930は、動力源(例えば、電気モータ)を含んでいる。移動装置930は、該動力源を用いて、イメージセンサ920を、原稿台940の載置面Usに沿う方向(図1の第1方向Dp1と平行な方向)に移動させる。
制御部910は、例えば、データ処理を行うCPU911と、記憶装置915と、インタフェース919と、を含むコンピュータである。記憶装置915は、揮発性記憶装置912(例えば、DRAM)と、不揮発性記憶装置913(例えば、フラッシュメモリ)と、を含んでいる。制御部910の各要素は、バスを介して互いに接続されている。不揮発性記憶装置913は、予め、プログラム914を格納している。CPU911は、プログラム914を実行することによって、イメージセンサ920と移動装置930とを制御する。インタフェース919は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェース)。本実施例では、インタフェース919は、有線または無線のネットワークインタフェースであり、ネットワークNTに接続されている。
CPU911は、移動装置930を制御して、イメージセンサ920を、原稿台940の第1方向Dp1とは反対方向側の端の位置から第1方向Dp1側の端の位置まで、原稿台940に沿って移動させる。CPU911は、イメージセンサ920を移動させながら、イメージセンサ920を制御して、原稿台940に載置された原稿を光学的に読み取らせる。CPU911は、イメージセンサ920から出力される信号に基づいて、読取画像を示す読取画像データを生成する。CPU911は、生成した読取画像データを、画像処理装置800へ送信する。
A−2.画像処理:
図2は、画像処理の例を示すフローチャートである。本実施例では、画像処理装置800のCPU810は、スキャナドライバとして、画像処理を実行する。この画像処理では、スキャナ900に原稿を読み取らせることによって読取画像データが取得され、取得された読取画像データを用いて、欠落の補修などがなされた出力画像を示す出力画像データが生成される。後述するように、出力画像は、原稿と、原稿の外側に配置された余白と、を含んでいる。
S100では、ユーザは、操作部850を操作することによって、画像処理の開始指示を入力する。また、本実施例では、ユーザは、余白の幅を入力する。ユーザは、矩形状の原稿の四方のそれぞれに設けられるべき余白の幅を、指定することができる。なお、余白の幅は、予め準備された複数の設定から、ユーザによって、選択されてよい。これに代えて、ユーザが、余白の幅を示す数値(例えば、ミリメートル単位の数値)を、入力してもよい。CPU810は、入力された指示に応じて、余白の幅を、入力された値に、決定する。そして、CPU810は、開始指示に応じて、画像処理を開始する。
S105では、CPU810は、読取画像データを取得する。具体的には、CPU810は、原稿を読み取る指示を、スキャナ900に送信する。スキャナ900の制御部910のCPU911は、画像処理装置800からの指示に応じて、原稿台940に載置された原稿を読み取ることによって、読取画像データを生成し、生成した読取画像データを、画像処理装置800に送信する。CPU810は、スキャナ900から送信される読取画像データを取得する。読取画像データのデータ形式は、種々の形式であってよい。本実施例では、読取画像データは、複数個の画素のRGB値を含むRGB画像データ、あるいは、複数個の画素の輝度値を含むモノクロ画像データである。1個の画素のRGB値は、その画素の色を示し、例えば、赤(R)と緑(G)と青(B)との3個の成分値(以下、R値、G値、B値とも呼ぶ)を含んでいる。本実施例では、各成分値の階調数は、256階調である。輝度値は、その画素の輝度を、例えば、256階調の値で示す値である。なお、読取画像データのデータ形式は、ユーザの指示に応じて、選択される。
図3は、画像処理で用いられる画像の一例を示す図である。図3(A)には、読取画像の一例が示されている。読取画像110の形状は、第1方向D1に平行な直線と、第2方向D2に平行な直線と、で囲まれる矩形状である。読取画像110を示す複数の画素は、これらの方向D1、D2に沿って格子状に配置されている。
読取画像110は、矩形の原稿を読み取ることによって生成された画像である。読取画像110は、原稿を示す原稿画像21と、原稿画像21の外側の画像である外側画像31と、を含む。外側画像31は、原稿画像21の外側の原稿以外の領域を示す。外側画像31は、原稿画像21の外側の画像、すなわち、原稿画像21の外縁と、読取画像110の外縁(4辺)と、の間に位置する画像である。外側画像31は、本実施例では、カバー950(図1)の原稿台940と対向する対向面Bsを示している。本実施例では、対向面Bsは、白よりも暗く、黒よりも明るいグレーで塗られている。このため、外側画像31は、グレーのほぼ単色の画像である。
原稿画像21の形状は、破れ211を含む不完全な略矩形である。破れ211は、原稿画像21の外縁から内部に向かって延びる欠落部分である。また、原稿画像21は、文字などのオブジェクトObと、背景Bgと、を含んでいる。背景Bgは、原稿の地色の領域である。
S110(図2)では、CPU810は、読取画像内の原稿を示す矩形領域の4つの辺を特定する。図3(B)は、読取画像110から特定される4つの辺411〜414の例を示す説明図である。図中には、図3(A)と同じ読取画像110が示されている。辺411〜414は、原稿画像21の外縁を示す矩形を形成する。以下、辺411〜414で囲まれる矩形領域を、矩形原稿領域210と呼ぶ。矩形原稿領域210の矩形状の輪郭410は、4個の辺411〜414で構成されている。また、読取画像110のうちの矩形原稿領域210の外側の領域310を、余白領域310と呼ぶ。余白領域310は、原稿画像21の外側の余白を示している。破れ211は、矩形原稿領域210内に、含まれている。
矩形原稿領域210の4つの辺411〜414を特定する方法としては、種々の方法を採用可能である。例えば、CPU810は、以下の処理を実行する。CPU810は、読取画像データに対して、縮小処理を実行して、縮小された読取画像である縮小画像を示す縮小画像データを生成する。縮小処理は、画素密度を低減する処理であり、公知の種々の処理であってよい。例えば、一部の画素を間引く処理が採用されてよい。また、読取画像上に低画素密度で配置された複数の画素のそれぞれの色値を、読取画像の複数の画素の色値を用いる補間によって算出する処理が、採用されてよい。
CPU810は、縮小画像内のエッジ画素を抽出するエッジ抽出処理を実行する。エッジ抽出処理は、画像内のエッジを示すエッジ画素を抽出する処理であり、公知の種々の処理であってよい。例えば、各画素のエッジ強度が算出され、エッジ強度が閾値以上である画素がエッジ画素として抽出されてよい。エッジ強度の算出には、ソーベルオペレータやプレウィットオペレータなどの種々のエッジ検出用のオペレータを利用可能である。図3(B)の例では、原稿画像21の外縁(すなわち、輪郭)を示す複数の画素に加えて、オブジェクトObの外縁を示す複数の画素などの、種々の画素が、エッジ画素として、抽出され得る。
CPU810は、抽出された複数のエッジ画素を用いるハフ変換を実行し、原稿画像21の外縁を示す直線の候補を特定する。ハフ変換は、公知の処理であるので、その説明を省略する。直線の候補としては、原稿画像21の外縁を示す直線に加えて、破れ211の縁を示す直線や、オブジェクトObの外縁を示す直線などの、種々の直線が、特定される。
CPU810は、特定された候補直線から、矩形状を形成する4本の候補直線を、原稿画像21の外縁を示す直線である縁直線として、選択する。複数の候補直線から原稿画像21の外縁を示す4本の縁直線を選択する方法は、種々の方法であってよい。例えば、矩形状を形成する4本の候補直線が、4本の縁直線として、選択される。選択される4本の候補直線は、矩形状の4つの辺に、それぞれ対応する。4本の候補直線の複数の組み合わせが矩形状を形成する場合には、最も大きい矩形状を形成する4本の候補直線が、選択されてよい。
選択された4本の縁直線は、縮小画像上の原稿画像21の輪郭を示している。CPU810は、読取画像110内において、縮小画像内の4本の縁直線に対応する4本の直線を(すなわち、読取画像110内において、縮小画像内の4本の縁直線と同じ位置に位置する4本の直線を)、特定する。これにより、矩形原稿領域の4つの辺(例えば、図3(B)の4つの辺411〜414)が、特定される。以上のように、CPU810は、読取画像110内の原稿を含む部分を矩形状の領域に区切って得られる矩形原稿領域210の4つの辺411〜414を特定する。本実施例では、矩形原稿領域210は、原稿を含む最小の矩形領域である。
なお、縁直線の特定は、縮小画像を用いずに、読取画像を用いて行われてもよい。ただし、縮小画像を用いる場合には、縁直線の特定に利用される画素数が少ないので、処理の負担を軽減できる。
S120(図2)では、CPU810は、矩形原稿領域内の領域であって原稿ではない領域の候補である候補領域を特定する。図3(B)の例では、破れ211を示す領域213が、矩形原稿領域210内の領域であって原稿ではない領域である。このような候補領域を特定する方法は、種々の方法であってよい。本実施例では、CPU810は、矩形原稿領域を二値化することによって、候補領域を特定する。具体的には、CPU810は、上記の縮小画像内の矩形原稿領域に対応する領域の複数の画素を、特定輝度範囲内の輝度を有する第1種画素と、特定輝度範囲外の輝度を有する第2種画素と、に分ける二値化処理を実行する。特定輝度範囲は、予め決められた輝度の範囲であり、カバー950(図1)の対向面Bsの色の輝度を含む範囲である。第1種画素は、カバー950の対向面Bsの色に類似する色を示している。
CPU810は、縮小画像内の第1種画素が連続する領域のうち、縁直線に接触する領域を、候補領域として選択する。原稿内のオブジェクトがカバー950の対向面Bsの色に類似する色の部分を含む場合がある。この場合、オブジェクトのその部分も、第1種画素によって示される。通常は、原稿内のオブジェクトは、原稿の外縁よりも内側に配置されている。従って、第1種画素が連続する領域のうち縁直線に接触する領域は、破れ211の領域213のように、原稿のうちの欠落した部分を示す可能性が高い。
特定された候補領域は、縮小画像上の領域である。CPU810は、読取画像110内において、縮小画像内の候補領域に対応する領域を(すなわち、読取画像110内において、縮小画像内の候補領域と同じ位置に位置する領域を)、特定する。これにより、矩形原稿領域内の候補領域が、特定される。
図3(C)には、矩形原稿領域210が示されている。図中では、特定された候補領域が、ハッチングで示されている。図示するように、破れ211を示す領域213が、候補領域として特定されている。なお、原稿には、複数の破れが形成され得る。従って、複数の破れに対応する複数の候補領域が、特定され得る。また、原稿に破れが形成されていない場合、特定される候補領域の総数は、ゼロであり得る。
なお、候補領域の特定は、縮小画像を用いずに、読取画像を用いて行われてもよい。ただし、縮小画像を用いる場合には、候補領域の特定に利用される画素数が少ないので、処理の負担を軽減できる。
S130(図2)では、CPU810は、候補領域が補修の対象であるか否かを判断する。CPU810は、候補領域に接する辺(具体的には、矩形原稿領域の辺)からの候補領域の長さが第1閾値以上である場合に、候補領域が補修の対象ではないと判断する。
図4は、候補領域の判断の処理の例を示すフローチャートである。S200では、CPU810は、S120(図2)で特定された候補領域のうち、図4の処理において未処理の1つの候補領域を、判断対象の候補領域として選択する(注目候補領域と呼ぶ)。S210では、CPU810は、注目候補領域の長さ(具体的には、注目候補領域に接する辺からの、その辺に垂直な方向の長さ)が、第1閾値Th1以上であるか否かを判断する。本実施例では、第1閾値Th1は、予め決められており、ゼロよりも大きい。図3(D)には、読取画像110の処理例が示されている。図中の長さL11は、候補領域213の辺413からの長さである。以下、長さL11が、第1閾値Th1未満であることとして、説明を行う。
注目候補領域の長さが第1閾値Th1未満である場合(S210:No)、S220で、CPU810は、注目候補領域を補修の対象として、選択する。すなわち、CPU810は、注目候補領域を補修すべきと判断する。図3(D)の候補領域213は、補修すべきと判断される。そして、CPU810は、S240へ移行する。
注目候補領域の長さが第1閾値Th1以上である場合(S210:Yes)、S230で、CPU810は、注目候補領域を補修の対象から除く。すなわち、CPU810は、注目候補領域を補修すべきではないと判断する。そして、CPU810は、S240へ移行する。
このように、候補領域の長さが第1閾値Th1以上である場合に、候補領域を補修すべきではないと判断する理由は、長い候補領域の色が後述する補修処理で修正される場合に、色が修正された領域が不自然に見える可能性があるからである。
S240では、CPU810は、全ての候補領域の処理が完了したか否かを判断する。未処理の候補領域が残っている場合(S240:No)、CPU810は、S200へ移行して、未処理の候補領域の処理を行う。全ての候補領域の処理が完了した場合(S240:Yes)、CPU810は、図4の処理(ひいては、S130(図2))を終了する。
S135(図2)では、CPU810は、部分余白領域を特定する。図3(D)には、特定される部分余白領域の例が示されている(部分余白領域511〜514)。上述したように、S100では、ユーザによって、矩形状の原稿の四方のそれぞれの余白の幅が指定される。CPU810は、矩形原稿領域210(図3(D))の辺411〜414の外側に接触する、指定された幅W21〜S24の、部分余白領域511〜514を特定する。
具体的には、CPU810は、矩形原稿領域210の4個の辺411〜414から、ユーザによって指定された幅W21〜W24だけ外側に位置する4個の辺411x〜414xで構成される矩形輪郭111sを特定する。外側の辺411x〜414xと、内側の辺411〜414とは、それぞれ、平行である。そして、外側の辺411x〜414xと内側の辺411〜414との間の距離は、それぞれ、ユーザによって指定された幅W21〜W24である。そして、CPU810は、矩形輪郭111sと、矩形原稿領域210の輪郭410と、の間の領域510を、4個の辺411〜414にそれぞれ接する4個の部分余白領域511〜514に区分する。部分余白領域511〜514は、台形状の領域である。部分余白領域511〜514の上底と下底とは、内側の辺411〜414と、外側の辺411x〜414xとである。
例えば、矩形原稿領域210の左側の辺411に接する部分余白領域511の上底と下底とは、内側の辺411と、辺411から幅W21だけ外側に位置する外側の辺411xと、である(辺411、411xは、平行であり、辺411、411xの間の距離は、幅W21である)。
読取画像110のうち、外側の辺411x〜414xで囲まれる領域111、すなわち、矩形原稿領域210と4個の部分余白領域511〜514とで構成される領域111は、後述するように、出力画像に含まれる領域である(出力領域111と呼ぶ)。
S140(図2)では、CPU810は、部分余白領域が補修の対象であるか否かを仮に判断する。S140では、各部分余白領域の仮の判断が、他の部分余白領域の判断とは独立に、行われる。本実施例では、CPU810は、部分余白領域の幅が第2閾値以上である場合と、部分余白領域に補修の対象ではない候補領域が接触している場合とに、部分余白領域が補修の対象ではないと判断する。他の場合には、部分余白領域が補修の対象であると判断される。図3(D)の例では、部分余白領域511〜514の幅は、それぞれ、幅W21〜W24である。これらの幅W21〜W24が、ゼロよりも大きく、かつ、第2閾値未満である。そして、部分余白領域511〜514には、補修の対象ではない候補領域は、接触していない。従って、部分余白領域511〜514は、それぞれ、補修の対象であると判断される。なお、S140の処理の詳細については、後述する。
S150(図2)では、CPU810は、部分余白領域が補修の対象であるか否かを最終的に判断する。S150では、各部分余白領域の最終的な判断結果が、他の部分余白領域の判断結果を考慮して、変更され得る。CPU810は、少なくとも1つの部分余白領域とゼロ以上の候補領域とで構成される連続な領域に、補修すべきでないと仮に判断される領域が含まれる場合に、その連続な領域の全体を、補修すべきではないと判断する。図3(D)の例では、部分余白領域511〜514と候補領域213とは、連続な領域を形成する。S130では、候補領域213は、補修の対象であると判断され、S140では、部分余白領域511〜514の全てが、補修の対象であると、判断される。従って、S150では、部分余白領域511〜514と候補領域213とは、補修の対象であると最終的に判断される。なお、S150の処理の詳細については、後述する。
S160(図2)では、CPU810は、補修対象の領域の補修処理を実行する。図5は、補修処理の例を示すフローチャートである。S500では、CPU810は、S135(図2)で特定された部分余白領域のうち、図5の処理において未処理の1つの部分余白領域を、処理対象の部分余白領域として選択する(注目部分余白領域と呼ぶ)。S510では、CPU810は、注目部分余白領域が、補修の対象であるか否かを判断する。
注目部分余白領域が補修の対象である場合(S510:Yes)、S520で、CPU810は、注目部分余白領域を補修する。具体的には、注目部分余白領域の色が、修正される。本実施例では、CPU810は、注目部分余白領域の全ての画素の色値を、原稿画像21(図3(A))の背景Bgを示す色値に、修正する。背景Bgの色値の特定方法は、種々の方法であってよい。例えば、矩形原稿領域210内の複数の画素の各色成分のヒストグラムのそれぞれの最頻値が、背景Bgの色を示す値として、採用されてよい。また、最頻値は、矩形原稿領域210から候補領域(例えば、図3(C)の候補領域213)を除いた残りの領域の縁部分の複数の画素を用いて、特定されてよい。
図3(E)は、補修処理によって得られる画像112の例を示している。この画像112は、図3(D)の出力領域111の画像に補修処理を行うことによって得られる画像である(出力画像112とも呼ぶ)。領域210x、511x〜514xは、図3(D)の領域210、511〜514に補修処理を行って得られる画像を、それぞれ示している。部分余白領域513(図3(D))が注目部分余白領域である場合、注目部分余白領域513の複数の画素の色は、背景Bgの色に修正される。補修済の画像112(図3(E))において、矩形原稿領域210xの背景Bgと部分余白領域513xとの間の色の差が小さくなる。この結果、領域210x、513xの境界(ここでは、辺413)は、目立たなくなる。
S530(図5)では、CPU810は、注目部分余白領域に接する補修の対象の候補領域を補修する。具体的には、補修の対象の候補領域の色が、修正される。本実施例では、CPU810は、補修対象の候補領域の全ての画素の色を、原稿画像21(図3(A))の背景Bgの色に、修正する。背景Bgの色は、S520で特定された色と、同じである。部分余白領域513(図3(D))が注目部分余白領域である場合、補修の対象である候補領域213の複数の画素の色は、背景Bgの色に修正される。補修済の画像112(図3(E))において、候補領域213xは、候補領域213(図3(D))の補修済の画像を示している。補修処理によって、矩形原稿領域210xの背景Bgと候補領域213xとの間の色の差が小さくなる。この結果、領域210xの背景Bgと候補領域213xとの境界は、目立たなくなる。
なお、後述するように、部分余白領域の幅は、ゼロであり得る。本実施例では、部分余白領域の幅がゼロである場合であっても、図2のS140、S150の処理によって、部分余白領域の色を修正すべきと判断され得る。そして、図5の処理では、注目部分余白領域の幅がゼロである場合であっても、注目部分余白領域の色を修正すべきと判断されている場合には、S510の判断結果がYesであり、S530で、注目部分余白領域に接する補修対象の候補領域の色が修正される。なお、注目部分余白領域の幅がゼロである場合、注目部分余白領域は、実際には、形成されない。従って、S520での色の修正は、省略される。
注目候補領域と候補領域との補修(S520、S530)の後、CPU810は、S540へ移行する。注目部分余白領域が補修の対象ではない場合(S510:No)、CPU810は、S520、S530をスキップして、S540へ移行する。S540では、CPU810は、全ての部分余白領域の処理が完了したか否かを判断する。未処理の部分余白領域が残っている場合(S540:No)、CPU810は、S500へ移行して、未処理の部分余白領域の処理を行う。図3(D)の例では、部分余白領域511〜514の全てが、補修の対象である。この結果、補修済の画像112(図3(E))において、部分余白領域511x〜514xの全てが、補修される。これにより、矩形原稿領域210xの背景Bgと部分余白領域511x〜514xとの間の色の差が小さくなる。この結果、矩形原稿領域210xと部分余白領域511x〜514xとの境界(ここでは、辺411〜414)は、目立たなくなる。
全ての部分余白領域の処理が完了した場合(図5:S540:Yes)、CPU810は、図5の処理(ひいては、S160(図2))を、終了する。
S170(図2)では、CPU810は、補修済みの画像(例えば、図3(E)の出力画像112)を示す出力画像データを生成する。出力画像データのデータ形式は、任意のであってよい。例えば、JPEG形式の出力画像データが、生成されてよい。
S180では、CPU810は、出力画像データを、出力する。出力先の装置は、任意の装置であってよい。例えば、出力先は、画像処理装置800に設けられた内部の記憶装置815(例えば、不揮発性記憶装置830)であってよい。この場合、CPU810は、出力画像データを、不揮発性記憶装置830に格納する。ユーザは、不揮発性記憶装置830に格納された出力画像データを、任意の用途(例えば、印刷や表示など)に、利用してよい。また、出力先の装置は、画像処理装置800に接続された、図示しない外部の記憶装置であってよい(例えば、USBメモリ)。この場合、CPU810は、外部の記憶装置に、出力画像データを格納する。また、出力先の装置は、画像処理装置800に接続された、図示しないプリンタであってもよい。この場合、CPU810は、出力画像データをプリンタに出力することによって、プリンタに出力画像(すなわち、補修済の画像)を、印刷させてよい。S180の完了に応じて、CPU810は、図2の処理を終了する。
A−3.部分余白領域の仮の判断処理:
図6は、部分余白領域の仮の判断の処理(図2:S140)の例を示すフローチャートである。S300では、CPU810は、S135(図2)で特定された部分余白領域のうち、図6の処理において未処理の1つの部分余白領域を、判断対象の部分余白領域として選択する(注目部分余白領域と呼ぶ)。S310では、CPU810は、注目部分余白領域を、補修の対象として、仮に選択する。S320では、CPU810は、注目部分余白領域の幅(具体的には、矩形原稿領域の4個の辺のうちの注目部分余白領域に接する辺からの、その辺に垂直な方向の幅)が、第2閾値Th2以上であるか否かを判断する。本実施例では、第2閾値Th2は、予め決められており、ゼロよりも大きい。図3(D)の例では、部分余白領域511〜514の幅は、それぞれ、幅W21〜W24である。以下、これらの幅W21〜W24が、ゼロよりも大きく、かつ、閾値Th2未満であることとして、説明を行う。
注目部分余白領域の幅が第2閾値Th2以上である場合(S320:Yes)、S330で、CPU810は、注目部分余白領域を、補修の対象から除く。すなわち、CPU810は、注目部分余白領域を補修すべきではないと、仮に判断する。そして、CPU810は、S340へ移行する。
このように、部分余白領域の幅が第2閾値Th2以上である場合に、部分余白領域を補修すべきではないと仮に判断される。この理由は、以下の通りである。大きな部分余白領域の色が修正される場合、色が修正される領域が大きいので、色が修正された領域が不自然に見える可能性がある。本実施例では、部分余白領域の幅が第2閾値Th2以上である場合に、部分余白領域を補修すべきではないと仮に判断されるので、色が修正された領域が不自然に見えることを抑制できる。
注目部分余白領域の幅が第2閾値Th2未満である場合(S320:No)、CPU810は、S350〜S390の処理を実行する。これにより、注目部分余白領域に、補修の対象ではない非対象の候補領域が接している場合に、注目部分余白領域が、補修の対象から除かれる。
具体的には、S350で、CPU810は、注目部分余白領域の幅がゼロよりも大きいか否かを判断する。上述したように、ユーザによって指定される余白の幅がゼロである場合、注目部分余白領域の幅は、ゼロである。注目部分余白領域の幅がゼロである場合(S350)、CPU810は、S355〜S390をスキップし、注目部分余白領域を補修の対象から除かずに、S340へ移行する。
注目部分余白領域の幅がゼロよりも大きい場合(S350:Yes)、S355で、CPU810は、注目部分余白領域に接する候補領域が存在するか否かを判断する。注目部分余白領域に接する候補領域が存在しない場合(S355:No)、CPU810は、S360〜S390をスキップし、注目部分余白領域を補修の対象から除かずに、S340へ移行する。
例えば、図3(D)の部分余白領域511、512、514には、候補領域は、接していない。従って、これらの部分余白領域511、512、514が注目部分余白領域である場合、S355の判断結果は、Noである。この結果、部分余白領域511、512、514は、補修の対象から除かれずに、補修すべきであるという仮の判断(S310)は、維持される。
注目部分余白領域に接する候補領域が存在する場合(S355:Yes)、S360で、CPU810は、注目部分余白領域に接する候補領域から、未判断の1つの候補領域を、処理対象の候補領域として選択する(注目候補領域と呼ぶ)。S370では、CPU810は、注目候補領域が、補修の非対象であるか否かを判断する。注目候補領域が補修の非対象である場合、すなわち、注目候補領域が補修の対象ではない場合(S370:Yes)、S380で、CPU810は、注目部分余白領域を、補修の対象から除く。すなわち、CPU810は、注目部分余白領域を補修すべきではないと、判断する。そして、CPU810は、S390へ移行する。
注目候補領域が補修の対象である場合、すなわち、注目候補領域が補修の対象である場合(S370:No)、CPU810は、S380をスキップして、S390へ移行する。
例えば、図3(D)の部分余白領域513が注目部分余白領域である場合、候補領域213が、注目候補領域であり得る。候補領域213は、補修の対象であるので、S370の判断結果は、Noである。この結果、部分余白領域513は、補修の対象から除かれずに、補修すべきであるという仮の判断(S310)は、維持される。
S390では、CPU810は、注目部分余白領域に接する全ての候補領域の処理が完了したか否かを判断する。未処理の候補領域が残っている場合(S390:No)、CPU810は、S360へ移行して、未処理の候補領域の処理を行う。全ての候補領域の処理が完了した場合(S390:Yes)、CPU810は、S340へ移行する。
S340では、CPU810は、全ての部分余白領域の仮の判断の処理が完了したか否かを判断する。未処理の部分余白領域が残っている場合(S340:No)、CPU810は、S300へ移行して、未処理の部分余白領域の処理を行う。全ての部分余白領域の処理が完了した場合(S340:Yes)、CPU810は、図6の処理(ひいては、S140(図2))を、終了する。
A−4.部分余白領域の最終的な判断処理:
図7は、部分余白領域の最終的な判断の処理(図2:S150)の例を示すフローチャートである。S400では、CPU810は、S135(図2)で特定された部分余白領域のうち、図7の処理において未処理の1つの部分余白領域を、判断対象の部分余白領域として選択する(注目部分余白領域と呼ぶ)。S410では、CPU810は、注目部分余白領域のS140(図2)での仮の判断結果が、「補修すべきである(すなわち、補修の対象である)」か否かを判断する。注目部分余白領域が、補修の対象ではない場合(S410:No)、CPU810は、注目部分余白領域の判断結果(補修の対象ではない)を変更せずに、S480へ移行する。
注目部分余白領域が、補修の対象である場合(S410:Yes)、S420で、CPU810は、注目部分余白領域の幅がゼロよりも大きいか否かを判断する。注目部分余白領域の幅がゼロである場合(S420:No)、CPU810は、注目部分余白領域の判断結果(補修の対象である)を変更せずに維持し、そして、S480へ移行する。
注目部分余白領域の幅がゼロよりも大きい場合(S420:Yes)、S430で、CPU810は、注目部分余白領域の一方の隣の部分余白領域が、「幅がゼロより大きい」かつ「補修の対象ではない(補修の非対象である)」という条件を満たすか否かを判断する。S430の判断結果がNoである場合、S440で、CPU810は、注目部分余白領域の他方の隣の部分余白領域が、「幅がゼロより大きい」かつ「補修の対象ではない(補修の非対象である)」という条件を満たすか否かを判断する。
例えば、図3(D)の部分余白領域513が注目部分余白領域である場合、S430では、注目部分余白領域513の時計回り方向の隣の部分余白領域514に関する判断が行われ、S440では、注目部分余白領域513の反時計回り方向の隣の部分余白領域512に関する判断が行われる。部分余白領域514の幅W24は、ゼロよりも大きく、かつ、部分余白領域514は、補修の対象であるので、S430の判断結果は、Noである。また、部分余白領域512の幅W22は、ゼロよりも大きく、かつ、部分余白領域512は、補修の対象であるので、S440の判断結果は、Noである。
具体的な図の例については後述するが、両隣の部分余白領域のうちの少なくとも1個の部分余白領域に関して、部分余白領域の幅がゼロより大きく、かつ、部分余白領域が補修の対象ではない場合(S430:Yes、または、S440:Yes)、S470で、CPU810は、注目部分余白領域を補修の対象から除き、S480へ移行する。このように、幅がゼロよりも大きく、かつ、補修の対象ではない部分余白領域に隣接する注目部分余白領域は、補修の対象から除かれる。この理由は、補修の対象である注目部分余白領域の隣に補修の対象ではない部分余白領域が配置される場合、それらの領域が接する境界で、色の差が目立ち易いからである。なお、隣の部分余白領域の幅がゼロである場合には、出力画像において隣の部分余白領域は実際には形成されないので、色の差を目立たせるような境界は、形成されない。そこで、本実施例では、隣の部分余白領域の幅がゼロである場合には、S430、S440の判断結果がNoであることとした。
S430、S440の判断結果がNoである場合、S450で、CPU810は、注目部分余白領域の向かい側の部分余白領域(対向部分余白領域と呼ぶ)が、「幅がゼロより大きい」かつ「補修の対象ではない(補修の非対象である)」という条件を満たすか否かを判断する。S450の判断結果がNoである場合、CPU810は、S480へ移行し、注目部分余白領域を補修の対象から除かずに、補修すべきであるという仮の判断を維持する。例えば、図3(D)の部分余白領域513が注目部分余白領域である場合、注目部分余白領域513の向かい側の対向部分余白領域511は、補修の対象であり、その幅W21は、ゼロより大きい。従って、S450の判断結果は、Noである。S450の判断結果がNoである場合、注目部分余白領域と対向部分余白領域との両方が、補修の対象であり得、また、対向部分余白領域の幅がゼロであり得る。この場合、注目部分余白領域と対向部分余白領域との間で、補修処理後の色の差が目立つことは、抑制される。例えば、図3(D)の部分余白領域513が注目部分余白領域である場合、注目部分余白領域513と対向部分余白領域511との両方が、補修の対象である(S450:No)。注目部分余白領域と対向部分余白領域との両方が補修される場合、これらの領域の間で、補修処理後の色の差が目立つことは、抑制される。そこで、CPU810は、注目部分余白領域を補修の対象から除かずに、補修すべきであるという仮の判断を維持する。
S450の判断結果がYesである場合、S460で、CPU810は、注目部分余白領域の少なくとも1つの隣の部分余白領域の幅が、ゼロよりも大きいか否かを判断する。
S460の判断結果がYesである場合、CPU810は、S470へ移行し、注目部分余白領域を補修の対象から除き、S480へ移行する。具体的な図の例については後述するが、S450、S460の判断結果がYesである場合、補修の対象である注目部分余白領域と、補修の対象ではない対向部分余白領域とが、ゼロより大きい幅を有する隣の部分余白領域を介して、連続する。この結果、連続する注目部分余白領域と対向部分余白領域との間で、補修処理後の色の差が、大きくなり得る。そこで、本実施例では、注目部分余白領域は、対向部分余白領域に合わせて、補修の対象から除かれる。
S460の判断結果がNoである場合、CPU810は、S480へ移行し、注目部分余白領域を補修の対象から除かずに、補修すべきであるという仮の判断を維持する。S460の判断結果がNoである場合、注目部分余白領域と対向部分余白領域とは、連続ではない。従って、注目部分余白領域と対向部分余白領域との間で、補修処理後の色の差が目立つことは、抑制される。そこで、そこで、CPU810は、注目部分余白領域を補修の対象から除かずに、補修すべきであるという仮の判断を維持する。
S480では、CPU810は、全ての部分余白領域の判断の処理が完了したか否かを判断する。未処理の部分余白領域が残っている場合(S480:No)、CPU810は、S400へ移行して、未処理の部分余白領域の処理を行う。全ての部分余白領域の処理が完了した場合(S480:Yes)、CPU810は、図7の処理(ひいては、S150(図2))を、終了する。
以上のように、図2のS130、S140、S150の処理において、注目部分余白領域の色を修正すべきと判断されるための条件は、注目部分余白領域に連続する領域を構成する部分余白領域と候補領域とが、色を修正すべきではないと判断される領域を含まないことを、含んでいる。従って、色が修正された領域に色が修正されない領域が接することが抑制される。この結果、色が修正された領域と色が修正されない領域との間の色の差が目立つことが、抑制される。
A−5.別の画像の処理例:
図8は、別の画像の処理例を示す説明図である。図8(A)〜図8(E)の説明図は、図3(A)〜図3(E)の説明図に、それぞれ対応している。図8(A)には、読取画像120が示されている。図3(A)の読取画像110との差異は、破れ221が長い点だけである。原稿画像22と外側画像32とのうち破れ221以外の部分は、図3(A)の原稿画像21と外側画像32との対応する部分と同じである。
図8(B)には、図2のS110で特定される辺421〜424が、示されている。図2のS110では、図3(B)の辺411〜414と同様に、原稿画像22の輪郭を示す辺421〜424が、特定される。矩形原稿領域220は、辺421〜424によって形成される輪郭420に囲まれる矩形領域である。矩形原稿領域220の外側の領域である余白領域320は、原稿画像22の外側の余白を示している。破れ221を示す領域223は、矩形原稿領域220に含まれている。
図8(C)には、図2のS120で特定される候補領域が示されている。図示するように、破れ221を示す領域223が、候補領域として特定される。候補領域223は、辺423に接する領域である。
図8(D)には、読取画像120の処理例が示されている。図中の長さL21は、候補領域223の、候補領域223に接する辺423からの長さ(ここでは、辺423に垂直な方向の長さ)である。図2のS130(ひいては、図4の処理)では、この長さL21に応じて、候補領域223を補修すべきか否かが、判断される。本実施例では、長さL21は、第1閾値Th1以上であることとする。この場合、図4のS210の判断結果がYesであるので、候補領域223は、補修の対象から除かれる(S230)。
また、図8(D)には、図2のS135で特定される部分余白領域521〜524が、示されている。本実施例では、ユーザによって指定される幅W21〜W24は、図3(D)の幅W21〜W24と、それぞれ同じである。そして、図3(D)の実施例と同様に、矩形原稿領域220の4個の辺421〜424から、ユーザによって指定された幅W21〜W24だけ外側に位置する4個の辺421x〜424xで構成される矩形輪郭121sが、特定される。そして、矩形輪郭121sと矩形原稿領域220の輪郭420との間の領域520が、4個の辺421〜424にそれぞれ接する4個の部分余白領域521〜524に区分される。部分余白領域521〜524は、内側の辺421〜424と外側の辺421x〜424xとを上底および下底として有する台形の領域である。矩形原稿領域220と4個の部分余白領域521〜524とで構成される領域121は、出力画像に含まれる出力領域である(出力領域121と呼ぶ)。
図2のS140(ひいては、図6の処理)では、部分余白領域521〜524(図8(D))を補修すべきか否かの仮の判断が行われる。部分余白領域521〜524の幅W21〜W24は、第2閾値Th2未満である(図6:S320)。従って、これらの部分余白領域521〜524は、この段階では、補修対象から除かれない(すなわち、補修すべきであると仮に判断される(S320:No))。そして、左側、上側、下側の3個の部分余白領域521、522、524には、候補領域は接していない(S355:No)。従って、3個の部分余白領域521、522、524に関しては、補修すべきであるという仮の判断結果が、維持される。右側の部分余白領域523には、候補領域223が接している(S355:Yes)。この候補領域223は、補修の非対象である(S370:Yes)。従って、部分余白領域523は、補修の対象から除かれる(S380)。
図2のS150(ひいては、図7の処理)では、部分余白領域521〜524(図8(D))を補修すべきか否かの最終的な判断が行われる。左側の部分余白領域521が注目部分余白領域である場合、注目部分余白領域521は、補修の対象であり(S410:Yes)、幅W21は、ゼロよりも大きい(S420:Yes)。両隣の部分余白領域522、524は、補修の対象である(S430:No、S440:No)。対向部分余白領域523は、補修の非対象であり、その幅W23は、ゼロよりも大きい(S450:Yes)。隣の部分余白領域522、524の幅W22、W24は、ゼロよりも大きい(S460:Yes)。これらの結果、部分余白領域521は、補修の対象から除かれる(S470)。
上側の部分余白領域522が注目部分余白領域である場合、注目部分余白領域522は、補修の対象であり(S410:Yes)、幅W22は、ゼロよりも大きい(S420:Yes)。隣の部分余白領域523は、補修の非対象であり、幅W23はゼロよりも大きい(S430:Yes)。これらの結果、部分余白領域522は、補修の対象から除かれる(S470)。
下側の部分余白領域524が注目部分余白領域である場合、上側の部分余白領域522が注目部分余白領域である場合と同様に、処理が進行する。そして、部分余白領域524は、補修の対象から除かれる(S470)。
右側の部分余白領域523が注目部分余白領域である場合、部分余白領域523は、補修の対象ではない(S410:No)。従って、部分余白領域523を補修すべきではない、という仮の判断は、維持される。
このように、図2のS130、S140、S150によって、部分余白領域521〜524と候補領域223との全てが、補修すべきではないと判断される。そして、図2のS160(ひいては、図5の処理)では、これらの判断結果に従って、補修処理が行われる。
図8(E)は、補修処理によって得られる出力画像122の例を示している。この画像122は、図8(D)の出力領域121の画像に補修処理を行うことによって得られる画像である。上述したように、部分余白領域521〜524と候補領域223との全てが、補修すべきではないと判断されている。従って、これらの領域521〜524、223の画像は、補修されずに、そのまま維持される(図5:S510:No)。
このように、図4の処理で、候補領域223の長さL21が第1閾値Th1以上である場合には、候補領域223を補修すべきではないと判断される(S210:Yes)。仮に、大きな候補領域の色が補修処理によって修正される場合、色が修正される領域が大きいので、色が修正された領域が不自然に見える可能性がある。上記構成によれば、大きな候補領域に関しては、色を修正すべきではないと判断されるので、色が修正された領域が不自然に見えることを抑制できる。また、候補領域が大きい場合、候補領域は、意図しない破れではなく、意図的に切り取られた部分を示す可能性が高い。このような意図的に形成された部分の色の修正が抑制されるので、出力画像が不自然に見えることを抑制できる。
また、図6の処理で、右側の部分余白領域523が注目部分余白領域である場合、S320では、注目部分余白領域523は、補修の対象であると仮に判断される。すなわち、注目部分余白領域523は、補修すべきではないと仮に判断するための条件である非対象仮条件(S320)を、満たしていない。この場合、S355〜S390では、注目部分余白領域523に接する候補領域であるゼロ個以上の隣接候補領域が、補修の対象ではない非対象候補領域を含むか否かが判断される。図8(D)の例では、注目部分余白領域523に接する候補領域223は、非対象候補領域である。このように、隣接候補領域が非対象候補領域を含む場合に(S370:Yes)、注目部分余白領域523は、補修の対象から除かれる(S380)。これにより、色が修正された部分余白領域に色が修正されない候補領域が接することが抑制される。この結果、色が修正されない候補領域が目立つことが、抑制される。
図8(F)は、仮に、候補領域223が補修されずに、部分余白領域521〜524が補修される場合に生成される画像122xの例を示している。図示するように、矩形原稿領域220の外側には、色が修正された部分余白領域521x〜524xが、配置されている。特に、候補領域223には、補修済の部分余白領域523xが、接している。これにより、画像122xにおいて、色が修正されていない候補領域223は、矩形原稿領域220の背景Bgと部分余白領域523xとに囲まれた孤島のように、示される。この結果、候補領域223は、意図せずに、目立ち得る。本実施例では、このように候補領域223が意図せずに目立つことが、抑制される。
また、図6の処理で、左側と上側と下側の部分余白領域521、522、524が注目部分余白領域である場合、注目部分余白領域521、522、524は、補修の対象であると仮に判断される(S310、S320:No、S355:No)。そして、図7の処理で、上側と下側の部分余白領域522、524が注目部分余白領域である場合、S430、S440では、注目部分余白領域522、524に接する隣の部分余白領域が、補修の非対象であるか否か、すなわち、補修すべきではないと判断されるか否かが、判断される。図8(D)の例では、隣の部分余白領域523は、補修の非対象であり、その幅W23は、ゼロより大きい。従って、S430、S440の少なくとも一方の判断結果が、Yesである。この場合、注目部分余白領域522、524は、補修の対象から除かれる(S470)。
また、図7の処理で、左の部分余白領域521が注目部分余白領域である場合、S430、S440では、注目部分余白領域521に接する隣の部分余白領域522、524が、補修の非対象であるか否か、すなわち、補修すべきではないと判断されるか否かが、判断される。部分余白領域522、524は、図2のS140で補修の対象であると仮に判断されているので、S430、S440の判断結果は、Noである。この場合、S450、S460では、隣の部分余白領域522、524を介して注目部分余白領域521に連続な対向部分余白領域523が、補修の非対象であるか否か、すなわち、補修すべきではないと判断されるか否かが、判断される。図8(D)の例では、対向部分余白領域523は補修の非対象である(S450:Yes)。そして、隣の部分余白領域522、524の幅W22、W24は、ゼロよりも大きい(S460:Yes)。この場合、注目部分余白領域521は、補修の対象から除かれる(S470)
このように、注目部分余白領域に接する隣の部分余白領域と、隣の部分余白領域に接する対向部分余白領域と、の少なくとも一方が、色を修正すべきではないと判断される場合に、注目部分余白領域の色を修正すべきではないと、判断される。このように、注目部分余白領域に連続する他の部分余白領域の色を修正すべきではないと判断される場合に、注目部分余白領域の色を修正すべきでは無いと判断されるので、色が修正される部分余白領域と色が修正されない部分余白領域とが連続することが抑制される。この結果、色が修正される部分余白領域と色が修正されない部分余白領域とが連続することに起因して色の違いが目立つことが、抑制される。
以上のように、図2のS130、S140、S150の処理では、1以上の部分余白領域と候補領域とのうちの注目部分余白領域に連続する領域を構成する領域であって、部分余白領域と候補領域とのうちの少なくとも1つの領域に関して、色を修正すべきではないと判断される場合に、注目部分余白領域の色を修正すべきではないと判断される。従って、色が修正された領域に色が修正されない領域が隣接することが抑制される。この結果、色が修正された領域と色が修正されない領域との間の色の差が目立つことが、抑制される。
A−6.別の画像の処理例:
図9は、別の画像の処理例を示す説明図である。図9(A)〜図9(E)の説明図は、図3(A)〜図3(E)の説明図に、それぞれ対応している。図9(A)には、読取画像130が示されている。読取画像130は、原稿を示す原稿画像23と、原稿画像23の外側の画像である外側画像33と、を含む。図3(A)の読取画像110とは異なり、原稿画像23には、2個の破れ231、232が形成されている。また、原稿画像23の幅は、図3(A)の原稿画像21の幅よりも、小さい。
図9(B)には、図2のS110で特定される辺431〜434が、示されている。図2のS110では、図3(B)の辺411〜414と同様に、原稿画像23の輪郭を示す辺431〜434が、特定される。矩形原稿領域230は、辺431〜434によって形成される輪郭430に囲まれる矩形領域である。矩形原稿領域230の外側の領域である余白領域330は、原稿画像23の外側の余白を示している。破れ231、232を示す領域233、234は、矩形原稿領域230に含まれている。
図9(C)には、図2のS120で特定される候補領域が示されている。図示するように、破れ231、232を示す領域233、234が、候補領域として特定される。右側の候補領域233は、右側の辺433に接する領域であり、左側の候補領域234は、左側の辺431に接する領域である。
図9(D)には、読取画像130の処理例が示されている。図中の長さL31は、候補領域233の、候補領域233に接する辺433に垂直な方向の長さである。長さL32は、候補領域234の、候補領域234に接する辺431に垂直な方向の長さである。図2のS130(ひいては、図4の処理)では、この長さL31、L32に応じて、候補領域233、234を補修すべきか否かが、判断される。本実施例では、長さL31、L32は、それぞれ、第1閾値Th1未満であることとする。この場合、図4のS210の判断結果がNoであるので、候補領域233、234は、いずれも、補修の対象として選択される(S220)。
また、図8(D)には、図2のS135で特定される部分余白領域531〜534が、示されている。本実施例では、左側の幅W21は、ゼロより大きく、第2閾値Th2(図6)未満であり、上側と下側の幅W22、W24は、ゼロであり、右側の幅W23は、第2閾値Th2以上である。矩形原稿領域230の4個の辺431〜434から、ユーザによって指定された幅W21〜W24だけ外側に位置する4個の辺431x〜434xで構成される矩形輪郭131sが、特定される。そして、矩形輪郭131sと矩形原稿領域230の輪郭430との間の領域530が、部分余白領域531〜534に区分される。部分余白領域531〜534は、内側の辺431〜434と外側の辺431x〜434xとを上底および下底として有する台形の領域である。なお、上側と下側の辺432x、434xは、元の辺432、434に重なっている。上側と下側の部分余白領域532、534は、幅がゼロの領域である。幅がゼロである領域532、534は、実際には形成されない。従って、左側の部分余白領域531と、右側の部分余白領域533とは、矩形原稿領域230の外側において、連続せずに、互いに離れている。矩形原稿領域230と、ゼロより大きい幅を有する部分余白領域531、533とで構成される領域131は、出力画像に含まれる出力領域である(出力領域131と呼ぶ)。
図2のS140(ひいては、図6の処理)では、部分余白領域531〜534(図9(D))を補修すべきか否かの仮の判断が行われる。
左側の部分余白領域531の幅W21は、第2閾値Th2未満である(図6:S320:No)。従って、部分余白領域531は、この段階では、補修すべきであると仮に判断される。この部分余白領域531に接触する候補領域234は、補修の対象である(S370:No)。従って、部分余白領域531を補修すべきであるという仮の判断は、維持される。
右側の部分余白領域533の幅W23は、第2閾値Th2以上である(S320:Yes)。従って、S330で、部分余白領域533は、補修の対象から除かれる。
上側と下側の部分余白領域532、534の幅W22、W24は、ゼロ、すなわち、第2閾値Th2未満である(S320:No)。従って、部分余白領域532、534は、この段階では、補修すべきであると仮に判断される。また、これらの部分余白領域532、534の幅W22、W24は、ゼロである(S350:No)。従って、部分余白領域532、534を補修すべきであるという仮の判断は、維持される。
図2のS150(ひいては、図7の処理)では、部分余白領域531〜534(図9(D))を補修すべきか否かの最終的な判断が行われる。左側の部分余白領域531が注目部分余白領域である場合、注目部分余白領域531は、補修の対象であり(S410:Yes)、幅W21は、ゼロよりも大きい(S420:Yes)。両隣の部分余白領域522、524に関しては、幅W22、W24がゼロである(S430:No、S440:No)。対向部分余白領域533は、補修の非対象であり、その幅W23は、ゼロよりも大きい(S450:Yes)、隣の部分余白領域532、534の幅W22、W24は、ゼロである(S460:No)。これらの結果、部分余白領域521を補修すべきという仮の判断結果は、維持される。
このように、注目部分余白領域531の対向部分余白領域533が補修の非対象である場合であっても、注目部分余白領域531と対向部分余白領域533が、ゼロより大きい幅の共通の部分余白領域に接していない場合には、注目部分余白領域531を補修すべきという仮の判断結果は、維持される。この理由は、注目部分余白領域531と対向部分余白領域533が、矩形原稿領域230の外側において、連続せずに離れている場合には、注目部分余白領域531と対向部分余白領域533との間の補修処理後の色の差が目立つことが、抑制されるからである。
上側と下側の部分余白領域532、534に関しては、幅W22、W24がゼロであるので(S420:No)、部分余白領域532、534を補修すべきであるという仮の判断は、維持される。右側の部分余白領域533に関しては、部分余白領域533は補修の対象ではないので(S410:No)、部分余白領域533を補修すべきではないという仮の判断結果は、維持される。
図2のS160(ひいては、図5の処理)では、これらの判断結果に従って、補修処理が行われる。
図9(E)は、補修処理によって得られる出力画像132の例を示している。この画像132は、図9(D)の出力領域131の画像に補修処理を行うことによって得られる画像である。領域230x、531x、234xは、図9(D)の領域230x、531x、234xに補修処理を行って得られる画像を、それぞれ示している。
上述したように、左側の部分余白領域531と候補領域234とは、補修すべきと判断されている。従って、部分余白領域531は補修され(S510:Yes、S520)、そして、部分余白領域531に接する候補領域234も、補修される(S530)。補修済の画像132(図9(E))において、矩形原稿領域230xの背景Bgと候補領域234xとの境界と、矩形原稿領域230xの背景Bgと部分余白領域531xとの境界とは、目立たなくなる。
右側の部分余白領域533は、補修すべきでないと判断されている。従って、部分余白領域533は補修されず(図5:S510:No)、そして、部分余白領域533に接する候補領域233も、補修されない。
このように、部分余白領域の幅が第2閾値Th2以上である場合(図6:S320:Yes)、部分余白領域は、補修すべきでないと判断される(図6:S330、図7:S410:No)。従って、ユーザの指示に応じて設けられる大きな部分余白領域は、補修の対象から除かれるので、色が修正された領域が不自然に見えることを抑制できる。
また、図6の処理で、部分余白領域を補修すべきでないと仮に判断される場合(S320:Yes、S330、S370:Yes、S380)、図7の処理では、その部分余白領域に接する候補領域が補修の非対象の候補領域を含むか否かを判断する処理(S355〜S390)が行われずに、部分余白領域を補修すべきでないという仮の判断結果が、最終的な判断結果として採用される(S410:No)。従って、処理速度の低下を抑制しつつ、適切な判断が可能である。
B.変形例:
(1)図4のS210で、候補領域の色を修正すべきではないと判断するための条件は、種々の条件であってよい。この条件は、例えば、候補領域に接する辺に平行な方向の候補領域の長さが、閾値以上であることを、含んでよく、また、候補領域の面積(例えば、画素数)が閾値以上であることを含んでよい。一般的には、候補領域が大きいことを示す種々の条件が、用いられてよい。
(2)図6のS320で、部分余白領域の色を修正すべきではないと仮に判断するための条件は、種々の条件であってよい。この条件は、例えば、部分余白領域の面積(例えば、画素数)が閾値以上であることを含んでよい。一般的には、部分余白領域が大きいことを示す種々の条件が、用いられてよい。
また、図6の処理において、注目部分余白領域の色を修正すべきではないと仮に判断するための条件は、S320、S355、S370を用いる条件、すなわち、「注目部分余白領域の幅が第2閾値Th2以上である(S320:Yes)、または、注目部分余白領域に補修の対象の候補領域が接している(S355:Yes、かつ、S370:Yes)」に代えて、他の種々の条件であってよい。注目部分余白領域の色を修正すべきではないと仮に判断するための条件は、例えば、注目部分余白領域の色と、矩形原稿領域の背景Bgの色と、の間の差が閾値未満であることを含んでもよい。
一般的には、図6の処理では、注目部分余白領域の色を修正すべきか否かは、他の部分余白領域とは独立に、判断されてよい。他の部分余白領域とは独立に行われる判断の結果は、仮の判断結果として、利用されてよい。そして、図7の処理のように、色が修正される部分余白領域と色が修正されない部分余白領域とが、矩形原稿領域の外側で連続しないように、注目部分余白領域の最終的な判断結果を、他の部分余白領域の仮の判断結果を考慮して調整する処理が、行われてよい。
なお、判断結果を調整する処理は、図7の処理に代えて、他の種々の処理であってよい。一般的には、注目部分余白領域の色を修正すべきと判断されるための条件は、1以上の部分余白領域と候補領域とのうちの注目部分余白領域に連続する領域を構成する領域が、色を修正すべきではないと判断される領域を含まないことを、含む種々の条件であってよい。また、注目部分余白領域の色を修正すべきではないと判断するための条件は、1以上の部分余白領域と前記候補領域とのうちの注目部分余白領域に連続する領域を構成する領域であって、部分余白領域と候補領域とのうちの少なくとも1つの領域に関して、色を修正すべきではないと判断されることを含む、種々の条件であってよい。
なお、図9(D)に示すように、部分余白領域の幅は、ゼロであり得る。このように幅がゼロである部分余白領域は、出力画像内に実際に形成される領域ではなく、仮想的な領域である。従って、隣り合う2つの部分余白領域の少なくとも一方の幅がゼロである場合、それら2つの部分余白領域は、連続な領域を形成していない、ということができる。
(3)部分余白領域の幅がゼロより大きい場合であっても、幅が小さい場合には、ユーザが目視で部分余白領域を認識することが難しい場合がある。例えば、出力画像の全体の大きさに対する部分余白領域の幅が小さい場合、出力画像の全体を観察するユーザは、小さい幅の部分余白領域を認識できない場合がある。この場合、部分余白領域に他の小さい幅の部分余白領域が接している場合であっても、ユーザにとっては、部分余白領域に小さい幅の部分余白領域が連続していることを認識することが、困難であり得る。
このように小さい幅の部分余白領域を介して2つの大きな部分余白領域が接続されている場合、ユーザは、2つの大きな部分余白領域が離間しているように、認識し得る。従って、図6、図7の処理は、小さい幅の部分余白領域を、他の部分余白領域と連続な領域を形成しない領域として、扱ってよい。例えば、図6のS350、図7のS420、S430、S440、S450、S460の条件において、「幅がゼロより大きい」は、「幅が基準幅よりも大きい」に置換されてよい。ここで、基準幅は、ゼロであってよく、ゼロより大きい値であってよい。基準幅は、ユーザが目視で部分余白領域を認識し得るように、決定されてよい。例えば、基準幅は、出力画像の縦と横とのうちの短い方の長さの1/20以下であることが好ましく、1/50以下であることが特に好ましく、1/100以下であることが更に好ましく、ゼロであることが最も好ましい。
いずれの場合も、図2のS130、S140、S150の処理において、注目部分余白領域の色を修正すべきと判断するための条件は、1以上の部分余白領域と候補領域とのうちの注目部分余白領域と予め決められた連続関係にある領域を構成する領域が、色を修正すべきではないと判断される領域を含まないこと、を含む種々の条件であってよい。ここで、「予め決められた連続関係」は、以下のような関係である。すなわち、複数の部分余白領域が順番に接続され、そして、全ての部分余白領域のそれぞれの幅が基準幅よりも大きい場合に、複数の部分余白領域は、予め決められた連続関係にある。また、部分余白領域に候補領域が接しており、その部分余白領域の幅が基準幅よりも大きい場合に、部分余白領域と候補領域とは、予め決められた連続関係にある。そして、予め決められた連続関係にある複数の部分余白領域のうちの1つの部分余白領域に候補領域が接している場合には、複数の部分余白領域と候補領域とは、予め決められた連続関係にある。
また、図2のS130、S140、S150の処理において、1以上の部分余白領域と候補領域とのうちの注目部分余白領域と予め決められた連続関係にある領域を構成する領域であって、部分余白領域と候補領域とのうちの少なくとも1つの領域に関して、色を修正すべきではないと判断される場合に、注目部分余白領域の色を修正すべきではないと判断されてよい。
(4)矩形原稿領域内の領域であって原稿ではない領域の候補である候補領域を特定する方法は、上記実施例の方法に代えて、原稿ではない領域を特定可能な他の種々の方法であってよい。例えば、輝度以外の他の色成分が、利用されてよい(色相、彩度など)。一般的には、1以上色成分のそれぞれの範囲であって原稿の外側の余白を示す色の範囲である余白色範囲を用いて、候補領域が特定されてよい。注目画素の1以上の色成分のそれぞれの色値が、対応する色成分の余白色範囲内にある場合に、注目画素は、原稿を示さない画素に分類される。注目画素の少なくとも1つの色成分の色値が、その色成分の余白色範囲外にある場合に、注目画素は、原稿を示す画素に分類される。そして、原稿を示さない複数の画素が連続する領域であって、矩形原稿領域の辺(すなわち、外縁)に接する領域が、候補領域として特定されてよい。
また、上記の実施例では、候補領域を特定する処理(図2:S120)では、矩形原稿領域の外側の余白領域を用いずに、矩形原稿領域を用いて、候補領域が特定される。ただし、矩形原稿領域に加えて、余白領域を用いて、候補領域が特定されてよい。例えば、CPU810は、原稿を示す画素と原稿を示さない画素とを特定するために利用される余白色範囲を、予め決められた範囲ではなく、余白領域を解析することによって、決定してよい。例えば、余白領域内の複数の画素の各色成分のヒストグラムのそれぞれの最頻値を中心とする所定幅の色範囲が、余白色範囲として利用されてよい。
(5)色を修正すべきと判断された領域の色を修正する処理は、図5で説明した処理に代えて、種々の処理であってよい。例えば、図5の処理において、補修対象の候補領域がゼロの幅を有する部分余白領域(より一般的には、上記の基準幅以下の幅を有する部分余白領域)に接する場合には、その候補領域の色を修正しないこととしてもよい。また、補修対象の候補領域の色は、その候補領域に接する部分余白領域が補修の対象であるか否かに拘わらずに、修正されることとしてもよい。
また、読取画像内における余白領域の幅が、ユーザによって指定された部分余白領域の幅よりも、小さい場合があり得る。例えば、図3(D)の画像例において、読取画像110の上側の縁118が、矩形原稿領域210の上側の辺412から幅W22だけ外側に位置する辺412xよりも、内側に位置する場合がある。すなわち、出力領域111の一部が、読取画像110の外にはみ出る場合がある。このような場合、CPU810は、補修処理(図2のS160)において、出力領域のうちの読取画像の外にはみ出た部分を、補修する処理(すなわち、追加する処理)を実行してよい。CPU810は、例えば、はみ出た部分の画素の色値を、はみ出た部分を含む部分余白領域の色値と同じ色値に、修正してよい。はみ出た部分が、補修の対象の部分余白領域に含まれる場合、はみ出た部分の画素の色値は、補修済の部分余白領域の画素の色値と同じ色値に、修正される。はみ出た部分が、補修の非対象の部分余白領域に含まれる場合、はみ出た部分の画素の色値は、未補修の部分余白領域の画素の色値と同じ色値に、修正される。ただし、CPU810は、出力領域のうちの読取画像の外にはみ出た部分を、補修(ここでは、追加)する代わりに、出力領域から削除してもよい。すなわち、出力領域のうちの読取画像に重なる部分が、最終的な出力領域として用いられてよい。
(6)画像処理は、上記の処理に代えて、他の種々の処理であってよい。例えば、読取画像に対して、原稿画像は、傾き得る。この場合、CPU810は、原稿画像の傾きを補正する傾き補正を行ってよい。傾き補正は、画像処理の任意の段階で行われてよい。例えば、CPU810は、図2のS110とS120との間で、S110で特定された辺に応じて、読取画像に対する原稿画像の傾きを補正する傾き補正を行ってよい。そして、CPU810は、傾き補正済の読取画像を表す画像データを用いて、S120以降の処理を実行してよい。また、矩形原稿領域の辺を特定する処理は、上記の処理に代えて、他の種々の処理であってよい。例えば、CPU810は、最小二乗法を用いて、複数のエッジ画素の配置を近似する線分を特定し、特定された線分を辺として採用してよい。
また、図2のS100では、CPU810は、矩形原稿領域の四方に配置される4つの部分余白領域のそれぞれの幅(例えば、図3(D)の4つの部分余白領域511〜514のそれぞれの幅W21〜W24)を、ユーザの指示に応じて、個別に決定する。これに代えて、CPU810は、4つの部分余白領域に共通の1つの幅を、ユーザの指示に応じて決定してもよい。また、部分余白領域の幅は、ユーザの指示に応じて決定される代わりに、予め決められていてもよい。
(7)図1の画像処理装置は、パーソナルコンピュータとは異なる種類の装置(例えば、デジタルカメラ、スキャナ、スマートフォン)であってもよい。また、画像処理装置が、スキャナ900の一部であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、画像処理装置による画像処理の機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(これらの装置を備えるシステムが画像処理装置に対応する)。
また、原稿を光学的に読み取ることによって、原稿と原稿の外側に配置された余白とを含む読取画像を示す読取画像データを生成する読取装置は、図1のスキャナ900に代えて、他の種々の装置であってよい。例えば、デジタルカメラ(例えば、スマートフォンに組み込まれたデジタルカメラ)によって生成された読取画像データが、出力画像データの生成に利用されてよい。ここで、読取装置と画像処理装置とが、1つの装置(例えば、スキャナ、スマートフォンなど)に組み込まれてもよく、読取装置と画像処理装置とは、別の装置であってもよい。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図2のS100〜S180の処理の少なくとも一部が、専用のハードウェア回路によって実現されてもよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD−ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。