本発明の画像補正システムは、原稿等の画像を読み取る画像読取装置内に実装されていてもよいし、画像読取装置とは別個の装置として構成し、画像読取装置とケーブルで直接、またはネットワークを介して接続されていてもよい。ここでは、画像読取装置はCISを採用したスキャナ装置とされる。
CISは、一定間隔で配設された複数の画像読取手段としてのセンサチップを有することから、センサチップ間にはギャップが存在する。このため、CISにより読み取られた画像には、センサチップ間のギャップにより欠落した画素値や不正な画素値を有する画素、すなわち補間すべき画素(補間画素)が含まれる。
画像補正システムは、この補間画素に対し、正しい画素値を求め、その画素値を設定する補間処理を行うことができる。センサチップは、1つずつ組み付けられるが、すべてが正確な組み付け位置に組み付けられるわけではないので、組み付け誤差が生じる。しかしながら、組み付け誤差が生じたとしても、センサチップ間のギャップが画素サイズの整数倍となる場合は、上記の補間処理のみで、スキャナ装置により読み取られた画像を補正することができる。
ところが、現実にはセンサチップ間のギャップが画素サイズの整数倍にならない場合がある。そこで、この画像補正システムは、補間処理に先立ち、ギャップが画素サイズの整数倍になるように補正を行う。このようにギャップを画素サイズの整数倍となるように補正し、その後、上記の補間処理を行うことで、画像の歪みのない高精度な補間結果を得ることができる。
ここで、補間処理の一例としては、画像データの入力を受け付け、その画像データから生成される画像の中の補間画素を特定し、設定された補間方法を採用により補間画素に挿入すべき画素値を求め、補間画素の画素値を更新する処理を挙げることができる。
画素値は、1画素を8ビットで表すグレースケール画像では、黒が0で、白が255の値をとり、1画素をRGBの各色8ビットで表すカラー画像では、赤、緑、青の各色につき0〜255の値をとり、すべてが0のとき黒で、すべてが255のとき白を表すものである。
以下、画像補正システムを別個の装置である画像補正装置として構成するものとして、装置構成およびその装置が行う処理について詳細に説明する。画像補正装置は、PC、ワークステーション、サーバ、MFP等の、ギャップが整数倍となるように補正を行う処理および補間処理を実行可能なプログラムが記録された記憶装置と、このプログラムを読み出し実行するプロセッサと、スキャナ装置やネットワークと接続するためのインタフェースとを含んで構成される装置を挙げることができる。
画像補正装置10は、ハードウェア構成として、図2に示すようなプロセッサとしてマイクロプロセッサユニット(MPU)11を備え、記憶装置として、BIOS(Basic Input Output System)やファームウェアを格納する不揮発性メモリであるROM(Read Only Memory)12と、MPU11によるプログラム処理を可能とする実行記憶空間を提供するRAM(Random Access Memory)13とを備える構成とすることができる。
MPU11は、内部バスを介してインタフェースの1つである記憶制御用インタフェース14に接続され、その記憶制御用インタフェース14に接続される記憶装置の1つであるハードディスク15へアクセスし、各種アプリケーションやデータの読み出し、実行し、書き込みを行う。この記憶制御用インタフェース14としては、IDE(Integrated Device Electronics)、ATA(AT Attachment)、シリアルATA、UltraATA等の規格により、ハードディスク15の入出力を管理するインタフェースを使用することができる。MPU11は、内部バスを介してUSB(Universal Serial Bus)、IEEE1394等のシリアルまたはパラレル・インタフェース16を制御し、キーボード、マウス、プリンタといった入出力装置17と通信し、ユーザからの入力を受け付けることができる。
画像補正装置10は、MPU11からの指令に応答して、ビデオ信号を処理し、表示装置18へと表示させるVRAM(Video RAM)19、グラフィックチップ20と、ネットワークを介して他の機器と通信するために該ネットワークと接続されるネットワークI/F21とを含んで構成することができる。VRAM19は、表示装置18に対するビデオ表示のための記憶装置として使用されるRAMであり、グラフィックチップ20は、画像データ処理を行う集積回路である。
また、この画像補正装置10は、ROM12やハードディスク15、その他の図示しないNV−RAMやSDカード等の記憶装置に格納されたプログラムをMPU11が読み出し、RAM13のメモリ領域に展開することにより、適切なOS(Operating System)の下、後述する各処理を実現し、そのMPU11を、各処理を実現するための各部として構成することができる。OSとしては、Windows(登録商標)、UNIX(登録商標)、LINUX(登録商標)等を採用することができる。なお、この画像補正装置10は、上述したPC等に限られるものではなく、特定の用途向けに複数機能の回路を1つにまとめたASIC(Application Specific Integrated Circuit)として構成することも可能である。
図3は、図2に示した画像補正装置の機能ブロック図である。画像補正装置10は、上述したように、ROM12やハードディスク15等の記憶装置に記憶されているプログラムを、プロセッサであるMPU11が読み出し実行することにより各機能を実現することができる。したがって、画像補正装置10は、センサチップ間のギャップが画素サイズの整数倍となるように補正するため、変位量決定部30、画素追加部31、画素値更新部32を備える構成とされる。また、画像補正装置10は、補間画素に対し、正しい画素値を求め、その画素値を設定する補間処理を行う画素補間部33を備えることができる。
画像補正装置10は、さらに、図示しない画像読取装置で読み取られた画像において、指定された設定方法に従って、ある1つのセンサチップで読み取られた画像領域を基準カラムとして設定する基準カラム設定部34、指定された設定方法に従って、そのセンサチップとは異なるセンサチップにより読み取られた異なる画像領域を処理カラムとして設定する処理カラム設定部35を備えている。
画像読取装置で読み取られた処理対象の画像は、この画像補正装置10へ送られ、画像補正装置10の基準カラム設定部34がその画像を画像データとして受け付ける。処理対象の画像は、各センサチップで読み取られた複数の画像領域から構成され、各画像領域が各カラムを構成する。センサチップ間にはギャップが存在するため、そのギャップに対応する部分の画素が補間画素となる。上述したように、ギャップが画素サイズの整数倍であれば、直接補間処理を行うことができる。しかしながら、整数倍にならない場合、そのまま補間処理のみを行ったのでは、画像に歪みを生じてしまう。これでは、画質に大きな影響を及ぼすことになる。そこで、ギャップが画素サイズの整数倍となるように補正し、その上で補間処理を行う。
そのために、補間処理を行う画素補間部33へ画像を送る前に、上記基準カラム設定部34、処理カラム設定部35、変位量決定部30、画素追加部31、画素値更新部32を使用して、ギャップが整数倍になるように補正を行う。
基準カラム設定部34は、例えば、画素値を更新しないカラムを基準カラムとして設定し、あるいは既に画素値が更新済みのカラムを基準カラムとして設定する。処理カラム設定部35は、その基準カラムの隣のカラムを処理カラムとして設定する。画像中に2n+1個(nは0以上の整数)のカラムが存在する場合、以下の設定方法に従って、基準カラムおよび処理カラムを設定することができる。
1つの方法として、左端から順に基準カラムとして設定する方法がある。これは、画像中の左端から1番目にあるカラムを基準カラムとして設定し、その右隣の左端から2番目にあるカラムを処理カラムとして設定するものである。すなわち、向かって左端にあるセンサチップにより読み取った画像領域を基準カラムとして設定し、その右隣にあるセンサチップにより読み取った画像領域を処理カラムとして設定するものである。
ギャップは、1つのセンサチップ間のみに存在するものではなく、すべてのセンサチップ間に存在するため、上記処理カラムの処理が終了した後は、その処理済みの左端から2番目にあるカラムを基準カラムとして設定し、そのカラムの右隣の左端から3番目にあるカラムを新たな処理カラムとして設定し、ギャップが画素サイズの整数倍になるように補正を行う処理を実行する。これを2n+1番目のカラムまで繰り返すことにより、すべてのカラムについて行う。
2つ目の方法として、左端ではなく、右端から順に基準カラムとして設定する方法がある。これは、左端から2n+1番目となる右端から1番目のカラムを基準カラムとして設定し、その左隣の左端から2n番目にあるカラムを処理カラムとして設定するものである。これも同様にして、処理済みのカラムを基準カラムとして設定し、その左隣にあるカラムを新たな処理カラムとして設定し、補正処理を行う。これを左端から1番目のカラムまで繰り返し、すべてのカラムについて補正処理を行う。
3つ目の方法として、中央にある左端からn+1番目のカラムを基準カラムとして設定する方法がある。これは、左端からn+1番目のカラムを基準カラムとして設定し、その左隣の左端からn番目のカラムおよびその右隣の左端からn+2番目のカラムの2つを処理カラムとして設定するものである。この場合、それら処理カラムについて補正処理が終了した後、処理済みのn番目のカラムおよびn+2番目のカラムを基準カラムとして設定し、n番目のカラムの左隣のn−1番目のカラム、n+2番目のカラムの右隣のn+3番目のカラムを処理カラムとして設定し、上記補正処理を行う。このようにして、左端から1番目のカラムおよび2n+1番目のカラムまで繰り返し、すべてのカラムについて補正処理を行う。
3つの設定方法を説明してきたが、これらの方法に限られるものではなく、1つのカラムを基準カラムとして固定し、他のカラムを逐次処理カラムとして設定して補正処理を行うことも可能である。
変位量決定部30は、補正処理において処理カラムの画素値を更新する際、処理カラム内の画像信号をどの程度変位させるかを決定する。変位させる程度を示す変位量は、処理カラムの主走査方向および副走査方向のそれぞれに与えることができるが、一方向のみに限定することも可能である。ここでは、変位量は1画素未満として説明を行う。
例えば、センサチップ間のギャップが1.2画素である場合、画素サイズの整数倍にするには、0.2画素分基準カラム側へ処理カラムを変位させる必要がある。そうすれば、ギャップが1画素となり、画素サイズの整数倍となる。したがって、変位量決定部30は、変位量を0.2画素と決定し、変位方向を基準カラム側に近づける方向と決定する。
センサチップ間のギャップが0.7画素である場合、画素サイズの整数倍にするには、0.3画素分基準カラムから遠ざける方向に処理カラムを変位させる必要がある。そうすれば、ギャップが1画素となり、画素サイズの整数倍となる。したがって、変位量決定部30は、変位量を0.3画素と決定し、変位方向を基準カラムから遠ざける方向と決定する。
上記例では、いずれもギャップが1画素となるように変位量および変位方向を決定したが、ギャップが0画素や2画素となるように変位量および変位方向を決定することも可能である。また、変位量は、上記の0.2画素や0.3画素といった1画素未満のものに限られるものではなく、1画素を超えるものであってもよい。
変位量決定部30は、チップセンサ間のギャップが画素の幅または高さの整数倍であった場合に得られるであろう画像信号を、実際に得られた画像信号を基に推測するために変位を与えるため、これに適合するように変位量を決定する。このギャップは、ユーザによって予め与えられてもよいし、動的に決定することも可能である。
図4および図5を参照して、センサチップ間のギャップを動的に決定する方法について詳細に説明する。図4は、画像が直線を含む場合の当該画像を示し、図5は、画像が周期的なパターンである場合の画像信号を示している。
1つの方法として、直線のずれからギャップを検出する方法がある。図4に示すように、まず、隣り合う2つの基準カラム40と処理カラム41に跨って存在する直線42、43を検出する。次に、基準カラム40と処理カラム41の境界で、この直線42、43がどれだけずれているかを基に、2つのカラムの位置ずれ量を推定する。
直線の検出は、デジタル画像処理で用いられる特徴抽出法の1つであるハフ変換等を用いて行うことができる。各カラム内でそれぞれ直線を検出した後は、境界部分で近接する傾きが等しいものをペアとし、上記の位置ずれ量を推定する。例えば、水平線の鉛直方向の位置ずれ量を用いれば、基準カラムと処理カラムとの副走査方向の位置ずれを検出することができる。しかしながら、1本の直線のみでは、主走査方向および副走査方向それぞれの位置ずれを同時に求めることはできないので、2本以上の直線を用いる必要がある。
具体的に説明すると、例えば、処理対象の画像中に直線1と直線2が存在しているものとする。これらの直線を検出し、基準カラム内の直線1が式1、直線2が式2、処理カラム内の直線1が式3、直線2が式4で表されたとする。
上記式1〜式4を用いると、主走査方向の位置ずれΔx、副走査方向の位置ずれΔyは、次の式5、式6で表すことができる。
なお、画像内から直線を検出し、その直線のずれから位置ずれ量を推定する以外に、位置ずれを検出するための基準となるパターンを原稿の読み取り範囲外に設置し、このパターンを用いてセンサチップ間の位置ずれ量を推定することも可能である。
別の方法として、周期的なパターンの位相ずれからギャップを検出する方法がある。この方法は、隣り合う2つの基準カラムと処理カラムに跨って存在する周期的なパターンを検出し、基準カラムと処理カラムとでこのパターンの位相がどれだけずれているかを基に、2つのカラムの位置ずれ量を推定する。
周期的なパターンを検出する方法としては、これまでに知られた方法を用いることができ、例えば、画素値の変動の周期性を用いる方法、自己相関の変動の周期性を用いる方法、周期性を分析するために用いられる離散フーリエ変換による方法等を挙げることができる。なお、周期性の検出と同時に、パターンの周期を推定することが望ましい。
例えば、画素値の変動の周期性を用いる方法では、まず、所定の大きさの判定領域を定め、その判定領域内で画素値の変動に周期性があるか否かを判定する。判定領域は、高さ1画素の領域、すなわち画像の1ラインとすることもできるし、任意の高さをもった矩形領域とすることもできる。
判定領域のサイズは、予めユーザによって設定することもできるし、装置が動的に決定することも可能である。装置が動的に決定する場合、予め指定された領域サイズで一度周期性の有無の判断を行い、それより小さいサイズでも十分に判断を行うことができるようであれば、一定サイズで小さくしていくことができ、反対に判断を行うことができない場合には、一定サイズで大きくしていくことができる。
この判定領域における水平方向の画素の位置と画素値との関係は、画素値がその画素において一定の値を示すことから、実際にはとびとびの値となるが、周期性がある場合、隣り合う位置の画素値を滑らかにつなぎ合わせると、一定の周期で画素値が増減する波形で表すことができる。このため、この判定領域では画素値の変動に周期性があることを検出することができる。また、この波形から周期を推定することもできる。
このような周期性がある判定領域としては、網点や斜線で表される網点領域が挙げられる。一方、周期性のない判定領域としては、文字や規則的に配列していない点から構成される不連続領域、1色やグラデーションで表される背景等の平坦領域が挙げられる。
例えば、自己相関の変動の周期性を用いる方法では、所定のサイズの領域である判定領域を設定し、その判定領域内において変動周期を計算し、計算された変動周期を用いて判定領域の周期性の有無を判定することにより、周期性を判定する。
周期性を判定するために変動周期を求める必要があるが、判定領域内の画素値の変動周期が常に一定とは限らない。そこで、周期性を判定するために用いる変動周期として代表周期を採用する。この代表周期を求める一例として、判定領域内において画素値が極大となる位置(ピーク位置)、具体的には波形の正方向のピークを示す画素の位置を記録していき、あるピーク位置から次のピーク位置までの距離のヒストグラムを判定領域全体にわたって作成した上で、度数の最も多い階級に対する値である最頻値となる距離を代表周期として採用する。この代表周期は、画素数で表すことができる。なお、代表周期にある程度の誤差を許容する観点から、代表周期±1の距離を用いることも可能である。
このとき、極大となる位置ではなく、極小となる位置(波形の負方向のピークを示す画素の位置)を用いて求めることも可能である。代表周期を求める際に画素値の変動の周期性を利用するとノイズ耐性が低いため、画素値の自己相関を求め、その変動の周期性を利用すればノイズ耐性が上昇する。このため、これらの極大となる位置および極小となる位置を用いて求める場合、自己相関を用いる。ここで、ノイズ耐性が上昇する理由は、ノイズが多くの場合に画素値に乗るため、画素値を直接利用する場合よりも、複数の画素値を用いて導出された自己相関という形で利用した場合のほうが、ノイズによる影響を低く抑えることができるからである。
自己相関とは、ある信号とその信号に所定の位相ずれを与えた信号との相関のことである。この場合、判定領域内において自己相関を求めていき、画素値に代えて自己相関の値を用いてヒストグラムを作成し、最頻値を代表周期として採用する。この自己相関の値としては、相関係数を用いることもできるし、共分散を用い、より計算を簡便にすることも可能である。
ここで、共分散Sは、2つの画素値の共変動の大きさを示す指標で、比較するパターンの一方のi番目の画素値をxiとし、他方のパターンのi番目の画素値をyiとし、一方のパターンの画素値の平均値をxmとし、他方のパターンの画素値の平均値をymとし、パターンの画素数をnとすると、次の式7により求めることができる。
相関係数Rは、2つの確率変数の間の類似性の度合いを示す指標で、一方のパターンの標準偏差をσxとし、他方のパターンの標準偏差をσyとすると、次の式8により求めることができる。
信頼度Cvは、例えば、次の式9を用いて求めることができる。式9中、Tは、上記で求めた代表周期で、Frは、上記ヒストグラムにおける代表周期Tに対応する距離の度数で、Nは、判定領域の画素数である。なお、Frは、代表周期Tの度数だけでなく、代表周期を推定する際の誤差を許容するためにT±1の度数の合計を用いてもよい。この式9は、代表周期と同じピーク位置間の距離を有するものが、判定領域全体のどの程度の割合を占めているかを信頼度として定義することを意味している。
この信頼度が閾値よりも高い場合に周期性があると判断し、閾値以下である場合には周期性なしと判断するが、この閾値は、予めユーザによって設定することができ、また、動的に決定することも可能である。予めユーザによって設定する場合、シミュレーションや実験を行い、周期性の有無を判断するのに好適な信頼度を求めることにより閾値を決定し、その閾値を設定することができる。動的に決定する場合は、例えば、実際に周期性を有する網点領域と周期性を有しない不連続領域または平坦領域について信頼度を求め、その中間値を閾値として決定することができる。
変位量決定部30は、このようにして周期的なパターンを検出した後、その周期的なパターンにおいて基準カラム内の領域と処理カラム内の領域との位相ずれを検出する。この位相ずれを検出する方法としては、例えば、周期的なパターンの極大間の距離を用いる方法、周期的なパターンの極小間の距離を用いる方法、周期的なパターンの変位を用いる方法等が挙げられる。
1つ目の周期的なパターンの極大間の距離を用いる方法では、周期性を有すると判定された判定領域を周期的なパターンとし、そのパターンにおける画素値や自己相関の極大と極小との距離が、カラム内と、基準カラムと処理カラムの境界部とで、どの程度異なっているかを用い、位相ずれを検出する。詳細については、後述する。なお、極大間の距離は、パターンの周期で代替可能である。
2つ目の周期的なパターンの極小間の距離を用いる方法では、周期的なパターンにおける画素値や自己相関の極大と極小との距離が、カラム内と、基準カラムと処理カラムの境界部とで、どの程度異なっているかを用い、位相ずれを検出する。この場合も、極小間の距離は、パターンの周期で代替可能である。
3つ目の周期的なパターンの変位を用いる方法では、基準カラム側の領域と処理カラム側の領域との変位を検出し、その変位が期待値からどの程度ずれているかを用い、位相ずれを検出する。例えば、基準カラム側の領域と処理カラム側の領域とが1周期分離れている位置で変位が検出されれば、変位の期待値は0であり、検出された変位が位相ずれとなる。この変位の検出には、これまでに知られたいかなる方法でも用いることができ、例えば、テンプレートマッチング法や位相限定相関法等が挙げられる。
テンプレートマッチング法は、画像の中から指定した部分、大きさの画像領域である基準パターンとしてのテンプレートを用い、そのテンプレートと似ている位置を探す方法で、テンプレートと画像の中のパターン間の一致度を求めることにより行われる。位相限定相関法は、2つの画像を高速フーリエ変換(FFT)し、それらの積を求める際、周波数成分を振幅値で除した後にその積を求め、その後、逆FFTして、平行移動による位置ずれ量を求める方法である。
図5を参照して、さらに詳しく説明すると、図5(a)には、複数のセンサチップにより読み取った画像の画像信号50が曲線で示され、主走査方向の各位置にある画素値がサンプリング点51として示され、サンプリング点51が等間隔であれば得られたであろう仮想サンプリング点52も示されている。図5(a)中、k−1番目のサンプリング点51より向かって左側にあるk−2番目等のサンプリング点が基準カラムにおける画素の画素値を示し、k番目のサンプリング点51より向かって右側にあるk+1番目等のサンプリング点が処理カラムにおける画素の画素値を示している。
図5(b)は、実際に得られた画素値を基に推定される画像信号を示した図である。実際の画素値は、その画素の位置において一定の値として得られる。このため、上述したように隣り合う画素の画素値は、とびとびの値を示す。得られた画素値を滑らかにつなぐと、図5(b)に示すような曲線で表される画像信号53が得られる。ちなみに、図5(a)におけるサンプリング点51は、図5(b)におけるサンプリング点54に対応し、図5(a)における仮想サンプリング点52は、図5(b)における仮想サンプリング点55に対応するものである。
図5(a)と図5(b)を比較してみると、センサチップ間に位置ずれが存在すると、各カラム内では極大点間の距離dsで一定であるが、カラムを跨ぐ極大点間の距離dgは、位置ずれが存在するために、距離dsとは異なってくる。このため、距離dsと距離dgとの差を求めることにより、位置ずれ量を推定することができる。これは、極小間も同様である。
図5(a)および図5(b)では、説明を容易にするために、画像信号を一次元で示しているが、実際には二次元の信号であるため、この推定を鉛直と水平の両方について行う必要がある。ただし、現実には網点やハッチング等の角度を持った周期的なパターンを用いて推定を行った場合、その距離の差が水平方向の位置ずれに起因するものか、鉛直方向の位置ずれに起因するものかの区別が困難である。
網点であれば、スクリーン角に沿って画像信号の位置ずれを推定することにより、スクリーン角を用いて水平方向と鉛直方向とに分解することができる。スクリーン角θに沿ってずれ量dが検出された場合、位置ずれΔx、Δyを次の式10および式11により求めることができる。なお、このスクリーン角θは、水平から反時計回りに計測された角度とする。
網点のような周期性を有する解析には、一般的に、離散フーリエ変換等が用いられる。このため、網点のスクリーン角が未知である場合は、離散フーリエ変換等を用いて推定することができる。
再び図3を参照して、画素追加部31は、変位量決定部30にて決定された変位量、処理カラムを変位させる方向、その変位量だけその変位方向へ変位させた処理カラム内の各画素の画素値を計算するために用いられる、予め設定された補間方法に応じて、処理カラムの主走査方向および副走査方向の少なくとも一方に、上記の補間方法で使用するための少なくとも1つの画素を追加する。この画素は、画素値を有する仮想的な画素である。
この補間方法としては、これまでに知られた方法を用いることができ、例えば、最近傍補間(0次補間)、線形補間(一次補間)、放物線補間(二次補間)、キュービック補間(三次補間)、多項式補間、スプライン補間、ラグランジュ補間、線形補間やキュービック補間を二次元に拡張したバイリニア補間やバイキュービック補間、テンプレートマッチングといった方法を用いることができる。
例えば、変位させた処理カラム内の各画素の画素値を計算するためにバイリニア補間を用いる場合は、バイリニア補間が、画素値を求めるべき画素につき、その画素の上下左右の4画素の平均値を採用して補間を行うことから、処理カラムの端にある画素については、上下左右のいずれか1つの画素が不足することになる。ここでいう左右とは、主走査方向であり、上下とは、副走査方向である。そこで、この画素追加部31が、計算に必要とされる画素を追加しておき、画素値を計算することができるようにする。ちなみに、画素追加部31は、バイリニア補間の場合、処理カラムに隣接して上下左右に1画素ずつ追加し、バイキュービック補間の場合は、処理カラムに隣接して上下左右に2画素ずつ追加する。
上記のように、処理カラムの周囲に1画素ずつ、あるいは2画素ずつ追加することができるが、追加する方向を決定し、その方向にのみ追加することも可能である。追加する方向は、変位量や補間方法に応じて決定することができる。例えば、変位量が主走査方向と副走査方向の両方に存在する場合や、補間方法が主走査方向と副走査方向の両方に幅をもつ領域の画素を参照する場合は、処理カラムの上下左右に仮想的な画素を追加する。変位量が主走査方向と副走査方向の一方のみに存在し、かつ補間方法が変位と同じ方向のみの画素を参照する場合は、その方向のみに仮想的な画素を追加する。
画素値更新部32は、処理カラムを変位方向に変位量だけ変位させた場合のその処理カラム内の各画素の画素値を、追加した画素の画素値および補間方法を用いて生成し、生成した各画素の画素値で処理カラム内の各画素の画素値を置換することにより更新する。具体的に説明すると、例えば、元の画像信号をF(x,y)、変位量を(ε1,ε2)とすると、変位させた画像信号F’(x,y)は、次の式12で表すことができる。
画素値更新部32は、変位させた画像信号F’(x,y)から各画素の画素値を求め、処理カラム内の各画素の画素値を、この求めた画素値で置換することにより更新する。この画素値更新部32による処理の詳細を、図6を参照して以下に詳細に説明する。
図6(a)は、処理カラムの変位前の元の画像信号を示した図であり、実線の曲線が元の画像信号60で、実線の直線がサンプリング点61を示し、丸がサンプリングされた値62を示す。ちなみに、サンプリング点61は、画素に相当し、値62は、画素値に相当する。
図6(b)は、処理カラムを変位させた後の画像信号を示した図である。図6(b)に示す画像信号63は、図6(a)に示す画像信号60を1/3画素ほど向かって左側に変位させたものである。この図6(b)には、実線の直線で表される仮想サンプリング点64、丸で表されるサンプリングされた値65が示されている。値65は、値62と同じものである。
処理カラム内の各画素の画素値を更新するために、以下の処理が画素値更新部32によって実行される。まず最初に、処理カラムの変位前の元の画像信号を仮想的に変位量だけ変位方向に変位させる。実際に画像信号を変位させるのではなく、座標変換により仮想的に変位させることにより行うことができる。
仮想的に変位させた画像信号に対し、各画素に対応する位置に仮想サンプリング点64を設け、その仮想サンプリング点64における値を読み、画素値を推定する。そして、その推定した値を、変位後の画素の画素値として用い、元の処理カラム内の各画素の画素値をその推定した値に置換して、処理カラム内の各画素の画素値を更新する。
仮想サンプリング点64における値を推定する方法としては、これまでに知られたいかなる方法でも用いることができ、上述した線形補間やテンプレートマッチング等を用いることができる。なお、網点やハッチング等の周期的なパターンを有する画像の場合、線形補間といった内挿法よりパターンマッチングを用いるほうが適切に補間を行うことができるので好ましい。特に、高線数の網点等の周期が短いパターンは、内挿法を用いると画像信号のピークがつぶれ、画像信号が鈍ってしまうので、これらの問題が生じないテンプレートマッチングが好ましい。
再び図3を参照して、画素補間部33は、画素値更新部32により処理カラム内の各画素の画素値が更新され、基準カラムと処理カラムとの間のギャップが画素サイズの整数倍になったところで、基準カラムと処理カラムとの間に存在する補間画素を補間する処理を行う。例えば、画素補間部33は、基準カラムと処理カラムとの間に1画素以上の補間画素が存在する場合、この補間画素を補間する。補間方法は、上述した補間方法を用いることができ、その一例として、以下に説明する方法を採用することができる。ただし、この方法に限定されるものではなく、これ以外のこれまでに知られたいかなる方法でも用いることができる。
その前に、図7に示すフローチャートを参照して、画像補正装置10が行う画像補正処理の流れについて説明する。画像読取装置により原稿等が読み取られ、画像データが画像補正装置10へ送られてくると、画像補正装置10は、ステップ700から処理を開始する。
まず最初に、補正処理を行うために、画像データは、基準カラム設定部34へ送られ、ステップ710で、基準カラム設定部34が上記のいずれかの方法により基準カラムを設定する。そして、基準カラム設定部34が基準カラムを設定した旨の通知と、設定した基準カラムに関する情報を処理カラム設定部35へ送り、その基準カラムに関する情報を基に処理カラムを設定する。基準カラムに関する情報としては、基準カラムを識別するための基準カラム識別情報を含む。基準カラムを特定する情報がなければ、処理カラムを特定し、設定することはできないからである。
ステップ720では、変位量決定部30は、処理カラム設定部35から処理カラムを設定した旨の通知、基準カラムおよび処理カラムに関する情報を受けて、設定された基準カラムに対して、設定された処理カラムの変位量を、処理カラムの主走査方向および副走査方向に少なくとも一方について決定する。処理カラムに関する情報は、基準カラムと同様、処理カラムを識別するための処理カラム識別情報を含む。
次に、ステップ730において、画素追加部31は、変位量決定部30から変位量を決定した旨の通知、その変位量および変位方向に関する情報を受けて、処理カラムの主走査方向および副走査方向の少なくとも一方に、設定された補間方法で使用するための少なくとも1つの画素を仮想的に追加する。この追加した画素は、後に変位させた際、処理カラム内の各画素の画素値を生成する処理を行うのに使用するからである。その画素値を生成する際、上述した様々な補間方法を採用することができるが、変位量、変位方向、その補間方法に応じて、追加する画素数や方向を決定することができる。
ステップ740では、画素値更新部32が、画素追加部31から画素の追加が終了した旨の通知を受けて、処理カラムを、ステップ720で決定した変位方向に変位量だけ変位させた場合のその処理カラム内の各画素の画素値を、追加した画素の画素値および設定された補間方法を用いて生成し、生成した各画素の画素値により処理カラム内の各画素の画素値を置換することにより更新する。これにより、基準カラムと処理カラムとの間のギャップが画素サイズの整数倍となる。
画素値更新部32が処理カラム内の各画素の画素値を更新した旨を画素補間部33へ通知すると、ステップ750へ進み、画素補間部33が、基準カラムと処理カラムとの間に存在する補間画素を、上述したいずれかの補間方法を用いて補間する。上述したように、網点やハッチング等の周期性を有するパターンについては、パターンマッチング法を用い、そうでない場合は内挿法を用いて補間を行うことができる。この処理が終了したところで、1つの処理カラムについての補間処理が終了する。
その後、ステップ760へ進み、すべてのカラムについて更新を終え、補間を終えたかを判断する。まだ更新すべきカラムが存在する場合は、ステップ710へ戻り、そのカラムについて同様にして処理を行う。一方、すべてのカラムについて更新を終え、補間を終えた場合は、ステップ770へ進み、画像補正を終了する。
画像補間部33は、補間画素を補間する処理を行うために、上述した内挿法やパターンマッチング法を使用して補間することができる。補間画素が、網点やハッチング等の周期性を有するパターン内に存在する場合は、画質を低下させないように適切に補間を行うためにパターンマッチング法を採用することが望ましく、それ以外の場合においては、内挿法でも十分である。このように周期性を有するパターン内に補間画素が存在するか否かに応じて、これらの補間方法を選択することができることが望ましい。
上記の補間方法を選択することができる構成の一例として、画素補間部33は、図8に示すように、例えば、図示しない画素設定部、周期性判定部70、境界判定部71、第1画素値生成部72、第2画素値生成部73、制御部74、画素値挿入部75、図示しない第2画素値更新部を含む構成とすることができる。この構成は、あくまで一例であるので、これに限定されるものではない。
図示しない画素設定部は、画素値を挿入し補間する対象の補間画素を、処理対象となる画像内で検出する。補間画素は、予めユーザが位置を検出しておくこともできるし、装置が逐次その位置を検出することも可能である。位置は、例えば、向かって左下隅の座標を基準座標(0,0)として主走査方向と同じ右方向への画素数xと、上方向への画素数yとを用い、座標(x,y)として表すことができる。
補間画素を検出する場合の検出方法としては、例えば、予め指定された明るさや色の画素であるかどうかを、1画素ずつ画素値を調べて補間画素を検出する方法や、既知の画像を読み取った際の正解値からのずれ量の大きさを評価することにより補間画素を検出する方法や、水平または鉛直方向の周期性が不連続となる位置を検出し、その位置にある画素を補間画素として検出する方法を挙げることができる。
周期性判定部70は、上述した周期的なパターンを検出する方法と同様の方法を用い、所定の大きさの判定領域を定め、その判定領域内で画素値の変動に周期性があるか否かを判定する。このときの判定領域は、補間画素を含むように定められる。
境界判定部71は、周期性判定部70により補間画素を含む領域が周期性のある領域(周期領域)であると判定された場合に、その補間画素が本当に周期領域に属しているか否かを判定する。補間画素が周期領域と非周期領域との境界付近に存在する場合、補間画素は周期領域内に存在するのに、その近傍に存在するパターンは非周期領域のものを採用すると、正しく補間することができなくなってしまう。このため、正しい周期領域内のパターンを採用して推定することができるように、境界判定部71が本当にどちらの領域に属するかを判定する。
その一例として、補間画素を中心として、この補間画素から所定の距離だけ左右に離れた位置に参照領域を設定し、補間画素の左右に設定した参照領域において画像特徴の1つである画素値の分散を個別に求め、左右両方とも分散が閾値以上であれば周期領域に、閾値未満である場合には非周期領域に存在すると判定することができる。
上記所定の距離は、例えば3画素とすることができる。これは、網点が6画素ごとに配置される場合、後述するパターンマッチングに、補間画素を中心としてこの補間画素の左右3画素分をテンプレートとして用いることから、このテンプレートの外側で最も近い位置である、補間画素の左右3画素分離れた位置に参照領域を設定するものである。最も近い位置としているのは、テンプレートにパターンが近似しているものは、テンプレートの近傍に存在していることが多いためである。
参照領域は、例えば、補間画素を含む高さ1画素の領域、すなわち画像の1ラインとすることができ、補間画素を含む任意の高さを有する矩形領域とすることもできる。この領域も、予めユーザによって設定することもできるし、上記判定領域の場合と同様にして、装置が動的に決定することも可能である。この参照領域は、補間画素の左右に限られるものではなく、上下や上下左右等に設定することができ、1以上の領域を設定することができる。
分散は、下記式13により求めることができる。式13中、xiは、参照領域内のi番目にある画素の画素値で、xmは、参照領域内にある画素の画素値の平均値であり、nは、参照領域内にある画素の画素数である。なお、この分散は、参照領域内の画素の最大輝度値と最小輝度値との差や、カラー画像の場合には最大の緑成分の値(G成分値)と最小のG成分値との差等で代替することも可能である。
第1画素値生成部72は、補間方法として、パターンマッチング法を用いて、補間画像の画素値を生成する。パターンマッチング法の具体例として、テンプレートマッチングを用いることができる。
この機能を実現するために第1画素値生成部72は、最初に、テンプレートのサイズを決定する。テンプレートの幅は、上記のようにして求めた代表周期を基準として設定する。このテンプレートの幅は、代表周期の幅と一致させることができるが、これに限られるものではなく、代表周期の幅の画素数より左右に1画素ずつ大きめにしたり、左右に1画素ずつ小さめとする等、やや大きめまたはやや小さめにすることができる。
第1画素値生成部72は、次にテンプレートの高さを設定するが、幅と同様に、代表周期の高さと一致させることができる。補間画素が網点領域に属する場合には、一辺が概ね代表周期である正方形の領域として設定することが望ましい。正方形の領域とすれば、網点1つ分を表現することができるからである。
第1画素値生成部72は、上記のようにして決定したテンプレートのサイズに基づき、補間画素を含む領域を画像の中から切り出し、これをテンプレートに設定する。このとき、テンプレートは、補間画素を中心としてその左右、上下が対称となる形状として切り出し、設定することが好ましい。このように切り出し、設定することで、補間画素を含むパターンの方向性に依存することなく、類似パターンの探索を行うことができる。
第1画素生成部72は、さらに次に、そのテンプレートを用いて当該テンプレートに類似する類似パターンを探索するにあたって、所定の探索領域を設定する。この探索領域は、代表周期に基づき設定することができる。探索領域は、例えば、代表周期が幅6画素、高さ1画素とされるとき、その代表周期を中心として左右に6画素ずつ追加した幅18画素で、幅と同じ高さ18画素の正方形の領域とすることができる。このように、幅と高さを同じ画素数とすることで、探索範囲のパターンの方向性に依存せずに探索を行うことができる。
探索領域は、上記の正方形の領域に限られるものではないが、画像をバッファするメモリの制約等からその範囲の高さを低く抑える必要がある場合は、その分、幅を広くとることが望ましい。高さを低く抑えると、類似パターンを探索する対象が少なくなり、画素補間の精度が低下するからである。また、周期性判定部70により補間画素に向かって左側に設定された領域が周期性なしと判断された場合、補間画素に向かって左側に設定された領域を探索領域から除外することが望ましい。右側についても同様である。このように探索領域を狭めることにより、類似パターンが検出されるべきでない領域からの誤検出を防止することができる。
第1画素値生成部72は、探索領域を上記のようにして設定した後、生成したテンプレートを用い、その探索領域内にある類似パターンを探索する。具体的には、探索領域内の各位置においてテンプレートとの一致度を求め、最も一致度が高い位置を類似パターンとして選択する。一致度として、SAD(Sum of Absolute Difference)やSSD(Sum of Squared Difference)等の相違度、相関係数や共分散等の類似度を用いることができる。
SADは、テンプレートと比較するパターンを切り出し、テンプレートとパターンの同じ位置にある画素の輝度値の差をそれぞれ求め、その差の絶対値を合計したものであり、この合計値が小さいほど類似し、大きいほど相違することを示すものである。また、SSDは、その輝度値の差を二乗し、その合計を用いるもので、これも、この合計値が小さいほど類似し、大きいほど相違することを示すものである。相関係数および共分散については上記式7および式8により求めることができる。
相関係数は、−1から1までの値をとり、その値が1に近づくほど強い正の相関があり、0に近いほど相関が弱く、−1に近づくほど負の相関がある。これは、1に近づくほど類似するパターンであることを意味し、−1に近づくほど反転したパターンに類似したものとなる。このことから、値が大きいほど類似度が高いと判断することができる。共分散は、相関係数に対応することから、その値が大きいほど類似度が高いと判断することができる。
一致度の評価に際して、補間画素の画素値が一致度に影響を与えないように補間画素を一致度の計算から除外するか、比較対象のパターンにおいて同じ位置にある画素の画素値を用いて仮の画素値を設定しておくことが望ましい。なお、類似するパターンは一致度が高い順に複数選択することも可能である。
また、補間画素が画像全体で複数存在する場合、一致度の計算において、今挿入しようとしている補間画素だけでなく、他の補間画素も計算から除外するか、比較対象のパターンの同じ位置にある画素の画素値を用いて仮の画素値を設定しておくことが望ましい。これは、テンプレートとして用いられる基準パターンや比較対象のパターンに今挿入しようとしている補間画素だけではなく、他の補間画素が含まれている場合があり、補間画素は基本的に画素値が欠落しているか、不正な値を保持しているため、一致度の計算に使用されることは好ましくないからである。なお、既に挿入済みの補間画素の画素値は一致度の計算に使用することができる。また、比較対象パターンに他の補間画素が存在する場合、その補間画素が一致度の計算に用いられないように計算から除外するか、基準パターンの同じ位置にある画素の画素値を用いて仮の画素値を設定しておくことが望ましい。
このようにして探索した最も類似するパターンにおいて、テンプレートにおける補間画素の位置に対応する位置にある画素の画素値を取得する。最も類似するパターンのみを用いる場合には、このようにして取得した画素値を補間画素の画素値とすることができる。また、一致度が高い順に選択した複数のパターンを用いる場合には、それら複数のパターンから取得した画素値を合成し、補間画素の画素値を求めることができる。画素値を合成する方法としては、一様な重みにより平均する方法、類似パターンの一致度が高いほど大きな重みとなるように制御した上で加重平均を行う方法を挙げることができる。
ここで、テンプレートマッチングには、二次元テンプレートマッチング、一次元テンプレートマッチングがある。二次元テンプレートマッチングでは、画像内の補間画素近辺、すなわち補間画素の左右や上下、斜め方向にある任意の領域をパターンとして切り出し、そのパターンとテンプレートとの一致度を求めることにより、最も類似するパターンを探索する。この実施形態において、第1画素値生成部72が採用するテンプレートマッチングは二次元テンプレートマッチングである。これに対し、一次元テンプレートマッチングでは、補間画素が存在する1ライン内からパターンを切り出し、一致度を求め、最も類似するパターンを探索する。この二次元テンプレートマッチングと一次元テンプレートマッチングは、異なる補間方法であるため、後述する第2画素値生成部73において採用することができる。
第1画素値生成部72は、テンプレートにおける補間画素の位置に対応する位置の画素の画素値を、探索して得られた最も類似するパターンから取得するが、そのとき、そのパターン内の補間画素の位置に対応する位置の画素以外の画素を近傍画素とし、その近傍画素の画素値も取得する。
第2画素値生成部73は、第1画素値生成部72とは異なる補間方法を用いて、補間画素の画素値を生成する。異なる補間方法として、内挿法を用いることができる。この内挿法には、最近傍補間(0次補間)、線形補間(一次補間)、放物線補間(二次補間)、キュービック補間(三次補間)、多項式補間、スプライン補間、ラグランジュ補間等があり、線形補間やキュービック補間を二次元に拡張したバイリニア補間やバイキュービック補間等を用いることも可能である。
補間画素の画素値の生成に内挿法を用いる場合には、近傍画素の画素値を更新しないことが望ましい。これは、近傍画素の画素値を変更してしまうと、補間画素の画素値が内挿した値でなくなってしまうからである。このため、第2画素値更新部へは、近傍画素の画素値として現在設定されている値を送るか、近傍画素の画素値を変更しないように制御する必要がある。
ここでは、第1画素値生成部72がパターンマッチング法を採用し、第2画素値生成部73が内挿法を採用する構成としているが、第1画素値生成部72が内挿法を採用し、第2画素値生成部73がパターンマッチング法を採用する構成としてもよい。また、同じパターンマッチング法ではあるが、二次元テンプレートマッチングと一次元テンプレートマッチングや、同じ内挿法ではあるが、線形補間とスプライン補間といった異なる補間法を採用することも可能である。
制御部74は、画像データを受け付けるとそれを周期性判定部70および境界判定部71へ送り、周期性判定部70および境界判定部71が判定した結果を受け取り、それに基づき、第1画素値生成部72と第2画素値生成部73のいずれを用いて画素値を生成するかを判断する。具体的には、制御部74は、周期性判定部70において周期性があると判定され、境界判定部71において補間画素が周期領域に存在すると判定された場合に、パターンマッチング法を用いる第1画素値生成部72を採用し、そうでない場合に内挿法を用いる第2画素値生成部73を採用して画素値を生成すると判断することができる。そして、決定した第1画素値生成部72または第2画素値生成部73へ画像のデータを送り、そのいずれかが生成した画素値を受け付け、その画素値を画素値挿入部75へ送る。
画素値挿入部75は、制御部74から送られてきた画素値を、先に画素設定部が設定した補間画素に挿入する。画素値挿入部75は、補間画素にその画素値を設定し、また、既に設定されている場合にはその画素値へ置き換えることにより補間画素へ画素値を挿入する。これにより、補間画素1つ分の補間処理が完了する。
第2画素値更新部は、第1画素値生成部72が生成した近傍画素の画素値を用いて、画像内の対応する近傍画素の画素値(元の画素値)を更新する。画素値を更新する方法としては、生成された近傍画素の画素値で元の画素値を単に置き換える方法のほか、生成された近傍画素の画素値と元の画素値とを加重平均し、導出された画素値で置き換える方法を挙げることができる。加重平均をとる場合、補間画素の距離に応じて重みを変えることができ、例えば、補間画素から距離が遠くなるほど元の画素値の比重が大きくなるように重みを変化させる方法を採用することができる。
画素値を更新する範囲としては、補間画素を中心として左右対称に数画素程度の範囲とすることができる。例えば、上記のようにテンプレートと同じサイズの補間画素を含む範囲等とすることができる。この範囲は、予め固定された値とすることもできるし、周期性判定部70により推定された周期、すなわちテンプレートサイズを決定したのと同様に代表周期を用いて決定することも可能である。なお、境界判定部71において補間画素が周期領域と非周期領域の境界付近に存在すると判定された場合には、近傍画素の画素値を更新しないか、更新する範囲を狭めることが望ましい。非周期領域では一定の画素値が連続している場合があり、その画素値を変更してしまうと、反対にその画素が目立ってしまうことになるからである。
画素設定部が補間画素を複数検出した場合は、上記の各部における処理を補間画素の数だけ繰り返し、補間画素への画素値の挿入および近傍画素の画素値の更新が行われる。
画素補間部33が行う補間処理を、図9に示すフローチャートを参照して簡単に説明する。ステップ900からこの処理を開始し、まず、ステップ905において、画素設定部が、画素値を挿入する対象の補間画素を検出し、補間処理すべき補間画素を設定する。補間画素が複数存在する場合は、例えばその画素が配置されている座標位置に基づいて順に並べ、順に1つを選択し、その1つを設定することができる。
ステップ910において、周期性判定部70が、画素設定部が補間画素を設定したことを受けて、補間画素を含む領域を指定し、その領域内で、画素値の変動に周期性を有するか否かを判定する。続いて、ステップ915において、補間画素が周期領域と非周期領域のどちらに存在するかを判定する。
ステップ920で、境界判定部71が判定した結果を基に、制御部74が補間画素に用いる補間方法を決定する。制御部74は、第1画素値生成部72と第2画素値生成部73のいずれを採用し、補間画素の画素値を生成するかを判断する。例えば、周期性判定部70が周期性ありと判定した場合は、パターンマッチング法と決定し、周期性なしと判定した場合は、内挿法と決定する。
ステップ925で、第1画素値生成部72が採用されたか否かが判断される。ステップ920で決定された補間方法が、パターンマッチング法であれば、その方法を用いて補間処理を行う第1画素値生成部72が採用されたと判断され、それ以外であれば、第1画素値生成部72は採用されないと判断される。
ステップ925で第1画素値生成部72が採用されたと判断された場合、ステップ930へ進み、第1画素値生成部72が用いるパターンマッチング法により類似パターンを探索し、その探索した類似パターンに基づき補間画素へ挿入すべき画素値を生成する。一方、ステップ925で第1画素値生成部72が採用されないと判断された場合、ステップ935へ進み、第2画素値生成部73が用いる内挿法により補間画素の画素値を生成する。これらのステップ930および935では、補間画素の画素値のほか、近傍画素の画素値も生成する。
ステップ940では、第1画素値生成部72または第2画素値生成部73が補間画素の画素値を生成したことを受けて、画素値挿入部75が、補間画素の位置に、生成された補間画素の画素値を挿入する。これにより、補間画素1つ分の補間処理を完了する。ステップ945で、第2画素値更新部が、生成された近傍画素の画素値を用いて画像の近傍画素の画素値を更新する。
ステップ950で、制御部74がすべての補間画素の補間を終えたかを判定する。すべての補間画素の補間を終えていない場合は、ステップ905へ戻り、制御部74が画素設定部に指示し、次の補間画素を設定する。終えている場合は、ステップ955へ進み、この処理を終了する。
画素補間部33は、2つの画素値生成部を備えるものに限定されるものではなく、第3画素値生成部や第4画素値生成部等を備え、最も適切な補間方法を採用し、その方法により補間処理を行う画素値生成部を選択することができるように構成することが可能である。周期性判定部70により周期性の有無を判定できれば、境界判定部71は設けなくてもよい。この実施形態では、画質をより向上させるために近傍画素の画素値も更新するようにしているが、近傍画素については画素値を更新しなくてもよい。
本発明では、上述した画像補正システム、その画像補正システムにより実行される画像補正方法、その方法を実現するためのコンピュータ可読なプログラムのほか、このプログラムを、FD、CD、DVD、SDカード、USBメモリ等の記録媒体に格納し、そのプログラムが記録された記録媒体として提供することも可能である。
これまで本発明を、画像補正システム、画像補正方法およびプログラムとして上述した実施の形態をもって説明してきたが、本発明は上述した実施の形態に限定されるものではなく、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
そして、これらのシステム、方法、プログラムを提供することにより、センサチップの組み付け誤差に伴う画像の歪みを補正することができる。また、センサチップ間にギャップが存在することにより発生する欠落した画素や、不正な画素値を有する画素を補間することもでき、歪みや欠落した画素のない充分に復元した、充分な画質の画像を提供することができる。