(57)【要約】【課題】画像処理部の制御により画像処理を実行する構成において処理効率の低下を防ぐ画像処理装置を提供する。【解決手段】第１のパラメータセットと第２のパラメータセットを含むデータを処理する処理部と、第１のパラメータセットと第２のパラメータセットそれぞれに含まれる複数のパラメータをバッファメモリを介して順次、画像処理部に送信する送信部とを有する。処理部は、送信部の送信処理を、画像処理部の動作状態に応じて制御し、画像処理部が第１のパラメータセットに従って第１の画像処理を実行している間、送信部の第２のパラメータセットの送信処理を停止する。【選択図】図４
2018113658.tif 000002
【特許請求の範囲】
【請求項１】
複数のパラメータを含むパラメータセットに従って画像処理を実行する画像処理部を有する画像処理装置であって、
第１のパラメータセットと第２のパラメータセットを含むデータを処理する処理手段と、
前記第１のパラメータセットと前記第２のパラメータセットそれぞれに含まれる複数のパラメータをバッファメモリを介して順次、前記画像処理部に送信する送信手段と、を有し、
前記処理手段は、
前記送信手段の送信処理を、前記画像処理部の動作状態に応じて制御し、
前記画像処理部が前記第１のパラメータセットに従って第１の画像処理を実行している間、前記送信手段の前記第２のパラメータセットの送信処理を停止する、
ことを特徴とする画像処理装置。
【請求項２】
前記処理手段は、前記画像処理部が前記第１の画像処理を終了すると、前記第２のパラメータセットに含まれる複数のパラメータを前記バッファメモリを介して順次、前記画像処理部に送信するよう前記送信手段を制御することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記処理手段は、前記画像処理部からの前記第１の画像処理の終了を示す信号を受信すると、前記第２のパラメータセットに含まれる複数のパラメータを前記バッファメモリを介して順次、前記画像処理部に送信するよう前記送信手段を制御することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記処理手段は、前記第１のパラメータセットと、前記第２のパラメータセットの一部のパラメータと、を前記バッファメモリを介して順次、前記画像処理部に送信した後、前記第２のパラメータセットの送信処理を停止することを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記一部のパラメータは、前記バッファメモリの転送遅延に相当することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記第１のパラメータセットに含まれる複数のパラメータのうち最後に送信されるパラメータは、前記第１の画像処理の開始を指示するパラメータであることを特徴とする請求項４又は５に記載の画像処理装置。
【請求項７】
前記第１のパラメータセットおよび前記第２のパラメータセットは、圧縮データに対するデコードのためのパラメータであることを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記圧縮データは、ＪＰＥＧによる圧縮データであることを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記処理手段は、前記送信手段を含み、
前記処理手段は、前記ＪＰＥＧによる圧縮データに対応するオブジェクトを含む画像データを処理する、
ことを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記画像データの処理は、レンダリングの前処理であることを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
前記処理手段は、前記画像処理部が前記第１のパラメータセットに従って前記第１の画像処理を実行している間、前記画像データに含まれる他のオブジェクトを処理することを特徴とする請求項９又は１０に記載の画像処理装置。
【請求項１２】
前記他のオブジェクトは、ベクタオブジェクトであることを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記処理手段は、前記画像処理部が前記第１のパラメータセットに従って前記第１の画像処理を実行している間、前記画像データに含まれる前記ベクタオブジェクトのエッジ抽出処理を行うことを特徴とする請求項１２に記載の画像処理装置。
【請求項１４】
複数のパラメータを含むパラメータセットに従って画像処理を実行する画像処理部を有する画像処理装置において実行される制御方法であって、
第１のパラメータセットと第２のパラメータセットを含むデータを処理する処理工程と、
前記第１のパラメータセットと前記第２のパラメータセットそれぞれに含まれる複数のパラメータをバッファメモリを介して順次、前記画像処理部に送信する送信工程と、を有し、
前記処理工程では、
前記送信工程での送信処理を、前記画像処理部の動作状態に応じて制御し、
前記画像処理部が前記第１のパラメータセットに従って第１の画像処理を実行している間、前記送信工程での前記第２のパラメータセットの送信処理を停止する、
ことを特徴とする制御方法。
【請求項１５】
請求項１乃至１３に記載の画像処理装置の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理を実行する画像処理装置、制御方法およびプログラムに関する。
【背景技術】
【０００２】
画像処理装置の中には画像処理をプロセッサによって行うものがある。ここで、プロセッサとは、ソフトウェアプログラムを構成する命令を順番に処理するハードウェアのことである。また、画像処理をプロセッサによって行う画像処理装置であっても、プロセッサの他に、論理回路で構成した画像処理ハードウェアを有し、特定の画像処理を実行させるものがある。その画像処理ハードウェアは、プロセッサの行う画像処理を補助する構成であり、プロセッサが設定するパラメータに従って動作する。ここで、画像処理ハードウェアのプロセッサが実行する画像処理の補助とは、実行する一連の画像処理から部分的な画像処理をプロセッサが抽出して画像処理ハードウェアに渡し、画像処理ハードウェアがその画像処理を実行することをいう。
【０００３】
画像処理ハードウェアが受け持つ部分的な画像処理の要求が複数あるとき、プロセッサは、画像処理ハードウェアに対して複数の画像処理を順番に実行させる。つまり、プロセッサは、画像処理ハードウェアに対して、先行する画像処理用のパラメータ設定を行って先行する画像処理を実行させ、そして、先行する画像処理が完了した後に次の画像処理用のパラメータ設定を行い、次の画像処理を実行させる。先行する画像処理が完了してから次の画像処理用のパラメータ設定をするのは、先行する画像処理が完了する前に次のパラメータ設定をしてしまうと、先行する画像処理が正しく実行できなくなるためである。
【０００４】
なお、画像処理用のパラメータ設定をしている間は、プロセッサは他の処理を実行できず、また、画像処理ハードウェアも画像処理を実行できないので、その時間を短縮することはプロセッサと画像処理ハードウェアの生産性向上に寄与する。
【０００５】
特許文献１では、プロセッサの他にパラメータ制御部を有し、現ページの画像処理の終了後に次ページの画像処理パラメータを設定することで、パラメータ設定時間の短縮を図り、かつ、先行する画像処理中にパラメータが変わってしまうことを防いでいる。特許文献１では、ＣＰＵは次ページの画像処理に必要な全パラメータをメモリに格納しておく。そして、画像処理部において現ページの画像処理が終了した後に、パラメータ制御部はメモリに格納されている次ページ用のパラメータを全て画像処理部に転送する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−９９８３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の構成では、メモリがフルになった場合に、ＣＰＵがパラメータの送信をホールドし、ストール状態になってしまうことが考えられる。プロセッサのそのような状態は、画像処理の処理効率の低下を招いてしまう。
【０００８】
本発明の目的は、このような従来の問題点を解決することにある。上記の点に鑑み、本発明は、画像処理部の制御により画像処理を実行する構成において処理効率の低下を防ぐ画像処理装置、制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明に係る画像処理装置は、複数のパラメータを含むパラメータセットに従って画像処理を実行する画像処理部を有する画像処理装置であって、第１のパラメータセットと第２のパラメータセットを含むデータを処理する処理手段と、前記第１のパラメータセットと前記第２のパラメータセットそれぞれに含まれる複数のパラメータをバッファメモリを介して順次、前記画像処理部に送信する送信手段と、を有し、前記処理手段は、前記送信手段の送信処理を、前記画像処理部の動作状態に応じて制御し、前記画像処理部が前記第１のパラメータセットに従って第１の画像処理を実行している間、前記送信手段の前記第２のパラメータセットの送信処理を停止する、ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、画像処理部の制御により画像処理を実行する構成において処理効率の低下を防ぐことができる。
【図面の簡単な説明】
【００１１】
【図１】画像処理装置のブロック構成を示す図である。
【図２】データ転送の制御プロトコルのタイミングチャートを示す図である。
【図３】コマンドデータ転送を行った場合のタイミングチャートを示す図である。
【図４】コマンドデータ転送を行った場合のタイミングチャートを示す図である。
【図５】画像処理の実行制御を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
【００１３】
図１は、画像処理装置１のブロック構成を示す図である。画像処理装置１は、例えば、インクジェット記録方式や電子写真方式等による記録部を備えた複合機（ＭＦＰ）であり、取得した画像データに基づいて記録媒体に画像を記録することができる。図１では、本実施形態の動作に関するブロックについて示しているが、画像処理装置１が実行可能な機能に対応する機能ブロックを適宜有する。ＣＰＵ１０１、画像処理部１０３、メモリ１０４は、バス１０５を介して相互に通信可能に接続されている。ＣＰＵ１０１は、メモリ１０４に記憶されたプログラムをバス１０５を介して読み出して、そのプログラムに従って動作するプロセッサである。ＣＰＵ１０１は、画像処理部１０３と割込信号で接続されており、画像処理部１０３から割込信号を受信する。また、ＣＰＵ１０１は、データ出力ポートを有し、ＦＩＦＯ部１０２に対してコマンドデータを出力する。図１中のＣＰＵ１０１とＦＩＦＯ部１０２を接続する片方向矢印は、データの転送される方向を示し、双方向矢印はデータ転送の制御信号を示している。このデータ転送の制御プロトコルについては後述する。
【００１４】
ＣＰＵ１０１は、メモリ１０４に記憶されたディスプレイリスト（ＤＬ）データを読み込んで、レンダリング処理（ＲＩＰ）の前処理を行う。ＤＬデータは、複数のオブジェクトを含み、オブジェクトは、ベクタオブジェクトとＪＰＥＧオブジェクトを含む。ＣＰＵ１０１は、ＤＬデータを構成するオブジェクトを一つずつ処理する。ＣＰＵ１０１は、ベクタオブジェクトに対しては、エッジ抽出処理を行ってエッジデータを生成し、メモリ１０４に格納する。また、ＣＰＵ１０１は、ＪＰＥＧオブジェクトに対して、ＦＩＦＯ部１０２を介して画像処理部１０３に対してコマンドデータを送信し、ＪＰＥＧオブジェクトに含まれるＪＰＥＧ圧縮データに対するＪＰＥＧデコード処理を画像処理部１０３に実行させる。
【００１５】
ＦＩＦＯ部１０２は、ＣＰＵ１０１と接続されるデータ入力ポート及び画像処理部１０３と接続されるデータ出力ポートを有し、データ入力ポートから受信したコマンドデータを、受信した順番にデータ出力ポートから出力するＦＩＦＯバッファメモリである。図１中のＦＩＦＯ部１０２と画像処理部１０３を接続する片方向矢印はデータの転送される方向を示し、双方向矢印はデータ転送の制御信号を示している。このデータ転送の制御プロトコルについては後述する。
【００１６】
画像処理部１０３は、バス１０５を介してメモリ１０４と接続されており、メモリ１０４からのＪＰＥＧコードデータの読出しと、メモリ１０４へのデコード済み画像データの書込みを行うＪＰＥＧデコーダである。また、画像処理部１０３は、データ入力ポートを有し、ＦＩＦＯ部１０２が出力するコマンドデータを受信する。さらに、画像処理部１０３は、ＣＰＵ１０１と割込信号で接続されており、ＣＰＵ１０１に対して割込信号を送信する。画像処理部１０３は、受信したコマンドデータに応じてＪＰＥＧデコード処理のパラメータ設定、メモリ１０４に対する読出しと書込みの設定、および、ＪＰＥＧデコード処理の開始制御を行う。
【００１７】
画像処理部１０３は、データ入力ポートから画像処理開始のコマンドデータ（パラメータ）を受信すると、データ入力ポートにＢＵＳＹ信号を出力してコマンドデータの受信を行わないようにしてから、ＪＰＥＧデコード処理を開始する。ここで、ＢＵＳＹ信号とは、データ転送の制御信号の一つである。また、ＪＰＥＧデコード処理とは、画像処理部１０３が、メモリ１０４からＪＰＥＧコードデータを読み出し、ＪＰＥＧコードデータをデコードして画像データを生成し、メモリ１０４に対してその画像データを書き込む処理である。
【００１８】
画像処理部１０３は、ＪＰＥＧデコード処理が終了すると、ＣＰＵ１０１に対して割込信号を出力し、また、データ入力ポートへのＢＵＳＹ信号の出力を停止し、コマンドデータの受信を行えるようにする。また、画像処理部１０３は、内部に完了カウンタを有しており、ＪＰＥＧデコード処理が終了すると完了カウンタの値を＋１増加させる。また、ＣＰＵ１０１は、バス１０５を介して画像処理部１０３の完了カウンタの値を読み出すことができる。
【００１９】
図２は、データ転送の制御プロトコルのタイミングチャートを示す図である。ここでの制御プロトコルは、ＣＰＵ１０１とＦＩＦＯ部１０２の間のコマンドデータ転送、および、ＦＩＦＯ部１０２と画像処理部１０３の間のコマンドデータ転送の両方に共通したものである。コマンドデータ転送の送信を行うのは、ＣＰＵ１０１およびＦＩＦＯ部１０２の出力側であり、また、コマンドデータ転送の受信を行うのはＦＩＦＯ部１０２の入力側および画像処理部１０３である。以下、コマンドデータの送信側をマスタ、受信側をスレーブと称する。
【００２０】
図２のクロック信号は、画像処理装置１内部で使用されている共通のクロック信号で、クロック信号の立ち上がりエッジに同期してデータ転送が行われる。説明上、クロック信号の立ち上がりのタイミングに対して、クロックサイクル番号０〜１６を割り当てている。コマンドデータは、マスタが出力する６４ビットの値を持つデータである。ＶＡＬＩＤ信号は、マスタが出力する制御信号で、コマンドデータが有効であることをハイレベルで示す。ＢＵＳＹ信号は、スレーブが出力する制御信号で、コマンドデータを受信できないことをハイレベルで示す。
【００２１】
本実施形態のデータ転送の制御プロトコルでは、ＶＡＬＩＤ信号とＢＵＳＹ信号の出力レベルの組み合わせでコマンドデータの転送可否が制御される。データ転送の制御プロトコルでは、ＶＡＬＩＤ信号がハイレベルで且つＢＵＳＹ信号がローレベルであるクロックサイクルにおいて、コマンドデータに出力されている値のデータ転送が行われ、それ以外のクロックサイクルではデータ転送が行われない。また、データ転送の制御プロトコルでは、ＶＡＬＩＤ信号がハイレベルで、かつ、ＢＵＳＹ信号がハイレベルとなった場合、マスタは、次のクロックサイクルもコマンドデータの値とＶＡＬＩＤ信号のレベルを保持する。
【００２２】
以下、図２のコマンドデータ転送の一例を用いて、ＶＡＬＩＤ信号とＢＵＳＹ信号によるハンドシェーク通信の動作について説明する。まず、図２中のクロックサイクル０において、マスタはコマンドデータ値１を出力すると同時にＶＡＬＩＤ信号をハイレベルで出力し、スレーブはＢＵＳＹ信号をローレベルで出力する。これは、このクロックサイクルにおいて、コマンドデータ値１がマスタからスレーブに転送されることを示しており、スレーブはコマンドデータ値１を取得し、マスタはコマンドデータ値１を放棄する。続けて、クロックサイクル１から３までは、クロックサイクル０と同様であり、コマンドデータ値２から４がマスタからスレーブに順次転送される。
【００２３】
そして、クロックサイクル４において、前段までのクロックサイクルとは異なり、スレーブは、ＢＵＳＹ信号をハイレベルで出力する。これは、このクロックサイクルにおいて、コマンドデータ値５がマスタからスレーブに転送されないことを示しており、マスタは、次のクロックサイクルもコマンドデータ値５とＶＡＬＩＤ信号のハイレベルを保持する（ホールド動作）。クロックサイクル５はクロックサイクル４と同様であり、マスタは、そのまま次のクロックサイクルまで状態を保持する（ホールド動作）。
【００２４】
クロックサイクル６は、クロックサイクル５とは異なり、スレーブがＢＵＳＹ信号をローレベルにしたことから、コマンドデータの転送が行われる。スレーブはコマンドデータ値５を取得し、マスタは３クロックサイクルの間保持していたコマンドデータ５を放棄する。クロックサイクル７はクロックサイクル６と同様であり、コマンドデータ６がマスタからスレーブに転送される。
【００２５】
クロックサイクル８から１２までは、マスタはコマンドデータに有効な値を出力せず、ＶＡＬＩＤ信号をローレベルで出力しているので、ＢＵＳＹ信号の状態に関わらず、コマンドデータの転送はされない。クロックサイクル１３から１４までは、クロックサイクル０から３、７と同様であり、コマンドデータ値７、８がマスタからスレーブに転送される。クロックサイクル１５は、クロックサイクル８から１２までと同様に、コマンドデータの転送はされない。
【００２６】
以上説明したような制御プロトコルに従うことで、マスタからスレーブにコマンドデータを過不足なく転送することができる。しかしながら、前述の通り、ＢＵＳＹ信号とＶＡＬＩＤ信号が同時にハイレベルになった場合は、マスタは、次のクロックサイクルも続けてコマンドデータとＶＡＬＩＤ信号を出力し続けるホールド動作を行う必要がある。つまり、マスタの処理パフォーマンスはその分低下する。そのような動作は、制御プロトコルとしての制約となり得るものの、マスタがハードウェア的にシーケンシャルな動作しか行わないプロセッサやＦＩＦＯバッファのときには必然的な動作である。そこでシーケンシャルな動作しか行わないプロセッサがホールド動作に入らないようにするためには、例えば、ＢＵＳＹ信号を予測してコマンドデータの出力を制御するようにする。若しくは、受信側に十分に大きいバッファを設けてＢＵＳＹ信号がハイレベルにならないようにする。
【００２７】
なお、以降、説明の簡易化のため、コマンドデータに有効な値を出力してＶＡＬＩＤ信号をハイレベルで出力することを「コマンドデータを出力する」と表現する。また、ＢＵＳＹ信号をハイレベルで出力することを「ＢＵＳＹ信号を出力する」と表現し、ＢＵＳＹ信号をローレベルで出力することを「ＢＵＳＹ信号の出力を停止する」と表現する。ＣＰＵ１０１が出力するコマンドデータの一覧表を表１に示す。
【００２８】
【表１】
2018113658.tif 000003
【００２９】
表１中の＊＊＊＊＿＊＊＊＊は、任意の３２ビット１６進数整数を表し、ＣＰＵ１０１が処理内容に応じて決定する数値であることを示している。ＣＰＵ１０１は、この箇所に適切な数値を入れてコマンドデータを出力する。但し、表１のコマンドデータは、ＣＰＵ１０１が画像処理部１０３に対する動作要求の必要に応じて出力するものであり、不要な制御コマンドを出力しないことが可能である。そして、ＣＰＵ１０１は、画像処理開始を指示するコマンドデータ０ｘ０００２＿０００４＿＊＊＊＊＿＊＊＊＊を、１回のＪＰＥＧデコード処理の一連のコマンドデータ群（パラメータセット）の一番最後に出力する。
【００３０】
次に、ＪＰＥＧデコード処理Ａを画像処理部１０３に実行させる一連のコマンドデータ群Ａに、番号と説明を付した表を表２に示す。また、ＪＰＥＧデコード処理Ｂを画像処理部１０３に実行させる一連のコマンドデータ群Ｂに、番号と説明を付した表を表３に示す。また、ＪＰＥＧデコード処理Ｃを画像処理部１０３に実行させる一連のコマンドデータ群Ｃに、番号と説明を付した表を表４に示す。また、ＪＰＥＧデコード処理Ｄを画像処理部１０３に実行させる一連のコマンドデータ群Ｄに、番号と説明を付した表を表５に示す。それぞれ、６９個のコマンドデータから構成されており、画像処理開始を指示する０ｘ０００２＿０００４で始まるコマンドデータが一番最後に含まれている。
【００３１】
【表２】
2018113658.tif 000004
【００３２】
【表３】
2018113658.tif 000005
【００３３】
【表４】
2018113658.tif 000006
【００３４】
【表５】
2018113658.tif 000007
【００３５】
以下、本実施形態での制御の説明を行う前に、本実施形態での制御を行わずにコマンドデータ転送を行った場合を本実施形態の動作との比較のために説明する。
【００３６】
図３は、本実施形態の制御を行わずにコマンドデータ転送を行った場合のタイミングチャートを示す図である。前述の通り、ＣＰＵ１０１は、ＦＩＦＯ部１０２を介して画像処理部１０３に対してコマンドデータを送信することで、ＪＰＥＧデコード処理のパラメータ設定と、メモリ１０４に対する読出しと書込みの設定、および、ＪＰＥＧデコード処理の開始制御を行う。図３では、表２、表３、表４、表５で示したＪＰＥＧデコード処理Ａ〜Ｄを実行するための４組のコマンドデータ群を、ＣＰＵ１０１が連続して送信する場合を示している。
【００３７】
ＣＰＵ１０１は、クロックサイクル０から６８までコマンドデータ群Ａを送信し、クロックサイクル６９から１７９までコマンドデータ群Ｂを送信し、クロックサイクル１８０から３４８までコマンドデータ群Ｃを送信している。また、ＣＰＵ１０１は、クロックサイクル３４９からコマンドデータ群Ｄを送信している。
【００３８】
一方、画像処理部１０３は、クロックサイクル５から７３までコマンドデータ群Ａを受信すると、クロックサイクル７４から１７４までＢＵＳＹ信号を出力してコマンドデータの受信を行わない。これは、前述の通り、画像処理部１０３は、画像処理開始を示すコマンドデータを受信するとＪＰＥＧデコード処理を開始し、ＪＰＥＧデコード処理が終了するまでＢＵＳＹ信号を出力し続けるためである。
【００３９】
画像処理部１０３は、クロックサイクル７４から１７４の間、ＪＰＥＧデコード処理Ａを実行している。同様に、画像処理部１０３は、クロックサイクル２４３から３４３、および、クロックサイクル４１２以降はＪＰＥＧデコード処理を実行する期間となり、ＢＵＳＹ信号を出力している。画像処理部１０３は、クロックサイクル２４３から３４３の間、ＪＰＥＧデコード処理Ｂを実行し、クロックサイクル４１２以降はＪＰＥＧデコード処理Ｃを実行している。なお、図３においては説明の簡易化のため、ＪＰＥＧデコード処理の実行時間は１００クロックサイクルで図示しているが、実際の処理時間は、処理するＪＰＥＧ画像の画素数や色空間によって変化する。例えば縦１００画素、横１００画素、ＲＧＢ色空間のＪＰＥＧ画像の場合は画素数と色成分の数の積で３０，０００の色成分の処理を行うことになるので、画像処理部１０３は約３０，０００クロックサイクルの処理時間が必要となる。
【００４０】
ＦＩＦＯ部１０２は、ＣＰＵ１０１と画像処理部１０３の動作に応じてコマンドデータの転送を行う。ＦＩＦＯ部１０２は、内部バッファに１個でもコマンドデータがあれば画像処理部１０３に対してコマンドデータを出力する。しかしながら、内部バッファへの格納と読出しの時間が合わせて５クロックサイクル必要であるので、ＣＰＵ１０１からコマンドデータを受信してからＦＩＦＯ部１０２がそのコマンドデータを出力するまで、最低でも４クロックサイクル遅延する。そのため、図３において、クロックサイクル０でＣＰＵ１０１から受信したコマンドデータ１を、転送遅延分ずれたクロックサイクル５で画像処理部１０３に対して出力開始している。
【００４１】
また、本実施形態では、ＦＩＦＯ部１０２は、コマンドデータを６４個格納できるバッファ容量を持っているので、画像処理部１０３がＢＵＳＹ信号を出力してもＦＩＦＯ部１０２はすぐにはＢＵＳＹ信号を出力しない。ＦＩＦＯ部１０２は、内部バッファに６４個のコマンドデータを格納してフル状態になったときにＢＵＳＹ信号を出力する。そのため、図３に示すように、画像処理部１０３はクロックサイクル７４から１７４までＢＵＳＹ信号を出力するのに対して、ＦＩＦＯ部１０２はクロックサイクル１３３までＣＰＵ１０１にＢＵＳＹ信号を出力しない。ＦＩＦＯ部１０２は、その間に、ＣＰＵ１０１が送信するコマンドデータを内部バッファがフル状態になるまで格納し続け、フル状態になったクロックサイクル１３３からＣＰＵ１０１に対してＢＵＳＹ信号を出力する。
【００４２】
画像処理部１０３は、ＪＰＥＧデコード処理を終了すると、前述の通りＢＵＳＹ信号の出力を停止する。画像処理部１０３がクロックサイクル１７４および３４３にＢＵＳＹ信号の出力を停止することで、ＦＩＦＯ部１０２が出力するコマンドデータが画像処理部１０３に転送される。これにより、ＦＩＦＯ部１０２の内部バッファがフル状態ではなくなるため、ＦＩＦＯ部１０２も次のクロックサイクル１７５および３４４でＣＰＵ１０１に対するＢＵＳＹ信号の出力を停止する。
【００４３】
このように、図３の動作では、ＢＵＳＹ信号によるＣＰＵ１０１のホールド動作で、その間ＣＰＵ１０１は他の処理が行えなくなる。それは、画像処理部１０３がＪＰＥＧデコード処理を行っている間に、ＦＩＦＯ部１０２からＣＰＵ１０１に対してＢＵＳＹ信号が出力されているにも関わらず、ＣＰＵ１０１がコマンドデータをＦＩＦＯ部１０２に対して出力するからである。それにより、例えばクロックサイクル１３３から１７５までのように、画像処理部１０３がＪＰＥＧデコード処理を終了するまでの間、ＣＰＵ１０１はずっとホールド動作をし続けていて、他の処理が行えない。
【００４４】
なお、図３に示すようなデータ転送においては、ＪＰＥＧデコードに必要なパラメータ数がＦＩＦＯ部１０２の内部バッファの容量に比較して多いので内部バッファがフル状態になりやすいという特徴がある。また、画像処理部１０３がＪＰＥＧデコード処理を行うクロックサイクル数に応じてＣＰＵ１０１がホールド動作に入っているクロックサイクル数も増えると、数万クロックサイクル以上になり得る。
【００４５】
図４は、本実施形態におけるコマンドデータ転送を行った場合のタイミングチャートを示す図である。図４では、図３と同様に、表２、表３、表４で示したＪＰＥＧデコード処理Ａ〜Ｄを実行するための４組のコマンドデータ群を、ＣＰＵ１０１が連続して送信する場合を示している。但し、図４は、ＣＰＵ１０１は、コマンドデータ群の送信中にコマンドデータの送信を保留し、その保留中に他のオブジェクトの処理を実行している点で図３と異なる。他のオブジェクトの処理については後述する。
【００４６】
ＣＰＵ１０１は、クロックサイクル０から６８までコマンドデータ群Ａを送信する。ＣＰＵ１０１は、コマンドデータ群Ａの送信が終了した後、クロックサイクル６９から７３までコマンドデータ群Ｂの先頭の５つのコマンドデータを送信する。この５という数は、ＣＰＵ１０１がＦＩＦＯ部１０２を介して画像処理部１０３に対して送信するコマンドデータの遅延クロックサイクル数に相当する。その後、ＣＰＵ１０１は、クロックサイクル７４から１７３までは、コマンドデータ群Ｂの送信を一旦停止し、他のオブジェクトの処理を実行する。
【００４７】
クロックサイクル１７３では、ＣＰＵ１０１が画像処理部１０３から出力された割込信号を受信している。前述の通り、画像処理部１０３は、ＪＰＥＧデコード処理が終了すると、ＣＰＵ１０１に対して割込信号を出力し、また、データ入力ポートのＢＵＳＹ信号の出力を停止して、コマンドデータの受信を行えるようにする。図４のＪＰＥＧデコード処理Ａでは、割込信号の出力がクロックサイクル１７３から１７４で、ＢＵＳＹ信号の出力を停止するのがクロックサイクル１７４である。ＣＰＵ１０１は、クロックサイクル１７４から２３７までコマンドデータ群Ｂの残りのコマンドデータを送信する。
【００４８】
以上の制御により、画像処理部１０３がＪＰＥＧデコード処理Ａを行っている期間中、ＣＰＵ１０１はコマンドデータ群Ｂの送信を途中で一旦停止して保留し、他のオブジェクトの処理を実行する。また、画像処理部１０３がＪＰＥＧデコード処理Ａを終了した後に、ＣＰＵ１０１は、コマンドデータ群Ｂの送信を再開する。そして、さらに、ＣＰＵ１０１は、コマンドデータ群Ｂの送信が終了した後、クロックサイクル２３８から２４２までコマンドデータ群Ｃの先頭の５つのコマンドデータを送信する。その後、ＣＰＵ１０１は、クロックサイクル２４３から３４２まで、画像処理装置１０３からの割込信号を受信するまでは、コマンドデータ群Ｃの送信を一旦停止して保留し、他のオブジェクトの処理を実行する。また、画像処理部１０３がＪＰＥＧデコード処理Ｂを終了した後に、ＣＰＵ１０１はコマンドデータ群Ｃの送信を再開する。
【００４９】
以上の制御により、画像処理部１０３がＪＰＥＧデコード処理Ｂを行っている期間中、ＣＰＵ１０１はコマンドデータ群Ｃの送信を途中で保留して他のオブジェクトの処理を実行する。これ以降も同様に、ＣＰＵ１０１は、全てのコマンドデータ群を送信し終えるまで、コマンドデータの送信と、他のオブジェクトの処理を切り替えながら実行する。
【００５０】
一方、画像処理部１０３は、図３と同じタイミングで動作している。つまり、画像処理部１０３は、クロックサイクル７４、２４３、４１２で画像処理開始を示すコマンドデータを受信するとＪＰＥＧデコード処理を開始する。ただ、図３に加えて図４では、画像処理部１０３は、クロックサイクル１７３、および、クロックサイクル３４２において、ＪＰＥＧデコード処理終了を示すための割込信号をＣＰＵ１０１に対して出力している。
【００５１】
図４においては、ＦＩＦＯ部１０２は、ＣＰＵ１０１に対してＢＵＳＹ信号を出力することがない。これは、画像処理部１０３がＪＰＥＧデコード処理を行っている間は、ＣＰＵ１０１はコマンドデータを送信せず、ＣＰＵ１０１が送信したコマンドデータの数が画像処理部１０３が受信したコマンドデータの数を６４分超えることがないからである。ここで、６４とは、ＦＩＦＯ部１０２のバッファ容量分である。また、ＦＩＦＯ部１０２は、図３と同様に、クロックサイクル５以降、画像処理部１０３に対してコマンドデータ出力を連続して行い続けている。これは、ＣＰＵ１０１が送信するコマンドデータの数が、画像処理部１０３が要求するコマンドデータの数に対して、不足していないことを示している。
【００５２】
図３と図４を比較すると、画像処理部１０３のＪＰＥＧデコード処理の動作タイミングは同じであるが、ＣＰＵ１０１の動作が異なる。図３では、ＣＰＵ１０１は、ＢＵＳＹ信号によるホールド動作が発生して他の処理が行えない時間がある。一方、図４では、ＣＰＵ１０１のホールド動作の発生はない。従って、本実施形態では、ＣＰＵ１０１は、コマンドデータの送信を不足なく行いながら他のオブジェクトの処理も実行することができる。
【００５３】
ここで、ＣＰＵ１０１が処理するＤＬデータの一例を表６に示す。ＤＬデータは少なくとも１つのベクタオブジェクトと少なくとも１つのＪＰＥＧオブジェクトからなり、１つのベクタオブジェクトは１つのベクタ図形の情報からなり、１つのＪＰＥＧオブジェクトは１つのＪＰＥＧ画像の情報からなる。ベクタ図形の情報は、形の種類、座標、大きさ、などで形の種類を含む。ＪＰＥＧ画像の情報は、ＪＰＥＧコードデータが格納してあるアドレスとバイト数、デコードにより生成する画像データを格納するアドレスとバイト数、ＪＰＥＧデコード処理に使用する量子化テーブル（Ｑテーブル）の値を含む。ＤＬデータはメモリ１０４に格納されており、ＣＰＵ１０１は、オブジェクトの番号を用いて各オブジェクトの種類や情報を参照することが可能である。
【００５４】
【表６】
2018113658.tif 000008
【００５５】
図５は、本実施形態における画像処理の実行制御を示すフローチャートである。これらのフローチャートを実行するプログラムは、メモリ１０４に記憶されており、ＣＰＵ１０１によって読み出されて実行される。
【００５６】
図５（Ａ）は、ＣＰＵ１０１がＤＬデータの画像処理を行うメインルーチンのフローチャートである。図５（Ａ）の処理は、レンダリング処理の前処理として実行される。ＣＰＵ１０１は、Ｓ１０１から処理を開始し、メモリ１０４に記憶されているＤＬデータを読出しモードでオープンし、Ｓ１０２に進む。
【００５７】
Ｓ１０２において、ＣＰＵ１０１は、ベクタオブジェクトポインタを０に初期化して、Ｓ１０３に進む。ベクタオブジェクトポインタは、ＤＬデータのベクタオブジェクトを先頭から順番に参照するために使用するポインタで、オブジェクトの番号を格納する。ＣＰＵ１０１は、オブジェクトの番号を用いてＤＬデータ内の各オブジェクトを参照し、ベクタオブジェクトポインタには、現在参照中のベクタオブジェクトの番号を記憶させておく。ＣＰＵ１０１は、初期化時にベクタオブジェクトポインタに０を記憶させ、最後のベクタオブジェクトの参照が終わり、もはや新たなベクタオブジェクトがＤＬデータに存在しない場合に、ベクタオブジェクトポインタに−１を記憶させる。
【００５８】
Ｓ１０３において、ＣＰＵ１０１は、ＪＰＥＧオブジェクトポインタを０に初期化して、Ｓ１０４に進む。ＪＰＥＧオブジェクトポインタは、ＤＬデータのＪＰＥＧオブジェクトを先頭から順番に参照するために使用するポインタで、オブジェクトの番号を格納する。ＣＰＵ１０１は、ＪＰＥＧオブジェクトポインタには、現在参照中のＪＰＥＧオブジェクトの番号を記憶させておく。ＣＰＵ１０１は、初期化時にＪＰＥＧオブジェクトポインタに０を記憶させ、最後のＪＰＥＧオブジェクトの参照が終わり、もはや新たなＪＰＥＧオブジェクトがＤＬデータに存在しない場合に、ＪＰＥＧオブジェクトポインタに−１を記憶させる。
【００５９】
Ｓ１０４において、ＣＰＵ１０１は、ＪＰＥＧオブジェクトカウンタを０に初期化して、Ｓ１０５に進む。ＪＰＥＧオブジェクトカウンタは、ＣＰＵ１０１がメモリ１０４上のヒープ領域に記憶している値で、ＪＰＥＧオブジェクトを処理した数を記憶するカウンタとして用いられ、ＦＩＦＯ部１０２に対してコマンドデータ群を送信し終えたときに値を＋１加算する。また、ＣＰＵ１０１は画像処理部１０３の内部の完了カウンタの値と比較することで、ＣＰＵ１０１が送信したコマンドデータ群に対して、ＪＰＥＧデコード処理を画像処理部１０３が完了したか否かを判定することができる。双方が同じ値であれば、ＣＰＵ１０１が送信したコマンドデータ群に対する画像処理部１０３のＪＰＥＧデコード処理は全て完了していると判定する。
【００６０】
Ｓ１０５において、ＣＰＵ１０１は、割込みサービスルーチンを呼び出す。通常、割込みサービスルーチンは、ＣＰＵ１０１が割込信号を受信したときに現在処理中のプログラムを保留して、その代わりに実行が開始されるプログラムであるが、Ｓ１０５では、割込信号の受信なしに割込みサービスルーチンの実行を開始する。割込みサービスルーチンの中でメインルーチンへ復帰する命令が実行されると、割込みサービスルーチンの実行が開始される前に実行していた保留中のメインルーチンのステップに復帰する。割込みサービスルーチンの内容は後述する。割込みサービスルーチンの中でメインルーチンへ復帰する命令が実行されると、Ｓ１０６に進む。
【００６１】
Ｓ１０６において、ＣＰＵ１０１は、ベクタオブジェクトポインタを更新し、Ｓ１０７に進む。ここで、更新とは、現在記憶しているベクタオブジェクトの番号の次に大きな番号のベクタオブジェクトをＤＬデータの中で検索し、その番号を新たに記憶することである。ＤＬデータの中にもはやベクタオブジェクトが存在しない場合は、ベクタオブジェクト終了を表す−１を記憶する。
【００６２】
Ｓ１０７において、ＣＰＵ１０１は、ベクタオブジェクトポインタの値がベクタオブジェクト終了を表す−１であるか否かを判定し、−１であると判定された場合はＳ１０９に進み、−１でないと判定された場合はＳ１０８に進む。
【００６３】
Ｓ１０８において、ＣＰＵ１０１は、ベクタオブジェクトポインタが示すベクタオブジェクトに対してエッジ抽出処理を行ってエッジデータを生成し、メモリ１０４に格納し、Ｓ１０６からの処理を繰り返す。エッジ抽出処理は、オブジェクトの輪郭を抽出する処理であり、その詳細については省略する。なお、Ｓ１０８の処理後に、Ｓ１０５に進むようにしても良い。そのような構成により、ＣＰＵ１０１は、ベクタオブジェクトの処理を行う毎に割込みサービスルーチンを呼び出して、ＪＰＥＧオブジェクトの処理が可能であるか否かを画像処理部１０３の完了カウンタの値で判定する。つまり、ＣＰＵ１０１は、画像処理部１０３の送信する割込信号を使用しなくても、ベクタオブジェクトの処理とＪＰＥＧオブジェクトの処理を独立して実行することができる。
【００６４】
Ｓ１０９において、ＣＰＵ１０１は、ＪＰＥＧオブジェクトポインタの値がＪＰＥＧオブジェクト終了を表す−１であるか否かを判定し、−１であると判定された場合はメインルーチンの処理を終了し、−１でないと判定された場合はＳ１０９の処理を繰り返す。
【００６５】
図５（Ｂ）は、ＣＰＵ１０１がＤＬデータの画像処理を行う割込みサービスルーチンのフローチャートである。割込みサービスルーチンの呼び出しがあると、ＣＰＵ１０１は、現在実行中のメインルーチンの処理を保留して、Ｓ２０１に進む。割込みサービスルーチンの呼び出しは、メインルーチンのＳ１０５のようにプログラム中に記述されている呼び出しが実行されたとき、または、ＣＰＵ１０１が画像処理部１０３から割込信号を受信したときに行われる。
【００６６】
Ｓ２０１において、ＣＰＵ１０１は、バス１０５を介して画像処理部１０３の完了カウンタの値を読み出し、バス１０５を介してメモリ１０４のＪＰＥＧオブジェクトカウンタの値を読み出し、Ｓ２０２に進む。
【００６７】
Ｓ２０２において、ＣＰＵ１０１は、画像処理部１０３の完了カウンタの値と、ＪＰＥＧオブジェクトカウンタの値を比較して同じ値であるか否かを判定する。同じ値であると判定された場合はＳ２０３に進み、同じ値でないと判定された場合はＳ２０９に進む。Ｓ２０２の判定により、それらの２つの値に差がある場合には、現在ＦＩＦＯ部１０２からＣＰＵ１０１に対してＢＵＳＹ信号が出力されていなくても、ＣＰＵ１０１は、コマンドデータをＦＩＦＯ部１０２に対して送信しない。
【００６８】
本実施形態では、Ｓ２０２の判定で上記２つの値が同じであると判定される場合は、現在のコマンドデータ群と後続するコマンドデータ群の所定の一部分（先頭Ｍ個のコマンドデータ）とを送信して、送信処理を一旦停止する。つまり、現在のコマンドデータ群により画像処理部１０３がＪＰＥＧデコード処理を開始することによってＦＩＦＯ部１０２がＢＵＳＹ信号を出力することを予測する構成に相当する。そのような構成により、ＦＩＦＯ部１０２からのＢＵＳＹ信号の出力前にＣＰＵ１０１からのコマンドデータの出力を停止することができ、結果、ＣＰＵ１０１のストール状態を回避することができる。
【００６９】
なお、もしＦＩＦＯ部１０２の内部バッファに格納できるコマンドデータの数が十分に大きい場合には、ＣＰＵ１０１がより多くのコマンドデータ群を送信してもＦＩＦＯ部１０２はＢＵＳＹ信号を出力することはない。そのような場合、ＪＰＥＧオブジェクトカウンタの値が完了カウンタの値と同じ場合だけでなく、以下のような構成としても良い。つまり、「ＪＰＥＧオブジェクトカウンタの値−完了カウンタの値」が、ＦＩＦＯ部１０２の内部バッファに格納できるコマンドデータ群の数Ｎ以下の場合に次のコマンドデータ群を送信する判断を行うようにしても良い。その場合でも、ＦＩＦＯ部１０２はＢＵＳＹ信号を出力しない。Ｓ２０２で「ＪＰＥＧオブジェクトカウンタの値−完了カウンタの値」が整数Ｎ以下と判定された場合にはＳ２０３に進み、整数Ｎ以下でないと判定された場合にはＳ２０９に進むことになる。
【００７０】
Ｓ２０３において、ＣＰＵ１０１は現在、Ｓ２０８でコマンドデータ群の先頭部分を送信して残りのコマンドデータの送信を保留した状態のままであるか否かを判定する。ここで、そのような状態のままであると判定された場合はＳ２０４に進み、そのような状態のままでないと判定された場合はＳ２０６に進む。Ｓ２０４において、ＣＰＵ１０１は、ＪＰＥＧオブジェクトポインタが示すＪＰＥＧオブジェクトのコマンドデータ群の中で、まだ送信していない残りのコマンドデータをＦＩＦＯ部１０２に対して送信し、Ｓ２０５に進む。
【００７１】
Ｓ２０５において、ＣＰＵ１０１は、ＪＰＥＧオブジェクトカウンタの値に１を加算した値を新たにＪＰＥＧオブジェクトカウンタの値として記憶する。Ｓ２０５の処理により、ＪＰＥＧオブジェクトカウンタの値は、ＣＰＵ１０１がＦＩＦＯ部１０２に対して送信し終わったコマンドデータ群の数と一致する。図４によれば、Ｓ２０５の時点でコマンドデータ群Ｂの残りのコマンドデータが送信されたのであれば（クロックサイクル２３７）、ＪＰＥＧオブジェクトカウンタの値＝２、完了カウンタの値＝１となる。さらに処理が進み、画像処理部１０３がＪＰＥＧデコード処理Ｂを完了して割込信号を送信したとき（クロックサイクル３４２）、Ｓ２０２では、ＪＰＥＧオブジェクトカウンタの値＝２、完了カウンタの値＝２となる。そして、Ｓ２０４でコマンドデータ群Ｃの残りのコマンドデータが送信される（クロックサイクル３４３以降）。
【００７２】
Ｓ２０６において、ＣＰＵ１０１は、ＪＰＥＧオブジェクトポインタを更新し、Ｓ２０７に進む。ここで、更新とは、現在記憶しているＪＰＥＧオブジェクトの番号の次に大きな番号のＪＰＥＧオブジェクトをＤＬデータの中で検索し、その番号を新たに記憶することである。ＤＬデータの中にもはやＪＰＥＧオブジェクトが存在しない場合は、ＪＰＥＧオブジェクト終了を表す−１を記憶する。
【００７３】
Ｓ２０７において、ＣＰＵ１０１は、ＪＰＥＧオブジェクトポインタの値がＪＰＥＧオブジェクト終了を表す−１であるか否かを判定する。ここで、−１であると判定された場合はＳ２０９に進み、−１でないと判定された場合はＳ２０８に進む。
【００７４】
Ｓ２０８において、ＣＰＵ１０１は、ＪＰＥＧオブジェクトポインタが示すＪＰＥＧオブジェクトのＪＰＥＧデコード処理を実行するためのコマンドデータ群の中での所定の一部分、即ち先頭のＭ個のコマンドデータをＦＩＦＯ部１０２に対して送信する。そして、ＣＰＵ１０１は、コマンドデータ群の送信処理を一旦停止し、Ｓ２０９に進む。本実施形態では、Ｍ＝５であり、ＣＰＵ１０１がコマンドデータを送信してからＦＩＦＯ部１０２がコマンドデータを送信するまでの遅延クロックサイクル数に相当する。予めＭ個のコマンドデータをＦＩＦＯ部１０２に送信しておき、さらに、画像処理部１０３がＪＰＥＧデコードを完了してＢＵＳＹ信号の出力を停止してすぐＣＰＵ１０１がコマンドデータを送信する。それにより、ＦＩＦＯ部１０２から画像処理部１０３に対する途切れのないコマンドデータの転送が実現できる。また、多少途切れても処理パフォーマンスに大きな影響がないと判断できる場合には、Ｍを０にするようにしても良い。また、ＣＰＵ１０１が送信するコマンドデータの転送が途切れる要因が他にもあるような場合は、ＦＩＦＯ部１０２の内部バッファをフル状態にしない範囲（ＢＵＳＹ信号を出力しない範囲）でＭを比較的大きな数にするようにしても良い。そのような構成によっても、ＦＩＦＯ部１０２から画像処理部１０３に対するコマンドデータの転送を途切れないようにすることができる。また、ＣＰＵ１０１の連続送信データ量を大きくし、ＦＩＦＯ部１０２へのデータ出力効率を上げることができる。
【００７５】
Ｓ２０９において、ＣＰＵ１０１は、割込みサービスルーチンの実行が開始される前に実行していた保留中のメインルーチンのステップに復帰する。
【００７６】
以上のように、ＣＰＵ１０１は、メインルーチンで主にベクタオブジェクトの処理を実行する。一方、ＣＰＵ１０１は、割込みサービスルーチンでＪＰＥＧオブジェクトの処理を実行する。この構成により、ＣＰＵ１０１は、ＪＰＥＧオブジェクトの処理を進めながら、画像処理部１０３の動作状態に応じて、ベクタオブジェクトの処理を並行して進めることができる。
【００７７】
この構成により、ＤＬデータの先頭にＪＰＥＧオブジェクトが複数存在する場合にもＪＰＥＧオブジェクトの処理だけを連続して処理しないので、図４に示すようにＦＩＦＯ部１０２の内部バッファをフル状態にすることがない。そして、ＣＰＵ１０１がコマンドデータの送信でホールド状態になることを回避でき、画像処理部１０３がＪＰＥＧデコード処理を実行している間に、ＣＰＵ１０１が画像処理部１０３のパラメータ設定のために占有されることがない。さらに、画像処理部１０３は、ＪＰＥＧデコード処理の終了後すぐにパラメータ設定のためのコマンドデータ受信を待つことなく開始して短時間で実行できる。また、ＪＰＥＧデコード処理中はＢＵＳＹ信号を出力することで処理中のパラメータ変更を防ぐことができる。
【００７８】
このように、ＣＰＵ１０１の他に画像処理パラメータ制御部や、全パラメータを格納できる大きなメモリ等の構成がなくても、画像処理装置１は、パラメータ設定の処理を効率化し、かつ、先行する画像処理の実行中のパラメータ変更を防ぐことができる。
【００７９】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８０】
１  画像処理装置：  １０１  ＣＰＵ：  １０２  ＦＩＦＯ部：  １０３  画像処理部：  １０４  メモリ
【図１】
2018113658.tif 000009
【図２】
2018113658.tif 000010
【図３】
2018113658.tif 000011
【図４】
2018113658.tif 000012
【図５】
2018113658.tif 000013