JP2021158441A - 画像処理装置、画像処理方法及びプログラム - Google Patents
画像処理装置、画像処理方法及びプログラム Download PDFInfo
- Publication number
- JP2021158441A JP2021158441A JP2020054808A JP2020054808A JP2021158441A JP 2021158441 A JP2021158441 A JP 2021158441A JP 2020054808 A JP2020054808 A JP 2020054808A JP 2020054808 A JP2020054808 A JP 2020054808A JP 2021158441 A JP2021158441 A JP 2021158441A
- Authority
- JP
- Japan
- Prior art keywords
- boundary point
- image processing
- pixel
- raster data
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims 2
- 238000009795 derivation Methods 0.000 claims abstract description 79
- 238000001914 filtration Methods 0.000 claims description 2
- 230000007547 defect Effects 0.000 claims 2
- 238000000034 method Methods 0.000 abstract description 77
- 230000006870 function Effects 0.000 description 41
- 238000010586 diagram Methods 0.000 description 28
- 230000005484 gravity Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Record Information Processing For Printing (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Facsimile Image Signal Circuits (AREA)
Abstract
【課題】ベクターデータを変換して得られるラスターデータにおいて、つぶれ又は欠けが生じているか否かを高精度に判定するための技術を提供する。【解決手段】画像処理装置は、第一導出手段と第二導出手段と判定手段とを有する。第一導出手段は、オブジェクトを含むベクターデータを走査して、所定の方向において画素値が変化する第一境界点を導出する。第二導出手段は、ベクターデータを変換して得られるラスターデータを走査して、所定の方向において画素値が変化する第二境界点を導出する。判定手段は、第一境界点と第二境界点とを基に、ラスターデータにおいてオブジェクトのつぶれ又は欠けがあるか否かを判定する。【選択図】図3
Description
本発明は、ベクターデータを基に生成されたラスターデータにおけるオブジェクトのつぶれ又は欠けを判定する画像処理技術に関する。
ベクターデータを基に印刷を行う場合、ベクターデータはラスタライズされてラスターデータに変換される。このラスタライズの際に文字の線や図形がくっついたり消えたりして、元の形状と異なる形状で出力されることがある。これは、つぶれ又は欠けと呼ばれる。特許文献1は、文字形状の線間隔と基準値との比較結果を基につぶれの判定を行う技術を開示している。
しかしながら、特許文献1では、つぶれの判定においてラスタライズによる影響が考慮されないため、ラスタライズのアルゴリズムによっては、つぶれが生じていないデータに対してつぶれが生じていると判定する可能性がある。また、つぶれが生じているデータに対してつぶれが生じていないと判定する可能性がある。また、同様に、欠けが生じていないデータに対して欠けが生じていると判定したり、欠けが生じているデータに対して欠けが生じていないと判定したりする可能性がある。
そこで本発明は、ベクターデータを変換して得られるラスターデータにおいて、つぶれ又は欠けが生じているか否かを高精度に判定するための技術を提供する。
上記課題を解決するために、本発明の一態様に係る画像処理装置は、オブジェクトを含むベクターデータを走査して、所定の方向において画素値が変化する第一境界点を導出する第一導出手段と、前記ベクターデータを変換して得られるラスターデータを走査して、所定の方向において画素値が変化する第二境界点を導出する第二導出手段と、前記第一境界点と前記第二境界点とを基に、前記ラスターデータにおいて前記オブジェクトのつぶれ又は欠けが生じているか否かを判定する判定手段と、を有することを特徴とする。
本発明によれば、ベクターデータを変換して得られるラスターデータにおいて、つぶれ又は欠けが生じているか否かを高精度に判定することができる。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。その他、補足として、同一の構成については、同じ符号を付して説明する。
[実施形態1]
本実施形態では、黒画素と白画素との2値で構成されたベクター形式の文字データ(ベクターデータ)を変換して得られるラスターデータにおいて、つぶれ又は欠けが生じているか否かを判定する。また、判定結果に応じて、つぶれ及び欠けの発生を抑制するためにラスタライズに用いるパラメータ(以下、ラスタライズパラメータと呼ぶ)を補正する。
本実施形態では、黒画素と白画素との2値で構成されたベクター形式の文字データ(ベクターデータ)を変換して得られるラスターデータにおいて、つぶれ又は欠けが生じているか否かを判定する。また、判定結果に応じて、つぶれ及び欠けの発生を抑制するためにラスタライズに用いるパラメータ(以下、ラスタライズパラメータと呼ぶ)を補正する。
<画像処理装置のハードウェア構成>
図1は、本実施形態に係る画像処理装置のハードウェア構成例を示すブロック図である。画像処理装置1は、例えば、コンピュータなどである。画像処理装置1は、CPU101、ROM102、RAM103を備える。また、画像処理装置1は、ビデオカード(VC)104、汎用インターフェース(I/F)105、シリアルATA(SATA) I/F106、ネットワークインターフェースカード(NIC)107を備える。画像処理装置1の各構成要素は、システムバス108によって相互に接続される。CPU101は、RAM103をワークメモリとして、ROM102、ハードディスクドライブ(HDD)113、各種記録メディアに格納されたオペレーティングシステム(OS)や各種プログラムを実行する。また、CPU101は、システムバス108を介して各構成を制御する。なお、後述の処理は、ROM102やHDD113などに格納されたプログラムコードがRAM103に展開され、CPU101によって実行される。VC104はビデオインターフェースで、VC104にはディスプレイ115が接続される。汎用I/F105には、シリアルバス109を介して、マウスやキーボードなどの入力デバイス110やプリンタ111が接続される。SATA I/F106には、シリアルバス112を介して、HDD113や各種記録メディアの読み書きを行う汎用ドライブ114が接続される。NIC107は、外部装置との間で情報の入力及び出力を行う。CPU101は、HDD113や汎用ドライブ114にマウントされた各種記録メディアを各種データの格納場所として使用する。CPU101は、プログラムによって提供されるユーザインターフェース(UI)をディスプレイ115に表示し、入力デバイス110を介して受け付けるユーザ指示などの入力を受信する。
図1は、本実施形態に係る画像処理装置のハードウェア構成例を示すブロック図である。画像処理装置1は、例えば、コンピュータなどである。画像処理装置1は、CPU101、ROM102、RAM103を備える。また、画像処理装置1は、ビデオカード(VC)104、汎用インターフェース(I/F)105、シリアルATA(SATA) I/F106、ネットワークインターフェースカード(NIC)107を備える。画像処理装置1の各構成要素は、システムバス108によって相互に接続される。CPU101は、RAM103をワークメモリとして、ROM102、ハードディスクドライブ(HDD)113、各種記録メディアに格納されたオペレーティングシステム(OS)や各種プログラムを実行する。また、CPU101は、システムバス108を介して各構成を制御する。なお、後述の処理は、ROM102やHDD113などに格納されたプログラムコードがRAM103に展開され、CPU101によって実行される。VC104はビデオインターフェースで、VC104にはディスプレイ115が接続される。汎用I/F105には、シリアルバス109を介して、マウスやキーボードなどの入力デバイス110やプリンタ111が接続される。SATA I/F106には、シリアルバス112を介して、HDD113や各種記録メディアの読み書きを行う汎用ドライブ114が接続される。NIC107は、外部装置との間で情報の入力及び出力を行う。CPU101は、HDD113や汎用ドライブ114にマウントされた各種記録メディアを各種データの格納場所として使用する。CPU101は、プログラムによって提供されるユーザインターフェース(UI)をディスプレイ115に表示し、入力デバイス110を介して受け付けるユーザ指示などの入力を受信する。
<画像処理装置の機能構成>
図2は、本実施形態に係る画像処理装置1の機能構成例を示すブロック図である。画像処理装置1は、ベクターデータ取得部201、第一導出部202、ラスタライズ部203、第二導出部204、判定部205、補正部206、ラスターデータ出力部207を有する。なお、画像処理装置1の各部の一部もしくは全部は、CPU101がROM102やHDD113に格納されたプログラムをRAM103に展開し、実行することで実現される。あるいは、各部の一部もしくは全部は、専用のハードウェアによって実現されてもよい。ベクターデータ取得部201は、2値のベクターデータを取得する。ベクターデータは、予めHDD113や汎用ドライブ114に格納されたデータ、又はNIC107を介して外部装置から受信したデータである。
図2は、本実施形態に係る画像処理装置1の機能構成例を示すブロック図である。画像処理装置1は、ベクターデータ取得部201、第一導出部202、ラスタライズ部203、第二導出部204、判定部205、補正部206、ラスターデータ出力部207を有する。なお、画像処理装置1の各部の一部もしくは全部は、CPU101がROM102やHDD113に格納されたプログラムをRAM103に展開し、実行することで実現される。あるいは、各部の一部もしくは全部は、専用のハードウェアによって実現されてもよい。ベクターデータ取得部201は、2値のベクターデータを取得する。ベクターデータは、予めHDD113や汎用ドライブ114に格納されたデータ、又はNIC107を介して外部装置から受信したデータである。
第一導出部202は、ベクターデータ取得部201によって取得されたベクターデータを走査する。また、第一導出部202は、走査結果を基に、所定の方向において、白画素から黒画素に、又は黒画素から白画素に変わる白画素と黒画素との境界点を第一境界点として導出する。第一境界点は、所定の方向において画素値が変化する位置であるといえる。第一境界点を導出する際の所定の方向は、例えば、ベクターデータにおいて縦軸方向又は横軸方向である。ラスタライズ部203は、ベクターデータ取得部201によって取得されたベクターデータをラスタライズし、ラスターデータを生成する。ラスターデータは、ベクターデータを変換して得られるデータである。
第二導出部204は、ラスタライズ部203によって生成されたラスターデータを走査する。また、第二導出部204は、走査結果を基に、所定の方向において、白画素から黒画素に、又は黒画素から白画素に変わる白画素と黒画素との境界点を第二境界点として導出する。第二境界点は、所定の方向において画素値が変化する位置であるといえる。第二境界点を導出する際の所定の方向は、例えば、ラスターデータにおいて縦軸方向又は横軸方向である。
判定部205は、第一導出部202で導出された第一境界点と第二導出部204で導出された第二境界点とを比較し、比較結果を基に、文字、線、図形などのオブジェクトの形状が変化しているか否かを判定する。すなわち、判定部205は、ラスターデータのオブジェクトにつぶれ又は欠けが生じているか否かを判定する。補正部206は、判定部205による判定結果を基に、ラスタライズパラメータを補正する。ラスターデータ出力部207は、補正されたラスタライズパラメータを用いて生成されたラスターデータをプリンタ111へ出力する。
<画像処理装置が実行する処理の流れ>
図3を用いて、オブジェクトである文字のつぶれや欠けに対する判定を行い、つぶれや欠けの発生を抑制する処理について説明する。図3は、本実施形態における画像処理装置1が実行する処理の流れを示すフローチャートである。本実施形態においてはオブジェクト単位でデータ処理を行うが、領域単位でデータ処理を行ってもよい。なお、フローチャートの説明における記号「S」は、ステップ(工程)を表すものとする。この点、以下のフローチャートの説明においても同様とする。
図3を用いて、オブジェクトである文字のつぶれや欠けに対する判定を行い、つぶれや欠けの発生を抑制する処理について説明する。図3は、本実施形態における画像処理装置1が実行する処理の流れを示すフローチャートである。本実施形態においてはオブジェクト単位でデータ処理を行うが、領域単位でデータ処理を行ってもよい。なお、フローチャートの説明における記号「S」は、ステップ(工程)を表すものとする。この点、以下のフローチャートの説明においても同様とする。
S301では、ベクターデータ取得部201は、オブジェクトであるフォントの2値のベクターデータを取得する。
S302では、第一導出部202は、S301においてベクターデータ取得部201によって取得されたベクターデータを走査し、走査結果を基に、縦軸方向又は横軸方向において、白画素と黒画素とが隣接する箇所を示す境界点を第一境界点として導出する。第一導出部202は、導出した第一境界点を第一境界点テーブルに記録する。S302の詳細については後述する。
S303では、ラスタライズ部203は、S301においてベクターデータ取得部201によって取得されたベクターデータを、ラスタライズパラメータを用いてラスターデータへと変換する。
S304では、第二導出部204は、S303においてラスタライズ部203によって生成されたラスターデータを走査し、走査結果を基に、縦軸方向又は横軸方向において、白画素と黒画素とが隣接する箇所を示す境界点を第二境界点として導出する。第二導出部204は、導出した第二境界点を第二境界点テーブルに記録する。S304の詳細については後述する。
S305では、判定部205は、S302において導出された第一境界点と、S304において導出された第二境界点とを基に、ベクターデータとラスターデータとで対応する位置の画素値が異なるか否かを判定する。画素値が異なる場合、その境界点の位置につぶれ又は欠けがあると判定する。判定は、第一境界点と第二境界点とを比較し、比較結果を基に行われる。判定部205は、第一境界点テーブルにおいて、つぶれ又は欠けが生じているとの判定結果を得た第一境界点に対して、つぶれ又は欠けが生じていることを示すフラグ「1」を設定する。判定部205は、第一境界点テーブルにおいて、つぶれ又は欠けが生じていないとの判定結果を得た第一境界点に対して、つぶれ又は欠けが生じていないことを示すフラグ「0」を設定する。
S306では、補正部206は、S305の判定部205による判定結果を基に、ラスタライズパラメータを補正する。補正後のラスタライズパラメータを用いて生成されたラスターデータは、ラスターデータ出力部207によってプリンタ111に出力される。
<第一境界点の導出>
図4〜図8を用いて、S302の第一境界点の導出処理の詳細について説明する。
図4〜図8を用いて、S302の第一境界点の導出処理の詳細について説明する。
図4は、オブジェクトであるフォントのベクターデータ例であって、フォント「Z」の2値のベクターデータ例を示す図である。なお、図4では、xy平面であって、横軸方向をx軸方向とし、縦軸方向をy軸方向とする。図4では、x軸方向に対して走査を行うケースを示しているが、y軸方向に対して走査を行うことも可能である。図4に示すように、フォント「Z」の2値のベクターデータは、横軸方向(幅方向)の大きさがNであり、縦方向(高さ方向)の大きさがMであるデータである。ベクターデータは、10個の線分L1〜L10を有し、線分L1〜L10で囲まれる文字領域内が黒画素で構成され、文字領域の外側の余白領域が白画素で構成されている。すなわち、線分L1〜L10によって、フォント「Z」のアウトラインが構成されている。線分L1〜L10は、直線状をなし2つの端点(始点及び終点)を有する。図4には、x座標のxi(i<N)において第一境界点の導出処理によって導出した4つの第一境界点Vy1、Vy2、Vy3、Vy4と、y座標のyj(j<M)において第一境界点の導出処理によって導出した2つの第一境界点Vx1、Vx2とを示している。
図5は、S302の第一境界点の導出処理の流れを示すフローチャートである。図5のフローチャートが示す処理は、ROM102に格納されたプログラムコードがRAM103に展開され、CPU101によって実行される。
S501では、第一導出部202は、S301で取得されたベクターデータからフォントを構成する輪郭線(フォントデータの輪郭線)に関する情報を抽出し、抽出した輪郭線に関する情報を輪郭関数テーブルに格納する。すなわち、第一導出部202は、ベクターデータから取得した輪郭線に関する情報を含む輪郭関数テーブルを生成するともいえる。輪郭線に関する情報は、例えば、輪郭線を示す関数(輪郭関数ともいう)と、輪郭関数の始点及び終点の座標、又は、輪郭関数の制御点の座標と、取り得る値の範囲と、輪郭関数の種類(直線、2次ベジエ曲線)とを含む。フォントデータの輪郭線は、直線又は2次ベジエ(bezier)曲線で構成される。フォントデータの輪郭線について、図6を用いて説明する。図6は、フォントデータの輪郭関数を説明するための図であって、図6(a)に直線である場合を示し、図6(b)に2次ベジエ曲線である場合を示す。
直線は、図6(a)に示すように、始点P0と終点P1の2点を有して構成される。始点P0と終点P1との間の直線上の点Pは、媒介変数tを用いて以下の式(1)で表される。
一方、2次ベジエ曲線は、図6(b)に示すように、3つの制御点P2、P3、P4を有し、制御点P2を始点とし、制御点P4を終点として描かれる曲線である。なお、以下では、2次ベジエ曲線を構成する3つの制御点のうち、2次ベジエ曲線の一方の端の制御点P2を始点とし、2次ベジエ曲線の他方の端の制御点P4を終点として説明する。このように始点P2、制御点P3、終点P4として描かれる2次ベジエ曲線上の点Pは、媒介変数tを用いて以下の式(2)で表される。
よって、直線、2次ベジエ曲線では共に、xy平面のx又はyを定めることにより、直線、2次ベジエ曲線上の点を一意に決定することができる。
取得された輪郭線の関数の始点、終点、制御点の座標、取り得る値の範囲、関数の種類(直線及び2次ベジエ曲線)の情報は、輪郭関数テーブルに格納される。図7は、輪郭関数テーブル例を示す図である。図7に示すように、輪郭関数テーブルは、項目として、始点x座標701、始点y座標702、終点x座標703、終点y座標704、制御点x座標705、制御点y座標706を有する。さらに、輪郭関数テーブルは、項目として、x座標で取り得る値の範囲707、y座標で取り得る値の範囲708、ベクターデータ情報709を有する。輪郭関数として直線を取得した場合、例えば、図7の1行目のように、直線に関する情報が輪郭関数テーブルにおいて該当する項目に格納される。すなわち、始点x座標701に「x_f1」、始点y座標702に「y_f1」、終点x座標703に「x_e1」、終点y座標704に「y_e1」が格納されることになる。また、x座標で取り得る値の範囲707に「x_p1」、y座標で取り得る値の範囲708に「y_p1」、ベクターデータ情報709に「0(直線)」が格納されることになる。輪郭関数として2次ベジエ曲線を取得した場合、例えば、図7の2行目のように、2次ベジエ曲線に関する情報が輪郭関数テーブルにおいて該当する項目に格納される。すなわち、始点x座標701に「x_f2」、始点y座標702に「y_f2」、終点x座標703に「x_e2」、終点y座標704に「y_e2」、制御点x座標705に「x_c2」、制御点y座標706に「y_c2」が格納されることになる。さらに、x座標で取り得る値の範囲707に「x_p2」、y座標で取り得る値の範囲708に「y_p2」、ベクターデータ情報707に「1(2次ベジエ曲線)」が格納されることになる。
S502では、第一導出部202は、S301で取得したベクターデータ(文字データ)に対してx軸方向にスキャン(走査)を行うための初期値xiを設定する。
S503では、第一導出部202は、x軸方向にスキャンを行う際には、x=xiと輪郭関数との交点を第一境界点として全て導出する。全ての第一境界点の導出は、全ての第一境界点の座標を取得するともいえる。まず、輪郭関数テーブルのx座標で取り得る値の範囲を参照することによって、輪郭関数テーブルに格納されている関数のうち、x=xiと交点を持つと関数を輪郭関数テーブルから全て取り出す。その後、式(1)、式(2)を用いることで直線、2次ベジエ曲線に対してx=xiとの交点が導出される。以下にその方法を示す。
式(1)において、x=xiのときのyの値を導出するケースについて説明する。式(1)から以下の式(3)が得られ、(3)式によってtが求められる。ただし、P0_xはP0のx座標を表し、P1_xはP1のx座標を表す。
さらに、式(1)から以下の式(4)が得られ、式(4)によってyの値が求められる。ただし、P0_yはP0のy座標を表し、P1_yはP1のy座標を表す。
なお、y軸方向にスキャンを行い、y=yiと輪郭関数の交点の座標のxの値を導出する場合も、x軸方向にスキャンを行い、x=xiと輪郭関数の交点の座標のyの値を導出する場合と同様に求められる。
次に、式(2)において、x=xiのときのyの値を導出するケースについて説明する。式(2)から以下の式(5)が得られ、式(5)によってtが求められる。ただし、P2_xはP2のx座標を表し、P3_xはP3のx座標を表し、P4_xはP4のx座標を表す。
さらに、式(2)から以下の式(6)が得られ、(6)式によってyの値が求められる。ただし、P2_yはP2のy座標を表し、P3_yはP3のy座標を表し、P4_yはP4のy座標を表す。
なお、y軸方向にスキャンを行い、y=yiと輪郭関数の交点の座標xの値を導出する場合も、x軸方向にスキャンを行い、x=xiと輪郭関数の交点の座標のyの値を導出する場合と同様に求められる。
S504では、第一導出部202は、S503で導出された全ての交点を基に、縦方向又は横軸方向において隣接する交点で囲まれる区間(領域)の画素が白画素であるか黒画素であるかを判定する(特定する)。y座標は、原点0から離れる方向(図4において下方向)に向かうに従い大きくなるとする。判定(特定)では、横軸方向にスキャンしたときには、縦方向において隣接する交点で囲まれる区間が対象となり、縦方向にスキャンしたときには、横軸方向において隣接する交点で囲まれる区間が対象となる。第一導出部202は、各区間が有する2つの交点のうち、y座標が小さい交点を判定交点とし、各区間に対応する判定交点のy座標の大きさを基に判定する。第一導出部202は、全ての区間のうち、y座標が1番小さい判定交点を有する区間を黒画素、y座標が2番目に小さい判定交点を有する区間を白画素、y座標が3番目に小さい判定交点を有する区間を黒画素であると判定する。すなわち、第一導出部202は、全ての区間のうち、最も小さいy座標を有する区間から順番に、黒画素、白画素、と交互に決定する。
S505では、第一導出部202は、S503で導出した第一境界点が第一黒画素境界点に該当するか第一白画素境界点に該当するかを判定する(特定する)。図8は、第一境界点を説明するための図であって、図8(a)に第一境界点例を示し、図8(b)に第一境界点テーブル例を示す。図8(a)に示すように、第一境界点は、白画素から黒画素へと変化する第一黒画素境界点と、黒画素から白画素へと変化する第一白画素境界点とを有する。
S506では、第一導出部202は、S505の処理による判定結果である境界点の情報を第一境界点テーブルに格納する。図8(b)に示すように、第一境界点テーブルは、境界点の情報に関し、項目として、x座標801、y座標802、画素情報803、つぶれ・欠けフラグ804を有する。画素情報803は、所定の方向(縦軸方向又は横軸方向)において境界点の前後で白画素から黒画素に変わることを示す1(白⇒黒)、又は、黒画素から白画素に変わることを示す2(黒⇒白)を含む。境界点の画素情報803は、第一境界点が第一黒境界点であるか第一白境界点であるかを示す情報であるともいえる。つぶれ・欠けフラグ804は、「0(つぶれ・欠けではない)」、又は、「1(つぶれ・欠けである)」を含む。第一黒画素境界点に関する情報が格納される場合、例えば、図8(b)の1行目のように、x座標801に「xi」、y座標802に「yj1」、画素情報803に「1(白⇒黒)」、つぶれ・欠けフラグ804に「0(つぶれ・欠けではない)」が格納される。第一白画素境界点に関する情報が格納される場合、例えば、図8(b)の2行目のように、x座標801に「xi」、y座標802に「yj2」、画素情報803に「2(黒⇒白)」、つぶれ・欠けフラグ804に「1(つぶれ・欠けである)」が格納される。すなわち、S506では、第一導出部202は、境界点の情報を格納した第一境界点テーブルを生成するともいえる。つぶれ・欠けフラグ804は、S305におけるつぶれ・欠け判定で詳細を記述する。
S507では、第一導出部202は、横軸方向の走査が完了したか否かを判定する。横軸方向の走査が終わらず、横軸方向の走査が完了していないと判定結果を得た場合(S507のNO)、第一導出部202は、処理をS508に移行する。S508では、第一導出部202は、xiの更新を行う。すなわち、第一導出部202は、処理対象を未処理のxiに更新する。更新後、第一導出部202は、処理をS503に移行する。
一方、横軸方向の走査が終わり、横軸方向の走査が完了したとの判定結果を得た場合(S507のYES)、第一導出部202は、図5に示すフローを終了する。
なお、縦軸方向の走査は、図5に示すフローのxiをyjと置き換えることで、横軸方向の走査を行った場合と同様に行うことができる。
<第二境界点の導出>
図9〜図13を用いて、S304の第二境界点の導出処理の詳細について説明する。
図9〜図13を用いて、S304の第二境界点の導出処理の詳細について説明する。
図9は、オブジェクトであるフォントのラスターデータ例であって、図4に示すフォント「Z」のラスターデータ例を示す図である。図9に示すように、図4に示すベクターデータを変換した、フォント「Z」のラスターデータは、横方向においてN画素であり、縦方向においてM画素であるデータである。ラスターデータは、フォント「Z」に対応して描画される18画素の黒画素と、その周囲に描画される38画素の白画素とで構成されている。
図10は、S304の第二境界点の導出処理の流れを示すフローチャートである。なお、図10のフローチャートが示す処理は、ROM102に格納されたプログラムコードがRAM103に展開され、CPU101によって実行される。
S1001〜S1008では、例えば、図4に示すベクターデータを変換して得られたラスターデータに対してラスタスキャンを行う。図10では、y軸方向の走査より先に、x軸方向の走査を行う例を示しているが、x軸方向の走査より先に、y軸方向の走査を行ってもよい。x軸方向のラスタスキャンの回数Nは、ラスターデータにおける横方向(x軸方向)の画素の数と等しい。y軸方向のラスタスキャンの回数Mは、ラスターデータにおける縦方向(y軸方向)の画素の数と等しい。
S1001では、第二導出部204は、x軸方向のラスタスキャンの初期値xiを設定する(決定する)。
S1002では、第二導出部204は、y軸方向のラスタスキャンの初期値yiを設定する(決定する)。
S1003では、第二導出部204は、画素(xi,yj)の画素値が画素(xi,yj-1)の画素値と異なるか否かを判定する。y軸方向で隣り合う画素の画素値が異なっているとの判定結果を得た場合(S1003のYES)、第二導出部204は、処理をS1004に移行する。一方、y軸方向で隣り合う画素の画素値が同じであり、異なっていないとの判定結果を得た場合(S1003のNO)、第二導出部204は、S1004をスキップし、処理をS1005に移行する。
S1004では、第二導出部204は、座標(xi,(yj+yj-1)/2)を第二境界点として導出し、導出した第二境界点のx座標及びy座標を第二境界点テーブルに格納する。図11は、第二境界点を説明するための図であって、図11(a)に第二境界点例を示し、図11(b)に第二境界点テーブル例を示す。第二境界点は、図11(a)に示すように、縦方向における第二境界点の前後で白画素から黒画素へ変化する第二黒画素境界点と、縦方向における第二境界点の前後で黒画素から白画素へ変化する第二白画素境界点とを有する。第二境界点テーブルは、図11(b)に示すように、項目として、第二境界点のx座標1101、第二境界点のy座標1102に加え、第二境界点の画素情報1103も設定されている。第二境界点テーブルの画素情報1103には、縦方向における第二境界点の前後で白画素から黒画素に変化することを示す「1」(白⇒黒)、又は、縦方向における第二境界点の前後で黒画素から白画素に変化することを示す「2」(黒⇒白)が格納される。すなわち、S1004では、第二導出部204は、第二境界点の情報を格納した第二境界点テーブルを生成するともいえる。
S1005では、第二導出部204は、y軸方向のラスタスキャンが完了したか否かを判定する。完了していないとの判定結果を得た場合(S1005のNO)、第二導出部204は、処理をS1006に移行する。一方、y軸方向のラスタスキャンが完了したとの判定結果を得た場合(S1005のYES)、第二導出部204は、処理をS1007に移行する。
S1006では、第二導出部204は、yiの更新を行う。すなわち、第二導出部204は、処理対象を未処理のyiに更新する。更新後、第二導出部204は、処理をS1003に移行する。
S1007では、第二導出部204は、x軸方向のラスタスキャンが完了したか否かを判定する。x軸方向のラスタスキャンが完了していないとの判定結果を得た場合(S1007のNO)、第二導出部204は、処理をS1008に移行する。S1008では、第二導出部204は、xiの更新を行う。すなわち、第二導出部204は、処理対象を未処理のxiに更新する。更新後、第二導出部204は、処理をS1002に移行する。
一方、X軸方向のスキャンが終わり、x軸方向のラスタスキャンが完了したとの判定結果を得た場合(S1007のYES)、第二導出部204は、図10に示すフローを終了する。
<つぶれ・欠け判定>
図12〜図14を用いて、S305のつぶれ・欠け判定処理の詳細について説明する。図12は、つぶれ・欠け判定処理を説明するための図であって、図12(a)にベクターデータからラスターデータへの変換でつぶれが発生する様子を示し、図12(b)にベクターデータからラスターデータへの変換で欠けが発生する様子を示す。
図12〜図14を用いて、S305のつぶれ・欠け判定処理の詳細について説明する。図12は、つぶれ・欠け判定処理を説明するための図であって、図12(a)にベクターデータからラスターデータへの変換でつぶれが発生する様子を示し、図12(b)にベクターデータからラスターデータへの変換で欠けが発生する様子を示す。
判定部205は、図12(a)に示すように、ベクターデータのxi座標のy軸方向(図中下方向)において第一白画素境界点と第一黒画素境界点に挟まれた、白画素の領域に対応するラスターデータが黒画素である場合につぶれであると判定する。判定部205は、図12(b)に示すように、ベクターデータのxi座標のy軸方向(図中下方向)において第一黒画素境界点と第一白画素境界点に挟まれた、黒画素の領域に対応するラスターデータが白画素である場合に欠けであると判定する。すなわち、判定部205は、ベクターデータにおける白画素に対応するラスターデータが黒画素となる場合をつぶれであると判定し、ベクターデータにおける黒画素に対応するラスターデータが白画素となる場合を欠けであると判定する。
図13は、第一境界点と第二境界点の対応付けを説明するための図であって、図13(a)にベクターデータで第一境界点を導出した様子を示し、図13(b)に図13(a)のラスターデータで導出した第二境界点に第一境界点を対応付ける様子を示す。判定部205は、つぶれ・欠けの判定を行うために、S302においてベクターデータから導出した第一境界点と、S304においてラスターデータから導出した第二境界点との対応付けを行う。図13(a)、(b)に示すように、判定部205は、ベクターデータの第一境界点V1の閾値以内の距離d1にラスターデータの第二境界点V2があるか否かによって、第一境界点V1と第二境界点V2の対応付けを行う。
図14は、つぶれ・欠けの判定処理の流れを示すフローチャートである。
S1401では、判定部205は、x軸方向のラスタスキャンの初期値xiを設定する。
S1402では、判定部205は、S302で生成した第一境界点テーブルからx=xiのときの境界点v_f(xi,y)を導出する。判定部205は、第一境界点テーブルからx=xiのときの境界点v_f(xi,y)を全て取得するともいえる。
S1403では、判定部205は、y軸方向において、S1402で導出した境界点v_fの閾値内の距離に、ラスターデータにおける第二境界点r_sがあるか否かを判定する。境界点v_fの閾値内の距離は、例えば、境界点v_fを中心として前後1画素分の範囲内としてもよい。すなわち、判定部205は、境界点v_fのy座標の閾値内に該当する第二境界点r_sが第二境界点テーブルに格納されているか否かを判定する。格納されているとの判定結果を得た場合(S1403のYES)、判定部205は、処理をS1404に移行する。他方、格納されていないとの判定結果を得た場合(S1403のNO)、判定部205は、処理をS1405に移行する。
S1404では、判定部205は、第一境界点テーブルにおいて、判定処理対象の境界点v_fのつぶれ・欠けフラグ804の項目に対して「0(つぶれ・欠けではない)」を設定する。
S1405では、判定部205は、第一境界点テーブルにおいて、判定処理対象の境界点v_fのつぶれ・欠けフラグ804の項目に対して「1(つぶれ・欠けである)」を設定する。
S1406では、判定部205は、x=xiであるときの全ての境界点の座標v_fを走査したか否かを判定する。すなわち、判定部205は、S1402で導出した、x=xiであるときの全ての境界点の座標v_fに対してS1403の判定処理を行ったか否かを判定する。全ての境界点の座標v_fに対してS1403の判定処理を行っていないとの判定結果を得た場合(S1406のNO)、判定部205は、処理をS1407に移行する。他方、全ての境界点の座標v_fに対してS1403の判定処理を行ったとの判定結果を得た場合(S1406のYES)、判定部205は、処理をS1408に移行する。
S1407では、判定部205は、xiのときの境界点の座標v_fの更新を行う。すなわち、判定部205は、処理対象を未処理の境界点の座標v_fに更新する。更新後、判定部205は、処理をS1403に移行する。
S1408では、判定部205は、x軸方向の走査が完了したか否かを判定する。すなわち、判定部205は、第一境界点テーブルから全てのxiを導出したか否かを判定する。完了していないとの判定結果を得た場合(S1408のNO)、判定部205は、処理をS1409に移行する。
S1409では、判定部205は、xiの更新を行う。すなわち、判定部205は、処理対象を未処理のxiに更新する。更新後、判定部205は、処理をS1402に移行する。
一方、S1408において、完了したとの判定結果を得た場合(S1408のYES)、判定部205は、図14に示すフローを終了する。
続いて、判定部205は、第一境界点テーブルのつぶれ・欠けフラグ804に「1」が設定された各境界点がつぶれであるのか欠けであるかを判定する。つぶれ・欠けフラグが「1」に設定される境界点が第一白画素境界点であり、所定の方向において第一白画素境界点に連続する(隣接する)次の第一境界点が第一黒画素境界点である場合、判定部205は、つぶれがあると判定する。つぶれ・欠けフラグが「1」に設定される境界点が第一黒画素境界点であり、所定の方向において第一黒画素境界点に連続する(隣接する)次の第一境界点が第一白画素境界点である場合、判定部205は、欠けがあると判定する。なお、所定の方向は、縦軸方向又は横軸方向である。
<ラスタライズパラメータの補正>
S306の補正処理の詳細について説明する。補正部206は、まず、判定部205によるつぶれ又は欠けの判定結果から、入力されたベクターデータに対してつぶれと欠けとのどちらが多く発生するかを判定する。そして、補正部206は、判定結果に応じて、つぶれ又は欠けが少なくなるように、ラスタライズパラメータを補正する。
S306の補正処理の詳細について説明する。補正部206は、まず、判定部205によるつぶれ又は欠けの判定結果から、入力されたベクターデータに対してつぶれと欠けとのどちらが多く発生するかを判定する。そして、補正部206は、判定結果に応じて、つぶれ又は欠けが少なくなるように、ラスタライズパラメータを補正する。
具体的には、補正部206は、つぶれの発生数と欠けの発生数とをそれぞれカウントし、これらカウント値の差が閾値(例えば、0)より大きく、つぶれの発生数のカウント値と欠けの発生件数のカウント値とのどちらが多いのかを導出する。(つぶれの発生数)―(欠けの発生数)が閾値よりも大きいとの導出結果を得た場合、補正部206は、S303のラスタライズ処理において線が細くなるようにラスタライズパラメータを補正する。ラスタライズパラメータは、例えばS303のラスタライズ処理において線幅が最低でも1画素となるように調整される。(欠けの発生数)―(つぶれの発生数)が閾値よりも大きいとの判定結果を得た場合、補正部206は、S303のラスタライズ処理において線が太くなるようにラスタライズパラメータを補正する。ラスタライズパラメータは、例えばS303のラスタライズ処理において線幅が少なくとも1画素分太くなるように調整される。なお、つぶれの発生数のカウント値と欠けの発生件数のカウント値との差が閾値以下である場合、補正部206は、S303のラスタライズ処理で用いられるラスタライズパラメータを補正しない。
このラスタライズパラメータの補正では、ページ記述言語であるPost ScriptやPDFにおいて使用されるベクターデータの線幅補正の属性、Stroke Adjustmentを使用してもよい。Stroke Adjustmentは、画像処理装置1が有する機能であって、線幅を例えば1画素など細く調整する機能である。つぶれの発生数が多くなった場合、細線に対してStroke Adjustmentをオンにすることで細い細線を実現することができる。一方、欠けの発生数が多くなった場合、Stroke Adjustmentをオフにすることで補正のない忠実な細線のラスタライズが可能になる。
以上説明したように、ベクターデータから導出した第一境界点とラスターデータから導出した第二境界点とを対応付ける。そして、所定の方向において、第一境界点の前後の画素値の変化と、第二境界点の前後の画素値の変化とを比較することで、オブジェクトのベクターデータを変換して得られるラスターデータにおいて、つぶれ又は欠けがあるか否かを高精度に判定できる。さらに、判定結果に応じてラスタライズパラメータを補正することにより、つぶれ及び欠けの発生を抑制することができる。
[実施形態2]
実施形態1では、S305の補正処理において、ラスタライズパラメータを補正した。本実施形態では、S305の補正処理において、つぶれ又は欠けを減少させるように、ベクターデータを基に生成されたラスターデータの画素値を補正する。
実施形態1では、S305の補正処理において、ラスタライズパラメータを補正した。本実施形態では、S305の補正処理において、つぶれ又は欠けを減少させるように、ベクターデータを基に生成されたラスターデータの画素値を補正する。
図15は、ラスターデータにおけるつぶれを減少させるためのデータ補正の様子を示す図であって、図15(a)にベクターデータ例を示し、図15(b)に補正座標を特定した際のラスターデータを示す。
図15(a)に示すように、ベクターデータでは、2つの線分が平行に描画されている。x=xiにおいて、一方の線分に対して第一白画素境界点(xi、yT1)が設定され、他方の線分に対して第一黒画素境界点(xi、yT2)が設定されている。なお、第一白画素境界点(xi、yT1)と第一黒画素境界点(xi、yT2)との重心が詳細につき後述する補正座標(xi、(yT1+yT2)/2)となる。
図15(b)に示すように、図15(a)に示すベクターデータをラスタライズして得たラスターデータでは、縦3画素×横5画素で構成される1つの線分が描画されている。x=xiにおいて、座標(xi、(yT1+yT2)/2)に対応する画素値が黒画素に変わっていることを示している。また。補正座標の閾値の距離以内に、縦方向(y軸方向)で、黒画素が3画素連続していることを示している。すなわち、つぶれがある様子を示している。
本実施形態の補正処理について、図16を用いて説明する。図16は、補正処理の流れを示すフローチャートである。
S1601では、補正部206は、第一境界点テーブルのうち、つぶれ・欠けフラグの項目804が「1」となる境界点を走査するために初期値xiを設定する。
S1602では、補正部206は、つぶれ・欠けフラグが「1」となる境界点のうち、第一白画素境界点の後に第一黒画素境界点が連続するものが存在するか否かを判定する。第一白画素境界点の後に第一黒画素境界点が連続するものが存在するとは、境界点が第一白画素境界点であり、第一白画素境界点に連続する(隣接する)第一黒画素境界点が存在することである。例えば、図15(a)に示すように、座標xiにおいて、第一白画素境界点(xi,yT1)の後に第一黒画素境界点(xi,yT2)が連続することである。第一白画素境界点の後に第一黒画素境界点が連続するものが存在するとの判定結果を得た場合(S1602のYES)、補正部206は、処理をS1603に移行する。第一白画素境界点の後に第一黒画素境界点が連続するものが存在しないとの判定結果を得た場合(S1602のNO)、補正部206は、S1603〜S1606をスキップし、処理をS1607に移行する。
S1603では、補正部206は、S1602の判定処理で用いた第一白画素境界点と第一黒画素境界点との重心(中間点ともいう)を導出し、導出した重心を補正座標として設定する。
S1604では、補正部206は、S1603で導出した補正座標から閾値の距離内にラスターデータの黒画素が3画素以上連続して存在するか否かを判定する。具体的には、補正部206は、x軸方向でS1602の判定処理で用いた第一白画素境界点と第一黒画素境界点の間において黒画素が3画素以上連続して存在するとの判定結果を得た場合(S1604のYES)、処理をS1605に移行する。他方、x軸方向でS1602の判定処理で用いた第一白画素境界点と第一黒画素境界点の間において黒画素が3画素以上連続して存在しないとの判定結果を得た場合(S1604のNO)、補正部206は、処理をS1607に移行する。
S1605では、補正部206は、3画素以上の連続した黒画素の重心を導出する。補正部206は、連続した3画素以上の黒画素のうち、重心の座標に近い黒画素を変換座標として設定する。
S1606では、補正部206は、ラスターデータの変換座標の黒画素を白画素に変換する。
S1607では、補正部206は、X軸方向における走査が完了したか否かを判定する。すなわち、補正部206は、第一境界点テーブルにおいて、つぶれ・欠け判定が「1」であるv_fの走査を完了しているか否かを判定する。完了していないとの判定結果を得た場合(S1607のNO)、補正部206は、処理をS1608に移行する。完了しているとの判定結果を得た場合(S1607のYES)、補正部206は、図16に示すフローを終了する。
S1608では、補正部206は、第一境界点テーブルにおいて、つぶれ・欠け判定が「1」のv_fの更新を行う。すなわち、補正部206は、処理対象を未処理のv_fに更新する。更新後、補正部206は、処理をS1602に移行する。
以上説明したように、本実施形態によれば、対象箇所において黒画素が3画素以上連続する場合に、対象箇所のラスターデータの画素値を補正することができる。これにより、ラスターデータにおいて生じたつぶれ又は欠けを減少させることができる。
[実施形態3]
実施形態1及び2では、ベクターデータで構成された文字(フォントデータ)に対して判定処理と補正処理とを行った。本実施形態では、ベクターデータで構成された直線に対して判定処理と補正処理とを行う。本実施形態で実行するフローは、実施形態1の図3と同じである。ただし、S302の第一境界点の導出処理と、S306の補正処理とが実施形態1と異なる。
実施形態1及び2では、ベクターデータで構成された文字(フォントデータ)に対して判定処理と補正処理とを行った。本実施形態では、ベクターデータで構成された直線に対して判定処理と補正処理とを行う。本実施形態で実行するフローは、実施形態1の図3と同じである。ただし、S302の第一境界点の導出処理と、S306の補正処理とが実施形態1と異なる。
<第一境界点の導出処理>
本実施形態に係る第一境界点の導出処理のフローは、実施形態1における図3のフローと同じである。ただし、本実施形態では、S501における輪郭線に関する情報のデータ形式、S503におけるx=xiと輪郭関数の交点の導出処理、S506における第一境界点テーブルに格納する第一境界点に関する情報は、実施形態1と異なる。以下、実施形態1との相違点についてそれぞれ説明する。
本実施形態に係る第一境界点の導出処理のフローは、実施形態1における図3のフローと同じである。ただし、本実施形態では、S501における輪郭線に関する情報のデータ形式、S503におけるx=xiと輪郭関数の交点の導出処理、S506における第一境界点テーブルに格納する第一境界点に関する情報は、実施形態1と異なる。以下、実施形態1との相違点についてそれぞれ説明する。
図17は、直線のベクターデータ例を示す図である。直線のベクターデータは、始点P0、終点P1のほかに太さtの情報を有する。そのため、輪郭関数テーブルには、始点、終点、取り得る値の範囲、関数の種類(直線、2次ベジエ曲線)の他、太さの情報が格納される。
図18は、オブジェクトが2つの直線であるベクターデータ(ベクター形式の直線データ)において第一境界点の導出処理を説明するための図であって、図18(a)にS503の交点を導出する様子を示し、図18(b)に図18(a)の拡大を示す。
図18(a)に示すように、2つの線分L21、L22は所定の太さを有する。x=xiにおいて第一境界点が三角で示されている。y=yiにおいて第一境界点が丸で示されている。x軸方向の走査において直線のベクターデータにおける輪郭との交点を求めるには、x=xiと直線の関数の交点を求めるのではなく、太さ情報から輪郭との交点を導出する必要がある。その様子を図18(b)に示す。
まず、第一導出部202は、始点P0と終点P1から、y軸方向に対する傾きθを導出する。すなわち、第一導出部202は、始点P0と終点P1とがなす線分と、y軸方向に沿って延びる補助線との傾きθを導出する。その後、x=xiと始点P0及び終点P1を通る直線との交点Q0を求める。求めた交点Q0の座標と太さt、角度θから、直線の輪郭とx=xiとの交点Q1、Q2を求めることができる。
S506においては、実施形態1と同様に境界点の情報を第一境界点テーブルに格納する。ただし、本実施形態では、実施形態1と異なり、このとき境界点の座標値と走査を行った軸方向、走査中のx又はyの値のほか、境界点を含む輪郭関数の情報(始点、終点、太さ)を格納する。第一境界点テーブルに格納された境界点の情報は、詳細につき後述するデータ補正で用いられる。
<補正処理>
図19は、補正処理の流れを示すフローチャートである。本実施形態における補正処理はラスターデータを補正するが、図16と異なり、つぶれが存在するとの判定結果を得た場合、S1905において輪郭関数を取りだし、S1905に続くS1906において太さを定数倍することにより細くする処理を実行する。S1901はS1601と、S1902はS1602と、S1904はS1604と、S1907はS1607と、S1908はS1608と同じであり、その説明を省略する。
図19は、補正処理の流れを示すフローチャートである。本実施形態における補正処理はラスターデータを補正するが、図16と異なり、つぶれが存在するとの判定結果を得た場合、S1905において輪郭関数を取りだし、S1905に続くS1906において太さを定数倍することにより細くする処理を実行する。S1901はS1601と、S1902はS1602と、S1904はS1604と、S1907はS1607と、S1908はS1608と同じであり、その説明を省略する。
S1903では、補正部206は、連続した座標の重心を補正座標として設定する。
S1905では、補正部206は、境界点を導出した輪郭関数を第一境界点テーブルから取り出す。
S1906では、補正部206は、2つの輪郭関数の大きさを定数倍(1より小さい値)する。例えば、第一境界点テーブルに格納される、太さtを小さくする。この細らせ処理を実行した後、補正部206は、処理をS1907に移行する。
以上説明した通り、本実施形態によれば、直線を含むベクターデータに対して、判定処理と補正処理とを行うことができる。
[実施形態4]
本実施形態では、画像処理装置1によるデジタル処理だけではなく、プリンタ111によるアナログ処理も考慮する。アナログ処理では、ラスターデータ(ラスター画像)に応じてインクやトナーが付加された印刷が行われ印刷物(出力物)が出力される。そのため、ラスター画像にボケが生じる。本実施形態では、ラスターデータに対してフィルタ処理を行うことでボケ画像データを生成する。なお、上述の第1実施形態と同様の構成及び処理については、その説明を省略し、ここでは、主に異なる部分に着目して説明する。
本実施形態では、画像処理装置1によるデジタル処理だけではなく、プリンタ111によるアナログ処理も考慮する。アナログ処理では、ラスターデータ(ラスター画像)に応じてインクやトナーが付加された印刷が行われ印刷物(出力物)が出力される。そのため、ラスター画像にボケが生じる。本実施形態では、ラスターデータに対してフィルタ処理を行うことでボケ画像データを生成する。なお、上述の第1実施形態と同様の構成及び処理については、その説明を省略し、ここでは、主に異なる部分に着目して説明する。
本実施形態における基本的な処理の流れは、上述の実施形態1と同様である。本実施形態では、S303で取得したラスターデータに対してアナログ処理(ボケ画像生成処理)を行う。図20は、本実施形態における画像処理装置の機能構成例を示すブロック図である。本実施形態に係る画像処理装置1は、ベクターデータ取得部201、第一導出部202、ラスタライズ部203、第二導出部204、判定部205、補正部206、ラスタライズデータ出力部207に加え、ボケ画像生成部208を有する。本実施形態の画像処理装置1は、ボケ画像生成部208を有しており、この点が実施形態1の画像処理装置と相違する。
ボケ画像生成部208は、ラスターデータを拡大し多値化した後にフィルタ処理を行ってボケ画像を生成する。そして、ボケ画像生成部208は、生成したボケ画像を2値化して2値のラスターデータを生成する。ボケ画像生成部208は、ラスターデータ(ラスター画像)に応じてインクやトナーが付加された印刷で印刷物に形成されるボケ画像を加味した2値のラスターデータを生成するともいえる。
図21を用いて、ボケ画像生成部208による処理の流れについて説明する。図21は、本実施形態に係るボケ画像生成処理の流れを示すフローチャートである。
S2101では、ボケ画像生成部208は、ラスターデータを拡大する。拡大倍率は、例えば2〜10倍程度とする。拡大後の解像度は最大で12000dpiなどの大きなサイズとする。拡大手法にはバイリニア法を用いてもよい。
S2102では、ボケ画像生成部208は、S2101の処理で得られた拡大後のラスターデータ(画像)を多値化して多値画像とした後、ガウシアンフィルタを用いたフィルタ処理などを行い、ボケ画像を生成する。ガウシアンフィルタは、例えば、拡大前のラスターデータを覆うことができるサイズとしてもよい。なお、ボケ画像は、フィルタ処理後のデータともいえる。
S2103では、ボケ画像生成部208は、S2102の処理で生成されたボケ画像を2値化して、2値のラスターデータとする。2値化には閾値を用いる。例えば、閾値を128とし、0〜127であれば0を出力し、128〜255であれば1を出力してもよい。
なお、S2103の処理で得られた2値のラスターデータは、第二境界点の導出部2004によって第二境界点の導出に用いられる。
以上説明したように、本実施形態によれば、ラスターデータ(ラスター画像)に応じてインクやトナーが付加された印刷で印刷物に形成されるボケ画像を加味した2値のラスターデータを生成することができる。これにより。つぶれや欠けを減少させた印刷物(出力物)を出力することができる。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、上述した各処理部のうち、第一導出部202、第二導出部204、判定部205、補正部206、ボケ画像生成部208等については、その代わりとして、機械学習された学習済みモデルを代わりに用いて処理しても良い。その場合には、例えば、その処理部への入力データと出力データとの組合せを学習データとして複数個準備し、それらから機械学習によって知識を獲得し、獲得した知識に基づいて入力データに対する出力データを結果として出力する学習済みモデルを生成する。学習済みモデルは、例えばニューラルネットワークモデルで構成可能である。そして、その学習済みモデルは、前記処理部と同等の処理をするためのプログラムとして、CPUあるいはGPUなどと協働で動作することにより、前記処理部の処理を行う。なお、上記学習済みモデルは、必要に応じて一定の処理後に更新しても良い。
1 画像処理装置
202 第一導出部
204 第二導出部
205 判定部
202 第一導出部
204 第二導出部
205 判定部
Claims (16)
- オブジェクトを含むベクターデータを走査して、所定の方向において画素値が変化する第一境界点を導出する第一導出手段と、
前記ベクターデータを変換して得られるラスターデータを走査して、所定の方向において画素値が変化する第二境界点を導出する第二導出手段と、
前記第一境界点と前記第二境界点とを基に、前記ラスターデータにおいて前記オブジェクトのつぶれ又は欠けが生じているか否かを判定する判定手段と、
を有することを特徴とする画像処理装置。 - 前記つぶれ又は欠けは、前記ベクターデータをラスタライズすることによって生じた、つぶれ又は欠けであることを特徴とする請求項1に記載の画像処理装置。
- 前記判定手段は、前記ベクターデータと前記ラスターデータとで対応する位置の画素値が異なる場合に、前記ラスターデータにおいてつぶれ又は欠けが生じていると判定することを特徴とする請求項1又は請求項2に記載の画像処理装置。
- 前記第一導出手段は、横軸方向又は縦軸方向にて画素値が変化する前記第一境界点を導出し、
前記第二導出手段は、横軸方向又は縦軸方向にて画素値が変化する前記第二境界点を導出することを特徴とする請求項1から3の何れか一項に記載の画像処理装置。 - 前記ベクターデータは、2値のデータであり、
前記第一境界点は、白画素から黒画素に変化する第一黒画素境界点と、黒画素から白画素に変化する第一白画素境界点とを含み、
前記第二境界点は、白画素から黒画素に変化する第二黒画素境界点と、黒画素から白画素に変化する第二白画素境界点とを含むことを特徴とする請求項1から4の何れか一項に記載の画像処理装置。 - 前記判定手段は、前記第一白画素境界点と前記第一黒画素境界点との間の領域に対応する前記ラスターデータが黒画素である場合につぶれがあると判定することを特徴とする請求項5に記載の画像処理装置。
- 前記判定手段は、前記第一黒画素境界点と前記第一白画素境界点との間の領域に対応する前記ラスターデータが白画素である場合に欠けがあると判定することを特徴とする請求項5又は6に記載の画像処理装置。
- 前記判定手段は、
前記第一境界点の所定の距離の範囲内に、対応する前記第二境界点がない場合に、対応する位置の前記ラスターデータにつぶれ又は欠けがあると判定し、
前記判定された第一境界点として、前記第一白画素境界点の後に第一黒画素境界点が連続する場合につぶれがあると判定し、
前記判定された第一境界点として、前記第一黒画素境界点の後に第一白画素境界点が連続する場合に欠けがあると判定する
ことを特徴とする請求項5から7の何れか一項に記載の画像処理装置。 - 前記判定手段による判定結果に基づいて、前記ベクターデータをラスタライズするためのパラメータ又は前記ラスターデータに対して補正を行う第一補正手段をさらに有することを特徴とする請求項1から8の何れか一項に記載の画像処理装置。
- 前記第一補正手段は、前記判定手段により判定されるつぶれの発生を抑制するように、前記パラメータに対して補正を行うことを特徴とする請求項9に記載の画像処理装置。
- 前記第一補正手段は、前記判定手段により判定されるつぶれが減少するように、前記ラスターデータに対して補正を行うことを特徴とする請求項9に記載の画像処理装置。
- 前記第一補正手段は、前記判定手段により判定される欠けの発生を抑制するように、前記パラメータに対して補正を行うことを特徴とする請求項9に記載の画像処理装置。
- 前記第一補正手段は、前記判定手段により判定される欠けが減少するように、前記ラスターデータに対して補正を行うことを特徴とする請求項9に記載の画像処理装置。
- 前記ラスターデータの解像度を拡大する拡大手段と、
前記拡大されたラスターデータを多値化する多値化手段と、
前記多値化されたラスターデータをフィルタ処理しボケ画像を生成するフィルタ手段と、
前記フィルタ処理されたラスターデータを2値化する2値化手段と、
をさらに有し、
前記第二導出手段は、前記2値化されたラスターデータを走査して、前記第二境界点を導出することを特徴とする請求項1から13の何れか一項に記載の画像処理装置。 - コンピュータを請求項1から14のいずれか一項に記載の画像処理装置の各手段として機能させるためのプログラム。
- オブジェクトを含むベクターデータを走査して、所定の方向において画素値が変化する第一境界点を導出する第一導出ステップと、
前記ベクターデータを変換して得られるラスターデータを走査して、所定の方向において画素値が変化する第二境界点を導出する第二導出ステップと、
前記第一境界点と前記第二境界点とを基に、前記ラスターデータにおいて前記オブジェクトのつぶれ又は欠けが生じているか否かを判定する判定ステップと、
を有することを特徴とする画像処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020054808A JP2021158441A (ja) | 2020-03-25 | 2020-03-25 | 画像処理装置、画像処理方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020054808A JP2021158441A (ja) | 2020-03-25 | 2020-03-25 | 画像処理装置、画像処理方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021158441A true JP2021158441A (ja) | 2021-10-07 |
Family
ID=77918880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020054808A Pending JP2021158441A (ja) | 2020-03-25 | 2020-03-25 | 画像処理装置、画像処理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021158441A (ja) |
-
2020
- 2020-03-25 JP JP2020054808A patent/JP2021158441A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8467089B2 (en) | Systems and methods for line width control and pixel retagging | |
JP5137759B2 (ja) | 画像処理装置 | |
JP2002008030A (ja) | アンチエイリアス画像の処理方法 | |
JP2013061660A (ja) | 低解像度ディスプレイのためのストロークベースのフォント文字を生成する方法 | |
JP5863001B2 (ja) | 画像処理装置、画像形成装置およびプログラム | |
US8229214B2 (en) | Image processing apparatus and image processing method | |
JP2006180376A (ja) | 画像処理装置 | |
JP2006345314A (ja) | 画像処理装置および画像処理方法 | |
JP5743187B2 (ja) | 像域分離方法、それを実行させるためのプログラム及び像域分離装置 | |
JP2021158441A (ja) | 画像処理装置、画像処理方法及びプログラム | |
US7873228B2 (en) | System and method for creating synthetic ligatures as quality prototypes for sparse multi-character clusters | |
JP4208520B2 (ja) | 画像処理装置および画像処理方法、プログラムおよび記憶媒体 | |
US11100355B1 (en) | Document image content protection in the context of noise reduction | |
JP6541320B2 (ja) | 画像処理装置、画像処理方法、コンピュータプログラム | |
JP2006237858A (ja) | 画像処理装置、画像処理方法、その方法をコンピュータに実行させるプログラム、および記録媒体 | |
JP2005182660A (ja) | 文字・図形の認識方法 | |
JP2013149210A (ja) | 画像処理プログラム、画像処理方法、及び画像処理装置 | |
JP4826915B2 (ja) | 画像処理装置、画像形成装置、及びプログラム | |
JP2019121870A (ja) | 画像処理装置とその制御方法、及びプログラム | |
US11721119B2 (en) | Finding natural images in document pages | |
JP2009141525A (ja) | 画像処理装置及び画像処理方法 | |
JP5145862B2 (ja) | 画像処理プログラムおよび画像処理装置 | |
JP6459815B2 (ja) | 画像処理装置及びプログラム | |
JP6922365B2 (ja) | 文書処理装置及びプログラム | |
JP2006277150A (ja) | 画像分離装置、画像分離方法およびプログラム |