(57)【要約】【課題】画像データを大きなワークエリアを使用せずに、かつ、高速に回転させる画像データ回転処理装置、画像データの回転処理方法、回転プログラムを提供する。【解決手段】先頭列又は末尾列の一方を回転後の先頭行又は末尾行のデータに変換してワークエリアに退避し、残るデータを領域の先頭又は末尾に移動し、先頭列又は末尾列の他方を回転後の末尾行又は先頭行のデータに変換し、領域の末尾行又は先頭行に格納し、残るデータの行と列とを入れ替え、領域の末尾行又は先頭行に格納したデータに続く行のデータから順にデータを回転させて領域の所定の行に格納し、ワークエリアに退避した先頭行又は末尾行を回転後データの格納位置に移動させる。回転前と回転後で分割された領域の横方向のバイト数と縦方向のライン数が異なっていても少ないデータの移動回数で転送できる。【選択図】図２
2010212854.tif 000002
【特許請求の範囲】
【請求項１】
画像データ記憶部と、
画像データ一時保存部と、
制御部と、
を有し、複数の行と列とに分割可能な画像データであって、前記画像データ記憶部に格納された画像データを回転させる画像データ回転処理装置であって、
前記制御部が、
先頭列又は末尾列の一方を回転後の先頭行又は末尾行のデータに変換して前記一時保存部に退避し、
残る画像データを前記画像データ記憶部の先頭又は末尾に移動し、
前記先頭列又は末尾列の他方を回転後の末尾行又は先頭行のデータに変換し、前記画像データ記憶部の末尾行又は先頭行に格納し、
残るデータの行と列とを入れ替え、
前記画像データ記憶部の末尾行又は先頭行に格納したデータに続く行のデータから順にデータを回転させて前記画像データ記憶部の所定の行の格納位置に格納し、
前記データ一時保存部に退避した先頭行又は末尾行を前記データ記憶部の回転後データの格納位置に移動することを特徴とする画像回転処理装置。
【請求項２】
ＤＭＡ転送部をさらに備え、前記制御部は、データの転送に前記ＤＭＡ転送部を使用してデータ転送を行うことを特徴とする請求項１記載の画像回転処理装置。
【請求項３】
回転処理部をさらに備え、前記制御部は、前記回転処理部を用いて回転処理を行うことを特徴とする請求項１又は２記載の画像回転処理装置。
【請求項４】
画像データ表示部を更に備え、前記画像データ表示部が前記回転前及び回転後の前記画像データ記憶部の画像データを表示することを特徴とする請求項１乃至３いずれか１項記載の画像回転処理装置。
【請求項５】
前記画像回転処理装置は、携帯電話機であることを特徴とする請求項１乃至４いずれか１項記載の画像回転処理装置。
【請求項６】
画像データ回転処理装置における複数の行と列とに分割可能な画像データの回転処理方法であって、
先頭列又は末尾列の一方を回転後の先頭行又は末尾行のデータに変換してワークエリアに退避するステップと、
残るデータを領域の先頭又は末尾に移動するステップと、
前記先頭列又は末尾列の他方を回転後の末尾行又は先頭行のデータに変換し、領域の末尾行又は先頭行に格納するステップと、
残るデータの行と列とを入れ替えるステップと、
前記領域の末尾行又は先頭行に格納したデータに続く行のデータから順にデータを回転させて領域の所定の行に格納するステップと、
前記ワークエリアに退避した先頭行又は末尾行を回転後データの格納位置に移動するステップと、
を含むことを特徴とする画像データの回転処理方法。
【請求項７】
前記回転前のデータと回転後のデータでは、１行１列当たりの縦方向の画素数と横方向の画素数が異なっていることを特徴とする請求項６記載の画像データの回転処理方法。
【請求項８】
前記回転前のデータと回転後のデータでは、１行１列当たりデータの記憶に要する横方向のバイト数と縦方向のライン数が異なっており、前記バイト数と前記ライン数との積は変わらないことを特徴とする請求項６又は７記載の画像データの回転処理方法。
【請求項９】
前記各ステップに先だって、回転後の画像のアスペクト比を指定するステップを備え、前記指定されたアクペクト比に従って、前記各ステップを実行することを特徴とする請求項６乃至８いずれか１項記載の画像データの回転処理方法。
【請求項１０】
前記回転前の列の数は行の数より１つ多いことを特徴とする請求項６乃至９いずれか１項記載の画像データの回転処理方法。
【請求項１１】
前記回転前の行の数が３で列の数が４であることを特徴とする請求項６乃至１０いずれか１項記載の画像データの回転処理方法。
【請求項１２】
複数の行と列とに分割可能な画像データを回転させる処理を、前記画像データを記憶する画像データ記憶部と、画像データ一時保存部とを有するコンピュータに実行させる画像データの回転処理プログラムであって、
先頭列又は末尾列の一方を回転後の先頭行又は末尾行のデータに変換して前記画像データ一時保存部に退避するステップと、
残るデータを前記画像データ記憶部の先頭又は末尾方向に移動するステップと、
前記先頭列又は末尾列の他方を回転後の末尾行又は先頭行のデータに変換し、前記画像データ記憶部の末尾行又は先頭行の格納位置に格納するステップと、
前記画像データ記憶部の未変換データの行と列とを入れ替えるステップと、
前記画像データ記憶部の末尾行又は先頭行に格納したデータに続く行のデータから順にデータを回転後のデータに変換して変換後の行データの格納位置に格納するステップと、
前記画像データ一時保存部に退避した先頭行又は末尾行を変換後データの格納位置に移動するステップと、
を含むことを特徴とする画像データの回転処理プログラム。
【請求項１３】
前記回転前のデータと回転後のデータでは、１行１列当たりデータの記憶に要する横方向のバイト数と縦方向のライン数が異なっており、前記バイト数と前記ライン数との積は変わらないことを特徴とする請求項１２記載の画像データの回転処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像回転処理装置、並びに、画像データの回転処理方法及び回転処理プログラムに関する。特に、画像データを複数の領域に分割して回転処理を行う技術に関する。
【背景技術】
【０００２】
携帯電話機に使用されるカメラは高解像度化が進み、３百万画素（３Ｍピクセル）以上が主流となっており、データ量の多い画像データをメモリに格納する必要がある。また、携帯電話機の機構は複雑化され、カメラ画像を正立の画像として取り込めない場合も多く、カメラ画像に対する回転処理が必要となっている。一般的に画像の回転処理は、入力バッファと出力バッファとで同じサイズ分必要となる。
【０００３】
特許文献１や特許文献２には、画像データを複数の領域に分割し、分割した領域の入れ替えを行うと共に、分割した領域毎に回転処理を行うことにより少ないメモリ容量で大きな画像データを回転させる画像回転処理装置及び方法が記載されている。特許文献１や特許文献２では、分割した領域内で回転処理を行うことができるようにするため、９０度回転しても横方向のバイト数と縦方向のライン数が変わらないように正方形の領域に分割して回転処理を行うことが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１７８３００号公報
【特許文献２】特開２００３−１１５９９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以下の分析は本発明により与えられる。上記特許文献１や特許文献２に記載されている方法では、回転前と回転後で横方向のバイト数とライン数が同一であることが前提であるので、回転前と回転後で画像のアスペクト比を変えることができない。
【０００６】
また、画像データが大きくなるほど、回転処理に時間と消費電力を要する。特に携帯電話機では、できるだけ少ない処理ステップで回転処理を行い、回転処理に要する時間と消費電力を低減する必要もある。
【０００７】
従って、画像回転処理において、メモリ容量の消費を抑制し、回転前と回転後の画像アスペクト比に依存せずに、できるだけ少ない処理ステップで回転処理を実現することが望まれている。
【課題を解決するための手段】
【０００８】
本発明の１つの側面による画像回転処理装置は、画像データ記憶部と、画像データ一時保存部と、制御部と、を有し、複数の行と列とに分割可能な画像データであって前記画像データ記憶部に格納された画像データを回転させる画像データ回転処理装置であって、前記制御部が、先頭列又は末尾列の一方を回転後の先頭行又は末尾行のデータに変換して前記一時保存部に退避し、残る画像データを前記画像データ記憶部の先頭又は末尾に移動し、前記先頭列又は末尾列の他方を回転後の末尾行又は先頭行のデータに変換し前記画像データ記憶部の末尾行又は先頭行に格納し、残るデータの行と列とを入れ替え、前記画像データ記憶部の末尾行又は先頭行に格納したデータに続く行のデータから順にデータを回転させて前記画像データ記憶部の所定の行の格納位置に格納し、前記データ一時保存部に退避した先頭行又は末尾行を前記データ記憶部の回転後データの格納位置に移動させる。
【０００９】
また、本発明の別な側面による画像データの回転処理方法は、画像データ回転処理装置における複数の行と列とに分割可能な画像データの回転処理方法であって、先頭列又は末尾列の一方を回転後の先頭行又は末尾行のデータに変換してワークエリアに退避するステップと、残るデータを領域の先頭又は末尾に移動するステップと、前記先頭列又は末尾列の他方を回転後の末尾行又は先頭行のデータに変換し領域の末尾行又は先頭行に格納するステップと、残るデータの行と列とを入れ替えるステップと、前記領域の末尾行又は先頭行に格納したデータに続く行のデータから順にデータを回転させて領域の所定の行に格納するステップと、前記ワークエリアに退避した先頭行又は末尾行を回転後データの格納位置に移動するステップと、を含む。
【００１０】
本発明のさらに別な側面による画像データの回転処理プログラムは、複数の行と列とに分割可能な画像データを回転させる処理を、前記画像データを記憶する画像データ記憶部と、画像データ一時保存部とを有するコンピュータに実行させる画像データの回転処理プログラムであって、先頭列又は末尾列の一方を回転後の先頭行又は末尾行のデータに変換して前記画像データ一時保存部に退避するステップと、残るデータを前記画像データ記憶部の先頭又は末尾方向に移動するステップと、前記先頭列又は末尾列の他方を回転後の末尾行又は先頭行のデータに変換し前記画像データ記憶部の末尾行又は先頭行の格納位置に格納するステップと、前記画像データ記憶部の未変換データの行と列とを入れ替えるステップと、前記画像データ記憶部の末尾行又は先頭行に格納したデータに続く行のデータから順にデータを回転後のデータに変換して変換後の行データの格納位置に格納するステップと、前記画像データ一時保存部に退避した先頭行又は末尾行を変換後データの格納位置に移動させるステップと、を含む。
【発明の効果】
【００１１】
本発明によれば、メモリ容量の消費を抑制し、回転前と回転後の画像アスペクト比に依存せずに、少ない処理ステップで回転処理を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施例における回転前と回転後の画像データフォーマットの一例である。
【図２】本発明の一実施例による画像回転処理装置の構成を示すブロック図である。
【図３】本発明の一実施例による画像回転処理の実行手順を説明する図面である。
【図４】図３の実行手順の続きを説明する図面である。
【図５】図３とは異なるアスペクト比で画像を回転させる場合の実行手順を説明する図面である。
【図６】図５の実行手順の続きを説明する図面である。
【図７】図５とはさらに異なるアスペクト比で画像を回転させる場合の実行手順を説明する図面である。
【図８】図７の実行手順の続きを説明する図面である。
【発明を実施するための形態】
【００１３】
本発明の実施形態について、必要に応じて図面を参照して説明する。なお、実施形態の説明において引用する図面及び図面の符号は実施形態の一例として示すものであり、それにより本発明による実施形態のバリエーションを制限するものではない。
【００１４】
本発明の概要を説明する。本発明では、複数の行と列とに分割した画像データについて、ワーキングエリアとして、一列分のデータを一時保存できる一時保存部５を記憶装置３に確保する。分割した各領域の横方向のバイト数と縦方向のライン数は、回転前と回転後で同一である必要はない。したがって、図１に示すように、回転前と回転後で画像データのアスペクト比（画像の縦と横の比率）を変えて回転させることができる。特に携帯電話機など狭い表示領域を有効に使用して表示させるために有効である。
【００１５】
本発明において、最初に回転前の画像データの先頭列又は末尾列を回転後の先頭行又は末尾行のデータに変換して一時保存部に退避させる（図３（ｂ）、図５（ｂ）、図７（ｂ）。先頭列又は末尾列を退避させるのは、画像データ記憶部の末尾又は先頭の領域を作業領域として使用するためと、残る列のデータ処理をできるだけ少ない処理ステップで処理するためである。
【００１６】
また、先頭列又は末尾列を回転後の先頭行又は末尾行のデータに変換して退避させるのは、後の処理の処理ステップを減らすためである。また、回転後の先頭行のデータに変換するか、末尾行のデータに変換するかは、回転させる方向（時計回りに９０度回転させるか、反時計回りに９０度回転させるか等）によって決めればよい。
【００１７】
先頭列又は末尾列の一方のデータを退避させた後は、画像データ記憶部４に作業領域を確保し、先頭列又は末尾列の他方を回転後の末尾行又は先頭行のデータを格納できる領域を空けるため、画像データ記憶部４の領域の先頭又は末尾に回転前のデータを移動させる。この移動には、使用できる場合は、ＤＭＡを用いる。
【００１８】
先頭列と末尾列の回転（例えば、図３（ｂ）と（ｄ））が終わった後は、残る列の行と列を入れ替え（例えば図４（ａ）〜（ｃ））、すでに格納されている回転後の末尾行又は先頭行に続く行から順次データを回転させて画像データ記憶部４の所定の行の格納位置に格納する（例えば、図４（ｄ）、（ｅ））。最後に画像データ一時保存部５に回転後のデータに変換した上、退避させてあった先頭行又は末尾行の画像データを画像データ記憶部４の先頭行又は末尾行に転送させて全領域の画像の回転処理が終了する。
【００１９】
なお、画像データ一時保存部５に退避させたデータは回転処理済みのデータであり、アドレスが連続しているので、ＤＭＡが使用可能であれば、１回のＤＭＡ転送で一行分の複数の領域の画像データの転送を行うことができる。
【００２０】
上記の処理は、汎用的なＣＰＵによる純粋なソフトウェア処理によっても実現可能であるが、ＤＭＡ転送部７の他、回転処理をハードウェイで行う回転処理部８を設けてもよい。以下、実施例について、図面を参照して詳しく説明する。
【実施例１】
【００２１】
図１は、実施例１における回転前と回転後の画像データフォーマットの一例である。
図１の（ａ）、（ｃ）、（ｅ）は回転前の画像データのフォーマットである。図１（ａ）、（ｃ）、（ｅ）のデータはそれぞれ、図３（ａ）、図５（ａ）、図７（ａ）の３行４列に分割された１２の領域のうち、１つの領域の画像データと考えてもよい。図１（ａ）、（ｃ）、（ｅ）では、１画素は２バイトのデータで表されており、すなわち、図中で横方向に連続する２バイト（例えば、「０」と「１」、「２」と「３」等）が１画素のデータを表している。すなわち、図１（ａ）、（ｃ）、（ｅ）は、それぞれ、横方向に８画素、縦方向に２画素の画像データを表示することができる。図１（ａ）、（ｃ）、（ｅ）はそれぞれ同一の構造であるので、データが同一であれば、表示も同一になる。
【００２２】
図１（ｂ）、図１（ｄ）、図１（ｆ）はそれぞれ時計方向に９０度回転させた場合の画像フォーマットである。図１（ｂ）、図１（ｄ）、図１（ｆ）では、回転後のアスペクト比が異なる。図１（ｄ）を基準とすると、図１（ｂ）は縦長、図１（ｆ）は横長の表示となる。図１（ｂ）、図１（ｄ）、図１（ｆ）は図１（ａ）、（ｃ）、（ｅ）と同様に、横方向の連続する２バイトで１画素を表示するので、図１（ｂ）では、横方向１画素、縦方向１６画素の表示となる。同様に、図１（ｄ）では、横方向２画素、縦方向８画素、図１（ｆ）では、横方向４画素、縦方向４画素の表示となる。すなわち、図１（ｄ）を基準とすると、図１（ｂ）は、横方向１／２倍、縦方向２倍、図１（ｆ）は、横方向２倍、縦方向１／２倍の表示となる。
【００２３】
また、図１（ａ）、図１（ｃ）、図１（ｅ）の画像データを図１（ｂ）、図１（ｄ）、図１（ｆ）のように回転させるためには、図１（ｂ）の場合には、バイト単位にデータの移動が必要なのに対して、図１（ｄ）の場合は、２バイト単位、図１（ｆ）の場合は、４バイト単位にデータを移動させることができる。
【００２４】
なお、図１から容易に理解できるように、図１（ａ）〜（ｆ）の各領域を行列状に分割された領域のひとつと考えると、回転前と、回転後では、横方向のバイト数、縦方向のライン数は、いずれも異なっている。例えば、回転前（図１（ａ）、（ｃ）、（ｅ）は横方向１６バイト、縦方向２ラインであるのに対して、図１（ｂ）は横方向２バイト、縦方向１６ライン、図１（ｄ）は横方向４バイト、縦方向８ライン、図１（ｆ）は横方向８バイト、縦方向４ラインである。ただし、データ量の総和（「横方向のバイト数」と「縦方向のライン数」の積）は図１（ｂ）、（ｄ）、（ｆ）いずれの場合も回転前と同じである。図１のように回転前と回転後で横方向のバイト数、縦方向のライン数が異なってしまう場合には、特許文献１や特許文献２のような回転方法は使用することができない。
【００２５】
図２は、実施例１による画像回転処理装置１の構成を示すブロック図である。画像回転処理装置１は、ＣＰＵ（制御部）２と、記憶装置３と、ＤＭＡ転送部７と、回転処理部８とで構成される。記憶装置３は、画像データ記憶部４と画像データ一時保存部５とプログラム６を含んで構成されている。画像データ記憶部４は、記憶装置３の中の画像データを記憶する領域である。回転前と回転後の画像データはいずれも画像データ記憶部４に格納される。画像データ一時保存部５は、回転処理のためにワーキングエリアとして使用される領域である。画像データ一時保存部５は、回転処理の途中で一時的にワーキングエリアとして使用されるだけなので、回転処理を行わないときは他のデータ処理に使用することが可能である。また、プログラム６は、ＣＰＵ（制御部）２が実行するプログラムが格納されている。本発明による回転処理を実行するためのプログラムもプログラム６の一部である。なお、図２では、記憶装置３を一つのブロックとして記載しているが、実際には、画像データ記憶部４、画像データ一時保存部５、プログラム６は別々な記憶装置に記憶されていてもよい。
【００２６】
ＣＰＵ（制御部）２は記憶装置３から読み出したプログラム６に従って、画像回転処理装置１全体を制御する。ＤＭＡ転送部７は、記憶装置３のデータを高速に転送する。回転処理部８は、複数の行列に分割された領域のデータの回転処理を行う。なお、ＤＭＡ転送部７は、高速なデータ転送のため、設けることが望ましいが必須ではない。また、回転処理部８は専用のハードウエアを設けてもよいし、プログラム６によりＣＰＵ（制御部）がソフトウェアで行ってもよい。なお、必要に応じて、回転前と回転後の画像データを表示する画像データ表示部をさらに設けてもよい。
【００２７】
次に、実施例１による回転処理の処理手順について、図３乃至図８を用いて説明する。図３〜図８は、いずれも実施例１による回転処理の処理手順を説明する図面であるが、図３と図４、図５と図６、図７と図８では、それぞれ回転処理後のアスペクト比が異なる。図１（ｂ）のようなアスペクト比で回転処理を行う手順が図３と図４であり、図１（ｄ）が図５と図６、図１（ｆ）が図７と図８である。
【００２８】
まず、図３（ａ）から説明する。回転処理前の画像データ記憶部４には、「１」〜「１２」の縦３行、横４列に分割された画像データが格納されている。「１」〜「１２」の領域には、それぞれ、図１（ａ）の３２バイトのデータが格納されていると考えてもよい。また、図３（ａ）では、画像データ一時保存部５は、空である。
【００２９】
次に、図３（ｂ）では、１２個領域のうち、一列目に格納されていた領域「１」、「５
」、「９」のデータをそれぞれ回転させて画像データ一時保存部５に退避させる。この回転する方向、領域「１」、「５」、「９」のデータを格納する順番は、回転後にデータを表示する順番に並べる。単にデータを退避させるだけではなく、その様に並べ変えて退避させることにより、後でデータを復帰させるときに１回ＤＭＡ転送を行うだけで、データを復帰させることができる。なお、退避させる段階でＤＭＡを使用しても複数のラインのデータを一部ずつ転送しなければならないので、１回のＤＭＡ転送でデータを退避させることはできない。なお、図３（ｂ）の処理により、領域「１」、「５」、「９」のデータは、それぞれ図１（ａ）から図１（ｂ）のように並び替えられる。
【００３０】
次に、図３（ｃ）では、領域「１」、「５」、「９」が空いた後でデータをつめて移動させる。この移動には、ＤＭＡを使用することができる。また、回転後の末尾の行「４」、「８」、「１２」を格納できるスペースを空けるため、データは先頭の方につめて移動する。
【００３１】
次に、図３（ｄ）では、画像データ記憶部４の末尾の空いた領域に回転後の末尾行である領域「４」、「８」、「１２」のデータについてそれぞれ回転処理を行い所定の位置に格納する。この図３（ｄ）の処理により、領域「４」、「８」、「１２」のデータは、図１（ａ）の配置から図１（ｂ）のような配置に並び変えられる。なお、回転前と回転後では、1つの領域の横方向のバイト数、縦方向のライン数が異なるが、回転後の領域「４」、「８」、「１２」のデータは画像データ記憶部４の末尾に回転前のデータと混在しない形で格納されるので支障はない。また、領域「４」、「８」、「１２」のデータの回転、データの移動はこの段階で完了する。
【００３２】
次に、図４（ａ）、図４（ｂ）、図４（ｃ）では、回転前の残った領域「２」、「３」、「６」、「７」、「１０」、「１１」のデータの行と列の入れ替えを行う。この４（ａ）、図４（ｂ）、図４（ｃ）の処理では、データの回転処理は行わずに各領域のデータを回転後の領域の順番に入れ替えるだけである。この段階でもＤＭＡ転送を活用し、できるだけ少ないステップでデータ転送を行う。
【００３３】
次に、図４（ｄ）と図４（ｅ）では、画像データ記憶部４における末尾の行のほうから先頭の方の行へ順番にデータを回転させる。回転前のデータは図１（ａ）のような並び方であり、回転後のデータは図１（ｂ）のようなデータの並び方になる。この図４（ｄ）と図４（ｅ）の処理でも末尾の行から順番に回転後のデータへ変換しており、回転前のデータと回転後のデータの混在はない。従って、回転前と回転後で横方向のバイト数と間の縦方向のライン数が異なっていても支障はない。
【００３４】
最後に、図４（ｆ）により、画像データ一時保存部５に退避させてあった先頭行のデータを先頭行の格納位置に復帰させて回転処理を終了させる。この図４（ｆ）の処理では、先頭行のデータはすでに回転処理が済んでおり、転送するデータも連続する領域なので、１回のＤＭＡ転送で処理を済ますことができる。
【００３５】
次に、図５と図６を用いて、図３、図４とは回転後のアスペクト比が異なる回転処理を行う手順について説明する。図５と図６では、図１（ｃ）の様に並んでいるデータを図１（ｄ）のように並び替える。図３、図４の回転処理後のデータである図１（ｂ）と図５、図６の回転処理後のデータである図１（ｄ）のデータとは、アスペクト比が異なり、1つの領域を格納する横方向のバイト数、縦方向のライン数が異なるが、処理手順は、図３、図４とまったくの同一の手順で画像データの回転を行うことができる。図３、図４の処理と、図５、図６の処理では、回転後のアスペクト比が違うことと、回転処理において、図３、図４では、バイト単位でデータの並び替えを行わなければならなかったのに対して、図５、図６では、２バイト単位でデータの並び替えができる点が異なるが、基本的な処理アルゴリズムは、図３、図４の場合と何ら変わらない。領域の分け方も変える必要はない。
【００３６】
図７、図８は、さらに回転後のアスペクト比が回転を行う実行手順を説明する図面である。図７、図８では、図１（ｅ）のデータを図１（ｆ）のように並び替える。従って、回転後の画像データは、図５、図６よりさらに横長のデータになる。また、図７、図８の回転処理では、４バイト単位で処理することができる。しかし、回転後のアスペクト比が図３、図４の場合や図５、図６の場合と違うことと、回転処理そのものが４バイト単位で処理できることを除いて基本的なアルゴリズムは図３、図４と何ら異なる所はない。
【００３７】
なお、上記発明について、さらに異なる観点から捉えたものについて付記しておく。
【００３８】
（付記１）
画像データ記憶部と、
画像データ一時保存部と、
制御部と、
を有し、複数の行と列とに分割可能な画像データであって、前記画像データ記憶部に格納された画像データを回転させる画像データ回転処理装置であって、
前記制御部が、
先頭列又は末尾列を回転後の先頭行又は末尾行の一方のデータに変換して前記画像データ一時保存部に退避させ、
残る画像データを画像データ記憶部の先頭方向又は末尾方向への移動、及び／又は、行と列の入れ替えを行いつつ、前記回転後の先頭行又は末尾行の他方となるデータから順に前記先頭行又は末尾行の一つ前の行まで回転処理を行い回転処理後のデータを確定し、
最後に、画像データ一時保存部に退避させたデータの前記先頭行又は末尾行への移動を行い回転処理を完了させる画像回転処理装置。
【００３９】
（付記２）
ＤＭＡ転送部を更に備え、前記制御部は、データの転送に前記ＤＭＡ転送部を使用してデータ転送を行うことを特徴とする付記１記載の画像回転処理装置。
【００４０】
（付記３）
画像データ回転処理装置における複数の行と列とに分割可能な画像データの回転処理方法であって、
先頭列又は末尾列を回転後の先頭行又は末尾行の一方のデータに変換してワークエリアに退避させるステップと、
残る画像データを領域の先頭方向又は末尾方向への移動、及び／又は、行と列の入れ替えを行いつつ、前記回転後の先頭行又は末尾行の他方となるデータから順に前記先頭行又は末尾行の一つ前の行まで回転処理を行い回転処理後のデータを確定させるステップと、
最後に、ワークエリアに退避させたデータの前記先頭行又は末尾行への移動を行い回転処理を完了させるステップと、
を含むことを特徴とする画像データの回転処理方法。
【００４１】
（付記４）
複数の行と列とに分割可能な画像データを回転させる処理を、前記画像データを記憶する画像データ記憶部と、画像データ一時保存部とを有するコンピュータに実行させる画像データの回転処理プログラムであって、
先頭列又は末尾列を回転後の先頭行又は末尾行の一方のデータに変換して前記画像データ一時保存部に退避させるステップと、
残るデータを画像データ記憶部の先頭方向又は末尾方向への移動、及び／又は、行と列の入れ替えを行いつつ、前記回転後の先頭行又は末尾行の他方となるデータから順に前記先頭行又は末尾行の一つ前の行まで回転処理を行い回転処理後のデータを確定させるステップと、
最後に、画像データ一時保存部に退避させたデータの前記先頭行又は末尾行への移動を行い回転処理を完了させるステップと、
を含むことを特徴とする画像データの回転処理プログラム。
【００４２】
上記付記１の「残る画像データを画像データ記憶部の先頭方向又は末尾方向への移動、及び／又は、行と列の入れ替えを行いつつ、前記回転後の先頭行又は末尾行の他方となるデータから順に前記先頭行又は末尾行の一つ前の行まで回転処理を行い回転処理後のデータを確定」する処理において、「画像データ一時保存部」に退避させるデータが「回転後の先頭行」となるデータである場合は、「残る画像データ」の移動を行う場合は、「画像データ記憶部の先頭方向」へ移動させる。その後の処理で、「回転後の末尾行」となるデータから回転処理を完了させるためである。
【００４３】
「残る画像データを画像データ記憶部の先頭方向又は末尾方向への移動」を行うか、「行と列の入れ替え」を行うかは、画像回転処理装置の処理能力に応じて適宜決めればよい。行と列の入れ替え（転置）を先に行ってしまえば、各領域内のデータは回転処理前のデータ並び（図１（ａ）等）であるが、各領域（行と列）の並び順は、回転処理後の並びになる。従って、回転処理（各領域内での図１（ａ）から図１（ｂ）等への並び替え）は、画像データ記憶部の末尾又は先頭のデータから順に先頭又は末尾へ向けて行えばよい。移動が必要なデータは回転処理を行うデータだけであり、その他のデータの移動は必要ない。
【００４４】
一方、行と列の入れ替え（転置）を行わない場合は、回転処理を行い、画像データ記憶部の末尾又は先頭から順にデータを確定していくためには、回転後のデータの格納領域を確保するため、回転処理を行うたびに、回転処理を行っていないデータを順次画像データ記憶部の先頭又は末尾に移動させる必要がある。この処理において、どちらを選択するはかは、適宜必要に応じて効率が良いアルゴリズムを選択することができる。
【００４５】
いずれにせよ、「先頭列又は末尾列を回転後の先頭行又は末尾行の一方のデータに変換して前記画像データ一時保存部に退避させ」る処理と、「前記回転後の先頭行又は末尾行の他方となるデータから順に回転処理を行い回転処理後のデータを確定」する処理と、「画像データ一時保存部に退避させたデータの前記先頭行又は末尾行への移動を行」う処理によって、アスペクト比に依存しない、または、回転前と回転後で分割した領域の横方向のバイト数とライン数が一致場合であっても効率的に回転処理を行うことができる。
【００４６】
以上、実施例について説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【産業上の利用可能性】
【００４７】
本発明は、携帯電話機の表示データの回転に用いることができるだけでなく、画像データの回転が必要な様々な分野で広く用いることができる。特に、行方向にラスタ（走査線）のあるラスタスキャン方式の表示装置に有効である。また、特にシリアルプリンタなど、行方向に連続してデータを出力する必要のある画像データの回転にも用いることができる。
【符号の説明】
【００４８】
１：画像回転処理装置
２：ＣＰＵ（制御部）
３：記憶装置
４：画像データ記憶部
５：画像データ一時保存部
６：プログラム
７：ＤＭＡ転送部
８：回転処理部
【図１】
2010212854.tif 000003
【図２】
2010212854.tif 000004
【図３】
2010212854.tif 000005
【図４】
2010212854.tif 000006
【図５】
2010212854.tif 000007
【図６】
2010212854.tif 000008
【図７】
2010212854.tif 000009
【図８】
2010212854.tif 000010