画像処理装置及びその制御方法並びにプログラム
【課題】 ハードウェア処理による画像処理手段とソフトウェア処理による画像処理手段とを効率的に使い分けること。
【解決手段】 処理対象のJPEG画像データを表示部204で表示させる場合、JPEG画像データのサイズが小さい場合はJPEG伸張ソフトウェア308で伸張させ、サイズが大きい場合はJPEG伸張ハードウェア203で伸張させる。
【解決手段】 処理対象のJPEG画像データを表示部204で表示させる場合、JPEG画像データのサイズが小さい場合はJPEG伸張ソフトウェア308で伸張させ、サイズが大きい場合はJPEG伸張ハードウェア203で伸張させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハードウェア処理による画像処理手段とソフトウェア処理による画像処理手段とを有する画像処理装置及びその制御方法に関する。
【背景技術】
【0002】
従来、画像データを処理する際、ハードウェア処理による画像処理手段とソフトウェア処理による画像処理手段とを適宜使い分けるものが知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−78769号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載のものは、用途に応じてハードウェア処理とソフトウェア処理とを固定的に使い分けるものである。画像データの処理に際しては、状況によってはハードウェア処理可能となるまで待つよりも、ソフトウェア処理行った方が結果的に早く処理を終えられる場合がある。しかしながら、従来、固定的にハードウェア処理とソフトウェア処理とを使い分けるものであったため、処理速度としては必ずしも効率的であったとは言えないものであった。
【0005】
本発明は、以上の点に鑑みなされたものであり、ハードウェア処理による画像処理手段とソフトウェア処理による画像処理手段とを効率的に使い分けることが可能な画像処理装置、その制御方法並びにプログラムを提供するものである。
【課題を解決するための手段】
【0006】
上記問題点を解決するため、本発明の画像処理装置は、画像データをハードウェア処理によって画像処理する第1の画像処理手段と、画像データをソフトウェア処理によって画像処理する第2の画像処理手段と、処理対象の画像データの処理内容を判定する第1の判定手段と、処理対象の画像データの内容を判定する第2の判定手段と、前記第1の判定手段及び前記第2の判定手段の判定結果に基づき、処理対象の画像データを前記第1の画像処理手段で処理させるか前記第2の画像処理手段で処理させるかを決定する決定手段とを有する。
【発明の効果】
【0007】
本発明によれば、画像データの処理内容と、処理対象の画像データの内容とに基づいてハードウェア処理とするか、ソフトウェア処理とするかを決定するので、それぞれを効率的に使い分けることが可能となる。
【図面の簡単な説明】
【0008】
【図1】実施形態の画像処理装置の構成を示すブロック図である。
【図2】画像処理装置のプログラムの構成を示す図である。
【図3】画像処理装置による処理の流れを示すフローチャートである。
【図4】画像処理装置による処理の流れを示すフローチャートである。
【図5】画像処理装置による処理の流れを示すフローチャートである。
【図6】画像処理装置による処理の流れを示すフローチャートである。
【図7】画像処理装置による処理の流れを示すフローチャートである。
【図8】本実施形態の処理を行った場合と行わなかった場合との処理速度を示す図である。
【図9】本実施形態の処理を行った場合と行わなかった場合との処理速度を示す図である。
【図10】画像処理装置による処理の流れを示すフローチャートである。
【図11】画像処理装置による処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明を実施するための形態について図面を用いて説明する。
【0010】
図1は、本実施形態における画像処理装置の構成を示すブロック図である。
【0011】
図1において、操作部101はハードキーやソフトキーを含み、ユーザによる各種操作を受け付ける。カードインターフェース102はメモリカードをセット可能であり、セットされたメモリカードに記憶されている画像データを操作部101からの指示に従って入力可能である。読取部103はCCDを備え、このCCDは、原稿画像を読み取り、赤(R)、緑(G)および青(B)色のアナログ輝度データを出力する。印刷部104は入力された画像データに応じて記録シート上にインク、トナー等の記録剤を付与して画像をプリントする。
【0012】
CPU200はROM201に記憶されている制御命令プログラムや画像処理プログラム等をRAM202にロードし、それを実行することによって画像処理装置の動作を制御する。JPEG伸張ハードウェア203はJPEG圧縮された画像データを伸張処理することができるハードウェアモジュールである。JPEG伸張ハードウェア203は、JPEG圧縮されたデータの検索、伸張や回転に必要な情報の収集などを行い、画像データを90度単位で回転して伸張することも可能である。表示部204は操作部101の操作状態、画像処理装置の各種状態などユーザに通知すべき種々の情報を表示可能である。
【0013】
図2は、図1に示した各構成とROM201に格納されているプログラムで実行される処理との関係を模式的に表した図である。
【0014】
アプリケーション制御部301は、操作部101を介して入力されたユーザの指示に応じてジョブを発行する制御プログラムである。印刷ジョブ制御部302は、生成された画像データを印刷部104に印刷させるための処理を制御する制御プログラムである。表示ジョブ制御部303は、生成された画像データを表示部204に表示させるための処理を制御する制御プログラムである。量子化処理部304は、画像データを、印刷部104で印刷する形態に適した形にハーフトーン処理を行う画像処理プログラムである。JPEG処理部305は、JPEG伸張ハードウェア203及びJPEG伸張ソフトウェア308を制御する画像処理制御プログラムである。色変換処理部306は、画像データの色変換を行う画像処理プログラムである。変倍処理部307は、画像データの変倍を行う画像処理プログラムである。JPEG伸張ソフトウェア308は、JPEG画像中の圧縮データを伸張する機能をそなえた画像処理プログラムである。また、JPEG伸張ソフトウェア308は、JPEG画像中の圧縮データを全て検索し、回転伸張に必要な情報を収集するJPEG解析伸張機能も有する。JPEG伸張ソフトウェア308は、同JPEG伸張ソフトウェア308にて、JPEG解析伸張機能を実行した後であれば、画像データを90度回転して伸張することが可能である。JPEG解析伸張機能とは、JPEG画像中の圧縮データを全て検索し、回転伸張に必要な情報を収集する機能である。JPEG処理部305、色変換処理部306、変倍処理部307は印刷ジョブ制御部からも、表示ジョブ制御部からも呼び出し可能なように共通化されている。なお、図示を省略したがアプリケーション制御部301、印刷ジョブ制御部302、表示ジョブ制御部303、JPEG処理部305は、カードインターフェース102を介して画像ファイルの読み出しが可能な構成とする。
【0015】
CPU200が画像処理装置を制御する際は、図2に示したプログラム群の全てまたは一部をRAM202にロードし、それを実行することによってなされる。以降で示すフローチャートはこのプログラムに基づく処理の流れを示す。
【0016】
図3は、メモリカードからの印刷アプリケーションを制御する際のアプリケーション制御部301による処理の流れを示す。
【0017】
まず、S401にてカードインターフェース102を介してメモリカードにアクセスし、保存されているJPEG画像ファイルの検索を行い、画像ファイルごとに画像IDを生成し画像ファイル名を付加したファイルリストを生成する。本実施形態においては、画像ファイルの検索がなされると、各画像ファイルに対して画像ID(1〜N)を割り当て、それと画像ファイルのファイル名とを対応付けたファイルリストを生成しRAM202上に記憶する。なお、本実施形態で扱う画像ファイルはデジタルスチルカメラで撮影した際の種々の情報を含むExif形式のJPEGファイルとする。
【0018】
次にS402にて画像ID=1の画像に対する表示ジョブを表示ジョブ制御部303に発行する。その後操作部101を介してのユーザ指示を受け取るべく、S403、S404の判断を繰り返す。S403では、ユーザによって、現在表示中あるいは表示処理中の画像データの次なる画像の閲覧指示が行われたか否かを確認する。ユーザによって次なる画像の閲覧指示が検出された場合は、S402にて、ファイルリスト上で次なる画像である、画像ID=2の画像に対する表示ジョブを、表示ジョブ制御部303に発行し、再度S403、S404の指示待ちを行う。S403にて次なる画像の閲覧指示が検出されなかった場合は、S404にてユーザによって印刷画像の指定が行われたか否かを検出する。ユーザによって、印刷画像の指定が行われた場合は、現在表示中あるいは表示処理中の画像ID=2の画像を印刷対象として確定しS404を実行する。
【0019】
そしてS405にて、ユーザによる印刷設定の指示を受け付ける。本実施形態では、印刷部数が設定できるものとする。以降、S405にて、印刷部数を3部と設定された場合の処理について説明する。次にS406にて、印刷ジョブ制御部に対して、画像ID=2の画像を3部印刷するよう、印刷ジョブを発行する。さらに、ユーザが別なる画像の印刷指示を予約する、予約指示があるか否かを確認するとともに、実行中あるいは予約済みの印刷ジョブ終了を検出するために、S407、S408を繰り返す。S407にて予約指示がないと判断されると、S408を実行する。S408では、現在実行中あるいは予約済みの印刷ジョブが存在する場合は、処理S407を実行する。次に処理S407にて予約指示を検出した場合は、処理S403を実行する。この段階で、表示部204には最後に表示ジョブを発行した画像ID=2の画像データ、あるいは画像ID=2が表示処理中であることを示す画面が表示されている。次に、処理S403にて、次なる画像データの閲覧指示を検出した場合は、S402にて、ファイルリスト上で次なる画像である、画像ID=3の画像に対する表示ジョブを、表示ジョブ制御部303に発行し、再度S403、S404の指示待ちを行う。以降、S405にて、ユーザが画像ID=3の画像を印刷対象として指定し、S405にて2部印刷するよう設定された場合は、S406にて、印刷ジョブ制御部に対して、画像ID=3の画像を2部印刷するよう、印刷ジョブを発行する。その後ユーザから予約指示がなければ、S407とS408が繰り返されることになる。これまで印刷ジョブが発行された画像ID=2を3部印刷し、画像ID=3を2部印刷が終了した段階で、S408にて全印刷ジョブ終了を検出し、S403を実行する。この段階で、表示部204には最後に表示ジョブを発行した画像ID=3の画像データ、あるいは画像ID=3の画像データが表示処理中であることを示す画面が表示されている。アプリケーション制御部301の制御を以上のような構成とした場合、ユーザは画像が印刷中であっても、異なる画像の印刷を予約指示することが可能となる。
【0020】
図4は、図3におけるS402にて発行された表示ジョブを受け付けた表示ジョブ制御部303の処理の流れを示したフローチャートである。ここでは、初めに画像ID=1に対する表示ジョブを受け付けた後に、画像ID=2に対する画像表示ジョブを受け付け、最後に画像ID=3に対する表示ジョブを受け付ける場合の例を示す。
【0021】
S601では現在実行中の表示ジョブがあるか否かを判断する。初回の要求である、画像ID=1の実行中に実行中のその他の表示ジョブは存在しないので、S603以降の処理を順次実行する。S603にて表示部204に画像表示処理中であることを示す画面を表示させる。本実施例では、この画面中に画像ID=1の画像ファイル名を表示することとする。次にS604以降の処理を実行することになるが、以降の処理実行中に次なる画像ID=2の画像表示ジョブを受け付けた場合、S601で実行中の表示ジョブが存在すると判断され、S602を実行する。S602では、画像ID=1の画像表示ジョブを直ちに終了するよう制御を行う。以降は画像ID=2に対するジョブを受け付けたものとして、説明する。
【0022】
次にS603にて画像ID=2の画像ファイル名を表示し、処理S604を実行する。S604では、画像ID=2に対応する画像データのヘッダ部分をカードインターフェース102から、RAM202の所定領域に読み込みを行う。S605では、画像ID=2に対応する画像データのヘッダ部分の解析を行い、JPEG伸張に必要な画像サイズ、量子化テーブルなどといった情報を収集する。また、デジタルスチルカメラで撮影された画像JPEG画像の多くは、画像ファイル中のヘッダ内部にJPEG圧縮されたサムネイル画像データが存在している。そのためS605では、画像ファイル中にサムネイル画像が付加されているか否かも検出し、サムネイルが付加されている場合はサムネイル伸張に必要な、情報も収集する。なお、ここでは画像ID=2の画像ファイルにはサムネイル画像が付加されているものとする。
【0023】
S606では、S605で検出したサムネイルの有無を判断材料として、次なる処理を切りかえる。サムネイルが付加されていない画像ファイルであれば、S607が実行されるが、画像ID=2はサムネイルが有りと判断されるため、S608を実行する。S608では、RAM202中にJPEG伸張入力バッファを確保し、カードインターフェース102から、画像ID=2のファイル中にあるサムネイル画像を読み出しJPEG伸張入力バッファに保存する。さらにサムネイル画像を読み出したことを記憶しておく。なお、JPEG伸張入力バッファは少なくとも圧縮されたサムネイル画像が全て格納可能な領域を確保するものとする。次にS609では、JPEG伸張をソフトウェアで実行するか、ハードウェアで実行するかを判断する。
【0024】
図5は、入力されたJPEG画像の伸張をソフトウェア処理により実行するか、ハードウェア処理により実行するかを判断する処理の流れを示すフローチャートである。
【0025】
S701では、図4における、S608にてサムネイル画像がJPEG伸張入力バッファに記憶されているか否かを示す情報を参照し、サムネイルが記憶されている場合は、S703を実行する。S703ではソフト伸張処理が選択される。即ち、処理対象の画像データがサムネイル画像でありそのサイズが小さい(大きくはない)ことがわかっているため、ソフトウェアにより処理を行うよう決定する。一方S701にて、主画像が記憶されている場合は、S702を実行する。S702ではハード伸張処理が選択される。即ち、処理対象の画像データがサムネイル画像ではない場合、画像データのサイズが大きい可能性が高いためハードウェアにより処理を行う。このように画像データの処理内容が表示である場合、処理対象の画像データの内容を判定し、その判定結果に従ってハードウェア処理するかソフトウェア処理するかを決定する。今回は、処理S608にて、画像ID=2のファイル中にあるサムネイル画像を取り込んでいるため、S609ではソフトウェア実行が選択されることになる。
【0026】
続いて、S610ではS609にて、ソフトウェアによる実行が選択されているため、ソフトウェアによる処理を実行すべくS611が実行されるよう制御を行う。S611では、JPEG処理部305に対して、JPEG伸張ソフトウェア308にてJPEG伸張を行うよう要求を行い、要求が完了するのを待つ。なお伸張後の画像サイズによっては伸張後の画像データを全面保存できるだけの領域確保が困難なケースも想定されるため、本実施形態では、伸張後の画像データが保存可能なライン数N単位で、処理要求を行うものとする。
【0027】
次にS613で、表示部204における画像表示領域のサイズ及び解像度に適したサイズに画像データの拡大もしくは縮小を行う。さらに、S614では、表示部204に適した形式に色変換を色変換処理部306にて行う。色変換処理部306では、例えば、マトリクス演算や、テーブル参照を用いて、表示部のデバイス色空間への変換を行う。
【0028】
続いてS615にて、今回選択された画像データ(画像ID=2のサムネイル画像)の全面が処理済みか否かを判断し、未処理データが残っている場合は、S610、S611、S613、S614、S615を順次実行する。
【0029】
以上のように画像処理を繰り返し実行した結果、S615にて、画像データの全面が処理済みであると判断されるとS616が実行される。S616では画像処理済みの画像データを表示部204に転送し、画像処理済の画像データが表示部204に表示されることになる。
【0030】
続いて、S617では今回表示した画像がサムネイル画像か否かを判断する。今回表示された画像データは、画像ID=2のサムネイル画像であるため、次にS607を実行するよう制御を行う。S607では、RAM202中にJPEG伸張入力バッファを確保し、カードインターフェース102から、画像ID=2のファイル中にある主画像データを読み出し、JPEG伸張入力バッファに保存する。なお、JPEG伸張入力バッファが確保可能なサイズよりも主画像データのサイズが大きい場合は、主画像データの先頭から、JPEG伸張入力バッファのサイズまでを読み込むものとする。
【0031】
次に、S604では図5におけるS701で主画像の伸張を行うと判断されるためハードウェアによる実行が選択される。続いて、S610ではS609にて、ハードウェアによる実行が選択されているため、ハードウェアによる処理を実行すべく、S612が実行されるよう制御する。S612では、JPEG処理部305に対して、JPEG伸張ハードウェア203を用いて伸張後の画像データ保存領域に収まるライン数NのJPEG伸張を行うよう要求を行い、要求が完了するのを待つ。以降、サムネイル画像表示時と同様に、S613、S614、S615を実行し主画像データに対して、全面画像処理が終了するまで、一連の画像処理を繰り返し実行する。
【0032】
S616では画像処理済みの画像データを表示部204に転送し、画像処理済の画像データが表示部204に表示されることになる。続いて、S617では今回表示した画像がサムネイル画像か否かを判断する。今回表示された画像データは、画像ID=2の主画像であるため、今回受け付けた画像ID=2に対する表示ジョブを終了する。
【0033】
以上の例では、画像ID=2の次に画像ID=3に対する表示ジョブを受け付けることになるが、以降の処理はこれまで画像ID=2を用いて説明したものと同じになる。表示ジョブ制御部303を以上のような構成としたことで、表示対象となる画像ファイルにサムネイルが含まれている場合は、一連の画像処理を終え、表示部204にサムネイル画像が一旦表示される。その後、主画像に対して一連の画像処理を実行し、主画像が表示されるよう切り替わる。主画像データの処理に時間がかかり、表示までの時間を要する場合であっても、サムネイル画像が高速に表示されれば、ユーザは印刷すべき画像を閲覧することが可能となる。また、ハードウェアによる処理と、ソフトウェアによる処理の切り替わりが、1つの画像内で発生することはないため、ハードウェアとソフトウェアの演算誤差があっても、表示画像に色むらは発生しない。
【0034】
図6は、図3におけるS406にて発行された印刷ジョブを受け付けた印刷ジョブ制御部302の処理の流れを示したフローチャートである。この例では、初めに画像ID=2に対する印刷ジョブを受け付けた後に、画像ID=3に対する印刷ジョブを受け付けるものとする。
【0035】
まず、S801では受け付けた印刷ジョブを一旦印刷ジョブキューに登録する。次に、S802では、現在実行中の印刷ジョブがあるか否かを判断する。初めに受け付けた画像ID=2に対する印刷ジョブが要求された時は、現在実行中の印刷ジョブが無いため、S803を実行するよう制御される。一方、画像ID=2に対する印刷ジョブの実行中に画像ID=3に対する印刷ジョブの実行要求を受け付けた場合は、S801にて印刷ジョブキューに登録した後、画像ID=2に対する印刷ジョブを継続実行するように制御を戻す。
【0036】
以降は画像ID=2に対する印刷ジョブが実行中であるとして説明する。次に、S803では印刷ジョブキューから最も古い印刷ジョブである、画像ID=2に対する印刷ジョブを取得し、印刷設定(ここでは部数=3部)を取得する。次に、S804では画像ID=2に対応する画像データのヘッダ部分をカードインターフェース102から、RAM202の所定領域に読み込む。さらに、S805画像ID=2に対応する画像データのヘッダ部分の解析を行い、JPEG伸張に必要な画像サイズ、量子化テーブルなどといった情報を収集する。なお、ここでは印刷ジョブでのヘッダ解析においては、サムネイル有無の判定を行わず、主画像の伸張に必要な情報のみを収集する。
【0037】
次に、S806では、RAM202中にJPEG伸張入力バッファを確保し、カードインターフェース102から、画像ID=2のファイル中にある主画像を読み出しJPEG伸張入力バッファに保存する。なお、JPEG伸張入力バッファが確保可能なサイズよりも主画像データのサイズが大きい場合は、主画像データの先頭から、JPEG伸張入力バッファのサイズまでを読み込むものとする。
【0038】
次に、JPEG画像の伸張処理に移るが、デジタルスチルカメラで撮影された画像データの多くはランドスケープ画像として横長の画像データとして保存されている。一方、本実施形態において印刷部104は、印刷の際、印刷用紙の長手方向に紙送りを行う。よって印刷対象の画像データを90度回転して伸張する必要がある。そこで、まずS807にて、JPEG処理部305に対して、JPEG伸張ハードウェア203でJPEG解析伸張を行うよう要求を行い、処理が終了するのを待つ。次に、S808にて、JPEG伸張ハードウェア203を用いて90度の回転と伸張とが行われた後のデータを出力するよう要求を行い、要求が完了するのを待つ。
【0039】
次にS809で、印刷用紙902のサイズ及び印刷部104の印刷解像度に適したサイズに画像データの拡大もしくは縮小を変倍処理部307にて行う。なお本実施形態において印刷部104は、16ライン単位に印刷処理を行うものとする。よって、S808では変倍処理部307が16ライン出力するために必要十分なライン数であるMライン単位で処理要求を行うものとし、変倍処理部307はS809においては、16ラインのデータを出力するものとする。さらに、S810では、印刷部104に適した色空間にすべく色変換を色変換処理部306にて行う。例えば、マトリクス演算や、テーブル参照を用いて、印刷部104のデバイス色空間への変換を行う。
【0040】
次に、S811では画像データを印刷部104に適したドットパタンに変換する量子化処理を行う。次に、S812では、S811で生成された16ライン分のドットデータを印刷するよう、印刷部104にデータ送信を行う。S813では、全画像データの印刷が終了したか否かを検出し、未印刷データが残っている場合は処理S808から、S812までの一連の処理を実行するよう判断する。全画像データの印刷が終了したら、S814にて全部数の印刷が終了したか否かの確認を行い、全部数の印刷が終わっている場合は、S804以降の処理を残り部数分実行するよう制御を行う。画像ID=2は3部印刷するよう求められているため、S804以降の処理を3度行うことで全部数の印刷が終了し、S815が実行される。
【0041】
S815では、印刷ジョブキューを参照し、印刷ジョブの有無を確認し、印刷ジョブが残っている場合は、S803以降の処理を印刷ジョブが無くなるまで続けるよう制御を行う。画像ID=2の印刷ジョブがS815に到達する以前に画像ID=3の印刷ジョブを受け付けている場合は、印刷ジョブキューに印刷ジョブが存在するため、S803が実行される。S803にて画像ID=3の印刷ジョブを印刷ジョブキューから取り出し、要求された2部の印刷が終了するまで、以降の処理を実行する。
【0042】
印刷ジョブ制御部302を以上のような構成としたことで、アプリケーション制御部301は、印刷ジョブ制御部302が実行中か否かにかかわらず、印刷ジョブを発行することが可能となる。印刷ジョブ制御部302は、実行中の印刷処理が終了すると即座に、印刷ジョブキューに蓄積されている印刷ジョブを取り出し、印刷を開始することが可能となる。また、ハードウェアによる処理と、ソフトウェアによる処理の切り替わりが、1つの画像内で発生することはないため、ハードウェアとソフトウェアの演算誤差があっても、印刷画像に色むらは発生しない。
【0043】
図7は、JPEG処理部305による処理の流れを示したフローチャートである。
【0044】
JPEG処理部305は、処理要求を受けた場合まず、その要求がハードウェアで実行するよう指示されているか、ソフトウェアで実行するよう指示されているかをS1001で判断する。ハードウェアで実行するよう指示されている場合は、ハードウェアにて処理を実行するべく、S1002以降の処理を実行するよう、制御を行う。ソフトウェアで実行するよう指示されている場合は、ソフトウェアにて処理を実行するべく、S1002以降の処理を実行するよう制御を行う。
【0045】
まず、ソフトウェアで実行するよう指示されている場合の処理についてS1002から説明する。上述した表示ジョブ制御部303の処理における、S606にてサムネイル有りと判定された場合にS611にてソフトJPEG伸張が要求された場合が該当する。
【0046】
ソフトウェアにてJPEG処理を実行する場合、S1002にて解析伸張要求を受けたか、伸張要求を受けたかを判定する。解析伸張要求を受けた場合は、S1004にてJPEG伸張ソフトウェア308に対して解析伸張要求を行い、応答が戻るまで待つ。一方、通常の伸張要求がなされた場合は、S1003にてJPEG伸張ソフトウェア308に対して、伸張要求を行い、応答が戻るまで待つ。JPEG伸張ソフトウェア308は、JPEG伸張入力バッファのデータを順次解析伸張処理または伸張処理を行い、JPEG伸張入力バッファ上のデータが尽きると、継続処理に必要な入力データを呼び出し元に要求する。一方JPEG伸張入力バッファ上のデータが尽きることなく処理が完結した場合は完了を呼び出し元に通知する。
【0047】
なお、本実施形態においては、これまで説明した中で、JPEG伸張ソフトウェア308を使用するケースはサムネイル画像の伸張処理のみである。サムネイル画像の圧縮データはJPEG伸張入力バッファに全て読み込み済みの状態で要求がかけられるため、入力データを呼び出しもとに要求することは無い。
【0048】
JPEG伸張ソフトウェア308からの応答があった場合、S1005が実行される。S1005では、JPEG伸張ソフトウェア308からの応答が入力データ要求であるか、処理完了であるかを判断し、入力データ要求があった場合は、S1006を実行する。S1006ではJPEG伸張ソフトウェア308から指定された継続処理に必要な入力データを、カードインターフェース102から読み出し、JPEG伸張入力バッファに格納する。一方S1005にて、JPEG伸張ソフトウェア308からの応答が処理完了であった場合は処理を終了し、呼び出し元に終了を通知する。
【0049】
続いて、ハードウェア実行するよう指示されている場合の処理についてS1007から説明する。S1007では、ハードウェア資源が解放されているか否かを判定する。ハードウェア資源が解放されていない場合はハードウェア資源が解放されるまで待ち続ける。一方ハードウェア資源が解放されている場合は、S1008にてハードウェア資源の獲得を行う。S1008にてハードウェア資源の獲得後、解放するまでの間は、別なるハード伸張要求を受け付けた場合であっても、S1007にて解放を待ち続けることになる。次にS1009にて解析伸張要求を受けたか、伸張要求を受けたかを判定する。
【0050】
解析伸張要求を受けた場合は、S1011にて、JPEG伸張ハードウェア203に対して、解析伸張要求を行い、応答が戻るまで待つ。一方、通常の伸張要求がなされた場合は、S1010にて、JPEG伸張ハードウェア203に対して、伸張要求を行い、応答が戻るまで待つ。JPEG伸張ハードウェア203は、JPEG伸張入力バッファのデータを順次解析伸張処理または伸張処理を行い、JPEG伸張入力バッファ上のデータが尽きると、継続処理に必要な入力データを呼び出し元に要求する。一方JPEG伸張入力バッファ上のデータが尽きることなく処理が完結した場合は完了を呼び出し元に通知する。
【0051】
JPEG伸張ハードウェア203からの応答があった場合、S1012が実行される。S1012では、JPEG伸張ハードウェア203からの応答が入力データ要求であるか、処理完了であるかを判断し、入力データ要求があった場合は、S1013を実行する。S1013ではJPEG伸張ハードウェア203から指定された継続処理に必要な入力データを、カードインターフェース102から読み出し、JPEG伸張入力バッファに格納する。一方S1012にて、JPEG伸張ハードウェア203からの応答が処理完了であった場合はS1014にてハードウェア資源の解放を行った後に処理を終了し、呼び出し元に終了を通知する。
【0052】
JPEG処理部305を以上のような構成としたことで、ハードウェアによる処理要求であっても、ソフトウェアによる処理要求であっても、適切に処理を切り分けて実行することが可能となる。また、ハードウェアの資源管理を適切に行っているため、JPEG伸張ハードウェア203は常に1つの処理要求を満たす機能を持つだけでよい。
【0053】
次に、本実施形態の処理による処理効率について説明する。
【0054】
JPEG伸張ハードウェア203の伸張処理または解析伸張処理の処理能力(処理速度)は、圧縮画像データのサイズが50KByteにつき、0.01秒かかるものとする。また、JPEG伸張ソフトウェア308の処理能力は、JPEG伸張ハードウェアの1/10程度の処理能力であり、圧縮画像データのサイズが50KByteにつき、0.1秒かかるものとする。
【0055】
図8は、JPEG伸張ハードウェア、JPEG伸張ソフトウェア、各ジョブの処理にかかる時間を示すタイミングチャート図を示したもので、本実施形態の制御によるものとそれ以外のものとを示す図である。図8(a)は、常にJPEG伸張ハードウェアを使用するよう制御した場合の挙動を示す。図8(b)は、上述した本実施形態の制御による挙動を示す。また、これらは、印刷ジョブ制御部302が画像ID=2に対するJPEG解析伸張要求を行った直後に、表示ジョブ制御部303が画像ID=3に対するサムネイル画像のJPEG伸張要求を行った場合の状況を示している。
【0056】
なお、画像ID=2の主画像データのサイズを5MByte、画像ID=3のサムネイル画像データのサイズを50KByte、主画像データのサイズを5Mbyteとする。T1101からT1105までは、それぞれ、後述するイベントが発生した時刻を表す。また、図8(a)、(b)ともに同一の時刻となるものには同一の符号を付した。
【0057】
T1101は印刷ジョブにおける、画像ID=2の主画像をJPEG解析伸張要求した時刻を表す。T1102は表示ジョブにおける、画像ID=3のサムネイル画像をJPEG伸張要求した時刻を表す。T1103は、画像ID=2の主画像をJPEG解析伸張要求に対する処理が終了した時刻を表す。
【0058】
図8(a)においては、表示ジョブ制御部によるJPEG伸張要求を受けた時点でハードウェアが解放されていないため、ハードウェアが解放されるまで、すなわちT1103の時刻になるまで、待ち続けることになる。画像ID=2の主画像サイズが5Mbyteで、画像伸張ハードウェアの処理能力が50KByteにつき、0.01秒であるため、最悪の場合1秒程度表示ジョブのJPEG伸張が待たされることになる。その後、JPEG伸張ハードウェアの解放を検出し、即座に画像伸張を行い、T1104の時刻にて、伸張処理が終了する。T1103からT1104までにかかる時間はおおよそ0.01秒と高速であるが、その前段である解放待ち時間により、表示要求にかかる処理は1秒以上かかってしまうことになる。
【0059】
一方、図8(b)においては、表示ジョブ制御部によるJPEG伸張要求を受けた時点で、即座にサムネイル画像のソフトウェア伸張要求を行うよう制御を行う。そのため、JPEG伸張ハードウェアの解放状況に左右されること無く表示処理が行われ、T1105に示す時刻に伸張処理が終了する。画像ID=3のサムネイルサイズが50Kbyteで、画像伸張ソフトウェアの処理能力が50KByteにつき、0.1秒であるため、T1102からT1105にかかる時間は、0.1秒程度となる。ハードウェアを使用した場合と比べると処理自体は低速ではあるが、サムネイル画像のデータサイズは小さいためユーザにストレスを与えることなく表示のための画像伸張が可能となる。
【0060】
図9は、JPEG伸張ハードウェア、JPEG伸張ソフトウェア、印刷ジョブの処理にかかる時間を示すタイミングチャート図を示したもので、本実施形態の制御によるものとそれ以外のものとを示す図である。図9(a)は、本実施形態のような制御を行うことなく、用途に応じて固定的にハードウェア処理とソフトウェア処理を使い分けたり、ハードウェアの解放状況を確認してソフトウェア処理を実行する場合の挙動を示す。図9(b)は、上述した本実施形態の制御による挙動を示す。また、図9は、図8と異なり、印刷ジョブ制御部302が画像ID=2に対するJPEG解析伸張要求を行った直後に、表示ジョブ制御部303が画像ID=3に対する主画像のJPEG伸張要求を行った場合の状況している。T1201からT1205までは、それぞれ、後述するイベントが発生した時刻を表す。画像ID=2の主画像をJPEG解析伸張要求した時刻を表す。T1202は表示ジョブにおける、画像ID=3の主画像をJPEG伸張要求した時刻を表す。T1203は、画像ID=2の主画像をJPEG解析伸張要求に対する処理が終了した時刻を表す。
【0061】
図9(a)においては、表示ジョブ制御部によるJPEG伸張要求を受けた時点でハードウェアが解放されていないため、ソフトウェアにて実行するように制御される。あるいは、表示目的ではソフトウェアを使うように予め定められてしまう。いずれにせよ、表示ジョブ制御部によるJPEG伸張要求を受けた時点で、即座に主画像のソフトウェア伸張要求を行うよう制御を行う。そして、T1204の時刻にソフト処理が終了することになる。T1202からT1204までの時間は、処理能力からおおよそ10秒程度かかることになる。仮に画像ID=3にサムネイルが付加されていないと、ユーザは選択する画像が閲覧できず、非常なストレスとなる。
【0062】
一方、図9(b)においては、ハードウェアの解放を待った後に、ハードウェアによる処理が実行される。そのため、最悪の場合でも、1202からT1203の間即ち1秒程度待ったのちに、伸張処理を開始する。その後、伸張処理が終了する時刻T1205に終了する。T1203から、T1205までの時間はおよそ1秒程度であるため、ハードの解放待ち時間を含めても2秒程度で、表示に係る伸張処理が終了する。図9(a)の10秒と比較して、ユーザのストレスは著しく軽減する。
【0063】
次に、JPEG伸張をソフトウェア処理で実行するか、ハードウェア処理で実行するかを判断する処理について、上述の例(図5等)とは異なる方法で行う例について説明する。図10はこの場合の処理の流れを示すフローチャートである。本フローチャートの処理は、図4のS609から呼び出されて実行される。図10では、S1301において、処理対象の画像データのサイズと所定の閾値とを比較し、閾値以下であればソフトウェア処理を選択し、閾値より大きければハードウェア処理を選択する。これ以降は上述のとおり選択された処理を実行する。
【0064】
この閾値は、例えばユーザがストレスを感じない時間とソフトウェア処理の処理能力の処理能力に基づき決定すればよい。例えば、ソフトウェアによる処理であっても、ユーザが体感上、ストレスを感じ得ない速度が0.5秒であるとし、JPEG伸張ソフトウェア308の処理能力が圧縮画像データのサイズが50KByteにつき0.1秒かかる場合、閾値は250KByteとなる。
【0065】
図10の処理では、JPEG伸張処理の対象となる画像データのサイズが250KByte以下であれば、即座にJPEG伸張ソフトウェア308にて実行される。そのため、ハードウェアの占有状況にかかわらず、ユーザにストレスを与えないことが分かっている0.5秒以内に伸張処理が終了することになる。
【0066】
また、250KByteより大きいサイズであれば、JPEG伸張ハードウェア203にて実行される。そのため、JPEG伸張ハードウェア203が解放される時間が加算されるものの、巨大なデータをJPEG伸張ソフトウェア308にて実行することを防ぐことが可能となる。
【0067】
即ち、図5の例では処理対象の画像がサムネイル画像であるか否かに応じて処理方法を切り替えていたが、図10の例ではサムネイル画像でなくともサイズの小さい画像であればソフトウェアによる処理を行わせる。従って、図5の例よりも伸張処理に関しては処理効率の向上が図れる。
【0068】
なお、上述の閾値の算出では、単純にJPEG伸張ソフトウェア308の処理能力が常に100%発揮できるものとして求めたが、所定の値を加減乗除しても良い。例えば、JPEG伸張ソフトウェアを実行するCPU200の競合状況を考慮に入れる方法が考えられる。同時に印刷ジョブと表示ジョブが実行されることから、CPU200が表示ジョブに割り当てられる時間が半分になるような構成であれば、250KByteに1/2を積算した125KByteを閾値とする方法が考えられる。
【0069】
次に、JPEG伸張をソフトウェア処理で実行するか、ハードウェア処理で実行するかを判断する処理について、さらに異なる方法で行う例について説明する。図11はこの場合の処理の流れを示すフローチャートである。本フローチャートの処理は、図4のS609から呼び出されて実行される。
【0070】
図11の例では、まず、S1401にて、占有されているハードウェアの残り占有時間の予測値を取得する。ここでは、占有時間の予測値は印刷ジョブによって占有されているハードウェアの未処理データサイズから求めるものとする。なお、JPEG伸張ソフトウェア308及び、JPEG伸張ハードウェア203の処理能力は、例えば上述のものと同様とする。例えば、JPEG伸張ハードウェア203が、5MByteのデータのうち、3MByteのデータの処理が終了しているとすると、残りサイズ2MByteのデータを処理するために必要な時間は0.4秒でとなる。また、ハードが占有されていない場合は0秒となる。
【0071】
次に、S1402にて、S1403で用いる閾値を求める。この閾値は、例えばこれから処理対象の画像データのサイズから求めたJPEG伸張ハードウェア203による伸張処理時間の予測値、S1401で取得したJPEG伸張ハードウェア203の解放までに要する時間の予測値の合計から求めればよい。例えば100KByteのデータを伸張する場合は、JPEG伸張ハードウェア203の処理能力から、0.02秒となる。つまり、ハードウェアの解放待ち時間0.4秒とハードウェアによる実行時間0.02秒を加算した0.42秒がJPEG伸張ハードウェア203を用いた場合の処理にかかる時間となる。JPEG伸張ソフトウェア308は、その処理能力から、0.42秒の間に210KByteの処理が可能であるため、210Kbyteを閾値とする。
【0072】
そしてS1403では、入力データのサイズとS1402で求めた閾値を比較して、閾値以下であれば、ソフトウェア処理を選択し、閾値より大きければ、ハードウェア処理を選択する。以降は上述のとおり選択された処理を実行する。
【0073】
以上のように図11の例では、JPEG伸張ハードウェア203が解放される時間を考慮してソフトウェア処理とハードウェア処理のいずれとするかを決定する。従って、処理が滞る時間を短縮し、状況に応じてより効率的にソフトウェアとハードウェアの使い分けが可能となる。なお、ここでは、閾値を求めるにあたり、占有されているハードウェアの残り占有時間のみを考慮したが、画像データの読み込みにかかる時間等を加算してもよい。図10で示すとおり、S1013による画像データの読み込みはハードウェア資源の獲得中に行われており、画像データの読み込み時間は、ハード占有時間に加算されてしまう。ハード占有中のジョブが、そのため画像データが全て読み込めていない場合は、未読み込みデータサイズとファイル読み込み能力から、未読み込みデータの読み込みに要する時間を求め、閾値算出に用いる方法が考えられる。この場合、未読み込みデータの読み込みに要する時間を、S1401で求めた占有中ハードの残り占有時間に加算すればよい。また、例えばハードウェアの処理時間が十分に高速であり、画像データの読み込みにかかる時間のみが問題となる場合などは、ハード占有中のジョブの未読み込みデータサイズのみを用いてもよい。さらに、より簡易な構成とするために、未読み込みデータの有り無し判定のみで、ハードウェアとソフトウェアの切り替えを行ってもよい。例えば、ハードウェア占有中のジョブが未読み込みデータを有する場合は、ソフトウェア処理を実行するという方法でも、十分に効果は得られる。
【0074】
なお、以上のようにJPEG伸張をソフトウェア処理とするかハードウェア処理とするかを決定する方法として、図5、10、11の例を挙げたが、これらは適宜組合せてもよい。即ち、例えば図5と図10を組合せて、まず処理対象の画像データがサムネイル画像かどうかを判定し(S701)、サムネイル画像であればS702に進み、サムネイル画像でなければS1301に進む。そしてS1301において画像データのサイズを判定し、その結果に従ってS1302またはS1303に進む。また、図5と図11を組合せて、S701でサムネイル画像でなかったと判定された場合にS1401に進み、同様の処理を行う。また、図5、10、11を組合せてもよい。即ち、S701でサムネイル画像でなかったと判定された場合にS1301に進み、処理対象の画像データのサイズを第1の閾値と比較し、大きいと判定された場合にS1401に進み、S1402で算出される第2の閾値と比較して同様の処理を行う。また、これら以外にも種々の条件を加えたり、変更したりしてハードウェア処理とソフトウェア処理とを使い分けるようにしてもよい。また、JPEG伸張されたデータは、画像の表示や印刷には限らず、種々の処理にも適用可能である。
【0075】
また、以上の説明において、JPEG伸張処理に対してソフトウェア処理とハードウェア処理を使い分ける例を示したが、その他の画像処理に対して、適用しても効果がある。例えば、変倍処理や色変換処理を実行するハードウェアを持つ構成であれば、これらの画像処理のソフトウェアとハードウェアの実行を切り替えるものに適用してもよい。
【0076】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能(処理対象のデータをハードウェア処理とするかソフトウェア処理とするかを決定するための処理)を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行することによって実現可能である。また、このプログラムは、1つのコンピュータで実行させても、複数のコンピュータが連動して実行するようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。
【技術分野】
【0001】
本発明は、ハードウェア処理による画像処理手段とソフトウェア処理による画像処理手段とを有する画像処理装置及びその制御方法に関する。
【背景技術】
【0002】
従来、画像データを処理する際、ハードウェア処理による画像処理手段とソフトウェア処理による画像処理手段とを適宜使い分けるものが知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−78769号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載のものは、用途に応じてハードウェア処理とソフトウェア処理とを固定的に使い分けるものである。画像データの処理に際しては、状況によってはハードウェア処理可能となるまで待つよりも、ソフトウェア処理行った方が結果的に早く処理を終えられる場合がある。しかしながら、従来、固定的にハードウェア処理とソフトウェア処理とを使い分けるものであったため、処理速度としては必ずしも効率的であったとは言えないものであった。
【0005】
本発明は、以上の点に鑑みなされたものであり、ハードウェア処理による画像処理手段とソフトウェア処理による画像処理手段とを効率的に使い分けることが可能な画像処理装置、その制御方法並びにプログラムを提供するものである。
【課題を解決するための手段】
【0006】
上記問題点を解決するため、本発明の画像処理装置は、画像データをハードウェア処理によって画像処理する第1の画像処理手段と、画像データをソフトウェア処理によって画像処理する第2の画像処理手段と、処理対象の画像データの処理内容を判定する第1の判定手段と、処理対象の画像データの内容を判定する第2の判定手段と、前記第1の判定手段及び前記第2の判定手段の判定結果に基づき、処理対象の画像データを前記第1の画像処理手段で処理させるか前記第2の画像処理手段で処理させるかを決定する決定手段とを有する。
【発明の効果】
【0007】
本発明によれば、画像データの処理内容と、処理対象の画像データの内容とに基づいてハードウェア処理とするか、ソフトウェア処理とするかを決定するので、それぞれを効率的に使い分けることが可能となる。
【図面の簡単な説明】
【0008】
【図1】実施形態の画像処理装置の構成を示すブロック図である。
【図2】画像処理装置のプログラムの構成を示す図である。
【図3】画像処理装置による処理の流れを示すフローチャートである。
【図4】画像処理装置による処理の流れを示すフローチャートである。
【図5】画像処理装置による処理の流れを示すフローチャートである。
【図6】画像処理装置による処理の流れを示すフローチャートである。
【図7】画像処理装置による処理の流れを示すフローチャートである。
【図8】本実施形態の処理を行った場合と行わなかった場合との処理速度を示す図である。
【図9】本実施形態の処理を行った場合と行わなかった場合との処理速度を示す図である。
【図10】画像処理装置による処理の流れを示すフローチャートである。
【図11】画像処理装置による処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明を実施するための形態について図面を用いて説明する。
【0010】
図1は、本実施形態における画像処理装置の構成を示すブロック図である。
【0011】
図1において、操作部101はハードキーやソフトキーを含み、ユーザによる各種操作を受け付ける。カードインターフェース102はメモリカードをセット可能であり、セットされたメモリカードに記憶されている画像データを操作部101からの指示に従って入力可能である。読取部103はCCDを備え、このCCDは、原稿画像を読み取り、赤(R)、緑(G)および青(B)色のアナログ輝度データを出力する。印刷部104は入力された画像データに応じて記録シート上にインク、トナー等の記録剤を付与して画像をプリントする。
【0012】
CPU200はROM201に記憶されている制御命令プログラムや画像処理プログラム等をRAM202にロードし、それを実行することによって画像処理装置の動作を制御する。JPEG伸張ハードウェア203はJPEG圧縮された画像データを伸張処理することができるハードウェアモジュールである。JPEG伸張ハードウェア203は、JPEG圧縮されたデータの検索、伸張や回転に必要な情報の収集などを行い、画像データを90度単位で回転して伸張することも可能である。表示部204は操作部101の操作状態、画像処理装置の各種状態などユーザに通知すべき種々の情報を表示可能である。
【0013】
図2は、図1に示した各構成とROM201に格納されているプログラムで実行される処理との関係を模式的に表した図である。
【0014】
アプリケーション制御部301は、操作部101を介して入力されたユーザの指示に応じてジョブを発行する制御プログラムである。印刷ジョブ制御部302は、生成された画像データを印刷部104に印刷させるための処理を制御する制御プログラムである。表示ジョブ制御部303は、生成された画像データを表示部204に表示させるための処理を制御する制御プログラムである。量子化処理部304は、画像データを、印刷部104で印刷する形態に適した形にハーフトーン処理を行う画像処理プログラムである。JPEG処理部305は、JPEG伸張ハードウェア203及びJPEG伸張ソフトウェア308を制御する画像処理制御プログラムである。色変換処理部306は、画像データの色変換を行う画像処理プログラムである。変倍処理部307は、画像データの変倍を行う画像処理プログラムである。JPEG伸張ソフトウェア308は、JPEG画像中の圧縮データを伸張する機能をそなえた画像処理プログラムである。また、JPEG伸張ソフトウェア308は、JPEG画像中の圧縮データを全て検索し、回転伸張に必要な情報を収集するJPEG解析伸張機能も有する。JPEG伸張ソフトウェア308は、同JPEG伸張ソフトウェア308にて、JPEG解析伸張機能を実行した後であれば、画像データを90度回転して伸張することが可能である。JPEG解析伸張機能とは、JPEG画像中の圧縮データを全て検索し、回転伸張に必要な情報を収集する機能である。JPEG処理部305、色変換処理部306、変倍処理部307は印刷ジョブ制御部からも、表示ジョブ制御部からも呼び出し可能なように共通化されている。なお、図示を省略したがアプリケーション制御部301、印刷ジョブ制御部302、表示ジョブ制御部303、JPEG処理部305は、カードインターフェース102を介して画像ファイルの読み出しが可能な構成とする。
【0015】
CPU200が画像処理装置を制御する際は、図2に示したプログラム群の全てまたは一部をRAM202にロードし、それを実行することによってなされる。以降で示すフローチャートはこのプログラムに基づく処理の流れを示す。
【0016】
図3は、メモリカードからの印刷アプリケーションを制御する際のアプリケーション制御部301による処理の流れを示す。
【0017】
まず、S401にてカードインターフェース102を介してメモリカードにアクセスし、保存されているJPEG画像ファイルの検索を行い、画像ファイルごとに画像IDを生成し画像ファイル名を付加したファイルリストを生成する。本実施形態においては、画像ファイルの検索がなされると、各画像ファイルに対して画像ID(1〜N)を割り当て、それと画像ファイルのファイル名とを対応付けたファイルリストを生成しRAM202上に記憶する。なお、本実施形態で扱う画像ファイルはデジタルスチルカメラで撮影した際の種々の情報を含むExif形式のJPEGファイルとする。
【0018】
次にS402にて画像ID=1の画像に対する表示ジョブを表示ジョブ制御部303に発行する。その後操作部101を介してのユーザ指示を受け取るべく、S403、S404の判断を繰り返す。S403では、ユーザによって、現在表示中あるいは表示処理中の画像データの次なる画像の閲覧指示が行われたか否かを確認する。ユーザによって次なる画像の閲覧指示が検出された場合は、S402にて、ファイルリスト上で次なる画像である、画像ID=2の画像に対する表示ジョブを、表示ジョブ制御部303に発行し、再度S403、S404の指示待ちを行う。S403にて次なる画像の閲覧指示が検出されなかった場合は、S404にてユーザによって印刷画像の指定が行われたか否かを検出する。ユーザによって、印刷画像の指定が行われた場合は、現在表示中あるいは表示処理中の画像ID=2の画像を印刷対象として確定しS404を実行する。
【0019】
そしてS405にて、ユーザによる印刷設定の指示を受け付ける。本実施形態では、印刷部数が設定できるものとする。以降、S405にて、印刷部数を3部と設定された場合の処理について説明する。次にS406にて、印刷ジョブ制御部に対して、画像ID=2の画像を3部印刷するよう、印刷ジョブを発行する。さらに、ユーザが別なる画像の印刷指示を予約する、予約指示があるか否かを確認するとともに、実行中あるいは予約済みの印刷ジョブ終了を検出するために、S407、S408を繰り返す。S407にて予約指示がないと判断されると、S408を実行する。S408では、現在実行中あるいは予約済みの印刷ジョブが存在する場合は、処理S407を実行する。次に処理S407にて予約指示を検出した場合は、処理S403を実行する。この段階で、表示部204には最後に表示ジョブを発行した画像ID=2の画像データ、あるいは画像ID=2が表示処理中であることを示す画面が表示されている。次に、処理S403にて、次なる画像データの閲覧指示を検出した場合は、S402にて、ファイルリスト上で次なる画像である、画像ID=3の画像に対する表示ジョブを、表示ジョブ制御部303に発行し、再度S403、S404の指示待ちを行う。以降、S405にて、ユーザが画像ID=3の画像を印刷対象として指定し、S405にて2部印刷するよう設定された場合は、S406にて、印刷ジョブ制御部に対して、画像ID=3の画像を2部印刷するよう、印刷ジョブを発行する。その後ユーザから予約指示がなければ、S407とS408が繰り返されることになる。これまで印刷ジョブが発行された画像ID=2を3部印刷し、画像ID=3を2部印刷が終了した段階で、S408にて全印刷ジョブ終了を検出し、S403を実行する。この段階で、表示部204には最後に表示ジョブを発行した画像ID=3の画像データ、あるいは画像ID=3の画像データが表示処理中であることを示す画面が表示されている。アプリケーション制御部301の制御を以上のような構成とした場合、ユーザは画像が印刷中であっても、異なる画像の印刷を予約指示することが可能となる。
【0020】
図4は、図3におけるS402にて発行された表示ジョブを受け付けた表示ジョブ制御部303の処理の流れを示したフローチャートである。ここでは、初めに画像ID=1に対する表示ジョブを受け付けた後に、画像ID=2に対する画像表示ジョブを受け付け、最後に画像ID=3に対する表示ジョブを受け付ける場合の例を示す。
【0021】
S601では現在実行中の表示ジョブがあるか否かを判断する。初回の要求である、画像ID=1の実行中に実行中のその他の表示ジョブは存在しないので、S603以降の処理を順次実行する。S603にて表示部204に画像表示処理中であることを示す画面を表示させる。本実施例では、この画面中に画像ID=1の画像ファイル名を表示することとする。次にS604以降の処理を実行することになるが、以降の処理実行中に次なる画像ID=2の画像表示ジョブを受け付けた場合、S601で実行中の表示ジョブが存在すると判断され、S602を実行する。S602では、画像ID=1の画像表示ジョブを直ちに終了するよう制御を行う。以降は画像ID=2に対するジョブを受け付けたものとして、説明する。
【0022】
次にS603にて画像ID=2の画像ファイル名を表示し、処理S604を実行する。S604では、画像ID=2に対応する画像データのヘッダ部分をカードインターフェース102から、RAM202の所定領域に読み込みを行う。S605では、画像ID=2に対応する画像データのヘッダ部分の解析を行い、JPEG伸張に必要な画像サイズ、量子化テーブルなどといった情報を収集する。また、デジタルスチルカメラで撮影された画像JPEG画像の多くは、画像ファイル中のヘッダ内部にJPEG圧縮されたサムネイル画像データが存在している。そのためS605では、画像ファイル中にサムネイル画像が付加されているか否かも検出し、サムネイルが付加されている場合はサムネイル伸張に必要な、情報も収集する。なお、ここでは画像ID=2の画像ファイルにはサムネイル画像が付加されているものとする。
【0023】
S606では、S605で検出したサムネイルの有無を判断材料として、次なる処理を切りかえる。サムネイルが付加されていない画像ファイルであれば、S607が実行されるが、画像ID=2はサムネイルが有りと判断されるため、S608を実行する。S608では、RAM202中にJPEG伸張入力バッファを確保し、カードインターフェース102から、画像ID=2のファイル中にあるサムネイル画像を読み出しJPEG伸張入力バッファに保存する。さらにサムネイル画像を読み出したことを記憶しておく。なお、JPEG伸張入力バッファは少なくとも圧縮されたサムネイル画像が全て格納可能な領域を確保するものとする。次にS609では、JPEG伸張をソフトウェアで実行するか、ハードウェアで実行するかを判断する。
【0024】
図5は、入力されたJPEG画像の伸張をソフトウェア処理により実行するか、ハードウェア処理により実行するかを判断する処理の流れを示すフローチャートである。
【0025】
S701では、図4における、S608にてサムネイル画像がJPEG伸張入力バッファに記憶されているか否かを示す情報を参照し、サムネイルが記憶されている場合は、S703を実行する。S703ではソフト伸張処理が選択される。即ち、処理対象の画像データがサムネイル画像でありそのサイズが小さい(大きくはない)ことがわかっているため、ソフトウェアにより処理を行うよう決定する。一方S701にて、主画像が記憶されている場合は、S702を実行する。S702ではハード伸張処理が選択される。即ち、処理対象の画像データがサムネイル画像ではない場合、画像データのサイズが大きい可能性が高いためハードウェアにより処理を行う。このように画像データの処理内容が表示である場合、処理対象の画像データの内容を判定し、その判定結果に従ってハードウェア処理するかソフトウェア処理するかを決定する。今回は、処理S608にて、画像ID=2のファイル中にあるサムネイル画像を取り込んでいるため、S609ではソフトウェア実行が選択されることになる。
【0026】
続いて、S610ではS609にて、ソフトウェアによる実行が選択されているため、ソフトウェアによる処理を実行すべくS611が実行されるよう制御を行う。S611では、JPEG処理部305に対して、JPEG伸張ソフトウェア308にてJPEG伸張を行うよう要求を行い、要求が完了するのを待つ。なお伸張後の画像サイズによっては伸張後の画像データを全面保存できるだけの領域確保が困難なケースも想定されるため、本実施形態では、伸張後の画像データが保存可能なライン数N単位で、処理要求を行うものとする。
【0027】
次にS613で、表示部204における画像表示領域のサイズ及び解像度に適したサイズに画像データの拡大もしくは縮小を行う。さらに、S614では、表示部204に適した形式に色変換を色変換処理部306にて行う。色変換処理部306では、例えば、マトリクス演算や、テーブル参照を用いて、表示部のデバイス色空間への変換を行う。
【0028】
続いてS615にて、今回選択された画像データ(画像ID=2のサムネイル画像)の全面が処理済みか否かを判断し、未処理データが残っている場合は、S610、S611、S613、S614、S615を順次実行する。
【0029】
以上のように画像処理を繰り返し実行した結果、S615にて、画像データの全面が処理済みであると判断されるとS616が実行される。S616では画像処理済みの画像データを表示部204に転送し、画像処理済の画像データが表示部204に表示されることになる。
【0030】
続いて、S617では今回表示した画像がサムネイル画像か否かを判断する。今回表示された画像データは、画像ID=2のサムネイル画像であるため、次にS607を実行するよう制御を行う。S607では、RAM202中にJPEG伸張入力バッファを確保し、カードインターフェース102から、画像ID=2のファイル中にある主画像データを読み出し、JPEG伸張入力バッファに保存する。なお、JPEG伸張入力バッファが確保可能なサイズよりも主画像データのサイズが大きい場合は、主画像データの先頭から、JPEG伸張入力バッファのサイズまでを読み込むものとする。
【0031】
次に、S604では図5におけるS701で主画像の伸張を行うと判断されるためハードウェアによる実行が選択される。続いて、S610ではS609にて、ハードウェアによる実行が選択されているため、ハードウェアによる処理を実行すべく、S612が実行されるよう制御する。S612では、JPEG処理部305に対して、JPEG伸張ハードウェア203を用いて伸張後の画像データ保存領域に収まるライン数NのJPEG伸張を行うよう要求を行い、要求が完了するのを待つ。以降、サムネイル画像表示時と同様に、S613、S614、S615を実行し主画像データに対して、全面画像処理が終了するまで、一連の画像処理を繰り返し実行する。
【0032】
S616では画像処理済みの画像データを表示部204に転送し、画像処理済の画像データが表示部204に表示されることになる。続いて、S617では今回表示した画像がサムネイル画像か否かを判断する。今回表示された画像データは、画像ID=2の主画像であるため、今回受け付けた画像ID=2に対する表示ジョブを終了する。
【0033】
以上の例では、画像ID=2の次に画像ID=3に対する表示ジョブを受け付けることになるが、以降の処理はこれまで画像ID=2を用いて説明したものと同じになる。表示ジョブ制御部303を以上のような構成としたことで、表示対象となる画像ファイルにサムネイルが含まれている場合は、一連の画像処理を終え、表示部204にサムネイル画像が一旦表示される。その後、主画像に対して一連の画像処理を実行し、主画像が表示されるよう切り替わる。主画像データの処理に時間がかかり、表示までの時間を要する場合であっても、サムネイル画像が高速に表示されれば、ユーザは印刷すべき画像を閲覧することが可能となる。また、ハードウェアによる処理と、ソフトウェアによる処理の切り替わりが、1つの画像内で発生することはないため、ハードウェアとソフトウェアの演算誤差があっても、表示画像に色むらは発生しない。
【0034】
図6は、図3におけるS406にて発行された印刷ジョブを受け付けた印刷ジョブ制御部302の処理の流れを示したフローチャートである。この例では、初めに画像ID=2に対する印刷ジョブを受け付けた後に、画像ID=3に対する印刷ジョブを受け付けるものとする。
【0035】
まず、S801では受け付けた印刷ジョブを一旦印刷ジョブキューに登録する。次に、S802では、現在実行中の印刷ジョブがあるか否かを判断する。初めに受け付けた画像ID=2に対する印刷ジョブが要求された時は、現在実行中の印刷ジョブが無いため、S803を実行するよう制御される。一方、画像ID=2に対する印刷ジョブの実行中に画像ID=3に対する印刷ジョブの実行要求を受け付けた場合は、S801にて印刷ジョブキューに登録した後、画像ID=2に対する印刷ジョブを継続実行するように制御を戻す。
【0036】
以降は画像ID=2に対する印刷ジョブが実行中であるとして説明する。次に、S803では印刷ジョブキューから最も古い印刷ジョブである、画像ID=2に対する印刷ジョブを取得し、印刷設定(ここでは部数=3部)を取得する。次に、S804では画像ID=2に対応する画像データのヘッダ部分をカードインターフェース102から、RAM202の所定領域に読み込む。さらに、S805画像ID=2に対応する画像データのヘッダ部分の解析を行い、JPEG伸張に必要な画像サイズ、量子化テーブルなどといった情報を収集する。なお、ここでは印刷ジョブでのヘッダ解析においては、サムネイル有無の判定を行わず、主画像の伸張に必要な情報のみを収集する。
【0037】
次に、S806では、RAM202中にJPEG伸張入力バッファを確保し、カードインターフェース102から、画像ID=2のファイル中にある主画像を読み出しJPEG伸張入力バッファに保存する。なお、JPEG伸張入力バッファが確保可能なサイズよりも主画像データのサイズが大きい場合は、主画像データの先頭から、JPEG伸張入力バッファのサイズまでを読み込むものとする。
【0038】
次に、JPEG画像の伸張処理に移るが、デジタルスチルカメラで撮影された画像データの多くはランドスケープ画像として横長の画像データとして保存されている。一方、本実施形態において印刷部104は、印刷の際、印刷用紙の長手方向に紙送りを行う。よって印刷対象の画像データを90度回転して伸張する必要がある。そこで、まずS807にて、JPEG処理部305に対して、JPEG伸張ハードウェア203でJPEG解析伸張を行うよう要求を行い、処理が終了するのを待つ。次に、S808にて、JPEG伸張ハードウェア203を用いて90度の回転と伸張とが行われた後のデータを出力するよう要求を行い、要求が完了するのを待つ。
【0039】
次にS809で、印刷用紙902のサイズ及び印刷部104の印刷解像度に適したサイズに画像データの拡大もしくは縮小を変倍処理部307にて行う。なお本実施形態において印刷部104は、16ライン単位に印刷処理を行うものとする。よって、S808では変倍処理部307が16ライン出力するために必要十分なライン数であるMライン単位で処理要求を行うものとし、変倍処理部307はS809においては、16ラインのデータを出力するものとする。さらに、S810では、印刷部104に適した色空間にすべく色変換を色変換処理部306にて行う。例えば、マトリクス演算や、テーブル参照を用いて、印刷部104のデバイス色空間への変換を行う。
【0040】
次に、S811では画像データを印刷部104に適したドットパタンに変換する量子化処理を行う。次に、S812では、S811で生成された16ライン分のドットデータを印刷するよう、印刷部104にデータ送信を行う。S813では、全画像データの印刷が終了したか否かを検出し、未印刷データが残っている場合は処理S808から、S812までの一連の処理を実行するよう判断する。全画像データの印刷が終了したら、S814にて全部数の印刷が終了したか否かの確認を行い、全部数の印刷が終わっている場合は、S804以降の処理を残り部数分実行するよう制御を行う。画像ID=2は3部印刷するよう求められているため、S804以降の処理を3度行うことで全部数の印刷が終了し、S815が実行される。
【0041】
S815では、印刷ジョブキューを参照し、印刷ジョブの有無を確認し、印刷ジョブが残っている場合は、S803以降の処理を印刷ジョブが無くなるまで続けるよう制御を行う。画像ID=2の印刷ジョブがS815に到達する以前に画像ID=3の印刷ジョブを受け付けている場合は、印刷ジョブキューに印刷ジョブが存在するため、S803が実行される。S803にて画像ID=3の印刷ジョブを印刷ジョブキューから取り出し、要求された2部の印刷が終了するまで、以降の処理を実行する。
【0042】
印刷ジョブ制御部302を以上のような構成としたことで、アプリケーション制御部301は、印刷ジョブ制御部302が実行中か否かにかかわらず、印刷ジョブを発行することが可能となる。印刷ジョブ制御部302は、実行中の印刷処理が終了すると即座に、印刷ジョブキューに蓄積されている印刷ジョブを取り出し、印刷を開始することが可能となる。また、ハードウェアによる処理と、ソフトウェアによる処理の切り替わりが、1つの画像内で発生することはないため、ハードウェアとソフトウェアの演算誤差があっても、印刷画像に色むらは発生しない。
【0043】
図7は、JPEG処理部305による処理の流れを示したフローチャートである。
【0044】
JPEG処理部305は、処理要求を受けた場合まず、その要求がハードウェアで実行するよう指示されているか、ソフトウェアで実行するよう指示されているかをS1001で判断する。ハードウェアで実行するよう指示されている場合は、ハードウェアにて処理を実行するべく、S1002以降の処理を実行するよう、制御を行う。ソフトウェアで実行するよう指示されている場合は、ソフトウェアにて処理を実行するべく、S1002以降の処理を実行するよう制御を行う。
【0045】
まず、ソフトウェアで実行するよう指示されている場合の処理についてS1002から説明する。上述した表示ジョブ制御部303の処理における、S606にてサムネイル有りと判定された場合にS611にてソフトJPEG伸張が要求された場合が該当する。
【0046】
ソフトウェアにてJPEG処理を実行する場合、S1002にて解析伸張要求を受けたか、伸張要求を受けたかを判定する。解析伸張要求を受けた場合は、S1004にてJPEG伸張ソフトウェア308に対して解析伸張要求を行い、応答が戻るまで待つ。一方、通常の伸張要求がなされた場合は、S1003にてJPEG伸張ソフトウェア308に対して、伸張要求を行い、応答が戻るまで待つ。JPEG伸張ソフトウェア308は、JPEG伸張入力バッファのデータを順次解析伸張処理または伸張処理を行い、JPEG伸張入力バッファ上のデータが尽きると、継続処理に必要な入力データを呼び出し元に要求する。一方JPEG伸張入力バッファ上のデータが尽きることなく処理が完結した場合は完了を呼び出し元に通知する。
【0047】
なお、本実施形態においては、これまで説明した中で、JPEG伸張ソフトウェア308を使用するケースはサムネイル画像の伸張処理のみである。サムネイル画像の圧縮データはJPEG伸張入力バッファに全て読み込み済みの状態で要求がかけられるため、入力データを呼び出しもとに要求することは無い。
【0048】
JPEG伸張ソフトウェア308からの応答があった場合、S1005が実行される。S1005では、JPEG伸張ソフトウェア308からの応答が入力データ要求であるか、処理完了であるかを判断し、入力データ要求があった場合は、S1006を実行する。S1006ではJPEG伸張ソフトウェア308から指定された継続処理に必要な入力データを、カードインターフェース102から読み出し、JPEG伸張入力バッファに格納する。一方S1005にて、JPEG伸張ソフトウェア308からの応答が処理完了であった場合は処理を終了し、呼び出し元に終了を通知する。
【0049】
続いて、ハードウェア実行するよう指示されている場合の処理についてS1007から説明する。S1007では、ハードウェア資源が解放されているか否かを判定する。ハードウェア資源が解放されていない場合はハードウェア資源が解放されるまで待ち続ける。一方ハードウェア資源が解放されている場合は、S1008にてハードウェア資源の獲得を行う。S1008にてハードウェア資源の獲得後、解放するまでの間は、別なるハード伸張要求を受け付けた場合であっても、S1007にて解放を待ち続けることになる。次にS1009にて解析伸張要求を受けたか、伸張要求を受けたかを判定する。
【0050】
解析伸張要求を受けた場合は、S1011にて、JPEG伸張ハードウェア203に対して、解析伸張要求を行い、応答が戻るまで待つ。一方、通常の伸張要求がなされた場合は、S1010にて、JPEG伸張ハードウェア203に対して、伸張要求を行い、応答が戻るまで待つ。JPEG伸張ハードウェア203は、JPEG伸張入力バッファのデータを順次解析伸張処理または伸張処理を行い、JPEG伸張入力バッファ上のデータが尽きると、継続処理に必要な入力データを呼び出し元に要求する。一方JPEG伸張入力バッファ上のデータが尽きることなく処理が完結した場合は完了を呼び出し元に通知する。
【0051】
JPEG伸張ハードウェア203からの応答があった場合、S1012が実行される。S1012では、JPEG伸張ハードウェア203からの応答が入力データ要求であるか、処理完了であるかを判断し、入力データ要求があった場合は、S1013を実行する。S1013ではJPEG伸張ハードウェア203から指定された継続処理に必要な入力データを、カードインターフェース102から読み出し、JPEG伸張入力バッファに格納する。一方S1012にて、JPEG伸張ハードウェア203からの応答が処理完了であった場合はS1014にてハードウェア資源の解放を行った後に処理を終了し、呼び出し元に終了を通知する。
【0052】
JPEG処理部305を以上のような構成としたことで、ハードウェアによる処理要求であっても、ソフトウェアによる処理要求であっても、適切に処理を切り分けて実行することが可能となる。また、ハードウェアの資源管理を適切に行っているため、JPEG伸張ハードウェア203は常に1つの処理要求を満たす機能を持つだけでよい。
【0053】
次に、本実施形態の処理による処理効率について説明する。
【0054】
JPEG伸張ハードウェア203の伸張処理または解析伸張処理の処理能力(処理速度)は、圧縮画像データのサイズが50KByteにつき、0.01秒かかるものとする。また、JPEG伸張ソフトウェア308の処理能力は、JPEG伸張ハードウェアの1/10程度の処理能力であり、圧縮画像データのサイズが50KByteにつき、0.1秒かかるものとする。
【0055】
図8は、JPEG伸張ハードウェア、JPEG伸張ソフトウェア、各ジョブの処理にかかる時間を示すタイミングチャート図を示したもので、本実施形態の制御によるものとそれ以外のものとを示す図である。図8(a)は、常にJPEG伸張ハードウェアを使用するよう制御した場合の挙動を示す。図8(b)は、上述した本実施形態の制御による挙動を示す。また、これらは、印刷ジョブ制御部302が画像ID=2に対するJPEG解析伸張要求を行った直後に、表示ジョブ制御部303が画像ID=3に対するサムネイル画像のJPEG伸張要求を行った場合の状況を示している。
【0056】
なお、画像ID=2の主画像データのサイズを5MByte、画像ID=3のサムネイル画像データのサイズを50KByte、主画像データのサイズを5Mbyteとする。T1101からT1105までは、それぞれ、後述するイベントが発生した時刻を表す。また、図8(a)、(b)ともに同一の時刻となるものには同一の符号を付した。
【0057】
T1101は印刷ジョブにおける、画像ID=2の主画像をJPEG解析伸張要求した時刻を表す。T1102は表示ジョブにおける、画像ID=3のサムネイル画像をJPEG伸張要求した時刻を表す。T1103は、画像ID=2の主画像をJPEG解析伸張要求に対する処理が終了した時刻を表す。
【0058】
図8(a)においては、表示ジョブ制御部によるJPEG伸張要求を受けた時点でハードウェアが解放されていないため、ハードウェアが解放されるまで、すなわちT1103の時刻になるまで、待ち続けることになる。画像ID=2の主画像サイズが5Mbyteで、画像伸張ハードウェアの処理能力が50KByteにつき、0.01秒であるため、最悪の場合1秒程度表示ジョブのJPEG伸張が待たされることになる。その後、JPEG伸張ハードウェアの解放を検出し、即座に画像伸張を行い、T1104の時刻にて、伸張処理が終了する。T1103からT1104までにかかる時間はおおよそ0.01秒と高速であるが、その前段である解放待ち時間により、表示要求にかかる処理は1秒以上かかってしまうことになる。
【0059】
一方、図8(b)においては、表示ジョブ制御部によるJPEG伸張要求を受けた時点で、即座にサムネイル画像のソフトウェア伸張要求を行うよう制御を行う。そのため、JPEG伸張ハードウェアの解放状況に左右されること無く表示処理が行われ、T1105に示す時刻に伸張処理が終了する。画像ID=3のサムネイルサイズが50Kbyteで、画像伸張ソフトウェアの処理能力が50KByteにつき、0.1秒であるため、T1102からT1105にかかる時間は、0.1秒程度となる。ハードウェアを使用した場合と比べると処理自体は低速ではあるが、サムネイル画像のデータサイズは小さいためユーザにストレスを与えることなく表示のための画像伸張が可能となる。
【0060】
図9は、JPEG伸張ハードウェア、JPEG伸張ソフトウェア、印刷ジョブの処理にかかる時間を示すタイミングチャート図を示したもので、本実施形態の制御によるものとそれ以外のものとを示す図である。図9(a)は、本実施形態のような制御を行うことなく、用途に応じて固定的にハードウェア処理とソフトウェア処理を使い分けたり、ハードウェアの解放状況を確認してソフトウェア処理を実行する場合の挙動を示す。図9(b)は、上述した本実施形態の制御による挙動を示す。また、図9は、図8と異なり、印刷ジョブ制御部302が画像ID=2に対するJPEG解析伸張要求を行った直後に、表示ジョブ制御部303が画像ID=3に対する主画像のJPEG伸張要求を行った場合の状況している。T1201からT1205までは、それぞれ、後述するイベントが発生した時刻を表す。画像ID=2の主画像をJPEG解析伸張要求した時刻を表す。T1202は表示ジョブにおける、画像ID=3の主画像をJPEG伸張要求した時刻を表す。T1203は、画像ID=2の主画像をJPEG解析伸張要求に対する処理が終了した時刻を表す。
【0061】
図9(a)においては、表示ジョブ制御部によるJPEG伸張要求を受けた時点でハードウェアが解放されていないため、ソフトウェアにて実行するように制御される。あるいは、表示目的ではソフトウェアを使うように予め定められてしまう。いずれにせよ、表示ジョブ制御部によるJPEG伸張要求を受けた時点で、即座に主画像のソフトウェア伸張要求を行うよう制御を行う。そして、T1204の時刻にソフト処理が終了することになる。T1202からT1204までの時間は、処理能力からおおよそ10秒程度かかることになる。仮に画像ID=3にサムネイルが付加されていないと、ユーザは選択する画像が閲覧できず、非常なストレスとなる。
【0062】
一方、図9(b)においては、ハードウェアの解放を待った後に、ハードウェアによる処理が実行される。そのため、最悪の場合でも、1202からT1203の間即ち1秒程度待ったのちに、伸張処理を開始する。その後、伸張処理が終了する時刻T1205に終了する。T1203から、T1205までの時間はおよそ1秒程度であるため、ハードの解放待ち時間を含めても2秒程度で、表示に係る伸張処理が終了する。図9(a)の10秒と比較して、ユーザのストレスは著しく軽減する。
【0063】
次に、JPEG伸張をソフトウェア処理で実行するか、ハードウェア処理で実行するかを判断する処理について、上述の例(図5等)とは異なる方法で行う例について説明する。図10はこの場合の処理の流れを示すフローチャートである。本フローチャートの処理は、図4のS609から呼び出されて実行される。図10では、S1301において、処理対象の画像データのサイズと所定の閾値とを比較し、閾値以下であればソフトウェア処理を選択し、閾値より大きければハードウェア処理を選択する。これ以降は上述のとおり選択された処理を実行する。
【0064】
この閾値は、例えばユーザがストレスを感じない時間とソフトウェア処理の処理能力の処理能力に基づき決定すればよい。例えば、ソフトウェアによる処理であっても、ユーザが体感上、ストレスを感じ得ない速度が0.5秒であるとし、JPEG伸張ソフトウェア308の処理能力が圧縮画像データのサイズが50KByteにつき0.1秒かかる場合、閾値は250KByteとなる。
【0065】
図10の処理では、JPEG伸張処理の対象となる画像データのサイズが250KByte以下であれば、即座にJPEG伸張ソフトウェア308にて実行される。そのため、ハードウェアの占有状況にかかわらず、ユーザにストレスを与えないことが分かっている0.5秒以内に伸張処理が終了することになる。
【0066】
また、250KByteより大きいサイズであれば、JPEG伸張ハードウェア203にて実行される。そのため、JPEG伸張ハードウェア203が解放される時間が加算されるものの、巨大なデータをJPEG伸張ソフトウェア308にて実行することを防ぐことが可能となる。
【0067】
即ち、図5の例では処理対象の画像がサムネイル画像であるか否かに応じて処理方法を切り替えていたが、図10の例ではサムネイル画像でなくともサイズの小さい画像であればソフトウェアによる処理を行わせる。従って、図5の例よりも伸張処理に関しては処理効率の向上が図れる。
【0068】
なお、上述の閾値の算出では、単純にJPEG伸張ソフトウェア308の処理能力が常に100%発揮できるものとして求めたが、所定の値を加減乗除しても良い。例えば、JPEG伸張ソフトウェアを実行するCPU200の競合状況を考慮に入れる方法が考えられる。同時に印刷ジョブと表示ジョブが実行されることから、CPU200が表示ジョブに割り当てられる時間が半分になるような構成であれば、250KByteに1/2を積算した125KByteを閾値とする方法が考えられる。
【0069】
次に、JPEG伸張をソフトウェア処理で実行するか、ハードウェア処理で実行するかを判断する処理について、さらに異なる方法で行う例について説明する。図11はこの場合の処理の流れを示すフローチャートである。本フローチャートの処理は、図4のS609から呼び出されて実行される。
【0070】
図11の例では、まず、S1401にて、占有されているハードウェアの残り占有時間の予測値を取得する。ここでは、占有時間の予測値は印刷ジョブによって占有されているハードウェアの未処理データサイズから求めるものとする。なお、JPEG伸張ソフトウェア308及び、JPEG伸張ハードウェア203の処理能力は、例えば上述のものと同様とする。例えば、JPEG伸張ハードウェア203が、5MByteのデータのうち、3MByteのデータの処理が終了しているとすると、残りサイズ2MByteのデータを処理するために必要な時間は0.4秒でとなる。また、ハードが占有されていない場合は0秒となる。
【0071】
次に、S1402にて、S1403で用いる閾値を求める。この閾値は、例えばこれから処理対象の画像データのサイズから求めたJPEG伸張ハードウェア203による伸張処理時間の予測値、S1401で取得したJPEG伸張ハードウェア203の解放までに要する時間の予測値の合計から求めればよい。例えば100KByteのデータを伸張する場合は、JPEG伸張ハードウェア203の処理能力から、0.02秒となる。つまり、ハードウェアの解放待ち時間0.4秒とハードウェアによる実行時間0.02秒を加算した0.42秒がJPEG伸張ハードウェア203を用いた場合の処理にかかる時間となる。JPEG伸張ソフトウェア308は、その処理能力から、0.42秒の間に210KByteの処理が可能であるため、210Kbyteを閾値とする。
【0072】
そしてS1403では、入力データのサイズとS1402で求めた閾値を比較して、閾値以下であれば、ソフトウェア処理を選択し、閾値より大きければ、ハードウェア処理を選択する。以降は上述のとおり選択された処理を実行する。
【0073】
以上のように図11の例では、JPEG伸張ハードウェア203が解放される時間を考慮してソフトウェア処理とハードウェア処理のいずれとするかを決定する。従って、処理が滞る時間を短縮し、状況に応じてより効率的にソフトウェアとハードウェアの使い分けが可能となる。なお、ここでは、閾値を求めるにあたり、占有されているハードウェアの残り占有時間のみを考慮したが、画像データの読み込みにかかる時間等を加算してもよい。図10で示すとおり、S1013による画像データの読み込みはハードウェア資源の獲得中に行われており、画像データの読み込み時間は、ハード占有時間に加算されてしまう。ハード占有中のジョブが、そのため画像データが全て読み込めていない場合は、未読み込みデータサイズとファイル読み込み能力から、未読み込みデータの読み込みに要する時間を求め、閾値算出に用いる方法が考えられる。この場合、未読み込みデータの読み込みに要する時間を、S1401で求めた占有中ハードの残り占有時間に加算すればよい。また、例えばハードウェアの処理時間が十分に高速であり、画像データの読み込みにかかる時間のみが問題となる場合などは、ハード占有中のジョブの未読み込みデータサイズのみを用いてもよい。さらに、より簡易な構成とするために、未読み込みデータの有り無し判定のみで、ハードウェアとソフトウェアの切り替えを行ってもよい。例えば、ハードウェア占有中のジョブが未読み込みデータを有する場合は、ソフトウェア処理を実行するという方法でも、十分に効果は得られる。
【0074】
なお、以上のようにJPEG伸張をソフトウェア処理とするかハードウェア処理とするかを決定する方法として、図5、10、11の例を挙げたが、これらは適宜組合せてもよい。即ち、例えば図5と図10を組合せて、まず処理対象の画像データがサムネイル画像かどうかを判定し(S701)、サムネイル画像であればS702に進み、サムネイル画像でなければS1301に進む。そしてS1301において画像データのサイズを判定し、その結果に従ってS1302またはS1303に進む。また、図5と図11を組合せて、S701でサムネイル画像でなかったと判定された場合にS1401に進み、同様の処理を行う。また、図5、10、11を組合せてもよい。即ち、S701でサムネイル画像でなかったと判定された場合にS1301に進み、処理対象の画像データのサイズを第1の閾値と比較し、大きいと判定された場合にS1401に進み、S1402で算出される第2の閾値と比較して同様の処理を行う。また、これら以外にも種々の条件を加えたり、変更したりしてハードウェア処理とソフトウェア処理とを使い分けるようにしてもよい。また、JPEG伸張されたデータは、画像の表示や印刷には限らず、種々の処理にも適用可能である。
【0075】
また、以上の説明において、JPEG伸張処理に対してソフトウェア処理とハードウェア処理を使い分ける例を示したが、その他の画像処理に対して、適用しても効果がある。例えば、変倍処理や色変換処理を実行するハードウェアを持つ構成であれば、これらの画像処理のソフトウェアとハードウェアの実行を切り替えるものに適用してもよい。
【0076】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能(処理対象のデータをハードウェア処理とするかソフトウェア処理とするかを決定するための処理)を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行することによって実現可能である。また、このプログラムは、1つのコンピュータで実行させても、複数のコンピュータが連動して実行するようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。
【特許請求の範囲】
【請求項1】
画像データをハードウェア処理によって画像処理する第1の画像処理手段と、
画像データをソフトウェア処理によって画像処理する第2の画像処理手段と、
処理対象の画像データの処理内容を判定する第1の判定手段と、
処理対象の画像データの内容を判定する第2の判定手段と、
前記第1の判定手段及び前記第2の判定手段の判定結果に基づき、処理対象の画像データを前記第1の画像処理手段で処理させるか前記第2の画像処理手段で処理させるかを決定する決定手段とを有することを特徴とする画像処理装置。
【請求項2】
前記決定手段は、前記第1の判定手段により処理内容が画像の表示であると判定され、前記第2の判定手段により処理対象の画像データがサムネイル画像であると判定された場合、処理対象の画像データを前記第2の画像処理手段で処理させるよう決定することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記決定手段は、前記第1の判定手段により処理内容が画像の印刷であると判定された場合、処理対象の画像データを前記第1の画像処理手段で処理させるよう決定することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記決定手段は、前記第2の判定手段により処理内容が画像データのサイズが所定のサイズより小さいと判定された場合、処理対象の画像データを前記第2の画像処理手段で処理させるよう決定することを特徴とする請求項1〜3のいずれか1項に記載の画像処理装置。
【請求項5】
前記第1の画像処理手段が解放されるまでの時間を判定する第3の判定手段を有し、前記決定手段は、前記第1の判定手段、第2の判定手段及び第3の判定手段の判定結果に基づき、処理対象の画像データを前記第1の画像処理手段で処理させるか前記第2の画像処理手段で処理させるかを決定することを特徴とする請求項1〜4のいずれか1項に記載の画像処理装置。
【請求項6】
画像データをハードウェア処理によって画像処理する第1の画像処理手段と画像データをソフトウェア処理によって画像処理する第2の画像処理手段とを有する画像処理装置の制御方法であって、
処理対象の画像データの処理内容を判定し、
処理対象の画像データの内容を判定し、
判定された処理対象の画像データの処理内容及び処理対象の画像データの内容に基づき、処理対象の画像データを前記第1の画像処理手段で処理させるか前記第2の画像処理手段で処理させるかを決定することを特徴とする画像処理装置の制御方法。
【請求項7】
請求項6に記載の画像処理装置の制御方法をコンピュータにより実現するためのプログラム。
【請求項1】
画像データをハードウェア処理によって画像処理する第1の画像処理手段と、
画像データをソフトウェア処理によって画像処理する第2の画像処理手段と、
処理対象の画像データの処理内容を判定する第1の判定手段と、
処理対象の画像データの内容を判定する第2の判定手段と、
前記第1の判定手段及び前記第2の判定手段の判定結果に基づき、処理対象の画像データを前記第1の画像処理手段で処理させるか前記第2の画像処理手段で処理させるかを決定する決定手段とを有することを特徴とする画像処理装置。
【請求項2】
前記決定手段は、前記第1の判定手段により処理内容が画像の表示であると判定され、前記第2の判定手段により処理対象の画像データがサムネイル画像であると判定された場合、処理対象の画像データを前記第2の画像処理手段で処理させるよう決定することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記決定手段は、前記第1の判定手段により処理内容が画像の印刷であると判定された場合、処理対象の画像データを前記第1の画像処理手段で処理させるよう決定することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記決定手段は、前記第2の判定手段により処理内容が画像データのサイズが所定のサイズより小さいと判定された場合、処理対象の画像データを前記第2の画像処理手段で処理させるよう決定することを特徴とする請求項1〜3のいずれか1項に記載の画像処理装置。
【請求項5】
前記第1の画像処理手段が解放されるまでの時間を判定する第3の判定手段を有し、前記決定手段は、前記第1の判定手段、第2の判定手段及び第3の判定手段の判定結果に基づき、処理対象の画像データを前記第1の画像処理手段で処理させるか前記第2の画像処理手段で処理させるかを決定することを特徴とする請求項1〜4のいずれか1項に記載の画像処理装置。
【請求項6】
画像データをハードウェア処理によって画像処理する第1の画像処理手段と画像データをソフトウェア処理によって画像処理する第2の画像処理手段とを有する画像処理装置の制御方法であって、
処理対象の画像データの処理内容を判定し、
処理対象の画像データの内容を判定し、
判定された処理対象の画像データの処理内容及び処理対象の画像データの内容に基づき、処理対象の画像データを前記第1の画像処理手段で処理させるか前記第2の画像処理手段で処理させるかを決定することを特徴とする画像処理装置の制御方法。
【請求項7】
請求項6に記載の画像処理装置の制御方法をコンピュータにより実現するためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−15652(P2012−15652A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−148206(P2010−148206)
【出願日】平成22年6月29日(2010.6.29)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願日】平成22年6月29日(2010.6.29)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]