特に、文字放送などで送信される画像は、フォントジェネレータで生成された文字領域、圧縮された写真領域および背景領域が混在しており、画像データ全体について圧縮アーティファクツ処理を行うと、文字領域ではエッジ部分がぼけて再現性が低下してしまう。したがって、入力画像データの背景領域、文字領域、写真領域を検出して分割し、それぞれの領域に適した処理を行うことが望ましい。特許文献1記載のループフィルタリング方法では、フィルターウインドー内にエッジ情報を含んでいるかどうかに基づいてフィルタリングを行っているため、圧縮アーティファクツが発生しない文字領域などに対してもフィルタリングを行ってしまう問題がある。
また、フィルターウインドー内にエッジ情報を含んでいるかどうかの判断は、フィルタリングの加重値を決定するためにのみ用いられている。したがって、写真領域に圧縮アーティファクツ除去処理を行うための領域分割処理と、圧縮アーティファクツ除去処理とが独立した処理となっている。
本発明の目的は、高精度に領域分割処理を行い、画質を向上させることができる画像処理装置および該画像処理装置を備える画像形成装置、ならびに画像処理方法、画像処理プログラムおよびコンピュータ読み取り可能な記録媒体を提供することである。
本発明は、複数の画素からなる画像を示す画像データが入力され、入力された画像データに基づいて画像を構成する各画素が、文字領域、背景領域およびその他領域のいずれの領域に属するかを判定し、画像データの領域分割を行う領域分割部と、符号化された画像データを復号したときに生じるノイズを除去するノイズ除去処理手段とを備える画像処理装置において、
前記領域分割部は、画像データから算出した第1の特徴量に基づいて領域分割を行い、
前記ノイズ除去処理手段は、前記第1の特徴量から算出した第2の特徴量に基づいて複数の平滑化フィルタから1つの平滑化フィルタを選択し、選択した平滑化フィルタを用いて平滑化処理を施すことを特徴とする画像処理装置である。
本発明に従えば、領域分割部は、複数の画素からなる画像を示す画像データに基づいて、画像を構成する各画素が、文字領域、背景領域およびその他領域のいずれの領域に属するかを判定し、画像データの領域分割を行う。ノイズ除去処理手段は、符号化された画像データを復号したときに生じるノイズを除去する。
ノイズ除去処理手段は、領域分割部が領域分割を行う際に算出した第1の特徴量から第2の特徴量を算出する。算出した第2の特徴量に基づいて複数の平滑化フィルタから1つの平滑化フィルタを選択し、選択した平滑化フィルタを用いて平滑化処理を施す。
このように、領域分割処理のために算出した特徴量をノイズ除去処理に用いているので、従来のように領域分割処理とノイズ除去処理とを独立に行う場合に比べて、計算量を削減することができる。
また本発明は、複数の画素からなる画像を示す画像データが入力され、入力された画像データに基づいて画像を構成する各画素が、文字領域、背景領域およびその他領域のいずれの領域に属するかを判定し、画像データの領域分割を行う領域分割部と、符号化された画像データを復号したときに生じるノイズを除去するノイズ除去処理手段とを備える画像処理装置において、
前記領域分割部は、
注目画素とその周辺画素とからなる画素ブロックの特徴量を各画素の画素値を用いて求め、求めた特徴量に基づく閾値を生成し、生成された閾値と各画素の画素値とを比較して注目画素を2つの画素集合にクラス分けし、前記クラス分けによって分類された画素集合に対して、前記閾値とは異なる閾値でさらにクラス分けを行うことで複数段階のクラス分けを行い、段階ごとのクラス分けの結果を示すクラス情報を生成するクラス情報生成手段と、
クラス情報生成手段が生成した複数の閾値に基づいて、注目画素が背景領域に属するか否かを判断し、その判断結果を示すオブジェクト情報を生成するオブジェクト情報生成手段と、
同じクラス情報を有し、所定の方向に互いに隣接する画素からなるクラスランの画素数であるクラスランレングスと、同じオブジェクト情報を有し、所定の方向に互いに隣接する画素からなるオブジェクトランの画素数であるオブジェクトランレングスとを前記段階ごとに算出するランレングス算出手段と、
前記クラスランレングスに基づいて、クラスランに含まれる画素が文字領域に属するか否かを前記段階ごとに推定する文字領域推定手段と、
オブジェクト情報に基づいて画素が背景領域に属するか否かを判定するとともに、前記オブジェクトランに含まれる画素のうち、前記文字領域推定手段によって文字領域に属すると推定された画素の前記段階ごとの割合に基づいて、オブジェクトランに含まれる画素が文字領域およびその他領域のいずれに属するかを判定する領域判定手段とを備え、
前記ノイズ除去処理手段は、前記領域判定手段によってその他領域に属すると判定された画素を注目画素とし、周辺画素が属するランのクラスランレングスに基づいて、複数の平滑化フィルタから1つの平滑化フィルタを選択し、選択した平滑化フィルタを用いて注目画素に平滑化処理を施すことを特徴とする画像処理装置である。
本発明に従えば、領域分割部は、複数の画素からなる画像を示す画像データに基づいて、画像を構成する各画素が、文字領域、背景領域およびその他領域のいずれの領域に属するかを判定し、画像データの領域分割を行う。
領域分割部は、上記のような構成となっており、まずクラス情報生成手段が、注目画素とその周辺画素とからなる画素ブロックの特徴量を各画素の画素値を用いて求め、求めた特徴量に基づく閾値を生成し、生成された閾値と各画素の画素値とを比較して注目画素のクラス分けを行う。このクラス分けによって各画素は、2つの画素集合に分類され、分類された画素集合の各画素に対して前記閾値とは異なる閾値でさらにクラス分けを行う。この処理を繰り返すことで、複数段階のクラス分けを行う。複数段階のクラス分けの結果は、クラス情報として生成される。クラス情報とは、上記のようにクラス分けによって、分類された際に各画素がいずれのクラス、すなわち明度値などの画素値が閾値以上のクラスまたは閾値未満のクラスに属するかを示す情報である。
たとえば、第1の段階では、1回目のクラス分けによって、2つのクラスに分類され、第2の段階では、これら2つのクラスの画素がさらにクラス分けされて4つのクラスに分類される。したがって、第1の段階のクラス情報は、各画素が2つのクラスのいずれに属するか示し、第2の段階のクラス情報は、各画素が4つのクラスのいずれに属するかを示す。
オブジェクト情報生成手段では、クラス情報生成手段が生成した複数の閾値に基づいて、注目画素が背景領域に属するか否かを判断し、その判断結果を示すオブジェクト情報を生成する。
このようにして、クラス情報およびオブジェクト情報が生成されると、ランレングス算出手段は、クラスランレングスとオブジェクトランレングスとを前記段階ごとに算出する。クラスランレングスは、同じクラス情報を有し、所定の方向に互いに隣接する画素からなるクラスランの画素数であり、オブジェクトランレングスは、同じオブジェクト情報を有し、所定の方向に互いに隣接する画素からなるオブジェクトランの画素数である。つまり、クラスランレングスは、クラス分けによって同じクラスに分類された画素が連続して並んだ場合の画素数を示し、オブジェクトランレングスは、背景領域に属する画素が連続して並んだ場合、もしくは背景画素には属しない画素(文字領域またはその他領域に属する画素)が連続して並んだ場合の画素数を示している。
次に、ランレングス算出手段によって算出されたクラスランレングスに基づいて、クラスランに含まれる画素が文字領域に属するか否かを前記段階ごとに判断するのであるが、クラスランレングスのみで画素が文字領域に属するか否かを判定すると、判定精度が低いものとなってしまう場合がある。したがって、最終的な判定は、後述の領域判定手段によって行い、文字領域推定手段では、クラスランレングスに基づいて、文字領域に属する可能性が高い画素を段階ごとに推定する。
以上のようにして得られた各手段の動作結果に基づいて、領域判定手段が画素の属する領域を判定する。
まず、オブジェクト情報生成手段によって生成されたオブジェクト情報に基づいて、画素が背景領域に属するか否かを判定する。背景領域に属さないと判定された画素については、次のようにして文字領域に属するか、その他領域に属するかを判定する。
背景領域に属しない画素を含むオブジェクトランについて、このオブジェクトランに含まれる画素のうち、文字領域推定手段によって文字領域に属すると推定された画素の割合を前記段階ごとに算出する。文字領域では、1つのオブジェクトランの中に、同じ段階で文字領域と推定された画素が含まれる割合が多いことから、文字領域に属すると推定された画素の段階ごとの割合に基づいて、オブジェクトランが文字領域に属する画素からなるオブジェクトランであるか否かを判断する。文字領域に属する画素からなるオブジェクトランであれば、そのオブジェクトランに含まれる画素を文字領域に含まれる画素として判定する。文字領域に属する画素からなるオブジェクトランでなければ、そのオブジェクトランに含まれる画素をその他領域に含まれる画素として判定する。
ノイズ除去処理手段は、領域判定手段によってその他領域に属すると判定された画素を注目画素とし、注目画素を中心として周辺画素とからなる画素ブロックを設定する。この画素ブロックの大きさは、たとえば7×7画素である。
画素ブロック内の画素で、自らが属するランのクラスランレングスがゼロの画素、すなわちクラス情報が変化する箇所の画素の数を計数し、計数値によって平滑化フィルタを選択する。平滑化フィルタの例としては、フィルタの範囲内の画素値を平均して、この平均値を新たに注目画素の画素値とする平均化フィルタなどがある。
注目画素とその周辺画素とからなる画素ブロックの特徴量に基づく閾値を用いて注目画素のクラス分けを行っているので、固定閾値を用いてクラス分けを行う場合に比べ、周辺画素の影響を反映させたクラス情報およびオブジェクト情報を生成することができる。オブジェクト情報の判定は、オブジェクト情報に基づいて精度よく行われる。文字領域の判定は、クラス情報およびオブジェクト情報を用いて、クラスランレングスに基づく推定と、オブジェクトランに含まれる推定画素数の割合とから判定しているので、精度よく文字領域に属する画素を判定できる。
このように、各領域の判定精度が高いので、画像データの領域分割精度を向上させることができ、高精度で分離されたその他領域にのみノイズ除去処理を行うので、誤って文字領域を平滑化することなどがなく、画質の向上を実現することができる。
また、領域分割処理のために算出したクラスランレングスをノイズ除去処理に用いているので、従来のように領域分割処理とノイズ除去処理とを独立に行う場合に比べて、計算量を削減することができる。
また本発明は、前記ノイズ除去処理手段は、クラスランレングスに基づいて、注目画素がエッジ部、エッジ周辺部または平坦部のいずれに属するかを判定する属性判定を行い、
エッジ部に属する場合は、平滑化処理を施さず、
エッジ周辺部に属する場合は、リンギングノイズを除去するための平滑化フィルタを選択し、
平坦部に属する場合は、ブロックノイズを除去するための平滑化フィルタを選択することを特徴とする。
本発明に従えば、ノイズ除去処理手段は、クラスランレングスに基づいて、注目画素がエッジ部、エッジ周辺部または平坦部のいずれに属するかを判定する属性判定を行う。
リンギングノイズは、エッジ部に沿ってエッジ周辺部に発生する。また、ブロックノイズは、画像を圧縮する際の処理単位ブロックの境界に発生し、平坦部で最も視認されやすい。したがって、注目画素が、エッジ周辺部に属する場合は、リンギングノイズを除去するための平滑化フィルタを選択して平滑化し、平坦部に属する場合は、ブロックノイズを除去するための平滑化フィルタを選択して平滑化する。エッジ部に属する画素を平滑化するとエッジがぼけて画質が低下するため、平滑化処理は施さない。
これにより、その他領域の画素に対して適切な平滑化を施し、ノイズを除去して画質の向上を実現することができる。
また本発明は、前記ノイズ除去処理手段は、前記段階ごとに属性判定を行い、段階ごとに得られた判定結果の組み合わせに基づいて最終的な属性判定を行うことを特徴とする。
本発明に従えば、ノイズ除去処理手段は、段階ごとに属性判定を行い、段階ごとに得られた判定結果の組み合わせに基づいて最終的な属性判定を行う。
同じ注目画素に対して複数の段階で判定を行い、複数の判定結果から最終的な判定を行うことで判定精度が向上する。
これにより、誤った平滑化処理を施すことが無く、より適切なノイズ除去処理を行い、さらなる画質の向上を実現することができる。
また本発明は、前記ノイズ除去処理手段は、最終的な属性判定を行うときに、エッジ部、複数のエッジ周辺部または複数の平坦部のいずれに属するかを判定することを特徴とする。
本発明に従えば、ノイズ除去処理手段は、最終的な属性判定を行うときに、エッジ部、複数のエッジ周辺部または複数の平坦部のいずれに属するかを判定する。
リンギングノイズのノイズ強度は、近傍にあるエッジのエッジ強度に依存する。したがって、最終的な判定結果として、エッジ周辺部を、近傍にあるエッジの強度が弱い場合と、近傍にあるエッジの強度が強い場合の複数とし、それぞれに応じた平滑化フィルタを選択する。
また、平坦部には、エッジを全く含まない場合と、弱いエッジを含む場合とがある。したがって、最終的な判定結果として、平坦部を、エッジを全く含まない場合と、弱いエッジを含む場合の複数とし、それぞれに応じた平滑化フィルタを選択する。
これにより、最適な平滑化フィルタを選択してより適切なノイズ除去処理を行い、さらなる画質の向上を実現することができる。
また本発明は、上記の画像処理装置と、
画像処理装置によって処理された画像データを出力する画像出力装置とを備えることを特徴とする画像形成装置である。
本発明に従えば、上記の画像処理装置によって処理された画像データを、画像出力装置から出力する。
これにより、画像データが高精度で領域分割され、その他領域に適切なノイズ除去処理が施された画像データを出力することができるので、高画質な静止画像を形成することができる。
また本発明は、複数の画素からなる画像を示す画像データが入力され、入力された画像データに基づいて画像を構成する各画素が、文字領域、背景領域およびその他領域のいずれの領域に属するかを判定し、画像データの領域分割を行う領域分割工程と、符号化された画像データを復号したときに生じるノイズを処理するノイズ除去処理工程とを備える画像処理方法において、
前記領域分割工程は、
注目画素とその周辺画素とからなる画素ブロックの特徴量を各画素の画素値を用いて求め、求めた特徴量に基づく閾値を生成し、生成された閾値と画素値とを比較して注目画素を2つの画素集合にクラス分けし、前記クラス分けによって分類された画素集合に対して、前記閾値とは異なる閾値でさらにクラス分けを行うことで複数段階のクラス分けを行い、段階ごとのクラス分けの結果を示すクラス情報を生成するクラス情報生成工程と、
クラス情報生成工程で生成した複数の閾値に基づいて、注目画素が背景領域に属するか否かを判断し、その判断結果を示すオブジェクト情報を生成するオブジェクト情報生成工程と、
同じクラス情報を有し、所定の方向に互いに隣接する画素からなるクラスランの画素数であるクラスランレングスと、同じオブジェクト情報を有し、所定の方向に互いに隣接する画素からなるオブジェクトランの画素数であるオブジェクトランレングスとを前記段階ごとに算出するランレングス算出工程と、
前記クラスランレングスに基づいて、クラスランに含まれる画素が文字領域に属するか否かを前記段階ごとに推定する文字領域推定工程と、
オブジェクト情報に基づいて画素が背景領域に属するか否かを判定するとともに、前記オブジェクトランに含まれる画素のうち、前記文字領域推定工程によって文字領域に属すると推定された画素の前記段階ごとの割合に基づいて、オブジェクトランに含まれる画素が文字領域およびその他領域のいずれに属するかを判定する領域判定工程とを有し、
前記ノイズ除去処理工程では、前記領域判定工程でその他領域に属すると判定された画素を注目画素とし、周辺画素が属するランのクラスランレングスに基づいて、複数の平滑化フィルタから1つの平滑化フィルタを選択し、選択した平滑化フィルタを用いて注目画素に平滑化処理を施すことを特徴とする画像処理方法である。
本発明に従えば、領域分割工程では、複数の画素からなる画像を示す画像データに基づいて、画像を構成する各画素が、文字領域、背景領域およびその他領域のいずれの領域に属するかを判定し、画像データの領域分割を行う。
領域分割工程は、上記のような複数の工程からなり、まずクラス情報生成工程で注目画素とその周辺画素とからなる画素ブロックの特徴量を各画素の画素値を用いて求め、求めた特徴量に基づく閾値を生成し、生成された閾値と各画素の画素値とを比較して注目画素のクラス分けを行う。このクラス分けによって各画素は、2つの画素集合に分類され、分類された画素集合の各画素に対して前記閾値とは異なる閾値でさらにクラス分けを行う。この処理を繰り返すことで、複数段階のクラス分けを行う。複数段階のクラス分けの結果は、クラス情報として生成される。
たとえば、第1の段階では、1回目のクラス分けによって、2つのクラスに分類され、第2の段階では、これら2つのクラスの画素がさらにクラス分けされて4つのクラスに分類される。したがって、第1の段階のクラス情報は、各画素が2つのクラスのいずれに属するか示し、第2の段階のクラス情報は、各画素が4つのクラスのいずれに属するかを示す。
オブジェクト情報生成工程では、クラス情報生成工程で生成した複数の閾値に基づいて、注目画素が背景領域に属するか否かを判断し、その判断結果を示すオブジェクト情報を生成する。
このようにして、クラス情報およびオブジェクト情報が生成されると、ランレングス算出工程で、クラスランレングスとオブジェクトランレングスとを前記段階ごとに算出する。
次に、ランレングス算出工程で算出されたクラスランレングスに基づいて、クラスランに含まれる画素が文字領域に属するか否かを前記段階ごとに判断するのであるが、クラスランレングスのみで画素が文字領域に属するか否かを判定すると、判定精度が低いものとなってしまう場合がある。したがって、最終的な判定は、後述の領域判定工程によって行い、文字領域推定工程では、クラスランレングスに基づいて、文字領域に属する可能性が高い画素を段階ごとに推定する。
以上のようにして得られた各手段の動作結果に基づいて、領域判定工程で画素の属する領域を判定する。
まず、オブジェクト情報生成工程で生成されたオブジェクト情報に基づいて、画素が背景領域に属するか否かを判定する。背景領域に属さないと判定された画素については、次のようにして文字領域に属するか、その他領域に属するかを判定する。
背景領域に属しない画素を含むオブジェクトランについて、このオブジェクトランに含まれる画素のうち、文字領域推定工程で文字領域に属すると推定された画素の割合を前記段階ごとに算出する。文字領域では、1つのオブジェクトランの中に、同じ段階で文字領域と推定された画素が含まれる割合が多いことから、文字領域に属すると推定された画素の段階ごとの割合に基づいて、オブジェクトランが文字領域に属する画素からなるオブジェクトランであるか否かを判断する。文字領域に属する画素からなるオブジェクトランであれば、そのオブジェクトランに含まれる画素を文字領域に含まれる画素として判定する。文字領域に属する画素からなるオブジェクトランでなければ、そのオブジェクトランに含まれる画素をその他領域に含まれる画素として判定する。
ノイズ除去処理工程では、領域判定工程でその他領域に属すると判定された画素を注目画素とし、注目画素を中心として周辺画素とからなる画素ブロックを設定する。この画素ブロックの大きさは、たとえば7×7画素である。
画素ブロック内の画素が属するランのクラスランレングスがゼロの画素、すなわちクラス情報が変化する箇所の画素数を計数し、計数値に応じて平滑化フィルタを選択する。平滑化フィルタの例としては、フィルタの範囲内の画素値を平均して、この平均値を新たに注目画素の画素値とする平均化フィルタなどがある。
以上のように、注目画素とその周辺画素とからなる画素ブロックの特徴量に基づく閾値を用いて注目画素のクラス分けを行っているので、固定閾値を用いてクラス分けを行う場合に比べ、周辺画素の影響を反映させたクラス情報およびオブジェクト情報を生成することができる。オブジェクト情報の判定は、オブジェクト情報に基づいて精度よく行われる。文字領域の判定は、クラス情報およびオブジェクト情報を用いて、クラスランレングスに基づく推定と、オブジェクトランに含まれる推定画素数の割合とから判定しているので、精度よく文字領域に属する画素を判定できる。
また、各領域の判定精度が高いので、画像データの領域分割精度を向上させることができ、高精度で分離されたその他領域にのみノイズ除去処理を行うので、誤って文字領域を平滑化することなどがなく、画質の向上を実現することができる。
また、領域分割処理のために算出したクラスランレングスをノイズ除去処理に用いているので、従来のように領域分割処理とノイズ除去処理とを独立に行う場合に比べて、計算量を削減することができる。
また本発明は、上記の画像処理方法をコンピュータに実行させるための画像処理プログラムである。
本発明に従えば、上記の画像処理方法をコンピュータに実行させるための画像処理プログラムとして提供することができる。
また本発明は、上記の画像処理方法をコンピュータに実行させるための画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体である。
本発明に従えば、上記の画像処理方法をコンピュータに実行させるための画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体として提供することができる。
本発明によれば、領域分割処理のために算出した特徴量をノイズ除去処理に用いているので、従来のように領域分割処理とノイズ除去処理とを独立に行う場合に比べて、計算量を削減することができる。
また本発明によれば、注目画素とその周辺画素とからなる画素ブロックの特徴量に基づく閾値を用いて注目画素のクラス分けを行っているので、固定閾値を用いてクラス分けを行う場合に比べ、周辺画素の影響を反映させたクラス情報およびオブジェクト情報を生成することができる。オブジェクト情報の判定は、オブジェクト情報に基づいて精度よく行われる。文字領域の判定は、クラス情報およびオブジェクト情報を用いて、クラスランレングスに基づく推定と、オブジェクトランに含まれる推定画素数の割合とから判定しているので、精度よく文字領域に属する画素を判定できる。
このように、各領域の判定精度が高いので、画像データの領域分割精度を向上させることができ、高精度で分離されたその他領域にのみノイズ除去処理を行うので、誤って文字領域を平滑化することなどがなく、画質の向上を実現することができる。
また、領域分割処理のために算出したクラスランレングスをノイズ除去処理に用いているので、従来のように領域分割処理とノイズ除去処理とを独立に行う場合に比べて、計算量を削減することができる。
また本発明によれば、その他領域の画素に対して適切な平滑化を施し、ノイズを除去して画質の向上を実現することができる。
また本発明によれば、誤った平滑化処理を施すことが無く、より適切なノイズ除去処理を行い、さらなる画質の向上を実現することができる。
また本発明によれば、最適な平滑化フィルタを選択してより適切なノイズ除去処理を行い、さらなる画質の向上を実現することができる。
また本発明によれば、画像データが高精度で領域分割され、その他領域に適切なノイズ除去処理が施された画像データを出力することができるので、高画質な静止画像を形成することができる。
また本発明によれば、上記の画像処理方法をコンピュータに実行させるための画像処理プログラムおよびこの画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体として提供することができる。
図1は、本発明の実施の一形態である画像形成装置1の構成を示すブロック図である。画像形成装置1は、画像処理装置2と画像出力装置であるプリンタ9とからなり、画像処理装置2は、入力部3、領域分割部4、補正部5、解像度変換部6、色補正部7およびハーフトーン部8からなる。
本実施形態における画像形成装置1は、デジタルテレビ放送などで送信される画像データを印刷して出力するデジタルプリンタとして説明する。印刷して出力するためには、まず有線ケーブルまたは放送用無線アンテナなどを介して送られてきたデジタルテレビ放送信号を、チューナなどの入力部3によって、入力多値画像データ(以下では単に画像データと呼ぶ。)に変換する。画像データは、格子状に配列された複数の画素からなり、各画素は明度値や色度などの画素値を有している。
次に、領域分割部4により、画像データの各画素が文字領域、背景領域、写真領域のいずれの領域に属するかを判定し、画像データを文字領域、背景領域、その他の領域である写真領域に分割した後、補正部5によりそれぞれの領域に適した補正処理を行う。
補正部5は、文字にじみ補正処理手段5a、圧縮アーティファクツ除去処理手段5b、ノイズ除去処理手段5cからなり、文字領域であると判定された領域については、文字にじみ補正処理手段5aが文字にじみおよび文字欠けを補正する処理を行い、写真領域には、圧縮アーティファクツ除去処理手段5bがフィルタ処理によって圧縮アーティファクツを除去する処理を行い、また、背景領域には、ノイズ除去処理手段5cが雑音成分を除去するような処理を行う。圧縮アーティファクツ除去処理手段5bによるフィルタ処理の詳細については、後述する。
補正されて画質改善された画像データは、解像度変換部6によって、プリンタ9の解像度に合わせて解像度変換処理される。色補正部7が、解像度変換処理された画像データの色空間をデバイス色空間に変換した後、最後にハーフトーン部8が中間調処理を行い、プリンタ9に出力する。プリンタ9は、たとえば、電子写真方式やインクジェット方式を用いて画像処理装置2から出力された画像データを紙などの記録媒体に印刷する。
なお、以上の処理は不図示のCPU(Central Processing Unit)により制御される。画像処理装置2とプリンタ3とは、接続ケーブルによって直接接続されていてもよいし、LAN(Local Area Network)などのネットワークを介して接続されていても良い。このとき、画像処理装置2はパーソナルコンピュータ(PC)などであり、プリンタ3はファクシミリ装置やコピー装置または複写機能およびファックス機能を備える複合機などでもよい。
図2は、領域分割部4の構成を示すブロック図である。領域分割部4は、色変換部10、クラスタリング部11、ランレングス算出部12、文字領域推定部13および領域判定部14からなる。
領域分割部4では、写真領域、背景領域、文字領域が混在する画像データに対して、色変換部10が所定の色空間に変換した後、クラスタリング部11が再帰的クラス分け処理によって画像データのクラス情報、および、オブジェクト情報を生成する。そして、ランレングス算出部12が、クラス情報およびオブジェクト情報それぞれについて、水平方向に同一情報を有する画素が連続するランレングスを算出する。
次に、文字領域推定部13は、クラス情報のランレングスに基づいて文字領域に属する画素を推定する。そして、領域判定部14は、オブジェクト情報のランが連続する各オブジェクト領域において、文字領域に属すると推定された画素の含有率に基づいて、オブジェクト領域が文字領域、背景領域、写真領域のどの領域に属するかを判定する。
なお、本実施形態では、領域判定の判定結果のみならず、ランレングス算出部12で算出されたクラス情報のランレングスが圧縮アーティファクツ除去処理手段5bに出力され、圧縮アーティファクツ除去処理手段5bでは、これらを用いてフィルタ処理を行う。
以下では、各部位の動作について詳細に説明する。まず色変換部10において、入力された画像データがRGB色空間画像であれば、(R+G+B)/3を算出して、1つのデータに統一できるよう変換する。
また、他の色変換方法として、入力されたRGB色空間画像を均等色空間であるL*a*b*カラースペースCIE 1976(CIE:Commission Internationale de l'Eclairage:国際照明委員会。L*:明度、a*,b*:色度)色空間に変換し、そのL*信号を用いる。図3は、入力画像(図3(a))と、色空間変換によって生成したL*信号からなる画像(図3(b))の例を示す図である。
クラスタリング部11は、画像データに対して再帰的クラス分け処理を行い、クラス情報およびオブジェクト情報を生成するクラス情報生成手段およびオブジェクト情報生成手段である。クラス情報とは、再帰的クラス分け処理によって、分類された際に各画素がいずれのクラス、すなわち明度値などの画素値が閾値以上のクラスまたは閾値未満のクラスに属するかを示す情報である。オブジェクト情報とは、各画素が背景領域に属するか、文字領域および写真領域である非背景領域(オブジェクト領域)に属するかを示す情報である。
再帰的クラス分け処理は、注目画素を含む画素ブロックの特徴量を基に閾値を算出し、算出した閾値を用いて注目画素をクラス分けする処理である。まず、画素ブロックとしては、中心となる注目画素とその周辺画素となる8画素を含む3×3画素の画素ブロックを用いる。
図4は、3×3画素の画素ブロックを示す図である。注目画素C1の座標を(x,y)とすると、周辺画素P1〜P8の座標は、それぞれP1(x-1,y-1),P2(x,y-1),P3(x+1,y-1),P4(x-1,y),P5(x+1,y),P6(x-1,y+1),P7(x,y+1),P8(x+1,y+1)となる。特徴量としては、近傍平均値、近傍エッジ量および近傍閾値を用いる。近傍平均値Avgは、図4に示したウインドウ内の9画素の画素値の平均として求める。また、エッジ量については図5に示すようなprewittオペレータ(プリヴィットフィルター)を用いる。3×3画素の画素値を抽出し、画素値にマトリクス係数を畳み込むことで、エッジ量を算出する。図5(a)が垂直方向用オペレータ、図5(b)が水平方向用オペレータである。それぞれのオペレータを用いることで、垂直方向エッジedge_v量(x, y)および水平方向エッジ量edge_h(x, y)を算出することができる。
そして、上記で求めた近傍平均値Avg、垂直方向エッジ量edge_v、水平方向エッジ量edge_h、および近傍閾値(すでにクラス分けされた周辺画素の閾値)を用いて動的に注目画素の閾値を決定する。領域分離の精度を高めるために、画像のエッジ部では、クラスを変化させるように、主に近傍平均値を閾値として用い、画像の平坦部では、クラスを変化させないように、主に近傍閾値を用いてクラス分けする。
そこで、閾値を、エッジ量を重み係数として用いた線形補間により算出する。以下に一般的な線形補間式を示す。
Y=(1−a)×X1+a×X2 (1)
ただし、aの範囲は0≦a≦1である。
(1)式において、重み係数aをエッジ量、X1を近傍閾値、X2を近傍平均値として閾値Yを算出することにより、エッジ部では主に近傍平均値をクラス分けの閾値として用い、平坦部では、主に近傍閾値を閾値として用いることができる。
そこで、以下の算出式を用いてエッジ量Edgeを算出する。
(1)式を用いて線形補間により閾値を算出するためには、重み係数であるエッジ量の範囲が、0≦Edge≦1である必要があるが、(2)式で算出されるエッジ量Edgeは、0≦Edge≦1の範囲とはならない。したがって、エッジ量Edgeに対して最大値Wを設け、最大値で除算することで0≦Edge/W≦1の範囲とすることができる。
エッジ量Edgeの最大値Wは、以下の(3)式により設定する。
Edge=Edge>W ? W:Edge (3)
(3)式は、Edgeとして、条件を満たすときには前者を、条件を満たさない場合には後者の値を用いることを意味する。つまり、エッジ量EdgeがWより大きい時はEdge=Wとし、W以下の時は、Edgeをそのまま用いる。
本実施形態における再帰的クラス分け処理は、注目画素とその周辺画素とからなる3×3画素の画素ブロックにおいて、エッジ量、近傍平均値および近傍閾値などの特徴量を求め、求めた特徴量に基づく閾値を生成して注目画素のクラス分けを行う。さらに、クラス分けによって分類された各クラスの画素に対して、異なる閾値でさらにクラス分けを行うことで複数段階(レベル)のクラス分けを行う。また、本実施形態では再帰レベルを3とし、段階的に、強いエッジ部分をクラスの境界として分割するレベル1、比較的強いエッジ部分をクラスの境界として分割するレベル2、および、弱いエッジ部分をクラスの境界として分割するレベル3の3つのレベルで分割することとなる。強いエッジ部分とは、エッジを挟んだ両側の画素間の画素値の差が大きい部分であり、弱いエッジ部分とは、エッジを挟んだ両側の画素間の画素値の差が小さい部分である。
したがって、複数レベルの再帰的クラス分け処理を実現するためにエッジ量の下限値を設ける。
下限値をWの関数LOWER_VAL(W)とすると、下限値は以下の(4)式により算出される。
Edge=Edge<LOWER_VAL(W) ? 0:Edge (4)
このとき、エッジ量EdgeがLOWER_VAL(W)より小さい時はEdge=0とし、LOWER_VAL(W)以上の時は、Edgeをそのまま用いる。
関数LOWER_VAL(W)は、たとえば以下のようなWの関数とする。
LOWER_VAL(W)=32×W/128 (5)
(2)〜(4)式により算出したエッジ量Edge、近傍平均値Avg、および、近傍閾値th(x-1,y),th(x,y-1)を(1)式に代入することにより、注目画素における閾値th(x,y)を算出することができる。ここで、座標(x-1,y)は周辺画素のうち注目画素C1の左隣の画素P4の座標を示し、座標(x,y-1)は周辺画素のうち上の画素P2の座標を示している。したがって、th(x-1,y)は注目画素の左隣の画素P4をクラス分けしたときの閾値を示し、th(x,y-1)は注目画素の上の画素P2をクラス分けしたときの閾値を示す。
(7)式は四捨五入を表す。閾値th(x,y)は整数であることから、TH/Wに0.5を加えることにより、四捨五入を実現することができる。しかしながら、整数演算において、除算を行った後に0.5を加える場合、処理量が増加するため、除算における分母を2で割った値を分子に加えた後、分母で割ることにより四捨五入を実現するのが一般的である。
実際にクラス分け処理を行う手順としては、画像データの各画素を行方向(主走査方向)に処理を繰り返して走査する。1ラインの処理が終われば列方向(副走査方向)に処理の対象ラインを移動し、再度主走査方向にクラス分け処理を行う。
前述のように閾値th(x,y)を算出するためには、近傍閾値th(x-1,y),th(x,y-1)が必要であるが、最初のラインをクラス分け処理する場合、注目画素の上の画素が存在しないので、近傍閾値th(x,y-1)を用いることができない。また、ラインを左から右へ順次クラス分け処理を行うときに、最初の注目画素、すなわち左端の画素には左隣の画素が存在しないため、近傍閾値th(x-1,y)を用いることができない。したがって、予め初期閾値を設定し、近傍画素が存在しない場合には、設定した初期閾値を近傍閾値th(x,y-1)および近傍閾値th(x-1,y)として閾値th(x,y)を算出する。
以下では、画素値、たとえば明度値の範囲を0(黒)〜255(白)として、初期閾値を128とする。なお、他の初期閾値としては、たとえば画像データ全体の平均画素値などを用いてもよい。
また、閾値th(x,y)を算出するために、近傍閾値th(x-1,y),th(x,y-1)を用いることから、ラインを主走査方向に走査するときに、常に左から右へクラス分け処理を行うと、閾値th(x,y)は、注目画素の左隣の画素の近傍閾値th(x-1,y)の影響を受けることになり、適切なクラス分け処理が行われない場合がある。したがって、所定のライン毎に、ラインの左から右への処理と、右から左への処理とを入れ換えてクラス分け処理を行う。ラインの右から左へクラス分け処理を行う場合は、(6)式に代入する近傍閾値を、近傍閾値th(x-1,y)から近傍閾値th(x+1,y)に変更すればよい。これにより、閾値th(x,y)は、上の画素、および左右の画素を平均的に考慮した閾値として算出することができる。
さらに、クラスタリング部11へ入力される画像データとして、明度値など1つの画素値のみでなく、他に色差などを入力し、エッジ量算出に、色差のエッジ量を付加することにより、色差も考慮したクラス分け処理を行うことができる。
また、画像データ全体のダイナミックレンジ(画素値の最大値と最小値との差)を算出し、以下の式によりLOWER_VAL(W)を算出することにより、より画像に適応したクラス分け処理を行うことができ、その結果、処理精度を向上することが可能となる。
Dはダイナミックレンジを表す。
これは、画像におけるエッジ量がダイナミックレンジと大きく関係しており、ダイナミックレンジが狭い(Dが小さい)画像はエッジが検出されにくく、エッジ量算出時における下限値をダイナミックレンジに合わせて変更することにより、エッジが検出されにくい画像に対応するためである。
本実施形態で行われる画像処理は、ラスタ処理であるため、注目画素とエッジ部との位置関係によって同じ平坦部の画素であっても閾値が異なる。たとえば、注目画素の下にエッジ部がある場合は平坦部が連続しており、前述の(6),(7)式に示すように、注目画素の左隣および上の周辺画素、すなわち同じ平坦部の近傍閾値を用いて閾値を算出するのに対し、注目画素の上にエッジ部がある場合は注目画素の上の周辺画素がエッジ画素であるため、エッジ画素および平坦部の画素の近傍閾値を用いて閾値を算出することになる。したがって、同じ平坦部の画素であってもエッジ部との位置関係によって閾値が異なることとなる。図6(a)に図3に示した画像データの各画素における(6),(7)式で求めた閾値の分布を示す。背景部分および下部の写真内の陸地や海の部分などの平坦部で閾値の変化が生じていることが分かる。
そこで、注目画素とエッジ部との位置関係によって、クラス分け処理の閾値の算出方法を変える。まず、注目画素をラインの左から右へ1画素ごとにクラス分け処理を行う場合について説明する。
図7(a)に示すように、周辺画素のうち注目画素の上の画素のみがエッジ画素であり、注目画素の左右にはエッジ画素が存在しない場合には、注目画素の左の画素がクラス分けを行ったときの閾値th(x-1,y)をそのまま注目画素の閾値th(x,y)とする。図7(b)に示すように、周辺画素のうち注目画素の上にはエッジ画素が存在せず、注目画素の左右の画素がエッジ画素である場合には、注目画素の上の画素がクラス分けを行ったときの閾値th(x,y-1)をそのまま注目画素の閾値th(x,y)とする。
図7(c)に示すように、周辺画素にエッジ画素が存在しない場合には、注目画素の左の画素がクラス分け処理を行ったときの閾値、あるいは、上の画素がクラス分け処理を行ったときの閾値のうち、予め設定されている初期閾値に近いほうの閾値を注目画素の閾値とする。図7(d)に示すように、上記以外の場合には、(6)式を用いて注目画素の閾値を算出する。
次に、注目画素をラインの右から左へ1画素ごとにクラス分け処理を行う場合について説明する。図8(a)に示すように、周辺画素のうち注目画素の上の画素のみがエッジ画素であり、注目画素の左右にはエッジ画素が存在しない場合には、注目画素の右の画素にクラス分け処理を行ったときの閾値th(x+1,y)をそのまま注目画素の閾値th(x,y)とする。図8(b)に示すように、周辺画素のうち注目画素の上にはエッジ画素が存在せず、注目画素の左右の画素がエッジ画素である場合には、注目画素の上の画素がクラス分け処理を行ったときの閾値th(x,y-1)をそのまま注目画素の閾値th(x,y)とする。
図8(c)に示すように周辺画素にエッジ画素が存在しない場合には、注目画素の右の画素がクラス分け処理を行ったときの閾値、あるいは、上の画素がクラス分け処理を行ったときの閾値のうち、予め設定されている初期閾値に近いほうの閾値を注目画素の閾値とする。図8(d)に示すように、上記以外の場合には、(6)式を用いて注目画素の閾値を算出する。
このようにして閾値を決定した場合の閾値の分布を図6(b)に示す。図から平坦部における不自然な閾値の変化を生じていないことが分かる。これにより平坦部の閾値を一定に保つことができ、さらに、後述するオブジェクト情報の作成を行うことができる。
再帰的クラス分け処理は、上記のように画素ごとに閾値を決定してクラス分け処理が繰り返されることにより実行される。具体的には以下のように実現する。
本実施形態では、3レベル階層まで、再帰的クラス分け処理を繰り返す。
まず、レベル1におけるクラス分け処理では、エッジ量上限値(=重み係数の和)W1を128とし、前述のようにして決定した閾値に基づいて、各画素を明度値が0または255の2つのクラスに分類する。画素の明度値が閾値より大きいときは、その画素の明度値を255とし、閾値より小さいときは、明度値を0とする。このようにして得られた各画素の明度値をレベル1のクラス情報として画素ごとに記憶し、レベル1における分類結果とする。
レベル2では、レベル1において明度値が0のクラスに分類された各画素および255のクラスに分類された各画素について、さらにクラス分け処理を行う。エッジ量上限値をW2=W1/2(=64)と設定することで、レベル1より細かなエッジを検出してクラスの変化を起こしやすくする。また、このとき、エッジ量下限値LOWER_VAL(W2)は、(5)式にW=64を代入して16とする。
レベル2のクラス分け処理では、レベル1において0のクラスに分類された各画素の明度値を0と85の2つのクラスに分類し、レベル1において255のクラスに分類された各画素の明度値を170と255の2つのクラスに分類する。このようにして得られた各画素の明度値をレベル2のクラス情報として記憶し、レベル2における分類結果とする。
最後に、レベル3では、レベル2において明度値が0,85,170,255のクラスに分類された各画素について、さらにクラス分け処理を行う。エッジ量上限値W3をW3=W2/2(=32)と設定することで、より細かなエッジを検出してクラスの変化を起こしやすくする。また、このとき、エッジ量下限値LOWER_VAL(W3)は、(5)式にW3=32を代入して8とする。
レベル3のクラス分け処理では、レベル2において明度値が0のクラスに分類された各画素の明度値を0と28の2つのクラスに分類し、85のクラスに分類された各画素の明度値を56と85の2つのクラスに分類し、170のクラスに分類された各画素の明度値を170と196の2つのクラスに分類し、255のクラスに分類された各画素の明度値を226と255の2つのクラスに分類する。このようにして得られた各画素の明度値をレベル3のクラス情報として記憶し、レベル3における分類結果とする。
図9は、再帰的クラス分け処理を3レベルまで行ったときの画素の分類を模式的に表したツリー構造を示す図である。ここで、0,28,56,…255はそれぞれクラスの明度値であり、クラスを識別するためのクラス情報である。また、このツリー構造は、クラス情報により、レベル3のクラス情報から容易にレベル1、レベル2におけるクラス情報を求めることができる。たとえば、レベル3では196のクラスに属する画素は、レベル2では170のクラスに属し、レベル1では255に属することがわかる。したがって、各画素については、レベル3におけるクラス情報のみを記憶しておけばよい。
ただし、必ずしもクラス情報には明度値を用いる必要はなく、レベル3におけるクラス情報からレベル1,2におけるクラス情報がわかれば良い。たとえば、レベル3のクラスにおいて、前述のクラス0をクラス1,クラス28をクラス2,クラス56をクラス3,…,クラス255をクラス8などとしてもよい。
さらにクラスタリング部11は、再帰的クラス分け処理を行う際に決定した画素ごとの閾値に基づいてオブジェクト情報を作成する。オブジェクト情報は画素ごとに決定され、画素が背景領域に属するか、背景以外のオブジェクト(写真、文字など)領域に属するかを示す。たとえば、画素が背景領域に属する場合は、オブジェクト情報を1とし、オブジェクト領域に属する場合は、オブジェクト情報を0として記憶する。
画素が背景領域に属するかどうかは、レベルごとに決定され、クラス分けに用いた閾値が初期閾値であって、これが継続されている間の画素は背景領域に属すると判断する。図7および図8に示した条件で閾値を決定した場合、初期閾値が継続されるのは、平坦部が連続しているからである。また、背景領域以外の領域は何らかのオブジェクトが存在すると考えられるため、背景領域以外はオブジェクト領域であると判断する。
したがって、画素ごとに行われる再帰的クラス分け処理において、閾値として用いる近傍閾値が、背景画素の閾値であれば、注目画素は背景領域に属し、非背景画素の閾値であれば、注目画素は背景領域に属するとする。
また、閾値が式(6)を用いて算出された場合には、注目画素は非背景領域に属するとする。これは、注目画素の閾値が新たに算出されるということは、何らかのオブジェクトが存在すると考えられるためである。
以上のように、再帰的クラス分け処理によってクラスタリング部11は、各画素のクラス情報とオブジェクト情報とを作成する。
図10は、各画素のクラス情報の分布を示す図である。本実施形態では、クラス情報として明度値を用いており、この明度値を階調値として用いることで、各画素が有するクラス情報を画像として可視化することができる。図10(a)は、レベル1のクラス情報の分布を示し、図10(b)は、レベル2のクラス情報の分布を示し、図10(c)は、レベル3のクラス情報の分布を示している。レベル1から3にかけてクラスが詳細に分類される様子が分かる。
図11は、各画素のオブジェクト情報の分布を示す図である。図では、背景領域に属する画素の明度値を255(白の領域)とし、オブジェクト領域に属する画素の明度値を128(グレーの領域)としてオブジェクト情報の分布を示している。
次に、ランレングス算出手段であるランレングス算出部12においてクラスタリング部11で作成したクラス情報およびオブジェクト情報の主走査方向のランレングスを算出する。ランレングスはレベルごと、本実施形態ではレベル3までのランレングスを算出する。
図12は、ランレングス算出処理の手順の一例を示す図である。ここでは、1ラインの画素数を16画素として処理を行うこととする。ランレングス算出処理は、2つの処理からなる。各画素には1つの変数(カウント)が与えられ、このカウントを所定の条件で変化させることによりランレングスを算出する。まず第1の処理は、各画素のクラス情報(図12(a)参照)に基づいて、ラインの左から右方向に同一クラスの画素が連続する限り、画素のカウントを増加させてランレングスを算出する処理であり、第2の処理は、ラインの右から左方向について、右隣りの画素のカウントが注目画素におけるカウントより1大きい場合、右隣りの画素におけるカウントを注目画素のカウントに置き換えることにより、各画素に自らが属するランのランレングスを与える処理である。なお、2つの処理に分割することで、複雑なループ処理を避けることが可能となり、SIMDプロセッサ(同種複数処理型演算装置)によってマルチパス処理で行うことができる。
まず、図12(b)を参照して、第1の処理について説明する。第1の処理では、図12(a)に示した各画素のクラス情報に基づいて、左隣りの画素のクラス情報が注目画素のクラス情報と同じ場合、左隣りの画素のカウントに1を加えたカウントを注目画素のカウントとする。図12(b)のレベル1では、まず左端の画素を注目画素とすると、注目画素のレベル1クラス情報は0であり、左隣りの画素が存在しないので、カウント0を出力バッファに書き込み、注目画素を次の右隣の画素に移動する。
次の注目画素(左から2番目の画素)のレベル1クラス情報も0であるから、左隣の画素のカウントに1を加え、カウント1を出力バッファに書き込む。次の注目画素(左から3番目の画素)のレベル1クラス情報は255であり、左隣の画素とは異なるクラスに属するので、カウントを0に戻し、出力バッファにカウント0を書き込む。同様にして左隣の画素のクラス情報と注目画素のクラス情報とを比較しながら1ライン分の画素についてカウントを決定する。カウントが0の画素が現れるまでのカウントがその画素が属するランのランレングスを示す。
なお、図12(a)に示すクラス情報は、レベル3クラス情報であるため、レベル1のランレングスを算出するためには、レベル3クラス情報からレベル1クラス情報を求める必要がある。たとえば、左から6番目の画素の記憶されているクラス情報は、レベル3クラス情報の170であるが、図9に示したツリー構造から、レベル2クラス情報は、170であり、レベル1クラス情報は255であることがわかる。
次に、各画素のレベル2クラス情報を求め、レベル1と同様にして、ランレングスを算出する。レベル3クラス情報からレベル2クラス情報を求める方法について説明する。レベル3クラス情報をin、レベル2クラス情報をoutとすると、以下の式により容易に実現できる。
(1)out = in < 56 ? 0 : out;
(2)out = in < 170 ? 85 : out;
(3)out = in < 226 ? 170 : out;
(4)out = 255;
(1)レベル3クラス情報を56と比較し、56未満ならばレベル2クラス情報を「0」とする。
(2)レベル3クラス情報が56以上で170未満ならば、レベル2クラス情報を「85」とする。
(3)レベル3クラス情報が170以上で226未満ならば、レベル2クラス情報を「170」とする。
(4)レベル3クラス情報が226以上ならば、レベル2クラス情報を「255」とする。
レベル2においては、レベル2より上位であるレベル1におけるクラスの変化を無視してランレングスを算出するために、左隣の画素のクラス情報と注目画素のクラス情報との差の絶対値が255となるときには、クラスの変化が無いものとみなし、カウントを0に戻さず、カウントアップを継続する。つまり、レベル1で既にクラスの変化点、すなわちランの境界であると判定された箇所をレベル2以降では検知しないようにする。図12(b)にレベル2のランレングス算出結果を示す。
レベル3については、記憶されているそのままのクラス情報を用いてランレングスを算出することができる。ただし、レベル2と同様に、レベル3より上位であるレベル1およびレベル2におけるクラスの変化を無視してランレングスを算出するために、左隣の画素のクラス情報と注目画素のクラス情報との差の絶対値が28を超えるときには、クラスの変化が無いものとみなし、カウントアップを継続する。以上のような第1の処理により、レベル1〜3までのランレングスを算出することができる。
第2の処理について説明する。第2の処理では、第1の処理で求めた各画素のカウント(図12(b))に対して、注目画素のカウントとその右隣り画素のカウントとを比較し、右隣の画素のカウントが注目画素のカウントより1だけ大きければ、注目画素のカウントを右隣りの画素のカウントで置き換える。ランの右端にある画素のカウントはランレングスと等しいので、同じランに属する画素のカウントをランの右端にある画素のカウントで置き換えることによって、各画素が、自らが属するランのランレングスを情報として有することとなる。レベル1の場合を例として以下に説明する(図12(c)参照)。
・右端の画素のカウントが「1」であり、右隣の画素が存在しないので、カウントは「1」のまま変えない。
・次(右から2番目)の画素のカウントが「0」であり、右隣の画素のカウントが1だけ大きいので、カウントを「1」に置き換える。
・右から3番目の画素のカウントは「3」であり、右隣の画素のカウントが2大きいので、カウントは「3」のまま変えない。
・右から4番目の画素のカウントは「2」であり、右隣の画素のカウントが1だけ大きいので、カウントを「3」に置き換える。
・右から5番目の画素のカウントは「1」であり、右隣の画素のカウントが1だけ大きいので、カウントを「3」に置き換える。
以下同様にこの処理を繰り返す。なお、注目画素のカウントとその右隣りの画素のカウントとの比較は、第1の処理で求めたカウント(図12(b))に基づいて行い、置き換えるカウントは第2の処理後のカウントを用いる。これは、連続してカウントされたときのカウントの最大値(ランの右端のカウント)がランレングスに相当するため、連続してカウントされた画素のカウントを最大値で置き換えることに相当する。
以上の第1および第2の処理と同様の処理を行えば、オブジェクト情報のランレングスを算出することができる。第1の処理では、左隣の画素と同じオブジェクト情報であれば、左隣りの画素のカウントに1を加えたカウントを注目画素のカウントとする。第2の処理では、第1の処理結果に基づいて、カウントの置き換えを行う。
また、SIMDプロセッサのような複数のデータパスを1つのプログラムカウンタで扱うプロセッサでは、1ラインのクラス情報を複数のデータパス、たとえば図13(a)に示すように、データパスAおよびデータパスBに分割し、第1の処理では各データパスを同時に処理することができる。
各データパス内で個別にランレングスを算出し(図13(b)参照)、データパス間を連結する(図13(c)参照)。データパスAとデータパスBとの連結部において、隣接する画素のクラス情報が同じであれば、データパスAの右端の画素のカウントを、データパスBの左端の画素以外でカウントが0の画素が現れるまで加算する(図13(c)参照)。また、連結部でクラス情報が異なる場合には、そのまま連結する。データパスの連結後は、前述と同様に第2の処理を行い、各画素に自らが属するランのランレングスを与える(図13(d)参照)。以上の処理により、容易にSIMDプロセッサにおいて処理を行うことができる。
次に、文字領域推定手段である文字領域推定部13において、クラス情報のランレングスに基づいて、文字領域に属する画素を推定する。文字は、一般的に煩雑度が高いと考えられるため、クラス情報のランレングスが文字推定閾値SIZEOFTEXT以下であれば文字領域に属する画素であると推定することができる。
しかしながら、ランレングス算出部12で算出したランレングスは、主走査方向のランレングスであるから、閾値SIZEOFTEXTに基づいて文字領域の推定を行うと、画像の横方向の煩雑度にのみ依存した判定となり、精度が十分ではない。
そこで、周辺画素において、注目画素と同一のクラスに属し、かつ、文字領域ではないと推定されている画素が存在する場合、その注目画素は、クラス情報のランレングスが所定の閾値SIZEOFTEXT以下であっても文字領域であると推定しない。この条件を付加して判定することにより、文字領域推定精度を向上することができる。
さらに、ラインの左から処理を行う場合と右から処理を行う場合とを考慮し、2方向から推定処理を行う。まず、左から右方向に処理を行う場合、クラス情報のランレングスが所定の閾値SIZEOFTEXT以下であっても、図14に示す処理対象の周辺画素が以下の条件を満たす場合、文字領域であると推定しない。
・左隣の画素が注目画素と同一のクラスに属し、かつ、文字領域として推定されていない
・上の画素が注目画素と同一のクラスに属し、かつ、文字領域として推定されていない
・左斜め上の画素が注目画素と同一のクラスに属し、かつ、文字領域として推定されていない
・右斜め上の画素が注目画素と同一のクラスに属し、かつ、文字領域として推定されていない
また、ラインの右から左方向に処理を行う場合、既に左から右方向の処理で文字領域と推定されていても、以下の条件を満たす場合、文字領域であると推定しない。
・右隣の画素が注目画素と同一のクラスに属し、かつ、文字領域として推定されていない
以上の2方向の処理((1)ラインの左から右方向の処理、(2)ラインの右から左方向処理)により、クラス情報のランレングスに基づいて文字領域を精度良く推定することができる。以上の文字領域推定処理を各レベルで行う。
図15は、各レベルにおける文字推定領域を示す図である。図15(a)は、レベル1における文字推定領域、図15(b)は、レベル2における文字推定領域、図15(c)は、レベル3における文字推定領域をそれぞれ示している。図では、文字領域に属すると推定された画素の明度値を255、それ以外の画素の明度値を0としている。
領域判定部14は、オブジェクト情報のランレングスおよび文字領域推定結果に基づいて、各画素の属する領域を判定する領域判定手段である。オブジェクト情報のランを単位窓(ある単位をまとめて1つのものとして見なす)とし、文字領域推定部13の推定結果からレベル毎に文字領域と推定された画素の含有率に基づいて、領域判定を行う。
まず、単位窓内におけるレベル1の文字推定領域の画素数、レベル2の文字推定領域の画素数、レベル3の文字推定領域の画素数をカウントする。図16は、領域判定の対象となる単位窓の一例を示す図である。この例では、単位窓であるオブジェクト情報のランレングスを8とし(ランレングス算出処理が0からカウントを始めるため、図では「8」ではなく「7」と表記している。)、文字領域に属すると推定される画素を「*」、文字領域ではないと推定された画素を「−」で表している。
まず、単位窓内におけるレベル毎の文字領域推定画素をカウントする。図16では、レベル1における文字領域推定画素数が4、レベル2における文字領域推定画素数が3、レベル3における文字領域推定画素が0である。
そして、これらの文字領域推定画素数から背景・文字・写真領域を判定する。文字領域は、連続するオブジェクト領域が1つのレベルの文字領域推定画素で構成されていることが多く、たとえば、以下に示す条件では文字領域である可能性が高い。
逆に、写真領域は、連続するオブジェクト領域が複数のレベルの文字領域推定画素で構成されていることが多い。たとえば、以下に示す条件では写真領域である可能性が高い。
実際に判定するには、予めオブジェクト情報のランレングス、レベル1の文字領域推定画素数、レベル2の文字領域推定画素数およびレベル3の文字領域推定画素数と、領域判定結果とを関連付けるLUT(Look Up Table)を記憶しておき、文字領域推定画素数に基づいてLUTを参照することにより、オブジェクト領域が文字領域と写真領域のいずれであるかを判定する。このLUTの作成には、たとえば、ニューラルネットワークを用いた学習方法などが挙げられる。
なお、背景領域は、オブジェクト情報を作成した際、オブジェクト領域が存在しない領域を背景領域と判定する。また、オブジェクト領域であったとしてもオブジェクト情報のランレングスがある程度大きく、各レベルにおける文字領域推定画素数が少ない場合には、背景領域として判定してもよい。
図17は、領域判定結果を示す図である。ただし、文字領域に属する画素の明度値を0(黒の領域)、背景領域に属する画素の明度値を255(白の領域)、写真領域に属する画素の明度値を128(グレーの領域)としている。
さらに、領域分割結果に基づいて、文字領域に判定された画素から詳細に文字を検知する。なお、文字検知を行う際には、図18の領域分割部4のブロック図に示すように、領域判定部14の後段に文字検知部15が設けられる。文字検知部15以外の部位については、図2で説明した部位と同じであるので説明は省略する。なお、文字検知部15は必ずしも領域分割部4に備える必要はない。
文字検知部15は、領域判定部14において文字領域であると判定された画素について、文字領域推定結果を用いてさらに詳細に文字を検知する。文字推定領域において、連続する文字推定領域の最初の画素の属するクラスが文字クラスであるのが一般的であることから、最初の画素が属するクラスを検知し、文字領域であると判定された領域内において、検知したクラスと同一のクラスに属する画素が文字領域に属すると判定することにより、文字の判定精度をさらに向上させることができる。
図19は、文字検知部15が文字の検知を行った場合の領域判定結果を示す図である。各領域を示す明度値は、図17に示した判定結果と同じである。図からわかるように図17に示した判定結果に比べて、精度良く文字領域が分割されているのがわかる。
圧縮アーティファクツ除去処理について説明する。圧縮アーティファクツ除去処理手段5bは、領域判定部14において写真領域であると判定された画素に対して圧縮アーティファクツ除去処理を行う。一般的に、リンギングノイズは、写真領域内のエッジ部に沿ってエッジ周辺部に発生する。また、ブロックノイズは写真領域内の平坦部に発生する。そこで、ランレングス算出部12で算出されたクラス情報に基づいて、写真領域に属する画素が、さらにエッジ周辺部、平坦部およびエッジ部のいずれに属する画素であるかを判断し、エッジ周辺部の場合はリンギングノイズ除去処理を行い、平坦部の場合はブロックノイズ除去処理を行う。それ以外の場合は、エッジ部であるとし、エッジをぼけさせないためにリンギングノイズ除去処理およびブロックノイズ除去処理といった平滑化処理は施さない。
リンギングノイズ除去処理およびブロックノイズ除去処理は、各画素に対して平滑化フィルタを適用するフィルタ処理である。リンギングノイズ除去処理では、たとえば図20(a)に示すような平滑化フィルタF1を適用し、ブロックノイズ除去処理では、図20(b)に示すような平滑化フィルタF2を適用する。
リンギングノイズは、水平方向のエッジや垂直方向のエッジ周辺より、むしろ斜め方向のエッジ周辺に発生することが多い。したがって、リンギングノイズ除去処理では、図20(a)の平滑化フィルタフィルタF1のように、斜め方向に隣接する画素の画素値と注目画素の画素値との平均値を注目画素の新たな画素値とすることで、斜め方向の周波数成分を減衰させるような周波数応答を持つフィルタを適用する。一方、ブロックノイズは、平坦部におけるDCTブロックの境界に発生する。したがって、ブロックノイズ除去処理では、図20(b)の平滑化フィルタF2のように、水平方向、垂直方向および斜め方向に隣接する画素の画素値と注目画素の画素値との平均値を注目画素の新たな画素値とすることで、各方向の周波数成分を減衰させるような周波数応答を持つフィルタを適用する。
図21は、圧縮アーティファクツ除去処理を示すフローチャートである。まず、ステップa1では、写真領域に属する画素に対して、ランレングス算出部12によって算出されたクラス情報を用いて、各画素がエッジ部、エッジ周辺部または平坦部のいずれに属するかを示す属性を判定する。次にステップa2では、ステップa1の判定結果がエッジ部であるかどうかを判断する。エッジ部であれば、いずれのフィルタ処理も行わずに圧縮アーティファクツ除去処理を終了する。エッジ部でなければ、ステップa3に進み、エッジ周辺部であるかどうかを判断する。
エッジ周辺部であれば、ステップa4に進み、前述の平滑化フィルタF1を用いてリンギングノイズ除去処理を行い、圧縮アーティファクツ除去処理を終了する。エッジ周辺部でなければ、すなわち平坦部であれば、ステップa5に進み、前述の平滑化フィルタF2を用いてブロックノイズ除去処理を行い、圧縮アーティファクツ除去処理を終了する。なお、本フローチャートは、1つの画素に対する処理を示しているので、写真領域に属する画素が複数の場合は、全ての画素に対して圧縮アーティファクツ除去処理を行う。
ステップa1における属性判定処理について詳細に説明する。属性判定処理は、所定の画素ブロック内のランレングスを示すカウントがゼロの画素数、すなわち、画素ブロック内のクラス変化箇所の数(以下では、「クラス変化数」と呼ぶ。)を計数し、この計数値に基づいて行われる。本実施形態では、注目画素を中心とする7×7の画素ブロックを対象とする。DCTブロックの基底サイズが8×8であること、および注目画素を中心とするためにブロックの一辺を奇数とすることなどから、7×7の画素ブロックとしている。
図22は、クラス変化数を計数する手順を示す図である。まず、注目画素Cを中心とする7×7の画素ブロックBをX1〜X7までの7列に分割し、列ごとに列に含まれるクラス変化数を計数する。X1の列からX7の列までのクラス変化数を計数し、順にZ1,Z2,Z3,Z4,Z5,Z6,Z7として図示しない記憶部の所定の記憶領域に記憶する。次に、Z1〜Z7の合計値Sum(C)を算出し、注目画素Cを含む画素ブロックBのクラス変化数とする。このような計数処理を写真領域に属する全ての画素について行う。
同じ領域に属する画素は、図17に示したように集中して配置されており、写真領域に属する画素もグレー領域で示されるように配置されている。したがって、写真領域に属する画素が水平方向に連続する場合、計数処理は以下のように簡略化することができる。
図23は、簡略化したクラス変化数を計数する手順を示す図である。注目画素Nを連続する画素のうちの左端の画素とすると、まず、図22に示した手順で注目画素Nについての計数処理を行う。次に、注目画素を右隣の画素に移動する。この注目画素を注目画素C+1とし、注目画素C+1を含む7×7の画素ブロックB+1のクラス変化数Sum(C+1)を計数する。ここで、画素ブロックを7列に分解すると、X2〜X8の7列となる。X2〜X7までの列についてはすでに計数が終了し記憶されているので算出する必要がない。したがって、画素ブロックB+1のクラス変化数は、Sum(C)から列X1のクラス変化数を除き、列X8のクラス変化数を加えればよい。具体的には、画素ブロックBにおいて、Sum(C)−Z1を算出した後、Z2をZ1に書換え、Z3をZ2に書換え、Z4をZ3に書換え、Z5をZ4に書換え、Z6をZ5に書換え、Z7をZ6に書換える。列X8のクラス変化数をZ7として計数した後、Sum(C+1)としてZ1〜Z7の合計値を算出する。
このように、写真領域に属する画素が隣接する場合は、画素ブロックのクラス変化数を算出した後、1列分のクラス変化数を引いて、1列分のクラス変化数を加えるだけでよい。
図24は、簡略化した計数処理を示すフローチャートである。予め列ごとのクラス変化数を計数しておき、ステップb1で、Z1+Z2+Z3+Z4+Z5+Z6を算出して画素ブロックのクラス変化数Sumとする。ステップb2ではZ7を計数する。ステップb3ではステップb1で算出したクラス変化数SumにZ7を加え、新たに画素ブロックのクラス変化数Sumとして記憶部に記憶し、属性判定に用いる。ステップb4では、クラス変化数SumからZ1を引いて新たに画素ブロックのクラス変化数Sumとする。また、Z2をZ1に書換え、Z3をZ2に書換え、Z4をZ3に書換え、Z5をZ4に書換え、Z6をZ5に書換え、Z7をZ6に書換える。ステップb5では、連続する写真領域に属する画素について計数が終了したか否かを判断する。終了していれば計数処理を終了し、終了していなければ注目画素を隣接画素に移動してステップb2に戻る。
なお、計数処理の簡略化は、写真領域に属する画素が必ずしも隣接している必要はなく、たとえば次に計数処理すべき注目画素が、2画素離れていた場合は、すでに算出した画素ブロックのクラス変化数から2列分のクラス変化数を引いて、2列分のクラス変化数を加えればよい。
上記のようにランレングス算出部12が算出したクラス情報に基づいてクラス変化数を計数した場合、水平方向のクラス変化は抽出することができるが、垂直方向におけるクラス変化を抽出することはできない。そこで、計数処理ではランレングスを示すカウントがゼロの画素数を計数するだけでなく、垂直方向のクラス変化箇所の数も計数する。垂直方向におけるクラス変化は、垂直方向に隣接する画素間のクラス情報の差分値と閾値とを比較し、差分値が閾値以上で有ればクラス変化箇所であるとする。なお、閾値はレベルに応じて異なる。これは、ランレングス算出部12の算出処理の説明で述べたように、レベル2ではレベル1においてすでに検知されたクラス変化箇所を検知しないように、レベル3ではレベル1およびレベル2においてすでに検知されたクラス変化箇所を検知しないようにするためである。したがって、レベル1では、閾値を128とし、垂直方向に隣接する画素のクラス情報の差分値の絶対値が128以上であれば、クラス変化箇所であるとし、そうでなければクラスは変化していないものとする。レベル2では、閾値を128および32とし、垂直方向に隣接する画素のクラス情報の差分値の絶対値が128より小さく、かつ、32以上であれば、クラス変化箇所であるとし、そうでなければクラスは変化しないものとする。レベル3については、閾値を32および16とし、垂直方向に隣接する画素のクラス情報の差分値の絶対値が32より小さく、かつ、16以上であれば、クラス変化箇所であるとし、そうでなければクラスは変化しないものとする。このようにして7×7の画素ブロックの列ごとにクラス変化箇所を計数し、7列分の合計値を算出する。
以上のように、7×7の画素ブロック内のクラス変化数を水平方向および垂直方向でそれぞれ計数し、これらの総和を算出する。
さらに、図25に示すような注目画素を中心とする3×3の画素ブロックに対して、上記と同様の手順で水平方向および垂直方向のクラス変化数を計数し、これらの総和を算出する。
そして、7×7の画素ブロックにおけるクラス変化数、および3×3の画素ブロックにおけるクラス変化数の関係に基づいて、写真領域に属する画素がエッジ部、エッジ周辺部、平坦部のいずれに属するかを判定する。
図26は、属性判定処理を示すフローチャートである。まず、ステップc1では上述の手順で注目画素を中心とする7×7の画素ブロックにおけるクラス変化数の総和Sum1を算出する。ステップc2では上述の手順で3×3の画素ブロックにおけるクラス変化数の総和Sum2を算出する。
ステップc3では、総和Sum1,Sum2と閾値TH1を比較し、総和Sum1が閾値TH1より小さく、かつ総和Sum2が閾値TH1より小さいか否かを判断する。総和Sum1,Sum2がいずれも閾値TH1より小さい場合は、ステップc7に進み、注目画素は平坦部に属すると判定する。平坦部にはエッジがほとんど含まれていないため、画素ブロックに含まれるクラス変化数は小さいからである。
総和Sum1,Sum2のいずれかが閾値TH1以上であれば、ステップc4に進む。ステップc4では、Sum1−Sum2の値が閾値TH2より大きく、かつSum2が閾値TH3より小さいか否かを判断する。Sum1−Sum2の値が閾値TH2より大きく、かつSum2が閾値TH3より小さければ、ステップc6に進み、注目画素はエッジ周辺部に属すると判断する。Sum1−Sum2の値が閾値TH2以下、またはSum2が閾値TH3以上であれば、ステップc5に進み、注目画素はエッジ部に属すると判断する。3×3の画素ブロックのクラス変化数が少なく、7×7の画素ブロックのクラス変化数が大きい場合、3×3の画素ブロック内は平坦部であり、3×3の画素ブロックを除く7×7の画素ブロック内はエッジ部である。したがって、注目画素はエッジ周辺部に属すると判定する。また、それ以外の場合は、注目画素はエッジ部に属すると判定する。
以上の判定処理は、全てのレベル(本実施形態ではレベル1〜3)において実施され、レベルごとの判定結果が得られる。各レベルにおける判定結果に基づいて、最終的な属性判定を行い、圧縮アーティファクツ除去のための処理を決定する。この最終属性判定は、LUT(Look Up Table)を用いて行う。
図27は、最終属性判定用のLUTの一例である。レベル1〜3の判定結果が得られると、それらの組み合わせに対応する判定結果を最終属性判定の判定結果とする。
前述のようにレベル1では強いエッジ強度(周辺画素との濃度差が大きいエッジ)を持つクラスを抽出し、レベル2ではレベル1よりも弱いエッジ強度を持つクラスを抽出し、レベル3ではさらに微弱なエッジ強度を持つクラスを抽出するように構成されている。したがって、LUTに示される最終の判定結果では、レベル2およびレベル3に比べてレベル1における判定結果を優先する。たとえば、図27のLUTにおいて、レベル2、レベル3の判定結果が平坦部であっても、レベル1の判定結果がエッジ部であれば、最終判定結果はエッジ部となる。
また、レベル1の判定結果が平坦部、あるいは、エッジ周辺部であった場合は、レベル3に比べてレベル2における判定結果を優先する。たとえば、レベル1およびレベル3の判定結果がともに平坦部であっても、レベル2の判定結果がエッジ部であれば、最終判定結果はエッジ部となる。
このように多段階のエッジ強度を用いて属性判定を行うことにより、属性判定精度を高め、弱いエッジ部を誤って平滑化するような再現性の低下を防止することができる。
最終の属性判定結果にしたがって、エッジ周辺部に属すると判定された画素にはリンギングノイズ除去処理が適用され、平坦部に属すると判定された画素にはブロックノイズ除去処理が適用され、エッジ部に属すると判定された画素にはエッジを保存するために処理を行わない。
なお、レベル1およびレベル2の判定結果が平坦部であり、レベル3の判定結果がエッジ周辺部と判定された画素には、周辺に強いエッジが存在しないためリンギングノイズが発生しているとは考えにくく、逆に、ブロックノイズが発生している可能性の方が高いと考えられる。そこで、ブロックノイズ除去処理を行うよう平坦部であると判定する。
さらに、リンギングノイズの強度はその近傍のエッジ強度に依存することから、エッジ強度に応じてリンギングノイズ除去処理を変更するように構成すれば、適切に平滑化処理を行うことができるため、さらに圧縮アーティファクツ除去処理の精度を向上することができる。また、平坦部にも、弱いエッジ部を含む平坦部と全くエッジ部を含まない平坦部とが存在する。したがって、平坦部に属すると判定された画素に対して、エッジ強度に応じたブロックノイズ除去処理を変更することにより、適切に平滑化処理を行うことができるため、さらに圧縮アーティファクツ除去処理の精度を向上することができる。
たとえば、図28に示したLUTのように、最終判定結果として平坦部を平坦部1および平坦部2に細分化し、エッジ周辺部をエッジ周辺部および弱エッジ周辺部に細分化して、平滑化処理に用いるフィルタを変更する。
エッジ周辺部に属する画素には図29(a)に示す平滑化フィルタF3を適用し、また、弱エッジ周辺部に属する画素には、図29(b)に示す平滑化フィルタF4を適用する。さらに、弱いエッジ部を含む平坦部(平坦部1)に属する画素には図29(b)に示す平滑化フィルタF4を適用し、全くエッジ部を含まない平坦部(平坦部2)に属する画素には図20(b)に示す平滑化フィルタF2を適用する。
なお、レベル1の判定結果が平坦部で、レベル2の判定結果がエッジ周辺部である場合は、最終判定結果は、弱エッジ周辺部となる。また、レベル1およびレベル2の判定結果が平坦部であり、レベル3の判定結果がエッジ部である場合は、最終判定結果は弱いエッジ部を含む平坦部1となり、レベル3の判定結果も平坦部である場合は、全くエッジ部を含まない平坦部2となる。
このように、複数段階の判定結果を用いることで、最終判定結果を細分化し、より精度良く圧縮アーティファクツ除去処理を行うことができる。
図30は、本実施形態の画像処理を示すフローチャートである。まず、ステップS1では、色変換部10によって、入力された画像データの色空間を変換し、明度値など領域判定に用いる画素値を求める。ステップS2では、クラスタリング部11によって、再帰的クラス分け処理を行い、クラス情報およびオブジェクト情報を生成する。ステップS3では、ランレングス算出部12が作成されたクラス情報およびオブジェクト情報の主走査方向ランレングスを算出する。
ステップS4では、文字領域推定部13が、クラス情報のランレングスと閾値SIZEOFTEXTとを比較する。閾値より小さいランレングスを有するランに属する画素を文字領域に属する画素と推定する。ステップS5では、領域判定部14が、オブジェクト情報が連続する領域内の画素のうち文字領域と推定された画素の画素数に基づいて、オブジェクト領域の画素を文字領域か写真領域に判定する。
ステップS6では、圧縮アーティファクツ除去処理手段5bが、写真領域に属すると判定された画素に対して、クラス情報のランレングスを用いてエッジ部、エッジ周辺部および平坦部のいずれに属するかをさらに判定し、判定結果に基づいたフィルタ処理を行う。
以上のように、本実施形態では、周辺画素の影響を考慮して注目画素ごとに閾値を決定する再帰的クラス分け処理によって、画像データを複数のクラスに分類し、この結果に基づいて領域判定を行う。したがって、固定閾値を用いてクラス分け処理を行う場合などと比べて領域分離精度を向上させることができる。
また、高精度で分離された写真領域にのみ圧縮アーティファクツ除去処理を行うので、誤って文字領域を平滑化することがなく、画質の向上を実現することができる。
また、領域分割処理のために算出したクラス情報のランレングスを圧縮アーティファクツ除去処理に用いているので、従来のように領域分割処理と圧縮アーティファクツ除去処理とを独立に行う場合に比べて、計算量を削減することができる。
また、本発明の実施の他の形態は、コンピュータを画像処理装置2として機能させるための画像処理プログラム、および画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体である。これによって、画像処理プログラムおよび画像処理プログラムを記録した記録媒体を持ち運び自在に提供することができる。
記録媒体は、プリンタやコンピュータシステム(コンピュータシステムに適用する場合はアプリケーション・ソフトとして用いることができる)に備えられるプログラム読み取り装置により読み取られることで、画像処理プログラムが実行される。
コンピュータシステムの入力手段としては、フラットベッドスキャナ・フィルムスキャナ・デジタルカメラなどを用いてもよい。コンピュータシステムは、これらの入力手段と、所定のプログラムがロードされることにより画像処理などを実行するコンピュータと、コンピュータの処理結果を表示するCRT(Cathode Ray Tube)ディスプレイ・液晶ディスプレイなどの画像表示装置と、コンピュータの処理結果を紙などに出力するプリンタより構成される。さらには、ネットワークを介してサーバーなどに接続するための通信手段としてのモデムなどが備えられる。
なお、記録媒体としては、プログラム読み取り装置によって読み取られるものには限らず、マイクロコンピュータのメモリ、たとえばROMであっても良い。記録されているプログラムはマイクロプロセッサがアクセスして実行しても良いし、あるいは、記録媒体から読み出したプログラムを、マイクロコンピュータのプログラム記憶エリアにダウンロードし、そのプログラムを実行してもよい。このダウンロード機能は予めマイクロコンピュータが備えているものとする。
記録媒体の具体的な例としては、磁気テープやカセットテープなどのテープ系、フレキシブルディスクやハードディスクなどの磁気ディスクやCD−ROM(Compact Disc-
Read Only Memory)/MO(Magneto Optical)ディスク/MD(Mini Disc)/DVD(
Digital Versatile Disc)などの光ディスクのディスク系、IC(Integrated Circuit)カード(メモリカードを含む)/光カードなどのカード系、あるいはマスクROM、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically
Erasable Programmable Read Only Memory)、フラッシュROMなどの半導体メモリを含めた固定的にプログラムを担持する媒体である。
また、本実施形態においては、コンピュータはインターネットを含む通信ネットワークに接続可能なシステム構成とし、通信ネットワークを介して画像処理プログラムをダウンロードしても良い。なお、このように通信ネットワークからプログラムをダウンロードする場合には、そのダウンロード機能は予めコンピュータに備えておくか、あるいは別な記録媒体からインストールされるものであっても良い。また、ダウンロード用のプログラムはユーザーインターフェースを介して実行されるものであっても良いし、決められたURL(Uniform Resource Locater)から定期的にプログラムをダウンロードするようなものであっても良い。