JPH0785266A - 画像回転装置 - Google Patents
画像回転装置Info
- Publication number
- JPH0785266A JPH0785266A JP5228850A JP22885093A JPH0785266A JP H0785266 A JPH0785266 A JP H0785266A JP 5228850 A JP5228850 A JP 5228850A JP 22885093 A JP22885093 A JP 22885093A JP H0785266 A JPH0785266 A JP H0785266A
- Authority
- JP
- Japan
- Prior art keywords
- image
- processing unit
- original image
- memory
- rotation
- 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
Landscapes
- Digital Computer Display Output (AREA)
- Editing Of Facsimile Originals (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Processing (AREA)
Abstract
(57)【要約】
【目的】 高速な画像の回転処理を原画像の垂直方向の
拡大を行なわずに実現する。 【構成】 原画像を記憶する第1のメモリ101と、第
1のメモリ101から原画像の画像データを読み込む入
力処理部102と、入力処理部102からの画像データ
の水平方向の画素数を変換する横拡大縮小処理部103
と、原画像の回転処理のための転送格子点の座標計算を
行なうとともに、横拡大縮小装置103からの画像デー
タを第2のメモリ105の指定されたアドレスに書き込
む出力処理部104と、装置全体を制御する全体制御部
106とを備え、出力処理部104が、原画像を回転し
て得られる結果画像の各画素を2次元座標上の格子点に
配置する際に、同一水平格子線上に存在する結果画像の
画素の数を算出し、第2のメモリ105の同一語に格納
されるデータをワード単位で一度に書き込む。
拡大を行なわずに実現する。 【構成】 原画像を記憶する第1のメモリ101と、第
1のメモリ101から原画像の画像データを読み込む入
力処理部102と、入力処理部102からの画像データ
の水平方向の画素数を変換する横拡大縮小処理部103
と、原画像の回転処理のための転送格子点の座標計算を
行なうとともに、横拡大縮小装置103からの画像デー
タを第2のメモリ105の指定されたアドレスに書き込
む出力処理部104と、装置全体を制御する全体制御部
106とを備え、出力処理部104が、原画像を回転し
て得られる結果画像の各画素を2次元座標上の格子点に
配置する際に、同一水平格子線上に存在する結果画像の
画素の数を算出し、第2のメモリ105の同一語に格納
されるデータをワード単位で一度に書き込む。
Description
【0001】
【産業上の利用分野】本発明は、ディジタル画像の回転
処理を行なう画像回転装置に関するものである。
処理を行なう画像回転装置に関するものである。
【0002】
【従来の技術】近年、コンピュータの利用技術の進歩に
伴い、コンピュータ上で画像を編集する処理が増えてき
ており、特に画像の回転処理の高速化や高画質化のため
に、画像回転装置が利用されるようになってきた。この
画像回転装置は、例えば特開昭63−191192号公
報に記載された構成が知られている。以下、従来の画像
回転装置について説明する。
伴い、コンピュータ上で画像を編集する処理が増えてき
ており、特に画像の回転処理の高速化や高画質化のため
に、画像回転装置が利用されるようになってきた。この
画像回転装置は、例えば特開昭63−191192号公
報に記載された構成が知られている。以下、従来の画像
回転装置について説明する。
【0003】従来の画像回転装置における処理は、原画
から回転角θに応じた縦拡大横縮小画像を算出する画素
数変換処理と、傾きθの直線に沿って転送先の格子点座
標を算出し、縦拡大横縮小画像を格子点に転送する画素
転送処理とからなる。
から回転角θに応じた縦拡大横縮小画像を算出する画素
数変換処理と、傾きθの直線に沿って転送先の格子点座
標を算出し、縦拡大横縮小画像を格子点に転送する画素
転送処理とからなる。
【0004】このような、従来の画像回転装置における
1次元の画像の回転処理について図11を用いて説明す
る。図11は、1次元の原画像を、回転の中心を原点と
して角度θだけ回転する場合の処理を説明するためのも
のである。図11において、原点を通り、傾きがtan
θの直線をL、この直線Lと各垂直格子線との交点を左
から順に(E0 、E1 、E2 、…)と表す。また、(E
0 、E1 、E2 、…)から1番近い格子点を(C0 、C
1 、C2 …)と表す。
1次元の画像の回転処理について図11を用いて説明す
る。図11は、1次元の原画像を、回転の中心を原点と
して角度θだけ回転する場合の処理を説明するためのも
のである。図11において、原点を通り、傾きがtan
θの直線をL、この直線Lと各垂直格子線との交点を左
から順に(E0 、E1 、E2 、…)と表す。また、(E
0 、E1 、E2 、…)から1番近い格子点を(C0 、C
1 、C2 …)と表す。
【0005】1次元の画像の回転処理は、原画像を回転
角に応じて縮小し、縮小された画像の各画素を順番に、
直線Lから算出される格子点(C0 、C1 、C2 …)に
転送すれば実現することができる。以下、(C0 、
C1 、C2 …)のように、原画像の画素を転送する格子
点を転送格子点と称することにする。
角に応じて縮小し、縮小された画像の各画素を順番に、
直線Lから算出される格子点(C0 、C1 、C2 …)に
転送すれば実現することができる。以下、(C0 、
C1 、C2 …)のように、原画像の画素を転送する格子
点を転送格子点と称することにする。
【0006】以下、W個の画素で構成される1次元の画
像に対する処理の手順を説明する。 ステップ1.1 直線Lと垂直格子線の交点Ei (iは整数)に、最も近
い格子点Ci のx座標XCi とy座標YCi を以下の式
から算出する。ただし、この時iは、0≦i<[Wco
sθ+0.5]を満たすものとする。この結果、[Wc
osθ+0.5]個の格子点Ci の座標を求めることと
なる。 XCi =i ・・・(1) YCi =[i×tanθ+0.5] ・・・(2) なお、[x]はxを越えない最大の整数を表す。
像に対する処理の手順を説明する。 ステップ1.1 直線Lと垂直格子線の交点Ei (iは整数)に、最も近
い格子点Ci のx座標XCi とy座標YCi を以下の式
から算出する。ただし、この時iは、0≦i<[Wco
sθ+0.5]を満たすものとする。この結果、[Wc
osθ+0.5]個の格子点Ci の座標を求めることと
なる。 XCi =i ・・・(1) YCi =[i×tanθ+0.5] ・・・(2) なお、[x]はxを越えない最大の整数を表す。
【0007】ステップ1.2 画素数がW個からなる原画像を、[Wcosθ+0.
5]の画素からなる画像に縮小する処理を行なう。
5]の画素からなる画像に縮小する処理を行なう。
【0008】ステップ1.3 ステップ1.2の処理で縮小した画像の各画素を、ステ
ップ1.1で算出した[Wcosθ+0.5]個の格子
点に、順に転送する処理を行なう。このようにして1次
元画像の回転処理を行なうことができる。
ップ1.1で算出した[Wcosθ+0.5]個の格子
点に、順に転送する処理を行なう。このようにして1次
元画像の回転処理を行なうことができる。
【0009】次に、2次元の矩形画像の回転処理につい
て、図12を用いて説明する。図12は、2次元の画像
を回転の中心を原点として角度θだけ回転する場合の、
従来の処理を説明するためのものである。図12におい
て、y切片をk(kは整数)、傾きがtanθの直線を
Lk とする。つまり、直線Lk は以下のように表され
る。 Lk :y=(tanθ)x−k ・・・(3) また、原点を通り、傾きが(−tan(π/2−θ))
の直線をGと表す。つまり、直線Gは以下のように表さ
れる。 G:y=−(tan(π/2−θ))x ・・・(4)
て、図12を用いて説明する。図12は、2次元の画像
を回転の中心を原点として角度θだけ回転する場合の、
従来の処理を説明するためのものである。図12におい
て、y切片をk(kは整数)、傾きがtanθの直線を
Lk とする。つまり、直線Lk は以下のように表され
る。 Lk :y=(tanθ)x−k ・・・(3) また、原点を通り、傾きが(−tan(π/2−θ))
の直線をGと表す。つまり、直線Gは以下のように表さ
れる。 G:y=−(tan(π/2−θ))x ・・・(4)
【0010】2次元の矩形画像の回転処理は、はじめに
原画像を垂直方向に拡大し、拡大された画像のk番目の
水平1ラインの各画素を、直線Lk から算出される転送
格子点に転送すれば実現することができる。ただし、こ
の時、拡大された画像のk番目の水平1ラインの最初の
画素は、直線Lk と直線Gの交点からもっとも近い格子
点に転送されるようにする。本明細書では、各水平1ラ
インの最初の画素が転送される格子点を転送格子点と称
す。従来の画像回転装置では、転送格子点は、直線Lk
と直線Gの交点からもっとも近い格子点となる。
原画像を垂直方向に拡大し、拡大された画像のk番目の
水平1ラインの各画素を、直線Lk から算出される転送
格子点に転送すれば実現することができる。ただし、こ
の時、拡大された画像のk番目の水平1ラインの最初の
画素は、直線Lk と直線Gの交点からもっとも近い格子
点に転送されるようにする。本明細書では、各水平1ラ
インの最初の画素が転送される格子点を転送格子点と称
す。従来の画像回転装置では、転送格子点は、直線Lk
と直線Gの交点からもっとも近い格子点となる。
【0011】次に、水平方向の画素数がW個、垂直方向
の画素数がH個からなる2次元の矩形画像を回転する場
合の従来の画像回転装置の処理の手順を説明する。 ステップ2.1 垂直方向の画素数がH個からなる原画像を、垂直方向の
画素数が[H/cosθ+0.5]個になるように、画
像を垂直方向に拡大する処理を行なう。
の画素数がH個からなる2次元の矩形画像を回転する場
合の従来の画像回転装置の処理の手順を説明する。 ステップ2.1 垂直方向の画素数がH個からなる原画像を、垂直方向の
画素数が[H/cosθ+0.5]個になるように、画
像を垂直方向に拡大する処理を行なう。
【0012】ステップ2.2 ステップ2.1の処理で垂直方向に拡大した2次元の矩
形画像の、各水平1ラインに対して、前記したステップ
1.1からステップ1.3までの処理を行なう。ただ
し、ステップ2.1の処理で垂直方向に拡大した2次元
の矩形画像の、k番目の水平1ラインを処理する時に
は、ステップ1.1で示した直線Lを直線Lk にし、ま
たiの範囲を以下のように処理を行なう。これは、直線
Lk と直線Gの交点のx座標が、kcosθsinθと
表されるためである。 i:[kcosθsinθ+0.5]≦i<[kcosθsinθ+0. 5]+[Wsinθ+0.5] ・・・(5) 以上の処理を行なうことにより、2次元画像の回転処理
を行なうことができる。
形画像の、各水平1ラインに対して、前記したステップ
1.1からステップ1.3までの処理を行なう。ただ
し、ステップ2.1の処理で垂直方向に拡大した2次元
の矩形画像の、k番目の水平1ラインを処理する時に
は、ステップ1.1で示した直線Lを直線Lk にし、ま
たiの範囲を以下のように処理を行なう。これは、直線
Lk と直線Gの交点のx座標が、kcosθsinθと
表されるためである。 i:[kcosθsinθ+0.5]≦i<[kcosθsinθ+0. 5]+[Wsinθ+0.5] ・・・(5) 以上の処理を行なうことにより、2次元画像の回転処理
を行なうことができる。
【0013】次に、上記の原理に基づく従来の画像回転
装置について、その構成を図13を用いて説明する。図
13は、従来の画像回転装置を示すものである。図13
において、1301は、原画像を記憶するメモリであ
る。1302は、画像の回転角情報を保持している回転
角保持装置である。1303は、メモリ1301から原
画像を入力し、回転角保持装置1302からの出力に基
いて原画像を水平方向に縮小し、垂直方向に拡大するこ
とにより、画像の画素数を変換する画素数変換装置であ
る。1304は、回転角保持装置1302からの出力に
基づき、格子点の座標を算出する格子点座標算出装置で
ある。1305は、格子点座標算出装置1304で算出
された格子点のx座標を格納するx座標格納装置であ
る。1306は、格子点座標算出装置1304で算出さ
れた格子点のy座標を格納するy座標格納装置である。
x座標格納装置1305およびy座標格納装置1306
の出力は、格子点座標算出装置1304に入力され、次
の格子点の座標の算出に使用される。1307は、画素
数変換装置1303の出力を一時記憶する一時記憶装置
である。1308は、x座標格納装置1305およびy
座標格納装置1306の出力に基づき結果画像を格納す
るメモリ1309のアドレスを算出し、一時記憶装置1
307の内容をメモリ1309に格納させる画素転送装
置である。1309は、結果画像を記憶するメモリであ
る。
装置について、その構成を図13を用いて説明する。図
13は、従来の画像回転装置を示すものである。図13
において、1301は、原画像を記憶するメモリであ
る。1302は、画像の回転角情報を保持している回転
角保持装置である。1303は、メモリ1301から原
画像を入力し、回転角保持装置1302からの出力に基
いて原画像を水平方向に縮小し、垂直方向に拡大するこ
とにより、画像の画素数を変換する画素数変換装置であ
る。1304は、回転角保持装置1302からの出力に
基づき、格子点の座標を算出する格子点座標算出装置で
ある。1305は、格子点座標算出装置1304で算出
された格子点のx座標を格納するx座標格納装置であ
る。1306は、格子点座標算出装置1304で算出さ
れた格子点のy座標を格納するy座標格納装置である。
x座標格納装置1305およびy座標格納装置1306
の出力は、格子点座標算出装置1304に入力され、次
の格子点の座標の算出に使用される。1307は、画素
数変換装置1303の出力を一時記憶する一時記憶装置
である。1308は、x座標格納装置1305およびy
座標格納装置1306の出力に基づき結果画像を格納す
るメモリ1309のアドレスを算出し、一時記憶装置1
307の内容をメモリ1309に格納させる画素転送装
置である。1309は、結果画像を記憶するメモリであ
る。
【0014】以上のように構成された従来の画像回転装
置について、その動作を説明する。まず、画素数変換装
置1303は、メモリ1301に格納されている原画像
を読み込み、回転角保持装置1302からの出力に基い
て原画像を水平方向に縮小し、垂直方向に拡大すること
により画像の画素数を変換し、その結果を一時記憶装置
1307に書き込む。画素転送装置1308は、一時記
憶装置1307に格納されている画像を1画素入力し、
x座標格納装置1305およびy座標格納装置1306
に格納されている値から、その画素が格納されるメモリ
のアドレスを算出して、メモリ1309に格納する。ま
た、格子点座標算出装置1304は、回転角保持装置1
302、x座標格納装置1305およびy座標格納装置
1306の値に基づいて、次の格子点の座標を算出し、
画素転送装置1308が1画素処理するごとに、x座標
格納装置1305およびy座標格納装置1306の内容
を更新する。以上の処理を繰り返すことにより、2次元
の矩形画像の回転処理を行なうことができる。
置について、その動作を説明する。まず、画素数変換装
置1303は、メモリ1301に格納されている原画像
を読み込み、回転角保持装置1302からの出力に基い
て原画像を水平方向に縮小し、垂直方向に拡大すること
により画像の画素数を変換し、その結果を一時記憶装置
1307に書き込む。画素転送装置1308は、一時記
憶装置1307に格納されている画像を1画素入力し、
x座標格納装置1305およびy座標格納装置1306
に格納されている値から、その画素が格納されるメモリ
のアドレスを算出して、メモリ1309に格納する。ま
た、格子点座標算出装置1304は、回転角保持装置1
302、x座標格納装置1305およびy座標格納装置
1306の値に基づいて、次の格子点の座標を算出し、
画素転送装置1308が1画素処理するごとに、x座標
格納装置1305およびy座標格納装置1306の内容
を更新する。以上の処理を繰り返すことにより、2次元
の矩形画像の回転処理を行なうことができる。
【0015】
【発明が解決しようとする課題】しかしながら、上記の
従来の画像回転装置では、1画素ずつ回転画像を算出し
ているため、回転処理の高速化を図ることが困難である
という課題を有していた。また、原画像の垂直方向の拡
大を行なうための回路を必要とするため、画像回転装置
の回路量が大きくなるという課題も有していた。
従来の画像回転装置では、1画素ずつ回転画像を算出し
ているため、回転処理の高速化を図ることが困難である
という課題を有していた。また、原画像の垂直方向の拡
大を行なうための回路を必要とするため、画像回転装置
の回路量が大きくなるという課題も有していた。
【0016】本発明は、上記従来技術の課題を解決する
もので、回転処理を高速に行なうことができ、原画像の
垂直方向の拡大を行なうための回路を必要としない画像
回転装置を提供することを目的とする。
もので、回転処理を高速に行なうことができ、原画像の
垂直方向の拡大を行なうための回路を必要としない画像
回転装置を提供することを目的とする。
【0017】
【課題を解決するための手段】上記目的を達成するため
に本発明は、原画像を記憶する第1のメモリと、原画像
の回転処理を行なって得られる画像を記憶する第2のメ
モリと、第1のメモリから原画像の画像データを読み込
む入力処理部と、入力処理部から入力した画像データの
水平方向の画素数を変換する横拡大縮小処理部と、原画
像の回転処理のための転送格子点の座標計算を行なうと
ともに、横拡大縮小処理部から入力された画像データを
第2のメモリの指定されたアドレスに書き込む出力部
と、装置各部を制御する全体制御部とを備えたものであ
る。
に本発明は、原画像を記憶する第1のメモリと、原画像
の回転処理を行なって得られる画像を記憶する第2のメ
モリと、第1のメモリから原画像の画像データを読み込
む入力処理部と、入力処理部から入力した画像データの
水平方向の画素数を変換する横拡大縮小処理部と、原画
像の回転処理のための転送格子点の座標計算を行なうと
ともに、横拡大縮小処理部から入力された画像データを
第2のメモリの指定されたアドレスに書き込む出力部
と、装置各部を制御する全体制御部とを備えたものであ
る。
【0018】
【作用】本発明は、上記構成によって、入力処理部、横
拡大縮小処理部、および出力処理部の動作回数を全体制
御部で制御することにより、原画像の垂直方向の拡大回
路を設けずに画像の回転処理を高速に実現することがで
きる。
拡大縮小処理部、および出力処理部の動作回数を全体制
御部で制御することにより、原画像の垂直方向の拡大回
路を設けずに画像の回転処理を高速に実現することがで
きる。
【0019】また本発明によれば、出力処理部が、原画
像を回転して得られる結果画像の各画素を2次元座標上
の格子点に配置する際に、同一水平格子線上に存在する
結果画像の画素の数を算出し、第2のメモリの同一語に
格納されるデータをワード単位で一度に書き込むため、
回転角度θが−1≦tanθ≦1で与えられる回転処理
を高速に行なうことができる。
像を回転して得られる結果画像の各画素を2次元座標上
の格子点に配置する際に、同一水平格子線上に存在する
結果画像の画素の数を算出し、第2のメモリの同一語に
格納されるデータをワード単位で一度に書き込むため、
回転角度θが−1≦tanθ≦1で与えられる回転処理
を高速に行なうことができる。
【0020】また本発明によれば、横拡大縮小処理部で
処理する画素が1ワードが構成されるように拡大処理を
行ない、出力処理部から第2のメモリに書き込みを行な
う回数を全体制御部で制御して原画像の横縮小処理を実
現することにより、第2のメモリに画像データを書き込
むための画像データのシフト処理を行なうための回路を
設けずに、画像の回転処理を実現することができる。
処理する画素が1ワードが構成されるように拡大処理を
行ない、出力処理部から第2のメモリに書き込みを行な
う回数を全体制御部で制御して原画像の横縮小処理を実
現することにより、第2のメモリに画像データを書き込
むための画像データのシフト処理を行なうための回路を
設けずに、画像の回転処理を実現することができる。
【0021】さらに本発明によれば、原画像を回転して
結果画像を得る際に、結果画像を構成する画素のうち、
2つ以上の画素の座標をパラメータとして入力すること
により、三角関数の演算を行なわずに画像の回転処理を
行なうことができるため、三角関数の演算を行なう回路
を設けずに、高速な回転処理を行なうことができる。ま
た、2つ以上の画素の座標値を任意に設定することによ
り、アフィン変換を容易に行なうことができる。
結果画像を得る際に、結果画像を構成する画素のうち、
2つ以上の画素の座標をパラメータとして入力すること
により、三角関数の演算を行なわずに画像の回転処理を
行なうことができるため、三角関数の演算を行なう回路
を設けずに、高速な回転処理を行なうことができる。ま
た、2つ以上の画素の座標値を任意に設定することによ
り、アフィン変換を容易に行なうことができる。
【0022】
(実施例1)以下、本発明の第1の実施例について説明
する。本発明の第1の実施例では、回転角度θが、−1
≦tanθ≦1の場合の回転処理について説明する。説
明を簡単にするために、はじめに図3を用いて、−1≦
tanθ≦1の場合の一次元の画像の回転処理について
説明する。図3において、原画像の各画素を白丸○、回
転されて得られた結果画像を黒丸●で表し、Wは原画像
の画素数を表す。点A 0 は原画像の1番左の画素、点A
W-1 は原画像の1番右の画素を表しており、点A0 は原
点にある。また、結果画像は、回転の中心を原点(点A
0 )、回転角をθとした時に得られる画像を表してい
る。またMを以下のように定義すると、 M=[Wcosθ] ・・・(6) 結果画像の各画素は、x=M−1までの各垂直格子線上
に1個存在している。このため、結果画像の画素数はM
個となる。点B0 、点BM-1 は、それぞれ、原画像の点
A0 、点AW-1 に対応する結果画像の画素である。この
時、回転角θは、 tanθ=n/m ・・・(7) (ただし、m≧n:m、nは0以上の整数)で表される
ものとし、直線Lは、 L:y=(n/m)x ・・・(8) で表されるものとする。
する。本発明の第1の実施例では、回転角度θが、−1
≦tanθ≦1の場合の回転処理について説明する。説
明を簡単にするために、はじめに図3を用いて、−1≦
tanθ≦1の場合の一次元の画像の回転処理について
説明する。図3において、原画像の各画素を白丸○、回
転されて得られた結果画像を黒丸●で表し、Wは原画像
の画素数を表す。点A 0 は原画像の1番左の画素、点A
W-1 は原画像の1番右の画素を表しており、点A0 は原
点にある。また、結果画像は、回転の中心を原点(点A
0 )、回転角をθとした時に得られる画像を表してい
る。またMを以下のように定義すると、 M=[Wcosθ] ・・・(6) 結果画像の各画素は、x=M−1までの各垂直格子線上
に1個存在している。このため、結果画像の画素数はM
個となる。点B0 、点BM-1 は、それぞれ、原画像の点
A0 、点AW-1 に対応する結果画像の画素である。この
時、回転角θは、 tanθ=n/m ・・・(7) (ただし、m≧n:m、nは0以上の整数)で表される
ものとし、直線Lは、 L:y=(n/m)x ・・・(8) で表されるものとする。
【0023】本発明による、−1≦tanθ≦1の場合
の1次元の画像の回転処理は、原画から回転角θに応じ
て原画像を縮小する画素数変換処理と、傾きθの直線に
沿って転送格子点の座標を算出し、縮小された画像を順
に、転送格子点に転送する画素転送処理からなる。本実
施例では、同一水平格子線上に存在する転送格子点の数
を算出することにより、転送格子点の座標を算出してい
る。これにより、同一水平格子線上に転送する画素を一
括して処理することができる。
の1次元の画像の回転処理は、原画から回転角θに応じ
て原画像を縮小する画素数変換処理と、傾きθの直線に
沿って転送格子点の座標を算出し、縮小された画像を順
に、転送格子点に転送する画素転送処理からなる。本実
施例では、同一水平格子線上に存在する転送格子点の数
を算出することにより、転送格子点の座標を算出してい
る。これにより、同一水平格子線上に転送する画素を一
括して処理することができる。
【0024】以下、同一水平格子線上に存在する転送格
子点の数を算出する処理について図4を用いて説明す
る。図4は、図3におけるy=jで表される水平格子線
と直線Lとの交点付近を拡大した図であり、j番目の水
平格子線上にある転送格子点のうち、一番左にある転送
格子点Bi のx座標をXBi 、y座標をYBi とする
と、直線Lから算出される転送格子点に、縮小した原画
像を転送する時に、実際のディジタル画像上で直線を構
成するi番目の垂直格子線上の転送格子点Bi のy座標
YBi が YBi =[(n/m)×i] ・・・(9) となるように画素を配置している。この時、 α=[m/n] ・・・(10) β=m−n×[m/n] ・・・(11) なるα、βを定義すると、同一水平格子線上に存在する
転送格子点の数は、α個またはα+1個以外にはならな
い。このとき、j番目の水平格子線上に存在する転送格
子点の数Pj が、α個とα+1個のどちらになるかは、
量子化による誤差βを積算して求められる値Rj から、
以下のように求めることができる。 if Rj +(β−n)<0 Pj =α Rj+1 =Rj +β else Pj =α+1 Rj+1 =Rj +(β−n) ・・・(12)
子点の数を算出する処理について図4を用いて説明す
る。図4は、図3におけるy=jで表される水平格子線
と直線Lとの交点付近を拡大した図であり、j番目の水
平格子線上にある転送格子点のうち、一番左にある転送
格子点Bi のx座標をXBi 、y座標をYBi とする
と、直線Lから算出される転送格子点に、縮小した原画
像を転送する時に、実際のディジタル画像上で直線を構
成するi番目の垂直格子線上の転送格子点Bi のy座標
YBi が YBi =[(n/m)×i] ・・・(9) となるように画素を配置している。この時、 α=[m/n] ・・・(10) β=m−n×[m/n] ・・・(11) なるα、βを定義すると、同一水平格子線上に存在する
転送格子点の数は、α個またはα+1個以外にはならな
い。このとき、j番目の水平格子線上に存在する転送格
子点の数Pj が、α個とα+1個のどちらになるかは、
量子化による誤差βを積算して求められる値Rj から、
以下のように求めることができる。 if Rj +(β−n)<0 Pj =α Rj+1 =Rj +β else Pj =α+1 Rj+1 =Rj +(β−n) ・・・(12)
【0025】なお、(9)式に基づいて直線を描画する
ときに、同一水平格子線上に表れる画素がα個またはα
+1個となることについては、本願出願人が先に出願し
た特開昭63−142479号公報のP3〜4に開示し
てある。
ときに、同一水平格子線上に表れる画素がα個またはα
+1個となることについては、本願出願人が先に出願し
た特開昭63−142479号公報のP3〜4に開示し
てある。
【0026】このようにして、同一水平格子線上に存在
する転送格子点の数を算出し、同一水平格子線上に存在
する転送格子点のうち、1番左にある転送格子点の座標
を算出することにより、同一水平格子線上にあるその他
の転送格子点の座標を算出する必要がなくなり、同一水
平格子線上に転送する画素を一括して処理することがで
きる。例えば、図4に示した画素Bi の座標を算出すれ
ば、画素Bi+1 およびBi+2 については、その座標を算
出する必要がないので、画素Bi 、Bi+1 、B i+2 の3
つの画素を同時に処理することができる。
する転送格子点の数を算出し、同一水平格子線上に存在
する転送格子点のうち、1番左にある転送格子点の座標
を算出することにより、同一水平格子線上にあるその他
の転送格子点の座標を算出する必要がなくなり、同一水
平格子線上に転送する画素を一括して処理することがで
きる。例えば、図4に示した画素Bi の座標を算出すれ
ば、画素Bi+1 およびBi+2 については、その座標を算
出する必要がないので、画素Bi 、Bi+1 、B i+2 の3
つの画素を同時に処理することができる。
【0027】次に、上述した本実施例における1次元の
画像を回転する時の処理手順についてステップ毎に分け
て説明する。 ステップA1 W個の画素からなる原画像を、[W×cosθ]個の画
素からなる画像に縮小する処理を行なう。これは、図3
に示すように、回転処理を行なって得られる結果画像の
点B0 と点BM-1 との間の距離を、原画像の点A0 と点
AW-1 との間の距離とほぼ等しくするためである。
画像を回転する時の処理手順についてステップ毎に分け
て説明する。 ステップA1 W個の画素からなる原画像を、[W×cosθ]個の画
素からなる画像に縮小する処理を行なう。これは、図3
に示すように、回転処理を行なって得られる結果画像の
点B0 と点BM-1 との間の距離を、原画像の点A0 と点
AW-1 との間の距離とほぼ等しくするためである。
【0028】ステップA2 j番目の水平格子線上の1番左にある転送格子点のx座
標XFj 、およびy座標YFj を、j−1番目の水平格
子線上の1番左にある転送格子点のx座標XF j-1 、y
座標YFj-1 、およびj−1番目の水平格子線上に存在
する転送格子点の数Pj-1 から、以下のように算出す
る。 XFj =XFj-1 +Pj-1 ・・・(13) YFj =YFj-1 +1 ・・・(14) ただし、XF0 =YF0 =0
標XFj 、およびy座標YFj を、j−1番目の水平格
子線上の1番左にある転送格子点のx座標XF j-1 、y
座標YFj-1 、およびj−1番目の水平格子線上に存在
する転送格子点の数Pj-1 から、以下のように算出す
る。 XFj =XFj-1 +Pj-1 ・・・(13) YFj =YFj-1 +1 ・・・(14) ただし、XF0 =YF0 =0
【0029】ステップA3 j番目の水平格子線上に存在する転送格子点の数P
j が、α個とα+1個のどちらになるかを、式(12)
から算出する。
j が、α個とα+1個のどちらになるかを、式(12)
から算出する。
【0030】ステップA4 ステップA3で算出した、j番目の水平格子線上に存在
する転送格子点の数Pj がαである場合には、ステップ
A1の処理で縮小して得られた画像中の、j番目の水平
格子線上に転送すべきα個の画素を一括して転送する処
理を行なう。P j がα+1である場合には、ステップA
1の処理で縮小して得られた画像中の、j番目の水平格
子線上に転送すべきα+1個の画素を一括して転送する
処理を行なう。
する転送格子点の数Pj がαである場合には、ステップ
A1の処理で縮小して得られた画像中の、j番目の水平
格子線上に転送すべきα個の画素を一括して転送する処
理を行なう。P j がα+1である場合には、ステップA
1の処理で縮小して得られた画像中の、j番目の水平格
子線上に転送すべきα+1個の画素を一括して転送する
処理を行なう。
【0031】ステップA5 ステップA2からステップA4までの処理を、以下の式
を満たすjについて、それぞれ行なう。これは、Wの画
素数を持つ1次元の画像を、直線Lから算出される転送
格子点に転送する時には、転送格子点が存在する水平格
子線の数が[W×sinθ]+1個あるという理由によ
る。 0≦j<[W×sinθ]+1 ・・・(15) 以上の処理を行なえば、1次元画像の回転処理を行なう
ことができる。
を満たすjについて、それぞれ行なう。これは、Wの画
素数を持つ1次元の画像を、直線Lから算出される転送
格子点に転送する時には、転送格子点が存在する水平格
子線の数が[W×sinθ]+1個あるという理由によ
る。 0≦j<[W×sinθ]+1 ・・・(15) 以上の処理を行なえば、1次元画像の回転処理を行なう
ことができる。
【0032】次に2次元の矩形画像の回転処理につい
て、図5を用いて説明する。図5は、回転の中心を原点
として、2次元の画像を角度θだけ回転する場合の、回
転処理を説明するためのものである。図5において、y
切片がk(kは整数)、傾きが(n/m)の直線をLk
と表す。つまり、直線Lk は以下のように表される。 Lk :y=(n/m)x−k ・・・(16) また、原点を通り、傾きが(−tan(π/2−θ))
の直線をGと表す。つまり直線Gは、以下のように表さ
れる。 G:y=−(m/n)x ・・・(17)
て、図5を用いて説明する。図5は、回転の中心を原点
として、2次元の画像を角度θだけ回転する場合の、回
転処理を説明するためのものである。図5において、y
切片がk(kは整数)、傾きが(n/m)の直線をLk
と表す。つまり、直線Lk は以下のように表される。 Lk :y=(n/m)x−k ・・・(16) また、原点を通り、傾きが(−tan(π/2−θ))
の直線をGと表す。つまり直線Gは、以下のように表さ
れる。 G:y=−(m/n)x ・・・(17)
【0033】2次元の矩形画像の回転処理は、転送開始
点を直線Gと直線Lk の交点から最も近い垂直格子線上
に存在する格子点を転送開始点Sk として算出した後、
上記のステップA1からA5までの処理を、原画像の各
水平1ラインに対して行なうことによって実現できる。
図5における●は、L0 の直線から算出される転送格子
点と、直線Lk における転送開始点Sk を表している。
点を直線Gと直線Lk の交点から最も近い垂直格子線上
に存在する格子点を転送開始点Sk として算出した後、
上記のステップA1からA5までの処理を、原画像の各
水平1ラインに対して行なうことによって実現できる。
図5における●は、L0 の直線から算出される転送格子
点と、直線Lk における転送開始点Sk を表している。
【0034】上記のステップA1で、W個の画素からな
る原画像の水平1ラインを、[W×cosθ]個の画素
からなる画像に縮小処理を行なっている。このため、原
画像と回転された結果画像の画素数をほぼ等しくするた
めには、上記のステップA1からA5までの処理を[H
/cosθ]回行なう必要がある。原画像はH行の水平
ラインから構成されているので、本実施例では、([H
/cosθ]−H)行の原画像の水平ラインに対して、
上記のステップA1からA5までの処理を2回行なうこ
とによって、原画像と回転された結果画像の画素数をほ
ぼ等しくする回転処理を実現している。以下、具体的に
処理を説明する。
る原画像の水平1ラインを、[W×cosθ]個の画素
からなる画像に縮小処理を行なっている。このため、原
画像と回転された結果画像の画素数をほぼ等しくするた
めには、上記のステップA1からA5までの処理を[H
/cosθ]回行なう必要がある。原画像はH行の水平
ラインから構成されているので、本実施例では、([H
/cosθ]−H)行の原画像の水平ラインに対して、
上記のステップA1からA5までの処理を2回行なうこ
とによって、原画像と回転された結果画像の画素数をほ
ぼ等しくする回転処理を実現している。以下、具体的に
処理を説明する。
【0035】ステップB1 原画像の水平1ラインの転送開始点Sk のx座標X
Sk 、Y座標YSk を以下の式から算出する。ただし、
この時、この原画像の水平1ラインは、直線Lk から算
出される転送格子点に転送するものとし、直線Gと直線
Lk の交点から最も近い垂直格子線上に存在する転送格
子点を転送開始点Sk とする。 XSk =[kcosθsinθ+0.5] ・・・(18) YSk =−[kcos2 θ+0.5] ・・・(19)
Sk 、Y座標YSk を以下の式から算出する。ただし、
この時、この原画像の水平1ラインは、直線Lk から算
出される転送格子点に転送するものとし、直線Gと直線
Lk の交点から最も近い垂直格子線上に存在する転送格
子点を転送開始点Sk とする。 XSk =[kcosθsinθ+0.5] ・・・(18) YSk =−[kcos2 θ+0.5] ・・・(19)
【0036】ステップB2 ステップB1で示した原画像の水平1ラインに対して、
ステップA1からA5までの処理を行なう。ただし、転
送開始点はSk とする。
ステップA1からA5までの処理を行なう。ただし、転
送開始点はSk とする。
【0037】ステップB3 ステップB1で示した原画像の水平1ラインに対して、
ステップA1からA5までの処理を2回行なうかどうか
を判断する。
ステップA1からA5までの処理を2回行なうかどうか
を判断する。
【0038】ステップB4 ステップB3の処理で、1回しか処理を行なわないと判
断した時には、ステップB1に戻り、今まで処理を行な
った原画像の水平1ラインの次のラインを、直線Lk+1
から算出される転送格子点に転送するための処理を開始
する。
断した時には、ステップB1に戻り、今まで処理を行な
った原画像の水平1ラインの次のラインを、直線Lk+1
から算出される転送格子点に転送するための処理を開始
する。
【0039】ステップB5 ステップB3の処理で、2回処理を行なうと判断した時
には、ステップB1で示した原画像の水平1ラインを、
直線Lk+1 から算出される転送格子点に転送するため
に、ステップB1で示した原画像の水平1ラインの転送
開始点Sk+1 を以下の式から算出する。 XSk+1 =[(k+1)cosθsinθ+0.5]・・・(20) YSK+1 =−[(k+1)cos2 θ+0.5] ・・・(21)
には、ステップB1で示した原画像の水平1ラインを、
直線Lk+1 から算出される転送格子点に転送するため
に、ステップB1で示した原画像の水平1ラインの転送
開始点Sk+1 を以下の式から算出する。 XSk+1 =[(k+1)cosθsinθ+0.5]・・・(20) YSK+1 =−[(k+1)cos2 θ+0.5] ・・・(21)
【0040】ステップB6 ステップB1で示した原画像の水平1ラインに対して、
ステップA1からA5までの処理を行なう。ただし、転
送開始点はSK+1 とする。
ステップA1からA5までの処理を行なう。ただし、転
送開始点はSK+1 とする。
【0041】ステップB7 ステップB1に戻り、今まで処理を行なった原画像の水
平1ラインの次のラインを、直線Lk+2 から算出される
格子点に転送するための処理を開始する。
平1ラインの次のラインを、直線Lk+2 から算出される
格子点に転送するための処理を開始する。
【0042】ステップB8 ステップB1からB7までの処理をH回行なう。
【0043】以上のように、原画像の各水平1ラインの
転送開始点を、直線Lk と直線Gの交点から算出した後
に、原画像を縮小した画像の各画素を順に、直線Lk か
ら算出される転送格子点に転送すれば、2次元画像の回
転処理を実現することができる。さらに、上記のステッ
プB5からB7までの処理を、([H/cosθ]−
H)回行なうことにより、原画像の垂直方向の拡大回路
を必要とせずに、原画像と回転された結果画像の画素数
をほぼ等しくする回転処理を実現することができる。
転送開始点を、直線Lk と直線Gの交点から算出した後
に、原画像を縮小した画像の各画素を順に、直線Lk か
ら算出される転送格子点に転送すれば、2次元画像の回
転処理を実現することができる。さらに、上記のステッ
プB5からB7までの処理を、([H/cosθ]−
H)回行なうことにより、原画像の垂直方向の拡大回路
を必要とせずに、原画像と回転された結果画像の画素数
をほぼ等しくする回転処理を実現することができる。
【0044】次に、上記アルゴリズムを実施するための
画像回転装置の構成について図1を参照して説明する。
図1において、101は、原画像を記憶する第1のメモ
リである。102は、第1のメモリ101から読み出す
原画像のアドレスを計算して、原画像を第1のメモリ1
01から入力する入力処理部である。103は、入力処
理部102から入力された原画像の横方向の拡大縮小を
行なう横拡大縮小処理部である。104は、転送格子点
の座標計算を行なうとともに、横拡大縮小処理部103
から入力された画像を第2のメモリ105へ書き込む出
力処理部である。105は、回転された結果画像を記憶
する第2のメモリである。106は、入力処理部10
2、横縮小処理部103、出力処理部104の制御を行
なう全体制御部である。107、108、109は、全
体制御部106から出力され、それぞれ入力制御部10
2、横拡大縮小処理部103、出力処理部104を制御
する制御信号である。110から113までは、データ
ラインであり、各処理部およびメモリはデータラインを
介して画像データの入出力を行なう。
画像回転装置の構成について図1を参照して説明する。
図1において、101は、原画像を記憶する第1のメモ
リである。102は、第1のメモリ101から読み出す
原画像のアドレスを計算して、原画像を第1のメモリ1
01から入力する入力処理部である。103は、入力処
理部102から入力された原画像の横方向の拡大縮小を
行なう横拡大縮小処理部である。104は、転送格子点
の座標計算を行なうとともに、横拡大縮小処理部103
から入力された画像を第2のメモリ105へ書き込む出
力処理部である。105は、回転された結果画像を記憶
する第2のメモリである。106は、入力処理部10
2、横縮小処理部103、出力処理部104の制御を行
なう全体制御部である。107、108、109は、全
体制御部106から出力され、それぞれ入力制御部10
2、横拡大縮小処理部103、出力処理部104を制御
する制御信号である。110から113までは、データ
ラインであり、各処理部およびメモリはデータラインを
介して画像データの入出力を行なう。
【0045】次に図2を用いて、図1における出力処理
部104の詳細な説明を行なう。図2において、201
は、横拡大縮小処理部103からの画像を一時的に記憶
する画像一時記憶装置である。202は、データライン
113を介して第2のメモリ105から読み出したデー
タとの演算を行ない、画像一時記憶装置201から出力
された結果画像を第2のメモリ105に書き込む出力演
算装置である。203は、結果画像データを第2のメモ
リ105に書き込むためのアドレスを生成するアドレス
生成装置である。204は、出力処理部104を制御す
る出力処理部制御装置である。205、206、207
は、出力処理部制御装置204から出力され、それぞれ
画像一時記憶装置201、出力演算装置202、アドレ
ス生成装置203を制御する制御信号、208はデータ
バスである。
部104の詳細な説明を行なう。図2において、201
は、横拡大縮小処理部103からの画像を一時的に記憶
する画像一時記憶装置である。202は、データライン
113を介して第2のメモリ105から読み出したデー
タとの演算を行ない、画像一時記憶装置201から出力
された結果画像を第2のメモリ105に書き込む出力演
算装置である。203は、結果画像データを第2のメモ
リ105に書き込むためのアドレスを生成するアドレス
生成装置である。204は、出力処理部104を制御す
る出力処理部制御装置である。205、206、207
は、出力処理部制御装置204から出力され、それぞれ
画像一時記憶装置201、出力演算装置202、アドレ
ス生成装置203を制御する制御信号、208はデータ
バスである。
【0046】次に、上記のように構成された画像回転装
置の動作について説明する。はじめに全体制御装置10
6で、ステップB1の処理を行ない、入力処理部10
2、横拡大縮小処理部103、出力処理部104がステ
ップB2の処理を行なえるように、制御信号107、1
08、109を介して各処理部の設定を行なう。
置の動作について説明する。はじめに全体制御装置10
6で、ステップB1の処理を行ない、入力処理部10
2、横拡大縮小処理部103、出力処理部104がステ
ップB2の処理を行なえるように、制御信号107、1
08、109を介して各処理部の設定を行なう。
【0047】入力処理部102では、原画像の水平1ラ
インに対応する画像データを第1のメモリ101から読
み出すためのアドレスを発生し、そのアドレスにしたが
って水平1ラインの画像データを第1のメモリ101か
ら読み込み、読み込んだ画像データを1ワードずつ横拡
大縮小処理部103に出力する。横拡大縮小処理部10
3では、入力処理部102から入力された1ワードの画
像データに含まれる画素に対して、ステップA1で示し
た処理を行ない、縮小された画像を1ワードずつ出力処
理部104の画像一時記憶装置201に出力する。出力
処理部104では、アドレス生成装置203でステップ
A2、A3およびA4の処理を行ない、横拡大縮小処理
部103から出力された画像データが格納される第2の
メモリ105のアドレスを算出し、そのアドレスを第2
のメモリ105に出力するとともに、出力演算装置20
2から画像一時記憶装置201に格納されている画像デ
ータを第2のメモリ105に出力する。このとき、第2
のメモリ105に格納されているデータとの演算を必要
とする場合には、一度第2のメモリ105からデータを
読みだし、出力演算装置202で画像一時記憶装置20
1に格納されているデータと演算を行なった後、再び第
2のメモリ105に格納する。
インに対応する画像データを第1のメモリ101から読
み出すためのアドレスを発生し、そのアドレスにしたが
って水平1ラインの画像データを第1のメモリ101か
ら読み込み、読み込んだ画像データを1ワードずつ横拡
大縮小処理部103に出力する。横拡大縮小処理部10
3では、入力処理部102から入力された1ワードの画
像データに含まれる画素に対して、ステップA1で示し
た処理を行ない、縮小された画像を1ワードずつ出力処
理部104の画像一時記憶装置201に出力する。出力
処理部104では、アドレス生成装置203でステップ
A2、A3およびA4の処理を行ない、横拡大縮小処理
部103から出力された画像データが格納される第2の
メモリ105のアドレスを算出し、そのアドレスを第2
のメモリ105に出力するとともに、出力演算装置20
2から画像一時記憶装置201に格納されている画像デ
ータを第2のメモリ105に出力する。このとき、第2
のメモリ105に格納されているデータとの演算を必要
とする場合には、一度第2のメモリ105からデータを
読みだし、出力演算装置202で画像一時記憶装置20
1に格納されているデータと演算を行なった後、再び第
2のメモリ105に格納する。
【0048】全体制御部106では、入力処理部10
2、横拡大縮小処理部103、出力処理部104の各処
理部が上記の原画像の水平1ラインに対する処理を行な
っている間に、ステップB3の処理を行なう。上記の原
画像の水平1ラインが1回しか処理しないラインである
場合には、さらに次のラインの処理のために、ステップ
B1の処理を行なう。上記の原画像の水平1ラインが2
回処理するラインの場合には、ステップB5の処理を行
ない、各処理部に設定する設定値の計算を行なう。上記
の原画像の水平1ラインに対する処理が終了した時点
で、入力処理部102、横拡大縮小処理部103、出力
処理部104の各処理部に算出してあった設定値を制御
信号107、108、109を介して設定し、次の処理
を開始させる。以上の処理をステップB8に基づいて、
繰り返し行なう。
2、横拡大縮小処理部103、出力処理部104の各処
理部が上記の原画像の水平1ラインに対する処理を行な
っている間に、ステップB3の処理を行なう。上記の原
画像の水平1ラインが1回しか処理しないラインである
場合には、さらに次のラインの処理のために、ステップ
B1の処理を行なう。上記の原画像の水平1ラインが2
回処理するラインの場合には、ステップB5の処理を行
ない、各処理部に設定する設定値の計算を行なう。上記
の原画像の水平1ラインに対する処理が終了した時点
で、入力処理部102、横拡大縮小処理部103、出力
処理部104の各処理部に算出してあった設定値を制御
信号107、108、109を介して設定し、次の処理
を開始させる。以上の処理をステップB8に基づいて、
繰り返し行なう。
【0049】以上、説明したように、上記第1の実施例
によれば、水平格子線上に存在する一番左の転送格子点
の座標のみを算出すれば、同一水平格子線上に存在する
他の転送格子点の座標を算出する必要がないため、出力
処理部104から、複数の画素を一括して第2のメモリ
105に書き込むことができ、回転処理の時に発生する
メモリアクセス回数を減らすことができる。例えば図6
に示すように、1ワードが4画素で構成されている時
に、(a1、a2、a3、a4)、(a5、a6、a
7、a8)という画素で構成される2ワードの画像デー
タが、ワード単位に横拡大縮小処理部103から出力処
理部104に出力され、その各画素が第2のメモリ10
5に格納される。これに対し、従来の画像回転装置で
は、1画素ずつメモリに書き込みを行なっていたため
に、例えばa1、a2、a3の画素をメモリに書き込む
ためには、3回のメモリアクセスを必要としていた。こ
れに対し本実施例では、これを1回のメモリアクセスで
実現することができるため、画像の回転処理を高速化す
ることができる。
によれば、水平格子線上に存在する一番左の転送格子点
の座標のみを算出すれば、同一水平格子線上に存在する
他の転送格子点の座標を算出する必要がないため、出力
処理部104から、複数の画素を一括して第2のメモリ
105に書き込むことができ、回転処理の時に発生する
メモリアクセス回数を減らすことができる。例えば図6
に示すように、1ワードが4画素で構成されている時
に、(a1、a2、a3、a4)、(a5、a6、a
7、a8)という画素で構成される2ワードの画像デー
タが、ワード単位に横拡大縮小処理部103から出力処
理部104に出力され、その各画素が第2のメモリ10
5に格納される。これに対し、従来の画像回転装置で
は、1画素ずつメモリに書き込みを行なっていたため
に、例えばa1、a2、a3の画素をメモリに書き込む
ためには、3回のメモリアクセスを必要としていた。こ
れに対し本実施例では、これを1回のメモリアクセスで
実現することができるため、画像の回転処理を高速化す
ることができる。
【0050】また、本実施例によれば、パイプライン構
成をとっており、1ワードに含まれる複数の画素を一括
して、各ステージで1マシンサイクルで処理することが
できるため、1マシンサイクルに1ワードの画像データ
をメモリに出力することができ、画像の回転処理を高速
化することができる。
成をとっており、1ワードに含まれる複数の画素を一括
して、各ステージで1マシンサイクルで処理することが
できるため、1マシンサイクルに1ワードの画像データ
をメモリに出力することができ、画像の回転処理を高速
化することができる。
【0051】さらに、本実施例によれば、原画像を垂直
方向に拡大する回路を設けることなく回転処理を行なう
ことができるので、画像回転装置の回路量を小さくする
ことができる。
方向に拡大する回路を設けることなく回転処理を行なう
ことができるので、画像回転装置の回路量を小さくする
ことができる。
【0052】なお、本実施例では、転送格子点を式
(9)から与えたが、直線Lと垂直格子線の交点から最
も近い格子点を転送格子点とする処理は、容易に実現す
ることができる。また、本実施例では、回転の中心を原
画像の左上の点としたが、任意の位置を回転の中心にす
ることができることは、容易に類推できる。
(9)から与えたが、直線Lと垂直格子線の交点から最
も近い格子点を転送格子点とする処理は、容易に実現す
ることができる。また、本実施例では、回転の中心を原
画像の左上の点としたが、任意の位置を回転の中心にす
ることができることは、容易に類推できる。
【0053】(実施例2)次に、本発明の第2の実施例
について説明する。本発明の第2の実施例では、回転角
度θが、tanθ<−1またはtanθ>1の場合の回
転処理について説明する。回転角度θが、tanθ<−
1またはtanθ>1の場合、縮小した原画像を直線L
に対応させる時に、実際のディジタル画像上でj番目の
水平格子線上の画素Bj のx座標XBj およびy座標Y
Bj が、 XBj =[(n/m)×j] ・・・(22) YBj =j となるように画素を配置している。この例を図7に示
す。図7では0≦j≦7における画素Bj の配置を表し
ている。
について説明する。本発明の第2の実施例では、回転角
度θが、tanθ<−1またはtanθ>1の場合の回
転処理について説明する。回転角度θが、tanθ<−
1またはtanθ>1の場合、縮小した原画像を直線L
に対応させる時に、実際のディジタル画像上でj番目の
水平格子線上の画素Bj のx座標XBj およびy座標Y
Bj が、 XBj =[(n/m)×j] ・・・(22) YBj =j となるように画素を配置している。この例を図7に示
す。図7では0≦j≦7における画素Bj の配置を表し
ている。
【0054】回転角度θが、tanθ<−1またはta
nθ>1の場合には、同一水平格子線上には転送格子点
が1つしか表われない。このため、第1の実施例で示し
たステップA1からA5までの処理を行なって、同一水
平格子線上に存在する転送格子点の座標を算出しても、
各転送格子点についてその座標を算出しなければならな
いので、画像の回転処理を高速化することはできない。
そこで、この場合には、ステップB2およびB6で示し
たステップA1からA5までの処理を行なわずに、転送
格子点の座標を式(22)から算出して、1画素ずつ転
送する。なお、ステップB1、ステップB3からB5、
ステップB7およびB8については、第1の実施例と動
作は同じである。
nθ>1の場合には、同一水平格子線上には転送格子点
が1つしか表われない。このため、第1の実施例で示し
たステップA1からA5までの処理を行なって、同一水
平格子線上に存在する転送格子点の座標を算出しても、
各転送格子点についてその座標を算出しなければならな
いので、画像の回転処理を高速化することはできない。
そこで、この場合には、ステップB2およびB6で示し
たステップA1からA5までの処理を行なわずに、転送
格子点の座標を式(22)から算出して、1画素ずつ転
送する。なお、ステップB1、ステップB3からB5、
ステップB7およびB8については、第1の実施例と動
作は同じである。
【0055】本発明の第2の実施例における画像回転装
置の構成は、図1および図2に示した第1の実施例と同
じであるが、第1の実施例とは動作が異なる。以下、第
2の実施例の動作について説明する。はじめに全体制御
装置106で、ステップB1の処理を行ない、入力処理
部102、横拡大縮小処理部103、出力処理部104
が転送格子点の座標を式(22)から算出して、1画素
ずつ転送する処理を行なえるように、制御信号107、
108、109を介して各処理部の設定を行なう。
置の構成は、図1および図2に示した第1の実施例と同
じであるが、第1の実施例とは動作が異なる。以下、第
2の実施例の動作について説明する。はじめに全体制御
装置106で、ステップB1の処理を行ない、入力処理
部102、横拡大縮小処理部103、出力処理部104
が転送格子点の座標を式(22)から算出して、1画素
ずつ転送する処理を行なえるように、制御信号107、
108、109を介して各処理部の設定を行なう。
【0056】入力処理部102では、原画像の水平1ラ
インに対応する画像データを第1のメモリ101から読
み出すためのアドレスを発生し、そのアドレスにしたが
って水平1ラインの画像データを画像メモリ101から
読み込み、読み込んだデータを横拡大縮小処理部103
に1画素ずつ出力する。
インに対応する画像データを第1のメモリ101から読
み出すためのアドレスを発生し、そのアドレスにしたが
って水平1ラインの画像データを画像メモリ101から
読み込み、読み込んだデータを横拡大縮小処理部103
に1画素ずつ出力する。
【0057】横拡大縮小処理部103では、出力処理部
104に出力する1ワードのすべての画素を、入力処理
部102から入力された画素にする拡大処理を行ない、
その結果を出力処理部104の画像一時記憶装置201
に出力する。例えば、1ワードが4画素で構成されてお
り、入力処理部102から入力された画素がa1 と表さ
れる場合、横拡大縮小処理部103では4倍の拡大を行
なって、1ワードに含まれるすべての画素がa1 となる
ように拡大処理を行なう。
104に出力する1ワードのすべての画素を、入力処理
部102から入力された画素にする拡大処理を行ない、
その結果を出力処理部104の画像一時記憶装置201
に出力する。例えば、1ワードが4画素で構成されてお
り、入力処理部102から入力された画素がa1 と表さ
れる場合、横拡大縮小処理部103では4倍の拡大を行
なって、1ワードに含まれるすべての画素がa1 となる
ように拡大処理を行なう。
【0058】出力処理部104では、横拡大縮小処理部
103から入力された画像データを画像一時記憶装置2
01に記憶する。そして、全体制御部106から出力処
理部制御装置204に入力される制御信号109に基づ
いて、画像一時記憶装置201に記憶されたデータを第
2のメモリ105に出力するかどうかの判断を行なう。
103から入力された画像データを画像一時記憶装置2
01に記憶する。そして、全体制御部106から出力処
理部制御装置204に入力される制御信号109に基づ
いて、画像一時記憶装置201に記憶されたデータを第
2のメモリ105に出力するかどうかの判断を行なう。
【0059】出力する場合には、アドレス生成装置20
3で式(22)の計算を行ない、画像一時記憶装置20
1に記憶されている画像データを格納するアドレスを算
出し、そのアドレスを第2のメモリ105に出力すると
ともに、出力演算装置202から画像一時記憶装置20
1に格納されている画像データを第2のメモリ105に
出力し、処理の対象となっていた1画素をメモリに書き
込む。出力しない場合には、第2のメモリ105に格納
する動作を行なわず、横拡大縮小処理部103から入力
される次の画像データに対する処理を開始する。
3で式(22)の計算を行ない、画像一時記憶装置20
1に記憶されている画像データを格納するアドレスを算
出し、そのアドレスを第2のメモリ105に出力すると
ともに、出力演算装置202から画像一時記憶装置20
1に格納されている画像データを第2のメモリ105に
出力し、処理の対象となっていた1画素をメモリに書き
込む。出力しない場合には、第2のメモリ105に格納
する動作を行なわず、横拡大縮小処理部103から入力
される次の画像データに対する処理を開始する。
【0060】本実施例では、上記第1の実施例の場合と
異なり、全体制御部106では、入力処理部102、横
拡大縮小処理部103、出力処理部104の各処理部が
上記の原画像の水平1ラインに対する処理を行なってい
る間に、上記に示したように画像一時記憶装置201か
ら第2のメモリ105に出力するデータの数を制御する
ための演算を行なっている。これにより、第1の実施例
では横拡大縮小処理部103で行なっていたステップA
1の横縮小処理を実現している。
異なり、全体制御部106では、入力処理部102、横
拡大縮小処理部103、出力処理部104の各処理部が
上記の原画像の水平1ラインに対する処理を行なってい
る間に、上記に示したように画像一時記憶装置201か
ら第2のメモリ105に出力するデータの数を制御する
ための演算を行なっている。これにより、第1の実施例
では横拡大縮小処理部103で行なっていたステップA
1の横縮小処理を実現している。
【0061】上記の原画像の水平1ラインに対する処理
が終了した時点で、ステップB3の処理を行なう。上記
の原画像の水平1ラインが1回しか処理しない行である
場合には、さらに次の行の処理のために、ステップB1
の処理を行なう。上記の原画像の水平1ラインが2回処
理する行の場合には、ステップB5の処理を行ない、各
処理部に設定するパラメータの計算を行ない、入力処理
部102、横拡大縮小処理部103、出力処理部104
の各処理部の設定を行ない、次の処理を開始させる。以
上の処理をステップB8に基づいて、繰り返し行なう。
が終了した時点で、ステップB3の処理を行なう。上記
の原画像の水平1ラインが1回しか処理しない行である
場合には、さらに次の行の処理のために、ステップB1
の処理を行なう。上記の原画像の水平1ラインが2回処
理する行の場合には、ステップB5の処理を行ない、各
処理部に設定するパラメータの計算を行ない、入力処理
部102、横拡大縮小処理部103、出力処理部104
の各処理部の設定を行ない、次の処理を開始させる。以
上の処理をステップB8に基づいて、繰り返し行なう。
【0062】このように、本実施例では、上記第1の実
施例の動作と2つの点で異なる。1つは、横拡大縮小処
理部103で1画素の拡大処理を行ない、1ワードの画
素がすべて処理する画素で構成される1ワードの画像
を、画像一時記憶装置201に出力する点である。2つ
目は、原画像の水平方向の縮小処理を、画像一時記憶装
置201が出力するデータの数を全体制御部104から
制御することによって実現している点である。
施例の動作と2つの点で異なる。1つは、横拡大縮小処
理部103で1画素の拡大処理を行ない、1ワードの画
素がすべて処理する画素で構成される1ワードの画像
を、画像一時記憶装置201に出力する点である。2つ
目は、原画像の水平方向の縮小処理を、画像一時記憶装
置201が出力するデータの数を全体制御部104から
制御することによって実現している点である。
【0063】以下、第2の実施例における動作が、第1
の実施例における動作と異なる理由を説明する。回転角
度θが、tanθ<−1またはtanθ>1の場合に
は、図7の点B0 と点B1 に示すように、同一垂直格子
線上に2つ以上の転送格子点が存在するため、原画像の
画素をこの転送格子点に転送するためには、画素の位置
合わせを行なう必要が出てくる。例を図8に示す。図8
は、図7における点B0と点B1 の画素の値がそれぞれ
a0 、a1 と表され、それぞれの画素は、原画像を記憶
するメモリ中で1ワードの最初の画素と次の画素に格納
されており、回転処理を行なった結果、それぞれ1ワー
ドの最初の画素として格納される例を示す。図8に示す
ように、点B1 を処理する時には、原画像の画素の位置
を変化させる必要がある。本実施例では、この原画像の
画素の位置合わせをシフト回路を設けることなく実現し
ている。すなわち、横拡大縮小処理部103で拡大を行
ない、1ワードの画素をすべて点B1 の画素の値である
a1 として出力制御部104の画像一時記憶装置201
に出力することにより、シフト回路を設けることなく画
素の位置合わせを実現している。
の実施例における動作と異なる理由を説明する。回転角
度θが、tanθ<−1またはtanθ>1の場合に
は、図7の点B0 と点B1 に示すように、同一垂直格子
線上に2つ以上の転送格子点が存在するため、原画像の
画素をこの転送格子点に転送するためには、画素の位置
合わせを行なう必要が出てくる。例を図8に示す。図8
は、図7における点B0と点B1 の画素の値がそれぞれ
a0 、a1 と表され、それぞれの画素は、原画像を記憶
するメモリ中で1ワードの最初の画素と次の画素に格納
されており、回転処理を行なった結果、それぞれ1ワー
ドの最初の画素として格納される例を示す。図8に示す
ように、点B1 を処理する時には、原画像の画素の位置
を変化させる必要がある。本実施例では、この原画像の
画素の位置合わせをシフト回路を設けることなく実現し
ている。すなわち、横拡大縮小処理部103で拡大を行
ない、1ワードの画素をすべて点B1 の画素の値である
a1 として出力制御部104の画像一時記憶装置201
に出力することにより、シフト回路を設けることなく画
素の位置合わせを実現している。
【0064】以上のように、本実施例によれば、メモリ
に処理した画素を書き込む際に、画素の位置合わせのた
めのシフト回路を設ける必要がないので、画像回転装置
の回路量を小さくすることができる。
に処理した画素を書き込む際に、画素の位置合わせのた
めのシフト回路を設ける必要がないので、画像回転装置
の回路量を小さくすることができる。
【0065】(実施例3)次に、本発明の第3の実施例
について説明する。本実施例では、三角関数の演算を行
なうことなく、画像の回転処理が行なえる画像回転装置
について説明する。なお、本実施例の画像回転装置の構
成は、第1の実施例および第2の実施例と同じである。
本実施例の動作は、原画像の水平方向の縮小処理、垂直
方向の拡大処理、および転送開始点の算出において、第
1の実施例および第2の実施例と動作が異なるが、その
他については第1の実施例および第2の実施例と同じに
なる。
について説明する。本実施例では、三角関数の演算を行
なうことなく、画像の回転処理が行なえる画像回転装置
について説明する。なお、本実施例の画像回転装置の構
成は、第1の実施例および第2の実施例と同じである。
本実施例の動作は、原画像の水平方向の縮小処理、垂直
方向の拡大処理、および転送開始点の算出において、第
1の実施例および第2の実施例と動作が異なるが、その
他については第1の実施例および第2の実施例と同じに
なる。
【0066】以下、本実施例における動作について、は
じめに原画像の水平方向の縮小処理および垂直方向の拡
大処理について説明する。本実施例では、原画像の左上
の画素を回転の中心とする画像の回転処理を行なう場
合、結果画像の右上の画素のx座標をM、y座標をNと
して、MおよびNを本画像回転処理装置に入力すること
によって回転処理を実現する。このとき、M、Nを以下
の式で、与えることにより、回転角度がθとほぼ等しい
回転処理を実現することができる。 M=[Wcosθ] ・・・(23) N=[Wsinθ] ・・・(24)
じめに原画像の水平方向の縮小処理および垂直方向の拡
大処理について説明する。本実施例では、原画像の左上
の画素を回転の中心とする画像の回転処理を行なう場
合、結果画像の右上の画素のx座標をM、y座標をNと
して、MおよびNを本画像回転処理装置に入力すること
によって回転処理を実現する。このとき、M、Nを以下
の式で、与えることにより、回転角度がθとほぼ等しい
回転処理を実現することができる。 M=[Wcosθ] ・・・(23) N=[Wsinθ] ・・・(24)
【0067】このように、画像回転装置に上記のMおよ
びNを入力することにより、実施例1および実施例2で
示した以下の3つの処理で三角関数の演算を行なわなく
てもよくなる。1つ目は、式(10)および式(11)
おけるα、βの算出である。α、βを求めるためには、
式(7)で定義されるm、nを求めなければならない。
しかし、本実施例では、αおよびβを式(23)および
式(24)で与えられるM、Nを用いて、 α=[M/N] ・・・(25) β=M−N×[M/N] ・・・(26) と定義することにより、画像の回転処理を実現する。な
お、この時、2次元の回転処理を行なうために、図5で
示した直線Lk と直線Gは、以下の式で与えられる。 Lk :y=(N/M)x−k ・・・(27) G:y=−(M/N)x ・・・(28)
びNを入力することにより、実施例1および実施例2で
示した以下の3つの処理で三角関数の演算を行なわなく
てもよくなる。1つ目は、式(10)および式(11)
おけるα、βの算出である。α、βを求めるためには、
式(7)で定義されるm、nを求めなければならない。
しかし、本実施例では、αおよびβを式(23)および
式(24)で与えられるM、Nを用いて、 α=[M/N] ・・・(25) β=M−N×[M/N] ・・・(26) と定義することにより、画像の回転処理を実現する。な
お、この時、2次元の回転処理を行なうために、図5で
示した直線Lk と直線Gは、以下の式で与えられる。 Lk :y=(N/M)x−k ・・・(27) G:y=−(M/N)x ・・・(28)
【0068】2つ目は、実施例1のステップA1におけ
る横縮小処理である。ステップA1では、W個の画素か
らなる原画像を、[W×cosθ]個の画素からなる画
像に縮小する処理を行なっている。本実施例では、式
(23)により、W個の画素からなる原画像を、M個の
画素からなる画像に縮小する処理を行なえばよいので、
ステップA1の処理における三角関数の演算を行なわな
くてもよい。
る横縮小処理である。ステップA1では、W個の画素か
らなる原画像を、[W×cosθ]個の画素からなる画
像に縮小する処理を行なっている。本実施例では、式
(23)により、W個の画素からなる原画像を、M個の
画素からなる画像に縮小する処理を行なえばよいので、
ステップA1の処理における三角関数の演算を行なわな
くてもよい。
【0069】3つ目は、実施例1のステップA5におけ
る処理である。ステップA5では、ステップA2からス
テップA4までの処理を[W×sinθ]+1回行なわ
せている。本実施例では、式(24)により、ステップ
A2からステップA4までの処理をN+1回行なえばよ
いので、ステップA5の処理における三角関数の演算を
行なわなくてもよい。
る処理である。ステップA5では、ステップA2からス
テップA4までの処理を[W×sinθ]+1回行なわ
せている。本実施例では、式(24)により、ステップ
A2からステップA4までの処理をN+1回行なえばよ
いので、ステップA5の処理における三角関数の演算を
行なわなくてもよい。
【0070】次に、転送開始点の算出について、本実施
例における動作を説明する。第1の実施例および第2の
実施例では、ステップB1の式(18)、(19)の計
算を行なって直線Lk における転送開始点を算出してい
たが、本実施例では、直線L k における転送開始点Sk
のx座標XSk 、y座標YSk が算出されている時に,
直線Lk+1 における転送開始点Sk+1 のx座標X
Sk+1 、y座標YSk+1 を以下のように算出する。ただ
し、XS0 =YS0 =0とする。
例における動作を説明する。第1の実施例および第2の
実施例では、ステップB1の式(18)、(19)の計
算を行なって直線Lk における転送開始点を算出してい
たが、本実施例では、直線L k における転送開始点Sk
のx座標XSk 、y座標YSk が算出されている時に,
直線Lk+1 における転送開始点Sk+1 のx座標X
Sk+1 、y座標YSk+1 を以下のように算出する。ただ
し、XS0 =YS0 =0とする。
【0071】 if rsk +N/M≦1 ・・・(29.1) rsk+1 =rsk +N/M ・・・(29.2) rmk+1 =rmk ・・・(29.3) XSk+1 =XSk ・・・(29.4) YSk+1 =YSk −1 ・・・(29.5) else rsk+1 =rsk +N/M−1 ・・・(29.6) if rmk +N/M≦1 ・・・(29.7) rmk+1 =rmk +N/M ・・・(29.8) XSk+1 =XSk +1 ・・・(29.9) YSk+1 =YSk −1 ・・・(29.10) else rmk+1 =rmk +N/M−1 ・・・(29.11) XSk+1 =XSk +1 ・・・(29.12) YSk+1 =YSk ・・・(29.13)
【0072】上記の処理を図9を用いて詳しく説明す
る。上記の処理において、rsk は、転送開始点Sk の
存在する水平格子線と直線Gとの交点のx座標の小数部
分を表している。XS0 =0であり、直線Gは原点を通
るので、rs0 =0となる。またrmk は、転送開始点
Sk の存在する垂直格子線と直線Lk との交点のy座標
の小数部分を表している。YS0 =0であり、直線L0
は原点を通るので、rm 0 =0となる。
る。上記の処理において、rsk は、転送開始点Sk の
存在する水平格子線と直線Gとの交点のx座標の小数部
分を表している。XS0 =0であり、直線Gは原点を通
るので、rs0 =0となる。またrmk は、転送開始点
Sk の存在する垂直格子線と直線Lk との交点のy座標
の小数部分を表している。YS0 =0であり、直線L0
は原点を通るので、rm 0 =0となる。
【0073】このようなrsk とrmk が与えられてい
る時に、はじめに、式(29.1)でrsk に直線Gの
傾きの逆数を加算することにより、直線Gが、y=YS
k とy=YSk −1との間で、垂直格子線を越えるかど
うかを判断する。直線Gが、垂直格子線を越えない場合
には、式(29.4)で転送開始点のx座標は変化させ
ず、y座標を式(29.5)で−1し、rsk を式(2
9.2)、rmk を(29.3)で与えられる値とす
る。直線Gが垂直格子線を越えた場合には、rs k を式
(29.6)で与えられる値とする。次に式(29.
7)で、rmk に直線Lk の傾きを加算することによ
り、直線Lk がx=XSk とx=XSk +1の間で水平
格子線を越えるかどうかを、判断する。直線Lk が水平
格子線を越えない場合には、式(29.9)で転送開始
点のx座標を+1し、式(29.10)でy座標を−1
し、rmk を式(29.8)で与えられる値とする。直
線Lk が水平格子線を越えた場合には、式(29.1
2)で転送開始点のx座標を+1し、式(29.13)
でy座標は変化させず、rmk を式(29.11)で与
えられる値とする。
る時に、はじめに、式(29.1)でrsk に直線Gの
傾きの逆数を加算することにより、直線Gが、y=YS
k とy=YSk −1との間で、垂直格子線を越えるかど
うかを判断する。直線Gが、垂直格子線を越えない場合
には、式(29.4)で転送開始点のx座標は変化させ
ず、y座標を式(29.5)で−1し、rsk を式(2
9.2)、rmk を(29.3)で与えられる値とす
る。直線Gが垂直格子線を越えた場合には、rs k を式
(29.6)で与えられる値とする。次に式(29.
7)で、rmk に直線Lk の傾きを加算することによ
り、直線Lk がx=XSk とx=XSk +1の間で水平
格子線を越えるかどうかを、判断する。直線Lk が水平
格子線を越えない場合には、式(29.9)で転送開始
点のx座標を+1し、式(29.10)でy座標を−1
し、rmk を式(29.8)で与えられる値とする。直
線Lk が水平格子線を越えた場合には、式(29.1
2)で転送開始点のx座標を+1し、式(29.13)
でy座標は変化させず、rmk を式(29.11)で与
えられる値とする。
【0074】このように、上記の処理を行なえば、三角
関数の演算を用いずに、直線Lk における転送開始点S
k を算出することができる。図9において、直線Lk の
転送開始点Sk は、直線Lk-1 の転送開始点Sk-1 の座
標から、式(29.4)および式(29.5)を行なっ
て求めることができる例を示している。また、直線L
k+1 の転送開始点Sk+1 は、直線Lk の転送開始点Sk
の座標から、式(29.9)および式(29.10)を
行なって求めることができる例を示している。さらに、
直線Lk+2 の転送開始点Sk+2 は、直線Lk+1 の転送開
始点Sk+1 の座標から、式(29.12)および式(2
9.13)を行なって求めることができる例を示してい
る。
関数の演算を用いずに、直線Lk における転送開始点S
k を算出することができる。図9において、直線Lk の
転送開始点Sk は、直線Lk-1 の転送開始点Sk-1 の座
標から、式(29.4)および式(29.5)を行なっ
て求めることができる例を示している。また、直線L
k+1 の転送開始点Sk+1 は、直線Lk の転送開始点Sk
の座標から、式(29.9)および式(29.10)を
行なって求めることができる例を示している。さらに、
直線Lk+2 の転送開始点Sk+2 は、直線Lk+1 の転送開
始点Sk+1 の座標から、式(29.12)および式(2
9.13)を行なって求めることができる例を示してい
る。
【0075】以上のように、本実施例によれば、三角関
数の演算を行なうことなく画像の回転処理を行なうこと
ができるので、三角関数の演算を行なえる演算装置を必
要とせず、画像回転装置の回路規模を小さくすることが
でき、かつ三角関数の演算を行なうために必要としてい
た演算時間を短縮することができる。
数の演算を行なうことなく画像の回転処理を行なうこと
ができるので、三角関数の演算を行なえる演算装置を必
要とせず、画像回転装置の回路規模を小さくすることが
でき、かつ三角関数の演算を行なうために必要としてい
た演算時間を短縮することができる。
【0076】なお、本実施例において示した式(29.
1)から式(29.13)までの一連の処理を[H/c
osθ]回行なうと、式(29.11)から式(29.
13)までの処理は、([H/cosθ]−H)回発生
する。これは、ちょうど原画像を垂直方向に拡大するた
めに、第1の実施例で示したステップA1からA5まで
の処理を2回行なう原画像の水平ラインの数に等しい。
すなわち、上記の式(29.1)から式(29.13)
までの一連の処理を[H/cosθ]回行ない、式(2
9.11)から式(29.13)までの処理について
は、直前の処理と同じ原画像の水平1ラインに対して行
なうようにすれば、原画像を垂直方向に拡大するための
演算を行なう必要がなくなる。
1)から式(29.13)までの一連の処理を[H/c
osθ]回行なうと、式(29.11)から式(29.
13)までの処理は、([H/cosθ]−H)回発生
する。これは、ちょうど原画像を垂直方向に拡大するた
めに、第1の実施例で示したステップA1からA5まで
の処理を2回行なう原画像の水平ラインの数に等しい。
すなわち、上記の式(29.1)から式(29.13)
までの一連の処理を[H/cosθ]回行ない、式(2
9.11)から式(29.13)までの処理について
は、直前の処理と同じ原画像の水平1ラインに対して行
なうようにすれば、原画像を垂直方向に拡大するための
演算を行なう必要がなくなる。
【0077】また、本実施例では、原画像の左上の画素
を回転の中心とする画像の回転処理を行なう場合、原画
像の右上の画素に対応する結果画像の画素のx座標を
M、y座標をNとしたが、これは、図10に示すように
原画像の左下の画素のx座標をM’、y座標をN’と
し、M’およびN’を本画像回転処理装置に入力するこ
とによって同様の効果を得ることができる。この時に
は、M’、N’を以下の式で与えることによって回転角
度がθとほぼ等しい回転処理を実現することができる。 M’=[Hsinθ] ・・・(30) N’=[Hcosθ] ・・・(31) これは、M、N、M’、N’のすべてを本画像回転処理
装置に入力しても、同様の効果を得ることができる。ま
た、本発明の画像回転処理装置の構成と異なる画像回転
装置においても、上記のM、N、M’、N’を画像回転
処理装置に入力することにより、回転処理のための演算
を簡略化することができることは、容易に類推できる。
を回転の中心とする画像の回転処理を行なう場合、原画
像の右上の画素に対応する結果画像の画素のx座標を
M、y座標をNとしたが、これは、図10に示すように
原画像の左下の画素のx座標をM’、y座標をN’と
し、M’およびN’を本画像回転処理装置に入力するこ
とによって同様の効果を得ることができる。この時に
は、M’、N’を以下の式で与えることによって回転角
度がθとほぼ等しい回転処理を実現することができる。 M’=[Hsinθ] ・・・(30) N’=[Hcosθ] ・・・(31) これは、M、N、M’、N’のすべてを本画像回転処理
装置に入力しても、同様の効果を得ることができる。ま
た、本発明の画像回転処理装置の構成と異なる画像回転
装置においても、上記のM、N、M’、N’を画像回転
処理装置に入力することにより、回転処理のための演算
を簡略化することができることは、容易に類推できる。
【0078】さらに、本実施例では、上記のM、N、
M’、N’をそれぞれ式(23)、(24)、(3
0)、(31)によって定義したが、M、N、M’、
N’を任意に設定することで、矩形画像のアフィン変換
を容易に実現することができる。アフィン変換では、原
画像を水平方向に拡大し、垂直方向に縮小する必要があ
る場合が存在するが、本実施例では、垂直方向の縮小
は、入力処理部102のメモリアクセスを制御して、第
1のメモリ101から読み込む原画像の水平ラインの数
を減らすことによって実現することができる。また、水
平方向の拡大も、第1の実施例の場合では横拡大縮小処
理部103で実現することができ、第2の実施例の場合
でも、出力処理部104から同じデータを複数回メモリ
に書き込むことにより実現することができるので、これ
から本実施例がアフィン変換を実現することができるこ
とは容易に類推できる。
M’、N’をそれぞれ式(23)、(24)、(3
0)、(31)によって定義したが、M、N、M’、
N’を任意に設定することで、矩形画像のアフィン変換
を容易に実現することができる。アフィン変換では、原
画像を水平方向に拡大し、垂直方向に縮小する必要があ
る場合が存在するが、本実施例では、垂直方向の縮小
は、入力処理部102のメモリアクセスを制御して、第
1のメモリ101から読み込む原画像の水平ラインの数
を減らすことによって実現することができる。また、水
平方向の拡大も、第1の実施例の場合では横拡大縮小処
理部103で実現することができ、第2の実施例の場合
でも、出力処理部104から同じデータを複数回メモリ
に書き込むことにより実現することができるので、これ
から本実施例がアフィン変換を実現することができるこ
とは容易に類推できる。
【0079】なお、本発明の第1の実施例、第2の実施
例、第3の実施例では、それぞれ回転の中心を原点とし
たが、回転の中心の座標を画像回転装置に入力すれば、
画像の回転の中心を任意の位置にすることができること
は、容易に類推することができる。
例、第3の実施例では、それぞれ回転の中心を原点とし
たが、回転の中心の座標を画像回転装置に入力すれば、
画像の回転の中心を任意の位置にすることができること
は、容易に類推することができる。
【0080】
【発明の効果】以上のように本発明によれば、原画像を
記憶する第1のメモリと、原画像の回転処理を行なって
得られる画像を記憶する第2のメモリと、第1のメモリ
から画像データを読み込む入力処理部と、入力処理部か
ら画像データ入力し、原画像の水平方向の画素数を変換
する横拡大縮小処理部と、転送格子点の座標計算を行な
うとともに、横拡大縮小部から入力された画像データを
第2のメモリの指定されたアドレスに書き込む出力処理
部と、装置各部を制御する全体制御部とを備え、入力処
理部、横拡大縮小処理部、および出力処理部の動作回数
を全体制御部で制御することにより、原画像の垂直方向
の拡大回路を設けずに画像の回転処理を高速に実現する
ことができる。
記憶する第1のメモリと、原画像の回転処理を行なって
得られる画像を記憶する第2のメモリと、第1のメモリ
から画像データを読み込む入力処理部と、入力処理部か
ら画像データ入力し、原画像の水平方向の画素数を変換
する横拡大縮小処理部と、転送格子点の座標計算を行な
うとともに、横拡大縮小部から入力された画像データを
第2のメモリの指定されたアドレスに書き込む出力処理
部と、装置各部を制御する全体制御部とを備え、入力処
理部、横拡大縮小処理部、および出力処理部の動作回数
を全体制御部で制御することにより、原画像の垂直方向
の拡大回路を設けずに画像の回転処理を高速に実現する
ことができる。
【0081】また本発明によれば、出力処理が、原画像
を回転して得られる結果画像の各画素を2次元座標上の
格子点に配置する際に、同一水平格子線上に存在する結
果画像の画素の数を算出し、第2のメモリの同一語に格
納されるデータをワード単位で一度に書き込むため、回
転角度θが−1<tanθ≦1で与えられる回転処理を
高速に行なうことができる。
を回転して得られる結果画像の各画素を2次元座標上の
格子点に配置する際に、同一水平格子線上に存在する結
果画像の画素の数を算出し、第2のメモリの同一語に格
納されるデータをワード単位で一度に書き込むため、回
転角度θが−1<tanθ≦1で与えられる回転処理を
高速に行なうことができる。
【0082】また本発明によれば、横拡大縮小処理部で
処理する画素で1ワードが構成されるように拡大処理を
行ない、出力処理部から第2のメモリに書き込みを行な
う回数を全体制御部で制御して原画像の横縮小処理を実
現することにより、第2のメモリに画像データを書き込
むための画像データのシフト処理を行なうための回路を
設けずに、画像の回転処理を実現することができる。
処理する画素で1ワードが構成されるように拡大処理を
行ない、出力処理部から第2のメモリに書き込みを行な
う回数を全体制御部で制御して原画像の横縮小処理を実
現することにより、第2のメモリに画像データを書き込
むための画像データのシフト処理を行なうための回路を
設けずに、画像の回転処理を実現することができる。
【0083】さらに本発明によれば、原画像を回転して
結果画像を得る際に、結果画像を構成する画素のうち、
2つ以上の画素の座標をパラメータとして入力すること
により、三角関数の演算を行なわずに画像の回転処理を
行なうことができるため、三角関数の演算を行なう回路
を設けずに、高速な回転処理を行なうことができる。ま
た、2つ以上の画素の座標値を任意に設定することによ
り、アフィン変換を容易に行なうことができる。
結果画像を得る際に、結果画像を構成する画素のうち、
2つ以上の画素の座標をパラメータとして入力すること
により、三角関数の演算を行なわずに画像の回転処理を
行なうことができるため、三角関数の演算を行なう回路
を設けずに、高速な回転処理を行なうことができる。ま
た、2つ以上の画素の座標値を任意に設定することによ
り、アフィン変換を容易に行なうことができる。
【図1】本発明の第1の実施例、第2の実施例、第3の
実施例における画像回転装置の構成を示すブロック図
実施例における画像回転装置の構成を示すブロック図
【図2】同装置における出力処理部の構成を示すブロッ
ク図
ク図
【図3】本発明の第1の実施例における1次元の画像の
回転処理を説明するための概念図
回転処理を説明するための概念図
【図4】本発明の第1の実施例における1次元の画像の
回転処理を説明するための概念図
回転処理を説明するための概念図
【図5】本発明の第1の実施例における2次元の画像の
回転処理を説明するための概念図
回転処理を説明するための概念図
【図6】本発明の第1の実施例における効果を説明する
ための概念図
ための概念図
【図7】本発明の第2の実施例における1次元の画像の
回転処理を説明するための概念図
回転処理を説明するための概念図
【図8】本発明の第2の実施例における効果を説明する
ための概念図
ための概念図
【図9】本発明の第3の実施例における転送開始点を算
出する方法を説明するための概念図
出する方法を説明するための概念図
【図10】本発明の第3の実施例における画像回転装置
への入力値を説明するための概念図
への入力値を説明するための概念図
【図11】従来の画像回転装置の1次元の画像の回転処
理を説明するための概念図
理を説明するための概念図
【図12】従来の画像回転装置の2次元の画像の回転処
理を説明するための概念図
理を説明するための概念図
【図13】従来の画像回転装置の構成を示すブロック図
101 第1のメモリ 102 入力処理部 103 横拡大縮小処理部 104 出力処理部 105 第2のメモリ 106 全体制御部 107 制御信号 108 制御信号 109 制御信号 110 データライン 111 データライン 112 データライン 113 データライン 201 画像一時記憶装置 202 出力演算装置 203 アドレス生成装置 204 出力処理部制御装置 205 制御信号 206 制御信号 207 制御信号 208 データバス
フロントページの続き (72)発明者 島 崎 成 夫 大阪府門真市大字門真1006番地 松下電器 産業株式会社内
Claims (6)
- 【請求項1】 原画像を記憶する第1のメモリと、原画
像の回転処理を行なって得られる画像を記憶する第2の
メモリと、前記第1のメモリから原画像の画像データを
読み込む入力処理部と、前記入力処理部から入力した画
像データの水平方向の画素数を変換する横拡大縮小処理
部と、原画像の回転処理のための転送格子点の座標計算
を行なうとともに、前記横拡大縮小処理部から入力され
た画像データを前記第2のメモリの指定されたアドレス
に書き込む出力処理部と、装置各部を制御する全体制御
部とを備えた画像回転装置。 - 【請求項2】 出力処理部が、横拡大縮小処理部から入
力した画像データを一時記憶する画像一時記憶装置と、
前記画像一時記憶装置から入力した画像データを第2の
メモリに出力する出力演算装置と、前記出力演算装置が
出力する画像データを第2のメモリに格納するためのア
ドレスを計算して出力するアドレス生成装置と、前記各
装置を制御する出力処理部制御装置とを備えた請求項1
記載の画像回転装置。 - 【請求項3】 出力処理部が、回転角度θが−1≦ta
nθ≦1で与えられた原画像の回転処理を行なって得ら
れた結果画像の各画素を2次元座標上に格子点に配置す
る際に、同一水平格子線上に存在する結果画像の画素の
数を算出し、第2のメモリの同一語に格納されるデータ
をワード単位で書き込むことを特徴とする請求項1また
は2記載の画像回転装置。 - 【請求項4】 回転角度θがtanθ<−1またはta
nθ>1で与えられた原画像の回転処理を行なう際に、
横拡大縮小処理部が、入力処理部から入力した画像デー
タの1画素を1ワード全体に拡大する処理を行ない、出
力処理部が、前記横拡大縮小処理部から入力した画像デ
ータを第2のメモリに書き込むか否かを判断するととも
に書き込み処理の回数を制御することにより、原画像の
横縮小処理を行なうことを特徴とする請求項1または2
記載の画像回転装置。 - 【請求項5】 矩形画像である原画像を回転して結果画
像を得る際に、回転角度θを用いる代わりに、原画像の
各頂点を表す4つの画素に対する結果画像の4つの画素
の中の2つ以上の画素の座標値を用いることを特徴とす
る請求項1または2記載の画像回転装置。 - 【請求項6】 原画像の各頂点を表す4つの画素に対す
る結果画像の4つの画素の座標値を任意に設定すること
により、アフィン変換を行なうことを特徴とする請求項
5記載の画像回転装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5228850A JPH0785266A (ja) | 1993-09-14 | 1993-09-14 | 画像回転装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5228850A JPH0785266A (ja) | 1993-09-14 | 1993-09-14 | 画像回転装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0785266A true JPH0785266A (ja) | 1995-03-31 |
Family
ID=16882858
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5228850A Pending JPH0785266A (ja) | 1993-09-14 | 1993-09-14 | 画像回転装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0785266A (ja) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0927027A (ja) * | 1995-07-13 | 1997-01-28 | Okinawa Nippon Denki Software Kk | イメージデータ回転傾斜転送方法 |
| JP2009044654A (ja) * | 2007-08-10 | 2009-02-26 | Ip Flex Kk | アフィン変換装置 |
| CN110009559A (zh) * | 2019-03-19 | 2019-07-12 | 北京迈格威科技有限公司 | 图像处理方法及装置 |
| US11392377B2 (en) | 2020-02-20 | 2022-07-19 | Samsung Electronics Co., Ltd. | System-on-chip, data processing method thereof, and neural network device |
| CN115373569A (zh) * | 2021-05-18 | 2022-11-22 | 北京嗨动视觉科技有限公司 | 图像编辑方法和装置 |
-
1993
- 1993-09-14 JP JP5228850A patent/JPH0785266A/ja active Pending
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0927027A (ja) * | 1995-07-13 | 1997-01-28 | Okinawa Nippon Denki Software Kk | イメージデータ回転傾斜転送方法 |
| JP2009044654A (ja) * | 2007-08-10 | 2009-02-26 | Ip Flex Kk | アフィン変換装置 |
| CN110009559A (zh) * | 2019-03-19 | 2019-07-12 | 北京迈格威科技有限公司 | 图像处理方法及装置 |
| CN110009559B (zh) * | 2019-03-19 | 2023-07-07 | 北京迈格威科技有限公司 | 图像处理方法及装置 |
| US11392377B2 (en) | 2020-02-20 | 2022-07-19 | Samsung Electronics Co., Ltd. | System-on-chip, data processing method thereof, and neural network device |
| CN115373569A (zh) * | 2021-05-18 | 2022-11-22 | 北京嗨动视觉科技有限公司 | 图像编辑方法和装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0360155A2 (en) | Image transformation method and device | |
| JPS61501118A (ja) | パタ−ン発生装置用のデ−タ処理システム | |
| JP3391864B2 (ja) | 画像データ処理方法及び装置及びグラフィックシステム | |
| JP3352181B2 (ja) | 画像データ処理方法および装置 | |
| JPH02240779A (ja) | N画素をm画素に変換する装置 | |
| JPH0785266A (ja) | 画像回転装置 | |
| JP2634851B2 (ja) | 画像処理装置 | |
| JPH0661103B2 (ja) | 回転図形生成装置 | |
| JP2982973B2 (ja) | パターン塗り潰し方法 | |
| JPS6097474A (ja) | 画像回転方法および装置 | |
| JP2806679B2 (ja) | 文字発生装置 | |
| US5428719A (en) | Method and apparatus for generating high-quality pattern in accordance with an edge defining a character pattern | |
| JPH05127980A (ja) | 画像処理装置 | |
| JPS62264344A (ja) | アドレス制御装置 | |
| JP2782904B2 (ja) | 多角形塗りつぶし方式 | |
| JP2806790B2 (ja) | 文字発生装置およびその方法 | |
| JPH04329482A (ja) | 画像回転処理方法およびその処理装置 | |
| JP3211591B2 (ja) | イメージ処理装置 | |
| JP2606176B2 (ja) | 図形処理装置 | |
| JPS59214969A (ja) | 画像の回転処理方式 | |
| JPH10143676A (ja) | 画像処理装置、画像処理方法、および記録媒体 | |
| JP2694805B2 (ja) | 画像再生方法 | |
| JP3004993B2 (ja) | 画像処理装置 | |
| JPH08138040A (ja) | 画像描画方法及び画像描画装置 | |
| JPH0520450A (ja) | 画像処理装置 |