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

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

Info

Publication number
JP5914045B2
JP5914045B2 JP2012042387A JP2012042387A JP5914045B2 JP 5914045 B2 JP5914045 B2 JP 5914045B2 JP 2012042387 A JP2012042387 A JP 2012042387A JP 2012042387 A JP2012042387 A JP 2012042387A JP 5914045 B2 JP5914045 B2 JP 5914045B2
Authority
JP
Japan
Prior art keywords
image
matrix
conversion
value
coordinate
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.)
Expired - Fee Related
Application number
JP2012042387A
Other languages
English (en)
Other versions
JP2013178671A (ja
JP2013178671A5 (ja
Inventor
佳伸 長政
佳伸 長政
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 JP2012042387A priority Critical patent/JP5914045B2/ja
Priority to US13/773,802 priority patent/US9020296B2/en
Publication of JP2013178671A publication Critical patent/JP2013178671A/ja
Publication of JP2013178671A5 publication Critical patent/JP2013178671A5/ja
Application granted granted Critical
Publication of JP5914045B2 publication Critical patent/JP5914045B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30176Document

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Geometry (AREA)

Description

本発明は、射影変換処理を行う画像処理装置及び画像処理方法に関する。
デジタルカメラを用いてホワイトボードや名刺、文書等を撮影し、その撮影画像を記録媒体に保存して管理を行う場合に、被写体を斜め方向から撮影すると撮影画像上では長方形である被写体が長方形でない四辺形に歪む遠近法的な歪みが発生する。また、レンズ設計時に決まる歪みであって、広角レンズ等で大きくなる傾向のある歪みがあり、撮影画像上では歪曲歪みが発生する。
これに対し、特許文献1には、これらの歪みを持つ画像から、遠近法的な歪みに対して射影変換を、歪曲歪みに対して歪曲補正を、それぞれ行って両方の歪みがない画像を生成する技術が記載されている。また、特許文献2には、デジタルカメラを用いて顔や指紋などを撮影し、その撮影画像を照合用画像と照合する技術が記載されており、撮影画像の遠近法的な歪みに対して射影変換を行うとともに、非線形な歪みに対する補正をも行うことが記載されている。
また、射影変換では、CPUにおいて、比較的時間を要する乗算などの数値演算処理を1画素ずつ行う必要がある。これに対し、特許文献3には、乗算処理無しで処理を高速化する技術が記載されている。特許文献3に記載の技術では、画像の座標のx軸とy軸とをメモリの行アドレスと列アドレスとに対応させ、変換前の座標と変換後の座標との対応関係に基づいて、変換前の座標のアドレスから読みだした画素値を変換後の座標のアドレスへ格納する。このとき、変換前後の座標について、行アドレス及び列アドレスのそれぞれで変位量を定め、その変位量を加算及び減算することにより、1回の読出し及び書き込みアドレスを特定する。また、特許文献3の技術では、上述のような処理を、射影変換前後の転送元メモリ及び転送先メモリ間をダイレクトメモリアクセスでデータ転送するバスラインを設けて実行する。
また、特許文献4には、射影変換の一形態である画像の拡大縮小処理を、乗算処理なしで行う方法が記載されている。特許文献4に記載の方法は、基準クロックと間引きクロックの2種類のクロックを有し、拡大縮小倍率に応じて転送元と転送先メモリの小さい方の画像を扱うメモリに間引きクロックを供給することで、画像の拡大縮小処理を行う。また、特許文献5には、拡大縮小倍率に応じて決定される読み出しアドレスの増分を順次加算して、読み出しアドレスを乗算処理なしで算出する画像の拡大縮小処理方法が記載されている。
特開2005−267457号公報 特開2009−211171号公報 特開平11−312238号公報 特開平3−058285号公報 特開平10−23247号公報
しかしながら遠近法的な歪みを補正する射影変換において出力画像データの座標値に対応した入力画像データの座標値を求める逆射影変換では、複数の乗算処理を行う必要がある。ここで、動画処理など、1画像データを短時間に処理することが要求される場合には、複数の乗算処理は負荷が大きいため、複数の乗算器を並列化して配置したハードウェア又は高速な演算装置(CPUなど)が必要となるという課題があった。
また特許文献3に記載の方法では、座標値を算出しないため、複数の周辺画素による補間処理ができないため画質低下が大きいという課題があった。さらに歪曲歪みに対する歪曲補正は非線形な変換であるため、射影変換と合わせて変換前後で転送元及び転送先メモリ間のデータ転送を1回の転送で行うことはできないという課題があった。
また特許文献4及び特許文献5に記載の方法では、例えば転送先メモリの3行目には転送元メモリの5行目のデータを転送するというように、転送元と転送先メモリは行単位で結合される。そのため、射影変換の一形態である画像の拡大縮小処理にのみ適用可能で、任意のパラメータで射影変換処理への適用はできないという課題があった。
また、デジタルカメラなどで撮影した画像データは、画像符号化処理を行ってJPEGやMPEG、H.264など形式に変換した上で記憶装置に保存したり、外部出力したりすることが一般的である。画像符号化処理は一般的にブロック単位(例えば8×8)で行われるため、射影変換後の画像データをラスタースキャン順で出力すると、画像符号化処理をする装置の入力前に射影変換後の画像データをブロック処理の順序へ変換する必要がある。例えば、1ブロックのサイズが8×8とすると、最左列のブロックの画像符号化処理は、8行目の先頭8画素分の射影変換が完了するまで実行できないため、射影変換後の画像を保持する大容量のバッファメモリが必要となるという課題があった。
本発明は上記課題に鑑みなされたものであり、乗算処理の負荷を低減しながら、任意のパラメータで射影変換を行って変換後の画像の出力を可能とする技術を提供することを目的とする。
上記目的を達成するため、本発明による画像処理装置は、変換対象画像を非線形変換画像に非線形変換、前記非線形変換画像を行列変換によって変換した画像である行列変換画像を出力する画像処理装置であって、加算または減算を行う演算手段と、前記行列変換画像の1つの画素の座標値に対応する前記非線形変換画像の座標値を前記演算手段の演算結果に基づいて特定する特定手段と、前記特定手段により特定された前記非線形変換画像の前記座標値に対応する前記変換対象画像の座標値を取得する取得手段と、前記行列変換画像の前記1つの画素の座標値に対応する前記変換対象画像の前記座標値に基づいて、前記変換対象画像を前記行列変換画像に変換する変換手段と、を有し、前記演算手段は、前記行列変換における変換行列の要素と前記演算結果を加算または減算する演算を繰り返すことにより、前記行列変換における変換行列の要素と前記行列変換画像の隣接する複数の画素の座標値の乗算結果順次出力し、前記特定手段は、前記行列変換画像の前記隣接する複数の画素の座標値に対応する前記非線形変換画像の複数の座標値を、前記演算手段により順次出力される前記乗算結果に基づいて特定し、前記取得手段は、前記特定手段により特定された前記非線形変換画像の前記複数の座標値に対応する前記変換対象画像の複数の座標値を取得し、前記変換手段は、前記行列変換画像の前記隣接する複数の画素の座標値に対応する前記変換対象画像の前記複数の座標値に基づいて、前記変換対象画像を前記行列変換画像に変換する、ことを特徴とする。
本発明によれば、任意のパラメータで射影変換を行う際に、行列演算内の乗算処理を加減算で行うため、乗算処理の負荷を低減することができる。
画像処理装置の構成例を示すブロック図。 画像処理装置における画像変換の一例を示す図。 座標値(u,v)の処理順序を示す図。 逆射影変換部の内部構成例を示すブロック図。 逆射影変換部の制御動作を示すフローチャート。 射影変換画像のブロックへの分割の例を示す図。 各ブロック内での座標値(u,v)の処理順序を示す図。 第2の実施形態に係る逆射影変換部の内部構成例を示すブロック図。 第2の実施形態に係る逆射影変換部の制御動作を示すフローチャート。 第2の実施形態に係る逆射影変換部の制御動作を示すフローチャート。 第3の実施形態に係る画像処理装置の構成例を示すブロック図。 第3の実施形態に係る画像処理装置における画像変換の一例を示す図。 レンズ歪補正の変換処理を示す図。
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
<<実施形態1>>
(画像処理装置の構成)
図1は本実施形態に係る画像処理装置の構成を示すブロック図である。また、図2は本実施形態に係る画像処理装置の画像変換の一例である。画像処理装置1は、変換前の画像である変換対象画像上の任意の四辺形部分(図2における網掛け部)の4頂点が、長方形の4頂点に一致するように、正則行列である変換行列によって画像を変換する。画像処理装置1は、逆射影変換部11、画像取得部12、補間処理部13、及び制御部14を有して構成される。変換行列による変換をその一例である射影変換として、変換前の変換対象画像に射影変換を施した結果得られる変換後の画像を射影変換画像として、以下説明する。
ここで、変換前の画像である変換対象画像の各画素の位置を第1の座標値(x,y)で示し、画像処理装置1によって生成する変換後の射影変換画像の各画素の位置を第2の座標値(u,v)で示す。また射影変換画像は、水平方向にH画素、垂直方向にV画素の画素数からなる画像であるとする。なお、xとuはそれぞれの座標値の水平成分を示す座標要素であり、yとvはそれぞれの座標値の垂直成分を示す座標要素である。
逆射影変換部11は、射影変換画像の第2の座標値(u,v)上の画素を生成するために必要な変換対象画像上の画素の位置を示す第1の座標値(x,y)を出力する。以下、逆射影変換部11の基本的な動作について簡単に説明する。まず、以下の式(1)は、射影変換画像の第2の座標値(u,v)と、それに対応する変換対象画像の第1の座標値(x,y)の関係を表している。
Figure 0005914045
ここで、左辺の行列と座標を表すベクトルとの積と、右辺の座標を表すベクトルとは同値関係にある。aからhは射影変換の変換行列の逆行列の行列要素であり、各値の組み合わせによって射影変換結果が異なる。すなわち、この逆行列の行列要素により、第1の座標値(x,y)と第2の座標値(u,v)とが関連付けられる。以下の式(2)は、第1の座標値(x,y)を第2の座標値(u,v)で表した式であり、式(1)から求められる。
Figure 0005914045
このように、式(2)を用いることにより、第2の座標値(u,v)から第1の座標値(x,y)を特定することができる。なお、式(2)から分かるように、この時点で第1の座標値(x,y)は整数でなくてもよい、すなわち、小数点以下の数値を含む値である場合があることに留意されたい。
逆射影変換部11は、図3のように第2の座標値(u,v)をラスタースキャン順に式(2)へ代入し、出力値である第1の座標値(x,y)を順次算出する。ここで、図3は、横軸をu、縦軸をvとして座標値(u,v)の式(2)への代入順序を示している。なお、射影変換後の画素数から、座標要素uの最小値は0で最大値はH−1であり、座標要素vの最小値は0で最大値はV−1である。このとき、逆射影変換部11は、座標値S=(u,v)=(0,0)に対応する座標値(x,y)の計算から出力値の算出を開始する。逆射影変換部11は、以降、座標要素uを1ずつ増加させながら水平方向に座標値(u,v)=(H−1,0)までの1ライン分の座標値に対応する座標値(x,y)を算出する。逆射影変換部11は、次に、座標要素uを最小値0に戻した上で座標要素vを1増加させて、座標値(u,v)=(0,1)から座標値(u,v)=(H−1,1)までの次の1ライン分に対応する座標値(x,y)を順に算出する。以降、座標値E=(u,v)=(H−1,V−1)に対応する座標値(x,y)を算出するまで、この計算が繰り返され、逆射影変換部11は、全ての座標値(u,v)に対応する座標値(x,y)を出力する。逆射影変換部11の詳細については後述する。
画像取得部12は、逆射影変換部11が算出する第1の座標値(x,y)を元に、変換対象画像を保存している不図示のメモリに対してアドレスを発行して、画像データを読み出して取得する。また、画像取得部12は、取得した画像データから補間処理に必要な画素データを出力する。補間処理部13は、整数でない座標値(x,y)に対して、その小数部分と、画像取得部12から入力された画素データとを用いて、バイリニア補間処理を行って、出力画像データを生成して出力する。制御部14は、逆射影変換部11、画像取得部12、及び補間処理部13の状態を表す状態信号を受信して、各機能部を制御する制御信号を生成する。
(画像処理装置の動作)
画像処理装置1の各機能部の動作を説明する。まず、逆射影変換部11は制御部14の制御に基づいて、変換後の射影変換画像に関する第2の座標値(u,v)に対応する、変換前の変換対象画像に関する第1の座標値(x,y)を順次出力する。次に、画像取得部12は、順次入力される座標値(x,y)に基づいて、補間処理部13で使用する画素値が保存されている不図示のメモリ上のアドレスから入力画像データを読み出して、補間処理部13へその画素値を出力する。本実施形態ではバイリニア補間処理を行うため、座標値(x,y)周辺の4画素分の画素データを出力する。例えば、(x,y)=(3.1,4.5)である場合、画像取得部12は、座標(3,4)、(4,4)、(3,5)及び(4,5)の画素値を取得して、補間処理部13へ出力する。そして、補間処理部13は、座標値(x,y)の小数部分と画素データを用いてバイリニア補間処理を行って、射影変換画像についての画素値、すなわち出力画像データを出力する。
(逆射影変換部の構成)
図4は、逆射影変換部11の内部構成例を示すブロック図である。本実施形態では、逆射影変換部11は、それぞれ3つの水平方向処理部101−1〜101−3と、垂直方向処理部102−1〜102−3を有する。また、逆射影変換部11は、さらに、要素発生器103、104と、定数発生器105と、加算器106〜108と、除算器109、110とを有する。
また、本実施形態では、水平方向処理部101−1〜101−3のそれぞれは、例えば、要素発生器201、定数発生器202、フリップフロップ203、加算器204、及びセレクタ205を有する。ここで、第1の水平方向処理部101−1は、逆行列の行列要素aと変換後の射影変換画像に関する水平方向の座標要素であるuとの乗算式a×uの値を出力する。また、同様に、第2の水平方向処理部101−2は乗算式d×uの値を、そして第3の水平方向処理部101−3は乗算式g×uの値を、それぞれ出力する。
また、垂直方向処理部102−1〜102−3のそれぞれは、例えば、要素発生器301、定数発生器302、フリップフロップ303、加算器304、及びセレクタ305を有する。ここで、第1の垂直方向処理部102−1は逆行列の行列要素bと変換後の射影変換画像に関する垂直方向の座標要素であるvとの乗算式b×vの値を出力する。また、同様に、第2の垂直方向処理部102−2は乗算式e×vの値を、そして第3の垂直方向処理部102−3は乗算式h×vの値を、それぞれ出力する。
第1の水平方向処理部101−1の要素発生器201と、第1の垂直方向処理部102−1の要素発生器301と、要素発生器103とは、それぞれ逆行列の第1行の行列要素であるa、b及びcを出力する。第2の水平方向処理部101−2の要素発生器201と、第2の垂直方向処理部102−2の要素発生器301と、要素発生器104とは、それぞれ、逆行列の第2行の行列要素であるd、e及びfを出力する。そして、第3の水平方向処理部101−3の要素発生器201と、第3の垂直方向処理部102−3の要素発生器301と、定数発生器105とは、それぞれ、逆行列の第3行の行列要素であるg、h及び定数「1」を出力する。各要素a〜hの値は、1画像に対して1回の射影変換をするために座標値を算出している間は変更されない。それ以外の期間には、異なる射影変換結果を得るために、値を変更してもよい。
定数発生器202及び302は、固定値0を出力する。なお、これらの固定値は、それぞれ、変換後の射影変換画像の座標値の水平成分u及び垂直成分vの最小値に該当する。しかしながら、射影変換画像の一部の範囲についての座標値を得たい場合は、その一部の範囲における水平成分及び垂直成分の最小値を初期座標として、その座標要素に対して行列要素を乗じた値を固定値としてもよい。また、例えば、所定の範囲の変換後の座標を得たい場合、その所定の範囲を含む最小の領域の最も左かつ最も右の座標の座標要素と逆行列の行列成分との乗算結果を初期値として、定数発生器202及び302に保持させてもよい。なお、u=0の場合は、例えばa×uも0となるため、第1の水平方向処理部101−1の出力も0となる。このため、定数発生器202は、初期値として0を保持する。他の水平方向処理部101−2、101−3や垂直方向処理部102−1〜102−3についても同様である。
フリップフロップ203は、不図示のクロック源が供給する動作クロックによって入力を1サイクル遅延して、(要素発生器201の出力値)×uの値を出力する。同様に、フリップフロップ303は、不図示のクロック源が供給する動作クロックによって入力を1サイクル遅延して、(要素発生器301の出力値)×vの値を出力する。加算器204はフリップフロップ203の出力値と要素発生器201の出力値とを加算して出力する。加算器304はフリップフロップ303の出力値と要素発生器301の出力値を加算して出力する。
セレクタ205及びセレクタ305は、制御部14からの信号に基づいて、それぞれフリップフロップ203及び303に出力する値を選択する。なお、水平方向処理部101−1〜101−3のセレクタ205へは、先のクロックにおけるフリップフロップ203の出力値と、その出力値に要素発生器201の値を加えた値と、定数発生器202の出力値とが入力される。同様に、垂直方向処理部102−1〜102−3のセレクタ305へは、先のクロックにおけるフリップフロップ303の出力値と、その出力値に要素発生器301の値を加えた値と、定数発生器302の出力値とが入力される。
加算器106は、水平方向処理部101−1のフリップフロップ203、垂直方向処理部102−1のフリップフロップ303、要素発生器103の出力値を加算して出力する。ここで、加算器106の出力値は式(2)におけるxを求める式の分子に該当する。加算器107は、水平方向処理部101−2のフリップフロップ203、垂直方向処理部102−2のフリップフロップ303、要素発生器104の出力値を加算して出力する。ここで、加算器107の出力値は式(2)のyを求める式の分子に該当する。加算器108は、水平方向処理部101−3のフリップフロップ203、垂直方向処理部102−3のフリップフロップ303、定数発生器105の出力値を加算して出力する。加算器108の出力値は、式(2)のx及びyを求める両式の分母に該当する。
除算器109は、加算器106の出力値を分子、加算器108の出力値を分母として除算し、式(2)のxを特定して出力する。除算器110は、加算器107の出力値を分子、加算器108の出力値を分母として除算し、式(2)のyを特定して出力する。
(逆射影変換部の動作)
本実施形態では、水平方向処理部101−1〜101−3は、ある座標Pの右に隣接する座標の座標要素と逆行列の行列要素との乗算結果を、座標Pに関する座標要素と行列要素との乗算結果に行列要素を加算して算出する手段である。すなわち、座標要素uが1増加することに応じて、その増加前の乗算結果に対して行列要素を加算して、座標要素と行列要素との積を算出する。同様に、垂直方向処理部102−1〜102−3は、ある座標Qの下に隣接する座標の座標要素と逆行列の行列要素との乗算結果を、座標Qに関する座標要素と行列要素との乗算結果に行列要素を加算して算出する手段である。また、初期値として、所定の座標要素と逆行列の行列要素との乗算結果を与えることにより、その所定の座標要素に隣接する座標から順に、加算処理によって座標要素と行列要素との乗算結果を得ることが可能となる。
例えば、水平方向の所定の座標要素をu=0とすると、行列要素aとの乗算結果として、a×uは初期的に0が出力される。そして、その右隣の座標は、所定の座標要素からuを1増加させたものであるところ、a×uの結果は先の計算結果「0」に行列要素aを加算したaが乗算結果として出力される。そして、さらにuが1増加するとa×uは先の演算による乗算結果である「a」に行列要素「a」を加算した2aとして出力される。このように、隣接する座標に関して先に得られた乗算結果を利用して行列要素を加算していくことにより、乗算処理を加算処理で置き換えることができる。その結果、演算量を削減でき、演算時間を短縮することが可能となる。以下、逆射影変換部11の各部の詳細動作を図5に基づいて説明する。
図5は、本実施形態に係る逆射影変換部11の水平方向処理部と垂直方向処理部とにおける制御動作を示すフローチャートである。逆射影変換部11では、制御部14からの水平カウント値と垂直カウント値とにより、セレクタ205及びセレクタ305が制御される。水平カウント値は0を初期値としてセレクタ205による加算器204選択に合わせて1増加し、H−1までカウントした後に再度0に初期化される。垂直カウント値は0を初期値としてセレクタ305による加算器304選択に合わせて1増加し、V−1までカウントした後に再度0に初期化される。
そして、水平方向処理部101−1〜101−3のそれぞれのセレクタ205は、対応するフリップフロップ203がそれぞれ乗算式a×u、d×u、g×uの値をラスタースキャン順に出力するように動作する。また、垂直方向処理部102−1〜102−3のそれぞれのセレクタ305は、対応するフリップフロップ303がそれぞれ乗算式b×v、e×v、h×vの値をラスタースキャン順に出力するように動作する。以下では、主として第1の水平方向処理部101−1及び第1の垂直方向処理部102−1について詳細に説明するが、他の水平方向処理部101−2並びに101−3、及び垂直方向処理部102−2並びに102−3についても同様に動作する。
処理開始時にセレクタ205は定数発生器202の出力を選択して、定数、すなわち、「0」をフリップフロップ203に入力する(S101)。定数発生器202の出力値は、u=0とする時の値a×u、d×u及びg×uに等しく、0である。同時に、セレクタ305は定数発生器302の出力を選択して、定数、すなわち、「0」をフリップフロップ303に入力する。定数発生器302の出力値は、v=0とする時の値b×v、e×v、h×vに等しく、0である。なお、水平カウント値と垂直カウント値は0に初期化される。そして、フリップフロップ203及び303は、それぞれ定数発生器202及び302の出力値である「0」を出力する(S102)。
なお、S102におけるフリップフロップ203及び303による値の出力は、実際には、S101の処理の次のサイクルで実行される。また、S102の出力は、S103とS105の処理と同一サイクルで実行される。すなわち、図面では説明の簡単のため、S102の後にS103が実行されるが、実際には、これらの処理は同一サイクルで行われる。そして、S102の出力と同一サイクルで、その次のサイクルでフリップフロップ203及び303が出力すべき値が、セレクタ205及び305によって選択される。
続いて、水平カウント値が「H−1」であるかを判定する(S103)。すなわち、フリップフロップ203への値の入力が、射影変換後の水平画素数分だけ行われたかを判定する。水平カウント値がH−1でない場合(S103でNo)、次サイクルにおいてセレクタ205は加算器204の出力を選択する(S105)。
加算器204は、現在のクロックにおけるフリップフロップ203の出力に、要素発生器201の出力が加算された値を出力する。すなわち、現時点においてフリップフロップ203から0が出力されている場合、その値(0)に要素発生器201の出力であるaを加算した値である「a」が加算器204から出力される。同様に、現時点において、a×u=a×Nがフリップフロップ203から出力されている場合は、その値にaを加算した、a×N+a=a×(N+1)が加算器204から出力される。このように、加算器204は、乗算式a×uにおいてuを1増加させた時の値を出力する。したがって、セレクタ205は、加算器204の出力であるa×(u+1)をフリップフロップ203に出力し(S105)、フリップフロップ203はその値を出力する(S106)。一方、セレクタ305はフリップフロップ303の出力を選択し(S105)、フィードバックループを構成する。そして、フリップフロップ303は先に出力した値を再度出力する(S106)。なお、ここで水平カウント値を1増加させる(S105)。以後、射影変換後の水平画素数分のフリップフロップへの入力が完了して、水平カウント値がH−1となる(S103でYesとなる)まで、S105及びS106の処理を繰り返す。
なお、上述の説明では、理解の促進のため、S105でセレクタ205及び305が出力した値を、S106でフリップフロップ203及び303が出力し、その後S103の判定を行うとしたが、実際は、S106の出力は次のサイクルで行われる。すなわち、S105でセレクタ205及び305がそれぞれ出力した値は、次のサイクルにおいて、フリップフロップ203及び303から出力される。そして、その出力と並行して、S103の判定とS105の出力とが行われ、さらに次のサイクルでフリップフロップ203及び303から出力されるべき値を、フリップフロップ203及び303へ出力する動作が行われる。また、S103でYesとなる場合は、S104やS107の処理が、S106と同サイクルで行われる。
水平カウント値がH−1となると(S103でYes)、射影変換画像の1行分に対応するa×u及びb×vの値がフリップフロップ203及び303へ入力されたこととなる。そこで、続いて、垂直カウント値がV−1であるかが判定される(S104)。ここでは、S103、及びS105において処理された行が、射影変換画像の最下行であるか、すなわち、全ての画素について、対応するa×u及びb×vの値がフリップフロップ203及び303へ入力されたかを判定する。
垂直カウントがV−1でない場合(S104でNo)、次サイクルで、セレクタ205は再び定数発生器202の出力を選択して、u=0とする時のa×0、d×0、g×0の値、すなわち「0」をフリップフロップ203に入力する(S107)。これと同時に、セレクタ305は加算器304の出力を選択して、次ラインの処理で使用する乗算式b×v、e×v、h×vのvを1増加させた時の値をフリップフロップ303に入力する。ここで、加算器304は、加算器204と同様に動作し、現在のクロックでb×v=b×Mである場合は、その値に要素発生器301からの出力であるbを加算した、b×M+b=b×(M+1)を出力する。すなわち、加算器304は、乗算式b×vにおいてvを1増加させた時の値を出力する。したがって、セレクタ305は、加算器304の出力であるb×(v+1)をフリップフロップ303に出力し(S107)、フリップフロップ303は、その値を出力する(S108)。また、ここで水平カウント値は0に初期化され、垂直カウント値は1増加する(S107)。なお、S106の場合と同様に、S108でフリップフロップ203及び303が出力し、その後S103の判定を行うとしたが、実際は、S108の出力は次のサイクルで行われる。
以後、垂直カウント値がV−1となる(S104でYesとなる)まで、S103〜S108の処理を繰り返す。垂直カウント値がV−1となった(S104でYesとなった)場合、射影変換画像の全座標に対応するa×u及びb×vの値がフリップフロップ203及び303へ入力されたこととなる。この場合は、処理をS101に戻して、次の画像の処理を行う。
なお、除算器109、110や画像取得部12、補間処理部13の処理が1サイクルで完了しない時は、前述の条件に関係なく、セレクタ205及び305はそれぞれフリップフロップ203及び303の出力を選択し、フィードバックループを構成してもよい。これにより、フリップフロップ203及び303には、前サイクルと同じ値が保持される。
以上のように、水平方向処理部101−1〜101−3のフリップフロップ203はそれぞれ、乗算式a×u、d×u、g×uの値をラスタースキャン順に出力する。同様に垂直方向処理部102−1〜102−3のフリップフロップ303はそれぞれ、乗算式b×v、e×v、h×vの値をラスタースキャン順に出力する。フリップフロップ203及び303の出力値は、上述のとおり加算器106〜108、除算器109及び110に入力され、それぞれの演算が行われる。そして、これらの動作により、座標値(u,v)について、(0,0)から(H−1,V−1)まで、対応する変換対象画像の座標値(x,y)が順に算出される。このように、本実施形態の構成により、任意のパラメータで射影変換を行う際に、複数の乗算器を並列化して配置したハードウェアが不要となり、回路規模を削減できる。
なお、本実施形態は、ある座標値に対する変換対象画像の座標値の算出で得られた乗算結果に逆行列の行列要素の値を加算して、隣接する座標値に対する変換対象画像の座標値を算出するものである。したがって、どのような順序で処理を行うかは問題ではない。すなわち、上述の実施形態では、射影変換画像の行方向へ処理を進めるように説明したが、列方向へ処理を進め、1列分のフリップフロップ203及び303への入力が完了したら、次の列についての処理を行うようにしてもよい。この場合、例えば、上述の処理においてuとvとを交換し、uを固定すると共にvを0からV−1まで増加させてxとyを算出し、垂直カウント値がV−1となったら、uを1増加させて次の列の処理を行うようする。
また、処理を右側や下側の画素から開始してもよい。右側から左側へ処理を進める場合は、要素発生器201は「−a」を保持してもよいし、それに代えて、加算器204において減算処理をするようにしてもよい。同様に、処理を下側から上側へ進める場合は、要素発生器301は「−b」を保持してもよいし、それに代えて、加算器304において減算処理をするようにしてもよい。すなわち、加算器204及び304は、それぞれ、初期座標として与えられる座標の位置または処理を進める順序に応じて加減算を実行可能な加減算器であってもよい。また、初期座標として水平方向及び垂直方向について所定の座標要素を与えると共に乗算結果の初期値としてその座標要素と逆行列の行列要素との乗算結果を与え、その初期座標に隣接する座標から順に乗算結果を出力してもよい。この場合、加算器204及び304に代えて加減算器を用い、左または上の隣接座標に対しては行列要素の減算を、右または下の隣接座標については行列要素の加算を行うようにしてもよい。
なお、上述の画像処理装置1では、逆行列の要素a〜hが複数の要素発生器により出力されるとしたが、画像の回転など、特定の変換行列による射影変換に用いる場合は、逆行列の要素の一部または全部を定数発生器が出力する構成にしてもよい。また、上述の説明では、3つの水平方向処理部101−1〜101−3が、それぞれ別個に乗算結果を出力するとしたが、2つの水平方向処理部が常に同じ値を出力する場合は、その2つを1つにまとめてもよい。すなわち、画像処理装置1は少なくとも1つの水平方向処理部を有していればよい。垂直方向処理部についても同様である。また、乗算式a×u、d×u、g×uの値のいずれかの値が常に定数である場合は、その乗算式に対応する水平方向処理部をその定数を出力する定数発生器に置き換えてもよい。垂直方向処理部についても同様である。また、画像処理装置1の補間処理部13で行う補間処理は、バイリニア補間で説明したが、バイキュービック補間などの他の方式を用いても構成してもよい。
<<実施形態2>>
本実施形態では、逆射影変換部11は、射影変換画像をブロック単位に分割して、そのブロック中の座標値(u,v)をラスタースキャン順に式(2)へ代入して、対応する出力座標値(x,y)を算出する。以下の説明では、実施形態1と異なる部分に焦点を当てて説明を行うものとし、画像取得部12、補間処理部13、制御部14の構成及び動作など、実施形態1と同様の構成や動作については説明を省略する。また、以下の説明では、実施形態1と同様に、射影変換後の画素数から、水平方向の座標要素uの最小値は0で最大値はH−1であり、垂直方向の座標要素vの最小値は0で最大値はV−1であるとする。
図6に、横軸をu、縦軸をvとした場合のブロックへの分割の例を示す。また、図7に、各ブロック内での座標値(u,v)の式(2)への詳細な代入順序を示す。なお、ここでは、1ブロックの画素数は、例えば、右端と下端を除いて水平方向と垂直方向が両方とも底が2で指数が自然数の累乗の数であるものとし、水平方向の画素数を2N、垂直方向の画素数を2Mとする。また、指数NとMは0以上の整数値で任意に決定できるものとし、1画像の処理中での変更はされないものとする。なお、右端のブロックの水平画素数は、剰余(H mod 2N)が0でない場合はその値に等しく、剰余が0である場合は2Nであるものとする。同様に、下端のブロックの垂直画素数は、剰余(V mod 2M)が0でない場合はその値に等しく、剰余が0である場合は2Mであるものとする。
図6において、BHは、水平方向のブロック位置を指定する0以上の整数値であり、最小値が0で、最大値がBHmaxである。BHmaxはH÷2N−1以上の最小の整数である。同様に、BVは垂直方向のブロック位置を指定する0以上の整数値であり、最小値が0で、最大値がBVmaxである。また、BVmaxはV÷2M−1以上の最小の整数である。
本実施形態では、BH=0、BV=0のブロックから処理を開始して、1ブロックの処理が完了すると順に右隣のブロックの処理へ進む。BH=BHmaxのブロックの処理を完了すると、BVを1増加するとともに、BHを0に戻して、次のブロックの行へ処理を進める。以後、BH=BHmax、BV=BVmaxのブロックまで順に処理を行う。なお、処理を行う順序は一例であり、1ブロックの処理が完了後に下隣のブロックを処理してもよいし、また、処理を下側や右側のブロックから始めてもよい。
ここで、図7に示すように、単一ブロック内のuの最小座標値をUmin、最大座標値をUmax、vの最小座標値をVmin、最大座標値をVmaxとする。右端のブロックを除き、Umin=2N×BH、Umax=2N×(BH+1)−1である。また、同様に、下端のブロックを除き、Vmin=2M×BV、Vmax=2M×(BV+1)−1である。なお、右端ブロックではUmax=H−1、下端ブロックではVmax=V−1となる。
各ブロック内の処理は、左上端の座標値BS=(u,v)=(Umin,Vmin)に対応する座標値(x,y)から算出を開始する。以降、uを1ずつ増加させながら水平方向に座標値(u,v)=(Umax,Vmin)まで、ブロックの1行分の対応する座標値(x,y)を順に算出する。次に、uをUminに戻した上でvを1増加させる。そして、その座標値(Umin,Vmin+1)から(Umax,Vmin+1)までの、次の1行分に対応する変換対象画像の座標値(x,y)を算出する。以降、右下端の座標値BE=(u,v)=(Umax,Vmax)に対応する座標値(x,y)を算出するまで、この処理を繰り返す。ここでの動作は、射影変換画像全体にではなく、射影変換画像を分割したブロックに対して処理を施す以外は、実施形態1と同様である。
(逆射影変換部の構成)
図8は、逆射影変換部11の内部構成を示している。実施形態1と同じ機能を有するブロックは同じ番号を付し、説明を省略する。本実施形態の逆射影変換部11においては、水平方向処理部101−1〜101−3のそれぞれは、実施形態1の構成に加えて、さらに、シフト器206、第2のフリップフロップ207、第2の加算器208、及び第2のセレクタ209を有する。同様に、垂直方向処理部102−1〜102−3のそれぞれは、さらに、シフト器306、第2のフリップフロップ307、第2の加算器308、第2のセレクタ309を有する。
第2のフリップフロップ207及び307は、不図示のクロック源が供給する動作クロックによって入力を1サイクル遅延して、シフト器206及び306にそれぞれ出力する。水平方向処理部のシフト器206は算術シフト演算器であり、入力値をNビット左にシフトした値を第1のセレクタ205に出力する。一方、垂直方向処理部のシフト器306は算術シフト演算器であり、入力値をMビット左にシフトした値を第1のセレクタ305に出力する。第2の加算器208及び308は、それぞれ、第2のフリップフロップ207の出力値と要素発生器201の出力値との加算結果、及び第2のフリップフロップ307の出力値と要素発生器301の出力値との加算結果を出力する。第2のセレクタ209及び309は、制御部14からの信号に基づいて、それぞれ第2のフリップフロップ207及び307に出力する値を選択する。
(逆射影変換部の処理)
以下、逆射影変換部11の各部の詳細動作を図9と図10を用いて説明する。図9及び図10は、本実施形態に係る逆射影変換部11の水平方向処理部と垂直方向処理部とにおける制御動作を示すフローチャートである。なお、以下では、第1の水平方向処理部101−1及び第1の垂直方向処理部102−1について説明するが、他の水平方向処理部及び他の垂直方向処理部についても同様の動作が行われるものとする。
逆射影変換部11では、実施形態1と同様に、制御部14からの水平カウント値と垂直カウント値とにより、第1のセレクタ205並びに305及び第2のセレクタ209並びに309が制御される。また、第2のセレクタ209及び309は、ブロック位置に関する水平方向ブロックカウンタBHCと垂直方向ブロックカウンタBVCとによっても制御される。
なお、水平カウント値は、Uminを初期値とし、第1のセレクタ205が第1の加算器204の出力を選択すると1増加し、Umaxまでカウントした後にUminに初期化される。また、垂直カウント値は、Vminを初期値とし、第1のセレクタ305が第1の加算器304の出力を選択すると1増加し、Vmaxまでカウントした後にVminに初期化される。すなわち、Umax及びVmaxは、それぞれ水平カウント値及び垂直カウント値の初期化条件である。また、前述のとおり、Umin=2N×BH、Umax=2N×(BH+1)−1である。同様に、Vmin=2M×BV、Vmax=2M×(BV+1)−1である。このため、カウント値の初期値及び初期化条件は、ブロック位置を指定する値であるBH又はBVが1増加するごとに、元の初期値及び初期化条件に2N又は2Mだけ加算することで簡単に求めることができる。なお、右から左へ処理を進める場合や、下から上へ処理を進める場合は、それぞれ2N又は2Mだけ減算することとなる。
本実施形態では、シフト器206及び306により、第2のフリップフロップ207及び307からの出力をビットシフトすることで、各ブロックの左上端の座標に対する(x,y)の値を求め、それをブロックにおける出力の初期値として設定する。例えば、以下のようにする。各ブロックの左上端の座標は上述の通り、(Umin,Vmin)=(2N×BH,2M×BV)である。そして、a×BH×2Nはa×BHをNビットシフトした値である。したがって、第2のフリップフロップ207の出力値がa×BHであるように第2の加算器208と第2のセレクタ209とを制御することにより、シフト器206は、各ブロックの左端の座標uに対する計算式a×uの結果を出力することとなる。同様に、垂直方向処理部102−1における第2のフリップフロップ307の出力値がb×BVとなるようにすることで、シフト器306は、各ブロックの上端の座標vに対する計算式b×vの結果を出力することとなる。以下、詳細な動作について説明する。
図9のフローは、基本的には図5のフローと同様である。ただし、上述の通り、水平カウント値及び垂直カウント値の初期値と初期化条件とが異なる。そして、水平カウント値及び垂直カウント値のいずれかが初期値である場合に、第1のセレクタ205又は305が選択するのが、定数発生器202又は302でなく、シフト器206又は306であることが異なる。
すなわち、各ブロックの処理開始時に、第1のセレクタ205はシフト器206の出力を選択する(S201)ことにより、出力の初期値を設定する。また、第1のセレクタ305も同様に、シフト器306の出力を選択する。そして、第1のフリップフロップ203及び303は、シフト器206及び306の出力値を保持し、出力する(S202)。このとき、シフト器206は、上述の通り、a×BH×2N=a×Uminの値を出力する。この値は、u=BH×2N、すなわち、各ブロックの左端の座標に対応するa×uの値である。同様に、シフト器306は、ブロックの上端の座標に対応するb×vの値、すなわち、b×BV×2Mを出力する。なお、BH及びBVの初期値は例えば0であり、この場合には、第2のフリップフロップ207及び307が保持する値が0であるため、シフト器206及び306は「0」を出力する。
そして、シフト器206から出力された値を出力の初期値として、水平方向に座標値が1増加するごとに、第1のセレクタ205は、第1の加算器204により先の出力値にaが加算された値を選択する(S205)。そして、第1のフリップフロップ203は、先の出力値にaが加算された値を出力する(S206)。そして、水平カウント値がUmaxとなると(S203でYes)、垂直カウント値がVmaxであるかを判定する(S204)。垂直カウント値がVmaxでない場合(S204でNo)、水平カウント値を初期値Uminへ初期化する(S207)。そして、第1のセレクタ205はシフト器206を選択し、このブロックにおける水平方向の出力の初期値2N×BHを第1のフリップフロップ203へ入力する(S207)。また、第1のフリップフロップ203は、シフト器206から出力された値、すなわちa×Uminを出力する(S208)。また、垂直カウント値を1つ増加させ、第1のセレクタ305は、第1の加算器304により先の出力値にbが加算された値を選択する(S207)。そして、第1のフリップフロップ303は、先の出力値にbが加算された値を出力する(S208)。そして、ブロック内の次の行に対してS205及びS206の処理を繰り返す。その後、垂直カウント値がVmaxとなると(S204でYes)、ブロック内の全ての座標について第1のフリップフロップ203及び303への入力が完了したと判断し、次のブロック又は次の画像に対して同様の処理を繰り返す。
なお、S202、S206及びS208における第1のフリップフロップ203及び303による値の出力は、実際には、それぞれ、S201、S205及びS207を実行したサイクルの次のサイクルで実行される。また、S202、S206及びS208の出力は、S203からS205及びS207の処理と同一サイクルで実行される。すなわち、図面では説明の簡単のため、S202、S206及びS208の後にS203が実行されるが、実際には、S202、S206及びS208とS203との処理は同一サイクルにおいて実行される。すなわち、S202、S206及びS208の出力と同一サイクルにおいて、第1のセレクタ205及び305は、その次のサイクルで第1のフリップフロップ203及び303が出力すべき値の選択を実行する。
続いて、シフト器206及び306から出力される値の生成動作について、図10を用いて説明する。シフト器206及び306がそれぞれ出力する値は、ブロックの左上端の座標値(Umin,Vmin)に対する出力値である。すなわち、シフト器206及び306は、a×Umin及びb×Vminを出力する。
各ブロックにおいて、Umin=2N×BHであり、a×Uminは、計算式a×BH×2Nで求めることができる。この計算結果は、行列要素aに水平方向のブロック位置を指定する0以上の整数であるBHを乗じた値を、Nビット左にシフトすることにより得られる。また、a×BHは、0にaをBH回加算した結果として得られる。また、同様に、b×Vminは、計算式b×BV×2Mで求めることができる。これは、0にbをBV回加算した結果をMビット左にシフトすることにより得られる。
このため、第2のセレクタ209は、第2のフリップフロップ207がa×BHの値を水平方向のブロック位置を指定する整数BHに応じて出力するように動作する。この出力値をNビット左にシフトした値が、ブロック内の各行の左端におけるa×Uminが得られる。同様に、第2のセレクタ309は、第2のフリップフロップ307がb×BVの値を垂直方向のブロック位置を指定する整数BVに応じて出力するように動作する。そして、この出力をMビット左にシフトすることで、各ブロックの上端におけるb×Vminが得られる。
なお、第2のセレクタ209及び309は、例えば、制御部14からの水平カウント値と垂直カウント値とブロック位置とに基づいて制御される。ここで、以下の説明では、ブロック位置を特定するために、水平方向ブロックカウンタBHCと垂直方向ブロックカウンタBVCとを用いるものとするが、これ以外の方法でブロック位置を特定してもよい。例えば、ブロックの水平方向における初期化条件であるUmaxがH−1であるかによって、処理中のブロックが最も右にあるブロックであるかを特定してもよい。同様に、ブロックの垂直方向における初期化条件であるVmaxがV−1であるかによって、処理中のブロックが最も下にあるブロックであるかを特定してもよい。また、これらにより、UmaxがH−1であって、VmaxがV−1である場合に、1つの画像に対して処理すべき最後のブロックを特定してもよい。このようにしてブロック位置を特定する場合は、以下の説明におけるBHC及びBVCを用いる必要はない。
まず、第2のセレクタ209は、先頭ブロックの処理開始前に、定数発生器202の出力を選択してBH=0に対応するa×0=0を第2のフリップフロップ207に入力する(S301)。そして、第2のフリップフロップ207は0を出力する(S302)。同様に、第2のセレクタ309も、定数発生器302の出力を選択して「0」を第2のフリップフロップ307へ出力し(S301)、第2のフリップフロップ307も0を出力する(S302)。このとき、シフト器206及び306が出力する値も共に0となる。1サイクル後には、シフト器206は最小座標値u=0とする時のa×0=0を、シフト器306は最小座標値v=0とする時のb×0=0を、それぞれ出力する状態となる。また、水平方向ブロックカウンタBHC及び垂直方向ブロックカウンタBVCを0に初期化する(S301)。
続いて、垂直カウント値がVmaxであるかを判定する(S303)。垂直カウント値がVmaxでない場合(S303でNo)、第2のセレクタ209及び309とは、それぞれ第2のフリップフロップ207及び307の出力を選択する(S306)。すなわち、第2のフリップフロップ207及び307は、共に、前のサイクルと同じ値を維持する(S307)。
垂直カウント値がVmaxである場合(S303でYes)、現在処理中のブロックについて、最終行の処理を開始していることとなる。このため、第1のセレクタ205は、シフト器206が出力する値をすでに参照しており(図9のS207)、次のブロックの処理に移るまで(図9においてS201に移行するまで)シフト器206が出力する値を参照することはない。同様に、第1のセレクタ305はシフト器306が出力する値を次のブロックの処理に移るまで参照することはない。したがって、この時点において、シフト器206及び306が出力する値の更新を行う。
更新においては、まず、現在処理中のブロックが水平方向において最も右のブロックであるか、すなわちBHCがBHmaxであるかを判定する(S304)。BHCがBHmaxでない場合(S304でNo)、次に処理を行うブロックは処理中のブロックの右隣のブロックである。
このため、第2のセレクタ209は第2の加算器208の出力を選択し、その値を第2のフリップフロップ207に出力する(S308)。また、水平方向ブロックカウンタBHCに1を加える。ここで、第2の加算器208では、要素発生器201の出力値を第2のフリップフロップ207の出力値に加算する。このため、現在の第2のフリップフロップ207の出力値がa×BHである場合、a×BH+a=a×(BH+1)となり、BHを1増加させた時のa×BHの値が出力される。一方、次に処理を行うブロックは処理中のブロックの右隣のブロックであるため、垂直方向におけるブロック位置は変動しない。このため、第2のセレクタ309は、第2のフリップフロップ307の出力を選択し、フィードバックループを構成する(S308)。そして、第2のフリップフロップ207は第2の加算器208からの値を、第2のフリップフロップ307は前のサイクルと同じ値を、それぞれシフト器206及び306へ出力する(S309)。以後、BHCがBHmaxとなるまで(S304でYesとなるまで)、上述の処理を繰り返す。なお、上述の通り、S304の処理において、BHCを用いずに、UmaxがH−1であるかを判定するようにしてもよい。
BHCがBHmaxである場合(S304でYes)、続いて、BVCがBVmaxであるかを判定する(S305)。BVCがBVmaxでない場合(S307でNo)、次に処理するブロックは、現在処理中のブロックより1行下の左端のブロックである。
このため、第2のセレクタ209は、定数発生器202の出力を選択して、BH=0とする時のa×0=0を第2のフリップフロップ207に入力する(S310)。これによって右端のブロックから左端のブロックの処理へ移行する。同時に、水平方向ブロックカウンタBHCの値を0に初期化する(S310)。一方、第2のセレクタ309は第2の加算器308の出力を選択して、その値を第2のフリップフロップ307へ出力し、垂直方向ブロックカウンタBVCに1を加える(S310)。ここで、第2の加算器308では、要素発生器301の出力値を第2のフリップフロップ307の出力値に加算する。このため、例えば第2のフリップフロップ307の出力値がb×BVである場合、b×BV+b=b×(BV+1)となり、BVを1増加させた時のb×BVの値が出力される。第2のフリップフロップ207及び307は、定数発生器202の出力値と第2の加算器308の出力値とをそれぞれ出力する(S311)。以後、BVCがBVmaxとなるまで(S305でYesとなるまで)、上述の処理が繰り返される。そして、BVCがBVmaxである場合(S305でYes)、1画像分の全ブロックについて、第1のセレクタ205及び305がそれぞれシフト器206及び306の出力の選択を完了していると判定できる。このため、S301に戻り、次の画像の処理を待ち受ける。なお、上述の通り、S305の処理において、BVCを用いずに、VmaxがV−1であるかを判定するようにしてもよい。
なお、S302、S307、S309及びS311における第2のフリップフロップ207及び307による値の出力は、実際には、それぞれ、S301、S306、S308及びS310を実行したサイクルの次のサイクルで実行される。また、S302、S307、S309及びS311の出力は、S303からS306、S308及びS310の処理と同一サイクルで実行される。すなわち、図面では説明の簡単のため、S302、S307、S309及びS311の後にS303が実行されるが、実際には、S302、S307、S309及びS311と、S303との処理は同一サイクルにおいて実行される。すなわち、S302、S307、S309及びS311の出力と同一サイクルにおいて、第2のセレクタ209及び309は、その次のサイクルで第2のフリップフロップ207及び307が出力すべき値の選択を実行する。
以上のようにして、水平方向処理部101−1〜101−3の第1のフリップフロップ203は、ブロック単位で、各ブロック内をラスタースキャン順に、それぞれ、乗算式a×u、d×u、g×uの値を出力する。同様に、垂直方向処理部102−1〜102−3の第1のフリップフロップ303は、ブロック単位で、各ブロック内をラスタースキャン順に、それぞれ、乗算式b×v、e×v、h×vの値を出力する。本実施形態によれば、射影変換画像をブロック単位で出力することができるため、後段の画像符号化処理部との間のバッファメモリを削減することが可能となる。
なお、上述の説明では、定数発生器202及び302は、共に0を出力したが、これは、最も左上のブロックから処理を開始するためにそうしたものであり、これに限られない。例えば、最も左上のブロック以外の所定のブロックから処理を開始する場合は、定数発生器202及び302は、そのブロックを指定する整数BH及びBVに、それぞれ逆行列の行列要素を乗じた値を保持してもよい。そして、第2の加算器208及び308は、右隣又は下隣のブロックの処理を行う場合は、その値に行列要素を加算し、左隣又は上隣のブロックの処理を行う場合は、その値から行列要素を減算する加減算器であってもよい。
また、上述の説明では、水平方向及び垂直方向の両方において画像を分割したが、片方だけであってもよい。すなわち、水平方向のみ画像を分割してBVは常に0であってもよいし、垂直方向のみ画像を分割してBHが常に0であってもよい。このように、ブロックへの分割は自在に行うことができ、後に続く処理に応じて変更されてもよい。
<<実施形態3>>
図11は本実施形態に係る画像処理装置の構成を示すブロック図である。図12は本実施形態に係る画像処理装置の画像変換の一例である。画像処理装置1は、変換対象画像を非線形変換した非線形変換画像上の、任意の四辺形部分(網掛け部)の4頂点を長方形の4頂点に一致するように正則行列である変換行列によって変換して変換画像を生成する。正則行列である変換行列による変換をその一例である射影変換として、変換画像を射影変換画像として、非線形変換をその一例であるレンズ歪補正として、非線形変換画像をレンズ歪補正画像として、以下説明する。レンズ歪補正とはレンズの光学特性によって生じる変換対象画像上のレンズ歪を除去する補正である。
画像処理装置1は、図1の構成に加えて、レンズ歪補正部15をさらに備える。ここで、画像処理装置1によって生成する射影変換画像の各画素の位置を座標値(u,v)で示し、中間段階であるレンズ歪補正画像の各画素の位置を座標値(x,y)で示す。なお、座標値(u,v)と座標値(x,y)は、実施形態1及び2における、射影変換後の画像における第2の座標値と、変換前の画像における第1の座標値にそれぞれ対応する。そして、本実施形態では、第1の座標値を得るための非線形変換前の画像である変換対象画像についての各画素の位置である、第3の座標値(xd,yd)を取り扱う。すなわち、第2の座標値から第1の座標値を求め、第1の座標値から第3の座標値を取得する。これにより、第3の座標値と第2の座標値との関連付けが行われる。そして、この第3の座標値と非線形変換前の画像とから、補間に必要な画素値を抽出し、変換後の画素値を算出して出力する。
本実施形態においても、射影変換画像の画素数を水平方向にH画素とし、垂直方向にV画素とする。また、逆射影変換部11、補間処理部13の構成及び動作は、実施形態1又は実施形態2と同じであるため説明を省略する。
画像取得部12は、レンズ歪補正部15が算出する第3の座標値(xd,yd)を元に、変換対象画像を保存している不図示のメモリに対してアドレスを発行して、画像データを読み出す。制御部14は、各機能部の状態を表す状態信号を受信して、各機能部を制御する制御信号を生成する。
レンズ歪補正部15は、レンズ歪補正画像の第1の座標値(x,y)上の画素を生成するために必要な変換対象画像上の画素の位置を示す第3の座標値(xd,yd)を出力する。ここで、図13にレンズ歪補正での変換処理の詳細を示す。レンズの光学特性によって生じるレンズ歪がない場合は、図13のレンズ歪補正画像が撮影画像となる。距離rは第1の座標値(x,y)と中心画素との距離を示す。しかし、レンズ歪がある場合は、図13に示すように第1の座標値(x,y)に対応する第3の座標値(xd,yd)と中心画素との距離がr´に変わり、画像が歪む。以下の式(3)に、歪み係数をkとして、rとr´の関係を表す。
r´=k×r …(3)
なお、歪み係数kは中心画素との距離に応じて異なる。
このレンズ歪を除去するために、レンズ歪補正画像の中心座標値と第1の座標値(x,y)間の距離rに対応する距離r´から、第3の座標値(xd,yd)を算出する。例えば距離rと距離r´の関係、又は距離rと歪み係数kの関係をルックアップテーブルに予め登録しておき、これを参照して第3の座標値を取得する。
続いて、本実施形態における処理の流れを説明する。まず、逆射影変換部11は制御部14の制御に基づいて、射影変換画像の第2の座標値(u,v)に対する射影変換前の画像、すなわちレンズ歪補正画像における第1の座標値(x,y)を順次出力する。次に、レンズ歪補正部15は逆射影変換部11が出力する第1の座標値(x,y)を入力して、第3の座標値(xd,yd)を順次出力する。これにより、射影変換画像の第2の座標値(u,v)と、第3の座標値(xd,yd)とが関連付けられる。
画像取得部12は、この第3の座標値(xd,yd)に基づいて、補間処理部13で使用する画素データが保存されているメモリアドレスをメモリに送信して入力画像データを読み出す。そして、画像取得部12は、補間処理部13へ画素データを出力する。本実施形態ではバイリニア補間処理を行うため、座標値(xd,yd)周辺の4画素分の画素データを出力する。最後に、補間処理部13は、座標値(xd,yd)の小数部分と画素データとを用いてバイリニア補間処理を行う。この処理により、第2の座標値(u,v)における、射影変換画像の画素値が算出され、補間処理部13は、この射影変換画像を出力画像データとして出力する。
なお、本発明の画像処理装置1の非線形変換は、レンズ歪補正部15による変換で説明したが、他の非線形変換を用いる、または複数の非線形変換を逆射影変換部11と画像取得部12の間で行うように構成してもよい。
本実施形態によれば、非線形変換が含まれる画像処理に対しても、参照すべき座標を容易に求めることができる。また、射影変換について、乗算回数を少なく抑えることができるため、全体の処理にかかる時間を十分低く抑えることが可能となる。
<<その他の実施形態>>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (14)

  1. 変換対象画像を非線形変換画像に非線形変換、前記非線形変換画像を行列変換によって変換した画像である行列変換画像を出力する画像処理装置であって、
    加算または減算を行う演算手段と、
    前記行列変換画像の1つの画素の座標値に対応する前記非線形変換画像の座標値を前記演算手段の演算結果に基づいて特定する特定手段と、
    前記特定手段により特定された前記非線形変換画像の前記座標値に対応する前記変換対象画像の座標値を取得する取得手段と、
    前記行列変換画像の前記1つの画素の座標値に対応する前記変換対象画像の前記座標値に基づいて、前記変換対象画像を前記行列変換画像に変換する変換手段と、
    を有し、
    前記演算手段は、前記行列変換における変換行列の要素と前記演算結果を加算または減算する演算を繰り返すことにより、前記行列変換における変換行列の要素と前記行列変換画像の隣接する複数の画素の座標値の乗算結果順次出力し、
    前記特定手段は、前記行列変換画像の前記隣接する複数の画素の座標値に対応する前記非線形変換画像の複数の座標値を、前記演算手段により順次出力される前記乗算結果に基づいて特定し、
    前記取得手段は、前記特定手段により特定された前記非線形変換画像の前記複数の座標値に対応する前記変換対象画像の複数の座標値を取得し、
    前記変換手段は、前記行列変換画像の前記隣接する複数の画素の座標値に対応する前記変換対象画像の前記複数の座標値に基づいて、前記変換対象画像を前記行列変換画像に変換する、
    ことを特徴とする画像処理装置。
  2. 前記演算手段は、前記行列変換画像の所定の画素の座標値を保持し、前記所定の画素の座標値から順に、前記変換行列の要素と前記隣接する複数の画素の座標値の乗算結果を出力する、
    ことを特徴とする請求項1に記載の画像処理装置。
  3. 前記所定の画素の座標値は0である、
    ことを特徴とする請求項2に記載の画像処理装置。
  4. 前記行列変換画像の隣接する複数の画素についてラスタースキャン順に、前記変換行列の要素と前記隣接する複数の画素の座標値の乗算結果を順次出力する、
    ことを特徴とする請求項1から請求項3のいずれか1項に記載の画像処理装置。
  5. 前記取得手段は、前記非線形変換画像の前記座標値と、前記非線形変換画像の所定の位置との距離に基づいて、前記非線形変換画像の前記座標値に対応する前記変換対象画像の前記座標値を取得する、
    ことを特徴とする請求項1に記載の画像処理装置。
  6. レンズ歪みの補正のために前記非線形変換が行われる、
    ことを特徴とする請求項1に記載の画像処理装置。
  7. 前記非線形変換画像内の4つの頂点を前記行列変換画像の4つの頂点に変換するための行列変換を行う、
    ことを特徴とする請求項1に記載の画像処理装置。
  8. 変換対象画像を非線形変換画像に非線形変換、前記非線形変換画像を行列変換によって変換した画像である行列変換画像を出力する画像処理装置の画像処理方法であって、
    演算手段が、加算または減算を行う演算工程と、
    特定手段が、前記行列変換画像の1つの画素の座標値に対応する前記非線形変換画像の座標値を前記演算手段の演算結果に基づいて特定する特定工程と、
    取得手段が、前記特定工程で特定された前記非線形変換画像の前記座標値に対応する前記変換対象画像の座標値を取得する取得工程と、
    変換手段が、前記行列変換画像の前記1つの画素の座標値に対応する前記変換対象画像の前記座標値に基づいて、前記変換対象画像を前記行列変換画像に変換する変換工程と、
    を有し、
    前記演算工程では、前記行列変換における変換行列の要素と前記演算結果を加算または減算する演算を繰り返すことにより、前記行列変換における変換行列の要素と前記行列変換画像の隣接する複数の画素の座標値の乗算結果が順次出力され
    前記特定工程では、前記行列変換画像の前記隣接する複数の画素の座標値に対応する前記非線形変換画像の複数の座標値が、前記演算工程により順次出力される前記乗算結果に基づいて特定され、
    前記取得工程では、前記特定工程により特定された前記非線形変換画像の前記複数の座標値に対応する前記変換対象画像の複数の座標値が取得され、
    前記変換工程では、前記行列変換画像の前記隣接する複数の画素の座標値に対応する前記変換対象画像の前記複数の座標値に基づいて、前記変換対象画像が前記行列変換画像に変換される、
    ことを特徴とする画像処理装置の画像処理方法。
  9. 前記演算手段は、前記行列変換画像の所定の画素の座標値を保持し、前記演算工程では、前記所定の画素の座標値から順に、前記変換行列の要素と前記隣接する複数の画素の座標値の乗算結果を出力する、
    ことを特徴とする請求項8に記載の画像処理方法。
  10. 前記所定の画素の座標値は0である、
    ことを特徴とする請求項9に記載の画像処理方法。
  11. 前記演算工程では、前記行列変換画像の隣接する複数の画素についてラスタースキャン順に、前記変換行列の要素と前記隣接する複数の画素の座標値の乗算結果を順次出力する、
    ことを特徴とする請求項に記載の画像処理方法。
  12. 前記取得工程では、前記非線形変換画像の前記座標値と、前記非線形変換画像の所定の位置との距離に基づいて、前記非線形変換画像の前記座標値に対応する前記変換対象画像の前記座標値を取得する、
    ことを特徴とする請求項8に記載の画像処理方法。
  13. レンズ歪みの補正のために前記非線形変換が行われる、
    ことを特徴とする請求項8に記載の画像処理方法。
  14. コンピュータを請求項1からのいずれか1項に記載の画像処理装置が備える各手段として機能させるためのプログラム。
JP2012042387A 2012-02-28 2012-02-28 画像処理装置、画像処理方法、及びプログラム Expired - Fee Related JP5914045B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012042387A JP5914045B2 (ja) 2012-02-28 2012-02-28 画像処理装置、画像処理方法、及びプログラム
US13/773,802 US9020296B2 (en) 2012-02-28 2013-02-22 Image conversion apparatus, method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012042387A JP5914045B2 (ja) 2012-02-28 2012-02-28 画像処理装置、画像処理方法、及びプログラム

Publications (3)

Publication Number Publication Date
JP2013178671A JP2013178671A (ja) 2013-09-09
JP2013178671A5 JP2013178671A5 (ja) 2015-04-09
JP5914045B2 true JP5914045B2 (ja) 2016-05-11

Family

ID=49002957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012042387A Expired - Fee Related JP5914045B2 (ja) 2012-02-28 2012-02-28 画像処理装置、画像処理方法、及びプログラム

Country Status (2)

Country Link
US (1) US9020296B2 (ja)
JP (1) JP5914045B2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9769354B2 (en) 2005-03-24 2017-09-19 Kofax, Inc. Systems and methods of processing scanned data
US9767354B2 (en) 2009-02-10 2017-09-19 Kofax, Inc. Global geographic information retrieval, validation, and normalization
US9576272B2 (en) 2009-02-10 2017-02-21 Kofax, Inc. Systems, methods and computer program products for determining document validity
US8958605B2 (en) 2009-02-10 2015-02-17 Kofax, Inc. Systems, methods and computer program products for determining document validity
US9213908B2 (en) * 2011-03-23 2015-12-15 Metaio Gmbh Method for registering at least one part of a first and second image using a collineation warping function
TWI492166B (zh) 2012-01-12 2015-07-11 Kofax Inc 行動影像擷取和處理的系統和方法
US10146795B2 (en) 2012-01-12 2018-12-04 Kofax, Inc. Systems and methods for mobile image capture and processing
US9058515B1 (en) 2012-01-12 2015-06-16 Kofax, Inc. Systems and methods for identification document processing and business workflow integration
JP5924020B2 (ja) * 2012-02-16 2016-05-25 セイコーエプソン株式会社 プロジェクター、及び、プロジェクターの制御方法
EP2973226A4 (en) 2013-03-13 2016-06-29 Kofax Inc CLASSIFICATION OF OBJECTS ON DIGITAL IMAGES RECORDED BY MOBILE DEVICES
US9355312B2 (en) 2013-03-13 2016-05-31 Kofax, Inc. Systems and methods for classifying objects in digital images captured using mobile devices
US9208536B2 (en) * 2013-09-27 2015-12-08 Kofax, Inc. Systems and methods for three dimensional geometric reconstruction of captured image data
US20140316841A1 (en) 2013-04-23 2014-10-23 Kofax, Inc. Location-based workflows and services
JP2016518790A (ja) 2013-05-03 2016-06-23 コファックス, インコーポレイテッド モバイル装置を用いて取込まれたビデオにおけるオブジェクトを検出および分類するためのシステムおよび方法
US9386235B2 (en) 2013-11-15 2016-07-05 Kofax, Inc. Systems and methods for generating composite images of long documents using mobile video data
US9760788B2 (en) 2014-10-30 2017-09-12 Kofax, Inc. Mobile document detection and orientation based on reference object characteristics
US10242285B2 (en) 2015-07-20 2019-03-26 Kofax, Inc. Iterative recognition-guided thresholding and data extraction
JP6815741B2 (ja) * 2016-03-30 2021-01-20 キヤノン株式会社 画像処理装置および画像処理方法
US9779296B1 (en) 2016-04-01 2017-10-03 Kofax, Inc. Content-based detection and three dimensional geometric reconstruction of objects in image and video data
CN107610179B (zh) * 2017-09-04 2021-01-05 苏州佳世达电通有限公司 一种影像撷取装置的校正方法
US11062176B2 (en) 2017-11-30 2021-07-13 Kofax, Inc. Object detection and image cropping using a multi-detector approach
JP2019147320A (ja) * 2018-02-28 2019-09-05 株式会社Screenホールディングス データ処理方法、データ記録方法、軟包装製造方法、および画像記録装置
US10757324B2 (en) * 2018-08-03 2020-08-25 Semiconductor Components Industries, Llc Transform processors for gradually switching between image transforms
CN110930336B (zh) * 2019-11-29 2023-11-28 深圳市商汤科技有限公司 图像处理方法及装置、电子设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0358285A (ja) 1989-07-27 1991-03-13 Hitachi Ltd 画像の拡大・縮小方法およびその処理装置
JPH1023247A (ja) 1996-07-09 1998-01-23 Fuji Photo Film Co Ltd 画像処理装置および画像処理方法
JP3055024B2 (ja) * 1999-01-08 2000-06-19 株式会社トプコン 画像デ―タの転送装置
JP3429280B2 (ja) * 2000-09-05 2003-07-22 理化学研究所 画像のレンズ歪みの補正方法
JP3685029B2 (ja) * 2000-10-04 2005-08-17 セイコーエプソン株式会社 液晶表示装置、画像信号補正回路、液晶表示装置の駆動方法、および画像信号補正方法、ならびに電子機器
JP4144377B2 (ja) * 2003-02-28 2008-09-03 ソニー株式会社 画像処理装置および方法、記録媒体、並びにプログラム
JP2005267457A (ja) 2004-03-19 2005-09-29 Casio Comput Co Ltd 画像処理装置、撮影装置、画像処理方法及びプログラム
WO2009022593A1 (ja) * 2007-08-15 2009-02-19 Rivac Co., Ltd. 画像処理装置、画像処理方法、及び画像処理プログラム、並びに撮像装置
JP5053889B2 (ja) 2008-02-29 2012-10-24 グローリー株式会社 画像照合装置、本人認証装置、対応点探索装置、対応点探索方法及び対応点探索プログラム
JP5387288B2 (ja) * 2009-09-28 2014-01-15 株式会社Jvcケンウッド 画像処理装置、画像処理方法およびそのプログラム

Also Published As

Publication number Publication date
JP2013178671A (ja) 2013-09-09
US20130223762A1 (en) 2013-08-29
US9020296B2 (en) 2015-04-28

Similar Documents

Publication Publication Date Title
JP5914045B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP6136190B2 (ja) 画像処理装置、撮像装置
JP2013218654A (ja) 画像処理装置
JP2017191572A (ja) 画像処理装置及びその方法、プログラム
JP6789720B2 (ja) 画像処理装置、画像処理方法及びプログラム
US8902474B2 (en) Image processing apparatus, control method of the same, and program
JP6632434B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP5787637B2 (ja) 画像処理装置、画像処理方法
JP5387289B2 (ja) 画像処理装置、画像処理方法およびそのプログラム
JP2018120536A (ja) データ補間装置及びその方法、画像処理装置
JP6278716B2 (ja) 画像処理装置、画像処理方法及びプログラム
Zemčík et al. Accelerated image resampling for geometry correction
US9008461B2 (en) Image processing apparatus and image processing method
JP6972089B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP5387288B2 (ja) 画像処理装置、画像処理方法およびそのプログラム
JP2017215941A (ja) 画像処理装置及びその制御方法
US9218647B2 (en) Image processing apparatus, image processing method, and storage medium
US10672107B2 (en) Image processing apparatus and method of controlling the same
JP5085589B2 (ja) 画像処理装置および方法
JP2010113554A (ja) 画像処理装置および画像処理方法
JP2009110555A (ja) 画像処理装置及び方法
JP2010206301A (ja) 画像処理装置及び撮像装置
JP2012089947A (ja) 画像縮小装置
JP2017120530A (ja) 画像処理装置及び画像処理方法
JP2009140091A (ja) 画像処理装置および画像処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160304

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160404

R151 Written notification of patent or utility model registration

Ref document number: 5914045

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees