説明

画像変換装置

【課題】画像変換装置において、画像を変換する際に必要となる画素の補間の方法として、補間対象の画素の近傍にある特定の一画素の画素値を流用して補間する最近傍補間があるが、処理の結果得られた中心射影画像の被写体の輪郭(エッジ)が不自然なものとなる場合がある。
本発明の目的は、高速に、被写体の輪郭(エッジ)を滑らかにすることのできる画像変換装置を提供することにある
【解決手段】画像変換装置は、補間対象の画素ごとに補間元の画素を特定する情報を格納したメモリと、補間元の画素に対して行う重み付けの重みデータを格納したメモリと、制御回路と、乗算器と、加算器とを備え、制御回路は、補間元の画素を取得して乗算器に出力し、乗算器は重みを乗算することにより画素に重みをつけて加算器に出力し、加算器は重みをつけた出力を加算して補間する画素値を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像変換装置に関する。
【背景技術】
【0002】
従来、画像変換装置において、等距離射影画像に対して中心射影画像へ変換するために、特許文献1に示すような画像の変換方法が用いられていた。
【0003】
【特許文献1】特開2007−156795号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、上記の変換方法では、画素を補間する方法として、補間対象の画素の近傍にある特定の一画素の画素値を流用して補間する最近傍補間により補間を実現したため、処理の結果得られた中心射影画像の被写体の輪郭(エッジ)が不自然なものとなる場合がある。
【0005】
本発明の目的は、被写体の輪郭(エッジ)が滑らかになる画像変換装置を提供することにある。
【課題を解決するための手段】
【0006】
上記課題を解決するための第1の手段は、第一の画像を第二の画像に変換する画像変換装置であって、前記第一の画像を記憶する第一の記憶部と、前記第二の画像の所定の画素の位置を示す座標値と、前記所定の画素の画素値を得るために必要な前記第一の画像の複数の画素の位置をそれぞれ示す変換元座標値と、を予め対応付けて記憶した第二の記憶部と、前記第二の記憶部に記憶された前記変換元座標値のそれぞれに対応する重みデータを予め記憶した第三の記憶部と、前記変換元座標値により示される前記第一の画像の画素値と、前記変換元座標値に対応する前記重みデータと、に基づいて前記第二の画像の画素値を算出して前記第一の画像から前記第二の画像への画像変換を行う制御部と、を備える、ことを特徴とする。
【0007】
第2の手段は、第1の手段の画像変換装置において、前記第二の記憶部に記憶された前記変換元座標値は、前記第一の画像の所定の画素を示す4つの座標の座標値であり、前記重みデータは、前記第二の画像の所定の画素に相当する位置と前記第一の画像の所定の変換元座標に相当する位置との各距離に応じて決定されて前記第三の記憶部に記憶される、ことを特徴とする。
【0008】
第3の手段は、第1の手段または第2の手段の画像変換装置であって、前記第一の画像は、等距離射影画像であって、前記第二の画像は、中心射影画像である、ことを特徴とする。
【0009】
第4の手段は、第1の手段、第2の手段または第3の手段の画像変換装置において、前記重みデータは、シェーディング補正のための所定の係数を含んで前記第三の記憶部に記憶される、ことを特徴とする。
【発明の効果】
【0010】
以上のように、本発明によれば、被写体の輪郭が滑らかとなる画像変換装置を提供することができる。
【発明を実施するための最良の形態】
【0011】
本発明の実施形態について、図1〜図5を用いて説明する。
【0012】
図1は、本発明にかかる画像変換装置の回路10を表す図である。
【0013】
図示するように、本実施形態の回路10は、魚眼レンズ1と、CMOS(Complementary Metal Oxide Semiconductor:相補性金属酸化膜半導体)センサ2と、デュアルポートRAM(Dual Port Random Access Memory)3と、書き込み制御回路4と、読み出し制御回路5と、参照座標テーブル用メモリ6と、重みテーブル用メモリ7と、乗算器8と、加算器9と、を有する。
【0014】
デュアルポートRAM3は、読み出しと書き込みを全二重で行う事ができ、書き込み制御回路4は、そのデュアルポートRAM3へ書き込みを行うタイミング等を制御する。読み出し制御回路5は、デュアルポートRAM3から読み出しを行うタイミング等を制御する。
【0015】
参照座標テーブル用メモリ6は、参照座標テーブルデータを格納するメモリ(例えば、SDRAM(Synchronous Dynamic Random Access Memory))であり、読み出し制御回路5より参照される。重みテーブル用メモリ7は、読み出した画像の画素データに重み付けを行うための重みデータを格納するメモリ(例えば、SDRAM)である。
【0016】
乗算器8は、重みテーブル用メモリ7から得た重みデータとデュアルポートRAM3から得た画像の画素データをもとに乗算を行い、加算器9は、乗算器8からの出力を入力として受け取り加算を行う。
【0017】
なお、魚眼レンズ1は、広角レンズ等の他のレンズであってもよいし、CMOSセンサ2は、CCD(Charge Coupled Device:電荷結合素子)等の撮像素子であってもよい。
【0018】
図2は、本実施形態の参照座標テーブル用メモリ6に格納される参照座標テーブル60のデータ構造を示す図である。
【0019】
参照座標テーブル60は、対象座標欄61と、参照座標A欄62と、参照座標B欄63と、参照座標C欄64と、参照座標D欄65と、を有する。
【0020】
参照座標テーブル60に記憶されるレコードは、予めカメラに施されたキャリブレーション(校正)に基づき決定され、予め記憶される。
【0021】
ここで、参照座標テーブル60に記憶されるレコードの対象座標欄61には、画像変換により得られる画像(変換後画像)の各画素位置を二次元座標で示す値が記憶され、参照座標A欄62には、その変換後画像の各画素位置の画素を得るための基となる画素データが格納された画素の座標、即ち変換前の画像の所定の画素の座標が記憶される。
【0022】
同様に、参照座標B欄63、参照座標C欄64、参照座標D欄65についても、同様に変換前の画像の特定の画素点の画素データが格納された画素の座標が記憶される。
【0023】
例えば、図2の参照座標テーブル60の一行目には、対象座標欄61に「ox,oy」の値、参照座標A欄62には「ix,iy」の値、参照座標B欄63には「ix+1,iy」の値、参照座標C欄64には「ix,iy+1」の値、参照座標D欄65には「ix+1,iy+1」の値、がそれぞれ記憶されている。
【0024】
ここで、「ox」は、変換後画像のある画素の位置の水平座標を示したものであり、「oy」は、変換後座標のある画素の位置の垂直座標を示す。すなわち、「ox,oy」は、変換後画像のある画素の位置を示し、その画素の位置は、水平座標がoxであり、垂直座標がoyである、という画素の位置を示す。
【0025】
なお、参照座標A欄の「ix,iy」という値は、変換前画像の「ix,iy」の座標を、参照座標B欄の「ix+1,iy」という値は、変換前画像の「ix+1,iy」の座標を、参照座標C欄の「ix,iy+1」という値は、変換前画像の「ix,iy+1」の座標を、参照座標D欄の「ix+1,iy+1」という値は、変換前画像の「ix+1,iy+1」の座標を、それぞれ示すものである。もちろん、参照座標テーブル60の別の行の場合、参照座標A欄62、参照座標B欄63、参照座標C欄64、参照座標D欄65、には、それぞれ、「ix,iy」,「ix+1,iy」,「ix,iy+1」,「ix+1,iy+1」の座標以外にも、上記のキャリブレーションにより得られた最適な座標が記憶される。
【0026】
ここで、「ix,iy」の座標により示される位置は、変換前の画像のある画素の位置の水平座標がixであり、垂直座標がiyである画素の位置である。「ix+1,iy」の値は、変換前の画像の画素であってその位置の水平座標がix+1であり、垂直座標がiyである画素、の位置である。「ix,iy+1」の値は、変換前の画像の画素であってその位置の水平座標がixであり、垂直座標がiy+1である画素、の位置である。「ix+1,iy+1」の値は、変換前の画像の画素であってその位置の水平座標がix+1であり、垂直座標がiy+1である画素、の位置である。
【0027】
図3は、本実施形態の重みテーブル用メモリ7に格納される重みテーブル70のデータ構造を示す図である。
【0028】
重みテーブル70は、対象座標欄71と、参照座標Aの重み欄72と、参照座標Bの重み欄73と、参照座標Cの重み欄74と、参照座標Dの重み欄75と、を有する。重みテーブル70に記憶されるレコードは、予めカメラに施されたキャリブレーション(校正)に基づき決定され、記憶される。
【0029】
ここで、重みテーブル70に記憶されるレコードの対象座標欄71には、画像変換により得られる画像(変換後画像)の各画素の位置を二次元の座標系で示す値が記憶され、参照座標Aの重み欄72の欄には、その変換後画像の画素を得る基となる画素値に乗算する重みの値(例えば、0.0〜1.0までの小数)が記憶される。
【0030】
同様に、参照座標Bの重み欄73、参照座標Cの重み欄74、参照座標Dの重み欄75の各欄についても、同様に変換後画像の画素を得る基となる画素値に乗算する重みの値が記憶される。
【0031】
重みの値は、変換前の画像上での変換後画像の画素の位置に相当する位置から変換後画像の画素を得る基となる4点の参照座標A、参照座標B、参照座標C、参照座標D、への距離の比率により定まる。
【0032】
例えば、図3の重みテーブル70の一行目には、対象座標欄71に「ox,oy」、参照座標Aの重み欄72には「1.0」、参照座標Bの重み欄73には「0」、参照座標Cの重み欄74には「0」、参照座標Dの重み欄75には「0」、がそれぞれ記憶されている。
【0033】
ここで、「ox」は、変換後画像のある画素の位置の水平座標を示し、「oy」は、変換後画像のある画素の位置の垂直座標を示す。「ox,oy」は、変換後画像のうちのある画素であって、その位置は水平座標がoxであり、垂直座標がoyである画素の位置を示す。
【0034】
ラスタスキャンの順番で出力させる場合には、参照座標データや重みデータをメモリに連続して記憶してもよい。すなわち、図2の参照座標テーブル60の対象座標欄61と、図3の重みテーブル70の対象座標欄71と、を省略したものとしてもよい。ラスタスキャンにおいては、変換後の画素の位置は、予め想定した連続した順番で出力される。そのため、対象座標欄61と対象座標欄71と、をメモリに記憶しなくても画素変換が可能である。
【0035】
ここで、一般に、最近傍の4つの画素をもとに線形補間を行う場合に算出する補間対象の画素の画素値は、最近傍の4つの画素を頂点とする四角形の横辺の横成分の相対距離と、縦成分の相対距離と、を用いて、4つの画素それぞれの重みを算出することができる。
【0036】
そして、その重みを最近傍の対応する4つの画素それぞれに乗算し、得られた結果を加算することで、補間対象の画素の画素値を得ることが可能である。
【0037】
すなわち、座標(m,n)の画素値をg(m,n)、横成分の相対距離をpx、縦成分の相対距離をqyとすると、下記の式(1)であることが知られている。
【0038】
g(ox+1,oy+1)=g(ix,iy)×(1−px)×(1−qy)+
g(ix+1,iy)×px×(1−qy)+
g(ix,iy+1)×(1−px)×qy+
g(ix+1,iy+1)×px×qy
ただし、0≦px,qy≦1・・・・・・・・・・・・・・・式(1)
本実施形態では、上記の式(1)を再現するために、キャリブレーションの際に、重みテーブル70のレコードは、それぞれ、参照座標Aの重み欄72の値、参照座標Bの重み欄73の値、参照座標Cの重み欄74の値、参照座標Dの重み欄75の値を合計すると1.0となるように、また変換前の画像上での変換後画像の画素の位置に相当する位置と、の距離の比をもとに重みの値を設定するものとする。
【0039】
なお、重みテーブル70に記憶される重みのデータは、さらに、濃度(照明)ムラのある画像からムラを除く処理であるシェーディング補正などに用いる補正値を含めて決定されるものであってもよい。この場合には、上記の重みの合計は1.0とはならない場合もある。
【0040】
具体的には、魚眼レンズ1の周辺部分を透過する光量の不足を補うために、周辺部分が明るくなるように補正係数を乗算して重みデータを設定してもよい。
【0041】
書き込み制御回路4は、ラスタスキャンと同様の方式により、魚眼レンズ1を通じてCMOSセンサ2に結像した像の画素値を順に取得し、バッファであるデュアルポートRAM3に取得した画素値を書き込む制御回路である。
【0042】
すなわち、CMOSセンサ2に結像した画像の左端から右端に向かって水平にスキャンし、それを上端から下端まで繰り返すことで画素値を取得し、バッファに順に書き込む。
【0043】
読み出し制御回路5は、デュアルポートRAM3のリードイネーブル信号の立ち上がりを検出すると、出力されるデータにより形成される画像の画像データがラスタスキャンにより表示されるように、デュアルポートRAM3に記憶された画素値を順に読み出す。
【0044】
すなわち、バッファに記憶された順に従って画素値を読み出すことで画素値を取得する。
【0045】
図4は、本実施形態の回路10のタイミングチャートである。
【0046】
本実施形態の回路10は、デュアルポートRAM3のライト用クロックとして、CMOSセンサ2駆動用のクロックを使用し、デュアルポートRAM3のリード用クロックとして、ライト用クロックと同期するライト用クロックの4倍の周波数のクロックを用いる。
【0047】
即ち、書き込みの4倍の速度で読み出しを行うことができるものとする。
【0048】
まず、ライト用クロックに同期して、書き込み制御回路4は、CMOSセンサ2に結像した画像の画素値をラスタスキャンの方式にて画像の左上から右下に向かって取得し、デュアルポートRAM3に対して、スキャンした順に書き込む。
【0049】
具体的には、図4のデュアルポートRAMのライトアドレス1,2,・・・,Wn,Wn+1,Wn+2,・・・の順にアクセスし、それぞれにCMOSセンサ2に結像した画像の画像値であるD1,D2,・・・Din,Din+1,Din+2,・・・を書き込む。
【0050】
そして、所定のデータ量を記憶すると、(例えば、アドレスWnに画像データDinを記憶すると、)デュアルポートRAM3のリードイネーブル信号を立ち上げる。
【0051】
リードイネーブル信号の立ち上げを検知すると、読み出し制御回路5は、デュアルポートRAM3の読み出しを開始する。
【0052】
読み出し制御回路5は、参照座標テーブル用メモリ6から参照座標テーブル60のレコードを順に読み出す。
【0053】
そして、読み出し制御回路5は、読み出した参照座標テーブル60のレコードごとに、参照座標A欄62,参照座標B欄63,参照座標C欄64,参照座標D欄65,のそれぞれの座標に該当するデュアルポートRAM3のメモリアドレス(例えば、Ra1,Rb1,Rc1,Rd1)を順に演算して求める。
【0054】
参照座標A欄62,参照座標B欄63,参照座標C欄64,参照座標D欄65,のそれぞれの座標に該当するデュアルポートRAM3のメモリアドレスを求める演算方法として、それぞれの座標を示す水平位置の座標と垂直位置の座標と、を用いて、一次元のアドレス空間で管理されるデュアルポートRAM3のメモリアドレスを特定する。
【0055】
具体的には、それぞれの座標を示す二次元の座標値を(a,b)とし、CMOSセンサ2に結像した画像の水平方向の幅をWとすると、下記の式(2)によって算出する。
【0056】
デュアルポートRAM3のアドレス=W×b+a・・・式(2)
そして、デュアルポートRAM3の該当するメモリアドレスに記憶されている画素データ(例えば、Da1,Db1,Dc1,Dd1)を読み出し、読み出した順に乗算器8に送信する。
【0057】
次に、乗算器8は、重みテーブル用メモリ7から重みテーブル70のレコードを順に読み出す。
【0058】
そして、乗算器8は、読み出した重みテーブル70のレコードごとに、参照座標Aの重み欄72,参照座標Bの重み欄73,参照座標Cの重み欄74,参照座標Dの重み欄75,のそれぞれに記憶された重み(例えば、1.0,0,0,0)を順に取得して、読み出し制御回路5から受信した画素データ(例えば、Da1,Db1,Dc1,Dd1)とそれぞれ乗算する。
【0059】
具体的には、乗算器8は、読み出した重みをそれぞれWa1,Wb1,Wc1,Wd1、とすると、Wa1とDa1の乗算結果をMa1として、Wb1とDb1との乗算結果をMb1として、Wc1とDc1との乗算結果をMc1として、Wd1とDd1との乗算結果をMd1として出力する。
【0060】
次に、乗算器8の出力を受け取った加算器9は、取得した乗算結果であるMa1と、Mb1と、Mc1と、Md1と、を加算して、加算した結果をDo1として出力する。
【0061】
そして、乗算器8は、同様に、重みテーブル70から読み出した次のレコードの重み(それぞれ、Wa2,Wb2,Wc2,Wd2)と、読み出し制御回路5から受信した次の画素データ(例えば、Da2,Db2,Dc2,Dd2)とを乗算し、加算器9は乗算結果を加算してDo2を出力し、同様にDo3,Do4,・・・についても入力が無くなるまで演算を続け、演算結果を出力する。
【0062】
例えば、図5に示すように、CMOSセンサ2に結像した画像データが変換前画像であるような場合に、点P(ix,iy),点Q(ix+1,iy),点R(ix,iy+1),点S(ix+1,iy+1)の画素データがそれぞれ変換後画像の点P’(ox,oy),点Q’(ox+2,oy),点R’(ox,oy+2),点S’(ox+2,oy+2)へと変換される場合を例に挙げる。
【0063】
点P’と点Q’の間にある画素である対象V(ox+1,oy)と、点P’と点R’の間にある画素である対象W(ox,oy+1)と、点P’と点Q’と点R’と点S’の間にある画素である対象X(ox+1,oy+1)と、点Q’と点S’の間にある画素である対象Y(ox+2,oy+1)と、点R’と点S’の間にある画素である対象Z(ox+1,oy+2)と、についての画素値を補間により得る必要がある。
【0064】
本実施形態によると、対象V,W,Xは、点P、点Q、点R、点Sの画素値をもとに、点P、点Q、点R、点Sと各対象V,W,Xとの距離の比を予めpx、qyとして重みを付けて加算することで補間することができる。対象Yについては、点Q、点S、とそれぞれの右隣の点(図示せず)の4点の画素値をもとに重みをつけて加算することで得ることができる。対象Zについては、点R、点S、とそれぞれの下接の点(図示せず)の4点の画素値をもとに重みをつけて加算することで得ることができる。
【0065】
つまり、本実施形態により、ソフトウェアによる画像変換ではなく、ハードウェアによる画像変換を安価に構成することができるようになり、また、その画像変換においては、周囲の画素の情報をもとに滑らかな画素を補間することのできる線形補間を実現できる。
【0066】
以上が、本願の実施形態としての画像変換装置の回路10である。
【0067】
このような画像変換装置の回路10を組み込むことで、広角の撮像装置、歪みのない写真を簡単に得ることができる広角のデジタルカメラなどを実現することができる。
【0068】
また、本願の実施形態としての画像変換装置の回路10では、デュアルポートRAMへの書き込みに対して、数ラインから数十ライン程度遅れるが、同速度で画像変換を行うことができるため、変換後の画像を得るまでの遅延を少なくすることができる。つまり、連続写真撮影などの高速な撮像の際にも、画像変換処理による遅延なしにバッファであるデュアルポートRAM3も記憶領域をオーバーフローさせることなく撮像することができる。
【0069】
なお、乗算器8、加算器9は、上記の実施形態のように独立した装置であってもよいし、読み出し制御回路5が同様の機能を備えるものであってもよい。
【0070】
以上が、本発明の実施形態である。
【図面の簡単な説明】
【0071】
【図1】本願発明の実施形態にかかる画像変換装置の回路図である。
【図2】本願発明の実施形態にかかる参照座標テーブルのデータ構造を示す図である。
【図3】本願発明の実施形態にかかる重みテーブルのデータ構造を示す図である。
【図4】本願発明の実施形態にかかる回路のタイミングチャートを示す図である。
【図5】本願発明の実施形態にかかる画像変換の例を示す図である。
【符号の説明】
【0072】
1:魚眼レンズ、2:CMOSセンサ、3:デュアルポートRAM、4:書き込み制御回路、5:読み出し制御回路、6:参照座標テーブル用メモリ、7:重みテーブル用メモリ、8:乗算器、9:加算器、10:画像変換装置の回路、60:参照座標テーブル、70:重みテーブル

【特許請求の範囲】
【請求項1】
第一の画像を第二の画像に変換する画像変換装置であって、
前記第一の画像を記憶する第一の記憶部と、
前記第二の画像の所定の画素の位置を示す座標値と、前記所定の画素の画素値を得るために必要な前記第一の画像の複数の画素の位置をそれぞれ示す変換元座標値と、を予め対応付けて記憶した第二の記憶部と、
前記第二の記憶部に記憶された前記変換元座標値のそれぞれに対応する重みデータを予め記憶した第三の記憶部と、
前記変換元座標値により示される前記第一の画像の画素値と、前記変換元座標値に対応する前記重みデータと、に基づいて前記第二の画像の画素値を算出して前記第一の画像から前記第二の画像への画像変換を行う制御部と、
を備える、
ことを特徴とする画像変換装置。
【請求項2】
請求項1に記載の画像変換装置であって、
前記第二の記憶部に記憶された前記変換元座標値は、前記第一の画像の所定の画素を示す4つの座標の座標値であり、
前記重みデータは、前記第二の画像の所定の画素に相当する位置と前記第一の画像の所定の変換元座標に相当する位置との各距離に応じて決定されて前記第三の記憶部に記憶される、
ことを特徴とする画像変換装置。
【請求項3】
請求項1または2に記載の画像変換装置であって、
前記第一の画像は、等距離射影画像であって、前記第二の画像は、中心射影画像である、
ことを特徴とする画像変換装置。
【請求項4】
請求項1〜3のいずれかに記載の画像変換装置であって、
前記重みデータは、シェーディング補正のための所定の係数を含んで前記第三の記憶部に記憶される、
ことを特徴とする画像変換装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate