(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-23
(45)【発行日】2024-07-31
(54)【発明の名称】データ転送装置、複合機、データ転送装置の制御方法およびプログラム
(51)【国際特許分類】
H04N 1/21 20060101AFI20240724BHJP
G06T 1/20 20060101ALI20240724BHJP
【FI】
H04N1/21
G06T1/20 A
(21)【出願番号】P 2020155756
(22)【出願日】2020-09-16
【審査請求日】2023-09-08
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】川本 智之
【審査官】鈴木 明
(56)【参考文献】
【文献】特開2015-222932(JP,A)
【文献】特開2005-110124(JP,A)
【文献】特開2003-251865(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 1/21
G06T 1/20
(57)【特許請求の範囲】
【請求項1】
画像が分割された複数のバンド領域を並列に処理可能な画像処理手段との間でデータを転送するデータ転送装置であって、
並列に転送するバンド領域の数を示す並列転送数で前記画像処理手段により並列に処理された1以上のバンド領域の画素値と画素の位置情報とを含むコマンドを受信する受信手段と、
前記コマンドに含まれる前記位置情報に基づいて前記バンド領域のライン数を更新するライン数更新手段と、
前記ライン数更新手段により更新されたライン数と、前記並列転送数とに基づいて、前記バンド領域のライン位置を示すライン位置情報を更新するライン位置情報更新手段と、
を備えることを特徴とするデータ転送装置。
【請求項2】
前記画素の前記位置情報は、前記バンド領域の上端を示す位置情報又は前記バンド領域の下端を示す位置情報を含み、
前記ライン数更新手段は、前記上端を示す位置情報を含むコマンドが受信されてから、前記下端を示す位置情報を含むコマンドが受信されるまでのコマンド数に基づいて、前記ライン数を算出して更新することを特徴とする請求項1に記載のデータ転送装置。
【請求項3】
前記ライン位置情報更新手段は、前記並列転送数と前記ライン数更新手段により更新されたライン数とを乗じた値を予め保持している現在のライン位置情報に加算することにより更新を行うことを特徴とする請求項1又は2に記載のデータ転送装置。
【請求項4】
前記ライン位置情報更新手段は、前記画像処理手段により処理されたバンド領域のデータのメモリへの転送が完了した後に更新を行うことを特徴とする請求項1乃至3の何れか1項に記載のデータ転送装置。
【請求項5】
第1の転送モードと第2の転送モードとを切り替える切替手段をさらに備え、
前記第1の転送モードにおいて、
前記ライン数更新手段は、並列に転送する各々のバンド領域のライン数を算出し、
前記ライン位置情報更新手段は、並列に転送する各々のバンド領域のライン位置情報を算出し、
前記切替手段により前記第1の転送モードから切り替えられた前記第2の転送モードにおいて、
前記ライン位置情報更新手段は、前記第1の転送モードにおいて前記ライン数更新手段により算出されたライン数を合計した値を用いてライン位置情報を更新することを特徴とする請求項1乃至4の何れか1項に記載のデータ転送装置。
【請求項6】
前記並列転送数は1から3の範囲の何れかであることを特徴とする請求項1乃至5の何れか1項に記載のデータ転送装置。
【請求項7】
請求項1乃至6の何れか1項に記載のデータ転送装置と前記画像処理手段とを備える演算手段と、
前記演算手段の演算結果に基づいて前記画像を印刷する印刷手段と、
を備えることを特徴とする複合機。
【請求項8】
画像が分割された複数のバンド領域を並列に処理可能な画像処理手段との間でデータを転送するデータ転送装置の制御方法であって、
並列に転送するバンド領域の数を示す並列転送数で前記画像処理手段により並列に処理された1以上のバンド領域の画素値と画素の位置情報とを含むコマンドを受信する受信工程と、
前記コマンドに含まれる前記位置情報に基づいて前記バンド領域のライン数を更新するライン数更新工程と、
前記ライン数更新工程により更新されたライン数と、前記並列転送数とに基づいて、前記バンド領域のライン位置を示すライン位置情報を更新するライン位置情報更新工程と、
を有することを特徴とするデータ転送装置の制御方法。
【請求項9】
コンピュータを、請求項1乃至6の何れか1項に記載のデータ転送装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ転送装置、複合機、データ転送装置の制御方法およびプログラムに関する。
【背景技術】
【0002】
画像データは、利用される場面に応じて、点順次形式、面順次形式、線順次形式など様々な格納形式で記憶領域に格納される。いずれの格納形式でも容易に画像データの転送を行えるように、画像データを所定のフォーマットの画像処理コマンドに変換して転送する手法が知られている。
【0003】
特許文献1では、画像処理コマンドのフォーマットとして、1画素を1つの画像転送コマンドとし、複数の色成分を格納するフィールド及び画素の位置情報を備えるように構成している。このような画像転送コマンドは、いずれの格納形式であっても1画素単位の画像転送コマンドとなる。そのため、例えば、1画素3色で形成されるカラー画素と1画素1色で形成されるモノクロ画素とは、いずれも1つの画像転送コマンドで転送することができる。ただし、3色分の色成分を格納するフィールドを備える画像転送コマンドによりモノクロ画素の転送を行う際には、空のフィールドを含む状態で転送することになる。
【0004】
特許文献1では、さらに、この空のフィールドを活用してモノクロ画像データの転送効率を向上させる手法が開示されている。この手法では、モノクロ画像を一定間隔で分割した矩形領域(以後、バンド領域と呼び、その領域の大きさをバンドサイズと呼ぶ)を面順次形式のカラー画像の各色として模擬し、1つの画像処理コマンドに複数のバンド領域の画素データを格納する。これにより、複数のバンド領域を並列に転送する(以後、モノクロ高速化と呼ぶ)ことが可能となる。つまり、画像処理コマンドが3色分の色成分を格納できるフィールドを持つ場合、1つの画像処理コマンドに3画素分のモノクロ画素を格納して転送できるため、モノクロ画像の転送効率をカラー画像と比べて3倍とすることが可能となる。
【0005】
また、画像処理は、拡大縮小や、フィルタ処理など、出力するバンドサイズが変化する処理を含む場合がある。このような場合、画像処理を終えたバンドデータを、DRAM上の連続した領域に格納するためには、変化したバンドサイズに合わせてDRAM上の格納アドレスを算出する必要がある。しかし、バンドサイズは画像処理の内容によって変化するため、CPUなどであらかじめ格納アドレスを算出する場合には、画像処理に応じたアドレス算出や、画像処理装置に対してアドレス設定するための割り込み制御等が必要となり、制御に時間を要することとなる。
【0006】
これに対して、特許文献2では、コマンドに含まれる画素位置情報を画像処理後のバンドサイズに合わせて更新し、データ転送部で更新された画素位置情報を用いてバンドサイズを算出することで、自律的にDRAM上の格納アドレスを算出する手法が開示されている。これにより、CPUの制御を抑え、画像処理部の制御時間を短縮しつつ、バンド画像を連続処理することが可能となる。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2015-115837号公報
【文献】特開2018-196156号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献2に記載の手法では、画素位置情報は1つのバンドを転送することを想定して付与されたものとなっている。このため、特許文献1のように複数のバンドデータを1つの画像転送コマンドで転送する場合には、実際に転送しているバンドデータのライン数を算出することができない。このため、画像処理による各バンドのサイズの変化をCPUなどによって算出し、データ転送部に設定する必要があり、制御に時間を要するという課題がある。
【0009】
本発明は、上記の課題に鑑みてなされたものであり、1つの画像転送コマンドで複数のバンドデータを同時に転送する場合においても、CPUの介在を抑制しつつデータ転送を行うための技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記の目的を達成する本発明の一態様によるデータ転送装置は、
画像が分割された複数のバンド領域を並列に処理可能な画像処理手段との間でデータを転送するデータ転送装置であって、
並列に転送するバンド領域の数を示す並列転送数で前記画像処理手段により並列に処理された1以上のバンド領域の画素値と画素の位置情報とを含むコマンドを受信する受信手段と、
前記コマンドに含まれる前記位置情報に基づいて前記バンド領域のライン数を更新するライン数更新手段と、
前記ライン数更新手段により更新されたライン数と、前記並列転送数とに基づいて、前記バンド領域のライン位置を示すライン位置情報を更新するライン位置情報更新手段と、
を備えることを特徴とする。
【発明の効果】
【0011】
本発明によれば、1つの画像転送コマンドで複数のバンドを同時に転送する場合においても、CPUの介在を抑制しつつデータ転送を行うことが可能となる。従って、制御時間を短縮することが可能となる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施形態に係る複合機の構成例を示すブロック図である。
【
図2】第1の実施形態に係る制御部が備える各構成要素の相互作用を示したシーケンス図である。
【
図3】第1の実施形態に係る原稿を複数のバンドに分割した際の一例を示した図である。
【
図4】第1の実施形態に係る演算部の構成例を示すブロック図である。
【
図5】第1の実施形態に係るデータ転送部の構成例を示すブロック図である。
【
図6】第1の実施形態に係るDPLの一例を示した図である。
【
図7】第1の実施形態に係るステート制御部の状態遷移図である。
【
図8】第1の実施形態に係るDRAM上の画像データ格納形式を示した図である。
【
図9】第1の実施形態に係る演算部で扱う画像処理コマンドのフォーマットを示した図である。
【
図10】第1の実施形態に係るバンド内の各画素の転送順とフラグ情報の位置関係を示した図である。
【
図11】第1の実施形態に係る画像転送ステートにおけるコマンド受信部のフローチャートである。
【
図12】第1の実施形態に係るバンドとレジスタ群の設定値の関係を示す図である。
【
図13】第1の実施形態に係るコマンド受信部のレジスタ更新にかかる構成を示した図である。
【
図14】第2の実施形態に係るデータ転送部の構成例を示すブロック図である。
【
図15】第2の実施形態に係るDPLの一例を示した図である。
【
図16】第2の実施形態に係る画像転送ステートにおけるコマンド受信部のフローチャートである。
【
図17】第2の実施形態に係るコマンド受信部のレジスタ更新にかかる構成を示した図である。
【発明を実施するための形態】
【0013】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0014】
<第1の実施形態>
本実施形態では、バンド領域内の画素位置を示すフラグ情報を含む画像転送コマンドを用いて、データ転送部においてバンド領域のライン数を算出する。そして、画像転送後に算出したライン数と、並列で転送するバンド数である並列転送数(例えば1~3の何れか)とを用いて、各バンドのDRAM上の格納アドレスを算出する。
【0015】
●複合機の構成
図1は、第1の実施形態に係る複合機の一構成例を示すブロック図である。
図1の複合機100は、制御部110、スキャナ120、及びプリンタ130を備えている。
【0016】
スキャナ120は、原稿を読み取り、画像データに変換する光学装置である。スキャナ120が備えるLED等の光源を用いて原稿に光を照射し、反射光をCCD方式あるいはCIS方式等のセンサで読み取り、生成されたアナログ信号をA/D変換することで画像データを取得する。
【0017】
プリンタ130は、制御部110の演算結果として取得される印刷画像データに従って、用紙に対してインクを吐出することで、用紙上に画像を形成する印刷装置である。印刷方式はインクジェット方式に限る物ではなく、電子写真方式やその他の印刷方式を用いても良い。
【0018】
制御部110は、スキャナ120及びプリンタ130に対する動作の指示や、画像処理などを行う制御装置である。制御部110は、CPU111、ROM112、DRAM113、スキャナI/F114、プリンタI/F115、演算部116、及び外部記憶I/F117を備えており、各構成要素はバス118を介して接続されている。
【0019】
ROM112は、制御部110の各構成要素を制御するための、スキャンやコピー、印刷用のプログラムが格納された記憶装置である。CPU111は、ROM112に格納されているプログラムに従って、制御部110の各構成要素を制御するプロセッサである。
【0020】
DRAM113は、主記憶装置(メモリ)であり、スキャナ120によって読み取られた画像データや、プリンタ130で印刷する画像データ、演算部116の制御に用いられるデータ等、一時的に保持されるデータが格納されている。
【0021】
スキャナI/F114、プリンタI/F115は、CPU111からの指示を受けて、それぞれ接続されているスキャナ120、プリンタ130の動作を制御し、画像データの通信を行うインタフェースである。
【0022】
外部記憶I/F117は、SDカード等の外部記憶装置から画像データを取り込むためのインタフェースである。演算部116は、CPU111からの指示やDRAM113上の制御データに従って、DRAM113上に格納された画像データに対して種々の画像処理を施す演算装置である。スキャナ120で読み取った画像データは、センサ特性によって読み取り時に変化した色味を自然な色味となるよう補正するγ変換処理や、所定の用紙サイズの画像データに変換する拡大・縮小処理などが行われる。また、プリンタ130で印刷する画像データに対しては、文字の輪郭を明瞭にするためのフィルタ処理や、インクで階調を表現するためのハーフトーン処理などが行われる。
【0023】
高画質なスキャン、印刷を短時間に実現し、ユーザビリティ向上を図るため、複合機やプリンタ等のオフィス機器ではCPU等の汎用演算装置とは別に、画像処理を短時間で処理するための専用の演算装置を用いる手法が知られている。ただし、画像処理に特化した演算回路の制御をCPU111などが担う際には、演算部116における画像処理パラメータの設定や動作制御に数ミリ秒オーダの時間を要し、これが処理時間のネックとなる場合がある。本実施形態に係る制御部110は、画像処理パラメータの設定、動作制御に要する時間を低減するための構成を備えている。詳細は後述する。
【0024】
●複合機の動作
次に、
図2を参照しながら、本実施形態に係る複合機100の動作を、コピー処理を行う場合を例に説明する。
【0025】
まず、複合機100においてユーザの操作によってコピー処理の指示がなされると、CPU111は、ROM112に格納されているコピー処理のプログラムを読み出し、各構成要素の制御を開始する。CPU111は、コピー処理用の演算部116のパラメータや動作をプログラムしたコマンドリスト(もしくはディスプレイリストと呼び、以下DPLと表記する)を生成し、DRAM113に格納する。その後、CPU111は、演算部116、スキャナI/F114、及びプリンタI/F115を起動する(F200)。
【0026】
スキャナI/F114は、指示を受けてスキャナ120を起動し、
図3に示す原稿300を主走査方向に順次読み取り、読み取った画像データをDRAM113に格納していく。スキャナI/F120は、原稿300を短冊状に分割して得られたバンド領域(
図3の例ではバンド領域301~308)のうち1バンド分のスキャンデータをDRAM113に書き込む度に、演算部116にバンドの書き込み完了を通知する(F201)。
【0027】
演算部116は、スキャナI/F114からバンドの書き込み完了通知を受ける度に、DPLに従ってDRAM113に格納されたバンドデータを読み出し、スキャン画像処理、プリント画像処理を施してDRAM113に書き戻す。演算部116は、処理したバンドをDRAM113に書き戻し終えたらプリンタI/F115に通知する(F202)。
【0028】
プリンタI/F115は、通知を受けてDRAM113に書き戻されたバンドデータを用紙に印刷していく。最後に、スキャナI/F114、プリンタI/F115、及び演算部116は、原稿300全体に対する処理を終えたら、CPU111に終了を通知し、CPU111はコピー処理を終了する(F203)。
【0029】
このように、原稿を複数のバンド領域に分割して順次画像処理を施していく構成とすることで、印刷済みのデータを次々と破棄していくことができる。よって、DRAM113は、原稿画像全体のデータを保持するだけの容量を備える必要はなく、いくつかのバンド領域のデータを保持できるだけの容量を備えておけば良い。
【0030】
また、
図2に示すように演算部116の処理や制御をDPLによって行い、スキャナI/F114、プリンタI/F115との間で割り込み通知を用いて制御することで、バンド間でのCPU111の介在を抑制しつつコピー処理を行うことができる。
【0031】
ここで、バンドデータは、各種の画像処理が施されることによって、縦方向、横方向の画素数が画像処理を行う前とは異なるサイズとなって出力される場合がある。このような場合、プリンタI/F115が各バンドをDRAM113上の連続した領域から読み出せるようにするためには、CPU111が画像処理によるサイズの変化を計算して演算部116が各バンドを連続した領域に書き込めるように設定する必要がある。このような設定を行うためには、演算部116の各画像処理によるサイズの変化量をCPU111で算出する必要があり、演算負荷の増大や、演算部116への設定制御に要する時間が処理の高速化の妨げとなる可能性がある。
【0032】
そこで、本実施形態では、画像サイズが変化する画像処理を行う場合においても、CPU111が演算部116に対して画像サイズの変化を通知することなく制御すること可能とする機能を演算部116に設ける。
【0033】
●演算部の構成
次に、
図4を用いて、演算部116の構成を説明する。演算部116は、データ転送部401と、画像処理部402とを備えている。
【0034】
データ転送部401は、CPU111の制御やDRAM113に格納されたDPLに従ってレジスタのパラメータ設定やステート制御を行い、DRAM113と画像処理部402との間で設定パラメータやバンド領域の画像データを転送するデータ転送装置である。バンド画像を転送する画像転送ステートでは、所定の形式で格納されたバンド画像をDRAM113から読み出し、所定のフォーマットのコマンドに変換して画像処理部402へ送信する機能を有する。また、画像処理部402から画像処理後のコマンドを受信し、所定のフォーマットに変換してDRAM113に書き戻す機能も有する。
【0035】
画像処理部402は、画像が分割された複数のバンド領域を並列に処理可能可能であり、γ変換や拡大・縮小処理、フィルタ等の処理機能を有する画像処理部である。パラメータ設定ステートでは、データ転送部401から転送されるパラメータ設定コマンドに応じて設定を切り替える機能を有している。画像転送ステートでは、データ転送部401から転送される所定フォーマットの画像コマンドに対して画像処理を実行し、画像処理を終えたコマンドをデータ転送部401に送信する機能を有している。
【0036】
●DPLを用いたデータ転送部の制御
次に、DPLを用いたデータ転送部401の制御について、DPLの構成及びデータ転送部401の構成とともに説明する。
【0037】
まず、DPLの構成について説明する。DPLは、
図6に示すようにパラメータ設定コマンド(700、701、703)とステート制御コマンド(702、704)とを含んで構成されている。パラメータ設定コマンドは、データ転送部401の設定や、画像処理部402のパラメータを設定するコマンドである。ステート制御コマンドは、データ転送部401のデータ転送ステートを切り替えるコマンドである。
【0038】
次に、
図5を参照しながら、データ転送部401の構成について説明する。データ転送部401は、コマンド送信部501と、コマンド受信部502と、送信部レジスタ群503と、受信部レジスタ群504と、ステート制御部505とを備えている。送信部レジスタ群503は、コマンド送信部501の設定を保持するレジスタ群である。受信部レジスタ群504は、コマンド受信部502の設定を保持するレジスタ群である。
【0039】
ステート制御部505は、コマンド送信部501およびコマンド受信部502のステート制御コマンドのデコード結果を受けてステートを遷移させ、データ転送部401の動作を切り替える制御回路である。ステート制御部505のステートは、
図7に示すように停止ステート801、DPL転送ステート802、画像転送ステート803の間で遷移する。
【0040】
コマンド送信部501は、ステート制御部505のステートに従ってDPLや所定の形式で格納された画像データをDRAM113から読み出し、画像処理部402へコマンドを送信する。コマンド送信部501は、DPL転送ステート802では、DRAM113のDPLアドレス5030からDPLを順次読み出し、画像処理部402に転送する。さらに、送信部レジスタ群503の設定(スタートアドレスA5031~並列転送数5039)や、ステート制御部505に対してステート制御コマンドのデコード結果の通知を行う。そして、コマンド送信部501は、画像転送ステート803では、送信部レジスタ群503の設定(スタートアドレスA5031~並列転送数5039)を用いてDRAM113上の読み出しアドレスを算出する。そして、読み出した画像データを画像処理部402で使用するコマンド形式に変換したのちに出力していく。
【0041】
コマンド受信部502は、コマンド送信部501と同様にステート制御部505のステートに従って動作し、画像処理部402からDPLや画像処理コマンドを受信して、DRAM113にデータを書き出す。コマンド受信部502は、DPL転送ステート802では、画像処理部402から受信したコマンドをDRAM113のDPLアドレス5040から順に書き出しつつ、受信部レジスタ群504の設定や、ステート制御部505に対してステート制御コマンドのデコード結果の通知を行う。そして、コマンド受信部502は、画像転送ステート803では、画像処理部402から受信したコマンドを所定の形式に変換したのちに、受信部レジスタ群504の設定(スタートアドレスA5041~並列転送数5049)に従って書き出すアドレスを算出し、DRAM113へデータの書き出しを行う。
【0042】
上記の構成を踏まえ、DPLを用いたデータ転送部401の制御について説明する。まず、ステート制御部505のステートは、初期状態では停止ステート801である。データ転送部401がCPU111によって起動されると、データ転送部401は、ステート制御部505のステートをDPL転送ステート802に遷移させる。
【0043】
コマンド送信部501は、ステートの遷移を受けてDRAM113に格納されたDPLを先頭から順に読み出していく。まずはデータ転送部401のパラメータ設定コマンド700を読み出し、送信部レジスタ群503、受信部レジスタ群504の設定を行う。続いて、画像処理部402のパラメータ設定コマンド701を読み出し、画像処理部402の設定を行う。そして、バンド転送のステート制御コマンド702をコマンド送信部501とコマンド受信部502とのそれぞれで受信したら、デコード結果をステート制御部505に通知し、画像転送ステート803への切り替えを行う。コマンド送信部501およびコマンド受信部502は、それぞれ送信部レジスタ群503および受信部レジスタ群504の設定に従って画像データの転送を行い、画像データの転送を終えたら転送完了をステート制御部505に通知する。
【0044】
ステート制御部505は、通知を受けてDPL転送ステート802に遷移し、コマンド送信部501およびコマンド受信部502は、それぞれ続きのDPL(パラメータ設定コマンド703以降)に従って転送を行う。このようにDPLを順に読み出しながら、バンドの転送を行い、ステート制御コマンド(終了コマンド)704を読み出したら、ステート制御部505は停止ステート801に遷移し、CPU111に割り込みを通知する。
【0045】
このように、DPLに従って動作するようにデータ転送部401を構成することで、CPU111は、データ転送部401を起動したのちに転送終了のステート制御コマンド704を受信するまで、データ転送部401の制御を行うことなく画像処理を実行することができる。
【0046】
●画像転送ステートでのデータ転送
続いて、画像転送ステート803に遷移した際のデータ転送について説明する。まず、
図8(a)-
図8(c)を用いて、データ転送部401が転送するバンド画像データのDRAM113上の格納形式について説明する。
【0047】
図8(a)は、RGBのカラースキャナで読み取られた画像の格納形式を示している。Rの各バンドデータが901a~908aに格納され、Gの各バンドデータが911a~918aに格納され、Bの各バンドデータが921a~928aに格納されている。このように、スキャナで読み取られた画像は、色毎に異なる領域にまとめて格納する面順次形式で記憶される。
【0048】
図8(b)は、CG(Computer Graphics)画像など外部記憶装置から取り込まれる画像の格納形式を示している。1画素のRGBデータをまとめて記録された各バンドデータが901b~908bに格納されている。このように、CG画像などの画像データは、画素毎に各色のデータをまとめて格納する点順次形式で格納される。
【0049】
図8(c)は、モノクロ画像の格納形式を示している。モノクロ画像の場合は1色のYデータのみであることから点順次形式、面順次形式といった区別はなく、各バンドデータは901c~908cに並べた形で格納される。
【0050】
次に、
図9(a)-
図9(d)を用いて、画像処理部402で扱うコマンド形式について説明する。コマンドは、画素値を格納するデータ領域A1001~データ領域C1003と、バンド中の画素位置を示すフラグ情報CE1004、CS1005、BE1006、BS1007を備える。各フラグ情報には、
図10の1101に示すように、バンド左上の転送開始画素ではBSフラグ、バンド右下の転送終了画素にはBEフラグを有効とし、バンドの上端ではCSフラグ、バンドの下端ではCEフラグを有効とする。また、本実施形態では、最大3色の画像に対する処理を例に記載していることからコマンドのデータ格納領域をデータ領域A1001~データ領域C1003の3つとしているが、扱う色数はこれに限るものではない。
【0051】
図8(a)に示す3色の面順次形式では、同じ位置の画素データを各色のバンドから取得(例えばRのバンド901a、Gのバンド911a、Bのバンド921aの座標(0,0))し、
図9(b)に示すように各データ領域に格納する。
図8(b)に示す3色の点順次形式では、バンドの所定の画素位置からRGBデータを取得(例えばバンド901bの座標(0,0))し、面順次形式の時と同様に
図9(b)に示すフォーマットで格納する。
図8(c)に示す1色のモノクロ画像の場合は、
図9(c)に示すフォーマットで格納する。すなわち、Yデータをデータ領域A1001に格納する。
【0052】
以上のようにコマンドフォーマットを定めることで、DRAM113上の格納形式が異なる場合であっても、画像処理部402は所定のフォーマットで送られるコマンドに基づいて処理を行うことが可能となる。なお、
図9(d)については後述する。
【0053】
上記を踏まえ、データ転送部401が画像転送ステート803の時にデータ転送する動作について、
図8(a)の面順次形式で画像を転送する場合を例に説明する。
【0054】
まず、ステートが停止ステート801あるいはDPL転送ステート802である際に、送信部レジスタ群503に対して、CPU111やDPLによって1つ目のバンドを転送するための設定が行われる。具体的には、スタートアドレスA5031にRの1つ目のバンド901aのスタートアドレスが設定される。また、スタートアドレスB5032にGの1つ目のバンド911aのスタートアドレスが設定される。そして、スタートアドレスC5033にBの1つ目のバンド921aのスタートアドレスが設定される。
【0055】
ライン位置情報A5034~ライン位置情報C5036には、
図12のライン位置(a)1301に相当する0ライン目が設定される。ライン数5037には転送する1バンド目のライン数1304が設定される。オフセット5038には、読み出すデータを1ライン分進めるのに必要なDRAM113上のオフセットアドレス1305が設定される。並列転送数5039には、1つのコマンドで1つのバンドの各画素を転送することから1並列が設定される。受信部レジスタ群504についても同様の設定がなされる。
【0056】
データ転送部401が画像転送ステート803に遷移すると、コマンド送信部501は、送信部レジスタ群503の設定を読み出し、バンドデータの転送を開始する。まず、送信部レジスタ群503のスタートアドレスA5031~C5033を参照して各色のバンドデータ(901a、911a、921a)を読み出し、
図9(b)に示されるコマンドに変換して出力する。バンドの各画素データは、
図10の1101に示すように、左上の画素から主走査方向に1画素毎に転送していく。そして、ライン数5037に設定された数だけの画素データを転送し、下端に到達したら副走査方向に1画素移動して、再度上端の画素から転送していく。
【0057】
画像処理部402は、転送されたコマンドを用いて順次画素データを受信し、画像処理を行う。このとき、拡大縮小処理や局所処理によってバンドの高さや幅が異なる画像サイズとなって出力される場合には、画像処理部402は、
図10の1102のようにバンドのサイズに合わせてフラグ情報を付け替えて出力する。
【0058】
画像処理部402から画像処理を終えたコマンドがデータ転送部401に送られると、データ転送部401は、受信部レジスタ群504の設定に従って
図8(a)に示す格納形式に変換してDRAM113に書き戻していく。
【0059】
続いて、DRAM113に書き戻す際の動作について、
図11、
図12、および
図13を用いて説明する。
【0060】
まず、
図13を参照して、データ転送部401が備えるコマンド受信部502の構成の一例を説明する。コマンド受信部502は、ライン数更新部1401、ライン位置情報更新部1402を備えている。ライン数更新部1401は、画像処理部402から受信したコマンドに基づいてライン数を更新する。ライン位置情報更新部1402は、受信部レジスタ群504のライン数5047、並列転送数5049、ライン位置情報A5044,B5045,C5046に基づいてライン位置情報を更新する。
【0061】
●処理
次に、
図11のフローチャートを参照しながら、DRAM113に書き戻す際のデータ転送処理の手順を説明する。S1201において、コマンド受信部502は、画像処理部402から画像処理後の各画素のコマンドを、
図10の1102に示す順で受信する。
【0062】
そして、S1202において、コマンド受信部502のライン数更新部1401は、CSフラグが有効なコマンドからCEフラグが有効なコマンドまでに転送されるコマンド数をカウントして画像処理後の1バンドのライン数を算出する。そして、算出した値を、受信部レジスタ群504のライン数5047に設定する。
【0063】
その後、S1203において、ライン位置情報更新部1402は、各色データを受信部レジスタ群504の設定に従ってDRAM113に書き出す。書き出すアドレスは、各色スタートアドレスに、ライン位置情報とオフセットアドレスを乗算したアドレスとする。
【0064】
具体的に、Rデータを例に
図12を参照しながら説明する。1バンド目はライン位置(a)=0ライン目であることから、ライン位置情報とオフセットアドレス1305との乗算結果は0となり、1バンド目のスタートアドレスA5041から書き出しが行われる。
【0065】
GデータはスタートアドレスB5042から、BデータはスタートアドレスC5043から、ライン数5047に新たに設定された画像サイズ分だけDRAM113に書き出していく。
【0066】
最後に、データ転送部401は、画像処理部402からBEフラグを含むコマンドを受信し、1つのバンドデータを書き出す。
【0067】
その際、S1204において、ライン位置情報更新部1402は、書き出したバンドのライン数5047と並列転送数5049とを乗算した値を現在のライン位置情報A5044,B5045,C5046の各値に加算して設定(更新)する。前述のとおり、並列転送数5049に1が設定されていることから、ライン位置情報A5044~C5046には転送したバンドのライン数1304=4ラインがそのまま加算されて設定される。
【0068】
上記のように制御することで、再度バンド転送用のステート制御コマンドを受信した際、データ転送部401が書き出すアドレスには、
図12の例ではライン位置情報A5044~C5046にライン位置(b)=4ライン目が設定されている。これにより、書き出しスタートアドレスは1バンド目に連続した2バンド目のアドレス(
図8の902a、912a、922a)を算出することができる。つまり、画像処理部402から出力されるバンドのサイズが変化した場合であっても、CPU111から転送量を設定することなく、受信したバンド分だけ連続した領域にデータを書き出すことができる。
【0069】
●画像転送ステートでの並列データ転送
続いて、バンドデータを並列転送する場合について説明する。ここでは、
図3に示した原稿300の301~303をモノクロ画像で読み取り、3つのバンドデータを1つのコマンドで同時に転送する場合を例に説明する。
【0070】
バンドを並列転送する場合の画像転送コマンドは、
図9(d)に示すように各バンドの画素データをデータ領域A1001~データ領域C1003に格納する。バンド301の画素はデータ領域A1001に、バンド302の画素はデータ領域Bに、バンド303の画素はデータ領域Cに格納する。1バンドの転送を行う際は、1つのコマンドに1画素分のデータが格納されるものであったが、並列転送を行う場合には、各データ領域にバンド毎の画素データを格納する。これにより、1コマンドで3バンドを並列に転送する。
【0071】
データ転送部401の送信部レジスタ群503のスタートアドレスA5031~C5033に、DRAM113上のバンド301が格納されているアドレスを設定する。ライン位置情報A5035には、0ライン目、ライン位置情報B5036には4ライン目、ライン位置情報C5037には8ライン目を設定する。並列転送数5039には、3バンド並列であることを設定する。受信部レジスタ群504についても同様の設定がなされる。
【0072】
画像処理部402は、3バンド分の各画素データが格納された画像処理コマンドを受けて、それぞれのバンドに対して画像処理を行う。例えば、画像処理部402がR、G、Bそれぞれに同等の画像処理を施すための回路を備えているものであった場合は、Rを処理する回路で1バンド目を、Gを処理する回路で2バンド目を、Bを処理する回路で3バンド目を処理するように構成してもよい。
【0073】
●処理
図11のフローチャートを参照しながら、バンドデータを並列転送する場合の処理の手順を説明する。データ転送部401は、上記の設定に従って画像転送を行う。S1201において、データ転送部401のコマンド受信部502は、画像処理部402からコマンドを受信する。
【0074】
S1202において、コマンド受信部502のライン数更新部1401は、受信したコマンドのフラグ情報を用いてバンドのライン数1304(
図12参照)を算出し、受信部レジスタ群504のライン数5047を更新する。このとき、ライン数は1並列でバンド転送を行う際と同様に、CSフラグが有効なコマンドからCEフラグが有効なコマンドまでの間に転送されたコマンド数を用いて算出する。そのため、算出されたライン数は1つのバンド分の高さに相当する。
【0075】
その後、画像をDRAM113に書き出し(S1203)、コマンド受信部502のライン位置情報更新部1402によりライン位置情報を更新する(S1204)。この時、ライン位置情報更新部1402は、バンドの並列転送をしない場合と同様に、ライン数5047に並列転送数5049を乗じた値をライン位置情報A5044~C5046に加算した値により更新する。これにより、ライン位置情報には
図12のライン位置(c)1303の値が設定される。
【0076】
つまり、バンド301~303を転送した後には、ライン位置情報Aには4バンド目304の開始位置、ライン位置情報Bには5バンド目305の開始位置、ライン位置情報Cには6バンド目306の開始位置が設定される。これにより、並列にバンドを転送する際に画像処理部402によってバンド高さが変化する際にも、CPU111により予め処理後のバンドのライン数を算出したり、データ転送部401を制御したりすることなく連続した領域にバンドを書き出すことができる。
【0077】
以上のように構成することで、1バンド毎に転送するか複数バンドを並列に転送するかどうかに関わらず、CPU111からデータ転送部401にバンド高さの変化量を知らせることなく、DRAM113上の連続したアドレス領域にバンドを書き込むことができる。また、CPU111がデータ転送部401を起動した後、画像処理が完了するまで制御を行う必要がないことから、その間CPU111は他の処理を行うように構成することも可能となる。
【0078】
<第2の実施形態>
第1の実施形態では、複数のバンドを並列に転送する際、各バンドが同じライン数となるような画像処理が行われる場合に適した例を示説明した。一方で、画像処理の内容によっては、各バンドが異なる画像サイズとなる場合がある。
【0079】
例えば、画像処理部で4ラインのバンドを処理する際に、1.1倍といった倍率で拡大処理を行った場合、4.4ラインのように小数点を含むようなバンドが出力されることとなる。ただし、
図9のコマンドで示したように画像データは1画素毎に色情報を持つため、1バンド目の処理では整数部の4ラインのバンドを出力し、小数点以下のラインは他のバンドを処理する際に補完されて出力するなどの構成が必要となる。このため、1バンド目は4.4ライン分の出力のうち4ライン分を出力する。2バンド目の処理では前の余った0.4ライン分のバンドと合わせて4.8ラインのバンドが出力され、整数部の4ラインのバンドを出力する。その後、3バンド目の処理で余った0.8ラインと合わせて5.2ラインのバンドが出力され、整数部の5ラインが出力される。つまり、1~3バンド目の出力バンドのライン数は4ライン、4ライン、5ラインとなり、それぞれ異なるライン数のバンドが出力されることとなる。
【0080】
第2の実施形態では、画像処理によって転送するバンドがそれぞれ異なる画像サイズとなる場合にも、バンドを並列に転送する例を説明する。第2の実施形態では、データ転送部401の構成が第1の実施形態と異なるため、以下では主にこのデータ転送部401の構成と動作について説明する。
【0081】
●データ転送部の構成
図14は、第2の実施形態に係るデータ転送部401の構成の一例を示している。データ転送部401は、コマンド送信部1501と、コマンド受信部1502と、送信部レジスタ群1503と、受信部レジスタ群1504と、ステート制御部1505とを備えている。
【0082】
送信部レジスタ群1503は、コマンド送信部1501の設定を保持するレジスタ群である。送信部レジスタ群1503は、DPLアドレス15030、スタートアドレスA15031、スタートアドレスB15032、スタートアドレスC15033、ライン位置情報A15034、ライン位置情報B15035、ライン位置情報C15036、ライン数A15037、ライン数B15038、ライン数C15039、オフセット1503a、並列転送数1503b、モード設定1503cを備えている。
【0083】
本実施形態に係る送信部レジスタ群1503は、第1の実施形態で説明した送信部レジスタ群503に加えてさらなるレジスタを備えている。すなわち、並列に転送するバンドそれぞれのライン数を保持するためのレジスタとしてライン数A15037~C15039と、レジスタ更新の動作を切り替えるモード設定1503cとをさらに備えている。
【0084】
受信部レジスタ群1504は、コマンド受信部1502の設定を保持するレジスタ群である。受信部レジスタ群1504は、DPLアドレス15040、スタートアドレスA15041、スタートアドレスB15042、スタートアドレスC15043、ライン位置情報A15044、ライン位置情報B15045、ライン位置情報C15046、ライン数A15047、ライン数B15048、ライン数C15049、オフセット1504a、並列転送数1504b、モード設定1504cを備えている。
【0085】
本実施形態に係る受信部レジスタ群1504は、第1の実施形態で説明した受信部レジスタ群504に加えてさらなるレジスタを備えている。すなわち、並列に転送するバンドそれぞれのライン数を保持するためのレジスタとしてライン数A15047~C15049と、レジスタ更新の動作を切替えるモード設定1504cとをさらに備えている。
【0086】
なお、モード設定1503c、モード設定1504cには、通常転送モード、並列転送モード、または並列転送プレ動作モードを設定することができる。通常転送モードでは、第1の実施形態で説明した
図11のフローチャートに従った動作を行う。並列転送モード、並列転送プレ動作モードでの動作については後述する。
【0087】
ステート制御部1505は、コマンド送信部1501およびコマンド受信部1502のステート制御コマンドのデコード結果を受けてステートを遷移させ、データ転送部401の動作を切り替える制御回路である。ステート制御部1505のステートは、
図7に示す停止ステート801、DPL転送ステート802、画像転送ステート803の間で遷移する。
【0088】
●DPLを用いたデータ転送部の制御
次に、DPLを用いたデータ転送部401の制御について説明する。第2の実施形態では
図15に示すDPLに従って制御を行う。
【0089】
データ転送部401は、CPU111により起動されると、DPLをDRAM113上のDPL格納アドレスから順に読み出していく。まず、データ転送部401、画像処理部402について、パラメータ設定コマンド1600、1601によって1バンド毎に転送するように設定する。具体的には、スタートアドレスA15041、ライン位置情報A15044、ライン数A15048にそれぞれ1バンド目のバンド領域301を指定し、並列転送数1504bを1並列とし、さらにモード設定1504cを並列転送プレ動作モードとして設定する。このとき、転送するバンドの幅は全体を転送する必要はなく、例えばバースト転送長に合わせた幅や、画像処理に必要な最低限のサイズとしてもよい。
【0090】
その後、1バンド目の画像を転送するためのステート制御コマンド1602を読み出し、画像転送ステート803に遷移する。画像転送ステート803ではレジスタ群の設定に従い、1バンド目の画像転送を行う。なお、ステート制御コマンド1603は、2バンド目の画像を転送するためのコマンドであり、ステート制御コマンド1604は、3バンド目の画像を転送するためのコマンドである。また、データ転送部401、画像処理部402について、パラメータ設定コマンド1605、1606によってバンドを並列に転送するように設定する。ステート制御コマンド1607は、並列転送モードへ遷移させるためのコマンドである。ステート制御コマンド1608は、終了コマンドである。
【0091】
●コマンド受信部1502の構成
ここで、
図17を参照して、本実施形態に係るコマンド受信部1502の構成の一例を説明する。コマンド受信部1502は、ライン数更新部1801、ライン位置情報更新部1802を備えている。
【0092】
ライン数更新部1801は、画像処理部402から受信したコマンドに基づいてライン数を更新する。ライン位置情報更新部1802は、受信部レジスタ群1504のライン数(例えばライン数A15047、ライン数B15048、ライン数C15049)、並列転送数1504b、ライン位置情報(例えばライン位置情報A15044、B15045、C15046)に基づいて、ライン位置情報を更新する。ライン位置情報更新部1802は、その際、並列転送プレ動作モード1803と、並列転送モード1804とで異なる処理を実行する。
【0093】
次に、
図16(a)及び
図16(b)のフローチャートを参照して、本実施形態に係るコマンド受信部1502の動作を説明する。
【0094】
●並列転送プレ動作
まず、
図16(a)のフローチャートを参照して、並列転送プレ動作における処理の手順を説明する。S1701において、コマンド受信部1502は、画像処理部402から画像コマンドを受信する。S1702において、コマンド受信部1502のライン数更新部1801は、画素位置情報から出力バンドのライン数を算出し、ライン数A15047を更新する。その後、S1703において、ライン位置情報更新部1802は、ライン数分だけバンドをDRAM113に書き出す。
【0095】
S1704において、ライン位置情報更新部1802は、ライン位置情報A15044を更新する。ここまでは通常転送モードと同様の動作となる。その後、S1705において、並列転送プレ動作モード1803では、ライン数更新部1801およびライン位置情報更新部1802は、並列転送するバンドに対応するレジスタに対して設定を行い、ライン数および位置情報を更新する。
【0096】
例えば、1バンド目のバンド領域301の転送であれば、S1702で算出したライン数をライン数A15047に記憶し、S1704で算出したライン位置情報をライン位置情報A15044に記憶する。また、2バンド目のバンド領域302の転送であれば、S1702で算出したライン数をライン数B15048に記憶し、S1704で算出したライン位置情報をライン位置情報B15045に記憶する。そして、3バンド目のバンド領域303の転送であれば、S1702で算出したライン数をライン数B15049に記憶し、S1704で算出したライン位置情報をライン位置情報C15046に記憶する。
【0097】
このように動作することで、DPLのステート制御コマンド1604まで実行した時点で、ライン位置情報A15044~C15046、ライン数A15047~C15049には、それぞれのバンドを画像処理した際の出力ライン数と、その位置を示すライン位置情報とが記憶される。
【0098】
その後、パラメータ設定1605、1606のコマンドによりモード設定1504cを並列転送モード1804に切り替え、並列転送を行うように並列転送数1504bのレジスタに3並列を設定し、3つのバンドを1コマンドに格納して同時に転送する。
【0099】
●並列転送動作
次に、
図16(b)のフローチャートを参照して、並列転送動作における処理の手順を説明する。S1711において、コマンド受信部1502のライン数更新部1801は、画像コマンドを受信する。S1712において、コマンド受信部1502のライン数更新部1801は、すでにライン数が算出されていることからライン数レジスタは更新せず、バンド画像をDRAM113に書き出す。
【0100】
その後、S1713において、コマンド受信部1502のライン位置情報更新部1802は、
図17の並列転送モード1804に示すように、並列転送しているそれぞれのライン数A15047~ライン数C15049に設定されているライン数を合計した値を、ライン位置情報A15044に加算して格納する。
【0101】
以上のようにレジスタを更新することで、DPLにより3バンド分の並列バンド転送(ステート制御コマンド1607)を終えた時点で、ライン位置情報A15044には3バンド分それぞれのライン数を合計した値、つまり4バンド目のライン位置が指定されている状態となる。
【0102】
4バンド目以降も同様に、並列転送プレ動作モードを用いて、並列転送する3つのバンドの一部領域を1バンドずつ処理して、各バンドのライン位置情報のレジスタとライン数のレジスタとを更新する。その後、並列転送モードに切り替えて、並列転送する分だけライン数を更新していくことで、以降のバンドに対しても連続で画像処理を実行することができる。
【0103】
以上のように構成することで、データ転送部401は、画像処理によって各バンドサイズが異なるものとなるような場合でも、1つのコマンドで複数のバンドを並列に転送しつつ、CPUの介在を抑えてDRAM上の連続した領域にバンドを格納することができる。
【0104】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0105】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0106】
401:データ転送部、402:画像処理部、501:コマンド送信部、502:コマンド受信部、503:送信部レジスタ群、504:受信部レジスタ群、505:ステート制御部