(57)【要約】【課題】  画像データから印刷データを生成する際に行う色処理の効率化に関する技術が提案されてきているが、改善の余地はまだ存在する。【解決手段】  画像を複数のブロックに分割し、各ブロックに対してＤＣＴを適用する圧縮方法により生成された圧縮画像を復号し、その復号されたブロックにおけるＤＣＴ係数に応じて当該ブロックを分類する（Ｓ１１，Ｓ１３，Ｓ１５）。そして復号された復号データと、その分類結果とに基づいて、ブロック単位の色分解データを生成する（Ｓ１２，Ｓ１４，Ｓ１６，Ｓ１７）。【選択図】  図８
2008148264.tif 000002
【特許請求の範囲】
【請求項１】
画像を複数のブロックに分割し、各ブロックに対してＤＣＴを適用する圧縮方法により生成された圧縮画像を入力して処理する画像処理装置であって、
前記圧縮画像を復号する復号手段と、
前記復号手段により復号された前記ブロックにおけるＤＣＴ係数に応じて当該ブロックを分類するブロック分類手段と、
前記復号手段により復号された復号データと前記ブロック分類手段による分類結果とに基づいて、前記ブロック単位の色分解データを生成する色分解データ生成手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記ブロック分類手段は、少なくとも
（ａ）直流成分からなるブロックＡ、
（ｂ）直流成分及び水平方向の周波数成分からなるブロックＢ
（ｃ）直流成分及び垂直方向の周波数成分からなるブロックＣに分類することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記色分解データ生成手段は、前記ブロックＡに対しては、前記ブロックの任意の１画素の色分解データを生成して当該ブロックの全画素の色分解データとして出力し、
前記ブロックＢに対しては、前記ブロックの任意の１行の画素の色分解データを生成し、当該生成された色分解データを前記ブロックの列方向に繰り返し出力し、
前記ブロックＣに対しては、前記ブロックの任意の１列の画素の色分解データを生成し、当該生成された色分解データを前記ブロックの行方向に繰り返し出力することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記色分解データ生成手段は、前記ブロックＡが連続している場合、直前のブロックの色分解データを採用することを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記色分解データを量子化して印刷データを生成する量子化手段を更に有することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記圧縮画像はＪＰＥＧ画像であリ、前記ブロックはＭＣＵであることを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記復号手段は、
ハフマン復号化部と、
逆量子化部と、
逆ＤＣＴ部とを有することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記色分解データ生成手段は、
前記復号データを予め定められた色空間へ変換する色空間変換手段と、
前記色空間変換手段により生成される色空間変換データをデバイスの固有色に分解する色分解手段とを有することを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
前記色分解データ生成手段は、更に、色分解された色分解データを変倍する変倍手段を有することを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項１０】
前記色分解データを変倍する変倍手段を更に有することを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１１】
画像を複数のブロックに分割し、各ブロックに対してＤＣＴを適用する圧縮方法により生成された圧縮画像を入力して処理する画像処理方法であって、
前記圧縮画像を復号する復号工程と、
前記復号工程で復号された前記ブロックにおけるＤＣＴ係数に応じて当該ブロックを分類するブロック分類工程と、
前記復号工程で復号された復号データと前記ブロック分類工程での分類結果とに基づいて、前記ブロック単位の色分解データを生成する色分解データ生成工程と、
を有することを特徴とする画像処理方法。
【請求項１２】
前記ブロック分類工程は、少なくとも
（ａ）直流成分からなるブロックＡ、
（ｂ）直流成分及び水平方向の周波数成分からなるブロックＢ
（ｃ）直流成分及び垂直方向の周波数成分からなるブロックＣに分類することを特徴とする請求項１１に記載の画像処理方法。
【請求項１３】
前記色分解データ生成工程は、前記ブロックＡに対しては、前記ブロックの任意の１画素の色分解データを生成して当該ブロックの全画素の色分解データとして出力し、
前記ブロックＢに対しては、前記ブロックの任意の１行の画素の色分解データを生成し、当該生成された色分解データを前記ブロックの列方向に繰り返し出力し、
前記ブロックＣに対しては、前記ブロックの任意の１列の画素の色分解データを生成し、当該生成された色分解データを前記ブロックの行方向に繰り返し出力することを特徴とする請求項１２に記載の画像処理方法。
【請求項１４】
前記色分解データ生成工程は、前記ブロックＡが連続している場合、直前のブロックの色分解データを採用することを特徴とする請求項１２又は１３に記載の画像処理方法。
【請求項１５】
前記色分解データを量子化して印刷データを生成する量子化工程を更に有することを特徴とする請求項１１乃至１４のいずれか１項に記載の画像処理方法。
【請求項１６】
前記圧縮画像はＪＰＥＧ画像であリ、前記ブロックはＭＣＵであることを特徴とする請求項１１乃至１５のいずれか１項に記載の画像処理方法。
【請求項１７】
前記復号工程は、
ハフマン復号化工程と、
逆量子化工程と、
逆ＤＣＴ工程とを有することを特徴とする請求項１６に記載の画像処理方法。
【請求項１８】
前記色分解データ生成工程は、
前記復号データを予め定められた色空間へ変換する色空間変換工程と、
前記色空間変換工程により生成される色空間変換データをデバイスの固有色に分解する色分解工程とを有することを特徴とする請求項１１乃至１７のいずれか１項に記載の画像処理方法。
【請求項１９】
前記色分解データ生成工程は、更に、色分解された色分解データを変倍する変倍工程を有することを特徴とする請求項１１乃至１６のいずれか１項に記載の画像処理方法。
【請求項２０】
前記色分解データを変倍する変倍工程を更に有することを特徴とする請求項１１乃至１８のいずれか１項に記載の画像処理方法。
【請求項２１】
請求項１１乃至２０のいずれか１項に記載の画像処理方法をコンピュータ機器により実施させることを特徴とするプログラム。
【請求項２２】
請求項２１に記載のプログラムを記憶した、コンピュータにより読取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＣＴに基づいて圧縮された画像データを処理する画像処理装置及びその方法に関するものである。
【背景技術】
【０００２】
近年、デジタルカメラが広く普及し、デジタルカメラで撮影された画像データをプリンタで印刷する機会も増えてきている。それに伴い、デジタルカメラを直接プリンタに接続して印刷するカメラダイレクト印刷や、デジタルカメラのメモリカードをプリンタに装着して、そこに記憶されている画像を印刷するカードダイレクト印刷等が出現している。これら技術では、プリンタがデジタルカメラ或はメモリカードから画像データを取り込み、その画像データをデコードして印刷データを生成して印刷している。
【０００３】
このような画像データを処理するプリンタのリソースは、ＰＣが有するリソースに比べて貧弱であるため、ダイレクト印刷を行うシステムでは、特に印刷データを生成するための処理を効率的に行うことが望まれている。
【０００４】
このような背景がある一方で、デジタルカメラの進歩は加速度的であり、デジタルカメラで撮影可能な画素数も急激に増加している。また画質を極力落とさず画像データの容量を抑える目的で、画像データをメモリカードに保存する際にＤＣＴに基づいたカラー画像の圧縮フォーマット、例えばＪＰＥＧが標準的なフォーマットとして扱われている。このＪＰＥＧでは、画像データをＭＣＵ（Minimum Coded Unit）と呼ばれる複数のブロックに分割し、各ＭＣＵをＤＣＴ変換している。そして、高周波信号に対する感度が低いという人間の視覚特性を利用して、そのＤＣＴ係数の高周波成分を削ることで高圧縮を実現している。しかし、このようなＪＰＥＧフォーマットへの符号化、復号化処理にかかる負荷は大きい。
【０００５】
そこで特許文献１は、ＪＰＥＧの特性を利用した処理の効率化技術として、ＭＣＵの周波数特性を考慮し、ベースライン方式のＪＰＥＧ圧縮処理を高速化する技術を提案している。その内容は、画像データをＭＣＵに分割して、各ＭＣＵを単一色、非単一色に分類し、単一色は簡単な計算でＤＣ係数のみを求めて符号化し、非単一色は通常の符号化を行うといったものである。このようにＪＰＥＧで扱われるＤＣＴの特性に着目して符号化及び復号化処理を軽減するための技術も提案されているが、あくまで単一色からなるＭＣＵを効率的に扱う内容に留まっている。
【０００６】
またプリンタでは、ＪＰＥＧ画像等のデコード以外にも、デコードしたカラー画像データから、プリンタが印刷可能な印刷データを生成しなければならない。このデコード後のカラー画像データから効率的に印刷データを生成するための技術について次に述べる。
【０００７】
一般的にカラー画像データはプリンタ固有の色空間とは異なる、例えばＣＲＴ等の色空間で表現される。カラー画像データが表現する色空間には多種多様なものが存在するため、一度標準的な色空間に変換した後、プリンタ固有の色材の色に分解する必要がある。このようにプリンタ固有の色材の色データを生成するためには膨大な処理が必要となるため、これらの処理を効率的に行うための技術が提案されている。
【０００８】
特許文献２では、色変換処理、色補正、色変換を行う印刷処理において、色空間変換による処理速度の低下を改善するための技術が提案されている。その内容は、入力データとデバイス依存データを関連づけて保存し、色処理キャッシュとして利用するというものである。キャッシュ領域は複数のキャッシュデータを保持できる構成になっており、入力データとその入力データより得られる色処理結果の組み合わせが既にキャッシュされているかを、キャッシュデータテーブルを検索して判定している。ここでキャッシュデータテーブルにキャッシュされていた場合は、そのキャッシュされているデータを利用することで色処理を省略する。またキャッシュデータテーブルにキャッシュされていなかった場合は、その入力データに対して色処理を施し、その結果をキャッシュ領域の空き領域、もしくは既に使用されている領域に上書きする。このような処理により、色処理にかかる処理量を削減している。とりわけ、保持するキャッシュデータを増やすほど、一般的にキャッシュのヒット率が上がる。
【０００９】
一方、この技術には、次のような短所もある。複数のキャッシュデータをテーブル形式で保持しなければならないため、テーブルサイズを大きくするほどキャッシュ領域にかかるコストが増加してしまう。また、テーブルサイズを大きくするほどキャッシュデータテーブルの検索に時間がかかってしまう。
【特許文献１】特開２００１−１４５１０７号公報
【特許文献２】特開２００５−５３００９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述のようにプリンタ本体が頻繁に扱う画像フォーマット固有の処理負荷を軽減するための技術や、画像データから印刷データを生成する際に行う色処理の効率化に関する技術がこれまで提案されてきているが、改善の余地はまだ存在する。
【００１１】
本発明の目的は、上述した問題点を解決することにある。
【００１２】
本願発明の特徴は、ＤＣＴに基づき圧縮されたカラー画像データに対する色処理の更なる高速化を実現することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
画像を複数のブロックに分割し、各ブロックに対してＤＣＴを適用する圧縮方法により生成された圧縮画像を入力して処理する画像処理装置であって、
前記圧縮画像を復号する復号手段と、
前記復号手段により復号された前記ブロックにおけるＤＣＴ係数に応じて当該ブロックを分類するブロック分類手段と、
前記復号手段により復号された復号データと前記ブロック分類手段による分類結果とに基づいて、前記ブロック単位の色分解データを生成する色分解データ生成手段と、
を有することを特徴とする。
【００１４】
上記目的を達成するために本発明の一態様に係る画像処理方法は以下のような工程を備える。即ち、
画像を複数のブロックに分割し、各ブロックに対してＤＣＴを適用する圧縮方法により生成された圧縮画像を入力して処理する画像処理方法であって、
前記圧縮画像を復号する復号工程と、
前記復号工程で復号された前記ブロックにおけるＤＣＴ係数に応じて当該ブロックを分類するブロック分類工程と、
前記復号工程で復号された復号データと前記ブロック分類工程での分類結果とに基づいて、前記ブロック単位の色分解データを生成する色分解データ生成工程と、
を有することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、ＤＣＴの周波数特性を利用してＭＣＵを分類することにより画像データのパターンを特定するため、キャッシュデータテーブルの検索が不要となり効率的な処理を実現できる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。尚、以下の説明では便宜上、プリンタが受信した画像データに基づいて、そのプリンタで印刷データを生成してプリントする機能を「ダイレクトプリント」と呼ぶこととする。
【００１７】
まず、以下のいくつかの実施形態において共通に用いられる画像処理システムの全体概要、ハードウェア構成の概要、ソフトウェア構成の概要について説明する。
【００１８】
図１は、本発明の実施の形態に共通するプリントシステム（画像処理システム）の概略構成を示すブロック図である。
【００１９】
このプリントシステムは、ＰＣ等で構成されるホスト装置１１と、プリンタ等で構成される画像処理装置１２とを備え、これらが双方向インターフェース１３を介して接続されている。
【００２０】
次に、画像処理装置１２のハードウェア構成の概要について説明する。
【００２１】
図２は、本実施の形態に係るプリントシステムを構成する画像処理装置１２のハードウェアの概略構成を説明するブロック図である。
【００２２】
図２において、１０００は制御基板を示している。ＡＳＩＣ１００１は、このＡＳＩＣ１００１に接続された各部とのインターフェースを制御するインターフェース部（不図示）を備えるとともに、画像データの生成等の各種処理を実行するＣＰＵ１００１ａも備えている。コネクタ１００２は、制御基板１０００とオペレーションパネル１００３とを接続する。ユーザは、このオペレーションパネル１００３を操作して、各種印刷設定情報を設定したり、メンテナンスの指示、メモリカード（ＭＣ）１００７に記憶されている画像の閲覧及び印刷画像の指定、印刷開始指定、印刷のキャンセル等を行うことができる。コネクタ１００４は、このオペレーションパネル１００３とビューワ１００５とを接続している。ビューワ１００５は、メモリカード１００７に記憶された画像の閲覧用の表示、ＧＵＩによるメニュー表示、各種エラーメッセージ等を表示する。コネクタ１００６は、このメモリカード１００７と制御基板１０００とを接続しており、ＡＳＩＣ１００１は、このメモリカード１００７から画像データを直接読み込んで印刷することができる。
【００２３】
ＤＳＣ用ＵＳＢバスコネクタ１００８は、デジタルカメラ（ＤＳＣ）１０１０と制御基板１０００とを接続するＵＳＢバスコネクタであり、コネクタ１００９は、デジタルカメラ１０１０を接続するためのコネクタである。デジタルカメラ１０１０は、カメラ内部のメモリに保存している画像データ及び印刷設定情報を、この画像処理装置１２に対して出力可能に構成されている。尚、このデジタルカメラ１０１０の構成としては、内部に記憶手段としてのメモリを備えるものや、取り外し可能なメモリを装着するためのスロットを備えたもの等、種々の構成を採用することができる。これによりデジタルカメラ１０１０内の画像データを、そのデジタルカメラ１０１０で設定された印刷設定情報に従って処理し、カメラダイレクトプリントを行うことができる。
【００２４】
ＵＳＢバスハブ１０１１は、接続コネクタ１０１２を経由して接続されたＰＣ１０１３からの画像データを印刷する際には、ＰＣ１０１３からのデータをＡＳＩＣ１００１に渡す。メモリ１０１４は、ＡＳＩＣ１００１のＣＰＵ１００１ａの制御プログラム等を記憶するプログラムメモリを有している。更に、実行時のプログラムを記憶するＲＡＭエリア、更には画像データや印刷設定情報、後述する各種フラグや変数等を記憶するワークメモリエリアを有している。
【００２５】
コネクタ１０１５は、ＣＲ（キャリッジ）制御基板及びプリントヘッド１０１６と制御基板１０００とを接続している。１０１７はＬＦ（用紙送り）モータドライバ、１０１８はＬＦモータ１０１９を接続するためのコネクタである。同様に、１０２０はＡＳＦ（自動用紙給送）モータドライバ、１０２１はＡＳＦモータ１０２２を接続するためのコネクタである。１０２３は電源用コネクタで、電源１０２４により直流電圧を入力している。この電源１０２４は、電池或は商用電源からＤＣ電圧を生成するＡＣアダプタであっても良い。
【００２６】
次に本実施の形態に係る画像処理装置１２のソフトウェア構成の概要について説明する。ここではプリント機能について説明する。
【００２７】
図３は、本実施の形態に係る画像処理装置１２のプリント機能で用いられるソフトウェアのモジュール構造を示す図である。以下図３を参照して、プリント処理を説明する。尚、ここでは、メモリカード１００７から画像データを読み込んでプリントする場合、ＰＣ１０１３からデータを受信してプリントする場合、デジタルカメラ１０１０から画像データを受信してプリントする場合を説明する。尚、この図３に示す各モジュールやラスタライザ、インターフェース制御モジュールは、メモリ１０１４に記憶されてプログラムとＣＰＵ１００１ａにより実現されている。
【００２８】
まず初めに、メモリカード１００７から画像データを入力してプリントする場合を説明する。
【００２９】
ダイレクトプリント機能制御モジュール２００１は、ＤＳＣ用ＵＳＢＩ／Ｆモジュール２００２やメモリカードＩ／Ｆ２００４、ＰＣ用ＵＳＢＩ／Ｆモジュール２０１７と連携して、ＤＳＣ１０１０、メモリカード１００７、ＰＣ１０１３との接続状態を把握する。その接続状態は、随時オペレーションパネルＩ／Ｆモジュール２００６に通達され、その状態がオペレーションパネルに１００３に表示される。即ち、現在メモリカード１００７、デジタルカメラ１０１０との間でダイレクトプリントが可能かどうかを判断し、ユーザがオペレーションパネル１００３で指定できるユーザ設定メニューを表示する。また、オペレーションパネルＩ／Ｆ２００６は、ＤＳＣ１０１０やメモリカード１００７との接続状態に拘わらず、常に用紙設定等の各種印刷に関する設定を受け付け、現在の印刷設定情報を記憶しておく。これら印刷設定方法を指定をするためのメニュー画面等は、ビューワ１００５に表示される。オペレーションパネル用Ｉ／Ｆモジュール２００６とビューワ用Ｉ／Ｆモジュール２００８は連携して、オペレーションパネルのキー操作情報を共有する。またＤＳＣ１０１０やメモリカード１００７、ＰＣ１０１３の接続状態情報も共有する。そしてそれらの共有情報に基づきビューワ１００５に設定可能なメニュー画面や接続されたデバイス内の画像データの表示等を行う。
【００３０】
メモリカード１００７が接続されている場合、ユーザはオペレーションパネル１００３とビューワ１００５とを利用して、メモリカード１００７の画像を閲覧したり、印刷する画像の指定、印刷開始の指示を行える。ユーザがメモリカード１００７の画像データを印刷する場合、オペレーションパネル１００３の印刷開始キーが押されると、オペレーションパネル用Ｉ／Ｆモジュール２００６からダイレクトプリント機能制御モジュール２００１に対して印刷開始要求が発行される。この印刷開始要求を受けたダイレクトプリント機能制御モジュール２００１は、それをメイン制御モジュール２０００に通知する。メイン制御モジュール２０００は、メモリカード１００７以外のＤＳＣ１０１０やＰＣ１０１３からのデータを受付けなくするようにＤＳＣ用ＵＳＢＩ／Ｆモジュール２００２やＰＣ用のＵＳＢＩ／Ｆモジュール２０１７に指示する。これらの指示が伝わり、メモリカード１００７からの画像データの印刷に専念できる状態になった後、メイン制御モジュール２０００はダイレクトプリント機能制御モジュール２００１にダイレクトプリント処理に遷移する許可を与える。この許可を受けた後、ダイレクトプリント機能制御モジュール２００１はラスタライザマネージャ２０１０に印刷指示を与える。
【００３１】
ラスタライザマネージャ２０１０は、現在のプリントモードにあったラスタライザモジュールを選択してラスタ処理を実行させる。例えば、予め生成された印刷データをＰＣ１０１３から受信して印刷する場合は、ＰＣ１０１３から受信するデータは印刷データそのものである。それに対し、ＤＳＣ１０１０やメモリカード１００７からの画像データを印刷する場合は、ラスタライザモジュール２０１３が印刷データを生成する必要がある。そのため、予め生成された印刷データをＰＣ１０１３から受信して印刷する場合は、ラスタライザマネージャ２０１０は非ダイレクトプリント用ラスタライザモジュール２０１１を選択してＰＣ１０１３からの印刷データを処理させる。また、ＤＳＣ１０１０やメモリカード１００７から画像データを受信して印刷する場合は、ジョブ生成モジュール２０１２及びラスタライザモジュール２０１３に処理させる。
【００３２】
ジョブ生成モジュール２０１２は、ラスタライザマネージャ２０１０から印刷処理の指示を受ける。ジョブ生成モジュール２０１２は、ダイレクトプリント機能制御モジュール２００１に対して、メモリカード１００７からのダイレクトプリントか、或はデジタルカメラ１０１０からのダイレクトプリントであるかを問い合わせる。メモリカード１００７からのダイレクトプリントであると通知された場合、オペレーションパネル用Ｉ／Ｆモジュール２００６からユーザが設定した印刷設定情報を取得してジョブを生成する。その後、ジョブ生成モジュール２０１２は、ラスタライザモジュール２０１３に印刷処理指示を与える。
【００３３】
ラスタライザモジュール２０１３は、そのジョブ情報に基づいて印刷データを生成する。このジョブ情報は、用紙サイズや用紙の種類、１枚割り付け印刷（n-in-１）やインデクス印刷等の各種印刷方法の指示を含む。更に、印刷品位、各種画像補正に関する指定、印刷指定された画像ファイルに関する情報、メモリカード１００７、デジタルカメラ１０１０のいずれからのダイレクト印刷指示であるかを示す情報を含んでいる。
【００３４】
ラスタライザモジュール２０１３は、まずジョブ情報を解釈し、用紙の種類や印刷品位からエンジン部の動作モードを決定してエンジン制御モジュール２０１５に伝える。次に、用紙サイズや印刷方法に従って、１枚の用紙のどの位置にどのような大きさで画像データを割り付けるかといったレイアウト情報を形成し、印刷指定された画像ファイルに関する情報を用いて印刷データを生成する。データ変換モジュール２０１４は、ラスタライザモジュール２０１３や非ダイレクトプリント用ラスタライザモジュール２０１１により生成された印刷データを、エンジン部が受け付けるデータ形式に変換する。
【００３５】
図４は、本実施の形態に係るデータ変換モジュール２０１４による印刷データの生成処理を説明するフローチャートである。尚、この処理を実行するプログラムはメモリ１０１４に記憶されており、ＣＰＵ１００１ａの制御の下に実行される。
【００３６】
まずステップＳ１で、印刷指定された画像ファイルを読み込んで、それをデコードする。次にステップＳ２に進み、デコード後の画像データの色空間を、この画像処理装置１２に固有の色空間へ変換する。次にステップＳ３に進み、レイアウト情報に従って、その画像データを変倍する。最後にステップＳ４で、その変倍後の画像データの各画素を量子化（ハーフトーニング）する。尚、この量子化は、画像処理装置１２が処理するデータの形態に依存する。例えば、画像処理装置１２による印刷が２値データに基づいて実行される場合は２値化し、多値データ（濃淡インクによる記録、大小インクによる記録を行うため）に基づいて印刷する場合は多値化する。以上が本実施の形態に係るデータ変換モジュール２０１４による印刷データの生成処理の概要である。
【００３７】
更にラスタライザモジュール２０１３は、必要に応じて給紙や排紙、フィード、プリント等の要求をエンジン制御モジュール２０１５に対して発行し、エンジン制御モジュール２０１５とメッセージをやり取りして、同期を取りながら処理を進めていく。メモリカード１００７からのダイレクトプリントの場合、印刷指定された画像ファイルへのアクセスはメモリカード用Ｉ／Ｆモジュール２００４を通して行う。また、デジタルカメラ１０１０からのダイレクトプリントの場合は、ＤＳＣ用ＵＳＢＩ／Ｆモジュール２００２を通して行う。
【００３８】
データ変換モジュール２０１４は、ラスタライザモジュール２０１３や非ダイレクトプリント用ラスタライザモジュール２０１１により生成された印刷データを、この画像処理装置１２のエンジン部（不図示）が受け付けるデータ形式に変換する。そして所定量の変換データが揃うごとにメイン制御モジュール２０００を経由してエンジン制御モジュール２０１５に通知する。エンジン制御モジュール２０１５は、エンジン部の動作モードを考慮して、データ変換モジュール２０１４で変換されたデータをエンジン部に渡して印刷処理を行わせる。
【００３９】
次にデジタルカメラ１０１０から画像データを受信して印刷するダイレクトプリントを行う場合の処理を説明する。
【００４０】
ダイレクトプリント機能制御モジュール２００１は、メモリカード１００７からの画像データを印刷するダイレクトプリントの場合と同様の処理を行う。
【００４１】
デジタルカメラ１０１０が接続されている場合、ユーザはデジタルカメラ１０１０に備えられた機能を利用してデジタルカメラ１０１０の記憶部に記憶されている画像の閲覧、印刷する画像の指定、印刷設定、印刷開始指示を行う。デジタルカメラ１０１０からのダイレクト印刷の場合、デジタルカメラ１０１０の印刷開始キーが押されると、まずＤＳＣ用ＵＳＢＩ／Ｆモジュール２００２からダイレクトプリント機能制御モジュール２００１に対して印刷開始要求が発行される。この印刷開始要求を受けたダイレクトプリント機能制御モジュール２００１は、それをメイン制御モジュール２０００に通知する。メイン制御モジュール２０００は、デジタルカメラ１０１０以外のメモリカード１００７やＰＣ１０１３からのデータを受け付けなくするようにメモリカード用Ｉ／Ｆモジュール２００４やＰＣ用のＵＳＢＩ／Ｆモジュール２０１７に指示する。これらの指示が伝わってデジタルカメラ１０１０からの印刷に専念できる状態になった後、メイン制御モジュール２０００は、ダイレクトプリント機能制御モジュール２００１にダイレクトプリント処理に遷移する許可を与える。
【００４２】
この場合のダイレクトプリント機能制御モジュール２００１の動作は、メモリカード１００７からのダイレクトプリントを行う場合と同様である。
【００４３】
ジョブ生成モジュール２０１２は、ラスタライザマネージャ２０１０から印刷処理指示を受ける。ジョブ生成モジュール２０１２は、ダイレクトプリント機能制御モジュール２００１に対して、メモリカード１００７からのダイレクトプリントか、デジタルカメラ１０１０からのダイレクトプリントであるかを問い合わせる。その結果、デジタルカメラ１０１０からのダイレクトプリントであると通知された場合、ＤＳＣ用ＵＳＢＩ／Ｆモジュール２００２から、ユーザが設定した印刷設定情報を取得してジョブを生成する。その後、ジョブ生成モジュール２０１２は、ラスタライザモジュール２０１３に印刷処理指示を与える。このときのラスタライザモジュール２０１３の動作は、メモリカード１００７からのダイレクトプリントを行う場合とほぼ同様である。ただ異なる点は、ＤＳＣ用ＵＳＢＩ／Ｆモジュール２００２経由で所望の画像ファイルにアクセスする点にある。また、データ変換モジュール２０１４とエンジン制御モジュール２０１５による処理は、メモリカード１００７からのダイレクトプリントを行う場合と同様の動作がなされる。以上がソフトウェア構成の概要説明である。
【００４４】
本実施の形態の特徴は、図３のラスタライザモジュール２０１３で実施される印刷データの生成処理に関している。特にＤＣＴに基づき圧縮されたカラー画像データをデコードし、画像データの色空間をデバイス固有の色空間へ変換する処理に関するものである。
【００４５】
以下、ＤＣＴに基づいて圧縮されたカラー画像データに対する印刷データの生成処理に着目して実施の形態１について説明する。また説明の便宜上、ＤＣＴに基づいて圧縮されたカラー画像データとしてＪＰＥＧを例に説明する。
【００４６】
［実施の形態１］
本実施の形態１では、ＪＰＥＧデータからデバイス固有の色空間に変換された色分解データを高速に生成することを目的としている。
【００４７】
前述の図４で説明したように、デバイス固有の色空間に変換された色分解データは次のようなステップで生成される。
（１）印刷指定された画像ファイルを読み込んで、その画像データをデコードする。
（２）デコード後の画像データの色空間をデバイス固有の色空間へと変換する。
【００４８】
図５は、本実施の形態に係る色空間の変換処理を説明する図である。この処理は図５のフローチャートのステップＳ１，Ｓ２の処理に相当している。
【００４９】
まずメモリカード１００７やデジタルカメラ１０１０、ＰＣ１０１３から受信したＪＰＥＧデータは、ハフマン復号化部５００により、ＤＣ成分、ＡＣ成分ともにハフマン展開される。これにより量子化されたＤＣＴ係数データがＭＣＵ毎に得られる。次にハフマン復号化部５００から出力された量子化されたＤＣＴ係数データは、逆量子化部５０１で逆量子化され、各ＭＣＵのＤＣＴ係数データが得られる。次に各ＭＣＵのＤＣＴ係数データは、各ＭＣＵ毎に逆ＤＣＴ（ＩＤＣＴ）部５０２で逆ＤＣＴ変換され、ＪＰＥＧデコードデータが出力される。このＪＰＥＧデコードデータの色空間は特に定められていない。しかしカメラファイルシステム規格、ＤＣＦ（Design rule for Camera File system）Version 1.0では、データ形式をＹＣｂＣｒにするように明記されている。これを踏まえ、ここではＪＰＥＧデコードデータとしてＹＣｂＣｒデータが出力されることとする。
【００５０】
また逆量子化部５０１で生成された各ＭＣＵのＤＣＴ係数データは同時に、ＭＣＵ分類情報生成部５０３に入力される。ＭＣＵ分類情報生成部５０３は、ＤＣＴ係数データを解析し、各ＭＣＵを４つのカテゴリに分類し、その分類情報を出力する。
【００５１】
以下、図６（Ａ）〜（Ｅ）、図７（Ａ）〜（Ｄ）を参照して、その分類方法を説明する。
【００５２】
図６（Ａ）〜（Ｅ）は、本実施の形態に係る逆量子化部５０１により得られるＤＣＴ係数を説明する図で、図中のｍ，ｎは、それぞれＤＣＴ係数ブロックにおける水平方向の周波数成分（ｍ＝０〜７）と垂直方向の周波数成分（ｎ＝０〜７）を表している。
【００５３】
図７（Ａ）〜（Ｄ）は、ＩＤＣＴ部５０２により得られる画素値を表しており、図中のｘ，ｙは、該当ＭＣＵ内の画素位置を表している。
【００５４】
図６（Ａ）は、逆量子化部５０１で生成された、あるＭＣＵのＤＣＴ係数ブロック６００を表している。このＭＣＵは８×８画素で構成されるため、それに対応するＤＣＴ係数も８×８個の成分が得られる。
【００５５】
下式（１）は、このＩＤＣＴ部５０２における変換式を表しており、式中のｍ，ｎは、図６（Ａ）〜（Ｅ）のｍ，ｎに相当している。
【００５６】
Ｓxy＝（１／４）ΣΣＣmＣnＳmnｃｏｓ｛（２ｘ＋１）ｍπ／１６｝ｃｏｓ｛（２ｙ＋１）ｎπ／１６｝                ...式（１）
Ｃm，Ｃn＝（１／√２）  （ｍ，ｎ＝０のとき）
Ｃm，Ｃn＝１            （それ以外のとき）
但し、ここで式（１）左側のΣはｍ＝０〜７の和を、右側のΣはｎ＝０〜７の和を、それぞれ示している。またＣｍは、水平方向の周波数成分がｍの時の変換係数を示し、Ｃｎは垂直方向の周波数成分がｎの時の変換係数を示している。Ｓmnは、周波数成分（ｍ，ｎ）での周波数成分値を示し、Ｓxyは、ＩＤＣＴ部５０２により得られる該当ＭＣＵの位置（ｘ，ｙ）での画素値を表わしている。
【００５７】
上記式（１）からも分かる通り、図６（Ｂ）の６０１で示される係数、つまり（ｍ，ｎ）＝（０，０）である係数は、ＤＣ成分を表している。また図６（Ｃ）の６０２で示される係数、つまりｎ＝０となる係数群は、ＤＣ成分及び水平方向のＡＣ成分で構成されていることがわかる。同様に、図６（Ｄ）の６０３で示される係数、つまりｍ＝０となる係数群は、ＤＣ成分及び垂直方向のＡＣ成分で構成されていることもわかる。以上のことから次のことが言える。
【００５８】
あるＭＣＵのＤＣＴ係数が、図６（Ｂ）に示されるＤＣ成分（６０１）のみを持つ場合、そのＭＣＵは図７（Ａ）に示すような、全ての画素が単一色からなるＭＣＵであることが分かる。尚、以下の説明の便宜上、図７（Ａ）のように全ての画素が単一色からなるデータパターンを「パターンＡ」と呼ぶことにする。
【００５９】
また、あるＭＣＵのＤＣＴ係数が、図６（Ｃ）の６０２で示されるＤＣ成分及び水平方向のＡＣ成分を持つような場合、そのＭＣＵは図７（Ｂ）に示すような縦じま模様、つまりｙ方向の８画素に同じ画素値が連続するＭＣＵであることが分かる。尚、以下の説明の便宜上、図７（Ｂ）のようにｙ方向の８画素に同じ画素値が連続するデータパターンを「パターンＢ」と呼ぶことにする。
【００６０】
更に、あるＭＣＵのＤＣＴ係数が、図６（Ｄ）の６０３で示されるＤＣ成分及び垂直方向のＡＣ成分を持つような場合、そのＭＣＵは図７（Ｃ）に示すような横じま模様、つまりｘ方向の８画素に同じ画素値が連続するＭＣＵであることが分かる。尚、以下の説明の便宜上、図７（Ｃ）のようにｘ方向の８画素に同じ画素値が連続するデータパターンを「パターンＣ」と呼ぶことにする。
【００６１】
最後に上記のいずれにも該当しない場合、図７（Ｄ）に示すような水平方向と垂直方向の周波数成分が混在した、つまりｙ方向及びｘ方向ともにデータの連続性が保証されないＭＣＵであることが分かる。尚、以下の説明の便宜上、このようなｘ及びｙ方向ともにデータの連続性が保証されないデータパターンを「パターンＤ」と呼ぶ。このようにＤＣＴ係数を解析することで、ＭＣＵの画素値パターンを特定することができる。
【００６２】
このようにしてＭＣＵ分類情報生成部５０３は、ＤＣＴ係数値の分布を基に、そのＭＣＵの画素値パターンを特定付けて、その情報をＭＣＵ分類情報５２０として、色分解データ生成部５０４に出力する。
【００６３】
図６（Ｅ）は、このＭＣＵ分類情報生成部５０３で生成されて出力されるＭＣＵ分類情報５２０の具体例を示している。
【００６４】
この例では、ＭＣＵを、上述の４つ（「パターンＡ」〜「パターンＤ」）に分類するため、ＭＣＵ分類情報５２０は、１ＭＣＵ当り２ビットである。そして「パターンＡ」であるＭＣＵに対しては「１」を、「パターンＢ」であるＭＣＵには「２」を、「パターンＣ」であるＭＣＵには「３」を、最後に「パターンＤ」であるＭＣＵに「０」を出力している。以上が、このＭＣＵのカテゴリ分類方法に関する説明である。
【００６５】
このようにして生成されたＭＣＵ分類情報５２０と、ＪＰＥＧデコードデータは色分解データ生成部５０４に入力される。
【００６６】
この色分解データ生成部５０４は、色空間変換部５０５と色分解部５０６とを備えている。色空間変換部５０５は、入力されたＪＰＥＧデコードデータの色空間を色分解部５０６に入力可能な、予め定められた色空間に変換する。ここでは例えば、予め定められた色空間としてｓＲＧＢが設定されている場合、色空間変換部５０５では、ＹＣｂＣｒのＪＰＥＧデコードデータをマトリクス演算等によりｓＲＧＢに変換する。この色空間の変換方法については様々な技術が存在するが、本実施の形態では、どの技術を用いるかは特に規定しない。
【００６７】
色分解部５０６は、入力された画像データを、ＬＵＴ等を用いた更なる変換処理によってデバイス固有の色空間へと変換し、更に必要に応じて階調補正も施した後、出力する。例えば、予め定められた色空間としてｓＲＧＢが設定されており、またデバイス固有の色空間としてＣＭＹＫ色空間が設定されている場合、ｓＲＧＢデータが入力されると、それを変換したＣＭＹＫデータ（色分解データ）が出力される。尚、デバイス固有の色空間としてはCMYK色空間に限定されるものではなく、デバイス固有のRGB色空間であっても良い。この場合デバイス固有のRGB色空間を別途CMYK色空間に変換する必要が有る。このようなデバイス固有の色空間へと変換する色分解処理についても様々な技術が存在するが、本実施の形態では、どの技術を用いるべきか特に規定しない。
【００６８】
色分解データ生成部５０４は、色空間変換部５０５と色分解部５０６とを使用し、入力されたＪＰＥＧデコードデータからデバイス固有の色空間データを生成して出力する。但し、この際に入力されたＪＰＥＧデコードデータの全画素に対して色空間変換部５０５及び、色分解部５０６の処理を行うと演算量やメモリアクセス回数が膨大になってしまう。そこで、ＭＣＵ分類情報５２０から特定できる各ＭＣＵ内のデータパターンを考慮した色処理キャッシュを行うことで、色変換のための演算量と、メモリアクセス回数の大幅な削減を実現する。
【００６９】
次に図８〜図１２を参照して、本実施の形態に係る色分解データ生成部５０４における処理を説明する。
【００７０】
図８は、本発明の実施の形態１に係る色分解データ生成部５０４で実行される処理を説明するフローチャートである。ここでは、色分解データ生成部５０４に、あるＭＣＵのデコードデータと、そのＭＣＵのＭＣＵ分類情報５２０が入力されたときの処理を示している。尚、この処理を実行するプログラムはメモリ１０１４に記憶されており、ＣＰＵ１００１ａの制御の下に実行される。
【００７１】
まずステップＳ１１で、入力したＭＣＵのＭＣＵ分類情報５２０が「１」かどうか、即ち、前述した「パターンＡ」であるか否かを判定する。ＭＣＵ分類情報５２０が「１」であればステップＳ１２に進み、この「パターンＡ」に対応する色分解データ生成処理１を実行する。尚、このステップＳ１２の「色分解データ生成処理１」は、図９のフローチャートを参照して詳しく後述する。
【００７２】
ステップＳ１１で、「１」でなかった場合はステップＳ１３に進み、ＭＣＵ分類情報５２０が「２」かどうか、即ち、前述した「パターンＢ」であるか否かを判定する。ＭＣＵ分類情報５２０が「２」であればステップＳ１４に進み、この性質を利用した色分解データ生成処理２を実行する。このステップＳ１４の「色分解データ生成処理２」は、図１０のフローチャートを参照して詳しく後述する。
【００７３】
ステップＳ１３で、「２」でなかった場合はステップＳ１５に進み、ＭＣＵ分類情報５２０が「３」かどうか、即ち、前述した「パターンＣ」であるか否かを判定する。ＭＣＵ分類情報５２０が「３」であればステップＳ１６に進み、この性質を利用した色分解データ生成処理３を実行する。このステップＳ１６の「色分解データ生成処理３」は、図１１のフローチャートを参照して詳しく後述する。
【００７４】
ステップＳ１５で、「３」でなかった場合、そのＭＣＵは「パターンＤ」であることがわかるためステップＳ１７で、この性質を考慮した色分解データ生成処理４を実行する。尚、このステップＳ１７の「色分解データ生成処理４」は、図１２のフローチャートを参照して詳しく後述する。
【００７５】
図８のフローチャートは、色分解データ生成部５０４において、入力したＭＣＵ分類情報５２０に従って色分解データの生成処理を切り替える処理を説明している。
【００７６】
次に図９を参照して「色分解データ生成処理１」について説明する。
【００７７】
図９は、図８のステップＳ１２の「パターンＡ」のＭＣＵに対応する色分解データの生成処理１を説明するフローチャートである。この「パターンＡ」は、ＭＣＵ内の８×８画素の全てが同じ値である。よって、この処理では、ＭＣＵ内の１画素のみの色空間変換及び色分解処理を実行し、その結果をそのＭＣＵに対応する全ての画素に反映させることにより、処理の高速化を実現している。
【００７８】
まずステップＳ２１で、変数Ｆｌａｇを「０」に初期化する。尚、この変数Ｆｌａｇは、メモリ１０１４に記憶されている。次にステップＳ２２に進み、このＭＣＵの１つ前に処理したＭＣＵのＭＣＵ分類情報５２０が「１」であったかどうかを判定する。そうであればステップＳ２３に進み、現ＭＣＵと、１つ前に処理したＭＣＵの左上の画素値とを比較し、一致するかどうかを判断する。ここで一致する場合はステップＳ２４に進み、前述の変数Ｆｌａｇに「１」をセットしてステップＳ２５に進む。一方、ステップＳ２２で、このＭＣＵの１つ前に処理したＭＣＵのＭＣＵ分類情報が「１」でない場合、或はステップＳ２３で、１つ前に処理したＭＣＵと現ＭＣＵの左上の画素値が一致しない場合はステップＳ２５に進む。
【００７９】
ステップＳ２５では、変数Ｆｌａｇの値が「０」かどうかを判定する。「０」であれば画素値の計算が必要となるためステップＳ２６に進み、現ＭＣＵの左上の画素に対してのみ、前述の色空間変換と色分解処理を施して色分解データを生成する。次にステップＳ２７に進み、ステップＳ２６で求めた色分解データをキャッシュしてステップＳ２８に進む。このようにステップＳ２７までの処理により、このＭＣＵの色分解データを出力するための色処理キャッシュデータを準備することができる。
【００８０】
一方ステップＳ２５で、変数Ｆｌａｇの値が「１」であれば「パターンＡ」のＭＣＵが連続しており、かつ、現ＭＣＵと１つ前のＭＣＵとが同じ色であることを表している。このため、１つ前のＭＣＵの色分解データを出力する際に使用したキャッシュデータを、この現ＭＣＵにもそのまま適用できるため、ステップＳ２６，Ｓ２７の計算処理をスキップしてステップＳ２８に進む。
【００８１】
ステップＳ２８，Ｓ２９（及びステップＳ３１，Ｓ３２）はそれぞれ、ｘ方向、ｙ方向の画素数分のループ処理を示し、こうして現ＭＣＵの８×８画素の全画素に対してステップＳ３０の処理を行う。即ち、ステップＳ２９〜Ｓ３１で、現在のｙ方向の座標値で示されるｘ方向の８画素（ｘ＝０〜ｘ＝７）にステップＳ３０で色分解データを出力する。そして、これらステップＳ２９〜Ｓ３１の処理を、ステップＳ２８，Ｓ３２により、ｙ＝０〜ｙ＝７からなる８画素ライン分実行する。こうして、前のＭＣＵで使用した色分解データ、或はステップＳ２６、Ｓ２７でキャッシュした色分解データを、現ＭＣＵの各画素値として出力する。
【００８２】
以上説明した図９に示す処理により、「パターンＡ」の特性を利用して、通常８×８の６４画素の全てに対して行うべき色空間変換、色分解処理の実行回数を削減できる。これにより、演算量、メモリアクセス回数を抑えた高速な色分解処理が実現できる。
【００８３】
尚、ここでは説明の便宜上、ＭＣＵの左上の画素同士を比較した例で説明しているが、ＭＣＵに含まれる画素であればどの画素を使用してもよいことは言うまでもない。
【００８４】
図１０は、図８のステップＳ１４の「パターンＢ」のＭＣＵに対応する色分解データの生成処理２を説明するフローチャートである。「パターンＢ」は、ｙ方向の８画素が同じであるため、ｙ方向の１列毎に１画素のみ色空間変換、色分解処理を実行し、その結果をｙ方向の１列８画素に適用することで高速化を実現する。
【００８５】
まずステップＳ４１，Ｓ４２（及びステップＳ４７，Ｓ４８）は、それぞれｘ方向、ｙ方向の画素数ループする処理を示している。即ち、現ＭＣＵの８×８画素に対し、ｙ方向の８画素、つまり縦１列に対する処理をｘ方向に８回繰り返すことを意味している。
【００８６】
ステップＳ４３では、ｙ＝０かどうか、即ち、ｙ方向の最初の画素かどうかを判断している。そうであれば、これから処理しようとしているｙ方向８画素の色分解データを出力するための色処理キャッシュデータがまだ用意されていないことを意味しているためステップＳ４４に進む。ステップＳ４４では、この画素に対して前述の色空間変換、色分解処理を施し、色分解データを生成する。そしてステップＳ４５に進み、ステップＳ４４で求めた色分解データを色処理キャッシュデータとしてキャッシュする。次にステップＳ４６に進み、対象画素の色分解データとして、ステップＳ４５でキャッシュされた色処理キャッシュデータを出力する。
【００８７】
次のｙ方向の画素では、ｙの値は「０」でなくなるためステップＳ４３からステップＳ４６に進み、ステップＳ４５でキャッシュされた色分解データを、その画素値として出力する。この処理をｙ＝０〜ｙ＝７まで実行し、更に、ステップＳ４１，Ｓ４８に示すように、ｘ＝０〜ｘ＝７の間繰り返す。
【００８８】
以上説明したように図１０のフローチャートで示す処理により、「パターンＢ」の特性を利用して、通常８×８の６４画素の全てに対して行うべき色空間変換、色分解処理の実行回数を、各列ごとに１回の計算による合計８画素分の計算処理に削減できる。その結果、演算量及びメモリアクセスの回数を抑えた、高速な色分解処理が実現できる。
【００８９】
尚、ここでは説明の便宜上、最上位の１行分の画素値を計算する場合で説明しているが、他の位置の画素値を抽出して色変換を施し、その結果をキャッシュし、その画素が含まれるｙ方向の８画素全てに適用するようにしてもよい。
【００９０】
図１１は、図８のステップＳ１６の「パターンＣ」のＭＣＵに対応する色分解データの生成処理３を説明するフローチャートである。「パターンＣ」は、ｘ方向の８画素が同じ画素であるため、ｘ方向の１行毎に１画素のみの色空間変換、色分解処理を実行し、その結果を、ｘ方向の１行の他の画素に適用することで高速化処理を実現している。この処理は、図１０のフローチャートの処理において、ｘとｙとを入れ替えることにより実現できるため、以下、簡単に説明する。
【００９１】
ステップＳ５１，Ｓ５２（及びステップＳ５７，Ｓ５８）はそれぞれｘ方向、ｙ方向の画素数分のループ処理を示している。即ち、現ＭＣＵの８×８画素に対し、ｘ方向の８画素、つまり横１行に対する処理をｙ方向に８回繰り返すことを表している。
【００９２】
ステップＳ５３では、ｘ＝０かどうか、即ち、その行の先頭画素かどうかを判断している。そうであればステップＳ５４に進み、その画素に対して前述の色空間変換、色分解処理を施し、色分解データを生成する。そしてステップＳ５５で、ステップＳ５４で得られた色分解データを色処理キャッシュデータとしてキャッシュする。そしてステップＳ５６で、対象画素の色分解データとして、ステップＳ５５でキャッシュされた色処理キャッシュデータを出力する。
【００９３】
この図１１に示す処理により、「パターンＣ」の特性を利用し、通常８×８の６４画素の全てに対して行うべき色空間変換、色分解処理の実行回数を、各行ごとに１回だけで済み、合計８画素分の計算にまで削減できる。その結果、ＭＣＵの各画素値の演算量、メモリアクセス回数を抑えて、高速な色分解処理が実現できる。
【００９４】
尚、ここでは説明の便宜上、左１列分の画素値を求めて、その値を他の画素に適用した処理で説明しているが、他の画素値を抽出して色変換を施し、その結果をその画素が含まれるｘ方向の他の画素全てに適用するようにしても良い。
【００９５】
図１２は、図８のステップＳ１７の「パターンＤ」のＭＣＵに対応する色分解データの生成処理４を説明するフローチャートである。「パターンＤ」は、前述した他のパターンとは異なり、ｘ方向、ｙ方向ともに画素値の連続性が保証されていない。このため、このＭＣＵの８×８画素の全てに対して色空間変換、色分解処理を実行する必要がある。
【００９６】
まずステップＳ６１，Ｓ６２（及びステップＳ６５，Ｓ６６）はそれぞれｘ方向、ｙ方向の画素数分のループ処理を示す。このＭＣＵの８×８画素からなる全ての画素数分、ステップＳ６４，Ｓ６５の処理を繰り返すことを意味している。ステップＳ６３では、該当画素に対して前述の色空間変換、色分解処理を施して色分解データを生成する。そしてステップＳ６４で、その対象画素の色分解データとして、ステップＳ６３で求めた色分解データを出力する。
【００９７】
以上説明した処理により、ＭＣＵのＤＣＴ周波数特性を活用した高速な色分解処理が実現できる。更に図９、図１０、図１１の処理には共通して次の効果も存在する。
【００９８】
前述の説明からも分かる通り、図９、図１０、図１１の処理は、色処理キャッシュデータを常に１つ保持する構成で実現できる。このため、キャッシュ領域が最小限に抑えられ、複数の色処理キャッシュデータを生成し、キャッシュデータテーブルを保持するような技術よりも低コストで実現できる。更に色処理キャッシュデータを適用すべきかどうかを判断するための処理が不要である。これはＭＣＵ分類情報５２０により、そのＭＣＵのデータパターン（パターンＡ、Ｂ、Ｃ、Ｄ）が特定付けられ、各パターンごとにどのように色処理キャッシュデータを生成し、それをどの画素に対して適用すべきかを決定できるためである。その結果、従来技術のような、色処理キャッシュデータがヒットするか否かの判断処理が不要となり、更に処理を高速化できる。
【００９９】
また更に、ＭＣＵを基本単位とする処理を行うため、単純なラスタ単位の処理系に対し、ＭＣＵ間で発生するキャッシュのミスヒット回数が削減できる。これにより、色処理キャッシュデータの生成回数も最小限に抑えられるという効果がある。
【０１００】
次に、前述の高速な色分解データの生成処理を印刷データの生成処理に適用した構成について述べる。
【０１０１】
先に図４を参照して説明した通り、印刷データの生成は次のようなステップでなされる。
（１）印刷が指定された画像ファイルを読み込み、デコードする。
（２）デコード後の色空間をデバイス固有の色空間へと変換する。
（３）レイアウト情報に従い変倍する。
（４）デバイスの各画素の状態を表す量子化量への変換（ハーフトーニング）を行う。
【０１０２】
これらのステップの内、（１），（２）については前述の構成により高速な処理が実現される。ここでは前述の実施の形態１をもとに、残る（３），（４）のステップをどのように実現するかについて説明する。
【０１０３】
以下、図１３を参照して、前述の色分解データの生成処理を印刷データの生成処理に適用した構成について説明する。
【０１０４】
図１３は、本発明の他の実施の形態に係る色空間の変換を説明する図である。ここではハフマン復号化部５００乃至色分解データ生成部５０４までは、前述の図５と同じ構成であり、各ブロックでなされる処理も同じである。
【０１０５】
変倍部５０７は、ユーザが指定した用紙サイズ、割り付け方法等のレイアウト指定情報に従って、色分解データ生成部５０４から出力された色分解データを実印刷サイズに変倍する。ここでの画像データの変倍方法には、ニアレストネイバーや、バイリニア、バイキュービック等様々な手法が存在するが、どの手法を用いてもよい。但し、バイリニアやバイキュービック等の手法を採用する場合は、複数の画素値を用いた補間演算を行うため、ＭＣＵ単位で処理するのは難しく、変倍部５０７には少なくとも１ＭＣＵラインからなるバンドデータを入力する必要がある。また、二アレストネイバー等の複数画素の画素値を用いた補間演算を必要としない変倍手法を採用する際は、特に入力データの単位に関する制約はなく、１ＭＣＵ単位でも、１ＭＣＵライン等のバンド単位でも受け渡して処理することが可能である。
【０１０６】
ハーフトーニング部５０８では、変倍部５０７で生成された実印刷サイズに変倍された色分解データに対して誤差拡散法等のハーフトーニング手法を施して量子化し出力する。ここで例えばハーフトーニング手法として誤差拡散法を採用する場合、誤差拡散法の誤差を拡散するという処理の性質から、ハーフトーニング部５０８には少なくとも１ラスタ分のデータが揃っている必要がある。この事情により、予め少なくとも１ＭＣＵラインから生成される変倍後のバンドデータを生成しておき、ハーフトーニング部５０８にラスタデータを入力するようにしなければならない。
【０１０７】
以上の構成により、ＭＣＵの周波数特性情報を活用した、高速な色分解データの生成処理による印刷データの生成処理を実現できる。
【０１０８】
［実施の形態２］
前述の実施の形態１では、ＭＣＵの周波数特性を利用してＪＰＥＧデコードデータからの色分解データ生成処理を高速化する実施形態について説明した。しかし実施の形態１において、変倍部５０７の変倍手法としてニアレストネイバー等の複数画素の画素値を用いた補間演算を必要としない変倍手法を採用する場合には、色分解処理だけでなく変倍処理までも含めて高速化が可能となる。これはニアレストネイバー等の複数画素の画素値を用いた補間演算を必要としない変倍手法では、変倍処理をＭＣＵ単位で実施できるためである。
【０１０９】
そこで本実施の形態２では、複数画素の画素値を用いた補間演算を必要としない変倍手法を想定した場合に、変倍後の色分解データを高速に生成し、更に、変倍された色分解データから印刷データを生成する形態について説明する。尚、以下の説明では、変倍部５０７での変倍手法として二アレストネイバーを採用した場合を想定して説明する。
【０１１０】
図１４は、本発明の実施の形態２に係る色空間の変換を説明する図である。
【０１１１】
図において、ハフマン復号化部５００、逆量子化部５０１、ＩＤＣＴ部５０２、ＭＣＵ分類情報生成部５０３、色空間変換部５０５、色分解部５０６、ハーフトーニング部５０８は前述の図５及び図１３に示した各部と等価である。この図１４の構成は、前述の実施の形態１とは、変倍後色分解データ生成部５０９と、変倍部５１０のみが異なるため、これら２つのブロックに絞って説明する。
【０１１２】
変倍後色分解データ生成部５０９は、ＪＰＥＧデコードデータと、ＭＣＵ分類情報５２０とを受け取り、ユーザが指定したレイアウト設定情報により決定される実印刷サイズに変倍された色分解データを高速に生成して出力する。
【０１１３】
次に図１５〜図１９のフローチャートを参照して、具体的に変倍後色分解データ生成部５０９及び変倍部５１０でどのような処理を行うのか説明する。
【０１１４】
図１５は、本発明の実施の形態２に係る画像処理部の変倍後色分解データ生成部５０９で実行される処理を説明するフローチャートである。ここでは、変倍後色分解データ生成部５０９に、あるＭＣＵのデコードデータと、そのＭＣＵのＭＣＵ分類情報５２０が入力されたときの処理を示している。尚、この実施の形態２に係る画像処理装置１２の構成は前述の実施の形態１に係る画像処理装置の構成（図２）と同じであるため、その説明を省略する。また、この処理を実行するプログラムはメモリ１０１４に記憶されており、ＣＰＵ１００１ａの制御の下に実行される。
【０１１５】
まずステップＳ７１で、現ＭＣＵのＭＣＵ分類情報５２０が「１」かどうかを判定する。「１」であればそのＭＣＵは「パターンＡ」であることが分かるためステップＳ７２に進み、この性質を利用した図１６に示す変倍後色分解データ生成処理１を実行する。尚、この変倍後色分解データ生成処理１については図１６のフローチャートを参照して後述する。
【０１１６】
ステップＳ７１で、ＭＣＵ分類情報５２０が「１」でなかった場合はステップＳ７３に進み、ＭＣＵ分類情報５２０が「２」かどうかを判定する。ここで「２」であればステップＳ７４に進み、そのＭＣＵは「パターンＢ」であるため、この性質を利用した変倍後色分解データ生成処理２を実行する。この変倍後色分解データ生成処理２は図１７のフローチャートを参照して後述する。
【０１１７】
またステップＳ７３で、ＭＣＵ分類情報５２０が「２」でなかった場合はステップＳ７５に進み、ＭＣＵ分類情報５２０が「３」かどうかを判定する。ここで「３」であれば、このＭＣＵは「パターンＣ」であるためステップＳ７６に進み、この性質を利用した変倍後色分解データ生成処理３を実行する。この変倍後色分解データ生成処理３は、図１８のフローチャートを参照して後述する。
【０１１８】
ステップＳ７５で、ＭＣＵ分類情報５２０が「３」でなかった場合は、そのＭＣＵは「パターンＤ」であるためステップＳ７７に進み、この性質を考慮した変倍後色分解データ生成処理４を実行する。この変倍後色分解データ生成処理４については図１９に示すフローチャートを参照して後述する。このように図１５のフローチャートで示すように、変倍後色分解データ生成部５０９は、入力されたＭＣＵ分類情報５２０に従って変倍後色分解データ生成処理方法を切り替えている。
【０１１９】
次に図１６のフローチャートを参照して、本実施の形態２に係る変倍後色分解データ生成処理１について説明する。
【０１２０】
図１６は、本実施の形態２に係る「パターンＡ」のＭＣＵに対応する色分解データの生成処理１（ステップＳ７２）を説明するフローチャートである。「パターンＡ」は、ＭＣＵ内の８×８画素の全てが同じ画素値である。よって、この処理では、ＭＣＵ内の１画素のみの色空間変換、色分解処理を実行し、その結果を全ての画素に反映させることにより、処理の高速化を実現している。
【０１２１】
図１６は、８×８画素のＭＣＵをＷ×Ｈ画素に変倍する場合を想定した処理を示している。尚、この変倍後のサイズＷ×Ｈは、ニアレストネイバー等の変倍手法に従い算出すればよく、本実施の形態では特筆すべき内容ではないため、ここでは説明を割愛する。
【０１２２】
まずステップＳ８１で、変数Ｆｌａｇを「０」に初期化する。この変数Ｆｌａｇは、メモリ１０１４に記憶される。次にステップＳ８２に進み、現ＭＣＵの１つ前に処理したＭＣＵのＭＣＵ分類情報５２０の値も「１」であったかどうかを判定する。そうであればステップＳ８３に進み、現ＭＣＵと、１つ前に処理したＭＣＵの左上の画素値とを比較し、一致するかどうかを判定する。一致すればステップＳ８４に進み、キャッシュされている色分解データを使用できることを示すように、変数Ｆｌａｇに「１」を代入してステップＳ８５に進む。尚、ステップＳ８２で、１つ前に処理したＭＣＵのＭＣＵ分類情報５２０の値が「１」でない場合、或はステップＳ８３で、１つ前に処理したＭＣＵと現ＭＣＵの対応する画素値とが異なる場合はステップＳ８５に進む。
【０１２３】
ステップＳ８５では、変数Ｆｌａｇの値が「０」かどうかを判断する。ここでＦｌａｇの値が「１」であれば「パターンＡ」のＭＣＵが連続しており、かつ現ＭＣＵと１つ前のＭＣＵとが同じ色であることを意味している。よってステップＳ８８に進み、１つ前のＭＣＵの色分解データを出力する際に使用したキャッシュデータを、現ＭＣＵにもそのまま適用する。逆に、Ｆｌａｇの値が「０」であればステップＳ８７に進み、現ＭＣＵの色分解データを生成するための変換処理を実行する。
【０１２４】
ステップＳ８６，Ｓ８７は、キャッシュデータを生成するための処理である。ステップＳ８６では、現ＭＣＵの左上の画素に対してのみ、前述の色空間変換と色分解処理を施して色分解データを生成する。そしてステップＳ８７で、ステップＳ８６で求めた色分解データをキャッシュする。このようにステップＳ８６，Ｓ８７の処理で、このＭＣＵの変倍後色分解データを出力するための色処理キャッシュデータを求めることができる。
【０１２５】
次にステップＳ８８，Ｓ８９（及びステップＳ９１，Ｓ９２）は、それぞれｙ方向、ｘ方向の画素数分のループ処理を示し、現ＭＣＵの変倍後の領域サイズＨ×Ｗの画素全てに対してステップＳ９０の処理を行うことを表している。そしてステップＳ９０では、予めキャッシュされていた、或はステップＳ８７でキャッシュした色処理キャッシュデータを該当画素の色分解データとして出力する。
【０１２６】
このように図１６に示す処理により、「パターンＡ」の特性を利用して、通常８×８の６４画素の全てに対して行うべき色空間変換、色分解処理の実行回数を削減できる。これにより、演算量、メモリアクセス回数を抑えた高速な色分解処理が実現できる。
【０１２７】
更に、前述の実施の形態１に対して、更にメモリアクセス回数を抑えた処理が実現可能となる。これは８×８の６４画素分、色分解データを一度メモリ１０１４に記憶した後に変倍を行うのではなく、ステップＳ８７でキャッシュされたデータを、直接、変倍後の色分解データとして出力するためである。
【０１２８】
またここでは説明の便宜上、左上の画素に対して色分解データを求める処理で説明しているが、このＭＣＵに含まれる画素であれば、どの位置の画素を使用してもよい。
【０１２９】
次に図１７を参照して、変倍後色分解データ生成処理２について詳細を説明する。
【０１３０】
図１７は、本実施の形態２に係る「パターンＢ」のＭＣＵに対応する色分解データの生成処理２（ステップＳ７４）を説明するフローチャートである。「パターンＢ」は、入力データのｙ方向８画素が同じ画素であるため、ｙ方向１列毎に１画素のみ色空間変換、色分解処理を実行する。そして、その結果を用いて変倍率を考慮したｘ方向のｘ行、ｙ方向ｙ列分の画素に適用することで高速化を実現する。例えば、現ＭＣＵを二アレストネイバーで１６×１６画素に変倍する場合、１つの色処理キャッシュデータは２×１６の画素領域に適用される。
【０１３１】
図１７は、８×８画素のＭＣＵをＷ×Ｈ画素に変倍する場合を想定した処理を示すフローチャートである。尚、変倍後のサイズＷ×Ｈは、ニアレストネイバーの変倍手法に従って算出すればよく、本実施の形態２では特筆すべき内容ではないため、ここでは説明を割愛する。
【０１３２】
まずステップＳ１０１で、変数Ｏｘを「０」に初期化する。この変数Ｏｘはメモリ１０１４に記憶される。ステップＳ１０２（及びステップＳ１１２）は、入力データのｘ方向の画素数分のループ処理を示す。ステップＳ１０３，Ｓ１０４により、入力データのｙ方向の１列毎に１画素のみの色空間変換、色分解処理を実行し、その変換結果をキャッシュすることを意味している。
【０１３３】
ステップＳ１０５は、現在着目している入力画素データのｘ方向の繰り返し出力回数Ｗｘを算出している。このＷｘについても前述のＷ，Ｈと同様に、ニアレストネイバーの変倍手法に従い算出すればよく、本実施の形態２では特筆すべき内容ではないため、ここでは説明を割愛する。因みに、ｘ＝０〜７のＷｘの合計はＷとなる。
【０１３４】
具体的な設定値の具体例としては、このＭＣＵを二アレストネイバーで１６×１６画素に変倍する場合、１つの色処理キャッシュデータは２×１６の画素領域に適用されるが、この場合全てのｘでＷｘ＝２となる。
【０１３５】
次にステップＳ１０６，Ｓ１０７（及びステップＳ１０９，Ｓ１１０）は、それぞれ変倍出力データのｘ方向、ｙ方向の画素数分のループ処理を示す。ステップＳ１０８は、ステップＳ１０４までの処理で得られた色処理キャッシュデータを変倍後色分解データとして、（Ｏｘ，０）を左上位置座標とするＷｘ×Ｈサイズの矩形領域に出力することを意味している。またステップＳ１１１では、変倍後の色分解データの出力位置を更新するためにＯｘにＷｘを加えている。
【０１３６】
以上図１７に示す処理により、「パターンＢ」の特性を利用して、通常８×８の６４画素の全てに対して行うべき色空間変換、色分解処理の実行回数を、各列１画素だけの合計８画素分にまで削減できる。この結果、演算量、メモリアクセス回数を抑えた高速な色分解処理が実現できる。
【０１３７】
更に、前述の実施の形態１よりもメモリアクセス回数を抑えた処理が実現可能となる。これは８×８の６４画素分、色分解データを一度メモリに出力した後に変倍を行うのではなく、ステップＳ１０４でキャッシュされたデータを、直接変倍後のデータとして出力するためである。尚、ここでは説明の便宜上、上１行分の画素に対して計算する処理で説明しているが、他の位置の画素を抽出して色変換を施し、その結果をキャッシュしても良い。
【０１３８】
図１８は、本実施の形態２に係る「パターンＣ」のＭＣＵに対応する色分解データの生成処理３（ステップＳ７６）を説明するフローチャートである。「パターンＣ」は、入力データのｘ方向８画素が同じ画素値であるため、ｘ方向の１行毎に１画素のみ色空間変換、色分解処理を実行する。そして、その結果を、変倍率を考慮したｘ方向のｘ行、ｙ方向ｙ列分の画素に適用することで高速化を実現する。例えば現ＭＣＵを二アレストネイバーで１６×１６画素に変倍する場合、１つの色処理キャッシュデータは１６×２の画素領域に適用される。
【０１３９】
図１８は、８×８画素のＭＣＵをＷ×Ｈ画素に変倍する場合を想定したフローチャートを示している。尚、変倍後のサイズＷ×Ｈは、ニアレストネイバーの変倍手法に従って算出すればよく本実施の形態において特筆すべき内容ではないため、ここでは説明を割愛する。
【０１４０】
まずステップＳ１２１で、変数Ｏｙを「０」に初期化する。この変数Ｏｙはメモリ１０１４に記憶される。次にステップＳ１２２（及びＳ１３２）は、入力データのｙ方向の画素数分のループ処理を示す。ステップＳ１２３，Ｓ１２４により、入力データのｘ方向の１行毎に１画素のみの色空間変換、色分解処理を実行し、その変換結果をキャッシュすることを意味している。
【０１４１】
ステップＳ１２５は、現在着目している入力画素データのｙ方向の繰り返し出力回数Ｈｙを算出している。このＨｙについても前述のＷ，Ｈと同様に、ニアレストネイバーの変倍手法に従い算出すればよい。因みに、ｙ＝０〜７のＨｙの合計はＨとなる。
【０１４２】
具体的な設定値の例では、ＭＣＵを二アレストネイバーで１６×１６画素に変倍する場合、１つの色処理キャッシュデータは１６×２の画素領域に適用されるが、この場合は全てのｙでＨｙ＝２となる。
【０１４３】
次にステップＳ１２６，Ｓ１２７（及びＳ１２９，Ｓ１３０）は、それぞれ変倍出力データのｙ方向、ｘ方向の画素数分のループ処理を示す。ステップＳ１２８は、ステップＳ１２４までの処理で得られた色処理キャッシュデータを変倍後の色分解データとして、（０，Ｏｙ）を左上位置座標とするＷ×Ｈｙサイズの矩形領域に出力することを意味している。ステップＳ１３１は、変倍後の色分解データの出力位置を更新するためにＯｙにＨｙを加えている。
【０１４４】
以上説明した図１８に示す処理により、「パターンＣ」の特性を利用して、通常８×８の６４画素の全てに対して行うべき色空間変換、色分解処理の実行回数を、各行ごとに１画素の合計８画素分（８回）にまで削減できる。その結果、演算量、メモリアクセス回数を抑えた高速な色分解処理が実現できる。
【０１４５】
更に、前述の実施の形態１よりもメモリアクセス回数を抑えた処理が実現可能となる。これは８×８の６４画素分、色分解データを一度メモリ１０１４に出力した後に変倍を行うのではなく、ステップＳ１２４でキャッシュされたデータを、直接、変倍後のデータとして出力するためである。
【０１４６】
尚、ここでは説明の便宜上、左１列分の画素を計算する場合で説明しているが、他の位置の画素を抽出して色変換を施し、その結果をキャッシュしても良い。
【０１４７】
次に図１９を参照して、変倍後色分解データ生成処理４（ステップＳ７７）について詳細を説明する。
【０１４８】
図１９は、本実施の形態２に係る「パターンＤ」のＭＣＵに対応する色分解データの生成処理４を説明するフローチャートである。「パターンＤ」は、他のパターンとは異なり、ｘ方向、ｙ方向に画素値の連続性が保証されていない。このため、該当ＭＣＵの８×８画素の全てに対して色空間変換、色分解処理を実行し、その変換結果をキャッシュして、各画素の変倍後サイズを考慮して出力する。
【０１４９】
図１９は、８×８画素のＭＣＵをＷ×Ｈ画素に変倍する場合を想定した処理を示している。尚、変倍後のサイズＷ×Ｈはニアレストネイバーの変倍手法に従い算出すればよく、本実施の形態２においては特筆すべき内容ではないため、ここでは説明を割愛する。
【０１５０】
まずステップＳ１４１で、変数Ｏｘを「０」に初期化する。この変数Ｏｘは図１７のフローチャートのステップＳ１０１の変数と同様である。ステップＳ１４２（及びＳ１５７）は、入力データのｘ方向の画素数分のループ処理を示す。
【０１５１】
ステップＳ１４３は、現在着目している入力画素データのｘ方向の繰り返し出力回数Ｗｘを算出している。このＷｘについても前述のＷ，Ｈと同様に、ニアレストネイバーの変倍手法に従い算出すればよい。因みに、ｘ＝０〜７のＷｘの合計はＷとなる。
【０１５２】
次にステップＳ１４４に進み、変数Ｏｙを「０」に初期化する。この変数Ｏｙは図１８のフローチャートのステップＳ１２１の変数と同様である。ステップＳ１４５（及びＳ１５５）は、入力データのｙ方向の画素数分のループ処理を示す。
【０１５３】
次にステップＳ１４６で、入力データである位置（ｘ，ｙ）の画素に対する色空間変換、色分解処理を実行する。そしてステップＳ１４７で、その変換結果をキャッシュする。次にステップＳ１４８は、現在着目している入力画素データのｙ方向の繰り返し出力回数Ｈｙを算出している。このＨｙについても前述のＷ，Ｈと同様に、ニアレストネイバーの変倍手法に従い算出すればよい。因みに、ｙ＝０〜７のＨｙの合計はＨとなる。
【０１５４】
次にステップＳ１４９，Ｓ１５０（及びＳ１５２，Ｓ１５３）は、それぞれ変倍出力データのｘ方向、ｙ方向の画素数分のループ処理を示す。次にステップＳ１５１では、ステップＳ１４７までの処理で得られた色処理キャッシュデータを変倍した後、色分解データとして、（Ｏｘ，Ｏｙ）を左上位置座標とするＷｘ×Ｈｙサイズの矩形領域に出力する。そしてステップＳ１５４では、変倍後の色分解データの出力位置を更新するために、変数ＯｙにＨｙを加えている。同様にステップＳ１５６でも、変倍後の色分解データの出力位置を更新するために変数ＯｘにＷｘを加えている。
【０１５５】
以上説明したように図１９に示す処理により、「パターンＤ」の特性に従う処理が実現される。上述の通り、「パターンＤ」の特性のため、色空間変換、色分解処理の実行回数については削減できない。しかし、前述の実施の形態１よりもメモリアクセス回数を抑えた処理が実現可能となる。これは８×８の６４画素分、色分解データを一度メモリ１０１４に出力した後に変倍を行うのではなく、ステップＳ１４７でキャッシュされたデータを直接変倍後データとして出力するためである。
【０１５６】
以上、説明した処理により、ＭＣＵのＤＣＴ周波数特性を活用した高速な変倍後色分解データの生成処理が実現できる。更に図１６〜図１９の処理には共通して次の効果も存在する。
【０１５７】
前述の説明からも分かる通り、図１６〜図１９の処理は、色処理キャッシュデータを常に１つ保持する構成で実現できる。このため、キャッシュ領域を最小限に抑えることができる。これにより複数の色処理キャッシュデータを生成し、キャッシュデータテーブルを保持するような技術よりも低コストで実現可能である。
【０１５８】
更に、色処理キャッシュデータを適用すべきかどうかを判断するための処理が不要となる。これはＭＣＵ分類情報５２０により、そのＭＣＵのデータパターン（パターンＡ，Ｂ，Ｃ，Ｄ）を特定付けられることによる。即ち、データパターンごとに、どのように色処理キャッシュデータを生成し、それをどの画素に対して適用すべきかが決定できる。その結果、従来技術のような色処理キャッシュデータがヒットするか否かの判断処理が不要となり、更なる高速化につながる。
【０１５９】
更に、ＭＣＵを基本単位とする処理を行うため、単純なラスタ単位の処理系に対し、ＭＣＵ間で発生するキャッシュのミスヒット回数が削減でき、それに伴う色処理キャッシュデータの生成回数も最小限に抑えられる。
【０１６０】
以上説明した上記実施の形態では、ホスト装置と画像処理装置が接続されたシステム、もしくは画像処理装置にメモリカードが直接接続されたシステムについて記述した。しかし本発明は、複数機器の組み合わせから構成されるシステムであっても、ＤＣＴに基づき圧縮された画像データが入力され、その画像データから印刷データを生成するようなシステムにも適用可能であることは言うまでもない。
【０１６１】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給しても達成されることは言うまでもない。この場合、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによって目的が達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１６２】
更に、以下のような場合も前述した実施形態の機能が実現される。記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行うような場合である。
【０１６３】
前述の実施形態では印刷データ生成処理に絞り説明した。しかし本発明はＪＰＥＧのようなＤＣＴに基づき圧縮された画像データに対し、画素単位で他の色空間への変換等、何かしらの変換処理を施すような技術に対しても適用可能である。例えばＪＰＥＧ画像をディスプレイに表示させる際のカラーマッチング処理等にも適用可能である。
【０１６４】
以上説明したように本実施の形態によれば、ＤＣＴに基づき圧縮されたカラー画像データに対する色処理について、演算量の削減、メモリアクセス回数の削減が実現でき、高速化が実現できる。
【０１６５】
また本実施の形態では、上述の特許文献１と同様に、ＤＣＴ係数の特性に着目して処理を軽減しているが、特許文献１の技術に対し、単一色のＭＣＵにとどまらず、非単一色のＭＣＵに対しても処理の効率化を実現している。
【０１６６】
また本実施の形態では、色処理キャッシュを行うが、特許文献２で提案されている技術に対して、より低コストで実現できる。これはキャッシュデータテーブルを生成する必要がなく、常に１組の演算結果だけをキャッシュしているためである。これによりキャッシュ領域のサイズを小さくでき、コスト面でも秀でている。
【０１６７】
更に本実施の形態では、ＤＣＴ周波数特性に基づいてＭＣＵを分類してデータをパターン化しているため、キャッシュデータテーブルの検索が不要であり、無駄を排除した良好な処理が実現できる。
【０１６８】
更に、ＭＣＵを意識した処理を行うため、単純なラスタ処理を行う技術に対して、ＭＣＵ間で発生するキャッシュのミスヒット回数を削減でき、キャッシュのヒット率を向上することができる。
【図面の簡単な説明】
【０１６９】
【図１】本発明の実施の形態に共通するプリントシステム（画像処理システム）の概略構成を示すブロック図である。
【図２】本実施の形態に係るプリントシステムを構成する画像処理装置のハードウェアの概略を示すブロック図である。
【図３】本実施の形態に係る画像処理装置のプリント機能で用いられるソフトウェアのモジュール構造を示す図である。
【図４】本実施の形態に係るデータ変換モジュールによる印刷データの生成処理を説明するフローチャートである。
【図５】本実施の形態に係る色空間の変換処理を説明する図である。
【図６】本実施の形態に係る逆量子化部により得られるＤＣＴ係数を説明する図である。
【図７】ＩＤＣＴにより得られる画素値を説明する図である。
【図８】本発明の実施の形態１に係る色分解データ生成部で実行される処理を説明するフローチャートである。
【図９】実施の形態１に係る「パターンＡ」のＭＣＵに対応する色分解データの生成処理１を説明するフローチャートである。
【図１０】実施の形態１に係る「パターンＢ」のＭＣＵに対応する色分解データの生成処理２を説明するフローチャートである。
【図１１】実施の形態１に係る「パターンＣ」のＭＣＵに対応する色分解データの生成処理３を説明するフローチャートである。
【図１２】実施の形態１に係る「パターンＤ」のＭＣＵに対応する色分解データの生成処理４を説明するフローチャートである。
【図１３】本発明の実施の１形態の他の実施例に係る色空間の変換処理を説明する図である。
【図１４】本発明の実施の形態２に係る色空間の変換処理を説明する図である。
【図１５】本発明の実施の形態２に係る画像処理部の色分解データ生成部で実行される処理を説明するフローチャートである。
【図１６】本実施の形態２に係る「パターンＡ」のＭＣＵに対応する色分解データの生成処理１を説明するフローチャートである。
【図１７】本実施の形態２に係る「パターンＢ」のＭＣＵに対応する色分解データの生成処理２を説明するフローチャートである。
【図１８】本実施の形態２に係る「パターンＣ」のＭＣＵに対応する色分解データの生成処理３を説明するフローチャートである。
【図１９】本実施の形態２に係る「パターンＤ」のＭＣＵに対応する色分解データの生成処理３を説明するフローチャートである。
【図１】
2008148264.tif 000003
【図２】
2008148264.tif 000004
【図３】
2008148264.tif 000005
【図４】
2008148264.tif 000006
【図５】
2008148264.tif 000007
【図６】
2008148264.tif 000008
【図７】
2008148264.tif 000009
【図８】
2008148264.tif 000010
【図９】
2008148264.tif 000011
【図１０】
2008148264.tif 000012
【図１１】
2008148264.tif 000013
【図１２】
2008148264.tif 000014
【図１３】
2008148264.tif 000015
【図１４】
2008148264.tif 000016
【図１５】
2008148264.tif 000017
【図１６】
2008148264.tif 000018
【図１７】
2008148264.tif 000019
【図１８】
2008148264.tif 000020
【図１９】
2008148264.tif 000021