(57)【要約】【課題】  メモリの使用量の増大を抑制しつつ、複数のメモリ領域に分割されたデータを一連のデータとして転送可能なデータ転送制御装置、データ転送制御方法及びプログラムを提供することを課題とする。【解決手段】  第１メモリ領域と第２メモリ領域を含む複数のメモリ領域に亘って格納される複数ラインからなる入力データの処理部への転送を制御する際に、前記処理部から出力される複数ラインからなる出力データのうち出力したい着目ラインの位置を特定し、特定された着目ラインの位置に応じて、前記第１のメモリ領域から転送する入力データのライン数及びそのアドレスを決定すると共に、前記第２のメモリ領域から転送する入力データのライン数及びそのアドレスを決定する。その決定に基づいて、前記第１のメモリ領域から所定のライン数の入力データを転送させると共に前記第２のメモリ領域から所定のライン数の入力データの転送を転送させるように制御する。【選択図】  図５
2015022363.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリ領域と第２メモリ領域を含む複数のメモリ領域に亘って格納される複数ラインからなる入力データの処理部への転送を制御するデータ転送制御装置であって、
前記処理部から出力される複数ラインからなる出力データのうち出力対象の着目ラインの位置を特定する特定手段と、
前記特定手段により特定された着目ラインの位置に応じて、前記第１のメモリ領域から転送する入力データのライン数及びそのアドレスを決定すると共に、前記第２のメモリ領域から転送する入力データのライン数及びそのアドレスを決定する決定手段と、
前記決定手段の決定に基づいて、前記第１のメモリ領域から所定のライン数の入力データを転送させると共に前記第２のメモリ領域から所定のライン数の入力データの転送を転送させるように制御する制御手段と、
を備えることを特徴とするデータ転送制御装置。
【請求項２】
前記決定手段の決定に基づいて、前記第１のメモリ領域から転送する入力データのライン数を特定する情報を格納する第１格納手段と、
前記決定手段の決定に基づいて、前記第１のメモリ領域から転送する入力データの先頭アドレスを特定する情報を格納する第２格納手段と、
前記決定手段の決定に基づいて、前記第２のメモリ領域から転送する入力データのライン数を特定する情報を格納する第３格納手段と、
前記決定手段の決定に基づいて、前記第２のメモリ領域から転送する入力データの先頭アドレスを特定する情報を格納する第４格納手段と、
前記特定手段により特定された着目ラインの位置に応じて、前記第１格納手段、前記第２格納手段、前記第３の格納手段、及び／又は前記第４の格納手段の更新を行う更新手段と、
を備えることを特徴とする請求項１に記載のデータ転送制御装置。
【請求項３】
前記決定手段は、前記処理部が前記入力データに対して変倍処理を行う場合、前記特定手段により特定された着目ラインの位置及び変倍率に基づいて、前記第１のメモリ領域から転送する入力データのライン数及びそのアドレスを決定すると共に、前記第２のメモリ領域から転送する入力データのライン数及びそのアドレスを決定することを特徴とする請求項１又は２に記載のデータ転送制御装置。
【請求項４】
前記入力データのうち所定の処理単位の入力データにおける有効データがないラインを特定する情報を取得する取得手段を備え、
前記特定手段は、前記取得手段により取得した情報と、前記特定手段により特定された着目ラインの位置に応じて、前記第１のメモリ領域から転送する入力データのライン数及び／又は前記第２のメモリ領域から転送する入力データのライン数を変更することを特徴とする請求項１〜３のいずれか一項に記載のデータ転送制御装置。
【請求項５】
第１メモリ領域と第２メモリ領域を含む複数のメモリ領域に亘って格納される複数ラインからなる入力データの処理部への転送を制御するデータ転送制御方法であって、
前記処理部から出力される複数ラインからなる出力データのうち出力対象の着目ラインの位置を特定する特定工程と、
前記特定工程により特定された着目ラインの位置に応じて、前記第１のメモリ領域から転送する入力データのライン数及びそのアドレスを決定すると共に、前記第２のメモリ領域から転送する入力データのライン数及びそのアドレスを決定する決定工程と、
前記決定工程の決定に基づいて、前記第１のメモリ領域から所定のライン数の入力データを転送させると共に前記第２のメモリ領域から所定のライン数の入力データの転送を転送させるように制御する制御工程と、
を備えることを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの転送を行うデータ転送制御装置、データ転送制御方法及びプログラムに関し、より具体的には、着目ラインの処理に際して周辺ラインを参照するような処理を行う際に好適なデータ転送制御装置、データ転送制御方法及びプログラムに関する。
【背景技術】
【０００２】
プリンタ等の画像形成装置においては、ホストＰＣから多値画像データを受信して、その画像データに対して周辺画素を参照する画像処理を含めたデータ処理を施した後、所定の媒体（例えば、紙、印画紙、ハガキ等）に画像を形成するものが知られている。周辺画素を参照する画像処理とは、着目画素に対して上下左右等に配置される他の参照画素の内容に基づき処理内容を決定する画像処理のことである。例えば、多値画像データを拡大する拡大処理や、多値画像データに対して先鋭化処理を施すＵＳＭ（アンシャープマスク）処理などが挙げられる。また、画像形成装置では、受信した画像データを複数のライン単位で複数のバッファへ分割して格納したり、リングバッファのようにメモリ領域の下限へ達したらメモリ領域の先頭に格納するなど、一連の画像データを分割して格納するものがある。データを分割して格納する場合、受信した画像データを格納中のメモリ領域以外のメモリ領域を用いて画像処理を実施できるため、データの受信と画像処理は並列に実施することができる。
【０００３】
このとき、参照画像データの格納場所が分割されていた場合、一連の画像データであるかのように分割された複数の格納先からそれぞれ画像データを読み込み、画像処理部に供給する必要があった。
【０００４】
そこで、特許文献１には、２つのメモリアドレスを設定し、１つ目のアドレスから転送を開始して転送が終了したと判断すると、２つ目のアドレスから転送を再開する方法が開示されている。このような手法を用いれば、画像データが複数のメモリ領域に分割されても一連の画像データとして転送することが可能になる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１６６９２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載のデータ転送方法は、一度だけ途中で転送アドレスを切り替えるものであるため、分割して格納されている画像データを何度も一連の画像データとして転送することが必要な場合には対応できない。したがって、例えば、画像データを複数ラインごとに分割して複数のバンドを生成し、バンドごとにバンド処理を行う場合、１バンド内で何度もメモリ領域を切り替えることになるが、メモリ領域を切り替えるたびにデータ転送のパラメータの再設定が必要となる。
【０００７】
そこで、メモリ領域の境界にオーバーラップ領域を設けて、途中で画像データが途切れないようにオーバーラップ領域に画像データを配置する手法も考えられる。しかしながら、オーバーラップ領域のために余分なメモリの確保が必要であるという問題がある。また、対象となる画像データを一のメモリ領域から他のメモリ領域のオーバーラップ領域へコピーするコピー処理が必要であり、コピー処理のためのメモリアクセスによるＣＰＵへの負荷も問題となる。
【０００８】
本発明は、上述した事情に鑑み、メモリの使用量の増大を抑制しつつ、複数のメモリ領域に分割されたデータを一連のデータとして転送可能なデータ転送制御装置、データ転送制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決する本発明の画像処理装置は、第１メモリ領域と第２メモリ領域を含む複数のメモリ領域に亘って格納される複数ラインからなる入力データの処理部への転送を制御するデータ転送制御装置であって、前記処理部から出力される複数ラインからなる出力データのうち出力対象となる着目ラインの位置を特定する特定手段と、前記特定手段により特定された着目ラインの位置に応じて、前記第１のメモリ領域から転送する入力データのライン数及びそのアドレスを決定すると共に、前記第２のメモリ領域から転送する入力データのライン数及びそのアドレスを決定する決定手段と、前記決定手段の決定に基づいて、前記第１のメモリ領域から所定のライン数の入力データを転送させると共に前記第２のメモリ領域から所定のライン数の入力データの転送を転送させるように制御する制御手段と、を備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、出力対象の着目ライン位置を特定し、その位置に応じて複数のメモリ領域のどの位置からデータを参照するかを制御することで、複数のメモリ領域に分割されたデータを一連のデータとして容易に供給することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係る記録装置のコントローラ部の概略構成図である。
【図２】実施形態１に係るデータ処理部の内部構成図である。
【図３】実施形態１における拡大処理を施す際の参照画像と着目画像を説明する図である。
【図４】実施形態１におけるバッファ境界におけるバンド単位での拡大処理の説明図である。
【図５】実施形態１おけるデータ処理部４０７の制御フローチャートを示す図である。
【図６】実施形態１における画像データを処理する際にメモリから読み出すライン数及び読み出し時の先頭アドレスの位置を示す図である。
【図７】実施形態２におけるバッファ境界におけるバンド単位での拡大処理の説明図である。
【図８】実施形態２におけるデータ処理部４０７のデータ供給時のライン管理の制御フローチャートを示した図である。
【図９】実施形態２における画像データを処理する際にメモリから読み出すライン数及び読み出し時の先頭アドレスの位置を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施形態を詳細に説明する。なお、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでない。
【００１３】
（実施形態１）
本実施形態では、データ転送制御装置として、インクジェット記録装置（以下、記録装置）を例に挙げて実施形態を説明する。
【００１４】
図１は、本発明の実施形態１に係る記録装置の構成の一例を示すブロック図である。
【００１５】
本実施形態に係る記録装置２００は、コントローラ４０２と、ヘッド４１０と、を備えており、外部のホストコンピュータ４０１と接続可能となっている。
【００１６】
コントローラ４０２は、記録装置２００の制御を行う制御装置である。コントローラ４０２は、ＲＯＭ４０３と、ＣＰＵ４０４と、ＲＡＭ４０５と、ホストＩＦ制御部４０６と、第１のデータ処理部４０７と、ヘッドＩＦ制御部４０８と、第２のデータ処理部４０９と、を備えている。また、これらは共有バス４１１で接続されている。この共有バス４１１を通じて、接続されたもの同士で通信が可能となる。
【００１７】
ＲＯＭ４０３は、記録装置２００を制御するためのプログラムを格納している読み出し可能なメモリである。ＣＰＵ４０４は、ＲＯＭ４０３に格納されたプログラムを実行することにより記録装置２００の制御を行う。
【００１８】
ＲＡＭ４０５は、プログラムの実行領域や画像データ等のデータの格納領域として使用される読み書き可能なメモリである。また、本実施形態に係るＲＡＭ４０５は、複数のバッファを有し、バッファ毎にメモリ領域が分割される構成になっており、画像データを格納する際に各バッファへ画像データの一部を複数のライン単位で分割して格納する。このため、一連の画像データは、バッファの境界でＲＡＭ４０５のメモリアドレス上で分割される。ＲＡＭ４０５は、例えば、ホストデータ受信用バッファ、拡大処理参照用バッファ、拡大処理後格納用バッファ、低階調化処理用バッファを備えるものとし、バッファ単位で処理内容を独立させる。ＲＡＭ４０５をこのような構成とすることにより、排他的にメモリアクセスすることが可能となり、全体の処理を効率よく実行することができる。なお、以下、バッファの先頭アドレスと最終アドレスを「メモリアドレスの境界」とし、参照アドレスを、あるバッファの最終アドレスから他方のバッファの先頭アドレスに切り替えることを「メモリアドレスの境界を跨ぐ」と記載する。また、ＲＡＭ４０５内の複数のバッファを第１のメモリ領域、第２のメモリ領域と記載するが、異なるＲＡＭ４０５ではない。
【００１９】
ホストＩＦ制御部４０６は、ホストコンピュータ４０１との通信を行い、印刷ジョブ等のデータの受信などを行い、受信したデータをＲＡＭ４０５へ格納する。本実施形態では、ホストＩＦ制御部４０６が受信する印刷ジョブに含まれる画像データは、１画素がＲ，Ｇ，Ｂの３色で表され、１色の階調が８ビットである多階調の画像データ（以下、画像データ）とする。
【００２０】
第１のデータ処理部４０７は、印刷ジョブに含まれる印刷条件に従ってＲＡＭ４０５に格納された画像データを変倍する処理を行う。本実施形態では、変倍処理として、画像データを拡大する処理を行う。第１のデータ処理部４０７で拡大された画像データは、ＲＡＭ４０５へ格納される。
【００２１】
第２のデータ処理部４０９は、印刷ジョブに含まれる印刷条件に従ってＲＡＭ４０５に格納された拡大された画像データから，インク色の画像データを生成する処理を行う。本実施形態では、多値のＲ，Ｇ，Ｂデータを多値のＣ（シアン），Ｍ（マゼンタ），Ｙ（イエロー），Ｋ（ブラック）のインク色に変換して、インク色の画像データを生成する。さらに、インク色の画像データから記録装置２００が印刷に用いる印刷可能な２値画像データを生成する低階調化処理を行い、生成された２値画像データはＲＡＭ４０５へ格納される。
【００２２】
ヘッドＩＦ制御部４０８は、ＲＡＭ４０５に格納された２値画像データをヘッド４１０に出力する。
【００２３】
ヘッド４１０は、２値画像データに基づいて被記録媒体４２０にインクを付与して画像を記録する。
【００２４】
ホストコンピュータ４０１は、印刷するために必要な画像データ情報や印刷条件情報を含む印刷ジョブの作成等を行う情報処理装置である。
【００２５】
本実施形態に係るシリアル型の記録装置（２００）は、記録ヘッドが主走査方向に一定の速度で移動するキャリッジに搭載され、上記一定の速度に対応した周波数でインクを滴として吐出して記録用紙等の被記録媒体に印字する。１回の記録主走査が終了するごとに、被記録媒体は、主走査方向の垂直向きの副走査方向に所定の量だけ搬送される。このような記録主走査と搬送動作とを間欠的に繰り返すことにより、被記録媒体に段階的に画像が記録される。なお、記録ヘッドには、それぞれのインクを吐出するための複数の記録素子によって構成されている。コントローラ４０２は、このような動作を制御する。
【００２６】
ここで、第１のデータ処理部４０７の内部構成について詳細に説明する。
【００２７】
本実施形態では、第１のデータ処理部４０７は、拡大処理を実行する際にはバイキュービック法により拡大処理を実行する。ここで、バイキュービックアルゴリズムによる拡大処理について簡単に説明する。バイキュービックアルゴリズムは、出力対象の画素を「着目画素」とした場合、その着目画素の位置を中心に周辺の１６点（４×４マトリクス）の画素を参照して（以下、参照画素ともいう）、着目画素の画素値を決定するアルゴリズムである。この４×４マトリクスの参照画素の位置を着目画素に応じて移動させていくことで、元の画像データを拡大させることができる。すなわち、バイキュービックアルゴリズムでは、１ラインの画素を出力するために、４ラインの画素を参照する。
【００２８】
図３は、拡大処理時のイメージを示した図である。本実施形態では、拡大率３倍で拡大処理を行う場合について説明する。図３に示す画像データイメージ５０１は、着目画素が参照する４×４マトリクスの参照画素の位置を示した図であり、画像データイメージ５０２は、参照画素を参照して拡大処理した際の拡大処理結果（出力結果）を示した図である。
【００２９】
拡大処理では、まず、着目画素の画素位置を決定し、それに対応した参照画素の位置を決定する。着目画素の画素位置とは、出力したい画素の位置を指す。本実施形態では、着目画素をライン単位とし、以下、ライン単位の着目画素を「着目ライン」又は「処理ライン」という。まず、画像データイメージ５０２のライン位置５０８を着目ラインとする。そして、着目ラインの位置（ライン位置５０８）が、画像データイメージ５０１のライン位置５０４と５０５の間であるため、参照する画素データのライン位置は５０３，５０４，５０５，５０６になる。すなわち、この４ライン（５０３，５０４，５０５，５０６）を参照して、１ライン（ライン位置５０８）の出力画素が生成されることになる。本実施形態では、拡大率が３倍であるため、画像データイメージ５０２のライン位置５０９の画素を着目画素とした場合及びライン位置５１０の画素を着目画素とした場合も同様に、画像データイメージ５０２のライン位置５０４と５０５の間である。したがって参照する画像データのライン位置は、ライン位置５０８の場合と同じとなる。次に、ライン位置５１１を着目ラインとした場合は、画像データイメージ５０１のライン５０５と５０６の間になるため、参照する画像データのライン位置は５０４，５０５，５０６，５０７になる。このようにして、処理する着目画素のライン位置に応じて、参照するライン位置が変わっていく。本実施形態では、バンド単位で処理を行うため、バンド内で参照ライン位置が更新されていく。なお、ＲＡＭ４０５が上述した複数のバッファ構成であると、バンド処理の途中で参照するバッファが切り替わることから、着目ラインの位置によっては、参照ライン位置がメモリアドレスの境界を跨ぐことがある。
【００３０】
図２は、第１のデータ処理部４０７の内部構成を示すブロック図である。本実施形態では、拡大処理で参照する多値画像データが格納される複数のバッファを２つとし、その２つのバッファはそれぞれＲＡＭ４０５内の第１のメモリ領域６０２と第２のメモリ領域６０３とする。
【００３１】
入力用ＤＭＡＣ１０１は、ＤＭＡＣ制御部１０５からの指示に従って、ＲＡＭ４０５から参照する画像データ（入力データ）を読み出して、拡大処理部１０２へ供給するＤＭＡＣである。拡大処理部１０２は、参照する画像データをバイキュービックアルゴリズムにより指定された倍率に拡大する処理を行い、生成された拡大後の画像データを出力用ＤＭＡＣ１１６へ送信する。出力用ＤＭＡＣ１１６は、拡大後の画像データ（出力データ）を共有バス４１１を介してＲＡＭ４０５へ書き込む。
【００３２】
拡大率格納部１０６は、拡大処理における倍率値（拡大率）を格納する。画像データ情報格納部１０７は、後述する処理バンドで処理を行う着目ライン位置の初期ライン位置を格納する。動作モード１１７には、拡大処理で用いる拡大アルゴリズムに応じたモードが設定される。本実施形態では、バイキュービックの動作モードが設定される。これらには、バンド処理を開始する前に、パラメータが設定される。
【００３３】
メモリ１の先頭アドレス格納部１０８は、着目ラインが第１のメモリ領域６０２におけるバンド内で参照する先頭画素のメモリアドレス値を格納する。メモリ１のライン数格納部１１０は、着目ラインが第１のメモリ領域６０２におけるバンド内で参照するライン数を格納する。メモリ２の先頭アドレス格納部１０９は、着目ラインが第２のメモリ領域におけるバンド内で参照する先頭画素のメモリアドレス値を格納する。メモリ２のライン数格納部１１１は、着目ラインが第２のメモリ領域におけるバンド内で参照するライン数を格納する。拡大率格納部１０６、画像データ情報格納部１０７、メモリ１の先頭アドレス格納部１０８、メモリ２の先頭アドレス格納部１０９、メモリ１のライン数格納部１１０、メモリ２のライン数格納部１１１は、バンド処理が開始される前にＣＰＵ４０４により設定される。
【００３４】
処理ライン位置計算部１０３は、ＣＰＵ４０４からバンド処理スタートの通知を受信すると、拡大率格納部１０６から拡大率を取得して、拡大処理を行う着目画素の位置（以下、着目ライン位置ともいう）を決定する。すなわち、バンド処理が開始すると、拡大率と処理を開始する着目画素の座標位置から処理するライン位置を算出する。
【００３５】
参照画像データ制御部１０４は、算出された着目ライン位置と、格納部１０８、１０９、１１０、１１１と、の情報に基づいて、画像データのいずれのライン位置を参照するかの情報を生成する。この参照画像データ制御部１０４は、着目ラインの位置に基づいて、参照する画像データの読み出しアドレスや読み出すライン数を決定する。具体的には、第１のメモリ領域６０２から読み出す先頭アドレス値をメモリ１の読み出しアドレス格納部１１２へ格納し、第１のメモリ領域６０２から読み出すライン数をメモリ１の読み出しライン数格納部１１４へ格納する。同様に、第２のメモリ領域６０３から読み出す先頭アドレス値をメモリ２の読み出しアドレス格納部１１３へ格納し、第２のメモリ領域６０３から読み出すライン数をメモリ２の読み出しライン数格納部１１５へ格納する。参照画像データ制御部１０４は、処理ライン位置が変更される度に、格納部１１２〜１１５の値を更新する。
【００３６】
ＤＭＡＣ制御部１０５は、格納部１１２，１１３，１１４，１１５の情報に基づいて、入力用ＤＭＡＣに第１のメモリ領域６０２のいずれから何ラインを読み出すかを指示し、同様に第２のメモリ領域６０３のいずれから何ラインを読み出すかを指示する。このＤＭＡＣ制御部１０５は、着目画素のライン位置（処理ライン位置）が変わるたびに、格納部１１２〜１１５の内容を取得し、それに基づき読み出し開始位置と読み出し量とをＤＭＡＣ１０１へ設定し、ＤＭＡＣ１０１へ読み出しスタートを指示する。
【００３７】
図４は、本実施形態におけるバンド単位での拡大処理の説明図である。本実施形態では、多値画像データの一部である６４ライン分の画像データ６０１を３２ラインずつに分けて、それぞれＲＡＭ４０５の第１のメモリ領域６０２と第２のメモリ領域６０３に配置する。本実施形態では、拡大処理による拡大率は３倍（３００％）とし、１バンドで出力するバンドライン数を１６ラインとする。１バンドで出力するバンドライン数を１６ライン固定として、複数のバンド単位で拡大処理をしていくと、次のバンドで参照する画像データの先頭ライン位置は、１６ライン÷３倍＝５．３ラインとなる。すなわち、次のバンドで参照する画像データの先頭ライン位置は、現在のバンドで参照する画像データの先頭ライン位置と比較して５ライン又は６ラインインクリメントする。したがって、拡大率が３倍の場合、バンド内のいずれのラインでバッファの境界（メモリアドレスの境界）を跨ぐことになるかは固定されない。すなわち、拡大率が３倍である場合、バッファを跨ぐ場合とバッファを跨がない場合があり、さらに、跨ぐ時のライン位置が毎回変わる。そのため、本実施形態のような拡大処理の処理位置を算出してその都度参照する画像データのライン位置を算出する必要がある。なお、１バンドで出力するバンドライン数が１６ライン固定の場合、倍率が奇数であれば同様である。さらに言えば、１６ライン固定ではない場合であっても、（出力バンドライン数）÷（拡大率）の値が整数ではない場合は、バンド内のどのラインでバッファの境界を跨ぐことになるかは固定されない。
【００３８】
ここで、複数のバンドのうち処理バンド６０４を例に挙げて、バッファ境界におけるライン位置の拡大処理について説明する。処理バンド６０４が参照する画像データのライン数は、（出力ライン数÷倍率）＋（各ラインの参照ライン数）−１で求められる。したがって、本実施形態では、１６（ライン）÷３（倍）＋４−１＝８．３となり、処理バンド６０４内で参照するライン数は、切り上げた９ラインとなる。その９ラインうち、上の４ラインは第１のメモリ領域６０２に含まれるライン（６０５）で、下の５ラインは第２のメモリ領域６０３に含まれるライン（６０６）となる。すなわち、メモリアドレス上で連続していないのは、処理バンド６０４内の４ライン目と５ライン目となる。図４において、６０７は処理バンド６０４が第１のメモリ領域で参照するラインのうち先頭ラインの先頭画素のアドレスであり、以下、「処理バンド６０４の第１のメモリ領域の先頭画素アドレス」とする。また、６０８は処理バンド６０４が第２のメモリ領域で参照するラインのうち先頭ラインの先頭画素のアドレスであり、以下、「処理バンド６０４の第２のメモリ領域の先頭画素アドレス」とする。
【００３９】
６０９はライン毎の左端画素のアドレスの差を示したアドレス値であり、以下、「ラインオフセット」とする。また、処理バンド６０４における着目ライン位置の初期ライン位置は、倍率が３倍であるため、図３の５０８、５０９、５１０を選択でき、いずれを選択してもよいが、本実施形態では初期ライン位置を５０８とする。
【００４０】
図５は、第１のデータ処理部４０７が拡大処理部１０２へデータ供給する際のライン管理に関する制御フローチャートを示す図である。図４の処理バンド６０４を拡大処理する際のデータフローを例に挙げて説明する。なお、本実施形態では、処理バンド６０４は、拡大倍率が３倍で、出力ライン数が１６ラインであるため、拡大画像処理を１６回行うことになる。
【００４１】
まず、ステップＳ７０１で、ＣＰＵ４０４により、データ処理部４０７内のレジスタ（１０６、１０７、１０８、１０９、１１０、１１１、１１６、１１７）の設定を行う。
【００４２】
次に、ステップＳ７０２で、各レジスタ設定値をＬ１、Ｌ２、Ａ１、Ａ２、Ｂ、Ｒ、ＳＢの内部パラメータへ反映させる。具体的には、Ｌ１へメモリ１のライン数格納部１１０のライン数を設定し、Ａ１へメモリ１の先頭アドレス格納部１０８のアドレス値を設定する。Ｌ２へメモリ２のライン数格納部１１１のライン数を設定し、Ａ２へメモリ２の先頭アドレス格納部１０９のアドレス値を設定する。Ｂへ画像出力ライン数格納部１１６のライン数をバンド出力ライン数として設定する。Ｒには、参照ライン数を設定する。本実施形態では、動作モードがバイキュービックアルゴリズムであるため参照ライン数として、Ｒには４ラインを設定する。ＳＢへ画像データ情報格納部１０７の初期ライン位置である１ライン目を指定する。
【００４３】
ステップＳ７０３で、作業パラメータの初期化を行う。ＣＡ１は、ＤＭＡＣ開始時の第１のメモリ領域から読み出す先頭画素アドレスを示すパラメータであり、ＣＡ１の初期値としてＡ１の設定値を設定する。ＣＡ２は、ＤＭＡＣ開始時の第２のメモリ領域から読み出す先頭画素アドレスを示すパラメータであり、ＣＡ２の初期値としてＡ２の設定値を設定する。
【００４４】
ステップＳ７０４で、ＣＰＵ４０４がバンド処理を開始する指示をする。
【００４５】
ステップＳ７０５で、処理ライン位置計算部１０３に拡大処理を行う処理ラインの位置を計算させる。処理バンド６０４の最初の処理の場合、図４の処理バンド６０４内の１，２，３，４ライン目が参照ラインとなり、ＳＢが１ライン目であることから、着目ライン位置は、処理バンド６０４内の２，３ライン目の間となる。バンド６０４内の１〜４ライン目が図３の５０３〜５０６に対応する場合、着目ラインの位置は、図３のライン位置５０８となる。
【００４６】
続いて、ステップＳ７０６で、参照画像データ制御部１０４が参照画像データのライン位置を更新するかを判定する。参照画像データのライン位置を更新する場合は、Ｓ７０７へ進み、参照画像データのライン位置を更新しない場合は、Ｓ７２５へ進む。ここでは、バンド処理の最初の処理であり更新が必要であるため、ステップＳ７０７へ進む。
【００４７】
ステップＳ７０７で、参照画像データ制御部１０４がＬ１のライン数がＲのライン数以上であるかを判定する。Ｒのライン数以上ならばステップＳ７０８へ進み、Ｒのライン数に満たない場合はステップＳ７１０へ進む。ここでは、処理バンド６０４の最初の処理であるため、Ｌ１は４ラインでありＲのライン数（４ライン）以上であるため、ステップＳ７０８へ進む。
【００４８】
ステップＳ７０８で、参照画像データ制御部１０４がメモリ１の読み出しライン数格納部１１４へＲを設定する。ここでは、Ｒへ４ラインを設定する。ステップＳ７０９で、参照画像データ制御部１０４がメモリ２の読み出しライン数格納部１１５へ０ラインを設定する。続いて、ステップＳ７１２で、参照画像データ制御部１０４がメモリ１の読み出しアドレス格納部１１２へＣＡ１を設定する。続いて、参照画像データ制御部１０４がメモリ２の読み出しアドレス格納部１１３へＣＡ２を設定する。上述したＳ７０８〜Ｓ７１３により、ＤＭＡＣに設定するパラメータの生成を終える。
【００４９】
次に、次の参照画像データを更新する際のパラメータを準備する処理を行う。まず、ステップＳ７１４で、参照画像データ制御部１０４が、Ｌ１が１以上かを判定する。Ｌ１が１以上であればＳ７１５へ進み、Ｌ１が０であればＳ７１６へ進む。処理１回目では、Ｌ１は４ラインであるため、ステップＳ７１５へ進む。ステップＳ７１５で、参照画像データ制御部１０４がＬ１を１減算し、Ｌ１は３ラインとなり、ステップＳ７１７へ進む。ステップＳ７１７で、参照画像データ制御部１０４が、再度Ｌ１が１以上かを判定する。Ｌ１が１以上である場合はＳ７１８へ進み、Ｌ１が０の場合はＳ７２５へ進む。ここでは、Ｌ１は３ラインであるため、ステップＳ７１８へ進む。ステップＳ７１８で、参照画像データ制御部１０４が、Ａ１にラインオフセットを加算したアドレス値をＣＡ１に設定する。ＣＡ２は第２のメモリ領域から参照データを読み出すことがないため、更新をせずに、ステップＳ７２５へ進む。Ｓ７１４〜Ｓ７１８が、次回更新時のパラメータを準備するための処理フローになる。
【００５０】
続いて、ステップＳ７２５で、ＤＭＡＣ制御部１０５により、メモリ１の読み出しアドレス格納部１１２、メモリ２の読み出しアドレス格納部１１３、メモリ１の読み出しライン数格納部１１４、メモリ２の読み出しライン数格納部１１５の設定値を取り出す。ＤＭＡＣ制御部１０５が設定値を取りだした後、その設定値を入力用ＤＭＡＣ１０１へ設定する。
【００５１】
ステップＳ７２６で、ＤＭＡＣ制御部１０５が入力用ＤＭＡＣ１０１への設定が完了後、ＤＭＡ転送の開始を入力用ＤＭＡＣへ通知し、入力用ＤＭＡＣ１０１は設定指示に従ってＤＭＡ転送を開始する。具体的には、ＤＭＡＣ１０１では、まず、第１のメモリ領域６０２から、メモリ１の読み出しアドレスから参照ラインの１ライン目の３２画素分を３２Ｂｙｔｅのバースト転送で読み出す。続いて、メモリ１の読み出しアドレスにラインオフセット６０９を足したアドレスから参照ラインの２ライン目の３２画素分を３２Ｂｙｔｅのバースト転送で読み出す。同様に、ラインオフセット６０９を用いて、３ライン目、４ライン目もメモリ１から読み出す。なお、本実施形態では、メモリからの読み出しはバースト転送により行ったが、これに限定されるものではない。４ライン目まで読み出すと、拡大処理部１０２に参照ラインの４ラインの左端の３２画素分を供給できるようになり、拡大の画像処理が開始される。拡大された画像データは出力用ＤＭＡＣ１１６へ送信され、出力用ＤＭＡＣ１１６がこれをＲＡＭ４０５へ格納する。本実施形態では、３２画素の３倍である９６画素分出力されると、再度入力用ＤＭＡＣ１０１が先ほどの続きから４ライン分の３２画素のデータを読み出し、拡大処理部１０２へ供給し、同様に画像処理を行う。このような処理を画像データの右端になるまで繰り返す。
【００５２】
ステップＳ７２７で、画像データの右端まで拡大処理が行われた後、ＤＭＡＣ制御部１０５は、拡大処理部１０２から画像処理終了の通知を受け、ステップＳ７２８へ進む。
【００５３】
ステップＳ７２８で、処理ライン位置計算部１０３がバンド処理の出力ライン数に達したかを判定する。バンド処理の出力ライン数に達した場合はＳ７２９へ進み、出力ライン数に達していない場合はＳ７０５へ戻る。出力ライン数は１６ラインで、今は１ライン目であるため、ステップＳ７０５へ戻る。
【００５４】
以上が、処理バンド６０４の１回目の処理における制御フローとなる。
【００５５】
続いて、処理バンド６０４の２回目の処理における制御フローを簡単に説明する。まず、ステップＳ７０５で、処理ライン位置計算部１０３が処理ライン位置を１ラインインクリメントし、処理ライン位置は、図３のライン位置５０９になる。ステップＳ７０６で、着目ライン位置５０９が図４の処理バンド内の２、３ライン目の間になり、上下２ラインの参照するライン位置と変わらないため、参照画像データのライン位置を変更する必要がないと判断し、ステップＳ７２５へ進む。ステップＳ７２５、Ｓ７２６、７２７では、１回目と同じ設定をＤＭＡＣ１０１へ設定してＤＭＡ転送をスタートし、ＤＭＡ転送を終了する。そして、ステップＳ７２８で、２回目の処理であるため、再び、ステップＳ７０５へ戻る。以上が、処理バンド６０４の２回目の処理における制御フローとなる。
【００５６】
なお、拡大率が３倍の場合は、３回に１度参照画像データのライン位置を更新すればよい。したがって、ステップＳ７２５で参照画像データのライン位置を更新しないと判定するのは、２回目の処理だけでなく、３回目、５回目、６回目、８回目、９回目、１１回目、１２回目、１４回目、１５回目も同様である。これらは、２回目の処理と同様のフローとなるため説明を省略する。
【００５７】
続いて、処理バンド６０４の４回目の処理における制御フローを説明する。ステップＳ７０５で、処理ライン位置計算部１０３が処理ライン位置を１ラインインクリメントし、処理ラインの位置は、図３のライン位置５１１になる。すなわち、処理ラインの位置は、図４の処理バンド内の３，４ライン目の間となり、参照するライン位置が図４の処理バンド内の２，３，４，５ライン目となる。そのため、ステップＳ７０５で、参照画像データの読み出し情報を更新すること判断し、ステップＳ７０７へ進む。ステップＳ７０７で、Ｌ１は３ラインであるため、ステップＳ７１０へ進む。ステップＳ７１０で、参照画像データ制御部１０４がメモリ１の読み出しライン数格納部１１４へＬ１の３ラインを設定する。ステップＳ７１１で、参照画像データ制御部１０４がメモリ２の読み出しライン数格納部１１５へＲ−Ｌ１（ここでは、４ライン−３ライン）の１ラインを設定する。そして、ステップＳ７１２，Ｓ７１３で、参照画像データ制御部１０４がメモリ１の読み出しアドレス格納部１１２、メモリ２の読み出しアドレス格納部１１２へＣＡ１とＣＡ２をそれぞれ設定する。続いて、ステップＳ７１４からステップＳ７１８を経由してＳ７２８まで進む。ステップＳ７２８で、４回目の処理であるため、再び、ステップＳ７０５へ戻る。なお、バンド処理の７回目も同様のフローとなるため、説明を省略する。
【００５８】
次に、処理バンド６０４の１０回目、１３回目、１６回目の処理について説明する。１０回目、１３回目、１６回目の処理の場合、処理ラインの位置が参照ラインの２ライン目と３ライン目の間ではなくなるため、ステップＳ７０６で参照ラインの位置を更新すると判断し、ステップＳ７０７へ進む。
【００５９】
まず、処理バンド６０４の１０回目の処理における制御フローを説明する。１０回目の処理では、ステップＳ７０７へ進んだ後、Ｓ７１０を経由してステップＳ７１７へ進む。ステップＳ７１７で、Ｌ１は、０ラインであるため、ＣＡ１及びＣＡ２の更新をせずに、ステップＳ７２５を経由してステップＳ７２８へ進む。ステップＳ７２８で、１０回目の処理であるためバンド処理の出力ライン数に達していないと判断し、再び、ステップＳ７０５へ戻る。つまり、次回の更新するタイミングであるバンド処理の１３回目では、メモリ１からの参照データの読み出しが発生しないことになる。
【００６０】
処理バンド６０４の１３回目及び１６回目の処理では、ステップＳ７０７へ進んだ後、Ｓ７１０を経由してステップＳ７１４へ進む。ステップＳ７１４で、Ｌ１は、０ラインであるため、ステップＳ７１６へ進む。ステップＳ７１６で、Ｌ２が５ラインであるため、参照画像データ制御部１０４がＬ２のライン数を１減算してＬ２は４ラインとなる。ステップＳ７２３では、参照画像データ制御部１０４がＣＡ２へＡ２にラインオフセットを加算したアドレス値を設定し、ステップＳ７２５を経由してステップＳ７２８へ進む。なお、ＣＡ１はＬ１が０ラインであるため、使用しないことから設定を更新しない。ステップＳ７２８で、１０回目の処理のときは、バンド処理の出力ライン数に達していないと判断し、再び、ステップＳ７０５へ戻る。一方、１６回目の処理では、処理回数が１６回であり、出力ライン数に達したと判断し、ステップＳ７２９へ進む。ステップＳ７２９で、バンド処理が終了したことがＣＰＵ４０４へ通知され、ＣＰＵ４０５がバンド処理を完了したことを検知する。
【００６１】
図６は、処理バンド６０４において、参照する画像データを処理する際にメモリから読み出すライン数及び読み出し時の先頭アドレスの位置を処理回数毎に整理した図である。ここで、第１のメモリ領域のライン数はＬ１に対応し、第２のメモリ領域のライン数はＬ２に対応する。
【００６２】
図６に示すように、拡大率が３倍であるため、バンド内の処理回数が１〜１２回目の場合は、バンド内の処理回数が３の倍数のときに第１のメモリ領域の読み出し時の先頭アドレスの位置が変わる。そして、処理回数が１３回目以降は、参照ラインがすべて第２のメモリ領域となる。本実施形態では、出力対象である着目ラインの位置を算出し、その着目ラインの位置に応じて参照すべきライン位置をメモリ領域毎に決定する。これにより、バンド内で参照画像データが２つのメモリ領域に分割されていても拡大処理部へデータを供給することができる。したがって、２つのメモリ領域の画像データを参照するような画像処理であっても、ＤＭＡＣを用いることにより、ＣＰＵが途中で介在することなく、バンド処理することが可能になる。また、メモリ上のデータコピーなどによるメモリ使用量を増大させることなく、バンド処理することが可能になる。すなわち、画像データを複数ラインずつに分割して複数のバンドを生成し、バンド毎に画像処理を実行する際に、ＤＭＡＣを用いることにより、ＣＰＵが途中で介在することなく複数ラインを一度に処理することが可能となる。また、無駄なメモリアクセスを抑制することができる。したがって、周辺画素を参照する画像処理において、より高速な画像処理を行うことができる。
【００６３】
（実施形態２）
図７〜９は、実施形態２に係る画像処理を説明する図である。本実施形態では、実施形態１と同様の部分については重複する説明は省略する。
【００６４】
実施形態１では、メモリ領域（第１のメモリ領域６０２，第２のメモリ領域６０３）を跨ぐ画像データとして、図４の画像データ６０１のように連続した画像データを例に挙げて説明した。本実施形態では、さらに、オリジナルの画像データが全て白データというラインを含む場合、ホストコンピュータからそのラインを送信しない又はホストコンピュータとプリンタ間の転送帯域を下げる。
【００６５】
ここで、例えば、図７の画像データ９０１のように有効な画像データの間に白データ９０２が５ラインある場合について説明する。白データ９０２は実際にはメモリ領域に転送されてこないため、メモリ管理上は無効データが白データ９０２分存在することになる。例えば、メモリ管理上、第１のメモリ領域６０２の１６ライン分の領域のうち、上９ラインが有効画像データで、中５ラインが無効データ９０３で、下２ラインが有効データ（９０５）として格納される。この有効データの参照ライン９０５を含んだ画像を処理する際、例えば、上２ラインを白データ、下２ラインを参照ライン９０５の２ラインとして、このうちの半分の有効な参照ライン９０５を参照して処理することが望まれる。そのような場合、上２ラインの白データをメモリ上から読み出すのではなく、画像処理内部で自動生成して白データを補完することで、読み出す参照ラインを２ラインとして効率的にデータを供給及び処理する。本実施形態では、画像データの上端や下端、すなわち、参照ラインが一部存在しない部分についても、白データの補完処理を行うことにより、バンド処理単位で拡大処理を行う。すなわち、補完処理による参照ライン数の読み出しライン数を可変に対応することができる。
【００６６】
例えば、図７の処理バンド９０４を拡大処理する場合、参照する画像データは７ラインあり、そのうち、上の２ラインは第１のメモリ領域（９０５）で、下の５ラインは第２のメモリ領域（９０６）になる。つまり、処理バンド９０４のメモリアドレス上連続していないのは、バンド内の２ライン目と３ライン目となる。
【００６７】
ここで、図７において、９０７は処理バンド９０４の第１のメモリ領域６０２の先頭画素アドレスであり、９０８は第２のメモリ領域６０３の先頭画素アドレスである。ラインオフセットは図４のラインオフセット６０９と同じである。また、拡大倍率が３倍であるため、処理バンド９０４における着目ライン位置において初期ライン位置を図３の５０８，５０９，５１０から選択できるが、本実施形態では、実施形態１と同様に初期ライン位置を５０８とする。また、処理バンド９０４が画像データの上端であるという情報を図１のＣＰＵ４０４が画像データ情報格納部１０７へバンド処理開始前に設定する。
【００６８】
ライン管理に着目した制御フローを図８に示す。図８の制御フローは、図５の制御フローに、ステップＳ１００１とＳ１００２とＳ１００３が追加されたものである。図８の制御フローでは、処理回数に応じて参照ライン数を増加させていくことで画像データの上端位置でのデータ供給を実現している。まず、ステップＳ７０１で、画像データの上端であることをＣＰＵが設定し、ステップＳ７０２で、ＣＰＵ４０４は、各レジスタ設定値をＬ１、Ｌ２、Ａ１、Ａ２、Ｂ、Ｒ、ＳＢの内部パラメータへ反映させる。本実施形態では、Ｌ１、Ｌ２、Ａ１、Ａ２、Ｂ、ＳＢは実施形態１と同様に設定するが、参照ライン数の初期値Ｒは、４ラインではなく、２ラインに設定する。ステップＳ１００１では、通常時の参照ライン数、すなわち、白ラインが存在しない場合のライン数をＲ０に設定する。ここでは、バイキュービックアルゴリズムでの参照ラインを通常時の参照ラインとして、Ｒ０に４ラインを設定する。その後のＳ７０４〜Ｓ７１３までのフローは、図５と同じであるため説明を省略する。
【００６９】
ステップＳ１００２で、参照画像データ制御部１０４は、現在の参照ライン数ＲがＲ０と同じであるかを判定し、ＲがＲ０に満たない場合はステップＳ１００３に進み、Ｒ＝Ｒ０の場合はステップＳ７１４へ進み、読み出すライン数やアドレスの更新処理を行う。ステップＳ１００３では、参照画像データ制御部１０４が参照ラインＲに対して１ライン加算する処理を行い、読み出すライン数やアドレスの更新の処理をスキップする。このようにして、ステップＳ７０６で参照画像データを更新すると判断される毎に参照ラインＲのライン数をＲ０まで増やしていくことにより、画像データの上端で異なるメモリ間を跨ぐ場合でもデータを供給することができる。
【００７０】
図９に、処理バンド９０４において、参照する画像データをメモリから読み出すためのライン数及び読み出し時の先頭アドレスの位置、有効データの参照ライン数及び補完ライン数を処理回数毎に整理した図を示す。図９に示すように、バンド内の処理回数がいずれの場合も、有効データの参照ライン数と補完ライン数の合計が４となる。ここで、参照ライン数は、各メモリ領域から読み込むライン数であり、補完ライン数とは、補完処理により生成される補完データのライン数である。
【００７１】
本実施形態では、上端に白データがある場合について説明したが、下端に白データがある場合も同様である。具体的には、画像データ情報格納部１０７に画像データの下端である情報を設定し、処理ライン位置に応じて参照ラインのＲを徐々に減らしていくことで対応することができる。
【００７２】
本実施形態では、実施形態１と同様に、バンド内で参照画像データが２つのメモリ領域に分割されていても拡大処理部へデータを供給することができる。したがって、２つのメモリ領域の画像データを参照するような画像処理であっても、ＤＭＡＣを用いることにより、ＣＰＵによる途中介在や、メモリ上のデータコピーなどを行うことなく、バンド処理することが可能になる。
【００７３】
また、本実施形態によれば、メモリ上に存在しない白データ（補完データ）を生成する場合であっても、ＤＭＡＣを用いることにより、ＣＰＵが途中で介在することなく、バンド処理することが可能になる。また、メモリ上のデータコピーなどによるメモリ使用量を増大させることなく、バンド処理することが可能になる。
【００７４】
（他の実施形態）
以上、本発明の各実施形態を説明したが、本発明の基本的構成は上述したものに限定されるものではない。例えば、上述した実施形態では、拡大処理の倍率を３倍としたが、拡大処理の倍率は特に限定されるものではない。なお、倍率を変更することにより、ステップＳ７０６での更新をする処理回数が変更され、また、倍率によっては、バッファを跨ぐときのライン位置が固定されることがある。
【００７５】
上述した実施形態では、バンド内の拡大処理が１回につき拡大された画像データを１ラインずつ出力するものを例に挙げて説明したが、複数ライン同時に出力する場合も同様である。
【００７６】
また、上述した実施形態では、処理バンド６０４の初期ライン位置を３通りのうち１ライン目として説明したが、これに限定されるものではなく、２ライン目であっても３ライン目であってもよい。例えば、２ライン目であった場合、ステップ７０６で更新するタイミングがシフトされるだけであり、例えば、４回目で更新するのではなく、３回目で更新することになり、図６の結果に対して全体的に１処理分早くシフトされた結果となる。
【００７７】
また、上述した実施形態では、第１のデータ処理部４０７は、印刷ジョブに含まれる印刷条件に従ってＲＡＭ４０５に格納された画像データの拡大処理を行うものとしたが、縮小処理を行うものとしてもよい。この場合は、着目ラインの位置及び縮小率（変倍率）に基づいて、各メモリ領域から転送する入力データのライン数及びそのアドレスを決定するようにすればよい。
【００７８】
上述した実施形態では、バッファの数を２つの場合を例に挙げて説明したが、１つのバンド処理で参照する画像データのメモリ領域を跨ぐようなメモリ配置であれば、本発明を適用可能である。すなわち、例えば、１つのバンド処理で参照する画像データが３以上のバッファを跨ぐようなメモリ配置であってもよく、バッファはリングバッファであってもよい。
【００７９】
上述した実施形態では、複数のバッファをＲＡＭ４０５内に設ける構成としたが、ＲＡＭを複数個用意してそれぞれを１つのバッファとする構成であってもよい。
【００８０】
上述した実施形態では、拡大処理のアルゴリズムとして４ラインを参照するバイキュービックを例に挙げて説明したが、これに限定されず、上下の画素を参照して処理を行うものであれば本発明を適用可能である。例えば、拡大処理のアルゴリズムとしてバイキュービックの代わりに２ラインを参照するバイリニアを用いてもよい。
【００８１】
上述した実施形態では、拡大処理を例にて説明したが、本発明に係る画像処理のデータ転送方法は、これに限定されるものではなく、上下の画素を参照して処理を行うものであり、メモリ領域を跨ぐことになるものであればよい。例えば、縮小処理やアンシャープマスクのような画像処理であってもよい。
【００８２】
上述した実施形態では、画像処理の一例として拡大処理について説明したが、本発明は、これに限定されず、バンド間を跨ぐ画像処理の際には適用することができる。
【００８３】
上述した実施形態では、インクジェットプリンタを例に挙げて説明したが、上下画素を参照する画像処理を備えていれば、本発明を適用することができる。したがって、画像形成装置は、インクジェットプリンタに限定されるものではなく、例えば、レーザプリンタや複写機のような印刷機であってもよく、ファクシミリ装置、携帯電話、ＰＤＡ、画像ビューワー、デジタルカメラなどの他の画像形成装置であってもよい。
【００８４】
また、上述した実施形態の処理の全てをハードウェアで実行する必要はなく、一部をソフトウェアによって構成してもよい。
【符号の説明】
【００８５】
１０１  入力用ＤＭＡＣ
１１６  出力用ＤＭＡＣ
１０２  拡大処理部
１０３  処理ライン位置計算部
１０４  参照画像データ制御部
１０５  ＤＭＡＣ制御部
【図１】
2015022363.tif 000003
【図２】
2015022363.tif 000004
【図３】
2015022363.tif 000005
【図４】
2015022363.tif 000006
【図５】
2015022363.tif 000007
【図６】
2015022363.tif 000008
【図７】
2015022363.tif 000009
【図８】
2015022363.tif 000010
【図９】
2015022363.tif 000011