A.実施例:
A−1:画像処理システム1000の構成
図1は、実施例における画像処理システムの構成を示すブロック図である。画像処理システム1000は、画像処理装置としてのサーバ400と、複合機200と、を備えている。サーバ400は、インターネット70に接続されており、複合機200は、LAN(Local Area Networkの略称)80を介して、インターネット70に接続されている。この結果、サーバ400と複合機200は、LAN80とインターネット70とを介して、通信可能である。また、LAN80には、複合機200のユーザのパーソナルコンピュータ500が接続されていても良い。
サーバ400は、サーバ400のコントローラの一例としてのCPU410と、DRAMなどの揮発性記憶装置420と、ハードディスクドライブやフラッシュメモリなどの不揮発性記憶装置430と、インターネット70などのネットワークに接続するためのインタフェースを含む通信部480と、を備えている。揮発性記憶装置420には、CPU410が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域421が設けられている。不揮発性記憶装置430には、コンピュータプログラム431と、UIデータ群433と、が格納されている。
コンピュータプログラム431、および、UIデータ群433は、例えば、サーバ400の管理者によって、インターネット70を介してサーバ400にアップロードされることにより、サーバ400にインストールされる。または、コンピュータプログラム431、および、UIデータ群433は、例えば、DVD−ROMなどに格納された形態で提供され、サーバ400の管理者によって、サーバ400にインストールされても良い。CPU410は、コンピュータプログラム431を実行することにより、後述する画像処理を実現する。
複合機200は、複合機200のコントローラの一例としてのCPU210と、DRAMなどの揮発性記憶装置220と、フラッシュメモリやハードディスクドライブなどの不揮発性記憶装置230と、プリンタ部240と、スキャナ部250と、タッチパネルやボタンなどの操作部260と、液晶ディスプレイなどの表示部270と、外部機器と通信を行う通信部280と、を備えている。例えば、通信部280は、LAN80などのネットワークに接続するためのインタフェースや、USBメモリなどの外部記憶装置と接続するためのインタフェースを含んでいる。
揮発性記憶装置220には、CPU210が処理を行う際に生成される種々のデータを一時的に格納するバッファ領域221が設けられている。不揮発性記憶装置230には、制御プログラム231が格納されている。
プリンタ部240は、インクジェット方式やレーザー方式などの印刷方式を用いて印刷を実行する。スキャナ部250は、CCDやCMOSなどの光電変換素子を用いて光学的に原稿を読み取ることによってカラー画像やグレー画像を表すスキャンデータを生成する。スキャナ部250は、いわゆるフラットベッド式の原稿台を備えている。なお、原稿台の長手方向の長さは、ISO(International Organization for Standardizationの略称)216で定められている紙の寸法を規定するA4サイズの長手方向の長さである297mmより少しだけ(例えば、数センチ)長い。そして、原稿台の短手方向の長さは、ANSI/ASME(American National Standards Institute/American Society of Mechanical Engineersの略称)Y14.1で定められている紙の寸法を規定するレターサイズの短手方向の長さである215.9mmより少しだけ(例えば、数センチ)長い。すなわち、本実施例では、1回で読み取ることができる原稿の最大サイズは、A4サイズより大きくA3サイズより小さいサイズである。なお、A3サイズとは、ISO216で定められている紙の寸法である。具体的には、スキャナ部250は、長手方向の長さがA4サイズの長手方向の長さより少しだけ長く、かつ、短手方向の長さがレターサイズの短手方向の長さより少しだけ長い領域を読み取り、当該領域の画像を表すスキャンデータを生成する。このために、後述するように、例えば、A3サイズの原稿の長手方向の中央付近が重複するように、A3サイズの原稿を2回に分けて読み取ることができる。
CPU210は、制御プログラム231を実行することにより、複合機200の制御を実行する。例えば、CPU210は、プリンタ部240やスキャナ部250を制御して、コピー処理、印刷処理、スキャン処理などを実行する。さらに、CPU210は、サーバ400にアクセスして、サーバ400が提供するサービスを利用するサービス利用処理を、実行することができる。
A−2:画像処理システム1000の動作
図2は、画像処理システム1000の動作を示すシーケンス図である。このシーケンス図の処理は、複合機200が、サーバ400が提供する画像生成サービスの利用指示を、ユーザから受け付けた場合に開始される。この画像生成サービスは、詳細は後述するが、複数個のスキャンデータによって表される複数個のスキャン画像を結合するサービスである。複数個のスキャンデータは、詳細は後述するが、例えば、1回で読み取り可能なサイズより大きなサイズの原稿を、複数回に分けて読み取ることによって生成される。
処理が開始されると、S5では、複合機200のCPU210は、サービス開始要求を、サーバ400に対して送信する。サーバ400のCPU410は、サービス開始要求を受信すると、図1に示されるUIデータ群433から画像生成サービスの提供に必要なUIデータを選択し、S10にて、該UIデータを複合機200に対して送信する。UIデータは、具体的には、ユーザインタフェース画面(以下、UI画面とも呼ぶ)を表す画面データと、制御データと、を含む。この制御データは、例えば、UI画面を利用して複合機200が後述するS15のスキャン処理などの所定の処理を行うために必要な各種のデータを含む。例えば、制御データは、UI画面(例えば、図4)を介して受け付けたユーザの指示に基づいて、サーバ400へのスキャンデータの送信などの複合機200が実行すべき処理を行うために必要な情報、例えば、スキャンデータの送信先アドレスなどを含む。
S15では、CPU210は、受信したUIデータに基づいて、複数個のスキャンデータを生成するスキャン処理を実行する。スキャン処理では、CPU210は、ユーザが用意した原稿を2回に分けて読み取ることによって、2個のスキャンデータを生成する。本実施例のスキャンデータは、例えば、0〜255の256階調の値で表されるRGBの各成分の成分値を画素ごとに含むRGB画像データである。
図3は、本実施例で用いられる原稿の一例を示す図である。図3の原稿10のサイズは、スキャナ部250が1回で読み取り可能なサイズ(本実施例では、A4サイズより少し大きなサイズ)の約2倍のサイズ(本実施例では、A3サイズ)である。
図4は、UI画面の一例を示す図である。先ず、CPU210は、図4のUI画面UG1を表示部270に表示する。例えば、UI画面UG1は、原稿台への原稿10の適切な設置を促すメッセージMS1と、スキャンボタンSBと、キャンセルボタンCBと、を含んでいる。ユーザは、UI画面UG1に従って、図3に示される原稿10の左側の約半分の領域10Lを読み取ることができるように、原稿10を原稿台に設置し、スキャンボタンSBを押下する。スキャンボタンSBの押下に応じて、CPU210は、スキャナ部250を制御して原稿を読み取ることによって、左側スキャンデータを生成する。
図5は、スキャン画像の一例を示す図である。図5(A)には、左側スキャンデータによって表される左側スキャン画像20Lが示されている。左側スキャン画像20Lは、原稿10の左側の領域10L(図3)を示す左側原稿画像HILと、余白WBLと、を含んでいる。
次に、CPU210は、所定のUI画面(図示省略)を表示部270に表示する。このUI画面は、UI画面UG1と同様に、原稿台への原稿10の適切な設置を促すメッセージと、スキャンボタンと、キャンセルボタンと、を含んでいる。ユーザは、UI画面に従って、図3に示される原稿10の右側の約半分の領域10Rを読み取ることができるように、原稿10を原稿台に設置し、スキャンボタンを押下する。CPU210は、スキャンボタンの押下に応じて、スキャナ部250を制御して原稿を読み取ることによって、右側スキャンデータを生成する。
図5(B)には、右側スキャンデータによって表される右側スキャン画像20Rが示されている。右側スキャン画像20Rは、図3に示される原稿10の右側の領域10Rを示す右側原稿画像HIRと、余白WBRと、を含んでいる。
ここで、図3の原稿10の横方向の中央部CAを表す画像は、左側スキャン画像20Lの右辺に沿った領域と、右側スキャン画像20Rの左辺に沿った領域と、の両方に含まれている。すなわち、左側スキャン画像20Lと右側スキャン画像20Rは、ともに、原稿10の中央部CAを表す画像を含んでいる。これは、例えば、UI画面や複合機200の説明書などによって、原稿10の中央部CAが、右側スキャンデータの生成時と左側スキャンデータの生成時との両方で読み取られるように、原稿10を原稿台に設置するように、ユーザに指示することによって、実現される。なお、左側スキャン画像20L内の中央部CAを表す画像と、右側スキャン画像20R内の中央部CAを表す画像とは、類似しているが、ユーザによって原稿台に設置された原稿10の位置、スキャナ部250の光電変換素子の特性などによって多少の差は生じ得るので、完全に一致しているわけではない。
図2のS20では、CPU210は、右側スキャン画像20Rを表す右側スキャンデータと、左側スキャン画像20Lを表す左側スキャンデータと、をサーバ400に対して送信する。この結果、S25にて、サーバ400のCPU410は、右側スキャンデータと、左側スキャンデータと、取得して、バッファ領域421に格納する。
S30では、CPU410は、右側スキャンデータを用いて、基準領域決定処理を実行する。基準領域決定処理は、右側スキャンデータによって表される右側スキャン画像20Rの一部の領域である、図5(B)に示される基準領域SPを決定する処理である。なお、基準領域決定処理の詳細は、後述する。
S35では、CPU410は、左側スキャンデータによって表される左側スキャン画像20L内に、図5(A)に示される探索領域SAを決定する。探索領域SAは、予め定められた領域である。図5(A)の探索領域SAの縦方向の長さは、例えば、左側スキャン画像20Lの縦方向の全長に等しい。探索領域SAの左右方向の長さは、例えば、左側スキャン画像20Lの左右方向の長さの20%〜50%である。探索領域SAは、例えば、左側スキャン画像20Lの右辺と、上辺の右側の部分と、下辺の右側の部分と、を含む領域である。
S40では、CPU410は、平滑化処理を実行する。平滑化処理は、右側スキャン画像20R内の基準領域SP内の画像と、左側スキャン画像20L内の探索領域SA内の画像と、に対して実行される。平滑化処理によって、基準領域SP内の画像内、および、探索領域SA内の画像内のノイズが低減される。平滑化処理の詳細は、後述する。
S45では、CPU410は、類似領域決定処理を実行する。類似領域決定処理は、右側スキャン画像20R内の基準領域SPに類似する類似領域CPを、左側スキャン画像20L内の探索領域SA内から決定する処理である。基準領域SPに類似する類似領域CPは、次のように定義できる。図5(B)に示される右側スキャン画像20R内の基準領域SP内に表されている原稿10の一部分を、図3に示される特定部分SPTとする。類似領域CPは、左側スキャン画像20Lにおいて、原稿10の特定部分SPTを表す領域である。類似領域決定処理は、平滑化処理が実行された後の基準領域内の画像を表す画像データと、平滑化処理が実行された後の探索領域SA内の画像を表す画像データと、を用いて実行される。なお、類似領域決定処理の詳細は、後述する。
S50では、CPU410は、結合処理を実行する。結合処理では、右側スキャンデータと左側スキャンデータとを用いて、右側スキャン画像20R内の右側原稿画像HIRと、左側スキャン画像20L内の左側原稿画像HILとが結合された結合画像30を表す結合画像データが生成される。
図6は、結合画像30の一例を示す図である。図6に示すように、結合画像30において、右側原稿画像HIRと左側原稿画像HILとは、右側原稿画像HIR内の基準領域SPと、左側原稿画像HIL内の類似領域CPと、が重なるように、結合される。結合画像30において、右側原稿画像HIRと左側原稿画像HILとが互いに重なり合う領域内の画素の成分値には、例えば、右側原稿画像HIR(すなわち、右側スキャン画像20R)内の画素の成分値が優先的に採用される。これによって、右側原稿画像HIRと左側原稿画像HILとが結合されて、図3の原稿10を表す結合画像30が生成される。
なお、後述する類似領域決定処理において、基準領域SPに類似する類似領域CPを決定できなかった場合には、例えば、機械的に、左側スキャン画像20Lの右端の辺と、右側スキャン画像20Rの左端の辺と、が接するように、2個のスキャン画像が結合された結合画像を表す結合画像データが生成される(図示省略)。
図2のS55では、CPU410は、生成された結合画像データを複合機200に対して送信する。複合機200のCPU210は、結合画像データを受信すると、受信した結合画像データを不揮発性記憶装置230に格納するとともに、ユーザに結合画像データを受信したことを通知する。結合画像データは、ユーザの利用に供される。例えば、複合機200は、ユーザの指示に基づいて、結合画像データを用いて、結合画像30を印刷することができる。
以上説明した画像処理システム1000によれば、図3に示される一の原稿10からそれぞれ別の領域を読み取ることによって得られる複数個の画像データ、具体的には、右側スキャンデータと左側スキャンデータとを用いて、一の原稿10を表す結合画像データを生成することができる。
A−3.基準領域決定処理
次に、図2のS30で示した基準領域決定処理を説明する。図7は、基準領域決定処理のフローチャートである。S105では、CPU410は、右側スキャン画像20R内に、配置範囲FAを決定する。決定された配置範囲FAの内側に、基準領域決定処理によって、基準領域SPが決定される。配置範囲FAは、図5(B)に示す予め定められた範囲に設定される。配置範囲FAは、図5(B)に示すように、右側スキャン画像20Rの左辺に沿って配置されている。配置範囲FAは、右側スキャン画像20R内において、原稿10の中央部CAを表す領域内に配置されることが好ましい。
S110では、CPU410は、基準領域SPのサイズおよび形状を決定する。本実施例では、基準領域SPは、予め定められたサイズの矩形に決定される。具体的には、基準領域SPの横方向のサイズは、例えば、5画素〜20画素程度であり、基準領域SPの縦方向のサイズは、右側スキャン画像20Rの縦方向の画素数の1/4〜1/2程度である。
S115では、CPU410は、配置範囲FA内の複数個の候補領域NPAのそれぞれのばらつき画素数VCを算出する。図5(B)には、配置範囲FA内に、1個の候補領域NPA1が図示されている。候補領域NPA1のサイズおよび形状は、S110にて決定された基準領域SPのサイズおよび形状と同じである。候補領域NPA1のサイズおよび形状は、S110にて決定された基準領域SPのサイズおよび形状と同じである。配置範囲FA内には、図5(B)の候補領域NPA1を縦方向や横方向に1画素刻みで移動させることで、複数個の候補領域NPAが配置可能であることが解る。S115では、配置範囲FA内に配置可能な全ての候補領域NPAのそれぞれについて、候補領域ごとにばらつき画素数VCが算出される。
一の候補領域NPAのばらつき画素数VCの算出方法は、以下の通りである。先ず、CPU410は、一の候補領域NPA内の複数個の画素を、2種類の画素、すなわち、ばらつき画素と、非ばらつき画素と、に分類する。
図8は、ばらつき画素と非ばらつき画素とを説明する図である。CPU410は、一の候補領域NPA内の複数個の画素を1個ずつ注目画素TPとして選択して、注目画素TPがばらつき画素であるか非ばらつき画素であるかを判断する。具体的には、図8に示すように、CPU410は、注目画素TPを中心とする横3画素×3画素分の領域FL内の画素を用いて、当該判断を実行する。まず、図8の式に示すように、CPU410は、注目画素TPの成分値(R0、G0、B0)と、周囲の8個の画素の成分値(Rn、Gn、Bn)のそれぞれと、の差分ΔVnを算出する。nは、図8の領域FL内に示すように、注目画素の周囲の8個の画素を識別する1〜8までの番号である。ΔVnは、図8に式で示すように、3種類の成分値の差分の絶対値の和で表される。CPU410は、図8に式で示すように、算出された8個の差分ΔVnの合計値を、注目画素TPのばらつき値Vとして算出する。
注目画素TPのばらつき値Vが、所定の閾値Vth以上である場合には、注目画素TPは、ばらつき画素であると判断される。注目画素TPのばらつき値Vが、所定の閾値Vth未満である場合には、注目画素TPは、非ばらつき画素であると判断される。これによって、一の候補領域NPA内の全ての画素が、ばらつき画素と非ばらつき画素とのいずれかに分類される。
CPU410は、一の候補領域NPA内のばらつき画素の個数を、当該一の候補領域のばらつき画素数VCとして算出する。
全ての候補領域NPAについて、ばらつき画素数VCが算出されると、S120では、CPU410は、全ての候補領域NPAのうち、ばらつき画素数VCが最大である1個の候補領域を、基準領域SPとして決定する。図5(B)には、右側スキャン画像20Rの配置範囲FA内に決定された基準領域SPが図示されている。なお、右側スキャン画像20R内の余白WBRは、ばらつきが少ない領域であるので、基準領域SPは、余白WBRではなく、右側原稿画像HIR内に決定される。
A−4.平滑化処理
次に、図2のS40の平滑化処理を説明する。図9は、平滑化処理のフローチャートである。S200では、CPU410は、画素の成分値の修正に用いられるウインドウサイズ(以下、使用ウインドウサイズとも呼ぶ)を決定するウインドウサイズ決定処理を実行する。なお、使用ウインドウサイズは、例えば、スキャン画像の解像度が縦300dpi×横300dpiである場合には、縦3画素×横3画素、縦5画素×横5画素、縦7画素×横7画素縦、縦9画素×横9画素の4種類の正方形のウインドウサイズの中から決定される。すなわち、下限サイズは、縦3画素×横3画素であり、上限サイズは、縦9画素×横9画素である。スキャン画像の解像度が大きくなるほど、上限サイズを大きくすることが可能である。ウインドウサイズ決定処理は、図5(B)に示される右側スキャン画像20Rを表す右側スキャンデータを用いて、実行される。なお、ウインドウサイズ決定処理は、図5(A)に示される左側スキャン画像20Lを表す左側スキャンデータを用いて、実行されても良い。ウインドウサイズ決定処理の詳細は後述する。
S210では、決定された使用ウインドウサイズを有するウインドウを用いて、右側スキャン画像20Rの基準領域SP内の画像に対する画素値修正処理が実行される。S220では、決定された使用ウインドウサイズを有するウインドウを用いて、左側スキャン画像20L内の探索領域SA内の画像に対する画素値修正処理が実行される。画素値修正処理は、処理対象の画像、すなわち、基準領域SP内の画像、および、探索領域SA内の画像に含まれるノイズを低減するように、処理対象の画像内の複数個の画素の成分値を修正する処理である。以上の説明から解るように、平滑化処理によって、類似領域決定処理に先だって、基準領域SP内の画像、および、探索領域SA内の画像のノイズが低減される。
次に、S200のウインドウサイズ決定処理について説明する。図10は、ウインドウサイズ決定処理のフローチャートである。S300では、CPU410は、右側スキャン画像20R内の原稿領域を特定する。原稿領域は、右側スキャン画像20R内の原稿10の一部を表す領域である。具体的には、原稿領域は、図5(B)の右側スキャン画像20R内の右側原稿画像HIRの領域であり、右側スキャン画像20Rから余白WBRを除いた領域とも言うことができる。例えば、CPU410は、公知のエッジ抽出フィルタを用いて、右側スキャン画像20R内のエッジを検出する。この結果、右側スキャン画像20R内には、右側原稿画像HIRの外縁を示すエッジや、右側原稿画像HIR内のオブジェクトのエッジが検出される。右側スキャン画像20R内の余白WBRには、エッジは検出されない。CPU410は、例えば、右側スキャン画像20R内に検出されたエッジを全て含む矩形領域を、原稿領域として特定する。なお、原稿領域の特定の手法は、一例であり、他の手法を用いて原稿領域が特定されても良い。
S305では、CPU410は、RGBの3つのレイヤー、すなわち、Rレイヤー、Gレイヤー、Bレイヤーの中から、処理の対象とする1個の注目レイヤーを選択する。
S310では、CPU410は、ウインドウサイズを下限サイズに設定する。下限サイズは、上述したように、本実施例では、縦3画素×横3画素のサイズである。
S315では、CPU410は、S300で特定された原稿領域内の端部にウインドウを設定する。例えば、図5(B)に示すように、先ず、原稿領域、すなわち、右側原稿画像HIRの領域の右上の角の座標を基準とした所定の位置に、最大のウインドウサイズの領域RFA、すなわち、縦9画素×横9画素の領域RFAが設定される。そして、領域RFAの中心の画素を中心として、現在のウインドウサイズのウインドウが設定される。例えば、初回のS315では、下限サイズ、すなわち、縦3画素×横3画素のサイズのウインドウが領域RFA内に設定される。
S320では、CPU410は、設定されたウインドウ内の差分平均値AV(M)を算出する。差分平均値AV(M)は、例えば、注目レイヤーがRレイヤーである場合には、換言すれば、注目する成分がR成分である場合には、以下の式(1)を用いて算出される。
ここで、Mは、設定されるウインドウ内に含まれる画素の総数である。Mは、本実施例では、設定されるウインドウのサイズに応じて、9、25、49、81のいずれかの値を取る。例えば、設定されるウインドウのサイズが縦3画素×横3画素である場合には、M=9である。Raveは、ウインドウ内のM個の画素のR成分の成分値の平均値である。mは、ウインドウ内のM個の画素を識別する1〜Mの番号である。Rmは、ウインドウ内のm番目の画素のR成分の成分値である。差分累計値TV(M)は、M個のR成分の成分値(Rm)のそれぞれと平均値Raveとの差分の絶対値の合計である。差分平均値AV(M)は、差分累計値TV(M)を1画素あたりの値に正規化した値である。差分平均値AV(M)は、M個の画素を含むウインドウ内の画素の成分値のばらつきを示す値である、と言うことができる。
S325では、CPU410は、差分平均値AV(M)は、収束条件を満たすか否かを判断する。収束条件は、例えば、差分平均値AV(M)と、1段階小さなウインドウサイズについて算出された差分平均値AV(M')との差分(AV(M)−AV(M'))の絶対値が、閾値TH1以下である場合に、満たされる。例えば、設定されるウインドウサイズが縦3画素×横3画素でありM=9である下限サイズである場合には、1段階小さなウインドウサイズについて算出された差分平均値AV(M')が存在しないので、収束条件は満たされないと判断される。設定されるウインドウのサイズが縦5画素×横5画素でありM=25である場合には、差分平均値AV(25)と、縦3画素×横3画素でありM=9である1段階前のウインドウサイズについて算出された差分平均値AV(9)との差分(AV(25)−AV(9))の絶対値が、閾値TH1以下である場合に、収束条件が満たされると判断される。なお、収束条件は、一例であり、これに限られない。収束条件は、(AV(M)−AV(M'))の絶対値が、閾値TH1以下であることが、複数回(例えば、2回)連続した場合に、満たされても良い。
収束条件が満たされた場合には(S325:YES)、S330にて、CPU410は、現在のウインドウサイズより1段階小さなウインドウサイズを、使用ウインドウサイズとして決定する。
収束条件が満たされない場合には(S325:NO)、S335にて、CPU410は、現在のウインドウサイズが上限サイズであるか否かを判断する。上述したように、本実施例では、上限サイズは、縦9画素×横9画素のサイズである。現在のウインドウサイズが上限サイズである場合には(S335:YES)、S340にて、CPU410は、上限サイズを使用ウインドウサイズとして決定する。現在のウインドウサイズが上限サイズではない場合には(S335:NO)、S345にて、CPU410は、現在のウインドウサイズを1段階拡大して、S315に戻る。
注目レイヤーについて使用ウインドウサイズが決定されると、S350にて、CPU410は、全レイヤーを注目レイヤーとして選択したか否かを判断する。未選択のレイヤーがある場合には(S350:NO)、CPU410は、S305に戻って、未選択レイヤーを注目レイヤーとして選択する。未選択のレイヤーがない場合には(S350:YES)、すなわち、全てのレイヤーについて使用ウインドウサイズが決定されると、CPU410は、ウインドウサイズ決定処理を終了する。
図11は、スキャン画像内のノイズについて説明する図である。右側スキャン画像20Rや左側スキャン画像20Lなどのスキャン画像の均一領域には、例えば、図11(A)や図11(B)に概念的に示すようなノイズが存在し得る。ここで均一領域は、スキャン画像の作成に用いられた原稿において、観察者が見た場合に、単一色の領域であると認識する領域である。例えば、均一領域は、背景を表す領域や、オブジェクトの内部の実質的に単一色に印刷された領域を含む。このようなノイズは、紙の繊維などに起因する用紙のムラ、単一色に印刷された領域に含まれる微少なドットや干渉縞、スキャナのイメージセンサによる読取時のムラなどの様々な要因に起因して、発生し得る。このようなノイズは、例えば、図11(A)のように、比較的、ピーク高さのばらつきが少ないホワイトノイズを含み得る。また、例えば、図11(B)のように、ホワイトノイズに加えて、ホワイトノイズよりピークの高いノイズを、周期的に、あるいは、不規則に、含み得る。例えば、ホワイトノイズは、イメージセンサによる読取時のムラに起因して発生し得る。また、ホワイトノイズよりピークの高いノイズは、用紙のムラに起因して発生し得る。
上述したウインドウサイズ決定処理において、図5(B)に示されるサンプリングされる領域RFAは、原稿領域内の端部の近傍に位置しているので、背景を表す均一領域である可能性が高い。この結果、ウインドウサイズ決定処理では、均一領域におけるノイズの特性を適切に評価して、ウインドウサイズを決定できる。
具体的には、図11(A)に示すように、領域RFA内のノイズが、比較的ピーク高さのばらつきが小さい特性を有する場合には、ウインドウサイズが比較的小さい場合であっても比較的大きい場合であっても、差分平均値AV(M)は、比較的一定の値になる。したがって、図11(A)に示すノイズ特性である場合には、サンプリングに用いられるウインドウサイズが比較的小さい段階で、収束条件が満たされるので、比較的小さなウインドウが使用ウインドウサイズとして決定される。
一方、図11(B)に示すように、領域RFA内のノイズが、ピーク高さが比較的高いノイズを含む特性を有する場合には、ウインドウサイズが比較的小さな段階では、当該ピークの高いノイズがウインドウ内に含まれるか否かによって、差分平均値AV(M)が大きく変動する。したがって、図11(B)に示すノイズ特性である場合には、サンプリングに用いられるウインドウサイズが比較的大きくされた段階で、収束条件が満たされるので、比較的大きなウインドウが使用ウインドウサイズとして決定される。
換言すれば、ノイズのレベルが高いほど、大きなウインドウサイズが、使用ウインドウサイズとして決定される。ピーク高さが比較的高いノイズが含まれる頻度が高いほど、また、当該ノイズのピーク高さが高いほど、ノイズのレベルが高いと言うことができる。
次に、S210およびS220の画素値修正処理について、説明する。S210の処理とS220の処理とは、処理対象の画像が異なる以外は、同じ処理である。画素値修正処理は、処理対象の画像内のノイズ、特に、均一領域内のノイズを低減すべく、処理対象の画像内の複数個の画素の成分値を修正する処理である。
図12は、画素値修正処理のフローチャートである。S400では、CPU410は、修正画像用のメモリをバッファ領域421内に確保する。すなわち、基準領域SP内の画像、または、探索領域SA内の画像などの処理対象の画像と同じサイズの画像であって、全ての画素の成分値が初期値である画像をバッファ領域421内に準備する。全ての画素の成分値が初期値であるとは、例えば、全ての画素の成分値が(R、G、B)=(0,0,0)であること、を意味する。
S405では、CPU410は、RGBの3つのレイヤーの中から、処理の対象とするRレイヤーなどの1個の注目レイヤーを選択する。S410では、CPU410は、処理対象の画像内の1個の注目画素TPaを選択する。S415では、CPU410は、図10のウインドウサイズ決定処理にて、注目レイヤーについて決定されたサイズのウインドウWdを、注目画素を中心として配置する。
図13は、注目画素TPaを中心に、縦5画素×横5画素のウインドウWdが配置された様子を示す図である。S420では、CPU410は、注目画素TPaの周囲に位置する複数個の候補画素の中から、使用すべき複数個の周囲画素を選択する。本実施例では、注目画素TPaの成分値と、各候補画素の成分値と、の差分と、に基づいて、各候補画素について、使用すべき周囲画素として選択するか否かが判断される。例えば、R成分の差分は、注目画素TPaのR成分の成分値Rtpと、候補画素のR成分の成分値Rcdと、を用いて、Rcd−Rtpで求められる。具体的には、差分が、所定の閾値TH2未満である場合には、当該候補画素は、使用すべき周囲画素として選択される。そして、差分が、所定の閾値TH2以上である場合には、当該候補画素は、使用すべき周囲画素として選択されない。閾値TH2は、例えば、RGBの各成分値が0〜255までの256階調の値である場合には、例えば、5〜20程度の値とされる。
図13の例では、注目画素TPaの周囲の複数個の候補画素は、ウインドウWd内の25個の画素のうち、注目画素TPaを除いた24個の画素である。ウインドウWd内のハッチングされた画素は、注目画素TPaとの差分が所定の閾値TH2以上である画素を示している。ウインドウWd内のハッチングされていない画素は、注目画素TPaとの差分が所定の閾値TH2未満である画素を示している。したがって、図13の例では、24個の候補画素のうち、ハッチングされていない14個の画素が、使用すべき周囲画素として選択される。
S425では、CPU410は、R成分の成分値Rtpなどの注目画素の成分値と、R成分の成分値Rarなどの選択された複数個の周囲画素の成分値と、を用いて、修正値を決定する。本実施例では、修正値には、注目画素の成分値と、複数個の周囲画素の成分値と、の平均値が用いられる。処理対象の画像内の注目画素に対応する修正画像内の対応注目画素の成分値、例えば、R成分の成分値Rcrは、初期値から修正値に置換される。対応注目画素は、例えば、処理対象の画像と修正画像とを重ねた場合に、処理対象内の注目画素と重なる修正画像内の画素であると、定義することができる。
S430では、CPU410は、処理対象の画像内の全画素を注目画素として選択したか否かを判断する。未選択の画素がある場合には(S430:NO)、CPU410は、S410に戻って、未選択の画素を注目画素として選択する。未選択の画素がない場合には(S430:YES)、すなわち、修正画像の注目レイヤーの全画素の成分値が決定された場合には、S435にて、CPU410は、全レイヤーを注目レイヤーとして選択したか否かを判断する。未選択のレイヤーがある場合には(S435:NO)、CPU410は、S405に戻って、未選択レイヤーを注目レイヤーとして選択する。未選択のレイヤーがない場合には(S435:YES)、すなわち、処理対象の画像の修正画像が完成すると、CPU410は、画素値修正処理を終了する。図2のS210で生成される基準領域SP内の画像の修正画像を、修正済みの基準領域SPとも呼び、S220で生成される探索領域SA内の画像の修正画像を、修正済みの探索領域SAとも呼ぶ。
A−5.類似領域決定処理
次に、図2のS45で示した類似領域決定処理を説明する。図14は、類似領域決定処理のフローチャートである。S510では、CPU410は、画素値修正処理によって修正済みの図5(A)に示される探索領域SA内に、1個の注目候補領域を特定する。
図5(A)には、探索領域SA内に、1個の候補領域NPB1が図示されている。1個の候補領域のサイズ形状およびサイズは、図7の基準領域決定処理によって右側スキャン画像20R内に決定された図5(B)に示される基準領域SPのサイズおよび形状と同じである。探索領域SA内には、図5(B)の候補領域NPB1を縦方向や横方向に1画素刻みで移動させることで、複数個の候補領域NPBが配置可能であることが解る。S510では、探索領域SA内に配置可能な全ての候補領域NPBの中から1個の領域が所定の順序で注目候補領域として特定される。
1個の注目候補領域が特定されると、S520では、CPU410は、修正済みの探索領域SA内の注目候補領域の類似度(SC/Nt)を算出する。注目候補領域の類似度(SC/Nt)は、注目候補領域と、修正済みの基準領域SPとが類似している程度を示す指標値である。
類似度(SC/Nt)の算出方法は、以下のとおりである。先ず、CPU410は、注目候補領域NPB内の複数個の画素を1個ずつ注目画素として選択して、注目画素が、類似画素であるか非類似画素であるかを判断する。具体的には、CPU410は、注目候補領域内の注目画素の成分値と、当該注目画素に対応する修正済みの基準領域SP内の画素の成分値と、の差ΔVPを算出する。注目画素に対応する基準領域SP内の画素は、注目候補領域内の画像と基準領域SP内の画像とを重ねた場合に、注目画素と重なる基準領域SP内の画素である。差ΔVPを算出すべき2個の画素の成分値を、(R1、G1、B1)と(R2、G2、B2)とする。差ΔVPは、3種類の成分値間の差分の絶対値の和で表される。すなわち、差ΔVPは、(R1−R2)の絶対値と、(G1−G2)の絶対値と、(B1−B2)の絶対値と、の合計値で表される。
CPU410は、算出された差ΔVPが、所定の基準値TH3以下である場合には、注目画素が類似画素であると判断し、算出された差ΔVPが、所定の基準値TH3より大きい場合には、注目画素が非類似画素であると判断する。差ΔVPが、所定の基準値TH3以下である場合には、注目候補領域内の注目画素と、当該注目画素に対応する基準領域SP内の画素とは、類似する画素であると判断できるからである。
CPU410は、注目候補領域内の類似画素の個数SCを、注目候補領域内の画素の総数Ntで除することによって、注目候補領域の類似度(SC/Nt)を算出する。類似度(SC/Nt)は、注目候補領域内の画素の総数Ntに対する類似画素の個数SCの割合である。類似度(SC/Nt)が大きいほど、基準領域SPと、注目候補領域とは、類似している。
S530では、CPU410は、類似度(SC/Nt)が、閾値TH4以上であるか否かを判断する。即ち、CPU410は、現在の注目候補領域が基準領域SPに類似しているか否かを判断する。
類似度(SC/Nt)が、閾値TH4以上である場合、即ち、現在の注目候補領域が基準領域SPに類似していると判断する場合には(S530:YES)、S540において、CPU410は、現在の注目候補領域を、基準領域SPに類似する類似領域CPとして決定して、類似領域決定処理を終了する。
類似度(SC/Nt)が、閾値TH4未満である場合には(S530:NO)、S550において、CPU410は、修正済みの探索領域SA1内の全ての候補領域を注目候補領域として処理したか否かを判断する。未処理の候補領域がある場合には(S550:NO)、CPU410は、S510に戻って、未処理の候補領域を注目候補領域として選択する。全ての候補領域が処理された場合には(S550:YES)、CPU410は、基準領域SPに対応する類似領域CPを決定できないまま、類似領域決定処理を終了する。図5(A)には、左側スキャン画像20L内に、決定された類似領域CPが図示されている。
以上説明した本実施例によれば、類似領域決定処理に先立って実行される図9の平滑化処理によって、基準領域SP内の複数個の画素と、探索領域SA内の複数個の画素と、のそれぞれの成分値が修正される。図12のS425に示されるように、修正対象の対象画素の成分値は、対象画素の成分値と、対象画素の周囲に配置されている複数個の周囲画素の成分値と、を用いて、修正される。この結果、図14の類似領域決定処理において、修正済みの画素を含む基準領域SP内の複数個の画素の成分値と、修正済みの画素を含む探索領域内の複数個の画素の成分値と、を用いて、類似領域CPが決定される。この結果、類似領域CPが決定される際に、基準領域SPや探索領域SAに含まれるノイズの影響を低減し得る。したがって、ノイズに起因する類似領域CPを決定する精度の低下を抑制することができる。すなわち、左側スキャン画像20Lと右側スキャン画像20Rとの結合位置を決定する精度の低下を抑制することができる。
より具体的には、右側スキャン画像20Rや左側スキャン画像20L内の均一領域などに、図11に示すようなノイズが含まれていると、例えば、基準領域SPや探索領域SAに含まれる均一領域などにもノイズが含まれ得る。この場合には、例えば、基準領域SP内のノイズのピークと、探索領域SA内のノイズのピークと、が一致するように、探索領域SA内の類似領域CPが決定されてしまう可能性がある。そうすると、類似領域CPの決定精度が低下する可能性がある。本実施例によれば、このような不都合が抑制される。
さらに、CPU410は、図12のS425に示されるように、対象画素の成分値と複数個の周囲画素の成分値との平均値を用いて、対象画素の成分値を修正する。したがって、基準領域SPや探索領域SA内のノイズを適切に低減することができる。また、比較的短い処理時間で対象画素の成分値を修正することができる。例えば、平均値の算出の処理時間は、中央値(メディアン値とも呼ぶ)の算出の処理時間と比較して短い。
さらに、図10のウインドウサイズ決定処理において、CPU410は、図10のS315とS320とに示されるように右側スキャン画像20R内のノイズのレベルを検出する。そして、CPU410は、図10のS325とS330とに示されるようにノイズのレベルに応じて、使用ウインドウサイズ、すなわち、対象画素の成分値の修正に用いられる周囲画素の個数(厳密には、用いられる周囲画素の候補となる候補画素の個数)を決定している。ここで、使用ウインドウサイズは、差分平均値AV(M)が収束し難いほど、大きくされる。換言すれば、用いられる周囲画素の個数は、検出されるノイズのレベルが高いほど、多くの個数に決定される。この結果、ノイズのレベルに応じて適切な個数の周囲画素を用いて、基準領域SPや探索領域SA内の画素の成分値が修正されるので、これらの領域内に含まれるノイズを適切に低減することができる。したがって、2個のスキャン画像20R、20Lの結合位置を決定する精度を向上することができる。
より詳しく説明する。ノイズのピーク高さが高いほど、また、高いピークのノイズの発生頻度が高いほど、ノイズを十分に低減するのに必要な使用ウインドウサイズを大きくなる、すなわち、用いるべき周囲画素の個数が多くなる。一方、使用ウインドウサイズを不必要に大きくすると、領域内のエッジなどの特徴部分が損なわれる可能性がある。エッジなどの特徴部分が基準領域SPと一致するように、類似領域CPを決定することで、類似領域CPの決定の精度が高くなるので、エッジなどの特徴部分が損なわれることは、類似領域CPの決定の精度の低下を招く可能性がある。上記実施例では、ノイズのレベルに応じて、ノイズを十分に低減するために過不足のない使用ウインドウサイズを決定することで、2個のスキャン画像20R、20Lの結合位置を決定する精度を向上することができる。
さらに、CPU410は、図10のS305とS350とに示されるようにRGBの3個の成分について、成分ごとにノイズのレベルを検出し、成分ごとに使用ウインドウサイズを決定している。スキャンデータの生成に用いられるスキャナのイメージセンサなどの特性やばらつきによって、ノイズのレベルは、成分ごとに異なり得る。本実施例では、成分ごとに適切な使用ウインドウサイズが決定されるので、基準領域SPや探索領域SA内に含まれるノイズを適切に低減するように、基準領域SPや探索領域SA内の画素の成分値を修正することができる。
さらに、CPU410は、ウインドウサイズ決定処理において、図10のS300にて、スキャン画像内の原稿領域を特定し、図10のS315にて、スキャン画像内の原稿領域内のノイズのレベルを検出する。この結果、原稿10に起因してスキャン画像に含まれるノイズのレベルに応じて、適切な使用ウインドウサイズが決定される。したがって、原稿に起因して基準領域SPや探索領域SA内に含まれるノイズ、具体的には、紙の繊維による用紙のムラなどに起因するノイズを適切に低減するように、基準領域SPや探索領域SA内の画素の成分値を修正することができる。
さらに、1個の右側スキャン画像20R内のノイズのレベルを検出して、基準領域SP内の画像に対する画素値修正処理にて用いられる使用ウインドウサイズと、探索領域SA内の画像に対する画素値修正処理にて用いられる使用ウインドウサイズとの両方が決定される。すなわち、右側スキャン画像20R内の画素をサンプリングして決定された使用ウインドウサイズは、基準領域SP内の画像に対する画素値修正処理と、探索領域SA内の画像に対する画素値修正処理と、の両方で共通して用いられる。2個のスキャン画像20R、20Lを表す2個のスキャンデータは、1個の原稿10を1個のスキャナを用いて読み取ることによって生成される。したがって、2個のスキャン画像内のノイズ特性は、比較的近いと考えられる。このために、本実施例では、処理負荷の過度な増加を招くことなく、基準領域SP内の画像と探索領域SA内の画像に対する画素値修正処理で用いられる適切な使用ウインドウサイズを決定することができる。
さらに、図12のS420に示されるように、ウインドウ内に含まれる複数個の候補画素の中から、対象画素の成分値を含む特定範囲内の値を有する画素、すなわち、対象画素の成分値との差分が閾値TH2以内である値を有する画素が、対象画素の成分値の修正に用いられる複数個の周囲画素として決定される。この結果、対象画素の修正によって、基準領域SPや探索領域SAに含まれるノイズの低減しつつ、これらの領域に含まれるエッジなどの特徴部分を損なわないように、対象画素の成分値を修正することができる。例えば、図13の例では、注目画素TPaは、注目画素TPaとの差分が比較的大きいハッチングされた画素群と、注目画素TPaとの差分が比較的小さいハッチングされていない画素群と、の間のエッジ部分に位置している。この場合に、注目画素TPaの成分値は、ハッチングされていない画素群のみを用いて修正される。この結果、注目画素TPaの修正によって、エッジが不明瞭になることが抑制されることが解る。したがって、基準領域SPや探索領域SA内のエッジなどの特徴部分が損なわれることを抑制して、2個のスキャン画像20R、20Lの結合位置を決定する精度を向上することができる。
さらに、図7の基準領域決定処理において、CPU410は、図7のS115とS120とにて、右側スキャン画像20R内の複数個の画素の成分値のばらつきに基づいて、基準領域SPを決定する。具体的には、画素の成分値のばらつきが最も大きくなるように、基準領域SPが決定される。この結果、図14の類似領域決定処理では、ばらつきに基づいて決定された基準領域SPに基づいて、適切な類似領域CPが精度良く決定される。
より具体的に説明すると、画素の成分値のばらつきが比較的小さい領域は、特徴が乏しい。このために、画素の成分値のばらつきが比較的小さい領域が基準領域SPに決定されると、左側スキャン画像20L内の類似領域CPを精度良く決定することが困難になる可能性がある。例えば、左側スキャン画像20L内の誤った領域が、類似領域CPに決定されやすい。画素のばらつきが比較的小さい領域には、例えば、背景を示す領域や、オブジェクトの内部の色の変化が乏しい領域などが含まれる。
これに対して、画素の成分値のばらつきが比較的大きな領域は、エッジなどを比較的多く含むので、特徴的な部分を含む可能性が高い。このために、画素の成分値のばらつきが比較的大きな領域が基準領域SPに決定されると、左側スキャン画像20L内の類似領域CPを容易に決定できる。換言すれば、ばらつきが比較的小さい領域を基準領域SPとするよりも、ばらつきが比較的大きい基準領域SPとするほうが、類似領域CPを精度良く決定できる。
本実施例では、比較的エッジなどの特徴的な部分を多く含む基準領域SPに含まれ得る比較的特徴が少ない部分のノイズを低減するので、エッジなどの特徴的な部分に基づいて、類似領域CPを精度良く決定できる。
B.変形例
(1)上記実施例の図12の画素値修正処理では、図12のS425にて、修正値として、対象画素の成分値と複数個の周囲画素の成分値とを平均値が採用されている。これに代えて、修正値として、対象画素の成分値と複数個の周囲画素の成分値とを値の順番に並べた場合に中央に位置する値、すなわち、中央値(メディアン値とも呼ぶ)を採用しても良い。中央値を修正値として採用する場合には、ウインドウ内に含まれる全ての候補画素を、周囲画素として用いる場合であっても、基準領域SPや探索領域SA内のエッジが損なわれることを抑制することができる。この結果、ウインドウ内に含まれる全ての候補画素を、周囲画素として用いる場合であっても、適切な類似領域CPが精度良く決定される。なお、平均値を用いて対象画素の成分値を修正する処理と中央値を用いて対象画素の成分値を修正することとは、対象画素の成分値を、対象画素の成分値と複数個の周囲画素のそれぞれの成分値とを用いて平滑化する処理に含まれる。
(2)上記実施例では、スキャンデータのRGB表色系で表された画素の成分値を用いて、平滑化処理や類似領域決定処理が行われている。これに代えて、スキャンデータの表色系を他の特定の表色系に変換し、変換後の画素の成分値を用いて、平滑化処理や類似領域決定処理が行われても良い。特定の表色系は、例えば、YCbCr表色系や、HSV表色系であっても良い。さらに、特定の表色系は、例えば、グレー画像を表す画像データで用いられる表色系のように、濃度などを表す1種類の成分値のみを含む表色系であっても良い。使用される表色系に拘わらずに、図10のウインドウサイズ決定処理では、例えば、使用ウインドウサイズは、使用される表色系の成分ごと(すなわち、レイヤーごと)に決定される。すなわち、修正対象の画素の成分値は、画素ごとの色を表す特定の表色系の成分を表す成分値であれば良い。
(3)上記実施例では、右側スキャン画像20Rをサンプリングして決定された使用ウインドウサイズを、基準領域SP内の画像と探索領域SA内の画像に対する画素値修正処理の両方で共通して使用している。これに代えて、右側スキャン画像20Rをサンプリングして決定された使用ウインドウサイズを用いて、基準領域SP内の画像に対する画素値修正処理が実行され、左側スキャン画像20Lをサンプリングして決定された使用ウインドウサイズを用いて、探索領域SA内の画像に対する画素値修正処理が実行されても良い。また、上記実施例では、使用される表色系の成分ごと(すなわち、レイヤーごと)に使用ウインドウサイズが決定されているが、これに代えて、3個の成分で共通の使用ウインドウサイズが決定されても良い。また、使用ウインドウサイズは、スキャンデータ内のノイズのレベルに拘わらずに固定であっても良い。
(4)なお、上記実施例では、S210の画素値修正処理において、基準領域SP内の全ての画素の成分値を修正している。これに代えて、基準領域SP内の一部の複数個の画素を修正しても良い。例えば、CPU410は、基準領域SP内のエッジを抽出して、基準領域SPをエッジ量が基準値より多い特徴領域と、エッジ量が基準値より少ない均一領域と、に分離する。そして、CPU410は、均一領域内の複数個の画素の成分値を修正し、特徴領域内の複数個の画素の成分値を修正しなくても良い。S220の画素値修正処理において、探索領域SA内の複数個の画素の成分値を修正する場合も同様である。
(5)また、上記実施例では、基準領域SPは、スキャン画像20R内の複数個の画素のばらつきに応じて決定されているが、これに代えて、スキャン画像20R内の予め定められた位置に決定されても良い。また、探索領域SAは、左側スキャン画像20L内の予め定められた位置に決定されているが、ばらつきに応じて決定される基準領域SPに応じた位置に決定されても良い。
(6)2個のスキャンデータによって表される2個の画像を、第1の画像と、第2の画像とする。上記実施例では、第1の画像としての右側スキャン画像20Rの左辺近傍と、第2の画像としての左側スキャン画像20Lの右辺近傍と、が結合されるように、結合画像が生成されている。これに代えて、例えば、2個のスキャンデータの生成に用いられる一つの原稿に応じて、第1の画像の右辺近傍と、第2の画像の左辺近傍とが、結合されるように、結合画像が生成されてもよい。あるいは、第1の画像の下辺近傍と、第2の画像の上辺近傍とが、結合されるように、結合画像が生成されても良く、第1の画像の上辺近傍と、第2の画像の下辺近傍と、が結合されるように、結合画像が生成されてもよい。
(7)上記実施例では、2個のスキャンデータを用いて、2個のスキャン画像が結合された結合画像を表す結合画像データが生成されている。これに限らず、任意の個数のスキャンデータを用いて結合画像データが生成されても良い。例えば、4個のスキャン画像データを用いて、4個のスキャン画像が結合された結合画像を表す結合画像データが生成されてもよい。
(8)上記実施例では、結合画像データの生成に用いられる2個の画像データは、複合機200のスキャナ部250によって原稿が読み取られることによって生成される2個のスキャンデータである。これに代えて、2個の画像データは、デジタルカメラによって原稿の複数個の領域を撮影することによって、2個の画像データが生成されても良い。
(9)上記実施例では、結合画像データの生成に用いられる2個のスキャンデータは、1つの原稿10を読み取って得られる右側スキャンデータと左側スキャンデータである。これに代えて、2個のスキャンデータは、2個の原稿をそれぞれ読み取って得られる2個のスキャンデータであっても良い。
(10)上記実施例においてサーバ400のCPU410によって実行される処理(例えば、図2のS25〜S40の処理)は、例えば、複合機200のCPU210によって実行されても良い。この場合には、サーバ400は不要であり、複合機200が単体で図2の処理を実行すればよい。また、サーバ400のCPU410によって実行される処理は、複合機200と接続されたパーソナルコンピュータ500(図1)のCPU(図示省略)によって実行されても良い。例えば、パーソナルコンピュータ500のCPUは、パーソナルコンピュータ500にインストールされたスキャナドライバプログラムを実行することによって、これらの処理を実行しても良い。また、サーバ400は、本実施例のように1つの計算機で構成されても良く、複数個の計算機を含む計算システムによって構成されていても良い。
(11)上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。