JPH0887596A - イメージを高速に180度回転及び反転する方法 - Google Patents
イメージを高速に180度回転及び反転する方法Info
- Publication number
- JPH0887596A JPH0887596A JP7196251A JP19625195A JPH0887596A JP H0887596 A JPH0887596 A JP H0887596A JP 7196251 A JP7196251 A JP 7196251A JP 19625195 A JP19625195 A JP 19625195A JP H0887596 A JPH0887596 A JP H0887596A
- Authority
- JP
- Japan
- Prior art keywords
- image
- word
- pixels
- words
- section
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
(57)【要約】
【目的】 コンピュータ表示装置またはプリンタにおけ
るイメージを高速に反転または回転することを可能にす
る。 【構成】 イメージ・ワードを2個のセクションに分割
し、それらを入れ替え、さらに各セクションを2個に分
割し、それらを入れ替えるというような操作を、個々の
ピクセルが入れ替えられるまで繰り返すことにより、ワ
ード中のピクセルを反転させる。鏡像を作成するために
は、各走査線の先頭側及び最終側のワードを反転し、入
れ替えるというような操作を、走査線の中央まで繰り返
し、これを全走査線に対して行い、走査線が奇数個のワ
ードから成る場合には、その中央のワードを反転する。
180度回転させるためには、イメージの先頭側及び最
終側のワードを反転し、入れ替えるというような操作を
イメージの中央まで行い、イメージが奇数個のワードか
ら成る場合には、その中央のワードを反転する。
るイメージを高速に反転または回転することを可能にす
る。 【構成】 イメージ・ワードを2個のセクションに分割
し、それらを入れ替え、さらに各セクションを2個に分
割し、それらを入れ替えるというような操作を、個々の
ピクセルが入れ替えられるまで繰り返すことにより、ワ
ード中のピクセルを反転させる。鏡像を作成するために
は、各走査線の先頭側及び最終側のワードを反転し、入
れ替えるというような操作を、走査線の中央まで繰り返
し、これを全走査線に対して行い、走査線が奇数個のワ
ードから成る場合には、その中央のワードを反転する。
180度回転させるためには、イメージの先頭側及び最
終側のワードを反転し、入れ替えるというような操作を
イメージの中央まで行い、イメージが奇数個のワードか
ら成る場合には、その中央のワードを反転する。
Description
【0001】
【産業上の利用分野】本発明は、デジタル・イメージを
表示するための方法に関するものであり、特に、コンピ
ュータ表示装置またはプリンタのイメージを高速かつ効
率的に反転もしくは回転するために役立つものである。
表示するための方法に関するものであり、特に、コンピ
ュータ表示装置またはプリンタのイメージを高速かつ効
率的に反転もしくは回転するために役立つものである。
【0002】
【従来の技術】コンピュータにおけるデジタル・イメー
ジを処理するための方法は、ステップ数やメモリ量が原
因となり、処理速度が遅くなってしまう傾向がある。そ
のステップにかかる時間をわずかに削減する方法でも、
それが何度も繰り返されるものであるならば、その方法
によりパフォーマンスを向上させることができる。
ジを処理するための方法は、ステップ数やメモリ量が原
因となり、処理速度が遅くなってしまう傾向がある。そ
のステップにかかる時間をわずかに削減する方法でも、
それが何度も繰り返されるものであるならば、その方法
によりパフォーマンスを向上させることができる。
【0003】従来、イメージのあるセクションを反転
(先頭のピクセルを最終のピクセルと入れ替え、同様の
処理を順に繰り返すことにより、そのセクションの内容
が逆になるようにすること)しようとする場合には、ル
ックアップ・テーブルが用いられていた。この方法の例
としては、アメリカ合衆国特許第4,947,344号
に示されている。中心を軸としてイメージを180度回
転する、または、そのイメージの鏡像を作るためには、
イメージ中の数多くの小さなセクションを反転する必要
がある。そのため、イメージのセクションを反転するた
めの時間を短縮することができれば、全体としてパフォ
ーマンスを向上することができる。
(先頭のピクセルを最終のピクセルと入れ替え、同様の
処理を順に繰り返すことにより、そのセクションの内容
が逆になるようにすること)しようとする場合には、ル
ックアップ・テーブルが用いられていた。この方法の例
としては、アメリカ合衆国特許第4,947,344号
に示されている。中心を軸としてイメージを180度回
転する、または、そのイメージの鏡像を作るためには、
イメージ中の数多くの小さなセクションを反転する必要
がある。そのため、イメージのセクションを反転するた
めの時間を短縮することができれば、全体としてパフォ
ーマンスを向上することができる。
【0004】イメージを90度回転する際のパフォーマ
ンスの向上については、これまでにも試みられてきた。
G.Goertzel氏によるIBM TECHNIC
ALDISCLOSURE BULLETIN Vo
l.27,no.8,January 1985,pp
4593−4595がその一例である。また、C.C
ox氏によるIBM TECHNICAL DISCL
OSURE BULLETIN Vol.30,no.
12,May 1988,pp 26−28には、イメ
ージを90度及び270度回転する場合について記述さ
れている。
ンスの向上については、これまでにも試みられてきた。
G.Goertzel氏によるIBM TECHNIC
ALDISCLOSURE BULLETIN Vo
l.27,no.8,January 1985,pp
4593−4595がその一例である。また、C.C
ox氏によるIBM TECHNICAL DISCL
OSURE BULLETIN Vol.30,no.
12,May 1988,pp 26−28には、イメ
ージを90度及び270度回転する場合について記述さ
れている。
【0005】
【発明が解決しようとする課題】しかし、イメージのセ
クションをより高速に反転する方法に関する技術が今な
お求められている。
クションをより高速に反転する方法に関する技術が今な
お求められている。
【0006】
【課題を解決するための手段】本発明に従えば、イメー
ジ・ワード中の全ピクセルを反転するための方法が提供
され、それは、所定の数だけイメージ・ワードをシフト
し、それに続いて、所定のマスクで、シフトされたイメ
ージ・ワード及びシフトされていないイメージ・ワード
にフィルタをかける再帰的ステップを利用することによ
り実現される。2のn乗個のピクセルから成るイメージ
・ワードを反転するために必要なサイクル数は、nサイ
クルにシフトするステップを一つ加えたものになる。1
個のイメージ・ワードを反転するこの方法は、入力され
たイメージの鏡像を生成するために使用され、また、イ
メージ・ワードをその中心を軸として180度回転させ
る場合にも役立つ。
ジ・ワード中の全ピクセルを反転するための方法が提供
され、それは、所定の数だけイメージ・ワードをシフト
し、それに続いて、所定のマスクで、シフトされたイメ
ージ・ワード及びシフトされていないイメージ・ワード
にフィルタをかける再帰的ステップを利用することによ
り実現される。2のn乗個のピクセルから成るイメージ
・ワードを反転するために必要なサイクル数は、nサイ
クルにシフトするステップを一つ加えたものになる。1
個のイメージ・ワードを反転するこの方法は、入力され
たイメージの鏡像を生成するために使用され、また、イ
メージ・ワードをその中心を軸として180度回転させ
る場合にも役立つ。
【0007】実際上、イメージ・ワード中の全ピクセル
を反転する方法は、イメージ・ワードを2個のセクショ
ンに分割し、その2個のセクションを入れ替え、さらに
各セクションを2個のセクションに分割し、それらのセ
クションを入れ替え、そして、1個のピクセル同志が入
れ替えられるまで、分割と入れ替えの操作を繰り返すの
である。この方法は、16個またはそれ以上のピクセル
から成るワードを、単純にピクセルを一つ一つ入れ替え
ていく方法よりも速く反転させることができる。
を反転する方法は、イメージ・ワードを2個のセクショ
ンに分割し、その2個のセクションを入れ替え、さらに
各セクションを2個のセクションに分割し、それらのセ
クションを入れ替え、そして、1個のピクセル同志が入
れ替えられるまで、分割と入れ替えの操作を繰り返すの
である。この方法は、16個またはそれ以上のピクセル
から成るワードを、単純にピクセルを一つ一つ入れ替え
ていく方法よりも速く反転させることができる。
【0008】本発明に従うイメージ・ワードを反転する
ための方法は、入力されたイメージの垂直鏡像(右上隅
の部分が左上隅になる)を生成するために役立つが、そ
れは、イメージの各走査線において、その走査線の先頭
及び最終のイメージ・ワードを反転し、入れ替え、2番
目のワード及び最終から2番目のワードを反転し、入れ
替えるというような操作を、その走査線の中央まで、繰
り返し、これを全走査線に対して行うことによって実現
される。走査線が奇数個のワードから成る場合には、そ
の中央のワードを反転する。
ための方法は、入力されたイメージの垂直鏡像(右上隅
の部分が左上隅になる)を生成するために役立つが、そ
れは、イメージの各走査線において、その走査線の先頭
及び最終のイメージ・ワードを反転し、入れ替え、2番
目のワード及び最終から2番目のワードを反転し、入れ
替えるというような操作を、その走査線の中央まで、繰
り返し、これを全走査線に対して行うことによって実現
される。走査線が奇数個のワードから成る場合には、そ
の中央のワードを反転する。
【0009】イメージ・ワードを反転するためのこの方
法は、イメージをその中心を軸として180度回転させ
る(右上隅の部分が左下隅になる)場合にも役立つ。イ
メージの先頭及び最終のイメージ・ワードを反転し、入
れ替える。次に、2番目のイメージ・ワード及び最終か
ら2番目のイメージ・ワードを反転し、入れ替え、この
ような操作をイメージの中央まで行う。そのイメージが
奇数個のイメージ・ワードから成る場合には、その中央
のイメージ・ワードを反転する。
法は、イメージをその中心を軸として180度回転させ
る(右上隅の部分が左下隅になる)場合にも役立つ。イ
メージの先頭及び最終のイメージ・ワードを反転し、入
れ替える。次に、2番目のイメージ・ワード及び最終か
ら2番目のイメージ・ワードを反転し、入れ替え、この
ような操作をイメージの中央まで行う。そのイメージが
奇数個のイメージ・ワードから成る場合には、その中央
のイメージ・ワードを反転する。
【0010】本技術分野において通常の知識を有する者
であるならば、添付図を用いながら説明する下記の実施
例の詳細な記述から、前述したもの以外にも、本発明を
利用した機能や応用を考えられるであろう。
であるならば、添付図を用いながら説明する下記の実施
例の詳細な記述から、前述したもの以外にも、本発明を
利用した機能や応用を考えられるであろう。
【0011】
【実施例】図1は、本発明を実施するために適した環境
を示している。本発明の方法を使用するソフトウェア1
1は、IBM RISCシステム/6000コンピュー
タ10内に保管される。ソフトウェア11は、メモリ1
2に含まれ、かつ表示装置18に表示されるイメージを
処理する。ユーザは、ソフトウェア11の動きをキーボ
ード15を用いて制御する。
を示している。本発明の方法を使用するソフトウェア1
1は、IBM RISCシステム/6000コンピュー
タ10内に保管される。ソフトウェア11は、メモリ1
2に含まれ、かつ表示装置18に表示されるイメージを
処理する。ユーザは、ソフトウェア11の動きをキーボ
ード15を用いて制御する。
【0012】図2は、本発明に従った、イメージの小さ
なセグメントすなわち"イメージ・ワード"を反転する方
法を示すフローチャートである。イメージ・ワードを"
反転"するとは、イメージ・ワードの左端にあるピクセ
ルをその右端に移し、そして右端にあったピクセルを左
端に移すというような操作を、そのイメージ・ワード全
体に対して行うことを意味する。図6及び図7に、イメ
ージ・ワードを反転する例を示している。
なセグメントすなわち"イメージ・ワード"を反転する方
法を示すフローチャートである。イメージ・ワードを"
反転"するとは、イメージ・ワードの左端にあるピクセ
ルをその右端に移し、そして右端にあったピクセルを左
端に移すというような操作を、そのイメージ・ワード全
体に対して行うことを意味する。図6及び図7に、イメ
ージ・ワードを反転する例を示している。
【0013】図2の処理は操作20から始まる。操作2
2で、反転するイメージ・ワード"IN"及びその長さ"
L"を入力する。操作24は、イメージの前半の部分を
その後半の部分と入れ替える。操作26で、Lを2で割
る。操作28は、Lが1であるか否か判定する。Lが1
でない場合には、操作30で、Lを2で割り、操作32
で、そのイメージ・ワードを、各セクションがLと同数
のピクセルを持つように、セクションに分ける。操作3
4では、第1のセクションを第2のセクションと入れ替
え、第3のセクションを第4のセクションと入れ替える
というように、イメージ・ワード全体を操作する。次
に、操作28で、Lが1になったか否か判定する。各ピ
クセルがその隣のピクセルと入れ替えられるまで、イメ
ージ・ワードをより小さなセクションに分け、セクショ
ンを入れ替えていくという操作を繰り返す。Lが1にな
った時点で、操作36で、反転されたイメージ・ワード
を戻し、操作38で終了する。
2で、反転するイメージ・ワード"IN"及びその長さ"
L"を入力する。操作24は、イメージの前半の部分を
その後半の部分と入れ替える。操作26で、Lを2で割
る。操作28は、Lが1であるか否か判定する。Lが1
でない場合には、操作30で、Lを2で割り、操作32
で、そのイメージ・ワードを、各セクションがLと同数
のピクセルを持つように、セクションに分ける。操作3
4では、第1のセクションを第2のセクションと入れ替
え、第3のセクションを第4のセクションと入れ替える
というように、イメージ・ワード全体を操作する。次
に、操作28で、Lが1になったか否か判定する。各ピ
クセルがその隣のピクセルと入れ替えられるまで、イメ
ージ・ワードをより小さなセクションに分け、セクショ
ンを入れ替えていくという操作を繰り返す。Lが1にな
った時点で、操作36で、反転されたイメージ・ワード
を戻し、操作38で終了する。
【0014】図2の処理は、2を因数に持つものであれ
ば、いかなる長さのイメージ・ワードにも適用できる。
例えば、INが4個のピクセルを持ち、それが"101
1"であるとする。操作24で、上位2個のピクセルと
下位の2個のピクセルとが入れ替えられ、"1110"と
なる。操作26で、4を2で割ることにより、Lは2に
なる。操作28で、Lが1ではないので、操作30で、
Lは2で割られ、その結果、Lは1になる。操作32
で、各セクションが1個のピクセルを持つように、IN
をセクションに分ける。操作34で、第1のピクセルを
第2のピクセルと入れ替え、第3のピクセルを第4のピ
クセルと入れ替えることにより、"1101"となる。L
は1なので、操作36で、反転されたイメージ・ワー
ド"1101"を戻す。
ば、いかなる長さのイメージ・ワードにも適用できる。
例えば、INが4個のピクセルを持ち、それが"101
1"であるとする。操作24で、上位2個のピクセルと
下位の2個のピクセルとが入れ替えられ、"1110"と
なる。操作26で、4を2で割ることにより、Lは2に
なる。操作28で、Lが1ではないので、操作30で、
Lは2で割られ、その結果、Lは1になる。操作32
で、各セクションが1個のピクセルを持つように、IN
をセクションに分ける。操作34で、第1のピクセルを
第2のピクセルと入れ替え、第3のピクセルを第4のピ
クセルと入れ替えることにより、"1101"となる。L
は1なので、操作36で、反転されたイメージ・ワー
ド"1101"を戻す。
【0015】図3は、図2の方法が32個のピクセルを
持つイメージ・ワードに対して適用された場合の流れを
示している。操作170から始まり、操作172で、3
2個のピクセルから成るイメージ・ワード"IN"を入力
する。操作174で、最初の16個のピクセル(イメー
ジ・ワードの前半)を次の16個のピクセル(イメージ
・ワードの後半)と入れ替える。操作176では、イメ
ージ・ワードの4分の1の大きさの単位で入れ替えを行
っていく。すなわち、第1の8個のピクセルを第2の8
個のピクセルと入れ替え、第3の8個のピクセルを第4
の8個のピクセルと入れ替える。操作178では、第1
の4個のピクセルを第2の4個のピクセルと入れ替える
というように、イメージ・ワードの8分の1の大きさの
単位で入れ替えを行っていく。操作180では、第1の
2個のピクセルを第2の2個のピクセルと入れ替えると
いうように、イメージ・ワードの16分の1の大きさの
単位で入れ替えを行っていく。
持つイメージ・ワードに対して適用された場合の流れを
示している。操作170から始まり、操作172で、3
2個のピクセルから成るイメージ・ワード"IN"を入力
する。操作174で、最初の16個のピクセル(イメー
ジ・ワードの前半)を次の16個のピクセル(イメージ
・ワードの後半)と入れ替える。操作176では、イメ
ージ・ワードの4分の1の大きさの単位で入れ替えを行
っていく。すなわち、第1の8個のピクセルを第2の8
個のピクセルと入れ替え、第3の8個のピクセルを第4
の8個のピクセルと入れ替える。操作178では、第1
の4個のピクセルを第2の4個のピクセルと入れ替える
というように、イメージ・ワードの8分の1の大きさの
単位で入れ替えを行っていく。操作180では、第1の
2個のピクセルを第2の2個のピクセルと入れ替えると
いうように、イメージ・ワードの16分の1の大きさの
単位で入れ替えを行っていく。
【0016】操作182では、第1のピクセルを第2の
ピクセルと入れ替えるというように、イメージ・ワード
の32分の1の大きさの単位で入れ替えを行っていく。
操作184で、反転されたイメージ・ワードを戻し、操
作186で終了する。
ピクセルと入れ替えるというように、イメージ・ワード
の32分の1の大きさの単位で入れ替えを行っていく。
操作184で、反転されたイメージ・ワードを戻し、操
作186で終了する。
【0017】図4及び図5は、図3の処理をさらに詳細
に示したものである。REVERSEの処理50は、反
転対象の32個のピクセルから成るイメージ・ワード"
IN"を入力する操作52から始まる。操作54で、サ
ブルーチンROTATE_LEFTが呼ばれる。ROT
ATE_LEFTは図8に示されているが、そこでは、
イメージ・ワード"IN"を左に16ピクセル分ローテイ
トし、その結果をレジスタt1に入れる。左にオーバー
フローした16ピクセルはレジスタt1の下位16ピク
セルに移される。操作54の結果として、イメージ・ワ
ードの上位16ピクセルが下位16ピクセルと入れ替え
られる。
に示したものである。REVERSEの処理50は、反
転対象の32個のピクセルから成るイメージ・ワード"
IN"を入力する操作52から始まる。操作54で、サ
ブルーチンROTATE_LEFTが呼ばれる。ROT
ATE_LEFTは図8に示されているが、そこでは、
イメージ・ワード"IN"を左に16ピクセル分ローテイ
トし、その結果をレジスタt1に入れる。左にオーバー
フローした16ピクセルはレジスタt1の下位16ピク
セルに移される。操作54の結果として、イメージ・ワ
ードの上位16ピクセルが下位16ピクセルと入れ替え
られる。
【0018】操作56で、サブルーチンMASK_IN
SERTを呼ぶ。MASK_INSERTは図9に示さ
れているが、そこでは、t1の内容が、マスクが0の位
置についてはt1のピクセルで置き換えられ、マスクが
1の位置についてはINのピクセルで置き換えられる。
操作56で使用されるマスクは、8個の0、8個の1、
8個の0、及び8個の1を左から順に並べたものであ
る。t1は、操作54で、16ピクセル分ローテイトさ
れているので、マスクが0の部分は、イメージ・ワード
のローテイトされた部分から、第1ピクセルから第8ピ
クセル、及び第17ピクセルから第24ピクセルを選び
出している。これにより、元の第1ピクセルから第8ピ
クセルは第17スロットから第24スロットに置かれ、
元の第17ピクセルから第24ピクセルは第1スロット
から第8スロットに置かれる。
SERTを呼ぶ。MASK_INSERTは図9に示さ
れているが、そこでは、t1の内容が、マスクが0の位
置についてはt1のピクセルで置き換えられ、マスクが
1の位置についてはINのピクセルで置き換えられる。
操作56で使用されるマスクは、8個の0、8個の1、
8個の0、及び8個の1を左から順に並べたものであ
る。t1は、操作54で、16ピクセル分ローテイトさ
れているので、マスクが0の部分は、イメージ・ワード
のローテイトされた部分から、第1ピクセルから第8ピ
クセル、及び第17ピクセルから第24ピクセルを選び
出している。これにより、元の第1ピクセルから第8ピ
クセルは第17スロットから第24スロットに置かれ、
元の第17ピクセルから第24ピクセルは第1スロット
から第8スロットに置かれる。
【0019】マスクが1の部分は、ローテイトされてい
ない元の部分から、第9ピクセルから第16ピクセル、
及び第25ピクセルから第32ピクセルを選び出し、決
められた場所に置いている。操作56の最終結果とし
て、第1ピクセルから第8ピクセルまでを第17ピクセ
ルから第24ピクセルで入れ替え、残りのピクセルは元
のままになっている。
ない元の部分から、第9ピクセルから第16ピクセル、
及び第25ピクセルから第32ピクセルを選び出し、決
められた場所に置いている。操作56の最終結果とし
て、第1ピクセルから第8ピクセルまでを第17ピクセ
ルから第24ピクセルで入れ替え、残りのピクセルは元
のままになっている。
【0020】ブール数学を用いると、操作56は下記の
関数で表せる。 t1 = (t1 AND NOT 00FF00FF) OR (IN AND 00FF00FF)
関数で表せる。 t1 = (t1 AND NOT 00FF00FF) OR (IN AND 00FF00FF)
【0021】00FF00FFは操作56における2つ
の入力、IN及びt1、にフィルタをかけるために使用
されたマスクの16進数表記である。そのマスクを2進
数表記で表すと、00000000111111110
000000011111111となる。
の入力、IN及びt1、にフィルタをかけるために使用
されたマスクの16進数表記である。そのマスクを2進
数表記で表すと、00000000111111110
000000011111111となる。
【0022】操作58では、t1を左に24ピクセル分
ローテイトし、その結果をレジスタt2に入れる。これ
は、操作56後にスロット1から8にある(元はスロッ
ト17から24にあった)ピクセルがスロット9から1
6に移される。スロット9から16にあったピクセルは
スロット17から24に移される。操作56後にスロッ
ト17から24にある(元はスロット1から8にあっ
た)ピクセルがスロット25から32に移される。スロ
ット25から32にあったピクセルはスロット1から8
に移される。
ローテイトし、その結果をレジスタt2に入れる。これ
は、操作56後にスロット1から8にある(元はスロッ
ト17から24にあった)ピクセルがスロット9から1
6に移される。スロット9から16にあったピクセルは
スロット17から24に移される。操作56後にスロッ
ト17から24にある(元はスロット1から8にあっ
た)ピクセルがスロット25から32に移される。スロ
ット25から32にあったピクセルはスロット1から8
に移される。
【0023】操作56及び操作58との組み合わせによ
り、操作54後のレジスタt1中の第1の8個のピクセ
ルと第2の8個のピクセルとが入れ替えられ、第3の8
個のピクセルと第4の8個のピクセルとが入れ替えら
れ、その結果がレジスタt2に入れられる。
り、操作54後のレジスタt1中の第1の8個のピクセ
ルと第2の8個のピクセルとが入れ替えられ、第3の8
個のピクセルと第4の8個のピクセルとが入れ替えら
れ、その結果がレジスタt2に入れられる。
【0024】操作60は、0F0F0F0F(2進数表
記では、000011110000111100001
11100001111)というマスクで、レジスタt
1及びt2にフィルタをかける。マスクの0はレジスタ
t2のピクセルを選び出し、マスクの1はレジスタt1
のピクセルを選び出す。操作62で、イメージ・ワード
を28ピクセル分左にローテイトする。操作60及び操
作62との組み合わせにより、レジスタt2中の第1の
4個のピクセルと第2の4個のピクセルとを入れ替え、
第3の4個のピクセルと第4の4個のピクセルとを入れ
替えるというような処理をレジスタt2全体に対して行
い、その結果をレジスタt3に入れる。
記では、000011110000111100001
11100001111)というマスクで、レジスタt
1及びt2にフィルタをかける。マスクの0はレジスタ
t2のピクセルを選び出し、マスクの1はレジスタt1
のピクセルを選び出す。操作62で、イメージ・ワード
を28ピクセル分左にローテイトする。操作60及び操
作62との組み合わせにより、レジスタt2中の第1の
4個のピクセルと第2の4個のピクセルとを入れ替え、
第3の4個のピクセルと第4の4個のピクセルとを入れ
替えるというような処理をレジスタt2全体に対して行
い、その結果をレジスタt3に入れる。
【0025】操作64は、33333333(2進数表
記では、001100110011001100110
01100110011)というマスクで、レジスタt
2及びt3にフィルタをかける。操作66では、t3の
内容を30ピクセル分左にローテイトし、結果をレジス
タt4に入れる。このようにして、レジスタt3の第1
の2個のピクセルと第2の2個のピクセルとが入れ替え
られ、第3の2個のピクセルと第4の2個のピクセルと
が入れ替えられるというような処理がレジスタt3全体
に対して行われ、その結果がレジスタt4に入れられ
る。
記では、001100110011001100110
01100110011)というマスクで、レジスタt
2及びt3にフィルタをかける。操作66では、t3の
内容を30ピクセル分左にローテイトし、結果をレジス
タt4に入れる。このようにして、レジスタt3の第1
の2個のピクセルと第2の2個のピクセルとが入れ替え
られ、第3の2個のピクセルと第4の2個のピクセルと
が入れ替えられるというような処理がレジスタt3全体
に対して行われ、その結果がレジスタt4に入れられ
る。
【0026】操作68は、55555555(2進数表
記では、010101010101010101010
10101010101)というマスクで、レジスタt
3及びt4にフィルタをかける。操作70では、t4の
内容を31ピクセル分左にローテイトし、結果をレジス
タt5に入れる。操作68及び70により、レジスタt
4の第1のピクセルと第2のピクセルとが入れ替えら
れ、第3のピクセルと第4のピクセルとが入れ替えられ
るというような処理がレジスタt4全体に対して行わ
れ、その結果がレジスタt5に入れられる。レジスタt
5には、"IN"の反転された内容が含まれ、操作72
で、この結果を戻し、操作74で、処理が終了する。
記では、010101010101010101010
10101010101)というマスクで、レジスタt
3及びt4にフィルタをかける。操作70では、t4の
内容を31ピクセル分左にローテイトし、結果をレジス
タt5に入れる。操作68及び70により、レジスタt
4の第1のピクセルと第2のピクセルとが入れ替えら
れ、第3のピクセルと第4のピクセルとが入れ替えられ
るというような処理がレジスタt4全体に対して行わ
れ、その結果がレジスタt5に入れられる。レジスタt
5には、"IN"の反転された内容が含まれ、操作72
で、この結果を戻し、操作74で、処理が終了する。
【0027】REVERSEの操作を、入力するINの
内容が下記の場合を例にして、図示しながら説明する。 IN = 0101 0011 0011 0000 1111 0000 1111 0110 操作54は、INを16ピクセル分左にローテイトし、
結果をレジスタt1に入れる。このようにして、第1の
16個のピクセルと第2の16個のピクセルとが入れ替
えられる。 t1 = 1111 0000 1111 0110 0101 0011 0011 0000 (54) 操作56は、00FF00FFをマスクにして、IN及
びt1にフィルタをかける。 t1 = 1111 0000 0011 0000 0101 0011 1111 0110 (56) 操作58は、t1を24ピクセル分左にローテイトし、
結果をレジスタt2に入れる。 t2 = 1111 0110 1111 0000 0011 0000 0101 0011 (58) 操作56及び58で、t1の第1の8個のピクセルと第
2の8個のピクセルとを入れ替える等の処理をし、結果
をレジスタt2に入れる。操作60は、0F0F0F0
Fをマスクにして、t1及びt2にフィルタをかけ、結
果をt2に入れる。 t2 = 1111 0000 1111 0000 0011 0011 0101 0110 (60) 操作62は、t2を28ピクセル分左にローテイトし、
結果をレジスタt3に入れる。 t3 = 0110 1111 0000 1111 0000 0011 0011 0101 (62) 操作60及び62で、t2の第1の4個のピクセルと第
2の4個のピクセルとを入れ替える等の処理をし、結果
をレジスタt3に入れる。操作64は、3333333
3をマスクにして、t2及びt3にフィルタをかけ、結
果をt3に入れる。 t3 = 0111 1100 0011 1100 0011 0011 0001 0110 (64) 操作66は、t3を30ピクセル分左にローテイトし、
結果をレジスタt4に入れる。 t4 = 1001 1111 0000 1111 0000 1100 1100 0101 (66) 操作64及び66で、t3の第1の2個のピクセルと第
2の2個のピクセルとを入れ替える等の処理をし、結果
をレジスタt4に入れる。操作68は、5555555
5をマスクにして、t3及びt4にフィルタをかけ、結
果をt4に入れる。 t4 = 1101 1110 0001 1110 0001 1001 1001 0100 (68) 操作70は、t4を31ピクセル分左にローテイトし、
結果をレジスタt5に入れる。 t5 = 0110 1111 0000 1111 0000 1100 1100 1010 (70) 操作68及び70で、t4の第1のピクセルと第2のピ
クセルとを入れ替える等の処理をし、結果をレジスタt
5に入れる。レジスタ5に保管された結果は、入力され
たワードINが反転されたものである。
内容が下記の場合を例にして、図示しながら説明する。 IN = 0101 0011 0011 0000 1111 0000 1111 0110 操作54は、INを16ピクセル分左にローテイトし、
結果をレジスタt1に入れる。このようにして、第1の
16個のピクセルと第2の16個のピクセルとが入れ替
えられる。 t1 = 1111 0000 1111 0110 0101 0011 0011 0000 (54) 操作56は、00FF00FFをマスクにして、IN及
びt1にフィルタをかける。 t1 = 1111 0000 0011 0000 0101 0011 1111 0110 (56) 操作58は、t1を24ピクセル分左にローテイトし、
結果をレジスタt2に入れる。 t2 = 1111 0110 1111 0000 0011 0000 0101 0011 (58) 操作56及び58で、t1の第1の8個のピクセルと第
2の8個のピクセルとを入れ替える等の処理をし、結果
をレジスタt2に入れる。操作60は、0F0F0F0
Fをマスクにして、t1及びt2にフィルタをかけ、結
果をt2に入れる。 t2 = 1111 0000 1111 0000 0011 0011 0101 0110 (60) 操作62は、t2を28ピクセル分左にローテイトし、
結果をレジスタt3に入れる。 t3 = 0110 1111 0000 1111 0000 0011 0011 0101 (62) 操作60及び62で、t2の第1の4個のピクセルと第
2の4個のピクセルとを入れ替える等の処理をし、結果
をレジスタt3に入れる。操作64は、3333333
3をマスクにして、t2及びt3にフィルタをかけ、結
果をt3に入れる。 t3 = 0111 1100 0011 1100 0011 0011 0001 0110 (64) 操作66は、t3を30ピクセル分左にローテイトし、
結果をレジスタt4に入れる。 t4 = 1001 1111 0000 1111 0000 1100 1100 0101 (66) 操作64及び66で、t3の第1の2個のピクセルと第
2の2個のピクセルとを入れ替える等の処理をし、結果
をレジスタt4に入れる。操作68は、5555555
5をマスクにして、t3及びt4にフィルタをかけ、結
果をt4に入れる。 t4 = 1101 1110 0001 1110 0001 1001 1001 0100 (68) 操作70は、t4を31ピクセル分左にローテイトし、
結果をレジスタt5に入れる。 t5 = 0110 1111 0000 1111 0000 1100 1100 1010 (70) 操作68及び70で、t4の第1のピクセルと第2のピ
クセルとを入れ替える等の処理をし、結果をレジスタt
5に入れる。レジスタ5に保管された結果は、入力され
たワードINが反転されたものである。
【0028】図4及び図5に示した方法は、特に、32
個のピクセルからなるイメージ・ワードを操作するため
に設計されたものであるが、当技術分野において通常の
知識を有する者であるならば、他の長さのイメージ・ワ
ードに適用させるために図4及び図5の方法を変更する
ことが、その長さが2を因数に持つものであるならば、
きわめて容易であることを理解できるであろう。例え
ば、16個のピクセルを持つイメージ・ワードを反転す
るためには、操作54を、 ROTATE_LEFT(t1,IN,8) に置き換え、操作56及び58を削除し、操作60から
操作72における、t1をINに、t2をt1に、t3
をt2に、t4をt3に、及び、t5をt4に置き換え
れば良い。
個のピクセルからなるイメージ・ワードを操作するため
に設計されたものであるが、当技術分野において通常の
知識を有する者であるならば、他の長さのイメージ・ワ
ードに適用させるために図4及び図5の方法を変更する
ことが、その長さが2を因数に持つものであるならば、
きわめて容易であることを理解できるであろう。例え
ば、16個のピクセルを持つイメージ・ワードを反転す
るためには、操作54を、 ROTATE_LEFT(t1,IN,8) に置き換え、操作56及び58を削除し、操作60から
操作72における、t1をINに、t2をt1に、t3
をt2に、t4をt3に、及び、t5をt4に置き換え
れば良い。
【0029】64個のピクセルを持つイメージ・ワード
を反転するためには、操作54を、 ROTATE_LEFT(t1,IN,32) に置き換え、下記の操作を操作55及び55Aとして追
加し、 MASK_INSERT(t1,IN,0000FFFF)(55) ROTATE_LEFT(t2,t1,16) (55A) 操作56から操作72における、INをt1に、t1を
t2に、t2をt3に、t3をt4に、t4をt5に、
及び、t5をt6に置き換えれば良い。
を反転するためには、操作54を、 ROTATE_LEFT(t1,IN,32) に置き換え、下記の操作を操作55及び55Aとして追
加し、 MASK_INSERT(t1,IN,0000FFFF)(55) ROTATE_LEFT(t2,t1,16) (55A) 操作56から操作72における、INをt1に、t1を
t2に、t2をt3に、t3をt4に、t4をt5に、
及び、t5をt6に置き換えれば良い。
【0030】図6及び図7は、上記例のイメージ・ワー
ドINを含む鍵の反転前及び反転後のイメージを表した
ものである。図10は、イメージ全体をどのように反転
するかを示したものである。
ドINを含む鍵の反転前及び反転後のイメージを表した
ものである。図10は、イメージ全体をどのように反転
するかを示したものである。
【0031】図8は、REVERSEにおいて使用され
るサブルーチンROTATE_LEFT78を示す。R
OTATE_LEFTは、x、y、及びzの3つの変数
を使用する。yは反転されるイメージ・ワードであり、
zはyを左にローテイトするピクセルの数であり、xは
サブルーチンによって戻されるローテイトされたイメー
ジ・ワードである。多くのプログラミング言語が、オー
バーフローしたピクセルを空の最下位ピクセルの位置に
移すための組み込みコマンドを提供していないため、R
OTATE_LEFTを用意した。
るサブルーチンROTATE_LEFT78を示す。R
OTATE_LEFTは、x、y、及びzの3つの変数
を使用する。yは反転されるイメージ・ワードであり、
zはyを左にローテイトするピクセルの数であり、xは
サブルーチンによって戻されるローテイトされたイメー
ジ・ワードである。多くのプログラミング言語が、オー
バーフローしたピクセルを空の最下位ピクセルの位置に
移すための組み込みコマンドを提供していないため、R
OTATE_LEFTを用意した。
【0032】操作80は、左にローテイトされるワード
y、及び、yをローテイトするピクセルの数zを入力す
る。操作82は、zピクセル左にシフトされたyと(3
2−z)ピクセル右にシフトされたyとの論理和をとる
ことにより、ローテイト機能を実行し、その結果をxに
保管する。操作84は、xを戻す。そのサブルーチンは
操作86で終了する。
y、及び、yをローテイトするピクセルの数zを入力す
る。操作82は、zピクセル左にシフトされたyと(3
2−z)ピクセル右にシフトされたyとの論理和をとる
ことにより、ローテイト機能を実行し、その結果をxに
保管する。操作84は、xを戻す。そのサブルーチンは
操作86で終了する。
【0033】図9は、REVERSEにおいて使用され
るサブルーチンMASK_INSERT90を示す。M
ASK_INSERTは、x、y、及びmの3つの変数
を使用する。x及びyは、データを含むレジスタであ
る。レジスタmは、x及びyにフィルタをかけるための
マスクを含んでいる。フィルタ操作の結果は、xに保管
される。
るサブルーチンMASK_INSERT90を示す。M
ASK_INSERTは、x、y、及びmの3つの変数
を使用する。x及びyは、データを含むレジスタであ
る。レジスタmは、x及びyにフィルタをかけるための
マスクを含んでいる。フィルタ操作の結果は、xに保管
される。
【0034】操作92は、x、y、及びmを入力する。
操作94は、下記の関数を実行する。 x = (x AND NOT m) OR (y AND m) 上述したように、操作94では、マスクm中の0により
イメージ・ワードxの該当するピクセルを選び出し、マ
スクm中の1によりイメージ・ワードyの該当するピク
セルを選び出す。
操作94は、下記の関数を実行する。 x = (x AND NOT m) OR (y AND m) 上述したように、操作94では、マスクm中の0により
イメージ・ワードxの該当するピクセルを選び出し、マ
スクm中の1によりイメージ・ワードyの該当するピク
セルを選び出す。
【0035】操作96はxを戻し、操作98で終了す
る。
る。
【0036】操作94により実行される関数は、POW
ERプロセッサを搭載したIBMRISCシステム/6
000コンピュータの組み込みアセンブラ命令である。
その命令はmaskirと呼ばれ、下記のように実行さ
れる。 maskir (x,y,m) = (x AND NOT m) OR (y AND m)
ERプロセッサを搭載したIBMRISCシステム/6
000コンピュータの組み込みアセンブラ命令である。
その命令はmaskirと呼ばれ、下記のように実行さ
れる。 maskir (x,y,m) = (x AND NOT m) OR (y AND m)
【0037】そのため、実施例に示した方法をRISC
システム/6000上で実施する場合には、maski
rを使用するのがMASK_INSERTを実現するた
めに最も効率的な方法である。他のシステムでも、MA
SK_INSERTをプログラミングすることは容易で
ある。例えば、maskirマクロを書くことも可能で
ある。
システム/6000上で実施する場合には、maski
rを使用するのがMASK_INSERTを実現するた
めに最も効率的な方法である。他のシステムでも、MA
SK_INSERTをプログラミングすることは容易で
ある。例えば、maskirマクロを書くことも可能で
ある。
【0038】図10は、入力イメージの鏡像を作成する
のに相当する、イメージ全体を反転する処理において、
REVERSEをどのように使用するかを示したもので
ある。サブルーチンMIRRORVERTICAL10
2は、与えられたイメージの垂直鏡像を作成する。
のに相当する、イメージ全体を反転する処理において、
REVERSEをどのように使用するかを示したもので
ある。サブルーチンMIRRORVERTICAL10
2は、与えられたイメージの垂直鏡像を作成する。
【0039】操作104では、インデックスyを0に設
定し、ピクセル(走査)の数で示したイメージの高さH
EIGHTINSCANS、及び、ワードの数で示した
イメージの幅WIDTHINWORDSと共に、イメー
ジIMAGEを入力する。図6及び7において説明を容
易にするために、そのイメージが基底0の二次元配列I
MAGE(x,y)で記憶されていると仮定し、また、
1ワードは32ピクセル(ビット)の長さであると仮定
する。
定し、ピクセル(走査)の数で示したイメージの高さH
EIGHTINSCANS、及び、ワードの数で示した
イメージの幅WIDTHINWORDSと共に、イメー
ジIMAGEを入力する。図6及び7において説明を容
易にするために、そのイメージが基底0の二次元配列I
MAGE(x,y)で記憶されていると仮定し、また、
1ワードは32ピクセル(ビット)の長さであると仮定
する。
【0040】操作106は、走査線すなわち水平線の数
だけ処理される外部ループの始まりである。従って、操
作106では、yの値がHEIGHTINSCANSと
等しくなったか否か判定している。操作107は、イン
デックスxを0に設定する。操作108は、1走査線内
のワードを一度に2個(両端から1個)ずつ処理してい
くループの始まりである。従って、操作108では、x
の値がWIDTHINWORDSを2で割った値以上に
なったか否か判定している。操作110で、走査線yの
x番目のイメージ・ワードを変数LEFTWORDに入
れる。操作112で、右からx番目のイメージ・ワード
を変数RIGHTWORDに入れる。操作114は、R
EVERSEを使用してRIGHTWORDを反転さ
せ、その結果をその走査線のx番目のイメージ・ワード
に保管する。操作116は、REVERSEを使用して
LEFTWORDを反転させ、その結果を右からx番目
のイメージ・ワードに保管する。このように、左からx
番目のイメージ・ワードと右からx番目のイメージ・ワ
ードは、REVERSEによって反転され、入れ替えら
れる。操作118は、xの値がWIDTHINWORD
Sを2で割った値以上になるまで、インデックスxを走
査線yの中央に向かって進めていく。
だけ処理される外部ループの始まりである。従って、操
作106では、yの値がHEIGHTINSCANSと
等しくなったか否か判定している。操作107は、イン
デックスxを0に設定する。操作108は、1走査線内
のワードを一度に2個(両端から1個)ずつ処理してい
くループの始まりである。従って、操作108では、x
の値がWIDTHINWORDSを2で割った値以上に
なったか否か判定している。操作110で、走査線yの
x番目のイメージ・ワードを変数LEFTWORDに入
れる。操作112で、右からx番目のイメージ・ワード
を変数RIGHTWORDに入れる。操作114は、R
EVERSEを使用してRIGHTWORDを反転さ
せ、その結果をその走査線のx番目のイメージ・ワード
に保管する。操作116は、REVERSEを使用して
LEFTWORDを反転させ、その結果を右からx番目
のイメージ・ワードに保管する。このように、左からx
番目のイメージ・ワードと右からx番目のイメージ・ワ
ードは、REVERSEによって反転され、入れ替えら
れる。操作118は、xの値がWIDTHINWORD
Sを2で割った値以上になるまで、インデックスxを走
査線yの中央に向かって進めていく。
【0041】操作120は、WIDTHINWORDS
が奇数であるか否か判定する。奇数ならば、操作121
で、走査線yの中央のイメージ・ワードをREVERS
Eを用いて反転する。いずれの場合も、操作122で、
インデックスyを次の行に進める。yの値がHEIGH
TINSCANSと等しくなったならば、操作124
で、鏡像である反転されたIMAGEが戻される。操作
126で終了する。
が奇数であるか否か判定する。奇数ならば、操作121
で、走査線yの中央のイメージ・ワードをREVERS
Eを用いて反転する。いずれの場合も、操作122で、
インデックスyを次の行に進める。yの値がHEIGH
TINSCANSと等しくなったならば、操作124
で、鏡像である反転されたIMAGEが戻される。操作
126で終了する。
【0042】図11は、180度回転したイメージを作
成する際に、REVERSEをどのように使用するかを
示したものである。ROT180サブルーチン130
は、入力されたイメージを180度回転させる。この場
合、イメージが二次元配列で記憶されている必要はな
い。なぜならば、現在どの走査線を処理をしているかを
サブルーチンは気にする必要がないからである。このサ
ブルーチンは、ワードの数及びそのアドレスさえ分かっ
ていれば良い。サブルーチンは、先頭のイメージ・ワー
ド及び最終のイメージ・ワードから始め、一度に2個の
ワードを処理していく。(各走査線におけるワードの数
に対立するものとしての)イメージにおけるワードの総
数が奇数である場合には、REVERSEを用いて、中
心のイメージ・ワードを別個に反転しなければならな
い。
成する際に、REVERSEをどのように使用するかを
示したものである。ROT180サブルーチン130
は、入力されたイメージを180度回転させる。この場
合、イメージが二次元配列で記憶されている必要はな
い。なぜならば、現在どの走査線を処理をしているかを
サブルーチンは気にする必要がないからである。このサ
ブルーチンは、ワードの数及びそのアドレスさえ分かっ
ていれば良い。サブルーチンは、先頭のイメージ・ワー
ド及び最終のイメージ・ワードから始め、一度に2個の
ワードを処理していく。(各走査線におけるワードの数
に対立するものとしての)イメージにおけるワードの総
数が奇数である場合には、REVERSEを用いて、中
心のイメージ・ワードを別個に反転しなければならな
い。
【0043】操作132は、インデックスiを0に設定
し、イメージIMAGE及びそのイメージのワード数N
UMWORDSを入力する。操作134は、IMAGE
のワードを、先頭のイメージ・ワード及び最終のイメー
ジ・ワードから始めて、一度に2個ずつ処理していくル
ープの始まりである。従って、操作134では、iの値
がNUMWORDSを2で割った値以上になったか否か
判定している。まだの場合には、操作136で、イメー
ジのi番目のイメージ・ワードを変数FIRSTWOR
Dに入れる。操作138では、最終からi番目のイメー
ジ・ワードをLASTWORDに入れる。LASTWO
RDに保管されたイメージ・ワードをREVERSEを
用いて反転し、IMAGEのi番目のイメージ・ワード
に保管する。FIRSTWORDに保管されたイメージ
・ワードを反転し、IMAGEの最終からi番目のイメ
ージ・ワードに保管する。このようにして、左上隅の部
分が右下隅の部分になる。操作144は、インデックス
iを1加えて進める。iの値がNUMWORDSを2で
割った値以上になった場合には、操作146で、NUM
WORDSが奇数であるか否か判定する。奇数の場合に
は、操作148で、中央のイメージ・ワードを反転す
る。操作150は、回転されたイメージを戻し、操作1
52で終了する。
し、イメージIMAGE及びそのイメージのワード数N
UMWORDSを入力する。操作134は、IMAGE
のワードを、先頭のイメージ・ワード及び最終のイメー
ジ・ワードから始めて、一度に2個ずつ処理していくル
ープの始まりである。従って、操作134では、iの値
がNUMWORDSを2で割った値以上になったか否か
判定している。まだの場合には、操作136で、イメー
ジのi番目のイメージ・ワードを変数FIRSTWOR
Dに入れる。操作138では、最終からi番目のイメー
ジ・ワードをLASTWORDに入れる。LASTWO
RDに保管されたイメージ・ワードをREVERSEを
用いて反転し、IMAGEのi番目のイメージ・ワード
に保管する。FIRSTWORDに保管されたイメージ
・ワードを反転し、IMAGEの最終からi番目のイメ
ージ・ワードに保管する。このようにして、左上隅の部
分が右下隅の部分になる。操作144は、インデックス
iを1加えて進める。iの値がNUMWORDSを2で
割った値以上になった場合には、操作146で、NUM
WORDSが奇数であるか否か判定する。奇数の場合に
は、操作148で、中央のイメージ・ワードを反転す
る。操作150は、回転されたイメージを戻し、操作1
52で終了する。
【0044】本発明の実施例を示したが、本技術分野に
おいて通常の知識を有する者であるならば、本発明の思
想から離れることなく、ここに記述したもの以外にも、
様々な変更、修正、追加、及び適用が考えられるであろ
う。
おいて通常の知識を有する者であるならば、本発明の思
想から離れることなく、ここに記述したもの以外にも、
様々な変更、修正、追加、及び適用が考えられるであろ
う。
【0045】
【発明の効果】以上のように、本発明に従った、イメー
ジ・ワードを高速かつ効率的に反転する方法を利用する
ことにより、イメージの鏡像や180度回転させた像を
生成する場合など反転操作を伴うイメージ処理のパフォ
ーマンスが著しく向上する。
ジ・ワードを高速かつ効率的に反転する方法を利用する
ことにより、イメージの鏡像や180度回転させた像を
生成する場合など反転操作を伴うイメージ処理のパフォ
ーマンスが著しく向上する。
【図1】本発明の環境を示すブロック図
【図2】イメージの小さなセグメントを反転する方法の
フローチャート
フローチャート
【図3】図2の方法を32個のピクセルから成るイメー
ジ・ワードに適用した場合のフローチャート
ジ・ワードに適用した場合のフローチャート
【図4】図3の方法をさらに詳細に示したフローチャー
ト
ト
【図5】図3の方法をさらに詳細に示したフローチャー
ト
ト
【図6】図2の処理による反転前のイメージ・セグメン
ト
ト
【図7】図2の処理による反転後のイメージ・セグメン
ト
ト
【図8】図2の方法において使用される、イメージ・セ
グメントを左にローテイトするためのサブルーチンのフ
ローチャート
グメントを左にローテイトするためのサブルーチンのフ
ローチャート
【図9】図2の方法において使用される、マスクを用い
て2個の入力にフィルタをかけるためのサブルーチンの
フローチャート
て2個の入力にフィルタをかけるためのサブルーチンの
フローチャート
【図10】図2の方法を利用した、入力イメージの垂直
鏡像を得るための方法のフローチャート
鏡像を得るための方法のフローチャート
【図11】図2の方法を利用した、入力イメージを18
0度回転させたものを得るための方法のフローチャート
0度回転させたものを得るための方法のフローチャート
Claims (6)
- 【請求項1】(a)イメージ・ワードを2個のセクショ
ンに分割するステップと、(b)イメージ・ワードの第
1のセクションを第2のセクションと入れ替えるステッ
プと、(c)各セクションをさらに2個のセクションに
分割し、その2個のセクションを入れ替えるステップ
と、(d)個々のピクセルが入れ替えられるまで、
(c)のステップを繰り返すステップとを具備する、イ
メージ・ワード中のピクセルのすべてを反転するための
方法。 - 【請求項2】入力イメージの各走査線について、走査線
中のイメージ・ワードを左側及び右側から同時に順に処
理していくステップを具備し、また、左側及び右側から
1個ずつ選択された2個のイメージ・ワードについて
は、(a)イメージ・ワードを2個のセクションに分割
し、(b)イメージ・ワードの第1のセクションを第2
のセクションと入れ替え、(c)各セクションをさらに
2個のセクションに分割し、その2個のセクションを入
れ替え、(d)個々のピクセルが入れ替えられるまで
(c)の処理を繰り返すことによって、各イメージ・ワ
ード中のピクセルを反転するステップと、左側のイメー
ジ・ワードから得られ、反転されたピクセルを右側のイ
メージ・ワードに保管し、右側のイメージ・ワードから
得られ、反転されたピクセルを左側のイメージ・ワード
に保管するステップと、走査線中のワード数が奇数の場
合には、走査線の中央のイメージ・ワードのピクセル
を、上記(a)から(d)の処理によって、反転するス
テップとを具備する、複数のイメージ・ワードを含む水
平走査線の垂直配列からなる入力イメージの鏡像を生成
するための鏡像生成方法。 - 【請求項3】入力イメージ中のイメージ・ワードを先頭
及び最終から同時に順に処理していくステップを具備
し、また、先頭側及び最終側から1個ずつ選択された2
個のイメージ・ワードについては、(a)イメージ・ワ
ードを2個のセクションに分割し、(b)イメージ・ワ
ードの第1のセクションを第2のセクションと入れ替
え、(c)各セクションをさらに2個のセクションに分
割し、その2個のセクションを入れ替え、(d)個々の
ピクセルが入れ替えられるまで(c)の処理を繰り返す
ことによって、各イメージ・ワードのピクセルを反転す
るステップと、先頭側のイメージ・ワードから得られ、
反転されたピクセルを最終側のイメージ・ワードに保管
し、最終側のイメージ・ワードから得られ、反転された
ピクセルを先頭側のイメージ・ワードに保管するステッ
プと、入力イメージ中のワード数が奇数である場合に
は、イメージの中央のイメージ・ワードのピクセルを、
上記(a)から(d)の処理によって、反転するステッ
プとを具備する、イメージ・ワードの二次元配列からな
り、上記配列の左上隅が入力イメージの先頭部となり、
上記配列の右下隅が入力イメージの最終部となる入力イ
メージを、その中心を軸として180度回転させるため
のイメージ回転方法。 - 【請求項4】上記(c)の分割及び入れ替えのステップ
が、所定の数だけイメージ・ワードをシフトし、所定の
マスクで、シフトされたイメージ・ワード及びシフトさ
れていないイメージ・ワードにフィルタをかけることに
より達成される、請求項1に記載の方法。 - 【請求項5】入力イメージの各走査線について、走査線
中のイメージ・ワードを左側及び右側から同時に順に処
理していくステップを具備し、また、左側及び右側から
1個ずつ選択された2個のイメージ・ワードについて
は、(a)イメージ・ワードを2個のセクションに分割
し、(b)イメージ・ワードの第1のセクションを第2
のセクションと入れ替え、(c)所定の数だけイメージ
・ワードをシフトし、所定のマスクで、シフトされたイ
メージ・ワード及びシフトされていないイメージ・ワー
ドにフィルタをかけることによって、各セクションをさ
らに2個のセクションに分割し、その2個のセクション
を入れ替え、(d)個々のピクセルが入れ替えられるま
で(c)の処理を繰り返すことによって、各イメージ・
ワード中のピクセルを反転するステップと、左側のイメ
ージ・ワードから得られ、反転されたピクセルを右側の
イメージ・ワードに保管し、右側のイメージ・ワードか
ら得られ、反転されたピクセルを左側のイメージ・ワー
ドに保管するステップと、走査線中のイメージ・ワード
数が奇数の場合には、走査線の中央のイメージ・ワード
のピクセルを、上記(a)から(d)の処理によって、反転
するステップとを具備する、複数のイメージ・ワードを
含む水平走査線の垂直配列からなる入力イメージの鏡像
を生成するための鏡像生成方法。 - 【請求項6】入力イメージ中のイメージ・ワードを先頭
及び最終から同時に順に処理していくステップを具備
し、また、先頭側及び最終側から1個ずつ選択された2
個のイメージ・ワードについては、(a)イメージ・ワ
ードを2個のセクションに分割し、(b)イメージ・ワ
ードの第1のセクションを第2のセクションと入れ替
え、(c)所定の数だけイメージ・ワードをシフトし、
所定のマスクで、シフトされたイメージ・ワード及びシ
フトされていないイメージ・ワードにフィルタをかける
ことによって、各セクションをさらに2個のセクション
に分割し、その2個のセクションを入れ替え、(d)個
々のピクセルが入れ替えられるまで(c)の処理を繰り
返すことによって、各イメージ・ワードのピクセルを、
反転するステップと、先頭側のイメージ・ワードから得
られ、反転されたピクセルを最終側のイメージ・ワード
に保管し、最終側のイメージ・ワードから得られ、反転
されたピクセルを先頭側のイメージ・ワードに保管する
ステップと、入力イメージ中のワード数が奇数である場
合には、イメージの中央のイメージ・ワードのピクセル
を、上記(a)から(d)の処理によって、反転するステッ
プとを具備する、イメージ・ワードの二次元配列からな
り、上記配列の左上隅が入力イメージの先頭部となり、
上記配列の右下隅が入力イメージの最終部となる入力イ
メージを、その中心を軸として180度回転させるため
のイメージ回転方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US302307 | 1994-09-08 | ||
| US08/302,307 US5563625A (en) | 1994-09-08 | 1994-09-08 | Fast 180 degree image rotation and reversal |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0887596A true JPH0887596A (ja) | 1996-04-02 |
Family
ID=23167193
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7196251A Pending JPH0887596A (ja) | 1994-09-08 | 1995-08-01 | イメージを高速に180度回転及び反転する方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US5563625A (ja) |
| EP (1) | EP0701229A3 (ja) |
| JP (1) | JPH0887596A (ja) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5670982A (en) * | 1995-02-08 | 1997-09-23 | International Business Machines Corporation | System for fast 90-degree rotation of bi-level images |
| EP0744711B1 (en) * | 1995-04-21 | 2002-10-02 | Canon Kabushiki Kaisha | Method and apparatus for image rotation |
| US6226016B1 (en) | 1996-02-05 | 2001-05-01 | Seiko Epson Corporation | Display apparatus and method capable of rotating an image by 180 degrees |
| JP3677924B2 (ja) * | 1997-02-17 | 2005-08-03 | 株式会社セガ | ビデオゲーム装置の表示方法及び制御方法 |
| US6262751B1 (en) | 1998-10-26 | 2001-07-17 | Seiko Epson Corporation | Hardware rotation of an image on a computer display |
| US6310986B2 (en) | 1998-12-03 | 2001-10-30 | Oak Technology, Inc. | Image rotation assist circuitry and method |
| US6980701B1 (en) * | 2000-07-05 | 2005-12-27 | Canon Kabushiki Kaisha | Image processing method and apparatus capable of rotating and reversing an input image |
| US7499048B2 (en) * | 2002-10-31 | 2009-03-03 | Medtronic, Inc. | Body region indication |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6370381A (ja) * | 1986-09-12 | 1988-03-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | イメ−ジ・デ−タの回転方法 |
| JPH05120419A (ja) * | 1991-10-29 | 1993-05-18 | Oki Electric Ind Co Ltd | イメージデータの変換方法 |
-
1994
- 1994-09-08 US US08/302,307 patent/US5563625A/en not_active Expired - Fee Related
-
1995
- 1995-08-01 JP JP7196251A patent/JPH0887596A/ja active Pending
- 1995-08-08 EP EP95480103A patent/EP0701229A3/en not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| EP0701229A3 (en) | 1996-10-02 |
| US5563625A (en) | 1996-10-08 |
| EP0701229A2 (en) | 1996-03-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5533185A (en) | Pixel modification unit for use as a functional unit in a superscalar microprocessor | |
| EP0349582A1 (en) | CELLULAR ADDRESSING ARCHITECTURE FOR GRAPHICS WITH TOPOGRAPHIC BIT SWITCHING NETWORK. | |
| GB2092785A (en) | Window-scanned memory | |
| JPH01134495A (ja) | 画像データ回転処理装置及びその方法 | |
| US4368463A (en) | Graphic display area classification | |
| EP0647931A2 (en) | Method and apparatus for constructing a frame buffer with a fast copy means | |
| JPH0887596A (ja) | イメージを高速に180度回転及び反転する方法 | |
| JPH01283676A (ja) | ウインドウ画像データの読出処理方式 | |
| JPH05233795A (ja) | 画像拡大縮小装置 | |
| KR20040048051A (ko) | 범위선택 가능한 어드레스 디코더와 이를 이용한 고속그래픽 처리용 프레임 메모리 장치 | |
| JPS62988A (ja) | 画像デ−タの表示方法 | |
| JPH02148237A (ja) | データのブロツクを記憶させ且つ操作を加えるための方法 | |
| JPH0325684A (ja) | 画像描画制御装置 | |
| JPH02123470A (ja) | ブールラスター演算を実行する装置 | |
| JPS62168280A (ja) | ベクトル描画装置 | |
| JPH02153392A (ja) | ベクトル図形表示方法 | |
| JP2753349B2 (ja) | 任意角回転画像データ入出力方法及びその入出力回路並びにこれらを用いた電子ファイル装置 | |
| KR100276793B1 (ko) | 부화소 마스크 생성장치 | |
| JPH0411908B2 (ja) | ||
| JP2647378B2 (ja) | 画像処理装置 | |
| JP2548286B2 (ja) | イメージデータ処理装置 | |
| JPH03216771A (ja) | 画像の任意角回転方法および装置 | |
| JP2647377B2 (ja) | 画像処理装置 | |
| JPS6095482A (ja) | イメ−ジ回転処理方式 | |
| JPH06324935A (ja) | アドレス発生器およびアドレス発生システム |