(57)【特許請求の範囲】
【請求項１】
ブロック単位に入力された画像データに対して、該ブロック単位に画像処理を実行するブロック画像処理手段と、
前記ブロック単位に画像処理が実行された前記画像データをラスタ状に変換する変換手段と、
ラスタ状に変換された前記画像データを用いて、前記ブロック画像処理手段で実行した画像処理と同一機能の画像処理を１画素単位で実行する画素画像処理手段とを備えることを特徴とする画像処理装置。
【請求項２】
前記ブロック画像処理手段が、入力された画像データから指定範囲の画像データを抽出することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記ブロック画像処理手段が、前記画像データの解像度を変換することを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記変換手段が、前記ブロック単位にラスタ状に変換された前記画像データに対するそれぞれのブロック内の画素の並び替え処理と、
前記ブロック自身の並び替え処理との２段階で変換処理を行うことを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記変換手段が、前記ブロック及び前記画素を９０°単位の回転角で並び替えることを特徴とする請求項４記載の画像処理装置。
【請求項６】
前記指定範囲の前記画像データを始点座標と終点座標を定めることによって決定される矩形状の範囲として前記画像データから抽出する場合、矩形状の前記指定範囲の画像データをブロック単位で抽出する場合のそれぞれのブロックの始点座標及び終点座標は、前記画像データの前記始点座標及び前記終点座標を該ブロックのブロックサイズで除したときの小数点以下の数値を切り上げた数値に基づく座標であることを特徴とする請求項２記載の画像処理装置。
【請求項７】
前記ブロック画像処理手段による前記指定範囲の画像データを抽出する抽出処理が、入力された画像データに関する有効信号の制御によって行われることを特徴とする請求項２記載の画像処理装置。
【請求項８】
前記ブロックのサイズをＢｘ×Ｂｙとした場合、前記ブロック画像処理手段による前記ブロック単位の解像度変換後の横方向のサイズが１からＢｘまでのいずれかの整数、解像度変換後の縦方向のサイズが１からＢｙまでのいずれかの整数であることを特徴とする請求項３記載の画像処理装置。
【請求項９】
前記ブロック画像処理手段による前記ブロック単位の解像度変換処理が横方向と縦方向とで独立して行われることを特徴とする請求項８記載の画像処理装置。
【請求項１０】
前記解像度変換処理における横方向の縮小率をＲｘ、縦方向の縮小率をＲｙとするとき、前記ブロック単位の解像度変換処理における画像データの出力サイズが、
ｎ／Ｂｘ≦Ｒｘ＜（ｎ＋１）／Ｂｘ、但しｎは１からＢｘまでの整数、
ｍ／Ｂｙ≦Ｒｙ＜（ｍ＋１）／Ｂｙ、但しｍは１からＢｙまでの整数、
を満たすｎ×ｍであることを特徴とする請求項８記載の画像処理装置。
【請求項１１】
前記ブロック画像処理手段による前記横方向及び前記縦方向の解像度変換処理が、入力された前記画像データのブロック上の位置に応じて補間係数を切り替え、補間点以外のデータを無効データとすることを特徴とする請求項９記載の画像処理装置。
【請求項１２】
前記ブロック画像処理手段が、前記横方向の解像度変換処理ではブロック右端の画素演算時を無効データとし、前記縦方向の解像度変換処理ではブロック下端の画素演算時を無効データとすることを特徴とする請求項１１記載の画像処理装置。
【請求項１３】
前記ブロック画像処理手段による前記横方向及び前記縦方向の解像度変換処理は、補間係数が設定可能な最大値の場合、該最大値となる係数が乗算される画素を補間出力とすることを特徴とする請求項１１又は１２に記載の画像処理装置。
【請求項１４】
前記ブロック画像処理手段による前記横方向及び前記縦方向の解像度変換処理は、補間係数が０の場合、０の係数が乗算される画素に対応する画素であって０が乗算されない方の画素を補間出力とすることを特徴とする請求項１１又は１２に記載の画像処理装置。
【請求項１５】
前記変換手段による前記ブロック内の画素の並び替え処理が、原画素のアドレスをＡ（ｎ−１）、予め決められたシーケンスで選択されるアドレス差分値をＤ、次画素のアドレスをＡ（ｎ）とする場合、
Ａ（ｎ）＝Ａ（ｎ−１）＋Ｄ
で示されるバッファのアドレスに次画素データを格納することで行われることを特徴とする請求項４又は５に記載の画像処理装置。
【請求項１６】
前記バッファに格納されるブロックラインの最終ブロックのブロック終端画素と次画素とのアドレス差分値をＤｌ、前記ブロックのブロック終端画素と次画素とのアドレス差分値をＤｍ、前記ブロックのブロック右端画素と次画素とのアドレス差分値をＤｂとした時、前記アドレス差分値Ｄが、
ブロックライン上の最終ブロックのブロック終端画素の場合はＤ＝Ｄｌ、
Ｄ＝Ｄｌでなく、ブロックライン上の最終ブロックのブロック終端画素の場合はＤ＝Ｄｍ、
Ｄ＝Ｄｌ、Ｄ＝Ｄｍのいずれでもなく、ブロックライン上の最終ブロックのそれ以外でブロック右端画素の場合はＤ＝Ｄｂ、
その他の場合はＤ＝１
であることを特徴とする請求項１５記載の画像処理装置。
【請求項１７】
ブロック符号化された符号化データから画像データを復号化するブロック復号化手段と、
復号化された前記画像データを用いて、ブロック単位に画像処理を実行するブロック画像処理手段と、
前記ブロック単位に画像処理が実行された前記画像データをラスタ状に変換する変換手段と、
ラスタ状に変換された前記画像データを用いて、前記ブロック画像処理手段で実行した画像処理と同一機能の画像処理を１画素単位で実行する画素画像処理手段とを備えることを特徴とする画像処理装置。
【請求項１８】
ブロック単位に入力された画像データに対して、該ブロック単位に画像処理を実行するブロック画像処理工程と、
前記ブロック単位に画像処理が実行された前記画像データをラスタ状に変換する変換工程と、
ラスタ状に変換された前記画像データを用いて、前記ブロック画像処理工程で実行した画像処理と同一機能の画像処理を１画素単位で実行する画素画像処理工程とを有することを特徴とする画像処理方法。
【請求項１９】
ブロック符号化された符号化データから画像データを復号化するブロック復号化工程と、
符号化された前記画像データを用いて、ブロック単位に画像処理を実行するブロック画像処理工程と、
前記ブロック単位に画像処理が実行された前記画像データをラスタ状に変換する変換工程と、
ラスタ状に変換された前記画像データを用いて、前記ブロック画像処理工程で実行した画像処理と同一機能の画像処理を１画素単位で実行する画素画像処理工程とを有することを特徴とする画像処理方法。
【請求項２０】
コンピュータにて、
ブロック単位に入力された画像データに対して、該ブロック単位に画像処理を実行するブロック画像処理手順と、
前記ブロック単位に画像処理が実行された前記画像データをラスタ状に変換する変換手順と、
ラスタ状に変換された前記画像データを用いて、前記ブロック画像処理手順で実行した画像処理と同一機能の画像処理を１画素単位で実行する画素画像処理手順とを有することを特徴とするコンピュータプログラム。
【請求項２１】
コンピュータにて、
ブロック符号化された符号化データから画像データを復号化するブロック復号化手順と、
復号化された前記画像データを用いて、ブロック単位に画像処理を実行するブロック画像処理手順と、
前記ブロック単位に画像処理が実行された前記画像データをラスタ状に変換する変換手順と、
ラスタ状に変換された前記画像データを用いて、前記ブロック画像処理手順で実行した画像処理と同一機能の画像処理を１画素単位で実行する画素画像処理手順とを有することを特徴とするコンピュータプログラム。
【請求項２２】
請求項２０又は２１に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２３】
ブロック単位に入力された画像データに対して、該ブロック単位にクリッピングを実行する第１のクリッピング処理手段と、
前記ブロック単位にクリッピングが実行された前記画像データをラスタ状に変換する変換手段と、
ラスタ状に変換された前記画像データを用いて、１画素単位のクリッピングを実行する第２のクリッピング処理手段とを備えることを特徴とする画像処理装置。
【請求項２４】
ブロック単位に入力された画像データに対して、該ブロック単位に解像度変換を実行する第１の解像度変換手段と、
前記ブロック単位に解像度変換が実行された前記画像データをラスタ状に変換する変換手段と、
ラスタ状に変換された前記画像データを用いて、１画素単位に解像度変換を実行する第２の解像度変換手段とを備えることを特徴とする画像処理装置。
【請求項２５】
ブロック単位に入力された画像データに対して、該ブロック単位にクリッピングを実行する第１のクリッピング処理工程と、
前記ブロック単位にクリッピングが実行された前記画像データをラスタ状に変換する変換工程と、
ラスタ状に変換された前記画像データを用いて、１画素単位のクリッピングを実行する第２のクリッピング処理工程とを有することを特徴とする画像処理方法。
【請求項２６】
ブロック単位に入力された画像データに対して、該ブロック単位に解像度変換を実行する第１の解像度変換工程と、
前記ブロック単位に解像度変換が実行された前記画像データをラスタ状に変換する変換工程と、
ラスタ状に変換された前記画像データを用いて、１画素単位に解像度変換を実行する第２の解像度変換工程とを有することを特徴とする画像処理方法。
【請求項２７】
コンピュータにて、
ブロック単位に入力された画像データに対して、該ブロック単位にクリッピングを実行する第１のクリッピング処理手順と、
前記ブロック単位にクリッピングが実行された前記画像データをラスタ状に変換する変換手順と、
ラスタ状に変換された前記画像データを用いて、１画素単位のクリッピングを実行する第２のクリッピング処理手順とを有することを特徴とするコンピュータプログラム。
【請求項２８】
コンピュータにて、
ブロック単位に入力された画像データに対して、該ブロック単位に解像度変換を実行する第１の解像度変換手順と、
前記ブロック単位に解像度変換が実行された前記画像データをラスタ状に変換する変換手順と、
ラスタ状に変換された前記画像データを用いて、１画素単位に解像度変換を実行する第２の解像度変換手順とを有することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック化された画像データに対し、クリッピング処理や解像度変換、回転処理等の画像処理を実施するのに好適な画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
従来、ブロック化された画像データに対して、クリッピング処理、解像度変換処理及び回転処理のような画像処理を行って所望のデータを生成する画像処理装置においては、入力されたブロック状の画像データをラスタ化した後、それぞれの画像処理が行われていた。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来の画像処理方法では、一旦ラスタ化した後に画像処理が行われるために、全体の画像処理に要する時間が長くなるだけでなく、画像処理の際に必要となる処理用のメモリを画像処理装置に多く搭載する必要があるという問題があった。また、画像の回転等の並び替え処理を行う場合、従来の方法では並び替え処理のためのバッファが必要であった。また、並び替え処理のためのバッファを削減するために、書き込みアドレスにおいて並び替えを実行した場合は、連続したアドレスにならないため、バーストモードを使用できず、アクセスに時間がかかるという問題もあった。
【０００４】
本発明は、このような事情を考慮してなされたものであり、ブロック化された画像データに対して画像処理を実施するに際し、画像データ全体に対する画像処理速度を高速化するとともに、画像処理に必要とされるメモリの容量を小さくすることができる画像処理装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、本発明によれば、ブロック単位に入力された画像データに対して、該ブロック単位に画像処理を実行するブロック画像処理手段と、
前記ブロック単位に画像処理が実行された前記画像データをラスタ状に変換する変換手段と、
ラスタ状に変換された前記画像データを用いて、前記ブロック画像処理手段で実行した画像処理と同一機能の画像処理を１画素単位で実行する画素画像処理手段とを備えることを特徴とする画像処理装置が提供される。
【発明の効果】
【０００６】
以上説明したように、本発明によれば、画像データに対して処理に必要な範囲を一定のブロック単位で指定して必要な範囲にだけ画像処理を実施し、その後の画像処理より詳細な画像処理を行うので、画像データ全体に対する画像処理速度を高速化するとともに、画像処理に必要とされるメモリも小さくすることができる。また、メモリアクセスの連続性を向上させ、メモリ使用効率を向上することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の第１の実施形態による画像処理装置の概要を説明するためのブロック図である。
【図２】図１における前段画像処理部２１の細部構成を説明するためのブロック図である。
【図３】クリッピング処理部２１１で実施されるクリッピング処理について説明するための概略図である。
【図４】並び替え処理部２１３で行われる回転処理を説明するための概略図である。
【図５】第１の実施形態における並び替え処理部２１３の処理動作の具体例を説明するための図である。
【図６】クリッピング処理以降の解像度変換処理と並び替え処理を詳細に説明するための図である。
【図７】図１５に示したそれぞれのサンプリングポイントの場合における補間係数を示す図である。
【図８】第１の実施形態による画像処理装置の動作手順を説明するためのフローチャートである。
【図９】ステップＳ８２でのクリッピング処理手順を詳細に説明するためのフローチャートである。
【図１０】ステップＳ８３で行われる解像度変換処理の詳細を説明するためのフローチャートである。
【図１１】本発明の第２の実施形態に係る画像処理装置の構成を示すブロック図である。
【図１２】第２の実施形態に係る画像処理装置による画像処理の具体例を説明するための図である。
【図１３】ＭＣＵ縮小回路１１２の細部構成を示すブロック図である。
【図１４】横サイズ縮小回路１３１又は縦サイズ縮小回路１３２の具体的な構成を示すブロック図である。
【図１５】ＭＣＵ縮小後のサンプリングポイントを具体的に示す図である。
【図１６】図１２の具体例における輝度信号データがＹブロックバッファに格納される様子を示した図である。
【図１７】図１２の具体例における色差信号データがＣｒブロックバッファ及びＣｂブロックバッファに格納される様子を示した図である。
【図１８】回転モードとＹブロックバッファの読み出し位置との関係を示す図である。
【図１９】書き込み時にブロック内回転した時の輝度信号データがＹブロックバッファに格納される様子を示す図である。
【図２０】書き込み時にブロック内回転した時の色差信号データがＣｒブロックバッファ及びＣｂブロックバッファに格納される様子を示す図である。
【発明を実施するための形態】
【０００８】
以下に本願発明の実施形態を示す。もちろん以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲によって確定される本願発明の技術的範囲に含まれるほんの一部の実施形態にすぎない。従って、本願明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明であろう。
【０００９】
なお、以下には便宜上複数の実施形態を記載するが、これらは個別に発明として成立するだけでなく、もちろん、複数の実施形態を適宜組み合わせることでも発明が成立することは、当業者であれば容易に理解できよう。
【００１０】
［第１の実施形態］
以下、図面を参照して、本発明の第１の実施形態による画像処理装置について説明する。
【００１１】
図１は、本発明の第１の実施形態による画像処理装置の概要を説明するためのブロック図である。図１において、入力部１から入力される画像データとして、一定サイズ（例えば８×８画素など）にブロック状にスキャンされた画像データが入力される。このようなデータはＪＰＥＧのようにブロック符号化した画像データ（符号化データ）を復号化（ブロック復号化）した際（ブロック復号化手順の実行の際）に生成される。
【００１２】
画像処理部２は入力部１に接続し、ブロック化された画像データに各種画像処理をブロック符号化時の処理ブロック単位に行った後（ブロック画像処理手順）、ラスタ化した画像データ（ラスタ状の画像データ）に変換する（変換手順を実行する）前段画像処理部２１と、ラスタ変換された画像データに対して画素単位の画像処理（画素画像処理手順）が行われる後段画像処理部２２とから構成される。また、出力部３は画像処理部２に接続され、画像処理部２で処理された画像データを外部に出力する、或いは記憶装置等に記憶するための出力装置である。尚、画像処理部２内における画像処理部は上述した２つに限定されるものではなく、１つであっても３つ以上であってもよい。すなわち、本発明は、画像処理後の画像データに対して、所定ブロックごとに画像処理を実行する第１の画像処理手段（前段画像処理部２１）を備えることを特徴とする。また、本発明は、第２の画像処理手段（後段画像処理部２２）が、１画素単位で画像データを画像処理することを特徴とする。
【００１３】
図２は、図１における前段画像処理部２１の細部構成を説明するためのブロック図である。図２に示すように、本実施形態における前段画像処理部２１は、入力された画像データの範囲から処理範囲（指定範囲）を指定（抽出処理）するクリッピング処理部２１１と、画像データの解像度を変換する解像度変換処理部２１２と、画像データの並び替えを行う並び替え処理部２１３と、ラスタ化のためのバンドバッファとして使用するＳＤＲＡＭ２１４とから構成される。
【００１４】
尚、図２において、最初の処理部であるクリッピング処理部２１１へ入力される画像データをData_in、また、各処理部から出力される画像データをDataで示す。そして、説明のために出力される画像データである「Data」の前には、その処理を表す名称を付与している。さらに、最初の処理部であるクリッピング処理部２１１へ入力された画像データに関する有効信号をValid_in、各処理部で処理される画像データに関する有効信号をValidとする。このValidの前にも、その処理を表す名称を付与している。本実施形態による前段画像処理部２１は、入力される画像データData_inと、入力される画像データに関する有効信号Valid_inを用いて、入力された画像データが有効である場合（有効信号Valid_in＝Hが入力された場合）についてのみ、入力された画像データを取り込んでそれぞれの処理を行うようにしている。
【００１５】
まず、図１に示す入力部１から前段画像処理部２１のクリッピング処理部２１１に対して、画像データData_inと有効信号Valid_inが入力される。上述したように本実施形態では、入力される画像データはブロック化された画像であるとする。例えばクリッピング処理部２１１には、ブロック符号化する際に用いられた８×８画素のブロックごとの画像データが画像データData_inとして入力され、同時に、入力された画像データが有効データであれば有効信号Valid_in＝Hが入力される。なお、無効データの場合はValid_in＝Lが入力される。
【００１６】
クリッピング処理部２１１では、入力された画像データがクリッピングされる範囲（クリッピング有効範囲）であるかどうかの判定をブロック単位で行う。その結果、入力された画像データが有効データで、かつ、クリッピング有効範囲内の画像データであると判定された場合は、有効信号（Crip_Valid＝H）が出力される。また、当該画像データがクリッピング有効範囲以外あるいは無効データの場合は、有効信号を出力しない（Crip_Valid＝L）。あるいは当該画像データがクリッピング有効範囲以外の場合に他の無効信号を出力してもよい。クリッピング処理部２１１におけるこの動作によって、クリッピング処理部２１１に接続された解像度変換処理部２１２では、クリッピング処理部２１１が有効であると判定したブロックのみについて解像度変換処理を実施することが可能となる。
【００１７】
図３は、クリッピング処理部２１１で実施されるクリッピング処理について説明するための概略図である。図３（ａ）に示すように、画像データの横方向をＸ、縦方向をＹとする。このとき、ブロック単位でクリッピングする範囲を次のようにして指定する。すなわち、クリッピング範囲を矩形領域（矩形状の範囲）として、まず領域の左上の頂点をStart_Pointとして、その座標（ＸＳ，ＹＳ）が指定される。同様に、矩形領域の右下の頂点をEnd_Pointとして、その座標（ＸＥ，ＹＥ）が指定される。この２点で図３に示すようにして定義することができる矩形領域の範囲で囲まれた部分を本実施形態ではクリッピングし、当該範囲内のブロックについて有効信号Crip_Validを出力する。なお、クリッピング範囲の指定方法は、上記に限らず始点（または終点）とサイズ（幅、高さ）を用いても良い。また、画素単位のクリッピングパラメータからブロック単位のクリッピングパラメータを生成しても良い。
【００１８】
尚、本実施形態においてクリッピング処理の際に用いられるブロック形状は、図３（ａ）に示すような正方形だけに限定せず、図３（ｂ）に示す例のように横長形状のブロックや、図３（ｃ）に示す例のような縦長形状のブロックであってもよい。即ち、任意のブロック形状に適用できる。
【００１９】
上述したように、ＪＰＥＧ画像におけるＤＣＴブロック（８×８画素）単位のように、ブロック化された画像データについては、第１のクリッピング処理にてブロック単位のクリッピングを行うことでブロック単位の出力画素の削減を行い、また、その後の画像処理にて第２クリッピング処理を行うことで画素単位のクリッピングが可能である。そして、このクリッピング処理部２１１にてブロック単位で画像データを有効データ又は無効データの判定を行い、有効データのみを後段の処理部で処理するようにすることによって、その後の処理において無駄な処理を削減でき、画像処理全体の負荷の軽減を図ることが可能となる。
【００２０】
特に、前段画像処理部２１の出力をバッファに格納する場合は、バッファ容量の削減も可能である。なお、ブロック単位のクリッピングであるので、ブロック内の画素数などのパラメータは全てのブロックで同一となり、後段の処理も含めてクリッピングのために増加する処理はない。また、上述したようにクリッピング処理は有効信号の操作により行うので、後段処理のインタフェース（Ｉ／Ｆ）も変更不要である。なお、本実施形態では、以降の処理へクリッピング終了信号（Crip_Finish）を各処理におけるレイテンシ（latency）を補償して伝播することにより、以降の処理を適切なタイミングで終了させるようにしている。この構成により、最終段の処理にて最終画素のタイミングを検出でき、最終処理の終了を割込み信号等によってＣＰＵ等へ通知することで無駄な処理（時間）の削減が可能である。
【００２１】
解像度変換処理部２１２では、有効信号Crip_Validに対応したブロックに対して解像度変換（Resize）処理が行われる。本実施形態では、解像度変換処理部２１２はブロックサイズ（Ｂｘ×Ｂｙ）の縮小を実行する。例えば、８×８画素のブロックを４×４画素のブロックに変更する。即ち、ブロックサイズの縮小にて出力画素の削減を行うのである。解像度変換処理をブロック内で行うことにより、単純な解像度変換を可能にしている。例えば、入力画像が８×８画素の大きさのブロック状に入力される場合、解像度変換後のブロックサイズは、８×８、７×７、６×６、５×５、４×４、３×３、２×２、１×１の８通りしかなく、係数の生成が容易である。また、横方向・縦方向に同じ縮小回路を用いることができるだけでなく、ラインメモリも不要となる。但し、線形補間の場合は横方向の縮小回路と縦方向の縮小回路との間にブロックの横方向画素分のレジスタが必要となる。
【００２２】
尚、７×７画素以下に縮小する場合は、適切なタイミングで有効信号出力を無効（Resize_Valid＝L）とすることで解像度変換処理部をパイプライン化できる。即ち、パイプライン化した場合、所定のタイミングで不要信号が発生するが、有効信号出力を無効（Resize_Valid＝L）とするだけで間引き処理を容易に実行できる。この操作により、縮小率による制御は係数の切り替えと有効信号出力の切り替えのみで良く、処理が簡略化できる。
【００２３】
このように、入力される画像データのブロックサイズにあわせてブロック内で解像度変換処理を行うことにより、簡単に画像データの解像度変換が実現できる。もちろん、さらに細かな解像度変換を後段画像処理部２２等で行うことも可能である。そして、解像度変換されたブロックが、有効画像データの場合は同様にして、解像度変換された画像データResize_Data_outと当該画像データに関する有効信号Resize_validを出力することにより、次に行われる並び替え処理の処理対象をさらに削減することが可能となる。なお、拡大方向の解像度変換は、出力画素数が増加するので、ここでは実行しない。
本実施形態では、ブロック単位の解像度変換処理が横方向と縦方向とで独立して行われる。また、本実施形態では、解像度変換処理における横方向の縮小率をＲｘ、縦方向の縮小率をＲｙとするとき、ブロック単位の解像度変換処理における画像データの出力サイズが、
ｎ／Ｂｘ≦Ｒｘ＜（ｎ＋１）／Ｂｘ、但しｎは１からＢｘまでの整数、
ｍ／Ｂｙ≦Ｒｙ＜（ｍ＋１）／Ｂｙ、但しｍは１からＢｙまでの整数、
を満たすｎ×ｍである。また、本実施形態では、横方向及び縦方向の解像度変換処理が、入力された画像データのブロック上の位置に応じて補間係数を切り替え、補間点以外のデータを無効データとする。また、横方向の解像度変換処理ではブロック右端の画素演算時を無効データとし、縦方向の解像度変換処理ではブロック下端の画素演算時を無効データとする。また、本実施形態では、横方向及び縦方向の解像度変換処理は、補間係数が設定可能な最大値の場合、該最大値となる係数が乗算される画素を補間出力とする。また、本実施形態では、ブロック画像処理手段による横方向及び縦方向の解像度変換処理は、補間係数が０の場合、０の係数が乗算される画素に対応する画素であって０が乗算されない方の画素を補間出力とする。
【００２４】
並び替え処理部２１３における並び替え処理では、ＹＣｒＣｂ信号の同時化（点順次化）及び回転、ラスタ化の処理が行われる。通常、ブロック符号化においては符号化効率向上のため、輝度データＹと色差データＣｒＣｂに変換されて符号化される。従って、本実施形態の並び替え処理部２１３には輝度データＹと色差データＣｒＣｂがブロック順に入力される。よって、後段でＹＣｒＣｂデータをＲＧＢデータに変換するにはＹＣｒＣｂデータの同時化が必要になる。本実施形態では、このＹＣｒＣｂデータの同時化のためのバッファを用いてＹＣｒＣｂデータの同時化及びブロック内回転、ブロック内ラスタ化の処理を同時に実行する。
【００２５】
まず、Ｙブロックデータが入力されているときはＹブロックバッファ（不図示）に格納し、Ｃｒブロックデータが入力されているときはＣｒブロックバッファ（不図示）に格納し、Ｃｂブロックデータが入力されているときはＣｂブロックバッファ（不図示）に格納する。次に、Ｙブロックバッファ、Ｃｒブロックバッファ、Ｃｂブロックバッファの画素位置を合せて同時に読み出すことで同時化する。輝度データＹと色差データＣｒＣｂのサンプリングレートが異なる場合は、サンプリングレートの低い方（通常は、色差データ）のデータを補間して出力する。また、複数ブロックで構成されている場合は、複数ブロックを結合した状態でラスタ化して出力する。
【００２６】
画像全体のラスタ化はバンドバッファ（ＳＤＲＡＭ２１４上に構成）に対する格納時に行われる。なお、ここでは上記ＹＣｒＣｂの点順次データをＲＧＢデータに変換した後、上記バンドバッファに格納するものとする。上記ブロック内ラスタ化及びＹＣｒＣｂ同時化（点順次化）された画像データは上記バンドバッファの該当位置にブロック状に格納される。その結果、上記バンドバッファにはクリッピング範囲内のラスタ化された画像が格納される。
【００２７】
また、ラスタ変換の実行と同時に、画像データの回転処理を行う場合には、ブロック内の回転を上記ブロックバッファにて実行した後、回転モードに合せてブロックの先頭アドレスを変更しながらデータをバンドバッファに保存すればよい。予めブロック内の回転を上記ブロックバッファにて実行しておくことで、回転モードによるバンドバッファへの書き込みシーケンスの違いは、ブロックの先頭アドレスの設定のみに集約される。よって、後段画像処理部２２等では、ラスタ変換及び回転処理がされたＲＧＢ点順次画像データを用いて画像処理を実施することができる。
【００２８】
図４は、並び替え処理部２１３で行われる回転処理を説明するための概略図である。図４において、回転処理の例として画像データの０度（０°）、９０度（９０°）、１８０（１８０°）度及び２７０度（２７０°）の４つの角度（９０°単位の回転角）での回転例が示されている。この例で用いられている画像データは、横成分が４ブロック、縦成分が３ブロックの４×３ブロックの画像である。この例に示すように、画素単位での並び替え（回転）処理と、ブロック単位（ブロック自身）での並び替え（回転）処理は同様にして実施することができる。
【００２９】
図４に示すように、並び替え（回転）処理の対象となる画像４０において、画像内の各ブロックには番号が付与されている。この番号は右側の数字が画像のＸ成分、左側の数字が画像のＹ成分としている。すなわち、Ｘ＝０、Ｙ＝０のブロックは、「００」で表され、Ｘ方向に１ずれた、すなわちブロック００の右隣のブロックは「０１」で表現されている。
【００３０】
画像４０に対して回転角０度の並び替え処理を実施した場合、画像４０と同じ配置の画像４１が例えばＳＤＲＡＭ２１４に記憶される。
【００３１】
回転角１８０度の並び替えをした場合、画像４３に示すように、画像４０において左上に位置したブロック００を右下へ移動しなければならない。このように、ブロック００からブロック２３までのすべてのブロックを移動する。また、回転角９０度、２７０度の場合も同様の処理をブロック単位で行うことにより、それぞれ画像４２、４４に示すような結果となる。なお、９０度及び２７０度の場合は縦横のサイズが逆になる。
【００３２】
さらに、並び替え処理部２１３における処理について説明する。図５は、第１の実施形態における並び替え処理部２１３の処理動作の具体例を説明するための図である。図５を用いて、画像データのアドレスの連続性を増加させることと、転送効率を向上させる効果が得られる理由について説明する。ここでは並び替え処理部２１３で、４×４画素のブロックで構成される画像５０を１８０度に回転する処理を行って画像５１が生成されるものとする。従来の処理では、入力画素順に画像５１の位置に対応するアドレスを生成する処理を行っていたので、画像データがＳＤＲＡＭ２１４に記録されるような場合、アドレスは減少する方向になるのでバーストモードが使用できず、ＳＤＲＡＭ２１４へのアクセスは１画素ごとになり、転送効率が非常に悪くなっていた。
【００３３】
しかし、本実施形態では、回転処理を行った後の画像データを、一旦、ブロックバッファ５２へ保存する。これによって、アドレスが増加する方向に連続した複数のデータ（図５においては４つのデータ）を一度にＳＤＲＡＭ２１４へ記録させることが可能になる。すなわち、従来１ブロック１６回のアクセスが必要であったのを４回のアクセスで済むようになった。つまり、ブロック内の並び替え処理を行うことによって、アドレスの連続性が増加し、これによって転送効率を向上させることが可能になったのである。
【００３４】
図６は、クリッピング処理以降の解像度変換処理と並び替え処理を詳細に説明するための図である。ここでは、解像度変換部２１２に対して１ブロックが８×８画素で構成された画像データが入力され、解像度変換によって解像度が４×４画素のブロックに変換されるものとする。そして、並び替え処理部２１３において、１８０度回転の並び替え処理が行われるものとする。
【００３５】
まず、１ブロック８×８画素（０〜６３）のデータが、輝度信号Ｙの０番目のデータから順番に有効信号Crip_Validと同時に、解像度変換部２１２に入力される。そして、解像度変換部２１２において解像度変換処理が行われ、１ブロック４×４画素の画像データに変換される。そして、変換された画像データは上述したような並び替え処理が行われ、一旦、Ｙブロックバッファ６０、Ｃｒブロックバッファ６１、Ｃｂブロックバッファ６２にそれぞれ格納される。１ブロック分のＹＣｒＣｂデータが格納されると、Ｙブロックバッファ６０、Ｃｒブロックバッファ６１、Ｃｂブロックバッファ６２のそれぞれの先頭より順番に読み出され、ＲＧＢデータに変換されてバンドバッファの該当アドレスに格納されて並び替えが完了する。
【００３６】
なお、上述したような画像処理部２における各処理の順番は任意である。さらに、何れかの処理が欠落していてもよい。さらにまた、各処理において入力信号をそのまま出力するモード（スルーモード）を設け、各処理の実行を任意に選択することができるようにしてもよい。
【００３７】
また、上述した実施形態では、ブロック符号化のようにブロック化された画像を例としてＳＤＲＡＭ等の記憶装置を用いた装置による説明を行ったが、これは、ソフトウェア処理で行ってもよい。
【００３８】
上述したように、本発明は、画像データに対して所定ブロックごとに画像処理を実行する画像処理手段を備える画像処理装置であって、ブロックごとに画像データを画像処理するか否かを判定する判定手段を備え、画像処理手段が、画像処理を実行すると判定されたブロックの画像データについて画像処理を行うことを特徴とする。
【００３９】
また、本発明は、画像データに対して画像処理を実行する範囲を指定する指定手段（クリッピング処理部２１１）を備えることを特徴とする。さらに、本発明は、画像データを所定解像度に変換する解像度変換手段（解像度変換処理部２１２）を備えることを特徴とする。さらにまた、本発明は、画像データを構成するブロックの位置を所定位置に並び替える並び替え手段（並び替え処理部２１３）を備えることを特徴とする。
【００４０】
さらに、本発明は、入力画像データがラスタ化される前のＪＰＥＧ復号化データであって、画像処理に用いられるブロックが、ＪＰＥＧ復号化が行われた際に用いられたブロック（８×８画素またはＭＣＵ）であることを特徴とする。さらにまた、本発明は、画像データがラスタ化される前のＭＰＥＧ復号化データであって、画像処理に用いられるブロックが、ＭＰＥＧ復号化が行われた際に用いられたブロック（８×８画素またはＭＢ）であることを特徴とする。
【００４１】
次に、上述した構成による画像処理装置の処理動作について説明する。図８は、第１の実施形態による前段画像処理部２１の動作手順を説明するためのフローチャートである。
【００４２】
まず、画像処理装置の入力部１から処理対象となる画像データを入力するとともに、不図示の操作部等を用いて上述した各画像処理に必要なパラメータ設定が行われる（ステップＳ８１）。ここで、画像処理におけるパラメータとは、画像をクリッピング処理する範囲の指定、解像度変換処理のサイズ、並び替え処理に必要な回転モード、サンプリングモード（ＪＰＥＧでの４：４：４、４：２：２：、４：２：０等）、出力バンドバッファの領域等のことである。
【００４３】
次に、入力された画像データに対して、クリッピング処理部２１１においてクリッピング処理が行われる（ステップＳ８２）。図９は、ステップＳ８２でのクリッピング処理手順を詳細に説明するためのフローチャートである。
【００４４】
ここでは、図３に示したように、クリッピングの範囲始点を（ＸＳ，ＹＳ）とし、終点を（ＸＥ，ＹＥ）として指定した場合を例に挙げる。上述したように、本発明においては、あるブロック単位でのクリッピングが行われる。尚、より細かいクリッピングを後段処理部で行うことが可能である。このブロック単位とは、例えばＪＰＥＧデータであれば、ＤＣＴブロックである８×８画素単位、あるいはＹ，Ｃｒ、ＣｂをひとつにまとめたＭＣＵを単位としてもよい。このようなブロック単位でのクリッピング処理を行うことにより、バンドバッファに格納されるデータ量を削減する。これにより後段画像処理部２２での処理に要する負荷を軽減することができるだけでなく、画像処理装置全体の処理速度も速くなる。
【００４５】
ステップＳ９１では、クリッピング処理が終了したか否かの判定が行われる。即ち、クリッピング範囲の指定を始点（ＸＳ，ＹＳ）と終点（ＸＥ，ＹＥ）で示される矩形領域とした場合、入力画像ブロックの座標Ｘ，ＹがＸＥ、ＹＥの範囲を共に越えている場合（ＹＥＳ）、すでにクリッピングしたい範囲を越えていることを示すので、ここで終了処理を行う（ステップＳ９３）。この終了処理により、後段画像処理部２２に対して終了したことを示す指示（これにより、後段画像処理部２２が起動する）や、終了信号（Crip_Finish）の伝播により、前段画像処理部２１におけるその後の処理を終了させることも可能である。
【００４６】
一方、ステップＳ９１においてクリッピング処理が終了していない場合（ＮＯ側）、指定した範囲がクリッピング範囲内かの判定が行われる（ステップＳ９２）。その結果、クリッピング範囲内の場合（ＹＥＳ側）、有効データ処理を行って後続する画像処理部（ここでは解像度変換処理ステップＳ８３）に対して有効なデータであることを示す（ステップＳ９４）。一方、ステップＳ９２において有効範囲でないと判定された場合（ＮＯ側）、無効データであることを示す（ステップＳ９５）。なお、後続する画像処理部に信号等を出力しないことによって、無効データ処理とすることも可能である。入力ブロックに対する有効データ処理ステップＳ９４及び無効データ処理ステップＳ９５が終了すると、次のブロックの判定のため、終了判定ステップＳ９１に戻り、上記操作を繰り返す。
【００４７】
ステップＳ８２においてクリッピング処理にて有効と判断されたブロックには、解像度変換処理が行われる（ステップＳ８３）。図１０は、ステップＳ８３で行われる解像度変換処理の詳細を説明するためのフローチャートである。解像度変換処理部２１２では、まず解像度変換があるか否かの判定が行われる（ステップＳ１０１）。その結果、解像度変換がないと判定された場合（ＮＯ側）、解像度変換処理を行うことなく終了し、後続する画像処理部に入力された画像データをそのまま渡す。一方、解像度変換があると判定された場合（ＹＥＳ側）、解像度変換のパラメータ設定が行われる（ステップＳ１０２）。そして、設定されたパラメータに従い解像度変換処理が行われ、所望のサイズになるように間引き処理や線形補間処理等の処理が行われる（ステップＳ１０３）。なお、図８のパラメータ設定ステップＳ８１にて設定された解像度変換処理後のサイズより、解像度変換処理判定ステップＳ１０１を行い、パラメータ設定ステップＳ１０２を省略することも可能である。例えば、入力画像のブロックの横サイズが８で、解像度変換後の横サイズが８未満の場合、解像度変換を行う。この時、解像度変換後の横サイズが解像度変換のパラメータになっており、たとえは４に設定されている場合、解像度変換によって８×８画素のブロックが４×４のブロックに縮小される。
【００４８】
ステップＳ８３で解像度変換処理が行われた後、並び替え処理部２１３において、ブロック内の並び替え（回転等）処理が行われる（ステップＳ８４）。そして、処理された画像データがＳＤＲＡＭ２１４に保存される（ステップＳ８５）。ステップＳ８４において、並び替え処理が実行されることによって保存時にアドレス生成が簡単になるだけでなく、従来の１画素ごとの保存（シングルライト）ではなく、複数個単位の保存（バーストライト）が可能となり、１画素あたりのアクセス速度を早くすることができる。
【００４９】
すなわち、保存先がＳＤＲＡＭとすると、ＳＤＲＡＭへの書き込みアドレスの連続性を増加させて、転送効率を上げることが可能となる。さらに、保存先が組み込み機器のメインメモリのように、多くのバスマスタからのアクセスが生じるような場合においては、アクセス効率をあげることによって後段画像処理部２２の画像処理だけでなく、他の処理への影響も少なくすることができる。
【００５０】
さらにまた、ＪＰＥＧ画像を例にあげて説明すると、クリッピング処理において本実施形態のようにブロック単位で大まかな切り抜きを行い、その後、切り抜いたブロックに対して解像度変換を行い、ラスタ化されたＲＧＢ点順次データとして保存することにより、後段処理部における画素単位のクリッピングや、より詳細な解像度変換等の処理をより簡単に行うことができる。
【００５１】
すなわち、本発明に係る画像処理装置は、画像データを画像処理するための条件を設定する条件設定手段と、画像データに対して画像処理を実行する範囲を指定する指定手段と、画像データを所定解像度に変換する解像度変換手段と、画像データを構成するブロック内での順番を並び替える並び替え手段と、並び替えたブロックを記録デバイスの所定位置に記録する記録手段とを備えることを特徴とする。
【００５２】
上述したように、ブロック単位でクリッピング処理、解像度変換処理、並び替え処理を行うことにより、処理動作そのものが簡単になるだけでなく、後段処理部への負荷を軽減できるといえる。また、各処理の途中で画像データを保存する場合、その保存に必要な容量も少なくすることが可能となる。
【００５３】
また、ブロック単位ですでに並び替えを行っているので保存先等へのアドレス生成が簡単になり、また並び替えを行っているので、連続データとして一度に複数のデータを格納することが可能となり、転送効率が良くなる。
【００５４】
［第２の実施形態］
図１１は、本発明の第２の実施形態に係る画像処理装置の構成を示すブロック図である。図中、１１０はＪＰＥＧ復号化回路、１１１はＭＣＵクリッピング回路、１１２はＭＣＵ縮小回路、１１３はブロック内回転回路、１１４はブロックバッファ、１１５は点順次化回路、１１６はＲＧＢ変換回路、１１７はページバッファ、１１８は画素クリッピング回路、１１９はリサイズ回路である。以下、第１の実施形態と異なる部分のみ説明する。
【００５５】
入力部１よりＪＰＥＧ圧縮画像がＪＰＥＧ復号化回路１１０に入力され、復号化されてＭＣＵ単位に出力される。ＭＣＵクリッピング回路１１１はＭＣＵ単位に有効・無効を判定し、有効ＭＣＵはＭＣＵ縮小回路１１２で所望のサイズに縮小され、ブロック内回転回路１１３のアドレス生成によりブロックバッファ１１４の回転後の所定位置に格納される。ＭＣＵ１つ分のデータがブロックバッファに格納されると、点順次化回路１１５はブロックバッファ１１４よりＹ、Ｃｒ、Ｃｂのデータを同時に読み出しＲＧＢ回路１１６にてＲＧＢデータに変換する。なお、Ｃｒ、Ｃｂデータがサブサンプリングされている場合は、点順次化時に補間して出力する。変換されたＲＧＢデータはページバッファ１１７にＭＣＵ単位で回転モードに対応したアドレスに格納される。
【００５６】
１ページ分のデータがページバッファ１１７に格納されると、不図示のプリントエンジンの同期信号に従ってページバッファ１１７のページ先頭よりＲＧＢデータが読み出される。画素クリッピング回路１１８は上記ＭＣＵクリッピング回路１１１でクリッピングされなかった画素をクリップしリサイズ回路１１９にて所望のサイズに変換した後、出力部よりプリントエンジンに出力される。
【００５７】
次に、具体的な動作について説明する。
【００５８】
図１２は、第２の実施形態に係る画像処理装置による画像処理の具体例を説明するための図である。図２に示すように、本実施形態では２２７２×１７０４画素、サンプリングモードを４：２：２のＪＰＥＧ画像から１６００×１２００画素をトリミングして１ページが６８０×４８０画素のプリンタにて出力するものとする。なお、トリミング範囲は左上の頂点を（０，０）としたとき、始点（３００，３００）と終点（１８９９，１４９９）で囲まれる矩形範囲（境界含む）とする。
【００５９】
サンプリングモードは４：２：２であるので、ＭＣＵサイズは１６×８となる。従って横方向のＭＣＵ数は２２７２／１６＝１４２、縦方向のＭＣＵ数は１７０４／８＝２１３（いずれも８ビットで良い）となり、ＭＣＵクリッピング回路１１１の横方向ＭＣＵカウンタは１４２進にセットされる。また、トリミングの始点座標は（３００，３００）、終点座標は（１８９９，１４９９）であるから、ＭＣＵ有効範囲は（ＸＳ，ＹＳ）＝（１８，３７）、終点座標は（ＸＥ，ＹＥ）＝（１１９，１８７）となる。なお、トリミング領域が必ずしもＭＣＵ境界と一致するとは限らないので、始点（ＸＳ，ＹＳ）は画像データの始点座標及び終点座標をブロックサイズで除したときの小数点以下の数値の切り捨てとなり、終点（ＸＥ，ＹＥ）は小数点以下の数値の切り上げとなる。具体的には、ＸＳは右４ビットシフトした値、ＹＳは右３ビットシフトした値、ＸＥは右４ビットシフトした値にシフト前の下位４ビットをＯＲした結果（０または１）を加算した値、ＹＥは右３ビットシフトした値にシフト前の下位３ビットをＯＲした結果を加算した値となる。
【００６０】
ＭＣＵクリッピング回路１１１は上記（ＸＳ，ＹＳ）＝（１８，３７）及び（ＸＥ，ＹＥ）＝（１１９，１８７）をＭＣＵカウンタの値と比較し、有効範囲のＭＣＵのときのみ、前述した有効信号Crip_Validを"Ｈ"にする。
【００６１】
ＭＣＵ縮小回路１１２は有効範囲内のＭＣＵサイズを所定サイズに縮小する。図１３は、ＭＣＵ縮小回路１１２の細部構成を示すブロック図である。同図に示したように、ＭＣＵ縮小回路１１２は、横サイズ縮小回路１３１と縦サイズ縮小回路１３２の２つの縮小回路、有効信号生成回路１３３にて構成される。
【００６２】
有効信号生成回路１３３は入力される上記有効信号Crip_Validに従い、内部の横カウンタ、縦カウンタをインクリメントする。この２つのカウンタにより、ブロック内での画素位置を把握する。本実施形態ではブロックサイズは８×８画素なので、横カウンタ、縦カウンタは共に３ビットで、横カウンタのキャリーで縦カウンタがインクリメントされる。横カウンタの値ｘは横サイズ縮小回路１３１に、縦カウンタの値ｙは縦サイズ縮小回路１３２に供給され、各々補間係数の選択に使用される。また、横カウンタの値ｘ及び縦カウンタの値ｙは各々有効信号テーブルに入力され、有効信号に変換される。有効信号テーブルは縮小サイズ別に８ビットの出力を持ち、各カウンタの値より１ビットを選択する。なお、ここでは説明の簡略化ため、テーブル構成としているが、後述するようにカウンタ値より有効信号を直接生成しても良い。生成された縦、横の有効信号は、入力された有効信号Crip_Validにタイミングを合せてＡＮＤし、ＭＣＵ縮小回路有効信号Resize_Validとして出力する。
【００６３】
図１４は、横サイズ縮小回路１３１又は縦サイズ縮小回路１３２の具体的な構成を示すブロック図である。横サイズ縮小回路と縦サイズ縮小回路との違いは、バッファ１４４の遅延量で、横サイズ縮小回路の場合は１画素分で、縦サイズ縮小回路の場合は１ライン（８画素）分である。ここでは隣接する画素と補間画素との位置より線形補間で求める。例えば、縮小後のサンプリングポイントが画素Ａと画素Ｂの間で、サンプリングポイントから画素Ｂまでの距離とサンプリングポイントから画素Ａまでの距離の比がα：（１−α）のとき、補間ポイントの値Ｐは、
Ｐ＝αＡ＋（１−α）Ｂ                    （１）
となる。
【００６４】
図１５は、ＭＣＵ縮小後のサンプリングポイントを具体的に示す図である。網点がかかっている丸が縮小後のサンプリングポイントを表している。図１５において、（ａ）は７×７画素、（ｂ）は６×６画素、（ｃ）は５×５画素、（ｄ）は４×４画素、（ｅ）は３×３画素、（ｆ）は２×２画素に縮小した場合を示している。なお、１×１画素に縮小した場合は縮小前の（ｘ，ｙ）＝（３，３）の位置に一致する。図から明らかなように、縦方向、横方向共に８画素周期の繰返しになっている。つまり、ブロック内で縮小は完結している。なお、折り返しノイズ除去のため、ＪＰＥＧ復号化回路１１０ではＱテーブルを操作し、折り返しノイズとなる高周波成分を排除してから逆ＤＣＴするものとし、１×１画素、２×２画素、４×４画素では補間せずに該当する位置のデータがそのまま出てくるものとする。また、図中の円で囲まれた数字は、有効となるタイミングを示している。
【００６５】
図７は、図１５に示したそれぞれのサンプリングポイントの場合における補間係数（２５６倍して整数化した値）を示す図である。ここでα＝２５６は縮小後のサンプリングポイントと入力画素の位置が一致している場合を表し、この場合は補間せずに入力画素データをそのまま出力する。また、上述したように、横サイズ縮小回路と縦サイズ縮小回路の補間回路は同じであるので、補間係数も同一となる。従って、縦サイズ縮小回路１３２においては、図７におけるｘはｙに置き換わる。
【００６６】
なお、図７で背景がドットになっている欄は無効データを示しており、このタイミングのときの有効信号は"Ｌ"（無効）となる。従って、補間係数はどのような値を設定してもかまわない。ここでは、回路の簡略化のため、無効データのときの補間係数も規定している。例えば、全ての係数はｘ≧４で出現順が逆転（αと（１−α）も入れ替え）するようになっている。また、縮小後のサイズＷが６の時と３の時の係数を同一にしている。例えばＷ＝７の時の係数テーブルは（２５５，２１９，１８３，１４６，１１０，７３，３７，０）に設定し、αは左から（１−α）は右から読み出せばよい。なお、係数テーブルのビット数を削減するため、係数が２５５の時は補間せずに入力データをそのまま出力する（スルーモード）。
【００６７】
また、縮小後のサイズＷが２のべき乗の時は、全てスルーモードとしているので、係数は不要である。さらに、（１−α）はαの２の補数となるので、αのビット反転＋１より生成しても良い。この場合、例えば上記Ｗ＝７の時の係数テーブルは（０，３７，７３，１１０）の４つの係数のみで良い。αは（１−α）のビット反転＋１より生成し、ｘ≧４では逆順に読み出した値をαに、読み出した値のビット反転＋１を（１−α）にセットする。
【００６８】
なお、ｘ＝７（またはｙ＝７）の時、無効データとしているのは、バッファ１４４による遅延を補償するためである。通常、横サイズ縮小回路では１画素分、縦サイズ縮小回路では８画素分のレイテンシ（遅延）が発生する。このため、ＭＣＵ縮小回路１１２の補間出力は９画素分のレイテンシ（遅延）で出力され、入力有効信号及び横サイズ縮小の有効信号は、縦サイズ縮小の有効信号とタイミングを合せてからＡＮＤをしなければならない。しかし、上述のようにｘ＝７（またはｙ＝７）の時、無効データとすることで、内部の動作タイミングを入力有効信号に同期化することができ、上記タイミング調整は不要になる。但し、上記横サイズ縮小回路、縦サイズ縮小回路の出力をラッチする場合は、２画素分のレイテンシ補償が必要である。さらに、ｘ＝０（またはｙ＝０）のデータも可能な限り使用しないようにしている。これは、ＤＣＴの高周波成分削減による歪の影響は周辺部に大きく現れるので、周辺部の画素の使用を避けて上記歪の影響を少なくするためである。
【００６９】
上記縮小回路の有効信号は簡単に生成できる。即ち、
Ｗ＝１の時はｘ＝３で"Ｈ"、
Ｗ＝２の時はｘの下位２ビット＝０１で"Ｈ"、
Ｗ＝３の時はｘ＝１，４，６で"Ｈ"、
Ｗ＝４の時はｘのＬＳＢ＝０で"Ｈ"、
Ｗ＝５の時はｘ＝（２，５，７）以外で"Ｈ"、
Ｗ＝６の時はｘ＝（３，７）以外で"Ｈ"、
Ｗ＝７の時はｘ＝（７）以外で"Ｈ"、
となる。
【００７０】
ｘ＝７で常に有効信号を"Ｌ"とすれば、さらに簡略化できる。例えば、Ｗ＝７では判定は不要になり、Ｗ＝６はＷ＝１の反転で良い。また、Ｗ＝５はＷ＝３に＋１したものの反転であり、２と５（Ｗ＝３においては１と６）は１の補数の関係にあるので、ｘのＭＳＢと下位の２ビットそれぞれをＥＸＯＲすることによって判定すればよい。
【００７１】
上述したように、ブロックバッファ１１４ではブロック内の回転及び点順次化が実行される。ＪＰＥＧの場合、サンプリングモードが４：２：０のときＭＣＵの画素サイズが最大となる。このとき、ＪＰＥＧ復号化回路１１０からはＭＣＵとして輝度信号が４ブロック（Ｙ０，Ｙ１，Ｙ２，Ｙ３）、色差信号が各１ブロック（Ｃｒ、Ｃｂ）の６ブロックが８×８画素のブロック毎に順次入力される。ブロックバッファ１１４には３つのブロックバッファ（Ｙブロックバッファ、Ｃｒブロックバッファ、Ｃｂブロックバッファ）があり、各々個別のＲＡＭより構成されている（但し、ＣｒブロックバッファとＣｂブロックバッファのアドレスは共通化できるので、データバスの上位・下位に分離して格納することで同一ＲＡＭ上に構成しても良い）。
【００７２】
ブロック内回転回路１１３には入力される上記有効信号Resize_Validに従い、内部の書き込み用横カウンタ、縦カウンタ、ブロックカウンタをインクリメントする。上記縦・横２つのカウンタにより、ブロック内での画素位置を把握し、ブロックカウンタにてブロックの位置を把握する。本実施形態ではブロックサイズは最大８×８画素なので、横カウンタ、縦カウンタは共に３ビットとなる。また、ＭＣＵ縮小回路１１２でサイズが変更されている場合は、横カウンタ、縦カウンタはサイズ分のカウンタとなる。即ち、縮小後のサイズをＷとすると、カウンタがＷ−１の時にキャリーが発生し、０に戻る（Ｗ進カウンタ）。なお、縦カウンタは、横カウンタのキャリーでインクリメントされる。また、ＭＣＵ内のＹブロックの数は最大４なので、ブロックカウンタは２ビットとなり、横カウンタのキャリーと縦カウンタのキャリーのＡＮＤでインクリメントされる。
【００７３】
書き込み用横カウンタの値をＸｗ、縦カウンタの値をＹｗ、ブロックカウンタの値をＢｗとすると、Ｙブロックバッファへの書き込みアドレスは（Ｂｗ，Ｙｗ，Ｘｗ）となる（ここで"，"はビット結合を示す）。同様にＣｒブロックバッファとＣｂブロックバッファの書き込みアドレスは（Ｙｗ，Ｘｗ）となる。
【００７４】
図１６は、図１２の具体例における輝度信号データがＹブロックバッファに格納される様子を示した図である。なお、四角の中の番号は格納されるタイミングを示している。本実施形態では、ＭＣＵ縮小した場合においても、並び替えせずに縮小前の８×８画素単位に格納している。これにより、格納時のアドレスが回転モードに依存しなくなり、アドレス生成が容易になる（アドレス生成部での制御は、Ｙ，Ｃｒ，Ｃｂのブロックシーケンス及び縮小後のサイズＷによるキャリー制御のみとなる）。
【００７５】
図１７は、図１２の具体例における色差信号データがＣｒブロックバッファ及びＣｂブロックバッファ（Ｃｒブロックバッファ及びＣｂブロックバッファは同一のメモリ上に構成しても良い。）に格納される様子を示した図である。なお、四角の中の番号は格納されるタイミングを示している。図中に示したように本実施形態では、ＭＣＵ縮小にて１／２以下（Ｗ≦４）に縮小した場合、サブサンプリングされている方向の縮小後の画素サイズを２倍にする。即ち、輝度信号の縮小後の画素サイズをＷとした時、サブサンプリングされている方向の画素データの縮小後のサイズは２Ｗとなる。この構成により、縮小による色差信号の解像度の劣化を最小にする。
【００７６】
一方、読み出し時は、読み出し用の横カウンタ、縦カウンタ及びブロックカウンタによってアドレスを生成する。上記カウンタの構成はサンプリングモード及び回転モードにより異なる。ここでは、各サンプリングモードに対応するため、Ｙブロックバッファ用は横カウンタを３ビット、縦カウンタを４ビット、ブロックカウンタを１ビットにて構成し、Ｃ（Ｃｒ，Ｃｂ共通）ブロックバッファ用は横カウンタを４ビット、縦カウンタを３ビットにて構成する。
【００７７】
例えば、Ｙブロックバッファ用カウンタの場合、４：４：４モードでは横カウンタ、縦カウンタ共にＷ進アップダウンカウンタ（３ビット）として動作し、４：２：２モードでは、横カウンタはＷ進アップダウンカウンタ、縦カウンタは２Ｗ進のアップダウンカウンタ（０°、１８０°）またはＷ進のアップダウンカウンタ＋１ビットのブロックカウンタ（９０°、２７０°）として動作し、４：２：０モードでは、横カウンタはＷ進アップダウンカウンタ、縦カウンタは２Ｗ進のアップダウンカウンタ＋１ビットのブロックカウンタとして動作する。上記カウンタ構成の切り替えはキャリー（ボロー）の生成方法によって行う。なお、ダウンカウント時の初期値はＷ−１（Ｗ進）または２Ｗ−１（２Ｗ進）である。
【００７８】
図１８は、回転モードとＹブロックバッファの読み出し位置との関係を示す図である。図中の四角は８×８画素のブロックを、四角中の数字はブロックの入力順を、小さな四角は縮小後のブロック位置を示している。また、矢印はデータの読み出される方向を示している。また、ドットで示されているブロックは４：２：２モードの時の対象ブロックを示している。
【００７９】
Ｙブロックバッファの読み出し用横カウンタの値をＸｒ、縦カウンタの値をＹｒ（またはＹｒ'）、ブロックカウンタの値をＢｒとし、また、Ｃ（Ｃｒ，Ｃｂ）ブロックバッファの読み出し用横カウンタの値をＸｃｒ（またはＸｃｒ'）、縦カウンタの値をＹｃｒ（またはＹｃｒ'）、とすると、図１８より、各ブロックバッファの読み出しアドレスは下記の式で表される。尚、以下では、"，"はビット結合を、"！"はダウンカウントを示すものとする。
（１）サンプリングモード＝４：４：４の時（Ｙ、Ｃｒ、Ｃｂ共通）
０°のとき：  Ｙｒ，Ｘｒ
９０°のとき：！Ｘｒ，Ｙｒ
１８０°のとき：！Ｙｒ，！Ｘｒ
２７０°のとき：  Ｘｒ，！Ｙｒ
（２）サンプリングモード＝４：２：２の時
［Ｙブロックアドレス］、（Ｙｒ'は２Ｗ進）
０°のとき：Ｙｒ'[0]，Ｙｒ'[3..1]，Ｘｒ
９０°のとき：Ｂｒ，！Ｘｒ，Ｙｒ
１８０°のとき：！Ｙｒ'[0]，！Ｙｒ'[3..1]，！Ｘｒ
２７０°のとき：！Ｂｒ，Ｘｒ，！Ｙｒ
［Ｃｒ，Ｃｂブロックアドレス］（Ｗ＞４の時、Ｘｃｒ'、Ｙｃｒ'は２Ｗ進）
０°のとき：Ｙｃｒ，Ｘｃｒ'[3..1]
９０°のとき：！Ｘｃｒ，Ｙｃｒ'[3..1]
１８０°のとき：！Ｙｃｒ，！Ｘｃｒ'[3..1]
２７０°のとき：Ｘｃｒ，！Ｙｃｒ'[3..1]
［Ｃｒ，Ｃｂブロックアドレス］（Ｗ≦４の時、Ｘｃｒ'、Ｙｃｒ'は２Ｗ進）
０°のとき：Ｙｃｒ，Ｘｃｒ'
９０°のとき：！Ｘｃｒ，Ｙｃｒ'
１８０°のとき：！Ｙｃｒ，！Ｘｃｒ'
２７０°のとき：Ｘｃｒ，！Ｙｃｒ'
（３）サンプリングモード＝４：２：０の時
［Ｙブロックアドレス］（Ｙｒ'は２Ｗ進）
０°のとき：Ｂｒ，Ｙｒ'[0]，Ｙｒ'[3..1]，Ｘｒ
９０°のとき：！Ｙｒ'[0]，Ｂｒ，！Ｘｒ，Ｙｒ'[3..1]
１８０°のとき：！Ｂｒ，！Ｙｒ'[0]，！Ｙｒ'[3..1]，！Ｘｒ
２７０°のとき：Ｙｒ'[0]，！Ｂｒ，Ｘｒ，！Ｙｒ'[3..1]
［Ｃｒ，Ｃｂブロックアドレス］（Ｗ＞４の時、Ｘｃｒ'、Ｙｃｒ'は２Ｗ進）
０°のとき：Ｙｃｒ'[3..1]，Ｘｃｒ'[3..1]
９０°のとき：！Ｘｃｒ'[3..1]，Ｙｃｒ'[3..1]
１８０°のとき：！Ｙｃｒ'[3..1]，！Ｘｃｒ'[3..1]
２７０°のとき：Ｘｃｒ'[3..1]，！Ｙｃｒ'[3..1]
［Ｃｒ，Ｃｂブロックアドレス］（Ｗ≦４の時、Ｘｃｒ'、Ｙｃｒ'は２Ｗ進）
０°のとき：Ｙｃｒ'[3..1]，Ｘｃｒ'
９０°のとき：！Ｘｃｒ'[3..1]，Ｙｃｒ'
１８０°のとき：！Ｙｃｒ'[3..1]，！Ｘｃｒ'
２７０°のとき：Ｘｃｒ'[3..1]，！Ｙｃｒ'
なお、上記カウンタの内、所定カウンタの機能（アップカウントとダウンカウント）を逆転させることで、縦及び横の任意の鏡像を得ることができる。
【００８０】
また、有効信号を操作することにより、各ブロックバッファのカウンタを共通にすることも可能である。この場合、読み出し用の横カウンタ、縦カウンタ及びブロックカウンタは各々３ビット、４ビット、１ビットのバイナリカウンタでよく、Ｙブロックバッファの読み出しアドレスは、
０°のとき：Ｂｒ，Ｙｒ[0]，Ｙｒ[3..1]，Ｘｒ
９０°のとき：!Ｙｒ[0]，Ｂｒ，!Ｘｒ，Ｙｒ[3..1]
１８０°のとき：!Ｂｒ，!Ｙｒ[0]，!Ｙｒ[3..1]，!Ｘｒ
２７０°のとき：Ｙｒ[0]，!Ｂｒ，Ｘｒ，!Ｙｒ[3..1]
のようになる。但し、"，"はビット結合を、"！"はビット反転を示すものとする（以下同じ）。
【００８１】
また、Ｃ（Ｃｒ，Ｃｂ）ブロックバッファの読み出しアドレスは、
４：２：２モードでＷ＞４の時、
０°のとき：Ｙｒ[3..1]，Ｙｒ[0]，Ｘｒ[2..1]
９０°のとき：!Ｙｒ[0]，!Ｘｒ[2..1]，Ｙｒ[3..1]
１８０°のとき：!Ｙｒ[3..1]，!Ｙｒ[0]，!Ｘｒ[2..1]
２７０°のとき：Ｙｒ[0]，Ｘｒ[2..1]，!Ｙｒ[3..1]
４：２：０モードでＷ＞４の時、
０°のとき：Ｂｒ，Ｙｒ[3..2]，Ｙｒ[0]，Ｘｒ[2..1]
９０°のとき：!Ｙｒ[0]，!Ｘｒ[2..1]，Ｂｒ，Ｙｒ[3..2]
１８０°のとき：!Ｂｒ，!Ｙｒ[3..2]，!Ｙｒ[0]，!Ｘｒ[2..1]
２７０°のとき：Ｙｒ[0]，Ｘｒ[2..1]，!Ｂｒ，!Ｙｒ[3..2]
４：２：２モードでＷ≦４の時、
０°のとき：Ｙｒ[3..1]，Ｙｒ[0]，Ｘｒ[1..0]
９０°のとき：!Ｘｒ，Ｂｒ，Ｙｒ[2..1]
１８０°のとき：!Ｙｒ[3..1]，!Ｙｒ[0]，!Ｘｒ[1..0]
２７０°のとき：Ｘｒ，!Ｂｒ，!Ｙｒ[2..1]
４：２：０モードでＷ≦４の時、
０°のとき：Ｂｒ，Ｙｒ[2..1]，Ｙｒ[0]，Ｘｒ[1..0]
９０°のとき：!Ｙｒ[0]，!Ｘｒ[1..0]，Ｂｒ，Ｙｒ[2..1]
１８０°のとき：!Ｂｒ，!Ｙｒ[2..1]，!Ｙｒ[0]，!Ｘｒ[1..0]
２７０°のとき：Ｙｒ[0]，Ｘｒ[1..0]，!Ｂｒ，!Ｙｒ[2..1]
となる。
【００８２】
また、横方向のアドレス（図１８のＸ方向）を反転するだけで横方向の鏡像を、縦方向のアドレス（図１８のＹ方向）を反転するだけで縦方向の鏡像を出力させることができる。
【００８３】
なお、この場合の有効信号は、
０°のとき：Ｘｒ＜ＷかつＹｒ＜Ｗのとき有効
９０°のとき：!Ｘｒ＜ＷかつＹｒ＜Ｗのとき有効
１８０°のとき：!Ｘｒ＜Ｗかつ!Ｙｒ＜Ｗのとき有効
２７０°のとき：Ｘｒ＜Ｗかつ!Ｙｒ＜Ｗのとき有効
となる。
【００８４】
さらに、４：２：２モードで、無効なブロックの読み出しを削減するため、Ｙブロックバッファの読み出しアドレスを、
０°のとき：０，Ｙｒ[0]，Ｙｒ[3..1]，Ｘｒ
９０°のとき：０，Ｙｒ[3]，!Ｘｒ，Ｙｒ[2..0]
１８０°のとき：０，!Ｙｒ[0]，!Ｙｒ[3..1]，!Ｘｒ
２７０°のとき：０，!Ｙｒ[3]，Ｘｒ，!Ｙｒ[2..0]
Ｃ（Ｃｒ，Ｃｂ）ブロックバッファの読み出しアドレスをＷ＞４の時、
０°のとき：Ｙｒ[3..1]，Ｙｒ[0]，Ｘｒ[2..1]
９０°のとき：!Ｘｒ，Ｙｒ[3..1]
１８０°のとき：!Ｙｒ[3..1]，!Ｙｒ[0]，!Ｘｒ[2..1]
２７０°のとき：Ｘｒ，!Ｙｒ[3..1]
Ｃ（Ｃｒ，Ｃｂ）ブロックバッファの読み出しアドレスをＷ≦４の時、
０°のとき：Ｙｒ[3..1]，Ｙｒ[0]，Ｘｒ[1..0]
９０°のとき：!Ｘｒ，Ｙｒ[3]，Ｙｒ[1..0]
１８０°のとき：!Ｙｒ[3..1]，!Ｙｒ[0]，!Ｘｒ[1..0]
２７０°のとき：Ｘｒ，!Ｙｒ[3]，!Ｙｒ[1..0]
に設定するようにしても良い。この場合は図１８の灰色のブロックのみ読み出される。
【００８５】
なお、本実施形態では、ブロックバッファの読み出し時にブロック内回転を行う構成としたが、図１９及び図２０に示すようにブロックバッファへのデータ書き込み時にブロック内回転した位置へデータを格納するようにしても良い。すなわち、図１９は、書き込み時にブロック内回転した時の輝度信号データがＹブロックバッファに格納される様子を示す図である。また、図２０は、書き込み時にブロック内回転した時の色差信号データがＣｒブロックバッファ及びＣｂブロックバッファに格納される様子を示す図である。
【００８６】
また、本実施形態では、読み出し時に８×８画素単位の識別が可能であるので、読み出し時の有効信号を操作することにより、８×８画素単位のクリッピングを行うことも可能である。この場合、ＭＣＵ単位、ＤＣＴブロック（８×８画素）単位、画素単位の３段階のクリッピングになる。あるいはＭＣＵ単位のクリッピングを省略して、ＤＣＴブロック（８×８画素）単位、画素単位の２段階のクリッピングとしても良い。
【００８７】
さらに、点順次化されたＹＣｒＣｂデータはＲＧＢ変換回路１１６にてＲＧＢデータに変換され、ページバッファ１１７に格納される。
【００８８】
さらにまた、ページバッファ１１７への格納は、上記ＭＣＵ単位で行われる。
【００８９】
ＭＣＵの先頭アドレスは、上記ブロック内の並び替えと同様に、横方向のＭＣＵカウンタ及び縦方向のＭＣＵカウンタより生成できる。但し、この場合、複数の乗算が必要となり、アドレス生成が複雑になる。そこで、現画素のアドレスに差分アドレスを加算して次画素のアドレスを求める方法（以下、「差分アドレッシング法」と記す）によりページバッファの格納アドレスを生成する。即ち、直前画素（原画素）のアドレスをＡ（ｎ−１）、差分アドレス（アドレス差分値）をＤとしたとき、現画素のアドレスＡ（ｎ）を、
Ａ（ｎ）＝Ａ（ｎ−１）＋Ｄ                    （２）
とする。すなわち、Ａ（ｎ）で示されるバッファのアドレスに次画素データを格納して、ブロック内の画素の並び替え処理が行われる。
【００９０】
差分アドレスＤは、回転やサンプリングモードにより下記に示すシーケンスにて切り替わる。ここで、ＭＣＵラインエンド（右端のＭＣＵの最終画素）における差分アドレスをＤｌ、ＭＣＵラインエンド以外のＭＣＵエンド（ＭＣＵの最終画素）における差分アドレスをＤｍ、ＭＣＵエンド以外のブロック内ラインエンド（ＭＣＵ内の右端画素）における差分アドレスをＤｂとする。また、ＭＣＵ内の横方向カウンタの値をｘ、ＭＣＵ内の縦方向カウンタの値をｙ、横方向のＭＣＵカウンタの値をＭｘ、縦方向のＭＣＵカウンタの値をＭｙ、回転後のＭＣＵサイズをＷｘ×Ｗｙ、横方向のＭＣＵ数をＷｍ、縦方向のＭＣＵ数をＨｍとする。この時の各差分アドレスの切り替えタイミングを下記に示す。
【００９１】
Ｄ＝Ｄｌ：ｘ＝Ｗｘ−１、ｙ＝Ｗｙ−１、ｚ＝ｍ−１の時
Ｄ＝Ｄｍ：ｘ＝Ｗｘ−１、ｙ＝Ｗｙ−１、ｚ≠ｍ−１の時
Ｄ＝Ｄｂ：ｘ＝Ｗｘ−１、ｙ≠Ｗｙ−１の時
Ｄ＝１  ：上記以外
ここで、ｚ＝Ｍｘ、ｍ＝Ｗｍ：０°、１８０°回転時、
ｚ＝Ｍｙ、ｍ＝Ｈｍ：９０°、２７０°回転時である。
【００９２】
また、各差分アドレス及びアドレスの初期値Ａ(0)は、ページバッファの先頭アドレスをＡｓとすると、
Ｄｂ＝Ｗｍ×Ｗｘ−Ｗｘ＋１：各回転モード共通
［０°回転］
Ａ(0)＝Ａｓ
Ｄｌ＝１
Ｄｍ＝−Ｗｍ×Ｗｘ×（Ｗｙ−１）＋１
［９０°回転］
Ａ(0)＝Ａｓ＋（Ｗｍ−１）×Ｗｘ
Ｄｌ＝−Ｗｍ×Ｗｘ×（Ｈｍ×Ｗｙ−１）−２Ｗｘ＋１
Ｄｍ＝Ｗｍ×Ｗｘ−Ｗｘ＋１
［１８０°回転］
Ａ(0)＝Ａｓ＋Ｗｍ×Ｗｘ×（Ｈｍ−１）×Ｗｙ＋（Ｗｍ−１）×Ｗｘ
Ｄｌ＝−Ｗｍ×Ｗｘ×（２Ｗｙ−１）＋（Ｗｍ−２）×Ｗｘ＋１
Ｄｍ＝−Ｗｍ×Ｗｘ×（Ｗｙ−１）−２Ｗｘ＋１
［２７０°回転］
Ａ(0)＝Ａｓ＋Ｗｍ×Ｗｘ×（Ｈｍ−１）×Ｗｙ
Ｄｌ＝Ｗｍ×Ｗｘ×（（Ｈｍ−２）×Ｗｙ＋１）＋１
Ｄｍ＝−Ｗｍ×Ｗｘ×（２Ｗｙ−１）−Ｗｘ＋１
となる。
【００９３】
例えば、図１２の例では、ＭＣＵクリッピング回路により１０１×１５１ＭＣＵの画像になり、ＭＣＵ縮小回路にて１６×８画素のＭＣＵは６×３画素のＭＣＵサイズに縮小され、ブロック内回転回路にて９０°回転されて出力される。従って、ＭＣＵ縮小回転後のＭＣＵサイズは３×６となる。即ち、Ｗｘ＝３、Ｗｙ＝６、Ｗｍ＝１５１、Ｈｍ＝１０１である。よって、ページバッファの先頭アドレスＡｓ＝０とおくと、Ａ（０）＝４５０、Ｄｌ＝−２７４０７０、Ｄｍ＝Ｄｂ＝４５１となる。ＭＣＵ内の横方向カウンタｘは３進カウンタで、このカウンタのキャリーでＭＣＵ内の縦方向カウンタｙがカウントアップする。ＭＣＵ内の縦方向カウンタｙは６進カウンタで、このカウンタのキャリーでＭＣＵカウンタＭｙがカウントアップする。ＭＣＵカウンタＭｙは１０１進カウンタで、０から１００までカウントアップし、０に戻る。なお、横方向のＭＣＵカウンタは不要である。
【００９４】
差分アドレスＤは、１，１，４５１、１、１，４５１，…，１，１，−２７４０７０，…のように、３回に１回４５１に、１８１８回（１０１×６×３回）に１回−２７４０７０に切り替わる。即ち、上記カウンタのキャリーに同期して切り替わる。
【００９５】
上述のように、回転モード、ＭＣＵ縮小回転後のＭＣＵサイズ、画像の縦及び横のＭＣＵ数によって上記パラメータＷｘ、Ｗｙ、Ｗｍ、Ｈｍが決定され、ＭＣＵ内の横方向カウンタ、ＭＣＵ内の縦方向カウンタ、ＭＣＵカウンタの構成が決まる。また、上記差分アドレスＤｌ、Ｄｍ、Ｄｂは上記パラメータで一意に決まり、パラメータに変更がない限り一定である。したがって、上記差分アドレスＤｌ、Ｄｍ、Ｄｂ及びアドレスの初期値Ａ(0)をレジスタに格納することにより、複雑な演算なしにアドレス生成が可能である。また、上述したように、通常はＤ＝１となる（アドレスが増加する方向に連続する）ので、バーストライトによるメモリの使用効率の向上が可能である。
【００９６】
ページバッファ上には回転された状態で格納されているので、ページバッファ１１７からの読み出しは、モードに関係なくページバッファの先頭アドレスＡｓより順次（連続して）行われる。読み出された画像データは、上記ＭＣＵクリッピング回路１１１でクリッピングされなかった画素を画素クリッピング回路１１８にてクリップし、リサイズ回路１１９にて所望のサイズに変換した後、出力部よりプリントエンジンに出力される。例えば、図１２の例では、ページバッファ上に４５３×６０６画素のサイズで格納されている。これをユーザ設定領域である４５０×６００画素（１２００×１６００の３／８倍）にクリップして、さらに、出力画像サイズである４８０×６４０画素に拡大（１６／１５倍）して出力部より出力する。
【００９７】
本実施形態ではＭＣＵ縮小回路にて目的のサイズ付近にまで縮小する。図１２の例では１２００×１６００画素を４８０×６４０画素にしたいので、縮小率は４８０／１２００＝０.４となる。この値は１／８（＝０.１２５）単位の縮小率の中では３／８（＝０.３７５）が最も近い。従って、ＭＣＵ縮小回路にて３／８に縮小し、後段のリサイズ回路で１６／１５倍することで、３／８×１６／１５＝０.４を実現する。
【００９８】
上述したプリントエンジンの同期信号に従って画像信号を出力するような場合、１／２以下の縮小を１度で実行すると縮小後のサンプリングポイントが離れてしまうので、補間に用いる画素の読み出しは不連続になってしまう。従って、ページバッファをＤＲＡＭ上に構成した場合は、メモリの使用効率が下がる。一方、本実施形態では１／１６以上の縮小率においては、リサイズ回路１１９での縮小率は１／２以上となり、連続読み出しにて対応可能となる（リサイズ回路１１９にラインメモリを装備した場合は先頭より画像データを読み出すだけでよい）。即ち、メモリアクセスの連続性が向上し、メモリ使用効率が向上する。また、ＪＰＥＧ復号化回路のＱテーブルを操作し、折り返しノイズとなる高周波成分を排除してから逆ＤＣＴする構成により、折り返しノイズ除去のためのプリフィルタが不要となる。また、縮小率が１／２以下においては色差信号のサブサンプリングによる補間を行わないようにしたので、色差信号の解像度の劣化が抑えられる。
【００９９】
なお、上記説明ではページバッファにて並び替えを行っているが、これに限らず、バンドバッファ（ページバッファの一部）でも良い。上記のように、本実施形態では、バッファに格納されるブロックラインの最終ブロックのブロック終端画素と次画素とのアドレス差分値をＤｌ、ブロックのブロック終端画素と次画素とのアドレス差分値をＤｍ、ブロックのブロック右端画素と次画素とのアドレス差分値をＤｂとした時、アドレス差分値Ｄが、
ブロックライン上の最終ブロックのブロック終端画素の場合はＤ＝Ｄｌ、
Ｄ＝Ｄｌでなく、ブロックライン上の最終ブロックのブロック終端画素の場合はＤ＝Ｄｍ、
Ｄ＝Ｄｌ、Ｄ＝Ｄｍのいずれでもなく、ブロックライン上の最終ブロックのそれ以外でブロック右端画素の場合はＤ＝Ｄｂ、
その他の場合はＤ＝１
である。
【０１００】
以上、本発明の実施形態を説明したが、これに限らず本発明は、複数の機器（例えば、ホストコンピュータ、インタフェース機器、リーダ、プリンタ等）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置等）に適用してもよい。
【０１０１】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコード（コンピュータプログラム）を記録したコンピュータ読み取り可能な記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０２】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０３】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図１】
0004777447.tif 000002
【図２】
0004777447.tif 000003
【図３】
0004777447.tif 000004
【図４】
0004777447.tif 000005
【図５】
0004777447.tif 000006
【図６】
0004777447.tif 000007
【図７】
0004777447.tif 000008
【図８】
0004777447.tif 000009
【図９】
0004777447.tif 000010
【図１０】
0004777447.tif 000011
【図１１】
0004777447.tif 000012
【図１２】
0004777447.tif 000013
【図１３】
0004777447.tif 000014
【図１４】
0004777447.tif 000015
【図１５】
0004777447.tif 000016
【図１６】
0004777447.tif 000017
【図１７】
0004777447.tif 000018
【図１８】
0004777447.tif 000019
【図１９】
0004777447.tif 000020
【図２０】
0004777447.tif 000021