図1は、本発明の第1の実施の形態を含むシステムの一例を示すブロック図である。図中、1は画像入力部、2はメモリ部、3は画像処理部、4は画像出力部、5は制御部、11はブロック抽出部、12はブロック分類部、13は画質改善部、21は角度概算部、22は角度精算部、23は画素値出力部である。なお、図1に示した画質改善処理部3の各ブロックや制御部5などはコンピュータ上の処理プログラムモジュールとして存在してもよいし、一部または全部が専用のハードウェアで構成されていてもよい。
画像入力部1は、図1に示したシステムの外部からデジタル化された2値画像データを入力し、メモリ部2に転送する。メモリ部2は、前記画像入力部1から入力された画像データや、画質改善後の画像データ、さらに画質改善処理に用いられる各種の途中の演算結果や処理パラメータなどを保持する。画質改善処理部3は、メモリ部2に保持された処理対象の画像に対して画質改善処理を施す。画像出力部4は、画質改善処理部3により画質が改善された画像データなどを、図1に示したシステムの外部に出力する。制御部5は、各部の処理を制御する。
画像処理部3は、ブロック抽出部11、ブロック分類部12、画質改善部13などを含んで構成されている。ブロック抽出部11は、原画像内からM×N画素サイズのブロック(以下、M×Nブロックと呼ぶ)を抽出する。
ブロック分類部12は、ブロック抽出部11で抽出したM×Nブロックを、そのブロックに含まれる線画像の種類に応じて分類する。本発明では上述のように線幅が∞の場合にも「線」として含めるので、ブロックを分類することと線画像を分類することは同義である。分類の一例としては、細線、太線、その他に分類することができ、太線についてはさらに第1の太線、第2の太線に分類することができる。もちろん、その他の分類についてさらに細分してもかまわない。第1の太線および第2の太線としては、ここではそれぞれ黒太線、白太線であるものとする。また、細線に分類されたブロックに関しては、M×Nブロックを含む(M+2)×(N+2)画素サイズ以下のブロック内の画素値から、第1の太線(黒太線)、第2の太線(白太線)、その他のいずれかに再分類する。
画質改善部13は、ブロック分類部12で細線、第1の太線(黒太線)、第2の太線(白太線)に分類されたブロックについて、それぞれの分類に対応した画質改善処理を行う。なお、上述のように細線に分類されたブロックは、第1の太線(黒太線)、第2の太線(白太線)、その他に再分類することによって、第1の太線(黒太線)と第2の太線(白太線)に対応した画質改善処理を利用することができる。本発明における画質改善部13において行う画質改善処理は、エッジ方向を推定し、そのエッジ方向から面積占有率に従ってアンチエイリアス画像またはアンチエイリアス拡大画像あるいは拡大画像を生成するものである。もちろん、画質改善処理としてこれに限られるものではないが、以下の説明ではこの方法を用いた画質改善処理を行うものとする。
さらに画質改善部13は、ブロック分類部12で細線に分類された後に第1の太線(黒太線)に分類されたブロックに関して、所定部位に第1の太線(黒太線)としての画質改善処理を行い、細線に分類された後に第2の太線(白太線)に分類されたブロックに関して、所定部位に第2の太線(白太線)としての画質改善処理を行う。
この画質改善部13は、角度概算部21、角度精算部22、画素値出力部23などを含んで構成されている。角度概算部21は、ブロック抽出部11で抽出したM×Nブロックを含む原画像の(M+1)×(N+1)画素サイズ以下の所定の大きさのブロックの画素から、M×Nブロックが水平方向、垂直方向のいずれに属するかを概算角度として判定する。
角度精算部22は、角度概算部21で決定された概算角度が水平方向である場合には、ブロックの左右方向にそれぞれ所定パターンの続く長さから角度を精算する。また、概算角度が垂直方向である場合には、ブロックの上下方向にそれぞれ、所定パターンの続く長さから角度を精算する。更に、角度精算部22の判定処理において判定された角度が、所定条件を満たし、45度に近い場合には、再びブロックの所定の45度方向に所定パターンの続く長さから角度を精算する。
画素値出力部23は、角度精算部22で得られた角度に従って、M×Nブロックと対応する画質改善画像内の所定位置に所定の数だけ画素値を出力する。この処理には、例えば角度精算部22で得られた角度をエッジ方向とした面積占有率を用いたアンチエイリアス処理またはアンチエイリアス拡大処理、あるいはそれらをベースとした拡大処理を行うことができる。なお、画質改善部13の処理は、画素の参照開始位置、書き込み開始位置などの所定位置情報を除き、第1の太線(黒太線)と第2の太線(白太線)の処理は対称的に行われる。また、上述の画質改善部13の構成では、角度概算部21及び角度精算部22は、ブロックに含まれる線画像の方向性を認識し、画素値出力部23は、認識された方向に従って画質改善処理を行うものと見ることもできる。
なお、画像処理部3は、2値文字線画画像を対象としているため、処理に入る前に、入力された画像が2値文字線画画像であるかどうかを判定する処理部を設けても良いし、入力された画像が2値文字線画画像でない場合には処理を終了するようにしても良い。
図2は、画像処理部3の動作の概要を示すフローチャートである。S101において、ブロック抽出部11は、原画像内からM×Nブロックを抽出する。次にS102において、ブロック分類部12は、ブロック抽出部11で抽出したM×Nブロックを、細線、第1の太線、第2の太線、その他のいずれかに分類する。S103において、分類結果を判定し、細線、第1の太線、第2の太線以外であれば、そのまま処理を終える。なおこの場合には、原画像をそのまま出力画像としたり、拡大処理を伴う場合には、単純拡大などにより拡大処理を行って(あるいはあらかじめ拡大処理を行っておいて)出力画像とする。
細線に分類された場合には、S104において、さらに第1の太線(黒太線)、第2の太線(白太線)と見なせるか否かを判定する。細線が第1の太線(黒太線)、第2の太線(白太線)と見なせるか否かは、上述のようにN×Mブロックの周囲の画素値などから判定することができる。
S103で第1の太線(黒太線)、第2の太線(白太線)に分類された場合と、S103では細線に分類されたが、S104において第1の太線(黒太線)、第2の太線(白太線)と見なせると判定された場合には、S105において、画質改善部13で太線用の画質改善処理を行う。なお、第1の太線が黒太線、第2の太線が白太線である場合には、白黒を反転することによって、いずれか一方の処理で対応することができる。従って、第1の太線(黒太線)、第2の太線(白太線)、および細線のうち第1の太線(黒太線)、第2の太線(白太線)と見なせるM×Nブロックに対して、ほぼ同様の太線用の画質改善処理で対応することができる。これによって、構成を簡単化することができる。
画質改善処理の後、S106において、当該画質改善処理が1回目で、初めに(S102で)細線であると判定され、その後S104で第1の太線(黒太線)、第2の太線(白太線)と見なせると判定されたM×Nブロックであるか否かを判定する。そのようなM×Nブロックである場合には、当該M×Nブロックと所定の関係にあるM×Nブロックに対して、S105へ戻って画質改善処理を施す。これは、細線を太線と見なして処理を行うことによる処理の漏れを防ぎ、同時に細線の対になる部分の認識処理を割愛するためのものである。なお、最初から第1の太線(黒太線)、第2の太線(白太線)に分類されたM×Nブロックや、再度の画質改善処理を行った後は、当該M×Nブロックの処理を終える。
このような処理を、原画像のM×Nブロック毎に行うことによって、原画像に対して画質改善処理を施すことができる。
以下、本発明の主要部である画像処理部3について、さらに説明してゆく。なお、以下の説明において、入力される原画像は2値文字線画画像であるとする。また、M=2,N=2とし、また第1の太線は黒太線、第2の太線は白太線であるものとして説明する。具体例についての説明においては、アンチエイリアス拡大処理を行う場合について示す。
図3は、本発明の第1の実施の形態における画像処理部3の動作のより具体的な例を示すフローチャートである。動作を開始する前の準備として、原画像の縦横それぞれ2倍サイズで8ビット値の画像を記憶するためのメモリ領域をメモリ部2中に確保し、原画像を最近傍法等の公知の方法で拡大した画素値で初期化する。これは、画像処理部3から出力される画質改善画像(アンチエイリアス拡大画像)を書き込んでゆくためのメモリ領域であり、画質改善部13における画質改善処理の対象画像である。
まず、S111において、ブロック抽出部11により原画像の中からM×N画素サイズのブロック画像を抽出する。この例ではM=2、N=2としているので、2×2画素サイズのブロック画像(2×2ブロック)を抽出する。図4は、ブロック抽出部11で抽出される2×2ブロック画像の一例の説明図である。ブロック抽出部11では、原画像の端から1画素ずつシフトさせた2×2画素サイズのブロック画像を順次抽出してゆく。そして、抽出した2×2ブロックを処理対象とし、以下の処理によって画質を改善し、出力される画素値をメモリ部2内の対応する位置に書き込んでゆく。
図2に戻って、S112において、S111で抽出した1つの2×2ブロックについて、そのパターンが細線、黒太線、白太線、あるいはその他のいずれかに該当するかを判定する。図5は、2×2ブロックの分類方法の一例の説明図である。図5(A)に示すように、2×2ブロックの4つの画素の値から、計6種類の場合に関して判定して、細線、黒太線、白太線のいずれかに該当するか、あるいはその他のパターンかを判定する。ここでは、隣接する画素の値が互いに異なる、いわゆる市松パターンを細線、4画素のうち1画素のみが異なる値を持つパターンを太線とし、所定の3画素が白で1画素が黒のパターンを白太線、所定の3画素が黒で1画素が白のパターンを黒太線として示している。なお、2×2ブロックの上部の2画素が等しい場合にも黒太線、白太線を定義できるが、後述するように本発明の特徴から、このような場合は処理の必要はなく、従って分類も必要ない。ここでは図5(A)に示すパターンを代表例として、以下、説明してゆく。
これらの細線、黒太線、白太線であるか、他のパターンであるかの判定は、図5(B)に示すように、2×2ブロックの左上の画素値pと、更に残りの画素値がpと一致するか否かによって細線、黒太線、白太線のいずれかに該当するか、あるいは他のパターンであるかを判定することができる。すなわち、左上の画素値pと右下の画素値が等しく、右上と左下の画素値が異なる場合には細線(市松)であると判定できる。また、左上の画素値pと左下および右下の画素値が等しく、右上の画素値が異なる場合には、図5(A)の中段に示した黒太線または白太線のいずれかであると判断できる。これらのパターンは、白と黒を反転させただけのパターンであることから、便宜上、L字パターンと呼ぶことにする。さらに、左上の画素値pと、左下、右下、右上の画素値が異なる場合には、図5(A)の下段に示した白太線または黒太線のいずれかであると判断できる。これらのパターンについても白と黒を反転させただけのパターンであることから、便宜上、逆L字パターンと呼ぶことにする。
後述のように、本発明の画質改善処理は白黒反転した画像に対して、本質的に全く同様に進めることができる。従って以降の説明では、2×2ブロックの左上画素が黒の場合(つまり、図5(A)の左側に示した3種類)に限って説明をすることとする。また、このように見た場合、図5(B)に示すようにパターンの形状である、市松、L字、逆L字という呼び方と、細線、黒太線、白太線とを対応づけることができるので、両者を適宜用いて説明することとする。すなわち、左上の画素が黒であれば、市松は細線、L字は黒太線、逆L字は白太線に対応する。
なお、図5(A)の左側に示す3パターン(あるいは図5(B)に示す3つのパターン)とも、2×2の上側にある2つの画素値が異なっている。従って、市松、L字、逆L字の判定の際には、2×2の上側にある2つの画素値が異なるか否かを先に調べておき、その後にいずれのパターンであるかを判定しても良い。図6は、2×2ブロックの上部2×1画素による分類方法の一例の説明図である。例えば図6(A)に示すように2×2ブロックの左上の画素の値をpとするとき、図6(B)に示したように上部の2つの画素とも等しい場合には、市松、L字、逆L字のいずれのパターンにも該当しないと判断できる。例えば4画素とも黒、4画素とも白、上側の2画素が白で下側の2画素が黒あるいはその反転パターン等が含まれる。
また、図6(C)に示したように、2つの画素値が異なる場合には、図6(D)〜(F)に示した市松、L字、逆L字のいずれかのパターンである可能性がある。従って、図6(C)に示すように上部の2つの画素値が異なる場合に、市松、L字、逆L字のパターンを検出するように構成すればよい。例えば左上の画素値pが黒である場合には、市松は細線、L字は黒太線、逆L字は白太線に分類することができる。逆に左上の画素値pが白である場合には、市松は細線、L字は白太線、逆L字は黒太線に分類することができる。上述のように両者は互いに白と黒を反転するだけで、他方のパターンとなる。
図6(B)の場合、及び図6(C)の場合であっても市松、L字、逆L字のいずれのパターンでもない場合には、この例では当該2×2ブロックに対しては画質改善処理を行わず、S119へ進んで全ての2×2ブロックを対象としたか否かを判定し、まだ処理対象としていない2×2ブロックが残っている場合にはS111に戻って次の2×2ブロックの抽出を行う。なお、図6(C)の場合であっても市松、L字、逆L字のいずれのパターンでもない場合としては、例えば、左側の2画素が白で右側の2画素が黒、あるいはその反転パターン等が含まれる。
図3に戻り、S112で2×2ブロックが市松に分類されたと判定された場合には、S113に進んで2×2ブロックを中央に含む4×4ブロックの白画素数と黒画素数を計数する。さらにS114において、S113による白画素および黒画素の計数値を、それぞれの所定値と比較する。ここではそれぞれの所定値の具体例として、いずれも6として示している。すなわち、黒画素数≦6か否か、および、白画素数≦6か否かを判定する。黒画素数≦6ならば黒線が存在しているものと判定し、S115においてL字(黒太線)に分類する。また、白画素≦6ならば白線が存在しているものと判定し、S116において逆L字(白太線)に分類して処理を進める。それ以外(黒画素、白画素とも7画素以上)の場合には、背景柄などのテクスチャである可能性を含んでいるので、ここでは画質改善処理を行わずにS119へ進む。なお、所定値は6に限られるものではない。
なお、2×2パターンの左上画素が白である場合には、L字と逆L字の関係が入れ替わり、黒画素≦6ならば黒線が存在しているものと判定し、S115において逆L字(黒太線)に分類し、白画素≦6ならば白線が存在しているものと判定し、S116においてL字(白太線)に分類する。
S112でL字、逆L字に分類された場合、及びS115でL字、S116で逆L字に分類された場合には、S117でそれぞれL字用または逆L字用の方法を用いて、原画像でのドットの方向(水平or垂直)を概算し、更に接続長から角度を精算する。更にS118において、2倍拡大された原画像の相当位置に、S117で精算した角度から求められるエッジの面積占有率に従って画素を出力する。このS117,S118の処理の詳細は後述する。
全ての2×2ブロックを抽出し、処理対象としたか否かをS119で判定し、未抽出の2×2ブロックが残っている場合には、当該未抽出の2×2ブロックを処理対象とすべく、S111へ戻る。全ての2×2ブロックを抽出して処理対象とし、適宜画質改善処理を行ったら、画像処理部3における処理を終了する。
以下、図3におけるS117、S118の処理について詳細に説明してゆく。図7、図8は、画像処理部3における画質改善部13の処理の一例を示すフローチャートである。この処理は、図3のS117及びS118に対応している。まずS121において、2×2ブロックがL字に分類されたのか、あるいは逆L字に分類されたのかを判定する。例えば図3のS112及びS115で2×2ブロックがL字(黒太線)であると判定された場合には、S122へ進む。また、例えば図3のS112及びS116で2×2ブロックが逆L字(白太線)であると判定された場合には、図8のS141へ進む。
2×2ブロックがL字に分類された場合には、S122において、黒太線のエッジが水平方向へ延びるものか、あるいは垂直方向へ延びるものかを、角度概算部21で概算して判定する。水平方向ならばS123に進み左右の接続長を計数し、垂直方向ならばS129に進み上下の接続長を計数する。
図9は、画像処理部3におけるL字に分類された2×2ブロックの接続方向(概算角度)および接続長(精算角度)の抽出処理の一例を示すフローチャート、図10は、L字に分類された2×2ブロックに対する角度概算処理の一例を示す図、図11は、同じく接続方向及び接続長の抽出と画素補正処理の具体例の説明図である。図8におけるS122、S123、S129の処理を図9に示している。
まず、図8のS122において黒太線のエッジが水平方向へ延びるものか、あるいは垂直方向へ延びるものかを判定する際には、図10(A)にハッチングを施して示した画素および2×2ブロックを含む3×3画素サイズのブロックの画素値を参照する。そして、図9のS161およびS170において、ドットの接続方向(水平方向または垂直方向)を判定する。これは当該エッジの角度を概算する処理である。例えば図10(D)に示すように、2×2ブロックの上にある2つの画素(図10(D)ではr1 、r2 で示した)と2×2ブロックの右の上側にある画素(図10(D)ではq1 で示した)が共に白であれば、このエッジは水平方向に延びていると推測することができる。この場合には、S161からS162へ進む。また、2×2ブロックの右側にある2つの画素(図10(E)ではq1 、q2 で示した)と2×2ブロックの上部の右側にある画素(図10(E)ではr2 で示した)が共に白であれば、このエッジは垂直方向に延びていると推測することができる。この場合には、S170からS171へ進む。両方とも満たさない場合には、当該2×2ブロックについての処理を終了する。
なお、S161およびS170における判定の処理は、図10(B)に示したように、初めに2×2ブロックの上部の2画素のうちの右側の画素(図10(B)ではr2 で示した)と、右部の2画素のうち上側の画素(図10(B)ではq1 で示した)が共に白画素であるか否かを先に調べる。そして、共に白であった場合に、図10(D)に示すように画素r1 が白であれば水平方向であると判定し、図10(E)に示すように画素q2 が白であれば垂直方向であると判定してもよい。また、図9に示すフローチャートでは初めにS161で水平方向か否かを判断し、次にS170で垂直方向か否かを判断しているが、これはその逆でも良い。
次に、例えば、接続方向が水平方向であった場合には、左右それぞれについて、ドットの接続長を算出する。例えば図11(B)に示すように、2×2ブロックの左上にp1 ,p2 ,…を設定する。また、2×2ブロックの右側に上述のq1 ,q2 を含むq3 ,q4 ,…を設定する。図9のS162で変数i=2として初期化し、S163でpi-1 =白、pi =黒であるか否かを判定し、条件に合致していればS164でiに2を加算してS163へ戻り、左側に隣接する2画素の判定を繰り返す。このようにして、2×2ブロックの左上側に水平方向に連続するpi-1 =白、pi =黒のペアをiにより計数してゆき、S165でiを1/2にして左接続長とする。
さらに、S166で変数i=2に初期化して、S167でqi-1 =白、qi =黒であるか否かを判定し、条件に合致していればS168でiに2を加算してS167へ戻り、右側に隣接する2画素の判定を繰り返す。このようにして、2×2ブロックの右側に水平方向に連続するqi-1 =白、qi =黒のペアをiにより計数してゆき、S169でiを1/2にして右接続長とする。
これによって、左右それぞれの方向の接続長が求められる。その後、図7のS124に進む。なお、図11(B)にはp6 ,q6 までしか示していないが、連続する限り計数してもかまわないし、ある程度で計数を打ち切ってもよい。
同様に、接続方向が垂直方向であった場合には、上下それぞれについて、ドットの接続長を算出する。例えば図11(C)に示すように、2×2ブロックの上部に上述のr1 ,r2 を含むr3 ,r4 ,…を設定する。また、2×2ブロックの右下にs1 ,s2 ,…を設定する。図9のS171で変数i=2として初期化し、S172でri-1 =黒、ri =白であるか否かを判定し、条件に合致していればS173でiに2を加算してS172へ戻り、上側に隣接する2画素の判定を繰り返す。このようにして、2×2ブロックの上側に垂直方向に連続するri-1 =黒、ri =白のペアをiにより計数してゆき、S174でiを1/2にして上接続長とする。
さらに、S175で変数i=2として初期化し、S176でsi-1 =黒、si =白であるか否かを判定し、条件に合致していればS177でiに2を加算してS176へ戻り、右下側に隣接する2画素の判定を繰り返す。このようにして、2×2ブロックの右下側に垂直方向に連続するsi-1 =黒、si =白のペアをiにより計数してゆき、S178でiを1/2にして下接続長とする。
これによって、上下それぞれの方向の接続長が求められる。その後、図7のS130に進む。なお、図11(C)にはr6 ,s6 までしか示していないが、垂直方向の場合にも、連続する限り計数してもかまわないし、ある程度で計数を打ち切ってもよい。
図7に戻り、S122で接続方向が水平方向であると判定され、S123で接続長を算出した後、S124において、接続方向が45度条件を満たすか否かを判定する。もし、接続方向が45度条件を満たしていれば、S125に進んで角度精算部22によって接続方向の角度を精算する。エッジ方向が45度に近い場合、単純に接続長だけでは45度方向の角度を精度良く得ることができないため、十分な画質改善効果が得られない場合がある。そのため、45度に近い場合にはその角度を精度良く得るための角度精算処理を行う。
図12は、2×2ブロックがL字であり接続方向が水平方向の場合の45度方向の角度精算の一例の説明図である。例えば、S124における45度条件の判定としては、接続長が短い場合を抽出すればよく、例えば図12(A)に示す左接続長=2、右接続長=1か、図12(B)に示す左接続長=1、右接続長=2の場合に、接続方向が45度方向であると判定することができる。それ以外の場合には接続方向が45度方向でないと判定し、S126の画質改善処理に進む。
S124において接続方向が45度条件を満たす場合には、S125へ進んで、左接続長=2、右接続長=1ならば、図12(C)に粗いハッチングを施して示した右下方向の左右に隣接する2画素のペアを参照してゆき、接続長を算出する。この接続長の算出は、水平方向や垂直方向の接続長の算出方法と同じであるため詳細を省略するが、この例では、左右に並ぶ2画素のペアのうち、左側画素が黒で右側画素が白であるようなペアが続く長さが接続長となる。同様に、左接続長=1、右接続長=2ならば、図12(D)に粗いハッチングを施して示した左上方向の左右に隣接する2画素のペアを参照してゆき、接続長を算出する。この場合にも、左右に並ぶ2画素のペアのうち、左側画素が黒で右側画素が白であるようなペアが続く長さが接続長となる。なお、水平方向の場合にはそれぞれ左右、垂直方向の場合にはそれぞれ上下、いずれも2方向の接続長を算出していたが、45度条件を満たした場合には、所定の1方向(この場合は右下、左上のどちらか片側のみ)の接続長を算出するようにする。以上のようにして45度方向の接続長を算出したらS126へ進む。
一方、S122で接続方向が垂直方向であると判定され、S129で接続長を算出した後、S130において、同様に接続方向が45度条件を満たすか否かを判定する。もし、接続方向が45度条件を満たしていれば、S131に進んで角度精算部22によって接続方向の角度を精算する。
図13は、2×2ブロックがL字であり接続方向が垂直方向の場合の45度方向の角度精算の一例の説明図である。例えば、S130における45度条件の判定としては、接続長が短い場合を抽出すればよく、例えば図13(A)に示す上接続長=2、下接続長=1か、図13(B)に示す上接続長=1、下接続長=2の場合に、接続方向が45度方向であると判定することができる。それ以外の場合には接続方向が45度方向でないと判定し、S132の画質改善処理に進む。
S130において接続方向が45度条件を満たす場合には、S131へ進んで、上接続長=2、下接続長=1ならば、図13(C)に粗いハッチングを施して示した右下方向の上下に隣接する2画素のペアを参照してゆき、この場合には、上下に白黒のペアが続く長さから再び接続長を算出する。なお、2画素のペアの参照は、ドットの補正を開始する位置に相当する原画像の2×2ブロック内のペアから数えて2画素目から開始する。同様に、上接続長=1、下接続長=2ならば、図13(D)に粗いハッチングを施して示した左上方向の上下に隣接する2画素のペアを参照してゆき、この場合にも、上下に白黒のペアが続く長さから再び接続長を算出する。以上のようにして45度方向の接続長を算出したらS132へ進む。
次に、S126、S132において、画質改善処理(図3のS118に対応)を行う。ここでは、左右方向または上下方向または45度方向の接続長が抽出されているので、それぞれ対応する精算角度に応じて補正画素を出力してゆく。画質改善としてアンチエイリアス拡大処理を行う場合、2倍に拡大された原画像内に、中間調の値を出力してゆく。接続方向が水平方向の場合には、例えば図11(D)〜(G)に示すように、接続方向である水平方向に対して、2倍原画像中に、接続長に応じた画素値を配分する。例えば、左方向の接続長がkであれば、k個分の長さの画素値を出力する。右方向についても同様に画素の配置を行えばよい。
なお、図11(D)〜(G)に示す例では、左右の接続長が同じであった場合のドット配置の例を図示している。例えば図11(D)は接続長が1の場合を、図11(E)は接続長が2の場合を、図11(F)は接続長が3の場合を、図11(G)は接続長が4の場合を、それぞれ示している。左右の接続長が異なる場合、例えば左方向の接続長が2で右方向の接続長が4の場合には、左方向には図11(E)の左側に配置した2ドット、右方向には図11(G)の右側に配置した4個のドット、計6個のドットを対応位置に配置すればよい。
また、接続方向が垂直方向の場合には、例えば図11(H)〜(K)に示すように、接続方向である垂直方向に対して、2倍原画像中に、接続長に応じた画素値を配分する。例えば、接続長がkであれば、k個分の長さの画素値を出力すればよい。図11(H)〜(K)に示す例では、上下の接続長が同じであった場合のドット配置の例を図示しており、図11(H)は接続長が1の場合を、図11(I)は接続長が2の場合を、図11(J)は接続長が3の場合を、図11(K)は接続長が4の場合を、それぞれ示している。上下の接続長が異なる場合には、それぞれの上方向、下方向の接続長に応じたドットを対応位置に配置すればよい。
また、接続方向が45度方向であった場合についても、水平方向、垂直方向の場合と同様にしてドットの配置を行うことができる。図14は、2×2ブロックがL字であり接続方向が水平方向で45度方向と判定された場合の画質改善処理の一例の説明図である。S124で45度条件を満たしていて、S125で45度方向の接続長を算出した場合には、S126において、図14に示すように、水平方向に対応した右下方向または左上方向に画素値の配分を行う。
図12(C)(図14(B))で説明したようにS125において右下方向に接続長を計数した場合には、図14(D)〜(G)に示すように画素値の配分を行う。また、図12(D)(図14(C))で説明したようにS125において左上方向に接続長を計数した場合には、図14(H)〜(K)に示すように画素値の配分を行う。
図15は、2×2ブロックがL字であり接続方向が垂直方向で45度方向と判定された場合の画質改善処理の一例の説明図である。S130で45度条件を満たしていて、S131で45度方向の接続長を算出した場合には、S132において、図15に示すように、垂直方向に対応した右下方向または左上方向に画素値の配分を行う。
図13(C)(図15(B))で説明したようにS131において右下方向に接続長を計数した場合には、図15(D)〜(G)に示すように画素値の配分を行う。また、図13(D)(図15(C))で説明したようにS131において左上方向に接続長を計数した場合には、図15(H)〜(K)に示すように画素値の配分を行う。
それぞれの画素値の配分は、例えば接続長がkであれば、k個分の長さの2ドットペアの画素値を出力することによって行うことができる。なお、配分する画素値の具体的な画素値については、水平方向、垂直方向のいずれの場合についても、45度方向の場合を含めて後述する。上述の例では、便宜的に接続方向が水平方向の場合にS126で処理し、垂直方向の場合にS132で処理するようにしているが、もちろん共通化してもよい。
以上によって、L字(黒太線)の場合に関して、S126およびS132の画質改善処理が行われた。次に、S127およびS133に進んで、処理した2×2ブロックが図3のS115においてL字(黒太線)と判定されたのか、あるいはS112においてL字(黒太線)と判定されていたのかを判定する。S112においてL字と判定されていた場合(つまり、はじめからL字に分類されていた場合)には、処理を終了する。
S115においてL字(黒太線)と判定されてL字として処理された場合(つまり、はじめは細線に分類され、後にL字に分類された場合)であって、1回目の処理であった場合には、図7においてS128およびS134に進んで、注目する2×2ブロックの位置を所定方向に1画素分ずらして、再び処理を行う。
図16は、細線と判定された後にL字に分類された場合の2回目のL字の処理を行うブロック位置の説明図である。例えば、細線と判定された後にL字に分類され、さらに接続方向が水平方向である場合には、図16(A)に示すように、1画素分下にずれた位置の2×2画素をS128で処理対象のブロックとして、再びS123に戻って水平方向のL字処理を繰り返す。
S126における画質改善処理は、上側が白、下側が黒のエッジが存在している部分に対して画素の配置を行うものであり、黒太線を想定しているため下部は黒であることを前提として処理を行っている。そのため、例えば図11(D)〜(G)や図14に示したように、2×2ブロックの上側にしか画素の配置を行っていない。しかし、細線の場合には、2×2ブロックについて上側が白で下側が黒のエッジとともに、上側が黒で下側が白のエッジも存在することになる。そのため、上側のエッジの処理だけでは下側のエッジに対する画質改善処理が行われなくなってしまう。このような処理の抜けを防止するため、図16(A)に示すように処理対象の2×2ブロックに対して1画素分下にずらした2×2ブロック(内側に矩形を付して示した2×2ブロック)を処理対象とする。この1画素分下にずらした2×2ブロックは、L字(白太線)のパターンであり、上述のL字(黒太線)の処理について黒と白を反転した処理を行えばよい。これによって、細線の下側のエッジに関しても画素値の補正を行うことができる。
同様に、例えば細線と判定された後にL字に分類され、さらに接続方向が垂直方向である場合には、図16(B)に示すように、1画素分左にずれた位置の2×2画素をS134で処理対象のブロックとして、再びS129に戻って水平方向のL字処理を繰り返す。
S132における画質改善処理は、右側が白、左側が黒のエッジが存在している部分に対して画素の配置を行うものであり、黒太線を想定しているため左側部分には太線の内部である黒の画素が存在していることを前提として処理を行っている。そのため、例えば図11(H)〜(K)や図15に示したように、2×2ブロックの右側にしか画素の配置を行っていない。しかし、細線の場合には、2×2ブロックについて右側が白で左側が黒のエッジとともに、右側が黒で左側が白のエッジも存在することになる。そのため、右側のエッジの処理だけでは左側のエッジに対する画質改善処理が行われなくなってしまう。このような処理の抜けを防止するため、図16(B)に示すように処理対象の2×2ブロックに対して1画素分左にずらした2×2ブロック(内側に矩形を付して示した2×2ブロック)を処理対象とする。この1画素分左にずらした2×2ブロックは、L字(白太線)のパターンであり、上述のL字(黒太線)の処理について黒と白を反転した処理を行えばよい。これによって、細線の左側のエッジに関しても画素値の補正を行うことができる。
なお、1画素分下または左にずらした2×2ブロックについての処理を終えたら、さらにブロックをずらすことはせず、S127およびS133から処理を終了する。以上によって、最初に市松(細線)と分類された後にL字に分類された場合を含めて、L字(黒太線)と分類された2×2ブロックに関する全ての処理が終了する。
逆L字(白太線)に分類された2×2ブロックの処理に関しても、L字の場合と同様である。S141において、白太線のエッジが水平方向へ延びるものか、あるいは垂直方向へ延びるものかを、角度概算部21で概算して判定する。逆L字の場合も上述のL字の場合と同様に、例えば、2×2画素の上2画素と左側の上の画素の計3画素が黒であれば水平方向であると判定し、2×2画素の左2画素と上側の左の画素の計3画素が黒であれば垂直方向であると判定すればよい。水平方向ならばS142に進み左右の接続長を計数し、垂直方向ならばS148に進み上下の接続長を計数する。
図17は、逆L字に分類された2×2ブロックに対する角度概算処理の一例を示す図、図18は、画像処理部3における逆L字に分類されたブロックの接続方向および接続長の抽出と画質改善処理の具体例の説明図である。上述の水平方向、垂直方向の判定は、L字の場合と同様に、図17(B)に示したように、初めに2×2ブロックの上側の左部の画素と、左側の上部の画素が共に黒画素であるか否かを先に調べ、ともに黒であった場合に、図17(D)、(E)に示すように上側の右の画素が黒か否か、あるいは左側の下の画素が黒か否かを判定することによって、水平方向か垂直方向かを判定することができる。そして、水平方向であればS143において図18(B)に粗いハッチングを施して示した2画素ずつについて、垂直方向であればS148において図18(C)に粗いハッチングを施して示した2画素ずつについて、それぞれ白黒のペアを計数し、それぞれの接続長を求める。
更に、求めたそれぞれの接続長から45度方向の判定を行う。水平方向の場合はS143において45度条件、例えば左接続長=1、右接続長=2または左接続長=2、右接続長=1であるか否かを判定し、45度条件を満たしている場合には45度方向であるとみなす。それ以外の場合には接続方向が45度方向でないと判定し、S145の画質改善処理に進む。
図19は、2×2ブロックが逆L字であり接続方向が水平方向の場合の45度方向の角度精算の一例の説明図である。S143において接続方向が45度条件を満たす場合には、S144へ進んで、図19(A)に示すように左接続長=2、右接続長=1ならば、図19(C)に粗いハッチングを施して示した右上方向の左右に隣接する2画素のペアを参照してゆき、接続長を算出する。この例では、左右に並ぶ2画素のペアのうち、左側画素が黒で右側画素が白であるようなペアが続く長さが接続長となる。なお、2画素のペアの参照は、ドットの補正を開始する位置に相当する原画像の2×2ブロック内のペアから数えて2画素目から開始する。
同様に、図19(B)に示すように左接続長=1、右接続長=2ならば、図19(D)に粗いハッチングを施して示した左下方向の左右に隣接する2画素のペアを参照してゆき、接続長を算出する。この場合にも、左右に並ぶ2画素のペアのうち、左側画素が黒で右側画素が白であるようなペアが続く長さが接続長となる。L字の場合と同様に、45度条件を満たした場合には、所定の1方向(この場合は右上、左下のどちらか片側のみ)の接続長を算出している。以上のようにして45度方向の接続長を算出したらS145へ進む。
一方、S141で接続方向が垂直方向であると判定され、S148で接続長を算出した後、S149において、同様に接続方向が45度条件を満たすか否かを判定する。もし、接続方向が45度条件を満たしていれば、S150に進んで角度精算部22によって接続方向の角度を精算する。
図20は、2×2ブロックが逆L字であり接続方向が垂直方向の場合の45度方向の角度精算の一例の説明図である。例えば、S149における45度条件の判定としては、接続長が短い場合を抽出すればよく、例えば図20(A)に示す上接続長=2、下接続長=1か、図20(B)に示す上接続長=1、下接続長=2の場合に、接続方向が45度方向であると判定することができる。それ以外の場合には接続方向が45度方向でないと判定し、S151の画質改善処理に進む。
S149において接続方向が45度条件を満たす場合には、S150へ進んで、上接続長=2、下接続長=1ならば、図20(C)に粗いハッチングを施して示した左下方向の上下に隣接する2画素のペアを参照してゆき、この場合には、上下に黒白のペアが続く長さから再び接続長を算出する。同様に、上接続長=1、下接続長=2ならば、図20(D)に粗いハッチングを施して示した右上方向の上下に隣接する2画素のペアを参照してゆき、この場合にも、上下に黒白のペアが続く長さから再び接続長を算出する。以上のようにして45度方向の接続長を算出したらS151へ進む。
次に、S145、S151において、画質改善処理(図3のS118に対応)を行う。ここでは、左右方向または上下方向または45度方向の接続長が抽出されているので、それぞれ対応する精算角度に応じて補正画素を出力してゆく。画質改善としてアンチエイリアス拡大処理を行う場合、2倍に拡大された原画像内に、中間調の値を出力してゆく。接続方向が水平方向の場合には、例えば図18(D)〜(G)に示すように、接続方向である水平方向に対して、2倍原画像中に、接続長に応じた画素値を配分する。また、接続方向が垂直方向の場合には、例えば図18(H)〜(K)に示すように、接続方向である垂直方向に対して、2倍原画像中に、接続長に応じた画素値を配分する。
また、接続方向が45度方向であった場合についても同様にしてドットの配置を行うことができる。図21は、2×2ブロックが逆L字であり接続方向が水平方向で45度方向と判定された場合の画質改善処理の一例の説明図、図22は、2×2ブロックが逆L字であり接続方向が垂直方向で45度方向と判定された場合の画質改善処理の一例の説明図である。S143で45度条件を満たしていて、S144で図21(B)に示すように右上方向に45度方向の接続長を算出した場合には、S145において、図21(D)〜(G)に示すように右上方向に画素値の配分を行う。また、S143で45度条件を満たしていて、S144で図21(C)に示すように左下方向に45度方向の接続長を算出した場合には、S145において、図21(H)〜(K)に示すように左下方向に画素値の配分を行う。
さらに接続方向が垂直方向であり、S149で45度条件を満たしていて、S150で図22(B)に示すように左下方向に45度方向の接続長を算出した場合には、S151において、図22(D)〜(G)に示すように左下方向に画素値の配分を行う。またS149で45度条件を満たしていて、S150で図22(C)に示すように右上方向に45度方向の接続長を算出した場合には、S151において、図22(H)〜(K)に示すように右上方向に画素値の配分を行う。
なお、配分する画素値の具体的な画素値については、水平方向、垂直方向のいずれの場合についても、45度方向の場合を含めて後述する。また、この逆L字の場合にも、上述の例のように便宜的に接続方向が水平方向の場合にS145で処理し、垂直方向の場合にS151で処理するほか、共通化してもよい。
その後S146またはS152において、逆L字(白太線)のうち、元々は市松(細線)と分類されていた2×2ブロックであり、1回目の処理であったか否かを判定する。初めは市松(細線)に分類された後、逆L字(白太線)に分類された2×2ブロックについては、S147,S153において注目する2×2ブロックの位置を所定方向に1画素分ずらし、S142,S148へ戻って再び処理を行う。
図23は、細線と判定された後に逆L字に分類された場合の2回目の逆L字の処理を行うブロック位置の説明図である。例えば、細線と判定された後に逆L字に分類され、さらに接続方向が水平方向である場合には、図23(A)に示すように、注目している2×2ブロックに対して1画素分下にずれた位置の2×2画素をS147で処理対象のブロックとして、再びS142に戻って水平方向の逆L字(黒太線)処理を繰り返す。また、例えば細線と判定された後に逆L字に分類され、さらに接続方向が垂直方向である場合には、図23(B)に示すように、この場合には1画素分右にずれた位置の2×2画素をS153で処理対象のブロックとし、再びS148に戻って水平方向の逆L字処理を繰り返す。なお、再度の逆L字(黒太線)の処理は、上述の逆L字(白太線)の処理を白黒反転して行えばよい。
以上によって、逆L字の場合の改善処理も終了する。なお、上述したように、図5(A)の右側に示した白黒反転した細線、白太線、黒太線も、全ての画素関係を白黒反転させて上述の市松、L字、逆L字の分類によって処理を行えばよい。全てのブロックについて上述の処理を行った後に、画質改善画像(この例ではアンチエイリアス2倍拡大画像)を画像出力部4に出力する。
S126,S132,S145,S151において行う画質改善処理による画素配置の具体的な処理方法について説明する。画質改善処理によって配置する画素値の出力は、図11、図14、図15、図18、図21、図22に示したように、水平方向、垂直方向、45度方向となっている。図24は、水平方向の黒太線に対する精算角度と画質改善処理による画素配置の一例の説明図、図25は、水平方向の黒太線に対するエッジ線の面積占有率の説明図である。例えば図24に示すL字(黒太線)の2×2パターンについて、水平方向の右へのエッジに関する画質改善処理を考えれば、この処理の上下(左右)反転、90度単位回転、濃度反転の組み合わせで、全ての水平方向、垂直方向の処理を行うことができる。また、後述する図26に示すように、45度右下方向のエッジに関する画質改善処理を考えれば、やはりこの処理の上下(左右)反転、90度単位回転、濃度反転の組み合わせで、全ての45度方向の処理を行うことができる。従って、補正画素値としては、水平方向(片側)、45度方向(片側)を用意すれば、全ての方向の補正において共通化できる。例えばテーブル化しておいて、各方向の処理の際に適切な形で使用することもできる。水平方向、45度方向の補正画素値の計算は、アンチエイリアスにおける、エッジが画素に占める面積占有率の概念に従っている。以下、補正画素の計算方法をそれぞれ説明する。
まず、図24、図25を参照しながら、接続方向が水平方向で、接続長がnであった場合に、新たにn個の画素を対応位置に配置する際の画素値の計算方法を説明する。図24(A)に示した例はL字(黒太線)に分類される2×2ブロックの場合を示しており、この場合、2×2ブロックの右方向に上に白、下に黒の2画素が続けば、水平右方向にエッジが存在する可能性がある。このような場合、上述の方法で接続長を算出して、図24(B)に示すように接続長分だけL字の部分にドットを配置する。なお、図24(B)に示す例は接続長が4の場合を示している。
このとき、接続長が2であれば図24(C)に示すエッジが、接続長が3であれば図24(D)に示すエッジが、接続長が4であれば図24(E)に示すエッジが、接続長が5であれば図24(F)に示すエッジが、それぞれ存在すると考える。これらの場合に、接続長からエッジの角度がそれぞれ図24(C)〜(F)に示すように精算されているので、画素を配置した際にこの角度のエッジ線が画素を占める面積占有率を計算すればよい。
配分するn個の画素値は、図25に示すように、1画素の一辺の長さをnとおいて、1画素をn×n単位にみなし、エッジ線の下側の面積を左側から順にA1 ,…,An と置けば、台形の面積を計算して、k=1,…,nに対して、
Ak =((n−(k−1))+(n−k))・n/2
=(2n−2k+1)・n/2
となる。それぞれの濃度値は、画素全体の面積値(=n2 )に対する比として、
P(Ak )=(255−(2n−2k+1)・n/2)/n2 ×255
=255−(2n−2k+1)/(2n)×255
として求めることができる。なお、この式は黒L字(黒太線)の場合の値であり、図24において白黒反転した白L字(白太線)の場合には、上記の式によって算出される値の白黒反転値であり、すなわち
P(Ak )=((2n−2k+1)・n/2)/n2 ×255
=(2n−2k+1)/(2n)×255
となる。
なお、上述のようにして接続長から2倍拡大画像に対して画質改善のための画素を配置するため、例えば原画像における接続長分の画素の半分までしか画素の配置が行われない。例えば接続長が4であれば、2倍拡大画像では8画素分の接続長に相当するが、配置される画素は4画素である。これは、例えば接続長が4であり、原画像上で4画素進んだ位置で再び段差が存在する場合、その段差に対する画質改善処理で2倍拡大画像における残りの4画素の配置が行われる。これによって、例えば斜めに直線状に連続するエッジについては、平坦部を挟む両側の段差部分から半分ずつ画質改善処理によって画素が配置され、全体として画質の改善を図ることができる。
図26は、45度方向の黒太線に対する画質改善処理による画素配置の一例の説明図、図27は、45度方向の黒太線に対するエッジ線の面積占有率の説明図である。図26、図27を参照しながら、接続方向が45度方向で、接続長がnであった場合に、新たに2n個の画素を対応位置に配置する際の画素値の計算方法を説明する。図26(A)に示した例は白黒反転したL字パターンの場合を示しており、この場合、左接続長=2、右接続長=1で、2×2ブロックの右下方向に、左右に白黒のペア画素が続けば、右下方向にエッジが存在する可能性がある。このような場合も、上述の方法で接続長を算出して、図26(B)に示すように接続長分だけドットを配置する。図26(B)に示す例では、45度方向の接続長が4の場合について示している。
このとき、接続長が2であれば図26(C)に示すエッジが、接続長が3であれば図26(D)に示すエッジが、接続長が4であれば図26(E)に示すエッジが、接続長が5であれば図26(F)に示すエッジが、それぞれ存在すると考えられる。これらの場合も、接続長からエッジの角度がそれぞれ精算されているので、画素を配置した際にこの角度のエッジ線が画素を占める面積占有率を計算すればよい。
配分する2n個の画素値は、図27に示すように、1画素の一辺の長さをn+1とおいて、(n+1)×(n+1)単位とみなし、エッジ線の上側の面積を、2画素ペアの左画素について、左側から順にA1 ,…,An と置き、2画素ペアの右画素について、左側から順にB1 ,…,Bn と置く。それぞれ三角形の面積を計算すると、k=1,…,nに対して、
Ak =(n−k+1)2 ・(n+1)/2n
Bk =(n+1)2 −k2 (n+1)/2n
となる。従って、それぞれの濃度値は、画素全体の面積値(=(n+1)2 )に対する比として、
P(Ak )=((n−k+1)2 ・(n+1)/2n)/((n+1)2 )×255
=((n−k+1)2 /2n(n+1))×255
P(Bk )=((n+1)2 −k2 (n+1)/2n)/((n+1)2 )×255
=(1−k2 /2n(n+1))×255
として求めることができる。
なお、上記の式は白L字(白太線)の場合の値であり、図26において白黒反転した黒L字(黒太線)の場合には、上記の式によって算出される値の白黒反転値であり、すなわち
P(Ak )= 255−((n−k+1)2 /2n(n+1))×255
P(Bk )= 255−(1−k2 /2n(n+1))×255
となる。なお、どちらの場合にもP(Ak )=255−P(Bn −k+1)の関係があるので、Ak とBk のうち例えばAk だけ計算してもよい。
上述したように、水平方向(片側)と45度方向(片側)の補正画素値を接続長(精算角度)によってそれぞれテーブル化しておけば、本発明で使用する全ての補正角度はテーブルを引くことにより行うことができる。白黒反転に関しては、処理毎に255からの減算を計算すると遅くなる場合があるので、白黒反転したテーブルも作成しておいてもよい。
以下、上述の説明について、いくつかの補足説明を行う。まず、細線(市松)に分類された2×2ブロックに関して、黒太線(L字)または白太線(逆L字)として処理を2回繰り返す理由を説明する。図28は、もともと黒太線(L字)と判定された場合と細線(市松)と判定された場合の違いの説明図である。図28(A)、(B)には、もともと黒太線(L字)と判定された場合を示している。もともと黒太線(L字)と判定された2×2ブロックは、太線の片側(この例では上側)に補正処理が行われる。では、太線のもう一方の側(この例では下側)はどうかというと、図28(A)に示すように、単なるステップエッジのような部分では上側のエッジの処理のみでよいことは明らかであろう。この場合としては、ある領域が塗りつぶされていたり、線幅が非常に広い線分などが該当する。
また、図28(B)に示すように、太線の上側のエッジに対して2×2ブロックaによってL字(黒太線)の画質改善処理が施された後、処理が進んで、太線の反対側(下側)のエッジについては、2×2ブロックbが処理対象となったときに、白黒反転したL字(白太線)として再びL字の画質改善処理が行われる。これは、もっと太線の線幅が太くなったとしても同様である。従って、もともと黒太線、あるいは白太線として処理された2×2ブロックに関しては、該2×2ブロックのみについて処理を行えば問題ない。
次に、図28(C)に示すように、細線(市松)部分を黒太線(L字)として処理した場合、2×2ブロックcが処理対象となったときに細線の片側(この例では上側)に画質改善処理が行われる。では、細線のもう一方の側(この例では下側)はどうかというと、図28(C)を見ると、処理が進んで、2×2ブロックdが処理対象となったときに、パターンとしては白黒反転したL字(白太線)となる。しかし、図28(C)に「*」で示した画素が白であるため、L字の判定(図10(B)のr2)で処理対象から外され、画質改善処理が行われないことになってしまう。
そこで、市松の場合にはこの2×2ブロックdについても同時に処理を行わせるように構成している。この処理が、例えば図7,図8におけるS128からS123へ、S134からS129へ、S147からS142へ、S153からS148への処理である。2回目の処理では、図10(B)に示したr2の値のチェックは行わないので、L字としての処理が可能である。
もちろん、分類を行う際の判定の条件を弱めて、r2の値のチェックを行わないように構成すれば、図28(C)の2×2ブロックcとdをそれぞれ別々に画質改善処理することも可能である。そのため、細線の場合に限って2箇所に処理を行うというのは、必ずしも必須ではない。しかし、太線と違って細線の場合には処理した2×2ブロックから1画素ずれた2×2ブロックに、必ずもう片側のエッジが存在するので、細線と分かった時点で、両側を同時に処理する方が画質の点からも誤りがなく好ましい。
このような、細線部に関してのみ、対になるエッジ部も同時に画質改善処理を行うという方法は、画質と速度の観点から見て好ましいが、このような構成を取れるのは、本発明におけるブロック分類処理において細線部に分類する工程が含まれているからである。例えば、初めから細線に分類せずに第1の太線か第2の太線かに分類するような構成を取った場合には、新たに細線かどうかを判定しなければこのような方法を採ることができない。
また、上述の説明において、黒太線、白太線ともに、2×2ブロックの上部の2画素が異なる場合のみを処理の対象としている。2×2ブロックの上部の2画素が等しい場合についても黒太線、白太線を定義できるが、本発明の特徴から、これらの場合は処理が不要であり、従って分類自体も不要である。例えば図28(B)において、ブロックbの1画素上にある2×2ブロックを見ると、2×2ブロックの上部が共に黒画素で下部が白画素と黒画素で構成される黒太線となっている。しかし、ブロックaとブロックbについて処理すればそれで充分であることは、これまでの説明から明らかである。このような2×2ブロックの上部の2画素が等しいブロックについて処理が不要な理由は、本発明において、線のエッジ部分の両側を、白黒を反転させて考えることにより、同じ形態として扱えるためである。なお、逆に言えば、上述した画質改善の方法を、2×2ブロックの下部の2画素が異なる場合、あるいは左側の2画素が異なる場合、あるいは右側の2画素が異なる場合、のうちどれか一つの場合について処理を行う構成にすることも可能である。実際、そのような場合には、上述の一連の説明全てを90度単位の必要角度で回転させて考えればよいだけである。本発明において「上側の2画素が異なる場合」を採用しているのは、処理速度の観点から見て、初めに1ライン目に連続した2画素を見るのが妥当と考えられるためである。
また、上述の説明において接続長を算出する際の例として、水平、垂直、45度ともそれぞれ6画素分までしか図示していないが、上述のように同様の手順で最大で画像の端まで画素を参照するようにしても良いし、あるいはある程度で打ち切るようにしてもよい。例えば上下左右に16画素程度を参照すると、低角のエッジまで拾うことができ、確実に高画質化することができる。もちろん、これらの周辺の画素を参照する際には、画像の上下左右端などでは走査域が外にはみ出ないように注意する必要がある。また、上下左右に参照する範囲は、固定でなく、パラメータにしておいて画質や速度とのバランスによって選択できるようにしておいてもよい。
さらに、上述の説明では45度方向の接続長の算出の際に、一旦水平もしくは垂直方向の接続長を算出した後に、再度45度方向の接続長を算出している。この処理は、接続長が2または1の場合にのみ行われるので、接続長を2回計算しても、前段の処理が軽いため大きな負荷にはならない。加えて、接続長は、水平ならば左右の両側、垂直ならば上下の両側、それぞれについて算出するが、45度の場合は45度方向のうちの片側のみ算出するだけなので、このことからも負荷はそれほど増加しない。もちろん、初めから水平、垂直、45度を同時に判定するように構成してもよい。
上述の処理では、既に処理された画素が再び画質改善処理対象となる場合がある。例えば市松の処理を行った場合、上述したように1ライン先にあるブロックも同時に処理される場合があるので、次のラインを処理した際に一部の画素の処理が重複する場合がある。このような場合は、先に処理された結果を優先するようにしてもよいし、その逆でも良いし、後から処理された結果との平均値を使うようにしても良い。
上述の説明では、アンチエイリアス拡大を行う場合について説明してきた。しかしこれに限らず、拡大を行わないアンチエイリアス処理や拡大処理に対しても適用可能である。図49、図50を用いて説明したように、アンチエイリアス拡大処理の概念は、アンチエイリアス処理や拡大処理の上位概念として位置づけることができる。従って、簡単にアンチエイリアス画像や拡大画像を生成することができる。
例えば拡大画像の作成は、上述のアンチエイリアス拡大画像を作成する処理において配置する画質改善のための画素として、濃度50%を越えるもの(例えば画素値128値以上)を1、50以下のもの(例えば画素値127値以下)を0に置き直せば、上述のアンチエイリアス拡大画像を作成するための処理のままで、拡大画像を得ることができる。また、配置する補正画素値の平均値を縮小画素値として求めれば、この値と原画像との重み付け平均によって直接アンチエイリアス画像を作成することができる。もちろん、上述のようにして作成したアンチエイリアス拡大画像を単純2値化すれば拡大画像が得られるし、平均値縮小すればアンチエイリアス画像を得ることができる。
さらに、上述の説明では画素値を新たに配置する際に、エッジが画素を通過する面積占有率に従って行っている。もちろん配置する画素の個数や濃度の種類は上述の例に限られるものではない。図29は、配置する画質改善のための画素値の別の例の説明図である。例えば図29に示した例では、接続長が5の場合の推定エッジ線を表している。図29(A)は上述した面積占有率によって補正画素値を求めたものであり、配置する画素値は、画素全体に対するハッチングで示した領域の面積比と等しい。
一方、図29(B)にハッチングで示した面積比は、推定されるエッジ線の面積占有率よりも小さく設定した例を示している。この例では、図29(A)の場合に比べてエッジ線が細くなる効果がある。出力機器の特性に応じて、このように面積占有率による補正画素値を基準として、補正画素値を予め一律に補正しておいてもよい。
以上の説明では、各部分の処理を分かりやすくするために、それぞれエッジの方向毎に分けて説明している。しかし、本発明の一つの特徴である、細線部分も太線の処理法で共通化できるという点に加えて、上下(左右)反転、90度単位回転、濃度反転の組み合わせによって、更により多くの部分を共通化できる。つまり、ブロックの参照開始の位置や書き込み開始の位置、細線(市松)の場合における2回目の処理位置、などの情報を管理しておけば、処理自体の構造は非常にシンプルなものとなる。特に上述の例の場合、細線、黒太線、白太線の判定を2×2ブロックで行い、概算角度の判定を3×3ブロック内で行っているため、無駄な参照画素が少なく、高速でもある。また、このようにブロックを小さく取るということは、判定漏れを防ぐことにもつながり、確実に高画質化を実現することができる。
上述のようにして作成されたアンチエイリアス拡大画像は、2倍拡大画像にアンチエイリアスが掛かった状態の画像であり、単に2倍拡大とアンチエイリアス(アンチエイリアス拡大)を同時に行うというだけではなく、アンチエイリアスを掛けた際の情報喪失を2倍拡大によって抑えてもいる。つまり、画像の情報が適切に保たれ、かつ高画質化されているので、この後段で更に拡縮する際にもより好都合となっている。特に、もともとの目的が2値画像の拡大であるならば、単なるアンチエイリアスではなく、アンチエイリアス拡大の方法が適している。
さらに、2値文字線画画像の任意倍の高画質拡大に本発明を適用することができる。本発明の方法を利用して高画質な任意倍拡大画像を作成する方法としては、いくつかの方法がある。図30は、任意倍拡大処理の一例を示すフローチャートである。図30に示す方法では、まずS181において、与えられた拡大倍率(qx、qy)に対して(qx:横方向倍率、qy:縦方向倍率)、(qx+qy)/2>2n を満たす最大の整数n>0を選択する。S182において、処理対象の画像となる2値の入力画像を準備する。最初は原画像を処理対象の画像とする。S183において、上述の方法で処理対象の画像からアンチエイリアス2倍拡大画像を作成する。S184でn回反復したか否かを判定し、n回まではS185でアンチエイリアス拡大画像を単純2値化し、S182へ戻って単純2値化したアンチエイリアス拡大画像を新たな処理対象の画像とする。
このようなアンチエイリアス2倍拡大画像+単純2値化の処理を、毎回、処理対象の画像を更新して計n回繰り返す。その後、S186において、残りの倍率分を線形補間法などの所定の方法により拡大して、最後にS187で再び単純2値化する。このような処理によって、原画像に対してqx×qy倍拡大された画像を生成することができる。
なお、S186で行う線形補間法はぼけを生じやすい拡大法であるが、本発明の方法でアンチエイリアス2倍拡大した画像は、エッジにおいて適切なアンチエイリアスが掛かっているため、更に2倍未満の線形補間法で拡大した後に単純2値化しても、線形補間法のぼけの影響から発生するジャギーはほとんど現れない。また、最後の2倍拡大処理のみアンチエイリアス拡大とし、それより前に行う2倍拡大は、直後に単純2値化するものなので、その部分には上述したアンチエイリアスを伴わない拡大法を使用してもよい。
図31は、原画像および最近傍法で4倍に拡大した画像の具体例の説明図、図32は、原画像と本発明を用いて4倍に拡大した画像の具体例の説明図である。図31に示した最近傍法では、エッジ部にジャギーが発生しており、画質は劣悪である。これに対して図32に示したように、本発明の処理を用いて4倍に拡大した画像では、エッジ部にジャギーがほとんど発生しておらず、高画質の拡大画像を得ることができる。
もちろん任意倍の拡大の方法は、2倍拡大を繰り返す方法以外に、直接n倍(nは整数)を得る方法を利用するようにしてもよい。これには、エッジ線を推定し、画素をより細かく分割しておいてエッジ線が画素を横切る面積占有率を図24〜図27、図29などと同様に、水平(片側)、45度(片側)に対して求めればよい。一般には、2倍毎に画像を更新して行く方がその都度細かい角度の補正が行われてゆくので、よりジャギーの現れにくい画像を得ることができる。しかし、このような2よりも大きな倍率へ直接拡大する方式を組み合わせると、画質を劣化させずにより高速化できる場合がある。
また、本発明の高画質化の効果は、文字認識における認識率向上という副次的な効果も併せ持っている。文字認識の際には、各文字を所定の画素サイズに正規化してから認識処理を行う場合がある。例えば、原画像からそれぞれ文字を切り出してから、各文字を32×32画素サイズに解像度変換してから文字認識を行う場合がある。このような解像度変換の際に本方式による拡大処理を行うことで、特に元々の画素数が少ないような小さい文字に関する認識率を向上させることができる。この処理の際には、各文字を切り出した後に拡大する方法の他に、文字認識に掛ける前に、画像全体を一括して拡大してから文字認識させても良い。このように、スキャンした画像の場合には、本発明による拡大処理によって高画質出力が可能となる他、文字認識した際の認識率も同時に向上させることができる。
上述の説明では、基本的なブロック単位をM=2、N=2として説明したが、もちろんこれ以外のブロック単位でも同様である。つまり、細線、黒太線、白太線の抽出を行ってから、細線部を黒太線、白太線のどちらかに分類し、更には白太線の処理は対称性を利用して黒太線の処理で共有化して、結局は全ての部分に黒太線用の処理を適用して画質改善できる。上述したように、細線は片側だけ見れば太線と同じ形をしているため、太線の片側を適切に補正する処理を構成しておけば、後は細線にも適用することができる。しかし、上述のM=2、N=2というサイズは、高速性と高画質性の二つの観点から見て優れているといえる。ブロックサイズが大きくなるに従って、判定が複雑になり処理時間が増えるし、更にブロックサイズが大きいことによって判定で拾えないような抜け漏れも増えてくるからである。
本発明における画質改善方式の利点の一つは、細線を太線とみなして、全ての部位に太線としての画質改善を行える処理簡便性にあるが、M=2、N=2という小さなブロックサイズを用いることによって、更に高速性と高画質性を実現することができている。例えば、上述した従来の方法の中では最も画質が良い方法の1つである特許文献3に記載されている方法を使用すると、初期のパターンマッチング(エッジの段差の特定)において、最大117個の画素を参照する必要が生じる。更にパターンマッチングに4×3などの中サイズのブロックを使用しているので、117個の画素の参照だけでは認識できないような、抜け漏れのエッジパターンが存在し、その部分で画質が劣化する場合がある。これに対して、上述のような本発明の方法の場合、エッジ角度の概算までに最大でも16個の画素を参照すれば充分であり、細線の処理は黒太線、白太線に帰結され、白太線の処理は黒太線との対称性のためにやはり黒太線に帰結されており、処理が簡潔かつ確実である。
なお、これまでに述べてきた説明から明らかであるように、本発明において黒太線、白太線の用語は便宜性のためであり、上述したように例えば。L字、逆L字、といったような用語で言い換えてもよい。本発明の本質は、画像内部にあるさまざまな形態の線要素の中から処理すべきものだけを抽出し、更に効率的な方法で、最適化された単一の画質改善処理に集約させて処理させる点にある。
図33は、本発明の第2の実施の形態を含むシステムの一例を示すブロック図である。図中、図1と同様の部分には同じ符号を付して説明を省略する。31は初期拡大処理部、32はドメインブロック抽出部、33はドメインブロック分類部、34はレンジブロック抽出部、35は縮小レンジブロック作成部、36は類似度判定部、37は改良ドメインブロック作成部、38はエッジ強調処理部、39は平均値演算部、40は反復処理部である。この第2の実施の形態では、上述の第1の実施の形態で説明したようにしてアンチエイリアス拡大画像を得た後、さらに別の方法で画質改善処理を施す例を示している。
この第2の実施の形態では、画像処理部3は、さらに初期拡大処理部31、ドメインブロック抽出部32、ドメインブロック分類部33、レンジブロック抽出部34、縮小レンジブロック作成部35、類似度判定部36、改良ドメインブロック作成部37、エッジ強調処理部38、平均値演算部39、反復処理部40などを含んで構成されている。画像処理部3から出力される改良ドメインブロック画像はメモリ部2に書き込まれるが、このとき、同じ画素について先に書き込まれている値に対して新たな改良ドメインブロック画像の画素値を加算して値を更新してゆく。以下、各部の概要を説明する。なお、詳細については後述する。
初期拡大処理部31は、入力される2値の原画像を例えば最近傍法でn倍に拡大し、さらにここでは単純多値化して多値のn倍原画像を得る。この初期拡大処理部31は、上述の第1の実施の形態において最初に2倍拡大画像で初期化していたが、この処理を行うものである。なお、拡大方法は任意であり、最近傍法に限られるものではない。また、以下の説明では簡単のため2倍に拡大するものとし、n倍原画像は2倍原画像として説明するが、n倍において同様である。さらに、多値化の方法も任意であるが、ここでは上述のように2値の0,1を多値の最小値、最小値とする単純多値化の方法を採用したものとして説明する。なお、多値の最大値、最小値としては、以下の説明で必要であれば0,255として説明するが、これに限られるものではない。
ドメインブロック抽出部32は、画質改善部13によって得られたアンチエイリアス2倍拡大画像から第1のブロック単位D1の大きさでドメインブロック画像を抽出する。なお、ブロック単位とは、ブロックサイズによって定められる任意のブロック全体の総称を意味する。抽出するドメインブロック画像は、それぞれのドメインブロック画像が重ならないように原画像を分割するほか、原画像上で共通部分を有するようにドメインブロック画像を抽出することもできる。また、原画像がカラー画像である場合には、原画像の各色成分について、相対的に同一の位置からレンジブロック画像を抽出する。
ドメインブロック分類部33は、ドメインブロック抽出部32で抽出したドメインブロック画像の種類を分類する。分類は、例えばドメインブロック画像の標準偏差および凹凸度などに基づいて行うことができる。分類する種類としては、例えば平坦部、ステップエッジ部、細線部、テクスチュア部などに分類することができる。更に分類した結果に応じて、細線部の場合には、第1のブロック単位D1以下の第3のブロック単位D2、テクスチュア部であれば第3のブロック単位D2以下の第5のブロック単位D3で、それぞれドメインブロック画像から複数の分割ドメインブロック画像を得る。以後の処理では、この分割ドメインブロック画像をドメインブロック画像として扱う。
なお、ジャギーなどの画質劣化は主にステップエッジ部、細線部、テクスチュア部に発生している。従って、これらに対して画質改善のための処理を行えば全体として画質の向上を図ることが可能である。そのため、例えば平坦部などでは、以下の処理を行わずにアンチエイリアス2倍拡大画像のドメインブロック画像をそのまま改良ドメインブロック画像として出力するように制御し、処理時間を短縮することが可能である。また、第3のブロック単位D2と第5のブロック単位D3は第1のブロック単位D1と同じ大きさにすることもでき、その場合には、効果としてはブロックを分類するだけで、分割ドメインブロックの作成を行わないようにすることもできる。
なお、上述のような分類は一例であり、さらに細分してもよいし、処理対象を絞るのであればもっと少なく分類してもよい。また、このようなドメインブロック画像の分類による処理の制御自体を行わなければ、このドメインブロック分類部33を設けずに構成することも可能である。
レンジブロック抽出部34は、ドメインブロック分類部33で抽出したドメインブロック画像について、第1のブロック単位D1よりも大きな第2のブロック単位R1でアンチエイリアス2倍拡大画像からレンジブロック画像を抽出する。また、ドメインブロック分類部33で第3のブロック単位D2または第5のブロック単位D3でドメインブロック画像(分割ドメインブロック画像)を抽出した場合には、それぞれ第3のブロック単位D2よりも大きな第4のブロック単位R2、第5のブロック単位D3よりも大きな第6のブロック単位R3で、それぞれアンチエイリアス2倍拡大画像からレンジブロック画像を抽出する。ここで、抽出するレンジブロック画像は、ドメインブロック画像に対してはドメインブロック画像を含むように抽出し、分割ドメインブロックに対しては分割ドメインブロック画像を含むように抽出する。このとき、1つのドメインブロック画像または分割ドメインブロック画像に対して複数のレンジブロック画像を抽出してもよい。
縮小レンジブロック作成部35は、レンジブロック抽出部34で抽出した第2のブロック単位R1、第4のブロック単位R2、第6のブロック単位R3のレンジブロック画像を、それぞれ第1のブロック単位D1、第3のブロック単位D2、第5のブロック単位D3の大きさに縮小し、縮小レンジブロック画像を作成する。縮小方法は任意である。なお、レンジブロック抽出部34で複数のレンジブロック画像を抽出している場合には、それぞれのレンジブロック画像について縮小を行う。
類似度判定部36は、縮小レンジブロック作成部35により縮小した縮小レンジブロック画像と、ドメインブロック抽出部32で抽出したドメインブロック画像(ドメインブロック分類部33で抽出した分割ドメインブロック画像を含む)との類似度を判定し、類似度に関する情報を改良ドメインブロック作成部37に渡す。類似度の判定は任意であるが、例えば、縮小レンジブロック画像の画素値zを一次式az+bによりドメインブロック画像の画素値に最小二乗近似した際の最小二乗誤差を用いることができる。この時の最小二乗係数a,bを改良ドメインブロック作成部37に渡すように構成することができる。なお、レンジブロック画像が複数抽出されている場合、ドメインブロック画像と最も類似度が高い縮小レンジブロック画像を選択する。上述のような最小二乗誤差を用いる場合、その最小二乗誤差が最小の縮小レンジブロック画像を最類似縮小レンジブロック画像として選択すればよい。また、レンジブロック画像が一つだけ抽出されている場合、類似度の判定を行わず、最小2乗係数a,bを改良ドメインブロック作成部37に直接渡すように構成することもできる。
改良ドメインブロック作成部37は、縮小レンジブロック作成部35で作成された縮小レンジブロック画像に対して、類似度判定部36で得られた類似度に関する情報を元に画素値の変換を行い、画素値変換の結果を改良ドメインブロック画像として出力する。例えば類似度判定部36で最小二乗誤差を計算している場合、そのとき得られた最小二乗係数a、bを用いて縮小レンジブロック画像(最類似縮小レンジブロック画像)の画素値を一次式az+bで変換することにより改良ドメインブロック画像を作成する。
エッジ強調処理部38は、ドメインブロック分類部52において平坦部以外に分類されたドメインブロック画像に対応する改良ドメインブロック画像に対して、改良ドメインブロック画像内の画素値の最大値と最小値の関係からエッジ強調処理を行う。具体的には、改良ドメインブロック画像内の最大画素値と最小画素値の平均値を取り、エッジ強調の強度に従い、平均値よりも大きい画素値を平均値との距離に応じてより大きく変換し、平均値よりも小さい画素値を平均値との距離に応じてより小さく変換することができる。このときのエッジ強調の強度は、ドメインブロック画像の画素値の標準偏差値が小さい場合には強く、標準偏差値が大きい場合には弱くなるように設定することもできる。なお、ドメインブロック分類部33を設けない構成の場合には、ドメインブロック画像の画素値の標準偏差値が所定値以上のときだけエッジ強調処理を行うようにすれば良い。
平均値演算部39は、ドメインブロック抽出部32でドメインブロック画像を抽出し、ドメインブロック分類部33で分割ドメインブロック画像を抽出した際に、処理後の改良ドメインブロック画像が重複する画素について平均値を演算する。この演算は、改良ドメインブロック画像の作成の際に、改良ドメインブロック画像の各画素値をメモリに加算すると同時に、メモリ2に別に用意した画素値の重複量記憶用メモリに、1回の重複につき1を加算してゆき、全てのドメインブロックについて処理が終わった後に、この重複量記憶メモリの値を参照して、加算された画素値を除算するようにして行うことができる。あるいは、原画像における位置からあらかじめ重複量がわかる場合には、改良ドメインブロック画像の画素値を重複量で除算した後にメモリ2中の画素値と加算して書き戻すように構成してもよい。
反復処理部40は、平均値演算部39が終了して得られた画質改善画像を新たなアンチエイリアス2倍拡大画像として、再び画質改善部13またはドメインブロック抽出部32以降の処理を反復させる。なお、反復は所定回数だけ行ったり、得られた画質改善画像から特徴量を抽出して自動的に終了判定を行ってもよい。
なお、この第2の実施の形態における画像処理部3は、2値文字線画画像を対象としている。そのため、処理に入る前に、入力された画像が2値文字線画画像であるか否かを判定する処理部を設けても良いし、入力された画像が2値文字線画画像でない場合には処理を終了するようにしても良い。
以下、この第2の実施の形態における画像処理部3について、図を参照しながらいくつかの例について詳細に説明してゆく。なお、各例において、入力される原画像は2値文字線画画像であるとする。
まず第1の例について説明する。この第1の例では、第1のブロック単位D1、第3のブロック単位D2、第5のブロック単位D3を等しいものとし、また1つのドメインブロック画像に対して複数のレンジブロック画像を抽出して最適な縮小レンジブロック画像を選択する例を示している。
図34は、本発明の第2の実施の形態における画像処理部3の動作の一例を示すフローチャート、図35は、同じくドメインブロック抽出部32以降の処理の一例を説明するための模式図である。動作を開始する前の準備として、画質改善処理の対象となる原画像の縦横それぞれ2倍のサイズで8ビット値の画像を記憶するためのメモリ領域をメモリ部2中に確保し、0で初期化しておく。これは、画像処理部3から出力される改良ドメインブロック画像(エッジ強調処理を行ったものを含む)を加算して書き込んでゆくために行うものである。
S201において、初期拡大処理部31により原画像を2倍サイズの画像に例えば最近傍法などによって拡大し、上述のアンチエイリアス拡大処理のための原画像を生成しておく。例えば、原画像を最近傍法によって2倍に拡大した後に、0は0に、1は255に変換してアンチエイリアス拡大処理のための初期画像を得る。
S202においては、画質改善部13によってアンチエイリアス拡大処理を行う。この処理は上述の第1の実施の形態の処理をそのまま適用することができる。
S203においては、ドメインブロック抽出部32により画質改善部13で得られたアンチエイリアス2倍拡大画像の中からドメインブロック画像を抽出する。図36は、ドメインブロック抽出部32で抽出されるドメインブロック画像の一例の説明図である。ここでは第1のブロック単位D1の大きさを3×3画素とし、3×3画素の大きさのドメインブロック画像を抽出している。なお、図35(A)においても、3×3画素のドメインブロック画像を太線で示している。ここでは、アンチエイリアス2倍拡大画像の端から1画素ずつシフトさせた3×3画素の大きさのドメインブロック画像を順次抽出してゆく。そして、抽出したドメインブロック画像を処理対象とし、以下の処理によって画質を改善し、作成される改良ドメインブロック画像をメモリ部2内のドメインブロック画像に対応する位置に加算して書き込んでゆく。以下の説明では、1つのドメインブロック画像についての処理を説明してゆく。
S204では、ドメインブロック分類部33により、S203で抽出したドメインブロック画像の種類を分類する。図37は、ドメインブロック分類部33におけるドメインブロック画像の分類処理の一例を示すフローチャートである。まずS221において、ドメインブロック画像内の画素値{dij|i,j=1,2,3}について、画素平均値Dv=Σdij/9並びに画素標準偏差VDv=Σ(dij−Dv)2 を求める。S222において、S221で得られた画素値標準偏差VDvが、予め定めたエッジ部判定用閾値Sv1に対して、Sv1<VDvを満たしているか否かを判定し、満たしていた場合にはS223でドメインブロック画像をエッジ部に分類する。満たしていない場合には、S224においてドメインブロック画像を平坦部に分類する。なお、この例ではドメインブロック画像の種類をエッジ部と平坦部にしか分類していないが、後述の例のようにさらに多くの種類に分類してもよい。また、判定用閾値Sv1は任意であり、固定値でも、可変値でもよい。なお、ここでの標準偏差VDxの値は、正確には変動と呼ばれる値であり、真の標準偏差値から定数項と平方根を除いたものを使用している。
図34に戻り、S204においてドメインブロック画像の分類結果を判定し、分類結果がエッジ部であったドメインブロック画像については、以下に示すさらなる画質改善処理を行う。また、分類結果がエッジ部以外、すなわちこの例では平坦部であると判定されたドメインブロック画像については、画質改善処理を行わずにS211に進み、ドメインブロック画像をそのまま改良ドメインブロック画像として、メモリ部2の画質改善後の画像を記憶するためのメモリ領域へ加算書き込みを行う。
S205では、S204で分類された結果に応じてドメインブロック画像を更に小さなブロックに分割し、分割ドメインブロック画像を抽出する。ただし、この動作例では、この時点でドメインブロック画像はエッジ部のみに分類されており、ここでは分割ドメインブロックの抽出を行わない。あるいは、ドメインブロック画像と同じ大きさの分割ドメインブロック画像を抽出すると考えてもよい。
S206では、レンジブロック抽出部34により原画像からドメインブロック画像を含むレンジブロック画像を抽出する。ここでは一例として、第1のブロック単位D1よりも大きい第2のブロック単位R1として4×4画素とする。図38は、レンジブロック抽出部53で抽出するレンジブロック画像の一例の説明図である。レンジブロック画像の大きさを4×4画素とし、5×5画素の範囲をレンジブロック画像の抽出範囲とした場合、3×3画素の大きさのドメインブロック画像を含むレンジブロック画像としては、図38(A)〜(D)に示すような4つのレンジブロック画像の抽出が可能である。なお、図35(A)では図38(B)に示した例を記載している。
S207では、S206で抽出したすべてのレンジブロック画像を、縮小レンジブロック作成部35によりドメインブロック画像と同じ大きさにそれぞれ縮小して縮小レンジブロック画像を得る。上述のように、ここではドメインブロック画像のサイズを3×3画素としているので、4×4画素のレンジブロック画像を3×3画素の縮小レンジブロック画像に縮小することになる。縮小方法としては任意であるが、ここでは一例として投影法を用いることとする。なお、特に投影法(線形縮小)を用いた場合には、隣り合う画素値を面積比に応じて加重加算して縮小するため、ジャギーの補正を特に効果的に行うことができる。
図39は、縮小レンジブロック作成部35における投影法による縮小処理の一例の説明図である。ここでの投影法による縮小処理は、例えば図39(A)に一部示すように、4×4画素の画像を3×3画素の画像に投影した際の領域比率に基づいて、画素値を加重加算することによって行う。図39(B)に示す4×4サイズの画素値を{Pij|i,j=1,2,3,4}、図39(C)に示す縮小後の3×3サイズの画素値を{Qij|i,j=1,2,3}とした場合に、各Qijは、
Q11=(9×P11+3×P21+3×P12+1×P22)/16
Q21=(6×P21+6×P31+2×P22+2×P32)/16
Q31=(3×P31+3×P42+9×P41+1×P32)/16
Q12=(6×P12+6×P13+2×P22+2×P23)/16
Q22=(4×P22+4×P32+4×P23+4×P33)/16
Q32=(6×P42+6×P43+2×P32+2×P33)/16
Q13=(9×P14+3×P13+3×P24+1×P23)/16
Q23≡(2×P23+2×P33+6×P24+6×P34)/16
Q33=(3×P43+3×P34+9×P44+1×P33)/16
で与えられる。
一般にドメインブロック画像と、そのドメインブロック画像を含むレンジブロック画像とは類似していることが予想される(局所自己相似性)。このような仮定が成り立つ場合には、エッジ部に現出するジャギーは加重加算によってある程度軽減される。しかし、これはドメインブロック画像とレンジブロック画像とが類似していることが前提である。そのため、次のステップでドメインブロック画像に類似しているレンジブロック画像を選択する。
図34に戻り、S208では、類似度判定部36において、S207でそれぞれのレンジブロック画像から作成した縮小レンジブロック画像とドメインブロック画像との類似度を判断する。ここでは、縮小レンジブロック画像に対して画素値変換を行うことにより、ドメインブロック画像と最も類似した画素値及びパターンを持つ縮小レンジブロック画像の選出と、そのとき得られる類似度に関する情報の取得を行う。まず、全ての縮小レンジブロック画像の画素値{rijk |i,j=1,2,3,k=1,…,4}について、それぞれ画素平均値Rvk =Σrijk /9、並びに、画素標準偏差VRvk =Σ(rijk −Rvk )2 を求める。次に、縮小レンジブロック画像の画素値zをそれぞれ一次変換az+bで対応するドメインブロック画像の画素値に最小二乗近似した際の変換係数ak とbk 、並びに変換誤差Ek =Σ(dij−ak ×rijk −bk )2 を求める。最小二乗法において、ak 、bk 、Ek は以下の計算式で直接求めることができる。なお、Dv、VDvは、ドメインブロック分類部33で計算したものを使うことができる。
ak =(Σ(rijk −Rvk )×(dij−Dv))/VRvk
bk =Dv−ak ×Rvk
Ek =VDv−ak ×ak ×VRvk
ここで、E=min{Ek |k∈G}とおき、E=Ek なるkに対して、a=ak 、b=bk とおく。このkが指し示す縮小レンジブロック画像が最もドメインブロック画像と類似したものとなる。なお、実際にはbk はEk の決定に必要ないので、Ek が最小となるkが求まり、最終的にak が決まった後にbk を計算すれば良い。
S209では、改良ドメインブロック作成部37により、類似度判定部36において選択された3×3サイズの縮小レンジブロック画像の全画素zに対して、類似度判定部36において求められた変換係数a、bによって画素値変換az+bを施す。この結果を図35(D)に示すように3×3画素のドメインブロック画像の改良ドメインブロック画像とする。
このような処理において、得られた改良ドメインブロック画像はレンジブロック画像から作成されたものである。しかし、上述のようにドメインブロック画像とレンジブロック画像が類似していれば、縮小レンジブロック画像は縮小によってドメインブロック画像のジャギーがある程度軽減された画像である。さらに、改良ドメインブロック作成部37で作成した改良ドメインブロック画像では、画素値変換によってドメインブロック画像に類似させた(最小二乗近似させた)画像となっている。従って、改良ドメインブロック画像は、ドメインブロック画像について画質を改良した画像であると言うことができる。
さらにエッジ部の画質を向上させるため、エッジ強調処理部38によるエッジ強調処理を施すことができる。S210において、エッジ強調処理部38により改良ドメインブロック画像に対してエッジ強調処理を行う。ここでは、改良ドメインブロック画像内の画素値の中間値avに対して、avよりも大きな画素値はより大きく、avよりも小さい画素値はより小さくすることによってエッジ強調処理を行う。
図40は、エッジ強調処理部38におけるエッジ強調処理の一例の説明図である。図40(A)に示す3×3画素の改良ドメインブロック画像pij(i,j=1,2,3)に対して、画素最小値minp及び画素最大値maxpを
minp=min{pij}
maxp=max{pij}
とおき、更に
av=(maxp+minp)/2
l=(maxp−minp)/2
とおく。
このとき、以下の演算によって図40(C)に示すエッジ強調画素値qij(i,j=1,2,3)が得られる。
qij=av+f((pij−av)/l)・l
ここで、エッジ強調関数fとしては、図40(B)に示したように原点(0,0)を中心にS字型をした関数を用いる。例えば、
f(x)=x(1−x2 )・α+x (α=0.0〜1.0)
などの関数を使用することができる。変数αはエッジ強調の強度を規定するパラメータであり、この場合は0.0〜1.0の値を取ることができる。なお、α>0.5の場合には、関数が単調増加でなくなるため、オーバーシュート/アンダーシュートが発生しやすくなるという欠点があるものの、エッジ強調の効果を大きくすることができる。α=0.0とした場合には、実質上エッジ強調がなされず、α値が大きいほど強いエッジ強調効果が与えられる。α値は固定にしておいても良いし、エッジ部の強度に対応する画素値標準偏差VDv値の逆数に比例するように可変にしても良い。このようにすると、ボケた部分(すなわち標準偏差が小さい部分)には強めのエッジ強調が掛かり、もともとシャープな部分(すなわち標準偏差が大きい部分)には弱めにエッジ強調が掛かるように調整することができる。もちろん、f(x)として、この他の関数を使用することもでき、エッジ強調のパラメータは各関数固有に定めることができる。例えばエッジ強調を行うか否かを切り替えるような構成も可能である。
S211では、以上のようにしてエッジ強調処理を施した改良ドメインブロック画像を、メモリ部2中の画質改善画像用領域に対して加算書き込みを行う(図35(F))。エッジ強調処理を行わない場合には、改良ドメインブロック作成部37で作成された改良ドメインブロック画像自体を、また分類された種別が平坦部であった場合にはドメインブロック抽出部32で抽出したドメインブロック画像自体を、メモリ部2中の画質改善用領域に加算書き込みを行う。加算書き込みは、書き込む領域の画素値をメモリ部2から読み出し、読み出した画素値と得られた改良ドメインブロック画像等の画素値とを加算し、改めて同じ位置に書き込むことによって行われる。
S212において、ドメインブロック抽出部32で抽出すべき全てのドメインブロック画像について処理を行ったか否かを判定し、未処理のドメインブロック画像が存在する場合にはS203へ戻り、処理を繰り返す。
すべてのドメインブロック画像について処理を終えたら、S213で平均値演算部39においてメモリ部2中の画質改善用領域に書き込まれた画像について平均値を算出する処理を行う。図41は、平均値演算部39における平均値演算処理の一例の説明図である。上述のようなドメインブロック画像に対する処理を行うと、原画像におけるドメインブロック画像の重複量(加算回数)は図41に示すような値となる。従って、平均値演算部39では、メモリ部2の画質改善画像用領域に格納されている値を、この重複量の値で除算した結果得られる画像を、画質改善画像メモリに再度書き込み、画素値を更新する。この際に、画素値が0以下になっている場合には、その画素値を0に置き換え、最大値(例えば255)を越える場合には、最大値(例えば255)に置き換える。
上述のような処理を行うことによって、第1の実施の形態で得られたアンチエイリアス拡大画像よりもさらに画質が改善された2倍拡大画像を得ることができる。このような処理を複数回繰り返すことによって、よりアンチエイリアスの効果を高めることができる。S214において、反復処理部40は上述のような工程を所定回数反復したか否かを判断する。所定回数反復していない場合には、S215において、出力された2倍拡大画像を、処理対象のアンチエイリアス2倍拡大画像に置き換えてS203へ戻り、処理を繰り返す。所定回数反復した場合には、画像を画像出力部3へ出力し、画質改善処理を終了する。ここでは一例として反復回数として5回を指定し、5回反復したら終了とする。
なお、平均値演算部39による平均化処理は、重複計算が全て終了した画素に対しては順次行って出力しても良く、そのようにすることで省メモリ化できる。また、2値画像の場合、平坦部(真白または真黒)が多く、ドメインブロック分類部33で平坦部に分類され、画質改善処理を施さずにドメインブロック抽出部32で抽出したドメインブロック画像をそのまま改良ドメインブロック画像とする場合が多く発生する。このような変更のないドメインブロック画像をS211でメモリ2中の値に加算せず、平坦部は全く処理を行わずに、代わりにエッジ部をS211でメモリ2の値と加算する際に、メモリ2中に予め用意した重複量記憶領域に重複量を1つずつ追加してゆくこともできる。この場合、S213で平均値計算を行う際に、この重複量記憶領域を参照して重複量で除算すれば平均値計算を行うことができる。つまり、実際に画質改善処理を行った新しい画素のみをメモリ2中の値と加算すると同時に、その各画素の重複処理量も加算し、最後に各画素をその重複量で除算する。また重複量記憶領域中の重複量が0の部分は、上述の第1の実施の形態で説明したようにして得られたアンチエイリアス2倍拡大画像の値をそのまま出力すれば良い。このように部分的に加算を行う方法の場合、すべての画素について加算を行う上述の例の結果とは若干画素値が変わる部分が生じるが、拡大画質に大きな差は現れず、平坦部が多いほど高速化の効果を得ることができる。
また、上述の画質改善処理は、エッジ部に対して局所コラージュ処理を行って画質を改善している。つまり、3×3画素のドメインブロック画像を含む4×4画素のレンジブロック画像を選択し、その4×4画素を3×3画素に縮小して輝度合わせを行い、エッジ強調後にドメインブロック画像に置き換えている。4×4画素を3×3画素に縮小すると、上述のようにジャギーの目立つエッジ部は平均化されて多少のボケが加わってアンチエイリアスされ、更にエッジ強調処理によって、シャープ化される。また、2値画像の場合、1回の処理でジャギーが取れきれない部分がある。そのため、上述のように反復処理部40により反復処理を行って2倍画像の画質を徐々に改善している。もちろん、1回の処理のみで終了してもよい。特に画質改善部13によってアンチエイリアス拡大処理を行っているため、それほど反復処理を行わなくても十分な画質を得ることができる。
さらに、ドメインブロック画像、レンジブロック画像の形状は共に正方形としたが、もちろんどちらか片方、あるいは両方を長方形にしても良い。例えば、ドメインブロック画像のサイズを2×3画素とし、これに対してレンジブロック画像のサイズを3×4画素としても良いし、ドメインブロック画像のサイズを2×3画素とし、これに対するレンジブロック画像のサイズを4×4画素としても良い。以下にレンジブロック画像のサイズを変更した例として、第2の例を示す。
第2の例について説明する。上述の第1の例では、レンジブロック画像のサイズを4×4画素としたが、この第2の例では5×5画素とした例について説明してゆく。ドメインブロック画像のサイズは第1の例と同じく3×3画素とする。さらに、この第2の例では、レンジブロック画像の探索処理を行わず、ドメインブロック画像に対して常に同じ位置からレンジブロック画像を1つ選択するものとして説明する。
この第2の例において、上述の第1の例と異なるのは、レンジブロック抽出部34、縮小レンジブロック作成部35、類似度判定部36の処理、すなわち図34に示した処理のうちのS206〜S208の処理である。以下、その部分について具体的に説明する。
ドメインブロック分類部33によってドメインブロック画像を分類した結果、ドメインブロック画像がエッジ部に分類された場合、レンジブロック抽出部34によりアンチエイリアス2倍拡大画像からレンジブロック画像を抽出する。図42は、レンジブロック抽出部34におけるレンジブロック画像抽出処理の別の例の説明図である。この第2の例では、図42に示すようにドメインブロック画像を中央位置に含むように5×5ブロックを選択する。この場合、レンジブロック画像は1つのみが抽出される。もちろん、レンジブロック画像の抽出範囲を広げれば複数のレンジブロック画像を検索することができるが、上述のようにこの例では図42に示すように1つのレンジブロック画像を固定的に抽出する。レンジブロック画像の抽出に際して、画像の緑の部分では、3×3画素のドメインブロック画像を中央に含むように5×5画素のレンジブロック画像を取れない。このような場合には、例えば1画素分シフトした位置からレンジブロック画像を選択すれば良い。
なお、ドメインブロック画像が平坦部に分類された場合はレンジブロック画像の抽出を行わず、ドメインブロック画像自身を改良ドメインブロック画像として選択し、例えば図34におけるS211へ移行し、メモリ部2への加算書き込みを行う。
次に、抽出した5×5画素サイズのレンジブロック画像を、縮小レンジブロック作成部35により3×3サイズの縮小レンジブロックに縮小する。ここでの縮小方法も投影法を用いる。図43は、縮小レンジブロック作成部35における投影法による縮小処理の別の例の説明図である。投影法による縮小処理は、例えば図43(A)に一部示したように、5×5画素サイズの画像を3×3画素サイズの画像に投影した際の領域比率に基づいて画素値を加重加算して行う。図43(B)に示すように5×5画素サイズのレンジブロック画像の画素値が{Pij|i,j=1,2,3,4,5}、図43(C)に示すように縮小後の3×3画素サイズの縮小レンジブロック画像の画素値を{Qij|i,j=1,2,3}とした場合に、各Qijは、
Q11=(9×P11+6×P21+6×P12+4×P22)/25
Q21=(3×P21+3×P41+2×P22+2×P42+6×P32+9×P31)/25
Q31=(6×P31+6×P42+9×P41+4×P32)/25
Q12=(3×P12+3×P14+2×P22+2×P23+6×P23+9×P13)/25
Q22=(1×P22+1×P42+1×P24+1×P44+3×P32+3×P23+3×P43+3×P44+9×P33)/25
Q32=(3×P52+3×P54+2×P42+2×P44+6×P43+9×P53)/25
Q13=(9×P15+6×P14+6×P25+4×P24)/25
Q23=(3×P25+3×P45+2×P24+2×P44+6×P34+9×P35)/25
Q33=(6×P54+6×P45+9×P55+4×P44)/25
で与えられる。
次に類似度判定部36で類似度の判定処理を行うが、この第2の例ではレンジブロック画像を一つだけしか選択していないため、最類似縮小レンジブロック画像を選択するという処理は、実用上は必要ない。つまり、縮小レンジブロック作成部35で作成した縮小レンジブロック画像自身を最類似縮小レンジブロック画像として選択すれば良い。まず、全ての縮小レンジブロック画像の画素値{rij|i,j=1,2,3}について、それぞれ画素平均値Rv=Σrij/9及び画素標準偏差VRv=Σ(rij−Rv)2 を求める。次に、縮小レンジブロック画素値をそれぞれ一次変換az+bで対応するドメインブロック画像画素値に最小二乗近似した際の変換係数a、bを以下の式から求める。
a=(Σ(rij−Rv)×(dij−Dv))/VRv
b=Dv−a×Rv
この第2の例では、最類似縮小レンジブロック画像を選択する処理が必要ないので、上述の第1の例で行っている最小二乗誤差の計算は不要である。
以降の改良ドメインブロック作成部37、エッジ強調処理部38、平均値演算部39、反復処理部40の処理については上述の第1の例と同様であるので、ここでは説明を省略する。なお、この第2の例においても、平均値計算部60の除算量はメモリ2を使用して記憶しておいても良い。つまり、ドメインブロック画像がエッジ部と分類されて処理されたときに限って新しい画素値を加算すると同時に、予め用意した重複量記憶領域に1を加算しておき、最後の平均値計算部60での除算の際にこの重複領域奥領域を参照して除算しても良い。このようにすることで、平坦部に関してS211で行うメモリ2への加算書き込みを省略して高速化することができる。
この第2の例では、上述の第1の例で4×4画素としていたレンジブロック画像のサイズを5×5画素に変更した例を示した。5×5画素から3×3画素に縮小した場合、4×4から3×3に縮小するよりもアンチエイリアス効果が高い。従って、この第2の例では第1の例に比べて、エッジ部の改善効果が高く、良好な処理画像を得ることができる。加えて、レンジブロック画像を探索せずに、常に3×3ブロックを中央位置に含む5×5ブロックを最類似縮小レンジブロック画像として選択しているため、4箇所の4×4ブロックのうちの1つを選択する場合に比べて、画像全体に渡って均一なコラージュ処理が施され、画質が安定する。特に2値画像の場合には、このことが画質に与える効果が大きく、探索を行わずに5×5ブロックを縮小する方が高画質な場合がある。もちろん探索処理を行わない分だけ高速化することもできる。
ここで、上述の第2の実施の形態における第1の例と第2の例で述べた本発明の効果をまとめる。この第2の実施の形態のようにドメインブロック画像を含むレンジブロック画像を抽出し、縮小して改良ドメインブロック画像として書き込むという局所コラージュ処理の部分は、画像の局所自己相似性の仮定を前提としている。しかし、この局所コラージュ処理は自然画において良好な画質改善が得られるが、2値画像の場合、必ずしも適切な効果が出ない場合がある。この理由としては、2値画像の場合、ジャギーが強く細線が多いために、局所自己相似性をより強く適切に追求する必要があり、通常の局所コラージュ処理では、局所自己相似性の追求が足りていないからであると考えられる。そのため本発明では、この点に関して大きな改善を図っている。
この第2の実施の形態では、原画像に対してあらかじめ初期拡大処理部31および画質改善部13によってアンチエイリアス2倍拡大画像を得ている。この拡大処理を行わず、原画像に対して整数サイズのブロックを使用して局所コラージュ処理を行った場合、上述のように2値画像においては局所自己相似性が不足する部分が生じる。そのため本発明においては拡大された画像を用いることによって、原画像に対してより小さな小数サイズのブロックを使用した局所コラージュ処理を行い、より適切に局所自己相似性を追求することができる。
上述のように、この第2の実施の形態における第1,第2の例では、原画像に対して小数サイズブロックで局所コラージュ処理を行ったのと同様の効果があり、細部の情報を忠実に保ったまま拡大することができる。その反面で、小さなブロックを使用しているため1回の処理で得られるアンチエイリアスの効果が減るという欠点がある。そのため、上述の第1,第2の例では、反復処理部40によって局所コラージュ処理を複数回反復する処理を行ってアンチエイリアスの効果を徐々に高めることができる。このように反復を行うことは画質の点から好ましいが、処理速度が遅くなるという点からは、できるだけ反復を少なくすることが好ましい。この第2の実施の形態では、画質改善部13によって上述の第1の実施の形態で説明したようにしてアンチエイリアス拡大画像を得てから、局所コラージュ処理を行うことによって、反復回数を減少させ、より高画質の出力画像を高速に得ることができる。さらに高速化するための方法を以下の第3の例として示す。
第3の例について説明する。以上述べてきた第1、第2の例ではブロックサイズを全て固定して処理を行った。この第3の例では、画像の各部位に応じてブロックサイズを変更して、それぞれ少ない回数の反復で各部に適切にアンチエイリアス効果が得られる処理方法について説明する。なお、この第3の例でも第2の例と同じく、レンジブロック画像の探索処理を行わず、ドメインブロック画像に対して常に同じ位置からレンジブロック画像を1つ選択するものとして説明する。
この第3の例において、上述の第2の例と本質的に異なるのは、ドメインブロック分類部33、レンジブロック抽出部34、縮小レンジブロック作成部35の処理である。すなわち、図34に示した処理のうちのS204〜S206の処理である。以下、その部分について具体的に説明する。
まず、第1のブロック単位D1の大きさを4×4画素とし、ドメインブロック抽出部32でアンチエイリアス2倍拡大画像からドメインブロック画像を抽出する。
この第3の例においては上述の第1,第2の例とは異なり、ドメインブロック分類部33において、ドメインブロック画像を平坦部、ステップエッジ部、細線部、孤立点部、先端部、テクスチュア部に分類する。つまり、第1,第2の例ではエッジ部として共通に扱っていた部分を細分し、それぞれ別の部分として分類する。
図44は、ドメインブロック分類部33におけるドメインブロック画像の分類処理の別の例を示すフローチャートである。ここで、S231〜S234におけるエッジ部と平坦部の分類までは、第1,第2の例における図37に示したフローチャートと同じである。S233でエッジ部と分類された場合には、次のS235において、ドメインブロック画像の凹凸量と白画素数、黒画素数を計算する。
図45は、凹凸量の計算処理の一例の説明図である。凹凸量の計算としては、例えば図45に示すように、先に抽出した4×4ドメインブロック画像(図45(A)中の太枠線)を、図45(B)に示す原画像上に逆射影する。アンチエイリアス2倍拡大画像上における4×4ドメインブロック画像に対応する原画像上の画像は、2×2ブロックサイズの2値画像である。なお、逆射影した際の位置が小数単位である場合には、小数を切り捨てた位置のブロックを使用すれば良い。
この逆射影した原画像上の2×2ブロックの周囲の画素、例えば4×4ブロック画像を使用して凹凸量を計算することができる。この4×4ブロック画像のうち、中央の2×2以外の画素(p1 〜p12、p13=p1 、各pi は0か1の値)に対して、
凹凸量=Σi=1 12 |pi −pi+1 |
で凹凸量を計算することができる。
また、逆射影した原画像上の4×4ブロック画像内の白画素数と黒画素数をそれぞれカウントする。このようにしてアンチエイリアス2倍拡大画像におけるドメインブロック画像に対応する逆射影した原画像の画素およびその周囲の画素から、原画像における凹凸量、黒画素数、白画素数を得ることができる。図45に示した例では、凹凸量=4、黒画素数=5、白画素数=9となる。
図44に戻り、S236において、S235で算出した凹凸量の値に応じて処理を分岐する。まず、凹凸量=0の場合には、S240において孤立点に分類する。次に、凹凸量=4の場合には、S241において細線部に分類する。次に、凹凸量>4の場合には、S242においてテクスチュア部に分類する。最後に、凹凸量=2の場合には、S237において黒画素数と白画素数の差に応じて更に分類する。すなわち、黒画素数と白画素数の差が所定以下の場合、S238においてステップエッジ部に分類し、所定以上の場合、S239において先端部に分類する。例えば所定数を4とし、
|黒画素数−白画素数|≦4
のときステップエッジ部と分類することができる。
図46は、ドメインブロック分類部33におけるドメインブロック画像の分類処理の別の例による分類結果の具体例の説明図である。上述の図44で示したフローチャートにより分類した結果をまとめて図46に図示している。なお、図46においては、逆射影した原画像上での画像を示している。まず図46(A)の例では、中央の2×2ブロックの周囲には黒画素が存在しない。従って凹凸量は0となり、孤立点として分類される。図46(B)の例では、中央の2×2ブロックの周囲の画素から凹凸量を算出すると、4となる。従って、この場合は細線に分類される。図46(C)に示す例では、中央の2×2ブロックの周囲の画素から凹凸量が6と算出される。従ってこの場合はテクスチュア部に分類される。図46(D)および(E)に示す例では、中央の2×2ブロックの周囲の画素から凹凸量はいずれも2と算出されるので、さらに白画素数と黒画素数の差を算出する。図46(D)に示す例では白画素数および黒画素数とも8であるので、差は0となり、差が所定以下と判断されてステップエッジ部に分類される。また図46(E)に示す例では白画素数は13、黒画素数は3であるので、差は10となり、所定以上と判断されて先端部に分類される。図46に示したこれらの例においては、それぞれの分類結果は妥当なものと考えられるであろう。
ドメインブロック画像を分類したら、図34のS204で平坦部か否かを判断し、平坦部以外の場合にはS205へ進む。上述のS205の説明では、分類結果に応じてドメインブロック画像をさらに小さなブロックに分割するとのみ述べ、第1の例ではエッジ部のみに分類されているため実際には分割を行わなかった。この第3の例では、この時点でステップエッジ部、細線部、孤立点部、先端部、テクスチュア部に分類されている。これらの分類に応じて、必要ならさらに小さなブロックへの分割を行う。
図47は、分類結果に従ったドメインブロック画像の分割処理およびレンジブロック画像の抽出の一例の説明図である。ドメインブロック分類部33による分類結果がステップエッジ部であった場合には、図47(A)に示すように、ドメインブロック画像のブロック単位は第1のブロック単位D1(=4)のままとしている。この場合、ドメインブロック画像の分割は行わない。
また、細線部に分類されたドメインブロック画像については、図47(B)に示すように、ブロック単位として第1のブロック単位D1以下の第3のブロック単位D2とする。ここでは第3のブロック単位D2=3としている。この場合、元の4×4ブロックサイズのドメインブロック画像から3×3ブロックサイズの分割ドメインブロック画像を取得する方法は4通り存在する。すなわち図47(B)に示すように左上に寄せた位置のほか、左下、右上、右下にそれぞれ寄せた位置の3×3サイズのブロックを分割ドメインブロック画像として取得することができる。
さらに、先端部、孤立点部、テクスチュア部に分類されたドメインブロック画像については、図47(C)に示すように、ブロック単位として第2のブロック単位D3以下の第5のブロック単位D3とする。ここでは第5のブロック単位D3=2としている。この場合、元の4×4ブロックサイズのドメインブロック画像から2×2ブロックサイズの分割ドメインブロック画像を取得する方法は9通り存在し、それぞれ、分割ドメインブロック画像として取得する。
なお、細線部に分類されたドメインブロック画像から得られた4つの分割ドメインブロック画像、および、先端部、孤立点部、テクスチュア部に分類されたドメインブロック画像から得られた9つの分割ドメインブロック画像は、以降の処理ではドメインブロック抽出部32で抽出した元のドメインブロック画像に代えて新たなドメインブロック画像として扱い、処理を進める。
次に、図34のS206においてレンジブロック抽出部34でレンジブロック画像の抽出処理が行われる。ドメインブロック分類部33で分類された結果、ステップエッジ部の場合には第1のブロック単位D1のドメインブロック画像が1個、細線部は第3のブロック単位D2の分割ドメインブロックが4個、先端部、孤立点部、テクスチュア部は第5のブロック単位D3の分割ドメインブロックが9個、それぞれ抽出されている。そこで、第1のブロック単位D1、第3のブロック単位D2、第5のブロック単位D3に対してそれぞれ第2のブロック単位R1、第4のブロック単位R2、第6のブロック単位R3(R1>D1、R2>D2、R3>D3)のレンジブロック画像を抽出する。
つまり、ステップエッジ部の場合には、第2のブロック単位R1でドメインブロック画像を含むようにレンジブロック画像を抽出する。また、細線部の場合には、4個の分割ドメインブロック画像に対して、第4のブロック単位R2でそれぞれの分割ドメインブロック画像を含むようにレンジブロック画像を抽出し、4個のレンジブロック画像を得る。さらに、先端部、孤立点部、テクスチュア部の場合には、9個の分割ドメインブロック画像に対して、第6のブロック単位R3でそれぞれの分割ドメインブロック画像を含むようにレンジブロック画像を抽出し、9個のレンジブロック画像を得る。第2のブロック単位R1、第4のブロック単位R2、第6のブロック単位R3としては、例えば、
ステップエッジ部:第2のブロック単位R1=6
細線部:第4のブロック単位R2=5
先端部、孤立点部、テクスチュア部:第6のブロック単位R3=4
とすることができる。このようにレンジブロック画像のブロック単位を定めた場合には、上述の第2の例と同様、レンジブロック画像の探索を行わずに、ドメインブロックまたは分割ドメインブロック画像を中央に含むようにレンジブロック画像をそれぞれ1つだけ抽出することができる。そのため、レンジブロック画像の探索は行わない。
それぞれの分類に応じて抽出されるレンジブロック画像の一例を図47に示している。図47(A)はステップエッジ部の場合であり、4×4サイズのドメインブロック画像を含む6×6サイズのレンジブロック画像を抽出する。また、図47(B)は細線部の場合であって、分割ドメインブロック画像としてドメインブロック画像の左上の3×3ブロックについてレンジブロック画像を抽出した例を示している。それぞれの分割ドメインブロック画像について、同様にレンジブロック画像が抽出される。図47(C)は先端部、孤立点部、テクスチュア部の場合であり、分割ドメインブロック画像としてドメインブロック画像の左上の2×2ブロックについてレンジブロック画像を抽出した例を示している。9個のそれぞれの分割ドメインブロック画像について、同様にレンジブロック画像が抽出される。
この第3の例における残りの処理は、本質的には第2の例と同様である。つまり、ドメインブロック抽出部32で抽出されたドメインブロック画像がステップエッジ部に分類された場合には第2のブロック単位R1のレンジブロック画像を第1のブロック単位D1に縮小し、最小二乗近似して改良ドメインブロック画像として採用する。また、細線部に分類された場合には、第3のブロック単位D2の4個の分割ドメインブロックに対して、それぞれ第4のブロック単位R2の4個のレンジブロック画像を第3のブロック単位D2に縮小し、最小二乗近似して、4個の改良ドメインブロック画像として採用する。さらに、先端部、孤立点部、テクスチュア部に分類された場合には、第5のブロック単位D3の9個の分割ドメインブロック画像に対して、それぞれ第6のブロック単位R3の9個のレンジブロック画像を第5のブロック単位D3に縮小し、最小二乗近似して、9個の改良ドメインブロック画像として採用する。これらの結果は、ブロック単位にかかわらず、全てメモリ2中の改良ドメインブロック画像による更新用の記憶領域の対応する位置に加算される。なお、各レンジブロック画像の縮小の際には、それぞれブロックサイズに応じて図38や図42に示したのと同様の投影法を使用すると良い。
なお、この第3の例における平均値演算部39は、異なるブロックサイズで改良ドメインブロック画像を重複させて加算しているため、第1,第2の例で行ったように固定的に除算処理を行うことができない、そこで、平均値演算部39での除算処理のために、第1,第2の例の最後の部分で述べたように、除算値を記憶するための記憶領域(重複量記憶領域)を用意し、改良ドメインブロック画像の画素値を加算する際に、重複量記憶領域の同じ位置に1を加算してゆき、処理が終わった後に、この重複量記憶領域の値で画素値を除算するように構成すればよい。
この第3の例の場合、逆射影した原画像を利用してドメインブロックを分類しているが、処理対象となるアンチエイリアス2倍拡大画像から分類することも可能である。但し、反復処理部40によって反復される毎に処理対象のアンチエイリアス2倍拡大画像が更新されるため、反復の度に分類結果が変わる可能性がある。
第3の例では、ステップエッジ部には大きいブロックサイズ、細線にはやや小さ目のブロックサイズ、先端部、孤立点部、テクスチュア部には小さいブロックサイズをそれぞれ使用することにより、各部に局所コラージュ処理を適用する際に、より適切な効果を得ることができる。大きなブロックを固定で使用した場合、ステップエッジ部の画質の向上量が大きいものの、細線部、テクスチュア部などではつぶれなどの問題が生じる。一方、小さなブロックサイズを固定して使用した場合、全ての部分に画質向上を行え、かつ、つぶれなどの問題も少ないが、全体に画質向上量が小さくなる。そのため、特にステップエッジ部などの部分で効果が小さくなり、充分な画質向上を得るには多くの反復が必要となる。第3の例ではこれらの点を考慮し、各部分でそれぞれ適切なブロックサイズを選択している。言い換えれば、各部分で画像の局所自己相似性を適切に高めるようにしている。
この第3の例では、このような点から第1,第2の例に比べても、同じ反復回数(例えば5回)を使用したときに、より高画質な画像を得ることができる。
図48は、本発明の画像処理装置の機能または画像処理方法をコンピュータプログラムで実現した場合におけるコンピュータプログラム及びそのコンピュータプログラムを格納した記憶媒体の一例の説明図である。図中、51はプログラム、52はコンピュータ、61は光磁気ディスク、62は光ディスク、63は磁気ディスク、64はメモリ、71は光磁気ディスク装置、72は光ディスク装置、73は磁気ディスク装置である。
上述の本発明の第1,第2の実施の形態の説明及び第2の実施の形態における第1乃至第3の例として示した画像処理部3の機能は、コンピュータにより実行可能なプログラム51によっても実現することが可能である。その場合、そのプログラム51およびそのプログラムが用いるデータなどは、コンピュータが読み取り可能な記憶媒体に記憶することも可能である。記憶媒体とは、コンピュータのハードウェア資源に備えられている読取装置に対して、プログラムの記述内容に応じて、磁気、光、電気等のエネルギーの変化状態を引き起こして、それに対応する信号の形式で、読取装置にプログラムの記述内容を伝達できるものである。例えば、光磁気ディスク61,光ディスク62、磁気ディスク63,メモリ64(ICカード、メモリカードなどを含む)等である。もちろんこれらの記憶媒体は、可搬型に限られるものではない。
これらの記憶媒体にプログラム51を格納しておき、例えばコンピュータ52の光磁気ディスク装置71,光ディスク装置72,磁気ディスク装置73,あるいは図示しないメモリスロットにこれらの記憶媒体を装着することによって、コンピュータからプログラム51を読み出し、本発明の画像処理装置の機能または画像処理方法を実行することができる。あるいは、予め記憶媒体をコンピュータ52に装着しておき、例えばネットワークなどを介してプログラム51をコンピュータ52に転送し、記憶媒体にプログラム51を格納して実行させてもよい。あるいは、他のコンピュータにおいて記録媒体に格納されたプログラムを読み出し、コンピュータ52に転送して実行しても良い。
なお、コンピュータ52は、図33に示すメモリ部2、制御部5と一体となってよいし、更に画像入力部1や画像出力部4などと一体となっていてもよい。もちろん、本発明の一部の機能についてハードウェアによって構成することもできるし、あるいは、すべてをハードウェアで構成してもよい。
1…画像入力部、2…メモリ部、3…画像処理部、4…画像出力部、5…制御部、11…ブロック抽出部、12…ブロック分類部、13…画質改善部、21…角度概算部、22…角度精算部、23…画素値出力部、31…初期拡大処理部、32…ドメインブロック抽出部、33…ドメインブロック分類部、34…レンジブロック抽出部、35…縮小レンジブロック作成部、36…類似度判定部、37…改良ドメインブロック作成部、38…エッジ強調処理部、39…平均値演算部、40…反復処理部、51…プログラム、52…コンピュータ、61…光磁気ディスク、62…光ディスク、63…磁気ディスク、64…メモリ、71…光磁気ディスク装置、72…光ディスク装置、73…磁気ディスク装置。