以下、本発明を実施するための形態について図面を用いて説明する。以下の実施形態において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
<第1の実施形態>
第1の実施形態では、画像データにおけるオブジェクトを変形させる一例として、上・下・左・右の4方向にエッジ部を1画素だけ拡張させることで太らせる処理を説明する。そして、太らせた後に、太らせた後のオブジェクトのエッジ部と太らせた後のオブジェクト内部とで画像処理の手法を切り替える画像処理装置について説明する。
図1に本実施形態における画像処理装置を含む印刷装置の構成を示す。本実施形態における印刷装置は、コントローラ100と操作部106とプリント部107とを有する。印刷装置はネットワーク108と接続される。
コントローラ100は、ネットワーク108からPDLデータを受信する。PDLとはページ記述言語(Page Description Language)の略であり、ページにおける描画を表現するために一般的に用いられているコマンド体系のことである。またコントローラ100は、操作部106を介してユーザが設定した「オブジェクトを太らせる幅」の設定情報を取得する。そして、コントローラ100は、PDLデータをビットマップ形式の画像データに変換した後に「オブジェクトを太らせる幅」の設定情報に基づいた画像処理を行う。詳細については後述する。そしてコントローラ100は、その画像処理が行われたビットマップ形式の画像データをプリント部107に出力する。
操作部106は、本実施形態においては例えば液晶タッチパネルとすることができる。操作部106は、ユーザからの各操作を受け付ける。例えば操作部106は、ユーザからの各操作に従って「オブジェクトを太らせる幅」の設定情報をコントローラ100に送信する。
プリント部107は、コントローラ100から取得したビットマップ形式の画像データに基づき、インクやトナーなどの色材を用いて画像を紙媒体上に印刷する。
[コントローラ100の説明]
コントローラ100の構成について説明する。コントローラ100は不図示のCPU、ROM、RAMを有している。このCPUがROMに記録されているプログラムをRAMに展開し、実行することで、PDLデータ受信部101、PDL処理部102、及び画像処理制御部105が実現される。また、本実施形態ではレンダリング処理部103と画像処理部104とは半導体集積回路として実装されているものとする。もちろん、レンダリング処理部103と画像処理部104とはCPUが実行するプログラムとして実装されても構わない。
PDLデータ受信部101は、ネットワーク108からPDLのデータを受信し、PDL処理部102に出力する。
PDL処理部102は、PDLデータ受信部101で受信したPDLのデータで表現された描画命令を解釈して、レンダリング処理部103に描画指示を出力する。
レンダリング処理部103は、PDL処理部102から出力された描画指示に基づいてビットマップ形式の画像データを生成し、その生成された画像データを画像処理部104に出力する。この画像データは、プリント部107が扱う色材(即ちプロセスカラー)である例えばシアン、マゼンタ、イエロー、ブラックについての4色分の濃度情報を持っている。そして、画像データの各画素について0〜255の8ビット階調の濃度情報をそれぞれ有するものとする。
画像処理制御部105は、操作部106から「オブジェクトを太らせる幅」の設定情報を取得する。画像処理制御部105は、この設定情報に基づいて、後述する画像処理部104の有する各部が「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトを太らせた後のエッジ部の位置」を判定する方法を画像処理部104に指示する。具体的には、後述するエッジデータのうち、どの値が「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトを太らせた後のエッジ部の位置」とそれぞれを示しているかを、画像処理部104に指示する。詳細は後述する。
画像処理部104は、レンダリング処理部103から取得した画像データ、および、画像処理制御部105によって設定された指示に基づいて、各処理を実行する。この処理の詳細については、[画像処理部104の説明]において後述する。そして、画像処理部104は、各処理が実行されたビットマップ形式の画像データをプリント部107に出力する。
[画像処理部104の説明]
次に、画像処理部104の各処理の詳細について説明する。図2は、画像処理部104の構成を示す図である。画像処理部104は、メモリバッファ201、エッジデータ生成部202、太らせ処理部203、下色除去処理部204、色材載量制限処理部205、及びスクリーン処理部206を有する。メモリバッファ201はレンダリング処理部103から取得したビットマップ形式の画像データを順次蓄積する。そして、所定のバンド幅の画像データが貯まるとそのバンド幅の画像データをエッジデータ生成部202および太らせ処理部203に出力していく。
エッジデータ生成部202はメモリバッファ201から取得した画像データの「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトを太らせた後のエッジ部の位置」とを決定し、その情報を含むエッジデータを生成する。このエッジデータを生成するためのエッジデータ生成部202の処理の詳細については[エッジデータ生成部202の説明]で後述する。エッジデータ生成部202は生成したエッジデータを太らせ処理部203、下色除去処理部204、色材載量制限処理部205、及びスクリーン処理部206に出力する。
このエッジデータは画像データと同じサイズのビットマップ形式をしており、画素ごとに2ビットの情報を持つ。下位から1ビット目は「オブジェクトを太らせる前のエッジ部の位置」についての情報である。下位から1ビット目の値が0ならばその画素は太らせる前のエッジ部ではなく、値が1ならばその画素は太らせる前のエッジ部であることを示す。また、下位から2ビット目は「オブジェクトを太らせた後のエッジ部の位置」についての情報である。下位から2ビット目の値が0ならばその画素は太らせた後のエッジ部ではなく、値が1ならばその画素は太らせた後のエッジ部であることを示す。もちろん、これらのビットの割り当ては一例に過ぎず、「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトを太らせた後のエッジ部の位置」とを示す情報が含まれていればどのような形態であってもよい。
次にエッジデータについて図3と図4を用いて説明する。図3は画像データからオブジェクトの一部を抽出した図である。図3(a)は太らせ処理前の画像データであり、図3(b)は太らせ処理後の画像データである。図4はエッジデータとエッジデータを生成する元となるフィルタ処理後のデータとを示す図である。図3(b)の太らせ処理後の画像データや図4のフィルタデータの詳細について後述する。ここでは、エッジデータを説明する。
図3(a)に示す画像データから生成したエッジデータを図4(b)に示す。図3(a)において、ハッチングが施されている画素はオブジェクトが描画されている画素を示す。図4(b)のエッジデータは実際には画素ごとに2ビットの情報を持つが、説明のため便宜上図面では10進数の数値で表している。つまり、図4(b)のエッジデータのうち、「1」の数値が付されている画素は「オブジェクトを太らせる前のエッジ部の位置」の画素であり、「2」の数値が付されている画素は「オブジェクトを太らせた後のエッジ部の位置」の画素である。なお、図4(b)のようなエッジデータを生成する処理の詳細については後述する。
太らせ処理部203は、エッジデータ生成部202から取得したエッジデータと画像処理制御部105の指示とを基に、「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトを太らせた後のエッジ部の位置」とを判定する。第1の実施形態における画像処理制御部105の指示では、エッジデータに含まれる各画素の下位から1ビット目は「オブジェクトを太らせる前のエッジ部の位置」についての情報を表すことを指示する。また、下位から2ビット目は「オブジェクトを太らせた後のエッジ部の位置」についての情報を表すことを指示する。太らせ処理部203はメモリバッファ201から取得した画像データにおけるオブジェクトを太らせる処理を行い、下色除去処理部204に太らせた後のオブジェクトを含む画像データを出力する。太らせ処理部203の処理の詳細については[太らせ処理部203の説明]で後述する。
下色除去処理部204は、エッジデータ生成部202から取得したエッジデータと画像処理制御部105の指示とを基に、「オブジェクトを太らせた後のエッジ部の位置」を判定する。そして、太らせ処理部203から取得した画像データのエッジ部に対して下色除去処理を行う。下色とは画像データにおける各画素のシアン・マゼンタ・イエローの濃度の最小値のことである。この下色は同じ濃度のブラックの色材に置き換えることができる。下色をブラックの色材に置き換えることによってエッジ部の色材量を減らし、滲み・飛び散り・色ズレなどの画像品位の劣化を抑制する。
色材載量制限処理部205は、エッジデータ生成部202から取得したエッジデータと画像処理制御部105の指示とを基に、「オブジェクトを太らせた後のエッジ部の位置」を判定する。そして、下色除去処理部204から取得した画像データのエッジ部とそれ以外とで異なる色材載量制限処理を行う。色材載量制限とは、単位面積あたりの色材の濃度の合計(これを色材載量と呼ぶ)を制限することである。これは紙媒体上に単位面積あたり大量の色材を載せると転写・定着不良など画像品位の不良が発生するためである。この色材載量制限はオブジェクトのエッジ部に対してはより低い値で色材載量を制限することが好ましい。これは、エッジ部では転写・定着不良だけでなく滲みや飛び散りなどの画像不良が発生しやすいためである。よって、色材載量制限処理部205は、エッジ部とそれ以外とで色材載量の制限値を切り替える。色材載量の制限値を超える画素に対しては色材載量制限値になるまで各色材の濃度を一律の割合で落とす処理を行う。
スクリーン処理部206は、エッジデータ生成部202から取得したエッジデータと画像処理制御部105の指示とを基に、「オブジェクトを太らせた後のエッジ部の位置」を判定する。そして、色材載量制限処理部205から取得した画像データに対して、スクリーンの処理を行う。このとき、エッジ部には高線数のスクリーンの処理を、それ以外には低線数のスクリーンの処理を行う。これは、低線数のスクリーンはエッジ部に対しては粒状感が出やすく不向きであるが、階調が滑らかでオブジェクトの内部には好ましく、一方、高線数のスクリーンは階調が滑らかではないが、粒状感が出にくくオブジェクトのエッジ部に好ましいためである。
[エッジデータ生成部202の説明]
エッジデータ生成部202の処理を図5のフローチャートに示す。ステップS501においてエッジデータ生成部202は、画像データの色材の版ごとに、画像データ全体にラプラシアンフィルタをかける。このラプラシアンフィルタは図6(a)に示すような3×3のマトリックスのフィルタである。エッジデータ生成部202は注目画素とその隣接画素の値を参照して図6(a)のラプラシアンフィルタの畳み込み計算を行う。そして、エッジデータ生成部202は、畳み込み計算を行った計算結果をさらに16で割り128のオフセットを加算することで、最小値が0、中心値が128、最大値が255に正規化された値が算出される。ラプラシアンフィルタの効果を説明する。図3(a)の画像データに対して点線301のある色材の濃度分布の断面図を図6(b)に示す。そして、これに対してラプラシアンフィルタをかけて正規化を行うと、図6(c)のような分布となる。図6(c)では、オブジェクトのエッジの内側が中心値128より大きく、エッジの外側が中心値128より小さくなっている。この中心値128より大きいか小さいかで、オブジェクトのエッジ位置だけでなくオブジェクトの内側と外側に関する情報も判別することができる。これがラプラシアンフィルタの効果である。ここで、オブジェクトの内側にあるエッジ部のことを内エッジと称し、オブジェクトの外側にあるエッジ部のことを外エッジと称する。
ステップS502においてエッジデータ生成部202は、各画素に対して、ステップS501で得られたラプラシアンフィルタを適用して得られた値を基に、各画素が内エッジか、外エッジか、あるいは非エッジかを決定する。具体的には、エッジデータ生成部202は、各画素に対して、ステップS501で得られた値を基に閾値判定を行う。この処理の目的は、ある一定以上の強度のエッジのみ拾うこと、さらに2つのオブジェクトが互いに隣接するエッジは除外することである。2つのオブジェクトが互いに隣接する領域では、ラプラシアンフィルタの結果が正となる版と負となる版が混在することになる。そのような箇所で双方のオブジェクトを太らせると、版が重なりあって別の擬似的なオブジェクトが発生してしまう。このステップS502の処理によりそのような領域を除外できる。
図7は、ステップS502における閾値判定の処理のフローチャートを示す図である。ステップS701においてエッジデータ生成部202は、注目画素について閾値TH1を越える版が存在するかを判定する。閾値TH1を越える版が存在する場合は、ステップS702においてさらに閾値TH2を下回る版が存在するかを判定する。閾値TH2を下回る版が存在しない場合は、ステップS703においてエッジデータ生成部202は、注目画素はオブジェクトの内側のエッジである内エッジであると判定する。一方、ステップS702で閾値TH2を下回る版が存在する場合は、オブジェクトの内部である版とオブジェクトの外部である版が混在することを意味している。このような画素はエッジ用の画像処理は不要である。よって、ステップS704においてエッジデータ生成部202は、注目画素は非エッジであると判定する。また、ステップS701で閾値TH1を越える版が存在しない場合は、ステップS705において、さらに閾値TH2を下回る版が存在するかを判定する。閾値TH2を下回る版が存在する場合は、ステップS706においてエッジデータ生成部202は、注目画素はオブジェクトの外側のエッジである外エッジと判定する。一方、ステップS705で閾値TH2を下回る版が存在しない場合は、エッジデータ生成部202は、注目画素は非エッジと判定する。
このようにして決定した「内エッジ」「外エッジ」「非エッジ」を、画像データと同じ画素数分のビットマップ形式に記録したデータを生成する。このデータを「フィルタデータ」と呼ぶことにする。実際の記録方法はフィルタデータの画素ごとに内エッジを1、外エッジを2、非エッジを0として記録すれば良い。図4(a)は、図3(a)の画像データから生成したフィルタデータを示す。ここでは説明をわかりやすくするため、塗り401で示すセルは内エッジの画素を示し、塗り402で示すセルは外エッジの画素を示す。
次に、図5のフローチャートに戻り説明を続ける。ステップS503においてエッジデータ生成部202はフィルタデータに「内エッジ」と記録された画素が「オブジェクトを太らせる前のエッジの位置」であると決定する。そして、エッジデータ生成部202はエッジデータのその画素の値の下位から1ビット目に1を立てることで「オブジェクトを太らせる前のエッジ部の位置」をエッジデータに記録する。
ステップS504においてエッジデータ生成部202は、フィルタデータに記録された「内エッジ」「外エッジ」「非エッジ」の配置パターンにより、「オブジェクトを太らせた後のエッジ部の位置」を判定する。判定方法としては、フィルタデータに対して図8に示す全てのパターンのパターンマッチングを行う。図8において太い枠で囲まれたセルは注目画素であり、また、「内」「外」「非」と記載しているセルはそれぞれ順番に内エッジ、外エッジ、非エッジとマッチする画素を示す。また、斜線で塗られたセルは、パターンがマッチした場合に「オブジェクトを太らせる後のエッジ部の位置」を示す画素を示す。また、それぞれのパターンについて、基本パターンを90度、180度、270度回転させたパターンもパターンとして使用する。これは、第1の実施形態において太らせる方向は上・下・右・左であり方向に依存性がないためである。このパターンマッチングを図4(a)のフィルタデータに適用して生成したエッジデータが、前述のように図4(b)で示すエッジデータとなる。前述のように、内エッジの画素に対して、「オブジェクトを太らす前のエッジ部の位置」を示す「1」の値が付されている。また、図8に示すパターンマッチングの結果、パターン3に一致する各画素(つまり外エッジの画素)に対して、「オブジェクトを太らせた後のエッジ部の位置」を示す「2」の値が付されている。また、その他の画素には非エッジを示す「0」の値が付されている。
次に、図8のパターンを用いる理由について詳細に説明する。「オブジェクトを太らせた後のエッジ部の位置」は、基本的には、内エッジに上・下・左・右の方向に隣接する外エッジとなる。よって、パターン3がそのような配置を検出するパターンである。しかしながら、全ての外エッジが「オブジェクトを太らせた後のエッジ部の位置」になる訳ではない。それは、図9(a)や図9(d)に示すような、2つのオブジェクトが2画素以内の距離で描画されているようなオブジェクト同士が近接する場合のケースである。図9(a)や図9(d)は、画像データを示しており、ハッチングが施された画素がオブジェクトの画素を示している。図9(a)および図9(d)に対して生成したフィルタデータを、それぞれ図9(b)および図9(e)に示す。この外エッジを「オブジェクトを太らせた後のエッジ部の位置」とすると、オブジェクトを太らせた後に2つのオブジェクトが結合されてしまう。そのため、2つの内エッジが外エッジを挟んで3画素以内に存在するようなケースでは、オブジェクトが太らないように、外エッジではなく内エッジを「オブジェクトを太らせた後のエッジ部の位置」とする。図8のパターン4とパターン5がそのような配置を検出するパターンである。図9(a)および図9(d)から生成したエッジデータをそれぞれ図9(c)と図9(f)に示す。前述のように、内エッジの画素には、「オブジェクトを太らせる前のエッジ部の位置」を示す下位から1ビット目が「1」となっている。そしてさらに内エッジの画素には「オブジェクトを太らせた後のエッジ部の位置」を示す下位から2ビット目が「1」となっている。従って、図9(c)および図9(f)のエッジデータでは、内エッジの画素に10進表記で3の値が付されている。なお、隣接する方向以外の外エッジは、図8のパターン3と一致することにより、「オブジェクトを太らせた後のエッジ部の位置」を示す下位から2ビット目が「1」(すなわち、10進表記で2)が付されている。
また、図8のパターン3では、内エッジに隣接する外エッジの隣は非エッジとなっているが、外エッジでも構わない。そのさらに隣が内エッジのケース(パターン4とパターン5)でなければ良い。例えば、図10(a)に斜めの線や曲線の図形を表す画像データを示す。図10(a)の画像データに対応するフィルタデータは図10(b)のようになる。前述のように、第1の実施形態において太らせる方向は上・下・右・左であり方向に依存性がないので、パターン3だけでもこのような斜めの線や曲線を太らすことが可能ではある。しかしながら、後述する第3の実施形態で説明するように、ある方向のみに太らす方向を限定する形態では、図10(b)のようなフィルタデータではパターン3だけだと右・左方向に太ることはできない。そこで図8のパターン1とパターン2を用意することで、図10(b)斜めの線を横方向に太らすことができる。パターン1とパターン2がそのような配置を検出するパターンである。
上記のような理由のもと、図8のパターン1〜3は外エッジが「オブジェクトを太らせた後のエッジ部の位置」となるパターンを検出するものである。また、パターン4〜5は内エッジが「オブジェクトを太らせた後のエッジ部の位置」となるパターンを検出するものである。
このように、エッジデータ生成部202の処理により、太らせ処理の前に、太らせた後のエッジ位置を特定することが可能となる。
[太らせ処理部203の説明]
太らせ処理部203の処理について説明する。太らせ処理部203は、「オブジェクトを太らせた後のエッジ部の位置」の画素に「太らせる前のエッジ部の位置」の画素値を上書きすることでオブジェクトを太らせる処理を実現する。
図11は太らせ処理部203の処理のフローチャートを示す図である。ステップS1101において太らせ処理部203は画像データの注目画素について、対応するエッジデータの画素の2ビット目に1が立っているかどうかを判定する。2ビット目に1が立っていない場合は「オブジェクトを太らせた後のエッジ部の位置」ではないため、処理を終えて次の画素の処理へと進む。2ビット目に1が立っている場合は、ステップS1102において、さらに1ビット目に1が立っているかどうかを判定する。1ビット目に1が立っている場合、太らせ処理前後でエッジの位置が変わらないことを示すため、処理を終えて次の画素の処理へと進む。1ビット目に1が立っていない場合、ステップS1103において、上・下・左・右の方向に隣接する画素のうち、1ビット目に1が立っている画素を検出する。1ビット目に1が立っている隣接画素が見つかった場合は、ステップS1104において画像データにおけるその画素の値を注目画素の値に上書きする。
以上の処理を画像データとエッジデータの全体に行うことで、画像データのオブジェクトを上・下・左・右方向に1画素だけ太らせることができる。一例として、図3(a)の画像データと図4(b)のエッジデータを基に、オブジェクトを太らせた後の画像データを図3(b)に示す。
以上により、第1の実施形態によれば、画像データのオブジェクトを太らせる前に、「オブジェクトを太らせた後のエッジ部の位置」を決定している。これにより、オブジェクトを太らせた後に、もう一度エッジ部の位置を判定することなくオブジェクトのエッジ部とオブジェクトの内部とで画像処理の手法を切り替えることが可能となる。
なお、上記の第1の実施形態では、画像データにおけるオブジェクトの変形処理の一例として幅を太らせる例について記載したが、変形処理としてオブジェクトの幅を細らせる処理でも構わない。具体的には、図8のパターンマッチングに用いるパターンを、オブジェクトの幅を細らせる処理に対応するパターンを用いればよい。例えば、図8のパターン3の基本パターンのような場合には、内エッジのさらに左側に非エッジの画素を含むパターンを用意し、変形後のエッジの位置を、その内エッジの左側の非エッジの画素とすればよい。その場合、内エッジの画素の画素値をその右隣の非エッジの画素(オブジェクト外の画素)の画素値で上書きすることで細らせる処理が行なわれてもよい。オブジェクトの幅を細らせる処理の場合にも、画像処理制御部105は操作部106から取得する「オブジェクトの変形後のエッジ部の変形幅」の設定情報に基づいて上述したような処理を行なうことができる。
<第2の実施形態>
第1の実施形態では、画像データのオブジェクトを太らせた後に、予め生成しておいた「太らせ後のエッジ部の位置」の情報に基づいて各種の画像処理を行う例を説明した。
第2の実施形態では、オブジェクトを太らせる前の各種の画像処理では「太らせる前のエッジ部の位置」の情報に基づいて各種の画像処理を行う。そして、太らせた後の各種の画像処理では「太らせた後のエッジ部の位置」の情報に基づいて各種の画像処理を行うような、画像処理装置について説明する。
図12に第2の実施形態における画像処理部104の構成を示す。第1の実施形態と異なる点は3つある。1つ目は、下色除去処理部1203が太らせ処理部1204よりも前段にあること。2つ目は、エッジデータ生成部1202が生成する「オブジェクトを太らせる前のエッジ部の位置」の情報は、下色除去処理部1203と太らせ処理部1204に出力すること。3つ目は、エッジデータ生成部1202が生成する「オブジェクトを太らせた後のエッジ部の位置」の情報は、太らせ処理部1204、色材載量制限処理部1205とスクリーン処理部1206に出力することである。
エッジデータ生成部1202はメモリバッファ1201から取得した画像データについて、「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトを太らせた後のエッジ部の位置」とを決定する。ただし、その情報を別々含むエッジデータを合計2つ生成する。すなわち、第2の実施形態においては、エッジデータ生成部1202は「オブジェクトを太らせる前のエッジ部の位置」の情報を1ビットのビットマップ形式で保持するエッジデータを生成する。また、エッジデータ生成部1202は「オブジェクトを太らせた後のエッジ部の位置」の情報を1ビットのビットマップ形式で保持するエッジデータを生成する。
下色除去処理部1203は、エッジデータ生成部1202から「オブジェクトを太らせる前のエッジの位置」の情報を持つエッジデータを取得し、メモリバッファ1201から取得した画像データのエッジ部に対して下色除去処理を行う。なお、下地除去処理が行なわれたエッジ部の画素値は、その後の太らせ処理部1204において、太らせた後の画素の画素値として用いられる。従って、太らせた後のエッジ位置の下色除去を行なうことと同様の効果が得られる。
太らせ処理部1204はエッジデータ生成部から「オブジェクトを太らせる前のエッジ部の位置」の情報を持つエッジデータと「オブジェクトを太らせた後のエッジ部の位置」の情報を持つエッジデータとを取得する。そして、これらのエッジデータに基づいて下色除去処理部1203から取得した画像データのオブジェクトを太らせる処理を行う。太らせ処理の方法は実施形態1と同じである。
色材載量制限処理部1205とスクリーン処理部1206とは、エッジデータ生成部1202から「オブジェクトを太らせた後のエッジ部の位置」の情報を持つエッジデータを取得する。そして色材載量制限処理部1205は、太らせ処理部1204から取得した画像データに対して画像処理を行い、スクリーン処理部1206は色材載量制限処理部1205から取得した画像データに対して画像処理を行なう。
以上により、第2の実施形態によれば、オブジェクトを太らせる前の画像処理では「オブジェクトを太らせる前のエッジ部の位置」の情報を基に処理を行い、太らせた後の画像処理では「オブジェクトを太らせた後のエッジ部の位置」の情報を基に処理を行う。これにより、画像データのオブジェクトを太らせる前と太らせた後のどちらにおいても、エッジと内部で画像処理の手法を切り替えることが可能となる。
<第3の実施形態>
第1の実施形態では、画像データにおけるオブジェクトを上・下・左・右の4方向に1画素だけ太らせる例を説明した。これにより、オブジェクトの幅は合計で2画素だけ太ることになる。オブジェクトの幅を合計で1画素だけ太らせるには、オブジェクトをある方向、例えば右・下の2方向にだけ1画素太らせることで対応が可能である。第3の実施形態では、「オブジェクトを太らせる幅」の設定として「0画素」「1画素」「2画素」の3種類の設定を操作部がユーザから取得し、その指示通りにオブジェクトの幅を太らせる。そしてその後に適切な画像処理をかけることを可能とする画像処理装置の実施形態について説明する。なお、太らせる幅が「0画素」の場合、太らせる処理を行なわないことを示す。「1画素」の場合には、例えば右・下の2方向にだけ1画素太らせることを示す。「2画素」の場合には、第1の実施形態で説明したように上・下・左・右の4方向に1画素だけ太らせることを示す。
第3の実施形態における画像処理装置100および画像処理部104の構成は第1の実施形態と同じである。第1の実施形態と処理内容が異なる箇所について説明する。
操作部106は「オブジェクトを太らせる幅」の設定として「0画素」「1画素」「2画素」の3種類の設定をユーザから取得し、画像処理制御部105に通知する。
画像処理制御部105は、この設定情報に基づいて、画像処理部104の有する各部が「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトを太らせた後のエッジ部の位置」を判定する方法を画像処理部104に指示する。オブジェクトを太らせる幅に応じて、「オブジェクトを太らせた後のエッジ部の位置」は異なるものとなるので、どの位置を「オブジェクトを太らせた後のエッジ部の位置」と決定するかの元となる指示を送る。
エッジデータ生成部202はメモリバッファ201から取得した画像データにおける、オブジェクトを太らせる前の、右または下方向を向いているエッジと左または上方向を向いているエッジとの位置とを決定する。またエッジデータ生成部202は、オブジェクトを太らせた後の、右または下方向を向いているエッジと左または上方向を向いているエッジとの位置を決定する。そして、その情報を含むエッジデータを生成する。このエッジデータを生成するためのエッジデータ生成部202の処理の詳細については[第3の実施形態におけるエッジデータ生成部202の説明]で後述する。エッジデータ生成部202は生成したエッジデータを太らせ処理部203、下色除去処理部204、色材載量制限処理部205、スクリーン処理部206に出力する。
第3の実施形態におけるエッジデータは画像データと同じサイズのビットマップ形式をしており、画素ごとに4ビットの情報を持つ。下位から1ビット目は「オブジェクトを太らせる前の、右または下方向を向いているエッジ部の位置」についての情報であり、値が0ならばその画素はエッジ部ではないことを示し、値が1ならばその画素はエッジ部であることを示す。また、下位から2ビット目は「オブジェクトを太らせる前の、左または上方向を向いているエッジ部の位置」についての情報であり、値が0ならばその画素はエッジ部ではないことを示し、値が1ならばその画素はエッジ部であることを示す。また、下位から3ビット目は「オブジェクトを1画素太らせた後の、右または下方向を向いているエッジ部の位置」についての情報であり、値が0ならばその画素はエッジ部ではないことを示し、値が1ならばその画素はエッジ部であることを示す。また、下位から4ビット目は「オブジェクトを1画素太らせた後の、左または上方向を向いているエッジ部の位置」についての情報であり、値が0ならばその画素はエッジ部ではないことを示し、値が1ならばその画素はエッジ部であることを示す。第3の実施形態におけるエッジデータの一例として、図3(a)に示す画像データから生成したエッジデータを図4(c)に示す。図4(c)のエッジデータは画素ごとに4ビットの情報を持つが、説明のため、便宜上各画素の値を、10進数の数値で表している。
次に、太らせ処理部203、下色除去処理部204、色材載量制限処理部205、スクリーン処理部206について説明する。これらの処理方法は第1の実施形態と同様であるが、「オブジェクトを太らせた後のエッジ部の位置」を判定する方法が第1の実施形態と異なる。第1の実施形態では「オブジェクトを太らせた後のエッジ部の位置」そのものがエッジデータ生成部202の出力するエッジデータに含まれていた。しかし、第3の実施形態では、ユーザが操作部で設定した「オブジェクトを太らせる幅」の設定に応じて、「オブジェクトを太らせた後のエッジ部の位置」を示すエッジデータのビットが異なる。
「オブジェクトを太らせる幅」の設定が「0画素」のときはエッジデータの1ビット目または2ビット目が「1」の画素が「オブジェクトを太らせた後のエッジ部の位置」を示す。
また、「オブジェクトを太らせる幅」の設定が「1画素」のときはエッジデータの2ビット目のみまたは3ビット目のみが「1」の画素が「オブジェクトを太らせた後のエッジ部の位置」を示す。なお、2ビット目のみまたは3ビット目のみが「1」の画素としている理由を図4(c)を用いて説明する。図4(c)において2ビット目のみが「1」の画素は、10進表記で「2」で示される画素である。3ビット目のみが「1」の画素は、10進表記で「4」で示される画素である。ここで、図4(c)の内エッジの左下の画素は、オブジェクトを太らせる前の「下方向」を向いており、かつ「左方向」を向いている画素である。従って、1ビット目と2ビット目が「1」であるので10進表記で「3」と示されている。この画素は、実際の1画素幅だけ太らせた場合には下方向に太らせられることになるので太らせた後のエッジ部の位置の画素とはならない。よって、また、「オブジェクトを太らせる幅」の設定が「1画素」のときはエッジデータの2ビット目のみまたは3ビット目のみが「1」の画素が「オブジェクトを太らせた後のエッジ部の位置」を示すものとしている。
また、「オブジェクトを太らせる幅」の設定が「2画素」のときはエッジデータの3ビット目または4ビット目が「1」の画素が「オブジェクトを太らせた後のエッジの位置」を示す。以上説明したような判定の仕方を図13に示す。画像処理制御部105は、この判定の仕方を太らせ処理部203、下色除去処理部204、色材載量制限処理部205、スクリーン処理部206に指示する。
<第3の実施形態におけるエッジデータ生成部202の詳細>
エッジデータ生成部202の処理の図14のフローチャートに示す。まず、ステップS1401においてエッジデータ生成部202は画像データの色材の版ごとに、画像データ全体にラプラシアンフィルタをかける。これは実施形態1におけるS501と同じ処理である。
次に、ステップS1402においてエッジデータ生成部202は、各画素に対して、ラプラシアンフィルタの計算値を基に閾値判定を行い、フィルタデータを生成する。これは実施形態1におけるS502と同じ処理である。
次に、ステップS1403においてエッジデータ生成部202はフィルタデータに記録されている内エッジ・外エッジ・非エッジの配置パターンに基づき、「オブジェクトを太らせる前の、右または下方向を向いているエッジ部の位置」を判定する。そしてその位置を、エッジデータに記録する。このとき、エッジデータの対応する画素の画素値の下位から1ビット目に1を立てる。この判定方法は、エッジデータにおける内エッジを注目画素として、右または下に隣接する画素に外エッジが存在するかどうかを判定すれば良い。
次に、ステップS1404においてエッジデータ生成部202はフィルタデータに記録されている内エッジ・外エッジ・非エッジの配置パターンに基づき、「オブジェクトを太らせる前の、左または上方向を向いているエッジ部の位置」を判定する。そしてその位置をエッジデータに記録する。このとき、エッジデータの対応する画素の画素値の下位から2ビット目に1を立てる。この判定方法は、エッジデータにおける内エッジを注目画素として、左または上に隣接する画素に外エッジが存在するかどうかを判定すれば良い。
次に、ステップS1405においてエッジデータ生成部202はフィルタデータに記録されている内エッジ・外エッジ・非エッジの配置パターンに基づき、「オブジェクトを太らせた後の、右または下方向を向いているエッジ部の位置」を判定する。そしてその位置をエッジデータに記録する。この判定では、フィルタデータに対して図15(a)に示すパターンのパターンマッチングを行う。図15(a)に示すパターンは、図8のパターンのうち0度と90度回転のものに対応する。パターンがマッチしたとき、斜線で塗られているセルの画素に対応するエッジデータの画素の画素値の下位から3ビット目に1を立てる。
次に、ステップS1406においてエッジデータ生成部202はフィルタデータに記録されている内エッジ・外エッジ・非エッジの配置パターンに基づき、「オブジェクトを太らせた後の、左または上方向を向いているエッジ部の位置」を判定する。そしてその位置をエッジデータに記録する。この判定では、フィルタデータに対して図15(b)に示すパターンのパターンマッチングを行う。図15(b)に示すパターンは、図8のパターンの180度回転、270度回転したものに対応する。パターンがマッチしたとき、斜線で塗られているセルの画素に対応するエッジデータの画素の画素値の下位から4ビット目に1を立てる。
最後に、ステップS1407においてエッジデータ生成部202は、生成したエッジデータを太らせ処理部203に出力する。
以上により、第3の実施形態によれば、オブジェクトを太らせる幅として「0画素」「1画素」「2画素」の3種類の設定を操作部がユーザから取得する。そして、その指示通りにオブジェクトの幅を太らせた後、オブジェクトのエッジ部とオブジェクトの内部とでそれぞれ適切な画像処理を行うことが可能となる。
なお、第3の実施形態では、オブジェクトの太らせ幅として「1画素」を指示した場合、右及び下方向に太らせる例を説明した。しかしながら、太らせる方向はこれに限られるものではなく、例えば左及び上方向を太らせても良い。
<第4の実施形態>
第1の実施形態では、画像データにおけるオブジェクトを上・下・左・右の4方向に1画素だけ太らせる例を説明した。これにより、「オブジェクトの幅」は合計で2画素だけ太ることになる。しかしながら、レンダリング処理部103やプリント処理部107の解像度がより高い場合は、解像度に応じた効果を出すためにエッジ部の幅が2画素であり、オブジェクトを太らせる幅が合計で4画素まで可能であることが望ましい。第4の実施形態では、エッジ部の幅を2画素とし、「オブジェクトを太らせる幅」の設定として合計で「0画素」「2画素」「4画素」の3段階での設定を操作部がユーザから取得する。そして、その指示通りにオブジェクトの幅を複数画素分太らせた後、適切な画像処理をかけることを可能とする、画像処理装置の実施形態について説明する。
第4の実施形態における画像処理装置100および画像処理部104の構成は第1の実施形態と同じである。第1の実施形態と処理内容が異なる箇所について説明する。
操作部106は「オブジェクトを太らせる幅」の設定として「0画素」「2画素」「4画素」の3種類の設定をユーザから取得し、画像処理制御部105に通知する。
画像処理制御部105は、この設定情報に基づいて、画像処理部104の有する各部が「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトを太らせた後のエッジ部の位置」を判定する方法を画像処理部104に指示する。エッジデータ生成部202はメモリバッファ201から取得した画像データについて各位置を決定する。すなわち、「オブジェクトを太らせる前のエッジ部の位置」と「オブジェクトの幅を2画素太らせた後のエッジ部の位置」と「オブジェクトの幅を4画素太らせた後のエッジ部の位置」を決定する。そして、その情報を含むエッジデータを生成する。このエッジデータを生成するためのエッジデータ生成部202の処理の詳細については[第4の実施形態におけるエッジデータ生成部202の説明]で後述する。エッジデータ生成部202は生成したエッジデータを太らせ処理部203、下色除去処理部204、色材載量制限処理部205、スクリーン処理部206に出力する。
第4の実施形態のエッジデータは画像データと同じサイズのビットマップ形式をしており、画素ごとに3ビットの情報を持つ。下位から1ビット目は「オブジェクトを太らせる前のエッジ部の位置」についての情報であり、値が0ならばその画素はエッジ部ではないことを示し、値が1ならばその画素はエッジ部であることを示す。また、下位から2ビット目は「オブジェクトの幅を2画素だけ太らせた後のエッジ部の位置」についての情報であり、値が0ならばその画素はエッジ部ではないことを示し、値が1ならばその画素はエッジ部であることを示す。また、下位から3ビット目は「オブジェクトの幅を4画素だけ太らせた後のエッジ部の位置」についての情報であり、値が0ならばその画素はエッジ部ではないことを示し、値が1ならばその画素はエッジ部であることを示す。第4の実施形態におけるエッジデータの一例として、図3(a)に示す画像データから生成したエッジデータを図4(d)に示す。図4(d)のエッジデータは画素ごとに3ビットの情報を持つが、説明のため、便宜上各画素の値を、10進数の数値で表している。図4(d)では、エッジ部の幅が2画素であるので内エッジのさらに内側の画素もオブジェクトを太らせる前のエッジ部の位置となっている。第4の実施形態におけるエッジデータ生成部202の処理の詳細については後述する。
次に、下色除去処理部204、色材載量制限処理部205、スクリーン処理部206について説明する。これらの処理方法は第1の実施形態と同様であるが、「オブジェクトを太らせた後のエッジ部の位置」を判定する方法が第1の実施形態と異なる。第4の実施形態では、ユーザが操作部で設定した「オブジェクトを太らせる幅」の設定に応じて、「オブジェクトを太らせた後のエッジ部の位置」が示すエッジデータのビットが異なる。「オブジェクトを太らせる幅」の設定が「0画素」のときはエッジデータの1ビット目が「オブジェクトを太らせた後のエッジ部の位置」を示す。また、「オブジェクトを太らせる幅」の設定が「2画素」のときはエッジデータの2ビット目が「オブジェクトを太らせた後のエッジ部の位置」を示す。また、「オブジェクトを太らせる幅」の設定が「4画素」のときはエッジデータの3ビット目が「オブジェクトを太らせた後のエッジ部の位置」を示す。この判定の仕方を図16に示す。画像処理制御部105は、この判定の仕方を太らせ処理部203、下色除去処理部204、色材載量制限処理部205、スクリーン処理部206に指示する。
次に、太らせ処理部203の処理について説明する。太らせ処理部203も図16に従って「オブジェクトを太らせた後のエッジの位置」を判定する。そして、オブジェクトを太らせる処理として、まずエッジデータから「オブジェクトを太らせた後のエッジの位置」である画素を検出する。そして、その画素を注目画素として、そこから上下左右方向に2画素以内に「オブジェクトを太らせる前のエッジの位置」を示す画素を検出する。そのような画素が見つかれば、その画素の画像データにおける画素値を、画像データにおける注目画素に上書きする。
<第4の実施形態におけるエッジデータ生成部202の詳細>
エッジデータ生成部202の処理の図17のフローチャートに示す。なお、第4の実施形態では説明を簡単にするため、第1の実施形態の際に考慮した、図9に示すような「太らせると結合されてしまうオブジェクト」については考慮しないこととする。
まず、ステップS1701においてエッジデータ生成部202は画像データの色材の版ごとに、画像データ全体にラプラシアンフィルタをかける。これは実施形態1におけるS501と同じ処理である。次に、ステップS1702においてエッジデータ生成部202は、各画素に対して、ラプラシアンフィルタの計算値を基に閾値判定を行い、フィルタデータを生成する。これは実施形態1におけるS502と同じ処理である。
次に、ステップS1703においてエッジデータ生成部202は、フィルタデータにおいて、内エッジと、内エッジに上下左右に隣接する非エッジとを「オブジェクトを太らせる前のエッジの位置」と判定し、エッジデータに記録する。このとき、エッジデータの対応する画素の画素値の下位から1ビット目に1を立てる。
次に、ステップS1704においてエッジデータ生成部202は、フィルタデータにおいて、内エッジおよび外エッジに対して、「オブジェクトの幅を2画素だけ太らせた後のエッジ部の位置」と判定し、エッジデータに記録する。すなわち、オブジェクトの幅を合計で2画素太らせた後のエッジ部の位置と判定する。このとき、エッジデータの対応する画素の画素値の下位から2ビット目に1を立てる。
次に、ステップS1705においてエッジデータ生成部202は、フィルタデータにおいて、外エッジと、外エッジに上下左右に隣接する非エッジとに対して、「オブジェクトの幅を4画素だけ太らせた後のエッジの位置」と判定し、エッジデータに記録する。すなわち、オブジェクトの幅を合計で4画素太らせた後のエッジ部の位置と判定する。このとき、エッジデータの対応する画素の画素値の下位から3ビット目に1を立てる。
最後に、ステップS1707においてエッジデータ生成部202はエッジデータを太らせ処理部203に出力する。
以上により、第4の実施形態によれば、エッジの幅を2画素とし、太らせるオブジェクトの幅を「0画素」「2画素」「4画素」の3段階でオブジェクトの幅を太らせた後、適切な画像処理をかけることが可能となる。
(その他の実施形態)
本発明の目的は、以下の処理を実行することによっても達成される。即ち、前記実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。