(57)【要約】【課題】  画像データを回転させる処理を行う装置において、回路的には従来と同程度の規模の構成を維持しつつ、システムバスの使用効率を改善し、さらには処理速度を向上させる。【解決手段】  システムバスのバンド幅を浪費するシングル・リードアクセスを回避し、１／４回のバースト・リード・アクセスにて代行する。また、回転回路１０４が必要とするデータの内３／４はＳＲＡＭ１０２から供給されるように構成する。【選択図】  図１
2006165639.tif 000002
【特許請求の範囲】
【請求項１】
転送単位がLビットであるバスに接続された、画像回転処理装置であって、
該画像回転処理装置はｎビット四方の画像データを回転させる画像回転手段と、
該バスから受信したLビットのデータをｎビットのデータとL−ｎビットのデータとに分割する分割手段と、
該L−ｎビットのデータをｎワード記憶するデータ記憶手段と、
該データ記憶手段から出力されたL−ｎビットのデータと該分割手段から出力された該ｎビットデータからｎビットデータを選択するデータ選択手段と、
該データ選択手段から出力されたｎビットの画像データは該画像回転手段に入力され回転処理されることを特徴とする画像データ回転処理装置。
【請求項２】
請求項１の画像回転処理装置であって数値Ｌは数値ｎの整数倍であることを特徴とする画像データ回転処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像データを処理する装置に関するものである。具体的には、プリンタ、複写機、ＦＡＸ、等の画像データを加工処理する装置において主に適用される。
【０００２】
本発明は特に画像データを回転させる処理を行う装置に関する。画像データを回転させることの必要性は複数の原稿データを２ページ一組で縮小印刷するときなどに生じる。この機能は印刷用紙の節約のために、または一覧性が向上するために日常的に使用されることが多い。従って上記の機器においてはパフォーマンスの向上のために、画像データを高速に回転させるための技術が強く望まれている。
【背景技術】
【０００３】
圧縮などの符号化処理を施されていない、いわゆるビットマップの画像データは走査順にメモリ上へ記憶され管理される。従ってその画像を９０度回転させるためには走査方向が変わることを意味し、データの記憶位置は画素刻みで変更される必要があり、ＣＰＵ等の汎用プロセッサだけで処理することは付加が非常に重い。従って、従来から画像データの回転処理を行うためには専用のハードウエアで処理を補助し加速することが多い。
【０００４】
手法としては、第1に画像をｎビット四方のブロックに分割する。対象となる画像がｎビットの整数倍でないときは擬似的に白地を付加して整数倍にすればよい。
【０００５】
第2にｎビット四方のデータ領域をシフトレジスタへ第1の方向から格納する。ｎビット四方のデータを格納し終えた後に、前記シフトレジスタ内のデータを第1の方向とは直角をなす方向からデータをシフトさせながら読み出す。読み出されたｎビット単位のデータはｎビット四方の画像を回転した後のデータとなるのでその読み出されたデータを対応する画像メモリ上へ書き戻すことによりｎビット四方の領域の回転が終了する。このシフトレジスタの構成は、発明の実施の形態の説明において詳細に説明する。
【０００６】
以上の処理を全ブロックに対して行えば所望された画像の回転が達成される。
【０００７】
個々のブロックの回転動作を行うにあたって、前記のシフトレジスタへのデータの書き込みと回転後データの読み出しはＤＭＡＣ（ダイレクトメモリアクセスコントローラ）により行わせることが多い。ここでＤＭＡＣは、回転前と回転後のアドレスを各転送ごとに計算し各データを適切に転送させる機能を有し、さらに前記動作と連動して前記シフトレジスタへの書き込み動作、または読み出し動作を制御するものである。
【０００８】
また、個々のブロックは周期的に配列されているので、ＤＭＡＣのシーケンサーにあるブロックの回転処理が完了したときに次のブロックのアドレスを計算するシーケンスをもたせることによって個々のブロックの回転処理を次々に行わせることも可能である。これはシステムの主制御を行うＣＰＵの負荷を軽減させる効果がある。
【０００９】
数値ｎの値としては３２または６４が用いられることが多い。。これは画像データ回転手段と画像メモリを接続するデータバスの幅が、３２または６４ビットであることが多くそれと等しいことが全体の処理効率の上で有利であることによる。
【００１０】
図６に従来の画像データ回転処理装置の構成を示す。
【００１１】
又、別の従来例としては、特許文献１及び特許文献２をあげることが出来る。
【特許文献１】特開平０７−２００８０８号公報
【特許文献２】特開平０７−３２００５３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら上記のようなバスにおいて、最もバス使用効率が良いのはいわゆるバースト転送と呼ばれる転送形態を使用するときである。バースト転送はアドレスを一度指定した後にデータ転送を４回または8回連続して行うことにより一般に２５６ビットのデータを転送することである。一方ｎビット四方のシフトレジスタへデータを転送するときはｎビットずつデータを転送するシングルデータ転送をする必要がある。各転送データのアドレスは連続していないことに注意されたい。
【００１３】
シングル転送がバースト転送に比べてバス使用効率が低くなるのは、転送するたびに必要なアドレス、転送属性等の指定、バスを要求するマスター間の調停等がオーバーヘッドとなるからである。
【００１４】
上記のオーバーヘッドはデータの転送方向がリードであるとき、即ち外部の画像メモリから回転前の画像データを読み込むときのリード転送時に顕著となる。これは、ライト転送がコマンドとタイミング的にオーバーラップさせてバスマスタから画像メモリへと送信できるのに対して、リード時はまずバスマスタがリードコマンドを送出して画像メモリ側がコマンドを受信した後リードデータをバスマスタ側へ返信するため、バスを長時間占有する必要があるためである。従って、本発明は回転画像データをリードするときの上記オーバーヘッドの削減を課題とする。
【００１５】
バスは当然ながら画像データ回転処理部のＤＭＡＣ以外にも様様なバスマスターによって使用される。ある一つのマスターがバスのバンド幅の多くを使用してしまうと、結果的にそれを含むシステムのパフォーマンスを劣化させてしまうことになり問題であった。
【００１６】
バースト転送の転送量に回転手段であるシフトレジスタの一辺の長さを合わせる事は素直な改善方法ではあるが、回転単位が大きくなると回転対象領域が小さいときの無駄が大きくなる。また、２５６×２５６＝６５５３６個のフリップフロップが必要となり回路規模的にインパクトのあるサイズとなり好ましくない。ここで、先に述べた2方向のデータシフト機能が必要なため、フリップフロップの換わりにより回路的に面積効率の良いＳＲＡＭ等を使用できないことに注意されたい。
【課題を解決するための手段】
【００１７】
本発明はかかる問題を解決するためになされたものである。即ち、回路的には従来と同程度の規模の構成を維持しつつ、システムバスの使用効率を改善し、さらには処理速度を向上させるものである。
【００１８】
課題を解決するための手段としては、転送単位がLビットであるバスに接続された、画像回転処理装置において、該画像回転器はｎビット四方の画像データを回転させる画像回転手段と、該バスから受信したLビットのデータをｎビットのデータとL−ｎビットのデータとに分割する分割手段と、L−ｎビットのデータをｎワード記憶するデータ記憶手段と、該データ記憶手段から出力されたL−ｎビットのデータと該分割手段から出力されたｎビットデータからｎビットデータを選択するデータ選択手段と、該データ選択手段から出力されたｎビットの画像データは該画像回転手段に入力される手段とを有する。
【発明の効果】
【００１９】
以上説明したように本発明によればシステムバスのバンド幅を浪費するシングル・リードアクセスを回避し、１／４回のバースト・リード・アクセスにて代行するので他のバスマスタのパフォーマンスに与える悪影響を最小にする。
【００２０】
また、回転回路１０４が必要とするデータの内３／４はＳＲＡＭ１０２から供給されることになり、そのときのデータ・アクセスタイムは画像メモリからのそれと比べて著しく短いため、結局全体の画像の回転処理動作自体の速度が向上するという効果が得られる。
【発明を実施するための最良の形態】
【００２１】
図１は本発明の画像データ回転処理装置を説明する図である。
【００２２】
同図において１０６はシステムバスであり、画像回転処理装置１００と画像メモリ１５０、制御部１６０、他のバスマスタ１７０とを接続する。システムバス１０６のデータ転送線は６４ビットであり転送モードとしては、バスマスタがメモリから６４ビットずつデータをリードするシングルリードモード、メモリへ６４ビットずつデータをライトするシングルデータライトモード、２５６ビットずつデータをリードするバーストリードモード、２５６ビットずつデータをライトするバーストライトモードをサポートする。
【００２３】
１０５はシーケンサであり、画像回転処理装置１００内の動作を制御する。一般にステートマシーンで構成されるが、ＣＰＵを用いても良い。
【００２４】
１０１はシステムバス１０６からバーストリードモード時にリードされた２５６ビットの画像データを６４ビットのデータ１１４と１９２ビットのデータ１１２とにシーケンサ１０５の制御に従って分配する分配回路である。
【００２５】
１０２は分配回路１０１から出力された１９２ビットのデータ１１２をシーケンサ１０５の制御に従って記憶し、以前に記憶されたデータをシーケンサ１０５の制御に従って出力するするスタティックランダムアクセスメモリ（以降ＳＲＡＭ）である。
【００２６】
１０３はＳＲＡＭ１０２から出力された１９２ビットのデータ１１３と分配回路１０１から出力された６４ビットの中からシーケンサ１０５の制御に従って６４ビットを選択し６４ビットデータ１１５を出力する選択回路である。
【００２７】
１０４は選択回路１０３から出力された６４ビットのデータ１１５をシーケンサ１０５の制御に従って６４回取り込み、さらにシーケンサ１０５の制御に従って６４ビットのデータ１１６を６４回出力する画像データ回転回路である。
【００２８】
シーケンサ１０５は以上述べたように分配回路１０１、ＳＲＡＭ１０２、選択回路１０３、画像データ回転器１０４をそれらが調和して動作するように制御するシーケンサであり、さらにシステムバス１０６に対してバスのマスタとして振る舞い、データ１１１のバーストリード、データ１１６のシングルライトを実行する。
【００２９】
さらにシーケンサ１０５は後で述べるように６４ビット四方のブロックの複数からなる回転対象画像のアドレス情報と回転後に格納されるべき領域のアドレスの情報を持ち、それらから各ブロックの変換処理を連続して行わせるよう制御するものである。
【００３０】
図２は画像データ回転回路１０１の内部構成を説明する図である。
【００３１】
同図において２００は1ビットのフリップフロップである、図中四角の中のの（０，０）はフリップフロップ２００が位置する座標を表し、６４×６４個のそれぞれが区別される。フリップフロップ２００は三つの入力を持ちシーケンサ１０５の制御により一つが選ばれる。出力も三つであり上方向と左右方向のフリップフロップへ保持している値を出力する。入力の選択のされ方は全フリップフロップが一斉に切り替わる。データを右シフトするときの左端のフリップフロップ、またはデータを左シフトするときの右端のフリップフロップは入力する方向にフリップフロップが無いので固定値を入れておけばよい。その値が出力に影響を与えることは無い。
【００３２】
６４ビット四方の画像を時計方向へ回転するために、データをセットするための手順１と読み出すための手順２を説明する。
【００３３】
手順１としてはまず全フリップフロップ２００の入力として下方向からのパスを有効にする。次にこの状態で、元画像の上辺１ライン目のデータ１１５としてを入力し手順２として全フリップフロップの値を更新する。すると１ライン目のデータはフリップフロップ２００の（０，０）から（０，６３）へセットされる。次に元画像の２ライン目の画像データをデータ１１５として入力し全フリップフロップを更新すると、１ライン目のデータはフリップフロップ２００の（１，０）から（１，６３）へシフトし、２ライン目のデータはフリップフロップ２００の（０，０）から（０，６３）へセットされる。以降６４ライン全てが入力されるまで繰り返せば手順１は完了する。
【００３４】
手順２のとしてはまず全フリップフロップ２００の入力として右方向からのパスを有効にする。また選択器２０３の出力１１６としてはデータ入力２０１が選択されるように設定する。次にこの状態で全フリップフロップを更新させることにより全データを左へシフトする。するとフリップフロップ２００の（０，０）から（６３，０）までの６４ビットのデータがデータ１１６として出力されるのでそれを画像メモリ上の第１のライン出力先アドレスへライトする。以上のシフト動作を６４回連続させ出力される６４ビットデータをその都度対応するラインの画像メモリのアドレスへライトすることによって１ブロックの回転動作が完了する。
【００３５】
画像を時計と反対方向へするときは上記の説明で左右反対の動作を施せばよいので詳しい説明は省略する。
【００３６】
図４は所望の画像データを６４ビット四方のブロックへ分割した際、各ブロックの回転処理を行わせる順番を説明する図である。画像データを横方向にｋ個、縦方向はｍ−１個に分割した場合を示している。所望の画像データの各辺のサイズが６４ビットの整数倍ではないときは余白をつけて６４ビット整合させればよい。
【００３７】
新規に選択するブロックは直前のブロックとアドレスが連続するように選択することが特徴である。従って図４とは逆に右から左へ順に処理を行っても本発明の効果は得られるだろう。
【００３８】
図５は分配回路１０１、ＳＲＡＭ１０２選択回路１０３の制御の仕方を説明する図であり、回転元画像の一部を示している。フローチャート図３においてはＳ３０２からＳ３０５、Ｓ３１２、Ｓ３１３、Ｓ３１４までのフローに相当する。
【００３９】
今ブロック６２０のｉライン目のデータを回転回路１０４が必要としているとしよう。シーケンサ１０５はリードアドレスを計算し（Ｓ３０２）、ブロック６２０が画像の左端であるかをチェックする（Ｓ３０３）。ここでは左端ではなくＮＯになるのでＳ３１２としてアドレスの下位４ビット目と３ビット目ともに０であるかを調べる。ここでは領域６１０から領域６１３までの２５６ビット領域の先頭６４ビットの領域であるから、０となり画像メモリからデータをリードするステップ、Ｓ３０４へ進む。対象ブロックが左端の場合ＳＲＡＭ１０２内のデータは全て無効であることに注意されたい。
【００４０】
Ｓ３０４においては、必要なリードデータの領域６１０を含む２５６ビットの領域を一気に画像メモリ１５０からバーストリードする。リードされたデータは分配器１０１にて［２５５：１９２］までが６４ビットデータ１１４として、［１９１：０］までが１９２ビットデータ１１２として出力される。選択回路１０３はこのときシーケンサ１０５によりデータ１１４を選択するように制御され、６４ビットデータ１１５として回転回路へ必要な６４ビットデータを出力する。
【００４１】
一方１９２ビットデータ１１２はＳＲＡＭ１０２へ格納される。ことときＳＲＡＭ１０２へ与えられるアドレスはｉ−１となる。
【００４２】
次にＳＲＡＭ１０２のデータが再利用されるケースの説明を行う。今、ブロック６２１のｉライン目のデータを回転回路１０４が必要としているとしよう。シーケンサ１０５は先程と同様にリードアドレスを計算し（Ｓ３０２）、ブロック６２１が画像の左端であるかをチェックする（Ｓ３０３）。ここでも左端ではなくＮＯになるのでＳ３１２としてアドレスの下位４ビット目と３ビット目ともに０であるかを調べる。ここでは領域６１０から領域６１３までの２５６ビット領域内の第２の６４ビットの領域であるから、ＮＯとなりＳＲＡＭ１０２からデータをリードするステップ、Ｓ３１３へ進む。Ｓ３１３においては、必要なリードデータの領域６１０を含む１９２ビットのデータ一気にＳＲＡＭ１０２からリードする。リードされたデータは選択回路１０３にて［１９１：１２８］までが６４ビットデータ１１５として回転回路へ必要な６４ビットデータを出力する。以上述べたようにＳＲＡＭ１０２内のデータを利用するケースにおいてはシステムバス１０６のバンド幅を消費することなく、また高速に６４ビットデータ１１５を得ることができる。
【００４３】
図３は、以上の説明を含み全体のフローを説明するフローチャートである。
【００４４】
まずＳ３０１として、ＣＰＵ１６０は対象データの大きさ、元画像のアドレス、回転後画像の格納アドレス、回転方向などの属性をシーケンサ１０５内のレジスタにセットした後に、動作を開始させる。
【００４５】
シーケンサ１０５は以降終了するまで、自律的に動作する。ステップ３０２からステップ３０６の手前までの６４ビットデータをロードするシーケンスは先に説明したとおりであり、Ｓ３０６はそれらを６４回繰り返させるための条件分岐である。即ち６４回６４ビットデータをリードしたならばＳ３０７へ進みライトデータのアドレスを計算した後に、図２の説明で述べたように回転回路を左シフトすることにより回転後データを出力し（Ｓ３０８）、条件分岐３０９によって画像の出力動作を６４回繰り返す。以上のＳ３０２からＳ３０９までが１ブロックの回転動作に対応する。画像の回転方向は時計と同じ方向としている。
【００４６】
シーケンサ１０５は図４で説明したように水平方向に沿ってブロックを順次選択し全部ロックをの処理が終わったならば（Ｓ３１０）、Ｓ３１１にて割り込みを発生し、ＣＰＵへ通知する。
【図面の簡単な説明】
【００４７】
【図１】本発明を実施した画像データ回転処理装置を含むシステムの構成を説明する図である。
【図２】本発明を実施した画像回転回路の構成を説明する図である。
【図３】本発明を実施した画像データ回転処理装置の動作フローを説明するフローチャート図である。
【図４】本発明を実施した画像データ回転処理装置のブロックを処理する順序を説明する図である。
【図５】本発明を実施した画像データ回転処理装置の分配回路１０１、ＳＲＡＭ１０２選択回路１０３の制御の仕方を説明する図である。
【図６】従来の画像データ回転処理装置の構成を示す図である。
【図１】
2006165639.tif 000003
【図２】
2006165639.tif 000004
【図３】
2006165639.tif 000005
【図４】
2006165639.tif 000006
【図５】
2006165639.tif 000007
【図６】
2006165639.tif 000008