(57)【要約】【課題】回転処理に１枚分の画像データが必要であると、出力バッファのライン数に関わらず、画像データを１枚分またはほぼ１枚分読み込むための入力バッファが必要となり、結果的に、膨大な容量のメモリが必要になる。【解決手段】画像入力部１２からの入力画像データに対して回転処理を施して回転画像を生成して画像出力部１５から出力する画像処理装置において、制御部１１による制御の下に、回転画像の回転角度に応じて回転処理に必要な最小限のサイズのバッファを入力バッファメモリ部１３に確保する。そして、画像回転処理部１４では、入力バッファメモリ部１３に確保したバッファに入力画像データを読み込む際に、回転角度に対応させてアクセス方法を変えることで、必要最小限のサイズのバッファで入力画像データに対して回転処理を行う。【選択図】図１
2006197050.tif 000002
【特許請求の範囲】
【請求項１】
入力画像データに対して回転処理を施して回転画像を生成する画像処理装置であって、
前記回転画像の回転角度に応じて前記回転処理に必要なサイズのバッファを確保する制御手段と、
前記入力画像データを前記回転角度に応じたライン数分だけ前記制御手段によって確保された前記バッファに読み込み、かつ当該バッファから前記回転角度に応じて画像データを出力する回転処理手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記制御手段は、前記バッファに読み込む前記入力画像データの読み出し開始位置および読み出し走査方向を設定し、
前記回転処理手段は、前記制御手段によって設定された前記読み出し開始位置から前記読み出し走査方向に前記入力画像データを前記バッファに読み込む
ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
入力画像データに対して回転処理を施して回転画像を生成する画像処理方法であって、
前記回転画像の回転角度に応じて前記回転処理に必要なサイズのバッファを確保し、
前記入力画像データを前記回転角度に応じたライン数分だけ前記制御手段によって確保された前記バッファに読み込み、かつ当該バッファから前記回転角度に応じた画像データを出力する
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法に関し、特に入力画像データに対して回転処理を施して回転画像を生成する画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
画像を記録用紙に印刷出力する画像形成装置や、画像をディスプレイに表示出力する画像表示装置等の画像処理システムでは、スキャナで読み取った原稿画像の画像データに対して回転処理を施して原稿画像を回転させて印刷出力させたり、例えばパーソナルコンピュータ等で作成した画像データに対して回転処理を施して作成画像を回転させて表示出力させたりすることがある。
【０００３】
画像データに対して回転処理を施して回転画像を生成する画像処理を行うためには、１枚（１ページ）分の画像データを読み込むバッファが必要であるため、膨大な容量のメモリを必要とする。そこで、従来は、例えば、数ライン分の入力バッファおよび出力バッファを確保し、これら入力バッファおよび出力バッファを順次繰り返して使用することで、画像データを１枚分読み込まずに、回転処理を行うことを可能にしていた（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開平１１−２０５５７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術では、回転処理の回転角度によっては、例えば９０度、または９０度に近い角度の回転処理を行う場合には、１枚分の画像データがないと回転処理を行うことができないため、出力バッファのライン数に関わらず、画像データを１枚分またはほぼ１枚分読み込むための入力バッファが必要となり、結果的に、膨大な容量のメモリが必要になるという課題があった。
【０００６】
本発明は、上記課題に鑑みてなされたものであって、その目的とするところは、少容量のメモリで画像の回転処理を行うことが可能な画像処理装置および画像処理方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明では、入力画像データに対して回転処理を施して回転画像を生成するに当たって、前記回転画像の回転角度に応じて前記回転処理に必要なサイズのバッファを確保し、前記入力画像データを前記回転角度に応じたライン数分だけ前記制御手段によって確保された前記バッファに読み込み、かつ当該バッファから前記回転角度に応じて画像データを出力する構成を採っている。
【０００８】
上記の構成において、回転画像の回転角度に応じて回転処理に必要な最小限のサイズのバッファをメモリに確保（即ち、メモリ部にバッファ領域を確保）し、当該バッファに入力画像データを読み込む際に、回転角度に対応させてアクセス方法を変えることで、必要最小限のサイズのバッファで入力画像データに対して回転処理を行うことができる。したがって、メモリ部として、入力画像データのデータサイズや回転角度によって決まる最大のバッファサイズに対応した容量のメモリを用意すれば良いことになる。
【発明の効果】
【０００９】
本発明によれば、回転角度に応じたサイズのバッファを用意することで、必要最小限のサイズのバッファで入力画像データに対して回転処理を施すことができるため、少容量のメモリで画像の回転処理を行うことができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について図面を参照して詳細に説明する。なお、以下に説明する実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
【００１１】
図１は、本発明の一実施形態に係る画像処理装置の概略構成を示すブロック図である。図１に示すように、本実施形態に係る画像処理装置１０は、制御部１１、画像入力部１２、入力バッファメモリ部１３、画像回転処理部１４および画像出力部１５を有する構成となっている。
【００１２】
制御部１１は、画像入力部１２から入力される入力画像データ情報およびユーザによって指定入力される回転角度情報から、出力画像データ（回転処理されて出力される画像データ）の情報を求め、画像入力部１２に対して画像読み出し開始位置および画像読み出し方向を指示する。また、回転処理に必要な入力バッファサイズを回転角度情報に基づいて計算し、算出したサイズのバッファを入力バッファメモリ部１３に確保する。
【００１３】
画像入力部１２は、制御部１１から指示された画像読み出し開始位置から、画像読み出し方向に入力画像データを1ライン分取得し、入力バッファメモリ部１３に送出する。入力バッファメモリ部１３は、画像入力部１２から送出された1ライン分のデータを順次メモリに格納する。
【００１４】
画像回転処理部１４は、入力バッファメモリ部１３に格納されたデータを用いて、回転された画像データを1ライン分生成し、画像出力部１５へ送出する。画像出力部１５は、画像回転処理部１４から送出された1ライン分のデータを出力する。
【００１５】
なお、図１に示した各部１１〜１５は、コンピュータ上の処理プログラムモジュールとして存在しても良いし、一部又は全部が専用のハードウェアで構成されていても良い。
【００１６】
本実施形態に係る画像処理装置１０が例えば複写機の場合は、画像入力部１２がスキャナに、画像出力部１５が画像形成部にそれぞれ相当し、例えばパーソナルコンピュータの場合は、画像入力部１２が画像表示アプリケーションの“ファイルを開く”等から呼ばれて、パーソナルコンピュータのハードディスクにある画像ファイルを読みに行く手段等に、画像出力部１５がディスプレイにそれぞれ相当することになる。
【００１７】
図２は、以下に説明する回転処理で用いる座標系および模式的に示した入力画像データを示す図である。
【００１８】
図２に示す画像データにおいて、点aを回転の基準点とし、点aの座標をａ＝（ａｘ，ａｙ）＝（０，０）とする。また、点ｂ，ｃ，ｄをそれぞれ画像データの点a以外の角を示す点とし、それぞれの座標をｂ＝（ｂｘ，ｂｙ），ｃ＝（ｃｘ，ｃｙ），ｄ＝（ｄｘ，ｄｙ）とする。
【００１９】
次に、制御部１１による制御の下に実行される処理の流れについて、図３のフローチャートを用いて説明する。
【００２０】
制御部１１は、先ず、操作部（図示せず）からユーザによって画像回転の指示があったか否かを判断する（ステップＳ１）。この画像回転の指示が与えられるときは、ユーザによって回転角度情報も指定入力されることになる。画像回転の指示があったときは、制御部１１は、ユーザによって指定された回転角度に応じて入力バッファを確保する処理を実行し（ステップＳ２）、次いで画像回転処理部１４に対して回転処理のための制御を渡す（ステップＳ３）。
【００２１】
続いて、ステップＳ２における入力バッファを確保するための処理の詳細について、図４を参照しつつ図５および図６のフローチャートを用いて説明する。
【００２２】
図４（Ａ）〜（Ｄ）は、回転角度に基いて入力バッファメモリとして確保する必要のあるバッファを模式的に示した図である。
【００２３】
図４において、点ｂ′，ｃ′，ｄ′は、図２における点ｂ，ｃ，ｄをある角度θだけ回転させた点であるとし、それぞれの座標をｂ′＝（ｂ′ｘ，ｂ′ｙ），ｃ′＝（ｃ′ｘ，ｃ′ｙ），ｄ′＝（ｄ′ｘ，ｄ′ｙ）とする。
【００２４】
図４（Ａ）は、
ｂ′ｙ≦ｄ′ｙ，ａｙ＜ｃ′ｙ  ……（１）
である場合を示している。この場合、点ｂ′を通るｘ軸に平行な直線を引き、辺ａｄ′との交点をe′とする。また、交点e′を通る辺ａｂ′に平行な直線と辺ｂ′ｃ′との交点をｆ′とすると、必要な入力バッファのサイズとしては、四角形ａｂ′ｆ′e′を逆変換したものが読み込み可能なサイズとなる。
【００２５】
図４（Ｂ）は、
ｄ′ｙ＜ｂ′ｙ，ａｙ＜ｃ′ｙ  ……（２）
である場合を示している。この場合、点ｄ′を通るｘ軸に平行な直線を引き、辺ａｂ′との交点をｅ′とする。また、交点e′を通る辺ａｄ′に平行な直線と辺ｃ′ｄ′との交点をｆ′とすると、必要な入力バッファのサイズとしては、四角形ｄ′ａｅ′ｆ′を逆変換したものが読み込み可能なサイズとなる。
【００２６】
図４（Ｃ）は、
ｄ′ｙ≦ｂ′ｙ，ｃ′ｙ≦ａｙ  ……（３）
である場合を示している。この場合、点ｃ′を通るｘ軸に平行な直線を引き、辺ａｄ′との交点をe′とする。また、交点e′を通る辺ａｂ′に平行な直線と辺ｂ′ｃ′との交点をｆ′とすると、必要な入力バッファのサイズとしては、四角形ｃ′ｄ′ｅ′ｆ′を逆変換したものが読み込み可能なサイズとなる。
【００２７】
図４（Ｄ）は、
ｂ′ｙ＜ｄ′ｙ，ｃ′ｙ≦ａｙ  ……（４）
である場合を示している。この場合、点ｂ′を通るｘ軸に平行な直線を引き、辺ｃ′ｄ′との交点をe′とする。また、交点e′を通る辺ａｄ′に平行な直線と辺ａｂ′との交点をｆ′とすると、必要な入力バッファのサイズとしては、四角形ｂ′ｃ′ｅ′ｆ′を逆変換したものが読み込み可能なサイズとなる。
【００２８】
図５および図６は、回転角度に応じた図４（Ａ）〜（Ｄ）に示すサイズの入力バッファを確保するための処理の流れを示すフローチャートである。
【００２９】
図５において、先ず、入力画像データの情報として画像の幅、高さ、点ａ，ｂ，ｃ，ｄの座標情報およびユーザにより指定された回転角度情報を取り込む（ステップＳ１１）。次に、取り込んだ点ｂ，ｃ，ｄの座標情報および回転角度情報から、点ｂ′，ｃ′，ｄ′の座標情報を求め（ステップＳ１２）、次いでａｙ＜ｃ′ｙであるか否かを判断する（ステップＳ１３）。
【００３０】
ａｙ＜ｃ′ｙであるならば（Ｙｅｓ）、図４（Ａ）または図４（Ｂ）のバッファサイズとなる。次に、ｂ′ｙ≦ｄ′ｙであるか否かを判断し（ステップＳ１４）、ｂ′ｙ≦ｄ′ｙであるならば（Ｙｅｓ）、図４（Ａ）のバッファサイズとなることから、点ｂ′を通るｘ軸に平行な直線を引いて辺ａｄ′との交点をｅ′とし、交点ｅ′を逆変換した座標ｅ＝（ｅｘ，ｅｙ）を求める（ステップＳ１５）。
【００３１】
次いで、バッファの幅ＢＷＩＤＴＨ＝入力画像の幅、バッファの高さＢＨＥＩＧＨＴ＝（ｅｙ−ａｙ＋１）とし、ＢＷＩＤＴＨ×ＢＨＥＩＧＨＴのサイズの入力バッファを確保する（ステップＳ１６）。そして、図２に模式的に示した入力画像データにおける読み出し開始位置として点ａを、読み出し方向として主走査方向をｘ→＋、副走査方向をy→＋と設定し（ステップＳ１７）、一連の処理を終了する。
【００３２】
一方、ステップＳ１４の判断処理において、ｂ′ｙ≦ｄ′ｙでなければ（Ｎｏ）、図４（Ｂ）のバッファサイズとなることから、点ｄ′を通るｘ軸に平行な直線を引いて辺ａｂ′との交点をｅ′とし、交点ｅ′を逆変換した座標ｅ＝（ｅｘ，ｅｙ）を求める（ステップＳ１８）。
【００３３】
次いで、バッファの幅ＢＷＩＤＴＨ＝入力画像の高さ、バッファの高さＢＨＥＩＧＨＴ＝（ｅｘ−ａｘ＋１）とし、ＢＷＩＤＴＨ×ＢＨＥＩＧＨＴのサイズの入力バッファを確保する（ステップＳ１９）。そして、図２に模式的に示した入力画像データにおける読み出し開始位置として点ｄを、読み出し方向として主走査方向をｙ→−、副走査方向をｘ→＋と設定し（ステップＳ２０）、一連の処理を終了する。
【００３４】
ステップＳ１３の判断処理において、ａｙ＜ｃ′ｙの条件が成立しなければ（Ｎｏ）、図４（Ｃ）または図４（Ｄ）のバッファサイズとなり、図６のフローに進む。図６において、ｄ′ｙ≦ｂ′ｙであるか否かを判断し（ステップＳ２１）、ｄ′ｙ≦ｂ′ｙであれば（Ｙｅｓ）、図４（Ｃ）のバッファサイズとなることから、点ｃ′を通るｘ軸に平行な直線を引いて辺ａｄ′との交点をｅ′とし、交点ｅ′を逆変換した座標ｅ＝（ｅｘ，ｅｙ）を求める（ステップＳ２２）。
【００３５】
次いで、バッファの幅ＢＷＩＤＴＨ＝入力画像の幅、バッファの高さＢＨＥＩＧＨＴ＝（ｄｙ−ｅｙ＋１）とし、ＢＷＩＤＴＨ×ＢＨＥＩＧＨＴのサイズの入力バッファを確保する（ステップＳ２３）。そして、図２に模式的に示した入力画像データにおける読み出し開始位置として点ｃを、読み出し方向として主走査方向をｘ→−、副走査方向をｙ→−と設定し（ステップＳ２４）、一連の処理を終了する。
【００３６】
一方、ステップＳ２１の判断処理において、ｄ′ｙ≦ｂ′ｙの条件が成立しなければ（Ｎｏ）、図４（Ｄ）のバッファサイズとなることから、点ｂ′を通るｘ軸に平行な直線を引いて辺ｃ′ｄ′との交点をｅ′とし、交点ｅ′を逆変換した座標ｅ＝（ｅｘ，ｅｙ）を求める（ステップＳ２５）。
【００３７】
次いで、バッファの幅ＢＷＩＤＴＨ＝入力画像の高さ、バッファの高さＢＨＥＩＧＨＴ＝（ｃｘ−ｅｘ＋１）とし、ＢＷＩＤＴＨ×ＢＨＥＩＧＨＴのサイズの入力バッファを確保する（ステップＳ２６）。そして、図２に模式的に示した入力画像データにおける読み出し開始位置として点ｂを、読み出し方向として主走査方向をｙ→＋、副走査方向をｘ→−と設定し（ステップＳ２７）、一連の処理を終了する。
【００３８】
上述した一連の処理により、入力バッファのサイズが最小になるように、画像の回転角度を基に、図４（Ａ）〜（Ｄ）のいずれかのパターンでバッファサイズの計算が行われ、画像の回転角度に対応した必要なサイズの入力バッファが確保されることになる。
【００３９】
続いて、画像回転処理部１４での回転処理の流れについて、図７のフローチャートを用いて説明する。
【００４０】
ここでは、図５および図６に示したフローチャートにしたがって、制御部１１の制御の下に、回転処理に必要なサイズの入力バッファが、入力バッファメモリ部１３にあらかじめ確保されていることを前提とする。また、読み出し開始位置は1ラインのデータを読み終えたら、次のラインの先頭を指すように移動するものとする。
【００４１】
先ず、読み出しライン番号ｉｎｌｉｎｅ、出力ライン番号ｏｕｔｌｉｎｅを０に初期化する（ステップＳ３１）。ここに、読み出しライン番号ｉｎｌｉｎｅは、入力バッファに読み込む入力画像データのラインを示し、出力ライン番号ｏｕｔｌｉｎｅは、入力バッファから出力する画像データのラインを示す。
【００４２】
次に、図５、図６の処理で設定した読み出し開始位置から、同じく図５、図６の処理で設定した読み出しの主走査方向に入力画像データを入力バッファに1ライン読み込み（ステップＳ３２）、次いで読み出しライン番号ｉｎｌｉｎｅを1加算（インクリメント）し（ステップＳ３３）。
【００４３】
次に、図５、図６の処理で確保した入力バッファの終端まで画像データを読み込んだか否か、即ちｉｎｌｉｎｅ＝ＢＨＥＩＧＨＴであるか否かを判断し（ステップＳ３４）、ｉｎｌｉｎｅ≠ＢＨＥＩＧＨＴであれば（Ｎｏ）、ステップＳ３２に戻ってステップＳ３２〜Ｓ３４の処理を繰り返す、即ち入力バッファの高さＢＨＥＩＧＨＴになるまで画像データを読み込む。
【００４４】
ステップＳ３４において、ｉｎｌｉｎｅ＝ＢＨＥＩＧＨＴと判定した場合（Ｙｅｓ）には、ライン番号がｏｕｔｌｉｎｅである出力ラインを生成し（ステップＳ３５）、次いで入力バッファ内のデータから生成できる分の出力ラインを全て生成したか否か、即ちｏｕｔｌｉｎｅ＝ｅ′ｙであるか否かを判断する（ステップＳ３６）。
【００４５】
ステップＳ３６において、ｏｕｔｌｉｎｅ≠ｅ′ｙと判定した場合（Ｎｏ）は、出力ライン番号ｏｕｔｌｉｎｅを1加算し（ステップＳ３７）、ステップＳ３５〜ｓ３７の処理を繰り返す。ｏｕｔｌｉｎｅ＝ｅ′ｙと判定した場合（Ｙｅｓ）は、入力バッファ内に次のラインを読む必要があるので、入力バッファを1ライン分シフトして先頭ラインデータを削除し、読み出し開始位置から読み出しの主走査方向に1ラインを読み、入力バッファの最終ラインに格納する（ステップＳ３８）。
【００４６】
次に、ライン番号がｏｕｔｌｉｎｅである出力ラインを生成し（ステップＳ３９）、出力ラインを全て生成したか否か、即ちｏｕｔｌｉｎｅ＝ＥＮＤ_ＯＦ_ＯＵＴＩＭＡＧＥであるか否かを判定する（ステップＳ４０）。ｏｕｔｌｉｎｅ＝ＥＮＤ_ＯＦ_ＯＵＴＩＭＡＧＥであれば（Ｙｅｓ）、一連の処理を終了する。
【００４７】
ステップＳ４０において、ｏｕｔｌｉｎｅ≠ＥＮＤ_ＯＦ_ＯＵＴＩＭＡＧＥと判定した場合（Ｎｏ）は、出力ライン番号ｏｕｔｌｉｎｅを1加算し（ステップＳ４１）、入力画像データを全て読み終えているか否か、即ちｉｎｌｉｎｅ＝ＥＮＤ_ＯＦ_ＩＮＩＭＡＧＥであるか否かを判定する（ステップＳ４２）。
【００４８】
ステップＳ４２において、ｉｎｌｉｎｅ≠ＥＮＤ_ＯＦ_ＩＮＩＭＡＧＥと判定した場合（Ｎｏ）は、ｉｎｌｉｎｅを1加算し（ステップＳ４３）、ステップＳ３８に戻って、ステップＳ３８〜Ｓ４３の処理を続ける。ｉｎｌｉｎｅ＝ＥＮＤ_ＯＦ_ＩＮＩＭＡＧＥと判定した場合（Ｙｅｓ）は、入力バッファに読み込むデータは存在しないので、ステップＳ３９に戻って、ステップＳ３９〜Ｓ４２の処理を続ける。
【００４９】
上述したように、画像入力部１２からの入力画像データに対して回転処理を施して回転画像を生成し、画像出力部１５から出力する画像処理装置において、制御部１１による制御の下に、回転画像の回転角度に応じて回転処理に必要な最小限のサイズのバッファ（バッファ領域）を入力バッファメモリ部１３に確保する一方、画像回転処理部１４では当該バッファに入力画像データを読み込む際に、回転角度に対応させて入力画像データの読み出し開始位置および読み出し走査方向を設定する、即ち回転角度に対応させて入力画像データに対するアクセス方法を変えることで、必要最小限のサイズのバッファで入力画像データに対して回転処理を行うことができる。
【００５０】
これにより、必要以上のサイズのバッファをあらかじめ用意しなくて済み、入力バッファメモリ部１３として、入力画像データのデータサイズや回転角度によって決まる最大のバッファサイズに対応した容量のメモリを用意すれば良いことになるため、少容量のメモリで画像の回転処理を行うことができる。
【００５１】
特に、確保したバッファに入力画像データを読み込む際に、当該入力画像データの読み出し開始位置および読み出し走査方向を設定し、その設定した読み出し開始位置から、同じく設定した読み出し走査方向に入力画像データを読み込むようにしていることで、画像の回転角度が例えば９０度の場合には、１ライン単位で画像データを読み込むことで回転処理を実現できることになるため、データサイズや画像の形状などにもよるが、バッファサイズが最小で済むことになる。
【００５２】
なお、画像の回転角度が４５度のときにバッファサイズが最大になる。ただし、データサイズや画像の形状などにもよるが、画像の回転角度が４５度の場合でも、１枚分の画像データのデータ量に対応したサイズのバッファを確保しなくても、画像の回転処理を実現できる。
【産業上の利用可能性】
【００５３】
本発明による画像処理装置および画像処理方法は、画像を記録用紙に印刷出力する画像形成装置や、画像をディスプレイに表示出力する画像表示装置等の画像処理システムにおいて、スキャナで読み取った原稿画像の画像データに対して回転処理を施して原稿画像を回転させて印刷出力させたり、例えばパーソナルコンピュータ等で作成した画像データに対して回転処理を施して作成画像を回転させて表示出力させたりする画像の回転処理に利用可能である。
【図面の簡単な説明】
【００５４】
【図１】本発明に係る画像処理装置の概略構成を示すブロック図である。
【図２】回転処理で用いる座標系および模式的に示した入力画像データを示す図である。
【図３】制御部により実行される処理の流れを示すフローチャートである。
【図４】回転角度に基いて入力バッファメモリとして確保する必要のあるバッファを模式的に示した図である。
【図５】回転角度に応じたサイズの入力バッファを確保するための処理の流れを示すフローチャート（その１）である。
【図６】回転角度に応じたサイズの入力バッファを確保するための処理の流れを示すフローチャート（その２）である。
【図７】画像回転処理部での回転処理の流れを示すフローチャートである。
【符号の説明】
【００５５】
１０…画像処理装置、１１…制御部、１２…画像入力部、１３…入力バッファメモリ部、１４…画像回転処理部、１５…画像出力部
【図１】
2006197050.tif 000003
【図２】
2006197050.tif 000004
【図３】
2006197050.tif 000005
【図４】
2006197050.tif 000006
【図５】
2006197050.tif 000007
【図６】
2006197050.tif 000008
【図７】
2006197050.tif 000009