画像処理装置、画像処理システムおよび画像処理方法
【課題】動画像の歪みを高精度に補正する。
【解決手段】画像処理システムは、走査線順に撮像して入力映像信号を生成する撮像装置と、入力映像信号におけるフレーム間の移動量を示す第1の水平・垂直方向動きベクトルを生成する動きベクトル生成部と、第1の水平・垂直方向動きベクトルを、第1の垂直方向動きベクトルを考慮して、1フレーム時間あたりの第2の水平・垂直方向動きベクトルに変換する動きベクトル変換部と、少なくとも2つのフレームについての第2の水平・垂直方向動きベクトルを用いて補間処理を行い、走査線毎の、水平・垂直方向の移動量を示す第3の水平・垂直方向動きベクトルを生成する動きベクトル補間部と、第3の水平・垂直方向動きベクトルに基づいて、走査線毎に水平・垂直方向補正量を生成する補正量生成部と、水平・垂直方向補正量に基づいて、入力映像信号を補正して出力映像信号を生成する補正部とを備える。
【解決手段】画像処理システムは、走査線順に撮像して入力映像信号を生成する撮像装置と、入力映像信号におけるフレーム間の移動量を示す第1の水平・垂直方向動きベクトルを生成する動きベクトル生成部と、第1の水平・垂直方向動きベクトルを、第1の垂直方向動きベクトルを考慮して、1フレーム時間あたりの第2の水平・垂直方向動きベクトルに変換する動きベクトル変換部と、少なくとも2つのフレームについての第2の水平・垂直方向動きベクトルを用いて補間処理を行い、走査線毎の、水平・垂直方向の移動量を示す第3の水平・垂直方向動きベクトルを生成する動きベクトル補間部と、第3の水平・垂直方向動きベクトルに基づいて、走査線毎に水平・垂直方向補正量を生成する補正量生成部と、水平・垂直方向補正量に基づいて、入力映像信号を補正して出力映像信号を生成する補正部とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、画像処理装置、画像処理システムおよび画像処理方法に関する。
【背景技術】
【0002】
CMOS(Complementary Metal-Oxide-Semiconductor)センサは低コストで製造できるため、デジタルビデオカメラ等に多く用いられている。CMOSセンサは、1フレーム全体を同時に撮像するのではなく、画面上部から下部へ走査線毎に順に撮像するローリングシャッタ方式が一般的である。画面の上部と下部で撮像タイミングが異なるため、CMOSセンサで動画像を撮影すると、動いている被写体が歪むという問題がある。この歪みはフォーカルプレーン歪みと呼ばれる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−148496号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
動画像の歪みを高精度に補正可能な画像処理装置、画像処理システムおよび画像処理方法を提供する。
【課題を解決するための手段】
【0005】
実施形態によれば、画像処理システムは、撮像装置と、動きベクトル生成部と、動きベクトル変換部と、動きベクトル補間部と、補正量生成部と、補正部とを備える。前記撮像装置は、走査線順に撮像して入力映像信号を生成する。前記動きベクトル生成部は、前記入力映像信号におけるフレーム間の水平方向および垂直方向の移動量をそれぞれ示す第1の水平方向動きベクトルおよび第1の垂直方向動きベクトルを生成する。前記動きベクトル変換部は、前記第1の水平方向動きベクトルおよび前記第1の垂直方向動きベクトルを、前記第1の垂直方向動きベクトルを考慮して、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第2の水平方向動きベクトルおよび第2の垂直方向動きベクトルにそれぞれ変換する。前記動きベクトル補間部は、少なくとも2つのフレームについての前記第2の水平方向動きベクトルおよび前記第2の垂直方向動きベクトルを用いて補間処理を行い、前記走査線毎の、前記1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第3の水平方向動きベクトルおよび第3の垂直方向動きベクトルをそれぞれ生成する。前記補正量生成部は、前記第3の水平方向動きベクトルおよび前記第3の垂直方向動きベクトルに基づいて、前記走査線毎に水平方向補正量および垂直方向補正量をそれぞれ生成する。前記補正部は、前記水平方向補正量および前記垂直方向補正量に基づいて、前記入力映像信号を補正して出力映像信号を生成する。
【図面の簡単な説明】
【0006】
【図1】動きベクトルを用いてフォーカルプレーン歪みを補正する原理を説明する図。
【図2】動きベクトルMVx2,MVy2を補正する手法の一例を示す図。
【図3】第1の実施形態に係る画像処理システムの概略ブロック図。
【図4】動きベクトル変換部24の内部構成の一例を示す図。
【図5】動きベクトル補間部25の内部構成の一例を示す図。
【図6】補正量生成部26の内部構成の一例を示す図。
【図7】補正部27の内部構成の一例を示す図。
【図8】画像処理装置2の処理動作を示すフローチャート。
【図9】第2の実施形態に係る画像処理システムの概略ブロック図。
【図10】動きベクトル補間部25aの内部構成の一例を示す図。
【図11】補正量生成部26aの内部構成の一例を示す図。
【図12】第3の実施形態による補正を説明する図。
【図13】第3の実施形態の補正部27aの内部構成の一例を示す図。
【発明を実施するための形態】
【0007】
以下、本発明の実施形態について、図面を参照しながら具体的に説明する。
【0008】
(第1の実施形態)
図1は、動きベクトルを用いてフォーカルプレーン歪みを補正する原理を説明する図である。図1は、ローリングシャッタ方式のCMOSセンサで撮影された時間的に連続する2枚のフレームF1,F2を示している。
【0009】
CMOSセンサは、フレームF1の全体を同時に撮像するのではなく、画面上部から下部へ走査線毎に順に撮像する。1本の走査線を撮像するのに要する時間をts、各フレームの全走査線数をHとすると、時間ts*HかかってフレームF1の全走査線を撮像した後、引き続くフレームF2を、画面上部から下部へ走査線毎に順に撮像する。
【0010】
フレームF1では、中心が(x1,y1)に位置していた物体Objが、フレームF2では(x2,y2)に移動したとする。すなわち、フレーム間での水平方向および垂直方向の移動量をそれぞれ示す水平方向動きベクトル(第1の水平方向動きベクトル)MVx1および垂直方向動きベクトル(第1の垂直方向動きベクトル)MVy1は、MVx1=x2−x1,MVy1=y2−y1である。
【0011】
ここで、時刻t0でフレームF1の(x1,y1)を含む走査線を撮影したとすると、フレームF2の(x2,y2)を含む走査線を撮影する時刻は、時刻t1=t0+ts*(MVy1+H)である。したがって、物体Objが水平方向動きベクトルMVx1だけ移動するのに要した時間は、t1−t0=ts*(MVy1+H)である。よって、CMOSセンサが静止している、あるいは、等速で移動していると仮定すると、1フレームを撮像する時間ts*Hあたりの物体Objの水平方向および垂直方向の移動量をそれぞれ示す水平方向動きベクトル(第2の水平方向動きベクトル)MVx2および垂直方向動きベクトル(第2の垂直方向動きベクトル)MVy2は、下記の(1),(2)式でそれぞれ表される。
MVx2=MVx1*H/(MVy1+H) ・・・(1)
MVy2=MVy1*H/(MVy1+H) ・・・(2)
これにより、フレーム間での移動量を示す動きベクトルMVx1,MVy1は、1フレームを撮像する時間あたりの移動量を示す動きベクトルMVx2,MVy2に変換される。
【0012】
ただし、CMOSセンサが加速度を持って移動している場合、水平方向および垂直方向動きベクトルは、走査線の位置に応じて異なる。そのため、動きベクトルMVx2,MVy2を補正するのが望ましい。
【0013】
図2は、動きベクトルMVx2,MVy2を補正する手法の一例を示す図である。同図では水平方向の動きベクトルについて示しているが、垂直方向の動きベクトルも同様である。上記(1),(2)式により算出された、あるフレームFaでの動きベクトルをMVx2a,MVy2aとし、引き続くフレームFbでの動きベクトルをMVx2b,MVy2bとする。これらの値は、例えばフレームFa,Fbの1ライン目の走査線を撮像した時の動きベクトルをそれぞれ表しているものとする。
【0014】
このとき、フレームFaのy番目の走査線における、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す水平方向動きベクトル(第3の水平方向動きベクトル)MVx3[y]および垂直方向動きベクトル(第3の垂直方向動きベクトル)MVy3[y]を、下記(3),(4)式を用いて算出する。
【0015】
MVx3[y]={MVx2b*y+MVx2a*(H−y)}/H ・・・(3)
MVy3[y]={MVy2b*y+MVy2a*(H−y)}/H ・・・(4)
上記(3),(4)式は、y番目の走査線における動きベクトルMVx3[y],MVy3[y]を、2フレームの動きベクトルを用いて線形補間して算出する例である。その他、3フレーム以上の動きベクトルMVx3[y],MVy3[y]を用いて2次補間、3次補間、スプライン補間等により算出してもよい。
【0016】
上記の動きベクトルMVx3[y],MVy3[y]は、1フレームを撮像する時間あたりの移動量を示している。したがって、1ラインを撮像する時間あたりの移動量はMVx3[y]/H,MVy3[y]/H,である。よって、1番目の走査線からy番目の走査線を撮像する間に、物体Objは下記(5),(6)式でそれぞれ表される水平方向および垂直方向移動量dx[y],dy[y]だけ移動する。
【数1】
【数2】
【0017】
このように、物体Obj内でも、走査線の位置yに応じて移動量が異なるため、図1に示すように、物体Objは歪んでしまう。
【0018】
そこで、走査線y毎の水平方向移動量dx[y]を水平方向補正量MODx[y]とし(MODx[y]=dx[y])、垂直方向移動量dy[y]を垂直方向補正量MODx[y]とする(MODy[y]=dy[y])。これら補正量MODx[y],MODy[y]は、(x,y)の画素を仮に1本目の走査線と同時に撮像していたとすると、その(x,y)の画素は(x−MODx[y],y−MODy[y])にあったことを意味する。よって、(x−MODx[y],y−MODy[y])の画素を(x,y)の画素に置き換える補正をすれば、言い換えると、(x,y)の画素を(x+MODx[y],y+MODy[y])の画素に置き換える補正をすればフォーカルプレーン歪みが補正される。
【0019】
このように、垂直方向動きベクトルMVy1を考慮して、1フレームを撮像する時間あたりの移動量を示す動きベクトルMVx2,MVy2を算出する。さらに、CMOSセンサの加速度を考慮して、走査線毎に、水平方向および垂直方向の移動量を示す動きベクトルMVx3[y],MVy3[y]を算出する。これらに基づいて、1番目の走査線からy番目の走査線を撮像する間の移動量を補正量MODx[y],MODy[y]として入力映像信号を補正する。これにより、高精度にフォーカルプレーン歪みを補正できる。
【0020】
特に、CMOSセンサの加速度を考慮するため、CMOSセンサが加速度を持って移動する場合、例えば等速で動いていたCMOSセンサが急に停止したような場合でも、精度良くフォーカルプレーン歪みを補正できる。
【0021】
図3は、第1の実施形態に係る画像処理システムの概略ブロック図である。画像処理システムは、CMOSセンサ1と、画像処理装置2と、外部機器3とを備えている。CMOSセンサ1により取得されたRAWデータである入力映像信号が画像処理装置2に入力される。画像処理装置2は入力映像信号のフォーカルプレーン歪みを補正して、出力映像信号を生成する。外部機器3は、例えば出力映像信号を表示する液晶ディスプレイ等の表示装置や、出力映像信号を記憶するフラッシュメモリやハードディスク等の記憶媒体である。
【0022】
画像処理装置2は、前処理部21と、フレームメモリ22と、動きベクトル生成部23と、動きベクトル変換部24と、動きベクトル補間部25と、補正量生成部26と、補正部27とを有する。本実施形態では、画像処理装置2とは別個にCMOSセンサ1が設けられている例を示すが、画像処理装置2と同一チップにCMOSセンサ1を搭載してもよい。
【0023】
前処理部21は、CMOSセンサ1から入力されるRAWデータからRGB補間を行って、各画素のRGB値を生成するとともに、このRGB値に基づいて所定のマトリクス変換を行い、Y(輝度)成分を生成する。生成されたRGB値およびY成分はフレームメモリ22に記憶される。フレームメモリ22は、例えば2フレームの画素情報を記憶できるものとする。このとき、各フレームの(x,y)の画素のRGB値はそれぞれ、フレームメモリ22の各フレームに対応するアドレス(x,y)に記憶されるものとする。
【0024】
動きベクトル生成部23は、CMOSセンサ1から入力される現在のフレームのY成分と、フレームメモリ22に記憶された過去のフレームにおけるY成分とを用いて動きベクトル探索を行い、フレームにつき1つの水平方向動きベクトルMVx1および垂直方向動きベクトルMVy1を生成する。生成された動きベクトルMVx1,MVy1は動きベクトル変換部24に入力される。
【0025】
より具体的には、フレーム中に複数画素からなるいくつか(例えば5個)のブロックを設定し、ブロック毎に差分絶対値和(Sum of Absolute Difference:SAD)によるブロックマッチング演算を行って動きベクトル探索を行う。そして、全ブロックの動きベクトルの平均またはメディアンをそのフレームの動きベクトルとする。あるいは別の手法として、現在および過去のフレームを縮小し、走査線毎に動きベクトル探索を行って、動きベクトル生成部23内の動きベクトル用ラインメモリ(不図示)に一旦記憶する。そして、全走査線の動きベクトルのメディアンをそのフレームの動きベクトルMVx1,MVy1とする。
【0026】
また、画像処理装置2とは別個に画像符号化装置(不図示)等が設けられ、外部から動きベクトルを取得してもよい。この場合、現在および過去のフレームのY成分を用いなくてもよい。
【0027】
動きベクトル変換部24は、フレーム間での移動量を示す動きベクトルMVx1,MVy1と、外部のホストプロセッサ(不図示)等から設定される全走査線数Hとが入力される。動きベクトル変換部24は、上記(1),(2)式に基づいて、1フレームを撮像する時間あたりの移動量を示す動きベクトルMVx2,MVy2を生成する。
【0028】
図4は、動きベクトル変換部24の内部構成の一例を示す図である。動きベクトル変換部24は、加算器41と、除算器42と、乗算器43,44とを有する。加算器41はMVy1+Hを生成する。除算器42はH/(MVy1+H)を生成する。乗算器43は動きベクトルMVx2を、乗算器44は動きベクトルMVy2をそれぞれ生成する。
【0029】
図3に戻り、動きベクトル補間部25は、動きベクトルMVx2,MVy2および全走査線数Hが入力され、例えば上記(3),(4)式に基づいて線形補間処理を行い、CMOSセンサの加速度を考慮した、走査線毎の動きベクトルMVx3[y],MVy3[y]を生成する。ここで、動きベクトルMVx2は、あるフレームに関する動きベクトルMVx2aと、引き続くフレームに関する動きベクトルMVx2bとを含む。動きベクトルMVy2も同様である。
【0030】
図5は、動きベクトル補間部25の内部構成の一例を示す図である。動きベクトル補間部25は、カウンタ51と、乗算器52と、減算器53と、乗算器54と、加算器55と、除算器56とを有する。なお、動きベクトルMVx3[y],MVy3[y]は類似した計算式により算出されるため、同図では動きベクトルMVx3[y]を生成するためのブロック図のみを示している。
【0031】
カウンタ51には、垂直同期信号Vsyncおよび水平同期信号Hsyncが入力される。カウンタ51は、水平同期信号Hsyncのパルス数をカウントし、垂直同期信号Vsyncに同期してカウント値をリセットすることにより、走査線位置yを生成する。乗算器52はMVx2b*yを生成する。減算器53はH−yを生成する。乗算器54はMVx2a*(H−y)を生成する。加算器55はMVx2b*y+MVx2a*(H−y)を生成する。除算器56は動きベクトルMVx3[y]を生成する。
【0032】
図3に戻り、補正量生成部26は、動きベクトルMVx3[y],MVy3[y]および全走査線数Hが入力され、上記(5),(6)式に基づいて、1番目の走査線からy番目の走査線を撮像する間の移動量dx[y],dy[y]、すなわち、水平方向および垂直方向補正量MODx[y],MODy[y]を算出する。
【0033】
図6は、補正量生成部26の内部構成の一例を示す図である。補正量生成部26は、アキュムレータ(ACC)61と、除算器62とを有する。なお、補正量MODx[y],MODy[y]は類似した計算式により算出されるため、同図では補正量MODx[y]を生成するためのブロック図のみを示している。
【0034】
アキュムレータ61には、垂直同期信号Vsync、水平同期信号Hsyncおよび走査線ごとに異なる動きベクトルMVx3[y]が入力される。垂直同期信号Vsyncがフレームの先頭を示すとき、アキュムレータ61は積算値を0にリセットする。水平同期信号Hsyncが走査線の先頭を示すとき、アキュムレータ61は積算値に動きベクトルMVx3[y]をさらに加算して出力する。その他の場合、アキュムレータ61は積算値を保持して出力する。積算値はΣMVx3[v](v=0〜y)である。除算器62は積算値を全走査線数Hで除して、補正量MODx[y]を生成する。なお、本実施形態では、補正量MODx[y],MODy[y]が整数精度となるよう、小数点以下の切り捨てまたは四捨五入等を行う。
【0035】
図3に戻り、補正部27は、補正量MODx[y],MODy[y]およびフレームメモリ22に記憶された現在のフレームのRGB値を用いて、入力映像信号を補正する。より具体的には、(x,y)の画素のRGB値を、(x+MODx[y],y+MODy[y])の画素のRGB値で置き換える補正を行う。
【0036】
図7は、補正部27の内部構成の一例を示す図である。補正部27は、カウンタ71,72と、加算器73,74とを有する。カウンタ71には水平同期信号Hsyncが入力され、水平同期信号Hsyncのアサートによりカウント値を0にリセットしながらカウントアップを繰り返すことで位置xを算出する。加算器73は、位置xと水平方向補正量MODx[y]とを加算し、水平方向アドレスADRx(=x+MODx[y])を生成する。カウンタ72には垂直同期信号Vsyncと水平同期信号Hsyncが入力され、垂直同期信号Vsyncのアサートによりカウント値を0にリセットしながら水平同期信号Hsyncのパルスの数をカウントすることで位置yを算出する。加算器74は、位置yと垂直方向補正量MODy[y]とを加算し、垂直方向アドレスADRy(=y+MODy[y])を生成する。そして、フレームメモリ22からアドレス(ADRx,ADRy)に記憶されたRGB値を読み出し、補正後の出力映像信号とする。これにより、フォーカルプレーン歪みを抑制できる。
【0037】
図8は、画像処理装置2の処理動作を示すフローチャートである。初めは、フレームメモリ12にフレームF1のY成分およびRGB値が記憶されているものとする。CMOSセンサ1からフレームF1に引き続くフレームF2の入力映像信号が入力されると、前処理部21はRGB値とY成分を生成する(S1)。次に、動きベクトル生成部23は、現在のフレームF2のY成分と、フレームメモリ22に記憶された過去のフレームF1のY成分とを用いて動きベクトルMVx,MVyを生成する(S2)。その後、フレームメモリ22をフレームF2のRGB値およびY成分に更新する(S3)。
【0038】
さらに、動きベクトル変換部24は、動きベクトルMVx1,MVy1を上記(1),(2)式に基づいて変換し、動きベクトルMVx2,MVy2を生成する(S4)。そして、動きベクトル補間部25は、上記(3),(4)式に基づいて、CMOSセンサ1の加速度を考慮した補間処理を行い、動きベクトルMVx3[y],MVy3[y]を生成する(S5)。
【0039】
続いて、補正量生成部26は、上記(5),(6)式に基づいて、走査線位置y毎に、垂直方向動きベクトルMVyを考慮した補正量MODx[y],MODy[y]を生成する(S6)。そして、補正部27は各位置(x,y)のRGB値を、補正量MODx[y],MODy[y]およびフレームメモリ22に記憶されたフレームF1のRGB画素値を用いて、補正する(S7)。補正されたRGB値からなる出力映像信号は外部機器3に供給される。
【0040】
このように、第1の実施形態では、垂直方向動きベクトルMVyおよびCMOSセンサ1の加速度を考慮した補正量MODx[y],MODy[y]を生成し、補正を行う。そのため、高精度にフォーカルプレーン歪みを補正できる。
【0041】
なお、上述した例ではフレームメモリ12が2フレームの画素情報を記憶するものであったが、必ずしも2フレームを記憶するメモリでなくてもよい。例えば、1フレームを記憶するフレームメモリに加え、垂直方向の補正で必要となる補正量MODy[y]の最大値と、動きベクトル探索で必要となる動きベクトル探索範囲の垂直方向の最大値と、のうちの最大値に相当するライン数を記憶できるラインメモリを用いてもよい。
【0042】
(第2の実施形態)
第1の実施形態の動きベクトル補間部25および補正量生成部26は、外部から全走査線数Hのみが設定されて、動きベクトルMVx3[y],MVy3[y]および補正量MODx[y],MODy[y]をそれぞれ生成した。これに対し、第2の実施形態の動きベクトル補間部25aおよび補正量生成部26aは、さらに多くのパラメータが設定されて、動きベクトルMVx3[y],MVy3[y]および補正量MODx[x],MODy[y]を生成するものである。
【0043】
図9は、第2の実施形態に係る画像処理システムの概略ブロック図である。図9では、図3と共通する構成部分には同一の符号を付しており、以下では相違点を中心に説明する。
【0044】
まず、図9の画像処理システムでは、画像処理装置2a内の動きベクトル補間部25aの内部構成が、図5の動きベクトル補間部25とは異なっている。動きベクトル補間部25aは、外部から全走査線数Hに加え、任意の係数aおよびビットシフト量Sft1がパラメータとして設定される。そして、動きベクトル補間部25aは、下記(7),(8)式に基づいて動きベクトルMVx3[y],MVy3[y]を生成する。
【0045】
MVx3[y]={MVx2b*y+MVx2a*(H−y)}*a>>Sft1 ・・・(7)
MVy3[y]={MVy2b*y+MVy2a*(H−y)}*a>>Sft1 ・・・(8)
ここで、>>Sftは右にビットシフト量Sft1だけビットシフトすることを示し、2のSft1乗で除すことと等価である。
【0046】
図10は、動きベクトル補間部25aの内部構成の一例を示す図である。以下、図5の動きベクトル補間部25との違いを説明する。動きベクトル補間部25aは、乗算器61と、ビットシフト器62とを有する。乗算器61は、加算器55の出力に係数aを乗じて、{MVx2b*y+MVx2a*(H−y)}*aを生成する。ビットシフト器62は乗算器61の出力をビットシフト量Sft1だけビットシフトして、動きベクトルMVx3[y]を生成する。
【0047】
さらに、図9の画像処理システムは、画像処理装置2a内の補正量生成部26aの内部構成が、図3の補正量生成部26の内部構成とは異なっている。補正量生成部26aは、外部から任意の係数bおよびビットシフト量Sft2がパラメータとして設定される。そして、補正量生成部26aは、下記(9),(10)式により移動量dx[y],dy[y]すなわち水平方向補正量MODx[y]および垂直方向補正量MODy[y]を生成する。
【数3】
【数4】
【0048】
なお、第2の実施形態では、補正量MODx[y],MODy[y]が整数精度となるよう、係数bに応じてビットシフト量Sft2を定める。
【0049】
図11は、補正量生成部26aの内部構成の一例を示す図である。以下、図6の補正量生成部26との違いを説明する。補正量生成部26aは、乗算器63とビットシフト器64とを有する。乗算器63は、アキュムレータ61の出力に係数bを乗じて、b*ΣMVx3[v](v=0〜y)を生成する。ビットシフト器64は乗算器63の出力をビットシフト量Sft2だけビットシフトして、上記(9)式の補正量MODx[y]を生成する。
【0050】
上記の(7),(8),(9),(10)式のパラメータを外部から設定することにより、補正量を柔軟に調整することができる。例えば、誤補正を防ぐために補正量を小さく設定したい場合は、係数a,bを1倍に相当する値より小さく設定すればよい。動きベクトルMVx3[y],MVy3[y]および補正量MODx[y],MODy[y]は、係数a,bにそれぞれ比例するため、その調整が簡易に行える。
【0051】
特に画像処理装置2aをハードウェアで実現する場合、係数a,bを乗じてビットシフトすることで、除算器をもう1つ用いることに比べて、ハードウェアの規模を抑えて、調整を行うことができる。
【0052】
このように、第2の実施形態では、第1の実施形態に加え、係数a,bおよびビットシフト量Sft1,Sft2を外部から設定して、補正量MODx[y],MODy[y]を生成する。そのため、外部から補正量を簡易に調整できる。
【0053】
(第3の実施形態)
第1および第2の実施形態は、補正量MODx[y],MODy[y]を整数精度とし、補正対象の画素をフレーム内に存在するいずれかの画素で置き換えて補正するものであった。これに対し、第3の実施形態は、補正量MODx[y],MODy[y]を小数精度とし、フレーム内の1または複数の画素から生成される画素で置き換えて補正するものである。
【0054】
図12は、第3の実施形態による補正を説明する図である。同図では、補正量MODx[y],MODy[y]を小数以下2ビットまで、すなわち、0.25の単位まで算出する例を示している。同図の黒丸はフレームメモリから読み出される画素の位置を示しており、整数座標にのみ存在する。これに対し、白ヌキ四角は、置き換えられる可能性がある画素の位置の例を示しており、0.25単位の座標に存在する。これらは、補間により生成される。
【0055】
例えば位置P(5,1)に存在する画素において、水平方向補正量MODx[1]=0.25、垂直方向補正量MODy[y]=1.75である場合、置き換えるべき画素の位置はP’(5.25,2.75)となる。実際には、この位置に画素は存在しない。そのため、周囲の画素、例えば位置A(5,2),B(6,2),C(5,3),D(6,3)の4つの画素のRGB値から位置P’(5.25,2.75)の画素のRGB値を畳み込み演算(フィルタ処理)を行って補間する。そして、位置P(5,1)の画素のRGB値を、補間により生成された位置P’(5.25,2.75)のRGB値で置き換える補正を行う。このように補正量MODx[y],MODy[y]を小数精度まで制御することで、補正の精度を向上できる。
【0056】
補正量MODx[y],MODy[y]を小数精度とするためには、例えば第1の実施形態の(5),(6)式で小数点以下まで計算したり、第2の実施形態のビットシフト量Sft2を小さく設定したりすればよい。
【0057】
図13は、第3の実施形態の補正部27aの内部構成の一例を示す図である。補正部27aは、カウンタ71,72と、加算器73,74と、補間部80とを有する。補間部80は、係数テーブル81と、乗算器82と、加算器83と、アキュムレータ(ACC)84とを有する。
【0058】
以下、図12と同様の条件にて、図13の補正部27aの動作を説明する。図7の補正部27と同様に、カウンタ71,72は位置x,yをそれぞれ算出する。また、加算器73,74は水平方向アドレスADRx(=x+MODx[y])および垂直方向アドレスADRy(=y+MODy[y])を生成する。ここで、補正量MODx[y],MODy[y]は小数点以下2ビットまでの精度を有するため、アドレス(ADRx,ADRy)も同様に小数以下2ビットまでの精度を有する。
【0059】
そして、フレームメモリ22からアドレス(ADRx,ADRy)の周囲の整数座標に存在する画素のRGB値が読み出される。そして、乗算器82は、アドレス(ADRx,ADRy)との距離に応じて予め定められ、係数テーブル81に格納されたフィルタ係数と、読み出されたRGB値のそれぞれとを乗じ、加算器83およびアキュムレータ84により積算する。
【0060】
図12の例では、アドレス(5.25,2.75)の周囲に存在するアドレス(5,2),(6,2),(5,3),(6,3)のそれぞれについて、上記の処理が行われる。アドレス(5,3)のRGB値には、アドレス(5.25,2.75)との距離が小さいため、比較的大きな値のフィルタ係数が乗じられる。一方、アドレス(6,2)のRGB値には、アドレス(5.25,2.75)との距離が大きいため、比較的小さな値のフィルタ係数が乗じられる。
【0061】
このようにして、補間されたRGB値を補正後のRGB値とする。
【0062】
また、本実施形態では、補間されたRGB値を求める際の畳み込み演算では、1画素あたりに複数回のフレームメモリ22へのアクセスが行われる。しかしながら、畳み込み演算ではフレーム中のデータ局所性を有するため、フレームメモリ22と補正部27aとの間にフレームメモリ参照キャッシュ(不図示)を設けることや、メモリ参照コントローラ(不図示)を設けることで、消費電力やメモリアクセスレイテンシを削減することも可能である。
【0063】
なお、第3の実施形態では、補正量MODx[y],MODy[y]を小数点以下2ビットの精度としたが、より高精度にしてもよい。また、補間の手法は任意でよく、4つ以上の画素のRGB値を用いて補間してもよいし、最近接の画素1つのみで補間してもよい。
このように、第3の実施形態では、補正量MODx[y],MODy[y]を小数点以下まで算出し、1または複数の画素から補間されるRGB値を用いて補正を行う。そのため、補正量をより細かく制御でき、補正の精度が向上する。
【0064】
なお、各実施形態の入力映像信号は、走査線毎に順に撮像されたものであればよく、CMOSセンサでなく他の撮像装置により撮像されたものであってもよい。
各実施形態で説明した画像処理システムの少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、画像処理システムの少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。また、画像処理システムの少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【0065】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0066】
1 CMOSセンサ
2,2a 画像処理装置
3 外部機器
21 前処理部
22 フレームメモリ
23 動きベクトル生成部
24 動きベクトル変換部
25,25a 動きベクトル補間部
26,26a 補正量生成部
27,27a 補正部
【技術分野】
【0001】
本発明の実施形態は、画像処理装置、画像処理システムおよび画像処理方法に関する。
【背景技術】
【0002】
CMOS(Complementary Metal-Oxide-Semiconductor)センサは低コストで製造できるため、デジタルビデオカメラ等に多く用いられている。CMOSセンサは、1フレーム全体を同時に撮像するのではなく、画面上部から下部へ走査線毎に順に撮像するローリングシャッタ方式が一般的である。画面の上部と下部で撮像タイミングが異なるため、CMOSセンサで動画像を撮影すると、動いている被写体が歪むという問題がある。この歪みはフォーカルプレーン歪みと呼ばれる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−148496号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
動画像の歪みを高精度に補正可能な画像処理装置、画像処理システムおよび画像処理方法を提供する。
【課題を解決するための手段】
【0005】
実施形態によれば、画像処理システムは、撮像装置と、動きベクトル生成部と、動きベクトル変換部と、動きベクトル補間部と、補正量生成部と、補正部とを備える。前記撮像装置は、走査線順に撮像して入力映像信号を生成する。前記動きベクトル生成部は、前記入力映像信号におけるフレーム間の水平方向および垂直方向の移動量をそれぞれ示す第1の水平方向動きベクトルおよび第1の垂直方向動きベクトルを生成する。前記動きベクトル変換部は、前記第1の水平方向動きベクトルおよび前記第1の垂直方向動きベクトルを、前記第1の垂直方向動きベクトルを考慮して、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第2の水平方向動きベクトルおよび第2の垂直方向動きベクトルにそれぞれ変換する。前記動きベクトル補間部は、少なくとも2つのフレームについての前記第2の水平方向動きベクトルおよび前記第2の垂直方向動きベクトルを用いて補間処理を行い、前記走査線毎の、前記1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第3の水平方向動きベクトルおよび第3の垂直方向動きベクトルをそれぞれ生成する。前記補正量生成部は、前記第3の水平方向動きベクトルおよび前記第3の垂直方向動きベクトルに基づいて、前記走査線毎に水平方向補正量および垂直方向補正量をそれぞれ生成する。前記補正部は、前記水平方向補正量および前記垂直方向補正量に基づいて、前記入力映像信号を補正して出力映像信号を生成する。
【図面の簡単な説明】
【0006】
【図1】動きベクトルを用いてフォーカルプレーン歪みを補正する原理を説明する図。
【図2】動きベクトルMVx2,MVy2を補正する手法の一例を示す図。
【図3】第1の実施形態に係る画像処理システムの概略ブロック図。
【図4】動きベクトル変換部24の内部構成の一例を示す図。
【図5】動きベクトル補間部25の内部構成の一例を示す図。
【図6】補正量生成部26の内部構成の一例を示す図。
【図7】補正部27の内部構成の一例を示す図。
【図8】画像処理装置2の処理動作を示すフローチャート。
【図9】第2の実施形態に係る画像処理システムの概略ブロック図。
【図10】動きベクトル補間部25aの内部構成の一例を示す図。
【図11】補正量生成部26aの内部構成の一例を示す図。
【図12】第3の実施形態による補正を説明する図。
【図13】第3の実施形態の補正部27aの内部構成の一例を示す図。
【発明を実施するための形態】
【0007】
以下、本発明の実施形態について、図面を参照しながら具体的に説明する。
【0008】
(第1の実施形態)
図1は、動きベクトルを用いてフォーカルプレーン歪みを補正する原理を説明する図である。図1は、ローリングシャッタ方式のCMOSセンサで撮影された時間的に連続する2枚のフレームF1,F2を示している。
【0009】
CMOSセンサは、フレームF1の全体を同時に撮像するのではなく、画面上部から下部へ走査線毎に順に撮像する。1本の走査線を撮像するのに要する時間をts、各フレームの全走査線数をHとすると、時間ts*HかかってフレームF1の全走査線を撮像した後、引き続くフレームF2を、画面上部から下部へ走査線毎に順に撮像する。
【0010】
フレームF1では、中心が(x1,y1)に位置していた物体Objが、フレームF2では(x2,y2)に移動したとする。すなわち、フレーム間での水平方向および垂直方向の移動量をそれぞれ示す水平方向動きベクトル(第1の水平方向動きベクトル)MVx1および垂直方向動きベクトル(第1の垂直方向動きベクトル)MVy1は、MVx1=x2−x1,MVy1=y2−y1である。
【0011】
ここで、時刻t0でフレームF1の(x1,y1)を含む走査線を撮影したとすると、フレームF2の(x2,y2)を含む走査線を撮影する時刻は、時刻t1=t0+ts*(MVy1+H)である。したがって、物体Objが水平方向動きベクトルMVx1だけ移動するのに要した時間は、t1−t0=ts*(MVy1+H)である。よって、CMOSセンサが静止している、あるいは、等速で移動していると仮定すると、1フレームを撮像する時間ts*Hあたりの物体Objの水平方向および垂直方向の移動量をそれぞれ示す水平方向動きベクトル(第2の水平方向動きベクトル)MVx2および垂直方向動きベクトル(第2の垂直方向動きベクトル)MVy2は、下記の(1),(2)式でそれぞれ表される。
MVx2=MVx1*H/(MVy1+H) ・・・(1)
MVy2=MVy1*H/(MVy1+H) ・・・(2)
これにより、フレーム間での移動量を示す動きベクトルMVx1,MVy1は、1フレームを撮像する時間あたりの移動量を示す動きベクトルMVx2,MVy2に変換される。
【0012】
ただし、CMOSセンサが加速度を持って移動している場合、水平方向および垂直方向動きベクトルは、走査線の位置に応じて異なる。そのため、動きベクトルMVx2,MVy2を補正するのが望ましい。
【0013】
図2は、動きベクトルMVx2,MVy2を補正する手法の一例を示す図である。同図では水平方向の動きベクトルについて示しているが、垂直方向の動きベクトルも同様である。上記(1),(2)式により算出された、あるフレームFaでの動きベクトルをMVx2a,MVy2aとし、引き続くフレームFbでの動きベクトルをMVx2b,MVy2bとする。これらの値は、例えばフレームFa,Fbの1ライン目の走査線を撮像した時の動きベクトルをそれぞれ表しているものとする。
【0014】
このとき、フレームFaのy番目の走査線における、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す水平方向動きベクトル(第3の水平方向動きベクトル)MVx3[y]および垂直方向動きベクトル(第3の垂直方向動きベクトル)MVy3[y]を、下記(3),(4)式を用いて算出する。
【0015】
MVx3[y]={MVx2b*y+MVx2a*(H−y)}/H ・・・(3)
MVy3[y]={MVy2b*y+MVy2a*(H−y)}/H ・・・(4)
上記(3),(4)式は、y番目の走査線における動きベクトルMVx3[y],MVy3[y]を、2フレームの動きベクトルを用いて線形補間して算出する例である。その他、3フレーム以上の動きベクトルMVx3[y],MVy3[y]を用いて2次補間、3次補間、スプライン補間等により算出してもよい。
【0016】
上記の動きベクトルMVx3[y],MVy3[y]は、1フレームを撮像する時間あたりの移動量を示している。したがって、1ラインを撮像する時間あたりの移動量はMVx3[y]/H,MVy3[y]/H,である。よって、1番目の走査線からy番目の走査線を撮像する間に、物体Objは下記(5),(6)式でそれぞれ表される水平方向および垂直方向移動量dx[y],dy[y]だけ移動する。
【数1】
【数2】
【0017】
このように、物体Obj内でも、走査線の位置yに応じて移動量が異なるため、図1に示すように、物体Objは歪んでしまう。
【0018】
そこで、走査線y毎の水平方向移動量dx[y]を水平方向補正量MODx[y]とし(MODx[y]=dx[y])、垂直方向移動量dy[y]を垂直方向補正量MODx[y]とする(MODy[y]=dy[y])。これら補正量MODx[y],MODy[y]は、(x,y)の画素を仮に1本目の走査線と同時に撮像していたとすると、その(x,y)の画素は(x−MODx[y],y−MODy[y])にあったことを意味する。よって、(x−MODx[y],y−MODy[y])の画素を(x,y)の画素に置き換える補正をすれば、言い換えると、(x,y)の画素を(x+MODx[y],y+MODy[y])の画素に置き換える補正をすればフォーカルプレーン歪みが補正される。
【0019】
このように、垂直方向動きベクトルMVy1を考慮して、1フレームを撮像する時間あたりの移動量を示す動きベクトルMVx2,MVy2を算出する。さらに、CMOSセンサの加速度を考慮して、走査線毎に、水平方向および垂直方向の移動量を示す動きベクトルMVx3[y],MVy3[y]を算出する。これらに基づいて、1番目の走査線からy番目の走査線を撮像する間の移動量を補正量MODx[y],MODy[y]として入力映像信号を補正する。これにより、高精度にフォーカルプレーン歪みを補正できる。
【0020】
特に、CMOSセンサの加速度を考慮するため、CMOSセンサが加速度を持って移動する場合、例えば等速で動いていたCMOSセンサが急に停止したような場合でも、精度良くフォーカルプレーン歪みを補正できる。
【0021】
図3は、第1の実施形態に係る画像処理システムの概略ブロック図である。画像処理システムは、CMOSセンサ1と、画像処理装置2と、外部機器3とを備えている。CMOSセンサ1により取得されたRAWデータである入力映像信号が画像処理装置2に入力される。画像処理装置2は入力映像信号のフォーカルプレーン歪みを補正して、出力映像信号を生成する。外部機器3は、例えば出力映像信号を表示する液晶ディスプレイ等の表示装置や、出力映像信号を記憶するフラッシュメモリやハードディスク等の記憶媒体である。
【0022】
画像処理装置2は、前処理部21と、フレームメモリ22と、動きベクトル生成部23と、動きベクトル変換部24と、動きベクトル補間部25と、補正量生成部26と、補正部27とを有する。本実施形態では、画像処理装置2とは別個にCMOSセンサ1が設けられている例を示すが、画像処理装置2と同一チップにCMOSセンサ1を搭載してもよい。
【0023】
前処理部21は、CMOSセンサ1から入力されるRAWデータからRGB補間を行って、各画素のRGB値を生成するとともに、このRGB値に基づいて所定のマトリクス変換を行い、Y(輝度)成分を生成する。生成されたRGB値およびY成分はフレームメモリ22に記憶される。フレームメモリ22は、例えば2フレームの画素情報を記憶できるものとする。このとき、各フレームの(x,y)の画素のRGB値はそれぞれ、フレームメモリ22の各フレームに対応するアドレス(x,y)に記憶されるものとする。
【0024】
動きベクトル生成部23は、CMOSセンサ1から入力される現在のフレームのY成分と、フレームメモリ22に記憶された過去のフレームにおけるY成分とを用いて動きベクトル探索を行い、フレームにつき1つの水平方向動きベクトルMVx1および垂直方向動きベクトルMVy1を生成する。生成された動きベクトルMVx1,MVy1は動きベクトル変換部24に入力される。
【0025】
より具体的には、フレーム中に複数画素からなるいくつか(例えば5個)のブロックを設定し、ブロック毎に差分絶対値和(Sum of Absolute Difference:SAD)によるブロックマッチング演算を行って動きベクトル探索を行う。そして、全ブロックの動きベクトルの平均またはメディアンをそのフレームの動きベクトルとする。あるいは別の手法として、現在および過去のフレームを縮小し、走査線毎に動きベクトル探索を行って、動きベクトル生成部23内の動きベクトル用ラインメモリ(不図示)に一旦記憶する。そして、全走査線の動きベクトルのメディアンをそのフレームの動きベクトルMVx1,MVy1とする。
【0026】
また、画像処理装置2とは別個に画像符号化装置(不図示)等が設けられ、外部から動きベクトルを取得してもよい。この場合、現在および過去のフレームのY成分を用いなくてもよい。
【0027】
動きベクトル変換部24は、フレーム間での移動量を示す動きベクトルMVx1,MVy1と、外部のホストプロセッサ(不図示)等から設定される全走査線数Hとが入力される。動きベクトル変換部24は、上記(1),(2)式に基づいて、1フレームを撮像する時間あたりの移動量を示す動きベクトルMVx2,MVy2を生成する。
【0028】
図4は、動きベクトル変換部24の内部構成の一例を示す図である。動きベクトル変換部24は、加算器41と、除算器42と、乗算器43,44とを有する。加算器41はMVy1+Hを生成する。除算器42はH/(MVy1+H)を生成する。乗算器43は動きベクトルMVx2を、乗算器44は動きベクトルMVy2をそれぞれ生成する。
【0029】
図3に戻り、動きベクトル補間部25は、動きベクトルMVx2,MVy2および全走査線数Hが入力され、例えば上記(3),(4)式に基づいて線形補間処理を行い、CMOSセンサの加速度を考慮した、走査線毎の動きベクトルMVx3[y],MVy3[y]を生成する。ここで、動きベクトルMVx2は、あるフレームに関する動きベクトルMVx2aと、引き続くフレームに関する動きベクトルMVx2bとを含む。動きベクトルMVy2も同様である。
【0030】
図5は、動きベクトル補間部25の内部構成の一例を示す図である。動きベクトル補間部25は、カウンタ51と、乗算器52と、減算器53と、乗算器54と、加算器55と、除算器56とを有する。なお、動きベクトルMVx3[y],MVy3[y]は類似した計算式により算出されるため、同図では動きベクトルMVx3[y]を生成するためのブロック図のみを示している。
【0031】
カウンタ51には、垂直同期信号Vsyncおよび水平同期信号Hsyncが入力される。カウンタ51は、水平同期信号Hsyncのパルス数をカウントし、垂直同期信号Vsyncに同期してカウント値をリセットすることにより、走査線位置yを生成する。乗算器52はMVx2b*yを生成する。減算器53はH−yを生成する。乗算器54はMVx2a*(H−y)を生成する。加算器55はMVx2b*y+MVx2a*(H−y)を生成する。除算器56は動きベクトルMVx3[y]を生成する。
【0032】
図3に戻り、補正量生成部26は、動きベクトルMVx3[y],MVy3[y]および全走査線数Hが入力され、上記(5),(6)式に基づいて、1番目の走査線からy番目の走査線を撮像する間の移動量dx[y],dy[y]、すなわち、水平方向および垂直方向補正量MODx[y],MODy[y]を算出する。
【0033】
図6は、補正量生成部26の内部構成の一例を示す図である。補正量生成部26は、アキュムレータ(ACC)61と、除算器62とを有する。なお、補正量MODx[y],MODy[y]は類似した計算式により算出されるため、同図では補正量MODx[y]を生成するためのブロック図のみを示している。
【0034】
アキュムレータ61には、垂直同期信号Vsync、水平同期信号Hsyncおよび走査線ごとに異なる動きベクトルMVx3[y]が入力される。垂直同期信号Vsyncがフレームの先頭を示すとき、アキュムレータ61は積算値を0にリセットする。水平同期信号Hsyncが走査線の先頭を示すとき、アキュムレータ61は積算値に動きベクトルMVx3[y]をさらに加算して出力する。その他の場合、アキュムレータ61は積算値を保持して出力する。積算値はΣMVx3[v](v=0〜y)である。除算器62は積算値を全走査線数Hで除して、補正量MODx[y]を生成する。なお、本実施形態では、補正量MODx[y],MODy[y]が整数精度となるよう、小数点以下の切り捨てまたは四捨五入等を行う。
【0035】
図3に戻り、補正部27は、補正量MODx[y],MODy[y]およびフレームメモリ22に記憶された現在のフレームのRGB値を用いて、入力映像信号を補正する。より具体的には、(x,y)の画素のRGB値を、(x+MODx[y],y+MODy[y])の画素のRGB値で置き換える補正を行う。
【0036】
図7は、補正部27の内部構成の一例を示す図である。補正部27は、カウンタ71,72と、加算器73,74とを有する。カウンタ71には水平同期信号Hsyncが入力され、水平同期信号Hsyncのアサートによりカウント値を0にリセットしながらカウントアップを繰り返すことで位置xを算出する。加算器73は、位置xと水平方向補正量MODx[y]とを加算し、水平方向アドレスADRx(=x+MODx[y])を生成する。カウンタ72には垂直同期信号Vsyncと水平同期信号Hsyncが入力され、垂直同期信号Vsyncのアサートによりカウント値を0にリセットしながら水平同期信号Hsyncのパルスの数をカウントすることで位置yを算出する。加算器74は、位置yと垂直方向補正量MODy[y]とを加算し、垂直方向アドレスADRy(=y+MODy[y])を生成する。そして、フレームメモリ22からアドレス(ADRx,ADRy)に記憶されたRGB値を読み出し、補正後の出力映像信号とする。これにより、フォーカルプレーン歪みを抑制できる。
【0037】
図8は、画像処理装置2の処理動作を示すフローチャートである。初めは、フレームメモリ12にフレームF1のY成分およびRGB値が記憶されているものとする。CMOSセンサ1からフレームF1に引き続くフレームF2の入力映像信号が入力されると、前処理部21はRGB値とY成分を生成する(S1)。次に、動きベクトル生成部23は、現在のフレームF2のY成分と、フレームメモリ22に記憶された過去のフレームF1のY成分とを用いて動きベクトルMVx,MVyを生成する(S2)。その後、フレームメモリ22をフレームF2のRGB値およびY成分に更新する(S3)。
【0038】
さらに、動きベクトル変換部24は、動きベクトルMVx1,MVy1を上記(1),(2)式に基づいて変換し、動きベクトルMVx2,MVy2を生成する(S4)。そして、動きベクトル補間部25は、上記(3),(4)式に基づいて、CMOSセンサ1の加速度を考慮した補間処理を行い、動きベクトルMVx3[y],MVy3[y]を生成する(S5)。
【0039】
続いて、補正量生成部26は、上記(5),(6)式に基づいて、走査線位置y毎に、垂直方向動きベクトルMVyを考慮した補正量MODx[y],MODy[y]を生成する(S6)。そして、補正部27は各位置(x,y)のRGB値を、補正量MODx[y],MODy[y]およびフレームメモリ22に記憶されたフレームF1のRGB画素値を用いて、補正する(S7)。補正されたRGB値からなる出力映像信号は外部機器3に供給される。
【0040】
このように、第1の実施形態では、垂直方向動きベクトルMVyおよびCMOSセンサ1の加速度を考慮した補正量MODx[y],MODy[y]を生成し、補正を行う。そのため、高精度にフォーカルプレーン歪みを補正できる。
【0041】
なお、上述した例ではフレームメモリ12が2フレームの画素情報を記憶するものであったが、必ずしも2フレームを記憶するメモリでなくてもよい。例えば、1フレームを記憶するフレームメモリに加え、垂直方向の補正で必要となる補正量MODy[y]の最大値と、動きベクトル探索で必要となる動きベクトル探索範囲の垂直方向の最大値と、のうちの最大値に相当するライン数を記憶できるラインメモリを用いてもよい。
【0042】
(第2の実施形態)
第1の実施形態の動きベクトル補間部25および補正量生成部26は、外部から全走査線数Hのみが設定されて、動きベクトルMVx3[y],MVy3[y]および補正量MODx[y],MODy[y]をそれぞれ生成した。これに対し、第2の実施形態の動きベクトル補間部25aおよび補正量生成部26aは、さらに多くのパラメータが設定されて、動きベクトルMVx3[y],MVy3[y]および補正量MODx[x],MODy[y]を生成するものである。
【0043】
図9は、第2の実施形態に係る画像処理システムの概略ブロック図である。図9では、図3と共通する構成部分には同一の符号を付しており、以下では相違点を中心に説明する。
【0044】
まず、図9の画像処理システムでは、画像処理装置2a内の動きベクトル補間部25aの内部構成が、図5の動きベクトル補間部25とは異なっている。動きベクトル補間部25aは、外部から全走査線数Hに加え、任意の係数aおよびビットシフト量Sft1がパラメータとして設定される。そして、動きベクトル補間部25aは、下記(7),(8)式に基づいて動きベクトルMVx3[y],MVy3[y]を生成する。
【0045】
MVx3[y]={MVx2b*y+MVx2a*(H−y)}*a>>Sft1 ・・・(7)
MVy3[y]={MVy2b*y+MVy2a*(H−y)}*a>>Sft1 ・・・(8)
ここで、>>Sftは右にビットシフト量Sft1だけビットシフトすることを示し、2のSft1乗で除すことと等価である。
【0046】
図10は、動きベクトル補間部25aの内部構成の一例を示す図である。以下、図5の動きベクトル補間部25との違いを説明する。動きベクトル補間部25aは、乗算器61と、ビットシフト器62とを有する。乗算器61は、加算器55の出力に係数aを乗じて、{MVx2b*y+MVx2a*(H−y)}*aを生成する。ビットシフト器62は乗算器61の出力をビットシフト量Sft1だけビットシフトして、動きベクトルMVx3[y]を生成する。
【0047】
さらに、図9の画像処理システムは、画像処理装置2a内の補正量生成部26aの内部構成が、図3の補正量生成部26の内部構成とは異なっている。補正量生成部26aは、外部から任意の係数bおよびビットシフト量Sft2がパラメータとして設定される。そして、補正量生成部26aは、下記(9),(10)式により移動量dx[y],dy[y]すなわち水平方向補正量MODx[y]および垂直方向補正量MODy[y]を生成する。
【数3】
【数4】
【0048】
なお、第2の実施形態では、補正量MODx[y],MODy[y]が整数精度となるよう、係数bに応じてビットシフト量Sft2を定める。
【0049】
図11は、補正量生成部26aの内部構成の一例を示す図である。以下、図6の補正量生成部26との違いを説明する。補正量生成部26aは、乗算器63とビットシフト器64とを有する。乗算器63は、アキュムレータ61の出力に係数bを乗じて、b*ΣMVx3[v](v=0〜y)を生成する。ビットシフト器64は乗算器63の出力をビットシフト量Sft2だけビットシフトして、上記(9)式の補正量MODx[y]を生成する。
【0050】
上記の(7),(8),(9),(10)式のパラメータを外部から設定することにより、補正量を柔軟に調整することができる。例えば、誤補正を防ぐために補正量を小さく設定したい場合は、係数a,bを1倍に相当する値より小さく設定すればよい。動きベクトルMVx3[y],MVy3[y]および補正量MODx[y],MODy[y]は、係数a,bにそれぞれ比例するため、その調整が簡易に行える。
【0051】
特に画像処理装置2aをハードウェアで実現する場合、係数a,bを乗じてビットシフトすることで、除算器をもう1つ用いることに比べて、ハードウェアの規模を抑えて、調整を行うことができる。
【0052】
このように、第2の実施形態では、第1の実施形態に加え、係数a,bおよびビットシフト量Sft1,Sft2を外部から設定して、補正量MODx[y],MODy[y]を生成する。そのため、外部から補正量を簡易に調整できる。
【0053】
(第3の実施形態)
第1および第2の実施形態は、補正量MODx[y],MODy[y]を整数精度とし、補正対象の画素をフレーム内に存在するいずれかの画素で置き換えて補正するものであった。これに対し、第3の実施形態は、補正量MODx[y],MODy[y]を小数精度とし、フレーム内の1または複数の画素から生成される画素で置き換えて補正するものである。
【0054】
図12は、第3の実施形態による補正を説明する図である。同図では、補正量MODx[y],MODy[y]を小数以下2ビットまで、すなわち、0.25の単位まで算出する例を示している。同図の黒丸はフレームメモリから読み出される画素の位置を示しており、整数座標にのみ存在する。これに対し、白ヌキ四角は、置き換えられる可能性がある画素の位置の例を示しており、0.25単位の座標に存在する。これらは、補間により生成される。
【0055】
例えば位置P(5,1)に存在する画素において、水平方向補正量MODx[1]=0.25、垂直方向補正量MODy[y]=1.75である場合、置き換えるべき画素の位置はP’(5.25,2.75)となる。実際には、この位置に画素は存在しない。そのため、周囲の画素、例えば位置A(5,2),B(6,2),C(5,3),D(6,3)の4つの画素のRGB値から位置P’(5.25,2.75)の画素のRGB値を畳み込み演算(フィルタ処理)を行って補間する。そして、位置P(5,1)の画素のRGB値を、補間により生成された位置P’(5.25,2.75)のRGB値で置き換える補正を行う。このように補正量MODx[y],MODy[y]を小数精度まで制御することで、補正の精度を向上できる。
【0056】
補正量MODx[y],MODy[y]を小数精度とするためには、例えば第1の実施形態の(5),(6)式で小数点以下まで計算したり、第2の実施形態のビットシフト量Sft2を小さく設定したりすればよい。
【0057】
図13は、第3の実施形態の補正部27aの内部構成の一例を示す図である。補正部27aは、カウンタ71,72と、加算器73,74と、補間部80とを有する。補間部80は、係数テーブル81と、乗算器82と、加算器83と、アキュムレータ(ACC)84とを有する。
【0058】
以下、図12と同様の条件にて、図13の補正部27aの動作を説明する。図7の補正部27と同様に、カウンタ71,72は位置x,yをそれぞれ算出する。また、加算器73,74は水平方向アドレスADRx(=x+MODx[y])および垂直方向アドレスADRy(=y+MODy[y])を生成する。ここで、補正量MODx[y],MODy[y]は小数点以下2ビットまでの精度を有するため、アドレス(ADRx,ADRy)も同様に小数以下2ビットまでの精度を有する。
【0059】
そして、フレームメモリ22からアドレス(ADRx,ADRy)の周囲の整数座標に存在する画素のRGB値が読み出される。そして、乗算器82は、アドレス(ADRx,ADRy)との距離に応じて予め定められ、係数テーブル81に格納されたフィルタ係数と、読み出されたRGB値のそれぞれとを乗じ、加算器83およびアキュムレータ84により積算する。
【0060】
図12の例では、アドレス(5.25,2.75)の周囲に存在するアドレス(5,2),(6,2),(5,3),(6,3)のそれぞれについて、上記の処理が行われる。アドレス(5,3)のRGB値には、アドレス(5.25,2.75)との距離が小さいため、比較的大きな値のフィルタ係数が乗じられる。一方、アドレス(6,2)のRGB値には、アドレス(5.25,2.75)との距離が大きいため、比較的小さな値のフィルタ係数が乗じられる。
【0061】
このようにして、補間されたRGB値を補正後のRGB値とする。
【0062】
また、本実施形態では、補間されたRGB値を求める際の畳み込み演算では、1画素あたりに複数回のフレームメモリ22へのアクセスが行われる。しかしながら、畳み込み演算ではフレーム中のデータ局所性を有するため、フレームメモリ22と補正部27aとの間にフレームメモリ参照キャッシュ(不図示)を設けることや、メモリ参照コントローラ(不図示)を設けることで、消費電力やメモリアクセスレイテンシを削減することも可能である。
【0063】
なお、第3の実施形態では、補正量MODx[y],MODy[y]を小数点以下2ビットの精度としたが、より高精度にしてもよい。また、補間の手法は任意でよく、4つ以上の画素のRGB値を用いて補間してもよいし、最近接の画素1つのみで補間してもよい。
このように、第3の実施形態では、補正量MODx[y],MODy[y]を小数点以下まで算出し、1または複数の画素から補間されるRGB値を用いて補正を行う。そのため、補正量をより細かく制御でき、補正の精度が向上する。
【0064】
なお、各実施形態の入力映像信号は、走査線毎に順に撮像されたものであればよく、CMOSセンサでなく他の撮像装置により撮像されたものであってもよい。
各実施形態で説明した画像処理システムの少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、画像処理システムの少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。また、画像処理システムの少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【0065】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0066】
1 CMOSセンサ
2,2a 画像処理装置
3 外部機器
21 前処理部
22 フレームメモリ
23 動きベクトル生成部
24 動きベクトル変換部
25,25a 動きベクトル補間部
26,26a 補正量生成部
27,27a 補正部
【特許請求の範囲】
【請求項1】
走査線順に撮像して入力映像信号を生成する撮像装置と、
前記入力映像信号におけるフレーム間の水平方向および垂直方向の移動量をそれぞれ示す第1の水平方向動きベクトルおよび第1の垂直方向動きベクトルを生成する動きベクトル生成部と、
前記第1の水平方向動きベクトルおよび前記第1の垂直方向動きベクトルを、前記第1の垂直方向動きベクトルを考慮して、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第2の水平方向動きベクトルおよび第2の垂直方向動きベクトルにそれぞれ変換する動きベクトル変換部と、
少なくとも2つのフレームについての前記第2の水平方向動きベクトルおよび前記第2の垂直方向動きベクトルを用いて補間処理を行い、前記走査線毎の、前記1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第3の水平方向動きベクトルおよび第3の垂直方向動きベクトルをそれぞれ生成する動きベクトル補間部と、
前記第3の水平方向動きベクトルおよび前記第3の垂直方向動きベクトルに基づいて、前記走査線毎に水平方向補正量および垂直方向補正量をそれぞれ生成する補正量生成部と、
前記水平方向補正量および前記垂直方向補正量に基づいて、前記入力映像信号を補正して出力映像信号を生成する補正部と、を備えることを特徴とする画像処理システム。
【請求項2】
前記補正量生成部は、下記(1)式に基づいて前記水平方向補正量を生成し,下記(2)式に基づいて前記垂直方向補正量を生成することを特徴とする請求項1に記載の画像処理システム
【数1】
【数2】
ここで、MODx[y]はy番目の前記走査線における前記水平方向補正量、MVx3[v]はv番目の前記走査線における前記第3の水平方向動きベクトル、MODy[y]は前記y番目の走査線における前記垂直方向補正量、MVy3[v]は前記v番目の前記走査線における前記第3の垂直方向動きベクトル、Hは全走査線数。
【請求項3】
前記補正量生成部は、下記(3)式に基づいて前記水平方向補正量を生成し,下記(4)式に基づいて前記垂直方向補正量を生成することを特徴とする請求項1に記載の画像処理システム
【数3】
【数4】
ここで、MODx[y]はy番目の前記走査線における前記水平方向補正量、MVx3[v]はv番目の前記走査線における前記第3の水平方向動きベクトル、MODy[y]は前記y番目の走査線における前記垂直方向補正量、MVy3[v]は前記v番目の前記走査線における前記第3の垂直方向動きベクトル、bは任意の定数、Sft2は任意のビットシフト量。
【請求項4】
前記水平方向および垂直方向補正量が小数点以下の精度を有する場合、
前記補正部は、補正対象の画素から前記水平方向補正量および垂直方向補正量だけずれた位置の画素を、その周囲の1または複数の画素を用いて生成し、前記補正対象の画素を前記生成された画素に置き換えることを特徴とする請求項1に記載の画像処理システム。
【請求項5】
走査線順に撮像された入力映像信号における1フレームでの移動量を示す第1の水平方向動きベクトルおよび第1の垂直方向動きベクトルを生成する動きベクトル生成部と、
前記第1の水平方向動きベクトルおよび前記第1の垂直方向動きベクトルを、前記第1の垂直方向動きベクトルを考慮して、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第2の水平方向動きベクトルおよび第2の垂直方向動きベクトルにそれぞれ変換する動きベクトル変換部と、
少なくとも2つのフレームについての前記第2の水平方向動きベクトルおよび前記第2の垂直方向動きベクトルを用いて補間処理を行い、前記走査線毎の、前記1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第3の水平方向動きベクトルおよび第3の垂直方向動きベクトルをそれぞれ生成する動きベクトル補間部と、
前記第3の水平方向動きベクトルおよび前記第3の垂直方向動きベクトルに基づいて、前記走査線毎に水平方向補正量および垂直方向補正量をそれぞれ生成する補正量生成部と、
前記水平方向補正量および前記垂直方向補正量に基づいて、前記入力映像信号を補正して出力映像信号を生成する補正部と、を備えることを特徴とする画像処理装置。
【請求項6】
走査線順に撮像された入力映像信号における1フレームでの移動量を示す第1の水平方向動きベクトルおよび第1の垂直方向動きベクトルを生成するステップと、
前記第1の水平方向動きベクトルおよび前記第1の垂直方向動きベクトルを、前記第1の垂直方向動きベクトルを考慮して、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第2の水平方向動きベクトルおよび第2の垂直方向動きベクトルにそれぞれ変換するステップと、
少なくとも2つのフレームについての前記第2の水平方向動きベクトルおよび前記第2の垂直方向動きベクトルを用いて補間処理を行い、前記走査線毎の、前記1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第3の水平方向動きベクトルおよび第3の垂直方向動きベクトルをそれぞれ生成するステップと、
前記第3の水平方向動きベクトルおよび前記第3の垂直方向動きベクトルに基づいて、前記走査線毎に水平方向補正量および垂直方向補正量をそれぞれ生成するステップと、
前記水平方向補正量および前記垂直方向補正量に基づいて、前記入力映像信号を補正して出力映像信号を生成するステップと、を備えることを特徴とする画像処理方法。
【請求項1】
走査線順に撮像して入力映像信号を生成する撮像装置と、
前記入力映像信号におけるフレーム間の水平方向および垂直方向の移動量をそれぞれ示す第1の水平方向動きベクトルおよび第1の垂直方向動きベクトルを生成する動きベクトル生成部と、
前記第1の水平方向動きベクトルおよび前記第1の垂直方向動きベクトルを、前記第1の垂直方向動きベクトルを考慮して、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第2の水平方向動きベクトルおよび第2の垂直方向動きベクトルにそれぞれ変換する動きベクトル変換部と、
少なくとも2つのフレームについての前記第2の水平方向動きベクトルおよび前記第2の垂直方向動きベクトルを用いて補間処理を行い、前記走査線毎の、前記1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第3の水平方向動きベクトルおよび第3の垂直方向動きベクトルをそれぞれ生成する動きベクトル補間部と、
前記第3の水平方向動きベクトルおよび前記第3の垂直方向動きベクトルに基づいて、前記走査線毎に水平方向補正量および垂直方向補正量をそれぞれ生成する補正量生成部と、
前記水平方向補正量および前記垂直方向補正量に基づいて、前記入力映像信号を補正して出力映像信号を生成する補正部と、を備えることを特徴とする画像処理システム。
【請求項2】
前記補正量生成部は、下記(1)式に基づいて前記水平方向補正量を生成し,下記(2)式に基づいて前記垂直方向補正量を生成することを特徴とする請求項1に記載の画像処理システム
【数1】
【数2】
ここで、MODx[y]はy番目の前記走査線における前記水平方向補正量、MVx3[v]はv番目の前記走査線における前記第3の水平方向動きベクトル、MODy[y]は前記y番目の走査線における前記垂直方向補正量、MVy3[v]は前記v番目の前記走査線における前記第3の垂直方向動きベクトル、Hは全走査線数。
【請求項3】
前記補正量生成部は、下記(3)式に基づいて前記水平方向補正量を生成し,下記(4)式に基づいて前記垂直方向補正量を生成することを特徴とする請求項1に記載の画像処理システム
【数3】
【数4】
ここで、MODx[y]はy番目の前記走査線における前記水平方向補正量、MVx3[v]はv番目の前記走査線における前記第3の水平方向動きベクトル、MODy[y]は前記y番目の走査線における前記垂直方向補正量、MVy3[v]は前記v番目の前記走査線における前記第3の垂直方向動きベクトル、bは任意の定数、Sft2は任意のビットシフト量。
【請求項4】
前記水平方向および垂直方向補正量が小数点以下の精度を有する場合、
前記補正部は、補正対象の画素から前記水平方向補正量および垂直方向補正量だけずれた位置の画素を、その周囲の1または複数の画素を用いて生成し、前記補正対象の画素を前記生成された画素に置き換えることを特徴とする請求項1に記載の画像処理システム。
【請求項5】
走査線順に撮像された入力映像信号における1フレームでの移動量を示す第1の水平方向動きベクトルおよび第1の垂直方向動きベクトルを生成する動きベクトル生成部と、
前記第1の水平方向動きベクトルおよび前記第1の垂直方向動きベクトルを、前記第1の垂直方向動きベクトルを考慮して、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第2の水平方向動きベクトルおよび第2の垂直方向動きベクトルにそれぞれ変換する動きベクトル変換部と、
少なくとも2つのフレームについての前記第2の水平方向動きベクトルおよび前記第2の垂直方向動きベクトルを用いて補間処理を行い、前記走査線毎の、前記1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第3の水平方向動きベクトルおよび第3の垂直方向動きベクトルをそれぞれ生成する動きベクトル補間部と、
前記第3の水平方向動きベクトルおよび前記第3の垂直方向動きベクトルに基づいて、前記走査線毎に水平方向補正量および垂直方向補正量をそれぞれ生成する補正量生成部と、
前記水平方向補正量および前記垂直方向補正量に基づいて、前記入力映像信号を補正して出力映像信号を生成する補正部と、を備えることを特徴とする画像処理装置。
【請求項6】
走査線順に撮像された入力映像信号における1フレームでの移動量を示す第1の水平方向動きベクトルおよび第1の垂直方向動きベクトルを生成するステップと、
前記第1の水平方向動きベクトルおよび前記第1の垂直方向動きベクトルを、前記第1の垂直方向動きベクトルを考慮して、1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第2の水平方向動きベクトルおよび第2の垂直方向動きベクトルにそれぞれ変換するステップと、
少なくとも2つのフレームについての前記第2の水平方向動きベクトルおよび前記第2の垂直方向動きベクトルを用いて補間処理を行い、前記走査線毎の、前記1フレームを撮像する時間あたりの水平方向および垂直方向の移動量を示す第3の水平方向動きベクトルおよび第3の垂直方向動きベクトルをそれぞれ生成するステップと、
前記第3の水平方向動きベクトルおよび前記第3の垂直方向動きベクトルに基づいて、前記走査線毎に水平方向補正量および垂直方向補正量をそれぞれ生成するステップと、
前記水平方向補正量および前記垂直方向補正量に基づいて、前記入力映像信号を補正して出力映像信号を生成するステップと、を備えることを特徴とする画像処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−89989(P2013−89989A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−225660(P2011−225660)
【出願日】平成23年10月13日(2011.10.13)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願日】平成23年10月13日(2011.10.13)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]