"画像上の回転開始画素の回転後位置を算出する算出手段と、前記回転後位置の画素の画素値を格納する格納手段と、前記回転後位置の画素の画素値を、前記回転開始画素の画素値に変更する変更手段と、前記回転開始画素を前記回転後位置の画素に置き換えて、前記算出手段、格納手段、変更手段を繰り返す連鎖処理を実行する連鎖処理手段を備え、前記画像上の全画素が一回の移動により回転後の位置に移動される画像処理装置であって、前記画像上の各画素毎に移動済か否かの移動情報を格納する移動情報格納手段を備え、前記移動済か否かの移動情報として、前記画像の全画素数をNとしたとき、N1/2個小数以下切捨ての画素数を格納することを特徴とする画像処理装置。前記連鎖処理手段は、前記連鎖処理を実行中に、前記回転開始画素の位置と点対称の位置にある画素位置が含まれていない場合には、前記点対称の位置にある画素位置を、未移動の回転開始画素として設定することを特徴とする請求項1記載の画像処理装置。画像上の回転開始画素の回転後位置を算出する算出工程と、前記回転後位置の画素の画素値を格納する格納工程と、前記回転後位置の画素の画素値を、前記回転開始画素の画素値に変更する変更工程と、前記回転開始画素を前記回転後位置の画素に置き換えて、前記算出工程、格納工程、変更工程を繰り返す連鎖処理を実行する連鎖処理工程を備え、前記画像上の全画素が一回の移動により回転後の位置に移動される画像処理方法であって、前記画像上の各画素毎に移動済か否かの移動情報を格納する移動情報格納工程を備え、前記移動済か否かの移動情報として、前記画像の全画素数をNとしたとき、N1/2個小数以下切捨ての画素数を格納することを特徴とする画像処理方法。請求項3記載の画像処理方法をコンピュータに実現させるためのプログラム。請求項3記載の画像処理方法をコンピュータに実現させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。しかし、上記した技術では、回転処理中に移動済か否かを示す移動情報を全画素例えば、図4aでは4画素分、dでは12画素分について格納しているため、移動情報を格納する領域として回転対象となる画像の全画素分の領域を確保する必要があった。本発明は、上記した課題に鑑みてなされたもので、本発明の目的は、移動情報を格納する領域をより少なくした画像処理装置、画像処理方法、プログラムおよび記録媒体を提供することにある。本発明は、画像上の回転開始画素の回転後位置を算出する算出手段と、前記回転後位置の画素の画素値を格納する格納手段と、前記回転後位置の画素の画素値を、前記回転開始画素の画素値に変更する変更手段と、前記回転開始画素を前記回転後位置の画素に置き換えて、前記算出手段、格納手段、変更手段を繰り返す連鎖処理を実行する連鎖処理手段を備え、前記画像上の全画素が一回の移動により回転後の位置に移動される画像処理装置であって、前記画像上の各画素毎に移動済か否かの移動情報を格納する移動情報格納手段を備え、前記移動済か否かの移動情報として、前記画像の全画素数をNとしたとき、N1/2個小数以下切捨ての画素数を格納することを最も主要な特徴とする。本発明によれば、移動済か否かの移動情報として、全画素の半分の移動情報の格納で済む。以下、発明の実施の形態について図面により詳細に説明する。図1は、本発明の実施例の構成を示す前掲した公報の図2に対応。画像処理装置は、CPU11、ROM12、RAM13、時計回路14、磁気ディスク装置15、画像90度回転処理部16、ソースデータ符号化部17、画像領域ノイズ除去部18、画像領域内グラデーション化部19、画像領域内面積算出部20、画像領域内変更後の活用部21、CRT画面表示装置22、表示制御部23、キーボード装置24、画面指示装置25、入力制御部26、ネットワークI/F27、ネットワーク伝送制御部28、バス29を有する。CPU11は、画像処理装置の動作を制御し、ROM12は、CPU11が起動時に実行するプログラムや必要なデータ等を記憶し、RAM13は、CPU11のワークエリア等を構成する記憶装置であり、時計回路14は、現在の日時情報を出力し、磁気ディスク装置15は、アプリケーションプログラム、ワークデータ、ファイルデータ、画像データなどを記憶する。画像90度回転処理部16は、磁気ディスク装置15に格納されている画像データに対して、右回りまたは左回りに90度単位で回転処理を施し、回転処理が施された画像データは、磁気ディスク装置15に保存された後、後述する画像領域内変更後の活用部21に送信される。ソースデータ符号化部17は、後述する入力制御部26で入力された暗号化または符号化指示に基づき、磁気ディスク装置15に格納された画像データに対して暗号化または符号化を行う。ソースデータ符号化部17により暗号化または符号化された画像データは、磁気ディスク装置5に保存された後、画像90度回転処理部16、後述の画像領域ノイズ除去部18、画像領域内グラデーション化部19、または画像領域内面積算出部20などに送信される。画像領域ノイズ除去部18は、磁気ディスク装置15に格納されている画像データに対して特定画像領域のノイズを除去し、ノイズ除去されたデータは、磁気ディスク装置15に保存された後、後述の画像領域内変更後の活用部21に送信される。画像領域内グラデーション化部19は、磁気ディスク装置15に格納されている画像データに対して特定画像領域内をグラデーション化し、特定画像領域内をグラデーション化されたデータは、磁気ディスク装置15に保存された後、後述の画像領域内変更後の活用部21に送信される。画像領域内面積算出部20は、磁気ディスク装置15に格納されている画像データに対して特定画像領域内のドット面積を算出し、特定画像領域内のドット面積を算出した算出データは、磁気ディスク装置15に保存された後、後述の画像領域内変更後の活用部21に送られる。画像領域内変更後の活用部21は、画像90度回転処理部16、画像領域ノイズ除去部18、画像領域内グラデーション化部19、または画像領域内面積算出部20などで変更加工または算出された画像データや算出データを使用して、例えば画像編集、画像圧縮あるいは符号化などの応用処理を行う。CRT画面表示装置22は、画像処理装置を操作するための画面を表示し、表示制御部23は、CRT画面表示装置22の表示内容を制御し、キーボード装置24は、画像処理装置に対してキー操作を行い、画面指示装置25は、CRT画面表示装置22の任意の点を指示する等の操作作業を行う、例えば、操作パネル等である。入力制御部26は、キーボード装置24および画面指示装置25の入力情報を取り込む等の入力に係る制御を行い、ネットワークI/F27は、画像処理装置を図示しない外部ネットワーク等に接続するためのネットワークインタフェース回路等のインタフェース装置であり、ネットワーク伝送制御部28は、画像処理装置がネットワークI/F27を介して外部に接続された図示しない他の端末装置との間で情報伝送を制御する。上記した構成により、磁気ディスク装置15に格納されているあるいは入力された画像データは、画像90度回転処理部16により90度単位の回転処理を施され、回転処理が施された画像データは、例えば表示制御部23によってCRT画面表示装置22へ表示されるなどの出力処理が施される。図2は、画像回転処理のフローチャートを示す前掲した公報の図3に対応。画像回転処理の一例として画像データを左回り90度単位で回転する処理を説明する。まず、各種設定を入力するS1。画像処理装置は、例えばキーボード装置24のキー入力に基づき、1画像回転処理の対象画像データ、2処理の種類左回り90度など90度単位の回転処理、3後述する連鎖処理ステップS9~S13の最初の開始画素例えば画像データの先頭を基準とした相対アドレスで示す:オフセット値a=0、42回目以降の連鎖処理の開始画素の順番例えば画像データの先頭を基準とした相対アドレス順などの各種設定情報を入力する。なお、ここでは、4の2回目以降の連鎖処理の開始画素の順番は、画像データの左上端の画素から右下端の画素の順番であるとする。ステップS2で各種初期設定を行うS2。画像処理装置は、ステップS1で入力された各種設定情報に基づき、初期設定を行う。例えば、予め用意した連鎖処理の開始画素のアドレスを格納するアドレス変数Asに、上記3で入力された最初の開始画素を設定するAs=a=0。ステップS3で、全画素を開始画素にした連鎖処理は終了したか否かを判定するS3。ステップS3では、画像回転処理の終了を判定する。アドレス変数Asに設定された開始画素が対象画像データの最後尾ここでは右下端に達したか否かにより判定している。即ち、画像回転処理の終了は、対象画像データ中の上記4で入力された順番において最後の画素に対する処理が終了した場合である。ステップS3でYESの場合S3、YES、画像回転処理は正常に終了したため、ステップS4で後処理を行うS4。ステップS4では、画像処理装置は、対象画像データの90度回転処理の実施/未実施の判断結果を報告したり、実施の場合には処理後の対象画像データを磁気ディスク装置15に格納する等の後処理を行う。ステップS3でNoの場合S3、No、画像回転処理は終了していないので、ステップS5へ移る。ステップS5では、ステップS2または後述のステップS14で設定された連鎖処理の開始画素を、現注目画素に設定するS5。ここでは、ステップS2または後述のステップS14でアドレス変数Asに設定された位置の画素を、現注目画素に設定する。現注目画素とは画像処理装置が現に処理対象とする一画素である。具体的には、予め用意した現注目画素のアドレスを格納する現注目画素位置Aにアドレス変数Asを設定することにより行うA=As。これにより、現に処理対象とする一画素を特定すると共に、以降のステップS6~S8に示す連鎖処理のチェック処理を行う。続いてステップS6で、現注目画素の回転後位置A1を算出するS6。ここでは、ステップS5で設定された現注目画素の回転後位置A1を算出する。具体的には、A1=FloorA/W1×W×L1-1-L×1A式1Floorzはzを超えない最大整数である。ただし、Aは現注目画素の位置、Wは回転前の対象画像データの横幅画素数、Lは回転前の対象画像データの縦幅画素数で示される計算により算出する。ステップS7では、ステップS6で算出された回転後位置A1にある画素は回転済みか否かを判定するS7。ステップS7では、連鎖処理を二重に行うことを防ぐために、回転後位置A1にある画素が回転済みか否かを判定している。具体的には、画像処理装置は、ステップS6で算出した回転後位置A1が、アドレス変数Asのアドレス値も上位アドレスになっているか即ちA1<As否かにより判定する。これは、アドレス変数Asのアドレス値よりも上位アドレスにある画素については既に連鎖処理されたものであるとみなすことができるからである。ステップS7でYESの場合S7、YES、回転後位置A1にある画素は既に回転済みであり、当該連鎖処理空間ステップS5で設定された現注目画素を開始画素として行う一連の連鎖処理は既に連鎖処理が済んでいるものとみなして、当該連鎖処理空間のこれ以上の連鎖処理を回避するために、ステップS14へ移る。ステップS7でNoの場合S7、No、回転後位置A1にある画素は未回転であり、当該連鎖処理空間は、未だ対象画像データの90度回転処理のためデータ移動がされていないと判断して、ステップS8へ移る。ステップS8では、現在処理中の連鎖処理が終了か否かを判定するS8。ここでは、回転後位置A1と開始画素のアドレスAsとが同一か否かにより、現在処理中の連鎖処理が終了か否かを判定している。これは、回転後位置A1と開始画素のアドレスAsとが同一である場合は、回転後位置が開始画素のアドレスに戻ってきたと判断するためである。ステップS8でYESの場合S8、YES、ステップS9へ移り、ステップS8でNoの場合S8、No、ステップS6へ戻る。以上説明したステップS5~S8の一連の処理は、当該連鎖処理空間が90度回転処理に係る画素の移動を終了しているか否かを判定する処理である。なお、予め対象画像データの画素毎に、回転後位置に移動されたか否か移動済か否かの移動情報を示す、例えば1ビットの指標領域移動情報格納部を設けて、回転処理が施された画素の移動情報は、未移動例えばビット値0から移動済例えばビット値1に変更するようにしてもよい。この場合、ステップS6~S8に係る繰り返し工程の代わりに、ステップS5で設定された現注目画素の移動情報を確認する工程を設けることにより、当該連鎖処理空間が90度回転処理に係る画素の移動を終了しているか否かを更に高速に判定することができる。これは、1ビット/ドットの画像データの90度回転処理には向かない移動情報の領域が確保できれば、回転後の画像データを直接この領域に格納できるため。一方、2ビット/ドット以上の画像データの90度回転処理では、この領域以外には回転時の画素値退避用として作業領域を1画素データ分だけしか確保90度回転して1画素ずつ移動する時の移動先の画素値を格納する出来ない条件下では、高速化が最大になる方法である。高速化が最大になる理由は、左上端から右下端の順番に全画素に連鎖処理を施す途中で、それぞれの画素を移動処理する前に、この移動情報格納部を確認することにより、既に移動処理が施されていれば、移動処理を回避できるためである。即ち、連鎖処理による複数画素同一連鎖内の位置確認を行なう必要がないことによる。ところで、連鎖処理と、左上端から右下端の順番に全画素に適用する方法を同時に実施すると、画素位置の重複が出現する。この重複を避けるために、画像データ全体の全画素に個別に対応する90度回転のための変換済みフラグビット画素数分のビット数を持ち、初期値はOFFとするを設け、左上端から右下端の順番に全画素を連鎖処理規則の開始画素として適用する過程において、それぞれの開始画素から連鎖処理の経過点のフラグビットをONにする過程で、変換済みフラグビットが既にONの場合は、以前の開始画素からの連鎖処理が既に行われた経過点であるとみなして、現在の開始画素からの連鎖処理を回避する効率のよい回避処理が実現できる。図2に戻り、ステップS9では、連鎖処理を開始するS9。ここでは、ステップS2または後述のステップS14でアドレス変数Asに設定された位置の画素を、現注目画素に設定する。現注目画素とは前述したように現に処理対象とする一画素である。具体的には、現注目画素位置Aにアドレス変数Asを設定しA=As、さらにここでは、予め用意した現注目画素の画素値を格納するための現注目画素値格納用変数NowDotに、アドレス変数Asに設定された位置の画素の画素値を設定する。ステップS10では、現注目画素の回転後位置を算出するS10。ここでは、ステップS9で設定された現注目画素Aの回転後位置A1を式1により算出する。続いて、ステップ11では、ステップS10で算出された回転後位置A1にある画素の画素値を更新するS11。ここでは、回転後位置A1の画素値を現注目画素の画素値に変換する処理を行う。具体的には、回転後位置A1にあった画素の画素値を画素値一時格納用変数DotSaveに格納する退避させると共に、回転後位置A1の画素の画素値を現注目画素の画素値現注目画素値格納用変数NowDotに格納された画素値に変更する。これにより、回転後位置A1にある画素の画素値を更新する。続いて、ステップS12では、ステップS10で算出された回転後位置A1にあった画素を現注目画素に変換するS12。ステップS12は、連鎖処理を行うために現注目画素を置き換える処理である。具体的には、現注目画素位置AにステップS10で算出された回転後位置A1を設定すると共に、ステップS11で画素値一時格納用変数DotSaveに格納されている回転後位置A1にあった画素の画素値を現注目画素値格納用変数NowDotに格納する。以上説明したステップS11、S12の処理は、90度単位の回転処理のための画素データの移動における連鎖処理でデータが失われないように、最も少ない量の画素データここでは一画素を退避させる処理と回復処理を行っている。続いて、ステップS13では、現在処理中の連鎖処理が終了か否かを判定するS13。ステップS13では、回転後位置A1とアドレス変数Asのアドレスとが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定している。これは、回転後位置A1と開始画素のアドレス変数Asとが同一である場合は、回転後位置A1が開始画素のアドレスに戻ってきたと判断するためである。ステップS13でYESの場合S13、YES、現在処理中の連鎖処理は終了したので、ステップS14では、次の連鎖処理のための開始画素のアドレスを設定するS14。例えばAs=As1例えば、前回の連鎖処理の開始画素の右隣りの画素。それが右端の場合は、次の行の左端の画素によりアドレス変数Asを再設定する。ステップS14は、次に続く連鎖処理空間の処理を行うために、次の連鎖処理空間の処理開始画素を再設定する処理である。ステップS14の処理が終了すると、ステップS3へ戻る。なお、再設定される次の連鎖処理空間の処理開始画素は、画像データ上の未移動画素にすることもできる。未移動の画素の決定は、ステップS5~S8において説明した、移動情報格納部に格納された移動情報に基づいて行ってもよい。ステップS13でNoの場合S13、No、現在処理中の連鎖処理は終了していないので、ステップS10へ戻って、ステップS12で変換された現注目画素についてのステップS10~S12の処理を繰り返す。以上の処理により、画像データを左回り90度単位に回転する処理が実施される。上記した動作例では、入力された画像データを90度単位右回りまたは左回りに回転処理するために、1画素毎の回転後の画素位置を座標変換して求め、その位置の画素値を回転後の画素値として変更している。また、この求めた先の座標位置の変更回転前の画素値についても、同様にして回転後の画素位置を算出し、求まった座標位置の画素値を回転後の画素値として変更していく連鎖処理を規則とし以降、このような規則を連鎖処理規則という、この規則を左上端位置の画素から右下端の順番に全画素に適用して全画素を1回ずつ移動することにより、画像回転のための部分画像領域の一時退避用の作業領域が1画素分の領域ですむ。また、上記した連鎖処理の規則と、左上端から右下端の順番に全画素に適用する方法の両方を同時に行なうと、画素位置の重複が出現するので、この重複を回避するために、全画素位置に漏れなく配置されている1個以上の連鎖処理空間一つの連鎖処理空間は、スタート点がどこでも連鎖処理により画素を辿るとスタート点に戻る閉じた特徴があるに注目し、90度回転のための画素値移動済みか注目する1連鎖処理空間内の画素値ローテーション済み否かを判断するために、連鎖処理の開始画素を全画素の画素位置として、現注目画素を画像の端から順番に調べることもできる。現在注目している画像座標上の画素に繋がる一つの連鎖処理空間が、これまで調べてきた画像座標例えば上位位置に繋がっていない場合は、90度回転用画素移動のための内部データローテーションが行なわれていない連鎖処理空間とみなして、内部データローテーションを、一つの連鎖処理空間内の内部データローテーションを途中で止めて、次の連鎖処理空間を捜索することなく行う。通常、スキャナやカメラで読取る画像は矩形であり、矩形内の画像の特徴として、線形状や帯状水平地平線は横、柱は縦、床天井は横などのものが矩形の縦線または横線に平行して存在する。本実施例の画像回転処理方法によれば、画質の劣化が発生しない特徴を持つ画像の縦横を変更画像を90度単位で回転する機能が、画像回転用の作業領域を不要または最小化とし、また回転処理を高速化することができる。次に、上記した連鎖処理の点対称性を説明する。前述したように、現注目画素Aの回転後位置A1は、式1により算出される。矩形画像の領域の形は、上下、左右の対称であることから、矩形の中心について、点対称位置に対応する2点の画素同士は、90度回転処理において、90度回転後の位置も点対称の関係にある。それを以下に示す。Aの90度回転後の位置A1の最終画素点からの距離L~A1は、L~A1=W×L-1-A1=L×1A-FloorA/W×W×L1-11である。一方、Aの画素中心からの点対称に当たる画素位置reAは、reA=W×L-1-Aであるので、その90度回転後の位置reA1は、reA1=FloorW×L-1-A/W1×W×L1-1-L×1W×L-1-A=L×1A-FloorA/W×W×L1-12であり、この値は、先頭画素位置からの距離にも該当する。即ち、1と2が同じ値になる。この特徴は、A1とreA1の対応位置が、画像の中心位置を基に点対称の関係であることを表している。ここで、FloorW×L-1-A/W=L-FloorA/W-1であることを利用している。上記した連鎖処理の規則を、矩形画像の中心を基準にして点対称位置関係にある、例えば、左上端画素と右下端画素に適用すると、両者が同一の連鎖処理上の中に存在しない場合例えば、図4b:2組の連鎖処理のそれぞれ別々の組に属しているを考える。この場合、左上端から右下端の順番に全画素を連鎖処理規則の開始画素として適用する過程において、点対称の位置関係にある二点を別々の開始画素にする、二系統の連鎖処理を回避すべきかどうかの判断以前の開始画素からの連鎖処理が既に行なわれたものであるとみなして現在の開始画素からの連鎖処理を行わない回避規制に関する判断を、二系統内の一系統だけを調べるだけで済むため、連鎖処理の重複を効率良く避けることができる。即ち、連鎖処理の規則を、矩形画像の中心を基準にして点対称位置関係にある、例えば、左上端画素と右下端画素に適用すると、両者が同一の連鎖処理上の中に存在しない場合は、90度回転の重複を回避するための捜索において、約半分の捜索量で済ませられるため、より高速処理が実現できる。また、上記した連鎖処理の規則を、矩形画像の中心を基準にして点対称位置関係にある、例えば、左上端画素と右下端画素に適用すると、両者が同一の連鎖処理上の中に存在する場合例えば、図4a:1組の連鎖処理しかないを考える。この場合、左上端から右下端の順番に全画素を連鎖処理規則の開始画素として適用する過程において、点対称位置関係にある二点を別々の開始画素にする二系統の連鎖処理を回避すべきかどうか判断するための調査を行なう必要がない二系統にはならず、一系統だけことにより、連鎖処理の重複を効率良く避けることができる。即ち、連鎖処理の規則を、矩形画像の中心を基準にして点対称位置関係にある、例えば、左上端画素と右下端画素に適用すると、両者が同一の連鎖処理上の中に存在する場合は、90度回転の重複を回避するための捜索において、約半分の捜索量で済ませられるため、より高速処理が実現できる。また、以上で説明した両方法を適用すれば、全体で約半分の捜索量で済み、より高速処理が実現できる。図3は、本発明の処理フローチャートを示す。以下、図3を用いて、画像の中心点を基に点対称の位置関係にある画素同士を有効に活用した、本発明の処理を説明する。画像回転処理の例として、画像データを左回り90度単位で回転する処理を説明する。ステップ101では、ステップS1と同様に、各種設定情報を入力する。各種設定情報は、1画像回転処理の対象画像データ、2処理の種類左回り90度など90度単位の回転処理、3連鎖処理ステップ109~116の最初の開始画素例えば画像データの先頭を基準とした相対アドレスで示す:オフセット値a=0、42回目以降の連鎖処理の開始画素の順番例えば画像データの先頭を基準とした相対アドレス順、590度回転のための画素移動状況を把握する移動情報格納領域として、Floor全画素数1/2ビット分確保し、その初期設定例えば、OFF:0クリア等である。本実施例では、4の2回目以降の連鎖処理の開始画素の順番は、画像データの左上端の画素位置から対象画像データ全体の中央画素位置lcまでの順番とし図2の処理と異なる点、5移動情報格納領域内のビット位置もこの順番とする。ステップ102では、各種初期設定を行う。例えば、予め用意した連鎖処理の開始画素のアドレスを格納するアドレス変数Asに、上記3で入力された最初の開始画素を設定するAs=a=0。ステップ103では、全画素を開始画素にした連鎖処理が終了したか否かを判定する。ステップ103では、画像回転処理の終了を判定している。ここでは、アドレス変数Asに設定された開始画素が対象画像データ全体の中央画素位置lcに達したか否かにより判定している図2の処理と異なる点。すなわち、画像回転処理の終了は、対象画像データ中の上記4で入力された順番において、最後の画素に対する処理が済んだときである。このステップ103は、点対称の特徴を用いている。ステップ103でYESの場合、画像回転処理は正常に終了したため、ステップ104に進み、ステップ104では、対象画像データの90度回転処理の実施/未実施の判断結果を報告したり、実施の場合には、処理後の対象画像データを磁気ディスク装置15に格納するなどの後処理を行う。ステップ103でNoの場合、画像回転処理が終了していないので、ステップ105に進み、ステップ102または後述のステップ123で設定された連鎖処理の開始画素を、現注目画素に設定する。ここでは、ステップ102または後述のステップ123でアドレス変数Asに設定された位置の画素を、現注目画素に設定する。現注目画素は、現に処理対象とする一画素であり、具体的には、予め用意した現注目画素のアドレスを格納する現注目画素位置Aにアドレス変数Asを設定することにより行うA=As。これにより、現に処理対象とする一画素を特定すると共に、以降のステップ107~109に示す連鎖処理のチェック処理を行う。また、ステップ106では、図2の処理にはない新たな機能である、点対称の特徴を生かすために、画像中心点から最後尾までの間に、連鎖処理開始点を、効率良く設けるための状態変数FlagHの初期設定状態ONを行う。続いて、ステップ107では、現注目画素の回転後位置A1を算出する。ここでは、ステップ105で設定された現注目画素の回転後位置A1を式1により算出する。ステップ108では、ステップ107で算出された回転後位置A1にある画素は回転済みか否かを判定する。ステップ108では、連鎖処理を二重に行うことを防ぐために、回転後位置A1にある画素が回転済みか否かを判定している。具体的には、ステップ107で算出した回転後位置A1が、アドレス変数Asのアドレス値も上位アドレスになっているか即ちA1<As否かにより判定する。これは、アドレス変数Asのアドレス値よりも上位アドレスにある画素については既に連鎖処理されたものであるとみなすことができるからである。ステップ108でYESの場合、回転後位置A1にある画素は既に回転済みであり、当該連鎖処理空間ステップ105で設定された現注目画素を開始画素として行う一連の連鎖処理は既に連鎖処理が終了しているものとみなして、当該連鎖処理空間のこれ以上の連鎖処理を回避するために、ステップ123に進む。ステップ108でNoの場合、回転後位置A1にある画素は未回転であり、当該連鎖処理空間は未だ対象画像データの90度回転処理のためのデータ移動がされていないと判断して、ステップ109に進む。ステップ109では、現在処理中の連鎖処理が終了しているか否かを判定する。ここでは、回転後位置A1と開始画素のアドレスAsとが同一か否かにより、現在処理中の連鎖処理が終了しているか否かを判定している。これは、回転後位置A1と開始画素のアドレスAsとが同一である場合は、回転後位置が開始画素のアドレスに戻ってきたと判断するためである。ステップ109でYESの場合、ステップ110に進み、ステップ109でNoの場合、ステップ107に戻る。以上説明したステップ105~109の処理は、当該連鎖処理空間が90度回転処理に係る画素の移動を終了しているか否かを判定する処理である。なお、予め対象画像データの画素毎に、回転後位置に移動したか否か移動済か否かの移動情報を示す、例えば1ビットの指標領域移動情報格納部を設けて、回転処理が施された画素の移動情報は未移動例えばビット値0から移動済例えばビット値1に変更するようにしてもよい。この場合、ステップ107~109の繰り返し工程の代わりに、ステップ105で設定された現注目画素の移動情報を確認する工程を設けることにより、当該連鎖処理空間が90度回転処理に係る画素の移動を終了しているか否かを更に高速に判定することができる。これは、1ビット/ドットの画像データの90度回転処理でも効果があり、図2の処理を改良している。すなわち、移動情報を格納する領域が、図2の処理回転後の画像データの格納領域の大きさのほぼ半分の大きさ=全画素数1/2個小数以下切捨ての格納ビット数で済む。つまり、1ビット/ドット以上のすべての階調の画像データの90度回転処理において、この領域以外には、回転時の画素値退避用として作業領域を1画素データ分だけしか確保90度回転して1画素ずつ移動する時の移動先の画素値を格納するできない条件下では、高速化が最大になる方法である。高速化が最大になる理由は、左上端から右下端の順番に全画素に連鎖処理を施す途中で、それぞれの画素を移動処理する前に、この移動情報格納部を確認することにより、既に移動処理が施されていれば、移動処理を回避できるためであり、連鎖処理による複数画素同一連鎖内の位置確認を行なう必要がない。上記した連鎖処理と、左上端から右下端までの順番に全画素に適用する方法の両方を同時に行うと、画素位置の重複が出現するので、この重複を避けるために、画像データ全体の全画素に個別に対応する90度回転のための変換済みフラグビット画素数分のビット数を持ち、初期値はOFFとするを設け、左上端から右下端の順番に全画素を連鎖処理規則の開始画素として適用する過程において、それぞれの開始画素から連鎖処理により経過する点のフラグビットをONにし、その過程で、変換済みフラグビットが既にONの場合は、以前の開始画素からの連鎖処理が既に行われた途中の点であるとみなして現在の開始画素からの連鎖処理を行わないよう回避する効率のよい回避処理が実現できる。図3に戻り、ステップ110では、連鎖処理を開始する。ここでは、ステップ102または後述のステップ123でアドレス変数Asに設定された位置の画素を、現注目画素に設定する。現注目画素は、前述したように、現に処理対象とする一画素であり、具体的には、現注目画素位置Aにアドレス変数Asを設定しA=As、さらに、予め用意した現注目画素の画素値を格納するための現注目画素値格納用変数NowDotに、アドレス変数Asに設定された位置の画素の画素値を設定する。ステップ111では、現注目画素の回転後位置を算出する。ここでは、ステップ110で設定された現注目画素Aの回転後位置A1を式1により算出する。次のステップ112、113は、図2の処理にはない新たな機能で、点対称の位置関係にある画素を、連鎖処理するための準備処理である。ステップ112では、現在の連鎖処理中の現注目画素位置が、この連鎖処理の開始点の点対称位置に一致しているか否かを判定する。ステップ112でYESの場合、ステップ113に進み、ステップ112でNoの場合、ステップ114に進む。ステップ113では、ステップ106で初期設定した状態変数FlagHを状態OFF今回の連鎖処理の中に、点対称の位置関係にある画素の連鎖処理も含まれていることを表すにする。ステップ114では、ステップ111で算出された回転後位置A1にある画素の画素値を更新する。ここでは、回転後位置A1の画素値を現注目画素の画素値に変換する処理を行う。具体的には、回転後位置A1にあった画素の画素値を画素値一時格納用変数DotSaveに格納する退避させると共に、回転後位置A1の画素の画素値を現注目画素の画素値現注目画素値格納用変数NowDotに格納された画素値に変更する。これにより、回転後位置A1にある画素の画素値を更新する。続いて、ステップ115では、ステップ111で算出された回転後位置A1にあった画素を現注目画素に変換する。ステップ115は、連鎖処理を行うために現注目画素を置き換える処理である。具体的には、現注目画素位置Aにステップ111で算出された回転後位置A1を設定すると共に、ステップ114で画素値一時格納用変数DotSaveに格納されている回転後位置A1にあった画素の画素値を現注目画素値格納用変数NowDotに格納する。以上説明したステップ114、115の処理は、90度単位の回転処理のための画素データの移動における連鎖処理でデータが失われないよう、最も少ない量の画素データここでは一画素を退避させる処理と回復処理を行っている。続いて、ステップ116では、現在処理中の連鎖処理が終了か否かを判定する。具体的には、回転後位置A1とアドレス変数Asのアドレスが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定している。これは、回転後位置A1と開始画素のアドレス変数Asとが同一である場合は、回転後位置A1が開始画素のアドレスに戻ってきたと判断するためである。ステップ116でYESの場合、現在処理中の連鎖処理が終了したので、ステップ117に進み、点対称の位置の画素の連鎖処理が必要か否かを判定する。ステップ116でNoの場合、現在処理中の連鎖処理が終了していないので、ステップ111に戻り、ステップ115で変換された現注目画素についてステップ111~115の処理を繰り返す。ステップ117~122は、図2の処理にはない、点対称な位置関係にある画素の連鎖処理を効率良く行うための新たな処理である。ステップ117では、現在処理中の連鎖処理の中に、画像の点対称の位置関係にある画素の連鎖処理が含まれていて、既に終了しているか否かを判定する。状態変数FlagHがONのとき、今回の連鎖処理の中に、点対称の位置関係にある画素の連鎖処理が含まれていないことを表し、また、FlagHがOFFのとき、今回の連鎖処理の中に、点対称の位置関係にある画素の連鎖処理も含まれていることを表す。ステップ117でYESの場合、現在処理中の連鎖処理は終了していないので、ステップ118に進み、ステップ117でNoの場合、現在処理中の連鎖処理は終了したので、ステップ123に進む。ステップ118では、ステップ110の連鎖処理開始点の、点対称の位置関係画像中心点lcが基準点に当たる位置を新たな開始点現注目画素の初期の位置とした、連鎖処理を開始する。ステップ119では、現注目画素の回転後位置を算出する。ここでは、ステップ118で設定された現注目画素Aの回転後位置A1を式1により算出する。続いて、ステップ120では、ステップ119で算出された回転後位置A1にある画素の画素値を更新する。ここでは、回転後位置A1の画素値を現注目画素の画素値に変換する処理を行う。これにより、回転後位置A1にある画素の画素値を更新する。続いて、ステップ121では、ステップ119で算出された回転後位置A1にあった画素を現注目画素に変換する。ステップ21は、連鎖処理を行うために現注目画素を置き換える処理である。以上説明したステップ120、121の処理は、90度単位の回転処理のための画素データの移動における連鎖処理でデータが失われないよう、最も少ない量の画素データここでは一画素を退避させる処理と回復処理を行っている。続いて、ステップ122では、現在処理中の連鎖処理が終了か否かを判定する。具体的には、回転後位置A1とステップ118で設定されていた新たな開始点現注目画素の初期の位置のアドレスとが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定している。これは、回転後位置A1と、この新たな開始点現注目画素の初期の位置のアドレスとが同一である場合は、回転後位置A1が開始画素のアドレスに戻ってきたと判断するためである。ステップ122でYESの場合、現在処理中の連鎖処理は終了したので、ステップ123に進み、次の連鎖処理のための開始画素のアドレスを設定し、ステップ122でNoの場合、現在処理中の連鎖処理は終了していないので、ステップ119に戻り、ステップ121で変換された現注目画素についてステップ119~121の処理を繰り返す。ステップ123は、次に続く連鎖処理空間の処理を行うために、次の連鎖処理空間の処理開始画素を再設定する処理である。この次の連鎖処理のための開始画素のアドレスは、例えばAs=As1例えば、前回の連鎖処理の開始画素の右隣りの画素。それが右端の場合は、次の行の左端の画素によりアドレス変数Asを再設定する。ステップ123の処理が終了すると、ステップ103に戻る。なお、再設定される次の連鎖処理空間の処理開始画素は、画像データ上の未移動画素としてもよい。未移動の画素の決定は、ステップ105~109で説明した移動情報格納部に格納された移動情報に基づいて行ってもよい。以上の処理により、画像データを左回り90度単位に回転する処理が行われる。ところで、連鎖処理の規則と、左上端から右下端の順番に全画素に適用する方法の両方を同時に行うと、画素位置の重複が出現するので、この重複を避けるために連鎖処理を行わない回避規制について、対象画像データが正方形回転対象矩形の縦横の画素数が同じの画像データの場合、原画像のどの位置を開始画素にしても連鎖処理に含まれる画素位置の並びは、常に、正方形の中心点を通る縦横方向のそれぞれの対称軸に関して対称の位置になる2点、および正方形の中心点に関して点対称の位置になる点を加えた4点となる。従って、開始画素を、原画像の縦横それぞれ半分の画素数の大きさで原画像の左上または右上または左下または右下に形成する4つの正方形のいずれかの範囲に限定することができる。すなわち、対象画像データが正方形の場合は、90度回転処理が簡素に実行でき、かつ、連鎖処理の開始画素を画像全体の1/4の面積を占める連続した領域に集中する。これにより、例えば、1ビット/ドット画像データなど、隣り合う複数の画素値が1バイト=8ビットや1ワード=16ビットなど内に詰め込まれている場合で、隣り合う複数の画素値を連続処理するときに、画像データの取り出しまたは格納に効率処理速度を向上できるが良い。また、対象画像データが正方形回転対象矩形の縦横画素数が同じの画像データの場合に、画素移動のために規制となる前述した方法開始画素を、原画像の縦横それぞれ半分の画素数の大きさで原画像の左上または右上または左下または右下に形成する4つの正方形のいずれかの範囲に限定する方法では、画素移動の順番を、上記4つの小正方形原画像の縦横共に1/2の大きさの画像内をそれぞれの中心点を固定してそれぞれ独立に90度回転移動し、その後で、4つの小正方形単位にまとめて平行移動ローテーションする順番に変更することもできる。なお、小正方形の単位は4つの場合に限定されない。すなわち、対象画像データ全体の90度回転を、複数の大きさの領域に分けて多段階に処理し、画像小領域を90度回転する処理を先に実施し、所定の加工を施した後に、画像全体である大領域を形成する場合に有効な処理である。以下、画像データ全体の90度回転を、複数の領域に分けて多段階に処理する原理を説明する。ここでは、一辺の長さ=L8画素数、は掛け算を表すの正方形を形成する画像データが、正方形の左上端から右上端に、その後、1行下の左端から右端に向かって、以下、同様に右下端まで順番に連続して格納されている場合に、左回りに90度回転する場合を例に説明する。このとき、画像データ上の任意の画素の位置座標x,yと、任意の画素の90度回転移動後の位置座標X、Yの関係は、X=y式2、Y=L8-1-x式3となる但し、x,y,X,Yは0~L8-1の範囲の値である。そこで、x=x28x1,y=y28y1として、x2=Floorx/8,x1=xmod8y3=Floory/8,y1=ymod8但し、wmod8は、8を法とするwの剰余値とすると、X1=y1,Y1=L1-1-x1となる。なお、L1=8であり、座標x1,y1,X1,Y1は、それぞれ左回り90度回転する前と後の正方形一辺の長さ=8内の画素の座標値を表す。同様にして、X2=y2,Y2=L2-1-x2となる。なお、L2=Lであり、座標x2,y2,X2,Y2はそれぞれ左回り90度回転する前と後の正方形一辺の長さ=L内の画素の座標値を表す。X=X28X1,Y=Y28Y1とすると、X=y28y1=yすなわち式2と同じになる。Y=L2-1-x28L1-1-x1=L8-1-x28x1=L8-1-xすなわち式3と同じになる。次に、上述した画像回転処理の具体例で説明する。例1図4aは、画像回転処理の第1の例を説明する図である。図4aでは、2×2ドットの正方形画像データ画素a,b,c,dにより構成されるを左回りに90度回転する場合の、移動前後の画素状態と移動で連鎖する点の位置関係を示している画素を表すa,b,c,dは、2×2ドットの2次元配置で示しているが、1次元のメモリアドレス配置で表現すると、隣り合せにa,b,c,dの順に並ぶ。また、90度回転後に、文字も回転させているのは分かり易くするための便宜上の表現である。実際には、a,b,c,dそれぞれが1画素を表すので、1画素の中での回転はない。以下の図4b~fも同様。図4aの場合、連鎖処理数は、1組a→c→d→b→aである。移動位置の算出は、式1により以下の内容になる。すなわち、1次元画素列a,b,c,dにおいて、移動前のaの画素相対位置を0とすると、他の画素の移動前の位置は、bは1,cは2,dは3になる。従って、移動後のaの位置=Floor0/21×2×21-1-2×10=2、同様に、移動後のbの位置=Floor1/21×2×21-1-2×11=0、移動後のcの位置=3、移動後のdの位置=1となり、移動後は、1次元画素列b,d,a,c順に変更になることが導かれる。例えば、aの位置の画素は、90度回転移動後は、移動前のcの位置に移動することを表している。また、図中の矢印が示す位置関係を辿ると、移動前にaから開始した連鎖処理は、全ての画素位置を通って、元のaの位置に戻ってきており、連鎖処理空間の数は1組であることが分かる。図3の処理フローチャートを参照して説明する。ここでは、画像回転処理の例として、画像データを左回り90度単位で回転する処理、特に当該90度回転のための画素移動状況を把握する移動情報格納領域を使用した例を説明する。ステップ101で設定する各種設定情報は、1画像回転処理の対象画像データの画素abcdがこの順に位置付けられたアドレスに並んでいるものとし、横W=2、縦L=2の2次元配置のデータとして取り扱う。2処理の種類ここでは、左回り90度など90度単位の回転処理3後述する連鎖処理ステップ110~116の最初の開始画素ここでは画像データの先頭を基準とした相対アドレスで示す:aの位置の初期オフセット値=042回目以降の連鎖処理の開始画素の順番ここでは画像データの先頭を基準とした相対アドレス順、590度回転のための画素移動状況を把握する移動情報格納領域を、Floor全画素数=41/2=2ビット確保し、初期設定例えば、OFF=0クリアする。なお、上記4の2回目以降の連鎖処理の開始画素の順番は、画像データの左上端の画素位置から対象画像データ全体の中央画素位置相対アドレスlc=1までの順番であるとし、5の移動情報格納領域内のビット位置もこの順番とする。移動情報格納領域の現情報内容ビット:00ステップ102では、予め用意した連鎖処理の開始画素のアドレスを格納するアドレス変数Asに、上記3で入力された最初の開始画素aの位置アドレスを設定するAs=0。ステップ103では、全画素を開始画素にした連鎖処理は終了したか否かを判定し、ステップ102からステップ103に最初に制御が移って来たときには、ステップ105に進む。2回目にステップ103に制御が移るステップ123から来たときには、すべての連鎖処理が終了しているので、ステップ104に進む。ステップ105では、ステップ102で設定された連鎖処理の開始変数Asに設定された位置画素を、現注目画素Aに設定するA=As。これにより、現に処理対象とする一画素を特定すると共に、以降のステップ107~109に示す連鎖処理のチェック処理を行う。また、ステップ106では、点対称の特徴を生かすために、画像中心点から最後尾までの間に、連鎖処理開始点を、効率良く設けるための状態変数FlagHの初期設定状態ON:1を行う。続いて、ステップ107では、現注目画素の回転後位置A1を式1により算出する。ここでは、A=0、W=2、L=2で示される計算により算出結果=2を得るA1=2。次に、ステップ108では、連鎖処理を二重に行うことを防ぐために、回転後位置A1にある画素が回転済みか否かを判定する。具体的には、移動情報格納領域内の現注目画素の回転後位置A1に該当するA1=2番目のビットがONかどうかを判定すべきであるが、移動情報格納領域内に存在しない2番目のビットを指しているので、回転済みではないとみなし、ステップ109に進む。ステップ109では、当該90度回転のための画素移動状況を把握する移動情報格納領域内の現注目画素の回転後位置A1に該当する先頭ビットを0番として、2番目のビットをON=1にすべきであるが、2番目のビットが存在しないので、ビット設定は行わない。移動情報格納領域の現情報内容ビット:00更に、現在処理中の連鎖処理が終了か否かを判定する。ここでは、回転後位置A1と開始画素のアドレスAsとが同一であるか否かにより、現在処理中の連鎖処理が終わりかどうかを判定する。現時点では、A1=2であり、As=0であるので、A1≠Asで連鎖処理は終了してないと判断し、A1をA新たなAとしてに代入してから、ステップ107に戻る。制御が戻ったステップ107では、現注目画素の回転後位置A1を算出する。ここでは、A=2、W=2、L=2で示される計算により算出結果=3を得るA1=3。次に、ステップ108に進み、ステップ107で算出された回転後位置A1にある画素は回転済みか否かを判定する。具体的には、移動情報格納領域内の現注目画素の回転後位置A1に該当するA1=3番目のビットがONかどうかを判定すべきであるが、現時点では移動情報格納領域内に存在しない3番目のビットを指しているので、回転済みではないとみなし、ステップ109に進む。ステップ109では、移動情報格納領域内の現注目画素の回転後位置A1に該当する3番目のビットをON=1にすべきであるが、3番目のビットが存在しないので、ビット設定は行わない。移動情報格納領域の現情報内容ビット:00次に、現在処理中の連鎖処理が終了か否かを判定する。ここでは、回転後位置A1と開始画素のアドレスAsとが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定している。現時点では、A1=3であり、As=0であるので、A1≠Asで連鎖処理は終了してないと判断し、A1をA新たなAとしてに代入してから、ステップ107に戻る。再び制御が戻ったステップ107では、現注目画素の回転後位置A1を算出する。ここでは、A=3、W=2、L=2で示される計算により算出結果=1を得るA1=1。次に、ステップ108に進み、ステップ107で算出された回転後位置A1にある画素は回転済みか否かを判定する。具体的には、移動情報格納領域内の現注目画素の回転後位置A1に該当するA1=1番目のビットがONかどうかを判定し、現時点では移動情報格納領域内の1番目のビットはOFFを指しているので、回転済みではないとみなし、ステップ109に進む。ステップ109では、移動情報格納領域内の現注目画素の回転後位置A1に該当する1番目のビットが存在するのでON=1にする。移動情報格納領域の現情報内容ビット:01次に、現在処理中の連鎖処理が終了か否かを判定する。ここでは、回転後位置A1と開始画素のアドレスAsとが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定している。現時点では、A1=1であり、As=0であるので、A1≠Asで連鎖処理は終了してないと判断し、A1をA新たなAとしてに代入してから、ステップ107に戻る。3度制御が戻ったステップ107では、現注目画素の回転後位置A1を算出する。ここでは、A=1、W=2、L=2で示される計算により算出結果=0を得るA1=0。次に、ステップ108に進み、ステップ107で算出された回転後位置A1にある画素は回転済みか否かを判定する。具体的には、移動情報格納領域内の現注目画素の回転後位置A1に該当するA1=0番目のビットがONかどうかを判定し、現時点では移動情報格納領域内の0番目のビットはOFFを指しているので、回転済みではないとみなし、ステップ109に進む。ステップ109では、移動情報格納領域内の現注目画素の回転後位置A1に該当する0番目のビットが存在するのでON=1にする。移動情報格納領域の現情報内容ビット:11更に、現在処理中の連鎖処理が終了か否かを判定する。ここでは、回転後位置A1と開始画素のアドレスAsとが同一であるか否かにより、現在処理中の連鎖処理が終わりかどうかを判定している。現時点では、A1=0であり、As=0であるので、A1=Asで連鎖処理は終了したと判断し、ステップ110に進む。ステップ110では、連鎖処理を開始する。ここでは、ステップ102または後述のステップ123でアドレス変数Asに設定された位置の画素を、現注目画素に設定する。具体的には、現注目画素位置Aにアドレス変数Asを設定しA=As=0、さらにここでは、予め用意した現注目画素の画素値を格納するための現注目画素値格納用変数NowDotに、アドレス変数Asに設定された位置の画素の画素値を設定NowDot=aする。ステップ111に進み、現注目画素の回転後位置を算出する。ここでは、ステップ110で設定された現注目画素Aの回転後位置A1を算出する。A=0、W=2、L=2で示される計算により算出結果=2を得るA1=2。ステップ111の処理は、前述したステップ107の処理と同様である。ステップ112では、現在の連鎖処理中の現注目画素の回転後位置A1=2が、この連鎖処理の開始点As=0の点対称位置Asymに一致しているかどうかを判定する。この連鎖処理の開始点As=0の点対称位置Asym=W×L-1-AsがAsym=3と算出されるので、A1≠Asymであり、この結果によりステップ114に進む。ステップ114では、ステップ111で算出された回転後位置A1にある画素の画素値を更新する。ここでは、回転後位置A1の画素値を現注目画素の画素値に変換する処理を行う。具体的には、回転後位置A1=2にあった画素の画素値cを画素値一時格納用変数DotSaveに格納する退避させると共に、回転後位置A1=2の画素の画素値を現注目画素の画素値現注目画素値格納用変数NowDotに格納された画素値aに変更する。これにより、回転後位置A1にある画素の画素値を更新する。続いて、ステップ115に進み、ステップ111で算出された回転後位置A1にあった画素を現注目画素に変換する。ステップ115は、連鎖処理を行うために現注目画素を置き換える処理である。具体的には、現注目画素位置Aにステップ111で算出された回転後位置A1を設定A=A1すると共に、ステップ114で画素値一時格納用変数DotSaveに格納されている回転後位置A1にあった画素の画素値cを現注目画素値格納用変数NowDotに格納する。続いて、ステップ116に進み、現在処理中の連鎖処理が終了か否かを判定する。具体的には、回転後位置A1とアドレス変数Asのアドレスとが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定する。A1=2,As=0であるので、現在処理中の連鎖処理が終了ではなく、ステップ111に戻る。ステップ111に戻り、現注目画素Aの回転後位置A1を算出する。A=2、W=2、L=2で示される計算により算出結果=3を得るA1=3。ステップ112では、現在の連鎖処理中の現注目画素の回転後位置A1=3が、この連鎖処理の開始点As=0の点対称位置Asym=3に一致しているかどうかを判定し、A1=Asymで一致しているので、この結果によりステップ113に進み、ステップ106で初期設定した状態変数FlagHを状態OFF今回の連鎖処理の中に、点対称の位置関係にある画素の連鎖処理も含まれていることを表すにし、その後、ステップ114に進む。ステップ114では、ステップ111で算出された回転後位置A1にある画素の画素値を更新する。具体的には、回転後位置A1=3にあった画素の画素値dを画素値一時格納用変数DotSaveに格納する退避させると共に、回転後位置A1=3の画素の画素値を現注目画素の画素値現注目画素値格納用変数NowDotに格納された画素値cに変更する。続いて、ステップ115に進み、ステップ111で算出された回転後位置A1にあった画素を現注目画素に変換する。具体的には、現注目画素位置Aにステップ111で算出された回転後位置A1を設定A=A1すると共に、ステップ114で画素値一時格納用変数DotSaveに格納されている回転後位置A1にあった画素の画素値dを現注目画素値格納用変数NowDotに格納する。続いて、ステップ116に進み、現在処理中の連鎖処理が終了か否かを判定する。具体的には、回転後位置A1とアドレス変数Asのアドレスとが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定する。A1=3,As=0であるので、現在処理中の連鎖処理が終了ではなく、ステップ111に戻る。再びステップ111に戻り、現注目画素Aの回転後位置A1を算出する。A=3、W=2、L=2で示される計算により算出結果=1を得るA1=1。ステップ112では、現在の連鎖処理中の現注目画素の回転後位置A1=1が、この連鎖処理の開始点As=0の点対称位置Asym=3に一致しているかどうかを判定し、A1≠Asymで一致していないので、この結果によりステップ114に進む。ステップ114では、ステップ111で算出された回転後位置A1にある画素の画素値を更新する。具体的には、回転後位置A1=1にあった画素の画素値bを画素値一時格納用変数DotSaveに格納する退避させると共に、回転後位置A1=1の画素の画素値を現注目画素の画素値現注目画素値格納用変数NowDotに格納された画素値dに変更する。続いて、ステップ115に進み、ステップ111で算出された回転後位置A1にあった画素を現注目画素に変換する。具体的には、現注目画素位置Aにステップs10で算出された回転後位置A1を設定A=A1すると共に、ステップ114で画素値一時格納用変数DotSaveに格納されている回転後位置A1にあった画素の画素値bを現注目画素値格納用変数NowDotに格納する。続いて、ステップ116に進み、現在処理中の連鎖処理が終了か否かを判定する。具体的には、回転後位置A1とアドレス変数Asのアドレスとが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定する。A1=1,As=0であるので、現在処理中の連鎖処理が終了ではなく、ステップ111に戻る。3度ステップ111に戻り、現注目画素Aの回転後位置A1を算出する。A=1、W=2、L=2で示される計算により算出結果=0を得るA1=0。ステップ112では、現在の連鎖処理中の現注目画素の回転後位置A1=0が、この連鎖処理の開始点As=0の点対称位置Asym=3に一致しているかどうかを判定し、A1≠Asymで一致していないので、この結果によりステップ114に進む。ステップ114では、ステップ111で算出された回転後位置A1にある画素の画素値を更新する。具体的には、回転後位置A1=0にあった画素の画素値aを画素値一時格納用変数DotSaveに格納する退避させると共に、回転後位置A1=0の画素の画素値を現注目画素の画素値現注目画素値格納用変数NowDotに格納された画素値bに変更する。続いて、ステップ115に進み、ステップ111で算出された回転後位置A1にあった画素を現注目画素に変換する。具体的には、現注目画素位置Aにステップ111で算出された回転後位置A1を設定A=A1すると共に、ステップ114で画素値一時格納用変数DotSaveに格納されている回転後位置A1にあった画素の画素値aを現注目画素値格納用変数NowDotに格納する。続いて、ステップ1116に進み、現在処理中の連鎖処理が終了か否かを判定する。具体的には、回転後位置A1とアドレス変数Asのアドレスとが同一であるか否かにより、現在処理中の連鎖処理が終了か否かを判定する。A1=0,As=0であるので、現在処理中の連鎖処理が終わりと判断し、ステップ117に進む。ステップ117では、現在処理中の連鎖処理の中に、画像の点対称の位置関係にある画素の連鎖処理が含まれていて、既に終了しているか否かを判定する。状態変数FlagHはOFFになっているので、今回の連鎖処理の中に、点対称の位置関係にある画素の連鎖処理も含まれていることを表す。従って、現在処理中の連鎖処理は終了したので、ステップ123に進み、次の連鎖処理のための開始画素のアドレスを設定する。ステップ123は、次の連鎖処理のための開始画素のアドレスを設定する。例えばAs=As1例えば、前回の連鎖処理の開始画素の右隣りの画素。それが右端の場合は、次の行の左端の画素によりアドレス変数Asを再設定する。現時点で、As=0であるので、新しいAs=1に再設定し、ステップ123を終了し、ステップ103に戻り、全画素を開始画素にした連鎖処理が終了したか否かを判定する。この判定には、移動情報格納領域の現情報内容ビット:11の情報を利用する。現在捜索開始する新しいAs=1であり、そこから後ろに向かっても全ビット今回のケースでは残り1ビットしかないがON=1であるので、すべての連鎖処理が終了していると判断し、ステップ104に進んで、後処理を行って終了する。例2図4bは、画像回転処理の第2の例を説明するための図である。図4bでは、2×3ドットの矩形画像データ上位アドレスから順にa,b,c,d,e,fの並びを、左回りに90度回転する場合の、移動前後の画素状態と移動で連鎖する点の位置関係を示している。この場合も矢印によって、移動前の画素の位置が90度回転した移動後に、どこの位置になるかを表している。この90度回転処理は、2×3ドットの矩形画像データ6ドット分が格納できる領域の大きさのままで、データの並び替えだけで、3×2ドットの矩形画像表現上位アドレスから順にb,d,f,a,c,eの並びに変更する方法である。具体的には図4aの場合と同様に、移動位置の算出は、式1にW=2、L=3を適用して、A1=FloorA/21×7-1-3×1Aから、A=0~5をそれぞれ代入し、その結果、それぞれA1=3,0,4,1,5,2から導かれるものである。図3の処理フローチャートにより、図4b中の矢印が示す位置関係を辿ると、移動前にaから開始した連鎖処理は、a→d→b→aと辿って閉じていることから、a→d→bで一つの連鎖処理空間を形成し、同様に、c→e→fでもう一つの連鎖処理空間を形成して、併せて2組の連鎖処理空間で構成されていることが分かる。図3の処理フローチャートによる処理を辿れば、移動前にaから開始した連鎖処理は、a→d→b→aと繋いだ1組が、ステップ101~ステップ116において実行され、その途中のステップ113は実行されないので、FlagH=1になることから、もう1組のc→e→f→cの連鎖処理は、ステップ116~ステップ122において実行される。例3図4cは、画像回転処理の第3の例を説明するための図である。図4cでは、2×4ドットの矩形画像データ上位アドレスから順にa,b,c,d,e,f,g,hの並びを、左回りに90度回転し、4×2ドットの矩形画像データ上位アドレスから順にb,d,f,h,a,c,e,gの並びに変更する場合の、移動前後の画素状態と移動で連鎖する点の位置関係を示している。連鎖処理空間は、a→e→g→h→d→b→aの組と、c→f→cの組の2組であることが分かる。前述した図2の処理フローチャートにおいて、上記した連鎖処理の規則を、矩形画像データの中心を基準にして点対称位置関係にある、例えば、左上端画素と右下端画素に適用してもよい。このとき、両者が同一の連鎖処理上の中に存在しない場合は、90度回転の重複を回避するための捜索において、約半分の捜索量で済む。例4図4dは、画像回転処理の第4の例を説明するための図である。ここでは、例4として、4×3ドットの矩形画像データ上位アドレスから順にa,b,c,d,e,f,g,h,i,j,k,lの並びを、左回りに90度回転し、3×4ドットの矩形画像データ上位アドレスから順にd,h,l,c,g,k,b,f,j,a,e,iの並びに変更する場合の、移動前後の画素状態と移動で連鎖する点の位置関係を示しており、連鎖処理空間は、a→j→i→l→c→d→aの組と、b→g→e→k→f→h→bの組の2組であることが分かる。例5図4eは、画像回転処理の第5の例を説明するための図である。ここでは、例5として、5×3ドットの矩形画像データ上位アドレスから順にa,b,c,d,e,f,g,h,i,j,k,l,m,n,oの並びを、左回りに90度回転し、3×5ドットの矩形画像データ上位アドレスから順にe,j,o,d,i,n,c,h,m,b,g,l,a,f,kの並びに変更する場合の、移動前後の画素状態と移動で連鎖する点の位置関係を示しており、連鎖処理空間は、a→m→i→e→aの組と、b→j→bの組と、c→g→k→o→cの組と、f→n→f、および不動点移動しないd,h,lの7組であることが分かる。この例のように、全体の画素数が奇数個となる場合は、画素の移動がない不動点丸で囲んだd、h、lの画素が存在する。ここでも例3と同様に、前述した図2の処理フローチャートにおいて、上記した連鎖処理の規則を、矩形画像データの中心を基準にして点対称位置関係にある、例えば、左上端画素と右下端画素に適用してもよい。このとき、両者が同一の連鎖処理上の中に存在しない場合は、90度回転の重複を回避するための捜索において、約半分の捜索量で済む。その方法の一例を示したのが、図3の処理フローチャートである。約半分の捜索量で済むことにより、画像データ上の各画素について移動済か否かの移動情報を格納する移動情報格納部において、移動済か否かの移動情報を格納する移動情報を、全画素について格納するのではなく、図3の処理フローチャートにより、全画素数1/2個小数以下切捨ての格納ビット数だけで済む。上記した例について、移動情報格納領域のサイズを図2と図3の場合で比較すると、以下の通りとなる。図4aの例では、図2の場合、4画素分の移動情報格納領域を必要とするのに対し、図3の場合、2画素分の移動情報格納領域で済む。図4bの例では、図2の場合、6画素分の移動情報格納領域を必要とするのに対し、図3の場合、3画素分の移動情報格納領域で済み、図4cの例では、図2の場合、8画素分の移動情報格納領域を必要とするのに対し、図3の場合、4画素分の移動情報格納領域で済み、図4dの例では、図2の場合、12画素分の移動情報格納領域を必要とするのに対し、図3の場合、6画素分の移動情報格納領域で済み、図4eの例では、図2の場合、15画素分の移動情報格納領域を必要とするのに対し、図3の場合、8画素分の移動情報格納領域で済む。本発明は、前述した実施例の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータCPUやMPUが記憶媒体に格納されたプログラムコードを読出し実行することによっても達成される。この場合、記憶媒体から読出されたプログラムコード自体が前述した実施例の機能を実現することになる。プログラムコードを供給するための記憶媒体としては、例えば、ハードディスク、光ディスク、光磁気ディスク、不揮発性のメモリカード、ROMなどを用いることができる。また、コンピュータが読出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSオペレーティングシステムなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。また、本発明の実施例の機能等を実現するためのプログラムは、ネットワークを介した通信によってサーバから提供されるものでも良い。"