(57)【特許請求の範囲】
【請求項１】
画像データをラスタ順序からブロック順序へ変換する第１モードと、画像データをブロック順序からラスタ順序へ変換する第２モードとを動作モードとして有する画像処理装置であって、
ラインメモリと、
次に書き込む又は読み出す前記ラインメモリのアドレスを、バンド単位で切り替わる加算値を現在処理対象のアドレスのアドレス値に加算することにより算出する算出手段と、
前記算出手段によって算出されたアドレスに従って、前記ラインメモリへアクセスして、画像データの書き込み又は読み出しを実行するアクセス手段と、
前記アクセス手段により前記ラインメモリにアクセスするごとにカウントするカウント手段と、
複数のバンドのうち現在処理中のバンドにおける前記第１モード又は前記第２モードに応じた所定値が前記カウント手段によってカウントされると、現在処理対象のアドレスのアドレス値を次のバンドを処理する際の加算値として取得する取得手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記取得手段は、
前記第１モードの場合、複数のバンドのうち、現在処理しているバンドの最初のアドレスから、該バンドの画像幅番目のアドレスまでのアクセスが前記カウント手段によってカウントされると、前記所定値がカウントされたと判断することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記取得手段は、
前記第２モードの場合、複数のバンドのうち、現在処理しているバンドの最初のアドレスから、該バンドに含まれるブロックのブロックサイズ番目のアドレスまでのアクセスが前記カウント手段によってカウントされると、前記所定値がカウントされたと判断することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記算出手段は、
前記取得手段によって取得された加算値を、現在処理対象のアドレスのアドレス値へ加算した結果、加算後のアドレス値が前記ラインメモリのアドレス深度を超える場合は、前記アドレス深度から前記バンドに含まれるブロックの幅を減算した値を、前記加算後のアドレス値から減算することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記算出手段は、初期値として、前記バンドに含まれるブロックの幅を前記加算値の初期値として算出することを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
前記算出手段は、前記アクセス手段からアドレス要求を受けるとアドレスを算出することを特徴とする請求項１乃至５の何れか１項に記載の画像処理装置。
【請求項７】
前記算出手段は、さらに
前記算出したアドレスに、前記アクセス手段からアドレス要求を受けた数を、前記バンドに含まれるブロックのブロック幅で除した剰余数を加算することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記算出手段は、
現在処理対象のアドレスのアドレス値を保持するアドレス保持部と、
前記ラインメモリのアドレス深度を保持するレジスタと、
前記アドレス保持部で保持されているアドレス値と、前記取得手段によって取得された前記加算値を加算する加算器と、
前記加算器による加算結果から前記レジスタに保持されている前記アドレス深度を減算する減算器と、
前記レジスタに保持されているアドレス深度と、前記加算器による加算結果とを比較する比較器と、
前記比較器の比較結果に基づき、前記加算器による加算結果と、前記減算器による減算結果との何れかを選択して前記アドレス保持部に出力するセレクタと
を備えることを特徴とする請求項１乃至７の何れか１項に記載の画像処理装置。
【請求項９】
前記書き込み先のアドレスを算出する前記算出手段と、前記読み出し先のアドレスを算出する前記算出手段とが個別に設けられることを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記取得手段は、
前記第１モード、又は前記第２モードの動作モードを保持するレジスタと、
前記バンドに含まれるブロックのブロックサイズを保持するレジスタと、
前記バンドの画像幅を保持するレジスタと、
現在の加算値を保持する第１の加算値保持部と、
次の加算値を保持する第２の加算値保持部と、
を備え、
前記第１の加算値保持部は、前記カウント手段によって所定値がカウントされると、前記第２の加算値保持部に保持されている前記次の加算値をロードし、
前記第２の加算値保持部は、前記動作モード、前記ブロックサイズ、及び前記バンドの画像幅を用いて、前記第１モードの場合には、前記バンド単位で分割された複数のバンドのうち、現在処理しているバンドの最初のアドレスから、該バンドの画像幅番目のアドレス値を次の加算値として前記アドレス保持部からロードし、前記第２モードの場合には、複数のバンドのうち、現在処理しているバンドの最初のアドレスから、該バンドに含まれるブロックのブロックサイズ番目のアドレス値を次の加算値として前記アドレス保持部からロードすることを特徴とする請求項８又は９に記載の画像処理装置。
【請求項１１】
ラインメモリを備え、画像データをラスタ順序からブロック順序へ変換する第１モードと、画像データをブロック順序からラスタ順序へ変換する第２モードとを動作モードとして有する画像処理装置の制御方法であって、
算出手段が、次に書き込む又は読み出す前記ラインメモリのアドレスを、バンド単位で切り替わる加算値を現在処理対象のアドレスのアドレス値に加算することにより算出する算出工程と、
アクセス手段が、前記算出工程で算出されたアドレスに従って、前記ラインメモリへアクセスして、画像データの書き込み又は読み出しを実行するアクセス工程と、
カウント手段が、前記アクセス手段により前記ラインメモリにアクセスするごとにカウントするカウント工程と、
取得手段が、複数のバンドのうち現在処理中のバンドにおける前記第１モード又は前記第２モードに応じた所定値が前記カウント工程でカウントされると、現在処理対象のアドレスのアドレス値を次のバンドを処理する際の加算値として取得する取得工程と
を含むことを特徴とする画像処理装置の制御方法。
【請求項１２】
請求項１１に記載の画像処理装置の制御方法の各工程をコンピュータが実行するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の矩形画像と、ラスタ画像とを相互に変換する画像処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
画像形成装置の撮像装置等の画像入力部や、光学走査装置等の画像出力（形成）部は、一般に、ラスタ走査順序で画像データを扱う。一方、画像入力部からの入力データに対するデジタル画像処理の多く、例えば、窓を用いたフィルタ処理、ＪＰＥＧ方式の圧縮符号化処理、濃度階調表現された入力画像を面積階調へと変換するスクリーン処理などは、矩形画像単位で処理がなされる。以下では、この矩形画像単位での処理をブロック処理と称し、ブロック処理で扱う矩形画像単位の画像順序をブロック順序と称する。
【０００３】
ラスタ順序の入力画像に対してブロック処理を行うためには、入力画像の画像データをブロック順序へと変換する前処理が必要となる。この前処理には通常、画像幅×ブロック高さの矩形領域（ブロック領域）の容量を持つラインメモリが用いられる。以下では、このラインメモリ容量分の画像単位をバンドと称し、ラインメモリをバンドメモリとも称する。ブロック処理を行う画像処理部をパイプラインで構成した場合、各々の画像処理部において、ラスタ順序をブロック順序に変換する前処理が必要となる。このため、ラインメモリが画像処理部の個数分だけ必要となり、回路規模が増大してしまう。ラインメモリの増大を抑制するためには、画像処理部へ画像を入力する前に、予めラスタ順序をブロック順序へ変換しておく必要がある。これにより、各画像処理部は入力画像を常にブロック順序として扱えばよく、ラインメモリを画像処理部の個数分用いる必要が無くなる。画像処理部から出力されたブロック順序の画像は、画像形成部へ出力するために、再度ラスタ順序へと変換される。
【０００４】
画像処理部の前処理、後処理で必要となるラスタ順序及びブロック順序の相互変換には、画像幅とブロック高さとから求まる矩形領域の容量を持つラインメモリを２つ用いる、ダブルバッファ方式がよく知られている。ダブルバッファ方式では、順序変換前の画像データを一方のラインメモリへ書き込み中に、順序変換後の画像データを他方のラインメモリから読み出すことで、スループットの低下を抑制しながらも変換処理を行うことが可能である。しかし、ダブルバッファ方式では、必要となるラインメモリ容量が多く、回路規模の増大につながるという問題がある。この問題を解消するために、変換前画像データの書き込みと変換後画像データの読み出しを多重化させることで、ラインメモリが１つのみの構成であっても変換を可能とする、シングルバッファ方式が知られている。特許文献１には、シングルバッファ方式におけるアドレス計算を実現する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１１２４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来技術には以下に記載する課題がある。シングルバッファ方式では、画素の読み出しが完了したラインメモリのアドレスへ、次の画素の書き込みを逐次行うことで、ダブルバッファ方式に比べて半分のラインメモリ容量で変換処理が実現できる。しかし、シングルバッファ方式では、ラインメモリに対する読み出しと、書き込みとのアクセスを多重化させることにより、アドレス計算が複雑化してしまうという問題があった。そこで、上記従来技術では、シングルバッファにおいて２つのアドレスパターンを用意し、そのアドレスパターンを切り替えながら書き込みと読み出しとを行っている。しかし、このような方法では、画像幅及びブロックサイズに制約が生じてしまう。例えば、予め用意しているアドレスパターンと異なるサイズの入力画像については、無効画素を追加するパディング制御を行わなければ、当該アドレスパターンを利用することができないものであった。その結果、追加した無効画素に対するアドレス計算が必要となり、制御が複雑化するとともに、スループットの低下を招いてしまうという問題があった。
【０００７】
本発明は、上述の問題に鑑みて成されたものであり、アドレスパターン用のＬＵＴを使用せずに、スループットを低下させることなく簡易な制御でシングルバッファ方式による複数の矩形画像とラスタ画像とを相互に変換する仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、画像データをラスタ順序からブロック順序へ変換する第１モードと、画像データをブロック順序からラスタ順序へ変換する第２モードとを動作モードとして有する画像処理装置であって、ラインメモリと、次に書き込む又は読み出す前記ラインメモリのアドレスを、バンド単位で切り替わる加算値を現在処理対象のアドレスのアドレス値に加算することにより算出する算出手段と、前記算出手段によって算出されたアドレスに従って、前記ラインメモリへアクセスして、画像データの書き込み又は読み出しを実行するアクセス手段と、前記アクセス手段により前記ラインメモリにアクセスするごとにカウントするカウント手段と、現在処理中のバンドにおける前記第１モード又は前記第２モードに応じた所定値が前記カウント手段によってカウントされると、現在処理対象のアドレスのアドレス値を次のバンドを処理する際の加算値として取得する取得手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、アドレスパターン用のＬＵＴを使用せずに、スループットを低下させることなく簡易な制御でシングルバッファ方式による複数の矩形画像とラスタ画像とを相互に変換することができる。
【図面の簡単な説明】
【００１０】
【図１Ａ】一実施形態に係る画像処理装置の制御構成を示す図。
【図１Ｂ】一実施形態に係る画像処理装置のハードウェア構成を示す図。
【図２】一実施形態に係るラスタ画像とブロック画像との相互変換を示す概念図。
【図３】一実施形態に係る変換部の構成を示すブロック図。
【図４】一実施形態に係る変換部の動作フローと、ラインメモリへのＲｅａｄ／Ｗｒｉｔｅ多重制御を示すタイミングチャート。
【図５】一実施形態に係るラインメモリへのアクセス順序の一例を示す図。
【図６】一実施形態に係るアドレス生成部による、生成されたアドレスパターンの一例を示す図。
【図７】一実施形態に係るアドレス生成部の制御フローを示すフローチャート。
【図８】一実施形態に係るアドレス生成部の構成の一例を示す図。
【図９】一実施形態に係る変換部の構成を示すブロック図。
【図１０】一実施形態に係る変換部の動作フローと、ラインメモリへのＲｅａｄ／Ｗｒｉｔｅ多重制御を示すタイミングチャート。
【図１１】一実施形態に係るラインメモリへのアクセス順序の一例を示す図。
【図１２】一実施形態に係るアドレス生成部による、生成されたアドレスパターンの一例を示す図。
【図１３】一実施形態に係るアドレス生成部の制御フローを示すフローチャート。
【図１４】一実施形態に係るアドレス生成部の構成の一例を示す図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１２】
＜第１の実施形態＞
＜画像処理装置の構成＞
以下では、本発明の第１の実施形態について説明する。図１Ａ及び図１Ｂを参照して、本実施形態に係る画像処理装置１００の構成について説明する。画像処理装置１００は、図１Ａに示すように、コントローラユニット２００と、スキャナ部１０１と、プリンタ部１０５とを備える。
【００１３】
図１Ｂに示すように、コントローラユニット２００は、各種制御プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１を有する。ＣＰＵ２０１は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０３に格納されているブートプログラムに基づきシステムを起動する。そして、このシステム上でＨＤＤ（ハードディスク装置）２０４に格納されている制御プログラムを読み出してＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２をワークエリアとして所定の処理を実行する。
【００１４】
ＨＤＤ２０４には、各種制御プログラムが格納される。また、ＨＤＤ２０４には、スキャナ部１０１から読み込んだスキャンデータやネットワークＩ／Ｆ２０７を介して装置外から取得したデータが格納される。操作部出力Ｉ／Ｆ２０５は、操作表示部２１１へのデータ出力通信制御を行う。
【００１５】
操作部入力Ｉ／Ｆ２０６は、操作入力部２１２からのデータ入力通信制御を行う。ネットワークＩ／Ｆ２０７は、ＬＡＮ２１３に接続され、ＬＡＮ２１３を介した情報の入出力制御を行う。スキャナＩ／Ｆ２０８は、スキャナ部１０１から画像データを入力するとともに、スキャナ制御データの入出力を行う。プリンタＩ／Ｆ２０９は、プリンタ部１０５へ出力画像データを出力するとともに、プリンタ制御データの入出力を行う。上述した各デバイス２０１乃至２０９は、システムバス２１０上に配置される。
【００１６】
操作入力部２１２は、タッチパネルやハードキーなどの入力装置を備えた、ユーザーからの指示入力インターフェースである。操作表示部２１１は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）やＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）などの表示装置を備えた、ユーザーへの表示インターフェースである。
【００１７】
スキャナ部１０１は、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）などの光学的な読み取り装置を備え、紙媒体を光学的に操作して、電子的な画像データとして読み取る機能を有する。プリンタ部１０５は、電子的な画像データを、用紙などの記録媒体上に画像として形成する機能を有する。
【００１８】
コントローラユニット２００は、制御構成として、スキャナ入力部１０２、ラスタ／ブロック変換部１１０、画像処理部１０３、ブロック／ラスタ変換部１１１、及びプリンタ出力部１０４を備える。スキャナ入力部１０２は、外部に接続されたスキャナ部１０１からラスタ画像を受け付ける。スキャナ部１０１は、不図示のイメージセンサを用いて、原稿データを読み取る。スキャナ部１０１で読み取られた画像データは、ラスタ順序の画素単位で順次スキャナ入力部１０２へと転送される。スキャナ入力部１０２は、不図示のｖｉｄｅｏ同期信号に従ってスキャナ部１０１から転送される画素データを受信し、不図示の内部バッファを経由してラスタ／ブロック変換部１１０に受信した画像データを送信する。
【００１９】
ラスタ／ブロック変換部１１０は、ラスタ順序の画像データをブロック順序の画像データに変換する。また、ブロック／ラスタ変換部１１１は、ブロック順序の画像データをラスタ順序の画像データに変換する。なお、ここでは、便宜上、ラスタ／ブロック変換部１１０及びブロック／ラスタ変換部１１１を分けて説明しているが、本実施形態では同一の構成として実現されることが望ましい。これは、ラインメモリのサイズをより低減することができるからである。また、以下では、便宜上、ラスタ順序をブロック順序に変換する場合には、ラスタ／ブロック変換と略記し、ブロック順序をラスタ順序に変換する場合には、ブロック／ラスタ変換と略記する。
【００２０】
ラスタ／ブロック変換部１１０は、スキャナ入力部１０２から受信したラスタ順序の画像データをブロック順序の画素単位で順次、画像処理部１０３へ送信する。画像処理部１０３は、ブロック処理を行う。画像処理部１０３は、ラスタ／ブロック変換部１１０から受信したブロック順序の画像データへ、フィルタ処理やスクリーン処理等を行い、処理後の画像データをブロック順序の画像データとしてブロック／ラスタ変換部１１１へ送信する。ブロック／ラスタ変換部１１１は、画像処理部１０３から受信したブロック順序の画像データをラスタ順序の画像データへ変換した後に、プリンタ出力部１０４へと出力する。
【００２１】
プリンタ出力部１０４は、ラスタ順序で受信した画像データを、不図示の内部バッファを経由してプリンタ部１０５へと送信する。プリンタ部１０５は、画像処理装置１００の外部に接続され、不図示のｖｉｄｅｏ同期信号に従ってプリンタ出力部１０４からラスタ順序の画像データを受信し、不図示のレーザ光を感光体ドラムへ照射することで、露光及び画像形成を行う。露光を行う際の走査制御には、ラスタ順序の画像データが用いられる。
【００２２】
＜ラスタ順序とブロック順序＞
次に、図２を参照して、ラスタ順序とブロック順序との相互変換について説明する。２２１に示すように、ラスタ順序では、ページ画像は、一水平走査につき画像の左端から右端までの画素にアクセスされる。当該水平走査は、ページ画像の上端から下端方向へと継続的に行われ、ページ画像全体の画素へとアクセスする。
【００２３】
２２２に示すように、ブロック順序では、ブロック幅×ブロック高さの所定の矩形領域内部において、前述したラスタ画像と同様に各画素へとアクセスされる。ここで、ページ画像における、画像幅×ブロック高さの領域をバンドと称する。ページ画像は垂直方向へＮ個のバンドに分割される。バンド内部に含まれる各ブロックは、バンド内の左端から右端へと、隣り合うブロックごとに順次アクセスされる。バンド内部の画素へのアクセスが完了すると、隣り合う次のバンドがアクセスされる。このように、各バンドが順次アクセスされることで、ページ画像に含まれる全ての画素がアクセスされる。
【００２４】
＜変換部の構成＞
次に、図３を参照して、ラスタ／ブロック変換部１１０及びブロック／ラスタ変換部１１１の内部構成について説明する。ここでは、ラスタ／ブロック変換部１１０及びブロック／ラスタ変換部１１１をまとめて変換部３００と称する。変換部３００は、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１、アドレス生成部３０２、メモリ制御部３０６、及びラインメモリ３０７を備える。
【００２５】
ラインメモリ３０７は、画像順序の変換を行うためのメモリである。ラインメモリ３０７はＳＲＡＭで構成され、少なくともバンドサイズ分のメモリ容量を有する。Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、メモリ制御部３０６を経由してラインメモリ３０７から画像データを読み出す。読み出された画像データはデータ出力バス３０８へと送信される。同様に、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、データ入力バス３０５から入力された画像データを、メモリ制御部３０６を経由してラインメモリ３０７へ書き込む。なお、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、直前に読み出しを行ったラインメモリ３０７のアドレスに対して書き込みを行うことに注意する。これにより、新しく書き込まれたデータによって、読み出しが完了していないデータが失われることが無い。
【００２６】
アドレス生成部３０２は、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１がラインメモリ３０７への読み出し・書き込みを行うための、共通アドレスを生成（算出）する。なお、アドレス生成部３０２は、ブロック／ラスタ変換時には、ブロック順序書き込み及びラスタ順序読み出し用の共通アドレスを生成する。一方、アドレス生成部３０２は、ラスタ／ブロック変換時には、ラスタ順序書き込み及びブロック順序読み出し用の共通アドレスを生成する。アドレス生成部３０２は、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１からアドレス要求３０３を受信すると、次の画素にアクセスするためのアドレス値３０４を返答する。Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、１バンド分の読み出し・書き込みが完了すると、バンド終了通知３０９をアドレス生成部３０２へ送信する。アドレス生成部３０２は、バンド終了通知３０９を受信すると、共通アドレス生成パターンを変更する。この、アドレス生成パターンの詳細については図６で後述する。
【００２７】
＜変換部の動作＞
次に、図４を参照して、変換部３００の全体の動作について説明する。４０１は、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１による書き込み処理と読み出し処理フロー、及び、アドレス生成部３０２が生成するアドレスパターンの遷移を示す。なお、４０１に示すように、アドレスパターンｎでは、バンドｎをアドレスパターンｎでラインメモリ３０７へ画素データが書き込まれ、アドレスパターンｎ＋１でラインメモリ３０７から画素データが読み出されることで、順序変換がなされる。
【００２８】
Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、ページ処理が開始されると、最初のバンド０をラインメモリ３０７へ書き込む。このとき、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、アドレス生成部３０２が生成したアドレスパターン０の書き込みアドレスを用いてラインメモリ３０７へアクセスする。また、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、バンド０の書き込みがなされている期間は、読み出すべきデータがラインメモリ３０７に存在しないため、読み出し動作を行わない。この期間を初期期間と称する。
【００２９】
Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、バンド０の書き込みが完了すると、アドレス生成部３０２に対してバンド終了通知３０９を通知する。アドレス生成部３０２は、バンド終了通知３０９を受信すると、アドレスパターン１でアドレスの生成を開始する。Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、バンド１をラインメモリ３０７の空き領域に対してアドレスパターン１で書き込み、これと並行して、すでに書き込まれているバンド０をアドレスパターン１で読み出す。Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１が書き込み動作と読み出し動作を並行して行う期間を、Ｒｅａｄ／Ｗｒｉｔｅ多重期間と称する。
【００３０】
Ｒｅａｄ／Ｗｒｉｔｅ多重期間において、バンドＮ−１がラインメモリ３０７へ書き込まれると、１ページ分の画像の書き込みがすべて完了する。なお、バンドＮ−１は、１ページの画像をＮ個のバンドに分割したときの最終バンドを表すことに注意されたい。バンドＮ−１の書き込み、及びバンドＮ−２の読み出しが完了すると、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、最後のバンドＮ−１の読み出し動作を開始する。この期間中は、すでにページ画像の書き込みはすべて完了しているため、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１はラインメモリ３０７に対して読み出し動作のみを行う。この期間を終端期間と称する。終端期間において、バンドＮ−１のデータがすべて読み出し完了されると、ページ画像の変換処理が完了する。
【００３１】
４０２は、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１の書き込み及び読み出し制御をより詳細に説明するための、タイミングチャートである。初期期間においては、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１へ有効データが入力されると、書き込み動作のみが行われる。Ｒｅａｄ／Ｗｒｉｔｅ制御部は３０１、初期期間においてはｒｄ＿ｒｅａｄｙ信号がアサートされていないため、読み出し制御を行わない。なお、ｒｄ＿ｒｅａｄｙ信号は、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１が内部的なフラグとして保持してもよく、外部から制御を与えてもよい。
【００３２】
ブロック０（ブロック０−ｌａｓｔ）の書き込み動作（ｗｒ  ｌａｓｔ）が完了すると、ｒｄ＿ｒｅａｄｙ信号がアサートされ、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は読み出しを開始する。また同時に、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、有効データ（１−０）が入力されると書き込み動作を行う。なお、本実施形態においては、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、書き込み動作と読み出し動作を同一のクロック周期において行う。
【００３３】
また、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、有効データが入力され、書き込み動作が行われるときのみ、読み出し動作を行う。すなわち、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、有効データが入力されず、書き込み動作が行われない限り、読み出し動作を行わない。このような動作を行うことにより、書き込み及び読み出しに用いるアドレスを常に共通とすることができる。
【００３４】
なお、本実施形態のように、同一クロック周期で読み出しと書き込みを行うには、ラインメモリ３０７としてデュアルポートＳＲＡＭ等を用いることで実現できる。また、ラインメモリ３０７は、同一アドレスに対する読み出しと書き込みを行った場合、読み出されるデータは、書き込み中の新しいデータではなく、すでに書き込まれていた古いデータが読み出されるよう構成する必要があることに注意する。このようなＳＲＡＭの機能は、ｒｅａｄ−ｆｉｒｓｔ機能などとも称される。
【００３５】
一方、終端期間では、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、有効データの受信にかかわらず、読み出し動作を、バンドＮ−１がすべて読み出されるまで行う。なお、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１は、終端期間であるかどうかを判別するために、読み出しを行ったバンド数をカウントすることで判別する。或いは、データ入力バス３０５上の、不図示のｐａｇｅ＿ｅｎｄ信号等を用いることで、判別してもよい。
【００３６】
＜アドレスパターン＞
次に、図５を参照して、アドレス生成部３０２が生成したアドレスパターンによって、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１がラインメモリ３０７へアクセスする制御について説明する。図５では、画像幅＝７、ブロック幅＝１、ブロック高さ＝３とし、７×３サイズのラインメモリ３０７を用いてラスタ／ブロック変換を行う様子を示す。以下では、ブロックに含まれる複数のワード領域であって、最小領域（１画素）に対応する領域をセルと称する。
【００３７】
セル５０１の左上部に示された数値５０２は、１ワード領域に割り当てられたアドレスを示す。なお、ラインメモリ３０７のアドレス深度は７×３＝２１であるため、各ワードには０から２０までのアドレスが割り当てられている。セル５０１の中央部に下線付きで示された数値５０３は、アドレスパターンｎにおいて、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１がラインメモリ３０７の各ワードにアクセスする順番を示す。
【００３８】
５１０に示すアドレスパターン０では、ラスタ順序の画素データが、ラインメモリ３０７に対して線形に１ずつアドレスを増加させながらアクセスされる。なお、現在アクセスしているアドレスから次にアクセスするアドレスへの増加量を、アドレス増加量と称する。アドレスパターン０では、アドレス増加量は１である。
【００３９】
５２０に示すアドレスパターン１では、アドレスパターン０で書き込まれたバンド０のラスタ順序の画素データが、ブロック順序の画素データとして読み出される。また同時に、バンド１のラスタ順序の画素データが、ラスタ順序の画素データとしてアドレスパターン１で書き込まれる。アドレスパターン１では、アドレス増加量＝７ずつアドレスを増加させながら、バンド１の書き込みとバンド０の読み出しのためのアクセスがなされる。また、現在のアドレスにアドレス増加量を加算した値がアドレス深度以上となってオーバーフローした場合には、アドレス深度の値を減算して、１が加算される。すなわち、アドレス深度−１が減算される。例えば、アドレス０、７、１４、２１と増加するものの、２１はアドレス深度値２０以上となるため、２１−２０＝１と算出される。同様に、５３０、５４０においても、アドレス増加量ずつアドレスが逐次増加していき、アドレス値がオーバーフローした場合には、アドレス深度−１が減算される。
【００４０】
続いて、図６を参照して、アドレス生成部３０２が生成したアドレスパターンの一例について、関数として表したグラフを用いて説明する。各図の横軸はアクセスするサイクルを示し、縦軸は各サイクルにおける生成されたアドレス値をそれぞれ示す。６１０〜６４０はそれぞれ、図５の５１０〜５４０に対応している。図６のアドレス関数は、画像幅＝７、ブロック高さ＝３、ブロック幅＝１での一例を示すが、これを任意の画像幅及びブロック高さに一般化して表すことが可能である。サイクルをｔ、アドレス増加量をα、アドレス深度をβとすると、サイクルｔにおけるアドレスａｄｄｒ（ｔ）は、以下の数式（１）で表される。
ａｄｄｒ（ｔ）＝｛ａｄｄｒ（ｔ−１）＋α｝ｍｏｄβ
＋［（ａｄｄｒ（ｔ−１）＋α）／β］・・・（１）
ここでは、第２項の大括弧［］は床関数を表すことに注意されたい。即ち、（ａｄｄｒ（ｔ−１）＋α）をβで除算した場合の商を示す。数式（１）により、ラインメモリ３０７に対するバンドｎの読み出し、及びバンドｎ＋１の書き込みを行うためのアドレス関数が得られる。なお、数式（１）はブロック幅＝１に限定されていることに注意されたい。
【００４１】
任意のブロック幅に対して数式（１）を適用するためには、ラインメモリ３０７をブロック幅個数に分割することで実現できる。即ち、ラインメモリ３０７へ書き込みを行う前に、画像データをブロック幅×１の矩形画像単位へとシリアル―パラレル変換を行い、ブロック幅個数分に分割された各ＳＲＡＭの同一アドレスに対して同時に書き込みを行う。また、ラインメモリ３０７から読み出しを行う場合は、ブロック幅個数分に分割された各ＳＲＡＭから、上記矩形画像単位を同一アドレスから同時に読み出したのち、パラレル―シリアル変換を行う。このような操作により、分割された各ＳＲＡＭへアクセスするためのアドレス値を数式（１）で得ることが可能となる。
【００４２】
数式（１）をハードウェアに実装する場合、アドレス深度βが２のべき乗であれば、ビット分割により非常に簡易に実現できる。数式（１）において、第１項及び第２項はそれぞれ、現在のアドレス値にαを加算した値をβで整数除算したときの剰余と、商とを表す。よって、βが２のべき乗である場合、商と剰余はそれぞれ、最上位ビットからｌｏｇ２（β）ビット、ｌｏｇ２（β）−１ビットから最下位ビットと分割することで求まる。
【００４３】
次に、アドレスパターンｎにおけるアドレス増加量α（ｎ）の算出方法について説明する。図６の６１０のアドレスパターン０において、ｔ＝７におけるアドレス値が、図６の６２０のアドレスパターン１におけるアドレス増加量と一致する。同様に、図６の６２０のアドレスパターン１において、ｔ＝３におけるアドレス値が、アドレスパターン０におけるアドレス増加量と一致する。サイクルｔ＝７及びｔ＝３はそれぞれ、画像幅及びブロックサイズ（ブロック幅×ブロック高さ）である。このことは、任意のアドレスパターンｎについても成り立つことから、アドレスパターンｎにおけるアドレス増加量α（ｎ）を一般化して表すことが可能である。アドレスパターンｎにおけるアドレス関数をａｄｄｒｎ（ｔ）、画像幅をＩＷ、ブロック幅及びブロック高さをＢＷ，ＢＨとすると、アドレスパターンｎにおけるアドレス増加量α（ｎ）は、以下の数式で表される。
α（ｎ）＝ａｄｄｒｎ-１（ＩＷ）・・・（２）
α（ｎ）＝ａｄｄｒｎ-１（ＢＷ×ＢＨ）・・・（３）
数式（２）はラスタ／ブロック変換を行う場合の、アドレスパターンｎにおけるアドレス増加量α（ｎ）を表す。数式（３）はブロック／ラスタ変換を行う場合の、アドレスパターンｎにおけるアドレス増加量α（ｎ）を表す。数式（１）、及び数式（２）と数式（３）を用いることで、任意の画像サイズ及びブロックサイズにおいて、ブロック順序、ラスタ順序の相互変換を行うためのアドレス値を得ることが可能となる。
【００４４】
＜アドレス生成処理＞
次に、図７を参照して、アドレス生成部３０２において、数式（１）〜数式（３）に基づいたアドレス生成処理の処理手順について説明する。なお、以下で説明する処理は、アドレス生成部３０２によってなされる。また、以下で説明する処理は、ＣＰＵ２０１がＲＯＭ２０３やＨＤＤ２０４に格納された制御プログラムをＲＡＭ２０２に読み出して実行することにより実現されてもよい。
【００４５】
まず、７２０のフローチャートについて説明する。Ｓ７０１で、アドレス生成部３０２は、初期化を行う。具体的には、アドレス生成部３０２は、アドレス値３０４及びアドレス要求カウント値を”０”にリセットし、アドレス増加量α（０）を初期値である”１”にセットする。
【００４６】
Ｓ７０２で、アドレス生成部３０２は、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１からアドレス要求３０３を受信したか否かを判定する。受信するまで待機し、受信するとＳ７０３に進む。Ｓ７０３で、アドレス生成部３０２は、現在のアドレス値３０４をＲｅａｄ／Ｗｒｉｔｅ制御部３０１に返答する。続いて、Ｓ７０４で、アドレス生成部３０２は、カウント値をインクリメントする。
【００４７】
Ｓ７０５で、アドレス生成部３０２は、次のアドレス値３０４を算出する。ここで、Ｓ７０５のアドレス値３０４の算出についての詳細をフローチャート７２１を用いて説明する。まず、Ｓ７０５１で、アドレス生成部３０２は、アドレス値３０４にアドレス増加量α（ｎ）を加算する。次に、Ｓ７０５２で、アドレス生成部３０２は、アドレス値３０４がアドレス範囲をオーバーフローしているか否かを判定する。オーバーフローした場合は、Ｓ７０５３に進み、アドレス生成部３０２は、アドレス値３０４からアドレス深度β−１の値を減算してＳ７０５の処理を終了する。一方、Ｓ７０５２で、オーバーフローしていない場合はＳ７０５３の処理を行うことなく、Ｓ７０５の処理を終了する。
【００４８】
フローチャート７２０の説明に戻る。Ｓ７０６で、アドレス生成部３０２は、次のアドレスパターンにおけるアドレス増加量α（ｎ＋１）を算出する。ここで、Ｓ７０６の次のアドレス増加量α（ｎ＋１）の算出についての詳細をフローチャート７２２を用いて説明する。まず、Ｓ７０６１で、アドレス生成部３０２は、現在の動作モードがブロック／ラスタ変換であるか、ラスタ／ブロック変換であるかを判断する。現在の動作モードがラスタ／ブロック変換であれば、Ｓ７０６２へ進み、ブロック／ラスタ変換であれば、Ｓ７０６３へと進む。
【００４９】
Ｓ７０６２で、アドレス生成部３０２は、カウント値が画像幅ＩＷに達したかどうかを判断し、達していればＳ７０６４へ進む。達していなければＳ７０６の処理を終了する。同様に、Ｓ７０６３で、アドレス生成部３０２は、カウント値がブロックサイズ（ＢＷ×ＢＨ）に達したかどうかを判断し、達していればＳ７０６４へ進み、達していなければＳ７０６の処理を終了する。Ｓ７０６４で、アドレス生成部３０２は、次のアドレスパターンにおけるアドレス増加量α（ｎ＋１）として、現在のアドレス値３０４を取得してＳ７０６の処理を終了する。
【００５０】
フローチャート７２０の説明に戻る。Ｓ７０７で、アドレス生成部３０２は、バンド終了通知３０９を受信したか否かを判定し、受信していればＳ７０８へと進み、受信していなければＳ７１０へと進む。Ｓ７０８で、アドレス生成部３０２は、バンド終了通知３０９を受けて、カウント値及びアドレス値３０４をリセットする。続いて、Ｓ７０９で、アドレス生成部３０２は、アドレス増加量α（ｎ）を、Ｓ７０６４で取得した値α（ｎ＋１）で更新する。Ｓ７１０で、アドレス生成部３０２は、ページ内すべての変換処理が完了したかどうかを判断し、終了していれば本フローを終了する。終了していなければＳ７０２へと戻る。
【００５１】
＜変形例＞
本発明は上記構成に限らず様々な変形が可能である。例えば、ここでは、ＣＰＵ２０１が制御プログラムを実行することにより、アドレス生成部３０２の処理を実現する構成について説明したが、アドレス生成部３０２をハードウェアで実装してもよい。
【００５２】
図８を参照して、アドレス生成部３０２をハードウェアで実装した場合の、構成の一例について説明する。アドレス生成部３０２は、動作のためのレジスタとして、アドレス深度β（実際の値はアドレス深度−１）８０４、動作モード８０５、ブロックサイズ８０６、及び画像幅８０７を有する。また、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１とのＩ／Ｆとして、アドレス要求３０３、バンド終了通知３０９、及びアドレス値３０４を有する。アドレス生成部３０２は、アドレス算出部８０１と次アドレス増加量算出部８０２を有する。
【００５３】
アドレス算出部８０１は、アドレス値３０４を保持するためのアドレス保持部８１２を有する。アドレス保持部８１２は、アドレス要求３０３を受信すると、次のアドレス値をロードする。また、アドレス保持部８１２は、バンド終了通知３０９を受信するとリセットされる。アドレス算出部８０１は、アドレス増加量と現在のアドレス値とを加算する加算器８０８を有する。また、アドレス算出部８０１は、オーバーフロー検知を行うための比較器８０９、オーバーフロー時にアドレス深度−１を減算するための減算器８１０、及び、オーバーフローの有無によって演算結果を切り替えるセレクタ８１１を有する。減算器８１０は、加算器８０８の加算結果（加算後のアドレス値）からアドレス深度８０４を減算する。セレクタ８１１には、加算器の加算結果、減算器８１０の減算結果、比較器８０９の比較結果が入力され、比較結果に基づいて、加算結果又は減算結果が選択される。
【００５４】
次アドレス増加量算出部８０２は、現在のアドレス増加量を保持するアドレス増加量保持部８１６を有する。アドレス増加量保持部８１６は、バンド終了通知３０９を受信すると、次アドレス増加量保持部８１８から、新しいアドレス増加量をロードする。また、アドレス増加量保持部８１６は、リセット時には初期値８１７にセットされる。本実施形態においては、初期値８１７は１である。次アドレス増加量算出部８０２は、アドレス要求３０３の個数をカウントするカウンタ部８１３、及び、カウント値が画像幅８０７或いはブロックサイズ８０６であるかを比較する比較器８１４を有する。また、モードに応じて次アドレス増加量を取得するカウント数を切り替えるためのモードセレクタ８１５を有する。
【００５５】
以上説明したように、本実施形態に係る画像処理装置は、画像データをバンド単位で複数の領域へ分割し、分割したバンド単位で画像データを１つのラインメモリへ書き込むとともに読み出しを行う。これにより、本画像処理装置は、ラスタ順序の画像データと、ブロック順序の画像データとを相互に変換する。また、本画像処理装置は、次に書き込む又は読み出すアドレスを算出するために用いられ、現在処理対象のアドレスからのアドレス増加量を、バンド単位で算出する。また、本画像処理装置は、ラインメモリへ画像データを書き込む際の書き込み先のアドレスと、ラインメモリから画像データを読み出す際の読み出し先のアドレスとを、算出されたアドレス増加量を現在処理対象のアドレスのアドレス値に加算することにより算出する。さらに、本画像処理装置は、算出されたアドレスに従って、ラインメモリへアクセスして、画像データの書き込み及び読み出しを実行する。このようにアドレス生成を行うことで、任意の画像サイズ、ブロックサイズにおけるブロック順序、ラスタ順序の相互変換を行うことが可能となる。本実施形態では、アドレスの生成に係るパラメータとしてアドレス増加量αを定義し、オーバーフローを考慮しながらアドレス増加量αをアドレス値に加算するのみという、非常に簡易な制御によってアドレス生成を実現できる。アドレス増加量α以外の変量は不要となる。このことは、動作モードや画像サイズ、ブロックサイズの違いによって制御が複雑化することを抑制することができる。また、現在処理対象としている画素の、ブロック内における位置を考慮する必要もない。さらに、アドレス増加量αの算出には、アクセス個数をカウントして、特定の個数番目に出現したアドレス値を取得するのみという、非常に簡素な制御で実現できる。
【００５６】
＜第２の実施形態＞
以下では、本発明の第２の実施形態について説明する。上記第１の実施形態では、アドレス生成部３０２を１つのみ使用し、ラインメモリ３０７に対する書き込み及び読み出しを、常に同時に行う構成について述べた。本実施形態ではハードウェア実装としてのアドレス生成部３０２を書き込み用、読み出し用の２つを個別に設けることで、画像処理装置１００の全体のスループットを向上することが可能な構成について述べる。なお、本実施形態では上記第１の実施形態との差分について主に説明し、共通点については説明を省略する。
【００５７】
図９を参照して、変換部３００の内部構成について説明する。第１の実施形態との差分は、変換部３００が、アドレス生成部３０２を書き込み用、読み出し用に２つ有している点である。また、変換部３００は、ラインメモリ３０７への書き込みを制御するためのＷｒｉｔｅ制御部９０１、読み出しを制御するためのＲｅａｄ制御部９１１を有する。Ｗｒｉｔｅ制御部９０１は、バンド終了通知９０２、アドレス要求９０３を用いて、アドレス生成部３０２からＷｒｉｔｅアドレス値９０４を取得する。
【００５８】
同様に、Ｒｅａｄ制御部９１１は、バンド終了通知９０６、アドレス要求９０７を用いて、アドレス生成部３０２からＲｅａｄアドレス値９０８を取得する。アクセス調停部９０５は、Ｗｒｉｔｅ制御部９０１、Ｒｅａｄ制御部９１１からの書き込み、読み出し要求を調停する。アクセス調停部９０５は、現在処理中のバンドにおいて、書き込み及び読み出しを行った回数をカウントすることで、書き込み動作が読み出し動作を追い越してしまうことが無いよう、Ｗｒｉｔｅ制御部９０１からの書き込み要求を選択的に受け付ける。また、アクセス調停部９０５は、Ｒｅａｄ制御部９１１のバンド読み出し動作が完了すると、Ｗｒｉｔｅ制御部９０１のバンド書き込み動作が完了するまで、Ｒｅａｄ制御部９１１からの読み出し要求を受け付けない。
【００５９】
Ｗｒｉｔｅ制御部９０１は、アクセス調停部９０５から書き込み不可と通知されると、ｗｒｉｔｅ＿ｗａｉｔ信号９０９をアサートすることで、有効データを受けつけられないことを変換部３００の前段の処理部に通知する。Ｒｅａｄ制御部９１１は、Ｗｒｉｔｅ制御部９０１の有効データ受信を待たずに読み出し動作を先行して行う。また、Ｒｅａｄ制御部９１１は、変換部３００の後段の処理部からｒｅａｄ＿ｗａｉｔ信号９１０を受け付けると、ラインメモリ３０７に対する読み出し制御を中断する。このように、アクセス調停部９０５の動作により、Ｗｒｉｔｅ制御部９０１、Ｒｅａｄ制御部９１１が各々のタイミングで動作していても、アドレスパターンを崩すことなくブロック順序、ラスタ順序の相互変換が可能となる。
【００６０】
＜変換部の動作＞
次に、図１０を参照して、変換部３００の動作について説明する。図１０の１００１はＷｒｉｔｅ制御部９０１、Ｒｅａｄ制御部９１１の動作フローを示す。上記第１の実施形態との違いは、ラインメモリ３０７に対する読み出し、書き込みの制御が常に同時ではなく、Ｗｒｉｔｅ制御部９０１、Ｒｅａｄ制御部９１１各々のタイミングによってなされている点である。本実施形態では、Ｒｅａｄ制御部９１１による読み出しを常に先行させることにより、ｒｅａｄ＿ｗａｉｔ信号９１０がアサートされても、変換部３００全体の動作を止めなくてよい。
【００６１】
図１０の１００２に示すように、ｒｅａｄ＿ｗａｉｔ信号９１０がアサートされても、読み出し動作が先行したアクセス個数分は書き込み動作を継続して行うことができる。このことは、画像処理装置１００において、変換部３００が画像順序の変換のみならず、画像処理装置１００の各処理部の処理中断時間を吸収する、バッファの役割を果たすことを意味する。
【００６２】
以上説明したように、本実施形態に係る画像処理装置１００は、上述の構成を有することにより、スループットを向上させつつ、ブロック順序、ラスタ順序の相互変換が可能となる。本実施形態では、アドレス生成部３０２を２つ設けているが、上記第１の実施形態で説明したように、アドレス生成部３０２は非常に簡易な構成とすることが可能なため、２つ設けることによって回路規模が大きく増えることはない。また、読み出し側、書き込み側で全く同一構成のアドレス生成部３０２を使用することが可能である。さらに、アドレス生成部３０２を２つ設けるにあたって、アドレス生成のための特別な制御を追加する必要もない。
【００６３】
＜第３の実施形態＞
以下では、本発明の第３の実施形態について説明する。上記第１の実施形態では、ブロック幅を１に限定した場合のブロック／ラスタ変換について説明した。上記第１の実施形態では、ブロック幅を１以外とした場合は、ラインメモリ３０７の分割や、シリアル―パラレル変換が必要となる。本実施形態では、ラインメモリ３０７の分割や、追加のシリアル―パラレル変換等を不要とし、直接アドレスを生成する方法について説明する。
【００６４】
＜アドレスパターン＞
図１１を参照して、本実施形態におけるアドレス生成部１４００が生成したアドレスパターンによって、Ｒｅａｄ／Ｗｒｉｔｅ制御部３０１がラインメモリ３０７へアクセスする制御について説明する。なお、図１１では、画像幅＝６、ブロック幅＝２、ブロック高さ＝２とし、６×２サイズのラインメモリ３０７を用いてラスタ／ブロック処理を行う様子を示す。図１１の１１１０〜１１４０に示すように、ブロック幅×１＝２×１の画素は常にペアとしてアクセスされる。本実施形態では、アドレス増加量を、上記ブロック幅個数分のペア単位で定義する。即ち、１１１０では、０番目、１番目の画素ペアをアクセスしたのち、２番目、３番目の画素ペアへアクセスするための、増加量２をアドレス増加量として定義する。同様に、１１２０、１１３０、１１４０ではアドレス増加量はそれぞれ６、８、４となる。
【００６５】
続いて、図１２を参照して、アドレス生成部１４００が生成したアドレスパターンの一例について、関数として表したグラフを用いて説明する。各図の横軸はアクセスするサイクルを示し、縦軸は各サイクルにおける生成されたアドレス値をそれぞれ示す。図１２の１２１０〜１２４０はそれぞれ、図１１の１１１０〜１１４０に対応する。上記第１の実施形態と同様に、アドレス関数を任意の画像幅、ブロック高さ、及び、ブロック幅に一般化して表すことが可能である。サイクルをｔ、アドレス増加量をα、アドレス深度をβ、ブロック幅をＢＷとすると、サイクルｔにおけるアドレスａｄｄｒ（ｔ）は、以下の数式で表される。
ｂａｓｅ＿ａｄｄｒ（ｔ）＝｛ｂａｓｅ＿ａｄｄｒ（ｔ’-１）＋α｝ｍｏｄβ
＋ＢＷ［(ｂａｓｅ＿ａｄｄｒ（ｔ’-１）＋α)／β］・・・（４）
ｔ’＝［ｔ／ＢＷ］・・・（５）
ａｄｄｒ（ｔ）＝ｔｍｏｄＢＷ＋ｂａｓｅ＿ａｄｄｒ（ｔ）・・・（６）
また、図１２に示すように、ブロック幅ＢＷが１以外の場合であっても、アドレス増加量の算出は、画像幅番目、ブロックサイズ番目のアドレス値を取得することによって求まる。よって、任意のアドレスパターンｎにおけるアドレス増加量α（ｎ）の算出は、数式（２）、（３）をそのまま用いることが可能である。
【００６６】
＜アドレス生成処理＞
次に、図１３を参照して、アドレス生成部１４００において、数式（２）、数式（３）、及び、数式（４）、数式（５）、数式（６）に基づいた、ブロック幅が任意の場合におけるアドレス生成処理の処理手順について説明する。なお、以下で説明する処理は、アドレス生成部３０２によってなされる。また、以下で説明する処理は、ＣＰＵ２０１がＲＯＭ２０３やＨＤＤ２０４に格納された制御プログラムをＲＡＭ２０２に読み出して実行することにより実現されてもよい。
【００６７】
なお、全体の制御フローは図７のフローチャート７２０と同様であるため説明を省略する。上記第１の実施形態と異なるのは、Ｓ７０１の初期化処理、及びＳ７０５におけるアドレス算出の処理のみである。Ｓ７０１の初期化では、アドレス増加量α（ｎ）の初期値８１７として、ブロック幅ＢＷを設定する点のみが異なる。Ｓ７０５の処理では、図７のフローチャート７２１におけるＳ７０５１及びＳ７０５２の処理は上記第１の実施形態と同様である。
【００６８】
Ｓ９０１で、アドレス生成部１４００は、カウント値がブロック幅の倍数であるか否かを判断する。即ち、当該カウント値はブロック幅個数分の画素集合に対するアクセスを完了したか否かを判断する。Ｓ９０１で、アクセスが完了していれば、Ｓ７０５１，Ｓ７０５２，Ｓ９０２の処理に従ってベースアドレスを更新する。一方、アクセスが完了していなければ、ベースアドレスを更新せず、Ｓ９０３に進む。
【００６９】
Ｓ９０２で、アドレス生成部１４００は、オーバーフロー時の減算について、Ｓ７０５３とは異なり、アドレス深度−ブロック幅の値を減算し、Ｓ９０３に進む。本実施形態では、Ｓ７０５１，Ｓ７０５２，Ｓ９０２の手続きをブロック幅個数分の画素集合に対する、ベースアドレスの算出として行う。Ｓ９０３で、アドレス生成部１４００は、上記数式（６）に従って、アドレス値を更新し、Ｓ７０５のアドレス算出処理を終了する。上記数式（６）では、ベースアドレス生成部１４０１で生成したアドレスに、アドレス要求を受けた数（カウント値）をブロック幅で除した剰余数を加算する
＜変形例＞
本発明は上記構成に限らず様々な変形が可能である。例えば、ここでは、ＣＰＵ２０１が制御プログラムを実行することにより、アドレス生成部３０２の処理を実現する構成について説明したが、アドレス生成部１４００をハードウェアで実装してもよい。
【００７０】
図１４を参照して、アドレス生成部１４００をハードウェアで実装した場合の、構成の一例について説明する。アドレス生成部１４００は、ベースアドレス生成部１４０１を有しており、これは、上記第１の実施形態におけるアドレス生成部３０２と同一の構成を有する。なお、ベースアドレス生成部１４０１は、初期値８１７として、ブロック幅ＢＷが設定される。また、ベースアドレス生成部１４０１は、ベースアドレス生成動作におけるオーバーフロー処理のためのレジスタとして、アドレス深度β−ブロック幅１４０２を有する。
【００７１】
アドレス生成部１４００は、さらに、数式（５）に従ってアドレス要求３０３を分周するための、分周部１４０９を有する。分周部１４０９は、分周比としてブロック幅１４０３を受け付ける。また、分周部１４０９によって分周されたアドレス要求１４０４、１４０５は、ベースアドレス生成部１４０１及びセレクタ１４０７へと入力される。分周されたアドレス要求１４０４は、動作タイミング調整のために、分周されたアドレス要求１４０５に対して１クロックサイクル早く動作するようにしてもよい。
【００７２】
アドレス生成部１４００は、さらに、数式（６）に従ってアドレスを算出するための、加算器１４０６、セレクタ１４０７、及びアドレス保持部１４０８を有する。アドレス保持部１４０８は、アドレス要求３０３を受信すると、次のアドレス値をロードする。また、アドレス保持部１４０８は、バンド終了通知３０９を受信するとリセットされる。
【００７３】
以上説明したように、本実施形態に係る画像処理装置は、上述した制御でアドレス生成を行うことで、任意のブロック幅に対しても、ラインメモリ３０７の分割や、追加のシリアル―パラレル変換等を不要とし、直接アドレスを生成することが可能となる。本実施形態では、上記第１の実施形態の制御に対して、小規模の構成の追加のみによって任意のブロック幅に拡張できることを示した。具体的には、数式（５）に示したアドレス要求３０３の分周、及び数式（６）に示した加算の追加のみである。これら追加の制御によって、アドレス生成全体の制御が大きく変更されることなく、処理を２つ（Ｓ９０１及びＳ９０３）追加するのみで、任意のブロック幅へ拡張することが可能である。本実施形態によれば、任意の画像サイズ、ブロックサイズに対して、簡易な制御によって、ブロック順序、ラスタ順序の相互変換を行うことが可能となる。
【００７４】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７５】
３０１：Ｒｅａｄ／Ｗｒｉｔｅ制御部、３０２：アドレス生成部、３０７：ラインメモリ
【図１Ａ】
0006757141.tif 000002
【図１Ｂ】
0006757141.tif 000003
【図２】
0006757141.tif 000004
【図３】
0006757141.tif 000005
【図４】
0006757141.tif 000006
【図５】
0006757141.tif 000007
【図６】
0006757141.tif 000008
【図７】
0006757141.tif 000009
【図８】
0006757141.tif 000010
【図９】
0006757141.tif 000011
【図１０】
0006757141.tif 000012
【図１１】
0006757141.tif 000013
【図１２】
0006757141.tif 000014
【図１３】
0006757141.tif 000015
【図１４】
0006757141.tif 000016