(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-17
(45)【発行日】2024-12-25
(54)【発明の名称】画像処理システム及び画像処理方法
(51)【国際特許分類】
H04N 1/387 20060101AFI20241218BHJP
G06T 5/50 20060101ALI20241218BHJP
【FI】
H04N1/387
G06T5/50
(21)【出願番号】P 2021039528
(22)【出願日】2021-03-11
【審査請求日】2024-03-06
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】山田 顕季
(72)【発明者】
【氏名】矢野 健太郎
【審査官】松永 隆志
(56)【参考文献】
【文献】特開2015-89032(JP,A)
【文献】特開2016-192742(JP,A)
【文献】特開2005-020436(JP,A)
【文献】特開平09-154006(JP,A)
【文献】特開2004-9454(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 1/387
G06T 5/50
(57)【特許請求の範囲】
【請求項1】
元画像の描画情報が多重化された印刷物を光学的に読み取り、読取画像データを取得する読取手段と、
前記読取手段により取得された前記読取画像データから前記描画情報を抽出する抽出手段と、
前記抽出手段により抽出された前記描画情報に基づいて、前記元画像を表す元画像データを取得する取得手段と、
前記読取画像データと前記元画像データ
とをそれぞれの画像データが示す画像を複数領域に分割して比較し、該比較の結果に基づいて前記複数領域それぞれごとに前記読取画像データおよび前記元画像データのそれぞれを前記元画像データの補正に用いるか否かを決定し、前記決定した結果に基づき前記元画像データを補正する補正手段と、
前記補正手段により補正された補正済み元画像データを、前記印刷物の読取の結果として保存する保存手段と、
を備えることを特徴とする画像処理システム。
【請求項2】
前記補正手段は、前記読取画像データの画素値と前記元画像データの画素値を比較し、
該比較の結果に基づく該決定の結果に基づいて、前記元画像データを補正することを特徴とする請求項1に記載の画像処理システム。
【請求項3】
前記補正手段は、
対象となる画像領域において、前記読取画像データの画素値と前記元画像データの画素値の差分が閾値より大きい場合、前記読取画像データの画素値を前記元画像データの画素値の代わりに、前記読取の結果として用いることにより、前記元画像データを補正することを特徴とする請求項2に記載の画像処理システム。
【請求項4】
前記補正手段は、前記差分が前記閾値より大きくない場合、該
対象となる画像領域について前記元画像データの補正を行わないことを特徴とする請求項3に記載の画像処理システム。
【請求項5】
前記比較の前に、前記読取手段により取得された前記読取画像データに対して正規化処理を実行する第1処理手段、をさらに備え、
前記比較は、前記正規化処理が実行された前記読取画像データを用いて行われることを特徴とする請求項1乃至
4のいずれか1項に記載の画像処理システム。
【請求項6】
前記比較の前に、前記読取手段により取得された前記読取画像データに対して前記読取手段の光学特性の補正処理を実行する第2処理手段、をさらに備え、
前記比較は、前記光学特性の補正処理が実行された前記読取画像データを用いて行われることを特徴とする請求項1乃至
5のいずれか1項に記載の画像処理システム。
【請求項7】
前記光学特性の補正処理の補正強度は、前記読取手段が前記読取画像データを取得する際に行われる前記光学特性の補正処理の補正強度よりも大きいことを特徴とする請求項
6に記載の画像処理システム。
【請求項8】
前記比較の前に、前記読取手段により取得された前記読取画像データに対して、前記描画情報を除去する除去処理を実行する第3処理手段、をさらに備え、
前記比較は、前記除去処理が実行された前記読取画像データを用いて行われることを特徴とする請求項1乃至
7のいずれか1項に記載の画像処理システム。
【請求項9】
前記描画情報を、前記元画像の画像データに多重化して、多重化済み画像データを生成する多重化手段と、
前記多重化手段により生成された前記多重化済み画像データに基づいて、前記印刷物を印刷するための印刷画像データを生成する生成手段と、
をさらに備えることを特徴とする請求項1乃至
8のいずれか1項に記載の画像処理システム。
【請求項10】
前記多重化手段により多重化される前記描画情報は、前記元画像の描画情報の一部であることを特徴とする請求項
9に記載の画像処理システム。
【請求項11】
前記画像処理システムは、情報処理装置と、画像処理装置とを含み、
前記情報処理装置は、前記多重化手段、前記生成手段、を備え、
前記画像処理装置は、前記読取手段、前記抽出手段、前記取得手段、前記補正手段、前記保存手段、を備える、
ことを特徴とする請求項
9又は
10に記載の画像処理システム。
【請求項12】
前記画像処理システムは、プリンタ機能とスキャナ機能を実行可能な画像処理装置であることを特徴とする請求項
9又は
10に記載の画像処理システム。
【請求項13】
画像処理システムにおいて実行される画像処理方法であって、
元画像の描画情報が多重化された印刷物を光学的に読み取り、読取画像データを取得する読取工程と、
前記読取工程において取得された前記読取画像データから前記描画情報を抽出する抽出工程と、
前記抽出工程において抽出された前記描画情報に基づいて、前記元画像を表す元画像データを取得する取得工程と、
前記読取画像データと前記元画像データ
とをそれぞれの画像データが示す画像を複数領域に分割して比較し、該比較の結果に基づいて前記複数領域それぞれごとに前記読取画像データおよび前記元画像データのそれぞれを前記元画像データの補正に用いるか否かを決定し、前記決定した結果に基づき前記元画像データを補正する補正工程と、
前記補正工程において補正された補正済み元画像データを、前記印刷物の読取の結果として保存する保存工程と、
を有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像を処理する画像処理システム及び画像処理方法に関する。
【背景技術】
【0002】
原稿画像に基づいてプリンタにより印刷された画像をスキャナで読取り、読取データとして保存するスキャン機能が知られている。その際、印刷工程及び読取工程を経て生成された読取データの表す画像の画質は、元の原稿画像に比べて劣化することがある。
【0003】
特許文献1では、原稿画像中の色情報にプリンタの出力特性を加味して出力画像色を推定し、その推定色を印刷画像中に多重化情報として埋め込み、スキャナで読み取られた画像から多重化情報を抽出して、劣化した色から復元することが記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
印刷工程及び読取工程を経て劣化した画像からの復元には、更なる精度が求められる。
【0006】
本発明は、印刷工程及び読取工程を経て劣化した画像から、より精度よく復元させる画像処理システムおよび画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するため、本発明に係る画像処理システムは、元画像の描画情報が多重化された印刷物を光学的に読み取り、読取画像データを取得する読取手段と、前記読取手段により取得された前記読取画像データから前記描画情報を抽出する抽出手段と、前記抽出手段により抽出された前記描画情報に基づいて、前記元画像を表す元画像データを取得する取得手段と、前記読取画像データと前記元画像データとをそれぞれの画像データが示す画像を複数領域に分割して比較し、該比較の結果に基づいて前記複数領域それぞれごとに前記読取画像データおよび前記元画像データのそれぞれを前記元画像データの補正に用いるか否かを決定し、前記決定した結果に基づき前記元画像データを補正する補正手段と、前記補正手段により補正された補正済み元画像データを、前記印刷物の読取の結果として保存する保存手段とを備えることを特徴とする。
【発明の効果】
【0008】
本発明によれば、印刷工程及び読取工程を経て劣化した画像から、より精度よく復元させることができる。
【図面の簡単な説明】
【0009】
【
図1】印刷システムの構成を示すブロック図である。
【
図2】PDL多重化印刷処理と多重化PDL抽出処理を示すフローチャートである。
【
図3】PDLデータで表される原稿画像を示す図である。
【
図4】印刷及び読取りによる画像の劣化を説明するための図である。
【
図5】補正済みPDLデータの生成処理を示すフローチャートである。
【
図7】マスクデータで表される画像パターンを示す図である。
【
図8】多重化方法の一例を説明するための図である。
【
図9】手書き文字が追記された画像に対する処理を説明するための図である。
【
図10】PDLデータで表される原稿画像を示す図である。
【
図11】補正済みPDLデータで表される原稿画像を示す図である。
【
図12】補正済みPDLデータの生成処理を示すフローチャートである。
【
図13】手書き文字の追記画像に対する処理を説明するための図である。
【
図14】埋め込みに用いたパターンの空間周波数の特性を表す図である。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0011】
[第1実施形態]
図1は、本実施形態における印刷システム(画像処理システム)の構成を示すブロック図である。
図1に示すように、印刷システムは、MFP(Multi Function Printer)110と、そのホスト装置としてのパーソナルコンピュータ(PC)100を含んで構成される。MFP110は、本体にプリンタ機能及びスキャナ機能など、複数の機能を一体的に有するプリンタであり、両機能を連携させて行うコピー機能を有する。
【0012】
PC100は、以下の要素を含んで構成される。CPU101は、HDD103やRAM102に保持されているプログラムを読み出して実行する。RAM102は、揮発性のストレージであり、プログラムやデータを一時的に保持する。また、HDD103は、不揮発性のストレージであり、本実施形態で用いられるプログラムやデータを保持する。データ転送インタフェース(I/F)104は、MFP110との間におけるデータの送受信を制御する。データ送受信の接続方式としては、例えば、USB、IEEE1394、LAN等の有線接続や、Bluetooth(登録商標)、WiFi等の無線接続、並びに両者を含む接続が用いられる。HIDインタフェース(I/F)105は、キーボードやマウス等のHID(Human Interface Device)を制御するインタフェースであり、ユーザ操作による入力を受け付ける。ディスプレイインタフェース(I/F)106は、ディスプレイ(不図示)の表示を制御する。
【0013】
MFP110は、以下の要素を含んで構成される。CPU111は、ROM113やRAM112に保持されているプログラムを読み出して実行する。RAM112は、揮発性のストレージであり、プログラムやデータを一時的に保持する。また、ROM113は不揮発性のストレージであり、本実施形態で用いられるプログラムやデータを保持する。
【0014】
データ転送インタフェース(I/F)114は、PC100との間におけるデータの送受信を制御する。記録ヘッドコントローラ115は、不図示の記録ヘッドで処理可能に変換された記録データに基づいて、記録ヘッドに搭載されたヒータの加熱動作を制御し、ノズルからインク滴を吐出させる。例えば、記録ヘッドコントローラ115は、RAM112の所定のアドレスから制御パラメータと記録データを読み込むように構成される。CPU111が、制御パラメータと記録データをRAM112の所定のアドレスに書き込むと、記録ヘッドコントローラ115が起動し、記録ヘッドに搭載されたヒータの加熱動作が行われる。
【0015】
画像処理アクセラレータ116は、ハードウエアによって構成され、CPU111よりも高速に画像処理を実行可能である。例えば、画像処理アクセラレータ116は、RAM112の所定のアドレスから画像処理に必要なパラメータとデータを読み込むように構成される。CPU111がパラメータとデータをRAM112の所定のアドレスに書き込むと、画像処理アクセラレータ116が起動し、画像処理が行われる。なお、プリンタの仕様などに応じて、画像処理アクセラレータ116ではなく、CPU111による処理のみでパラメータの作成処理および画像処理を実行するようにしても良い。
【0016】
スキャナコントローラ117は、不図示のスキャナユニットに対して、原稿台に設置された原稿への光の照射を行わせる。スキャナコントローラ117は、CCD等の撮像素子が原稿からの反射光に基づいて取得した光量情報を、スキャナコントローラ117に送信するようスキャナユニットに対して指示する。例えば、CPU111が、制御パラメータと読取データ書込みアドレスをRAM112の所定のアドレスに書き込むと、スキャナコントローラ117が起動する。そして、スキャナユニットに搭載されたLEDの発光制御、スキャナユニットからの光量情報の取得、RAM112内の読取データ書込みアドレス以降への光量情報の書込みが行われる。
【0017】
モータコントローラ118は、不図示の複数のモータユニットのモータ動作を制御する。モータコントローラ118の制御対象のモータには、記録ヘッドを記録媒体に対して相対的に移動させるためのモータと、スキャナユニットを原稿が設置されたプラテンに対して相対的に移動させるためのモータが含まれる。他には、記録ヘッドのメンテナンス用のモータが含まれる。PC100とMFP110は、
図1に示す構成に限られず、PC100とMFP110それぞれが実行可能な機能に応じたブロックを適宜含み得る。
【0018】
本実施形態では、PC100は、印刷対象の画像データに基づいて、MFP110で印刷を行わせるようMFP110を制御する。その際、画像データの表す画像(元画像)の描画情報の多重化が行われる。その結果、MFP110により印刷された印刷物は、元画像の描画情報が多重化されたものとなっている。なお、本実施形態では、描画情報の一例としてPDLを説明する。そして、印刷物は、MFP110のスキャナユニットにより光学的に読み取られ、読取画像データとして生成される。読取画像データの生成の際には、多重化された描画情報が抽出される。本実施形態では、多重化された描画情報が表す元画像データと読取画像データとの比較結果に基づいて、元画像データを補正する。
【0019】
印刷工程および読取工程を経ると、各工程に起因した画質の劣化が生じ得る。一方、印刷物に対して手書き文字等がユーザにより追記された上で読取りが行われるケースを想定した場合、多重化された描画情報に基づいて元画像を復元させるだけでは、適切に読取画像データを生成することができない。本実施形態では、元画像データを補正することによって、各工程に起因して劣化した画像から復元させるとともに、上記で想定されるケースの場合においても適切に復元させることができる。
【0020】
図2は、PDL多重化印刷処理と多重化PDL抽出処理を示すフローチャートである。
図2におけるS201~S205は、PDL多重化印刷処理を示すフローチャートであり、印刷対象の画像データに基づいてMFP110により印刷が行われるまでの処理である。S211~S216は、多重化PDL抽出処理を示すフローチャートであり、印刷物がMFP110のスキャナユニットにより読み取られ、読取画像データが保存されるまでの処理である。
【0021】
最初に、PDL多重化印刷処理について説明する。S201において、PC100のCPU101は、印刷対象の画像データとして、PDLデータを取得する。なお、印刷対象の画像データは、PC100内のアプリケーションにより作成されたものであっても良いし、サーバ等、外部の装置から取得したものであっても良い。
【0022】
ここで、PDLとは、ページ記述言語(Page Description Language)の略であり、ページ単位で描画命令の組で構成される。描画命令の種類は、PDL仕様毎に定義されているが、例えば、以下の4種類が定義される。
【0023】
命令1:DOT描画命令(X、Y、色、点サイズ)
命令2:LINE描画命令(X1、Y1、X2、Y2、色、線種、線幅)
命令3:BOX描画命令(X1、Y1、X2、Y2、色、塗り形状)
命令4:TEXT描画命令(X1、Y1、色、フォント情報、文字列情報)
命令5:IMAGE描画命令(X1、Y1、X2、Y2、画像ファイル情報)
他にも、円弧を描くCIRCLE描画命令等、用途に応じた適宜描画命令が用いられて良い。また、PDLとして、例えば、PDF(Portable Document Format)や、XPS、HP-GL/2等が用いられる。
【0024】
図3は、PDLデータで表される原稿画像の一例を示す図である。
図3の原稿画像300は、1ページを表し、ここでは、横幅600画素、縦幅900画素の画素数を有する原稿画像として説明する。
【0025】
以下、
図3の原稿画像300に対応するPDLの一例を示す。
【0026】
<PAGE=001>
<BOX> 50, 75, 200, 300, GRAY, STRIPE </BOX>
<BOX> 420, 75, 550, 300, BLACK, FULL </BOX>
<BOX> 50,620, 200, 825, BLACK, NULL </BOX>
<TEXT> 50,620, 200, 825, BLACK, STD-18, “ABCXYZ123" </TEXT>
<LINE> 25, 25, 25, 700, BLACK, PLAIN, 3 </LINE>
<LINE> 25, 25, 450, 25, BLACK, PLAIN, 3 </LINE>
<IMAGE> 250, 350, 550, 825, “PORTRAIT.jpg" </IMAGE>
</PAGE>
1行目の<PAGE=001>は、ページ数を表すタグである。通常、PDLは複数ページを記述可能に設計されているので、PDL中にページの区切りを示すタグが記述されている。本例では、9行目の</PAGE>までが1ページ目であることを表しており、
図3の原稿画像300に相当する。2ページ目が存在する場合には、上記PDLに続いて<PAGE=002>が記述される。
【0027】
2行目の<BOX>から</BOX>までが上記の命令3であり、
図3のオブジェクト301に相当する。最初の2座標が描画開始点である左上座標(X1、Y1)を示し、続く2座標が描画終了点である右下座標(X2、Y2)を示す。色としてGRAY(灰色:R=128、G=128、B=128)が指定され、塗り形状として縞模様であるSTRIPE(縞模様)が指定されている。本例では、縞模様の向きについては常時右下方向への線としているが、線の角度や周期等をBOX命令中で指定可能としても良い。
【0028】
3行目のBOX命令は、
図3のオブジェクト302に相当する。本命令の場合、2行目の命令と異なり、色としてBLACK(黒色:R=0、G=0、B=0)が指定され、塗り形状としてベタ塗りであるFULLが指定されている。4行目のBOX命令及び5行目のTEXT命令は、
図3のオブジェクト303に相当する。まず、BOX命令でテキスト回りの枠線が記述される。本例では、BOX内部の塗り形状としてNULL(空白)が指定されている。
【0029】
5行目のTEXT命令では、文字のフォントとして”STD”(標準)が指定され、その文字サイズとして18ポイントが指定され、記述すべき文字列として”AMCXYZ123”が指定されている。6行目及び7行目のLINE命令は、
図3のオブジェクト304に相当する。まず、6行目のLINE命令により縦線が描画される。本例では、描画すべき線の種類としてPLAIN(実線)が指定され、描画すべき線の太さとして3画素が指定されている。同様に、7行目のLINE命令により横線が描画される。
【0030】
8行目のIMAGE命令は、
図3のオブジェクト305に相当する。本例では、当該領域に存在する画像のファイル名として”PORTRAIT.jpg”が指定されており、画像圧縮フォーマットであるJPEGファイルであることを表している。9行目に記載の</PAGE>は、当該ページの描画が終了したことを表している。
【0031】
PDLデータとしては、上記の描画命令群に加えて、”STD”フォントデータ、”PORTRAIT.jpg”画像ファイルを含むPDLファイルの形式としても良い。フォントデータや画像ファイルを別として管理する場合、描画命令だけでは文字・画像部分が形成できなくなってしまうことが想定され得るが、フォントデータや画像ファイルを含むPDLファイルの形式とすることで、そのような事態を防ぐことができる。以上のようなPDLデータが
図2のS201で取得される。
【0032】
S202において、CPU101は、S201で取得されたPDLデータのレンダリング処理を行う。レンダリング処理により、PDL中で記述されている各描画命令を実行し、画素毎の色情報で構成されるBitmap画像データが生成される。以下、S202で生成されるBitmap画像データをレンダリング済み画像データともいう。
【0033】
上述したように、
図3の原稿画像300は、横幅600画素、縦幅900画素から構成されるので、S202で生成されるBitmap画像データは600×900画素から構成される。また、各画素は、R/G/B各8bitの256階調で表されるとする。
【0034】
S203において、CPU101は、多重化済み画像データを生成する。ここでは、S201で取得されたPDLデータを、S202で生成されたレンダリング済み画像データに多重化情報として重畳する。これは、印刷物をスキャナユニットで読み取った後、多重化されたPDLデータを抽出可能とするためである。
【0035】
PC100のような情報処理装置で情報を扱うというのはバイナリデータを扱うことである。バイナリデータとは「0」もしくは「1」の情報であり、この「0」もしくは「1」の情報が連続でつながることにより、特定の意味を持つようになる。例えば、「hello」という情報をバイナリデータで扱う場合、文字コードの中の一つである「シフトJIS」を例にとると、「h」はバイナリデータの「01101000」に対応している。同様に「e」は「01100101」、「l」は「01101100」、「o」は「01101111」というバイナリデータに対応している。つまり、「hello」という文字は、バイナリデータで「0110100001100101011011000110110001101111」と表現できる。逆に「0110100001100101011011000110110001101111」というバイナリデータを取得できれば、「hello」という文字を取得することができる。このように、「0」もしくは「1」を判定できるようにデータを埋め込むことで、多重化を行うことができる。本実施形態では、「0」、「1」を生成するために、
図6(a)及び
図6(b)に示すような2つのマスクデータを用いる。
【0036】
図6(a)及び
図6(b)は、8×8画素で構成されたマスクデータであり、画像データに対してマスクデータの値を加算することで、画像データ内の8×8画素の領域に対して周期性を持ったパターンを与えることができる。例えば、デジタル画像データにおいては、1色8bitで表現され、0から255までのいずれかの値が割り当てられる。0から255の範囲外の値は、画像データとしては扱えないため、画素値の計算結果が0未満の場合や、256以上の値になった場合には、例えば0もしくは255を割り振り、有効範囲内に収められる。
図6(a)及び
図6(b)のマスクデータでは、画素値に±10の変化を与えているが、例えばマスク領域における画像データの値が全て255であった場合、その領域の値は245から265の範囲ではなく、245から255の範囲となる。本実施形態では、1色が8bitで表現されるとして説明しているが、1色が8bit以外で表現されても良い。デジタル画像データを扱う場合、1色をどのようなbit数で表現しても有効範囲は存在し、その範囲外になるような変化が与えられることはない。
【0037】
図7は、
図6(a)及び
図6(b)のマスクデータによって、画像にどのようなパターンを与えるかを視覚的に示した図である。
図7では、
図6(a)及び
図6(b)のマスクデータにおける「10」の位置を黒、「0」の位置を灰色、「-10」の位置を白で表現しており、多重化の対象となる画像には、斜め線が現れることとなる。
【0038】
図6(a)のマスクデータと
図6(b)のマスクデータを画像全体に対して交互に適応する疑似コードの一例を下記に示す。
――――――――――――――――――――――――――――――
01: int i, j, k, l;
02: int width = 640, height=480;
03: unsigned char *data = 画像データ;
04: int **maskA = マスクデータ;
05: bool isMaskA = true;
06: for(j = 0; j < height; j+=8){
07: for(i = 0; i < width; i+=8){
08: for(k = 0; k < 8; k++){
09: for(l = 0; l < 8; l++){
10: if(isMaskA == true){
11: data[(i+k)+(j+l)*width] += maskA[k][l];
12: }
13: }
14: }
15: }
16: }
――――――――――――――――――――――――――――――
本実施形態における多重化情報の多重化は、例えば、上記のような疑似コードにより実現される。続いて、S204において、CPU101は、印刷画像データを生成する。印刷画像データの生成では、例えば、以下の方法が用いられる。
【0039】
S204では、S203で生成されたRGB画素値で構成される多重化済み画像データの各画素に対して、色変換、インク色分解、出力特性変換、量子化、の4つの処理が行われる。
【0040】
色変換処理は、多重化済み画像データのRGB情報を、MFP110で印刷処理が可能に変換する処理である。一般的にPDL描画命令に記述されている色は、ディスプレイで表現される色値で設定されており、そのままの値をプリンタで出力した場合には異なる色が出力されてしまう。そのため、色変換処理が行われる。
【0041】
例えば、入力画素値(Rin、Gin、Bin)の組み合わせに対して、出力画素値(Rout、Gout、Bout)の組み合わせを算出するために、3次元のルックアップテーブル(LUT)が用いられる。例えば、入力値であるRin、Gin、Binがそれぞれ256階調を持つ場合、256×256×256の合計16,777,216組の出力値を持つテーブルTable1[256][256][256][3]を予め準備し、以下のように、出力画素値を算出する。
【0042】
Rout = Table1[Rin][Gin][Bin][0]
Gout = Table1[Rin][Gin][Bin][1]
Bout = Table1[Rin][Gin][Bin][2]
また、ルックアップテーブルのグリッド数を256グリッドから例えば16グリッド等に減らし、複数のグリッドのテーブル値を補間して出力値を決定する等、テーブルサイズを小さくするようにしても良い。
【0043】
インク色分解処理は、色変換処理の出力値であるRout、Gout、Boutを、インクジェット記録方式により記録する各インク色の出力値に変換する処理である。本実施形態では、シアン、マゼンタ、イエロー、ブラックの4色のインクを一例として想定する。本実施形態では、色変換処理と同様に、出力画素値(Rout、Gout、Bout)の組み合わせに対して、インク色画素値(C、M、Y、K)の組み合わせを算出するために、3次元のルックアップテーブルが用いられる。例えば、Table2[256][256][256][4]を予め準備し、以下のように、インク色画素値を算出する。
【0044】
C = Table2[Rout][Gout][Bout][0]
M = Table2[Rout][Gout][Bout][1]
Y = Table2[Rout][Gout][Bout][2]
K = Table2[Rout][Gout][Bout][3]
また、ルックアップテーブルのグリッド数を256グリッドから例えば16グリッド等に減らし、複数のグリッドのテーブル値を補間して出力値を決定する等、テーブルサイズを小さくするようにしても良い。
【0045】
出力特性変換処理は、各インク色の濃度を記録ドット数率に変換する。例えば、各色256階調の濃度を、各色1024階調のドット数率Cout、Mout、Yout、Koutに変換する。そのために、各インク色の濃度に対する記録ドット数率を設定した1次元のルックアップテーブルが用いられる。例えば、Table3[4][256]を予め準備し、以下のように、記録ドット数率を算出する。
【0046】
Cout = Table3[0][C]
Mout = Table3[1][M]
Yout = Table3[2][Y]
Kout = Table3[3][K]
また、ルックアップテーブルのグリッド数を256グリッドから例えば16グリッド等に減らし、複数のグリッドのテーブル値を補間して出力値を決定する等、テーブルサイズを小さくするようにしても良い。
【0047】
量子化処理は、各インク色の記録ドット数率Cout、Mout、Yout、Koutを、実際の各画素の記録ドットのOn/Offに変換する。量子化の方法としては、例えば、誤差拡散法やディザ法が用いられる。ディザ法の場合、例えば、以下のように、各画素位置に応じた閾値と比較し、各インク色の記録ドットのOn/Offを出力する。例えば、各記録ドットの発生確率は、Cout/1023、Mout/1023、Yout/1023、Kout/1023となる。
【0048】
Cdot = Halftone[Cout][x][y]
Mdot = Halftone[Mout][x][y]
Ydot = Halftone[Yout][x][y]
Kdot = Halftone[Kout][x][y]
以上のように、S204で印刷画像データの生成が行われる。S205において、CPU501は、S204で生成された印刷画像データをデータ転送インタフェース104を介してMFP110に送信し、MFP110において、記録媒体上に印刷が行われる。
【0049】
本実施形態では、以上のように、PDLデータを多重化情報として、レンダリング済み画像データに多重化した多重化済み画像データに基づいて、記録媒体上に印刷が行われる。本実施形態では、PDLデータが多重化された多重化済み画像データに基づいて、印刷する処理を「多重化エンコード処理」という。多重化済み画像データに基づいて印刷された印刷物では、例えば、
図7に示すような2画素の斜め線によってパターンが描かれる。
【0050】
次に、多重化PDL抽出処理について説明する。
【0051】
図2のS211において、MFP110のCPU111は、多重化済み画像データに基づいて印刷された印刷物を読み取るようスキャナユニットを制御する。例えば、ユーザは、MFP110の原稿台に印刷物を読取対象の原稿として設置し、スキャンを指示する。CPU111によるスキャナユニットの制御により、原稿にLED光が照射され、原稿からの反射光が、各画素に対応したCCD等の撮像素子によりアナログ電気信号に変換される。
【0052】
次に、S212において、CPU111は、アナログ電気信号をデジタルデータに変換して、RGB画素値で構成されるBitmap読取画像データを生成する。Bitmap読取画像データの生成処理では、例えば、以下の方法が用いられる。
【0053】
S212では、取得されたRGB画素値で構成されるBitmap読取画像データの各画素に対して、MTF(Modulation Transfer Function)補正、入力補正、シェーディング補正、色変換、の4つの処理が行われる。
【0054】
MTF補正処理は、スキャナユニットの読取性能のうちの解像度に関する補正を行う処理である。例えば、スキャナユニットの読取では、フォーカス位置からのずれやレンズ自体の光学特性等の限界等により、画像のボケが発生してしまうので、フィルタ処理等である程度の復元を行う。ここでは、完全に復元する程強い強調処理をしてしまうと、白飛びや画像ノイズ・ゴミ画素の強調等、画像弊害の方が目立ってしまうので、画質改善と弊害のバランスを取って復元が行われる。例えば、画像中央部を5倍し、上下左右の画素値を-1倍する、以下のようなエッジ強調フィルタが用いられる。
【0055】
R’[x][y] = R[x][y]×5-R[x-1][y]-R[x+1][y]-R[x][y-1]-R[x][y+1]
G’[x][y] = G[x][y]×5-G[x-1][y]-G[x+1][y]-G[x][y-1]-G[x][y+1]
B’[x][y] = B[x][y]×5-B[x-1][y]-B[x+1][y]-B[x][y-1]-B[x][y+1]
入力補正処理は、元々が光子量であるCCDの出力値を、人間の眼の感度に合った明度に変換する処理である。例えば、各色4096階調のR’G’B’信号を、各色1024階調の色強度値R”、G”、B”に変換する処理である。そのために、各インク色の濃度に対する記録ドット数率を設定した1次元のルックアップテーブルTable4[3][4096]を予め準備し、以下のように、色強度値を算出する。
【0056】
R” = Table4[0][R’]
G” = Table4[1][G’]
B” = Table4[2][B’]
また、ルックアップテーブルのグリッド数を4096グリッドから例えば256グリッド等に減らし、複数のグリッドのテーブル値を補間して出力値を決定する等、テーブルサイズを小さくするようにしても良い。
【0057】
シェーディング補正処理は、スキャナユニットを構成するレンズ、LED、CCDの製造ばらつきや組付けのばらつきに起因して生ずる各画素位置での読取感度の違いによって生ずる色・濃度ムラを低減する処理である。例えば、各色1024階調のR”G”B”信号を、各色256階調の色強度値R”’,G”’,B”’に変換する。そのために、スキャナレンズの配置されている方向(X方向とする)に対してそれぞれ、各X画素位置用の濃度変換用の1次元ルックアップテーブルTable5[x][3][1024]を予め準備し、以下のように、色強度値を算出する。
【0058】
R”’ = Table5[x][0][R”]
G”’ = Table5[x][1][G”]
B”’ = Table5[x][2][B”]
また、ルックアップテーブルのグリッド数を1024グリッドから例えば256グリッド等に減らし、複数のグリッドのテーブル値を補間して出力値を決定する等、テーブルサイズを小さくするようにしても良い。
【0059】
色変換処理は、印刷時とは逆に、ここまで算出してきたR”’、G”’、B”’がそれぞれスキャナユニット固有の値となっているので、ディスプレイ上で表示するためのRout,Gout,Bout値に変換する処理である。そのために、印刷時の色変換同様、入力値であるR”’、G”’、B”’がそれぞれ256階調を持つため、256×256×256の合計16,777,216組の出力値を持つテーブルTable6[256][256][256][3]を予め準備し、以下のように、出力値を算出する。
【0060】
Rout = Table1[R”’][G”’][B”’][0]
Gout = Table1[R”’][G”’][B”’][1]
Bout = Table1[R”’][G”’][B”’][2]
また、ルックアップテーブルのグリッド数を256グリッドから例えば16グリッド等に減らし、複数のグリッドのテーブル値を補間して出力値を決定する等、テーブルサイズを小さくするようにしても良い。
【0061】
以上のように、S212でのBitmap読取画像データの生成が行われる。
【0062】
図4は、印刷及び読取りによる画像の劣化を説明するための図である。
図4(a)は、
図3の原稿300をレンダリングして得られたPDL画像400を示している。つまり、
図2のS202で生成されるレンダリング済み画像データのうち、オブジェクト301の左上部分に対応している。
図4(b)は、PDL画像400の印刷物に対して読取が行われて得られた読取画像401である。
【0063】
両者を比較すると分かるように、PDL画像400内の直線は、一様な濃度(R=128、G=128、B=128)を持っているが、読取画像401内の直線は、濃度的には不均一で、直線のエッジ部分にも凸凹が目立つ。また、直線周辺に若干濃くなった画素が存在し、全体的にも背景画像が少し暗い画像となっている。これは、PDLデータに基づいて印刷を行い、スキャンすることによってS212で生成されるBitmap読取画像データには、PDL画像400(元原稿)に対して以下のような画像劣化が生じているからである。
【0064】
・S204で行われる量子化に伴う形状の劣化(量子化による階調数低下)
・S205で行われる印刷に伴う形状の劣化(印刷精度・記録媒体(印刷用紙))
・S211で行われる原稿の読取に伴う形状の劣化(スキャナによる画像ボケ)
更には、記録媒体の汚れ等の劣化による形状の劣化が想定される。
【0065】
S213において、CPU111は、S212で取得されたBitmap読取画像データから、多重化された描画情報、即ちPDLデータを抽出する。以下に、Bitmap画像解析例の概要説明を行う。
【0066】
まず、画像データから多重化された情報(付加情報とも呼ぶ)が埋め込まれている位置の検出を行う。具体的には、画像データの空間周波数特性を解析することにより埋め込み位置の検出を行う。
図14は、埋め込みに用いたパターンの空間周波数の特性を表す図である。横軸が水平方向の周波数、縦軸が垂直方向の周波数を表し、原点から遠ざかるにつれて高周波数域となる。
【0067】
本実施形態では、
図7(a)及び
図7(b)に示すように、2つのパターンを画像に埋め込んでいる。埋め込み例では、RGBのB成分に10の加算及び減算を行っている。これにより、
図7(a)のパターンは、
図14のラインA01に大きなパワースペクトルを発生させる。同様に、
図7(b)のパターンは、ラインA02に大きなパワースペクトルを発生させる。このパワースペクトルを、例えば8×8画素領域ごとに検出することにより、「0」か「1」のデータ抽出を行う。なお、検出の前処理として、エッジ検出を行うことにより、パワースペクトルの強調をするようにしても良い。
【0068】
周波数解析によるデータの抽出では、画像データからの解析エリアの正確な切り出しが必要となるため、座標位置のずれを補正する処理が行われる。例えば、画像内からの8ピクセル×8ピクセル領域の切り出しと周波数解析とを、縦横それぞれの方向に1ピクセルずつずらしながら縦横に繰り返す。そして、例えば、横8ピクセル、縦8ピクセルずつずらすまで計64回繰り返し、最もスペクトルが強くなる箇所を切り出しの基準位置とする方法がある。このとき、周波数解析の対象となる領域は、16ピクセル×16ピクセルの領域となり、付加情報をすきまなく多重化した領域内であれば、少なくとも1つの付加情報がその領域内に含まれることになる。そのため、上述したように基準となる領域の位置を決めることができる。位置検出が完了した後に、その位置を基準として、多重化の規則に従って付加情報の抽出を行うことで、埋め込まれていた「0」と「1」の数列が得られる。
【0069】
なお、上記方法で基準位置を特定しようとする画像中の位置として、付加情報を埋め込んだ符号領域の先頭を選択すれば、特定された基準位置は、符号領域の先頭を示すことになる。そうでない場合であっても、基準位置が特定された領域が、多重化された符号列の中でどの位置にあるかは概ね特定できるので、その位置を基準として、多重化された符号列の先頭を特定することができる。先頭として特定した8×8画素領域及びその前後の8×8画素領域について空間周波数を解析することで、付加情報が多重化された領域の先頭を特定することができる。これにより、付加情報の長さは固定的であってよいので、付加情報が多重化された領域全体を特定することができる。こうして特定した符号領域全体を、
図14に示した空間周波数の解析により、2値データへと復号化することができる。
【0070】
S214において、CPU111は、S213で抽出されたPDLデータをレンダリングしてレンダリング済み元画像データを生成する。レンダリング処理として、S202と同じ処理が行われる。S215において、CPU111は、S212で生成されたBitmap読取画像データと、S214でレンダリングされたレンダリング済み元画像データとを比較・合成して、補正済み元画像データを生成する。
【0071】
図5は、S215の補正済み元画像データの生成処理を示すフローチャートである。S501において、CPU111は、S212で生成されたBitmap読取画像データの正規化処理を行う。これは、S212で生成されたBitmap読取画像データと、S214でレンダリングされたレンダリング済み元画像データのダイナミックレンジが異なっているからである。
【0072】
例えば、Bitmap読取画像データの最も明るい部分は一般的に読取対象の原稿の紙の色であり、原理的には何らかの濃度を持った値となっている。一方、レンダリング済み元画像データの最も明るい部分はR=255、G=255、B=255の画素であるので、両者の最も明るい色に元々違いがある。同様に、Bitmap読取画像データの最も暗い部分は一般的にインク若しくはトナーの黒色であり、原理的には何らかの反射光による明度を持った値となっている。一方、レンダリング済み元画像データの最も明るい部分はR=0、G=0、B=0の画素であるので、両者の最も暗い色に元々違いがある。また、カラー原稿の色味においても、読取対象の原稿上に印刷された最も鮮やかな赤色であっても、レンダリング済み元画像データ上の最も鮮やかな赤色(R=255、G=0、B=0)と比べると彩度が低くなっている。S501では、Bitmap読取画像データとレンダリング済み元画像データのダイナミックレンジを合わせるように、Bitmap読取画像データの正規化が行われる。
【0073】
例えば、Bitmap読取画像データの画素値R、G、Bに対して、以下のように算出する。なお、Rd、Gd、Bdは各色の最小明度を表し、Rw、Gw、Bwは各色の最大明度を表す。
【0074】
Rnorm = (R-Rd)/(Rw-Rd)×255
Gnorm = (G-Gd)/(Gw-Gd)×255
Bnorm = (B-Bd)/(Bw-Bd)×255
上記のように算出することで、Bitmap読取画像データの最も明るい色がR=255、G=255、B=255と正規化され、Bitmap読取画像データの最も暗い色がR=0、G=0、B=0と正規化される。
【0075】
次に、S502において、CPU111は、S501で正規化されたBitmap読取画像データに対してフィルタ処理を行う。S502では、上述のMTF補正が視覚的に好ましい範囲のエッジ強調となっているので、画像比較に用いるために、より強いエッジ強調を行うフィルタ処理を実行する。
【0076】
次に、S503において、CPU111は、S502でフィルタ処理が行われたBitmap読取画像データに対して、多重化画像の除去処理を行う。
図2のS203で多重化済み画像データを生成することによって、本来復元したい元画像と印刷物(原稿画像)との間に差異が生じてしまっている。そのため、その差異を極力除去するために行われる。例えば、S212で取得されるBitmap読取画像データから、多重化された描画情報が抽出されるので、その描画情報を逆に減算することによって、S212で取得されたBitmap読取画像データを、多重化前の画像データに近づけることができる。本実施形態では、例えば、
図6(a)及び
図6(b)に示すような0および1を埋め込むマスク値に、-1を乗じた値を更に多重化することにより、多重化画像の除去を行う。
【0077】
以上のように、本実施形態では、原稿読取により生成されたBitmap読取画像データに対して、S212における補正強度よりも強い補正強度(エッジ強調)でS502のフィルタ処理を実行する。その結果、MTF補正によりある程度復元された画像をより完全に復元することになり、原稿読取に起因して劣化した画像からより復元させることができる。また、原稿読取により生成されたBitmap読取画像データに対して、S503の多重化画像の除去を実行する。その結果、描画情報の多重化により現れるパターン(多重化画像。例えば上述の2画素の斜め線)に起因して劣化した画像から復元させることができる。
【0078】
次に、S504において、CPU111は、画像データの比較を行う。本実施形態では、S214でレンダリングされたレンダリング済み元画像データと、S503で生成された多重化画像除去済み読取画像データとを画素単位で比較する。例えば、S504で、以下の式により、各色の差分量を取得する。
【0079】
ΔR = |画像AのR[x][y] - 画像BのR[x][y]|
ΔG = |画像AのG[x][y] - 画像BのG[x][y]|
ΔB = |画像AのB[x][y] - 画像BのB[x][y]|
次に、S505において、CPU111は、画素値の差分量が閾値を超えているか否かを判定する。本実施形態では、R、G、Bそれぞれのチャネル毎にRth、Gth、Bthという閾値を持っており、例えば、以下のような条件式に基づいて判定が行われる。
【0080】
If ((ΔR > Rth)||
(ΔG > Gth)||
(ΔB > Bth) ){”Yes”}
Else {”No”}
本例では、閾値は、例えば、Rth=Gth=Bth=64とするが、スキャナユニットやプリンタユニットの特性に応じて設定されても良い。閾値より大きいと判定された場合には、S507に進む。一方、閾値以下であると判定された場合には、S506に進む。
【0081】
S506において、CPU111は、画素値の上書きを行う。CPU111は、レンダリング済み元画像データの画素値に対して、多重化画像除去済み画像データの画素値を上書きする。即ち、各色の画素値について、以下で表されるような処理が行われる。
【0082】
レンダリング済み元画像データのR[x][y] = 多重化画像除去済み画像データのR[x][y]
レンダリング済み元画像データのG[x][y] = 多重化画像除去済み画像データのG[x][y]
レンダリング済み元画像データのB[x][y] = 多重化画像除去済み画像データのB[x][y]
例えば、画素値の上書きのため、上書きデータを別に1プレーン用意する。画像フォーマットとしては、RGBに加えて透明度を表すα値を含んだRGBα(各色8bit、1画素32bit)の画像データを用いる。
【0083】
図5の処理の開始時には、上書き用データは、全ての画素について、α=255(透明度最大=上書きデータ無し)となっている。S506では、以下の式に基づいて、画素値の上書きが行われる。
【0084】
上書きデータのR[x][y] = 多重化画像除去済み画像データのR[x][y]
上書きデータのG[x][y] = 多重化画像除去済み画像データのG[x][y]
上書きデータのB[x][y] = 多重化画像除去済み画像データのB[x][y]
上書きデータのα[x][y] = 0(透明度最低=不透明)
次に、S507において、CPU111は、全ての画素についてS505の判定処理が行われたか否かを判定する。全ての画素について判定処理が行われていないと判定された場合、他の画素に着目してS504からの処理を繰り返す。一方、全ての画素について判定処理が行われたと判定された場合、
図5の処理を終了する。
【0085】
図5の処理の結果、S214でレンダリングされたレンダリング済み元画像データに対して、一番上に上書きデータが配置された補正済み元画像データが生成される。
図2のS216において、CPU111は、S215で生成された補正済み元画像データを保存し、その後、多重化PDL抽出処理を終了する。多重化PDL抽出処理の後、例えば、CPU111は、記録ヘッドコントローラ115により、補正済み元画像データに基づいて印刷処理を行う。
【0086】
以上の処理によって、例えば、原稿読取によって得られた
図4(b)に示すような劣化した画像から復元させ、
図4(a)の画像に近づけることができる。以下、S505で画素単位に画素値の差分量を算出してS506で上書きする処理についてさらに説明する。
【0087】
図9は、手書き文字が追記された画像に対する処理を説明するための図である。
図9(a)のPDL画像900は、
図4(a)のPDL画像400と同じである。
図9(b)は、原稿読取の結果、取得された読取画像901である。
図4(b)と異なり、読取画像901では、PDL画像900の印刷物に対して「Check」の文字902が追加された状態で原稿読取が行われた結果を示している。「Check」の文字902は、当然に元原稿には存在しないので、
図2のS202でレンダリングされることはなく、S203で生成される多重化済み画像データにも含まれていない。よって、S213で抽出されるPDLデータにも含まれず、S214で生成されるレンダリング済み元画像データにも含まれていない。従って、S214で生成されたレンダリング済み元画像データを、復元された画像データとして優先的に用いると、読取画像901の「Check」の文字902が欠落してしまう。
【0088】
本実施形態では、「Check」の文字902の部分について、S504~S505において画素値の差分量が閾値より大きいと判定され、S506で上書きの対象画素とされる。つまり、本実施形態では、
図9の上書き配置された画像903のように、差分量の大きい画素については、読取画像側の画素が用いられ、差分量の小さい画素については、元画像側の画素が用いられる。その結果、手書き追記された部分を欠落させることなく、手書き追記されていない部分を元画像に近づけることができる。
【0089】
以上のように、本実施形態では、印刷物を読み取って得られたBitmap読取画像データからPDLデータを抽出し、Bitmap読取画像データ(手書き文字部分)と組み合わせる。その際、Bitmap読取画像データに対してS502のフィルタ処理を行うことにより、原稿読取に起因して劣化した画像からより復元させることができる。また、Bitmap読取画像データに対してS503の多重化画像の除去を行うことにより、多重化画像の印刷処理に起因して劣化した画像から復元させることができる。また、PDLデータ(元画像)に対して、Bitmap読取画像データを組み合わせることにより、記録媒体の汚れ等で劣化した画像から復元させるとともに、印刷物に追記された手書き文字等が欠落してしまうことを防ぐことができる。
【0090】
図6及び
図7では、8×8画素単位で多重化情報を多重化する例を説明した。これは、高周波領域に多重化情報を多重化することによって、ユーザに視認されにくい多重化を行う例である。しかしながら、高周波領域への多重化情報の多重化だけでなく、任意の多重化方法が用いられても良い。
【0091】
図8は、多重化方法の他の例を説明するための図である。
図8(a)は、QRコードのパターンの一例を示している。本例では、PDLデータをQRコード化し、それを視認されにくい形で多重化する。
図8(b)は、実際の印刷パターンを表しており、8×8画素単位に1ドットだけ印刷するパターンとなっている。
図8(a)の黒色画素800に対応するドットが
図8(b)のドット801の1ドットに対応する。また、
図8(a)の空白画素に対応する
図8(b)の位置には、ドットは形成されない。
【0092】
このような方法により、視認されにくい多重化パターンを記録媒体上に構成することができる。例えば、
図2のS203でPDLデータを
図8(a)のようにQRコード化し、それを離間したドット群である
図8(b)のような画像データとして、レンダリング済み画像データに対して重畳する。また、離間ドットを構成するインクとしてはイエローインクが最も視認され難いので、イエローインクで
図8(b)のパターンを構成することで、より視認されにくい多重化パターンを記録媒体上に構成することができる。
【0093】
なお、本多重化方式の場合、S213でのPDLデータ抽出では、読み取ったBitmap読取画像データにおいて、8×8画素単位でイエロードットが記録されているかを判定し、
図8(a)相当のQRコードパターンを抽出し、それを復号化することでPDLデータを抽出すれば良い。
【0094】
また、他の多重化方式としては、例えば、
図2のS204の印刷画像データの生成処理における量子化処理時に閾値変調を行って多重化する方式が用いられても良い。また、S503の多重化画像の除去は、用いた多重化方法に応じて上述した説明と同様に、多重化時の画素値の変化量に-1を乗じた値を多重化することによって行うことができる。
【0095】
一般的に、多重化すべき情報量が増えた場合、記録ドット数や変調量を増大させる必要が生じ、その結果、印刷画像全体の画像劣化が増大する傾向がある。さらに、そのような印刷画像を読み取って得られる読取画像にも画像劣化が現れることになる。本実施形態では、そのような場合でも、S503で多重化画像の除去を行うので、多重化すべき情報量が増大した場合に生じた画像劣化であっても、復元させることが可能となる。
【0096】
また、上述したように、
図3の原稿画像300は横幅600画素、縦幅900画素から構成されるので、1ページは540,000画素から構成される。ここで、各画素の色をR/G/B各8bitの256階調で表現する場合、各画素3Byte、1ページ合計で1,620,000Byte≒1.6Mbytesとなる。一方、PDL状態でのファイルサイズは、例えば、以下のように、106,200Bytesとなり、約6.6%程度となる。以下、ファイルサイズ試算の内訳を示す。
【0097】
・描画命令部分 約350文字 (1文字2Bytesとして≒700Bytes)
・”PORTRAIT.jpg” 300×475画素、各画素3Bytesで全427,500Bytes ここで、圧縮率を20%とすると85,500Bytes
・”STD”フォントデータ 以下の理由で20,000Bytesと想定
例えば、20ページで想定すると、フォント埋め込みなしのPDFファイルサイズが約60KBであることに対し、フォント埋め込みありのPDFファイルサイズは、460KBとなり、900%近いサイズ増加となることが一例として知られている(ページあたりの新規文字が75%とする)。従って、1ページのフォント埋め込み量を400kBytes/20=20kBytesと想定した。
【0098】
上記のように、S202でレンダリングしたBitmap画像データと比べて、S201で取得されたPDLデータのサイズは約6.6%と極めて小さいサイズとなる。よって、多重化する際には、Bitmap画像データよりもPDL画像データを多重化する方が、多重化に伴う印刷画像全体の画像劣化を大幅に低減することができる。
【0099】
また、PDLデータを直接埋め込んだ印刷物を読み取ることによって、PDLデータ(元原稿)を完全に復元させることも可能である。その場合、
図3に対応付けた各描画命令が全て復元できるので、例えば
図4(b)の読取画像401を
図4(a)のPDL画像400と完全に同じものにすることができる。同様に、
図3のオブジェクト303やオブジェクト304のような文字・細線についても復元が可能である。コピー処理は一般的に読取~印刷の処理を経るので、画像の劣化が避けられないが、スキャン時に元原稿のPDLデータを抽出することができれば、抽出したPDLデータに基づいて印刷を行うことによって、ほぼ完全なコピーを実現することができる。
【0100】
さらに、印刷時に縮小・拡大が伴う場合、細線・文字については線の細り・太りが生じ、文字・細線が判読不能もしくは消滅してしまうケースがあるが、本実施形態によれば、多重化したPDLデータを抽出することができ、上記のようなケースを回避することができる。
【0101】
また、縮小・拡大コピー時には文字・細線も縮小・拡大が伴うので、視認性が劣化してしまうケースがあるが、本実施形態のように、多重化したPDLデータを抽出することができれば、例えば、TEXT描画命令に対してサイズ変更が可能となる。そのため、以下に一例として示すように、文字部分についてのみサイズを変更するようにしたコピーを実現するようにしても良い。
【0102】
・50%縮小+文字サイズ200%の設定による「文字サイズを維持した縮小コピー」
・200%拡大+文字サイズ50%の設定による「文字サイズを維持した拡大コピー」
・等倍+文字サイズ200%の設定による「文字拡大コピー」
・等倍+文字サイズ50%の設定による「文字縮小コピー」
同様に、本実施形態では、多重化したPDLデータを抽出することができるので、コピー処理において、LINE描画命令等、他の命令に対しても線の太さや線の種類・色の変更、塗りパターンの変更等を行うようにしても良い。
【0103】
また、本実施形態では、S216で保存された補正済み元画像データを用いて、表示制御を行うようにしても良い。上述したように、読取原稿の上に手書き文字が追記されていた場合、多重化されたPDLデータの表す元画像に手書き部分の画像を合成した補正済み元画像データが保存される。その際、手書き文字が追記された画像データ部分(例えば、
図9(b)の文字902)を個別の画像データとして保存するようにしても良い。そして、その個別の画像データを用いて表示部での表示制御を行うようにしても良い。例えば、手書き文字部分を赤く表示したり、点滅したり等、識別可能に表示するようにしても良い。また、手書き文字部分を消去して、手書き文字を追記する前の画像(即ち、元画像)を表示するようにしても良い。また、手書き文字を追記する前の画像と手書き文字を追記した後の画像とを並列に表示するようにしても良い。また、それらの並列表示においてユーザからの選択を受付可能とし、選択された画像について印刷処理を行うようにしても良い。
【0104】
また、本実施形態では、
図2のPDL多重化印刷処理をPC100で実行し、多重化PDL抽出処理をMFP110で実行するとして説明したが、PDL多重化印刷処理と多重化PDL抽出処理を1つの装置内で実行するようにしても良い。例えば、両処理をMFP110で実行するようにしても良い。
【0105】
[第2実施形態]
以下、第1実施形態と異なる点について第2実施形態を説明する。第1実施形態では、PDLデータをレンダリング済み画像データに多重化する構成を説明した。本実施形態では、PDLデータの一部だけがレンダリング済み画像データに多重化される。
【0106】
印刷後の原稿画像上に手書き文字やスタンプ等で情報が上書きされたために、多重化された描画情報の抽出が困難になるケースが想定される。また、原稿画像内の画像ファイルのサイズ等が大きすぎたために多重化が困難なケースや、多重化時の画像劣化が大きくなるために多重化を行えなかったケースが想定される。本実施形態では、PDLデータの一部だけが多重化対象となるので、上記のようなケースを回避可能とすることができる。
【0107】
図10は、本実施形態におけるPDLデータで表される原稿画像の一例を示す図である。
図10の原稿画像1000、オブジェクト1001~1004は、
図3の原稿画像300、オブジェクト301~304に対応する。以下に、本実施形態における多重化用PDLの記述内容を示す。
【0108】
<PAGE=001>
<BOX> 50, 75, 200, 300, GRAY, STRIPE </BOX>
<BOX> 420, 75, 550, 300, BLACK, FULL </BOX>
<BOX> 50,620, 200, 825, BLACK, NULL </BOX>
<TEXT> 50,620, 200, 825, BLACK, STD-18, “ABCXYZ123” </BOX>
<LINE> 25, 25, 25, 700, BLACK, PLAIN, 3 </LINE>
<LINE> 25, 25, 450, 25, BLACK, PLAIN, 3 </LINE>
</PAGE>
本実施形態では、第1実施形態において記述されていた、<IMAGE> 250, 350, 550, 825, “PORTRAIT.jpg” </IMAGE> という画像の描画命令が記述されていない。第1実施形態では、以下のような前提として説明していた。
【0109】
・描画命令部分 約350文字 (1文字2Bytesとして≒700Bytes)
・”PORTRAIT.jpg” 300×475画素、各画素3Bytesで全427,500Bytes
ここで圧縮率を20%とすると85,500Bytes
・”STD”フォントデータ 後述の理由で20,000Bytesと想定
つまり、以下に示されるように、画像やフォントを埋め込まない場合には、それだけ多重化用データを少なくすることができ、多重化による画像劣化の度合いを低減可能となる。
【0110】
描画命令+画像+フォント 106,200Bytes (100%)
描画命令+フォント 20,700Bytes (19%)
描画命令 700Bytes (<1%)
そこで、本実施形態においては、
図2のPDL多重化印刷処理のS203で多重化済み画像データを生成する際、上記の多重化用PDLデータを用いて多重化済み画像データを生成する。よって、S213で抽出されるPDLデータは、上記の多重化用PDLデータとなる。また、S214でレンダリングされるレンダリング済み元画像データは、
図10に示すように、人物画像が存在しない画像となる。
【0111】
そして、S215の補正済み元画像データの生成時には、
図3のオブジェクト305の人物画像が印刷された印刷物を読み取ったBitmap読取画像データと、人物画像が存在しないレンダリング済み元画像データとを比較することとなる。
図5のS505及びS506において、人物画像の部分が、第1実施形態で説明した「手書き文字が追記された部分」として処理される。即ち、S214でレンダリングされた、人物画像が存在しないレンダリング済み元画像データに対して、Bitmap読取画像データの人物画像の部分が上書きデータとして生成される。そして、上書きデータが一番上に配置された補正済み元画像データが生成される。
【0112】
以上のように、本実施形態によれば、読取画像から元画像を復元させることができるとともに、多重化情報の負荷を軽減することができる。
【0113】
[第3実施形態]
以下、第1及び第2実施形態と異なる点について本実施形態を説明する。第1及び第2実施形態では、PDLデータと同じ画像サイズの上書き用データをレンダリング済み画像データに上書きする構成を説明した。例えば、PDL画像300が横幅600画素、縦幅900画素から構成される場合、1ページは540,000画素から構成される。各画素の色をR/G/B/α各8bitの256階調で表現する場合、各画素4Byte、1ページで2,160,000Byte≒2.2MBytesとなる。本実施形態では、画像領域を複数のブロック(即ち、単位領域)に分割し、ブロック単位に上書き用データを生成することで、データ量を低減することができる。
【0114】
図11は、本実施形態における補正済み元画像データの一例を示す図である。
図11の補正済みPDL画像1100、オブジェクト1101~1105は、
図3のPDL画像300、オブジェクト301~305に対応する。
図11の補正済みPDL画像1100上には、水平方向及び垂直方向に5分割する破線が示されている。本実施形態では、PDL画像全体を25分割して、必要な部分に対応する上書き用データをレンダリング済み画像データに上書きする。
【0115】
図12は、本実施形態における補正済み元画像データの生成処理を示すフローチャートである。
図12のS1201~S1203は、
図5のS501~S503における説明と同じであるので、それらの説明を省略する。
【0116】
S1204において、CPU111は、画像タイルの比較を行う。画像タイルとは、画像全体(横幅600画素、縦幅900画素)を、本例の場合、縦横それぞれ5分割した各画像タイル(120画素、縦幅180画素)である。CPU111は、各画像タイルについて、レンダリング済み画像データと多重化情報除去済み画像データの比較を行う。CPU111は、各画像タイルについての比較結果として、差分のある画素数を計測する。
【0117】
S1205において、CPU111は、当該画像タイルにおいて、差分のある画素数が所定の閾値を超えたか否かを判定する。言い換えれば、S1205では、当該画像タイル中に「手書き文字等が追加された部分」が存在するか否かを判定している。所定の閾値としては、画素数でも良いし、割合でも良い。例えば、閾値として、約1%である216画素が用いられる。ここで、閾値は、任意の基準で設定されても良い。例えば、閾値として1%である216画素は、例えば、紙面上やスキャナガラス上のゴミ等による無視可能な画素数として設定される。S1205で閾値を超えたと判定された場合、S1206に進む。一方、閾値を超えていないと判定された場合、その画像タイルについて上書き用データを生成せずに、次の画像タイルに着目してS1204からの処理を繰り返す。
【0118】
S1206において、CPU111は、多重化情報除去済み画像データの当該画像タイルの画像データを、レンダリング済み画像データの上に配置する。その場合、当該画像タイルを上書き配置する場合には、画像データとしては各画素R/G/B各8bitの3Byteで良いので、各タイルの画像データ量としては64,800Bytesとなる。つまり、第1実施形態における、画素値の差異判定で画素単位に上書き配置するか否かを決定する場合より、データ量をより低減させることができる。各画像タイルの画像データ量は、画像タイルの画素数を小さくすればする程データ量も小さくなる。従って、上書きが必要な部分以外について、不要なデータを含む可能性が低減する。また、画像データ量を低減するために、画像データを圧縮するようにしても良い。
【0119】
図13は、本実施形態における手書き文字の追記画像に対する処理を説明するための図である。
図13(a)は、レンダリング済み画像データの表す画像を示す。
図13(b)は、原稿読取が行われた読取画像データの表す画像を示す。
図13では、各画像は4×4の画像タイルに分割され、CPU111により、それぞれ13a00~13a33、13b00~13b33というように識別情報が付与されて管理される。識別情報として、例えば、画像タイル13-a―x-yにおいて、xは水平方向のタイル位置番号、yは垂直方向のタイル位置番号を表すようにルールが定められている。タイル13-b-x-y、タイル13-c-x-yについても同様である。
【0120】
図13(c)は、S1205~S1206により、追加された手書き文字である文字列”Check”が存在する、タイル13a11、13a12、13a13、13a14、13a21、13a22、13a23、13a24の8つの画像タイルが上書き処理された結果を示している。
図13(c)に示すように、上記の8つの画像タイルについてのみ、読取画像データが上書きされる。
【0121】
以上のように、本実施形態によれば、上書きが必要な領域のみのデータを、レンダリング済み画像データに上書きする。そのような構成により、補正済み元画像データのサイズを低減させることができる。
【0122】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0123】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0124】
100 PC: 101、111 CPU: 110 MFP: 116 画像処理アクセラレータ