以下、本発明の実施の形態に係る画像データキャッシュ装置、印刷装置および画像データキャッシュ方法を、図面に基づいて説明する。印刷装置は、デジタルスチルカメラ(DSC:Digital Still Camera)から、印刷に使用する画像データを取得するプリンタを例として説明する。画像データキャッシュ装置は、プリンタの一部として説明する。画像データキャッシュ方法は、プリンタの動作の一部として説明する。
図1は、本発明の実施の形態に係る印刷装置としてのプリンタ1およびそれに接続されるDSC2を示す図である。DSC2とプリンタ1とは、USBケーブル3にて接続される。このようにDSC2とプリンタ1とを直接に接続するシステムは、ダイレクト印刷システムの一種である。なお、DSC2とプリンタ1とは、USBケーブル3以外のたとえばプリンタ専用ケーブルなどの他のケーブルや、無線通信回線などにより接続されてもよい。
図2は、DSC2が撮像モードで動作している場合の構成を示すブロック図である。DSC2は、撮像データを出力するCCD(Charge Coupled Device)カメラ51と、画像などを表示する液晶モニタ11と、図示外の撮像ボタンや選択ボタンなどを有する入力デバイス12と、画像データ生成部52と、保存処理部53と、半導体メモリ13と、を有する。半導体メモリ13は、たとえばフラッシュメモリなどのカード形状に形成されたものであり、DSC2の図示外の筐体と着脱可能である。
画像データ生成部52は、入力デバイス12の撮像ボタンが操作されたときのCCDカメラ51から出力される撮像データを用いて、EXIF画像データを生成する。
図3は、画像データ生成部52によるEXIF画像データの生成処理を説明するための説明図である。図3(A)は、CCDカメラ51から出力される撮像データによる画像である。撮像データによる画像は、横長の画像であり、一軒の家が撮像されている。
画像データ生成部52は、図3(A)に示す画像の撮像データを、図中の点線で区切られたブロック単位で符号化し、図3(B)に示すように、その符号化したデータをエンコード順に並べた中間データを生成する。1つのブロックは、図3(A)に示すように、8×8ピクセルである。図3の画像では、画像データ生成部52は、撮像データによる画像を縦6行、横10列の60個のブロックに分けて、そのブロック毎に符号化している。
ブロック単位で符号化した後、画像データ生成部52は、その符号化後の中間データを、所定の圧縮率で圧縮する。具体的には、画像データ生成部52は、圧縮前の図3(B)の中間データにおけるデータ量を基準として、圧縮後の総データ量が所定の圧縮率のデータ量となるように、画質への影響が少ない成分のデータを間引いたりして、中間データを圧縮する。
中間データを圧縮した後、画像データ生成部52は、図3(C)に示すように、その圧縮された画像データを含むEXIF画像データを生成する。EXIF画像データは、ヘッダデータと、圧縮された中間データによる画像データと、EOF(End Of File)データと、を有する。ヘッダデータには、たとえば、画像データのサイズ(図3(A)の画像の縦方向のピクセル数および横方向のピクセル数)などの情報が必要に応じて情報化される。EXIF画像データは、JPEG(Joint Photographic Coding Experts Group)方式で圧縮された画像データを有する。
なお、図3(B)の中間データおよび図3(C)のEXIF画像データにおいて、各四角形のサイズは、それぞれのブロックのデータ量を示している。図3(B)において各ブロックの四角形のサイズが等しいように、中間データにおいては、各ブロックのデータ量は、等しい。これに対して、図3(C)においてブロック3の四角形のサイズとブロック4の四角形のサイズとが異なるように、JPEG方式で圧縮をすると、各ブロックのデータ量は、ブロック毎に異なる。
図2に戻り、画像データ生成部52は、生成したEXIF画像データを保存処理部53に供給する。保存処理部53は、供給されたEXIF画像データをEXIF画像ファイル21として、半導体メモリ13に保存する。
半導体メモリ13は、EXIF画像ファイル21などのデータを記憶するデータ記憶領域22と、メモリ管理領域23と、を有する。半導体メモリ13は、たとえばFAT(File Allocation Table)16やFAT32などのファイルシステムにより、記憶データを管理する。メモリ管理領域23には、データ記憶領域22に記憶されるファイルのファイル名や、各ファイルの、データ記憶領域22内の位置情報などが保存される。
画像データ生成部52は、データ記憶領域22に、EXIF画像ファイル21を保存する。また、保存処理部53は、メモリ管理領域23に、保存したEXIF画像ファイル21のファイル名や、そのファイルのデータ記憶領域22内の位置情報を保存する。これにより、半導体メモリ13には、DSC2により撮像された画像の画像データを有するEXIF画像ファイル21が保存される。
図1に戻り、ダイレクト印刷時には、DSC2は、液晶モニタ11、入力デバイス12および半導体メモリ13の他に、USB通信I/F(InterFace)14およびUSBマスストレージクラス15を有する通信I/F16と、印刷指示部17と、画像データ送信部18と、を有する。半導体メモリ13には、複数のEXIF画像ファイル21が記憶される。なお、USBマスストレージクラス15、印刷指示部17および画像データ送信部18は、DSC2の図示外のCPU(Central Processing Unit)が、図示外のDSC2の記憶デバイスに記憶されたUSBマスストレージクラスプログラム、印刷指示プログラムおよび画像データ送信プログラムを実行することで、実現される。
USB通信I/F14は、図示外のUSBコネクタを有する。USBコネクタには、USBケーブル3が接続される。USB通信I/F14は、USBコネクタから信号が入力されるとその信号からデータを抽出する。また、USB通信I/F14は、送信するデータに基づいて信号を生成し、この信号をUSBコネクタへ出力する。
USBマスストレージクラス15は、USB通信I/F14を用いて、ホストとデバイスとの間でデータを送受する通信処理部である。USBマスストレージクラス15は、そのサブクラスとして、SCSI(Small Computer System Interface)サブクラスを使用する。
USB通信I/F14とUSBマスストレージクラス15とを有するDSC2の通信I/F16は、印刷指示部17や画像データ送信部18から供給されたデータを、USBケーブル3を介してプリンタ1へ送信する。DSC2の通信I/F16は、USBケーブル3を介してプリンタ1から受信したデータを、印刷指示部17や画像データ送信部18へ供給する。
印刷指示部17は、印刷する画像を選択し、その画像をプリンタ1に印刷させるための印刷指示を生成し、DSC2の通信I/F16へ供給する。
画像データ送信部18は、半導体メモリ13から、送信を要求された画像データを読み込み、DSC2の通信I/F16へ供給する。
プリンタ1は、紙媒体30などに対して印刷するための印刷機構として、媒体30を送る送りローラ31と、送りローラ31などを回転駆動する送りモータ32と、キャリッジ33と、キャリッジ33を送りローラ31の軸方向に沿って往復運動させるキャリッジモータ34と、を有する。キャリッジ33は、イエロー、マゼンタ、シアン、ブラックなどといった所定色数のカートリッジが脱着可能に取り付けられる。キャリッジ33の図示せぬプラテン側の部位には、図示外のインク吐出用ヘッドが形成される。インク吐出用ヘッドには、図示外の多数のインクジェットノズルが開設される。各インクジェットノズルの内側には、図示外のピエゾ素子が配設される。ピエゾ素子は、それに印加される電圧に応じて変形する素子である。ピエゾ素子が電圧により変形することで、その変形量に応じた量のインクがインクジェットノズルから吐出される。
プリンタ1は、この他にも、USB通信I/F36およびUSBマスストレージクラス37を有する通信I/F38と、印刷指示解釈部39と、画像処理手段としての画像処理部40と、画像処理メモリ41と、印刷手段としての制御部42と、画像バッファメモリ43と、判断手段、供給手段および取得手段としての画像バッファ管理部44と、位置情報記憶手段としてのオフセット配列メモリ45と、を有する。
プリンタ1の通信I/F38は、USBケーブル3を介してDSC2の通信I/F16から受信したデータを、印刷指示解釈部39または画像バッファ管理部44へ供給する。プリンタ1の通信I/F38は、印刷指示解釈部39または画像バッファ管理部44から供給されたデータを、USBケーブル3を介してDSC2の通信I/F16へ送信する。
印刷指示解釈部39は、印刷指示を解釈し、その解釈に基づいて内部指示を生成し、画像処理部40へ供給する。
画像処理部40は、内部指示に基づいて、印刷する画像の画像データを取得し、取得した画像データを用いて印刷制御データを生成する。画像処理部40は、その処理中に発生するたとえば画像処理用のパラメータなどを画像処理メモリ41に一時的に保存し、印刷制御データの生成の際に利用する。画像処理部40は、生成した印刷制御データを制御部42へ供給する。
制御部42は、印刷制御データに基づいて、送りモータ32およびキャリッジモータ34へ制御信号を出力し、キャリッジ33の複数のピエゾ素子に電圧を印加する。これにより、制御部42は、印刷制御データに基づいて、印刷を実行する。
図4は、画像バッファメモリ43およびオフセット配列メモリ45のメモリ構造を示す図である。
画像バッファメモリ43は、たとえば数〜数十メガバイト程度の記憶容量を有するメモリであり、所定の記憶容量の画像バッファ61をn本(nは、1以上の整数)有する。各画像バッファ61の記憶容量は、たとえば数〜数十キロバイト程度であり、DSC2から取得された画像データが格納される。画像バッファ61の記憶容量は、後述するように、画像処理部40が画像バッファ管理部44に画像データを要求する1回のデータ量より大きい。たとえば、5メガバイトの画像バッファメモリ43に、3キロバイトの画像バッファ61を設ける場合、画像バッファ61の本数は、約1666(=n)本になる。
以下、複数の画像バッファ61を互いに区別する場合には、図4の一番上に図示する先頭の画像バッファメモリ43から順番に、第一画像バッファ61、第二画像バッファ61、・・・、第n画像バッファ61と記載する。複数の画像バッファ61には、図4の上から順番に、0番から(n−1)番までのインデックス番号が対応付けられる。
オフセット配列メモリ45は、数メガバイトの記憶容量を有するメモリであり、画像バッファ61の本数(n本)と同数のオフセットデータ62を有する。なお、画像バッファメモリ43とオフセット配列メモリ45は、同一のメモリ素子に形成してもよい。以下、複数のオフセットデータ62を互いに区別する場合には、図4の一番上に図示する先頭のオフセット配列メモリ45から順番に、第一オフセットデータ62、第二オフセットデータ62、・・・、第nオフセットデータ62と記載する。複数のオフセットデータ62には、図4の上から順番に、0番から(n−1)番までのインデックス番号が対応付けられる。
各オフセットデータ62は、同じインデックス番号が対応付けらける各画像バッファ61と対で利用される。各オフセットデータ62は、たとえば4バイトのデータサイズであり、同じインデックス番号が対応付けられる画像バッファ61に格納されている画像データの、取得先(ここでは、半導体メモリ13のデータ記憶領域22)での位置情報が格納される。ここでは、画像バッファ61に格納されている画像データの先頭データの、その画像データの先頭からのデータ位置を示すオフセット値が格納される。
また、各オフセットデータ62には、格納時刻データ63が対応付けられて記憶される。格納時刻データ63には、画像バッファ61に画像データを格納した時刻や、その画像データを取得した時刻などの、画像バッファ61に格納されている画像データに関する時刻情報が格納される。
画像バッファ管理部44は、複数の画像バッファ61および複数のオフセットデータ62を管理し、要求された画像データを、画像バッファ61から読み出して、画像データの要求元へ供給する。画像バッファ管理部44は、また、複数の画像バッファ61に格納されていない画像データを、DSC2から取得し、要求元へ供給するとともに、画像バッファ61に記憶させる。
次に、以上のような構成を有するダイレクト印刷システムの動作を説明する。
DSC2とプリンタ1がUSBケーブル3で接続されると、DSC2のUSBマスストレージクラス15とプリンタ1のUSBマスストレージクラス37とが通信する。これにより、USBマスストレージクラス15,37がデータをバルク転送するために使用するエンドポイントなどを生成し、DSC2とプリンタ1とは互いにデータを送受可能になる。
DSC2の印刷指示部17は、半導体メモリ13に記憶されているEXIF画像ファイル21の中から、印刷する画像のファイルを選択する。具体的には、印刷指示部17は、半導体メモリ13から、EXIF画像ファイル21のファイル名などのデータを読み込み、そのファイル名などを液晶モニタ11に表示させる。印刷指示部17は、ユーザの操作に対応して入力デバイス12が出力する入力データに基づいて、印刷対象のEXIF画像ファイル21を選択する。
印刷する画像のファイルを選択した後、印刷指示部17は、印刷条件を選択する。具体的には、印刷指示部17は、印刷条件の選択画面を液晶モニタ11に表示させる。印刷条件には、たとえばA4、L版などの印刷をする媒体30のサイズや、普通紙、光沢紙などの媒体30の種類、1up、2upなどの1枚の媒体30に印刷する画像のレイアウトなどがある。印刷指示部17は、ユーザの操作に対応して入力デバイス12が出力する入力データに基づいて、印刷条件を選択する。
その後、印刷指示部17は、その画像をその印刷条件で印刷するための印刷指示を生成し、DSC2の通信I/F16に供給する。たとえば、画像を1upにてL版の光沢紙に印刷する場合、この印刷指示には、その印刷する画像のファイル名、媒体30としてL版の光沢紙を指定する印刷条件、その媒体30の全面に1つの画像を印刷する印刷条件などか含まれる。なお、印刷指示において、ファイル名に替えて、半導体メモリ13に記憶されるEXIF画像ファイル21毎に、1対1対応にて発行されるファイルID(identification)などを使用してもよい。
DSC2の通信I/F16は、供給された印刷指示を、USBケーブル3を介してプリンタ1の通信I/F38へ送信する。通信I/F38は、受信した印刷指示を印刷指示解釈部39へ供給する。
USBの仕様では、USBケーブル3で接続される複数の機器の中の1つは、USBのホストとして機能し、その他はUSBデバイスとして機能する。DSC2は、USBケーブル3により、USBホストして機能するコンピュータと接続することを前提として製造されているので、一般的にUSBデバイスとして機能する。このようなDSC2と直接に接続されるプリンタ1は、USBホストとして機能する。この場合、DSC2の通信I/F16は、たとえば、プリンタ1の通信I/F38による周期的な印刷指示の取得処理に基づいて、供給された印刷指示を、プリンタ1の通信I/F38へ送信するようにすればよい。
印刷指示解釈部39は、供給された印刷指示を解釈し、その印刷指示にて指定された印刷を実行するための内部指示を生成し、画像処理部40へ供給する。たとえば、印刷指示において、印刷する画像のファイル名と、L版の光沢紙を指定する印刷条件と、その媒体30の全面に1つの画像を印刷する印刷条件とが含まれている場合、印刷指示解釈部39は、そのファイル名の画像データに対して画像補正の一種であるAPF(Auto Photo Fine)処理をした後、L版の光沢紙に高品質にて全面に印刷する内部指示を生成し、画像処理部40へ供給する。
印刷の内部指示が供給されると、画像処理部40は、その内部指示に従って印刷制御データの生成を開始する。画像処理部40は、画像データを、画像バッファ管理部44に要求する。この画像データの要求において、画像処理部40は、たとえば、印刷する画像データのファイル名と、要求する画像データの範囲とを指定する。要求する画像データの範囲は、たとえば、その範囲の先頭データのオフセット値(たとえば先頭からのキロバイト数)と、要求するデータ量とで指定する。データ量は、たとえば512バイトである。
図5は、画像バッファ管理部44の動作を示すフローチャートである。
画像バッファ管理部44は、印刷が開始されると(ステップST1)、画像バッファメモリ43およびオフセット配列メモリ45を初期化し、制御に使用する制御ポインタ変数に初期値「0」を代入する(ステップST2)。画像バッファメモリ43およびオフセット配列メモリ45は、初期化されることで、データを格納していない状態となる。その後、画像バッファ管理部44は、画像データの要求待ち状態になる(ステップST3)。
上述したように画像処理部40により画像データが要求されると、画像バッファ管理部44は、オフセット配列メモリ45を検索し、要求された画像データが画像バッファメモリ43に記憶されているか否かを判断する。
なお、初期化直後には、オフセット配列メモリ45には、画像データが格納されていない。そのため、この最初の画像データの要求があったときには、画像バッファ管理部44は、オフセット配列メモリ45を検索することなく、後述するステップST8を直ちに実行するようにしてもよい。
オフセット配列メモリ45の検索処理において、画像バッファ管理部44は、まず、そのときに保持している制御ポインタ変数の値に等しいインデックス番号のオフセットデータ62から、オフセット値を読み込む(ステップST4)。画像バッファ管理部44は、読み込んだオフセット値と、制御バッファの記憶容量とに基づいて、オフセット値を読み込んだオフセットデータ62と同じインデックス番号の画像バッファ61に、画像処理部40により要求された画像データが格納されているか否かを判断する(ステップST5)。
たとえば、オフセットデータ62から読み込んだオフセット値が「0」であり、各画像バッファ61の記憶容量が3キロバイトであり、且つ、画像処理部40が1キロバイト目から2キロバイト目までのオフセットの画像データを要求した場合、画像バッファ管理部44は、要求された画像データが画像バッファ61に格納されていると判断する。同様の状況下で、画像処理部40が4キロバイト目から5キロバイト目までのオフセットの画像データを要求した場合、画像バッファ管理部44は、画像バッファ61には、要求された画像データが格納されていないと判断する。
制御ポインタ変数の値に等しいインデックス番号の画像バッファ61に、画像処理部40により要求された画像データが格納されていない場合、画像バッファ管理部44は、さらに、すべての画像バッファ61について、画像処理部40により要求された画像データが格納されていないと判断したか否かを判断する(ステップST6)。
そして、すべての画像バッファ61について、ステップST5の判断を行っていない場合、画像バッファ管理部44は、制御ポインタ変数の値を、画像データを格納する画像バッファ61の中の、次のインデックス番号に更新する(ステップST7)。
図4に示すようにn本の画像バッファ61がある場合において、制御ポインタ変数の値が「n−1」(最後のインデックス番号)であるときには、画像バッファ管理部44は、制御ポインタ変数の値を「0」(最初のインデックス番号)に更新する。制御ポインタ変数の値が「n−1」以外の値であるときには、画像バッファ管理部44は、制御ポインタ変数の値を「1」増加する。
制御ポインタ変数の値を更新した後、画像バッファ管理部44は、更新した制御ポインタ変数の値に等しいインデックス番号のオフセットデータ62の読込処理(ステップST4)と、その読み込んだオフセット値を用いた画像データの有無の判断処理(ステップST5)とを実行する。
このステップST4からST7までの検索処理を繰り返すことで、画像バッファ管理部44は、画像処理部40により要求された画像データが複数の画像バッファ61に格納されているか否かを、画像バッファ61ごとに1つずつ順番に判断する。
この画像バッファ管理部44による検索処理は、要求に係る画像データを格納する画像バッファ61が発見されるまで、あるいは、すべての画像バッファ61についての検索が終了するまで繰り返される。
画像処理部40により要求された画像データが複数の画像バッファ61に格納されておらず、すべての画像バッファ61についての検索が終了したと判断すると(ステップST6)、画像バッファ管理部44は、DSC2から画像データを取得する処理を開始する。
具体的には、画像バッファ管理部44は、DSC2の半導体メモリ13に記憶されている画像データを、DSC2に送信させる送信指示を生成する(ステップST8)。この送信指示において、画像バッファ管理部44は、取得する画像データの先頭データとして、画像処理部40により要求された画像データの先頭データを指定し、取得する画像データのデータ量として、1つの画像バッファ61の記憶容量を指定する。
図6は、画像処理部40が画像バッファ管理部44に要求する画像データと、画像バッファ管理部44がDSC1から取得する画像データとの関係を示す図である。図6に示すように、画像処理部40が、画像データの3ブロック目の途中のデータを先頭データとするオフセット値を指定し、そこから4ブロック目の途中までの画像データの取得を要求した場合、画像バッファ管理部44は、その先頭データから画像バッファ61の1本分の記憶容量に相当するデータ量の画像データの送信を要求する。
この実施の形態では、USBマスストレージクラス37,15を用いているため、DSC2の半導体メモリ13が、プリンタ1側から見て、1つのストレージとして認識される。そのため、プリンタ1の画像バッファ管理部44は、まず、DSC2の画像データ送信部18から、DSC2の半導体メモリ13のメモリ管理領域23の情報を取得し、送信を指示する画像データの、半導体メモリ13のデータ記憶領域22内の保存場所を特定する。次に、画像バッファ管理部44は、特定した保存場所に保存されている画像データの送信指示を生成する。
なお、画像バッファ61の記憶容量は、画像処理部40が画像バッファ管理部44に1回に要求するデータ量より大きく設定され、たとえば画像処理部40が画像バッファ管理部44に1回に要求するデータ量の3倍以上(この実施の形態では3倍)とされる。そのため、画像バッファ管理部44は、画像処理部40による画像データの要求に基づいて、その要求されたデータ量より多いデータ量の送信をDSC2に指示する。
画像バッファ管理部44は、生成した画像データの送信指示を、プリンタ1の通信I/F38へ供給する。プリンタ1の通信I/F38は、供給された画像データの送信指示を、DSC2の通信I/F16へ送信する。DSC2の通信I/F16は、受信した画像データの送信指示を、画像データ送信部18へ供給する。画像データ送信部18は、半導体メモリ13から、送信を指示された画像データを読み込み、DSC2の通信I/F16に供給する。DSC2の通信I/F16は、供給された画像データを、プリンタ1の通信I/F38へ送信する。プリンタ1の通信I/F38は、受信した画像データを、画像バッファ管理部44へ供給する。これにより、画像バッファ管理部44は、送信を指示した画像データを取得する。
画像バッファ管理部44は、送信を指示した画像データを取得すると、そのDSC2から取得した画像データを、画像データを格納していない空き画像バッファ61に保存する。空いている画像バッファ61が無い場合には、画像バッファ管理部44は、オフセット配列メモリ45において格納時刻が最も古いオフセットデータ62に対応する画像バッファ61に、DSC2から取得した画像データを格納する(ステップST9)。
また、画像バッファ管理部44は、DSC2から取得した画像データを保存した画像バッファ61に対応するオフセットデータ62に、DSC2から取得した画像データの先頭データのオフセット値を保存し、そのオフセットデータ62に対応する格納時刻データ63の時刻を、現時刻に更新する。
DSC2から取得した画像データを画像バッファ61に格納した後、画像バッファ管理部44は、そのDSC2から取得した画像データの先頭から、画像処理部40により取得要求されたデータ量の画像データを抽出し、画像処理部40へ供給する(ステップST10)。
その後、画像バッファ管理部44は、制御ポインタ変数の値を、更新したオフセットデータ62のインデックス番号に更新し(ステップST11)、画像データの要求待ちの状態に戻る(ステップST3)。
一方、画像処理部40により要求された画像データがいずれかの画像バッファ61に格納されている場合、画像バッファ管理部44は、その画像バッファ61に対応するオフセットデータ62についての判断(ステップST5)において、画像処理部40により要求された画像データが格納されていると判断する。
そして、画像バッファ管理部44は、その判断したときの制御ポインタ変数の値に等しいインデックス番号の画像バッファ61から画像データを読み込む(ステップST12)。画像バッファ管理部44は、画像処理部40により取得が要求された画像データのオフセットと、オフセットデータ62に保存されているオフセット値との対応関係に基づいて、画像バッファメモリ43から読み込んだ画像データの中から、画像処理部40により要求された範囲の画像データを抽出し、画像処理部40へ供給する(ステップST13)。
その後、画像バッファ管理部44は、画像データが格納されていると判断したときの制御ポインタ変数の値を保持し(ステップST14)、画像データの取得要求待ちの状態に戻る(ステップST3)。
画像処理部40は、以上のように動作する画像バッファ管理部44に対して、画像データが必要になると、その必要な画像データの取得を要求し、それに応じて画像バッファ管理部44から取得した画像データを用いて印刷制御データの生成処理を実行する。
具体的には、画像を90度回転して媒体30に印刷する場合(たとえば、図3(A)の画像の左端の列から順番に媒体30に印刷する場合)、画像処理部40は、印刷イメージを生成する前に、印刷が指定されたファイル名の画像データを、そのファイルの先頭の画像データから所定データ量ずつ順番に取得し、画像ファイルにおける各行の先頭データ(図3(A)の画像の左端のブロックの先頭データ)のオフセット値を特定する。画像処理部40は、特定した各行の先頭データのオフセット値を、画像処理メモリ41に記憶させる。
特に、印刷する画像データがJPEG形式の画像データである場合、その画像データにおいて、各ブロックのデータ量は一定しない。画像処理部40は、印刷イメージを生成する前に、印刷が指定されたファイル名の画像データを、そのファイルの先頭の画像データから所定データ量ずつ順番に取得し、画像ファイルにおける各行の先頭データのオフセット値を特定する。画像処理部40は、特定した各行の先頭データのオフセット値を、画像処理メモリ41に記憶させる。
また、画像処理部40は、印刷指示解釈部39の内部指示によりAPF処理などの画像処理が指定されている場合、画像に対してその処理をする前に、印刷が指定されたファイル名の画像データを、そのファイルの先頭の画像データから所定データ量ずつ順番に取得し、その画像処理に使用するパラメータを生成する。画像処理部40は、演算したパラメータを画像処理メモリ41に記憶させる。
また、画像処理部40は、印刷イメージを生成するために、印刷が指定されたファイル名の画像データを、たとえばキャリッジ33の走査により媒体30へ印刷する順番で所定データ量ずつ取得し、印刷イメージを生成する。画像処理部40は、APF処理などの画像処理のためのパラメータを演算している場合、取得した画像データに対してそのパラメータを用いた画像補正処理を実行し、その補正後の画像データを使用して印刷イメージを生成する。画像処理部40は、生成した印刷イメージを画像処理メモリ41に記憶させる。
このように、画像処理部40は、印刷の内部指示に応じた回数にわたって、印刷する画像データを何度も利用する。そのとき、画像処理部40は、個々の処理に応じて、画像データを、画像ファイルにおける画像データの格納順にて要求したり、その格納順とは異なる順番にて要求したりする。画像処理部40は、画像データを、その全体からすれば任意の順番にて要求し、微視的には連続した順番にて要求する。
印刷イメージを生成すると、画像処理部40は、生成した印刷イメージの色成分を、プリンタ1のインク色成分へ変換する色変換処理と、各インク色のイメージを、印刷するドット単位の印刷有無データへ変換するハーフトーン処理と、ドット単位の印刷有無データを、キャリッジ33からのインク吐出順に並べ替えるなどのインターレース処理とを実行し、印刷制御データを生成する。画像処理部40は、生成した印刷制御データを、制御部42へ供給する。
印刷制御データが供給されると、制御部42は、その印刷制御データに基づく印刷を開始する。制御部42は、まず、供給された印刷制御データに基づいて、送りモータ32を駆動し、プリンタ1にセットされている媒体30を、所定の方向からキャリッジ33に対向する位置へ供給する。制御部42は、キャリッジモータ34を駆動しながら、印刷制御データに基づいて、キャリッジ33の複数のピエゾ素子に電圧を印加する。これにより、媒体30のキャリッジ33で走査された部位には、画像の一部が印刷される。また、制御部42は、送りモータ32を駆動して媒体30を所定量ずつ送る制御と、印刷制御データに従って媒体30のキャリッジ33で走査する部位に画像を印刷する制御とを、繰り返し実行する。これにより、媒体30には、DSC2において指定された画像が、DSC2において指定された印刷条件にて印刷される。
図7は、DSC2の半導体メモリ13に記憶される画像データを示す図である。図7(A)は、半導体メモリ13のデータ記憶領域22に画像ファイルとして記憶されている画像データを示す図である。この画像データは、約35キロバイトのデータ量を有する。オフセット値が1キロバイトを単位として増減するものである場合、この画像データの読出しには、「0」から「34」までのオフセット値が使用される。
図7(B)は、図7(A)の画像データに基づく画像を示す図である。画像は、3行に分けて符号化される。画像ファイルにおいて、各行のデータ量は、15キロバイトである。図7(B)に示すように、一番上の行の画像データには「0」から「14」のオフセット値が対応し、二行目の画像データには「15」から「29」のオフセット値が対応し、一番下の行の画像データには「30」から「44」のオフセット値が対応する。
なお、JPEG方式にて符号化をした場合、複数の行のデータ量は、互いに異なるデータ量になる。図7(B)の場合のように、各行のデータ量が一定のデータ量に揃うことはない。したがって、各行のデータ量は、一定に揃わないことが多い。
図8は、図7(B)の画像の左端部の印刷イメージを生成するために画像処理部40の取得要求に基づいて画像バッファ管理部44がDSC2から取得する画像データのオフセット値と、それに基づく画像バッファ管理部44の検索回数との対応関係を示す図である。図8の左列は、そのオフセット値のリストである。図8の中央列は、画像バッファ管理部44の検索回数のリストである。図8の右列は、比較例の画像バッファ管理部による検索回数のリストである。
画像処理部40は、図8の上から順番に、同図に示すオフセット値の画像データを要求する。この場合、画像処理部40は、1キロバイト毎に、画像データを要求する。画像バッファ管理部44は、この各オフセット値での要求に基づいて、図8の同一行に記載される回数の検索を実行する。
図7(B)の画像の左端部の印刷イメージを生成する場合、画像処理部40は、まず、図7(B)の画像の左上隅の画像データ(オフセット値「0」)から順番に、第一行の途中(オフセット値「8」)までの画像データを要求する。その後、画像処理部40は、図7(B)の画像の二行目左端の画像データ(オフセット値「15」)から順番に、第二行の途中(オフセット値「19」)までの画像データを要求する。さらに、画像処理部40は、図7(B)の画像の三行目左端の画像データ(オフセット値「30」)から順番に、第三行の途中(オフセット値「35」)までの画像データを要求する。
図9は、図8の左列に示すオフセット値のリストによる画像データの要求がなされた後の、画像バッファメモリ43およびオフセット配列メモリ45の記憶内容を示す図である。ここで、画像バッファ61の本数は、8本である。各画像バッファ61の記憶容量は、3キロバイトであり、画像処理部40が要求する画像データの3倍である。
図8の左列のリストの順番にてオフセット値を指定する画像データの要求が順番に発生した場合、図9に示すように、インデックス番号「0」の画像バッファ61にはオフセット値「0〜2」の3キロバイトの画像データが格納され、インデックス番号「0」のオフセットデータ62には、オフセット値「0」が記憶される。インデックス番号「1」の画像バッファ61にはオフセット値「3〜5」の3キロバイトの画像データが格納され、インデックス番号「1」のオフセットデータ62には、オフセット値「3」が記憶される。インデックス番号「2」から「7」までの画像バッファ61およびオフセットデータ62についても、図9に示すように、同様の対応関係でオフセット値が格納される。
このような画像データの要求の下では、画像バッファ管理部44は、図8の中央列に示す回数で、検索処理を実行する。画像バッファ管理部44は、複数の画像バッファ61に記憶されていない画像データの要求があったときには、画像バッファ61の本数に等しい回数(8回)の検索を実行する。複数の画像バッファ61に記憶されている画像データについての要求があったときには、画像バッファ管理部44による検索は1回で済む。前回要求した画像データと同一の画像バッファ61に今回の画像データが存在するため、画像バッファ管理部44による検索は1回で済む。このときの合計の検索回数は、80回になる。
図8の右列は、比較例での画像バッファ管理部によるオフセットデータ62の検索回数である。この比較例の画像バッファ管理部は、画像データの要求があったときには、常に画像バッファ61の先頭から(つまり、常にインデックス番号「0」から)順番に、複数の画像バッファ61に対応するオフセットデータ62を検索するものである。
この比較例の場合、画像バッファ管理部は、画像バッファ61に記憶されていない画像データの要求があったときには、画像バッファ61の本数に等しい回数(8回)の検索を実行する。また、画像バッファ61に記憶されている画像データの取得要求があったときには、その画像データが格納されている画像バッファ61のインデックス番号に1を加えた回数の検索を実行する。合計の検索回数は、136回になり、上述した実施の形態の場合の約1.5倍になる。
なお、ここでは画像バッファ61の本数を、説明のために8本としたが、実際の画像バッファ61の本数は、少なくとも数百本程度とされる。そして、画像バッファ61の本数が増えれば増えるほど、この実施の形態の画像バッファ管理部44による検索回数と、比較例の画像バッファ管理部による検索回数との差は、増大する。
以上のように、この実施の形態では、プリンタ1に画像バッファメモリ43を設け、画像バッファ管理部44は、画像処理部40から要求された画像データがこの画像バッファメモリ43に格納されている場合には、画像バッファメモリ43からその要求に係る画像データを読み出して、画像処理部40へ供給する。したがって、画像処理部40が、画像データを要求してから、その要求に係る画像データを取得するまでの時間が短縮され、その結果として、印刷時間は短縮される。
また、この実施の形態では、画像バッファ管理部44は、複数の画像バッファ61に格納されている画像データの、DSC2の半導体メモリ13におけるオフセットデータを、各画像バッファ61と1対1対応で設けられた複数のオフセットデータ62に保存し、そのオフセットデータ62を1つずつ順番に読み込んで検索することで、画像処理部40により要求された画像データが画像バッファメモリ43に記憶されているか否かを判断する。
しかも、この実施の形態では、画像バッファ管理部44は、新たな画像データをDSC2から取得した後、その次の画像データの要求の際には、そのDSC2から取得した画像データを格納した画像バッファ61に対応するオフセットデータ62から順番に読み込む。また、画像バッファ管理部44は、複数の画像バッファ61に、要求された画像データがない場合には、要求された画像データの先頭データが、DSC2から取得する画像データの先頭データとなるようにし、且つ、要求された画像データより多いデータ量の画像データを取得する。
その一方で、画像処理部40は、上述したように、画像データを、その全体からすれば任意の順番にて要求し、微視的には連続した順番にて要求する。したがって、画像バッファ管理部44は、新たな画像データをDSC2から取得した後に次の画像データの要求があった場合であって、その要求に係る画像データが画像バッファに格納されているときには、1つのオフセットデータ62を検索するだけで、画像処理部40により要求された画像データが画像バッファ61に格納されていると判断する。
また、この実施の形態では、画像バッファ管理部44は、画像バッファメモリ43に、要求された画像データが格納されている場合には、その次の画像データの要求の際には、その前回の画像データが格納されている画像バッファ61に対応するオフセットデータ62から順番に読み込む。画像バッファ管理部44は、複数の画像バッファ61に、要求された画像データがない場合には、要求された画像データの先頭データが、DSC2から取得する画像データの先頭データとなるようにし、且つ、要求された画像データより多いデータ量の画像データを取得する。
したがって、画像バッファ61から画像データを読み込んで要求元へ供給した後に次の画像データの要求があった場合であって、その要求に係る画像データが画像バッファに格納されているときには、画像バッファ管理部44は、1つのオフセットデータ62を1回検索するだけで、画像処理部40により要求された画像データが画像バッファ61に格納されていると判断する。
特に、図7から図9を用いて説明したように、画像バッファ管理部44がDSC2から1回に取得する画像データのデータ量を、画像処理部40が画像バッファ管理部44に要求する画像データのデータ量の3倍、あるいはそれ以上とすることで、図5のフローチャートに従って動作する画像処理部44は、少なくとも3回の要求の中の2回においては、その3回の中の最初の要求に基づいて取得した画像データを記憶する画像バッファ61についての1回の判断をするだけで、画像データが画像バッファ61に記憶されていると判断することができる。
その結果、この実施の形態では、画像バッファ管理部44によるオフセット配列の検索回数を、必要最小限な回数にし、効率よく印刷をすることができる。また、画像バッファ管理部44がDSC2から画像データを取得する回数は、画像処理部40が画像バッファ管理部44に画像データの取得を要求する回数より少なくなる。
以上の実施の形態は、本発明の好適な実施の形態の例であるが、本発明は、これに限定されるものではなく、発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
たとえば、上記実施の形態では、DSC2の印刷指示部17は、印刷する画像の画像データを有するEXIF画像ファイル21のファイル名を指定した印刷指示を、プリンタ1の印刷指示解釈部39へ送信している。この他にもたとえば、印刷指示部17は、ファイル名と1対1に対応して発行される、ピクトブリッジ(PictBridge)などで使用されるファィルIDを指定した印刷指示を、プリンタ1の印刷指示解釈部39へ送信するようにしてもよい。なお、ピクトブリッジでは、画像データをDSC2からプリンタ1へ送信するために、PTP(Picture Transfer Protocol)を使用する。
上記実施の形態では、画像バッファ管理部44は、DSC2に接続されるプリンタ1に設けられ、このDSC2の半導体メモリ13に保存されているEXIF画像ファイル21のデータを読み込んでいる。この他にもたとえば、画像バッファ管理部44は、デジタルムービーカメラ、カードリーダ、半導体メモリ、携帯端末コンピュータなどに接続されるプリンタ1に設けられ、これらに保存されている画像データを読み込ものであってもよい。
上記実施の形態では、画像バッファ管理部44は、画像処理部40の印刷処理の開始時に、1回だけ、画像バッファメモリ43およびオフセット配列メモリ45を初期化している。この他にもたとえば、画像バッファ管理部44は、たとえば画像処理部40が各媒体30に印刷する印刷制御データを生成する度に、画像バッファメモリ43およびオフセット配列メモリ45を初期化するようにしてもよい。
1 プリンタ(印刷装置)、40 画像処理部(画像処理手段)、42 制御部(印刷手段)、43 画像バッファメモリ、44 画像バッファ管理部(判断手段、供給手段、取得手段)、45 オフセット配列メモリ(位置情報記憶手段)、61 画像バッファ