(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024090159
(43)【公開日】2024-07-04
(54)【発明の名称】プリンタおよびプログラム
(51)【国際特許分類】
H04N 1/405 20060101AFI20240627BHJP
B41J 21/00 20060101ALI20240627BHJP
G06F 3/12 20060101ALI20240627BHJP
【FI】
H04N1/405
B41J21/00 Z
G06F3/12 345
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022205864
(22)【出願日】2022-12-22
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000291
【氏名又は名称】弁理士法人コスモス国際特許商標事務所
(72)【発明者】
【氏名】藤井 政圭
【テーマコード(参考)】
2C187
5C077
【Fターム(参考)】
2C187AC06
2C187AC08
2C187AE01
2C187AE07
2C187BF08
2C187DB41
5C077LL19
5C077MP07
5C077PP28
5C077RR02
5C077RR07
5C077TT02
(57)【要約】
【課題】多値で構成された画像を二階調に変換して印刷する際の、文字の画像品質を向上させる技術を提供すること。
【解決手段】プリンタ1は、印刷デバイス15とコントローラ10とを備える。プリンタ1のコントローラ10は、画像データを取得し、取得した画像データから文字を示す文字データを検出する。さらに、コントローラ10は、検出された文字データに示される文字の輪郭に沿って破線を追加する。コントローラ10は、破線が追加された文字を含む画像に基づいて、多値で構成される多値画像を生成し、生成された多値画像を二階調に変換して二値化画像を生成する。さらに、コントローラ10は、生成した二値化画像に基づく印刷を印刷デバイス15に行わせる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
印刷デバイスとコントローラとを備えるプリンタであって、
前記コントローラは、
画像データを取得する取得処理と、
前記取得処理にて取得された前記画像データから、文字を示す文字データを検出する文字検出処理と、
前記文字検出処理にて検出された前記文字データに示される文字の輪郭に沿って破線を追加する破線追加処理と、
前記破線追加処理にて前記破線が追加された文字を含む画像に基づいて、多値で構成される多値画像を生成する多値画像生成処理と、
前記多値画像生成処理にて生成された前記多値画像を二階調に変換し、二値化画像を生成する二値画像生成処理と、
前記二値画像生成処理にて生成された前記二値化画像に基づく印刷を、前記印刷デバイスに行わせる印刷処理と、
を実行する、
ように構成されるプリンタ。
【請求項2】
請求項1に記載されるプリンタにおいて、
前記コントローラは、
前記文字検出処理にて検出された前記文字データに示される文字の濃度を取得する濃度取得処理を実行し、
前記破線は、複数の線と、各線の間にある非線部と、を有し、
前記破線のうち、前記線の長さ方向における前記線の割合は、前記濃度取得処理にて取得された前記濃度が低いほど低くなる、
ように構成されるプリンタ。
【請求項3】
請求項1に記載されるプリンタにおいて、
前記コントローラは、
前記文字検出処理にて検出された前記文字データに示される文字の濃度を取得する濃度取得処理を実行し、
前記濃度取得処理にて取得された前記濃度が、第1閾値以下の場合は、前記破線追加処理を実行し、
前記濃度取得処理にて取得された前記濃度が、前記第1閾値よりも高い場合は、前記破線追加処理を実行しない、
ように構成されるプリンタ。
【請求項4】
請求項3に記載されるプリンタにおいて、
前記コントローラと異なるハードウェアを備え、
前記コントローラは、
前記濃度取得処理にて取得された前記濃度が、前記第1閾値よりも高い場合は、
前記文字検出処理にて検出された前記文字データに示される文字であって破線が追加されていない前記文字を含む画像に基づいて、多値で構成される多値画像を生成する第2多値画像生成処理と、
前記第2多値画像生成処理にて生成された前記多値画像を前記ハードウェアによって二階調に変換し、前記文字データに示される文字の輪郭を前記ハードウェアによって強調させた二値化画像を生成する第2二値画像生成処理と、
を実行する、
ように構成されるプリンタ。
【請求項5】
請求項3に記載されるプリンタにおいて、
前記コントローラは、
前記濃度取得処理にて取得された前記濃度が、前記第1閾値以下かつ前記第1閾値よりも低い第2閾値以上の場合は、前記破線追加処理を実行し、
前記濃度取得処理にて取得された前記濃度が、前記第2閾値よりも低い場合は、前記破線追加処理を実行しない、
ように構成されるプリンタ。
【請求項6】
請求項1に記載されるプリンタにおいて、
前記コントローラは、
前記文字検出処理にて検出された前記文字データに示される文字の濃度を取得する濃度取得処理を実行し、
前記濃度取得処理にて取得された前記濃度が、第2閾値以上の場合は、前記破線追加処理を実行し、
前記濃度取得処理にて取得された前記濃度が、前記第2閾値よりも低い場合は、前記破線追加処理を実行しない、
ように構成されるプリンタ。
【請求項7】
請求項1に記載されるプリンタにおいて、
前記コントローラは、
前記文字検出処理では、前記取得処理にて取得された前記画像データから、前記文字データとしてテキストオブジェクトを検出し、
前記破線追加処理では、前記文字検出処理にて検出された前記テキストオブジェクトに示される各文字の輪郭形状を示すデータを取得し、取得された前記輪郭形状に沿って破線を追加した中間データを生成し、
前記多値画像生成処理では、前記破線追加処理にて生成された前記中間データに基づいて、前記多値画像を生成する、
ように構成されるプリンタ。
【請求項8】
請求項1に記載されるプリンタにおいて、
前記コントローラは、
前記破線追加処理では、幅が1ドットの前記破線を追加する、
ように構成されるプリンタ。
【請求項9】
請求項1に記載されるプリンタにおいて、
前記コントローラは、
前記破線追加処理では、濃度が100%の前記破線を追加する、
ように構成されるプリンタ。
【請求項10】
情報処理装置のコンピュータによって実行可能であり、前記情報処理装置と接続するプリンタに対応するプログラムであって、
前記コンピュータに、
画像データを取得する取得処理と、
前記取得処理にて取得された前記画像データから、文字を示す文字データを検出する文字検出処理と、
前記文字検出処理にて検出された前記文字データに示される文字の輪郭に沿って破線を追加する破線追加処理と、
前記破線追加処理にて前記破線が追加された文字を含む画像に基づいて、前記プリンタに印刷させる印刷コマンドを出力する出力処理と、
を実行させる、
ように構成されるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示される技術分野は、多値で構成された画像を二階調に変換して印刷することが可能なプリンタおよびプログラムに関する。
【背景技術】
【0002】
従来、プリンタにおいて、多値で構成された画像をディザ処理や誤差拡散処理を用いて二階調に変換し、二値化画像として濃淡を表現する技術が知られている。この二値化画像では、濃度が下がるほどドットが無い部分の比率が大きくなる。そのため、二値化画像に基づく印字では、ドットが大きく欠けている部分がエッジに露出することがあり、いわゆるジャギーが発生しやすい。そこで、特許文献1に開示されているように、エッジを滑らかに見せるための方法が提案されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の技術のように、二値化画像に含まれる文字に対してエッジを滑らかに見せるためのエッジ強調処理を施した場合、ジャギーは発生し難くなるものの、文字が縁どられたように見えてしまうことがある、といった別の課題が生じてしまう。
【課題を解決するための手段】
【0005】
この課題の解決を目的としてなされたプリンタは、印刷デバイスとコントローラとを備えるプリンタであって、前記コントローラは、画像データを取得する取得処理と、前記取得処理にて取得された前記画像データから、文字を示す文字データを検出する文字検出処理と、前記文字検出処理にて検出された前記文字データに示される文字の輪郭に沿って破線を追加する破線追加処理と、前記破線追加処理にて前記破線が追加された文字を含む画像に基づいて、多値で構成される多値画像を生成する多値画像生成処理と、前記多値画像生成処理にて生成された前記多値画像を二階調に変換し、二値化画像を生成する二値画像生成処理と、前記二値画像生成処理にて生成された前記二値化画像に基づく印刷を、前記印刷デバイスに行わせる印刷処理と、を実行する、ように構成される。
【0006】
本明細書に開示されるプリンタは、多値画像を生成する前に、印刷対象の画像に含まれる文字の輪郭に沿って破線を追加する。さらにプリンタは、その破線が追加された文字を含む画像に基づいて多値画像を生成し、その多値画像を二階調に変換して二値化画像を生成する。これにより、追加された破線により、二値化された文字のエッジに露出する大きな欠けの一部が塞がれることが期待できる。従って、エッジに露出する欠けが小さくなって目立ち難くなるので、ジャギーの発生が抑制されるとともに、文字が縁どられたように見える可能性は小さい。
【0007】
上記プリンタを含む印刷システム、プリンタの機能を実現するための制御方法、コンピュータプログラム、当該プログラムを格納するコンピュータにて読取可能な記憶媒体も、新規で有用である。
【発明の効果】
【0008】
本明細書に開示される技術によれば、多値で構成された画像を二階調に変換して印刷する際の、文字の画像品質を向上させる技術が実現される。
【図面の簡単な説明】
【0009】
【
図1】プリンタの概略構成を示すブロック図である。
【
図2】印刷ジョブ処理の手順を示すフローチャートである。
【
図3】文字中間データ生成処理の手順を示すフローチャートである。
【
図4】PDF形式のテキスト描画コマンドの例を示す説明図である。
【
図5】文字領域と破線領域との関係の例を示す説明図である。
【
図6】破線が追加された中間データの一部の例を示す説明図である。
【
図7】二値化処理の手順を示すフローチャートである。
【
図8】破線が追加された二値化データの一部の例を示す説明図である。
【
図9】プリンタに接続されるPCの概略構成を示すブロック図である。
【
図10】PCにて実行される印刷ジョブ処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、実施の形態にかかるプリンタについて、添付図面を参照しつつ詳細に説明する。本実施の形態は、多値で構成された画像を二階調に変換して印刷することが可能なプリンタを開示するものである。
【0011】
プリンタ1は、
図1に示すように、CPU11と、メモリ12と、を含むコントローラ10を備えている。また、プリンタ1は、ユーザインタフェース(以下、「ユーザIF」とする)13と、通信インタフェース(以下、「通信IF」とする)14と、印刷デバイス15と、二値化ハードウェア16と、を備えている。二値化ハードウェア16は、ハードウェアの一例である。
【0012】
ユーザIF13と通信IF14と印刷デバイス15と二値化ハードウェア16とは、いずれも、コントローラ10に電気的に接続されている。なお、
図1中のコントローラ10は、PC1の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にPC1に存在する単一のハードウェアを表すとは限らない。
【0013】
CPU11は、メモリ12から読み出したプログラムに従って、または、ユーザの操作に基づいて、各種の処理を実行する。メモリ12には、各種のプログラムや各種のデータが記憶されている。メモリ12には、
図1に示すように、例えば、印刷制御プログラム21と、二値化プログラム22と、濃度閾値24と、が記憶されている。メモリ12に記憶されるプログラムやデータについての詳細は、後述する。メモリ12は、各種の処理が実行される際の作業領域としても利用される。メモリ12は、CPU11が備えるバッファを含んでも良い。
【0014】
なお、メモリ12の一例は、プリンタ1に内蔵されるROM、RAM、HDD等に限らず、CPU11が読み取り可能かつ書き込み可能なストレージ媒体であっても良い。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
【0015】
ユーザIF13は、ユーザに情報を報知するための画面を表示するハードウェアと、ユーザによる操作を受け付けるハードウェアと、を含む。ユーザIF13は、タッチパネルを含んでも良いし、表示部と操作ボタンとの組み合わせであっても良い。
【0016】
通信IF14は、外部装置と通信を行うためのハードウェアを含む。通信IF14の通信規格は、イーサネット(登録商標)、Wi-Fi(登録商標)、USBなどである。プリンタ1は、複数の通信規格に対応する複数の通信IF14を備えていても良い。
【0017】
印刷デバイス15は、例えば、電子写真方式、インクジェット方式、によって、画像データに基づく印刷を実行可能なデバイスを含む。印刷デバイス15は、複数色の着色材を備えてカラー印刷を実行可能なデバイスであっても良いし、1色のみの着色材を備え単色印刷を行うデバイスであっても良い。以下では、カラー印刷可能な印刷デバイス15を例に説明する。
【0018】
二値化ハードウェア16は、多値画像を二値画像に変換する機能を有するハードウェアである。二値化ハードウェア16は、ハードウェアの一例である。二値化ハードウェア16の詳細については、後述する。
【0019】
次に、実施の形態のプリンタ1の動作について、フローチャートを参照して説明する。なお、以下の処理は、基本的に、プログラムに記述された命令に従ったCPU11の処理を示す。CPU11による処理は、オペレーティングシステム(以下、「OS」とする)のAPIを介したハードウェア制御も含む。本明細書では、OSの記載を省略して各プログラムの動作を説明する場合がある。また、「取得」は、要求して取得する場合と要求せずに取得する場合とを含む概念で用いる。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。
【0020】
印刷ジョブ処理の手順について、
図2のフローチャートを参照して説明する。印刷ジョブ処理は、印刷ジョブの実行指示を受け付けたことを契機に、印刷制御プログラム21に基づいて、プリンタ1のCPU11にて実行される。なお、プリンタ1は、印刷ジョブを、通信IF14を介して外部装置から受信して取得しても良いし、通信IF14に装着されたUSBメモリから読み出して取得しても良い。また、プリンタ1がスキャナを備えている場合、プリンタ1は、スキャナにて読み取った画像データを印刷ジョブとして取得しても良い。
【0021】
CPU11は、受け付けた印刷ジョブの解析を開始し、印刷対象の画像を示す画像データを取得する(S101)。S101は、取得処理の一例である。印刷ジョブは、例えば、印刷対象の画像を示す画像データであるPDLデータと、印刷に関する各種のパラメータを示すPJLデータと、を含む。PDLデータは、例えば、PCL、PDF等の形式のデータである。さらに、CPU11は、1ページ分の画像を書き込むためのメモリ領域を確保する(S102)。
【0022】
そして、CPU11は、印刷ジョブに含まれる画像データから描画オブジェクトを検出する(S111)。CPU11は、PDLデータを解析して、描画オブジェクトであるか否かを判断する。CPU11は、描画オブジェクトが検出された場合、検出された描画オブジェクトが文字の描画を示すテキストオブジェクトであるか否かを判断する(S112)。S112は、文字検出処理の一例である。テキストオブジェクトは、文字データの一例である。
【0023】
検出されたオブジェクトがテキストオブジェクトであると判断した場合(S112:YES)、CPU11は、文字中間データ生成処理を実行する(S115)。文字中間データ生成処理の手順について、
図3のフローチャートを参照して説明する。
【0024】
文字中間データ生成処理では、CPU11は、処理対象のテキストオブジェクトに基づいて、文字の輪郭形状を示すデータを取得する(S201)。具体的には、CPU11は、処理対象のテキストオブジェクトに指定されているフォントの種類とサイズとを示すフォント情報と、文字種を示す文字コードと、に基づいて、文字の輪郭形状を示すデータを取得する。なお、各種の文字の輪郭形状を示すデータは、プリンタ1のメモリ12に記憶されている。文字の輪郭形状は、文字のエッジに相当する。S201は、文字の輪郭形状を示すデータを取得する手順の一例である。
【0025】
CPU11は、処理対象のテキストオブジェクトに指定されている文字の色と濃度を取得する(S202)。S202は、濃度取得処理の一例である。例えば、
図4に示すように、PDF形式の画像データ40には、濃度情報41と、テキスト描画コマンド42と、が含まれる場合がある。この例の画像データ40では、テキスト描画コマンド42にて指定された文字列「ABCDEF」の濃度が、濃度情報41の「g」または「G」の値で指定されている。この例の濃度情報41は、40%濃度のグレーの文字を示している。
【0026】
そして、CPU11は、S201にて取得した輪郭形状の内部を、S202にて取得した色と濃度で塗りつぶした多値のビットマップデータである中間データを生成する(S203)。中間データは、例えば、画素ごとにRGBの各色の階調値によって色を表現したRGBデータである。CPU11は、生成した中間データをメモリ12のテンポラリ領域に保持する。複数の文字を含む文字列を示すテキストオブジェクトであれば、CPU11は、文字ごとに中間データを生成し、各文字の中間データをそれぞれメモリ12のテンポラリ領域に保持する。
【0027】
CPU11は、メモリ12に記憶されている濃度閾値24を読み出す(S204)。メモリ12に記憶されている濃度閾値24には、第1濃度と、第1濃度よりも低濃度である第2濃度と、が含まれる。第1濃度は、例えば、80%である。第2濃度は、例えば、50%である。第1濃度は、第1閾値の一例である。第2濃度は、第2閾値の一例である。
【0028】
なお、第1濃度は、70%から90%の範囲内であることが好ましく、より好ましくは75%から85%の範囲内である。また、第2濃度は、第1濃度よりも低い値であればよいが、低すぎるとジャギーの影響が僅かにもかかわらず処理負荷が大きくなる。そのため、第2濃度は、40%から60%の範囲内であることが好ましく、より好ましくは45%から55%の範囲である。なお、濃度閾値24に含まれる第1濃度や第2濃度は、予め印刷制御プログラム21に組み込まれている固定値であっても良いし、ユーザによる変更指示を受け付け可能な可変値であっても良い。
【0029】
さらに、CPU11は、S202にて取得した文字の濃度と、S204にて読み出した濃度閾値24に含まれる各濃度値と、を比較する(S211)。具体的には、CPU11は、文字の濃度が、第1濃度以下、かつ、第2濃度以上、であるか否かを判断する。なお、S211の判断は、文字の濃度が濃度閾値24に含まれる各濃度値と等しい場合を含まない判断としても良い。
【0030】
文字の濃度が、第1濃度以下、かつ、第2濃度以上であると判断した場合(S211:YES)、CPU11は、破線を追加すると決定する。そして、CPU11は、追加する破線の種類を決定する(S212)。CPU11は、文字の濃度に基づいて、文字の濃度が高いほど、黒白比が大きい破線に決定する。そして、CPU11は、追加する破線を、決定した黒白比であって、線幅が1ドット、濃度が100%であり、対象の文字と同じ色の破線に決定する。
【0031】
破線の黒白比は、破線の長さ方向について、線の非線部に対する割合である。線は、連続する黒ドットによって形成される。線の長さは、連続する黒ドットの数に相当する。また、非線部は、線と線との間にある白ドットによって形成される。非線部の長さは、連続する白ドットの数に相当する。例えば、nを自然数として、nドットの黒ドットと1ドットの白ドットとが交互に配置される破線の黒白比は、nである。
【0032】
具体的には、CPU11は、文字の濃度が50%以上であって60%未満である場合、黒白比が1の破線に決定する。黒白比が1の破線は、同数の黒ドットと白ドットとが交互に配置される破線である。黒白比が1の破線は、例えば、1ドットずつ、または、2ドットずつの黒ドットと白ドットとが交互に配置される破線である。また、CPU11は、文字の濃度が60%以上であって70%未満である場合、黒白比が2の破線に決定する。黒白比が2の破線は、例えば、2ドットの黒ドットと1ドットの白ドットとが交互に配置される破線である。また、CPU11は、文字の濃度が70%以上であって80%以下である場合、黒白比が3の破線に決定する。黒白比が3の破線は、例えば、3ドットの黒ドットと1ドットの白ドットとが交互に配置される破線である。なお、黒白比が同一で線や非線部の長さが異なる破線は無数にあるが、連続する白ドットの数が3以下の破線とすることが好ましい。
【0033】
さらに、CPU11は、S201にて取得した文字の輪郭形状を示すデータに沿って、S203にて生成した中間データに、S212にて決定した種類の破線を追加する(S213)。S213は、破線追加処理の一例である。具体的には、CPU11は、S201では文字の輪郭形状を示すビットマップデータを生成する。そして、CPU11は、S201にて生成したビットマップデータに沿って、S212にて決定した種類の破線を追加し、破線のビットマップデータを生成する。さらに、CPU11は、破線のビットマップデータを、S203にて生成したビットマップデータである中間データに追加する。なお、CPU11は、文字の輪郭形状を示すビットマップデータを生成することなく、S212にて決定した種類の破線を、S203にて生成した中間データに直接追加しても良い。
【0034】
CPU11は、例えば、
図5にその一部の例を示すように、文字を示す画像である文字領域31の外周に接して、文字領域31よりも外側に配置される1ドット幅の領域である破線領域32に破線を追加する。破線領域32は、文字領域31に含まれない。これにより、文字領域31を囲うように文字の輪郭に沿って破線が追加された中間データが生成される。CPU11は、生成した中間データを、メモリ12のテンポラリ領域に保持する。
【0035】
なお、文字領域31を囲うように文字の輪郭に沿って破線が追加された中間データは、1つのデータとなっていなくても良い。つまり、この中間データは、S201にて生成した文字の輪郭形状を示すビットマップデータに破線を追加した破線のビットマップデータと、S203にて生成したビットマップデータと、の組み合わせであっても良い。
【0036】
追加される破線の種類は、例えば、
図6に示すように、文字の濃度によって異なる。具体的には、例えば、文字領域31の濃度が50%以上であって60%未満であれば、
図6(A)に示すように、黒白比が1の破線が、破線領域32に追加される。例えば、文字領域31の濃度が60%以上であって70%未満であれば、
図6(B)に示すように、黒白比が2の破線が、破線領域32に追加される。例えば、文字領域31の濃度が70%以上であって80%以下であれば、
図6(C)に示すように、黒白比が3の破線が、破線領域32に追加される。
【0037】
S213の後、または、文字の濃度が、第1濃度より高いか、または、第2濃度より低い、と判断した場合(S211:NO)、CPU11は、文字中間データ生成処理を終了して、印刷ジョブ処理に戻る。なお、S211にてNOと判断したことにより、破線を追加しない場合、CPU11は、S212およびS213をスキップする。従って、S203にて生成された中間データがメモリ12のテンポラリ領域に保持されている。
【0038】
文字の濃度が第1濃度より高い場合、後述するディザ処理を行った場合でもエッジの欠けが生じ難い。つまり、文字の濃度が高い場合には、ジャギーが発生し難いため、破線を追加する処理を回避することで処理の負荷を軽減する。また、文字の濃度が第2濃度より低い場合、後述するディザ処理を行った場合でもエッジの欠けが目立ち難い。つまり、文字の濃度が低い場合には、ジャギーの発生が問題になり難いため、破線を追加する処理を回避することで処理の負荷を軽減する。
【0039】
一方、文字の濃度が第1濃度と第2濃度との間の中間調である場合、CPU11は、破線を追加する。特に、文字の濃度が低いほど、破線のうち線の割合が低い破線が追加される。これにより、破線で囲むことによる文字エッジの過剰な強調が回避される。これに対し、文字の濃度が高い場合は、線の割合が高い破線で文字を囲んだとしてもエッジが強調され難い。この場合、線の割合の高い破線が追加されるので、ジャギーの発生が優先して抑制される。
【0040】
図2の印刷ジョブ処理の説明に戻る。CPU11は、S115の文字中間データ生成処理にてメモリ12のテンポラリ領域に保持した中間データを、S103にて確保したメモリ領域のうち、テキストオブジェクトに指定されている描画位置にコピーする(S116)。S116によって、テキストオブジェクトに基づいて生成された多値の中間データが、1ページ分のメモリ領域に配置される。予め破線が追加された中間データを生成して、メモリ領域にコピーすることで、破線付きの文字が描画された多値画像を生成し易い。
【0041】
また、検出された描画オブジェクトがテキストオブジェクトではないと判断した場合には(S112:NO)、CPU11は、オブジェクトごとに中間データを生成して(S117)、描画位置にコピーする(S116)。
【0042】
そして、CPU11は、ページの終端を示すデータが取得されたか否かを判断する(S118)。ページの終端ではないと判断した場合(S118:NO)、CPU11は、S111に進んで、さらに描画オブジェクトを検出する。
【0043】
CPU11は、1ページ分の画像データに含まれる描画オブジェクトごとにS115~S117を行う。これによって、1ページに含まれる各オブジェクトの多値の中間データがメモリ領域にそれぞれ配置されて、1ページ分の多値画像が生成される。1ページ分の中間データに、文字中間データ生成処理にて破線が追加された中間データが含まれる場合のS116は、多値画像生成処理の一例である。1ページ分の中間データに、文字中間データ生成処理にて破線が追加された中間データが含まれない場合のS116は、第2多値画像生成処理の一例である。
【0044】
ページの終端を示すデータが取得されたと判断した場合(S118:YES)、CPU11は、メモリ領域に生成された1ページ分の多値画像に対して、色変換を行う(S121)。例えば、プリンタ1の印刷デバイス15が、CMYKの4色の着色材を用いて印刷するデバイスであれば、CPU11は、RGBデータをCMYKデータに変換する。CPU11は、予め備えている色変換プロファイルを利用して、色変換を行う。これにより、CMYKデータで表現された1ページ分の多値画像が生成される。S121が多値画像生成処理の一例であっても良い。
【0045】
CPU11は、色変換後の多値画像について、二値化処理を実行する(S122)。二値化処理は、色ごとの多値画像を二階調に変換して、色ごとの二値化画像を生成する処理である。具体的には、CPU11は、多値画像の各画素について、色ごとにオンドットとするかオフドットとするかを決定する。オンドットは、印刷デバイス15において着色材によるドットを形成する画素であり、オフドットはドットを形成しない画素である。二値化処理の手順について、
図7のフローチャートを参照して説明する。
【0046】
二値化処理では、CPU11は、1ページ分の多値画像の各画素について、まず、画素の濃度を取得する(S301)。そして、CPU11は、画素の濃度が0%であるか否かを判断する(S302)。濃度が0%であると判断した場合(S302:YES)、CPU11は、当該画素をオフドットとする(S303)。濃度が0%ではないと判断した場合(S302:NO)、CPU11は、濃度が100%であるか否かを判断する(S304)。濃度が100%であると判断した場合(S304:YES)、CPU11は、当該画素をオンドットとする(S305)。
【0047】
文字中間データ生成処理(
図3参照)のS213にて追加された破線は、濃度100%の破線であることから、S303とS305により、線はオンドットとなり、非線部はオフドットとなる。つまり、二値化処理を行っても破線の形状が維持される。また、1ドット幅の破線が追加されていることから、文字太りが抑制される。
【0048】
なお、CPU11は、画素ごとに濃度を取得してS302やS304の判断を行う代わりに、
図3に示した文字中間データ生成処理のS202にて取得した文字の濃度を記憶しておいて、判断に利用しても良い。また、CPU11は、1ページ分の多値画像を小領域に分割して、小領域ごとに濃度の判断を行っても良い。
【0049】
濃度が0%でも100%でもないと判断した場合(S304:NO)、CPU11は、濃度が濃度閾値24に記憶されている第1濃度よりも高いか否かを判断する(S311)。濃度が第1濃度よりも高いと判断した場合(S311:YES)、CPU11は、多値画像を二値化ハードウェア16(
図1参照)に渡し、当該画素の二値化を行わせる(S312)。S312は、第2二値画像生成処理の一例である。
【0050】
二値化ハードウェア16は、画像に現れるエッジを考慮して多値画像を二値化するハードウェアである。二値化ハードウェア16は、例えば、対象画素とその周囲の画素との色の差に基づいて、エッジである可能性があるか否かを決定する。さらに、二値化ハードウェア16は、例えば、エッジである可能性が高く、濃度が高い場合に、その画素をオンドットとする。S312により、二値化画像が生成される。
【0051】
文字の濃度が高い場合は文字のエッジを強調したとしてもその強調箇所が目立ち難い。すなわち、文字が縁どられたようになり難い。CPU11は、文字の濃度が第1濃度よりも高い場合は破線を追加せず、二値化ハードウェア16による二値化を行わせる。これにより、CPU11の負荷を抑制しつつ、文字のエッジが滑らかになる。
【0052】
一方、画素の濃度が第1濃度よりも高くないと判断した場合(S311:NO)、CPU11は、二値化プログラム22(
図1参照)による処理を行って二値化データを生成する(S313)。S313は、二値画像生成処理の一例である。CPU11は、例えば、ディザマトリクスを用いたディザ処理を実行することで、多値のビットマップデータに基づく二値のビットマップデータを生成する。なお、二値化プログラム22は、ディザ処理に代えて誤差拡散処理を用いても良い。
【0053】
S313では、CPU11は、0%濃度でも100%濃度でもない中間調のCMYKデータについて、多値の画像データを二値化する。CPU11は、例えば、画像データの階調値がディザマトリクスに示される値以上であればオンドットを形成し、画像データの階調値の方が小さい場合にはオフドットを形成する。従って、例えば、
図6に示した文字領域31には、文字の濃度によって異なる配置でオンドットが配置される。なお、適用されるディザマトリクスは、色ごとに異なっていても良い。
【0054】
図6に示したように破線が追加された文字の画像に基づいて生成される、二値化画像の一部分の例を、
図8に示す。例えば、濃度50%の文字の文字領域31は、例えば、
図8(A)に示すように、濃度50%に対応するディザパターンとなる。そして、この文字領域31の輪郭に沿って、黒白比が1の破線が破線領域32に形成されている。また、例えば、濃度60%の文字の文字領域31は、例えば、
図8(B)に示すように、濃度60%に対応するディザパターンとなり、黒白比が2の破線が破線領域32に形成されている。また、例えば、濃度80%の文字の文字領域31は、例えば、
図8(C)に示すように、濃度80%に対応するディザパターンとなり、黒白比が3の破線が破線領域32に形成されている。
【0055】
これにより、ディザマトリクスによって処理された文字領域31と、文字の濃度に対応する黒白比の破線が追加された破線領域32とを含む二値化データが生成される。文字の濃度に対応して、破線の黒白比が決定されていることから、文字エッジの過剰な強調が回避されている。
【0056】
S303、S305、S312、S313のいずれかの後、CPU11は、1ページ分の多値画像の処理が終了し、1ページ分の二値化画像が生成されたか否かを判断する(S315)。終了していないと判断した場合(S315:NO)、CPU11は、S301に進んで処理を継続する。1ページ分の多値画像の処理が終了したと判断した場合(S315:YES)、CPU11は、二値化処理を終了して、印刷ジョブ処理に戻る。
【0057】
図2の印刷ジョブ処理の説明に戻る。CPU11は、S122の二値化処理の後、生成した二値化画像を印刷デバイス15に渡し(S123)、印刷を実行させる。S123は、印刷処理の一例である。なお、CPU11は、二値化画像に基づいて、印刷デバイス15に適した形式のデータを生成して、印刷デバイス15に渡しても良い。印刷デバイス15は、渡された二値化画像に基づいて、印刷を実行する。
【0058】
そして、CPU11は、印刷ジョブの処理が終了したか否かを判断する(S124)。終了していないと判断した場合(S124:NO)、CPU11は、S103に進んで、次のページの画像データの処理を行う。印刷ジョブの処理が終了したと判断した場合(S124:YES)、CPU11は、印刷ジョブ処理を終了する。
【0059】
以上、詳細に説明したように、実施の形態のプリンタ1は、多値画像を生成する前に、印刷対象の画像の画像データに含まれる文字の輪郭に沿って破線を追加する。さらに、プリンタ1は、その破線が追加された文字を含む画像に基づいて多値画像を生成し、生成した多値画像を二階調に変換して二値化画像を生成する。これにより、その破線が、二値化された文字のエッジに露出する大きな欠けの一部を塞ぐことが期待できる。従って、エッジに露出する欠けが小さくなって目立ち難くなるので、ジャギーの発生が抑制されるとともに、文字が縁どられたように見える可能性は小さい。
【0060】
なお、印刷ジョブ処理(
図2参照)の一部の処理は、プリンタ1が実行する代わりに、プリンタに接続される情報処理装置が実行しても良い。例えば、
図9に示すように、プリンタ6に接続されるパーソナルコンピュータ(以下、「PC」とする)5を利用して実行させても良い。PC5は、情報処理装置の一例である。
【0061】
PC5は、
図9に示すように、CPU51と、メモリ52と、を含むコントローラ50を備えている。また、PC5は、ユーザIF53と、通信IF54と、を備えている。CPU51は、コンピュータの一例である。メモリ52には、OS521と、プリンタドライバ522と、を含む、各種のプログラムやデータが記憶されている。プリンタドライバ522は、プリンタ6に対応するプログラムの一例である。なお、PC5に接続されるプリンタ6は、前述したプリンタ1と同様の破線を追加する機能を備える装置であっても良いし、破線を追加する機能を備えない装置であっても良い。
【0062】
PC5にて実行される印刷ジョブ処理の手順について、
図10のフローチャートを参照して説明する。この印刷ジョブ処理は、例えば、文書の編集や画像の表示を行うアプリケーションプログラムから印刷の指示を受け付けたことに応じて、プリンタドライバ522に基づいて、CPU51にて実行される。なお、以下では、前述したプリンタ1にて実行される印刷ジョブ処理(
図2参照)と同様の手順については、同じ符号を付して、説明を簡略化する。
【0063】
プリンタドライバ522は、プリンタ1と同様に、S101~S118を実行する。プリンタドライバ522は、アプリケーションプログラムから印刷対象の画像データを取得し(S101)、テキストオブジェクトを検出したら(S112:YES)、文字中間データ生成処理を実行する。S101は、取得処理の一例である。S112は、文字検出処理の一例である。
【0064】
文字中間データ生成処理は、
図3にて説明した処理と同様の処理である。文字中間データ生成処理のS213は、破線追加処理の一例である。1ページ分の中間データの生成が終了したら、プリンタドライバ522は、生成した中間データを含む印刷コマンドをプリンタ6に送信し、プリンタ6に印刷の実行を指示する(S401)。S401は、出力処理の一例である。S401にて送信された印刷コマンドに基づいて、プリンタ6は、印刷を実行する。このようにしても、ジャギーの発生が抑制されるとともに、文字が縁どられたように見える可能性は小さい。
【0065】
なお、プリンタドライバ522は、印刷ジョブのすべての中間データを生成した後に、纏めてプリンタ6に送信しても良い。また、プリンタドライバ522は、さらに、色変換の処理や二値化の処理をも行って、二値化済みの画像データをプリンタ6に送信しても良い。
【0066】
なお、実施の形態は単なる例示にすぎず、本発明を何ら限定するものではない。従って本明細書に開示される技術は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、プリンタは、印刷単機能のものに限らず、複合機、複写機、FAX装置等、印刷機能を備えるものであれば適用可能である。また、プリンタに接続されて印刷ジョブ等を送信する装置は、PCに限らず、スマートフォン、タブレットコンピュータ、サーバコンピュータでも良い。
【0067】
また、実施の形態に提示した各閾値となる濃度値は、いずれも一例であり、これに限らない。また、テキストオブジェクトの濃度に応じて異なる黒白比の破線を追加するとしたが、濃度に関わらず同じ破線を追加するとしても良い。ただし、濃度に応じて破線の黒白比を代えることで、エッジが目立ちすぎることが抑制される。また、テキストオブジェクトの濃度に応じて3種類の黒白比の例を示したが、4種類以上であっても良いし、2種類であっても良い。
【0068】
また、実施の形態では、線幅1ドットの破線を追加するとしたが、これに限らない。例えば、印刷解像度に応じて異なる線幅の破線を追加するとしても良い。具体的には、低解像度の装置であれば1ドット幅が望ましいが、高解像度の装置であれば、2~3ドット幅の破線としても良い。ただし、破線の線幅が太すぎると文字が縁取られて見える可能性があるため、1ドット幅の破線とすることが望ましい。
【0069】
また、実施の形態では、濃度100%の破線を追加するとしたが、これに限らない。例えば、文字の濃度に応じて、少なくとも文字の濃度よりも高い濃度であって、異なる濃度の破線を追加するとしても良い。ただし、中間濃度の破線を追加した場合、その破線もディザ処理の対象となる可能性があるため、ディザ処理の対象とならない濃度100%の破線とすることが望ましい。
【0070】
また、例えば、破線を追加する破線領域32(
図5参照)は、文字領域31内の最外周の1ドット幅の領域であっても良い。つまり、破線領域32は、文字領域31に含まれても良い。その場合、CPU11は、文字領域31の最外周に破線を上書きする。
【0071】
また、二値化処理(
図7参照)のS311では、文字中間データ生成処理(
図3参照)のS211にて用いた第1濃度と同じ濃度と比較するとしたが、同じでなくても良い。ただし、同じ濃度とすることで、破線の追加と二値化ハードウェア16(
図1参照)によるエッジ強調とが重ねて実行され、エッジが目立ちすぎる可能性を抑制できる。また、同じ濃度とすることで、破線の追加と二値化ハードウェア16によるエッジ強調とのいずれも行われない箇所が無く、文字のエッジに大きな欠けが露出する可能性を抑制できる。
【0072】
また、二値化ハードウェア16は、無くても良い。つまり、二値化処理(
図7参照)のS311とS312とを削除し、多値画像の全体について、二値化プログラム22(
図1参照)による処理を行うとしても良い。
【0073】
また、プリンタに接続されるPCにて多値画像を生成する場合、PCは、OSがあらかじめ印刷用の汎用プログラムを備えており、プリンタドライバを利用しない、いわゆるドライバレスの構成であっても良い。そして、PCには、OSの備える汎用プログラムとは別に、プリンタに対応するプログラムが組み込まれていても良い。その場合、PCは、そのプログラムによって多値画像を生成しても良い。この構成であっても、当該プログラムが文字の輪郭に破線を追加することで、ジャギーの発生を抑制できる。
【0074】
また、実施の形態に開示されている任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる、または並列に実行できる。
【0075】
また、実施の形態に開示されている処理は、単一のCPU、複数のCPU、ASICなどのハードウェア、またはそれらの組み合わせで実行されても良い。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。
【符号の説明】
【0076】
1 プリンタ
10 コントローラ
15 印刷デバイス
16 二値化ハードウェア
5 PC
51 CPU