(57)【特許請求の範囲】
【請求項１】
入力される画像データに対して９０度の整数倍の角度での回転処理を行ってページメモリに書き込む画像処理装置において、
入力画像のサイズおよび回転角度を設定する動作制御手段と、
入力された画像データを、前記ページメモリのワード単位に応じた所定の走査ライン分ずつ一時的に保持して出力するバッファメモリと、
前記動作制御手段によって設定された前記入力画像データの境界が、主走査方向およびライン方向において前記ページメモリのワードの区切りに一致するように、前記入力画像データに対し必要数に応じた所定のデータを挿入し、かつ、その挿入位置が前記動作制御手段の設定した回転角度に対応する位置になるように制御するデータ挿入手段と、
前記バッファメモリから読み出された前記入力画像および前記所定のデータを並び替えることによって回転処理を行う画像回転処理手段と、
前記所定のデータおよび前記入力画像を、前記動作制御手段によって設定されたサイズおよび回転角度に応じて前記バッファメモリへ書き込むとともに、読み出すバッファメモリ制御手段と、
前記回転処理手段によって回転処理された前記入力画像を順次読み出して前記ページメモリ上に展開するメモリ制御手段とを備え、
前記メモリ制御手段は、合成またはＮアップといった編集処理を行う場合に、前記画像回転処理手段の処理結果中、前記所定のデータをページメモリに出力しない制御を行う出力データ制御手段を備えることを特徴とする画像処理装置。
【請求項２】
前記メモリ制御手段は、前記画像回転処理手段の処理結果中、前記所定のデータと前記入力画像とが混在しているワードについては、前記ページメモリの対応する位置にあるもとのデータを一旦読み出し、前記所定のデータを、この所定のデータと同一画素位置の前記もとのデータと入れ替えて書き込むことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記ページメモリとして、画素単位でデータの書き込み、および読み出しができるものを用い、
前記メモリ制御手段は、前記所定のデータが含まれるワードを前記ページメモリに展開するときに、前記所定のデータを除去してから展開することを特徴とする請求項１記載の画像処理装置。
【請求項４】
入力される画像データに対して９０度の整数倍の角度での回転処理を行ってページメモリに書き込む画像処理装置によって実行される画像処理方法であって、
入力画像のサイズおよび回転角度を設定するステップと、
入力された画像データを、その入力画像データの境界が主走査方向およびライン方向において前記ページメモリのワードの区切りに一致するように、その入力画像データに対し必要数に応じた所定のデータを、設定された回転角度に対応する挿入位置に挿入するステップと、
前記入力画像データ及び前記所定のデータを、ワード単位に応じた所定の走査ライン分ずつ、設定されたサイズおよび回転角度に応じて前記バッファメモリへ書き込み、読み出すステップと、
前記バッファメモリから読み出された前記入力画像データおよび前記所定のデータを並び替えることによって回転処理を行うステップと、
回転処理された前記入力画像データを順次読み出して前記ページメモリ上に展開すると共に、合成またはＮアップといった編集処理を行う場合には、前記回転処理の結果中、前記所定のデータを前記ページメモリに出力しない展開ステップと
を備えることを特徴とする画像処理方法。
【請求項５】
前記展開ステップにおいて、前記回転処理の結果中、前記所定のデータと前記入力画像とが混在しているワードについては、前記ページメモリの対応する位置にあるもとのデータを一旦読み出し、前記所定のデータを、この所定のデータと同一画素位置の前記もとのデータと入れ替えて書き込むことを特徴とする請求項４記載の画像処理方法。
【請求項６】
前記ページメモリとして、画素単位でデータの書き込み、および読み出しができるものを用い、
前記展開ステップにおいて、前記所定のデータが含まれるワードを前記ページメモリに展開するときに、前記所定のデータを除去してから展開することを特徴とする請求項４記載の画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、入力された画像データに対して、０度、９０度、１８０度、２７０度のいずれか指定された角度での回転処理を施し、回転処理後の画像データを出力する画像処理装置に関する。
【０００２】
【従来の技術】
従来、入力された画像データに対して９０度の整数倍の角度での回転処理を実行する装置として、特開平７−１２１６９３号公報にて開示されているものがある。図１９はその概略構成を示す図である。
【０００３】
ここでは、順次入力される画像データ１を、１画素当たりのビット幅Ｎ（以下、画像構造という）と、ページメモリ３００の１ワードのビット幅Ｍによって規定される（Ｍ／Ｎ）ライン分のデータを１つのブロックとし、そのブロック単位でバッファメモリ２２０に対して書き込み及び読み出しを行う。
そして、バッファメモリ２２０に書き込まれた１ブロック分の画像データを、回転角度に応じてバッファメモリ制御手段２１０で生成される読み出しアドレスから順次読み出し、読み出した画像データを画像回転処理手段２３０にて並びかえて、指定された角度で回転処理されたページメモリ３００の１ワード分の画像データを生成する。そして、その生成された回転処理後の画像データ５を回転角度に応じて算出されるページメモリ３００のアドレスに書き込む。これにより、順次入力された画像データ１に対して、指示された回転処理を施した画像がページメモリ３００に展開される。
【０００４】
さらに、図１９に示す装置においては、画像構造の異なる複数種類の画像データに対して、一つの画像処理装置で回転処理を行うことを可能とするために、次のような特徴を有している。すなわち、図１９に示す装置においては、１画素当たりＮビット（Ｎは１以上の整数）のデータを有する画像データを回転して、Ｍビット（ＭはＮ以上の整数）単位にアクセス可能なページメモリ３００に出力するために、Ｗビット単位（ＷはＮ≦Ｗ≦Ｍを満たす整数）にアクセス可能なバッファメモリ２２０と、（Ｍ／Ｎ）ライン分の画像データを単位として順次入力すると共に、画像サイズ情報に基づいて所定順のアドレスを順次生成し、入力した画像データを（Ｗ／Ｎ）画素毎に順次前記バッファメモリ２２０に書き込む制御手段と、前記バッファメモリ２２０に記憶された（Ｍ／Ｎ）ライン分の画像データを順次読み出す制御を行うバッファメモリ制御手段２１０と、バッファメモリ２２０より順次読み出されたＭ個のデータから、回転角度及び１画素当たりのビット数Ｎに基づいて、Ｍビットのデータを（Ｗ／Ｎ）個生成する画像回転処理手段２３０と、回転角度に応じたアドレスを順次生成し、前記画像回転処理手段２３０にて生成された（Ｗ／Ｎ）個のデータをページメモリ３００の各々対応するアドレスへ出力するメモリ制御手段２４０を備えている。
【０００５】
また、特開平６−２５３１２９号公報には、入力画像データを９０度単位に回転処理して出力装置に出力する画像回転処理装置が示されている。図２０はその概略構成を示す図である。
【０００６】
図２０に示す装置においては、順次入力される画像データを、所定のブロック単位にブロック行（Ｒ）とブロック列（Ｃ）に分割し、Ｒ×Ｃ個のブロックデータとしてをページメモリ５４１に記憶する。そして、９０度単位の回転後に出力装置６００の最初の主走査方向となるブロックデータ、すなわち回転後のブロック行にあたるブロックデータを順次読み出し、読み出されたブロックデータを分割回転部５３０によって回転処理し、出力装置６００の１ブロック行分のデータとしてバッファメモリ５４２に記憶する。バッファメモリ５４２は少なくとも１ブロック行分記憶することができる容量を有している。そして、記憶された１ブロック行分のブロックデータを出力制御部５５０によって出力する。ここで、入力画像データをブロック単位で分割したときに残余の部分データが生じる場合は、残余の部分データが分割回転部５３０による回転処理後の最後のブロック行およびブロック列となるように回転前補完部５１０によってデータの挿入を行い、このような処理をした後にページメモリ５４１に記憶する。
【０００７】
【発明が解決しようとする課題】
しかしながら、上記従来例においては、以下に示すような問題点がある。
特開平７−１２１６９３号公報に示されるものにおいては、回転処理可能な入力画像データのサイズが、１画素あたりのビット幅及びページメモリのアクセス単位によって規定されてしまう。例えば、１画素当たりのビット幅がＮビット、ページメモリのアクセス単位がＭビットとすると、入力画像データの主走査方向の画素数及び副走査方向のライン数はそれぞれ（Ｍ／Ｎ）の倍数でなければならない。
また、回転処理後の画像データをページメモリに書き込むにあたり、ページメモリのアクセス単位である１ワード中に複数画素が含まれる場合には、画素単位でページメモリの任意のアドレスに書き込むことができない。
【０００８】
特開平６−２５３１２９号公報に示されるものにおいては、入力画像データをページメモリに記憶する際、データの挿入を行うために以下のような欠点がある。
▲１▼画像データの入力を開始する時点で回転角度が決定していなければならない。
▲２▼既にページメモリに記憶されている画像データを回転する場合は、特開平７−１２１６９３号公報に示されるものと同様に回転処理可能な入力画像データのサイズが制限されてしまう。
【０００９】
また、挿入されたデータを除去する手段を持たないため、例えば、回転処理後の画像データを既にページメモリ上に展開されている画像データと合成する、あるいは、１枚の用紙上に複数の入力原稿を再配置する（以下Ｎアップという）といった編集処理を行う場合に、挿入したデータによって既に展開されている画像データを書きつぶしてしまうという問題がある。
【００１０】
本発明は係る問題点に鑑みてなされたものであり、入力画像データを所定のブロックサイズを単位として回転処理する装置において、任意サイズの画像データの回転処理を可能とし、また、既にページメモリに記憶された画像データを回転処理する場合にも、指定された回転角度に応じたデータの挿入が可能な画像処理装置を提供することを目的とする。
また、合成あるいはＮアップといった編集処理を行う場合に挿入データによるページメモリ上の画像データの書きつぶしを防ぐことが可能な画像処理装置を提供することを目的とする。さらに、回転処理後の画像データを画素単位でページメモリの任意のアドレスに書き込むことが可能な画像処理装置を提供することを目的とするものである。
【００１１】
【課題を解決するための手段】
上述した問題点を解決するために、この発明は入力される画像データに対して９０度の整数倍の角度での回転処理を行ってページメモリに書き込む画像処理装置において、入力画像のサイズおよび回転角度を設定する動作制御手段と、入力された画像データを、前記ページメモリのワード単位に応じた所定の走査ライン分ずつ一時的に保持して出力するバッファメモリと、前記動作制御手段によって設定された前記入力画像データの境界が、主走査方向およびライン方向において前記ページメモリのワードの区切りに一致するように、前記入力画像データに対し必要数に応じた所定のデータを挿入し、かつ、その挿入位置が前記動作制御手段の設定した回転角度に対応する位置になるように制御するデータ挿入手段と、前記所定のデータおよび前記入力画像を、前記動作制御手段によって設定されたサイズおよび回転角度に応じて前記バッファメモリに書き込んで読み出すバッファメモリ制御手段と、前記バッファメモリから読み出された前記入力画像および前記所定のデータを並び替えることによって回転処理を行う画像回転処理手段と、前記回転処理手段によって回転処理された前記入力画像を順次読み出して前記ページメモリ上に展開するメモリ制御手段を具備することを特徴としている。
【００１２】
【発明の実施の形態】
（１）実施形態の構成
次に図面を参照して本発明の実施形態について説明する。以下に説明する実施形態においては、入力画像データの画像構造を１画素当たりの情報ビット数Ｎ（ビット／ピクセル）、バッファメモリのアクセス単位であるワード幅をＷ（ビット）、ページメモリのアクセス単位であるワード幅をＭ（ビット）とする。また、Ｎｘは入力画像データの主走査方向の画素数とする。
【００１３】
（１−１）実施形態の全体構成
図１は本実施形態にかかる画像処理装置の構成を示すブロック図である。１００は動作制御手段であり、画像回転処理を行うために必要な各種の設定を行う。すなわち、入力サイズ情報Ｓ２、回転角度情報Ｓ３、回転処理後の画像データを出力するページメモリの始点アドレス情報Ｓ４などを設定する。ここで、入力サイズ情報Ｓ２は回転処理の対象となる画像データのサイズである。画像データのサイズは主走査方向・副走査方向共に任意のサイズが指定可能であり、いずれも（Ｍ／Ｎ）の倍数である必要はない。
【００１４】
２００は画像回転処理装置であり、入力される画像データＳ１に対して回転処理を行うものである。回転処理を行う動作モードは、動作制御手段１００によって定められる。３００はページメモリであり、回転処理の対象となる画像データが記憶されるとともに、回転処理後の画像データの出力先となる。
【００１５】
（１−２）画像回転処理装置２００の構成
次に、画像回転処理装置２００の構成を説明する。図１に示すように画像回転処理装置２００は、バッファメモリ制御手段２１０、バッファメモリ２２０、画像回転処理手段２３０、およびメモリ制御手段２４０とから構成される。
【００１６】
（１−２−１）バッファメモリ制御手段２１０の構成
バッファメモリ制御手段２１０には、バッファメモリ書き込みアドレス生成部と、バッファメモリ読み出しアドレス生成部が設けられている。なお、バッファメモリ書き込みアドレス生成部とバッファメモリ読み出しアドレス生成部は一つの回路によって構成されており、書き込みアドレス生成時にはバッファメモリ書き込みアドレス生成部として使用され、読み出しアドレス生成時にはバッファメモリ読み出しアドレス生成部としてし使用される。さらに、バッファメモリ制御手段２１０には、データ挿入手段２１１が設けられいる。データ挿入手段２１１は、入力サイズ情報Ｓ２が（Ｍ／Ｎ）の倍数でない場合に、（Ｍ／Ｎ）の倍数に満たない分だけ所定のデータを挿入しバッファメモリ２２０に書き込み処理を行うものである。
【００１７】
▲１▼バッファメモリ書き込みアドレス生成部の構成
図２はバッファメモリ書き込みアドレス生成部の構成例を示す図である。なお、図示する回路は書き込みアドレス生成の際使用される部分を抽出したものである。
バッファメモリ書き込みアドレス生成部は、画素数カウンタ２１２と、ライン数カウンタ２１３、マルチプレクサ２１４から構成される。画素数カウンタ２１２はバッファメモリ２２０に書き込む画像データの１ライン中のワード数を計数し、ライン数カウンタ２１３は入力されたライン数を計数する。マルチプレクサ２１４は、画素数カウンタ２１２とライン数カウンタ２１３の出力値を基にバッファメモリ書き込みアドレスを生成するものである。なお、本実施形態では画素数カウンタ及びライン数カウンタをダウンカウンタで構成しているが、アップカウンタを用いてもよい。
【００１８】
▲２▼バッファメモリ読み出しアドレス生成部の構成
図３はバッファメモリ読み出しアドレス生成部の構成例を示す図である。なお、図示する回路は読み出しアドレス生成の際使用される部分を抽出したものである。バッファメモリ読み出しアドレス生成部は画素数カウンタ２１２と、ライン数カウンタ２１３、マルチプレクサ２１４、セレクタ２１６、セレクタ２１７とから構成される。画素数カウンタ２１２はバッファメモリ２２０から読み出す画像データの１ライン中のワード数を計数し、ライン数カウンタ２１３は読み出されたライン数を計数するものである。マルチプレクサ２１４は、画素数カウンタ２１２とライン数カウンタ２１３の出力値を基にバッファメモリ読み出しアドレスを生成するものである。また、セレクタ２１６は画素数カウンタ２１２のカウントを制御し、セレクタ２１７はライン数カウンタ２１３のカウントを制御する。
【００１９】
（１−２−２）バッファメモリ２２０の構成
バッファメモリ２２０は、入力画像データの１画素当たりの情報ビット数（Ｎビット）とページメモリ３００のワード幅（Ｍビット）に対応して、（Ｍ／Ｎ）ライン分の入力画像データを格納可能な容量を備えている。バッファメモリ２２０への画像データの書き込み処理と読み出し処理は、バッファメモリ制御手段２１０によって交互に切り替えられる。
【００２０】
（１−２−３）画像回転処理手段２３０の構成
画像回転処理手段２３０は、回転角度情報Ｓ３に基づいて、バッファメモリ２２０から読み出した画像データの並べ替えを行い、指定された回転角度で回転処理された１ワード分の画像データを順次生成するものである。ここで、図４は画像回転処理手段２２０の構成例を示す図である。この図に示すように、画像回転処理手段２３０は、セレクタ２１７と並べ替え用バッファ２１８とから構成される。
【００２１】
（１−２−４）メモリ制御手段２４０の構成
メモリ制御手段２４０はページメモリ書き込みアドレスを算出する。ページメモリ書き込みアドレスとは、画像回転処理手段２３０によって生成された画像データをページメモリ３００へ書き込む際のアドレスである。また、メモリ制御手段２４０には、データ制御手段２４１が設けられている。データ制御手段２４１は、入力サイズ情報Ｓ２が（Ｍ／Ｎ）の倍数でない場合の出力を制御するものである。
【００２２】
（２）実施形態の動作
次に上述した構成による画像処理装置の動作を説明する。本実施形態の動作の概略は次の通りである。まず、ページメモリ３００に記憶された回転処理の対象となる画像データＳ１は、図示しない画像入力要求信号と画像入力許可信号のハンドシェイク制御によって、画像回転処理装置２００に入力される。画像回転処理装置２００は、画像データへの回転処理を施した後ページメモリ３００へ回転処理後の画像データを出力する。この画像データの出力は、ページメモリ書き込み要求信号とページメモリ書き込み許可信号のハンドシェイク制御によって行われる。
【００２３】
以下、画像回転処理装置２００の各部の動作を説明する。画像回転処理装置２００での回転処理はブロック単位で行われ、１ブロックは（Ｎｘ／（Ｗ／Ｎ））ビット×（Ｍ／Ｎ）ライン分の画像データにより構成される。
まず、バッファメモリ制御手段２１０には、動作制御手段１００によって設定された入力サイズ情報Ｓ２、回転角度情報Ｓ３、始点アドレス情報Ｓ４が入力される。
次に、画像データＳ１が画像回転処理装置２００に入力されると、バッファメモリ制御手段２１０は１ブロック分のデータをバッファメモリ２２０に書き込む処理を行う。そして、書き込みが終了すると、バッファメモリ制御手段２１０は書き込んだ１ブロック分のデータの読み出し処理を行なう。バッファメモリ２２０からの読み出しが終了すると、読み出した１ブロック分の画像データが画像回転処理手段２３０に出力される。画像回転処理手段２３０は画像データの並べ替えを行い、指定された回転角度で処理された１ブロック分の画像データを生成し、メモリ制御手段２４０に出力する。メモリ制御手段２４０は、出力先であるページメモリ３００における書き込みアドレスを生成し、回転処理された１ブロック分の画像データの書き込みアドレスを指定する。画像データＳ１の全てのブロックの画像データ処理が終了するまで、これらの動作が繰り返される。
【００２４】
（２−１）バッファメモリ制御手段２１０の動作
バッファメモリ制御手段２１０は、上述のように入力サイズ情報Ｓ２に基づいてバッファメモリ書き込みアドレス制御を行い、画像データＳ１をバッファメモリ２２０に書き込む処理を行う。そして、１ブロック分のデータの書き込みが終了するとバッファメモリ制御手段２１０は、書き込んだ１ブロック分のデータの読み出し処理を行なう。読み出し処理は、入力サイズ情報Ｓ２と、回転角度情報Ｓ３に基づいて、バッファメモリ読み出しアドレスを制御することにより行われる。
【００２５】
バッファメモリ制御手段２１０は、１ブロックの読み出し処理が終了すると次のブロックの書き込み処理を開始する。このように、バッファメモリ制御手段２１０は書き込みと読み出しを交互に行なう。
なお実施例の動作を説明するにあたり、簡単化のためにページメモリのアクセス単位であるワード幅Ｍ＝３２とし、１画素当たりの情報ビット数Ｎ＝１、バッファメモリのアクセス単位であるワード幅Ｗ＝８とする。
【００２６】
（２−１−１）バッファメモリ２２０への書き込み処理
以下、図２と図５を参照してバッファメモリ２２０への画像データの書き込み処理の説明を行う。図５はバッファメモリ書き込みアドレスの発生順序を模式的に示す図である。なお、図５においてアドレスは（Ｙ：Ｘ）で表され、Ｘ方向は主走査方向アドレスを示し、Ｙ方向はライン方向アドレスを示す。
ここで、画像データＳ１の画像サイズが（Ｍ／Ｎ）＝３２の倍数ある場合は、１ブロックを（Ｎｘ／（Ｗ／Ｎ））ビット×（Ｍ／Ｎ）＝（Ｎｘ／８）ビット×３２ラインとして書き込みむ。３２の倍数でない場合は、バッファメモリ２２０への画像データを書き込む際に３２の倍数に満たない分だけ所定のデータの挿入を行なうことにより、画像データＳ１の画像サイズが３２の倍数であった場合と同様のブロック単位での処理を可能とする。以下これらの処理について詳述する。
【００２７】
▲１▼入力画像サイズが３２の倍数である場合の動作
まず入力サイズ情報Ｓ２が、主走査方向及び副走査方向共に３２の倍数である場合の動作を説明する。
バッファメモリ書き込みアドレス生成部（図２参照）は、バッファメモリ書き込みアドレスの際に次のように動作する。まず、画素数カウンタ２１２には主走査方向のワード数（Ｎｘ／８）から１を引いた値がロードされ、ライン数カウンタ２１３には１ブロックのライン数である３２から１を引いた値（３１）がロードされる。そして書き込み許可信号がイネーブル状態になると、画素数カウンタ２１２がカウント許可状態になり、入力される書き込みクロック信号のパルス入力により画素数カウンタ２１２がカウントダウンされる。その後（主走査方向のワード数−１）個の書き込みクロック信号を計数して画素数カウンタ２１２の値が０になると、画素数カウンタ書き込み終了信号ＲＣ１が出力される。書き込み終了信号ＲＣ１が出力されると、ライン数カウンタ２１３のカウント値がダウンカウントされると共に、画素数カウンタ２１２に主走査方向のワード数（Ｎｘ／８）から１を引いた値が再びロードされる。
【００２８】
以上の動作が繰り返し行われ、画素数カウンタ２１２およびライン数カウンタ２１３のカウント値が共に０になると、画素数カウンタ２１２の書き込み終了信号ＲＣ１及びライン数カウンタ２１３の書き込み終了信号ＲＣ２が出力され、これによってバッファメモリ書き込み終了信号が出力される。
【００２９】
具体的には、バッファメモリ読み出しアドレスは、図５におけるスタート（Ｓｔａｒｔ）で示す位置からエンド（Ｅｎｄ）で示す位置まで図の実線で示すように生成される。すなわち、読み出しが開始されるスタート位置のアドレスは（３１：Ｎｘ／８−１）であり、そこから画素数カウンタ２１２のカウント値を１づつ減少させ（３１：０）まで生成する。次に、ライン数カウンタ２１３のカウント値を１ダウンカウントした（３０：Ｎｘ／８−１）を始点として、そこから画素数カウンタ２１２のカウント値を１づつ減少させ（３０：０）まで生成する。以下同様にアドレスを生成し（０：０）までを生成する。
この書き込みアドレスは、回転角度によらず全ての場合において図５に示される順序で生成される。この場合、バッファメモリ２２０に書き込まれる画像データの単位は、（Ｎｘ／８）バイト×３２ライン分の画像データを１ブロックとして扱う。
【００３０】
▲２▼入力画像サイズが３２の倍数でない場合の動作
次に、入力サイズ情報Ｓ２が３２の倍数ではない場合の動作について説明する。
バッファメモリ制御手段２１０内のデータ挿入手段２１１は、バッファメモリ２２０への画像データＳ１の書き込み処理を行う際に、３２の倍数に満たない分だけ所定のデータを挿入する。
【００３１】
以下、図６、図７、図８、図９を用いてデータ挿入手段２１１による画像回転角度に応じたデータの挿入処理の動作の説明を行なう。図６は回転角度が０度の場合であり、図７は回転角度が１８０度の場合、図８は回転角度が９０度の場合、図９は回転角度が２７０度の場合に、それぞれ画像データＳ１に対する所定のデータ挿入位置と、回転後の画像データ中の挿入データの位置を示す図である。なお、図中斜線部分はデータ挿入手段２１１によって挿入されたデータを示す。また、図中ａ及びｂは正の整数である。
【００３２】
データ挿入手段２１１によって挿入されるデータのサイズは各回転角度で同一であり、入力画像サイズ情報Ｓ２の主走査方向のデータサイズが（３２×ａ）ビットより大きく、（３２×（ａ＋１））ビットより小さい場合は、（３２×（ａ＋１））に満たない分のデータ（以下Ａビットという）の挿入を行なう。また、副走査方向のデータサイズが（３２×ｂ）ラインより大きく、（３２×（ｂ＋１））ラインより小さい場合は、（３２×（ｂ＋１））に満たない分のデータ（以下Ｂラインという）の挿入を行なう。
このようにして、バッファメモリ制御手段２１０は、画像データＳ１のサイズを（３２×（ａ＋１）ビット×（３２×（ｂ＋１））ラインとして処理を行なうこととなる。
具体的には、各回転角度により、以下のように所定のデータを挿入する。
【００３３】
回転角度が０度の場合は、図６に示すように主走査方向の後端に所定のデータをＡビット、副走査方向の後端にＢラインの所定のデータを挿入する。
【００３４】
回転角度が１８０度の場合は、図７に示すように主走査方向の先端に所定のデータをＡビットを挿入し、画像データ１はその分だけシフトされる。また、副走査方向の先端に所定のデータをＢライン分挿入した後、入力画像データをバッファメモリ２２０に書き込む。
【００３５】
回転角度が９０度の場合は、図８に示すように主走査方向の後端に所定のデータをＡビット挿入する。また、副走査方向の先端に所定のデータをＢライン分挿入した後、入力画像データをバッファメモリ２２０に書き込む。
回転角度が２７０度の場合は、図９に示すように主走査方向の先端に所定のデータをＡビットを挿入し、画像データ１はその分だけシフトされる。また、副走査方向の後端にＢラインの所定のデータを挿入する。
【００３６】
バッファメモリ書き込みアドレス生成については画像データＳ１の画像サイズが３２の倍数である場合と同様である。但し、バッファメモリ書き込みアドレス生成部の画素数カウンタ２１２は、（（３２×（ａ＋１））／８−１）をロードしてカウント動作を行ない、副走査方向は（（３２×（ｂ＋１））ライン分の処理を行なうこととなる。
【００３７】
（２−１−２）バッファメモリ２２０からの読み出し処理
次に、バッファメモリ２２０からの読み出し処理について説明する。
バッファメモリ書き込みアドレス生成部からバッファメモリ書き込み終了信号が出力されると、バッファメモリ２２０から画像データの読み出しが開始される。バッファメモリ制御手段２１０は、入力サイズ情報Ｓ２と、回転角度情報Ｓ３に基づいて、バッファメモリ読み出しアドレス制御を行う。
以下、図３、図１０、図１１を参照して、バッファメモリ２２０からの画像データの読み出し処理について説明する。図１０は回転角度０度または１８０度の場合のバッファメモリ読み出しアドレスの発生順序を示す図であり、図１１は回転角度９０度または２７０度の場合のバッファメモリ読み出しアドレスの発生順序を示す図である。なお、図１０、図１１においてＸ方向は主走査方向アドレスを示し、Ｙ方向はライン方向アドレスを示す。以下、回転角度別の動作について説明する。
【００３８】
▲１▼回転角度０度または１８０度の場合
始めに、回転角度０度または１８０度の場合の動作を説明する。バッファメモリ読み出しアドレスの発生順序は図１０に示す通りであり、バッファメモリ読み出しアドレス生成部（図３参照）はバッファメモリ読み出しアドレス生成の際に次のように動作する。
図３においてセレクタ２１５は、画素数カウンタ２１２に対して読み出し許可信号を直接出力する。セレクタ２１６は、読み出し許可信号と画素数カウンタ２１２より出力される読み出し終了信号ＲＣ１の論理積をとった信号をライン数カウンタ２１３に対して出力する。従って画素数カウンタ２１２は、読み出し許可信号がイネーブル状態になれば読み出しクロック信号のパルス入力によりカウント動作を行う。一方ライン数カウンタ２１３は、読み出し許可信号と読み出し終了信号ＲＣ１が共にイネーブル状態にある期間中のみ読み出しクロック信号のパルス入力によりカウント動作を行う。
【００３９】
バッファメモリ２２０からの画像データの読み出し処理が開始されると、画素数カウンタ２１２には主走査方向のワード数（Ｎｘ／８）から１を引いた値がロードされ、ライン数カウンタ２１３には１ブロックのライン数である３２から１を引いた値（３１）がロードされる。そして読み出し許可信号がイネーブル状態になると、画素数カウンタ２１２がカウント許可状態になり、入力される読み出しクロック信号のパルス入力により画素数カウンタ２１２がカウントダウンされる。その後（主走査方向のワード数−１）個の読み出しクロック信号を計数して画素数カウンタ２１２の値が０になると、画素数カウンタ読み出し終了信号ＲＣ１が出力される。読み出し終了信号ＲＣ１が出力されると、ライン数カウンタ２１３のカウント値がダウンカウントされると共に、画素数カウンタ２１２に主走査方向のワード数（Ｎｘ／８）から１を引いた値が再びロードされる。
【００４０】
以上の動作が繰り返し行われ、画素数カウンタ２１２およびライン数カウンタ２１３のカウント値が共に０になると、画素数カウンタ２１２の読み出し終了信号ＲＣ１及びライン数カウンタ２１３の読み出し終了信号ＲＣ２が出力され、これによってバッファメモリ読み出し終了信号が出力される。
具体的には、バッファメモリ読み出しアドレスは図１０におけるスタート（Ｓｔａｒｔ）で示す位置からエンド（Ｅｎｄ）で示す位置まで図の実線で示すように生成される。すなわち、読み出し読み出しが開始されるスタート位置のアドレスは（３１：Ｎｘ／８−１）であり、そこから画素数カウンタ２１２のカウント値を１づつ減少させ（３１：０）まで生成する。次に、ライン数カウンタ２１３のカウント値を１ダウンカウントした（３０：Ｎｘ／８−１）を始点として、そこから画素数カウンタ２１２のカウント値を１づつ減少させ（３０：０）まで生成する。以下同様にアドレスを生成し（０：０）までを生成する。
なお、回転角度０度または１８０度の場合のバッファメモリ読み出しアドレスの生成順序は図５に示すバッファメモリ書き込みアドレス生成順序と同様である。
【００４１】
▲２▼回転角度９０度または２７０度の場合
次に、回転角度９０度または２７０度の場合の場合の動作を説明する。バッファメモリ読み出しアドレスの発生順序は図１１に示す通りであり、バッファメモリ読み出しアドレス生成部はバッファメモリ読み出しアドレス生成の際に次のように動作する。
図３においてセレクタ２１５は、読み出し許可信号とライン数カウンタより出力される読み出し終了信号ＲＣ２の論理積をとった信号を、画素数カウンタ２１２に対して出力する。セレクタ２１６は、読み出し許可信号をライン数カウンタ２１３に対して直接出力する。従って画素数カウンタ２１２は、読み出し許可信号と読み出し終了信号ＲＣ２が共にイネーブル状態にある期間中のみ読み出しクロック信号のパルス入力によりカウント動作が行われる。一方ライン数カウンタ２１３は、読み出し許可信号がイネーブル状態になれば読み出しクロック信号のパルス入力によりカウント動作が行われる。
【００４２】
バッファメモリ２２０からの画像データの読み出し処理が開始されると、画素数カウンタ２１２には主走査方向のワード数（Ｎｘ／８）から１を引いた値がロードされ、ライン数カウンタ２１３には１ブロックのライン数である３２から１を引いた値（３１）がロードされる。そして読み出し許可信号がイネーブル状態になると、ライン数カウンタ２１２がカウント許可状態になり、入力される読み出しクロック信号のパルス入力によりカウンタがカウントダウンされる。その後（主走査方向のワード数−１）個の読み出しクロック信号を計数してライン数カウンタ２１３の値が０になると、ライン数カウンタ２１３の読み出し終了信号ＲＣ２が出力される。読み出し終了信号ＲＣ２が出力されると、画素数カウンタ２１２のカウント値がダウンカウントされると共に、ライン数カウンタ２１３に１ブロックのライン数である３２から１を引いた値（３１）が再びロードされる。
【００４３】
以上の動作が繰り返し行われ、画素数カウンタ２１２およびライン数カウンタ２１３のカウント値が共に０になると、画素数カウンタ２１２の読み出し終了信号ＲＣ１及びライン数カウンタ２１３の読み出し終了信号ＲＣ２が出力され、これによってバッファメモリ読み出し終了信号が出力される。
具体的には、バッファメモリ読み出しアドレスは図１１におけるスタート（Ｓｔａｒｔ）で示す位置からエンド（Ｅｎｄ）で示す位置まで図の実線で示すように生成される。すなわち、読み出し読み出しが開始されるスタート位置のアドレスは（３１：Ｎｘ／８−１）であり、そこからライン数カウンタ２１３の値を１づつ減少させ（０：Ｎｘ／８−１）まで生成する。次に、画素数カウンタ２１２のカウント値を１ダウンカウントした（３１：Ｎｘ／８−２）を始点として、そこからライン数カウンタ２１３の値を１づつ減少させせ（０：Ｎｘ／８−２）まで生成する。以下同様にアドレスを生成し、（０：０）までを生成する。
バッファメモリ２２０からの画像データの読み出しが終了すると、バッファメモリ制御手段２１０は、読み出した画像データを画像回転処理手段２３０に出力する。
【００４４】
（２−２）画像回転処理手段２３０の動作
次に、画像回転処理手段２３０における画像回転処理について説明する。画像回転処理手段２３０は、動作制御手段１００によって設定された回転角度情報Ｓ３に基づいて、バッファメモリ２２０から読み出した画像データの並べ替えを行ない、指定された回転角度で処理された画像データを順次生成する。ここで、読み出した画像データは、バッファメモリ２２０のアクセス単位であるワード幅Ｗ（＝８）ビットであり、回転処理された画像データは、ページメモリ３００のアクセス単位であるワード幅Ｍ（＝３２）ビットである。
具体的には、バッファメモリ２２０から読み出した８ビットワードデータを、図４に示す並べ替え用バッファ２１８に指定された回転角度に応じて並べ替え、メモリ制御手段２４０に出力する。すなわち、並べ替え用バッファ２１８の１ラインに展開された３２ビットデータがページメモリ３００での１ワードとなる。
【００４５】
画像回転処理手段２３０は、回転角度が０度または１８０度の場合は、バッファメモリ２２０から読み出した８ビットのワードデータ４個を用いて３２ビットのワードデータ１個を生成する。回転角度が９０度または２７０度の場合は、バッファメモリ２２０から読み出した８ビットのワードデータ３２個を用いて３２ビットのワードデータ８個を生成する。
【００４６】
以下、図４、図１２、図１３、図１４、図１５を参照して、各回転角度の場合について、画像回転処理手段２３０における画像データの並べ替え処理について説明する。
ここで、並べ替え用バッファ２１８の１ライン目が１ｓｔＷｏｒｄ、２ライン目が２ｎｄＷｏｒｄ、１ライン目が３ｒｄＷｏｒｄ．．．．となる。また、８ビットワードデータ中の画素データの最上位ビットをＭＳＢと、最下位ビットをＬＳＢとする。また、８ビットワードデータをバッファメモリ２２０より読み出した順に１ｓｔＤａｔａ、２ｎｄＤｔａ、３ｒｄＤａｔａ、４ｔｈＤａｔａ．．．．というものとする。
【００４７】
図１２は回転角度が０度の場合の画像データの並べ替え処理を説明する図である。図示するように、４個の８ビットワードデータを３２ビットワードの上位側から１ｓｔＤａｔａ、２ｎｄＤｔａ、３ｒｄＤａｔａ、４ｔｈＤａｔａの順に並び替え用バッファ２１８に展開する。この場合は、８ビットワードデータ中の画素データの順序は並べ替えない。画像回転処理手段２３０は、ＭＳＢが３２ビットワードの上位側に、ＬＳＢが３２ビットワードの下位側になるように並び替え用バッファ２１８に展開する。
【００４８】
図１３は回転角度が１８０度の場合の画像データの並べ替え処理を説明する図である。図示するように、４個の８ビットワードデータを３２ビットワードの下位側から４ｔｈＤａｔａ、３ｒｄＤａｔａ、２ｎｄＤｔａ、１ｓｔＤａｔａの順に並び替え用バッファ２１８に展開する。この場合は、８ビットワードデータ中で、ＬＳＢが３２ビットワードの上位側に、ＭＳＢが３２ビットワードの下位側となるように画素データの順序の並べ替えを行なうことになる。画像回転処理手段２３０は、画素データの順序の並べ替えを行なった８ビットワードデータを、ＭＳＢが３２ビットワードの下位側に、ＬＳＢ３２ビットワードの上位側になるように並び替え用バッファ２１８に展開する。
【００４９】
図１４は回転角度が９０度の場合の画像データの並べ替え処理を説明する図である。図示するように、３２個の８ビットワードデータを並び替え用バッファ２１８に展開することとなる。すなわち、１ｓｔＷｏｒｄは、８ビットワードデータのＬＳＢを上位から１ｓｔＤａｔａ、２ｎｄＤｔａ、３ｒｄＤａｔａ、４ｔｈＤａｔａ．．．３２ｔｈＤａｔａの順に並べて構成され、８ｔｈＷｏｒｄは、８ビットワードデータのＭＳＢを上位から１ｓｔＤａｔａ、２ｎｄＤｔａ、３ｒｄＤａｔａ、４ｔｈＤａｔａ．．．３２ｔｈＤａｔａの順に並べて構成される。このように並べ替え用バッファ２１８には、３２ビットワードが８個展開されることとなる。画像回転処理手段２３０は、１ｓｔＤａｔａの８ビットの各データを、ＬＳＢを１ｓｔＷｏｒｄの位置に、ＭＳＢを８ｔｈＷｏｒｄの位置になるように順次並び替え用バッファ２１８の最上位に展開する。同様に２ｎｄＤｔａは１ｓｔＤａｔａの次順位に展開され３２ｔｈＤｔａは最下位に展開される。
【００５０】
図１５は回転角度が２７０度の場合の画像データの並べ替え処理を説明する図である。図示するように、３２個の８ビットワードデータを並び替え用バッファ２１８に展開することとなる。すなわち、１ｓｔＷｏｒｄは、８ビットワードデータのＭＳＢを上位から３２ｔｈＤａｔａ、３１ｔｈＤａｔａ．．．３ｒｄＤａｔａ、２ｎｄＤｔａ、１ｓｔＤａｔａの順に並べて構成され、８ｔｈＷｏｒｄは、８ビットワードデータのｌＳＢを上位から３２ｔｈＤａｔａ、３１ｔｈＤａｔａ．．．３ｒｄＤａｔａ、２ｎｄＤｔａ、１ｓｔＤａｔａの順に並べて構成される。画像回転処理手段２３０は、１ｓｔＤａｔａの８ビットの各データを、ＭＳＢを１ｓｔＷｏｒｄの位置に、ＬＳＢを８ｔｈＷｏｒｄの位置になるように順次並び替え用バッファ２１８の最下位に展開する。同様に２ｎｄＤｔａは１ｓｔＤａｔａの次順位に展開され３２ｔｈＤｔａは最上位に展開される。
以上のようにして、画像回転処理手段２３０によって３２ビットの画像データが生成され、メモリ制御手段２４０に出力される。
【００５１】
（２−３）メモリ制御手段２４０の動作
次に、メモリ制御手段２４０の動作について説明する。
メモリ制御手段２４０は、ページメモリ書き込みアドレスを算出する。そして、画像回転処理手段２３０にて生成された画像データがページメモリ３００へすべて出力されることにより、画像回転処理は完了する。ページメモリ３００への回転処理後の画像データの出力は、ページメモリ書き込み要求信号とページメモリ書き込み許可信号のハンドシェイク制御によって行われる。そして、出力された画像データは、ページメモリ書き込みアドレスによって指定されるアドレスに書き込まれる。
【００５２】
図１６はそれぞれの画像回転角度でのページメモリ書き込みアドレスの発生順序を示す図である。ページメモリ書き込みアドレスは動作制御手段１００によって設定される入力サイズ情報Ｓ２と、回転角度情報Ｓ３、及び回転処理後の画像データを出力するページメモリの始点アドレス情報Ｓ４（以下ベースアドレスという）に基づいて算出される。なお図１６において、Ｓを丸で囲んだ記号はベースアドレスを、Ｅを丸で囲んだ記号はページメモリの終点アドレスを示している。また、Ｎｘは入力画像主走査方向の画素数を、Ｎｙ入力画像副走査方向の画素数を示している。
なお、入力画像サイズ情報Ｓ２が３２の倍数でない場合は、回転処理後の画像データには、入力画像データＳ１にはない所定のデータが含まれている。そのため、メモリ制御手段２４０は、所定のデータがページメモリへ書き込まれないようなページメモリ書き込みアドレスを算出することとなる。よって、入力画像サイズが３２の倍数である場合と３２の倍数でない場合に分けて説明する。
【００５３】
▲１▼入力画像サイズが３２の倍数である場合の動作
以下、入力画像サイズ情報Ｓ２が３２の倍数である場合のメモリ制御手段２４０の動作を説明する。メモリ制御手段２４０は、各回転角度におけるページメモリ書き込みアドレスを以下の通り算出する。
回転角度が０度の場合は、主走査方向アドレスを０から（（Ｎｘ／３２）−１）までアップカウントしていき、カウント値が（（Ｎｘ／３２）−１）となったら、主走査方向アドレスを０にリセットすると共に、ライン方向アドレスに（出力用紙主走査方向サイズ／３２）を加算する。以上の動作を主走査方向アドレスが（（Ｎｘ／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｙ−１））となるまで繰り返す。ページメモリ書き込みアドレスとしては、上述の値（主走査方向アドレス＋ライン方向アドレス）にベースアドレスを加えた値を出力する。
【００５４】
回転角度が１８０度の場合は、回転角度が０度の場合と同様の動作を行なうが、ページメモリ書き込みアドレスとしては（主走査方向アドレス＋ライン方向アドレス）の値をベースアドレスから減算した値を出力する。
【００５５】
回転角度が９０度の場合は、ライン方向アドレス０から（（出力用紙主走査方向サイズ／３２）×１）、（（出力用紙主走査方向サイズ／３２）×２）、．．．．．、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））と変化させ、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））となったら、ライン方向アドレスを０にリセットすると共に、主走査方向アドレスをアップカウントする。以上の動作を主走査方向アドレスが（（Ｎｙ／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））となるまで繰り返す。ページメモリ書き込みアドレスとしては、上述の値（ライン方向アドレス−主走査方向アドレス）にベースアドレスを加えた値を出力する。
【００５６】
回転角度が２７０度の場合は、回転角度が９０度の場合と同様の動作を行なうが、ページメモリ書き込みアドレスとしては（ライン方向アドレス−主走査方向アドレス）の値をベースアドレスから減算した値を出力する。
【００５７】
▲２▼入力画像サイズが３２の倍数でない場合の動作
次に、入力画像サイズ情報Ｓ２が３２の倍数ではない場合のメモリ制御手段２４０の動作について説明する。
先に図６、図７、図８、図９で示したように、データ挿入手段２１１は、バッファメモリ２２０への入力画像データＳ１の書き込み処理を行なう際に３２の倍数に満たない分だけ所定のデータを挿入している。この場合メモリ制御手段２４０内のデータ制御手段２４１は、ページメモリ３００に出力するデータの制御を行い、挿入された所定のデータが出力されないように制御を行なう。
以下、各回転角度におけるメモリ制御手段２４０内及びデータ制御手段２４１の動作について説明する。
【００５８】
（イ）回転処理後の画像データの副走査方向に挿入データが含まれている場合
まず、回転処理後の画像データの副走査方向に挿入データが含まれている場合について説明する。副走査方向に挿入データが含まれている場合とは、回転角度が０度または１８０度の場合には、入力画像データＳ１の副走査方向の画素数が３２の倍数ではないときであり、回転角度が９０度または２７０度の場合には、入力画像データＳ１の主走査方向の画素数が３２の倍数ではないときである。ここで、回転処理後の画像データにはＣ（１以上３２未満の整数）ライン分の挿入データが含まれているものとする。
【００５９】
回転角度が０度の場合は、メモリ制御手段２４０は、主走査方向アドレスを０から（（Ｎｘ／３２）−１）までアップカウントしていき、カウント値が（（Ｎｘ／３２）−１）となったら、主走査方向アドレスを０にリセットすると共に、ライン方向アドレスに（出力用紙主走査方向サイズ／３２）を加算する。以上の動作を主走査方向アドレスが（（Ｎｘ／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｙ−１））となるまで繰り返す。データ制御手段２４１は、主走査方向アドレスが（（Ｎｘ／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｙ−１））になると、画像回転処理終了信号を出力し、ページメモリ３００への回転後画像データの出力を停止する。
【００６０】
回転角度が１８０度の場合は、メモリ制御手段２４０は、主走査方向アドレスを０から（（Ｎｘ／３２）−１）までアップカウントしていき、カウント値が（（Ｎｘ／３２）−１）となったら、主走査方向アドレスを０にリセットして、ライン方向アドレスに（出力用紙主走査方向サイズ／３２）を加算すると共に、データ制御手段２４１のライン数カウンタをカウントアップする。そして、データ制御手段２４１は、ライン数カウンタの値が０から（Ｃ−１）の期間中は、ページメモリ３００への回転後画像データの出力を行なわずに画像回転処理手段２３０から出力される回転後画像データを廃棄する。データ制御手段２４１は、ライン数カウンタの値がＣに達した時点でページメモリ３００への出力を開始する。以降、主走査方向アドレスが（（Ｎｘ／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（（Ｎｙ＋Ｃ）−１））となるまでアドレスのカウント動作とページメモリ３００への回転後画像データの出力を繰り返す。
【００６１】
回転角度が９０度の場合は、ライン方向アドレス０から（（出力用紙主走査方向サイズ／３２）×１）、（（出力用紙主走査方向サイズ／３２）×２）、．．．．．、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ＋Ｃ−１））と変化させ、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ＋Ｃ−１））となったら、ライン方向アドレスを０にリセットすると共に、主走査方向アドレスをアップカウントする。データ制御手段２４１は、ライン方向アドレスが０から（Ｃ−１）の期間中は、ページメモリ３００への回転後画像データの出力を行なわずに、画像回転処理手段２３０から出力される回転後画像データを廃棄する。以上の動作を主走査方向アドレスが（（Ｎｙ／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｘ＋Ｃ−１））となるまで繰り返す。回転角度が２７０度の場合は、ライン方向アドレス０から（（出力用紙主走査方向サイズ／３２）×１）、（（出力用紙主走査方向サイズ／３２）×２）、．．．．．、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ＋Ｃ−１））と変化させ、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ＋Ｃ−１））となったら、ライン方向アドレスを０にリセットすると共に、主走査方向アドレスをアップカウントする。データ制御手段２４１は、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×Ｎｘ）以上の期間中は、ページメモリ３００への回転後画像データの出力を行なわずに画像回転処理手段２３０から出力される回転後画像データを廃棄する。以上の動作を主走査方向アドレスが（（Ｎｙ／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｘ＋Ｃ−１））となるまで繰り返す。
【００６２】
（ロ）回転処理後の画像データの主走査方向に挿入データが含まれている場合
次に、回転処理後の画像データの主走査方向に挿入データが含まれている場合について説明する。主走査方向に挿入データが含まれている場合とは、回転角度が０度または１８０度の場合には、入力画像データＳ１の主走査方向の画素数が３２の倍数ではないときであり、回転角度が９０度または２７０度の場合には、入力画像データＳ１の副走査方向の画素数が３２の倍数ではないときである。ここで、回転処理後の画像データにはＤ（１以上３２未満の整数）画素分の挿入データが含まれているものとする。
【００６３】
回転角度が０度の場合は、メモリ制御手段２４０は、主走査方向アドレスを０から（Ｎｘ／３２）（＝（（（Ｎｘ＋Ｄ）／３２）−１）までアップカウントしていき、カウント値が（Ｎｘ／３２）となったら、主走査方向アドレスを０にリセットすると共に、ライン方向アドレスに（出力用紙主走査方向サイズ／３２）を加算する。データ制御手段２４１は、主走査方向アドレスが（Ｎｘ／３２）になると、ページメモリ３００の該当するアドレスに既に存在する画像データを読み出し、回転後画像データ中のＤ画素分の挿入データを読み出した画像データ中の同一画素位置にあるデータと入れ替える処理を行い、入れ替え処理の結果得られた画像データをページメモリ３００の該当するアドレスに書き込む処理を行なう。以上の動作を主走査方向アドレスが（Ｎｘ／３２）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｙ−１））となるまで繰り返す。
【００６４】
回転角度が１８０度の場合は、メモリ制御手段２４０は、主走査方向アドレスを０から（Ｎｘ／３２）までアップカウントしていき、カウント値が（Ｎｘ／３２）となったら、主走査方向アドレスを０にリセットすると共に、ライン方向アドレスに（出力用紙主走査方向サイズ／３２）を加算する。データ制御手段２４１は、主走査方向アドレスが０のときは、ページメモリ３００の該当するアドレスに既に存在する画像データを読み出し、回転後画像データ中のＤ画素分の挿入データを読み出した画像データ中の同一画素位置にあるデータと入れ替える処理を行い、入れ替え処理の結果得られた画像データをページメモリ３００の該当するアドレスに書き込む処理を行なう。以上の動作を主走査方向アドレスが（Ｎｘ／３２）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｙ−１））となるまで繰り返す。
【００６５】
回転角度が９０度の場合は、ライン方向アドレス０から（（出力用紙主走査方向サイズ／３２）×１）、（（出力用紙主走査方向サイズ／３２）×２）、．．．．．、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））と変化させ、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））となったら、ライン方向アドレスを０にリセットすると共に、主走査方向アドレスをアップカウントする。データ制御手段２４１は、主走査方向アドレスが０のときは、ページメモリ３００の該当するアドレスに既に存在する画像データを読み出し、回転後画像データ中のＤ画素分の挿入データを読み出した画像データ中の同一画素位置にあるデータと入れ替える処理を行い、入れ替え処理の結果得られた画像データをページメモリ３００の該当するアドレスに書き込む処理を行なう。以上の動作を主走査方向アドレスが（Ｎｙ／３２）（＝（（（Ｎｙ＋Ｄ）／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））となるまで繰り返す。
【００６６】
回転角度が２７０度の場合は、ライン方向アドレス０から（（出力用紙主走査方向サイズ／３２）×１）、（（出力用紙主走査方向サイズ／３２）×２）、．．．．．、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））と変化させ、（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））となったら、ライン方向アドレスを０にリセットすると共に、主走査方向アドレスをアップカウントする。データ制御手段２４１は、主走査方向アドレスが（Ｎｙ／３２）のときは、ページメモリ３００の該当するアドレスに既に存在する画像データを読み出し、回転後画像データ中のＤ画素分の挿入データを読み出した画像データ中の同一画素位置にあるデータと入れ替える処理を行い、入れ替え処理の結果得られた画像データをページメモリ３００の該当するアドレスに書き込む処理を行なう。以上の動作を主走査方向アドレスが（Ｎｙ／３２）（＝（（（Ｎｙ＋Ｄ）／３２）−１）に、ライン方向アドレスが（（出力用紙主走査方向サイズ／３２）×（Ｎｘ−１））となるまで繰り返す。
以上説明した処理が行われることによって、ページメモリ３００には所望の回転角度だけ回転処理された画像データが展開される。
【００６７】
（２−４）ページメモリ３００の任意のアドレスに回転処理後の画像データを書き込む場合の動作
次に、ページメモリ３００の任意のアドレスに回転処理後の画像データを書き込む場合について説明する。この場合ページメモリ３００は、画素単位でデータの書き込み読み出しが可能なものを用いるものとする。
上述した処理では、ベースアドレス（図１６中ではＳを丸で囲んだ記号）を始点として回転処理された画像データが展開されるため、画素単位では、必ずしもページメモリ３００の任意のアドレスに書き込むことができない。
【００６８】
そこで、ページメモリ３００の任意のアドレスに回転処理後の画像データが展開されるように、入力画像データＳ１を包含する３２（Ｍ／Ｎ：１画素当たりのビット幅Ｎ（１ビット）・ページメモリ３００のアクセス単位Ｍ（３２ビット））の倍数の画像データを想定し、データ挿入手段２１１は、必要に応じて所定のデータを挿入して回転処理をする。そして、メモリ制御手段２４０は、挿入されたデータの部分を除いた有効なデータのみをページメモリ３００に書き込む制御を行う。
【００６９】
図１７は、入力画像データＳ１を回転処理した後、回転処理後の画像データを画素単位でページメモリ３００の任意のアドレスに書き込む処理を模式的に表したものである。また、図１７には、各回転角度における回転処理後画像データを出力するページメモリの始点アドレス情報Ｓ４の指定方法を併せて示している。
【００７０】
まず、図１７を用いて回転処理後の画像データを出力するページメモリの始点のアドレス情報Ｓ４について説明を行なう。回転処理後の画像データを出力するページメモリの始点アドレス情報Ｓ４は、ベースアドレスとオフセットによって指定する。ベースアドレスは、ページメモリ３００のアクセス単位である３２ビットワードのアドレスを表すものである。また、オフセットとは１ワード中の有効データの画素数を示すための数値である。
上述のように、所定のデータを挿入することにより、ページメモリ３００に書き込まれない挿入されたデータと、書き込まれる有効データが含まれているワードが発生する。例えば、図１７において、回転処理後画像データのうち斜線で囲まれた領域は、３２ビットに満たない有効データを示しているが、この斜線で囲まれた領域にまたがるワードは、挿入データと有効データとを含むワードである。
そして、図１７に示すように、回転角度が０度または２７０度の場合は、オフセット分を除いたデータが有効データとなり、１８０度または９０度の場合はオフセット分が有効データとなる。
【００７１】
次に、回転角度毎に挿入データを含む回転処理後の画像データの主走査方向の画像サイズ（以下、Ｓｘと称する）の算出方法を説明する。Ｓｘは、入力画像データＳ１のサイズとオフセットの値によって定まる。
【００７２】
回転角度が０度の場合
オフセット＋（Ｎｘ％３２）≦３２ならば、
Ｓｘ＝（（Ｎｘ／３２）＋１）×３２
オフセット＋（Ｎｘ％３２）＞３２ならば、
Ｓｘ＝（（Ｎｘ／３２）＋２）×３２
回転角度が１８０度の場合
（３２−オフセット）＋（Ｎｘ％３２）≦３２ならば、
Ｓｘ＝（（Ｎｘ／３２）＋１）×３２
（３２−オフセット）＋（Ｎｘ％３２）＞３２ならば、
Ｓｘ＝（（Ｎｘ／３２）＋２）×３２
回転角度が９０度の場合
（３２−オフセット）＋（Ｎｙ％３２）≦３２ならば、
Ｓｘ＝（（Ｎｙ／３２）＋１）×３２
（３２−オフセット）＋（Ｎｙ％３２）＞３２ならば、
Ｓｘ＝（（Ｎｙ／３２）＋２）×３２
回転角度が２７０度の場合
オフセット＋（Ｎｙ％３２）≦３２ならば、
Ｓｘ＝（（Ｎｙ／３２）＋１）×３２
オフセット＋（Ｎｙ％３２）＞３２ならば、
Ｓｘ＝（（Ｎｙ／３２）＋２）×３２
ここで、Ｎｘは入力画像データＳ１の主走査方向の画素数を、Ｎｙは入力画像データＳ１の副走査方向のライン数を示す。ここで、Ｘ％Ｙは剰余演算を示している。また、Ｘ／Ｙの演算結果で小数点以下の値は切り捨てるものとする。
【００７３】
回転処理の動作は、実施例で既に述べた方法と同様であるため、以下回転処理後の画像データを画素単位でページメモリ３００の任意のアドレスに書き込む場合の固有の動作について説明する。具体的には、入力画像データＳ１をバッファメモリ２２０に書き込む際のデータ挿入手段２１１の動作と、回転処理後の画像データをページメモリ３００に書き込む際のデータ制御手段２４１の動作について説明する。
【００７４】
まず、バッファメモリ制御手段２１０には動作制御手段１００によって設定された入力画像サイズ情報Ｓ２と、回転角度情報Ｓ３、及び、回転処理後の画像データを出力するページメモリの始点アドレス情報Ｓ４が入力される。ここで、回転処理後の画像データを出力するページメモリの始点アドレス情報Ｓ４は、図１７に示したように、ページメモリ３００のアクセス単位である３２ビットワードのアドレスを示すベースアドレスと、３２ビットワード中の有効データを示すオフセット（画素数）からなる。
【００７５】
バッファメモリ制御手段２１０は、入力画像サイズ情報Ｓ２と、回転角度情報Ｓ３、及び、回転処理後の画像データを出力するページメモリの始点アドレス情報Ｓ４をもとに、既に述べた方法で、挿入データを含む回転処理後の画像データの主走査方向の画像サイズＳｘを算出する。得られたＳｘの値と、入力画像サイズ情報Ｓ２、回転角度情報Ｓ３、及び、オフセットの値に基づいて、データ挿入手段２１１によるデータの挿入処理を行う。以下、各回転角度におけるデータの挿入処理の動作を説明する。
【００７６】
回転角度が０度の場合は、図１７に示すように主走査方向の先端にオフセット分の所定のデータを挿入し、入力画像データＳ１はその分だけシフトされる。また、１ライン分（Ｎｘ画素）の入力画像データＳ１の処理が完了すると、主走査方向の後端に（Ｓｘ−（Ｎｘ＋オフセット））画素分の所定のデータを挿入する。以上の処理により、バッファメモリ２２０にはＳｘ画素分のデータが書き込まれる。
【００７７】
回転角度が１８０度の場合は、図１７に示すように主走査方向の先端に（３２−オフセット）分の所定のデータを挿入し、入力画像データＳ１はその分だけシフトされる。また、１ライン分（Ｎｘ画素）の入力画像データＳ１の処理が完了すると、主走査方向の後端に（Ｓｘ−（Ｎｘ＋（３２−オフセット）））画素分の所定のデータを挿入する。以上の処理により、バッファメモリ２２０にはＳｘ画素分のデータが書き込まれる。
【００７８】
回転角度が９０度の場合は、図１７に示すように副走査方向の先端に（３２−オフセット）ライン分の所定のデータを挿入し、（３２−オフセット）ライン分のバッファメモリ２２０への書き込みが完了した時点で、入力画像データＳ１のバッファメモリ２２０への書き込み処理が開始される。また、入力画像データＳ１全ての処理が完了すると、副走査方向の後端に（Ｓｘ−（Ｎｙ＋（３２−オフセット）））ライン分の所定のデータを挿入する。以上の処理により、バッファメモリ２２０にはＳｘライン分のデータが書き込まれる。
【００７９】
回転角度が２７０度の場合は、図１７に示すように副走査方向の先端にオフセットライン分の所定のデータを挿入し、オフセットライン分のバッファメモリ２２０への書き込みが完了した時点で、入力画像データＳ１のバッファメモリ２２０への書き込み処理が開始される。また、入力画像データＳ１全ての処理が完了すると、副走査方向の後端に（Ｓｘ−（Ｎｙ＋オフセット））ライン分の所定のデータを挿入する。以上の処理により、バッファメモリ２２０にはＳｘライン分のデータが書き込まれる。
【００８０】
次に、回転処理後の画像データをページメモリ３００に書き込む際のデータ制御手段２４１の動作について説明する。
メモリ制御手段２４０には動作制御手段１００によって設定された入力画像サイズ情報Ｓ２と、回転角度情報Ｓ３、及び、回転処理後の画像データを出力するページメモリの始点アドレス情報Ｓ４が入力される。
動作制御手段１００によって設定された入力画像サイズ情報Ｓ２、及び、３２ビットワード中の有効データを示すオフセットの値に応じて、上述のようにデータ挿入手段２１１による所定のデータの挿入処理が行われる。図１７中の『挿入データ』は、データ挿入手段２１１によって挿入された所定のデータを示している。データ制御手段２１１において、この『挿入データ』を除いた回転後画像データをページメモリ３００に書き込む制御を行う。
【００８１】
図１８は画素単位で書き込み制御が可能なページメモリの構成例を示す概念図である。本実施例では、前述のように１画素当たりのビット幅が１ビットの画像データを扱っている。ここに示されるページメモリは、１回の書き込みアクセスによって３２ビットのワードデータを書き込み可能であり、該当するワードは入力されるアドレス情報によって指定される。ページメモリ書き込み制御信号によって３２ビットのワードデータ中の各ビットに対する書き込み処理の制御が可能であり、いずれのビットに書き込みを行うかはマスク制御信号によって制御される。マスク回路にページメモリ書き込み制御信号とマスク制御信号が入力され、マスク回路において書き込み処理を行うビットを示す書き込みビット指定信号が生成される。書き込みビット指定信号によって、図１８に示すようなマスク領域の指定がおこなわれる。すなわち、
▲１▼３２ビットワードのＭＳＢ側からＸビットだけマスクする。
▲２▼マスクしない（３２ビット全て書き込む）。
▲３▼３２ビットワードのＬＳＢ側からＹビットだけマスクする。
の３通りの指定が行われる。
【００８２】
データ制御手段２４１における、『挿入データ』を除いた回転後画像データのページメモリ３００への書き込み制御について説明する。
ページメモリ３００への書き込みアドレスは、既に述べた通りの方法で算出される３２ビットワードのアドレス情報と、オフセットにより算出されるマスク情報とＭＳＢ側とＬＳＢ側のどちらをマスクするかを示すマスク方向指定信号（ＭＳＢ側をマスクする場合は“１”、ＬＳＢ側をマスクする場合は“０”とする）からなるマスク制御信号によって指定される。以下、回転角度に応じたマスク制御信号の生成方法について説明する。
【００８３】
回転角度が０度の場合、主走査方向アドレスが０のときにマスク情報の値として（オフセット）を、マスク指定方向指定信号として“１”（ＭＳＢ側）を出力し、主走査方向アドレスがＳｘ／３２のときにマスク情報の値として（３２−（Ｓｘ−（Ｎｘ＋オフセット）））を、マスク方向指定信号として“０”（ＬＳＢ側）を出力する。
【００８４】
回転角度が１８０度の場合、主走査方向アドレスが０のときにマスク情報の値として（オフセット）を、マスク指定方向指定信号として“０”（ＬＳＢ側）を出力し、主走査方向アドレスがＳｘ／３２のときにマスク情報の値として（Ｓｘ−（Ｎｘ＋（３２−オフセット）））を、マスク方向指定信号として“１”（ＭＳＢ側）を出力する。
【００８５】
回転角度が９０度の場合、主走査方向アドレスが０のときにマスク情報の値として（オフセット）を、マスク指定方向指定信号として“０”（ＬＳＢ側）を出力し、主走査方向アドレスがＳｘ／３２のときにマスク情報の値として（Ｓｘ−（Ｎｙ＋（３２−オフセット）））を、マスク方向指定信号として“１”（ＭＳＢ側）を出力する。
【００８６】
回転角度が２７０度の場合、主走査方向アドレスが０のときにマスク情報の値として（オフセット）を、マスク指定方向指定信号として“１”（ＭＳＢ側）を出力し、主走査方向アドレスがＳｘ／３２のときにマスク情報の値として（３２−（Ｓｘ−（Ｎｙ＋オフセット）））を、マスク方向指定信号として“０”（ＬＳＢ側）を出力する。
このようにして生成したマスク制御信号のマスク処理を行い、回転処理後の画像データより『挿入データ』を除去した有効画像データがページメモリ上に展開される。
【００８７】
（３）変形例
以上、本発明の一実施例について説明したが、本発明は上記実施例に限定されるものではなく、発明の主旨を変えることなく種々の変形が可能である。
例えば、上記実施例の画像処理装置においては、回転処理可能な入力画像データの画像構造は一種類であるが、同一の画像処理装置で画像構造が異なる複数種類の画像データに対して回転処理を行なうことが可能な構造としてもよい。
【００８８】
また、上記実施例では既にページメモリに記憶された画像データに対して回転処理を行なう場合について説明したが、イメージスキャナ等の画像入力手段より入力される画像データを回転処理するようにしてもよい。
【００８９】
また、上記実施例では一つのバッファメモリを用いて書き込みおよび読み出しを交互に行なうようにしたが、二つのバッファメモリを用いてもよい。この場合、一方のバッファメモリに入力画像データの書き込み処理を行なっている期間は、他方のバッファメモリからの読み出し処理を行なうようにしてもよい。
【００９０】
また、上記実施例では、バッファメモリへの書き込み処理は回転角度によらず所定順に行い、読み出し時に回転角度に応じたアドレスを生成して読み出し処理を行なうようにしていたが、逆に書き込み時に回転処理に応じたアドレス順で書き込み処理をおこない、読み出し処理は所定順としてもよい。
【００９１】
また、上記実施例ではバッファメモリからの画像データの読み出しアドレスの生成順序は、回転角度が０度と１８０度の場合を同様とし、回転角度が９０度と２７０度の場合を同様としたが、それぞれの回転角度に応じたアドレス生成順序によって画像データの読み出し処理を行なうようにしてもよい。
【００９２】
また、上記実施例では入力データをバッファメモリに書き込む際にデータ挿入手段による所定のデータの挿入処理を行なうものとしていたが、逆にバッファメモリから読み出し処理を行なう際にデータの挿入処理を行なうようにしてもよい。
【００９３】
【発明の効果】
以上、説明したように、この発明によれば、入力画像データを所定のブロックサイズを単位として回転処理する装置において、任意サイズの画像データの回転処理を可能とし、また、既にページメモリに記憶された画像データを回転処理する場合にも、指定された回転角度に応じたデータの挿入が可能な画像処理装置を提供することができる。また、合成あるいはＮアップといった編集処理を行なう場合に、データ挿入手段によって挿入される所定のデータをページメモリに出力しないとう制御を行なうため、無駄なデータ転送を無くすと共に、挿入データによるページメモリ上の画像データの書きつぶしを防ぐことが可能となる。（請求項１）
【００９５】
また、データ挿入手段によって挿入される所定のデータが含まれるデータをページメモリに書き込む場合、書き込み先のページメモリアドレスに既に存在するデータを一旦読み出し、挿入されたデータの部分を読み出したデータをこのデータと同一画素位置のもとのデータと入れ換えた後に前記ページメモリのアドレスに書き込むことによって、合成あるいはＮアップといった編集処理を行なう場合に挿入データによるページメモリ上の画像データの書きつぶしを防ぐことが可能となる。（請求項２）
【００９６】
さらに、回転処理後の画像データを出力するページメモリとして画素単位でデータの書き込み読み出しが可能なものを用いた場合、データ挿入手段によって挿入される所定のデータが含まれるデータをページメモリに書き込む時、挿入されたデータの部分を除いた有効なデータのみをページメモリに対して出力するような制御を行なうことにより、回転処理後の画像データを画素単位でページメモリの任意のアドレスに書き込むことができる。従って、合成あるいはＮアップといった編集処理を行なう場合に挿入データによるページメモリ上の画像データの書きつぶしを防ぐことが可能となる。（請求項３）
【図面の簡単な説明】
【図１】本発明の実施例の装置構成を示すブロック図である。
【図２】バッファメモリ制御手段におけるバッファメモリ書き込みアドレス生成部の構成例を示す図である。
【図３】バッファメモリ制御手段におけるバッファメモリ読み出しアドレス生成部の構成例を示す図である。
【図４】画像回転処理手段の構成例を示す図である。
【図５】バッファメモリ書き込みアドレスの発生順序を模式的に示す図である。
【図６】回転角度が０度の場合の画像データ１に対する所定のデータ挿入位置と回転後の画像データ中の挿入データの位置を示す図である。
【図７】回転角度が１８０度の場合の画像データ１に対する所定のデータ挿入位置と回転後の画像データ中の挿入データの位置を示す図である。
【図８】回転角度が９０度の場合の画像データ１に対する所定のデータ挿入位置と回転後の画像データ中の挿入データの位置を示す図である。
【図９】回転角度が２７０度の場合の画像データ１に対する所定のデータ挿入位置と回転後の画像データ中の挿入データの位置を示す図である。
【図１０】回転角が度０度または１８０度の場合のバッファメモリ読み出しアドレスの発生順序を示す図である。
【図１１】回転角が度９０度または２７０度の場合のバッファメモリ読み出しアドレスの発生順序を示す図である。
【図１２】画像回転処理手段における、回転角度が０度の場合の画像データの並べ替え処理を示す図である。
【図１３】画像回転処理手段における、回転角度が１８０度の場合の画像データの並べ替え処理を示す図である。
【図１４】画像回転処理手段における、回転角度が９０度の場合の画像データの並べ替え処理を示す図である。
【図１５】画像回転処理手段における、回転角度が２７０度の場合の画像データの並べ替え処理を示す図である。
【図１６】ページメモリ書き込みアドレスの発生順序を示す図である。
【図１７】本発明の実施例における、回転処理後の画像データを画素単位でページメモリの任意アドレスに書き込む処理を説明する図である。
【図１８】本発明の実施例における画素単位で書き込み制御が可能なページメモリの構成例を示す図である。
【図１９】従来技術の装置構成例を示すブロック図である。
【図２０】従来技術の装置構成例を示すブロック図である。
【符号の説明】
Ｓ１  入力画像データ
Ｓ２  入力サイズ情報
Ｓ３  回転角度情報
Ｓ４  始点アドレス情報
１００  動作制御手段
２００  画像回転処理装置
２１０  バッファメモリ制御手段
２１１  データ挿入手段
２１２  画素数カウンタ
２１３  ライン数カウンタ
２１４  マルチプレクサ
２１５  セレクタ
２１６  セレクタ
３００  ページメモリ
２２０  バッファメモリ
２３０  画像回転処理手段
２４０  メモリ制御手段
２４１  データ制御手段
４００  入力装置
５００  画像回転処理装置
５１０  回転処理補完部
５２１  回転順序指示／読取部
５３０  分割回転部
５４０  記憶部
５４１  ページメモリ
５４２  バッファメモリ
５５０  出力制御部
６００  出力部
【図１】
0003629873.tif 000002
【図２】
0003629873.tif 000003
【図３】
0003629873.tif 000004
【図４】
0003629873.tif 000005
【図５】
0003629873.tif 000006
【図６】
0003629873.tif 000007
【図７】
0003629873.tif 000008
【図８】
0003629873.tif 000009
【図９】
0003629873.tif 000010
【図１０】
0003629873.tif 000011
【図１１】
0003629873.tif 000012
【図１２】
0003629873.tif 000013
【図１３】
0003629873.tif 000014
【図１４】
0003629873.tif 000015
【図１５】
0003629873.tif 000016
【図１６】
0003629873.tif 000017
【図１７】
0003629873.tif 000018
【図１８】
0003629873.tif 000019
【図１９】
0003629873.tif 000020
【図２０】
0003629873.tif 000021