JP2006165639A - 画像データ回転処理装置 - Google Patents
画像データ回転処理装置 Download PDFInfo
- Publication number
- JP2006165639A JP2006165639A JP2004349630A JP2004349630A JP2006165639A JP 2006165639 A JP2006165639 A JP 2006165639A JP 2004349630 A JP2004349630 A JP 2004349630A JP 2004349630 A JP2004349630 A JP 2004349630A JP 2006165639 A JP2006165639 A JP 2006165639A
- Authority
- JP
- Japan
- Prior art keywords
- data
- bit
- image
- rotation
- image data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Image Processing (AREA)
- Storing Facsimile Image Data (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
【課題】 画像データを回転させる処理を行う装置において、回路的には従来と同程度の規模の構成を維持しつつ、システムバスの使用効率を改善し、さらには処理速度を向上させる。
【解決手段】 システムバスのバンド幅を浪費するシングル・リードアクセスを回避し、1/4回のバースト・リード・アクセスにて代行する。また、回転回路104が必要とするデータの内3/4はSRAM102から供給されるように構成する。
【選択図】 図1
【解決手段】 システムバスのバンド幅を浪費するシングル・リードアクセスを回避し、1/4回のバースト・リード・アクセスにて代行する。また、回転回路104が必要とするデータの内3/4はSRAM102から供給されるように構成する。
【選択図】 図1
Description
本発明は画像データを処理する装置に関するものである。具体的には、プリンタ、複写機、FAX、等の画像データを加工処理する装置において主に適用される。
本発明は特に画像データを回転させる処理を行う装置に関する。画像データを回転させることの必要性は複数の原稿データを2ページ一組で縮小印刷するときなどに生じる。この機能は印刷用紙の節約のために、または一覧性が向上するために日常的に使用されることが多い。従って上記の機器においてはパフォーマンスの向上のために、画像データを高速に回転させるための技術が強く望まれている。
圧縮などの符号化処理を施されていない、いわゆるビットマップの画像データは走査順にメモリ上へ記憶され管理される。従ってその画像を90度回転させるためには走査方向が変わることを意味し、データの記憶位置は画素刻みで変更される必要があり、CPU等の汎用プロセッサだけで処理することは付加が非常に重い。従って、従来から画像データの回転処理を行うためには専用のハードウエアで処理を補助し加速することが多い。
手法としては、第1に画像をnビット四方のブロックに分割する。対象となる画像がnビットの整数倍でないときは擬似的に白地を付加して整数倍にすればよい。
第2にnビット四方のデータ領域をシフトレジスタへ第1の方向から格納する。nビット四方のデータを格納し終えた後に、前記シフトレジスタ内のデータを第1の方向とは直角をなす方向からデータをシフトさせながら読み出す。読み出されたnビット単位のデータはnビット四方の画像を回転した後のデータとなるのでその読み出されたデータを対応する画像メモリ上へ書き戻すことによりnビット四方の領域の回転が終了する。このシフトレジスタの構成は、発明の実施の形態の説明において詳細に説明する。
以上の処理を全ブロックに対して行えば所望された画像の回転が達成される。
個々のブロックの回転動作を行うにあたって、前記のシフトレジスタへのデータの書き込みと回転後データの読み出しはDMAC(ダイレクトメモリアクセスコントローラ)により行わせることが多い。ここでDMACは、回転前と回転後のアドレスを各転送ごとに計算し各データを適切に転送させる機能を有し、さらに前記動作と連動して前記シフトレジスタへの書き込み動作、または読み出し動作を制御するものである。
また、個々のブロックは周期的に配列されているので、DMACのシーケンサーにあるブロックの回転処理が完了したときに次のブロックのアドレスを計算するシーケンスをもたせることによって個々のブロックの回転処理を次々に行わせることも可能である。これはシステムの主制御を行うCPUの負荷を軽減させる効果がある。
数値nの値としては32または64が用いられることが多い。。これは画像データ回転手段と画像メモリを接続するデータバスの幅が、32または64ビットであることが多くそれと等しいことが全体の処理効率の上で有利であることによる。
図6に従来の画像データ回転処理装置の構成を示す。
又、別の従来例としては、特許文献1及び特許文献2をあげることが出来る。
特開平07−200808号公報
特開平07−320053号公報
しかしながら上記のようなバスにおいて、最もバス使用効率が良いのはいわゆるバースト転送と呼ばれる転送形態を使用するときである。バースト転送はアドレスを一度指定した後にデータ転送を4回または8回連続して行うことにより一般に256ビットのデータを転送することである。一方nビット四方のシフトレジスタへデータを転送するときはnビットずつデータを転送するシングルデータ転送をする必要がある。各転送データのアドレスは連続していないことに注意されたい。
シングル転送がバースト転送に比べてバス使用効率が低くなるのは、転送するたびに必要なアドレス、転送属性等の指定、バスを要求するマスター間の調停等がオーバーヘッドとなるからである。
上記のオーバーヘッドはデータの転送方向がリードであるとき、即ち外部の画像メモリから回転前の画像データを読み込むときのリード転送時に顕著となる。これは、ライト転送がコマンドとタイミング的にオーバーラップさせてバスマスタから画像メモリへと送信できるのに対して、リード時はまずバスマスタがリードコマンドを送出して画像メモリ側がコマンドを受信した後リードデータをバスマスタ側へ返信するため、バスを長時間占有する必要があるためである。従って、本発明は回転画像データをリードするときの上記オーバーヘッドの削減を課題とする。
バスは当然ながら画像データ回転処理部のDMAC以外にも様様なバスマスターによって使用される。ある一つのマスターがバスのバンド幅の多くを使用してしまうと、結果的にそれを含むシステムのパフォーマンスを劣化させてしまうことになり問題であった。
バースト転送の転送量に回転手段であるシフトレジスタの一辺の長さを合わせる事は素直な改善方法ではあるが、回転単位が大きくなると回転対象領域が小さいときの無駄が大きくなる。また、256×256=65536個のフリップフロップが必要となり回路規模的にインパクトのあるサイズとなり好ましくない。ここで、先に述べた2方向のデータシフト機能が必要なため、フリップフロップの換わりにより回路的に面積効率の良いSRAM等を使用できないことに注意されたい。
本発明はかかる問題を解決するためになされたものである。即ち、回路的には従来と同程度の規模の構成を維持しつつ、システムバスの使用効率を改善し、さらには処理速度を向上させるものである。
課題を解決するための手段としては、転送単位がLビットであるバスに接続された、画像回転処理装置において、該画像回転器はnビット四方の画像データを回転させる画像回転手段と、該バスから受信したLビットのデータをnビットのデータとL−nビットのデータとに分割する分割手段と、L−nビットのデータをnワード記憶するデータ記憶手段と、該データ記憶手段から出力されたL−nビットのデータと該分割手段から出力されたnビットデータからnビットデータを選択するデータ選択手段と、該データ選択手段から出力されたnビットの画像データは該画像回転手段に入力される手段とを有する。
以上説明したように本発明によればシステムバスのバンド幅を浪費するシングル・リードアクセスを回避し、1/4回のバースト・リード・アクセスにて代行するので他のバスマスタのパフォーマンスに与える悪影響を最小にする。
また、回転回路104が必要とするデータの内3/4はSRAM102から供給されることになり、そのときのデータ・アクセスタイムは画像メモリからのそれと比べて著しく短いため、結局全体の画像の回転処理動作自体の速度が向上するという効果が得られる。
図1は本発明の画像データ回転処理装置を説明する図である。
同図において106はシステムバスであり、画像回転処理装置100と画像メモリ150、制御部160、他のバスマスタ170とを接続する。システムバス106のデータ転送線は64ビットであり転送モードとしては、バスマスタがメモリから64ビットずつデータをリードするシングルリードモード、メモリへ64ビットずつデータをライトするシングルデータライトモード、256ビットずつデータをリードするバーストリードモード、256ビットずつデータをライトするバーストライトモードをサポートする。
105はシーケンサであり、画像回転処理装置100内の動作を制御する。一般にステートマシーンで構成されるが、CPUを用いても良い。
101はシステムバス106からバーストリードモード時にリードされた256ビットの画像データを64ビットのデータ114と192ビットのデータ112とにシーケンサ105の制御に従って分配する分配回路である。
102は分配回路101から出力された192ビットのデータ112をシーケンサ105の制御に従って記憶し、以前に記憶されたデータをシーケンサ105の制御に従って出力するするスタティックランダムアクセスメモリ(以降SRAM)である。
103はSRAM102から出力された192ビットのデータ113と分配回路101から出力された64ビットの中からシーケンサ105の制御に従って64ビットを選択し64ビットデータ115を出力する選択回路である。
104は選択回路103から出力された64ビットのデータ115をシーケンサ105の制御に従って64回取り込み、さらにシーケンサ105の制御に従って64ビットのデータ116を64回出力する画像データ回転回路である。
シーケンサ105は以上述べたように分配回路101、SRAM102、選択回路103、画像データ回転器104をそれらが調和して動作するように制御するシーケンサであり、さらにシステムバス106に対してバスのマスタとして振る舞い、データ111のバーストリード、データ116のシングルライトを実行する。
さらにシーケンサ105は後で述べるように64ビット四方のブロックの複数からなる回転対象画像のアドレス情報と回転後に格納されるべき領域のアドレスの情報を持ち、それらから各ブロックの変換処理を連続して行わせるよう制御するものである。
図2は画像データ回転回路101の内部構成を説明する図である。
同図において200は1ビットのフリップフロップである、図中四角の中のの(0,0)はフリップフロップ200が位置する座標を表し、64×64個のそれぞれが区別される。フリップフロップ200は三つの入力を持ちシーケンサ105の制御により一つが選ばれる。出力も三つであり上方向と左右方向のフリップフロップへ保持している値を出力する。入力の選択のされ方は全フリップフロップが一斉に切り替わる。データを右シフトするときの左端のフリップフロップ、またはデータを左シフトするときの右端のフリップフロップは入力する方向にフリップフロップが無いので固定値を入れておけばよい。その値が出力に影響を与えることは無い。
64ビット四方の画像を時計方向へ回転するために、データをセットするための手順1と読み出すための手順2を説明する。
手順1としてはまず全フリップフロップ200の入力として下方向からのパスを有効にする。次にこの状態で、元画像の上辺1ライン目のデータ115としてを入力し手順2として全フリップフロップの値を更新する。すると1ライン目のデータはフリップフロップ200の(0,0)から(0,63)へセットされる。次に元画像の2ライン目の画像データをデータ115として入力し全フリップフロップを更新すると、1ライン目のデータはフリップフロップ200の(1,0)から(1,63)へシフトし、2ライン目のデータはフリップフロップ200の(0,0)から(0,63)へセットされる。以降64ライン全てが入力されるまで繰り返せば手順1は完了する。
手順2のとしてはまず全フリップフロップ200の入力として右方向からのパスを有効にする。また選択器203の出力116としてはデータ入力201が選択されるように設定する。次にこの状態で全フリップフロップを更新させることにより全データを左へシフトする。するとフリップフロップ200の(0,0)から(63,0)までの64ビットのデータがデータ116として出力されるのでそれを画像メモリ上の第1のライン出力先アドレスへライトする。以上のシフト動作を64回連続させ出力される64ビットデータをその都度対応するラインの画像メモリのアドレスへライトすることによって1ブロックの回転動作が完了する。
画像を時計と反対方向へするときは上記の説明で左右反対の動作を施せばよいので詳しい説明は省略する。
図4は所望の画像データを64ビット四方のブロックへ分割した際、各ブロックの回転処理を行わせる順番を説明する図である。画像データを横方向にk個、縦方向はm−1個に分割した場合を示している。所望の画像データの各辺のサイズが64ビットの整数倍ではないときは余白をつけて64ビット整合させればよい。
新規に選択するブロックは直前のブロックとアドレスが連続するように選択することが特徴である。従って図4とは逆に右から左へ順に処理を行っても本発明の効果は得られるだろう。
図5は分配回路101、SRAM102選択回路103の制御の仕方を説明する図であり、回転元画像の一部を示している。フローチャート図3においてはS302からS305、S312、S313、S314までのフローに相当する。
今ブロック620のiライン目のデータを回転回路104が必要としているとしよう。シーケンサ105はリードアドレスを計算し(S302)、ブロック620が画像の左端であるかをチェックする(S303)。ここでは左端ではなくNOになるのでS312としてアドレスの下位4ビット目と3ビット目ともに0であるかを調べる。ここでは領域610から領域613までの256ビット領域の先頭64ビットの領域であるから、0となり画像メモリからデータをリードするステップ、S304へ進む。対象ブロックが左端の場合SRAM102内のデータは全て無効であることに注意されたい。
S304においては、必要なリードデータの領域610を含む256ビットの領域を一気に画像メモリ150からバーストリードする。リードされたデータは分配器101にて[255:192]までが64ビットデータ114として、[191:0]までが192ビットデータ112として出力される。選択回路103はこのときシーケンサ105によりデータ114を選択するように制御され、64ビットデータ115として回転回路へ必要な64ビットデータを出力する。
一方192ビットデータ112はSRAM102へ格納される。ことときSRAM102へ与えられるアドレスはi−1となる。
次にSRAM102のデータが再利用されるケースの説明を行う。今、ブロック621のiライン目のデータを回転回路104が必要としているとしよう。シーケンサ105は先程と同様にリードアドレスを計算し(S302)、ブロック621が画像の左端であるかをチェックする(S303)。ここでも左端ではなくNOになるのでS312としてアドレスの下位4ビット目と3ビット目ともに0であるかを調べる。ここでは領域610から領域613までの256ビット領域内の第2の64ビットの領域であるから、NOとなりSRAM102からデータをリードするステップ、S313へ進む。S313においては、必要なリードデータの領域610を含む192ビットのデータ一気にSRAM102からリードする。リードされたデータは選択回路103にて[191:128]までが64ビットデータ115として回転回路へ必要な64ビットデータを出力する。以上述べたようにSRAM102内のデータを利用するケースにおいてはシステムバス106のバンド幅を消費することなく、また高速に64ビットデータ115を得ることができる。
図3は、以上の説明を含み全体のフローを説明するフローチャートである。
まずS301として、CPU160は対象データの大きさ、元画像のアドレス、回転後画像の格納アドレス、回転方向などの属性をシーケンサ105内のレジスタにセットした後に、動作を開始させる。
シーケンサ105は以降終了するまで、自律的に動作する。ステップ302からステップ306の手前までの64ビットデータをロードするシーケンスは先に説明したとおりであり、S306はそれらを64回繰り返させるための条件分岐である。即ち64回64ビットデータをリードしたならばS307へ進みライトデータのアドレスを計算した後に、図2の説明で述べたように回転回路を左シフトすることにより回転後データを出力し(S308)、条件分岐309によって画像の出力動作を64回繰り返す。以上のS302からS309までが1ブロックの回転動作に対応する。画像の回転方向は時計と同じ方向としている。
シーケンサ105は図4で説明したように水平方向に沿ってブロックを順次選択し全部ロックをの処理が終わったならば(S310)、S311にて割り込みを発生し、CPUへ通知する。
Claims (2)
- 転送単位がLビットであるバスに接続された、画像回転処理装置であって、
該画像回転処理装置はnビット四方の画像データを回転させる画像回転手段と、
該バスから受信したLビットのデータをnビットのデータとL−nビットのデータとに分割する分割手段と、
該L−nビットのデータをnワード記憶するデータ記憶手段と、
該データ記憶手段から出力されたL−nビットのデータと該分割手段から出力された該nビットデータからnビットデータを選択するデータ選択手段と、
該データ選択手段から出力されたnビットの画像データは該画像回転手段に入力され回転処理されることを特徴とする画像データ回転処理装置。 - 請求項1の画像回転処理装置であって数値Lは数値nの整数倍であることを特徴とする画像データ回転処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004349630A JP2006165639A (ja) | 2004-12-02 | 2004-12-02 | 画像データ回転処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004349630A JP2006165639A (ja) | 2004-12-02 | 2004-12-02 | 画像データ回転処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006165639A true JP2006165639A (ja) | 2006-06-22 |
Family
ID=36667199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004349630A Withdrawn JP2006165639A (ja) | 2004-12-02 | 2004-12-02 | 画像データ回転処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006165639A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958112A (zh) * | 2010-10-13 | 2011-01-26 | 福州瑞芯微电子有限公司 | 手持设备屏幕画面同时实现90度和270度旋转的方法 |
-
2004
- 2004-12-02 JP JP2004349630A patent/JP2006165639A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958112A (zh) * | 2010-10-13 | 2011-01-26 | 福州瑞芯微电子有限公司 | 手持设备屏幕画面同时实现90度和270度旋转的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007034392A (ja) | 情報処理装置及びデータ処理方法 | |
JP2009223758A (ja) | 画像処理装置 | |
JP2001084229A (ja) | Simd型プロセッサ | |
JP2006165639A (ja) | 画像データ回転処理装置 | |
JP2005182538A (ja) | データ転送装置 | |
US5148517A (en) | Print data generator | |
JP2007164552A (ja) | メモリ制御装置およびデータ転送方法 | |
JP3251447B2 (ja) | 符号化装置及び方法、並びに復号化装置及び方法 | |
US11080574B2 (en) | Image processing apparatus | |
JP3971543B2 (ja) | Simd型プロセッサ | |
JP4516495B2 (ja) | Simd型マイクロプロセッサにおけるデータ処理方法 | |
EP1163640B1 (en) | Bit string conversion device and method | |
JP4442907B2 (ja) | Simd型プロセッサ | |
JP2009017060A (ja) | 画像処理装置 | |
JP2006024134A (ja) | Dma転送装置及びdma転送方法 | |
JP2008044106A (ja) | 画像形成装置、画像形成装置の動作方法、画像処理用asic、画像処理用asicの動作方法、およびプログラム | |
JP2002036631A (ja) | 画像形成装置 | |
JP2002084414A (ja) | 画像処理方法及び装置及びプログラム並びに記憶媒体 | |
JP4413905B2 (ja) | Simd型プロセッサ | |
JP3473746B2 (ja) | データ送受信回路 | |
JP2002024157A (ja) | Dma処理方法およびdma処理装置 | |
JPS63245568A (ja) | 画像変換装置 | |
JPH0195063A (ja) | 出力データ回転方式 | |
JP2008236085A (ja) | 画像処理装置 | |
JP2004362176A (ja) | 集積回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080205 |