(57)【要約】      （修正有）【課題】限られたメモリ資源環境において分割画像のスプールメモリが枯渇した場合にも、同一画像判定および原画像に対応した適応的な補正を行う。【解決手段】ページ記述言語データからディスプレイリストを生成する際に、ページ記述言語データに含まれる画像データを抽出しフレームバッファに格納し、格納された画像データ群のうち、同一の原画像から生成された画像データ群に対し画像補正係数を算出し、メモリの資源の枯渇により生成したディスプレイリストを格納できない場合、すでに格納されているディスプレイリストのレンダリング後、生成したディスプレイリストに対応するページ記述言語データに含まれる画像データと同一の原画像から生成された画像データを含むページ記述言語データ群を再度読み込んでディスプレイリストを生成し、再度読み込まれたページ記述言語データ群に含まれる画像データ群に対して同一の画像補正係数を算出する。【選択図】図７
2015056074.tif 000002
【特許請求の範囲】
【請求項１】
ページ記述言語データからディスプレイリストを生成する画像処理装置であって、
ページ記述言語データからディスプレイリストを生成し、メモリに格納するディスプレイリスト生成手段と、
前記ディスプレイリストの生成の際に、前記ページ記述言語データに含まれる画像データを抽出し、フレームバッファに格納する抽出手段と、
前記フレームバッファに格納された画像データ群のうち、同一の原画像から生成された画像データ群を判定する同一画像判定手段と、
同一の原画像から生成された画像データ群に対し、レンダリングにて用いられる同一の画像補正係数を算出する算出手段と、
を有し、
前記ディスプレイリスト生成手段は、前記メモリの資源の枯渇により、生成したディスプレイリストを格納できない場合、前記メモリにすでに格納されているディスプレイリストのレンダリングの後、前記生成したディスプレイリストに対応するページ記述言語データに含まれる画像データと同一の原画像から生成された画像データを含むページ記述言語データ群を再度読み込んでディスプレイリストを生成し、
前記算出手段は、前記再度読み込まれたページ記述言語データ群に含まれる画像データ群に対して同一の画像補正係数を算出することを特徴とする画像処理装置。
【請求項２】
前記ページ記述言語データの再度の読み込みが可能か否かを判定する判定手段を更に有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記判定手段により前記ページ記述言語データの再度の読み込みができないと判定された場合、前記算出手段は、
原画像が同一であると判定された画像データ群のうち、レンダリングが終了していない画像データ群に対しては、第一の画像補正係数を算出し、
原画像が同一であると判定された画像データ群のうち、すでにレンダリングが完了している画像データ群に対しては、レンダリングの際に用いられた画像補正係数による補正を取り消すための第二の画像補正係数と、前記第一の画像補正係数とを算出する
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記画像データ群と画像補正係数とを関連付けて保持する保持手段と、
関連付けられた画像補正係数を用いて画像データ群のレンダリングを行うレンダリング処理手段と
を更に有し、
前記判定手段により前記ページ記述言語データの再度の読み込みができないと判定された場合、前記保持手段は、
原画像が同一であると判定された画像データ群のうち、レンダリングが終了していない画像データ群に対しては、前記第一の画像補正係数を関連付けて保持し、
原画像が同一であると判定された画像データ群のうち、すでにレンダリングが完了している画像データ群に対しては、前記第一および第二の画像補正係数を関連付けて保持する
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記算出手段は、同一の原画像から生成された画像データ群の画素から輝度ヒストグラムを生成し、画像補正係数として、当該輝度ヒストグラムに基づいて各画素値に対するルックアップテーブルを算出することを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
前記算出手段は、前記輝度ヒストグラムにおいて上端および下端から所定の割合の画素を除いた上で各画素値に対するルックアップテーブルを算出することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
描画コマンドから画像形成装置に対応するページ記述言語データを生成する情報処理装置であって、
描画コマンドに含まれる画像データを抽出し、フレームバッファに格納する抽出手段と、
前記フレームバッファに格納された画像データ群のうち、同一の原画像から生成された画像データ群を判定する同一画像判定手段と、
同一の原画像から生成された画像データ群に対し、レンダリングにて用いられる同一の画像補正係数を算出する算出手段と、
を有することを特徴とする情報処理装置。
【請求項８】
同一の原画像から生成された画像データ群に対応するページ記述言語データと、当該画像データ群に対して前記算出手段にて算出された画像補正係数とを関連付けて前記画像形成装置に提供する手段を更に有することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
請求項７または８に記載の情報処理装置が生成したページ記述言語データと当該ページ記述言語データに関連付けられた画像補正係数とを用いて印刷処理を行う画像形成装置。
【請求項１０】
ページ記述言語データからディスプレイリストを生成する画像処理方法であって、
ページ記述言語データからディスプレイリストを生成し、メモリに格納するディスプレイリスト生成工程と、
前記ディスプレイリストの生成の際に、前記ページ記述言語データに含まれる画像データを抽出し、フレームバッファに格納する抽出工程と、
前記フレームバッファに格納された画像データ群のうち、同一の原画像から生成された画像データ群を判定する同一画像判定工程と、
同一の原画像から生成された画像データ群に対し、レンダリングにて用いられる同一の画像補正係数を算出する算出工程と、
を有し、
前記ディスプレイリスト生成工程において、前記メモリの資源の枯渇により、生成したディスプレイリストを格納できない場合、前記メモリにすでに格納されているディスプレイリストのレンダリングの後、前記生成したディスプレイリストに対応するページ記述言語に含まれる画像データと同一の原画像から生成された画像データを含むページ記述言語データ群を再度読み込んでディスプレイリストを生成し、
前記算出工程において、前記再度読み込まれたページ記述言語データ群に含まれる画像データ群に対して同一の画像補正係数を算出することを特徴とする画像処理方法。
【請求項１１】
描画コマンドから画像形成装置に対応するページ記述言語データを生成する情報処理方法であって、
描画コマンドに含まれる画像データを抽出し、フレームバッファに格納する抽出工程と、
前記フレームバッファに格納された画像データ群のうち、同一の原画像から生成された画像データ群を判定する同一画像判定工程と、
同一の原画像から生成された画像データ群に対し、レンダリングにて用いられる同一の画像補正係数を算出する算出工程と、
を有することを特徴とする情報処理方法。
【請求項１２】
コンピュータを、
ページ記述言語データからディスプレイリストを生成し、メモリに格納するディスプレイリスト生成手段、
前記ディスプレイリストの生成の際に、前記ページ記述言語データに含まれる画像データを抽出し、フレームバッファに格納する抽出手段、
前記フレームバッファに格納された画像データ群のうち、同一の原画像から生成された画像データ群を判定する同一画像判定手段、
同一の原画像から生成された画像データ群に対し、レンダリングにて用いられる同一の画像補正係数を算出する算出手段、
として機能させ、
前記ディスプレイリスト生成手段は、前記メモリの資源の枯渇により、生成したディスプレイリストを格納できない場合、前記メモリにすでに格納されているディスプレイリストのレンダリングの後、前記生成したディスプレイリストに対応するページ記述言語に含まれる画像データと同一の原画像から生成された画像データを含むページ記述言語データ群を再度読み込んでディスプレイリストを生成し、
前記算出手段は、前記再度読み込まれたページ記述言語データ群に含まれる画像データ群に対して同一の画像補正係数を算出することを特徴とするプログラム。
【請求項１３】
コンピュータを、
描画コマンドに含まれる画像データを抽出し、フレームバッファに格納する抽出手段、
前記フレームバッファに格納された画像データ群のうち、同一の原画像から生成された画像データ群を判定する同一画像判定手段、
同一の原画像から生成された画像データ群に対し、レンダリングにて用いられる同一の画像補正係数を算出する算出手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、情報処理装置、画像処理方法、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、デジタルスチルカメラやスキャナ等のデジタル撮像装置が普及し、写真をデジタルの画像としてコンピュータに取り込むことが頻繁に行われている。コンピュータに取り込まれた画像はコンピュータ上のアプリケーションを用いて編集されプリンタ等で出力される。プリンタで出力する際に印刷物上の写真の見栄えが良くなるよう、プリンタドライバで画像を自動的に補正してからプリンタに出力することがよく行われている。
【０００３】
しかしながら、ディスプレイ上ではドキュメント内の写真が１つに見えていても、アプリケーションがドライバにドキュメントのデータを送信する際に１つの写真を複数のバンド画像に分割して送信する場合がある。その場合に、分割された個々のバンド画像に対してバンド画像内に閉じた補正を行ってしまうと、バンド画像毎に適応的な補正が行われるために１つの写真としては一貫性のない画像となってしまう。その結果、バンド画像毎に輝度差が生まれ、原画像がバンド分割されてしまったような視覚性を持つバンディングノイズといった不具合が発生する。
【０００４】
これに対し、特許文献１の技術では、写真が多数の画像に分割されている場合にも、レンダリング処理を行う前に分割画像をスプールし、周辺画素の参照による同一画像判定および画像処理によりバンディングノイズを抑制している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−０７６４１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１の手法では、レンダリング処理を行う前に分割画像をスプールしている際にスプールメモリ領域が枯渇した場合は、同一画像判定がその時点で途切れてしまう。そのため、枯渇する時点までにスプールされた個々の画像に適応的な補正を行うことでバンディングノイズが発生してしまうという課題がある。
【０００７】
したがって、限られたメモリ資源環境において分割画像のスプールメモリが枯渇した場合にも、同一画像判定および原画像に対応した適応的な補正を行うことが望まれる。
【課題を解決するための手段】
【０００８】
上記課題を解決するために本願発明は以下の構成を有する。すなわち、ページ記述言語データからディスプレイリストを生成する画像処理装置であって、ページ記述言語データからディスプレイリストを生成し、メモリに格納するディスプレイリスト生成手段と、前記ディスプレイリストの生成の際に、前記ページ記述言語データに含まれる画像データを抽出し、フレームバッファに格納する抽出手段と、前記フレームバッファに格納された画像データ群のうち、同一の原画像から生成された画像データ群を判定する同一画像判定手段と、同一の原画像から生成された画像データ群に対し、レンダリングにて用いられる同一の画像補正係数を算出する算出手段と、を有し、前記ディスプレイリスト生成手段は、前記メモリの資源の枯渇により、生成したディスプレイリストを格納できない場合、前記メモリにすでに格納されているディスプレイリストのレンダリングの後、前記生成したディスプレイリストに対応するページ記述言語データに含まれる画像データと同一の原画像から生成された画像データを含むページ記述言語データ群を再度読み込んでディスプレイリストを生成し、前記算出手段は、前記再度読み込まれたページ記述言語データ群に含まれる画像データ群に対して同一の画像補正係数を算出する。
【発明の効果】
【０００９】
本発明によれば、メモリ資源が有限である環境下においても、原画像に応じた適応的な補正を行い、バンディングノイズといった画像ノイズを抑制することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】画像処理装置を含む印刷システムの構成例を示す図。
【図２】第一の実施形態に係る画像処理装置のソフトウェア構成例を示す図。
【図３】画像データを分割する例を説明するための図。
【図４】複数の画像がフレームバッファ内に配置された状態を説明するための図。
【図５】画像補正係数を算出するための処理に関するフローチャート。
【図６】輝度ヒストグラム、画像領域情報、画像補正係数を示す図。
【図７】第一の実施形態に係るＰＤＬデータからディスプレイリストを生成および適応的な画像補正係数の算出を行うフローチャート。
【図８】第一の実施形態に係る処理を示すフローチャート。
【図９】原画像が複数の画像に分割された状態を説明するための図。
【図１０】スプールメモリが枯渇する前後の分割された複数の画像が配置された状態を示す図。
【図１１】第一の実施形態に係る画像領域情報と画像補正係数を示す模式図。
【図１２】スプールメモリが枯渇する前後の分割された複数の画像が配置されたディスプレイリストを示す図。
【図１３】第二の実施形態に係るプリンタドライバの構成を示す図。
【図１４】第二の実施形態に係るＰＣのソフトウェア構成例を示す図。
【図１５】本願発明の効果を説明するための図。
【発明を実施するための形態】
【００１１】
［課題の説明］
本願発明が解決しようとする問題について、図面を用いて詳細に説明する。ここでは、各画像に適応的な補正を行った結果、原画像がバンド分割されてしまったような視覚性を持つバンディングノイズが印刷物に発生する例として、図３を参照して説明する。図３（ａ）は、ＷｉｎｄｏｗｓＧＤＩやＸ−Ｗｉｎｄｏｗといった描画システムにおいて、ドキュメント３０１をＰＣのディスプレイ上で表示した状態を示す模式図である。ドキュメント３０１は、画像データ３０２、３０３の２枚を含んで構成されている。ドキュメント３０１を画像処理装置により印刷物として出力した際に、ＰＣ上で動作するオペレーティングシステム（ＯＳ）やアプリケーション、プリンタドライバがメモリ等資源に応じて画像データ３０２、３０３を適宜分割することがある。
【００１２】
図３（ｂ）、（ｃ）は、画像データが分割された例を示す。図３（ｂ）は、画像データ３０２がメモリ資源などにより画像３０４、３０５、３０６の３つのバンドに分割された状態を示す。図３（ｃ）は、画像データ３０３がメモリ資源などにより画像３０７、３０８、３０９の３つのバンドに分割された状態を示す。画像処理装置において、分割された各画像に適応的な補正を行うと、元が１つの画像であっても個々の分割された画像に対して補正されるため、一貫性のない画像となってしまう。その結果、印刷物にバンディングノイズといった事象が発生する。バンディングノイズが発生した画像の例を図１５（ａ）に示す。
【００１３】
続いて、本発明を実施するための形態について図面を用いて説明する。
【００１４】
［システム構成］
図１は、本願発明に係る画像処理装置を含むシステムの構成例を示すブロック図である。画像処理装置１００は、イーサネット（登録商標）等のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）にて、情報処理装置であるホストコンピュータ（ＰＣ）１７０、１７５に接続されている。画像処理装置１００は、制御装置（コントローラ部）１１０、リーダー装置１２０、プリンタ装置１３０、操作部１４０、及び画像記憶部１５０を含む。制御装置１１０は、各構成要素を制御する。制御装置１１０は、ＣＰＵ１１２、ＲＯＭ１１４、及びＲＡＭ１１６を有する。ＣＰＵ１１２は、記憶部であるＲＯＭ１１４または他の記憶媒体に格納されたプログラムに基づいて、画像処理装置１００全体を統括制御する。
【００１５】
例えば、制御装置１１０は、ＣＰＵ１１２により、ＰＤＬ解釈処理・ディスプレイリスト生成処理やレンダリング処理等を行うためのプログラムを実行させる。またレンダリング処理に関しては、専用のハードウェア（不図示）を利用しても構わない。プリンタ装置１３０は、画像データの出力を行う。操作部１４０は、画像出力処理を行うための各種印刷設定の操作を行うキーボード、及び画像出力設定を行う操作ボタン等の表示を行う液晶パネルを備える。画像記憶部１５０は、画像データやドキュメントデータ、印刷装置制御言語（例えば、ＥＳＣコード、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ：ページ記述言語））などの印刷データの格納／保存ができる。例えば、画像記憶部１５０は、ＬＡＮ１６０を介してＰＣ１７０より受信した画像データ、ドキュメント、ＰＤＬデータ（ページ記述言語データ）などや、リーダー装置１２０を制御して読み込む画像データの格納／保存ができる。以下の説明では、画像処理装置１００のようなＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）を例として述べる。もちろん、ＳＦＰ（Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）やＬＢＰ（Ｌａｓｅｒ  Ｂｅａｍ  Ｐｒｉｎｔｅｒ）、その他のプリント方式の画像形成装置でもよい。
【００１６】
＜第一の実施形態＞
本願発明に係る画像補正処理について図２〜図１２を用いて説明する。
【００１７】
［ソフトウェア構成］
図２は、本実施形態に係る画像処理装置１００において動作するソフトウェアモジュールの構成例を示す。これらソフトウェアは、画像処理装置１００におけるＲＯＭ１１４にて保存され、起動時に、ＲＡＭ１１６へ展開され、ＣＰＵ１１２により実行される。ジョブ制御部２００は、印刷ジョブの入力から出力を関数コールやメッセージ通信などの手段による制御を行う。ＰＤＬ解釈部２０１は、画像処理装置１００に搭載されるＰＤＬの種類（例えば、ＰｏｓｔＳｃｒｉｐｔ（登録商標）がある）の数の分だけ存在する。
【００１８】
ＰＤＬ解釈部２０１は、ジョブ制御部２００の制御に従ってＰＤＬ受信バッファ（不図示）に格納されたＰＤＬデータを読み込み、解釈処理を実行する。ディスプレイリスト生成部２１０は、ジョブ制御部２００の制御とＰＤＬ解釈部２０１から渡された描画情報によりディスプレイリスト生成処理を実行する。ディスプレイリスト生成部２１０は、生成したディスプレイリストをディスプレイリストのスプールメモリに格納する。スプールメモリは例えば、ＲＡＭ１１６の一部に設けられる。また、描画情報に画像データが含まれる場合は、ディスプレイリスト生成部２１０は、その画像を縮小して、レンダリング後の画像と同じように、フレームバッファ上に縮小画像を配置し保存する。フレームバッファは例えば、ＲＡＭ１１６の一部に設けられる。ここで、フレームバッファは画像を上書きしていくので予め設けられた固定量を超えて溢れることは無い。一方、ディスプレイリストのスプールメモリは、スキャンラインレンダリングにおける描画命令が入力されるＰＤＬデータに依存するため格納できずに溢れることがある。
【００１９】
同一画像判定部２４０は、ページ終了のタイミングでフレームバッファに配置された画像データ群において、どの画像データとどの画像データが同一の原画像から生成された画像データであるかを判定する。つまり、上述したように、フレームバッファに配置された画像データ群は、１の画像から分割された複数の画像（バンド画像）である場合がある。そのため、原画像が同一である複数の画像データを特定する。同一と判定された画像毎に、画像係数決定部２５０は、輝度ヒストグラムを解析し、各画像に適応した画像補正係数を決定し、その画像補正係数をディスプレイリスト生成部２１０へと返す。
【００２０】
また、生成したディスプレイリストがディスプレイリストのスプールメモリに格納しきれずに溢れた場合、ディスプレイリスト生成部２１０は、一旦現時点でスプールメモリに格納されたディスプレイリストをレンダリングする。そして、ディスプレイリスト生成部２１０は、そのレンダリングした結果を背面画像とする。そして、ディスプレイリスト生成部２１０は、格納できなかった残りのディスプレイリストをレンダリングし、背面画像と合成する。これにより、ディスプレイリストのスプールメモリに入りきらないサイズのジョブを印刷可能とする。この処理を以下の説明では「フォールバック」と呼ぶ。
【００２１】
レンダリング処理部２２０は、ＲＡＭ１１６からディスプレイリストをロードし、レンダリング処理を実行することでディスプレイリストをイメージデータに変換し、画像記憶部１５０へ出力する。画像処理部２３０は、画像記憶部１５０から描画ビットマップ・イメージおよび属性ビットマップ・イメージをロードし、属性に応じた画像処理パラメーターで画像処理を実行する。そして、画像処理部２３０は、画像処理と合わせてコントーンイメージデータをハーフトーンイメージデータに変換し、画像記憶部１５０へ出力する処理を行う。
【００２２】
同一画像判定部２４０および画像係数決定部２５０の処理について、以下にて具体的に説明する。
【００２３】
図４は、同一画像判定部２４０にて行う同一画像判定の内部処理を説明するための模式図である。図３に示すように、ドキュメント３０１がプリンタドライバによってＰＤＬデータ群（ページ記述言語データ群）に変換され画像処理装置１００に投入される場合、ドキュメント３０１に含まれる画像データ３０２、３０３はそれぞれ画像３０４〜３０６、画像３０７〜３０９に分割される。このように分割された画像データをディスプレイリスト生成部２１０は逐次読み出し、画像データを縮小してフレームバッファの指定された描画位置に配置し、保存する。
【００２４】
ディスプレイリスト生成部２１０は、縮小画像を指定された位置に配置した際に、図４（ａ）に示すように画像データが存在する領域に関してはフラグを立て（フラグ＝１）、フレームバッファに付加情報として保存する。一方、画像データが存在しない領域に関してはフラグを下げる（フラグ＝０）。図４（ａ）の場合、縮小画像が配置された領域４０５、４０６において、フラグが立てられることとなる。ディスプレイリスト生成部２１０は、ページ終了タイミングにて同一画像判定部２４０に同一画像判定依頼を行う。
【００２５】
同一画像判定部２４０は、フレームバッファ内のフラグを参照し、そのフラグが立っている連続矩形領域に対する最大最小の座標位置を算出する。複数の連続矩形領域がある場合には、それぞれの領域に対して求められる。例えば、フレームバッファの座標系において左上を原点とする。この場合、図４（ｂ）では、２つの連続矩形領域４０７、４０８が示され、各連続矩形領域に対する最大最小の座標位置は、（ｘ１、ｙ１），（ｘ３、ｙ３）および、（ｘ５、ｙ５），（ｘ７、ｙ７）である。このように入力データのＰＤＬデータにおいて画像が分割されていても、縮小画像が描画位置に配置されたフレームバッファ内で同一画像判定を行うことにより、２つの原画像の領域を抽出することができる。
【００２６】
図５は、画像係数決定部２５０にて、同一画像に対して画像補正係数を決める処理を示すフローチャートである。画像係数決定部２５０は、入力された各画像の輝度ヒストグラムを解析し、各画像に適応した画像補正係数を決定し、その画像補正係数をディスプレイリスト生成部２１０へと返す。
【００２７】
Ｓ５０１にて、画像係数決定部２５０は、同一画像判定部２４０で判定した画像データ（すなわち同一の原画像から得られた画像データ群）を参照し、その画像データごとに輝度のヒストグラムを生成する。ラスター画像の各画素がレッド（Ｒ）・グリーン（Ｇ）・ブルー（Ｂ）の８ビットＲＧＢ信号で表現されているとすると、輝度は下記の式１で算出できる。
2015056074.tif 000003
（式１）
式１において、Ｙは輝度、ＵとＶは色差成分を表す。生成したヒストグラムの例を図６（ａ）に示す。図６（ａ）において、横軸は輝度、縦軸は画素数を示す。ヒストグラム６０１は、本実施形態における画像データの輝度ヒストグラムの一例である。
【００２８】
Ｓ５０２にて、画像係数決定部２５０は、輝度ヒストグラムの上端１％度数に対応する輝度値と下端１％度数に対応する輝度値を判定する。上端１％度数に対応する輝度値は写真領域のダイナミックレンジの最大値を表し、下端１％度数に対応する輝度値は写真領域のダイナミックレンジの最小値を表す。ここで、上端１％度数と下端１％度数を捨てているのは、ノイズや孤立点などの影響を避けるためである。
【００２９】
後に画像処理部２３０で行う画像データの補正は、このダイナミックレンジの最大値から最小値までの範囲を輝度で表現可能な最大値（２５５）と最小値（０）まで線形的に広げることによりダイナミックレンジを向上する処理を行う。図６（ａ）のヒストグラム６０４は、ヒストグラム６０１に対し上端１％度数と下端１％度数を捨て、画像補正領域を補正した後のヒストグラムである。なお、本実施形態では、上端と下端に対しそれぞれ１％の割合を所定の閾値として用いたが、これに限定するものではない。
【００３０】
Ｓ５０３にて、画像係数決定部２５０は、ヒストグラム６０１をヒストグラム６０４へと変換するルックアップテーブル（ＬＵＴ）を画像補正係数としてディスプレイリストのスプールメモリ上に保持する。画像データの領域情報と関連付けた際のＬＵＴを図６（ｂ）に示す。画像データの領域（ここでは、連続矩形領域４０７、４０８に相当）ごとに、画像補正係数を関連付けて記憶する。ＬＵＴは、画像データに含まれる各画素値を目的の画素値に補正するために用いられる。
【００３１】
図７は、ＣＰＵ１１２にて動作する、ディスプレイリストを生成・レンダリングし、適応的な画像補正を実施する一連の流れを説明するフローチャートである。
【００３２】
Ｓ７０１にて、画像処理装置１００は、ＰＣ１７０、１７５にて生成したＰＤＬデータを受信し、ＲＡＭ１１６にＰＤＬデータを格納する。Ｓ７０２にて、画像処理装置１００は、ＰＤＬ解釈部２０１によりＰＤＬデータの描画コマンドを解釈する。Ｓ７０３にて、画像処理装置１００は、ディスプレイリスト生成部２１０により描画コマンドから画像データを抽出する。
【００３３】
Ｓ７０４にて、画像処理装置１００は、抽出した画像データがディスプレイリストのスプールメモリに格納できるか否かを判定する。つまり、抽出した画像データを格納することにより、ディスプレイリストのスプールメモリの容量を超えてしまうか否かを判定する。画像データがディスプレイリストのスプールメモリに格納できる場合（Ｓ７０４にてＹＥＳ）、Ｓ７０６にて、画像処理装置１００は、抽出した画像データをディスプレイリストのスプールメモリに格納する。次にＳ７０７にて、画像処理装置１００は、ヒストグラム分布に基づいた画像処理を行うか否かを示す印刷設定の内容を確認する。ここでの印刷設定は、例えば、画像処理装置１００の操作部１４０にてユーザーが指定する。具体的には、印刷設定における“自動写真補正”という設定項目で“オン”、“オフ”のいずれかを選択することで指定される。
【００３４】
自動写真補正がオフになっており、ヒストグラム分布に基づいた画像処理を行わない場合は（Ｓ７０７にてＮＯ）、画像処理装置１００は、描画コマンドが無くなるまでディスプレイリスト生成処理を繰り返す（Ｓ７０２〜Ｓ７０６）。自動写真補正がオンになっており、ヒストグラム分布に基づいた画像処理を行う場合は（Ｓ７０７にてＹＥＳ）、Ｓ７０８にて、画像処理装置１００は、画像データを縮小する。そして、Ｓ７０９にて、画像処理装置１００は、縮小画像をフレームバッファへ配置する。画像を配置した領域に関しては、フレームバッファ上のメモリに、フラグを立てて付加情報として格納する。
【００３５】
ヒストグラム分布に基づいた画像処理を行う場合にはＳ７０２〜Ｓ７０９の処理を描画コマンドが無くなるまで繰り返すことで、画像処理装置１００は、ディスプレイリストを生成する。１ページ分のディスプレイリストを生成すると、Ｓ７１０に進み、画像処理装置１００は、同一画像判定部２４０により同一画像判定を行う。Ｓ７１１にて、画像処理装置１００は、画像係数決定部２５０により画像補正係数の算出を行う。Ｓ７１０およびＳ７１１の処理の詳細については、図８（ａ）にて後述する。Ｓ７１１の処理の後、Ｓ７１７へ進む。
【００３６】
一方、画像データがディスプレイリストのスプールメモリの残容量を超えるために格納できない場合（Ｓ７０４にてＮＯ）、Ｓ７１２にて、画像処理装置１００は、ディスプレイリストを一旦クローズする。そして、画像処理装置１００は、フォールバック処理を開始する。ここでは、すでにスプールメモリに格納されているディスプレイリストを用いてレンダリングを行う。ここでレンダリングされた画像は次回のレンダリングでは、背面画像であり、このレイヤーを背面レイヤーとする。Ｓ７１３にて、画像処理装置１００は、自動写真補正の印刷設定を確認する。つまり、画像処理装置１００は、ヒストグラム分布に基づいた画像処理を行うか否かを確認する。自動写真補正がオフになっており、画像処理を行わない場合（Ｓ７１３にてＮＯ）、Ｓ７１７にて、画像処理装置１００は、レンダリングを開始する。自動写真補正がオンになっており、画像処理を行う場合（Ｓ７１３にてＹＥＳ）、Ｓ７１４にて、画像処理装置１００は、背面レイヤーが既に存在するか否かを判定する。つまり、これが同一ページにおける最初のフォールバックであるか否かの確認を行う。
【００３７】
背面レイヤーが存在しない場合、つまり最初のフォールバックである場合（Ｓ７１４にてＮＯ）、Ｓ７１０にて、画像処理装置１００は、フォールバックしていない場合と同じ処理を行う。背面レイヤーが存在する場合、つまり最初のフォールバックでない場合（Ｓ７１４にてＹＥＳ）、Ｓ７１５にて、画像処理装置１００は、フォールバックにおける同一画像判定を行う。Ｓ７１６にて、画像処理装置１００は、フォールバックにおける画像補正係数の算出を行う。Ｓ７１５およびＳ７１６の処理の詳細については、図８（ｂ）を用いて後述する。
【００３８】
ここまでの処理が、ディスプレイリスト生成部２１０によるディスプレイリスト生成処理、および同一画像判定部２４０と画像係数決定部２５０による画像補正係数の決定処理である。
【００３９】
Ｓ７１７にて、画像処理装置１００は、レンダリング処理部２２０にて、生成されたディスプレイリストを基に画像データへと変換する。Ｓ７１９にて、画像処理装置１００は、スキャンライン毎にディスプレイリストからエッジデータを読み込む。ここでのエッジデータは、画像が描画される領域のエッジを示す。Ｓ７２０にて、画像処理装置１００は、エッジが参照する画像データを読み込む。Ｓ７２１にて、画像処理装置１００は、画像データが画像補正係数を参照しているか否かを判定する。
【００４０】
画像データが画像補正係数を参照していない場合（Ｓ７２１にてＮＯ）、画像処理装置１００は、エッジデータの読み込みをスキャンライン毎に繰り返し（Ｓ７１９〜Ｓ７２０）、レンダリング処理を継続する。画像データが画像補正係数を参照している場合（Ｓ７２１にてＹＥＳ）、Ｓ７２２にて、画像処理装置１００は、画像補正係数を読み込む。Ｓ７２３にて、画像処理装置１００は、読み込んだ画像補正係数を用いて画像補正を行う。全てのスキャンラインに対してレンダリング処理が完了した後、Ｓ７２４に進み、画像処理装置１００は、レンダリングを終了する。なお、未処理のＰＤＬデータがある場合には、Ｓ７０１に戻り、処理を繰り返すこととなる。
【００４１】
図８（ａ）は、非フォールバック処理時における画像補正係数を算出するフローチャートである。この処理は、画像処理装置１００の同一画像判定部２４０にて、フレームバッファに配置された画像データに対して行われる。図７のＳ７１０における同一画像判定処理は、Ｓ８０１〜Ｓ８０２に相当する。Ｓ８０１にて、同一画像判定部２４０は、フレームバッファに配置された画像データを読み込む。次にＳ８０２にて、同一画像判定部２４０は、同一画像判定を行う。
【００４２】
例えば、図９（ａ）のようなドキュメント９０１のＰＤＬジョブが投入され、同一画像判定が行われる際に、フレームバッファ上に図９（ｂ）のような画像データ９０５、９０６が配置されている場合について説明する。この場合、同一画像判定部２４０における同一画像判定処理（Ｓ８０２）により、画像データが配置されたフラグ情報から位置情報を算出し、図１０（ａ）のような画像領域情報（ここでは、座標）を算出する。このとき、同一画像判定処理の結果として、図１０（ａ）に示す連続矩形領域に対応する画像データ１００１、１００２の２つを検出する。
【００４３】
図７のＳ７１１における画像補正係数算出処理は、Ｓ８０３〜Ｓ８０６に相当する。Ｓ８０３にて、画像処理装置１００は、画像係数決定部２５０により同一画像毎の画像補正係数を決定する。つまり、図５のフローチャートの説明で述べたように、図１０（ａ）に示す画像データ１００１、１００２の輝度を算出し、その輝度のヒストグラム分布から画像補正係数を２つの画像データそれぞれに対して算出する。Ｓ８０４にて、画像処理装置１００は、画像データと画像補正係数とを関連付ける。ここでは、画像データ１００１、１００２に対し、それぞれＬＵＴ＿ａ、ＬＵＴ＿ｃという画像補正係数のＬＵＴを関連付けて参照させる。Ｓ８０５にて、画像処理装置１００は、ディスプレイリスト生成部２１０によりディスプレイリストのエッジデータに画像データを関連付ける。
【００４４】
図１２（ａ）は、Ｓ８０５にてディスプレイリストのエッジデータに画像データを関連付けた状態の模式図である。画像データ１００１のエッジとしてエッジ１２０１が生成される。エッジ１２０１は、関連付けられたＬＵＴ＿ａおよび画像データを参照する構成となる。同様に、画像データ１００２のエッジとしてエッジ１２０２が生成され、エッジ１２０２はＬＵＴ＿ｃおよび画像データを参照する構成となる。
【００４５】
Ｓ８０６にて、画像処理装置１００は、フレームバッファの画像に描画済みフラグを立てる。図１０（ｃ）では、画像データ１００１、１００２に対して、画像データ１００５、１００６のような描画済みの状態を示している。つまり、ディスプレイリストとして生成された領域に関しては描画済みフラグが“１”となり、それ以外の領域に関しては描画済みフラグが“０”となっている状態である。
【００４６】
図８（ｂ）は、フォールバック処理時における画像補正係数を算出するフローチャートである。この処理は、画像処理装置１００の同一画像判定部２４０にて、フレームバッファに配置された画像データに対して行われる。図７のＳ７１５におけるフォールバック時の際の同一画像判定処理は、Ｓ８１０〜Ｓ８１１に相当する。また、図７のＳ７１６におけるフォールバック時の画像補正係数算出処理は、Ｓ８１２〜Ｓ８２２に相当する。
【００４７】
まず、Ｓ８１０にて、画像処理装置１００は、フレームバッファに配置された画像データを読み込む。Ｓ８１１にて、画像処理装置１００は、同一画像判定部２４０により同一画像判定を行う。Ｓ８１２にて、画像処理装置１００は、同一画像判定された領域内に描画済みフラグを含むか否か判定する。
【００４８】
例えば、図９（ａ）に示すようなドキュメント９０１のＰＤＬジョブが投入され、同一画像判定が行われるものとする。この場合において、図９（ｂ）のように画像が配置された状態でフォールバックが発生し、次のディスプレイリストで図９（ｃ）のような状態になった場合について説明する。このような状態においては、画像データ９０５、９０６は背面レイヤーとして既にレンダリングされている。よって、図８（ａ）の描画済みフラグの付加（Ｓ８０６）により、図１０（ｃ）に示すように画像データ１００５、１００６の背面レイヤーとして画像がある位置には描画済みフラグが立った状態（フラグ＝１）となる。
【００４９】
Ｓ８１１の同一画像判定により、画像データ１００６の領域に画像データ１００３の画像が含まれ、画像データ１００６の領域には描画済みフラグが立っている。この場合、Ｓ８１２において、同一画像判定された領域内には、描画済みフラグを含むと判定される。描画済みフラグを含む場合（Ｓ８１２にてＹＥＳ）Ｓ８１３へ進み、描画済みフラグを含まない場合（Ｓ８１２にてＮＯ）Ｓ８２０へ進む。
【００５０】
Ｓ８１３にて、画像処理装置１００は、描画済み画像が再読み込み可能であるか否かを判定する。再読み込みとは、背面レイヤーのレンダリング時に、一度画像データとして、ＰＤＬ解釈部２０１から読み込まれているが、再度同じ画像を読み込む処理である。例えば、図９（ｂ）に示す画像データ９０６は既に背面レイヤーのレンダリング時に読み込まれているが、画像データ９０６を再度読み込み、次のレイヤーでは図９（ｄ）に示す画像データ９１０のようなレイヤーにする。再読み込みできるか否かは、ＰＤＬの種類やジョブ投入系に依存する。例えば、ＰＤＬの種類であれば、ＰＤＦやＸＰＳは再読み込みが可能であり、その他は不可能である。また、ジョブ投入系であれば、メディアダイレクトは再読み込みが可能であり、ドライバ投入は再読み込みが不可能であると判定することができる。つまり、再読み込みの可／不可は、画像処理装置１００がＰＤＬのバイナリデータをジョブが終了するまでスプールしているか否かに依存する。画像データの再読み込みが可能な場合（Ｓ８１３にてＹＥＳ）、Ｓ８１４にて画像処理装置１００は画像データを再度読み込む。そして、Ｓ８１８にて、画像処理装置１００は、同一画像毎の画像補正係数を決定する。
【００５１】
例えば、図９（ｂ）、（ｃ）でそれぞれヒストグラム分析を行い、画像補正係数を決めてしまった場合、処理途中でフォールバックが起きた画像領域である画像データ９０６と９０８の間にバンディングノイズが発生することがある。このような問題を解消するために、前面レイヤーの描画において背面レイヤーで既に読み込んだ画像データ９０６を再度前面レイヤーの処理時においても読み込む。そして、図９（ｄ）の状態で新たな画像補正係数を決定した上で補正処理を行い、画像データ９０６の領域の上書きすることでバンディングノイズが解消される。
【００５２】
図１２（ｂ）は、このようなディスプレイリストの構成を示す。再度読み込んだ画像データ９０６の画像領域に対するエッジがエッジ１２０５であり、これに画像補正係数としてＬＵＴ＿ｂが設定されている。図１２（ａ）のディスプレイリストを背面レイヤーとしてレンダリングした後に、図１２（ｂ）のディスプレイリストのレンダリング結果を背面レイヤーに合成する。これにより、画像データ９０３はＬＵＴ＿ｂで補正され、ディスプレイリストのメモリ枯渇によるフォールバックの影響を受けない画像補正が可能となる。
【００５３】
一方、画像データの再読み込みができない場合（Ｓ８１３にてＮＯ）Ｓ８１５へ進む。Ｓ８１５にて、画像処理装置１００は、背面レイヤーでの画像補正係数を打ち消す補正係数を算出する。つまり、レンダリングの際に補正された画像データを元の画像データに戻すために用いられる補正係数を算出する。Ｓ８１６にて、画像処理装置１００は、同一画像毎の画像補正係数を決定する。Ｓ８１７にて、画像処理装置１００は、Ｓ８１６にて求めた新しい画像補正係数とＳ８１５にて求めた補正係数とを乗算することで、すでにレンダリングを行った画像データに対する補正係数を算出する。Ｓ８１９にて、描画済み領域のエッジデータ生成を行う。
【００５４】
例えば、図９（ｄ）のように画像データの再読み込みができない場合、画像データ１００６に設定したＬＵＴ＿ｃを打ち消す補正係数を算出し（Ｓ８１５）、その後の画像データ１００６の領域全体でヒストグラム解析し、ＬＵＴ＿ｂを算出する（Ｓ８１６）。その後、バンディングノイズ解消するために、フォールバックによって途切れた画像データに関しては、背面レイヤーの画像領域には一度適用したＬＵＴ＿ｃによる補正を取り消しつつ、新しい画像補正係数であるＬＵＴ＿ｂを用いて補正する。つまり、すでにレンダリングされた画像データに対しては、Ｓ８１７にて算出した補正係数を用いて補正を行うことで、前面レイヤーの画像領域の画像補正係数であるＬＵＴ＿ｂと整合性を合わせ、バンディングノイズが解消される。
【００５５】
Ｓ８２０にて画像処理装置１００は、対象画像データにＳ８１６およびＳ８１７、もしくはＳ８１８にて求めた画像補正係数を関連付ける。Ｓ８２１にて、画像処理装置１００は、対象エッジデータに画像データを関連付ける。
【００５６】
このようにして算出する画像データ領域と画像補正係数を関連付けた格納テーブルが図１１である。図１０（ｃ）の画像データ１００６の領域のうち描画済みフラグが立っている領域（描画済みフラグ＝１）に関しては、背面レイヤーのレンダリング時に補正したＬＵＴ＿ｃを打ち消し、新しい画像係数ＬＵＴ＿ｂを利用する。つまり、（ＬＵＴ＿ｃ−１）＊ＬＵＴ＿ｂが画像補正係数として適用される。ここで、（ＬＵＴ＿ｃ−１）は、ＬＵＴ＿ｃを打ち消すＬＵＴを意味する。なお、便宜上、ＬＵＴ＿ｂを第一の画像補正係数、（ＬＵＴ＿ｃ−１）を第二の画像補正係数とも呼ぶ。
【００５７】
一方、図１０（ｃ）の画像データ１００６の領域のうち描画済みフラグが立っていない領域（描画済みフラグ＝０）に関しては、新しい画像係数ＬＵＴ＿ｂが補正係数として適用される。この状態をディスプレイリストとして表したのが図１２（ｃ）である。
【００５８】
図１５は、第一の実施形態における効果を示す印刷データ画像である。図１５（ａ）は、本発明を実施せず、フォールバックが発生するプリントジョブに対し、適応的な画像補正を行った結果である。分割された画像データ１５０１をディスプレイリストのスプールメモリに格納した後、画像データ１５０２をディスプレイリストのスプールメモリに格納しようとした時点でスプールメモリが溢れ、フォールバックが発生している。この場合、同一画像判定が途切れてしまい、画像データ１５０１と１５０２のそれぞれに対し適応的な画像補正を行われる。その結果、画像データ１５０１と１５０２の間にバンディングノイズが発生してしまう。例えば、ディスプレイリストのスプールメモリが８０ＭＢの画像処理装置１００の構成において、Ａ４サイズＲＧＢカラーの６００ｄｐｉの画像データのサイズがおよそ１００ＭＢとなり、途中でディスプレイリストのスプールメモリが枯渇する。
【００５９】
本願発明は、フォールバックが発生した前後においても、同一の画像補正係数を適応することで、図１５（ｂ）のようにバンディングノイズの無い、適応的な画像補正を行うことができる。つまり、メモリ使用量の制限がある環境下においても、分割された画像データを考慮し、原画像単位での画像補正係数の算出が可能となり、バンディングノイズを抑制することが可能である。
【００６０】
＜第二の実施形態＞
本実施形態に係るＰＣ１７０内で動作するソフトウェアモジュールであるプリンタドライバでの画像補正を処理について図１３、図１４を用いて説明する。
【００６１】
［ソフトウェア構成］
図１３は、本実施形態に係るＰＣ１７０上で動作するソフトウェアの構成例を示すブロック図である。これらのソフトウェアはＰＣ１７０におけるＲＯＭ１７４にて保存され、起動時に、ＲＡＭ１７６へ展開され、ＣＰＵ１７２にて動作する。アプリケーション１３０１は、ＷｉｎｄｏｗｓＧＤＩといったＯＳ１３０２の描画命令をコールする。ＯＳ１３０２は、描画命令をプリンタドライバ１３０３へ伝え、プリンタドライバ１３０３はＰＤＬデータを生成するソフトウェア構成となっている。
【００６２】
図１４は、本実施形態に係るＰＣ１７０上で動作するプリンタドライバ１３０３のソフトウェアモジュールの構成例を示す図である。ＯＳ１４００は、アプリケーション１３０１から呼ばれた描画コマンドをプリンタドライバ１３０３の描画オブジェクト解析部１４０１へ伝える。描画オブジェクト解析部１４０１は、描画オブジェクト編集部１４０２へ描画コマンドを伝える。描画オブジェクト編集部１４０２は、描画コマンドに画像データが含まれる場合は、その画像を縮小して、レンダリング後の画像と同じように、フレームバッファ上に縮小画像を配置し保存する。
【００６３】
同一画像判定部１４４０は、ページ終了タイミングにてフレームバッファに配置された画像データ群において、原画像としてどの画像とどの画像が同一画像であったか否かを判定する。画像係数決定部１４５０は、同一と判定された画像毎に輝度ヒストグラムを解析し、各画像に適応した画像補正係数を決定し、その画像補正係数を描画オブジェクト編集部１４０２へ返す。ＰＤＬ生成部１４２０は、ＲＡＭ１７６から描画コマンドをロードし、ＰＤＬ生成処理を実行することで描画コマンドをＰＤＬデータに変換する。ここで、ＰＤＬ生成部１４２０は、算出された画像補正係数を取得し、ＰＤＬデータに付与して含めることができる。そして、画像処理部１４６０は、画像処理を実施した後に画像処理装置１００へＰＤＬデータを転送する。これにより、ＰＣ１７０が、画像処理装置１００に本願発明に係る画像補正係数を提供することができる。プリンタドライバ１３０３の同一画像判定部１４４０および画像係数決定部１４５０は、第一の実施形態で説明した画像処理装置１００の同一画像判定部２４０および画像係数決定部２５０と同様の処理を行う。
【００６４】
そして、画像形成装置側では、ＰＣ１７０から提供されたＰＤＬデータおよび画像補正係数を用いて印刷処理を行うことができる。
【００６５】
第二の実施形態においても、第一の実施形態と同様の効果（図１５）を得ることができる。つまり、メモリ使用量の制限がある環境下においても、分割された画像データを考慮し、原画像単位での画像補正係数の算出が可能となり、バンディングノイズを抑制することが可能である。
【００６６】
ＰＤＦやＸＰＳ、Ｉｍａｇｉｎｇのダイレクトプリントおよびメディアプリントによるプリントジョブ投入の場合は第一の実施形態で示した画像処理装置１００内の制御装置１１０にて本願発明に係る処理を実施することができる。その他、プリンタドライバを用いたプリントジョブ投入の場合は第二の実施形態で示したプリンタドライバ１３０３にて、本願発明に係る処理を実施することができる。
【００６７】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015056074.tif 000004
【図２】
2015056074.tif 000005
【図３】
2015056074.tif 000006
【図４】
2015056074.tif 000007
【図５】
2015056074.tif 000008
【図６】
2015056074.tif 000009
【図７】
2015056074.tif 000010
【図８】
2015056074.tif 000011
【図９】
2015056074.tif 000012
【図１０】
2015056074.tif 000013
【図１１】
2015056074.tif 000014
【図１２】
2015056074.tif 000015
【図１３】
2015056074.tif 000016
【図１４】
2015056074.tif 000017
【図１５】
2015056074.tif 000018