(57)【特許請求の範囲】
【請求項１】
元画像が複数のブロックから構成されており、各前記ブロックは複数の画素から構成されており、
各前記画素に対応する画素データが前記ブロックの順に入力し、
入力する前記画素データに対応する画素と、メモリへ格納後の前記画素データの示す画像との位置関係に応じたアドレスを生成し、
生成した前記アドレスに、入力した前記画素データを前記メモリに格納するユニットであって、
第１開始値から第１終了値まで第１カウント値をカウントし、前記第１カウント値が前記第１終了値に達したら前記第１カウント値を前記第１開始値にリセットする第１カウンタと、
第２開始値から第２終了値まで第２カウント値をカウントし、前記第２カウント値が前記第２終了値に達したら前記第２カウント値を前記第２開始値にリセットする第２カウンタと、
を備え、
前記第１カウント値がリセットされたときに前記第２カウント値をカウントし、前記第１カウント値及び前記第２カウント値に基づいて前記アドレスを生成し、
前記元画像を示す前記画素データが間引かれて、間引き後の前記画素データが順に入力する場合、前記アドレスを生成する際に、前記メモリへ格納後の前記画素データの示す画像の前記元画像に対する間引き量に応じて、前記第１開始値及び前記第１終了値のうちの少なくとも一方と、前記第２開始値及び第２終了値のうちの少なくとも一方を変更し、前記第１カウント値及び前記第２カウント値をカウントするとともに、
第３開始値から第３終了値まで第３カウント値をカウントし、前記第３カウント値が前記第３終了値に達したら前記第３カウント値を前記第３開始値にリセットする第３カウンタと、
第４開始値から第４終了値まで第４カウント値をカウントし、前記第４カウント値が前記第４終了値に達したら前記第４カウント値を前記第４開始値にリセットする第４カウンタと、
を更に備え、
前記第２カウント値がリセットされたときに前記第３カウント値をカウントし、前記第３カウント値がリセットされたときに前記第４カウント値をカウントし、
前記第１カウント値、前記第２カウント値、前記第３カウント値及び前記第４カウント値に基づいて、前記アドレスを生成する
ことを特徴とするユニット。
【請求項２】
請求項１に記載のユニットであって、
前記メモリへ格納後の前記画素データの示す画像を前記元画像に対して回転させる場合、前記アドレスを生成する際に、
前記第１カウント値がリセットされたときに前記第２カウント値をカウントし、前記第２カウント値がリセットされたときに前記第３カウント値をカウントし、前記第３カウント値がリセットされたときに前記第４カウント値をカウントする第１状態と、
前記第２カウント値がリセットされたときに前記第１カウント値をカウントし、前記第１カウント値がリセットされたときに前記第４カウント値をカウントし、前記第４カウント値がリセットされたときに前記第３カウント値をカウントする第２状態とを、
前記メモリへ格納後の前記画素データの示す画像の前記元画像に対する回転量に応じて、切り替える
ことを特徴とするユニット。
【請求項３】
請求項１又は２に記載のユニットであって、
前記メモリへの前記画素データの格納がある毎に、前記第１カウンタが前記第１カウント値をカウントする
ことを特徴とするユニット。
【請求項４】
請求項１〜３のいずれかに記載のユニットであって、
前記第１カウント値は、前記メモリに格納する前記画素データに対応する前記画素の前記ブロックにおける水平方向位置を示し、
前記第２カウント値は、前記メモリに格納する前記画素データに対応する前記画素の前記ブロックにおける垂直方向位置を示し、
前記第３カウント値は、前記メモリに格納する前記画素データに対応する前記ブロックの前記画像における水平方向位置を示し、
前記第４カウント値は、前記メモリに格納する前記画素データに対応する前記ブロックの前記画像における垂直方向位置を示す
ことを特徴とするユニット。
【請求項５】
請求項４に記載のユニットであって、
前記第１カウント値に基づいて第１アドレス値を算出し、
前記第２カウント値に基づいて第２アドレス値を算出し、
前記第３カウント値に基づいて第３アドレス値を算出し、
前記第４カウント値に基づいて第４アドレス値を算出し、
前記第１アドレス値、前記第２アドレス値、前記第３アドレス値及び前記第４アドレス値を加算することにより前記アドレスを生成する
ことを特徴とするユニット。
【請求項６】
請求項５に記載のユニットであって、
所定アドレス数毎に前記メモリへ前記画素データの格納が行われ、
前記第１カウント値と、前記所定アドレス数と、を乗算して前記第１アドレス値を算出し、
前記第２カウント値と、前記メモリへ格納後の前記画素データの示す画像の水平方向のブロック数と、前記ブロックの前記水平方向の１行分の前記画素データを格納するための１行分アドレス数と、を乗算して前記第２アドレス値を算出し、
前記第３カウント値と、前記１行分アドレス数と、を乗算して前記第３アドレス値を算出し、
前記第４カウント値と、前記ブロック数と、１ブロック分の前記画素データを格納するための１ブロックアドレス数と、を乗算して前記第４アドレス値を算出する
ことを特徴とするユニット。
【請求項７】
請求項６に記載のユニットであって、
前記間引き量に応じて、前記１行分アドレス数及び前記１ブロックアドレス数を変更する
ことを特徴とするユニット。
【請求項８】
元画像が複数のブロックから構成されており、各前記ブロックは複数の画素から構成されており、
各前記画素に対応する画素データが前記ブロックの順に入力し、
入力する前記画素データに対応する画素と、メモリへ格納後の前記画素データの示す画像との位置関係に応じたアドレスを生成し、
生成した前記アドレスに、入力した前記画素データを前記メモリに格納するユニットであって、
第１開始値から第１終了値まで第１カウント値をカウントし、前記第１カウント値が前記第１終了値に達したら前記第１カウント値を前記第１開始値にリセットする第１カウンタと、
第２開始値から第２終了値まで第２カウント値をカウントし、前記第２カウント値が前記第２終了値に達したら前記第２カウント値を前記第２開始値にリセットする第２カウンタと、
を備え、
前記第１カウント値がリセットされたときに前記第２カウント値をカウントし、前記第１カウント値及び前記第２カウント値に基づいて前記アドレスを生成し、
（１）前記元画像を示す前記画素データが間引かれて、間引き後の前記画素データが順に入力する場合、前記アドレスを生成する際に、前記メモリへ格納後の前記画素データの示す画像の前記元画像に対する間引き量に応じて、前記第１開始値及び前記第１終了値のうちの少なくとも一方と、前記第２開始値及び第２終了値のうちの少なくとも一方を変更し、前記第１カウント値及び前記第２カウント値をカウントし、
（２）第３開始値から第３終了値まで第３カウント値をカウントし、前記第３カウント値が前記第３終了値に達したら前記第３カウント値を前記第３開始値にリセットする第３カウンタと、
第４開始値から第４終了値まで第４カウント値をカウントし、前記第４カウント値が前記第４終了値に達したら前記第４カウント値を前記第４開始値にリセットする第４カウンタと、
を更に備え、
前記第２カウント値がリセットされたときに前記第３カウント値をカウントし、前記第３カウント値がリセットされたときに前記第４カウント値をカウントし、
前記第１カウント値、前記第２カウント値、前記第３カウント値及び前記第４カウント値に基づいて、前記アドレスを生成する
（３）前記メモリへ格納後の前記画素データの示す画像を前記元画像に対して回転させる場合、前記アドレスを生成する際に、
前記第１カウント値がリセットされたときに前記第２カウント値をカウントし、前記第２カウント値がリセットされたときに前記第３カウント値をカウントし、前記第３カウント値がリセットされたときに前記第４カウント値をカウントする第１状態と、
前記第２カウント値がリセットされたときに前記第１カウント値をカウントし、前記第１カウント値がリセットされたときに前記第４カウント値をカウントし、前記第４カウント値がリセットされたときに前記第３カウント値をカウントする第２状態とを、
前記メモリへ格納後の前記画素データの示す画像の前記元画像に対する回転量に応じて、切り替え、
（４）前記メモリへの前記画素データの格納がある毎に、前記第１カウンタが前記第１カウント値をカウントし、
（５）前記第１カウント値は、前記メモリに格納する前記画素データに対応する前記画素の前記ブロックにおける水平方向位置を示し、
前記第２カウント値は、前記メモリに格納する前記画素データに対応する前記画素の前記ブロックにおける垂直方向位置を示し、
前記第３カウント値は、前記メモリに格納する前記画素データに対応する前記ブロックの前記画像における水平方向位置を示し、
前記第４カウント値は、前記メモリに格納する前記画素データに対応する前記ブロックの前記画像における垂直方向位置を示し、
（６）前記第１カウント値に基づいて第１アドレス値を算出し、
前記第２カウント値に基づいて第２アドレス値を算出し、
前記第３カウント値に基づいて第３アドレス値を算出し、
前記第４カウント値に基づいて第４アドレス値を算出し、
前記第１アドレス値、前記第２アドレス値、前記第３アドレス値及び前記第４アドレス値を加算することにより前記アドレスを生成し、
（７）所定アドレス数毎に前記メモリへ前記画素データの格納が行われ、
前記第１カウント値と、前記所定アドレス数と、を乗算して前記第１アドレス値を算出し、
前記第２カウント値と、前記メモリへ格納後の前記画素データの示す画像の水平方向のブロック数と、前記ブロックの前記水平方向の１行分の前記画素データを格納するための１行分アドレス数と、を乗算して前記第２アドレス値を算出し、
前記第３カウント値と、前記１行分アドレス数と、を乗算して前記第３アドレス値を算出し、
前記第４カウント値と、前記ブロック数と、１ブロック分の前記画素データを格納するための１ブロックアドレス数と、を乗算して前記第４アドレス値を算出し、
（８）前記間引き量に応じて、前記１行分アドレス数及び前記１ブロックアドレス数を変更する
ことを特徴とするユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレスを生成し、そのアドレスに画素データを格納するユニットに関する。
【背景技術】
【０００２】
従来から画像データの符号化方法が多数提案されており、実用化されている。特に、ＪＰＥＧ方式の画像データの符号化方法が良く知られている。  
ＪＰＥＧ方式の符号化はＭＣＵ（最小符号化単位）ごとに行われるため、ＪＰＥＧ形式の画像データをデコードすると、複数の画素を含むブロック単位のデータが出力される。
【特許文献１】特開平９−２９８６６０号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ブロック単位のデータから個々の画素単位のデータ（画素データ）を出力すると、出力される画素データはブロックの順になる。一方、メモリに画素データを格納する際に、画像における画素の位置に応じたアドレスに、その画素に対応する画素データを格納したいという要請がある。このような場合、ブロック順に入力する画素データを並び替えて、メモリに格納することが行われる。  
ところで、元の画像を示す画像データから画素データを間引いてメモリに格納する場合、間引き後の画像における画素の位置に応じたアドレスに、画素データを格納するようにすれば良い。しかし、このような処理をソフトウェアによって実現すると、処理に時間がかかってしまう。一方、ハードウェアによって実現する場合に回路規模が増大すると、コスト高を誘引してしまう。
【０００４】
そこで、本発明は、このような処理を行うユニットを回路規模が増大しないように実現することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するための主たる発明は、元画像が複数のブロックから構成されており、各前記ブロックは複数の画素から構成されており、各前記画素に対応する画素データが前記ブロックの順に入力し、入力する前記画素データに対応する画素と、メモリへ格納後の前記画素データの示す画像との位置関係に応じたアドレスを生成し、生成した前記アドレスに、入力した前記画素データを前記メモリに格納するユニットであって、第１開始値から第１終了値まで第１カウント値をカウントし、前記第１カウント値が前記第１終了値に達したら前記第１カウント値を前記第１開始値にリセットする第１カウンタと、第２開始値から第２終了値まで第２カウント値をカウントし、前記第２カウント値が前記第２終了値に達したら前記第２カウント値を前記第２開始値にリセットする第２カウンタと、を備え、前記第１カウント値がリセットされたときに前記第２カウント値をカウントし、前記第１カウント値及び前記第２カウント値に基づいて前記アドレスを生成し、前記元画像を示す前記画素データが間引かれて、間引き後の前記画素データが順に入力する場合、前記アドレスを生成する際に、前記メモリへ格納後の前記画素データの示す画像の前記元画像に対する間引き量に応じて、前記第１開始値及び前記第１終了値のうちの少なくとも一方と、前記第２開始値及び第２終了値のうちの少なくとも一方を変更し、前記第１カウント値及び前記第２カウント値をカウントするとともに、第３開始値から第３終了値まで第３カウント値をカウントし、前記第３カウント値が前記第３終了値に達したら前記第３カウント値を前記第３開始値にリセットする第３カウンタと、第４開始値から第４終了値まで第４カウント値をカウントし、前記第４カウント値が前記第４終了値に達したら前記第４カウント値を前記第４開始値にリセットする第４カウンタと、を更に備え、前記第２カウント値がリセットされたときに前記第３カウント値をカウントし、前記第３カウント値がリセットされたときに前記第４カウント値をカウントし、前記第１カウント値、前記第２カウント値、前記第３カウント値及び前記第４カウント値に基づいて、前記アドレスを生成することを特徴とする。
【０００６】
本発明の他の特徴については、本明細書及び添付図面の記載により明らかにする。
【発明を実施するための最良の形態】
【０００７】
本明細書及び添付図面の記載により、少なくとも、以下の事項が明らかとなる。
【０００８】
元画像が複数のブロックから構成されており、各前記ブロックは複数の画素から構成されており、
各前記画素に対応する画素データが前記ブロックの順に入力し、
入力する前記画素データに対応する画素と、メモリへ格納後の前記画素データの示す画像との位置関係に応じたアドレスを生成し、
生成した前記アドレスに、入力した前記画素データを前記メモリに格納するユニットであって、
第１開始値から第１終了値まで第１カウント値をカウントし、前記第１カウント値が前記第１終了値に達したら前記第１カウント値を前記第１開始値にリセットする第１カウンタと、
第２開始値から第２終了値まで第２カウント値をカウントし、前記第２カウント値が前記第２終了値に達したら前記第２カウント値を前記第２開始値にリセットする第２カウンタと、
を備え、
前記第１カウント値がリセットされたときに前記第２カウント値をカウントし、前記第１カウント値及び前記第２カウント値に基づいて前記アドレスを生成し、
前記元画像を示す前記画素データが間引かれて、間引き後の前記画素データが順に入力する場合、前記アドレスを生成する際に、前記メモリへ格納後の前記画素データの示す画像の前記元画像に対する間引き量に応じて、前記第１開始値及び前記第１終了値のうちの少なくとも一方と、前記第２開始値及び第２終了値のうちの少なくとも一方を変更し、前記第１カウント値及び前記第２カウント値をカウントする
ことを特徴とするユニット。  
このようなユニットによれば、回路規模を縮小することができる。
【０００９】
かかるユニットであって、第３開始値から第３終了値まで第３カウント値をカウントし、前記第３カウント値が前記第３終了値に達したら前記第３カウント値を前記第３開始値にリセットする第３カウンタと、第４開始値から第４終了値まで第４カウント値をカウントし、前記第４カウント値が前記第４終了値に達したら前記第４カウント値を前記第４開始値にリセットする第４カウンタと、を更に備え、前記第２カウント値がリセットされたときに前記第３カウント値をカウントし、前記第３カウント値がリセットされたときに前記第４カウント値をカウントし、前記第１カウント値、前記第２カウント値、前記第３カウント値及び前記第４カウント値に基づいて、前記アドレスを生成することが望ましい。これにより、間引き量に関わらず、所定のアドレスを生成することができる。
【００１０】
かかるユニットであって、前記メモリへ格納後の前記画素データの示す画像を前記元画像に対して回転させる場合、前記アドレスを生成する際に、前記第１カウント値がリセットされたときに前記第２カウント値をカウントし、前記第２カウント値がリセットされたときに前記第３カウント値をカウントし、前記第３カウント値がリセットされたときに前記第４カウント値をカウントする第１状態と、前記第２カウント値がリセットされたときに前記第１カウント値をカウントし、前記第１カウント値がリセットされたときに前記第４カウント値をカウントし、前記第４カウント値がリセットされたときに前記第３カウント値をカウントする第２状態とを、前記メモリへ格納後の前記画素データの示す画像の前記元画像に対する回転量に応じて、切り替えることが望ましい。これにより、回転量に関わらず、所定のアドレスを生成することができる。
【００１１】
かかるユニットであって、前記メモリへの前記画素データの格納がある毎に、前記第１カウンタが前記第１カウント値をカウントすることが望ましい。これにより、入力する画素データに追従するように、その画素データに対応するアドレスを生成することができる。
【００１２】
かかるユニットであって、前記第１カウント値は、前記メモリに格納する前記画素データに対応する前記画素の前記ブロックにおける水平方向位置を示し、前記第２カウント値は、前記メモリに格納する前記画素データに対応する前記画素の前記ブロックにおける垂直方向位置を示し、前記第３カウント値は、前記メモリに格納する前記画素データに対応する前記ブロックの前記画像における水平方向位置を示し、前記第４カウント値は、前記メモリに格納する前記画素データに対応する前記ブロックの前記画像における垂直方向位置を示すことが望ましい。これにより、間引き量に関わらず、所定のアドレスを生成することができる。
【００１３】
かかるユニットであって、前記第１カウント値に基づいて第１アドレス値を算出し、前記第２カウント値に基づいて第２アドレス値を算出し、前記第３カウント値に基づいて第３アドレス値を算出し、前記第４カウント値に基づいて第４アドレス値を算出し、前記第１アドレス値、前記第２アドレス値、前記第３アドレス値及び前記第４アドレス値を加算することにより前記アドレスを生成することが望ましい。これにより、単純な加算処理だけでアドレスを生成することができ、処理速度を高めることができる。
【００１４】
かかるユニットであって、所定アドレス数毎に前記メモリへ前記画素データの格納が行われ、前記第１カウント値と、前記所定アドレス数と、を乗算して前記第１アドレス値を算出し、前記第２カウント値と、前記メモリへ格納後の前記画素データの示す画像の水平方向のブロック数と、前記ブロックの前記水平方向の１行分の前記画素データを格納するための１行分アドレス数と、を乗算して前記第２アドレス値を算出し、前記第３カウント値と、前記１行分アドレス数と、を乗算して前記第３アドレス値を算出し、前記第４カウント値と、前記ブロック数と、１ブロック分の前記画素データを格納するための１ブロックアドレス数と、を乗算して前記第４アドレス値を算出することが望ましい。これにより、単純な加算処理だけでアドレスを生成することができ、処理速度を高めることができる。
【００１５】
かかるユニットであって、前記間引き量に応じて、前記１行分アドレス数及び前記１ブロックアドレス数を変更することが望ましい。これにより、間引き量に関わらず、所望のアドレスを生成することができる。
【００１６】
＝＝＝複合装置の概要＝＝＝
図１は、複合装置の全体斜視図である。図２は、複合装置の構成のブロック図である。複合装置１は、原稿から画像を読み取るためのスキャナ機能と、外部のコンピュータ３からの印刷データに基づいて画像を紙に印刷するプリンタ機能と、原稿から読み取った画像を紙に印刷するコピー機能と、を有する。
【００１７】
この複合装置１は、スキャナ部１０と、プリンタ部２０と、カードリーダ部３０と、パネル部４０と、コントローラ６０と、ＳＤＲＡＭ９０とを有する。スキャナ部１０の主な構成要素は、複合装置１の上部収容部１Ａに設けられている。プリンタ部２０の主な構成要素は、複合装置１の下部収容部１Ｂに設けられている。カードリーダ部３０は、ユーザがメモリカードをセットし易いように、下部収容部１Ｂの前面に設けられている。パネル部４０は、ユーザが操作し易いように、上部収容部１Ａの前面に設けられている。コントローラ６０は、下部収容部１Ｂの内部の基板に設けられている。
【００１８】
図３は、プリンタ部の説明図である。この図は、複合装置１の上部収容部１Ａが持上げられてプリンタ部２０を露出させたときの様子を示している。  
プリンタ部２０は、紙を搬送する搬送ユニット（不図示）と、インクを吐出するヘッドを移動させるキャリッジ２１とを有する。そして、プリンタ部２０は、搬送ユニットにより紙を搬送する搬送動作と、移動するヘッドからインクを吐出して紙にドットを形成するドット形成動作とを交互に繰り返して、紙に画像を印刷する。不図示の搬送ユニットは、複合装置１の背面の背面給紙口２２又は複合装置１の前面の前面給紙口２３にセットされた紙を給紙し、複合装置１の前面の排紙トレイ２４へ印刷された紙を排紙する。
【００１９】
下部収容部１Ｂの前面の左右には、インクカートリッジカバー２５が設けられている。インクカートリッジ２６の取り付け時又は交換時、ユーザは、このインクカートリッジカバー２５を開き、インクカートリッジ２６を取り付け又は交換する。取り付け後又は交換後にユーザがインクカートリッジカバー２５を閉じることにより、インクカートリッジ２６のセットが完了する。このインクカートリッジ２６にはインクが収容されており、このインクはヘッドに供給されてヘッドから吐出される。
【００２０】
図４は、スキャナ部の説明図である。この図は、複合装置１の上蓋１１を開いたときの様子を示している。  
スキャナ部１０は、上蓋１１と、原稿台ガラス１２とを有する。上蓋１１には、白色の原稿マット１１Ａが取り付けられている。原稿台ガラス１２に原稿が置かれた状態で上蓋１１が閉じられると、原稿が原稿マット１１Ａと原稿台ガラス１２との間で平らにセットされる。原稿台ガラス１２の下には、読取キャリッジ等のスキャナ部１０の他の構成要素がある。
【００２１】
図５は、パネル部の説明図である。  
パネル部４０は、液晶ディスプレイ４１と、各種のボタンを有する。ボタンの種類としては、例えば、電源ボタン４２、設定ボタン４３、ストップボタン４４、モード選択ボタン４５、カーソル操作ボタン群４６、スタートボタン４７等がある。電源ボタン４２は、複合装置１の電源をオン／オフする。設定ボタン４３は、ヘッドクリーニング、ノズルチェック、インク残量等の設定や確認を行う。ストップボタン４４は、動作中の機能を中止する。モード選択ボタン４５は、複合装置１の機能の選択を行う。カーソル操作ボタン群４６は、液晶ディスプレイ４１に表示される項目の設定等を行う。スタートボタン４７は、カラーボタン４７Ｃ及びモノクロボタン４７Ｂを有し、カラー印刷又はモノクロ印刷の開始に用いられる。  
液晶ディスプレイ４１には、図示するような各種の設定画面だけでなく、カードリーダ部３０によって読み取られたメモリカードの画像データも表示される。
【００２２】
＝＝＝コントローラ＝＝＝
図６は、コントローラ６０の構成の説明図である。  
コントローラ６０は、ＣＰＵ６１と、ＲＯＭ６２と、ＳＤＲＡＭ６３と、カードＡＳＩＣ６４と、制御ＡＳＩＣ７０とを有する。ＣＰＵ６１は、各種の演算処理を行う演算処理部であり、複合装置１の全体の制御を司る。ＲＯＭ６２は、複合装置１に各種の処理を実行させるためのプログラムを記憶するメモリである。ＳＤＲＡＭ６３は、ＣＰＵ６１の演算領域を提供する。カードＡＳＩＣ６４は、カードリーダ部３０にセットされたメモリカードとの間でデータの読み取り又は書き込みを行うための専用回路である。制御ＡＳＩＣ７０は、各種の処理を行うための専用回路である。この制御ＡＳＩＣ７０は、特定の処理を行うためのユニットを複数備えている。以下、制御ＡＳＩＣ７０の各ユニットについて説明する。
【００２３】
ＵＳＢインターフェイスユニット７１は、外部のコンピュータとの間でデータを送受信するためのユニットである。ＵＳＢインターフェイスユニット７１を介して、例えば印刷データを受信したり、スキャナ部１０により読み取られた原稿の画像データを送信したりする。
【００２４】
ＪＰＥＧデコードユニット７２は、ＪＰＥＧ形式の画像データをデコードするユニットである。ＪＰＥＧデコードユニット７２は、デコードした画像データを、ブロック単位（ＭＣＵ：最小符号化単位）でＹＵＶ色空間のデータ（ＹＵＶデータ）を出力するユニットである。
【００２５】
ピクセル化ユニット７３は、ブロック単位のＹＵＶデータを画素単位のＹＵＶデータにして出力するユニットである。また、ピクセル化ユニット７３は、入力された画像データに対して、１／１（間引きなし）、１／２、１／４及び１／８の間引きを行う。
【００２６】
色変換ユニット７４は、ＹＵＶデータを、ＲＧＢ色空間のデータ（ＲＧＢデータ）にして出力するユニットである。色変換ユニット７４は、ＹＵＶデータに対して所定の演算に基づくＲＧＢデータを生成するだけでなく、ＳＤＲＡＭ９０のガンマ補正テーブルを参照してＲＧＢデータをガンマ補正し、ガンマ補正されたＲＧＢデータを出力することもできる。
【００２７】
並び替えユニット７５は、入力されてくるＲＧＢデータの画像データ上の位置に応じたアドレスを生成し、そのアドレスに格納されるようにＲＧＢデータをＳＤＲＡＭ９０に格納するユニットである。画像データを０°、９０°、１８０°又は２７０°にて回転させる場合、並び替えユニットは、回転量に応じたアドレスを生成する。また、ピクセル化ユニット７３が間引き処理を行う場合、並び替えユニットは、間引き量に応じたアドレスを生成する。
【００２８】
バスコントロールユニット７６は、制御ＡＳＩＣ７０に接続されたＳＤＲＡＭ９０へのＣＰＵ６１からのアクセスを可能にするユニットである。すなわち、バスコントロールユニット７６は、ＣＰＵ６１がＳＤＲＡＭ９０にデータを書き込む書き込み処理や、ＳＤＲＡＭ９０からデータを読み取る読み取り処理を行うためのユニットである。つまり、ＣＰＵ６１とＳＤＲＡＭ９０との間のデータのやり取りは、バスコントロールユニット７６を介して行われる。
【００２９】
印刷データ生成ユニット８１は、ＲＧＢデータを印刷データに変換するユニットである。詳しくは、印刷データ生成ユニット８１は、ＳＤＲＡＭ９０のルックアップテーブルを参照しながら２５６階調のＲＧＢデータをＣＭＹＫ色空間の２５６階調のデータに変換する色変換処理を行い、ディザテーブルを参照しながら２５６階調のＣＭＹＫデータを４階調のＣＭＹＫデータに変換するハーフトーン処理を行い、画素データであるＣＭＹＫデータを印刷される画素順に並び替えるインターレース処理を行う。
【００３０】
スキャナコントロールユニット８２は、スキャナ部１０を制御するためのユニットである。スキャナコントロールユニット８２は、スキャナ部１０を制御するための制御データをスキャナ部１０へ送信したり、スキャナ部１０から送信されてくる画像データをＳＤＲＡＭ９０へ格納したりする。  
プリンタコントロールユニット８３は、プリンタ部２０を制御するためのユニットである。プリンタコントロールユニット８３は、ＳＤＲＡＭ９０に格納された印刷データの画素データに応じてプリンタ部２０のヘッドからインクを吐出させたり、印刷データのコマンドデータに応じてプリンタ部２０のモータを駆動してキャリッジ２１を移動させたりする。  
ディスプレイコントロールユニット８４は、パネル部４０の液晶ディスプレイ４１の表示を制御するユニットである。ディスプレイコントロールユニット８４は、液晶ディスプレイ４１の設定をしたり、ＳＤＲＡＭ９０に格納された画像データを表示するため液晶ディスプレイ４１へ送信したりする。
【００３１】
ＳＤＲＡＭコントローラ８６は、ＳＤＲＡＭ９０へのデータの書き込み・読み出しを制御するとともに、各ユニットからＳＤＲＡＭ９０に対するアクセスを管理する。各ユニットがＳＤＲＡＭ９０にアクセスする場合、各ユニットはＳＤＲＡＭコントローラ８６に対してリクエストを発する。ＳＤＲＡＭコントローラ８６は、各ユニットからリクエストがあったときに、どのユニットのアクセスを優先させるべきかを決定し、優先順序に従って各ユニットのリクエストに応じてＳＤＲＡＭ９０へアクセスする。つまり、ＳＤＲＡＭコントローラ８６は、各ユニットとＳＤＲＡＭ９０との間でアクセスをスムーズに行わせる役割を果たしている。
【００３２】
各ユニットは、処理対象となるデータをＳＤＲＡＭ９０へバッファすることができる。また、図示していないが、各ユニットはＣＰＵ６１によって設定される。
【００３３】
＝＝＝複合装置の各種機能の概要＝＝＝
次に、図６を参照しながら、複合装置１の各種機能について説明する。以下に説明するように、複合装置１は、主な機能として、プリンタ機能、スキャナ機能、コピー機能、ダイレクトプリント機能などを有する。
【００３４】
＜プリンタ機能について＞
コンピュータには、複合装置１のプリンタドライバが予めインストールされている。そして、プリンタドライバは、コンピュータに、アプリケーションプログラム等で作成された画像データを印刷データに変換させる。この印刷データには、コマンドデータと画素データとが含まれている。コマンドデータは、複合装置１のプリンタ部２０を制御するためのデータである。画素データは、印刷画像を構成するドットの有無・色・階調に関するデータであり、本実施形態ではＣＭＹＫ色空間の４階調のデータ（ＣＭＹＫ２ビットデータ）である。そして、プリンタドライバは、コンピュータに、印刷データを複合装置１へ送信させる。
【００３５】
コントローラ６０は、コンピュータからの印刷データを、コマンドデータと画素データとに分離して、ＳＤＲＡＭ９０にバッファする。そして、プリンタコントロールユニット８３は、受信したコマンドデータに基づいてプリンタ部２０を制御し、画素データに基づいてヘッドからインクを吐出させ、印刷を行う。本実施形態では、ＣＭＹＫ２ビットデータに基づいてヘッドからインクが吐出され、紙上の各画素に大ドット・中ドット・小ドットが形成される。  
このような処理を複合装置１が行うことによって、複合装置１はプリンタとして機能する。
【００３６】
＜スキャナ機能について＞
コンピュータには、複合装置１のスキャナドライバが予めインストールされている。ユーザは、コンピュータ上でスキャナドライバの設定を行い、例えば読取解像度や読み取り範囲等の設定を行う。ユーザは、スキャナ部１０に原稿５をセットした後、コンピュータ上でスキャナドライバによりスキャン開始を指示すると、スキャナドライバは、コンピュータに、ユーザの設定内容に応じた制御データを複合装置１へ送信させる。  
スキャナコントロールユニット８２は、コンピュータからの制御データに基づいてスキャナ部１０を制御し、スキャナ部１０から原稿５の画像データを取得する。本実施形態では、ＲＧＢ色空間の２５６階調のデータ（ＲＧＢ８ビットデータ）の画素データから構成される画像データを取得する。そして、コントローラ６０は、取得した画像データをコンピュータへ送信する。  
このような処理を複合装置１が行うことによって、複合装置１はスキャナとして機能する。
【００３７】
＜コピー機能について＞
ユーザは、パネル部４０を操作して設定を行い、例えば紙の大きさ、原稿の大きさ、倍率、コピーモード（はやい／きれい）等の設定を行う。スキャナ部１０に原稿５をセットした後、ユーザがパネル部４０のスタートボタン４７を押すと、コピー開始を指示する開始信号がパネル部４０からコントローラ６０へ送られる。スキャナコントロールユニット８２は、ユーザの設定内容に応じた制御データをスキャナ部１０へ送信し、スキャナ部１０は、制御データに基づいて原稿５を読み取り、ＲＧＢ８ビットデータの画素データから構成される画像データをスキャナコントロールユニット８２へ送信する。スキャナコントロールユニット８２は、スキャナ部１０からの画像データをＳＤＲＡＭ９０にバッファする。
【００３８】
次に、印刷データ生成ユニット８１は、スキャナ部１０から取得した画像データを、印刷データに変換する。スキャナ部１０からの画像データはＲＧＢ８ビットデータの画素データから構成されており、印刷データ生成ユニット８１は、このＲＧＢ８ビットデータを、色変換処理し、ハーフトーン処理し、インターレース処理し、生成された印刷データをＳＤＲＡＭ９０へバッファする。そして、プリンタコントロールユニット８３は、ＳＤＲＡＭ９０にバッファされた印刷データに応じてプリンタ部２０を制御して、印刷を行う。  
このような処理を複合装置１が行うことによって、複合装置１はコピー機として機能する。
【００３９】
＜ダイレクトプリント機能＞
ユーザは、画像データを記憶しているメモリカードをカードリーダ部３０へセットする。カードＡＳＩＣ６４は、メモリカードがカードリーダ部３０へセットされると、メモリカードに記憶されている画像データを読み出し、バスコントロールユニット７６を介してＳＤＲＡＭ９０に画像データをバッファする。
【００４０】
画像データがＪＰＥＧ形式の場合、ＪＰＥＧデコードユニット７２がＪＰＥＧ形式の画像データをデコードし、ブロック単位のＹＵＶデータを出力する。このブロック単位のＹＵＶデータは、ピクセル化ユニット７３によって、画素単位のＹＵＶデータに変換される。また、この画素単位のＹＵＶデータは、色変換ユニット７４によってＲＧＢデータに変換され、並び替えユニット７５によって各ＲＧＢデータがＳＤＲＡＭ９０の所定のアドレスにバッファされる。  
ディスプレイコントロールユニット８４は、ＳＤＲＡＭ９０にバッファされているＲＧＢデータを液晶ディスプレイに表示する。これにより、ユーザは、メモリカードに記憶されている画像データの内容を確認できる。そして、ユーザは、パネル部４０を操作して表示される画像データを切り替えて、印刷を希望する画像が表示されているときにカラーボタン４７Ｃを押す。  
カラーボタン４７Ｃが押されると、表示中の画像の画像データがカードＡＳＩＣ６４によってＳＤＲＡＭ９０にバッファされ、ＪＰＥＧ形式の画像データであればＪＰＥＧデコードユニット７２、ピクセル化ユニット７３及び色変換ユニット７４によってＲＧＢデータに変換され、並び替えユニット７５によって各ＲＧＢデータがＳＤＲＡＭ９０の所定アドレスにバッファされる。  
印刷データ生成ユニット８１は、ＳＤＲＡＭ９０にバッファされているＲＧＢデータを印刷データに変換し、プリンタコントロールユニット８３は印刷データに基づいてプリンタ部２０を制御し、画像が印刷される。
【００４１】
このような処理を複合装置１が行うことによって、複合装置１はメモリカードからダイレクトに印刷を行うダイレクトプリント機能を実現する。
【００４２】
なお、ダイレクトプリント機能として、複合装置１は、ＵＳＢ接続されたデジタルカメラからＵＳＢインターフェイスユニット７１を介してＪＰＥＧ形式の画像データをＳＤＲＡＭ９０にバッファし、これを印刷することもできる。
【００４３】
＝＝＝ＪＰＥＧデコードユニット７２の機能＝＝＝
既に説明した通り、ＪＰＥＧデコードユニット７２は、ＪＰＥＧ形式の画像データをデコードするユニットである。ＪＰＥＧデコードユニット７２は、デコードした画像データを、ブロック単位（ＭＣＵ：最小符号化単位）でＹＵＶ色空間のデータ（ＹＵＶデータ）を出力する。
【００４４】
なお、ＹＵＶデータとは、Ｙデータ、Ｕデータ及びＶデータから構成されるデータである。Ｙデータは輝度を示すデータであり、ここでは各画素につき１バイトのデータ量が割り当てられている。Ｕデータ及びＶデータは、色差を示すデータであり、ここでは各画素につき１バイトのデータ量が割り当てられている。
【００４５】
ブロック単位のＹＵＶデータは、ブロック単位のＹデータ、ブロック単位のＵデータ及びブロック単位のＶデータから構成される。ＪＰＥＧの符号化／復号化は８×８画素を１つの単位として行われるので、１つのブロック単位につき８×８画素分の画素データが含まれている。このため、１つのブロック単位のデータは、６４バイト分のデータ量になる。
【００４６】
なお、画素単位のＹＵＶデータは、１バイトのＹデータと、１バイトのＵデータと、１バイトのＶデータとから構成される。ユニットの処理単位が４バイトである場合、又は、ユニットとＳＤＲＡＭコントローラ８６との間のデータ転送の単位が４バイト又は４バイトの整数倍である場合、画素単位のＹＵＶデータは、１バイトのダミーデータと、１バイトのＹデータと、１バイトのＵデータと、１バイトのＶデータとから構成される。
【００４７】
図７Ａ〜図７Ｅは、ＪＰＥＧデコードユニット７２の出力の説明図の説明図である。図７Ａは、元画像を示す画像データの説明図である。図７Ｂは、サンプリング比が４：４：４の場合におけるブロック単位のデータの対応関係の説明図である。図７Ｃは、サンプリング比が４：２：２の場合におけるブロック単位のデータの対応関係の説明図である。図７Ｄは、サンプリング比がＶ４：２：２の場合におけるブロック単位のデータの対応関係の説明図である。図７Ｅは、サンプリング比が４：２：０の場合におけるブロック単位のデータの対応関係の説明図である。ここでは、説明のため、画像が４８×３２画素から構成されるものとする。このため、ＪＰＥＧデコードユニット７２の出力する画像データは、６×４のブロック単位（ＭＣＵ）から構成される。
【００４８】
人間の目は輝度に関する解像度に敏感で、色度に関する解像度には鈍感である。この性質を利用して、ＪＰＥＧ圧縮の際に、色差に関する情報を部分的に圧縮することが行われる。この圧縮率は、サブサンプリング比で表される。
【００４９】
サブサンプリング比が４：４：４の場合、１つのブロック単位のＹデータに対して、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとがそれぞれ対応付けられている。なお、サブサンプリング比が４：４：４の場合、ブロック単位のＹデータに含まれる１画素分のＹデータに対して、ブロック単位のＵデータに含まれる１画素分のＵデータと、ブロック単位のＶデータに含まれる１画素分のＶデータとがそれぞれ対応付けられている。このサブサンプリング比のデータ形式のことを４４４形式と呼ぶ。
【００５０】
サブサンプリング比が４：２：２の場合、２つのブロック単位のＹデータに対して、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとがそれぞれ対応付けられている。なお、サブサンプリング比が４：２：２の場合、ブロック単位のＹデータに含まれる２画素分のＹデータに対して、ブロック単位のＵデータに含まれる１画素分のＵデータと、ブロック単位のＶデータに含まれる１画素分のＶデータとがそれぞれ対応付けられている。サブサンプリング比が４：２：２の場合、１つのブロック単位のＵデータやＶデータに対応付けられている２つのブロック単位のＹデータが、水平方向に並ぶ場合と、垂直に並ぶ場合とがある。前者の場合のサブサンプリング比を単に４：２：２と呼び、後者の場合のサブサンプリング比をＶ４：２：２と呼ぶ。また、前者のデータ形式を４２２形式と呼び、後者のデータ形式をＶ４２２と呼ぶ。
【００５１】
サブサンプリング比が４：２：０の場合、２×２のブロック単位（水平方向に２つ、垂直方向に２つの計４つのブロック単位）のＹデータに対して、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとがそれぞれ対応付けられている。なお、サブサンプリング比が４：２：０の場合、ブロック単位のＹデータに含まれる２×２画素分のＹデータに対して、ブロック単位のＵデータに含まれる１画素分のＵデータと、ブロック単位のＶデータに含まれる１画素分のＶデータとがそれぞれ対応付けられている。このサブサンプリング比のデータ形式のことを４２０形式と呼ぶ。
【００５２】
４４４形式の画像データの場合、デコードされた画像データは、２４のブロック単位のＹデータと、２４のブロック単位のＵデータと、２４のブロック単位のＶデータとから構成される。ＪＰＥＧデコードユニット７２は、図中で「１」の付されたブロック単位のＹＵＶデータを出力し、その後も番号順にブロック単位のＹＵＶデータを出力する。
【００５３】
４２２形式及びＶ４２２形式の画像データの場合、デコードされた画像データは、２４のブロック単位のＹデータと、１２のブロック単位のＵデータと、１２のブロック単位のＶデータとから構成される。ＪＰＥＧデコードユニット７２は、図中で「１」の付された２つのブロック単位のＹデータと、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとからなるブロック単位のＹＵＶデータを出力し、その後も番号順に２つのブロック単位のＹデータと、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとからなるブロック単位のＹＵＶデータを出力する。なお、４２２形式の画像データの場合には、水平方向に並ぶ２つのブロック単位のＹデータが出力される。一方、Ｖ４２２形式の画像データの場合には垂直方向に並ぶ２つのブロック単位のＹデータが出力される。
【００５４】
４２０形式の画像データの場合、デコードされた画像データは、２４のブロック単位のＹデータと、６のブロック単位のＵデータと、６のブロック単位のＶデータとから構成される。ＪＰＥＧデコードユニット７２は、図中で「１」の付された４つのブロック単位のＹデータと、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとからなるブロック単位のＹＵＶデータを出力し、その後も番号順に４つのブロック単位のＹデータと、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとからなるブロック単位のＹＵＶデータを出力する。
【００５５】
＝＝＝ピクセル化ユニット７３の機能＝＝＝
図８は、ピクセル化ユニット７３の機能の説明図である。
【００５６】
ピクセル化ユニット７３には、それぞれ対応付けられているブロック単位のＹＵＶデータが入力される。このため、入力されるブロック単位のＹデータのデータ量は、４４４形式の場合には６４バイトであるが、４２２形式及びＶ４２２の場合には１２８バイトであり、４２０形式の場合には２５６バイトである。なお、入力されるブロック単位のＵデータ及びＶデータは、サブサンプリング比に関わらず、６４バイトである。
【００５７】
ピクセル化ユニット７３にブロック単位のＹＵＶデータが入力されると、ブロック単位のＹＵＶデータはＳＲＡＭの所定のアドレスに格納される。そして、ピクセル化ユニットは、ブロック単位のＹデータに含まれる１バイトのＹデータと、ブロック単位のＵデータに含まれる１バイトのＵデータと、ブロック単位のＶデータに含まれる１バイトのＶデータを、１つの画素データとして出力する（この画素データに含まれるＹＵＶデータのＹデータ、Ｕデータ及びＶデータは、それぞれ対応付けられた関係にあるデータである）。
【００５８】
ピクセル化ユニット７３にはＳＲＡＭが２つ用意されている。一方のＳＲＡＭにブロック単位のＹＵＶデータを格納して画素単位のＹＵＶデータを出力している間に、他方のＳＲＡＭに次のブロック単位のＹＵＶデータを格納する。そして、一方のＳＲＡＭから画素単位のＹＵＶデータを出力した後、すぐに他方のＳＲＡＭから画素単位のＹＵＶデータを出力し、その間に更に次のブロック単位のＹＵＶデータを一方のＳＲＡＭに格納する。  
以下では一方のＳＲＡＭについてのみ説明を行なうが、他方のＳＲＡＭについても同様である。
【００５９】
図９Ａ〜図９Ｄは、ピクセル化ユニット７３の出力順の説明図である。  
図中において、ブロック単位のデータを構成する８×８画素分の画素データに対して、番号が付してある。例えば、ブロック単位のＹデータの中のｉ番の番号が付された画素のＹデータのことを、「Ｙデータ［ｉ］」と表すことにする。また、Ｕデータ及びＶデータでも同様に表すことにする。また、Ｙデータ［ｉ］と、Ｕデータ［ｊ］と、Ｖデータ［ｋ］とから構成されるＹＵＶデータのことを、「ＹＵＶデータ［ｉ，ｊ，ｋ］」と表すことにする。
【００６０】
＜４４４形式の場合の出力順について＞
図９Ａは、４４４形式の場合のピクセル化ユニット７３の出力順の説明図である。  
４４４形式の場合、１つのブロック単位のＹデータに対して、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとがそれぞれ対応付けられている。このため、ピクセル化ユニット７３は、４４４形式の場合、互いに対応付けられている、１つのブロック単位のＹデータ、１つのブロック単位のＵデータ、及び１つのブロック単位のＶデータを、ＳＲＡＭに格納する。  
また、４４４形式の場合、１画素分のＹデータに対して、１画素分のＵデータと、１画素分のＶデータとがそれぞれ対応付けられている。例えば、図中の１番の画素のＹデータ［１］に対して、１番の画素のＵデータ［１］と、１番の画素のＶデータ［１］が対応付けられている。図中において、対応付けられているＵデータの画素とＶデータの画素は、同じ番号が付されている。  
そして、ピクセル化ユニット７３は、１番から６４番まで順に、画素単位のＹＵＶデータを出力する。すなわち、ピクセル化ユニット７３は、ＹＵＶ［１，１，１］→ＹＵＶ［２，２，２］→ＹＵＶ［３，３，３］→ＹＵＶ［４，４，４］→・・・→ＹＵＶ［６３，６３，６３］→ＹＵＶ［６４，６４，６４］の順に、ＹＵＶデータを出力する。
【００６１】
ところで、４４４形式の場合、図７Ｂの番号順に、ブロック単位のＹＵＶデータがピクセル化ユニット７３に入力され、ピクセル化ユニット７３は、入力されたブロック単位のＹＵＶデータに含まれる６４画素分の画素単位のＹＵＶデータを順に出力する。このため、４４４形式の場合、ピクセル化ユニット７３は、図７Ａに示すアルファベット順に、各ブロックの６４画素分のＹＵＶデータの出力を行うことになる。
【００６２】
＜４２２形式の場合の出力順について＞
図９Ｂは、４２２形式の場合のピクセル化ユニット７３の出力順の説明図である。  
４２２形式の場合、２つのブロック単位のＹデータに対して、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとがそれぞれ対応付けられている。このため、ピクセル化ユニット７３は、４２２形式の場合、互いに対応付けられている、１つのブロック単位のＹデータ、１つのブロック単位のＵデータ、及び１つのブロック単位のＶデータを、ＳＲＡＭに格納する。ここでは、２つのブロック単位のＹデータの一方をＹ１データと呼び、他方をＹ２データと呼ぶ。Ｙ１データの８×８画素は、Ｙ２データの８×８画素に対して、画像データ上で水平方向に隣接しており、ここでは水平方向左側に位置する。Ｙ１データとＹ２データの画像データ上の位置関係が水平方向に隣接しているため、Ｙ１データにはブロック単位のＵデータ（又はＶデータ）のうちの水平方向左側の４×８画素（水平方向４画素×垂直方向８画素）が対応付けられており、Ｙ２データにはブロック単位のＵデータ（又はＶデータ）のうちの水平方向右側の４×８画素が対応付けられている。
【００６３】
また、４２２形式の場合、２画素分のＹデータに対して、１画素分のＵデータと、１画素分のＶデータとがそれぞれ対応付けられている。同じＵデータ（又はＶデータ）に対応付けられるＹデータの２画素は、画像データ上で水平方向に隣接している。例えば、１番の画素のＹデータ［１］及び２番の画素のＹデータ［２］に対して、１番の画素のＵデータ［１］と、１番の画素のＶデータ［１］が対応付けられている。図中において、対応付けられているＵデータの画素とＶデータの画素は、同じ番号が付されている。また、Ｕデータ（又はＶデータ）のｎ番の画素は、Ｙデータのｎ番及びｎ＋１番の画素と対応付けられている。
【００６４】
そして、ピクセル化ユニット７３は、１番から１２８番まで順に、画素単位のＹＵＶデータを出力する。すなわち、ピクセル化ユニット７３は、ＹＵＶ［１，１，１］→ＹＵＶ［２，１，１］→ＹＵＶ［３，３，３］→ＹＵＶ［４，３，３］→・・・→ＹＵＶ［８，７，７］→ＹＵＶ［９，９，９］→ＹＵＶ［１０，９，９］→・・・ＹＵＶ［６４，６３，６３］→ＹＵＶ［６５，６５，６５］→ＹＵＶ［６６，６５，６５］→・・・→ＹＵＶ［１２８，１２７，１２７］の順に、ＹＵＶデータを出力する。つまり、４２２形式の場合、２つのブロック単位のうちの水平方向左側に位置するブロック単位の６４画素分のＹＵＶデータを順に出力した後、水平方向右側に位置するブロック単位の６４画素分のＹＵＶデータを順に出力する。
【００６５】
ところで、４２２形式の場合、図７Ｃの番号順に、ブロック単位のＹＵＶデータがピクセル化ユニット７３に入力され、ピクセル化ユニット７３は、入力されたブロック単位のＹＵＶデータに含まれる１２８画素分の画素単位のＹＵＶデータを順に出力する。このため、４２２形式の場合、ピクセル化ユニット７３は、図７Ａに示すアルファベット順に、各ブロックの６４画素分のＹＵＶデータの出力を行うことになる。
【００６６】
＜Ｖ４２２形式の場合の出力順について＞
図９Ｃは、Ｖ４２２形式の場合のピクセル化ユニット７３の出力順の説明図である。  
Ｖ４２２形式の場合、２つのブロック単位のＹデータに対して、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとがそれぞれ対応付けられている。このため、ピクセル化ユニット７３は、４２２形式の場合、互いに対応付けられている、１つのブロック単位のＹデータ、１つのブロック単位のＵデータ、及び１つのブロック単位のＶデータを、ＳＲＡＭに格納する。ここでも、２つのブロック単位のＹデータの一方をＹ１データと呼び、他方をＹ２データと呼ぶ。Ｙ１データの８×８画素は、Ｙ２データの８×８画素に対して、画像データ上で垂直方向に隣接しており、ここでは垂直方向上側に位置する。Ｙ１データとＹ２データの画像データ上の位置関係が垂直方向に隣接しているため、Ｙ１データにはブロック単位のＵデータ（又はＶデータ）のうちの垂直方向上側の８×４画素（水平方向８画素×垂直方向４画素）が対応付けられており、Ｙ２データにはブロック単位のＵデータ（又はＶデータ）のうちの垂直方向下側の８×４画素が対応付けられている。
【００６７】
また、Ｖ４２２形式の場合、２画素分のＹデータに対して、１画素分のＵデータと、１画素分のＶデータとがそれぞれ対応付けられている。同じＵデータ（又はＶデータ）に対応付けられるＹデータの２画素は、画像データ上で垂直方向に隣接している。例えば、１番の画素のＹデータ［１］及び９番の画素のＹデータ［９］に対して、１番の画素のＵデータ［１］と、１番の画素のＶデータ［１］が対応付けられている。図中において、対応付けられているＵデータの画素とＶデータの画素は、同じ番号が付されている。また、Ｕデータ（又はＶデータ）のｎ番の画素は、Ｙデータのｎ番及びｎ＋８番の画素と対応付けられている。
【００６８】
そして、ピクセル化ユニット７３は、１番から１２８番まで順に、画素単位のＹＵＶデータを出力する。すなわち、ピクセル化ユニット７３は、ＹＵＶ［１，１，１］→ＹＵＶ［２，２，２］→・・・→ＹＵＶ［８，８，８］→ＹＵＶ［９，１，１］→ＹＵＶ［１０，２，２］・・・→ＹＵＶ［６４，５６，５６］→ＹＵＶ［６５，６５，６５］→ＹＵＶ［６６，６６，６６］→・・・→ＹＵＶ［１２８，１２０，１２０］の順に、ＹＵＶデータを出力する。つまり、Ｖ４２２形式の場合、２つのブロック単位のうちの垂直方向上側に位置するブロック単位の６４画素分のＹＵＶデータを順に出力した後、垂直方向下側に位置するブロック単位の６４画素分のＹＵＶデータを順に出力する。
【００６９】
ところで、Ｖ４２２形式の場合、図７Ｄの番号順に、ブロック単位のＹＵＶデータがピクセル化ユニット７３に入力され、ピクセル化ユニット７３は、入力されたブロック単位のＹＵＶデータに含まれる１２８画素分の画素単位のＹＵＶデータを順に出力する。このため、Ｖ４２２形式の場合、ピクセル化ユニット７３は、図７Ａに示す「Ａ」のブロックの６４画素分のＹＵＶデータの出力を行い、次に「Ｇ」のブロックの６４画素分のＹＵＶデータの出力を行い、続いて、Ｂ→Ｈ→Ｃ→Ｉ→Ｄ→Ｊ→Ｅ→Ｋ→Ｆ→Ｌ→Ｍ→Ｓ→Ｎ→Ｔ→Ｏ→Ｕ→Ｐ→Ｖ→Ｑ→Ｗ→Ｒ→Ｘの順に、各ブロックの６４画素分のＹＵＶデータの出力を行うことになる。
【００７０】
＜４２０形式の場合の出力順について＞
図９Ｄは、４２０形式の場合のピクセル化ユニット７３の出力順の説明図である。  
４２０形式の場合、２×２のブロック単位のＹデータに対して、１つのブロック単位のＵデータと、１つのブロック単位のＶデータとがそれぞれ対応付けられている。ここでは、２×２の左上のブロック単位のＹデータをＹ１データと呼び、右上のブロック単位のＹデータをＹ２データと呼び、左下のブロック単位のＹデータをＹ３データと呼び、右下のブロック単位のＹデータをＹ４データと呼ぶ。Ｙ１データにはブロック単位のＵデータ（又はＶデータ）のうちの左上側の４×４画素が対応付けられており、Ｙ２データにはブロック単位のＵデータ（又はＶデータ）のうちの右上側の４×４画素が対応付けられており、Ｙ３データにはブロック単位のＵデータ（又はＶデータ）のうちの左下側の４×４画素が対応付けられており、Ｙ４データにはブロック単位のＵデータ（又はＶデータ）のうちの左上側の４×４画素が対応付けられている
また、４２０形式の場合、２×２画素分のＹデータに対して、１画素分のＵデータと、１画素分のＶデータとがそれぞれ対応付けられている。同じＵデータ（又はＶデータ）に対応付けられるＹデータの２×２画素は、画像データ上で互いに隣接している。例えば、１番、２番、９番及び１０番の２×２画素のＹデータに対して、１番の画素のＵデータと、１番の画素のＶデータが対応付けられている。図中において、対応付けられているＵデータの画素とＶデータの画素は、同じ番号が付されている。また、Ｕデータ（又はＶデータ）のｎ番の画素は、Ｙデータのｎ番、ｎ＋１番、ｎ＋８番及びｎ＋９番の画素と対応付けられている。
【００７１】
そして、ピクセル化ユニット７３は、１番から２５６番まで順に、画素単位のＹＵＶデータを出力する。４２０形式の場合、２×２のブロック単位のうちの左上側に位置するブロック単位の６４画素分のＹＵＶデータを順に出力し、次に右上側に位置するブロック単位の６４画素分のＹＵＶデータを順に出力し、次に左下側に位置するブロック単位の６４画素分のＹＵＶデータを順に出力し、次に右下側に位置するブロック単位の６４画素分のＹＵＶデータを順に出力する。
【００７２】
ところで、４２０形式の場合、図７Ｅの番号順に、ブロック単位のＹＵＶデータがピクセル化ユニット７３に入力され、ピクセル化ユニット７３は、入力されたブロック単位のＹＵＶデータに含まれる２５６画素分の画素単位のＹＵＶデータを順に出力する。このため、４２０形式の場合、ピクセル化ユニット７３は、図７Ａに示す「Ａ」のブロックの６４画素分のＹＵＶデータの出力を行い、次に「Ｂ」のブロックの６４画素分のＹＵＶデータの出力を行い、次に「Ｇ」のブロックの６４画素分のＹＵＶデータの出力を行い、次に「Ｈ」のブロックの６４画素分のＹＵＶデータの出力を行い、続いて、Ｃ→Ｄ→Ｉ→Ｊ→Ｅ→Ｆ→Ｋ→Ｌ→Ｍ→Ｎ→Ｓ→Ｔ→Ｏ→Ｐ→Ｕ→Ｖ→Ｑ→Ｒ→Ｗ→Ｘの順に、各ブロックの６４画素分のＹＵＶデータの出力を行うことになる。
【００７３】
＜間引き処理について＞
前述の説明では、ピクセル化ユニット７３は、ブロック単位のＹデータに含まれる全ての画素について、画素単位のＹＵＶデータを順に出力していた。しかし、必ずしも全ての画素について画素単位のＹＵＶデータを出力する必要はない。すなわち、ビクセル化ユニット７３は、入力されたブロック単位のデータに含まれる画素のうちの所定の画素のＹＵＶデータのみを出力し、他の画素のＹＵＶデータを間引くように出力しても良い。
【００７４】
図１０Ａ〜図１０Ｃは、４４４形式の間引き処理の説明図である。図１０Ａは１／２間引き処理の説明図であり、図１０Ｂは１／４間引き処理の説明図であり、図１０Ｃは１／８間引き処理の説明図である。  
１／２間引き処理の場合、ピクセル化ユニット７３は、８×８画素のブロック単位のデータの中から、水平方向４画素×垂直方向４画素のＹＵＶデータを出力する。図中には、出力される画素データの対応する画素を、太線で示している。なお、ＹＵＶデータを出力する際に、ピクセル化ユニット７３は、番号順に、画素単位のＹＵＶデータを出力する。すなわち、ピクセル化ユニット７３は、ＹＵＶ［１，１，１］→ＹＵＶ［３，３，３］→ＹＵＶ［５，５，５］→・・・→ＹＵＶ［５３，５３，５３］→ＹＵＶ［５５，５５，５５］の順に、ＹＵＶデータを出力する。  
１／４間引き処理の場合、ピクセル化ユニット７３は、８×８画素のブロック単位のデータの中から、水平方向２画素×垂直方向２画素のＹＵＶデータを、番号順に出力する。１／８間引き処理の場合、ピクセル化ユニット７３は、８×８画素のブロック単位のデータの中から、１画素のＹＵＶデータ［１，１，１］を出力する。
【００７５】
図１１Ａ〜図１１Ｃは、４２２形式の間引き処理の説明図である。図１１Ａは１／２間引き処理の説明図であり、図１１Ｂは１／４間引き処理の説明図であり、図１１Ｃは１／８間引き処理の説明図である。図中には、ピクセル化ユニット７３が出力する画素データに対応する画素データが太線で示されている。  
４２２形式における１／２間引き処理の場合、ピクセル化ユニット７３は、１６８×８画素の２ブロック分のデータの中から、水平方向８画素×垂直方向４画素のＹＵＶデータを出力する。図中には、出力される画素データの対応する画素を、太線で示している。なお、ＹＵＶデータを出力する際に、ピクセル化ユニット７３は、番号順に、画素単位のＹＵＶデータを出力する。すなわち、ピクセル化ユニット７３は、ＹＵＶ［１，１，１］→ＹＵＶ［３，３，３］→ＹＵＶ［５，５，５］→・・・→ＹＵＶ［５３，５３，５３］→ＹＵＶ［５５，５５，５５］→ＹＵＶ［６５，６５，６５］→ＹＵＶ［６７，６７，６７］→・・・→ＹＵＶ［１１７，１１７，１１７］→ＹＵＶ［１１９，１１９，１１９］→の順に、ＹＵＶデータを出力する。なお、１／４間引き処理及び１／８間引き処理については、ピクセル化ユニット７３が出力する画素データに対応する画素データが太線で示されているので、詳しい説明は省略する。
【００７６】
図１２Ａ〜図１２Ｃは、Ｖ４２２形式の間引き処理の説明図である。図１２Ａは１／２間引き処理の説明図であり、図１２Ｂは１／４間引き処理の説明図であり、図１２Ｃは１／８間引き処理の説明図である。図中には、ピクセル化ユニット７３が出力する画素データに対応する画素データが太線で示されているので、詳しい説明は省略する。
【００７７】
図１３Ａ〜図１３Ｃは、４２０形式の間引き処理の説明図である。図１３Ａは１／２間引き処理の説明図であり、図１３Ｂは１／４間引き処理の説明図であり、図１３Ｃは１／８間引き処理の説明図である。図中には、ピクセル化ユニット７３が出力する画素データに対応する画素データが太線で示されているので、詳しい説明は省略する。  
ここでは、出力される画素データの対応する画素を太線で示している。なお、いずれのデータ形式の場合でも、また、いずれの間引き処理の場合でも、ピクセル化ユニット７３は、番号順に、画素単位のＹＵＶデータを出力する。
【００７８】
＝＝＝色変換ユニット７４の機能＝＝＝
色変換ユニット７４は、ピクセル化ユニット７３から順次入力されるＹＵＶデータを、ＲＧＢデータに変換して出力する。  
色変換ユニット７４では、例えば以下のような演算を行うことによって、ＹＵＶデータをＲＧＢデータに変換する。  
Ｒ＝Ｙ＋１．４０２００×Ｖ
Ｇ＝Ｙ−０．３４４１４×Ｕ−０．７１４１４×Ｖ
Ｂ＝Ｙ＋１．７７２００×Ｕ
【００７９】
色変換ユニット７４から出力されるＲＧＢデータは、Ｒデータ、Ｇデータ、Ｂデータ及びダミーデータから構成される。Ｒデータは、レッドの階調を示すデータであり、８ビットデータである。Ｇデータは、グリーンの階調を示すデータであり、８ビットデータである。Ｂデータは、ブルーの階調を示すデータであり、８ビットデータである。ダミーデータは、ダミーの８ビットデータである。このため、ＲＧＢデータは、４バイトのデータ量になる。
【００８０】
ピクセル化ユニット７３は、最初に「Ａ」のブロックの１番の画素のＹＵＶデータを出力し、続いて、２番〜８番の画素のＹＵＶデータを順次出力するため、色変換ユニット７４は、「Ａ」のブロックの１番の画素のＲＧＢデータを出力し、続いて、２番〜８番の画素のＲＧＢデータを順次出力する。このように、色変換ユニット７４は、ピクセル化ユニット７３から入力してくるＹＵＶデータの順に、ＹＵＶデータをＲＧＢデータに変換し、そのＲＧＢデータを並び替えユニット７５へ順に出力する。
【００８１】
＝＝＝並び替えユニット７５の機能（間引きなし）＝＝＝
＜並び替えユニット７５の機能について＞
まず、間引き処理が行われない場合の並び替えユニット７５の機能について説明する。以下の説明では、さらに説明を簡略化するため、画像が１６（水平方向）×２４画素（垂直方向）から構成されるものとする（このため、画像データは、２（水平方向）×３（垂直方向）のブロック単位から構成される）。
【００８２】
並び替えユニット７５は、入力されてくる画素単位のＲＧＢデータ（画素データ）を、順にＳＤＲＡＭ９０の所定のアドレスに格納する。画像データを０°、９０°、１８０°又は２７０°にて回転させる場合、並び替えユニットは、回転量に応じたアドレスに各画素データを格納する。ＳＤＲＡＭ９０に格納された画素データをアドレス順に並べると、回転量を反映した画像になる。ＳＤＲＡＭ９０に格納された画像データが回転後の画像になるように、並び替えユニット７５は、入力されてくる画素データに対応するアドレスを生成し、そのアドレスに画素データを順次格納する。
【００８３】
図１４Ａ〜図１４Ｄは、回転後の画像データの説明図である。図中の左側の図は、連続するアドレスの画素データを所定画素ごとに改行して並べた状態の説明図である。図中の右側の図は、連続して入力されてくる１ブロック分の６４画素の画素データの並び順の説明図である。
【００８４】
また、図１５Ａ及び図１５Ｂは、回転後の画像の画素と、その画素に対応する画素データの格納されるアドレスの先頭アドレスとの関係の説明図である。図１５Ａは、回転量が０°又は１８０°の場合の説明図であり、図１５Ｂは、回転量が９０°又は２７０°の場合の説明図である。
【００８５】
回転量が０°又は１８０°のときのように回転後の画像が水平方向１６画素×垂直方向２４画素から構成される場合、水平方向に並ぶ１６画素の画素データ（ＲＧＢデータ）は、ＳＤＲＡＭ９０の連続するアドレスに格納される。例えば、回転後の画像の一番上の一行目の１６画素は、０番地〜３ｆ番地の領域に格納される。このアドレスの次に連続する１６画素分のアドレスには、この水平方向に並ぶ１６画素と垂直方向に隣接する１６画素（水平方向に並ぶ１６画素）の画素データが格納される。例えば、回転後の画像の２行目の１６画素は、１行目の１６画素の格納されるアドレスに連続して、４０番地〜７ｆ番地の領域に格納される。
【００８６】
回転量が９０°又は２７０°のときのように回転後の画像が水平方向２４画素×垂直方向１６画素から構成される場合、水平方向に並ぶ２４画素の画素データは、ＳＤＲＡＭ９０の連続するアドレスに格納される。例えば、回転後の画像の一番上の一行目の２４画素は、０番地〜５ｆ番地の領域に格納される。このアドレスの次に連続する２４画素分のアドレスには、この水平方向に並ぶ２４画素と垂直方向に隣接する２４画素（水平方向に並ぶ２４画素）の画素データが格納される。例えば、回転後の画像の２行目の２４画素は、１行目の２４画素の格納されるアドレスに連続して、６０番地〜ｂｆ番地の領域に格納される。
【００８７】
回転量０°の場合（図１４Ａ及び図１５Ａ参照）、ＳＤＲＡＭ９０の最初のアドレス（０番地）には「Ａ」のブロックの１番の画素の画素データが格納される。そして、このアドレスと連続する番地０〜番地１ｆには、「Ａ」のブロックの１番〜８番の画素の画素データが格納される。また、このアドレスと連続している２０番地〜３ｆ番地には、「Ｂ」のブロックの１番〜８番の画素の画素データが格納される。そして、３ｆ番地の次のアドレスである４０番地に、「Ａ」のブロックの９番の画素の画素データが格納され、４０番地〜５ｆ番地に、「Ａ」のブロックの９番〜１６番の画素の画素データが格納される。このような順に従って、「Ａ」及び「Ｂ」のブロックの各６４画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。そして、「Ｂ」のブロックの６４番の画素の画素データの次に、「Ｃ」のブロックの１番の画素の画素データが格納される。また、「Ｃ」のブロックの１番〜８番の画素の画素データが、連続するアドレスである２００番地〜２１ｆ番地に格納される。このような順に従って、「Ａ」〜「Ｆ」のブロックの各６４画素の画素データが、ＳＤＲＡＭ９０の所定のアドレスに格納される。
【００８８】
ここで、同じブロックの画素の画素データの格納先について注目する。１番〜８番の画素の画素データは連続するアドレスに格納される。例えば、「Ａ」のブロックの１番〜８番の画素データは、０番地〜１ｆ番地に格納される。また、９番〜１６番の画素の画素データも、連続するアドレスに格納される。例えば、「Ａ」のブロックの９番〜１６番の画素データは、４０番地〜５ｆ番地に格納される。しかし、１番〜８番の画素の画素データを格納するアドレスと、９番〜１６番の画素の画素データを格納するアドレスとは、互いに連続するアドレスではない。例えば、「Ａ」のブロックの８番の画素の画素データと９番の画素の画素データは、互いに連続するアドレスには格納されていない。つまり、各ブロック内の６４画素の画素データは、必ずしも連続するアドレスに格納されるわけではない。
【００８９】
回転量９０°の場合（図１４Ｂ及び図１５Ｂ参照）、ＳＤＲＡＭ９０の最初のアドレス（０番地）には「Ｅ」のブロックの５７番の画素の画素データが格納される。そして、このアドレスと連続する番地０〜１ｆには、「Ｅ」のブロックの左側１列目の８画素（１番、９番、１７番、２５番、３３番、４１番、４９番及び５７番の画素）の画素データが格納される。また、このアドレスと連続している２０番地〜３ｆ番地には、「Ｃ」のブロックの左側１列目の８画素の画素データが格納される。さらに、このアドレスと連続している４０番地〜５ｆ番地には、「Ａ」のブロックの左側１列目の８画素の画素データが格納される。そして、「Ａ」のブロックの１番の画素の画素データを格納するアドレスの次のアドレス（６０番地）に、「Ｆ」のブロックの５８番の画素の画素データが格納され、６０番地〜７ｆ番地に、「Ｆ」のブロックの左側２列目の８画素（２番、１０番、１８番、２６番、３４番、４２番、５０番及び５８番の画素）の画素データが格納される。このような順に従って、「Ｅ」、「Ｃ」及び「Ａ」のブロックの各６４画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。そして、「Ａ」のブロックの８番の画素の画素データの次に、「Ｆ」のブロックの５７番の画素の画素データが格納される。また、「Ｆ」のブロックの左側１列目の８画素（１番、９番、１７番、２５番、３３番、４１番、４９番及び５７番の画素）の画素データが、連続するアドレスである３００番地〜３１ｆ番地に格納される。このような順に従って、「Ａ」〜「Ｆ」のブロックの各６４画素の画素データが、ＳＤＲＡＭの所定のアドレスに格納される。  
なお、同じブロックの画素の画素データの格納先について注目すると、各ブロック内の６４画素の画素データは、必ずしも連続するアドレスに格納されるわけではない。
【００９０】
回転量１８０°の場合（図１４Ｃ及び図１５Ａ参照）、ＳＤＲＡＭ９０の最初のアドレス（０番地）には「Ｆ」のブロックの６４番の画素の画素データが格納される。なお、他の画素データの格納先については、説明を省略する。  
回転量２７０°の場合（図１４Ｄ及び図１５Ｂ参照）ＳＤＲＡＭ９０の最初のアドレス（０番地）には「Ｂ」のブロックの８番の画素の画素データが格納される。なお、他の画素データの格納先については、説明を省略する。
【００９１】
このように、並び替えユニットは、回転量に応じた所定のアドレスに、入力される画素単位のＲＧＢデータ（画素データ）を格納する。  
言い換えると、並び替えユニット７５は、入力される画素単位のＲＧＢデータ（画素データ）を、上述した通りのアドレスに、格納するように構成されている。例えば、例えば「Ａ」のブロックの１番の画素のＲＧＢデータが入力されたとき、回転量が０°ならば０番地に格納し、回転量が９０°ならば５ｃ番地に格納し、回転量が１８０°ならば５ｆｃ番地に格納し、回転量が２７０°ならば５ａ０番地に格納するように、構成されている。  
そこで、このような機能を備えた並び替えユニット７５の構成について、以下に説明する。
【００９２】
＝＝＝並び替えユニット７５の構成＝＝＝
＜全体構成について＞
図１６は、並び替えユニット７５の構成のブロック図である。並び替えユニット７５は、セレクタ７５１と、データレジスタ７５２と、指示部７５３と、アドレス生成部７５４と、ＳＤＲＡＭインターフェイス７５５とを有する。
【００９３】
セレクタ７５１は、データレジスタ７５２へ出力する信号を選択するものである。セレクタ７５１は、指示部７５３からの指示に基づいて、色変換ユニット７４から入力されるＲＧＢデータ又はＳＤＲＡＭ９０から入力されるＲＧＢデータのいずれかを選択する。ここでは、セレクタ７５１は、色変換ユニット７４から入力されるＲＧＢデータを選択し、そのＲＧＢデータをデータレジスタ７５２へ出力する。このＲＧＢデータは４バイトデータである。なお、後述する通り、ＳＤＲＡＭ９０とのデータの読み出し・書き込みは８バイト単位で行われるため、ＳＤＲＡＭ９０から入力されるＲＧＢデータをセレクタ７５１が選択する場合、２画素分のＲＧＢデータがデータレジスタ７５２へ出力される。
【００９４】
データレジスタ７５２は、セレクタ７５１から入力されたＲＧＢデータを少量格納するためのものである。本実施形態では、データレジスタ７５２には８画素分のＲＧＢデータが格納できる。後述するように、ＳＤＲＡＭ９０とのデータの読み出し・書き込みは８バイト単位で行われるため、ＳＤＲＡＭ９０へ書き込むための２画素分の画素データがデータレジスタ７５２に用意された段階で、データレジスタ７５２は、書き込み要求とともに、２画素分のＲＧＢデータをＳＤＲＡＭインターフェイス７５５へ出力する。
【００９５】
指示部７５３は、制御信号に基づいて、セレクタ７５１やアドレス生成部７５４などを設定するものである。指示部７５３に入力される制御信号は、ＣＰＵ６１から出力される。この制御信号には、例えば、回転量に関する情報、間引き量に関する情報、画像データのサイズに関する情報などが含まれている。
【００９６】
アドレス生成部７５４は、ＲＧＢデータを格納すべきアドレス値を生成するものである。アドレス生成部７５４は、アドレス値をＳＤＲＡＭインターフェイス７５５へ出力する。アドレス生成部７５４へは、ＳＤＲＡＭインターフェイス７５５からＡＣＫ信号が入力する。このＡＣＫ信号が入力する毎に、アドレス生成部７５４が生成するアドレス値が変化する。なお、アドレス生成部７５４については、後で詳述する。
【００９７】
ＳＤＲＡＭインターフェイス７５５は、ＲＧＢデータの書き込みをＳＤＲＡＭコントローラ８６へ指示するためのものである。ＳＤＲＡＭインターフェイス７５５は、ＳＤＲＡＭコントローラ８６に対して、２画素分のＲＧＢデータと、そのＲＧＢデータを書き込むべきアドレスを示すアドレス値とを出力する。指定されたアドレスへＲＧＢデータの書き込みが終了すると、ＳＤＲＡＭコントローラ８６からＳＤＲＡＭインターフェイス７５５へＡＣＫ信号が出力される。このＡＣＫ信号があると、ＳＤＲＡＭインターフェイス７５５は、アドレス生成部７５４へＡＣＫ信号を出力する。
【００９８】
ところで、並び替えユニット７５は、色変換ユニット７４から入力されるＲＧＢデータを、上述した通りのアドレスに格納する。すなわち、アドレス生成部７５４は、色変換ユニット７４から入力されるＲＧＢデータを格納すべきアドレス値を、順次出力する。  
そこで、次に、このようなアドレス生成部７５４の構成について、以下に説明する。
【００９９】
＜アドレス生成部７５４の構成について＞
図１７は、アドレス生成部７５４の構成の説明図である。アドレス生成部７５４は、Ｘカウンタ１０１と、Ｙカウンタ１０２と、ＸＭＣＵカウンタ１０３と、ＹＭＣＵカウンタ１０４と、ＰＸ算出部１０５と、ＰＹ算出部１０６と、ＢＸ算出部１０７と、ＢＹ算出部１０８と、加算器１０９を有する。また、アドレス生成部７５４は、４つのアップダウンセレクタ１１０Ａ〜１１０Ｄと、Ｖカウンタ１１２と、Ｈカウンタ１１３とを有する。
【０１００】
Ｘカウンタ１０１は、カウント条件が満たされたときに、Ｘカウント値をインクリメント又はデクリメントするカウンタである。Ｘカウンタ１０１のカウント条件は、後で説明する通り、回転量や間引き量に応じて変更される。インクリメントするか又はデクリメントするかは、アップダウンカウンタ１１０Ａの設定に応じて決定される。Ｘカウンタ１０１は、開始値から終了値まで順にカウントを行い、Ｘカウント値が終了値のときにカウントが行われると、Ｘカウント値はリセットされて開始値になる。この開始値及び終了値は、回転量や間引き量に応じて変更される。Ｘカウンタ１０１には、前述のＡＣＫ信号と、Ｙカウンタ１０２からのＹカウント値が入力する。このＡＣＫ信号とＹカウント値は、カウント条件に用いられる。Ｘカウンタ１０１は、Ｙカウンタ１０２、ＸＭＣＵカウンタ１０３、ＹＭＣＵカウンタ１０４、ＰＸ算出部１０５、Ｖカウンタ１１２及びＨカウンタ１１３へ、Ｘカウント値を出力する。
【０１０１】
なお、Ｘカウント値は、ブロック内におけるアドレス生成対象画素の水平方向位置を示す値になる。
【０１０２】
Ｙカウンタ１０２は、カウント条件が満たされたときに、Ｙカウント値をインクリメント又はデクリメントするカウンタである。Ｙカウンタ１０２のカウント条件は、後で説明する通り、回転量や間引き量に応じて変更される。インクリメントするか又はデクリメントするかは、アップダウンカウンタ１１０Ｂの設定に応じて決定される。Ｙカウンタ１０２は、開始値から終了値まで順にカウントを行い、Ｙカウント値が終了値のときにカウントが行われると、Ｙカウント値はリセットされて開始値になる。この開始値及び終了値は、回転量や間引き量に応じて変更される。Ｙカウンタ１０２には、前述のＡＣＫ信号と、Ｘカウンタ１０１からのＸカウント値が入力する。このＡＣＫ信号とＸカウント値は、カウント条件に用いられる。Ｙカウンタ１０２は、Ｘカウンタ１０１、ＸＭＣＵカウンタ１０３、ＹＭＣＵカウンタ１０４、ＰＹ算出部１０６、Ｖカウンタ１１２及びＨカウンタ１１３へ、Ｙカウント値を出力する。
【０１０３】
なお、Ｙカウント値は、ブロック内におけるアドレス生成対象画素の垂直方向位置を示す値になる。
【０１０４】
ＸＭＣＵカウンタ１０３は、カウント条件が満たされたときに、ＸＭＣＵカウント値をインクリメント又はデクリメントするカウンタである。ＸＭＣＵカウンタ１０３のカウント条件は、後で説明する通り、回転量や間引き量に応じて変更される。インクリメントするか又はデクリメントするかは、アップダウンカウンタ１１０Ｃの設定に応じて決定される。ＸＭＣＵカウンタ１０３は、開始値から終了値まで順にカウントを行い、ＸＭＣＵカウント値が終了値のときにカウントが行われると、ＸＭＣＵカウント値はリセットされて開始値になる。この開始値及び終了値は、回転量や間引き量に応じて変更される。ＸＭＣＵカウンタ１０３には、Ｘカウンタ１０１からのＸカウント値、Ｙカウンタ１０２からのＹカウント値、ＹＭＣＵカウンタ１０４からのカウント値、Ｖカウンタ１１２からのＶカウント値、及びＨカウンタ１１３からのＨカウント値が入力する。これらのカウント値は、カウント条件に用いられる。ＸＭＣＵカウンタ１０３は、ＹＭＣＵカウンタ１０４及びＢＸ算出部１０７へ、ＸＭＣＵカウント値を出力する。
【０１０５】
なお、ＸＭＣＵカウント値は、アドレス生成対象画素のブロックの画像データ内における水平方向位置を示す値になる。
【０１０６】
ＹＭＣＵカウンタ１０４は、カウント条件が満たされたときに、ＹＭＣＵカウント値をインクリメント又はデクリメントするカウンタである。ＹＭＣＵカウンタ１０４のカウント条件は、後で説明する通り、回転量や間引き量に応じて変更される。インクリメントするか又はデクリメントするかは、アップダウンカウンタ１１０Ｄの設定に応じて決定される。ＹＭＣＵカウンタ１０４は、開始値から終了値まで順にカウントを行い、ＹＭＣＵカウント値が終了値のときにカウントが行われると、ＹＭＣＵカウント値はリセットされて開始値になる。この開始値及び終了値は、回転量や間引き量に応じて変更される。ＹＭＣＵカウンタ１０４には、Ｘカウンタ１０１からのＸカウント値、Ｙカウンタ１０２からのＹカウント値、ＸＭＣＵカウンタ１０３からのカウント値、Ｖカウンタ１１２からのＶカウント値、及びＨカウンタ１１３からのＨカウント値が入力する。これらのカウント値は、カウント条件に用いられる。ＹＭＣＵカウンタ１０４は、ＸＭＣＵカウンタ１０３及びＢＹ算出部１０８へ、ＹＭＣＵカウント値を出力する。
【０１０７】
なお、ＹＭＣＵカウント値は、アドレス生成対象画素のブロックの画像データ内における垂直方向位置を示す値になる。
【０１０８】
ＰＸ算出部１０５は、Ｘカウンタ１０１からのＸカウント値に基づいて、値ＰＸを算出するものである。ＰＸ算出部１０５は、間引き量に基づいて、Ｘカウント値に対する値ＰＸを変更する。ＰＸ算出部１０５は、値ＰＸを加算器１０９へ出力する。
【０１０９】
ＰＹ算出部１０６は、Ｙカウンタ１０２からのＹカウント値に基づいて、値ＰＹを算出するものである。ＰＹ算出部１０６は、間引き量に基づいて、Ｙカウント値に対する値ＰＹを変更する。ＰＹ算出部１０６は、値ＰＹを加算器１０９へ出力する。
【０１１０】
ＢＸ算出部１０７は、ＸＭＣＵカウンタ１０３からのＸＭＣＵカウント値に基づいて、値ＢＸを算出するものである。ＢＸ算出部１０７は、間引き量に基づいて、ＸＭＣＵカウント値に対する値ＢＸを変更する。ＢＸ算出部１０７は、値ＢＸを加算器１０９へ出力する。
【０１１１】
ＢＹ算出部１０８は、ＹＭＣＵカウンタ１０４からのＹＭＣＵカウント値に基づいて、値ＢＹを算出するものである。ＢＹ算出部１０８は、間引き量に基づいて、ＹＭＣＵカウント値に対する値ＢＹを変更する。ＢＹ算出部１０８は、値ＢＹを加算器１０９へ出力する。
【０１１２】
加算器１０９は、入力値を加算してアドレス値を生成するものである。具体的には、加算器１０９は、値ＰＸ、値ＰＹ、値ＢＸ及び値ＢＹを加算して、アドレス値を生成する。加算器１０９は、アドレス生成部７５４の出力として、アドレス値をＳＤＲＡＭインターフェイス７５５へ出力する。
【０１１３】
Ｖカウンタ１１２は、カウント条件が満たされたときに、Ｖカウント値をインクリメント又はデクリメントするカウンタである。Ｖカウンタ１１２のカウント条件は、後で説明する通り、回転量や間引き量に応じて変更される。また、後で説明する通り、データ形式に応じて、Ｖカウンタ１１２が未使用になることもある。インクリメントするか又はデクリメントするかは、不図示のアップダウンカウンタの設定に応じて決定される。Ｖカウンタ１１２は、開始値から終了値まで順にカウントを行い、Ｖカウント値が終了値のときにカウントが行われると、Ｖカウント値はリセットされて開始値になる。この開始値及び終了値は、回転量や間引き量などに応じて変更される。Ｖカウンタ１１２には、Ｘカウンタ１０１からのＸカウント値と、Ｙカウンタ１０２からのＹカウント値が入力する。このＸカウント値とＹカウント値は、カウント条件に用いられる。Ｖカウンタ１１２は、ＸＭＣＵカウンタ１０３、ＹＭＣＵカウンタ１０４、ＢＸ算出部１０７へ、Ｖカウント値を出力する。  
Ｈカウンタ１１３は、Ｈカウント値をインクリメント又はデクリメントするカウンタである。Ｈカウンタ１１３の説明は、Ｖカウンタ１１２の説明と同様であるので、説明を省略する。
【０１１４】
＝＝＝並び替えユニット７５の動作１（間引きなし）＝＝＝
まず、間引き処理がピクセル化ユニット７３で行われない場合の並び替えユニット７５の動作について説明する。以下の説明では、前述の説明と同様に、画像が１６（水平方向）×２４画素（垂直方向）から構成されるものとする（このため、画像データは、２（水平方向）×３（垂直方向）のブロック単位から構成される）。
【０１１５】
＜（１）４４４形式又は４２２形式の場合＞
図１８Ａ〜図１８Ｄは、データ形式が４４４形式又は４２２形式の場合におけるカウント条件の説明図である。図１８Ａは、回転量０°の場合のカウント条件を示している。図１８Ｂは、回転量９０°の場合のカウント条件を示している。図１８Ｃは、回転量１８０°の場合のカウント条件を示している。図１８Ｄは、回転量２７０°の場合のカウント条件を示している。  
並び替えユニット７５の指示部７５３は、図に示すような条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。
【０１１６】
＜＜（１−１）０°回転＞＞
図１９Ａは、データ形式が４４４形式又は４２２形式の場合であって、回転量が０°の場合におけるアドレス生成部の動作の説明図である。図２０Ａは、回転量が０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。図２１は、回転量が０°（及び１８０°）の場合におけるアドレス生成部の各カウンタのカウント値とアドレス生成対象画素との関係の説明図である。以下、図１４Ａ及び図１８Ａも参照しながら、４４４形式・回転量０°の場合（間引きなしの場合）の動作を説明する。
【０１１７】
まず、並び替えユニット７５の指示部７５３（図１６参照）は、図１８Ａに示す条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。このときの各カウンタは、開始値を出力する。具体的には、Ｘカウンタ１０１はＸカウント値「０」を出力し、Ｙカウンタ１０２はＹカウント値「０」を出力し、ＸＭＣＵカウンタ１０３はＸＭＣＵカウント値「０」を出力し、ＹＭＣＵカウンタ１０４はＹＭＣＵカウント値「０」を出力する。
【０１１８】
なお、図１８Ａに示すカウント条件のうち、ＸＭＣＵカウンタの終了値は、回転後の画像の水平方向の画素数に基づいて決定され、具体的には、水平方向の画素数を８で割った値に１を引いた値になる。このＸＭＣＵカウンタの終了値は、回転前の画像の水平方向のブロック数（回転後の画像の水平方向のブロックの数）から１を引いた値になる。同様に、ＹＭＣＵカウンタの終了値は、回転後の画像の垂直方向の画素数に基づいて決定され、具体的には、垂直方向の画素数を８で割った値に１を引いた値になる。このＹＭＣＵカウンタの終了値は、回転前の画像の垂直方向のブロック数（回転後の画像の垂直方向のブロックの数）から１を引いた値になる。仮に４８×３２画素の画像の場合（図７Ｂ参照）ならば、ＸＭＣＵカウンタの終了値が「５」になり、ＹＭＣＵカウンタの終了値が「３」になる。
【０１１９】
また、指示部７５３は、ＰＸ算出部１０５、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８の設定を行う（図１９Ａの各算出部の枠内参照）。  
ＰＸ算出部１０５は、入力された「Ｘカウント値」と、１度に書き込まれる２画素分の画素データを格納するためのアドレス数「０ｘ８」とを乗算し、その乗算結果を値ＰＸとして出力するように設定される。この設定により、ＰＸ算出部１０５は、Ｘカウント値「０」が入力すると値ＰＸ「０ｘ０」を出力し、Ｘカウント値「１」が入力すると値ＰＸ「０ｘ８」を出力し、Ｘカウント値「２」が入力すると値ＰＸ「０ｘ１０」を出力し、Ｘカウント値「３」が入力すると値ＰＸ「０ｘ１８」を出力するようになる。
【０１２０】
ＰＹ算出部１０６は、入力された「Ｙカウント値」と、水平方向に並ぶブロック数と、ブロックの水平方向１行分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＰＹとして出力するように設定される。この設定により、ＰＹ算出部１０６は、入力された「Ｙカウント値」と、水平方向に並ぶブロック数「２」と、８画素分の画素データを格納するためのアドレス数「０ｘ２０」とを乗算し、その乗算結果を値ＰＹとして出力するようになる。
【０１２１】
ＢＸ算出部１０７は、ＢＸ算出部１０７は、入力された「ＸＭＣＵカウント値」と、ブロックの水平方向１行分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＢＸとして出力するように設定される。この設定により、ＢＸ算出部１０７は、入力された「ＸＭＣＵカウント値」と、８画素分の画素データを格納するためのアドレス数「０ｘ２０」とを乗算し、その乗算結果を値ＢＸとして出力するようになる。
【０１２２】
ＢＹ算出部１０８は、入力された「ＹＭＣＵカウント値」と、水平方向に並ぶブロック数と、１ブロック分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＢＹとして出力するように設定される。この設定により、ＢＹ算出部１０８は、入力された「ＹＭＣＵカウント値」と、水平方向に並ぶブロック数「２」と、１ブロック分の画素データを格納するためのアドレス数「０ｘ１００」とを乗算し、その乗算結果を値ＢＹとして出力するようになる。  
なお、各算出部での乗算処理はビットシフトを利用しているので、乗算処理には時間がかからないようになっている。
【０１２３】
上記の通り、各カウンタ等及び各算出部の設定が終わると、加算器１０９からはアドレス値として「０」が出力される（図２０Ａの上図左のアドレス値「０」を参照）。つまり、アドレス生成部７５４からＳＤＲＡＭインターフェイス７５５へアドレス値「０」が出力される（図１６参照）。
【０１２４】
次に、色変換ユニット７４から最初のＲＧＢデータが入力してくる。４４４形式の場合（間引きなしの場合）、最初のＲＧＢデータは、「Ａ」のブロックの１番の画素の画素データである（図１４Ａ参照）。このＲＧＢデータは、セレクタ７５１を介して、データレジスタ７５２に一旦格納される。このとき、データレジスタ７５２には２画素分の画素データが揃っていないので、データレジスタ７５２は書き込み要求を出さない。
【０１２５】
更に、色変換ユニット７４から次のＲＧＢデータが入力してくる。このＲＧＢデータは、「Ａ」のブロックの２番の画素の画素データである（図１４Ａ参照）。このとき、データレジスタ７５２は、書き込み要求とともに、２画素分のＲＧＢデータをＳＤＲＡＭインターフェイス７５５へ出力する。
【０１２６】
最初の書き込み要求があったとき、ＳＤＲＡＭインターフェイス７５５には、「Ａ」のブロックの１番及び２番の画素の画素データと、アドレス値「０」が入力している。ＳＤＲＡＭインターフェイス７５５は、ＳＤＲＡＭコントローラ８６に対して、２画素分のＲＧＢデータと、そのＲＧＢデータを書き込むべきアドレスを示すアドレス値とを出力する。これにより、「Ａ」のブロックの１番の画素の画素データは０番地〜３番地に格納され、２番の画素の画素データは４番地〜７番地に格納される。
【０１２７】
１番及び２番の画素の画素データの書き込みが終了すると、ＳＤＲＡＭコントローラ８６からＳＤＲＡＭインターフェイス７５５へＡＣＫ信号が出力される。このＡＣＫ信号があると、ＳＤＲＡＭインターフェイス７５５は、アドレス生成部７５４へＡＣＫ信号を出力する。
【０１２８】
アドレス生成部７５４では、このＡＣＫ信号により、Ｘカウンタ１０１がインクリメントされ、Ｘカウンタ１０１がＸカウント値「１」を出力する。このとき、他のカウンタのカウンタ値は変化しない。この結果、加算器１０９から、アドレス値として「８」が出力される（図２０Ａの上図左のアドレス値「８」を参照）。
【０１２９】
このようにして、３番及び４番の画素の画素データが８番地〜ｆ番地に格納され、５番及び６番の画素の画素データが１０番地〜１７番地に５格納され、７番及び８番の画素の画素データが１８番地〜１ｆ番地に格納される。
【０１３０】
７番及び８番の画素の画素データの書き込みが終了すると、ＳＤＲＡＭコントローラ８６からＳＤＲＡＭインターフェイス７５５へＡＣＫ信号が出力され、ＡＣＫ信号がアドレス生成部７５４に入力する。このときまでのＸカウンタ１０１のＸカウント値は、終了値である「３」になっている。このため、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値はリセットされて開始値「０」になる。Ｘカウント値がリセットされると、Ｙカウンタ１０２のＹカウント値がインクリメントされる（図１８Ａ及び図１９Ａ参照）。これにより、Ｙカウンタ１０２がＹカウント値「１」を出力する。このとき、ＸＭＣＵカウンタ１０３及びＹＭＣＵカウンタ１０４のカウント値は変化しない。この結果、加算器１０９から、アドレス値として「４０」が出力される（図２０Ａの上図中央のアドレス値「４０」を参照）。
【０１３１】
そして、色変換ユニット７４から「Ａ」のブロックの９番の画素の画素データが入力してくる（図１４Ａ参照）。また、その次に、１０番の画素の画素データが色変換ユニット７４から並び替えユニット７５に入力してくる。データレジスタ７５２は、書き込み要求とともに、２画素分のＲＧＢデータをＳＤＲＡＭインターフェイス７５５へ出力する。この書き込み要求があったとき、ＳＤＲＡＭインターフェイス７５５には、「Ａ」のブロックの９番及び１０番の画素の画素データと、アドレス値「４０」が入力している。ＳＤＲＡＭインターフェイス７５５は、ＳＤＲＡＭコントローラ８６に対して、「Ａ」のブロックの９番の画素の画素データを４０番地〜４３番地に格納させ、１０番の画素の画素データを４４番地〜４７番地に格納させる。
【０１３２】
このようにして、「Ａ」のブロックの９番〜１６番、１７番〜２４番、２５番〜３２番、３３番〜４０番、４１番〜４８番、４９番〜５６番及び５７番〜６４番の画素データが、ＳＤＲＡＭ９０の所定のアドレスに格納される。
【０１３３】
６３番及び６４番の画素の画素データの書き込みの際、Ｘカウンタ１０１のＸカウント値は終了値「３」であり、Ｙカウンタ１０２のＹカウント値は終了値「７」であり、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値は「０」であり、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は「０」である。このため、６３番及び６４番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値はリセットされて開始値「０」になる。Ｘカウント値がリセットされると、Ｙカウンタ１０２のＹカウント値がリセットされて（図１８Ａ及び図１９Ａ参照）、Ｙカウント値は開始値「０」になる。Ｙカウント値がリセットされると、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値がインクリメントされる（図１８Ａ及び図１９Ａ参照）。これにより、ＸＭＣＵカウンタ１０３がＸＭＣＵカウント値「１」を出力する。このとき、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は変化しない。この結果、加算器１０９から、アドレス値として「２０」が出力される（図２０Ａの中央図のアドレス値「２０」を参照）。
【０１３４】
そして、「Ｂ」のブロックの１番の画素の画素データが色変換ユニット７４から並び替えユニット７５に入力してくる（図１４Ａ参照）。また、その次に、２番の画素の画素データが色変換ユニット７４から並び替えユニット７５に入力してくる。データレジスタ７５２は、書き込み要求とともに、２画素分のＲＧＢデータをＳＤＲＡＭインターフェイス７５５へ出力する。この書き込み要求があったとき、ＳＤＲＡＭインターフェイス７５５には、「Ｂ」のブロックの１番及び２番の画素の画素データと、アドレス値「２０」が入力している。ＳＤＲＡＭインターフェイス７５５は、ＳＤＲＡＭコントローラ８６に対して、「Ｂ」のブロックの１番の画素の画素データを２０番地〜２３番地に格納させ、２番の画素の画素データは２４番地〜２７番地に格納させる。
【０１３５】
そして、「Ｂ」のブロックの１番〜６４番の画素データが、「Ａ」のブロックの１番〜６４番の画素データとほぼ同様の手順により、ＳＤＲＡＭ９０の所定のアドレスに格納される。
【０１３６】
「Ｂ」のブロックの６３番及び６４番の画素の画素データの書き込みの際、Ｘカウンタ１０１のＸカウント値は終了値「３」であり、Ｙカウンタ１０２のＹカウント値は終了値「７」であり、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値は終了値「１」であり、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は「０」である。このため、６３番及び６４番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値、Ｙカウント値及びＸＭＣＵカウント値がリセットされて（図１８Ａ及び図１９Ａ参照）開始値「０」になる。ＸＭＣＵカウント値がリセットされると、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値がインクリメントされる（図１８Ａ及び図１９Ａ参照）。これにより、ＹＭＣＵカウンタ１０４がＹＭＣＵカウント値「１」を出力する。この結果、加算器１０９から、アドレス値として「２００」が出力される（図２０Ａの下図のアドレス値「２００」を参照）。
【０１３７】
このようにして、残りの「Ｃ」〜「Ｆ」のブロックの各６４画素分の画素データが、ＳＤＲＡＭ９０の所定のアドレスに格納される。この結果、図１４Ａに示す順に、１６×２４画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０１３８】
＜＜（１−２）９０°回転＞＞
図１９Ｂは、データ形式が４４４形式又は４２２形式の場合であって、回転量が９０°の場合におけるアドレス生成部の動作の説明図である。図２０Ｂは、回転量が９０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。図２２は、回転量が９０°（及び２７０°）の場合におけるアドレス生成部の各カウンタのカウント値とアドレス生成対象画素との関係の説明図である。以下、図１４Ｂ及び図１８Ｂも参照しながら、４４４形式・回転量９０°の場合（間引きなしの場合）の動作を説明する。
【０１３９】
まず、並び替えユニット７５の指示部７５３（図１６参照）は、図１８Ｂに示す条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。このときの各カウンタは、開始値を出力する。具体的には、Ｘカウンタ１０１はＸカウント値「３」を出力し、Ｙカウンタ１０２はＹカウント値「０」を出力し、ＸＭＣＵカウンタ１０３はＸＭＣＵカウント値「２」を出力し、ＹＭＣＵカウンタ１０４はＹＭＣＵカウント値「０」を出力する。
【０１４０】
なお、図１８Ｂに示すカウント条件のうち、ＸＭＣＵカウンタの開始値は、回転後の画像の水平方向の画素数に基づいて決定される。このＸＭＣＵカウンタの終了値は、回転前の画像の垂直方向のブロック数（回転後の画像の水平方向のブロックの数）から１を引いた値になる。同様に、ＹＭＣＵカウンタの終了値は、回転後の画像の垂直方向の画素数に基づいて決定される。このＹＭＣＵカウンタの終了値は、回転前の画像の水平方向のブロック数（回転後の画像の垂直方向のブロックの数）から１を引いた値になる。仮に４８×３２画素の画像の場合（図７Ｃ参照）ならば、ＸＭＣＵカウンタの開始値が「３」になり、ＹＭＣＵカウンタの終了値が「５」になる。
【０１４１】
また、指示部７５３は、ＰＸ算出部１０５、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８の設定を行う。なお、前述の０°回転の場合と比べると、ＰＸ算出部１０５の設定内容は同じであるが、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８の設定内容は異なっている（図１９Ｂの各算出部の枠内参照）。  
この設定により、ＰＸ算出部１０５は、Ｘカウント値「０」が入力すると値ＰＸ「０ｘ０」を出力し、Ｘカウント値「１」が入力すると値ＰＸ「０ｘ８」を出力し、Ｘカウント値「２」が入力すると値ＰＸ「０ｘ１０」を出力し、Ｘカウント値「３」が入力すると値ＰＸ「０ｘ１８」を出力するようになる。また、ＰＹ算出部１０６は、入力された「Ｙカウント値」と、水平方向に並ぶブロック数「３」と、８画素分の画素データを格納するためのアドレス数「０ｘ２０」とを乗算し、その乗算結果を値ＰＹとして出力するようになる。また、ＢＸ算出部１０７は、入力された「ＸＭＣＵカウント値」と、８画素分の画素データを格納するためのアドレス数「０ｘ２０」とを乗算し、その乗算結果を値ＢＸとして出力するようになる。また、ＢＹ算出部１０８は、入力された「ＹＭＣＵカウント値」と、水平方向に並ぶブロック数「３」と、１ブロック分の画素データを格納するためのアドレス数「０ｘ１００」とを乗算し、その乗算結果を値ＢＹとして出力するようになる。
【０１４２】
上記の通り、各カウンタ等及び各算出部の設定が終わると、加算器１０９からはアドレス値として「５８」が出力される（図２０Ｂの上図左のアドレス値「５８」を参照）。つまり、アドレス生成部７５４からＳＤＲＡＭインターフェイス７５５へアドレス値「５８」が出力される（図１６参照）。
【０１４３】
次に、色変換ユニット７４から最初のＲＧＢデータが入力してくる。４４４形式の場合（間引きなしの場合）、最初のＲＧＢデータは、「Ａ」のブロックの１番の画素の画素データである（図１４Ｂ参照）。このＲＧＢデータは、セレクタ７５１を介して、データレジスタ７５２に一旦格納される。このとき、データレジスタ７５２には２画素分の画素データが揃っていないので、データレジスタ７５２は書き込み要求を出さない。続いて、色変換ユニット７４から２番〜８番の画素データが入力してくる。このときも、データレジスタ７５２には、同時に書き込むべき２画素分の画素データが揃っていないので、データレジスタ７５２は書き込み要求を出さない。
【０１４４】
更に、色変換ユニット７４から９番の画素データが入力してくる。このとき、データレジスタ７５２は、書き込み要求とともに、この９番の画素データと、一旦格納していた１番の画素の画素データを、ＳＤＲＡＭインターフェイス７５５へ出力する。
【０１４５】
最初の書き込み要求があったとき、ＳＤＲＡＭインターフェイス７５５には、「Ａ」のブロックの９番及び１番の画素の画素データと、アドレス値「５８」が入力している。ＳＤＲＡＭインターフェイス７５５は、ＳＤＲＡＭコントローラ８６に対して、２画素分のＲＧＢデータと、そのＲＧＢデータを書き込むべきアドレスを示すアドレス値とを出力する。これにより、「Ａ」のブロックの９番の画素の画素データは５８番地〜５ｂ番地に格納され、１番の画素の画素データは５ｃ番地〜５ｆ番地に格納される。
【０１４６】
９番及び１番の画素の画素データの書き込みが終了すると、ＳＤＲＡＭコントローラ８６からＳＤＲＡＭインターフェイス７５５へＡＣＫ信号が出力される。このＡＣＫ信号があると、ＳＤＲＡＭインターフェイス７５５は、アドレス生成部７５４へＡＣＫ信号を出力する。アドレス生成部７５４では、このＡＣＫ信号により、Ｙカウンタ１０２がインクリメントされ、Ｙカウンタ１０２がＹカウント値「１」を出力する。このとき、他のカウンタのカウンタ値は変化しない。この結果、加算器１０９から、アドレス値として「ｂ８」が出力される（図２０Ｂの上図左のアドレス値「ｂ８」を参照）。
【０１４７】
次に、色変換ユニット７４から１０番の画素データが入力してくる。このとき、データレジスタ７５２は、書き込み要求とともに、この１０番の画素データと、一旦格納していた２番の画素の画素データを、ＳＤＲＡＭインターフェイス７５５へ出力する。そして、ＳＤＲＡＭインターフェイス７５５にはアドレス値「ｂ８」が入力されているので、１０番の画素の画素データはｂ８番地〜ｂｂ番地に格納され、２番の画素の画素データはｂｃ番地〜ｂｆ番地に格納される。
【０１４８】
このようにして、色変換ユニット７４から１１番〜１６番の画素データが入力してくると、１１番及び３番の画素の画素データが１１８番地〜１１ｆ番地に格納され、１２番及び４番の画素の画素データが１７８番地〜１７ｆ番地に格納され、１３番及び５番の画素の画素データが１ｄ８番地〜１ｄｆ番地に格納され、１４番及び６番の画素の画素データが２３８番地〜２３ｆ番地に格納され、１５番及び７番の画素の画素データが２９８番地〜２９ｆ番地に格納され、１６番及び８番の画素の画素データが２ｆ８番地〜２ｆｆ番地に格納される。
【０１４９】
１６番及び８番の画素の画素データの書き込みの際、Ｘカウンタ１０１のＸカウント値は「３」であり、Ｙカウンタ１０２のＹカウント値は終了値「７」であり、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値は「０」であり、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は「０」である。このため、１６番及び８番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＹカウンタ１０２に入力すると、Ｙカウント値はリセットされて開始値「０」になる。Ｙカウント値がリセットされると、Ｘカウンタ１０１のＸカウント値がデクリメントされる（図１８Ｂ及び図１９Ｂ参照）。これにより、Ｘカウンタ１０１がＸカウント値「２」を出力する。このとき、ＸＭＣＵカウンタ１０３及びＹＭＣＵカウンタ１０４のカウント値は変化しない。この結果、加算器１０９から、アドレス値として「５０」が出力される（図２０Ｂの上図中央のアドレス値「５０」を参照）。
【０１５０】
そして、色変換ユニット７４から「Ａ」のブロックの１７番〜２４番の画素の画素データが入力してくる（図１４Ｂ参照）。このとき、データレジスタ７５２には、同時に書き込むべき２画素分の画素データが揃っていないので、データレジスタ７５２は書き込み要求を出さない。
【０１５１】
更に、色変換ユニット７４から２５番の画素の画素データが順に入力してくる。このとき、データレジスタ７５２は、書き込み要求とともに、この２５番の画素データと、一旦格納していた１７番の画素の画素データを、ＳＤＲＡＭインターフェイス７５５へ出力する。そして、ＳＤＲＡＭインターフェイス７５５にはアドレス値「５０」が入力されているので、２５番の画素の画素データは５０番地〜５３番地に格納され、１７番の画素の画素データは５４番地〜５７番地に格納される。
【０１５２】
このようにして、「Ａ」のブロックの１番〜６４番の画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０１５３】
６４番及び５６番の画素の画素データの書き込みの際、Ｘカウンタ１０１のＸカウント値は終了値「０」であり、Ｙカウンタ１０２のＹカウント値は終了値「７」であり、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値は「２」であり、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は「０」である。このため、６４番及び５６番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＹカウンタ１０２に入力すると、Ｙカウント値はリセットされて開始値「０」になる。Ｙカウント値がリセットされると、Ｘカウンタ１０１のＸカウント値がリセットされて（図１８Ｂ及び図１９Ｂ参照）、Ｘカウント値は開始値「３」になる。Ｘカウント値がリセットされると、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値がインクリメントされる（図１８Ｂ及び図１９Ｂ参照）。これにより、ＹＭＣＵカウンタ１０４がＹＭＣＵカウント値「１」を出力する。このとき、ＸＭＣＵカウンタ１０３のＸカウント値は変化しない。この結果、加算器１０９から、アドレス値として「３５８」が出力される（図２０Ｂの中央図のアドレス値「３５８」を参照）。
【０１５４】
そして、「Ｂ」のブロックの１番〜６４番の画素データが、「Ａ」のブロックの１番〜６４番の画素データとほぼ同様の手順により、ＳＤＲＡＭ９０の所定のアドレスに格納される。
【０１５５】
「Ｂ」のブロックの６４番及び５６番の画素の画素データの書き込みの際、Ｘカウンタ１０１のＸカウント値は終了値「０」であり、Ｙカウンタ１０２のＹカウント値は終了値「７」であり、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値は「２」であり、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は終了値「１」である。このため、６３番及び６４番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｙカウント値がリセットされて開始値「０」になり、Ｘカウント値もリセットされて開始値「３」になり、ＹＭＣＵカウント値もリセットされて開始値「０」になる（図１８Ｂ及び図１９Ｂ参照）。ＹＭＣＵカウント値がリセットされると、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値がデクリメントされる（図１８Ｂ及び図１９Ｂ参照）。これにより、ＸＭＣＵカウンタ１０３がＸＭＣＵカウント値「１」を出力する。この結果、加算器１０９から、アドレス値として「３８」が出力される（図２０Ｂの下図のアドレス値「３８」を参照）。
【０１５６】
このようにして、残りの「Ｃ」〜「Ｆ」のブロックの各６４画素分の画素データが、ＳＤＲＡＭ９０の所定のアドレスに格納される。この結果、図１４Ｂに示す順に、２４×１６画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０１５７】
＜＜（１−３）１８０°回転＞＞
回転量が１８０°の場合、指示部７５３は、図１８Ｃに示す条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。また、指示部７５３は、前述の０°回転の場合と同様の設定内容にて、ＰＸ算出部１０５、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８を設定する。  
図２０Ｃは、回転量が１８０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。ここでは詳しい動作については説明を省略するが、図１４Ｃに示す順に、１６×２４画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０１５８】
＜＜（１−４）２７０°回転＞＞
回転量が２７０°の場合、指示部７５３は、図１８Ｄに示す条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。また、指示部７５３は、前述の９０°回転の場合と同様の設定内容にて、ＰＸ算出部１０５、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８を設定する。  
図２０Ｄは、回転量が２７０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。ここでは詳しい動作については説明を省略するが、図１４Ｄに示す順に、２４×１６画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０１５９】
＜（２）Ｖ４２２形式の場合＞
図２３Ａ〜図２３Ｄは、データ形式がＶ４２２形式の場合におけるカウント条件の説明図である。図２３Ａは、回転量０°の場合のカウント条件を示している。図２３Ｂは、回転量９０°の場合のカウント条件を示している。図２３Ｃは、回転量１８０°の場合のカウント条件を示している。図２３Ｄは、回転量２７０°の場合のカウント条件を示している。
【０１６０】
並び替えユニット７５に入力されてくる画素データの順序が４４４形式とＶ４２２形式とでは異なるため、前述の４４４形式及び４２２形式の場合（図１８Ａ〜図１８Ｂ）と比較すると、カウント条件が異なっている。なお、図中において「２ＵＰ」とあるのは、インクリメントする際に、カウンタがカウント値を２つ上げることを意味する。また、「２ＤＯＷＮ」とあるのは、デクリメントする際に、カウンタがカウント値を２つ下げることを意味する。
【０１６１】
Ｖ４２２形式の場合、Ｖカウンタ１１２が用いられる。Ｖカウンタ１１２が出力するＶカウント値は、アドレス生成対象画素が前述のＹ１のブロックに属するか、Ｙ２のブロックに属するかを示す値になる（図９Ｃ参照）。アドレス生成対象画素がＹ１のブロックに属する場合にはＶカウンタ値が「０」になり、アドレス生成対象画素がＹ２のブロックに属する場合にはＶカウンタ値が「１」になる。
【０１６２】
ここでは、０°回転の場合の並び替えユニット７５の動作について説明する。  
図２４は、データ形式がＶ４２２形式の場合であって、回転量が０°の場合におけるアドレス生成部の動作の説明図である。図２５は、回転量が０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【０１６３】
まず、並び替えユニット７５の指示部７５３（図１６参照）は、図２３Ａに示す条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。このときの各カウンタは、開始値を出力する。
【０１６４】
なお、図２３Ａに示すカウント条件のうち、ＸＭＣＵカウンタの開始値は、回転後の画像の水平方向の画素数に基づいて決定される。同様に、ＹＭＣＵカウンタの終了値は、回転後の画像の垂直方向の画素数に基づいて決定される。仮に４８×３２画素の画像の場合（図７Ｄ参照）ならば、ＸＭＣＵカウンタの開始値が「５」になり、ＹＭＣＵカウンタの終了値が「３」になる。
【０１６５】
また、指示部７５３は、ＰＸ算出部１０５、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８の設定を行う。なお、前述の４４４形式（又は４２２形式）であって０°回転の場合（図１９Ａ参照）と比べると、ＰＸ算出部１０５、ＰＹ算出部１０６及びＢＸ算出部１０７の設定内容は同じであるが、ＢＹ算出部１０８の設定内容は異なっている（図２４の各算出部の枠内参照）。  
ＢＹ算出部１０８は、入力された「ＹＭＣＵカウント値」と「Ｖカウント値」とを加算し、この加算結果と、水平方向に並ぶブロック数と、１ブロック分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＢＹとして出力するように設定される。この設定により、ＢＹ算出部１０８は、入力された「ＹＭＣＵカウント値」と「Ｖカウント値」とを加算し、この加算結果と、水平方向に並ぶブロック数「２」と、１ブロック分の画素データを格納するためのアドレス数「０ｘ１００」とを乗算し、その乗算結果を値ＢＹとして出力するようになる。
【０１６６】
上記の通り、各カウンタ等及び各算出部の設定が終わると、加算器１０９からはアドレス値として「０」が出力される（図２５の上図左のアドレス値「０」を参照）。つまり、アドレス生成部７５４からＳＤＲＡＭインターフェイス７５５へアドレス値「０」が出力される（図１６参照）。そして、「Ａ」のブロックの１番及び２番の画素の画素データが０番地〜７番地に格納される。
【０１６７】
「Ａ」のブロックの６３番及び６４番の画素の画素データの書き込みの際、Ｘカウント値は終了値「３」であり、Ｙカウント値は終了値「７」であり、Ｖカウント値は「０」であり、ＸＭＣＵカウント値は「０」であり、ＹＭＣＵカウント値は「０」である（このときのアドレス値は「１ｄ８」である）。  
「Ａ」のブロックの６３番及び６４番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値は「０」になり、Ｙカウント値は「０」になり、Ｖカウント値は「１」になる。このとき、ＸＭＣＵカウンタ１０３及びＹＭＣＵカウンタ１０４のカウント値は変化しない。この結果、加算器１０９から、アドレス値として「２００」が出力される（図２５の中央図のアドレス値「２００」を参照）。そして、「Ａ」のブロックの６４番の画素の画素データの後に入力されてくる、「Ｃ」のブロックの１番及び２番の画素の画素データが、２００番地〜２０７番地に格納される。
【０１６８】
「Ｃ」のブロックの６３番及び６４番の画素の画素データの書き込みの際、Ｘカウント値は終了値「３」であり、Ｙカウント値は終了値「７」であり、Ｖカウント値は終了値「１」であり、ＸＭＣＵカウント値は「０」であり、ＹＭＣＵカウント値は「０」である（このときのアドレス値は「３ｄ８」である）。  
「Ｃ」のブロックの６３番及び６４番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値は「０」になり、Ｙカウント値は「０」になり、Ｖカウント値は「０」になり、ＸＭＣＵカウント値は「１」になる。このとき、ＹＭＣＵカウンタ１０４のカウント値は変化しない。この結果、加算器１０９から、アドレス値として「２０」が出力される。そして、「Ｃ」のブロックの６４番の画素の画素データの後に入力されてくる、「Ｂ」のブロックの１番及び２番の画素の画素データが、２０番地〜２７番地に格納される。
【０１６９】
「Ｄ」のブロックの６３番及び６４番の画素の画素データの書き込みの際、Ｘカウント値は終了値「３」であり、Ｙカウント値は終了値「７」であり、Ｖカウント値は終了値「１」であり、ＸＭＣＵカウント値は終了値「１」であり、ＹＭＣＵカウント値は「０」である（このときのアドレス値は「３ｆ８」である）。  
「Ｄ」のブロックの６３番及び６４番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値は「０」になり、Ｙカウント値は「０」になり、Ｖカウント値は「０」になり、ＸＭＣＵカウント値は「０」になり、ＹＭＣＵカウント値は「２」になる（ＹＭＣＵカウンタ１０４は２ずつＹＭＣＵカウント値をインクリメントする）。この結果、加算器１０９から、アドレス値として「４００」が出力される。そして、「Ｄ」のブロックの６４番の画素の画素データの後に入力されてくる、「Ｅ」のブロックの１番及び２番の画素の画素データが、４００番地〜４０７番地に格納される。
【０１７０】
なお、他の回転（９０°、１８０°及び２７０°）の場合についても、図２３Ｂ〜図２３Ｄのカウント条件に従って、並び替えユニット７５が同様に動作する。  
ここでは、他の回転の場合については説明を省略する。
【０１７１】
＜（３）４２０形式の場合＞
図２６Ａ〜図２６Ｄは、データ形式が４２０形式の場合におけるカウント条件の説明図である。図２６Ａは、回転量０°の場合のカウント条件を示している。図２６Ｂは、回転量９０°の場合のカウント条件を示している。図２６Ｃは、回転量１８０°の場合のカウント条件を示している。図２６Ｄは、回転量２７０°の場合のカウント条件を示している。
【０１７２】
並び替えユニット７５に入力されてくる画素データの順序が前述のデータ形式とＶ４２２形式とでは異なるため、前述のデータ形式の場合（図１８Ａ〜図１８Ｂ、図２３Ａ〜図２３Ｄ）と比較すると、カウント条件が異なっている。
【０１７３】
４２０形式の場合、Ｖカウンタ１１２だけでなく、Ｈカウンタ１１３も用いられる。Ｈカウンタ１１３が出力するＨカウント値は、アドレス生成対象画素が前述のＹ１又はＹ３のブロックに属するか、若しくは、Ｙ２又はＹ４のブロックに属するかを示す値になる（図９Ｄ参照）。アドレス生成対象画素がＹ１又はＹ３のブロックに属する場合にはＨカウンタ値が「０」になり、アドレス生成対象画素がＹ２又はＹ４のブロックに属する場合にはＨカウンタ値が「１」になる。また、Ｖカウンタ１１２が出力するＶカウント値は、アドレス生成対象画素が前述のＹ１又はＹ２のブロックに属するか、Ｙ３又はＹ４のブロックに属するかを示す値になる（図９Ｄ参照）。アドレス生成対象画素がＹ１又はＹ２のブロックに属する場合にはＶカウンタ値が「０」になり、アドレス生成対象画素がＹ３又はＹ４のブロックに属する場合にはＶカウンタ値が「１」になる。
【０１７４】
ここでは、０°回転の場合の並び替えユニット７５の動作について説明する。  
図２７は、データ形式が４２０形式の場合であって、回転量が０°の場合におけるアドレス生成部の動作の説明図である。図２８は、データ形式が４２０形式の場合であって、回転量が０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【０１７５】
まず、並び替えユニット７５の指示部７５３（図１６参照）は、図２６Ａに示す条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。このときの各カウンタは、開始値を出力する。
【０１７６】
なお、図２６Ａに示すカウント条件のうち、ＸＭＣＵカウンタの開始値は、回転後の画像の水平方向の画素数に基づいて決定される。同様に、ＹＭＣＵカウンタの終了値は、回転後の画像の垂直方向の画素数に基づいて決定される。仮に４８×３２画素の画像の場合（図７Ｅ参照）ならば、ＸＭＣＵカウンタの開始値が「５」になり、ＹＭＣＵカウンタの終了値が「３」になる。
【０１７７】
また、指示部７５３は、ＰＸ算出部１０５、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８の設定を行う。なお、前述のＶ４２２形式であって０°回転の場合（図２４参照）と比べると、ＰＸ算出部１０５、ＰＹ算出部１０６及びＢＹ算出部１０８の設定内容は同じであるが、ＢＸ算出部１０７の設定内容は異なっている（図２７の各算出部の枠内参照）。  
ＢＸ算出部１０７は、入力された「ＸＭＣＵカウント値」と「Ｈカウント値」とを加算し、この加算結果と、ブロックの水平方向１行分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＢＸとして出力するように設定される。この設定により、ＢＸ算出部１０７は、入力された「ＸＭＣＵカウント値」と「Ｈカウント値」とを加算し、この加算結果と、８画素分の画素データを格納するためのアドレス数「０ｘ２０」とを乗算し、その乗算結果を値ＢＸとして出力するようになる。  
ここでは書き込み動作の説明を省略するが、このように設定を行えば、画素データがＳＤＲＡＭ９０の所定のアドレスに格納されるようになる。
【０１７８】
なお、他の回転（９０°、１８０°及び２７０°）の場合についても、図２６Ｂ〜図２６Ｄのカウント条件に従って、並び替えユニット７５が同様に動作する。  
ここでは、他の回転の場合については説明を省略する。
【０１７９】
＝＝＝並び替えユニット７５の動作２（間引き処理時）＝＝＝
次に、間引き処理がピクセル化ユニット７３で行われた場合の並び替えユニット７５の動作について説明する。なお、間引き前の元画像は、１６（水平方向）×２４画素（垂直方向）から構成されるものとする（このため、間引き前の元画像データは、２（水平方向）×３（垂直方向）のブロック単位から構成される）。
【０１８０】
以下の説明では、データ形式が４４４形式（及び４２２形式）であって回転量が０°の場合について説明する。
【０１８１】
図２９Ａ〜図２９Ｄは、データ形式が４４４形式（及び４２２形式）であって回転量が０°の場合におけるカウント条件の説明図である。図２９Ａは、間引き量がない場合のカウント条件（参考例、図１８Ａと同じ）を示している。図２９Ｂは、間引き量が１／２の場合のカウント条件を示している。図２９Ｃは、間引き量が１／４の場合のカウント条件を示している。図２９Ｄは、間引き量が１／８の場合のカウント条件を示している。
【０１８２】
並び替えユニット７５の指示部７５３は、図に示すような条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。
【０１８３】
＜１／２間引き処理＞
４４４形式における１／２間引き処理の場合、既に説明した通り、ピクセル化ユニット７３は、８×８画素のブロック単位のデータの中から、水平方向４画素×垂直方向４画素のＹＵＶデータを出力する（図１０Ａ参照）。このため、４４４形式における１／２間引き処理の場合、並び替えユニット７５へは、まず、「Ａ」のブロックの１番の画素の画素データ（ＲＧＢデータ）が入力し、続いて、３番→５番→７番→１７番→・・・→５３番→５５番の順に各画素の画素データが入力する。そして、４４４形式における１／２間引き処理の場合、「Ａ」のブロックの各画素データが並び替えユニット７５へ入力した後、続いて「Ｂ」のブロックの各画素データが、「Ａ」のブロックの場合と同様の順に、並び替えユニット７５へ入力する。
【０１８４】
図３０Ａは、間引き量が１／２の場合におけるアドレス生成部の動作の説明図である。図３１Ａは、間引き量が１／２の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。図３２Ａは、間引き量が１／２の場合におけるアドレス生成部の各カウンタのカウント値とアドレス生成対象画素との関係の説明図である。以下、図２９Ｂも参照しながら、４４４形式・回転量０°における１／２間引き処理の動作を説明する。
【０１８５】
まず、並び替えユニット７５の指示部７５３（図１６参照）は、図２９Ｂに示す条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。このときの各カウンタは、開始値を出力する。具体的には、Ｘカウンタ１０１はＸカウント値「０」を出力し、Ｙカウンタ１０２はＹカウント値「０」を出力し、ＸＭＣＵカウンタ１０３はＸＭＣＵカウント値「０」を出力し、ＹＭＣＵカウンタ１０４はＹＭＣＵカウント値「０」を出力する。
【０１８６】
なお、図２９Ｂに示すカウント条件のうち、ＸＭＣＵカウンタの終了値は、間引き処理後の画像の水平方向の画素数に基づいて決定される。このＸＭＣＵカウンタの終了値は、画像の水平方向のブロック数から１を引いた値になる。同様に、ＹＭＣＵカウンタの終了値は、間引き処理後の画像の垂直方向の画素数に基づいて決定される。このＹＭＣＵカウンタの終了値は、画像の垂直方向のブロック数から１を引いた値になる。仮に４８×３２画素の画像の場合（図７Ｂ参照）ならば、ＸＭＣＵカウンタの終了値が「５」になり、ＹＭＣＵカウンタの終了値が「３」になる。
【０１８７】
また、指示部７５３は、ＰＸ算出部１０５、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８の設定を行う（図３０Ａの各算出部の枠内参照）。  
ＰＸ算出部１０５は、入力された「Ｘカウント値」と、１度に書き込まれる２画素分の画素データを格納するためのアドレス数「０ｘ８」とを乗算し、その乗算結果を値ＰＸとして出力するように設定される。この設定により、ＰＸ算出部１０５は、Ｘカウント値「０」が入力すると値ＰＸ「０ｘ０」を出力し、Ｘカウント値「１」が入力すると値ＰＸ「０ｘ８」を出力するようになる（なお、ＰＸ算出部に入力するＸカウント値は０又は１である）。
【０１８８】
ＰＹ算出部１０６は、入力された「Ｙカウント値」と、水平方向に並ぶブロック数と、間引き後のブロックの水平方向１行分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＰＹとして出力するように設定される。この設定により、ＰＹ算出部１０６は、入力された「Ｙカウント値」と、間引き後の水平方向に並ぶブロック数「２」と、４画素分の画素データを格納するためのアドレス数「０ｘ１０」とを乗算し、その乗算結果を値ＰＹとして出力するようになる。
【０１８９】
ＢＸ算出部１０７は、ＢＸ算出部１０７は、入力された「ＸＭＣＵカウント値」と、間引き後のブロックの水平方向１行分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＢＸとして出力するように設定される。この設定により、ＢＸ算出部１０７は、入力された「ＸＭＣＵカウント値」と、４画素分の画素データを格納するためのアドレス数「０ｘ１０」とを乗算し、その乗算結果を値ＢＸとして出力するようになる。
【０１９０】
ＢＹ算出部１０８は、入力された「ＹＭＣＵカウント値」と、水平方向に並ぶブロック数と、間引き後の１ブロック分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＢＹとして出力するように設定される。この設定により、ＢＹ算出部１０８は、入力された「ＹＭＣＵカウント値」と、水平方向に並ぶブロック数「２」と、間引き後の１ブロック分の画素データを格納するためのアドレス数「０ｘ４０」とを乗算し、その乗算結果を値ＢＹとして出力するようになる。
【０１９１】
上記の通り、各カウンタ等及び各算出部の設定が終わると、加算器１０９からはアドレス値として「０」が出力される（図３１Ａの上図左のアドレス値「０」を参照）。つまり、アドレス生成部７５４からＳＤＲＡＭインターフェイス７５５へアドレス値「０」が出力される（図１６参照）。
【０１９２】
次に、色変換ユニット７４から最初のＲＧＢデータが入力してくる。データ形式が４４４形式であって間引き量が１／２の場合、最初のＲＧＢデータは、「Ａ」のブロックの１番の画素の画素データである（図１０Ａ参照）。このＲＧＢデータは、セレクタ７５１を介して、データレジスタ７５２に一旦格納される。このとき、データレジスタ７５２には２画素分の画素データが揃っていないので、データレジスタ７５２は書き込み要求を出さない。
【０１９３】
更に、色変換ユニット７４から次のＲＧＢデータが入力してくる。このＲＧＢデータは、「Ａ」のブロックの３番の画素の画素データである（図１０Ａ参照）。このとき、データレジスタ７５２は、書き込み要求とともに、２画素分のＲＧＢデータをＳＤＲＡＭインターフェイス７５５へ出力する。
【０１９４】
最初の書き込み要求があったとき、ＳＤＲＡＭインターフェイス７５５には、「Ａ」のブロックの１番及び３番の画素の画素データと、アドレス値「０」が入力している。ＳＤＲＡＭインターフェイス７５５は、ＳＤＲＡＭコントローラ８６に対して、２画素分のＲＧＢデータと、そのＲＧＢデータを書き込むべきアドレスを示すアドレス値とを出力する。これにより、「Ａ」のブロックの１番の画素の画素データは０番地〜３番地に格納され、３番の画素の画素データは４番地〜７番地に格納される。
【０１９５】
１番及び３番の画素の画素データの書き込みが終了すると、ＳＤＲＡＭコントローラ８６からＳＤＲＡＭインターフェイス７５５へＡＣＫ信号が出力される。このＡＣＫ信号があると、ＳＤＲＡＭインターフェイス７５５は、アドレス生成部７５４へＡＣＫ信号を出力する。
【０１９６】
アドレス生成部７５４では、このＡＣＫ信号により、Ｘカウンタ１０１がインクリメントされ、Ｘカウンタ１０１がＸカウント値「１」を出力する。このとき、他のカウンタのカウンタ値は変化しない。この結果、加算器１０９から、アドレス値として「８」が出力される（図３１Ａの上図左のアドレス値「８」を参照）。そして、「Ａ」のブロックの５番及び７番の画素の画素データが８番地〜ｆ番地に格納される。
【０１９７】
５番及び７番の画素の画素データの書き込みが終了すると、ＳＤＲＡＭコントローラ８６からＳＤＲＡＭインターフェイス７５５へＡＣＫ信号が出力され、ＡＣＫ信号がアドレス生成部７５４に入力する。このときまでのＸカウンタ１０１のＸカウント値は、終了値である「１」になっている。このため、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値はリセットされて開始値「０」になる。Ｘカウント値がリセットされると、Ｙカウンタ１０２のＹカウント値がインクリメントされる（図２９Ｂ及び図３１Ａ参照）。これにより、Ｙカウンタ１０２がＹカウント値「１」を出力する。このとき、ＸＭＣＵカウンタ１０３及びＹＭＣＵカウンタ１０４のカウント値は変化しない。この結果、加算器１０９から、アドレス値として「２０」が出力される（図３１Ａの中央図のアドレス値「２０」を参照）。
【０１９８】
そして、色変換ユニット７４から「Ａ」のブロックの１７番の画素の画素データが入力してくる（図１０Ａ参照）。また、その次に、１９番の画素の画素データが色変換ユニット７４から並び替えユニット７５に入力してくる。データレジスタ７５２は、書き込み要求とともに、２画素分のＲＧＢデータをＳＤＲＡＭインターフェイス７５５へ出力する。この書き込み要求があったとき、ＳＤＲＡＭインターフェイス７５５には、「Ａ」のブロックの１７番及び１９番の画素の画素データと、アドレス値「２０」が入力している。ＳＤＲＡＭインターフェイス７５５は、ＳＤＲＡＭコントローラ８６に対して、「Ａ」のブロックの１７番の画素の画素データを２０番地〜２３番地に格納させ、１９番の画素の画素データを２４番地〜２７番地に格納させる。
【０１９９】
このようにして、「Ａ」のブロックの４画素（水平方向）×４画素（垂直方向）の画素データが、ＳＤＲＡＭ９０の所定のアドレスに格納される。
【０２００】
５３番及び５５番の画素の画素データの書き込みの際、Ｘカウンタ１０１のＸカウント値は終了値「１」であり、Ｙカウンタ１０２のＹカウント値は終了値「３」であり、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値は「０」であり、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は「０」である。このため、５３番及び５５番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値はリセットされて開始値「０」になる。Ｘカウント値がリセットされると、Ｙカウンタ１０２のＹカウント値がリセットされて（図２９Ｂ及び図３０Ａ参照）、Ｙカウント値は開始値「０」になる。Ｙカウント値がリセットされると、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値がインクリメントされる（図２９Ｂ及び図３０Ａ参照）。これにより、ＸＭＣＵカウンタ１０３がＸＭＣＵカウント値「１」を出力する。このとき、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は変化しない。この結果、加算器１０９から、アドレス値として「１０」が出力される（図３１Ａの中央図のアドレス値「１０」を参照）。
【０２０１】
そして、「Ｂ」のブロックの１番の画素の画素データが色変換ユニット７４から並び替えユニット７５に入力してくる（図１０Ａ参照）。また、その次に、３番の画素の画素データが色変換ユニット７４から並び替えユニット７５に入力してくる。データレジスタ７５２は、書き込み要求とともに、２画素分のＲＧＢデータをＳＤＲＡＭインターフェイス７５５へ出力する。この書き込み要求があったとき、ＳＤＲＡＭインターフェイス７５５には、「Ｂ」のブロックの１番及び３番の画素の画素データと、アドレス値「１０」が入力している。ＳＤＲＡＭインターフェイス７５５は、ＳＤＲＡＭコントローラ８６に対して、「Ｂ」のブロックの１番の画素の画素データを１０番地〜１３番地に格納させ、３番の画素の画素データは１４番地〜１７番地に格納させる。
【０２０２】
そして、「Ｂ」のブロックの４画素（水平方向）×４画素（垂直方向）の画素データが、「Ａ」のブロックの４画素（水平方向）×４画素（垂直方向）の画素データとほぼ同様の手順により、ＳＤＲＡＭ９０の所定のアドレスに格納される。
【０２０３】
「Ｂ」のブロックの５３番及び５５番の画素の画素データの書き込みの際、Ｘカウンタ１０１のＸカウント値は終了値「１」であり、Ｙカウンタ１０２のＹカウント値は終了値「３」であり、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値は終了値「１」であり、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は「０」である。このため、５３番及び５５番の画素の画素データの書き込みが終了し、ＡＣＫ信号がＸカウンタ１０１に入力すると、Ｘカウント値、Ｙカウント値及びＸＭＣＵカウント値がリセットされて（図２９Ｂ及び図３１Ａ参照）開始値「０」になる。ＸＭＣＵカウント値がリセットされると、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値がインクリメントされる（図２９Ｂ及び図３１Ａ参照）。これにより、ＹＭＣＵカウンタ１０４がＹＭＣＵカウント値「１」を出力する。この結果、加算器１０９から、アドレス値として「４０」が出力される（図３１Ａの下図のアドレス値「８０」を参照）。
【０２０４】
このようにして、残りの「Ｃ」〜「Ｆ」のブロックの各４画素（水平方向）×４画素（垂直方向）の画素データが、ＳＤＲＡＭ９０の所定のアドレスに格納される。この結果、図３２Ａに示すように、８×１２画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０２０５】
＜１／４間引き処理＞
４４４形式における１／４間引き処理の場合、既に説明した通り、ピクセル化ユニット７３は、８×８画素のブロック単位のデータの中から、水平方向２画素×垂直方向２画素のＹＵＶデータを出力する（図１０Ｂ参照）。このため、４４４形式における１／４間引き処理の場合、並び替えユニット７５へは、まず、「Ａ」のブロックの１番の画素の画素データ（ＲＧＢデータ）が入力し、続いて、５番→３３番→３７番の順に各画素の画素データが入力する。そして、４４４形式における１／４間引き処理の場合、「Ａ」のブロックの各画素データが並び替えユニット７５へ入力した後、続いて「Ｂ」のブロックの各画素データが、「Ａ」のブロックの場合と同様の順に、並び替えユニット７５へ入力する。
【０２０６】
図３０Ｂは、間引き量が１／４の場合におけるアドレス生成部の動作の説明図である。図３１Ｂは、間引き量が１／４の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。図３２Ｂは、間引き量が１／４の場合におけるアドレス生成部の各カウンタのカウント値とアドレス生成対象画素との関係の説明図である。以下、図２９Ｃも参照しながら、４４４形式・回転量０°における１／４間引き処理の動作を説明する。
【０２０７】
まず、並び替えユニット７５の指示部７５３（図１６参照）は、図２９Ｂに示す条件にて、各カウンタの開始値及び終了値、アップダウンセレクタ１１０Ａ〜１１０Ｄによる各カウンタのカウント方向（インクリメント又はデクリメント）、及び各カウンタのカウント条件などを設定する。なお、１／４間引き処理の場合、Ｘカウンタ１０１は、常に「０」が出力されるように設定される。
【０２０８】
また、指示部７５３は、ＰＸ算出部１０５、ＰＹ算出部１０６、ＢＸ算出部１０７及びＢＹ算出部１０８の設定を行う（図３０Ｂの各算出部の枠内参照）。なお、前述の１／２間引きの場合と比べると、間引き量に応じて各算出部の設定内容は異なっている  
この設定により、ＰＸ算出部１０５は、常に「０ｘ０」の値ＰＸを出力する（なお、ＰＸ算出部に入力するＸカウント値は常に０である）。また、ＰＹ算出部１０６は、入力された「Ｙカウント値」と、水平方向に並ぶブロック数「２」と、２画素分の画素データ（間引き後のブロックの水平方向１行分の画素データ）を格納するためのアドレス数「０ｘ８」とを乗算し、その乗算結果を値ＰＹとして出力するようになる（なお、ＰＹ算出部に入力するＹカウント値は０又は１である）。また、ＢＸ算出部１０７は、入力された「ＸＭＣＵカウント値」と、２画素分の画素データ（間引き後のブロックの水平方向１行分の画素データ）を格納するためのアドレス数「０ｘ８」とを乗算し、その乗算結果を値ＢＸとして出力するようになる。また、ＢＹ算出部１０８は、入力された「ＹＭＣＵカウント値」と、水平方向に並ぶブロック数「２」と、間引き後の１ブロック分の画素データを格納するためのアドレス数「０ｘ１０」とを乗算し、その乗算結果を値ＢＹとして出力するようになる。
【０２０９】
上記の通り、各カウンタ等及び各算出部の設定が終わると、加算器１０９からはアドレス値として「０」が出力される（図３１Ｂの上図左のアドレス値「０」を参照）。つまり、アドレス生成部７５４からＳＤＲＡＭインターフェイス７５５へアドレス値「０」が出力される（図１６参照）。そして、「Ａ」のブロックの１番及び５番の画素の画素データが０番地〜７番地に格納される。
【０２１０】
１番及び５番の画素の画素データの書き込みが終了すると、ＳＤＲＡＭコントローラ８６からＳＤＲＡＭインターフェイス７５５へＡＣＫ信号が出力される。このＡＣＫ信号があると、ＳＤＲＡＭインターフェイス７５５は、アドレス生成部７５４へＡＣＫ信号を出力する。
【０２１１】
アドレス生成部７５４では、このＡＣＫ信号により、Ｙカウンタ１０２がインクリメントされ、Ｙカウンタ１０２がＹカウント値「１」を出力する。このとき、他のカウンタのカウンタ値は変化しない。この結果、加算器１０９から、アドレス値として「１０」が出力される（図３１Ｂの上図左のアドレス値「１０」を参照）。そして、「Ａ」のブロックの３３番及び３７番の画素の画素データが１０番地〜１７番地に格納される。
【０２１２】
このようにして、「Ａ」のブロックの２画素（水平方向）×２画素（垂直方向）の画素データが、ＳＤＲＡＭ９０の所定のアドレスに格納される。
【０２１３】
３３番及び３７番の画素の画素データの書き込みが終了すると、ＳＤＲＡＭコントローラ８６からＳＤＲＡＭインターフェイス７５５へＡＣＫ信号が出力され、ＡＣＫ信号がアドレス生成部７５４に入力する。このときまでのＹカウンタ１０２のＹカウント値は、終了値である「１」になっている。このため、ＡＣＫ信号が入力すると、Ｙカウント値はリセットされて開始値「０」になる。Ｙカウント値がリセットされると、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値がインクリメントされる（図２９Ｃ及び図３１Ｂ参照）。これにより、ＸＭＣＵカウンタ１０３がＸＭＣＵカウント値「１」を出力する。このとき、Ｘカウンタ１０１及びＹＭＣＵカウンタ１０４のカウント値は変化しない。この結果、加算器１０９から、アドレス値として「８」が出力される（図３１Ｂの中央図のアドレス値「８」を参照）。そして、「Ｂ」のブロックの１番及び５番の画素の画素データが８番地〜ｆ番地に格納される。また、「Ｂ」のブロックの２画素（水平方向）×２画素（垂直方向）の画素データが、「Ａ」のブロックの２画素（水平方向）×２画素（垂直方向）の画素データとほぼ同様の手順により、ＳＤＲＡＭ９０の所定のアドレスに格納される。
【０２１４】
「Ｂ」のブロックの３３番及び３７番の画素の画素データの書き込みの際、Ｙカウンタ１０２のＹカウント値は終了値「１」であり、ＸＭＣＵカウンタ１０３のＸＭＣＵカウント値は終了値「１」であり、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値は「０」である。このため、３３番及び３７番の画素の画素データの書き込みが終了し、ＡＣＫ信号がに入力すると、Ｙカウント値及びＸＭＣＵカウント値がリセットされて（図２９Ｃ及び図３１Ｂ参照）開始値「０」になる。ＸＭＣＵカウント値がリセットされると、ＹＭＣＵカウンタ１０４のＹＭＣＵカウント値がインクリメントされる（図２９Ｃ及び図３１Ｂ参照）。これにより、ＹＭＣＵカウンタ１０４がＹＭＣＵカウント値「１」を出力する。この結果、加算器１０９から、アドレス値として「２０」が出力される（図３１Ｂの下図のアドレス値「２０」を参照）。
【０２１５】
このようにして、残りの「Ｃ」〜「Ｆ」のブロックの各２画素（水平方向）×２画素（垂直方向）の画素データが、ＳＤＲＡＭ９０の所定のアドレスに格納される。この結果、図３２Ｂに示すように、４×６画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０２１６】
＜１／８間引き処理＞
４４４形式における１／８間引き処理の場合、既に説明した通り、ピクセル化ユニット７３は、８×８画素のブロック単位のデータの中から、１番の画素のＹＵＶデータを出力する（図１０Ｃ参照）。このため、４４４形式における１／８間引き処理の場合、並び替えユニット７５へは、まず、「Ａ」のブロックの１番の画素の画素データ（ＲＧＢデータ）が入力し、続いて、「Ｂ」のブロックの１番の画素の画素データが入力する。そして、４４４形式における１／８間引き処理の場合、各ブロックの１番の画素の画素データが順に、並び替えユニット７５へ入力する。
【０２１７】
図３０Ｃは、間引き量が１／８の場合におけるアドレス生成部の動作の説明図である。  
ここでは、詳しい説明は省略するが、図２９Ｄ及び図３０Ｃに示すように、間引き量に応じて各カウンタや各算出部等を設定することによって、画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。なお、間引き量が１／８の場合、１度に書き込まれる２画素分の画素データは、それぞれ別のブロックの画素データである。例えば、最初の書き込みの際には、「Ａ」のブロックの１番の画素の画素データと、「Ｂ」のブロックの１番の画素の画素データとが、一緒にＳＤＲＡＭ９０へ書き込まれる。
【０２１８】
＜他の回転量について＞
回転量が０°の場合について説明したが、他の回転量の場合でも良い。ここでは、回転量が９０°の場合について説明する。
【０２１９】
図３３Ａ〜図３３Ｄは、データ形式が４４４形式（及び４２２形式）であって回転量が９０°の場合におけるカウント条件の説明図である。図３３Ａは、間引き量がない場合のカウント条件（参考例、図１８Ｂと同じ）を示している。図３３Ｂは、間引き量が１／２の場合のカウント条件を示している。図３３Ｃは、間引き量が１／４の場合のカウント条件を示している。図３３Ｄは、間引き量が１／８の場合のカウント条件を示している。
【０２２０】
ここでは、詳しい説明は省略するが、このように回転量及び間引き量に応じて各カウンタや各算出部等を設定することによって、画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。例えば間引き量が１／２の場合において回転量が９０°の場合、１２×８画素の画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。  
なお、回転量が１８０°及び２７０°の場合についての説明は省略するが、同様に回転量及び間引き量に応じて各カウンタや各算出部等を設定することによって、画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０２２１】
＜他のデータ形式について＞
データ形式が４４４形式及び４２２形式について説明したが、他のデータ形式の場合でも良い。ここでは、Ｖ４２２形式の場合について説明する。
【０２２２】
図３４Ａ〜図３４Ｄは、データ形式がＶ４２２形式であって回転量が０°の場合におけるカウント条件の説明図である。図３４Ａは、間引き量がない場合のカウント条件（参考例、図１８Ｂと同じ）を示している。図３４Ｂは、間引き量が１／２の場合のカウント条件を示している。図３４Ｃは、間引き量が１／４の場合のカウント条件を示している。図３４Ｄは、間引き量が１／８の場合のカウント条件を示している。
【０２２３】
ここでは、詳しい説明は省略するが、このようにデータ形式及び間引き量に応じて各カウンタや各算出部等を設定することによって、画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。なお、データ形式が４２０形式の場合についての説明は省略するが、同様にデータ形式及び間引き量に応じて各カウンタや各算出部等を設定することによって、画素データがＳＤＲＡＭ９０の所定のアドレスに格納される。
【０２２４】
＝＝＝その他の実施の形態＝＝＝
一実施形態としての複合装置等を説明したが、上記の実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることは言うまでもない。
【０２２５】
前述の実施形態では、ＹＵＶ色空間のＹＵＶデータを対象としているが、これに限られるものではない。例えば、ＹＵＶデータの代わりにＹＩＱ色空間のＹＩＱデータを対象としても良い。
【０２２６】
前述の実施形態では、１度に２画素分の画素データをＳＤＲＡＭ９０へ書き込むようにＳＤＲＡＭコントローラ８６が構成されているが、これに限られるものではない。例えば、１画素分の画素データずつＳＤＲＡＭ９０へ書き込みを行っても良い。
【０２２７】
＝＝＝まとめ＝＝＝
（１）前述の実施形態において、並び替えユニット７５は、画素に対応する画素データがブロックの順に入力するユニットであり、アドレスを生成するユニットであり、生成したアドレスに、入力した画素データをＳＤＲＡＭ９０（メモリに相当）に格納するユニットである。なお、並び替えユニット７５は、入力する画素データに対応する画素と、ＳＤＲＡＭ９０へ格納後の画素データの示す画像との位置関係に応じたアドレスを生成し、生成したアドレスにその画素データを格納する。例えば、回転量が０°の場合、「Ｂ」のブロックの１番の画素データを、画像の上略中央の位置に対応するアドレス（２０番地）に格納する（図１５Ａ参照）。
【０２２８】
このような並び替えユニット７５の機能をソフトウェアで実現しようとすると、アドレス生成処理に時間がかかってしまう。そこで、ハードウェアによって実現することが考えられる。
【０２２９】
そこで、本実施形態では、並び替えユニット７５は、ハードウェアによる構成として、Ｘカウンタ１０１（第１カウンタに相当）と、Ｙカウンタ１０２（第２カウンタに相当）とを備え、Ｘカウンタ１０１のＸカウント値（第１カウント値に相当）及びＹカウンタ１０２のＹカウント値（第２カウント値に相当）に基づいてアドレスを生成する。
【０２３０】
ところで、元の画像データを間引いて、間引き後の画像データを構成する画素データが入力してくる場合、間引き量に応じてアドレスを生成する必要がある。例えば、間引き量が１／２の場合、「Ｂ」のブロックの１番の画素データを、間引き後の画像の上略中央の位置に対応するアドレス（１０番地）に格納する必要がある。仮に、間引き量が０のためのアドレス生成部と、間引き量が１／２のためのアドレス生成部とを別々に設けるとすると、ハードウェアの回路規模が増大する。
【０２３１】
そこで、本実施形態では、間引き量に応じて、Ｘカウンタ１０１の開始値（第１開始値に相当）及び終了値（第１終了値に相当）の少なくとも一方を変更し、Ｙカウンタ１０２の開始値（第２開始値に相当）及び終了値（第２終了値に相当）の少なくとも一方を変更する。
【０２３２】
例えばデータ形式が４４４形式であって回転量が０°の場合、Ｘカウンタ１０１の終了値は、間引きがなければ「３」になるが、１／２間引きであれば「１」に変更される（図２９Ａ及び図２９Ｂ参照）。また、Ｙカウンタ１０２の終了値は、間引きがなければ「７」になるが、１／２間引きであれば「３」に変更される。（なお、例えばデータ形式が４４４形式であって回転量が９０°の場合、Ｘカウンタ１０１の開始値は、間引きがなければ「３」になるが、１／２間引きであれば「１」に変更される（図２９Ａ及び図２９Ｂ参照）。また、Ｙカウンタ１０２の終了値は、間引きがなければ「７」になるが、１／２間引きであれば「３」に変更される。）
本実施形態では、このようにＸカウンタ１０１とＹカウンタ１０２とを有効利用することによって、回路規模を縮小している。
【０２３３】
（２）前述の実施形態では、並び替えユニット７５は、ＸＭＣＵカウンタ１０３（第３カウンタに相当）及びＹＭＣＵカウンタ１０４（第４カウンタに相当）を備えている。そして、Ｙカウント値がリセットされたときにＸＭＣＵカウント値（第３カウント値に相当）をカウントし、ＸＭＣＵカウント値がリセットされたときにＹＭＣＵカウント値（第４カウント値に相当）をカウントする（例えば図１８Ａ及び図１９Ａ参照）。  
このようにすれば、並び替えユニット７５は、Ｘカウント値、Ｙカウント値、ＸＭＣＵカウント値及びＹＭＣＵカウント値に基づいて、所定のアドレスを生成することができる。
【０２３４】
（３）前述の実施形態では、並び替えユニット７５は、例えば回転量が０°の場合（第１状態に相当する場合）、Ｙカウント値がリセットされたときにＸＭＣＵカウント値をカウントし、ＸＭＣＵカウント値がリセットされたときにＹＭＣＵカウント値をカウントする（例えば図１８Ａ及び図１９Ａ参照）。一方、回転量が９０°の場合（第２状態に相当する場合）、Ｘカウント値がリセットされたときにＹＭＣＵカウント値をカウントし、ＹＭＣＵカウント値がリセットされたときにＸＭＣＵカウント値をカウントする（例えば図１８Ｂ及び図１９Ｂ参照）。  
このようにすれば、回転量に関わらず、並び替えユニット７５は、Ｘカウント値、Ｙカウント値、ＸＭＣＵカウント値及びＹＭＣＵカウント値に基づいて、所定のアドレスを生成することができる。
【０２３５】
（４）前述の実施形態では、ＳＤＲＡＭ９０への２画素分の画素データの書き込み（格納）がある毎にＡＣＫ信号が入力し、このＡＣＫ信号がある毎に、回転量が０°ならばＸカウンタ１０１がＸカウント値をカウント（インクリメント又はデクリメント）し、回転量が９０°ならばＹカウンタ１０２がＹカウント値をカウントする。このようにすれば、並び替えユニット７５は、入力する画素データに追従するように、その画素データに対応するアドレスを生成することができる。
【０２３６】
（５）前述の実施形態では、図２１、図３２Ａ及び図３２Ｂに示す通り、間引き量に関わらず、Ｘカウント値は、ブロック内におけるアドレス生成対象画素（メモリに格納する画素データに対応する画素に相当）の水平方向位置を示す値になる。同様に、Ｙカウント値は、ブロック内におけるアドレス生成対象画素の垂直方向位置を示す値になる。また同様に、ＸＭＣＵカウント値は、アドレス生成対象画素のブロックの画像データ内における水平方向位置を示す値になる。また同様に、ＹＭＣＵカウント値は、アドレス生成対象画素のブロックの画像データ内における垂直方向位置を示す値になる。  
このため、間引き量に関わらず、並び替えユニット７５は、Ｘカウント値、Ｙカウント値、ＸＭＣＵカウント値及びＹＭＣＵカウント値に基づいて、所定のアドレスを生成することができる。
【０２３７】
（６）前述の実施形態では、ＰＸ算出部１０５がＸカウント値に基づいて値ＰＸ（第１アドレス値に相当）を算出し、ＰＹ算出部１０６がＹカウント値に基づいて値ＰＹ（第２アドレス値に相当）を算出し、ＢＸ算出部１０７がＸＭＣＵカウント値に基づいて値ＢＸ（第３アドレス値に相当）を算出し、ＢＹ算出部１０８がＹＭＣＵカウント値に基づいて値ＢＹ（第４アドレス値に相当）を算出する。そして、並び替えユニットは、値ＰＸ、値ＰＹ、値ＢＸ及び値ＢＹを加算することによって、アドレスを生成する。これにより、単純な加算を行うだけでアドレスを生成することができ、アドレス生成処理を早く行うことができる。
【０２３８】
（７）前述の実施形態では、ＰＸ算出部１０５は、Ｘカウント値と、１度に書き込まれる２画素分の画素データを格納するためのアドレス数「０ｘ８」とを乗算し、その乗算結果を値ＰＸとして出力するように設定される。また、ＰＹ算出部１０６は、Ｙカウント値と、水平方向に並ぶブロック数と、ブロックの水平方向１行分の画素データを格納するためのアドレス数とを乗算し、その乗算結果を値ＰＹとして出力するように設定される。ＢＸ算出部１０７は、ＢＸ算出部１０７は、ＸＭＣＵカウント値と、ブロックの水平方向１行分の画素データを格納するためのアドレス数（１行分アドレス数に相当）とを乗算し、その乗算結果を値ＢＸとして出力するように設定される。ＢＹ算出部１０８は、ＹＭＣＵカウント値と、水平方向に並ぶブロック数と、１ブロック分の画素データを格納するためのアドレス数（１ブロックアドレス数に相当）とを乗算し、その乗算結果を値ＢＹとして出力するように設定される。  
これにより、単純な加算を行うだけでアドレスを生成することができ、アドレス生成処理を早く行うことができる。
【０２３９】
（８）前述の実施形態では、間引き量に応じて、各算出部の設定が変更される（例えば図１９Ａ及び図３０Ａ〜図３０Ｃ参照）。このようにすれば、間引き量に関わらず、並び替えユニット７５は、所望のアドレスを生成することができる。
【０２４０】
（９）なお、前述の実施形態の全ての構成要素を備えれば、全ての効果を奏することができる。但し、全ての構成要素を必ずしも備える必要はない。
【図面の簡単な説明】
【０２４１】
【図１】複合装置の全体斜視図である。
【図２】複合装置の構成のブロック図である。
【図３】プリンタ部の説明図である。
【図４】スキャナ部の説明図である。
【図５】パネル部の説明図である。
【図６】コントローラ６０の構成の説明図である。
【図７】図７Ａ〜図７Ｅは、ＪＰＥＧデコードユニット７２の出力の説明図の説明図である。
【図８】ピクセル化ユニット７３の機能の説明図である。
【図９】図９Ａ〜図９Ｄは、ピクセル化ユニット７３の出力順の説明図である。
【図１０】図１０Ａ〜図１０Ｃは、４４４形式の間引き処理の説明図である。図１０Ａは１／２間引き処理の説明図であり、図１０Ｂは１／４間引き処理の説明図であり、図１０Ｃは１／８間引き処理の説明図である。
【図１１】図１１Ａ〜図１１Ｃは、４２２形式の間引き処理の説明図である。図１１Ａは１／２間引き処理の説明図であり、図１１Ｂは１／４間引き処理の説明図であり、図１１Ｃは１／８間引き処理の説明図である。
【図１２】図１２Ａ〜図１２Ｃは、Ｖ４２２形式の間引き処理の説明図である。図１２Ａは１／２間引き処理の説明図であり、図１２Ｂは１／４間引き処理の説明図であり、図１２Ｃは１／８間引き処理の説明図である。
【図１３】図１３Ａ〜図１３Ｃは、４２０形式の間引き処理の説明図である。図１３Ａは１／２間引き処理の説明図であり、図１３Ｂは１／４間引き処理の説明図であり、図１３Ｃは１／８間引き処理の説明図である。
【図１４】図１４Ａ〜図１４Ｄは、回転後の画像データの説明図である。
【図１５】図１５Ａ及び図１５Ｂは、回転後の画像の画素と、その画素に対応する画素データの格納されるアドレスの先頭アドレスとの関係の説明図である。
【図１６】並び替えユニット７５の構成のブロック図である。
【図１７】アドレス生成部７５４の構成の説明図である。
【図１８】図１８Ａ〜図１８Ｄは、データ形式が４４４形式又は４２２形式の場合におけるカウント条件の説明図である。
【図１９Ａ】データ形式が４４４形式又は４２２形式の場合であって、回転量が０°の場合におけるアドレス生成部の動作の説明図である。
【図１９Ｂ】データ形式が４４４形式又は４２２形式の場合であって、回転量が９０°の場合におけるアドレス生成部の動作の説明図である。
【図２０Ａ】データ形式が４４４形式又は４２２形式の場合であって、回転量が０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【図２０Ｂ】データ形式が４４４形式又は４２２形式の場合であって、回転量が９０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【図２０Ｃ】データ形式が４４４形式又は４２２形式の場合であって、回転量が１８０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【図２０Ｄ】データ形式が４４４形式又は４２２形式の場合であって、回転量が２７０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【図２１】回転量が０°及び１８０°の場合におけるアドレス生成部の各カウンタのカウント値とアドレス生成対象画素との関係の説明図である。
【図２２】回転量が９０°及び２７０°の場合におけるアドレス生成部の各カウンタのカウント値とアドレス生成対象画素との関係の説明図である。
【図２３】図２３Ａ〜図２３Ｄは、データ形式がＶ４２２形式の場合におけるカウント条件の説明図である。
【図２４】データ形式がＶ４２２形式の場合であって、回転量が０°の場合におけるアドレス生成部の動作の説明図である。
【図２５】データ形式がＶ４２２形式の場合であって、回転量が０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【図２６】図２６Ａ〜図２６Ｄは、データ形式が４２０形式の場合におけるカウント条件の説明図である。
【図２７】データ形式が４２０形式の場合であって、回転量が０°の場合におけるアドレス生成部の動作の説明図である。
【図２８】データ形式が４２０形式の場合であって、回転量が０°の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【図２９】図２９Ａ〜図２９Ｄは、データ形式が４４４形式（及び４２２形式）であって回転量が０°の場合におけるカウント条件の説明図である。
【図３０Ａ】間引き量が１／２の場合におけるアドレス生成部の動作の説明図である。
【図３０Ｂ】間引き量が１／４の場合におけるアドレス生成部の動作の説明図である。
【図３０Ｃ】間引き量が１／８の場合におけるアドレス生成部の動作の説明図である。
【図３１Ａ】間引き量が１／２の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【図３１Ｂ】間引き量が１／４の場合におけるアドレス生成部の各カウンタのカウント値のタイミングチャートである。
【図３２】図３２Ａは、間引き量が１／２の場合におけるアドレス生成部の各カウンタのカウント値とアドレス生成対象画素との関係の説明図である。図３２Ｂは、間引き量が１／４の場合におけるアドレス生成部の各カウンタのカウント値とアドレス生成対象画素との関係の説明図である。
【図３３】図３３Ａ〜図３３Ｄは、データ形式が４４４形式（及び４２２形式）であって回転量が９０°の場合におけるカウント条件の説明図である。
【図３４】図３４Ａ〜図３４Ｄは、データ形式がＶ４２２形式であって回転量が０°の場合におけるカウント条件の説明図である。
【符号の説明】
【０２４２】
１  複合装置、１Ａ  上部収容部、１Ｂ  下部収容部、３  コンピュータ、
１０  スキャナ部、１１  上蓋、１１Ａ  原稿マット、１２  原稿台ガラス、
２０  プリンタ部、２１  キャリッジ、２２  背面給紙口、２３  前面給紙口、
２４  排紙トレイ、２５  インクカートリッジカバー、２６  インクカートリッジ、
３０  カードリーダ部、
４０  パネル部、４１  液晶ディスプレイ、４２  電源ボタン、４３  設定ボタン、
４４  ストップボタン、４５  モード選択ボタン、４６  カーソル操作ボタン群、
４７  スタートボタン、４７Ｃ  カラーボタン、４７Ｂ  モノクロボタン、
４５  モード選択ボタン、
６０  コントローラ、
６１  ＣＰＵ、６２  ＲＯＭ、６３  ＳＤＲＡＭ、６４  カードＡＳＩＣ、
７０  制御ＡＳＩＣ、７１  ＵＳＢインターフェイスユニット、
７２  ＪＰＥＧデコードユニット、７３  ピクセル化ユニット、
７４  色変換ユニット、７５  並び替えユニット、
７５１  セレクタ、７５２  データレジスタ、７５３  指示部、
７５４  アドレス生成部、７５５  ＳＤＲＡＭインターフェイス、
７６  バスコントロールユニット、
８１  印刷データ生成ユニット、８２  スキャナコントロールユニット、
８３  プリンタコントロールユニット、８４  ディスプレイコントロールユニット、
８６  ＳＤＲＡＭコントローラ、９０  ＳＤＲＡＭ、
１０１  Ｘカウンタ、１０２  Ｙカウンタ、１０３  ＸＭＣＵカウンタ、
１０４  ＹＭＣＵカウンタ、１０５  ＰＸ算出部、１０６  ＰＹ算出部、
１０７  ＢＸ算出部、１０８  ＢＹ算出部、１０９  加算器、
１１０Ａ〜１１０Ｄ  アップダウンセレクタ、
１１２  Ｖカウンタ、１１３  Ｈカウンタ
【図１】
0004687511.tif 000002
【図２】
0004687511.tif 000003
【図３】
0004687511.tif 000004
【図４】
0004687511.tif 000005
【図５】
0004687511.tif 000006
【図６】
0004687511.tif 000007
【図７】
0004687511.tif 000008
【図８】
0004687511.tif 000009
【図９】
0004687511.tif 000010
【図１０】
0004687511.tif 000011
【図１１】
0004687511.tif 000012
【図１２】
0004687511.tif 000013
【図１３】
0004687511.tif 000014
【図１４】
0004687511.tif 000015
【図１５】
0004687511.tif 000016
【図１６】
0004687511.tif 000017
【図１７】
0004687511.tif 000018
【図１８】
0004687511.tif 000019
【図１９Ａ】
0004687511.tif 000020
【図１９Ｂ】
0004687511.tif 000021
【図２０Ａ】
0004687511.tif 000022
【図２０Ｂ】
0004687511.tif 000023
【図２０Ｃ】
0004687511.tif 000024
【図２０Ｄ】
0004687511.tif 000025
【図２１】
0004687511.tif 000026
【図２２】
0004687511.tif 000027
【図２３】
0004687511.tif 000028
【図２４】
0004687511.tif 000029
【図２５】
0004687511.tif 000030
【図２６】
0004687511.tif 000031
【図２７】
0004687511.tif 000032
【図２８】
0004687511.tif 000033
【図２９】
0004687511.tif 000034
【図３０Ａ】
0004687511.tif 000035
【図３０Ｂ】
0004687511.tif 000036
【図３０Ｃ】
0004687511.tif 000037
【図３１Ａ】
0004687511.tif 000038
【図３１Ｂ】
0004687511.tif 000039
【図３２】
0004687511.tif 000040
【図３３】
0004687511.tif 000041
【図３４】
0004687511.tif 000042