以下に、図面を参照しつつ、画像処理装置の一実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。
[用語の定義]
本明細書では、各用語を以下のように定義する。
印刷データ:印刷されるファイル(PDFファイル等)
印刷データの展開:印刷されるファイルのラスターデータの生成
印字領域:ラスターデータにおいて印字情報を含む領域
印字情報:背景に対して異なる色で印刷される情報
非印字領域:ラスターデータにおいて印字情報を含まない領域
行間:非印字領域の中の文字オブジェクト内の領域
空白:非印字領域の中の文字オブジェクトとは独立した領域
余白:非印字領域のうち、印刷される用紙の後端まで続く部分
[画像処理システム]
図1は、本開示に係る画像処理装置を含む画像処理システムの一例を示す図である。画像処理システムは、画像処理装置1と、画像処理装置1にPDF(Portable Document Format)ファイルなどのファイルの印刷を指示するコンピューター2とを含む。以下、画像処理装置1とコンピューター2のそれぞれの構成を説明する。
(画像処理装置1)
図2は、画像処理装置1のハードウェア構成を示す図である。図1および図2を参照して、画像処理装置1の構成を説明する。
画像処理装置1の一例は、MFP、すなわち、コピー、ネットワークプリンティング、スキャナー、ファクシミリ、およびドキュメントサーバーの中の複数の機能を集約した装置である。画像処理装置1は、操作パネル11、スキャナー装置13、プリンター装置14、ステープル、パンチ等の処理を行うフィニッシャー装置15、ネットワークインターフェイス(I/F)16、ドキュメントフィーダー17、給紙装置18、CPU(Central Processing Unit)20、ROM(Read Only Memory)21、RAM(Random Access Memory)22、記憶装置23、および、USB(Universal Serial Bus)インターフェース23Aを含む。
操作パネル11は、操作装置11aとディスプレイ11bとを含む。操作装置11aは、数字、文字、および記号などを入力するための複数のキー、投稿文を作成したいときに押下されるコメントキー、押下された各種のキーを認識するセンサ、および認識したキーを示す信号をCPU20に送信する送信用回路を含む。
ディスプレイ11bは、メッセージまたは指示を与えるための画面、ユーザーが設定内容および処理内容を入力するための画面、および、画像処理装置1で形成された画像および処理の結果を示す画面などを表示する。ディスプレイ11bは、タッチパネルであってもよい。すなわち、ディスプレイ11bと操作装置11aの少なくとも一部とが一体的に構成されていてもよい。ディスプレイ11bはユーザーが指で触れたタッチパネル上の位置を検知し、検知結果を示す信号をCPU20に送信する機能を備えている。
画像処理装置1は、ネットワークI/F16を介して、外部機器(たとえば、パーソナルコンピューター)と通信可能である。外部機器には、画像処理装置1に対して指令を与えるためのドライバープログラムがインストールされていてもよい。これにより、ユーザーは、外部機器を使用して、画像処理装置1を遠隔的に操作できる。
スキャナー装置13は、写真、文字、絵などの画像情報を原稿から光電的に読取って画像データを取得する。取得された画像データ(濃度データ)は、図示しない画像処理部においてデジタルデータに変換され、周知の各種画像処理を施された後、プリンター装置14やネットワークI/F16に送られ、画像の印刷やデータの送信に供されるか、または、後の利用のために記憶装置23に格納される。
プリンター装置14は、スキャナー装置13により取得された画像データ、ネットワークI/F16により外部機器から受信した画像データ、または記憶装置23に格納されている画像を、用紙またはフィルムなどの記録シートに印刷する。一例では、プリンター装置14は、電子写真方式で画像形成するために、感光体ドラムなどを含む。給紙装置18は、画像処理装置1本体の下部に設けられており、印刷対象の画像に適した記録シートをプリンター装置14に供給するために用いられている。
プリンター装置14によって画像が印刷された記録シートつまり印刷物に対して、フィニッシャー装置15は、モード設定に応じてステープル、パンチなどの処理を実施した後、印刷物をトレイ24に排出する。
ネットワークI/F16は、送信部および受信部を含み、パーソナルコンピューター(PC)などの外部機器とデータのやりとりを行うための装置である。ネットワークI/F16の一実現例は、NIC(Network Interface Card)、モデム、または、TA(Terminal Adapter)である。
CPU20は、画像処理装置1の全体を統括的に制御し、通信機能、プリント機能、スキャン機能、ファイル送信機能、およびブラウザー機能等の基本機能を制御する。
ROM21は、CPU20の動作プログラム等を格納するメモリーである。
RAM22は、CPU20が動作プログラムに基づいて動作する際の作業領域を提供するメモリーであり、CPU20は、ROM21等から動作プログラムをロードするとともに種々のデータをロードして、作業を行う。
記憶装置23は、例えばハードディスクドライブ(HDD)などの不揮発性の記憶デバイスにより構成されており、各種のアプリケーション、スキャナー装置13で読み取られた原稿の画像データ等を格納する。
USBインターフェース23Aは、画像処理装置1に対して着脱可能なUSBメモリー23Xのインターフェースである。CPU20は、USBインターフェース23Aを介して、USBメモリー23Xに格納された情報を読出す。CPU20は、また、USBインターフェース23Aを介して、USBメモリー23Xに情報を書き込む。
(画像処理装置の機能構成)
図3は、画像処理装置1の機能構成を説明するための図である。画像処理装置1の機能の少なくとも一部が図3に示される。一実現例では、図3に示された機能は、CPU20が所与のプログラムを実行することによって実現される。たとえば、コンピューター2は、所与の形式のファイル(たとえば、PDFファイルまたはTIFFファイル)を直接プリンターに送信して印刷するためのアプリケーションをインストールされている。当該アプリケーションの一例は、PageScope(登録商標)Direct Printである。画像処理装置1のCPU20は、受信したファイル(印刷データ)を、更新し、プリンター装置14に更新後の印刷データを印刷させることができる。
図3に示された機能は、2以上のプロセッサーによって実現されても良い。
図3に示されるように、画像処理装置1は、RIP(Raster Image Processing)部310と、更新判定部320と、オブジェクト処理部330と、データ更新部340とを含む。RIP部310は、印刷データのラスターデータを生成する。
更新判定部320は、印刷データの更新の要否を判定する。オブジェクト処理部330は、ラスターデータから1以上のオブジェクトを検出し、また、オブジェクトの属性を生成する。
データ更新部340は、印刷データを更新する。データ更新部340は、ラスターデータ内の空白を削減する空白削減部341、オブジェクトを縮小する縮小処理部342、および、オブジェクトを拡大する拡大処理部343を含む。
ラスターデータ内の画像において生成される余白の状態など、所与の条件が満たされると、RIP部310によって生成されたラスターデータはプリンター装置14に送られる。プリンター装置14は、ラスターデータに従って、用紙に画像を形成する。
(情報処理装置)
図4は、コンピューター2のハードウェア構成の一例を示す図である。図1および図4を参照して、コンピューター2の構成を説明する。
コンピューター2は、CPU201と、RAM202と、記憶装置203と、ディスプレイ204と、入力装置205と、ネットワークI/F206とを含む。
CPU201は、所与のプログラムを実行することによってコンピューター2を制御する。RAM202は、CPU201に作業領域を提供する。記憶装置203は、アプリケーションプログラムを含む、情報を記憶する。
ディスプレイ204は、たとえば有機EL(organic electro-luminescence)ディスプレイによって実現され、CPU201からの指示に従って情報を表示する。入力装置205は、たとえばキーボードおよび/またはマウスによって実現され、CPU201へ入力される情報を受け付ける。ネットワークI/F206は、たとえばネットワークカードによって実現され、コンピューター2を画像処理装置1を含む他の機器と通信させる。
[原稿の調整要否の判定]
図5は、画像処理装置1が、印刷データを印刷する場合に、当該印刷データの調整の要否の判定を含む処理の一例のフローチャートである。一実現例では、図5の処理は、画像処理装置1に印刷指示が入力されたことによって開始され、CPU20が所与のプログラムを実行することによって実現される。印刷指示は、コンピューター2を含む外部機器から入力されても良いし、操作パネル11を操作されることによって入力されても良い。
ステップS10にて、CPU20は、印刷データのラスターデータを生成する。
ステップS12にて、CPU20は、後述するステップS20における原稿調整処理の実行回数が所与の閾値Th1以上であるか否かを判断する。CPU20は、原稿調整処理の実行回数がTh1以上であると判断するとステップS18へ制御を進め(ステップS12にてYES)、当該回数がまだTh1に到達していないと判断するとステップS14へ制御を進める(ステップS12にてNO)。
ステップS14にて、CPU20は、最新の2回のステップS10のそれぞれで生成されたラスターデータの間に相違があるか否かを判断する。CPU20は、相違があると判断するとステップS16へ制御を進め(ステップS14にてYES)、相違が無いと判断するとステップS18へ制御を進める(ステップS14にてNO)。
たとえば、2回目のステップS14では、1回目のステップS10で生成されたラスターデータと、2回目のステップS10で生成されたラスターデータとの間の、相違の有無が判断される。なお、以降特記される場合を除き、「ラスターデータ」とは最新のラスターデータを意味する。ステップS10におけるラスターデータの生成回数が2回未満である場合には、ステップS14からステップS16へ制御が進められる。
ステップS14における「相違」は、「所与の基準以上の相違」であってもよい。一実現例では、ステップS14において、CPU20は、「用紙の天地方向において連続する非印字領域が所与の量以上増えた」場合に、2つのラスターデータの間で相違があっったと判断し、そうではない場合に、2つのラスターデータの間で相違がないと判断してもよい。
なお、本実施の形態では、用紙の天地方向が、当該画像を形成される用紙の搬送方向と同じで方向とされている。このため、「用紙の天地方向」が「用紙の搬送方向」と同義で使用される場合がある。なお、用紙の天地方向が用紙の搬送方向と異なる場合がある。この場合、余白は、用紙の天地方向における後端まで連続する空白ではあるが、用紙の搬送方向における後端まで連続する空白では無い。
ステップS16にて、CPU20は、ラスターデータの最終頁に余白が無いか否かを判断する。CPU20は、ラスターデータの最終頁に余白が無いと判断するとステップS18へ制御を進め(ステップS16にてYES)、最終頁に余白が有ると判断するとステップS20へ制御を進める(ステップS16にてNO)。ステップS16において、CPU20は、用紙の天地方向に沿って所与の長さ以上連続する余白(用紙の最終頁の終端まで連続する非印字領域)が存在する場合に「余白がある」と判断し、そうではない場合に「余白は無い」と判断しても良い。
「ラスターデータの最終頁の余白」は、印刷データの最終頁の余白と等しい場合もあれば、異なる場合もある。たとえば、1頁の印刷データについて、当該印刷データが片面印刷される場合には、印刷データの最終頁の余白とラスターデータの最終頁の余白とは等しい。
上記の2種類の余白が異なり得る場合の一例は、印刷データが両面印刷される場合である。たとえば、1頁の印刷データが両面印刷される場合、ラスターデータの最終頁は1枚目の用紙の裏面を意味し、ラスターデータの最終頁の余白は1枚目の用紙の裏面全体に相当する部分を意味する。一方、印刷データの最終頁の余白は、ラスターデータの1枚目の用紙の表面の余白に相当する部分を意味する。したがって、印刷データの最終頁の余白とラスターデータの最終頁の余白とは相違する。
上記の2種類のデータにおける余白が異なり得る場合の他の例は、印刷データが集約印刷される場合である。図6は、2種類のデータにおける余白が異なり得る場合の一例を示す図である。たとえば、図6の(A)に示されるように、印刷データ600が3頁の画像601,602,603を含む場合を想定する。画像601,602,603のそれぞれは、印刷データの1頁目,2頁目,3頁目のそれぞれの画像を表す。画像603における斜線部分は、画像603における余白を表す。
図6の(B)には、画像601,602,603が4in1に従って1枚の用紙に印刷される場合のレイアウトの一例が示される。矢印SFは用紙の天地方向(たとえば、用紙が送られる方向)を表す。なお、4in1では、元の印刷データが、矢印SF方向とこれに直交する方向とのそれぞれで50%の寸法に縮小され、これにより、元の印刷データの25%の面積で出力される。
図6の(B)の例では、用紙610は、4つの領域611,612,613,614に分割される。領域612は、領域611に対して、矢印SFが示す方向に交わる方向に配置される。領域613は、領域611に対して、矢印SFが示す方向に沿う方向に配置される。
領域611,612,613のそれぞれには、画像601,602,603のそれぞれが印刷される。領域614は、印刷データの4頁目の画像が印刷される領域であり、印刷データ600は4頁目の画像を含まないので、領域614には画像は印刷されない。図6の(B)の場合、用紙610における余白は、斜線で示される部分、すなわち、領域613において画像603の余白に相当する部分および領域614全体である。
図6の(C)には、画像601,602,603が4in1に従って1枚の用紙に印刷される場合のレイアウトの他の例が示される。矢印SFは用紙が送られる方向を表す。図6の(C)の例では、用紙620は、4つの領域621,622,623,624に分割される。領域622は、領域621に対して、矢印SFが示す方向に沿う方向に配置される。領域623は、領域621に対して、矢印SFが示す方向に交わる方向に配置される。
領域621,622,623のそれぞれには、画像601,602,603のそれぞれが印刷される。領域624は、印刷データの4頁目の画像が印刷される領域であり、印刷データ600は4頁目の画像を含まないので、領域624には画像は印刷されない。図6の(C)の場合、用紙620における余白は、斜線で示される部分、すなわち、領域623において画像603の余白に相当する部分および領域624全体である。
図5に戻って、ステップS18にて、CPU20は、ラスターデータを印刷することを決定して、図5の処理を終了させる。一実現例では、ステップS18にて、CPU20は、ラスターデータを印刷キューに登録する。これにより、当該ラスターデータの画像は、プリンター装置14によって用紙に印刷される。
ステップS20にて、CPU20は、印刷データを調整するための処理(原稿調整処理)を実行する。原稿調整処理の内容は、図9および図10を参照して後述する。その後、制御はステップS10へ戻される。
以上図5を参照して説明された処理では、ステップS12、ステップS14、およびステップS16における判断の結果に従って、原稿調整処理が実施されるか否かが判断される。特に、ステップS16では、印刷データのラスターデータの最終頁に余白が生じるか否かが判断される。すなわち、印刷データではなくラスターデータに対して判断がなされることにより、用紙における実際の余白の有無に従って原稿調整処理が実施され得る。
図5の処理では、ステップS20の後、制御はステップS10へ戻される。これにより、原稿調整処理における調整後の印刷データについて、再びラスターデータが生成され、ステップS12、ステップS14、およびステップS16における判断が再度実施される。これにより、ステップS20の後で再び生成されたラスターデータにおいて余白が発生しないと判断されると(ステップS16にてNO)、当該ラスターデータに従った印刷処理の実行が決定される(ステップS18)。
なお、図5の例では、ステップS12、ステップS14、およびステップS16のすべての判断の結果がYESである場合にステップS18が実行されるが、これらの少なくとも1つの判断の結果がYESであることを条件としてステップS18が実行されてもよい。
[ラスターデータにおけるオブジェクト]
本開示では、ラスターデータにおいて所与の基準に従った余白が発生すると原稿調整処理において印刷データが調整される。印刷データの調整は、たとえば、印刷データから1以上のオブジェクトを検出し、オブジェクトごとに実施されてもよい。
図7は、ラスターデータにおいて検出されるオブジェクトに付与される情報を説明するための図である。図7には、各オブジェクトに付与される属性および属性値の具体例が示される。図7に示されるように、本開示では、各オブジェクトに第1属性と第2属性とが割り当てられる。第1属性は、「非印字領域」と「印字領域」とを含む。第1属性が「非印字領域」である場合の第2属性は、「行間」と「空白」とを含む。第1属性が「印字領域」である場合の第2属性は、「文字」と「表」と「図形」と「イメージ」とを含む。以下、各属性の定義の一例を説明する。
「非印字領域」は、印字部分を含まないオブジェクトを意味する。「印字領域」は、印字部分を含むオブジェクトを意味する。
「印字領域」のうち、「文字」は文字を含むオブジェクトを、「表」は表を含むオブジェクトを、「図形」はアプリケーションによって描画された画像オブジェクトを、「イメージ」は撮像装置によって生成された画像オブジェクトを、それぞれ意味する。
「非印字領域」のうち、「行間」は「文字」オブジェクト内の行間を含むオブジェクトを、「空白」は「文字」オブジェクトなどの他の種類のオブジェクトに対して独立したオブジェクトを、それぞれ意味する。
CPU20は、たとえば、ステップS10において生成されたラスターデータにおいて、オブジェクトを検出する。一実現例では、CPU20は、第2属性「行間」,「空白」,「文字」,「表」,「図形」,「イメージ」のそれぞれに対して予め定められたパターン情報を利用して、ラスターデータから第2属性「行間」,「空白」,「文字」,「表」,「図形」,「イメージ」のそれぞれに分類されるオブジェクトを検出する。
図7には、7種類の属性値「位置」「高さ」「サイズ」「視認性」「フォントサイズ」「修飾」および「調整範囲」が示される。「位置」は、用紙におけるオブジェクトの印刷位置を表す。印刷位置の記述には、たとえば、オブジェクトが外接する長方形が利用される。長方形の一辺は用紙の搬送方向(用紙の天地方向)に沿い、他辺は用紙の搬送方向に直交する方向に沿う。印刷位置は、当該長方形の4つの角の中の予め定められた1つの角(たとえば、搬送方向において最も用紙の先端から遠く、かつ、搬送方向に直交する方向の一方側に位置する角)の座標として表される。
「高さ」は、用紙においてオブジェクトが占める領域の搬送方向における長さを表す。「サイズ」は、オブジェクトが占める領域の天地方向および天地方向に直交する方向のそれぞれの寸法を表す。「サイズ」は、オブジェクトが外接する長方形の隣接する2辺のそれぞれの長さによって表されても良い。
「視認性」は、所与の基準においてオブジェクトごとに設定されるオブジェクトの見易さ(たとえば、オブジェクトの内容を見て理解することの容易さ)のレベルを表す。
「フォントサイズ」は、オブジェクトに含まれる文字のフォントサイズを表す。「修飾」は、オブジェクトにおいて文字に対する修飾(下線など)を含むか否かを表す。「調整範囲」は、オブジェクトに対して調整が許容される事項を表す。一実現例では、オブジェクトが文字を含まない場合には、当該オブジェクトが印刷されるサイズだけでなく当該オブジェクトが印刷される方向も調整可能であるが、オブジェクトが文字を含む場合には、当該オブジェクトが印刷されるサイズは調整可能であるが、オブジェクトが印刷される方向は調整可能ではない。
図7の「○」と「×」は、オブジェクトごとに割り振られた第1属性と第2属性との組み合わせに従って、当該7種類の属性値の中のどの属性値が設定されるかを表す。「○」は、設定される属性値を表し、「×」は、設定されない属性値を表す。たとえば、図7では、第1属性が「非印字領域」であり第2属性が「行間」である場合、属性値「位置」,「高さ」に対して「○」が示され、属性値「サイズ」,「視認性」,「フォントサイズ」,「修飾」,「調整範囲」に対して「×」が示されている。このことは、第1属性が「非印字領域」であり第2属性が「行間」であるオブジェクトには、属性値「位置」,「高さ」の値が設定され、属性値「サイズ」,「視認性」,「フォントサイズ」,「修飾」,「調整範囲」の値が設定されないことを意味する。なお、第1属性が「非印字領域」のオブジェクトに対して属性値「サイズ」の値は設定されないが、第1属性が「非印字領域」のオブジェクトのサイズの設定は可能であってもよい。
CPU20は、検出されたオブジェクトのそれぞれに、各オブジェクトの第2属性について設定されるべき属性値を設定する。一実現例では、CPU20は、ラスターデータを生成する際に、印刷データの各オブジェクトがラスターデータのどの位置に配置されるかを紐付ける情報を生成する。CPU20は、ラスターデータにおいて検出された各オブジェクトに関連付けられた印刷データ中のオブジェクトを特定する。そして、CPU20は、特定された印刷データ中のオブジェクトの情報(たとえば、PDFデータやHTML(HyperText Markup Language)データ内のタグ情報)から、ラスターデータ内のオブジェクトに設定する属性値を取得する。たとえば、印刷データにおいて、文字オブジェクトの情報は、文字のフォントサイズを含む。CPU20は、ラスターデータにおいて検出された文字オブジェクトのフォントサイズの値を、印刷データに含まれるフォントサイズに基づいて設定する。
一例では、ラスターデータにおいて検出された文字オブジェクトが、印刷データにおいてフォントサイズが「12ポイント」である文字オブジェクトに対応する場合を想定する。ラスターデータが印刷データを等倍で出力するために生成された場合には、CPU20は、ラスターデータにおいて検出された文字オブジェクトのフォントサイズの値として「12ポイント」を設定する。ラスターデータが印刷データを4in1で出力するために生成された場合には、CPU20は、ラスターデータにおいて検出された文字オブジェクトのフォントサイズの値として「6ポイント」を設定する。
他の例では、ラスターデータにおいて検出された行間オブジェクトが、印刷データにおいて行間「10ポイント」の文字オブジェクトに対応する場合を想定する。ラスターデータが印刷データを等倍で出力するために生成された場合には、CPU20は、ラスターデータにおいて検出された行間オブジェクトの高さの値として「10ポイント」を設定する。ラスターデータが印刷データを4in1で出力するために生成された場合には、CPU20は、ラスターデータにおいて検出された文字オブジェクトの高さの値として「5ポイント」を設定する。
[印刷データにおいて検出されるオブジェクトの具体例]
図8は、ラスターデータにおいて検出されたオブジェクトの具体例を示す図である。図8の例では、ラスターデータは1頁分の画像を含む。図8の画像900は、ラスターデータが対応する1頁分の画像の具体例を表す。
画像900は、印刷されるオブジェクトとともに、実線の枠と破線の枠とが示される。実線の枠は、印字領域に属するオブジェクトを表す。破線の枠は、非印字領域に属するオブジェクトを表す。以下に、画像900において検出されたオブジェクトの中の一部について、第2属性の割り当ての具体例を説明する。
オブジェクト901,903,912は、空白オブジェクトである。オブジェクト902,904,908,909は文字オブジェクトである。オブジェクト907は、イメージオブジェクトである。オブジェクト910,911は行間オブジェクトである。
CPU20は、各オブジェクトに対して第1属性および第2属性を付与する。CPU20は、さらに、各オブジェクトに対して、各オブジェクトが印刷データにおいて対応するオブジェクトの情報に基づいて属性値を設定する。設定される属性値の種類は、第2属性に従って特定される。
以下に、一部のオブジェクトについて、各オブジェクトに設定される属性値の具体例を説明する。
情報9021は、オブジェクト902に対して設定された属性値を模式的に表す。より具体的には、情報9021は、オブジェクト902に付与された第1属性「印字領域」と、第2属性「(種類:)文字」とを含み、さらに、「視認性」について設定された属性値「よい」と、「調整範囲」について設定された属性値「サイズ、…」とを含む。
情報9071は、オブジェクト907に対して設定された属性値を模式的に表す。より具体的には、情報9071は、オブジェクト907に付与された第1属性「印字領域」と、第2属性「(種類:)画像」とを含み、さらに、「視認性」について設定された属性値「悪い」と、「調整範囲」について設定された属性値「サイズ、方向…」とを含む。
情報9081は、オブジェクト908に対して設定された属性値を模式的に表す。より具体的には、情報9081は、オブジェクト908に付与された第1属性「印字領域」と、第2属性「(種類:)文字」とを含み、さらに、「視認性」について設定された属性値「悪い」と、「調整範囲」について設定された属性値「サイズ、…」とを含む。
[視認性のレベルの設定]
各オブジェクトの属性値「視認性」の設定について説明する。本明細書では、属性値「視認性」の値を「視認性レベル」とも言う。
CPU20は、ラスターデータ内の各オブジェクトの視認性レベルを、各オブジェクトが対応する印刷データ内のオブジェクトの情報を用いて算出し、算出されたレベルを属性値「視認性」の値として設定する。
一例では、視認性レベルは、印刷データ内のオブジェクトのフォントサイズに基づいて算出される。より具体的には、印刷データ内のオブジェクトのフォントサイズが予め定められた閾値(たとえば、6ポイント)を超える場合には当該オブジェクトの視認性レベルは「よい」であり、当該閾値以下である場合には当該オブジェクトの視認性レベルは「悪い」である。視認性レベルは、「よい」と「悪い」以外に、3以上の段階で表現されてもよい。閾値は、第2属性ごとに設定されていてもよい。さらに、ラスターデータ内の各オブジェクトに設定される属性値は、オブジェクトの色を含んでいてもよく、上記閾値は、オブジェクトの色に従って設定されていてもよい。
他の例では、視認性レベルは、印刷データ内のオブジェクトのサイズに基づいて算出される。より具体的には、印刷データ内のオブジェクトのサイズ(縦および横の長さの双方)が予め定められた閾値を超える場合には当該オブジェクトの視認性レベルは「よい」であり、当該閾値以下である場合には当該オブジェクトの視認性レベルは「悪い」である。
他の例では、視認性レベルは、オブジェクトが外接する矩形における中間調画像のマトリクスデータについて、所定のアルゴリズムに従った計算の結果として取得された数値に基づいて設定されてもよい。利用されるアルゴリズムは、統計学に従って構築されたもの、人工知能を用いて構築されたもの、などを含む公知あらゆるものであってもよい。また、利用されるアルゴリズムは、所与の手法(たとえば、文献「"A Foreground/Background Separation Algorithm for Image Compression",Patrice Y. Simardら、平成31年2月15日検索、[online]、インターネット、<URL:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/08/Simard_Malvar_SLIm_DCC2004.pdf>」に記載されたもの)に従ってラスターデータ内のオブジェクトのフォアグラウンド領域の面積とバックグラウンド領域の面積との比(印字部分と非印字部分との割合)に基づいて設定されてもよい。
[原稿調整処理]
図9および図10は、図5のステップS20(原稿調整処理)のサブルーチンのフローチャートである。以下、原稿調整処理の内容を説明する。
ステップS200にて、CPU20は、ステップS10において生成されたラスターデータにおいてオブジェクトを検出し、検出されたオブジェクトのそれぞれに属性値を設定する。各オブジェクトに設定される属性値の種類は、各オブジェクトに対して付与された属性(第1属性および第2属性)に基づく。
ステップS202にて、CPU20は、画像処理装置1における印刷設定が「用紙節約」および「視認性」のいずれを優先させるものであるかを判定する。印刷設定は、画像処理装置1に対して設定されていてもよいし、印刷ジョブごとに設定されてもよい。CPU20は、たとえば、ユーザーによる操作装置11aの操作に応じて印刷設定を取得してもよい。CPU20は、印刷設定が「用紙節約」を優先させる場合にはステップS204へ制御を進め、印刷設定が「視認性」を優先させる場合にはステップS216へ制御を進める。
ステップS204にて、CPU20は、印刷データにおいて非印字領域の削減が可能であるか否かを判断する。一例では、CPU20は、ラスターデータにおいて用紙の天地方向に沿って予め定められた閾値以上の連続した非印字領域が存在しているか否かを判断し、そのような連続した非印字領域が存在している場合には非印字領域の削減が可能であり、存在していない場合には非印字領域の削減は可能ではないと判断する。CPU20は、非印字領域の削減が可能であると判断するとステップS206へ制御を進め(ステップS204にてYES)、そうではないと判断するとステップS208へ制御を進める(ステップS204にてNO)。
ステップS206にて、CPU20は、非印字領域に対応する印刷データ内の領域が削減されるように印刷データを更新して、図5へ制御を戻す。なお、ステップS206にて、たとえば、CPU20は、印刷データを、ラスターデータ内の行間オブジェクトに対応する部分を削減するように更新してもよい。この場合、一例では、CPU20は、印刷データにおいて行間として設定されているポイント数を低減することによって、当該印刷データを更新する。他の例では、CPU20は、印刷データにおいて文字を含む2つの行の間に配置された空白の行数を低減するように、当該印刷データを更新する。
ステップS208にて、CPU20は、オブジェクトの縮小が可能か否かを判断する。一例では、CPU20は、視認性レベルの値として「よい」を有するオブジェクトがラスターデータ内にあるか否かを判断し、そのようなオブジェクトがあると判断するとステップS208へ制御を進め(ステップS208にてYES)、そのようなオブジェクトが無いと判断するとステップS212へ制御を進める(ステップS208にてNO)。
ステップS210にて、CPU20は、印刷データを、当該印刷データ内のオブジェクトを縮小するように更新し、その後、制御を図5へ戻す。この場合、一例では、CPU20は、印刷データ内のオブジェクトであって、ラスターデータ内の視認性レベルの値として「よい」を有するオブジェクトに対応するものを縮小する。たとえば、ラスターデータ内で視認性レベルの値「よい」を有する文字オブジェクトがある場合、CPU20は、当該文字オブジェクトに対応する印刷データ内のオブジェクトを縮小するように当該印刷データを更新する。
ステップS210における縮小の一例は、フォントサイズの低減である。縮小の他の例は、画像オブジェクトのサイズの縮小である。ステップS210における縮小に関して、一回の縮小においてフォントなどのサイズを縮小する割合(80%など)が予め設定されていてもよい。縮小の対象となるオブジェクトは、属性値「調整範囲」の値として「サイズ」または「フォントサイズ」を設定されているものに限定されてもよい。縮小される度合いは、オブジェクトの種類(文字、画像、など)ごとに設定されていてもよい。
ステップS212にて、CPU20は、ラスターデータの視認性がオブジェクトの拡大により向上し得るか否かを判断する。たとえば、ラスターデータにおいて、属性値「視認性」の値として「悪い」を設定されているオブジェクトがある場合、ラスターデータの視認性はオブジェクトの拡大により向上し得ると判断される。CPU20は、ラスターデータの視認性がオブジェクトの拡大により向上し得ると判断するとステップS214へ制御を進め(ステップS212にてYES)、そうでなければそのまま図5へ制御を戻す(ステップS212にてNO)。
ステップS214にて、CPU20は、印刷データを、属性値「視認性」の値として「悪い」を設定されているオブジェクトに対応する印刷データ内のオブジェクトを拡大するように更新する。拡大の一例は、文字オブジェクトにおける文字のポイント数の拡大である。他の例は、画像の拡大である。一回の拡大においてフォントなどのサイズを拡大する割合(120%など)が予め設定されていてもよい。拡大される度合いは、オブジェクトの種類(文字、画像、など)ごとに設定されていてもよい。
以上、図9では、余白を削減するために、3つの手段(非印字領域の削減、オブジェクトの縮小、および、オブジェクトの拡大)が提示される。
図10には、ステップS216以降の制御が示される。図10における「ステップS216,S218」「ステップS220,S222」および「ステップS224,S226」のそれぞれの制御は、図9における「ステップS212,S214」「ステップS204,S206」および「ステップS208,S210」のそれぞれの制御に相当する。すなわち、図10のステップS216〜S226の制御の群には、ステップS204〜S214の制御の群に含まれる制御内容がそれらの順序を変更されて配置されている。特に、ステップS216の制御はステップS212の制御に対応するため、図9および図10では、これらの制御に共通の符号(C)が付されている。同様に、ステップS220とステップS204には共通の符号(A)が付され、ステップS224とステップS208には共通の符号(B)が付されている。
より具体的には、ステップS216にてオブジェクトの拡大によりラスターデータの視認性が向上し得ると判断されると、ステップS218にて、印刷データが、ラスターデータ内のオブジェクトに対応するオブジェクトが拡大されるように更新される。ステップS220にて非印字領域の削減が可能であると判断されると、ステップS222にて、印刷データが、ラスターデータ内の非印字領域に対応する領域が削減されるように更新される。ステップS224にてオブジェクトの縮小が可能であると判断されると、ステップS226にて、印刷データが、ラスターデータ内の(縮小可能な)オブジェクトに対応するオブジェクトが縮小されるように更新される。
以上より、図9および図10に示された原稿調整処理では、印刷設定が「用紙節約」を優先させるものである場合(ステップS204〜S214)、非印字領域の削減(ステップS204,S206)およびオブジェクトの縮小(ステップS208,S210)が、オブジェクトの拡大(ステップS212,S214)より優先して実施される。一方、印刷設定が「視認性」を優先させるものである場合(ステップS216〜S226)、オブジェクトの拡大(ステップS2224,S226)が、非印字領域の削減(ステップS220,S222)およびオブジェクトの縮小(ステップS224,S226)より優先して実施される。
図9および図10に示された原稿調整処理は、図5のステップS16において最終頁に余白が無いと判断されるまで繰り返し実施される。すなわち、本開示に従った画像処理装置1では、原稿調整処理は、ラスターデータの最終頁に余白が無いと判断されるという条件が成立するまで繰り返されてもよい。また、図5においてステップS12の制御として説明されたように、原稿調整処理は、所与の回数実施されたという条件が成立するまで繰り返されてもよい。さらに、図5においてステップS14の制御として説明されたように、更新の前後で印刷データまたは当該印刷データから生成されたラスターデータに変更がなかったという条件が成立するまで繰り返されても良い。上記3つの条件のうち複数の条件が成立するまで繰り返されても良い。
[原稿調整処理の具体例]
図11〜図15を参照して、原稿調整処理による印刷データの更新の具体例を説明する。まず、図11を参照して、更新前の印刷データに従った印刷について説明する。
図11は、更新前の印刷データに従ったラスターデータを示す図である。図11の印刷データ1000は、画像1001〜1005を含む。
ラスターデータ1100は、印刷データ1000から生成されたラスターデータである。ラスターデータ1100は、印刷データ1000を4in1で印刷するためのデータであり、画像1110,1120を含む。画像1110は、1枚目の用紙に印刷される画像を表す。画像1120は、2枚目の用紙に印刷される画像を表す。ラスターデータの画像1110は、印刷データの画像1001〜1004を含む。ラスターデータの画像1120は、印刷データの画像1005のみを含む。ラスターデータの画像1120は、最終頁に該当する。ラスターデータの画像1120には、左下および右半分に余白を含む。したがって、図5の処理において印刷データ1000のラスターデータが生成された場合、(ステップS12,S14の判断の結果がNOであることを条件として)ステップS16からステップS20へと制御が進められ、調整処理が実施される。
(印刷設定が「用紙節約」を優先するものである場合)
図12および図13を参照して、印刷設定が「用紙節約」を優先するものである場合の印刷データの更新の具体例を説明する。
図12は、更新による印刷データの変化の一例を示す図である。図12には、印刷データ1000に加え、印刷データ1210,1220が示される。
印刷データ1210は、印刷データ1000が、非印字領域が削減され、また、オブジェクトが縮小されるように更新された、印刷データの一例である。印刷データ1210は、画像1211〜1213を含む。画像1211〜1213のそれぞれは等倍で1頁分の画像を構成する。符号1214は、印刷データ1210が4in1で印刷される際の4頁目(ラスターデータでは、1枚目の用紙の左下に位置する部分)を仮想的に表す。
印刷データ1210では、たとえば、印刷データ1000の非印字領域が削減(行間が縮小)されることにより、画像1211における行間が画像1001における行間より狭い。また、印刷データ1000のオブジェクトが縮小されたことにより、画像1212における文字列「Lxxxx」,「Mxxxx」のそれぞれが、画像1003,1004で示されていたよりも小さいフォントサイズで示されている。
図12の例では、印刷データ1210が4in1で印刷されるようにラスターデータが生成されると、当該ラスターデータでは、符号1214として示された部分が1枚目の用紙における余白を構成する。したがって、印刷データ1210が再度更新される。
印刷データ1220は、印刷データ1210が、オブジェクトを拡大されるように更新された後の印刷データの一例である。印刷データ1220は、画像1221〜1224を含む。画像1221〜1224のそれぞれは等倍で1頁分の画像を構成する。画像1221〜1224では、画像1211〜1213に表示されていた文字が拡大されている。
印刷データ1210が3頁分の画像しか含まなかったのに対し、印刷データ1220は4頁分の画像1221〜1224を含む。したがって、画像1221〜1224が4in1で印刷されるように印刷データ1220のラスターデータが生成されると、当該ラスターデータは余白を含まない(または、印刷データ1210のラスターデータにおいて生じていたものよりは生じるは余白は小さい)。画像処理装置1は、印刷データ1000を印刷データ1210へと更新し、さらに、印刷データ1220へと更新した後、印刷データ1220の印刷処理の開始を決定する。
図13は、印刷データ1220が4in1で印刷されるために生成されたラスターデータの一例を示す図である。図13のラスターデータ1300は、1頁分の画像1310を含む。印刷データ1220を構成する4頁分の画像1221〜1224が用紙の1頁に集約されて印刷されていることを表す。
以上説明されたように、画像処理装置1は、単にオブジェクトを縮小することによって用紙を節約することのみを想定する従来の装置とは異なり、オブジェクトを縮小することによって用紙を節約した上で、用紙の余白を有効利用するためにオブジェクトの拡大をも実施し得る。また、画像処理装置1は、ラスターデータにおいて余白の有無を判断するため、印刷データに実際に使用される用紙において発生し得る余白に応じた処理を実施し得る。
(印刷設定が「視認性」を優先するものである場合)
図14および図15を参照して、印刷設定が「視認性」を優先するものである場合の印刷データの更新の具体例を説明する。
図14は、更新による印刷データの変化の他の例を示す図である。図14には、印刷データ1000に加えて、印刷データ1410,1420が示される。
印刷データ1410は、画像1411〜1419を含む。印刷データ1410は、印刷データ1000が、オブジェクトを拡大されるように更新された後の印刷データの一例である。たとえば、画像1411〜1414では、画像1001〜1003内の文字が拡大されて示され、また、画像1417〜1419では、画像1009内の文字が拡大されて示されている。
印刷データ1410は、9頁分の画像を含む。したがって、印刷データ1410が4in1で印刷されるようにラスターデータが生成されると、ラスターデータの3頁目には印刷データの9頁目の画像しか含まれない。すなわち、ラスターデータの3頁目には比較的大きな余白が発生することが想定される。これにより、印刷データ1410はさらに更新される。
印刷データ1420は、画像1421〜1427を含む。印刷データ1420は、印刷データ1410が、非印字領域を削減されるように更新された後の印刷データの一例である。たとえば、画像1421では、画像1411よりも行間が削減されている。
印刷データ1420は、7頁分の画像を含む。したがって、印刷データ1420が4in1で印刷されるようにラスターデータが生成されると、ラスターデータの2頁目において発生する余白は4分の1頁分と想定され、印刷データ1410(9頁分)のラスターデータの最終頁において発生することが想定された余白(4分の3頁分)よりも小さい。画像処理装置1は、印刷データ1000を印刷データ1410へと更新し、さらに、印刷データ1420へと更新した後、印刷データ1420の印刷処理の開始を決定する。
図15は、印刷データ1420が4in1で印刷されるために生成されたラスターデータの一例を示す図である。図15のラスターデータ1500は、1頁目の画像1510と、2頁目の画像1520とを含む。画像1510は、印刷データ1420の最初の4頁分の画像1421〜1424が用紙の1頁に集約されて印刷されていることを表す。画像1520は、印刷データ1420の残りの3頁分の画像1425〜1427が用紙の1頁に集約されて印刷されていることを表す。
以上説明されたように、画像処理装置1は、視認性の向上のためにオブジェクトを拡大するように印刷データを更新した後(印刷データ1410)、用紙の節約のために非印字領域を削減するように印刷データを更新する(印刷データ1420)。画像処理装置1は、用紙の節約のために、非印字領域の削減に代えて、または、非印字領域の削減とともに、オブジェクトを縮小するように印刷データを更新しても良い。すなわち、画像処理装置1は、単に視認性向上のためだけに印刷データを更新するのではなく、可能な限り用紙節約のためにも印刷データを更新し得る。
(ラスターデータにおける印字領域が含まれる範囲)
次に、ラスターデータにおける印字領域の拡大と縮小について説明する。図16は、印刷データの更新による、ラスターデータにおいて印字領域が含まれる範囲の変化を説明するための図である。図16には、図14の印刷データ1410を4in1で印刷するために生成されたラスターデータ1600が示される。
<ラスターデータにおける印字領域の拡大>
図14を参照して説明されたように、印刷データが、オブジェクトを拡大するように更新されると、印刷データから生成されるラスターデータは、図11のラスターデータ1100から図16のラスターデータ1600へと変化する。
図11のラスターデータ1100は、印刷データの画像1111〜画像1114によって構成される1頁分の画像1110と、印刷データの画像1121によって構成される0.25頁分の画像1120とを含む。すなわち、ラスターデータ1100において印字領域が含まれる範囲は用紙の1.25頁分(1頁分+0.25頁分)である。
一方、図16のラスターデータ1600は、印刷データ1410の画像1411〜画像1414によって構成される1頁分の画像1610と、印刷データ1410の画像1415〜画像1419によって構成される1頁分の画像1620と、印刷データ1410の画像1419によって構成される0.25頁分の画像1630とを含む。すなわち、ラスターデータ1600において印字領域が含まれる範囲は用紙の2.25頁分(1頁分+1頁分+0.25頁分)である。
以上より、ラスターデータが図11のラスターデータ1100から図16のラスターデータ1600へと変化した場合、ラスターデータにおける印字領域が含まれる範囲は、用紙の1.25頁分から2.25頁分へと拡大される。すなわち、印刷データが、オブジェクトを拡大するように更新されると、ラスターデータにおける印字領域が含まれる範囲は拡大する。
<ラスターデータにおける印字領域の縮小>
図14を参照して説明されたように、印刷データが、非印字領域を削減するように更新されると、印刷データから生成されるラスターデータは、図16のラスターデータ1600から図15のラスターデータ1500へと変化する。
図15のラスターデータ1500は、印刷データの画像1421〜画像1424によって構成される1頁分の画像1510と、印刷データの画像1425〜画像1427によって構成される0.75頁分の画像1120とを含む。すなわち、ラスターデータ1100において印字領域が含まれる範囲は用紙の1.25頁分(1頁分+0.75頁分)である。
以上より、ラスターデータが図16のラスターデータ1600から図15のラスターデータ1500へと変化した場合、ラスターデータにおける印字領域が含まれる範囲は、用紙の2.25頁分から1.75頁分へと縮小される。すなわち、印刷データが、非印字領域を削減するように更新されると、ラスターデータにおける印字領域が含まれる範囲は縮小する。なお、印刷データが、オブジェクトを縮小するように更新されても、ラスターデータにおける印字領域が含まれる範囲は縮小する。
[画像処理システムの構成の変形例]
図17は、コンピューター2が印刷データを更新する画像処理システムにおいて実施される処理の一例のフローチャートである。図17の例では、コンピューター2における、アプリケーションとプリンタードライバーとのデータのそれぞれにおける処理が示される。アプリケーションの一例は、文書作成用アプリケーションである。他の例は、所与の形式の文書を閲覧するためのブラウザーアプリケーションである。
以下、図17を参照して、アプリケーションとプリンタードライバーのそれぞれにおける処理の流れを説明する。アプリケーション側の処理の各ステップには、「ステップSA100」等の「SA」を含む符号が付される。プリンタードライバー側の処理の各ステップには、「ステップSB100」等の「SB」を含む符号が付される。一実現例では、アプリケーションおよびプリンタードライバーのいずれもが、CPU201が所与のプログラムを実行することによって実現される。なお、アプリケーションおよびプリンタードライバーによって実現される機能は、2以上のプロセッサーによって実現されても良い。
ステップSA100にて、CPU201は、プリンタードライバーに対して、文書の印刷を指示する。ステップSA100は、たとえば、アプリケーションがユーザーから、当該アプリケーションが処理対象としている文書の印刷指示を受け付けたときに実施される。文書の一例は、文書作成用アプリケーションが作成している文書ファイルである。他の例は、ブラウザーアプリケーションが閲覧対象としている文書ファイルである。図17に示された例では、当該文書が「印刷データ」の一例である。
ステップSB100〜SB106において、CPU201は、図5のステップS10〜S16に相当する制御を実行する。すなわち、ステップSB100にて、CPU201は、対象となっている文書のラスターデータを生成する。
ステップSB102にて、CPU201は、対象となっている文書の更新指示(後述するステップSB108)の出力回数が閾値T1以上であるか否かを判断する。CPU201は上記指示の出力回数がT1以上であると判断するとステップSB112へ制御を進め(ステップSB102にてYES)、そうでなければステップSB104へ制御を進める(ステップSB102にてNO)。
ステップSB104にて、CPU201は、最新の2回のステップSB100のそれぞれで生成された2つのラスターデータの間に相違があるか否かを判断する。CPU201は、相違があると判断するとステップSB18へ制御を進め(ステップS14にてYES)、相違が無いと判断するとステップS16へ制御を進める(ステップS14にてNO)。
たとえば、2回目のステップSB104では、1回目のステップSB100で生成されたラスターデータと、2回目のステップSB100で生成されたラスターデータとの間の、相違の有無が判断される。なお、以降特記される場合を除き、「ラスターデータ」とは最新のラスターデータを意味する。ステップSB100におけるラスターデータの生成回数が2回未満である場合には、ステップSB104からステップSB106へ制御が進められる。
ステップSB104における「相違」は、「所与の基準以上の相違」であってもよい。一実現例では、ステップSB104において、CPU201は、「用紙が送られる方向に連続する非印字領域が所与の量以上増えた」場合に、2つのラスターデータの間で相違があっったと判断し、そうではない場合に、2つのラスターデータの間で相違がないと判断してもよい。
ステップSB106にて、CPU201は、ラスターデータの最終頁に余白が無いか否かを判断する。CPU201は、ラスターデータの最終頁に余白が無いと判断するとステップSB108へ制御を進め(ステップSB106にてYES)、最終頁に余白が有ると判断するとステップSB110へ制御を進める(ステップSB106にてNO)。ステップSB106において、CPU201は、用紙の天地方向に沿って所与の長さ以上連続する余白(用紙の終端まで連続する非印字領域)が存在することを条件として、「余白がある」と判断しても良い。
ステップSB108にて、CPU201は、ラスターデータの印刷の実行を決定する。一実現例では、ステップSB108にて、CPU201は、画像処理装置1へラスターデータを送信し、当該ラスターデータの印刷を指示する。
ステップSB110にて、CPU201は、アプリケーションに対して文書の更新を指示する。ステップSB110の処理内容は、図18および図19を参照して後述される。
ステップSB110における指示に応じて、アプリケーションとしてのCPU201は、ステップSA102にて文書を更新(修正)する。
ステップSA104にて、CPU201は、更新後の文書をプリンタードライバーへ送信する。
プリンタードライバーとしてのCPU201は、ステップSB100にて、更新後の文書のラスターデータを生成する。
図18および図19は、図17のステップSB110(文書の更新を指示)のサブルーチンのフローチャートである。以下、ステップSB110の画像処理装置の内容を説明する。
図18および図19に示された処理は、図9および図10に示された処理に相当する。図18および図19に示されたステップSB200〜ステップSB226の各ステップは、図9および図10に示されたステップS200〜ステップS226の各ステップに相当する。たとえば、ステップSB200において、CPU201は、ステップS200と同様に、ステップSB100にて生成されたラスターデータにおいてオブジェクトを検出し、検出されたオブジェクトのそれぞれに属性値を設定する。
なお、図9のステップS206,S210,S214においてCPU20が印刷データを更新していたのに対し、ステップSB206,SB210,SB214のそれぞれにおいて、CPU201は、文書の更新(非印字領域の削減、オブジェクトの縮小、または、オブジェクトの拡大)をアプリケーションに対して指示する。
また、図10のステップS218,S222,S226のそれぞれにおいてCPU20が印刷データを更新していたのに対し、ステップSB218,SB222,SB226ののそれぞれにおいて、CPU201は、文書の更新(オブジェクトの拡大、非印字領域の削減、または、オブジェクトの縮小)をアプリケーションに対して指示する。
[その他の変形例]
以上説明された実施の形態では、図5等を参照して説明されたように、ステップS20(図9および図10のステップS200〜ステップS226)において印刷データが更新される。ラスターデータに複数のオブジェクトが含まれる場合、一回の印刷データの更新において、複数のオブジェクトについての更新(非印字領域の削減、オブジェクトの縮小、または、オブジェクトの拡大)が実施されてもよいし、1つのオブジェクトについての更新(非印字領域の削減、オブジェクトの縮小、または、オブジェクトの拡大)のみが実施されてもよい。一例では、更新の対象となるオブジェクトは、オブジェクトの属性値(サイズなど)に従って決定される。
以上説明された実施の形態では、印刷データをラスターデータに変換し、ラスターデータに基づいて最終頁の余白の有無を判定するようにしたが、これに限らず、ラスターデータに変換することなく(生成することなく)、印刷データの各オブジェクトの天地方向の長さ、配置等に基づいて、ラスターデータに変換した際のトータルの印字領域の長さを推定して最終頁の余白の有無を判定するようにしてもよい。
今回開示された各実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合わせても、実施することが意図される。