JP2000207541A - 画像回転装置及び方法 - Google Patents

画像回転装置及び方法

Info

Publication number
JP2000207541A
JP2000207541A JP11004577A JP457799A JP2000207541A JP 2000207541 A JP2000207541 A JP 2000207541A JP 11004577 A JP11004577 A JP 11004577A JP 457799 A JP457799 A JP 457799A JP 2000207541 A JP2000207541 A JP 2000207541A
Authority
JP
Japan
Prior art keywords
address
image
memory
pixel
value
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
Application number
JP11004577A
Other languages
English (en)
Inventor
Akihiko Uekusa
明彦 植草
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP11004577A priority Critical patent/JP2000207541A/ja
Publication of JP2000207541A publication Critical patent/JP2000207541A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

(57)【要約】 【課題】少ないメモリで画像の回転処理を行う。 【解決手段】3×4の画像を回転させる場合、回転前の
画像領域(c0)の先頭アドレスから順次注目し、その
注目アドレスから、注目アドレスに回転後に移動される
画素のアドレスを求め、注目画素と交換する(c1)。
求められたアドレスがすでに交換済みの画素のアドレス
であれば、そのアドレスから画素が移動された先のアド
レスを再計算し、そのアドレスの画素と注目アドレスの
画素とを交換する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、画像処理装置に関
するものであり、特に、少ないメモリ使用量で原画像を
回転するのに好適な画像回転装置及び方法に関する。
【0002】
【従来の技術】コンピュータのメモリに展開された画像
データをCRTに表示したりプリンタに出力したりする
場合、展開された画像データによっては、コンピュータ
のメモリ上でこれを90度あるいは270度回転させな
ければならない場合がある。
【0003】例えば画像読取装置がフラットベットのス
キャナで、その原稿台がA4サイズであり長さ方向に画
像を読取る装置を使用した場合、コンピュータのメモリ
上にはA4縦置きのイメージが読み込まれる。この時原
稿がA4横の写真である場合、CRT上で天地を正しく
表示するためには90度あるいは270度回転しなくて
はならない。
【0004】別の例では、常にランドスケープ(横長)
の形で画像データを記録し、コンピュータに画像を出力
するデジタルカメラで、カメラを縦に構えて撮影したポ
ートレート(縦長)の写真の場合、やはりコンピュータ
上で90度あるいは270度画像を回転する必要があ
る。
【0005】そこで、ビットマップ形式の画像データを
回転処理する方法が、例えば特開平2−297679号
公報、特開平2−103678号公報、特開平2−28
891号公報にも記載されているように、いくつか提案
あるいは実用化されている。
【0006】しかしながら、これらの画像データの回転
処理の方法は、例えば図7に示すように、2つの記憶領
域A,Bを用意し、記憶領域Aに回転処理前の原画像デ
ータをいったん書き込み、次にこの記憶領域Aの画像デ
ータを座標変換しながら記憶領域Bにコピーするもので
ある。
【0007】したがって、図7の画像データの回転処理
の方法による場合には、コピー先の記憶領域Bは、記憶
領域Aと等しいメモリ容量が必要となるので、メモリ容
量は、全体として最低でも処理される原画像データの2
倍必要である。
【0008】例えばA4版のイメージを解像度400d
piで読み込むと、A4版は297mm×210mmである
から 297mm/25.4mm×400=4677画素 210mm/25.4mm×400=3307画素 1画素を1バイトで表現すると、4677×3307×
1=約15Mバイトとなるので、回転処理のためには2
倍の約30Mバイトが必要となる。
【0009】
【発明が解決しようとする課題】したがってメモリ容量
の小さいシステムにおいては、このような画像回転処理
はできなかった。
【0010】画像格納領域を必ずしもコンピュータの実
メモリ上に取らず、例えばUNIXのようなオペレーテ
ィングシステムでは仮想メモリを用いて、ハードディス
クのような大容量の二次記憶装置に実メモリサイズを越
えるメモリ領域を割り当て、実メモリとのメモリスワッ
ピングによる方法で実メモリ容量を越える処理を可能に
するシステムでは、上述のような回転処理を実メモリの
半分を越える原画像に対しても行うことが可能である。
しかしながら、この場合は実メモリをこえるメモリ領域
への読み出し、書き込みは、処理速度が非常に遅い二次
記憶領域に対するアクセスとなり、画像回転のような処
理においてはメモリスワッピングにより極端に処理効率
が低下する事が知られている。したがって、この場合も
2次記憶装置へのアクセスによる速度低下を避けるため
には、原画像の格納領域より大きなメモリ領域、できれ
ば2倍のメモリ領域を使用する必要があった。
【0011】本発明は斯かる不利益を除き、原画像を格
納するためのメモリだけを使用して画像を所望の角度回
転する画像回転装置及び方法を提供することを目的とす
る。
【0012】
【課題を解決するための手段】上記目的を達成するため
に本発明の画像回転装置は以下のような構成からなる。
【0013】原画像を展開する画像メモリと、前記原画
像が展開された画像領域の先頭アドレスから最終アドレ
スに向けて順次一画素ずつ回転後の画像を構成する画像
を格納していくためのアドレスを発生する書込みアドレ
ス発生手段と、前記書込みアドレス値から、該書込みア
ドレスに格納されるべき回転後の画素データを原画像か
ら読出すための読出しアドレスを計算する読出しアドレ
ス計算手段と、前記読出しアドレス計算手段で計算され
たアドレスが、すでに回転後の画像が格納済のアドレス
であるかどうかを判定する判定手段と、前記読出しアド
レス計算手段で計算されたアドレスが前記判定手段にお
いて、すでに回転後の画像が格納済のアドレスであると
判定された場合に、該読出しアドレス計算手段から出力
される読出しアドレスが前記判定手段で回転後の画像が
未格納なアドレスであると判定されるまで、繰り返し前
記計算手段によって得られる読出しアドレスを再入力し
て読出しアドレスを再計算させる読出しアドレス発生手
段と、前記読出しアドレス発生手段によって最終的に決
定された読出しアドレスの画素データを前記書き込みア
ドレスの画素データを交換する手段とを有する。
【0014】あるいは、メモリに展開された画像データ
を回転する画像回転方法であって、回転後の画像の各画
素を示す第1のメモリポインタ値から、それに対応する
原画像上の画素を示す第2のメモリポインタ値を計算す
るステップと、前記画像メモリを先頭から最後まで順
次、前記第1のメモリポインタで走査しながら、該第1
のメモリポインタが示すアドレス値を回転後の画像の画
素を示すメモリのアドレス値として、前記アドレス値を
計算するステップと、これに対応する原画像上の画素を
示すメモリのアドレス値を計算して、前記第2のメモリ
ポインタに設定するステップと、前記走査を遂行してい
る間、第2のメモリポインタに設定されたアドレス値
が、第1のメモリポインタのアドレス値よりも小さいか
否かを判定し、判定が真の場合は、該第2のメモリポイ
ンタのもつアドレス値を回転後の画像の画素を示すメモ
リのアドレス値として、前記アドレス値を計算するステ
ップによって、これに対応する原画像上の画素を示すメ
モリのアドレス値を再計算して、前記第2のメモリポイ
ンタに再設定をする処理を行い、該第1の第2のメモリ
ポインタ値の判定とそれに伴う第2のポインタ値の該再
設定処理を、判定が負になるまで繰り返すステップと、
前記走査を遂行している間に行われる前記判定処理の結
果が負になった時に、第1と第2のメモリポインタが示
すメモリアドレスのデータを交換するステップとを備え
る。
【0015】あるいは、メモリに展開された画像データ
を回転するプログラムを記録した媒体であって、前記プ
ログラムは、回転後の画像の各画素を示す第1のメモリ
ポインタ値から、それに対応する原画像上の画素を示す
第2のメモリポインタ値を計算するステップと、前記画
像メモリを先頭から最後まで順次、前記第1のメモリポ
インタで走査しながら、該第1のメモリポインタが示す
アドレス値を回転後の画像の画素を示すメモリのアドレ
ス値として、前記アドレス値を計算するステップと、こ
れに対応する原画像上の画素を示すメモリのアドレス値
を計算して、前記第2のメモリポインタに設定するステ
ップと、前記走査を遂行している間、第2のメモリポイ
ンタに設定されたアドレス値が、第1のメモリポインタ
のアドレス値よりも小さいか否かを判定し、判定が真の
場合は、該第2のメモリポインタのもつアドレス値を回
転後の画像の画素を示すメモリのアドレス値として、前
記アドレス値を計算するステップによって、これに対応
する原画像上の画素を示すメモリのアドレス値を再計算
して、前記第2のメモリポインタに再設定をする処理を
行い、該第1と第2のメモリポインタ値の判定とそれに
伴う第2のポインタ値の該再設定処理を、判定が負にな
るまで繰り返すステップと、前記走査を遂行している間
に行われる前記判定処理の結果が負になった時に、第1
と第2のメモリポインタが示すメモリアドレスのデータ
を交換するステップとを含む。
【0016】あるいは、連続する記憶領域に格納された
W×H画素の画像を回転する画像回転方法であって、前
記記録領域の注目アドレスに画像回転後に位置するはず
の画素のアドレスを算出する算出工程と、前記注目アド
レスの画素と前記算出工程により算出されたアドレスの
画素とを交換する交換工程とを備え、前記算出工程にお
いては、前記注目アドレスは前記記録領域の先頭から順
次増加され、また、算出された回転後のアドレスが注目
アドレス以前のアドレスである場合には、算出されたア
ドレスから、前記交換工程により画素が移動された先の
アドレスの再計算を前記算出工程により行い、該再計算
を、算出された回転後のアドレスが注目アドレスより前
のアドレスでなくなるまで繰り返す。
【0017】
【発明の実施の形態】以下、図面を参照して本発明を詳
細に説明する。
【0018】図1は本発明の一実施例を示す画像回転処
理装置のブロック図である。同図において、CPU10
1はマイクロプロセッサで、演算、論理判断、メモリア
クセス等を行い本発明の画像回転手段を実行する。Aは
アドレスバスで、制御対象を指示する信号を転送する。
Dはデータバスで、各種データを転送するもので、双方
向性のバスである。Cはコントロールバスで、各種制御
対象に制御信号を印加するものである。
【0019】KB102はキーボードで、文字やファン
クション、コマンド等を備え、ここにポインティングデ
バイスを備える事もできる。KBCはキーボードコント
ローラで、キーボードKBより入力されたデータをエン
コードし、またインタラプト信号をコントロールバスC
に送る。CRCはCRTコントローラで、CRT装置C
Rを制御する。CRT装置103は、イメージ、文字、
図形等を表示しうるものである。ROM102は制御メ
モリで、システム制御プログラムと図3に示す本発明に
係る画像回転プログラム等を記憶するものである。上記
制御メモリROM102は、ROMコントローラROM
Cにより記憶された処理手順が読出される。RAM10
9はランダムアクセスメモリで、画像データが画像デー
タ領域に、プログラム実行データがプログラム領域に格
納され、RAMコントローラRAMCによって制御され
る。PD106はプリンタで、イメージ、文字、図形等
を印刷するものであり、プリンタコントローラPDCで
制御される。SD107はスキャナ、デジタルカメラ等
の画像入力装置で、画像入力装置コントローラSDCに
よって制御され画像イメージをRAMに読み込む。DI
SK105は磁気ディスク装置で、OSや画像入力装置
SDで読み込まれた画像を記憶したり、図3に示す本発
明に係る画像回転プログラムをROM102の替わりに
記憶するものであり、磁気ディスクコントローラDIS
KCにより制御される。FDISKはプログラム実行フ
ァイルを記憶するフロッピーディスクで、FD108は
FDISKのファイルを読み書きできるフロッピーディ
スク装置であり、フロッピーディスクコントローラFD
Cにより制御される。磁気ディスク装置に記憶した本発
明による画像回転プログラムをフロッピーディスクFD
ISKに格納したり、フロッピーディスクFDISKに
格納した本発明に係るプログラムを磁気ディスク装置D
ISKにロードすることができる。
【0020】上述の構成によりなる実施例の動作を次に
詳細する。
【0021】本画像回転装置は、システム制御プログラ
ム、OS、および画像回転プログラムをCPUが実行す
ることにより動作する。本画像回転装置では、システム
の立ち上げと共に自動的にROM102からシステム制
御プログラムがRAM109上のプログラム領域にロー
ドされ、続いてシステム制御プログラムによって磁気デ
ィスク装置105に記録されているOSをRAM上にロ
ードしてOSの動作が開始される。
【0022】画像回転プログラムは、図3に示されるフ
ローチャートに基づいてプログラムコード化されたもの
である。本実施例では前記プログラムコードである実行
ファイルはフロッピーディスクFDISK中に記録され
ており、その記録されている内容の構成を図7に示す。
【0023】フロッピーディスクFDISKに記録され
た画像回転プログラムは、図10に示すようにフロッピ
ーディスク装置FDを通じて本コンピュータシステムに
ロードすることができる。このフロッピーディスクFD
ISKをフロッピーディスク装置FDにセットすると、
OSおよびシステム制御プログラムの制御のもとに本画
像回転プログラムがフロッピーディスクFDISKから
読出され、RAM109にロードされて動作可能とな
る。図8は、本画像回転プログラムがRAM109にロ
ードされ実行可能となった状態のメモリマップを示す。
【0024】システム制御プログラムによって、例えば
画像入力装置107から画像を読み込みRAM109の
画像データ領域に展開したり、展開された画像を図1磁
気ディスク装置105に保存したり、また磁気ディスク
装置105に保存した画像データを、RAM109の画
像データ領域に展開する。画像データ領域に転回された
イメージは、CRT装置104に表示したり、プリンタ
106に印刷することができる。RAM109の画像デ
ータ領域に展開した画像を本発明に係る画像回転方法で
回転するには、図3及び図4あるいは図3及び図5の手
順が記述されたプログラムをROM102か磁気ディス
ク装置105かフロッピーディスク106からRAM1
09のプログラム領域に読み込んでCPU101によっ
て実行する。
【0025】<90度回転>図2は、本実施例の動作を
説明するための例で、RAMの画像データ領域に展開さ
れた、幅3画素、高さ4画素の原画像(a1)を90度
回転させ、幅4画素、高さ3画素の画像(a2)を同じ
画像データ領域上に得るための手順を示す模式図であ
る。図3,4は、この処理を行うプログラムのアルゴリ
ズムを示したフローチャートである。このアルゴリズム
を実現するプログラムはROM102あるいは磁気記憶
装置105などからRAM109上のプログラム領域に
読み込まれ、CPU101によって実行される。
【0026】画像データに高さと幅の属性を持たせて、
図2(a1)や(a2)のように表示したり印刷するの
はシステム制御プログラムの機能であり、どちらの場合
もRAMの画像メモリ内では1次元のアドレスで管理さ
れる。つまり(a1)の画像はメモリ中では(b1)の
ような1次元のデータ配置であり、回転後の(a2)の
画像は(b2)のような1次元のデータとして表現さ
れ、どちらも同じメモリサイズのデータである。このよ
うに画像の回転処理は、図2の例のように(b1)のデ
ータを同一メモリ上で(b2)のように並び替える事で
実現できる。
【0027】本実施形態のアルゴリズムでは、原画像が
格納された同じメモリ領域上に回転処理後の画像を上書
きしていくが、上書きにより消滅してしまう回転処理前
の画素データを、上書きする画素データが存在したメモ
リ位置に退避させながら処理を行うことで、同一メモリ
領域上での回転処理を可能とする。
【0028】図2(a1)の画像に図3のアルゴリズム
を実行した場合、図2のステップ1からステップ12の
手順で画像90度回転のための並び替え処理が行なわれ
る。図2(c0)から(c12)は各ステップでの画像
メモリ上の1次元データ配置を示し、図2(d0)から
(d12)は、対応するデータ(c0)〜(c12)を
回転後の座標系で表示した場合のイメージを参考として
示す。なお、本実施例では各画素は1バイトで表現され
ていると仮定する。また各画素を示す図の矩形の中に書
かれた数値は画素データを示す。実際には例えば黒を示
す0×00、白を示す0×ff、中間調を示す0×8a
のようなグレースケールの値や、パレットカラーで表現
されたカラー画像の場合はパレットへのインデックス値
が格納されている。
【0029】図3において、まずステップS1で画像を
画像メモリに格納する。原画像展開後の初期状態が図2
(c0)である。原画像は例えば画像入力装置107か
らCPU101の指示で、RAM109の画像データ領
域に展開してもよいし、磁気記憶装置105に保存され
た画像を読出して展開してもよい。RAM109の画像
データ領域に展開された図2(c0)のデータは、原画
像の座標系(横3画素、縦4画素)で表示した場合、図
2(a1)のように原画像のイメージを表示できるが、
このデータを回転後の座標系(横4画素、縦3画素)で
表示した場合(図2(d0))には無意味なイメージと
なっている。
【0030】図3のステップS2「書込みアドレス発
生」では、順次画像メモリの最初から最後にかけて、回
転後の画素を書込むアドレス、すなわち注目アドレスを
発生する。具体的には書込みアドレスは、画像メモリの
先頭を示すアドレス0から始まり、ステップ毎(1階の
ループ毎)に1画素分ずつインクリメントされていく。
ステップS2では、最初書込みアドレスに0がセットさ
れる。
【0031】ステップS3の判定では、本例では全画像
サイズは12バイト(3×4)であるので、書込みアド
レスが12となったら終了と判定される。
【0032】ステップS4の読出しアドレス発生処理で
は、ステップS2で発生された注目アドレスに、回転後
の画素として書き込まれる画素のアドレスを計算して、
読出しアドレスにセットする。このステップS4の処理
の詳細を図4のステップS41からステップS44に示
す。
【0033】ステップS41で、CPU101のレジス
タwadrに書込みアドレスの値をセットする。ステッ
プS42で回転後の画像のwadrに示されるアドレス
に格納すべき画素が存在するアドレスを計算してCPU
のレジスタradrにセットする。この計算は単純な画
像回転のための座標変換式によって行われる。回転後の
画像の任意の画素の1次元座標における位置wadrか
ら、その画素に対応する回転前の原画像の画素の1次元
座標における位置radrを求める関数は以下のように
なり、以下これを「変換式」と呼ぶ。
【0034】 radr=(W*(wadr%H)+(W-(wadr/H)-1) (式1) ここで、Wは回転前の原画像の幅であり、Hは同高さで
ある。この例ではW=3,H=4である。演算子%は整
数除算による余りを示し、例えば13%4は1である。
演算子/は整数除算の結果小数点以下を切り捨てた値を
示す。例えば13/4は3である。演算子*は積算で例
えば13*3は39である。
【0035】wadr=0における変換式の結果は(3
*(0%4)+(3−(0/4)−1))となり、ra
dr=2となる。この場合、ステップS43におけるr
adr<wadrの判定結果は偽であるので、読出しア
ドレス発生処理を終了する。つまり書込みアドレスであ
るアドレス0には、回転後の画像の画素としてはrad
rが示す読出しアドレス2が持つ画素データが格納され
なければならない。ここでアドレス2のデータをアドレ
ス0に書込むとアドレス0のデータが失われてしまう。
当然アドレス0のデータも別の位置に移動して回転後の
画像の1部を構成しなければならないので、上書きで失
われてはならない。データが書込まれるアドレス0に現
在あるデータは、上書きするデータが読出されたアドレ
ス2が空きになるので、そこに退避する。この処理がス
テップS5であり、書込みアドレスのデータと読出しア
ドレスのデータを交換する。
【0036】このように、図3のステップ5では、注目
アドレスが0の場合、図2(c1)に示すようにアドレ
ス0とアドレス2のデータとが交換される。
【0037】図3の2回目のステップS2では、書込み
アドレスが1つインクリメントされて1となる。以下同
様の処理により、(式1)によって読出しアドレスとし
て5を得て、図2(c2)のようにアドレス1とアドレ
ス5のデータが交換される。
【0038】図2の3回目のステップS2では、同様に
図2(c3)のようにアドレス2とアドレス8のデータ
の交換、4回目のステップS2では、同様に図2(c
4)のようにアドレス3とアドレス11のデータの交換
が行われる。
【0039】図2の5回目のステップS2では、書込み
アドレス4に対して、図3のステップS42で最初ra
dr=1が得られる。つまり回転後の画像のアドレス4
に格納されるべきデータは、原画像の状態のデータ(図
2(c0))のアドレス1にあった事を示している。こ
の場合、図3ステップS43でradr<wadrが判
定され、1<4なので真となる。これはアドレス0から
アドレス3の領域にはすでに回転後のデータが格納済み
で、原画像の時にそこにあった画素データは回転後のデ
ータを格納した時に他のアドレスに退避されていること
を意味する。そこにあったデータは先の変換式の結果が
示すアドレスに移動しているので、図3のステップS4
4に進み、wadrにradrの値である1をセットし
てステップS42の変換式を再び実行し、過去のステッ
プで他の場所に退避されているアドレス1のデータの退
避先を計算する。
【0040】wadrに1をセットした変換式(式1)
の再計算によりradr=5を得る。ステップS43で
radr<wadrは偽であると判定されるので、読出
しアドレスは5と決定される。この例では、図2の2回
目のステップS2で、アドレス1のデータはアドレス5
に退避されている。再計算によって、この退避先のアド
レス5が得られたことになる。そして、ステップS5で
アドレス4とアドレス5のデータを交換する(図2(c
5))。
【0041】図2の6回目のステップS2では、同様に
書込みアドレス5に対して、最初radr=4が得ら
れ、4<5であるので、ここにはすでに回転後のデータ
を格納済みであり期待するデータは無い。図3ステップ
S44でwadrにradrの値4をセットし、図3ス
テップS42へ進み、変換式によってradrにアドレ
ス4の交換先であるアドレス1を得る。ところがステッ
プS43でやはり1<5は真であり、アドレス1にも期
待するデータは存在しない。三度wadrにradrの
値1をセットして、変換式を実行し(ステップS44,
S42)、radr=5を得る。ステップS43でra
dr<wadrは偽であるので、ようやく書込みアドレ
ス5に格納すべきデータの現在の所在地としてアドレス
5を得る。ステップS5に進み、データの交換を行う。
たまたまこの場合は期待するデータがアドレス5にすで
に移動済であったので、書込みアドレスと読出しアドレ
スの値が同一で、図2(c6)のようにデータに変化は
ない。
【0042】以下同様の手順で、7回目のループでは、
図2(c7)のようにアドレス6とアドレス7のデータ
の交換、8回目のループでは、c8のようにアドレス7
とアドレス10のデータの交換、9回目のループでは、
図2(c9)のようにアドレス8とアドレス8のデータ
の交換、10回目のループでは、図2(c10)のよう
に、アドレス9とアドレス11のデータの交換、11回
目のループでは、図2(c11)のようにアドレス10
とアドレス10のデータの交換、12回のループでは、
図2(c12)のようにアドレス11とアドレス11の
データの交換が起こる。
【0043】12回目のループが完了すると、図3ステ
ップS2で発生する書込みアドレスが12となり、ステ
ップS3で終了判定がなされ回転処理が終了する。図2
(c12)のデータは、図2(b2)が示す90度回転
したデータと同じになっており、幅4高さ3の座標系で
プロットした場合(a2)のように90度回転したイメ
ージを表示または印刷できる。
【0044】以上のようにして、画像領域内の注目アド
レスに、そのアドレスに回転処理によって移動されるべ
き画素のアドレスを変換式によって求め、そのアドレス
の画素と注目アドレスの画素とを交換することで、回転
される画像の納められているメモリだけを用いて画像の
回転処理を実行する。その際、交換の対象となる画素の
アドレスが、すでに交換が行われているアドレス場合に
は、そのアドレスに前述した変換式を施す。これによ
り、そのアドレスに格納されていた画素が交換によって
移動された先のアドレスが求められる。これを、初めて
交換の対象となるアドレスが求められるまで繰り返せ
ば、元々の注目アドレスの画素と交換すべき画素のアド
レスが求められる。
【0045】本実施例では、初めて交換対象となるアド
レスであるか否かは、注目画素を画像領域の先頭から順
に進めることで行っている。すなわち、求められた交換
対象のアドレスが注目画素以前のアドレスであれば、す
でに交換済みと判定できる。したがって、交換済みか否
かの判定ができさえすれば、画素毎に交換済みか否かを
示すフラグを設けたり、あるいは、回転後の画素のアド
レスを基準となる注目画素とし、そのアドレスから回転
前の対応する画素のアドレスを求めて、画素を交換する
ようにすることもできる。
【0046】<270度回転>次に先の実施例と同様の
アルゴリズムで270度回転を行う場合に関して説明す
る。図5は270度回転のアルゴリズムを示すフローチ
ャートである。図4との相違点はステップS42の変換
式だけである。270度回転後の任意の画素を示すアド
レスwadrと、対応する原画像の画素を示すアドレス
radrとの変換式は以下のものとなる。
【0047】 radr=((W*H)-W+(wadr/H)-(W*(wadr%H) (式2) どのような変換式であってもwadrに対してradr
の値が1つに確定できる変換式による場合、先の実施例
と全く同じ手順で、同一画像メモリ上で画像変換を行う
事ができる。したがって変換式を変更する事でどのよう
な角度の回転でも本発明のアルゴリズムによって作業用
領域を使用せずに回転する事ができる。
【0048】図2と同様のステップで、画像メモリの先
頭から順に、270度回転後の画素データを格納してい
くが、変換式が異なるため90度回転の時とは異なる読
出しアドレスとの間でデータを交換しながら処理が進
む。しかしながら読出しアドレスの候補sadrが、図
5ステップS43の判定で、すでに画像格納処理済みと
判断された場合、先の実施例と同じ理屈で退避先を捜し
だすことができる。図5に270度回転の場合の画像デ
ータの処理の過程を示す。
【0049】また、三角関数を用いた任意の角度の画像
回転においても、変換式は回転後と回転前の画素位置が
1対1に対応するので、前記変換式だけを置き換える事
で、同一メモリ上での処理が可能である。
【0050】また前述の実施例では、回転後の画像を画
像メモリの先頭から順に格納していったが、図4あるい
は図5のステップS43において変換式で算出された読
出しアドレスの候補がすでにデータ格納済みであるかど
うかの判定が容易であれば、どのような順序で図3ステ
ップS2において書込みアドレスを発生しても構わな
い。前述の実施例では図4ステップS43で書込みアド
レスの発生を、ステップ毎に画像メモリの先頭から1画
素分ずつインクリメントしていたため、図4ステップS
43で読出しアドレスの候補が格納処理済みかどうかの
判定は、その読出しアドレスの候補が、書込みアドレス
より小さい値かどうかを判定するだけで可能であった。
【0051】したがって図3のステップS2において画
像の最終画素から先頭画素へデクリメントして方法で書
込みアドレスを発生し、図4及び図5のステップS43
での判定を radr>wadr のようにすれば、前述実施例と全く同じ動作をする。
【0052】なお、本実施例では、フロッピーディスク
FDISKから画像回転プログラムをRAMにロードし
て実行させる例を示したが、この他にもフロッピーディ
スクFDISKから画像回転プログラムを一旦磁気記憶
装置DISKに格納(インストロール)しておき、本画
像回転プログラムを動作させる段に磁気記憶装置DIS
KからRAMにロードするようにしても良い。
【0053】また本画像回転プログラムを記録する媒体
は、フロッピーディスク以外にCD−ROM、ICメモ
リカード等であっても良い。更に本画像回転プログラム
をROMに記録しておき、これをメモリマップの一部と
なすように構成し、直接実行することを可能である。
【0054】
【他の実施形態】なお、本発明は、複数の機器(例えば
ホストコンピュータ,インタフェイス機器,リーダ,プ
リンタなど)から構成されるシステムに適用しても、一
つの機器からなる装置(例えば、複写機,ファクシミリ
装置など)に適用してもよい。
【0055】また、本発明の目的は、前述した実施形態
の機能を実現する、図3及び図4、あるいは図3及び図
5のプログラムコードを記録した記憶媒体を、システム
あるいは装置に供給し、そのシステムあるいは装置のコ
ンピュータ(またはCPUやMPU)が記憶媒体に格納
されたプログラムコードを読出し実行することによって
も達成される。
【0056】この場合、記憶媒体から読出されたプログ
ラムコード自体が前述した実施形態の機能を実現するこ
とになり、そのプログラムコードを記憶した記憶媒体は
本発明を構成することになる。
【0057】プログラムコードを供給するための記憶媒
体としては、例えば、フロッピディスク,ハードディス
ク,光ディスク,光磁気ディスク,CD−ROM,CD
−R,磁気テープ,不揮発性のメモリカード,ROMな
どを用いることができる。
【0058】また、コンピュータが読出したプログラム
コードを実行することにより、前述した実施形態の機能
が実現されるだけでなく、そのプログラムコードの指示
に基づき、コンピュータ上で稼働しているOS(オペレ
ーティングシステム)などが実際の処理の一部または全
部を行い、その処理によって前述した実施形態の機能が
実現される場合も含まれる。
【0059】さらに、記憶媒体から読出されたプログラ
ムコードが、コンピュータに挿入された機能拡張ボード
やコンピュータに接続された機能拡張ユニットに備わる
メモリに書込まれた後、そのプログラムコードの指示に
基づき、その機能拡張ボードや機能拡張ユニットに備わ
るCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれる。
【0060】
【発明の効果】以上説明したように本発明によれば、回
転処理前の原画像が格納されたメモリ上に回転処理後の
画像を上書きしていくが、上書きにより消滅してしまう
回転処理前の画素データを読出しアドレスのメモリ位置
に退避させながら回転処理ができる。したがって原画像
を格納するのに必要なメモリ領域だけが確保できれば回
転処理が可能であり、別の作業用のメモリを全く必要と
しない。これによりメモリが小さなシステムにおいても
比較的大きな画像の回転処理を行うことができる。
【図面の簡単な説明】
【図1】本発明による一実施例を示すブロック図であ
る。
【図2】図1に示すメモリRAM中の画像データが90
度回転処理されていく仮定を模式的に示す図である。
【図3】画像回転の制御手順を示す図である。
【図4】90度回転の制御手順を示す図である。
【図5】270度回転の制御手順を示す図である。
【図6】図1に示すメモリRAM中の画像データが27
0度回転処理されていく仮定を模式的に示す図である。
【図7】従来の画像メモリを2倍使用して回転処理を行
う処理の説明図である。
【図8】実施例の処理を実行する際のメモリマップの図
である。
【図9】実施例の処理を実行するプログラムを格納した
記憶媒体のファイル構成の図である。
【図10】フロッピディスクを読みとるパーソナルコン
ピュータの図である。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 原画像を展開する画像メモリと、 前記原画像が展開された画像領域の先頭アドレスから最
    終アドレスに向けて順次一画素ずつ回転後の画像を構成
    する画像を格納していくためのアドレスを発生する書込
    みアドレス発生手段と、 前記書込みアドレス値から、該書込みアドレスに格納さ
    れるべき回転後の画素データを原画像から読出すための
    読出しアドレスを計算する読出しアドレス計算手段と、 前記読出しアドレス計算手段で計算されたアドレスが、
    すでに回転後の画像が格納済のアドレスであるかどうか
    を判定する判定手段と、 前記読出しアドレス計算手段で計算されたアドレスが前
    記判定手段において、すでに回転後の画像が格納済のア
    ドレスであると判定された場合に、該読出しアドレス計
    算手段から出力される読出しアドレスが前記判定手段で
    回転後の画像が未格納なアドレスであると判定されるま
    で、繰り返し前記計算手段によって得られる読出しアド
    レスを再入力して読出しアドレスを再計算させる読出し
    アドレス発生手段と、 前記読出しアドレス発生手段によって最終的に決定され
    た読出しアドレスの画素データを前記書き込みアドレス
    の画素データを交換する手段とを有することを特徴とす
    る画像回転装置。
  2. 【請求項2】 メモリに展開された画像データを回転す
    る画像回転方法であって、 回転後の画像の各画素を示す第1のメモリポインタ値か
    ら、それに対応する原画像上の画素を示す第2のメモリ
    ポインタ値を計算するステップと、 前記画像メモリを先頭から最後まで順次、前記第1のメ
    モリポインタで走査しながら、該第1のメモリポインタ
    が示すアドレス値を回転後の画像の画素を示すメモリの
    アドレス値として、前記アドレス値を計算するステップ
    と、 これに対応する原画像上の画素を示すメモリのアドレス
    値を計算して、前記第2のメモリポインタに設定するス
    テップと、 前記走査を遂行している間、第2のメモリポインタに設
    定されたアドレス値が、第1のメモリポインタのアドレ
    ス値よりも小さいか否かを判定し、判定が真の場合は、
    該第2のメモリポインタのもつアドレス値を回転後の画
    像の画素を示すメモリのアドレス値として、前記アドレ
    ス値を計算するステップによって、これに対応する原画
    像上の画素を示すメモリのアドレス値を再計算して、前
    記第2のメモリポインタに再設定をする処理を行い、該
    第1の第2のメモリポインタ値の判定とそれに伴う第2
    のポインタ値の該再設定処理を、判定が負になるまで繰
    り返すステップと、 前記走査を遂行している間に行われる前記判定処理の結
    果が負になった時に、第1と第2のメモリポインタが示
    すメモリアドレスのデータを交換するステップとを備え
    ることを特徴とする画像回転方法。
  3. 【請求項3】 メモリに展開された画像データを回転す
    るプログラムを記録した媒体であって、前記プログラム
    は、 回転後の画像の各画素を示す第1のメモリポインタ値か
    ら、それに対応する原画像上の画素を示す第2のメモリ
    ポインタ値を計算するステップと、 前記画像メモリを先頭から最後まで順次、前記第1のメ
    モリポインタで走査しながら、該第1のメモリポインタ
    が示すアドレス値を回転後の画像の画素を示すメモリの
    アドレス値として、前記アドレス値を計算するステップ
    と、 これに対応する原画像上の画素を示すメモリのアドレス
    値を計算して、前記第2のメモリポインタに設定するス
    テップと、 前記走査を遂行している間、第2のメモリポインタに設
    定されたアドレス値が、第1のメモリポインタのアドレ
    ス値よりも小さいか否かを判定し、判定が真の場合は、
    該第2のメモリポインタのもつアドレス値を回転後の画
    像の画素を示すメモリのアドレス値として、前記アドレ
    ス値を計算するステップによって、これに対応する原画
    像上の画素を示すメモリのアドレス値を再計算して、前
    記第2のメモリポインタに再設定をする処理を行い、該
    第1と第2のメモリポインタ値の判定とそれに伴う第2
    のポインタ値の該再設定処理を、判定が負になるまで繰
    り返すステップと、 前記走査を遂行している間に行われる前記判定処理の結
    果が負になった時に、第1と第2のメモリポインタが示
    すメモリアドレスのデータを交換するステップとを含む
    ことを特徴とする記録媒体。
  4. 【請求項4】 連続する記憶領域に格納されたW×H画
    素の画像を回転する画像回転方法であって、 前記記録領域の注目アドレスに画像回転後に位置するは
    ずの画素のアドレスを算出する算出工程と、 前記注目アドレスの画素と前記算出工程により算出され
    たアドレスの画素とを交換する交換工程とを備え、 前記算出工程においては、前記注目アドレスは前記記録
    領域の先頭から順次増加され、また、算出された回転後
    のアドレスが注目アドレス以前のアドレスである場合に
    は、算出されたアドレスから、前記交換工程により画素
    が移動された先のアドレスの再計算を前記算出工程によ
    り行い、該再計算を、算出された回転後のアドレスが注
    目アドレスより前のアドレスでなくなるまで繰り返すこ
    とを特徴とする画像回転方法。
JP11004577A 1999-01-11 1999-01-11 画像回転装置及び方法 Withdrawn JP2000207541A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11004577A JP2000207541A (ja) 1999-01-11 1999-01-11 画像回転装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11004577A JP2000207541A (ja) 1999-01-11 1999-01-11 画像回転装置及び方法

Publications (1)

Publication Number Publication Date
JP2000207541A true JP2000207541A (ja) 2000-07-28

Family

ID=11587901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11004577A Withdrawn JP2000207541A (ja) 1999-01-11 1999-01-11 画像回転装置及び方法

Country Status (1)

Country Link
JP (1) JP2000207541A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113344775A (zh) * 2021-06-18 2021-09-03 北京澎思科技有限公司 图像处理方法、装置、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113344775A (zh) * 2021-06-18 2021-09-03 北京澎思科技有限公司 图像处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
JPH0212570A (ja) 画像処理装置
KR930004440B1 (ko) 화상데이타 처리장치
JP2000207541A (ja) 画像回転装置及び方法
JPH05342314A (ja) 画像処理装置
JP2008243235A (ja) 情報処理装置及び情報処理方法及び印刷制御プログラム
JP3683657B2 (ja) グラフィックス表示装置およびグラフィックスプロセッサ
US6628289B1 (en) Rendering apparatus and method, and storage medium
JP4137903B2 (ja) グラフィックス表示装置およびグラフィックスプロセッサ
JP2839920B2 (ja) イメージデータ入力装置
JP3064305B2 (ja) ディジタル複写機
JP2901824B2 (ja) 画像記録装置および画像記録方法
JP3211591B2 (ja) イメージ処理装置
JPS60181975A (ja) 画像デ−タの制御方法
JPS59112761A (ja) 書画読取編集方式
JP2985207B2 (ja) イメージスキャナ
JP2945028B2 (ja) 画像処理指定領域情報計算装置
JP3021159B2 (ja) 画像処理装置及び方法
JPS6243262A (ja) 電子フアイルシステム
JPH10224576A (ja) 画像処理装置及び方法
JPH07200858A (ja) 画像処理装置
JPH06301374A (ja) 画像作成装置
JPH11317864A (ja) 画像データ補間装置、画像データ補間方法および画像データ補間プログラムを記録した媒体
JP2000211198A (ja) イメ―ジデ―タの管理方法
JPS6079472A (ja) データ処理方法
JPH1131056A (ja) 画像処理装置及びその方法並びにメモリ媒体

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060404