JP2009147453A - 画像処理装置、方法及びプログラム - Google Patents

画像処理装置、方法及びプログラム Download PDF

Info

Publication number
JP2009147453A
JP2009147453A JP2007319991A JP2007319991A JP2009147453A JP 2009147453 A JP2009147453 A JP 2009147453A JP 2007319991 A JP2007319991 A JP 2007319991A JP 2007319991 A JP2007319991 A JP 2007319991A JP 2009147453 A JP2009147453 A JP 2009147453A
Authority
JP
Japan
Prior art keywords
buffer
address
cutout
value
image data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007319991A
Other languages
English (en)
Inventor
Kinya Osa
欣也 大佐
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 JP2007319991A priority Critical patent/JP2009147453A/ja
Publication of JP2009147453A publication Critical patent/JP2009147453A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Editing Of Facsimile Originals (AREA)
  • Image Input (AREA)
  • Image Processing (AREA)
  • Storing Facsimile Image Data (AREA)

Abstract

【課題】リングバッファのメモリサイズの無駄を無くし、小さなメモリサイズで任意角回転を実現する画像処理装置を提供する。
【解決手段】切り出し位置設定部104は画像データに対し、左右の切り出し位置を設定する。切り出し部105は切り出し設定値に従い画像データに対し切り出しを行う。書き込みアドレス生成部101はメモリのバッファに対し切り出し後の画像データの書き込みアドレスを生成する。読み出し座標生成部117は任意角回転された画像データの計算に必要な入力画像の座標を生成する。読み出しアドレス生成部111は読み出し座標生成部117で生成された座標をメモリのバッファアドレスに変換し、ずらし量補正する。そして書き込みアドレス値がバッファ境界をまたぐときに一定のずらし量分だけ切り出し設定値をずらし、読み出しアドレス値がバッファ境界をまたぐときに一定のずらし量分だけ読み出しアドレス値の補正を行う。
【選択図】 図1

Description

本発明は,画像の任意角回転を行う画像処理装置等に関する。
スキャナや複写機、MFP(マルチファンクションプリンタ)にて原稿を読み取る場合、スキャンされる原稿の傾きを補正するために、画像の任意角回転処理が使用される。あるいは、入力画像を傾けて並べてレイアウト印刷を行うような場合にも、画像の任意角回転処理が使用される、など画像の任意角回転処理が必要とされる機会が増えてきている。
図8は、スキャンされた原稿の傾きを補正する場合を想定して、入力画像の一部を任意角回転して出力画像として取り出す処理を説明する図である。図8(a)、(b)に示した入力画像801−1、801−2(横Win画素、縦Hinライン)においては、出力画像に相当する領域802−1、802−2を角度θだけ回転させ、出力画像804(横W画素、縦Hライン)として出力する。ここで、任意角回転における回転角度θの値域は次式(1)の通りであり、以下では、説明の都合上、左回りのときθ>0、右回りのときθ<0と定義する。
−90°< θ < 90° ・・・(1)
図8(a)は、画像を左回り回転させる例であり、入力画像中の領域802−1が左回りに回転されて出力画像804となる。また、図8(b)は、画像を右回り回転する例であり、入力画像中の領域802−2が右回りに回転されて出力画像804となる。図8の処理を実行するにあたり、入力画像全体及び出力画像全体を格納できるメモリを確保できるならば、図8で示された処理を単純な座標変換で処理できる。
ところが組込み機器のようにメモリ資源の限られた機器では使用可能なメモリ量が少ないため、図8の出力バンド805(縦hライン)に示すように画像を高さの限定されたバンドに分割して、バンド単位で処理することが一般的に行われている。図8において出力バンド805に対応する入力画像内の領域は803−1又は803−2(以下、803)であるため入力用に領域803を含むライン数分のメモリ、出力用に出力バンド805分のメモリがあれば、1つの出力バンド分の任意角回転処理が可能である。1つの出力バンド分の処理が終わった後、入力データのライン位置を次の出力バンドに対応できる分だけずらすことで、次の出力バンドの処理が可能となる。
このように入力ライン位置をずらしながら入力を与えていくには、入力データをライン単位でリングバッファに格納して処理する方法が向いている。図9は、入力画像データをリングバッファに書き込み、これを読み出すことで任意角回転を行う処理を説明する図である。
図9において、リングバッファ901は、リングスタートアドレスSAringから始まり、バッファサイズSringバイトのバッファである。リングエンドアドレスEAringは、リングバッファの末尾の次のアドレスを示しており、SAringと、Sringとは次式(2)の関係がある。
EAring=SAring+Sring ・・・(2)
また、リングバッファ901のサイズSringは、入力される画像データの1ラインのデータサイズ(Slineバイト)の倍数であるものとし、これはHringラインに対応しているものとする。
Sring=Sline×Hring ・・・(3)
図9において、矢印で示したように、入力データはラスター方向に書き込みを行う。また、領域902は、処理中の出力バンドに対応するリングバッファ内の領域を示しており、領域902中の矢印のように斜め方向にデータを読み出すことで、任意角回転処理が可能となる。ここで、リングバッファへの入力データの書き込みと出力データの読み出しについては、未読み出しのデータに対する入力データの上書きや、未書き込みのデータの読み出しが起きないよう、同期制御が必要である。なお、出力に対応する画素位置ちょうどに入力画素が存在するとは限らないが、この点については、図10を用いて説明する。
図10は、入力画素データから出力画素データを得る処理を説明する図である。入力座標グリッド1001は、入力画像データの座標を示しており、各格子点に入力画素が存在している。出力座標グリッド1002は、回転される出力画素の存在位置を、入力座標グリッド1001上に重ねて表示したもので、各格子点に出力画素が相当する。
出力座標グリッド1002の各格子点位置に対応する入力画素値が計算できれば、回転後の出力画素値が得られる。このため、結局、出力座標グリッドの入力座標上における格子点位置を計算すること、及び、求めた格子点位置に対応する入力画素値を補間等の計算により求めること、で任意角回転処理が可能となる。
まず、格子点位置の計算に関して説明する。最初の出力画素1010に対応する入力座標上の格子点位置を(x0,y0)とする。以下、出力をラスター方向にスキャンしたときの出力画素1011、1012、1013、1014に対応する格子点位置を、それぞれ(x1,y0)、(x2,y0)、(x3,y0)、(x4,y0)とする。また、出力において次のラインの最初の出力画素1015に対応する格子点位置を(x0,y1)とする。出力座標グリッド1002における各格子点の間隔は一様であるため、格子点をラスター方向に1画素移動したときの、入力座標値の変位量を(Δxp,Δyp)とする。格子点を縦方向に1ライン移動したときの、入力座標値の変位量を(Δxl,Δyl)とすると、各格子点位置には、次式(4)、(5)の関係がある。
(xn,yn)=(xn−1,yn−1)+(Δxp,Δyp)、n≧1 ・・・(4)
(x0,yn)=(x0,yn−1)+(Δxl,Δyl)、n≧1 ・・・(5)
従って、初期座標位置(x0,y0)と変位量(Δxp,Δyp)、(Δxl,Δyl)が与えられれば、これら2つの式を適用することで、順次格子点位置の計算が可能である。ここで、角度θの任意角回転では、次式(6)、(7)の変位量を指定すればよい。
Δxp=cosθ 、 Δyp=sinθ ・・・(6)
Δxl=−sinθ 、 Δyl=cosθ ・・・(7)
また、さらに、横方向、縦方向の倍率Mx、Myを加えて、次式(8)、(9)の変位量を指定すれば、任意角回転と変倍を同時に実行することも可能である。
Δxp=cosθ÷Mx 、 Δyp=sinθ÷Mx ・・・(8)
Δxl=−sinθ÷My 、 Δyl=cosθ÷My ・・・(9)
次に、求めた格子点位置に対応する入力画素値の計算に関して説明する。これは、与えられた座標位置に対応する画素位置を計算する画素値補間の問題であるため、既存の様々な補間方法が使用可能である。代表的な例として、単純に座標位置の小数部を切り捨てる方法、最近傍画素補間、線形補間(出力座標位置の近傍4入力画素を使用して線形補間演算により出力画素値を計算)、などがある。さらに近傍16入力画素等、多くの入力データを使用して補間する方法もある。図10では、最近傍画素補間を適用した例を示しており、出力画素1010〜1015に対して、それぞれ対応する最も近い入力画素1020〜1025の値が、出力画素値として出力される。従って、図9で出力の読み出しを行う際には、図10における入力画素1020〜1025に相当するデータを順次リングバッファから読み出せばよい。
以上、図9、図10で説明したように、リングバッファを用いた任意角回転処理が可能であるが、このような方法で任意角回転処理を行う装置の構成例を図11に示す。
図11において、リングバッファの書き込み側は、次のような構成となっている。書き込みアドレス生成部101は、リングバッファへの書き込みアドレスを生成する部分であり、図9に示したようにラスター順のアドレスを生成する。書き込みアドレス生成部101は、さらにアドレス計算部102とリングアドレス変換部103からなっている。アドレス計算部102で生成したラスター順のアドレスに対して、リングアドレス変換部103では、リング境界における処理を行い、得られたリングバッファ上のアドレスが書き込みアドレス生成部101から出力される。
書き込みインタフェース部106は、書き込みアドレス生成部101の生成した書き込みアドレスとラスター順で入力される入力データを受け取って、リングバッファへの書き込み指示をメモリコントローラ部107に対して行うインタフェース部である。
図11において、リングバッファのメモリ部分は、次のような構成となっている。メモリコントローラ部107は、書き込みインタフェース部106からのメモリ書き込み指示、及び、読み出しインタフェース部110からのメモリ読み出し指示を受けて、メモリ108の読み書きを行うコントローラ部である。
メモリ108は、メモリコントローラ部107で管理されたメモリであり、その一部あるいは全部がリングバッファ109として使用されている。図11において、リングバッファの読み出し側は、次のような構成となっている。
回転座標生成部117は、図9に示したような斜め方向の座標を生成する部分であり、変位量設定部119、斜めラスター座標計算部118からなっている。変位量設定部119には、図4で説明した変位量(Δxp,Δyp)、(Δxl,Δyl)を設定し、この設定値を用いて、斜めラスター座標計算部118で、上記式(4)、(5)の計算を行い、斜め方向の座標を生成する。
補間部114は、回転座標生成部117で計算した座標位置に対応する画素値を使用する補間方法に応じた補間演算で求める部分である。補間部114は、補間座標計算部115と補間データ計算部116からなっている。補間座標計算部115は、回転座標生成部117から受け取った座標値から、使用する補間方法に応じて、必要となる入力画素の座標を計算する部分で、図10の例で言えば、白丸1020〜1025の位置を計算する処理を行う。
補間データ計算部116は、補間座標計算部115で計算された位置の画素値を読み出しインタフェース部110から受け取り、使用する補間方法に応じた演算で出力値を計算する処理を行う。図10の最近傍画素補間の例では、白丸1020〜1025の画素値をそのまま出力するため、補間データ計算部116で行う演算は特にないが、線形補間等、演算の必要な補間方法の場合は、ここで実行する。
読み出しアドレス生成部1101は、補間座標計算部115で計算された入力画像の座標値をリングバッファ上のアドレス値に変換して出力する部分であり、アドレス計算部1102とリングアドレス変換部1103からなる。アドレス計算部1102は、入力された座標値を、1画素当りのデータサイズや1ライン当りのデータサイズを考慮してアドレス値に変換する部分である。リングアドレス変換部1103では、リング境界における処理を行い、得られたリングバッファ上のアドレスが読み出しアドレス生成部1101から出力される。
読み出しインタフェース部110は、読み出しアドレス生成部1101の生成した読み出しアドレスを受け取って、リングバッファへの読み出し指示をメモリコントローラ部107に対して行うインタフェース部である。読み出しインタフェース部110の読み出したデータは、補間データ計算部116に入力され、そこで計算された値は、ラスター順の画像データとして出力される。
図9のように、リングバッファにラスター順で書き込み、斜めに読み出すことで任意角回転を行う場合、リングバッファとして必要となるメモリサイズが無駄に大きくなる、という課題が存在する。その課題について、図12を用いて説明する。
図12は、入力画像1201において、角度θの任意角回転を行って、横W画素、縦Hラインの出力画像を得る場合の説明図である。領域1202は、入力画像内で出力画像に相当する領域であり、領域1203は、入力画像内で1つの出力バンドに相当する領域である。この処理を、図9を用いて説明した方法で処理した場合、入力としてリングバッファに書き込むべき最低限の領域は、長方形の領域1204で示される。領域1204の幅をW1画素とすると、W1は、リングバッファとして必要な最小の画素幅であり、図12からわかるように、出力画像の幅W,高さH、回転角度θを使用して、次式(10)で計算される。なお、ここで、|θ|は、θの絶対値を示している。
W1=W・cosθ+H・sin|θ| ・・・(10)
図12において、領域1204の内部を見ると、出力画像に相当する領域1202の左右に、バッファへの書き込みは行われるが、読み出しは行われない無駄な三角形の領域1205、1206が存在することがわかる。また、これらの無駄な領域1205,1206のサイズは、回転角度θの絶対値や、出力画像の高さHが大きくなると、それに従って大きくなっていく。左右に無駄な領域1205、1206が存在するということは、リングバッファ内において、これらに対応する領域のデータは使用されない、ということであり、従来の方法ではリングバッファのメモリサイズが無駄に大きくなっている。
本発明は上記のような問題点を解消することを目的としてなされたものであり、リングバッファのメモリサイズの無駄を無くし、小さなメモリサイズで任意角回転を実現する画像処理装置を提供することを目的とする。
本発明の画像処理装置は、入力画像データに対し、左右の切り出し位置を設定する切り出し位置設定手段と、前記切り出し位置設定手段の切り出し設定値に従って入力画像データに対し切り出しを行う切り出し手段と、メモリ上のバッファに対し、切り出し後の入力画像データの書き込みアドレスを生成する書き込みアドレス生成手段と、任意角回転された画像データの計算に必要な入力画像の座標を生成する読み出し座標生成手段と、前記読み出し座標生成手段で生成された座標をメモリ上のバッファアドレスに変換し、バッファ境界の処理に加えて一定のずらし量補正する読み出しアドレス変換手段とを有し、前記書き込みアドレス生成手段の生成する書き込みアドレス値がバッファ境界をまたぐときに、前記一定のずらし量分だけ前記切り出し位置設定手段の切り出し設定値をずらし、前記読み出しアドレス変換手段において読み出しアドレス値がバッファ境界をまたぐときに、前記一定のずらし量分だけ読み出しアドレス値の補正を行うことを特徴とする。
また、本発明の画像処理方法は、入力画像データに対し、左右の切り出し位置を設定する切り出し位置設定手段と、前記切り出し位置設定手段の切り出し設定値に従って入力画像データに対し切り出しを行う切り出し手段と、メモリ上のバッファに対し、切り出し後の入力画像データの書き込みアドレスを生成する書き込みアドレス生成手段と、任意角回転された画像データの計算に必要な入力画像の座標を生成する読み出し座標生成手段と、前記読み出し座標生成手段で生成された座標をメモリ上のバッファアドレスに変換し、バッファ境界の処理に加えて一定のずらし量補正する読み出しアドレス変換手段とを有する画像処理装置による画像処理方法であって、前記書き込みアドレス生成手段の生成する書き込みアドレス値がバッファ境界をまたぐときに、前記一定のずらし量分だけ前記切り出し位置設定手段の切り出し設定値をずらし、前記読み出しアドレス変換手段において読み出しアドレス値がバッファ境界をまたぐときに、前記一定のずらし量分だけ読み出しアドレス値の補正を行うステップを有することを特徴とする。
また、本発明のプログラムは、上記に記載の画像処理方法の処理ステップをコンピュータに実行させるためのプログラムである。
本発明によれば、バッファのバッファ境界をまたぐたびに、左右に一定のずらし量ずれた位置を読み書きするようにした。これにより、無駄な領域を読み書きすることが無くなり、リングバッファにためる画像幅を従来方式よりも小さくできる。すなわち、リングバッファのメモリサイズの無駄を無くし、小さなメモリサイズで任意角回転が実現できる。
(第1の実施の形態)
本発明の第1の実施の形態は、図11を用いて説明した従来方式のようにリングバッファを用いて任意角回転を実現した場合に、必要なリングバッファのサイズを削減するものである。まず、本発明の原理を図3を用いて説明する。
図3は、入力画像301において、出力画像に対応する領域302、ある出力バンドに対応する領域303、及びリングバッファサイズ分の入力に対応する複数の領域304、305、306、307を示している。
リングバッファサイズ分の入力に対応する各領域の幅はW2画素、高さはリングバッファのライン数(Hringライン)である。リングバッファへの入力は、まず領域304に対して行われ、リングバッファが一杯になる、すなわちリングバッファの境界をまたぐタイミングになると、以後の入力は、一定のずらし量分左右にずれた位置にある領域305に対して行われる。
次に、領域305の入力が完了し、リングバッファの境界をまたぐタイミングになると、以後の入力は、一定のずらし量分左右にずれた位置にある領域306に対して行われる。以後、必要な入力が全て完了するまで、リングバッファの境界をまたぐたびに、一定のずらし量分左右にずれた位置にある領域を入力の対象としていく。
このような動作を行うことで、上記図12に存在した左右の無駄な領域1205、1206がリングバッファに読み込まれなくなり、より小さなサイズのリングバッファを用いることができる。
従来方式と本発明を比較したときに、リングバッファのサイズをどれだけ小さくできるか、図4、図5を用いて説明する。図4は、リングバッファ401と出力バンド402の関係を表した図であり、リングバッファとして最低限必要な画素幅W2を示している。リングバッファの高さをHringラインとすると、出力バンドの右下角より左側に必要な幅は、W/cosθ、右側に必要な幅は、Lring・tan|θ|であるから、W2は次式(11)で表される。
W2=W/cosθ+Lring・tan|θ| ・・・(11)
また、リングバッファの境界をまたいで次に移るときに必要な左右方向のずらし量は、図4で、出力バンドの右下角をちょうどリングバッファの右端まで移さねばならないため、次式(12)で表される。
ずらし量=−Lring・tanθ ・・・(12)
式(12)のずらし量の符号であるが、右回りで回転角θ>0のとき、ずらし量は負、すなわち、左側にずれた位置を新たなバッファ領域とする。また、左回りで回転角θ<0のとき、ずらし量は正、すなわち、右側にずれた位置を新たなバッファ領域とする。
図5は、リングバッファとして最低限必要な高さ、すなわち、Lringの最小値を説明する図であり、リングバッファ501の境界に対し、高さhラインの出力バンド502の上下端がちょうど乗っている場合を示している。図5より、Lringの最小値は次式(13)で計算できる。
MIN(Lring)=W・sin|θ|+h・cosθ ・・・(13)
Lringの値は、リングバッファへの読み込み・書き込みの同期制御方法の影響も受けるため、必ず式(13)の最小値を使用できるとは限らないが、ここでは、式(13)が適用可能として、式(11)に代入すると、結局、W2は次式(14)で与えられる。
W2=W/cosθ+Wsin|θ|・tan|θ|+h・sin|θ| ・・・(14)
以上より、例えば、具体的な数値として、W=2000(画素)、H=3000(ライン)、θ=10°、h=8(ライン)とすると、従来方式において最低限必要なリングバッファ幅は、式(10)より、W1=2491画素となる。
一方、本発明において最低限必要なリングバッファ幅は、式(14)より、W2=2100画素となる。
リングバッファの高さに関しては、従来方式でも本発明でも条件は同じであるため、結局、両方式におけるバッファサイズの比は、W2/W1=0.84となり、約16%のメモリサイズが節約可能であるとわかる。
次に、第1の実施の形態における、任意角回転を行う画像処理装置の構成例を図1に示す。図1において、リングバッファの書き込み側は、次のような構成となっている。
書き込みアドレス生成部101は、リングバッファへの書き込みアドレスを生成する部分であり、図9に示したようにラスター順のアドレスを生成する。書き込みアドレス生成部101は、さらにアドレス計算部102とリングアドレス変換部103からなっている。
アドレス計算部102で生成したラスター順のアドレスに対して、リングアドレス変換部103では、リング境界における処理を行い、得られたリングバッファ上のアドレスが書き込みアドレス生成部101から出力される。
切り出し部105は、ラスター順で入力される入力データを受け取り、切り出し位置設定部104で設定された左右の切り出し位置に従って、図2に示すように画像の切り出しを行い、切り出し後の画像データを書き込みインタフェース部106に出力する。切り出し位置設定部104では、図2における切り出し開始位置と切り出しサイズを設定値として保持している。
切り出し部105は、図2における入力画像201のうち、切り出し開始位置より右側で、かつ、切り出し開始位置より切り出しサイズ分までの位置の画素データのみを出力画像202として出力する。
切り出し位置設定部104は、書き込みアドレス生成部101から、生成アドレスがリングバッファ境界をまたぐ事象の通知を受け、式(12)で計算したずらし量分だけ、切り出し開始位置をずらして再設定する。
書き込みインタフェース部106は、書き込みアドレス生成部101の生成した書き込みアドレスと切り出し部105で切り出し後の画像データを受け取って、リングバッファへの書き込み指示をメモリコントローラ部107に対して行う。
図1における、リングバッファのメモリ部分は、図11に示した従来方法と同じであり、メモリコントローラ部107、メモリ108からなっている。リングバッファ109は、メモリ108の一部あるいは全てを使用して実現されている。図1において、リングバッファの読み出し側は、次のような構成となっている。
回転座標生成部117は、図9に示したような斜め方向の座標を生成する部分であり、変位量設定部119、斜めラスター座標計算部118からなっている。変位量設定部119には、図10で説明した変位量(Δxp,Δyp)、(Δxl,Δyl)を設定し、この設定値を用いて、斜めラスター座標計算部118で、式(4)、(5)の計算を行い、斜め方向の座標を生成する。
補間部114は、回転座標生成部117で計算した座標位置に対応する画素値を使用する補間方法に応じた補間演算で求める部分である。補間部114は、補間座標計算部115と補間データ計算部116からなっている。
補間座標計算部115は、回転座標生成部117から受け取った座標値から、使用する補間方法に応じて、必要となる入力画素の座標を計算する部分で、図10の例で言えば、白丸1020〜1025の位置を計算する処理を行う。
補間データ計算部116は、補間座標計算部115で計算された位置の画素値を読み出しインタフェース部110から受け取り、使用する補間方法に応じた演算で出力値を計算する処理を行う。図10の最近傍画素補間の例では、白丸1020〜1025の画素値をそのまま出力するため、補間データ計算部116で行う演算は特にないが、線形補間等、演算の必要な補間方法の場合は、ここで実行する。
読み出しアドレス生成部111は、補間座標計算部115で計算された入力画像の座標値をリングバッファ上のアドレス値に変換して出力する部分であり、アドレス計算部112とずらし補正つきリングアドレス変換部113からなる。アドレス計算部112は、入力された座標値を、1画素当りのデータサイズや1ライン当りのデータサイズを考慮してアドレス値に変換する部分である。
ずらし補正つきリングアドレス変換部113では、リング境界における通常のリングアドレス処理を行うと共に、リングバッファの書き込み側で用いたずらし量と同じ分だけ逆方向にアドレス値をずらし量補正する処理を行う。これを具体的に説明すると、アドレス値Aがリング境界をまたぐ場合、通常のリングアドレス変換後のアドレス値Aringは次式(15)、(16)の通りである。
リング境界を一つ次に向かってまたぐ(A≧EAring)とき:
Aring=A−(EAring−SAring) ・・・(15)
リング境界を一つ前に向かってまたぐ(A<SAring)とき:
Aring=A+(EAring−SAring) ・・・(16)
これに対し、ずらし補正付きリングアドレス変換部113では、式(15)、(16)の後に、式(12)のずらし量を考慮して次の式(17)、(18)で変換を行う。
リング境界を一つ次に向かってまたぐ(A≧EAring)とき:
Aring'=Aring−ずらし量 ・・・(17)
リング境界を一つ前に向かってまたぐ(A<SAring)とき:
Aring'=Aring+ずらし量 ・・・(18)
但し、式(17)、(18)におけるずらし量は、式(12)の値そのものでなく、式(12)の符号は保ったままで、画素数をバイト数に換算した値である。
このように、ずらし量を補正して得られたリングバッファ上のアドレスが読み出しアドレス生成部111から出力される。
読み出しインタフェース部110は、読み出しアドレス生成部111の生成した読み出しアドレスを受け取って、リングバッファへの読み出し指示をメモリコントローラ部107に対して行う。読み出しインタフェース部110の読み出したデータは、補間データ計算部116に入力され、そこで計算された値は、ラスター順の画像データとして出力される。なお、バッファのサイズや、ずらし量は、画素単位やバイト単位でなければならないため、上記説明の数式の値を整数化して使用しなければならない場合がある。このような場合の整数化の誤差については、それぞれの値に対して、切り捨て、丸め、四捨五入など適切な手段で対応するものとする。
また、リングバッファへの入力データの書き込みと出力データの読み出しの同期制御は省略されているが、未読み出しのデータに対する入力データの上書きや、未書き込みのデータの読み出しが起きないよう、適切に同期制御を行う必要がある。また、図1の構成を実現するにあたり、全ての部分、あるいは一部をCPU上のプログラムで実現してもよいし、全ての部分、あるいは一部をハードウェアで実現してもよい。
(第2の実施の形態)
本発明の第2の実施の形態は、第1の実施の形態のリングバッファの代わりに、複数のバッファ(この例では、トリプルバッファ)を用いた場合の例である。発明の原理は、第1の実施の形態の図3で説明したものと同じである。図3におけるバッファ入力領域304、305、306、307が、第1の実施の形態ではリングバッファであったのに対し、第2の実施の形態では複数のバッファを用意し、それぞれの領域を順次複数のバッファに転送するところが異なっている。
例えば、図7に示すような、3つのバッファを用いたトリプルバッファ構成では、入力書き込み用に1つのバッファ、出力読み出し用に2つのバッファを使用し、書き込み用、読み出し用のバッファを切り替えながら処理を進めていく。図7では、出力バンドが、バッファ1(701)とバッファ2(702)にまたがっているため、バッファ境界をまたいだ際に、第1の実施の形態と同様にずらし量の補正を行う必要がある。
次に、第2の実施の形態における、任意角回転を行う画像処理装置の構成例を図6に示す。第1の実施の形態との違いは、書き込みアドレス生成部におけるリングアドレス変換部103が、バッファアドレス変換部603に置き換わっていることである。また、メモリ上のリングバッファ109が、複数バッファ604に置き換わっていることである。また、読み出しアドレス生成部におけるずらし補正付きリングアドレス変換部113が、ずらし補正付きバッファアドレス変換部607に置き換わっていることである。以下では、これらの違いだけを説明する。
バッファアドレス変換部603は、アドレスがバッファ境界をまたぐ場合に、リングアドレスの計算ではなく、複数バッファを考慮したアドレスの計算を行う。例えば、図7において、バッファ3(703)への入力データの書き込みが終わり、アドレスがバッファ3のエンドアドレスEA3に到達したときには、次のバッファ1のスタートアドレスSA1へアドレスを変換して使用する。
メモリ上の複数バッファ604について、バッファ数や各バッファのサイズには限定は無く、また、複数のバッファ間のアドレスが連続しているか否かについても限定は無い。ずらし補正付きバッファアドレス変換部607は、まず、リング境界でのアドレス変換式(15)、(16)の代わりに、バッファ境界でのアドレス計算式でアドレスの変換を行う(式(19)、(20))。
バッファ境界を一つ次に向かってまたぐ(A≧EAh)とき:
Abuf=A−EAn+SAn+1 ・・・(19)
バッファ境界を一つ前に向かってまたぐ(A<SAn)とき:
Abuf=A−SAn+EAn−1 ・・・(20)
但し、ここでSAn、EAnは現バッファのスタート、エンドアドレス、SAn+1は次のバッファのスタートアドレス、EAn−1は前のバッファのエンドアドレスである。
ずらし補正付きバッファアドレス変換部607は、次に、式(17)、(18)と同様にずらし量の補正を行う。
バッファ境界を一つ次に向かってまたぐとき:
Abuf'=Abuf−ずらし量 ・・・(21)
バッファ境界を一つ前に向かってまたぐとき:
Abuf'=Abuf+ずらし量 ・・・(22)
このようにずらし量を補正して得られたアドレス値Abuf'がバッファの読み出しに使用される。図7の出力バンドをバッファ1(701)、バッファ2(702)から読み出す例で言う。最初は、バッファ1内の領域704を斜めに読み出していき、バッファ1の境界をバッファ2に向かってまたぐところで、式(19)、(21)の計算により、バッファ2内のずらし補正済みのアドレス値を得る。これにより、引き続きバッファ2内の領域705を斜めに読み出していく。なお、バッファのサイズや、ずらし量は、画素単位やバイト単位でなければならないため、上記説明の数式の値を整数化して使用しなければならない場合がある。
このような場合の整数化の誤差については、それぞれの値に対して、切り捨て、丸め、四捨五入など適切な手段で対応するものとする。また第2の実施の形態において、リングバッファへの入力データの書き込みと出力データの読み出しの同期制御は省略されているが、未読み出しのデータに対する入力データの上書きや未書き込みのデータの読み出しが起きないよう、適切に同期制御を行う必要がある。また、図6の構成を実現するにあたり、全ての部分、あるいは一部をCPU上のプログラムで実現してもよいし、全ての部分、あるいは一部をハードウェアで実現してもよい。
なお、本発明を実現するために、上述した実施形態の機能を実現するソフトウェアのプログラムコード(コンピュータプログラム)を記録した記憶媒体を用いても良い。この場合には記憶媒体をシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによって本発明の目的が達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(基本システム或いはオペレーティングシステム)等が実際の処理の一部又は全部を行う場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。この場合には、書き込まれたプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行ってもよい。
本発明の第1の実施の形態に係る画像処理装置の構成の一例を示した図である。 本発明の実施の形態に係る画像処理装置の切り出し部を説明する図である。 本発明の実施の形態に係る画像処理装置のバッファ入力領域を説明する図である。 本発明の実施の形態に係る画像処理装置において必要なバッファ幅を説明する図である。 本発明の実施の形態に係る画像処理装置における最小リングバッファサイズを説明する図である。 本発明の第2の実施の形態に係る画像処理装置の構成の一例を示した図である。 本発明の第2の実施の形態に係る画像処理装置の複数バッファを説明する図である。 従来の、入力画像の一部を任意角回転して出力画像として取り出す処理を説明する図である。 従来の、入力画像データをリングバッファに書き込み、これを読み出すことで任意角回転を行う処理を説明する図である。 従来の、入力画素データから出力画素データを得る処理を説明する図である。 従来の任意角回転処理を行う装置の構成例を示す図である。 従来方式において必要なバッファ幅の説明図である。
符号の説明
101、601 書き込みアドレス生成部
102 アドレス計算部
103 リングアドレス変換部
104 切り出し位置設定部
105 切り出し部
106 書き込みインタフェース部
107 メモリコントローラ部
108 メモリ
109 リングバッファ
110 読み出しインタフェース部
111、605 読み出しアドレス生成部
112、606 アドレス計算部
113 ずらし補正つきリングアドレス変換部
114 補間部
115 補間座標計算部
116 補間データ計算部
117 回転座標生成部
118 斜めラスター座標計算部
119 変位量設定部
603 バッファアドレス変換部
604 複数バッファ
607 ずらし補正つきリングアドレス変換部

Claims (5)

  1. 入力画像データに対し、左右の切り出し位置を設定する切り出し位置設定手段と、
    前記切り出し位置設定手段の切り出し設定値に従って入力画像データに対し切り出しを行う切り出し手段と、
    メモリ上のバッファに対し、切り出し後の入力画像データの書き込みアドレスを生成する書き込みアドレス生成手段と、
    任意角回転された画像データの計算に必要な入力画像の座標を生成する読み出し座標生成手段と、
    前記読み出し座標生成手段で生成された座標をメモリ上のバッファアドレスに変換し、バッファ境界の処理に加えて一定のずらし量補正する読み出しアドレス変換手段とを有し、
    前記書き込みアドレス生成手段の生成する書き込みアドレス値がバッファ境界をまたぐときに、前記一定のずらし量分だけ前記切り出し位置設定手段の切り出し設定値をずらし、前記読み出しアドレス変換手段において読み出しアドレス値がバッファ境界をまたぐときに、前記一定のずらし量分だけ読み出しアドレス値の補正を行うことを特徴とする画像処理装置。
  2. 前記バッファは、リングバッファであることを特徴とする請求項1に記載の画像処理装置。
  3. 前記バッファは、複数のバッファからなることを特徴とする請求項1に記載の画像処理装置。
  4. 入力画像データに対し、左右の切り出し位置を設定する切り出し位置設定手段と、前記切り出し位置設定手段の切り出し設定値に従って入力画像データに対し切り出しを行う切り出し手段と、メモリ上のバッファに対し、切り出し後の入力画像データの書き込みアドレスを生成する書き込みアドレス生成手段と、任意角回転された画像データの計算に必要な入力画像の座標を生成する読み出し座標生成手段と、前記読み出し座標生成手段で生成された座標をメモリ上のバッファアドレスに変換し、バッファ境界の処理に加えて一定のずらし量補正する読み出しアドレス変換手段とを有する画像処理装置による画像処理方法であって、
    前記書き込みアドレス生成手段の生成する書き込みアドレス値がバッファ境界をまたぐときに、前記一定のずらし量分だけ前記切り出し位置設定手段の切り出し設定値をずらし、前記読み出しアドレス変換手段において読み出しアドレス値がバッファ境界をまたぐときに、前記一定のずらし量分だけ読み出しアドレス値の補正を行うステップを有することを特徴とする画像処理方法。
  5. 請求項4に記載の画像処理方法の処理ステップをコンピュータに実行させるためのプログラム。
JP2007319991A 2007-12-11 2007-12-11 画像処理装置、方法及びプログラム Pending JP2009147453A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007319991A JP2009147453A (ja) 2007-12-11 2007-12-11 画像処理装置、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007319991A JP2009147453A (ja) 2007-12-11 2007-12-11 画像処理装置、方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2009147453A true JP2009147453A (ja) 2009-07-02

Family

ID=40917600

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007319991A Pending JP2009147453A (ja) 2007-12-11 2007-12-11 画像処理装置、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2009147453A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129663A (zh) * 2010-12-20 2011-07-20 福州瑞芯微电子有限公司 一种读取地址和宽度不对齐图像处理方法及电路结构
CN106791481A (zh) * 2016-12-13 2017-05-31 广东威创视讯科技股份有限公司 视频数据旋转方法和系统
CN108986034A (zh) * 2018-07-02 2018-12-11 武汉珞珈德毅科技股份有限公司 一种栅格数据坐标转换方法、系统、终端设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129663A (zh) * 2010-12-20 2011-07-20 福州瑞芯微电子有限公司 一种读取地址和宽度不对齐图像处理方法及电路结构
CN106791481A (zh) * 2016-12-13 2017-05-31 广东威创视讯科技股份有限公司 视频数据旋转方法和系统
WO2018107776A1 (zh) * 2016-12-13 2018-06-21 威创集团股份有限公司 视频数据旋转方法和系统
CN108986034A (zh) * 2018-07-02 2018-12-11 武汉珞珈德毅科技股份有限公司 一种栅格数据坐标转换方法、系统、终端设备及存储介质

Similar Documents

Publication Publication Date Title
JP2006333361A5 (ja)
JP2008276407A (ja) 画像処理装置及びその方法
JP2006094467A (ja) 画像処理装置及び方法及びプログラム及び記憶媒体
JP2009147453A (ja) 画像処理装置、方法及びプログラム
JP6249692B2 (ja) 画像処理装置、その制御方法及びプログラム
JP2019004198A (ja) 電子装置及びプログラム
JP6460627B2 (ja) 原稿を読み取ることで得られた画像データに基づく印刷を行うことが可能な画像処理装置、画像処理装置の制御方法、およびプログラム
JP6230468B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP2005086598A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよび画像処理回路
JP2007226330A (ja) 画像処理装置、画像処理方法、その方法をコンピュータに実行させるプログラム
JP2001101399A (ja) 画像の傾き検知・余白検知・傾き補正方法及び文書画像処理装置
JP5325744B2 (ja) 画像処理装置および画像処理プログラム
JP2007034488A (ja) Dma制御装置及びその方法
JP6156653B2 (ja) 画像変形装置
JP2012227598A (ja) 画像処理装置、画像形成装置、画像処理方法、画像処理プログラム及び記録媒体
JP6278716B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP4232712B2 (ja) 画像処理装置
JP6157234B2 (ja) 画像処理装置、画像処理方法およびプログラム
JP2009253645A (ja) 画像処理装置及びその処理方法
US10516802B1 (en) Image processing device
JP2011191903A (ja) 情報処理装置、画像形成装置及び情報処理方法
JP5039687B2 (ja) 画像処理装置
JP2005250996A (ja) 画像処理装置
JP4552115B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP2006245760A (ja) 画像形成装置