JP2008065722A - 画像データ処理装置および画像データ処理方法 - Google Patents

画像データ処理装置および画像データ処理方法 Download PDF

Info

Publication number
JP2008065722A
JP2008065722A JP2006245006A JP2006245006A JP2008065722A JP 2008065722 A JP2008065722 A JP 2008065722A JP 2006245006 A JP2006245006 A JP 2006245006A JP 2006245006 A JP2006245006 A JP 2006245006A JP 2008065722 A JP2008065722 A JP 2008065722A
Authority
JP
Japan
Prior art keywords
processing
image
image data
vertical
horizontal
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.)
Granted
Application number
JP2006245006A
Other languages
English (en)
Other versions
JP4702233B2 (ja
Inventor
Toshiyuki Minami
利行 皆見
Toru Kurata
徹 倉田
Jinko Wada
仁孝 和田
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2006245006A priority Critical patent/JP4702233B2/ja
Priority to US11/852,852 priority patent/US8350927B2/en
Publication of JP2008065722A publication Critical patent/JP2008065722A/ja
Application granted granted Critical
Publication of JP4702233B2 publication Critical patent/JP4702233B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N25/00Circuitry of solid-state image sensors [SSIS]; Control thereof
    • H04N25/60Noise processing, e.g. detecting, correcting, reducing or removing noise
    • H04N25/61Noise processing, e.g. detecting, correcting, reducing or removing noise the noise originating only from the lens unit, e.g. flare, shading, vignetting or "cos4"
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6812Motion detection based on additional sensors, e.g. acceleration sensors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2101/00Still video cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0084Digital still camera

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Image Input (AREA)
  • Studio Devices (AREA)

Abstract

【課題】画像歪みが大きくなって、1処理単位周期内で処理を完了できなくなって画像データ処理システムが破綻するのを防止する。
【解決手段】メモリ制御手段54は、画像メモリ6に対して、水平方向の複数画素単位で、書き込みアクセスまたは読み出しアクセスの1サイクルを行うと共に、複数サイクルを処理単位周期として、複数個の処理手段のそれぞれからの要求に応じた書き込みまたは読み出しのアクセス処理を、処理単位周期内に1サイクル単位ですべて割り当てて実行する。処理手段からの要求に基づいて指定されたアクセス処理が完了できるか否かを判別し、アクセス処理が完了できないと判別したときに、要求を出した処理手段に対して、新たな前記要求の送出を一時停止させると共に、当該アクセス処理を行うべき処理単位周期に続く1または複数の処理単位周期においても当該アクセス処理を行う。
【選択図】図1

Description

この発明は、例えばデジタルビデオカメラの撮像画像についての画像処理に適用して好適な画像データ処理装置および画像データ処理方法に関する。
例えばビデオカメラなどの撮像装置には、撮影画像を一時的に記憶する画像メモリを備え、この画像メモリを用いることにより、撮像画像データを所望の解像度の出力画像データとしたり、撮像画像データに対して、電子手ぶれ補正処理をしたり、いわゆる電子ズームなどの効果処理を施したりする画像処理機能を備えているものが多い。
従来、この種の画像メモリを用いる画像データ処理の方法の一例として、特許文献1(特許第2956527号公報)に記載された画像データ処理方法がある。この特許文献1に記載の画像データ処理方法は、画像処理を水平方向処理と、垂直方向処理とに分けて実行するものである。図54を参照して、この特許文献1に記載の画像処理方法を説明する。
すなわち、図54に示すように、撮像素子からの入力撮像画像データ(A/D変換されたデジタル画像信号であるとする)は、制御部301からの書き込み/読み出し制御信号W/Rによる書き込み制御により、1画面分の撮像画像データが保存可能な容量を有する画像メモリ302に書き込まれる。
そして、この画像メモリ302に書き込まれた撮像画像データは、制御部301からの書き込み/読み出し制御信号W/Rによる読み出し制御により、1垂直周期遅れて読み出されて、水平解像度変換や水平方向手ぶれ補正などの水平方向処理部303に供給される。水平方向処理部303では、水平方向の解像度が指定されたものとなるようにするため、あるいは、水平方向の手ぶれを補正するために、画像データに対して画素間引きや画素補間を行なう。
水平方向処理部303で水平方向処理された撮像画像データは、垂直方向処理部304に供給される。垂直方向処理部304では、垂直方向の解像度が指定されたものとなるようにするため、あるいは、垂直方向の手ぶれを補正するために、画像データに対してライン間引きやライン補間を行なって垂直方向処理を行ない、例えば手ぶれ補正がなされた所望の解像度の出力撮像画像信号を出力する。
ここで、画像メモリ302の記憶容量は、撮像画像データの1画面分(1垂直周期分)以上の容量とされており、この画像メモリ302には、図55において実線で示すようにして、撮像画像データの書き込みがなされる。そして、図55において破線で示すように、書き込みに対して1垂直周期遅れて、当該書き込まれた撮像画像データが順次に読み出される。
画像メモリ302の記憶容量として、1画面分以上必要であるのは、この例では、1垂直周期遅れて画像データの読み出しが行なわれるためである。すなわち、画像メモリ302の画像データは、1垂直周期経過すると、次の垂直周期分の画像データにより上書きされてしまうので、それを回避するべく、画像データの読み出しが行なわれる前に、次の1画面分の画像データにより前の画像データが上書きされてしまわないようにするため、記憶容量として1画面分を越える分のマージンを必要とするからである。
このようにすることにより、画像メモリ302においては、書き込みに対して読み出しが追い越すことなく、撮像画像データの書き込みおよび読み出しがなされて、解像度変換処理等が行なわれ、所望の解像度の画像データ等が出力される。
しかし、この特許文献1の画像データ処理方法では、画像メモリ302としては、撮像素子の最高解像度分の画素数(=水平方向の画素数×ライン数)に対応したメモリ容量が必要となる。例えば、HD(High Definition;高精細度)画像のデータが処理対象であって、当該HD画像データの1フィールド分の輝度信号および色差信号を、8ビット/画素で記憶すると、画像メモリ302として必要な記憶容量は約12Mビットとなる。このため、非常に大容量のメモリが必要になり、画像メモリが大型化すると共に、高価格となる。
また、撮像素子として、より多い画素数のものを用いた場合には、それに対応して、画像メモリ302の記憶容量を大きくする必要があるという問題もある。
これに対して、図56に示すように、水平方向処理部303を、画像メモリ301の前段に設け、撮像素子からの撮像画像データを、そのまま画像メモリ302に書き込むのではなく、水平方向処理部303により水平解像度変換などの水平方向の画像処理を画像データに施して、水平方向の画像データ量を小さくした後、画像メモリ301に、1画面分の撮像画像データを書き込むようにする方法も考えられる。この場合も、画像メモリ301からは、1垂直周期分遅れたタイミングで画像データが読み出されて、垂直方向処理部304に供給され、垂直解像度変換などの垂直方向の画像処理がなされて、出力画像信号とされる。
この図56の例の場合には、画像メモリ302には、水平方向処理部303で水平方向の画像処理を行なって画素数が少なくなった1画面分の画像データが書き込まれることになる。このため、画像メモリ302の記憶容量は、水平方向の画像処理後の1画面分の画像データ量でよいので、図54の例の構成の場合よりも画像メモリ302の記憶容量を少なくすることができる。
ところで、図56のように、水平方向処理をした画像データを画像メモリに書き込み、当該画像メモリから、垂直方向処理のために画像データを読み出すとき、画像処理内容によって、次のような問題が発生する。
図56の構成の垂直方向処理においては、処理結果として得ようとするラインの要求REQを制御部301に対して送る。すると、制御部301は、要求されたラインの画像データを垂直補間などにより得るための複数のラインを計算し、その画像メモリ302上のアドレスを求める。そして、求めたアドレスを用いて、要求されたラインの垂直方向処理に必要な複数ラインのデータを画像メモリ302から読み出すようにする。
この場合に、例えば、一般的に、電子手ぶれ補正、電子ズーム、解像度変換などの画像処理においては、図57に示すように、垂直方向処理部304が処理しようとするラインが決まると、当該ラインの垂直方向処理に必要な複数ラインのそれぞれのアドレス(垂直方向アドレス)は、水平方向には変化することはない。
したがって、ラインの要求REQが制御部301に到来したとき、制御部301では、1ライン分の画像データの処理に、同じ垂直方向アドレスを指定することにより、画像データの読み出しが可能となる。
ところが、画像処理の中には、ラインの要求REQが制御部301に到来したとき、制御部301では、1ライン分の画像データの読み出し処理の際に、同じ垂直方向アドレスを指定するだけではなく、水平方向の画素位置に応じて垂直方向アドレスを変更しなければならない場合がある。この場合の一例を、次に示す。
一般に撮像レンズは歪曲収差特性を有しており、このため、撮像画像には、例えば図58に示すような歪みが生じる。高精度で高性能な撮像レンズを用いた場合には、この撮像画像歪みは目立たないが、低価格の撮像レンズを使用する場合や光学ズームレンズを使用する場合には、無視できない程度の画像歪みが生じる。
すなわち、例えば図58(A)に示すような格子縞の被写体を、歪曲収差が大きい撮像レンズを用いて撮像したときには、その撮像画像は、図58(B)に示すように、格子縞を構成する縦横の直線が、湾曲するような画像歪みを生じる。この撮像レンズによる画像歪みは、撮像素子の各画素位置に応じたものであり、かつ、撮像レンズごとに特有のものであり、また、撮像素子に対する撮像レンズの位置が変化すると、その位置に応じたものとなる。
このような撮像レンズによる画像歪みを補正する画像処理を行なう場合においても、水平方向の画像歪みと、垂直方向の画像歪みとに分けて、水平方向の画像歪みを水平方向処理部303で補正した後、画像メモリ302に書き込み、垂直方向処理部304からのライン要求REQに応じて、制御部301が、垂直方向処理に必要な複数ラインを計算して、画像メモリ302から読み出すようにすることが考えられる。
しかし、この場合の1つの要求ラインに対して、垂直方向処理に必要なラインは、図59に示すように、水平方向の画素位置に応じて垂直アドレスを変更するような処理が必要になる。すなわち、垂直処理後に1ラインとなるべき要求ラインの画素データは、図59の左側に示すように、垂直方向処理前の画像においては、垂直方向にずれた位置にある。
垂直方向処理は、要求ラインに対して、その上下複数ラインを用いて補間処理を行なうようにするものであるので、この場合には、垂直方向処理前の画像における要求ラインの画素の上下複数ラインに含まれる画素の垂直方向アドレスは、要求ラインの画素位置の水平方向位置が変化する毎に変化することになる。つまり、垂直方向処理のための画像メモリ302に対する垂直方向アドレスは、1ラインの処理について固定ではなく、水平方向の画素毎にランダムに変化するものとなる。
この結果、撮像レンズによる画像歪みを補正する画像処理の垂直方向処理においては、画像メモリ302からの画像データの読み出しは、水平方向の画素位置に応じて、ランダムなライン位置からの読み出し、つまり、ランダムアクセスが必要となる。
画像メモリ302からの読み出しについて、ランダムアクセスを回避する最も容易な方法は、図60に示すように、処理要求されたラインに注目し、その1ラインについての垂直方向処理で必要とする複数ラインの最上位ラインと最下位ラインを検索し、当該最上位ラインと最下位ラインの間の範囲の複数ラインの全てを読み出す方法である。
この方法は、画像メモリから読み出すラインのアドレス計算は容易であるが、垂直方向処理には不必要な画素(図60において塗りを付していない空白により示す)を多数読み出すことになり、その分、消費電力が大きくなるだけでなく、最悪はリアルタイム処理を可能とするために、クロック周波数を高くしなければならなくおそれがある。
これに対して、図61に示すように、処理要求されたラインの各画素毎に、垂直方向処理で必要とする複数ラインアドレスを計算し、当該画素毎の複数ラインアドレスにより垂直方向処理に必要な画素データを読み出すようにすれば、垂直方向処理には不必要な画素は一切読み出さないので、図60の場合のような問題は生じない。
しかしながら、図61の方法の場合には、処理要求されたラインの各画素毎に、垂直方向処理で必要とする複数ラインアドレスを計算する必要がある上、その都度、読み出しコマンドを発行する必要があり、やはり消費電力の点で実用的ではない。
以上の点にかんがみ、出願人は、上記の消費電力の問題および処理効率の問題を改善することができる画像データ処理方法および装置を、特許文献2(特開2006−222827号公報)として提供した。
この特許文献2の処理方法は、図60のように、処理要求されたラインについての1ライン全体について垂直方向処理で必要とする複数ラインの最上位ラインと最下位ラインを検索するのではなく、1ライン分の有効画素数の1/N(Nは2以上の正の整数)からなる水平方向の複数画素単位で、処理要求されたラインについて垂直方向処理で必要とする複数ラインの最上位ラインと最下位ラインとを検索する。
図62に、例えば水平方向の8画素単位で、処理要求されたラインについて垂直方向処理で必要とする複数ラインの最上位ラインと最下位ラインとを検索した場合の例を示す。
この特許文献2の方法によれば、画像メモリ領域に対する画像データの書き込みおよび読み出しは、複数画素単位であるので、上述の図60の方法のように複数ライン分を読み出す場合に比べて、画像メモリ領域から読み出される垂直方向処理に不必要な画素の数を少なくすることができ、処理効率が向上する。
すなわち、水平8画素内の垂直方向の歪みの変動をチェックした後、そのアクセス範囲を決定することで、垂直方向のメモリアクセスは、水平8画素内で最低限必要な範囲だけのアクセスが可能となり、不必要なデータの読み出しは削減できる。図60の場合と比べると、図62に示すように、不必要なデータの読み出しは削減できていることがわかる。
また、特許文献2の方法においては、画像メモリに対する画像データの読み出しは、複数画素単位例えば8画素単位で行なうようにしているので、読み出しコマンドの発行回数は当該複数画素単位となり、上述の図61の方法のように画素単位にコマンドを発生する場合に比べて少なくなり、低消費電力化することができる。
以上のことから、先に提供した特許文献2の手法によれば、図60の場合および図61の場合に存在する問題を解決して、低消費電力化と、高処理効率化を実現することができる。
上記の特許文献および非特許文献は、次の通りである。
特許第2956527号公報 特開2006−222827号公報
ところで、上述の図56の処理構成において、画像メモリ302を、水平方向処理部303の処理結果を格納する第1メモリ領域と、第2メモリ領域に分け、それらの第1メモリ領域と第2メモリ領域に対する書き込みアクセスおよび読み出しアクセスを詳細に示すと、図63に示すように表すことができる。
すなわち、水平方向処理部303の水平方向処理結果の画像データを画像メモリ302の第1メモリ領域3021に書き込む処理は書き込みアクセスW1、この第1メモリ領域3021から、前記水平方向処理結果の画像データを読み出して垂直方向処理部304に供給する処理は読み出しアクセスR1、垂直方向処理部304の垂直方向処理結果の画像データを画像メモリ302の第2メモリ領域3022に書き込む処理は書き込みアクセスW2、この第2メモリ領域3022から、前記垂直方向処理結果の画像データを読み出して出力画像データとする処理は読み出しアクセスR2とすることができる。
そして、例えば動作撮像データの記録時や再生時のように、入力撮像画像データを、前記水平方向処理および前記垂直方向処理をして、出力画像データを得るまでの処理を、リアルタイム処理する必要がある場合には、上述の4つのアクセスW1,W2,R1,R2を、特許文献2の場合には、アクセス単位である水平方向の8画素単位で行う必要がある。
特許文献2では、1画素当たりを1メモリアクセスサイクル(以下、メモリアクセスサイクルを単にサイクルという)とし、したがって、書き込み/読み出しの単位である水平方向の8画素単位では8サイクルを1処理単位周期とする。そして、1処理単位周期内に前記4つのアクセスW1,W2,R1,R2を1サイクル単位で割り当てて、それぞれのアクセスW1,W2,R1,R2を当該割り当てられたサイクルにおいて実行することとする。
この場合に、4つのアクセスW1,W2,R1,R2のうち、読み出しアクセスR1は、前述したように、水平方向の8画素のみを読み出すのではなく、各画素について垂直方向の8画素も読み出す必要があるので、1サイクルでは不足する。一方、その他の3つのアクセスW1,W2,R2は、それぞれ1サイクルを割り当てることで、そのアクセスを実行することができる。
そこで、特許文献2においては、図64に示すように、1処理単位周期の8サイクルのうちの3サイクルは、アクセスW1,W2,R2にそれぞれ1サイクルずつ割り当て、読み出しサイクルR1には、最高で5サイクルを割り当てることができるようにしている。
そして、画像メモリ302は、4バンクの構成として、制御部301が、それぞれのバンクにライン単位で画像データの書き込みおよび読み出しができるようにすると共に、読み出しサイクルR1においては、4バンクから同時に4ラインを読み出すことができるようにしている。
このように、制御部301による垂直方向処理用の画像データの読み出しアクセスR1には、1処理単位周期区間で、最大5回のアクセス権を与えているおり、画像メモリ302は4バンク構成で4ラインを同時に読み出すことができるので、
4ライン×5回=20ライン
分のデータを、1処理単位周期区間で取得可能となる。
このため、1処理単位周期区間、すなわち、8サイクル内(リアルタイム処理可能な範囲内)では、図65に示すように、垂直方向の画像歪みが、水平方向の8画素単位で、変動12(垂直方向に12画素の変動)までの歪みの「変動」の範囲内であれば、リアルタイム処理対応可能となる。
つまり、この実施形態の撮像装置では、水平8画素内での垂直方向の変動が12であるならば、その補正処理をリアルタイム処理可能となる。なお、図65において、スロット1〜5のそれぞれは、それぞれ1回のアクセスを示している。
以上のように、レンズ歪みが所定値以下、上述の例の場合には変動12以内の変動である場合には、高画質な画像歪み補正と解像度変換とが実現できる。一般のデジタルカメラやデジタルビデオカメラに使用されているレンズの場合には、画像歪みによる変動は変動12以内であるので、これで十分に対応可能である。
しかしながら、例えば、自動車の後方に撮像装置を付けて、その撮像画像を車庫入れの際に参照するようにする場合などにおいては、魚眼レンズなどの超広角レンズが使用されるようになっている。この魚眼レンズのような特殊レンズを使用する場合には、垂直方向の画像歪みの変動が12画素を超えることが生じるので、1処理単位周期区間周期では、水平方向の8画素単位で必要とする複数ラインからの画像データを読み出すことができなくなるという問題がある。
この発明は、このように画像メモリに対して要求されたアクセスが、1処理単位周期区間内でできなくなったときにも、当該アクセスを完了することができるようにすることを目的とする。
上記の課題を解決するために、請求項1の発明は、
画像データを格納する画像メモリと、
前記画像メモリに書き込む画像データを出力する、または、前記画像メモリから読み出した画像データを受けて所定の処理を行う複数個の処理手段と、
前記複数個の処理手段からの書き込みまたは読み出しの要求を受けて、前記画像メモリに対する画像データの書き込みアクセスまたは画像データの読み出しアクセスを制御するメモリ制御手段と、
を備え、
前記メモリ制御手段は、
前記画像メモリに対して、1ライン分の有効画素数の1/N(Nは2以上の正の整数)からなる水平方向の複数画素単位で、前記書き込みアクセスの1サイクルまたは前記読み出しアクセスの1サイクルを行なうと共に、
複数サイクルを処理単位周期として、前記複数個の処理手段のそれぞれからの前記要求に応じた書き込みまたは読み出しのアクセス処理を、前記処理単位周期内に1サイクル単位ですべて割り当てて実行し、かつ、前記処理単位周期を繰り返すようにするものであり、
さらに、前記メモリ制御手段は、
前記処理単位周期の1周期内に割り当てられた前記処理手段のそれぞれに対応して割り当てられた前記サイクル内で、それぞれの前記処理手段からの前記要求に基づいて指定された前記アクセス処理が完了できるか否かを判別する判別手段と、
前記判別手段で前記アクセス処理が完了できないと判別したときに、前記要求を出した前記処理手段に対して、前記処理単位周期の待機指示信号を送って、新たな前記要求の送出を一時停止させるようにすると共に、前記処理単位周期の1周期内でできないとされた前記アクセス処理を、当該アクセス処理を行うべき前記処理単位周期に続く1または複数の処理単位周期において前記処理手段に対応して割り当てた前記サイクルにおいても実行するようにするアクセス実行手段と、
を備えることを特徴とする画像データ処理装置を提供することを特徴とする。
上述の構成の請求項1の発明においては、判別手段で、処理手段のそれぞれに対応して割り当てられたサイクル内で、それぞれの処理手段からの要求に基づいて指定されたアクセス処理が完了できるか否かが判別される。
そして、アクセス実行手段は、判別手段でアクセス処理が完了できないと判別したときに、要求を出した処理手段に対して、処理単位周期の待機指示信号を送って、新たな要求の送出を一時停止させるようにすると共に、処理単位周期の1周期内でできないとされたアクセス処理を、当該アクセス処理を行うべき処理単位周期に続く1または複数の処理単位周期において前記処理手段に対応して割り当てたサイクルにおいても実行するようにする。
これにより、処理手段からの要求に応じた処理ができなくなることが無くなり、前述した課題を解決することができる。
この発明によれば、画像メモリに対するアクセスを、1処理単位周期区間内でできなくなったときにも、当該アクセスの処理を完了することができる。
[この発明の実施形態]
以下に説明するこの発明による画像データ処理装置の実施形態は、撮像素子としてX−Yアドレス型の固体撮像素子の代表例であるCMOS(Complementary Metal−Oxide Semiconductor)イメージャ(CMOS型の固体撮像素子)を用いる撮像装置の場合の例である。そして、この撮像装置において、画像処理として、撮像した撮像画像について、手ぶれによる撮像画像歪みと、撮像レンズの歪曲収差特性による撮像画像歪みとを、併せて補正すると共に、電子ズーム処理および所望の解像度の出力画像データを得る解像度変換処理を行なうことができる場合である。
なお、この実施形態の撮像装置は、動画像および静止画像の両方を撮像可能であり、動画像の撮像画像データを処理する場合と、静止画像の撮像画像データを処理する場合の、何れの場合にも、上述の画像処理を適用することができるものである。
この発明の実施の形態の撮像装置を説明する前に、CMOSイメージャなどのX−Yアドレス型の固体撮像素子に特有の手ぶれによる画像ひずみについて説明する。
例えば従来一般的に用いられているCCD(Charge Coupled Device)を用いた固体撮像素子(以下、CCDを用いた固定撮像素子をCCDイメージャという)の場合には、全画素を同時期に露光し、1フレーム(または1フィールド。以下同じ)の画像データについては、データ取り出しタイミングが全く同一であるので、手ぶれ変位量としては、図2において矢印で示すように、1フレーム分の全画素について、1つの手ぶれ変位量Vcsを考えればよい。
つまり、図2において、本来、被写体は実線で示す領域FLaに蓄積されるものであったのに、手ぶれにより点線で示す領域FLbに移動した場合には、当該フレームで1つの手ぶれ変位量Vcsを検出し、当該手ぶれ変位量Vcs分だけ、読み出し画素位置(サンプリング画素位置)を補正することにより、手ぶれに起因する撮像画像歪を補正することができる。
なお、図2に示すように、一般に、撮像素子では、その全画素を有効画素として扱うのではなく、全画素からなる領域(以下、実効画像領域という)AFLのうちの、周辺の領域を除く、水平有効領域および垂直有効領域で定まる中央部を有効画像領域EFLとして用いているものが多い。
このようなイメージャを用いた場合、手ぶれ補正により読み出し画素位置が変化しても、手ぶれ量が、実効画像領域AFLと有効画像領域EFLとの差分よりも小さい範囲では、イメージャが元々有している画素のデータを用いて歪み補正をすることができるので、補間処理などにより、手ぶれ補正に必要なデータを生成する場合に比べて、画像の劣化は少なくなる。
これに対して、CMOS型イメージャのようなX−Yアドレス型の固体撮像素子の場合には、画面の水平方向(X方向)の位置と、垂直方向(Y方向)位置とを指定することにより、画素単位で撮像データを読み出すことが可能である。ただし、CMOSイメージャなどのX−Yアドレス型の固体撮像素子においては、実用上は、1水平ライン分の画素群単位で読み出し(サンプリング)して、撮像画像データを出力するものが一般的である。
このように、CMOSイメージャから撮像データを水平ライン単位で読み出す場合には、図3に示すように、各水平ラインのついての露光期間は、水平ライン単位の読み出し時間差に応じたΔtだけ、時間的なずれを生じる。なお、1画素単位で撮像画像データの読み出しがなされる場合であっても、ライン間の読み出し時間差に比べて、画素間の読み出し時間差は無視できるほど小さい。そこで、1画素単位で撮像画像データの読み出しがなされる場合であっても、同様な露光期間の時間的なずれを生じるものとすることができる。
このため、CMOSイメージャを用いた撮像装置により、例えば走る電車の中から外の景色を撮影すると、本来は図4(A)のような画像が得られるべきものであるのに、図4(B)に示すように、本来鉛直に立っている家や木が傾いた画像が出力撮像画像となってしまう。これがCMOSイメージャ特有のフォーカルプレーン現象である。
図4(B)の画像例は、水平方向に移動しながら撮影したものであるため、被写体が傾いて撮像されるが、例えば垂直方向に移動しながら撮影した場合には、図示は省略するが、被写体が垂直方向に縮んだり、伸びたりするような画像となる。
この現象が発現するのは、CMOSイメージャを使用する撮像装置を持つ撮影者が高速に移動しながら撮影したり、逆に、固定位置にいる撮影者が高速に移動する被写体を撮影したりした場合であり、撮像装置と被写体の相対速度が速い場合に顕著となる。ただし、一般的な撮影において、このような状況は稀であるといえる。
しかしながら、撮影者が撮像装置を手で持って撮影している場合に、撮像装置を持っている撮影者の手が、微小かつ高速に振動した場合、すなわち、手ぶれが発生した場合、上述したフォーカルプレーン現象が発現することになる。
なぜなら、CMOSイメージャの場合の手ぶれ(以下、CMOS手ぶれという)の値は、CCDイメージャのように1フレーム内で1個の値ではなく、前述したように、1フレーム内における画素やライン毎のサンプリング時刻の違いにより、画素や水平ラインごとに異なるものとなる。このため、CMOSイメージャを用いた撮像装置においては、単に、1フレーム単位での手ぶれ量を用いた補正を行っても、前述したフォーカルプレーン現象による歪みは、補正されずに残ってしまう。
この際、手ぶれの方向、大きさ、速度が、1フレーム内(1枚の撮像画像内)で一律でないことが原因となって、CMOSイメージャを用いた撮像装置で、CMOS手ぶれが生じた時の被写体の撮像画像出力は、図4(C)に示すように、グニャグニャした奇妙な画像歪みが生じたものとなる。
そこで、この実施の形態では、1水平ライン単位で撮像画像データがCMOSイメージャから読み出されるとき、各水平ラインについての手ぶれによる位置変位量(以下、手ぶれ量という)を検出し、当該検出した手ぶれ量分だけ、発生した手ぶれとは逆方向にずれた位置から当該水平ラインのデータを読み出すように補正するものである。
しかし、手ぶれ量を各水平ラインについて得ることは、手ぶれを検出するセンサのサンプリング周波数などの条件から困難であることに鑑み、この実施形態においては、画面の垂直方向の複数ライン分置きの位置での手ぶれ量を、離散的に検出する。そして、手ぶれ検出を行なうライン以外の、手ぶれ量を直接的には検出しないラインに対する手ぶれ量は、検出された手ぶれ量を用いるようにする。
先ず、図5を用いて、この発明による撮像画像信号の歪み補正方法の実施形態における手ぶれなどによる撮像素子の位置的変化に基づくフォーカルプレーン現象を含む撮像画像歪みの補正処理の概要を説明する。
図5の概要説明図においては、図5(A)に示すように、画像に生じるCMOS手ぶれによる歪みを判りやすく示すために、歪みの無いオリジナルの画像として多数個の長方形からなる格子縞模様の画像を想定している。したがって、CMOS手ぶれによる画像歪みは、当該格子縞模様を構成する長方形の変形歪みとして現れるものとなる。
なお、この実施形態においても、CMOSイメージャは、図2に示したような1画面とする水平有効領域および垂直有効領域で定まる有効画像領域EFL(1垂直周期分)よりも広い範囲の実効画像領域AFLを有するものが用いられるものである。なお、図5(A)〜(D)に示した1画面分の画像は、図2の有効画像領域EFLの大きさの画像である。
この実施形態では、水平方向の画素クロックの速度は、手ぶれの速度よりも十分に早いとし、また、撮像画像データの読み出しは、1水平ライン単位で順次に行なうものとして、手ぶれ補正は、1水平ライン単位で行なうようにする。
また、この実施形態では、図5(B),(C),(D)に示すように、CMOSイメージャの有効画像領域EFL分の画像区間は、垂直方向に複数に等分割し、各分割画像区間Pdivでは、同じ手ぶれ速度の手ぶれ変位を受けるものと仮定している。ここで、分割数は、手ぶれ補正したときに、必要十分な補正効果が得られる分割画像区間Pdivの大きさを考慮して定められる。以下に説明する例では、有効画像領域EFLの画像区間を垂直方向に8分割するようにする。すなわち、この例では、分割画像区間Pdivは、垂直同期信号の1周期を1/8に分割した区間となる。
1つの分割画像区間Pdivは、複数水平ライン分からなるが、この実施形態では、同じ分割画像区間Pdivに含まれる複数水平ラインは同じ手ぶれ速度の手ぶれ変位を受けるものと仮定して手ぶれ補正処理を行なうものである。
そして、この実施形態では、8個の分割画像区間Pdiv_0〜Pdiv_7のそれぞれの先頭の水平ラインに対する手ぶれ速度ベクトルを、図5(B)の左側の矢印に示すようなものとして、手ぶれ速度検出手段により検出する。すなわち、この例では、手ぶれ速度ベクトルは、1画面分の撮像画像について、8箇所において、離散的に検出するようにする。
図5(B)の画像は、手ぶれ速度ベクトルが、各分割画像区間Pdivで、左側の矢印のようなものとした時に生じる手ぶれによる撮像画像の歪みを示している。この実施形態では、この手ぶれによる撮像画像の歪みを、水平方向処理と垂直方向処理とに分けて、それぞれの方向の歪みを別々に補正するようにする。
補正処理の詳細については後述するが、この実施形態では、先ず、水平方向の歪みについて補正処理を行ない、次いで、垂直方向の歪みについての補正処理を行なう。この場合に、1画面分の撮像画像のすべてのデータについての水平方向の歪み補正処理が完了する前であっても、垂直方向の歪み補正処理が可能になった段階で、垂直方向の歪み補正処理を開始して、水平方向の歪み補正処理と並行して行なうようにすることにより、効率良く歪み補正処理を行なうようにする。
そこで、この実施形態では、先ず、手ぶれによる水平方向の画像歪みを補正するために、図5(C)の左側の矢印および図6の左側の矢印で示すように、各分割画像区間Pdiv_0〜Pdiv_7について検出した手ぶれ速度ベクトルVec(Vec_0〜Vec_7)の水平方向成分の逆符号成分(以下、この手ぶれ速度ベクトルの水平方向成分の逆符号成分を、水平補正速度成分という)X_STB(X_STB_0〜X_STB_7)を求める。
そして、各分割画像区間Pdiv_0〜Pdiv_7内においては、各水平ラインのそれぞれについての水平方向の手ぶれ量を補正するための補正量として、上述のようにして求めた水平補正速度成分X_STB_0〜X_STB_7を、それぞれの水平ラインについて時間積分(各分割画像区間Pdiv_0〜Pdiv_7の先頭の水平ライン時点を基準点とした時間で積分)して算出する。図6の右側に、その積分結果の値としての水平方向の手ぶれ補正量(以下、水平手ぶれ補正量という)SX_ADDを示す。
この図6から判るように、各水平ラインのそれぞれについての水平手ぶれ補正量SX_ADDは、各分割画像区間Pdiv_0〜Pdiv_7においては、一定の傾きで変化し、かつ、積分であるので、分割画像区間の境目では折れ線とはなるが、連続的なものとなり、ずれは生じない。
水平方向の歪み補正処理においては、以上のようにして求められた各ラインについての手ぶれ水平補正量SX_ADDを用いて、CMOSイメージャ上での各水平ラインの水平方向の読み出し開始位置を補正することにより、撮像画像を補正処理する。すなわち、各水平ラインの読み出し開始位置を、図5(B)における手ぶれに応じて水平方向にずれた位置からとすることにより、図5(C)の画像に示すように、水平方向の歪みが補正されることになる。
この図5(C)の画像は、図5(B)の画像歪みの内の水平方向の歪みは補正されて除去されているが、垂直方向の歪みが残っている。
そこで、この実施形態では、手ぶれによる垂直方向の画像歪みを補正するため、図5(D)の左側の矢印に示すように、各分割画像区間Pdiv_0〜Pdiv_7について検出した手ぶれ速度ベクトルの垂直方向成分の逆符号成分(以下、この手ぶれ速度ベクトルの垂直方向成分の逆符号成分を、垂直補正速度成分という)Y_STB_0〜Y_STB_7を求める。
そして、各分割画像区間Pdiv_0〜Pdiv_7内においては、各水平ラインのそれぞれについての垂直方向の手ぶれ量を補正するための補正量として、上述のようにして求めた垂直補正速度成分Y_STB_0〜Y_STB_7を、それぞれの水平ラインについて時間積分(各分割画像区間Pdiv_0〜Pdiv_7の先頭の水平ライン時点を基準点とした時間で積分)して算出する。
この積分結果としての垂直方向の手ぶれ補正量(以下、垂直手ぶれ補正量という)SY_ADDは、ここでは、図示を省略するが、各分割画像区間Pdiv_0〜Pdiv_7においては、一定の傾きで変化し、かつ、積分であるので、分割画像区間の境目では折れ線とはなるが、連続的なものとなり、ずれは生じない。
垂直方向の歪み補正処理においては、以上のようにして求められた各ラインについての垂直手ぶれ補正量SY_ADDを用いて、CMOSイメージャ上での各水平ラインの垂直方向の読み出し開始位置を補正することにより、撮像画像を補正処理する。これにより、図5(D)の画像に示すように、水平方向の場合と同様にして垂直方向の歪みが補正され、歪みの除去された撮像画像データ出力が得られる。
なお、上述の説明では、手ぶれ速度ベクトルから水平成分および垂直成分を抽出するときに、その逆符号成分を算出して、補正速度成分とするようにしたが、速度成分あるいは手ぶれ量を逆符号として、補正速度成分あるいは手ぶれ補正量とするのは、撮像画像データに対する手ぶれ補正処理の実行開始前であれば、どの時点であっても良い。
次に、撮像レンズの歪曲収差特性による撮像画像歪みの補正について説明する。
前述したように、一般に撮像レンズは歪曲収差特性を有しており、このため、例えば図58(A)に示すような格子縞の被写体を、歪曲収差が大きい撮像レンズを用いて撮像したときには、その撮像画像は、図58(B)に示すように、格子縞を構成する縦横の直線が、湾曲するような画像歪みを生じる。この撮像レンズによる画像歪みは、撮像素子の各画素位置に応じたものであり、かつ、撮像レンズごとに特有のものであり、また、撮像素子に対する撮像レンズの位置が変化すると、その位置に応じたものとなる。
したがって、CMOSイメージャのようなX−Yアドレス型の撮像素子を用いて撮像する装置においては、手ぶれによる画像歪みを補正しただけでは、撮像レンズの歪曲収差特性に基づく画像歪みが残ってしまう。
そこで、この実施形態では、X−Yアドレス型の撮像素子を用いた撮像装置において、手ぶれ等が原因で生じる撮像画像の歪みと共に、撮像レンズの歪曲収差特性に基づく画像歪みを併せて軽減するようにしている。
この実施形態では、水平手ぶれ補正量および垂直手ぶれ補正量に、撮像レンズの歪曲収差特性に基づく画像歪み(以下、レンズ歪みという)の補正量を加算し、その加算した補正量により撮像画像データを補正処理することにより、手ぶれによる画像歪みと撮像レンズによる画像歪みの両方を同時に補正するようにするものである。
この実施形態では、以上のように、手ぶれ補正を水平処理と垂直処理に分けるのに合わせて、レンズ歪みの補正も水平処理と垂直処理に分けるようにする。前述もしたように、レンズ歪みは、撮像レンズに固有のものである。そこで、撮像素子上における各画素位置におけるレンズ歪みの補正量は、予め用意することができる。
この実施形態では、撮像素子上における各画素位置におけるレンズ歪みの補正量は、各画素位置に対する補正ベクトルとしてエンコードされて、撮像装置に設けられる補正量デコード部に与えられる。補正量デコード部は、各画素位置の座標(撮像素子上における絶対座標)を引数として、当該画素位置における前記補正ベクトルを得ると共に、その補正ベクトルをデコードして、当該画素位置におけるレンズ歪みの補正量の水平方向補正成分と垂直方向補正成分とを得る。
そして、撮像素子からの撮像画像データの各水平ラインの画素データは、上述のようにして求められた水平手ぶれ補正量SX_ADDにより、水平方向に手ぶれ速度の水平方向成分に応じた分だけシフトされた座標位置のものとされるが、当該座標位置(画素位置)におけるレンズ歪みの補正量の水平方向補正成分の分だけ、当該画素データの座標位置をさらに水平方向にシフトするように補正する。ここで、レンズ歪みの補正量の水平方向補正成分は、前記水平方向手ぶれ補正量SX_ADDにより補正された画素座標位置を引数として、上述のようにして取得される。
また、垂直方向についても、撮像素子からの撮像画像データの各水平ラインの画素データは、上述のようにして求められた垂直手ぶれ補正量SY_ADDにより、垂直方向に手ぶれ速度の垂直方向成分に応じた分だけシフトされた座標位置のものとされるが、当該座標位置(画素位置)におけるレンズ歪みの補正量の垂直方向補正成分の分だけ、当該画素データの座標位置をさらに垂直方向にシフトするように補正する。ここで、レンズ歪みの補正量の垂直方向補正成分は、前記垂直方向手ぶれ補正量SY_ADDにより補正された画素座標位置を引数として、上述のようにして取得される。
なお、レンズ歪みは、光学ズームにより撮像レンズの光軸上の位置が変更されるときには、その光軸上の位置に応じたものとなる。このため、光学ズームを用いる場合には、撮像レンズの光軸上の位置に応じた補正ベクトルが、前記補正量デコード部に供給されるように構成される。
さらに、この実施形態の撮像装置では、画像処理として、上述のような手ぶれ補正や撮像レンズの歪曲収差特性に基づく画像歪みの補正のみではなく、電子ズームによる画像の拡大・縮小処理および出力撮像画像の解像度を、例えばユーザが指定した所望のものとするようにするための画像処理も行なうようにする。
[この発明の実施形態の構成]
次に、この発明による画像データ処理方法および装置の実施形態を、図を参照しながら説明する。図1は、この発明による画像データ処理装置の実施形態が適用された撮像装置のブロック図を示すものである。
図1に示すように、撮像レンズ1Lを備えるカメラ光学系1を通じた被写体からの入射光は、撮像素子2に照射されて撮像される。この例では、撮像素子2は、前述したようにX−Yアドレス型の固体撮像素子の一例であるCMOSイメージャで構成されている。
この例では、撮像素子2からは、タイミング信号発生部4からのタイミング信号により1ライン単位が同時に取り出される(サンプリングされる)ことによりアナログ撮像信号とされて出力される。そして、出力されたアナログ撮像信号は、データ変換部3に供給される。
データ変換部3は、これに入力されたアナログ撮像信号に必要な補正処理を加えた後、タイミング信号発生部4からのクロック信号に同期してデジタル撮像信号に変換する。そして、データ変換部3は、デジタル撮像信号を輝度信号成分と色差信号成分とからなる撮像画像データDinに変換し、その撮像画像データDinを信号処理部5に供給する。
信号処理部5は、データ変換部3からの撮像画像データDinについて、これに接続されている画像メモリ6への書き込み/読み出しを制御しながら、手ぶれ補正およびレンズ歪み補正の補正処理や、撮像画像の電子ズーム処理(電子的拡大・縮小処理)を行なうとともに、指定された解像度の出力画像データDoutを生成して出力する。
画像メモリ6は、1個のメモリで構成されるが、4つのバンクBANK0,BANK1,BANK2,BANK3に分割されている。また、この実施形態では、画像メモリ6は、信号処理部5に含まれるメモリ制御部によるアドレス管理および書き込み/読み出し制御により、第1メモリ領域61と第2メモリ領域62との2つのメモリ領域に分割されて使用される。つまり、画像メモリの4つのバンクBANK0,BANK1,BANK2,BANK3は、それぞれ第1メモリ領域61と、第2メモリ領域62とに分割されて使用される。
そして、この実施形態では、図7に示すように、第1メモリ領域61と第2メモリ領域62との分割点のアドレス(セパレートアドレス)SepAdrは、4つのバンクBANK0,BANK1,BANK2,BANK3について同一とされ、かつ、このセパレートアドレスSepAdrは、対象となる画像処理に応じて、後述するように、変更されるようにされている。
このセパレートアドレスSepAdrは、後述するように、制御部10から信号処理部5に与えられて、設定される。制御部10には、ユーザインターフェース9を通じて、ユーザによる出力解像度の選択入力、電子ズーム率の入力、手ぶれ補正の有無の入力、レンズ歪み補正の有無の入力などが供給されており、制御部10は、当該入力情報に基づいて、セパレートアドレスSepAdrを決定する。その決定方法については後述する。
後述もするように、この実施形態では、第1メモリ領域61には、水平方向の画像処理結果の撮像画像データが書き込まれる。そして、この第1メモリ領域61に、垂直方向の画像処理が開始できるだけの容量の撮像画像データが書き込まれると、当該書き込まれた撮像画像データが、その先頭から読み出される。そして、第1メモリ領域61から読み出された撮像画像データは、垂直方向の画像処理がなされた後、その垂直方向の画像処理結果の撮像画像データが第2メモリ領域62に書き込まれる。
そして、この実施形態においては、画像データの画像メモリ6に対する書き込みおよび読み出しは、複数画素単位でなされる。ここで、書き込み及び読み出しの単位とされる複数画素の画素数は、1ラインの有効画素数の1/N(Nは2以上の正の整数)であることが好ましく、この例では、8画素単位でなされる。
そして、後述するように、画像メモリ6の4個のバンクBANK0,BANK1,BANK2,BANK3に対する画像データの書き込みは、所定のデータ長、例えば1ライン分ごとに、バンクを順次に切り換えて行ない、また、画像データの画像メモリ領域からの読み出しは、前記所定のデータ長分について、複数の前記バンクから同時に行なう。
すなわち、例えば、1つのバンクに、例えば1ライン分を書き込むと、次のバンクに次の1ライン分を書き込むというようにして、4個全てのバンクにそれぞれ1ライン分を書き込んだら、最初のバンクに戻って次の1ライン分を書き込むようにする。以降、同じ動作を続けることにより、画像の書き込みを行なう。
また、画像メモリ6からの画像データの読み出しは、例えば、連続する2ライン分を、2個のバンクから同時に読み出す、あるいは、連続する4ライン分を、4個のバンクから同時に読み出すようにする。
画像メモリ6の4個のバンクBANK0,BANK1,BANK2,BANK3の第1メモリ領域61および第2メモリ領域62は、後述するように、FIFO(First−In First−Out)動作により書き込みながら読み出しを行なうように制御されて、遅延は、あるものの、撮像画像データのリアルタイム処理がなされる。この場合に、この実施形態では、各バンクBANK0,BANK1,BANK2,BANK3の第1メモリ領域61および第2メモリ領域は、それぞれリングメモリバッファとして用いるようにアドレス制御される。
そして、第1メモリ領域61の記憶容量(4バンクの第1メモリ領域の合計の容量)は、垂直方向の画像処理が開始できるだけの容量に所定のマージン分を加えたものでよいので、1画面分(1フィールドあるいは1フレーム)以下とされる。この実施形態では、第1メモリ領域61の記憶容量(4バンクの第1メモリ領域の合計の容量)は、少なくとも垂直解像度変換用のデジタルフィルタのタップ数に応じた画像ライン数分の容量を必要とする。
一方、第2メモリ領域62(4バンクの第2メモリ領域の合計の容量)には、この実施形態では、少なくとも解像度変換後の出力画像データDoutの1画面分を記憶する記憶容量が必要である。つまり、第2メモリ領域62の記憶容量(4バンクの第2メモリ領域の合計の容量)は、出力画像データDoutの1画面分(1フィールド分または1フレーム分)以上である必要がある。
しかし、第1メモリ領域61(4バンクの第1メモリ領域の合計の容量)および第2メモリ領域62の記憶容量(4バンクの第2メモリ領域の合計の容量)は、水平方向の処理結果のデータ量および出力画像データDoutのデータ量に依存するので、撮像素子2の画素数が変化しても、変化させる必要はない。もっとも、画像メモリ6全体の記憶容量は、選択できる解像度のうちで、最も高解像度の場合を想定して、決定される。当該画像メモリ6を用いた画像処理については、後でさらに詳述する。
さらに、後述するように、各バンクの第1メモリ領域61および第2メモリ領域62では、画像データの書き込みが、その前に書き込まれた画像データの読み出しを追い越さないように、信号処理部5のメモリ制御部により、アドレス制御されるものである。
なお、この画像メモリ6に対する画像データの書き込みおよび読み出しアクセス方法の詳細については、後で詳述する。
信号処理部5には、タイミング信号発生部4から、出力画像データの水平周期に同期する信号、すなわち、水平同期信号H−SYNCと、出力画像データの垂直周期に同期する信号、すなわち、垂直同期信号V−SYNCと、1画素周期のクロック信号CLKと、それらに同期するクロックが、処理タイミング信号として供給される(図1では、これらの信号の図示は省略)。
また、撮影時に撮像装置を保持している撮影者による手ぶれ速度を検出する手ぶれ速度検出部7が設けられる。この手ぶれ速度検出部7は、撮像素子2の、撮像画像の水平方向および/または垂直方向の、所定速度以上の比較的高速の位置的変化を手ぶれとして、その速度ベクトルを検出する。ここで、比較的高速の位置的変化としたのは、撮影者による撮像装置のパンニング操作(左右方向への移動)や、チルティング操作(上下方向の移動)を、手ぶれとして検出しないためである。
この手ぶれ速度検出部7は、例えば撮像装置の筐体に取付けられた角速度センサにより構成される。この手ぶれ速度検出部7の検出出力は、手ぶれ速度ベクトルである。この手ぶれ速度検出部7は、角速度センサの代わりに加速度センサを用いて構成しても良い。加速度センサを用いる場合には、加速度センサ値(方向成分も含む)を積分することで、手ぶれ速度(手ぶれ速度ベクトル)を検出し、手ぶれ速度検出部7の検出出力とするようにする。
この手ぶれ速度検出部7の検出出力は、手ぶれ速度検出処理部8に供給される。この手ぶれ速度検出処理部8には、タイミング信号発生部4からサンプリング信号Spが供給され、このサンプリングSpにより前記手ぶれ速度検出部7の検出出力(手ぶれ速度ベクトル)がサンプリングされて、前述した各分割画像区間Pdiv_0〜Pdiv_7についての8個の手ぶれ速度ベクトルVec_0〜Vec_7が求められる。
そして、手ぶれ速度検出処理部8では、8個の手ぶれ速度ベクトルVec_0〜Vec_7を、その水平方向成分と、垂直方向成分とに分離し、それら水平方向成分および垂直方向成分の逆符号成分を水平補正速度成分および垂直補正速度成分として生成する。そして、生成した水平補正速度成分および垂直補正速度成分を信号処理部5に供給する。
また、この例の撮像装置は、全体を制御するためのマイクロコンピュータを搭載する制御部10を備える。この制御部10には、ユーザインターフェース9が接続されている。そして、このユーザインターフェース9を通じて、ユーザからの画像拡大・縮小指示入力や、解像度指示入力、また、ズーム倍率の値の指示入力などが制御部10に与えられる。制御部10は、それらの指示入力に応じた制御信号を形成し、タイミング信号発生部4や信号処理部5に供給する。
また、この実施形態では、制御部10は、ユーザインターフェース9を通じた前述の画像処理に関する入力に応じて、画像メモリ6の第1メモリ領域61と第2メモリ領域との分割点アドレスとしてのセパレートアドレスSepAdrを設定し、信号処理部5に供給するようにする。信号処理部5のメモリ制御部は、このセパレートアドレスSepAdrにより、第1メモリ領域61と第2メモリ領域62とを認識して、これらのメモリ領域に対する画像データの書き込みおよび読み出しを実行する。
また、レンズ歪み補正用データ導出・エンコード部11が設けられる。この補正用データ導出・エンコード部11は、ユーザインターフェース9を通じて入力されたレンズ1Lの歪曲収差に関するデータおよび制御部10からの光学ズームの操作情報に応じた撮像レンズの光軸位置に関する情報などから、撮像素子2の全画素の撮像素子2上の各位置に応じたレンズ歪み補正ベクトルを予め計算する。そして、補正用データ導出・エンコード部11は、求めた補正ベクトルを圧縮するなどしてエンコードし、レンズ歪み補正用データデコード部12に供給する。
この補正用データ導出・エンコード部11は、非常に負荷の大きな演算が必要となるので、専用のマイクロコンピュータやDSP(Digital Signal Processor)が用いられて構成される。
レンズ歪み補正用データデコード部12は、レンズ歪み水平補正量データデコード部121と、レンズ歪み垂直補正量データデコード部122とを備える。そして、補正用データ導出・エンコード部11からのレンズ歪み補正ベクトルから、レンズ歪み水平補正量データデコード部121は、レンズ歪み水平補正量データを生成し、レンズ歪み垂直補正量データデコード部122は、レンズ歪み垂直補正量データを生成する。
そして、レンズ歪み水平補正量データデコード部121、レンズ歪み垂直補正量データデコード部122のそれぞれは、信号処理部5からの歪み補正対象部位としての画素位置の情報を引数として受けて、当該画素位置における水平レンズ歪み補正量データ、垂直レンズ歪み補正量データをそれぞれ信号処理部5に返す。
信号処理部5では、画像メモリ6への画像データの書き込み/読み出しを制御しながら、後で詳述するようにして、手ぶれ速度検出処理部8からの水平補正速度成分と垂直補正速度成分とから、各水平ラインの水平補正変位量SX_ADDおよび垂直補正変位量SY_ADDを算出する。
そして、信号処理部5では、これら算出した水平補正変位量SX_ADDおよび垂直補正変位量SY_ADDと、前記レンズ歪み補正データデコード部12からのレンズ歪み水平補正量データおよびレンズ歪み垂直補正量データとを用いて、データ変換部3からの撮像画像データDinについての手ぶれによる画像歪み補正処理およびレンズ歪みを補正処理し、出力画像データDoutを得る。
なお、前述したように、信号処理部5では、上述の歪み補正処理の他、電子ズーム(画像拡大・縮小)処理を行なうと共に、標準精細度、高精細度などに応じた解像度変換処理なども行なう。
信号処理部5からの出力画像データDoutは、記録処理部13により例えばデータ圧縮されると共に、記録メディア14への記録に適した変調が施された後、記録メディア10に記録される。記録メディア14としては、磁気テープや磁気ディスクなどの磁気記録媒体、DVD(Digital Versatile Disc)などの光ディスク媒体、ハードディスク、カード型メモリなどを用いることができる。なお、出力撮像画像データをインターネットやワイヤレス通信手段を介して記録メディア14に記憶するようにすることもできる。
信号処理部5からの出力画像データDoutは、また、表示系処理部15を通じて表示モニターとしての、例えばLCD(Liquid Crystal Display)などのディスプレイに供給され、画像表示される。記録メディア14に記録された撮像画像データも、再生処理部16により再生され、表示系処理部15を通じて表示モニターに供給され、再生画像表示される。
次に、図1の信号処理部5、画像メモリ6、手ぶれ速度処理部8の部分の、より詳細な構成ブロック図を図8に示す。
すなわち、手ぶれ補正およびレンズ歪み補正処理や電子ズーム処理、解像度変換処理、出力データ生成処理のために、信号処理部5は、水平処理ブロック51と、垂直処理ブロック52と、レジスタブロック53と、メモリ制御部の機能を備えるメモリインタフェース54とを含んでいる。そして、水平処理ブロック51は、水平処理用手ぶれ補正量積分部511と水平画像処理部512とを備え、また、垂直処理ブロック52は、垂直処理用手ぶれ補正量積分部521と垂直画像処理部522とを備える。
また、水平画像処理部512に対して、レンズ歪み水平補正量データデコード部121が接続され、垂直画像処理部522に対して、レンズ歪み垂直補正量データデコード部122が接続される。
水平処理ブロック51は、データ変換部3からの撮像画像データDinに対して水平方向の処理を施す。この水平方向の処理には、水平方向の手ぶれ補正およびレンズ歪み補正処理、水平方向の画像拡大・縮小処理、水平方向の解像度変換を含む。垂直処理ブロック52は、撮像画像データDinに対して垂直方向の処理を施す。この垂直方向の処理には、垂直方向の手ぶれ補正およびレンズ歪み補正処理、垂直方向の画像拡大・縮小処理、垂直方向の解像度変換を含む。
また、レジスタブロック53は、手ぶれ速度検出処理部8で検出された手ぶれ速度の情報を、水平処理ブロック51および垂直処理ブロック52に受け渡す処理を行なう。レジスタブロック53は、また、画像メモリ6のセパレートアドレスSepAdrを、メモリインタフェース54に受け渡す処理も行なう。
手ぶれ速度検出部8は、サンプリング部81と、水平補正速度成分検出部82と、垂直補正速度成分検出部83とからなる。
サンプリング部81では、手ぶれ検出部7からの手ぶれ速度検出出力(図9(A)参照)を、タイミング信号発生部4からのサンプリング信号Spによりサンプリングすることにより、各分割画像区間Pdiv_0〜Pdiv_7についての手ぶれ速度ベクトルVec_0〜Vec_7(図9(B)参照)を取得する。この例では、サンプリング部81では、前述したように、手ぶれ速度ベクトルVec_0〜Vec_7は、各分割画像区間Pdiv_0〜Pdiv_7の先頭ラインに対するものが、垂直周期の1/8の周期でサンプリングされる。
ここで、取得すべき各手ぶれ速度ベクトルの値は、撮像素子2からの撮像画像データの対応する水平ラインのサンプリング時刻の値ではない。なぜなら、前述したように、撮像素子2上の各画素には露光時間があり、撮像素子2から取り出された撮像信号(色フィルタを通過した後の輝度値)は、各ラインのサンプリング時刻から露光時間分遡った時刻までの平均値であるからである。
このため、この実施形態では、手ぶれ速度ベクトルの値の検出点は、図10に示すように、各水平ラインの画像データのサンプリング時刻tsと、当該サンプリング時刻tsから露光時間分遡った時刻tbとの間の中央時刻となるように、サンプリング信号Spによるサンプリングタイミングが設定されている。
露光時間が短くなければ、水平ラインの画像データの先頭のタイミングでは、手ぶれ速度ベクトルの値を確定することができるが、露光時間が短くなった場合には、水平ラインの画像データの先頭のタイミングでは、手ぶれ速度ベクトルの値を確定することができない場合が生じる。そのような場合には、サンプリング部81では、過去の手ぶれ速度ベクトルを参照して、手ぶれ速度ベクトルの値を予測するようにする。
このサンプリング部81でサンプリングされて得られる、1フレーム(1垂直周期)について、8個の手ぶれ速度ベクトルVec_0〜Vec_7は、水平補正速度成分検出部82および垂直補正速度成分検出部83に供給される。
水平補正速度成分検出部82では、各分割画像区間Pdiv_0〜Pdiv_7における手ぶれ速度ベクトルVec_0〜Vec_7の水平方向成分を抽出し、その逆符号成分として、水平補正速度成分X_STB_0〜X_STB_7(図9(C)参照)を求める。
また、垂直補正速度成分検出部9では、各分割画像区間Pdiv_0〜Pdiv_7における手ぶれ速度ベクトルVec_0〜Vec_7の垂直方向成分を抽出し、その逆符号成分として、垂直補正速度成分Y_STB_0〜Y_STB_7(図9(D)参照)を求める。
この場合に、この実施形態では、水平補正速度成分X_STB_0〜X_STB_7および垂直補正速度成分Y_STB_0〜Y_STB_7のそれぞれの値は、1水平ライン区間の時間長当たりの手ぶれ補正量として求められる。
すなわち、水平補正速度成分X_STB(X_STB_0〜X_STB_7)は、
X_STB=(水平手ぶれ補正量/1水平ライン区間の時間長)
とされる。
また、垂直補正速度成分Y_STB(Y_STB_0〜Y_STB_7)は、
Y_STB=(水平手ぶれ補正量/1水平ライン区間の時間長)
とされる。
そして、水平補正速度成分X_STB_0〜X_STB_7は、水平方向の画素ピッチ(画素の間隔)dxの倍数値(小数点以下の値を取り得る。以下同じ)、換言すれば、水平方向の画素数(小数点以下を取り得る)で表わされる。また、垂直補正速度成分Y_STB_0〜Y_STB_7は、垂直方向の画素ピッチ(画素の間隔)dyの倍数値(小数点以下を取り得る)、換言すれば、垂直方向の画素数(小数点以下を取り得る。以下同じ)で表わされる。
これは、サンプリング部81からの手ぶれ速度出力の水平方向成分と、垂直方向成分のそれぞれに対して、「速度成分の値→画素数(小数点以下の値を取り得る。以下同じ)の値」の対応テーブルを用意し、速度成分の値を入力値として、画素数の値を得るようにすることで実現される。そして、得られた画素数の値について、手ぶれの速度成分の方向とは逆方向に対応する符号を付加して、それぞれ、水平補正速度成分X_STB_0〜X_STB_7および垂直補正速度成分Y_STB_0〜Y_STB_7とするものである。
この実施形態では、このように水平補正速度成分X_STB_0〜X_STB_7および垂直補正速度成分Y_STB_0〜Y_STB_7の値を定めることにより、後述するライン単位の時間積分計算による水平手ぶれ補正量SX_ADDおよび垂直手ぶれ補正量SY_ADDを、水平補正速度成分および垂直補正速度成分の単純加算により行なえるようにしている。
そして、これら水平補正速度成分検出部82および垂直補正速度成分検出部83で算出された水平補正速度成分X_STB_0〜X_STB_7および垂直補正速度成分Y_STB_0〜Y_STB_7は、タイミング信号発生部4からのタイミング信号Stに応じたタイミングで、信号処理部5のレジスタブロック53のIF(インターフェース)レジスタ(図示は省略)に、順次取り込まれる。
そして、取り込まれた水平補正速度成分X_STB_0〜X_STB_7および垂直補正速度成分Y_STB_0〜Y_STB_7は、水平処理ブロック51および垂直処理ブロック52での処理タイミングに対応して、レジスタブロック53内の水平処理ブロック用レジスタおよび垂直処理ブロック用レジスタ(何れも図示は省略)に、前記IFレジスタから、前記取り込まれたタイミングとは別のタイミングで、転送される。
水平処理ブロック51および垂直処理ブロック52の水平処理用手ぶれ補正量積分部511および垂直処理用手ぶれ補正量積分部521は、レジスタブロック53の水平処理ブロック用レジスタおよび垂直処理ブロック用レジスタに取り込まれている各分割画像区間Pdiv_0〜Pdiv_7の水平補正速度成分X_STB_0〜X_STB_7および垂直補正速度成分Y_STB_0〜Y_STB_7を積分することにより、各分割画像区間Pdiv_0〜Pdiv_7における各水平ラインに対する水平手ぶれ補正量SX_ADDおよび垂直手ぶれ補正量SY_ADDを算出する。
水平処理ブロック51の水平画像処理部512では、水平処理用手ぶれ補正量積分部511で算出された水平手ぶれ補正量SX_ADDを用いて、水平方向の手ぶれ成分を補正するように、各水平ラインの画素データのx座標を、水平方向にシフトする。また、水平方向のレンズ歪みを補正するために当該画素のy座標が必要になることを考慮して、垂直処理用手ぶれ補正量積分部521で算出された垂直手ぶれ補正量SY_ADDを用いて、当該補正対象部位の画素データのy座標を、垂直方向の手ぶれ成分を補正するようにシフトしたものとして求める。
そして、水平画像処理部512は、当該手ぶれに応じて水平方向および垂直方向にシフトした各画素データのx座標と、y座標とを、引数としてレンズ歪み水平補正量データデコード部121に供給し、このレンズ歪み水平補正量データデコード部121から、当該x座標およびy座標位置の画素位置に対するレンズ歪み水平補正量データ(水平方向の座標シフト量)を得る。
そして、水平画像処理部512は、水平手ぶれ補正量SX_ADDを用いて補正したx座標データに、取得したレンズ歪み水平補正量データを加算して、さらにシフトする。そして、当該シフトされたx座標データを用いて、水平方向の手ぶれ成分およびレンズ歪みの水平方向成分を補正する。
また、垂直処理ブロック52の垂直画像処理部522では、垂直処理用手ぶれ補正量積分部521で算出された垂直手ぶれ補正量SY_ADDを用いて、垂直方向の手ぶれ成分を補正するように、各水平ラインの画素データのy座標を、垂直方向にシフトする。また、垂直方向のレンズ歪みを補正するために当該画素のx座標が必要になることを考慮して、水平処理用手ぶれ補正量積分部511で算出された水平手ぶれ補正量SX_ADDを用いて、当該補正対象部位の画素データのx座標を、水平方向の手ぶれ成分を補正するようにシフトしたものとして求める。
そして、垂直画像処理部522は、当該手ぶれに応じて水平方向および垂直方向にシフトした各画素データのx座標とy座標とを、引数としてレンズ歪み垂直補正量データデコード部122に供給し、このレンズ歪み垂直補正量データデコード部122から、当該x座標およびy座標位置の画素位置に対するレンズ歪み垂直補正量データ(垂直方向の座標シフト量)を得る。
そして、垂直画像処理部522は、垂直手ぶれ補正量SY_ADDを用いて補正したy座標データに、取得したレンズ歪み垂直補正量データを加算して、さらにシフトする。そして、当該シフトされたy座標データを用いて、垂直方向の手ぶれ成分およびレンズ歪みの垂直方向成分を補正する。
以上の補正処理においては、水平処理ブロック51の水平画像処理部512および垂直処理ブロック52の垂直画像処理部522では、それぞれ画像メモリ6に対して画像データの読み書きをしながら補正処理を実行するようにする。
この実施形態では、画像メモリ6は、前述したように、メモリインタフェース54によるアドレス管理に基づいて、第1メモリ領域61と第2のメモリ領域62とに論理的に分割されており、第1メモリ領域61には、水平処理ブロック51の水平画像処理部512で処理された結果の撮像画像データが書き込まれる。
この例では、第1メモリ領域61は、後述する垂直方向の補間処理用のFIR(Finite Impulse Response)フィルタのタップ数以上のライン数分の容量を有する。この垂直方向の補間処理用のFIRフィルタは、垂直方向の手ぶれ補正用フィルタ、垂直方向のレンズ歪み補正用フィルタおよび垂直解像度変換フィルタを構成しているものである。
そして、この第1メモリ領域61に必要な記憶容量は、上記の垂直処理用のFIRフィルタのタップ数のみではなく、電子ズーム率、レンズ歪み補正率、手ぶれ補正率にしたがって変化する。
第1メモリ領域61に垂直画像処理を開始することができる画像データが書き込まれると、この第1メモリ領域61から画像データが読み出されて、垂直ブロック52の垂直画像処理部522で垂直方向の画像処理がなされ、その処理結果が第2メモリ領域62に書き込まれる。そして、この第2メモリ領域62から出力画像データDoutが読み出される。
したがって、この第2メモリ領域の記憶容量としては、出力画像データDoutの1画面分(1フィールドまたは1フレーム)の容量が最低必要とされる。
水平処理ブロック51の水平画像処理部512には、後述するように、1ライン分の容量の水平処理用FIFOラインメモリが設けられ、この水平処理用FIFOラインメモリへの画像データの書き込み、読み出しを制御するFIFOメモリコントローラ(図8では図示を省略)が設けられていると共に、算出した水平手ぶれ補正量SX_ADDが小数点以下(補正後の画素位置が、水平方向の画素位置よりオフセットされた位置となる)の場合を想定し、補間処理を行なう水平方向補間処理部(図8では図示を省略)が設けられている。この水平方向補間処理部は、後述するように、この実施形態では、水平方向のデジタルFIRフィルタ(以下、水平FIRフィルタという)が用いられる。
なお、1ライン分の容量の水平処理用FIFOラインメモリも、画像メモリ6の一部のメモリ領域として設定しておき、FIFOメモリコントローラを、メモリインタフェース54により構成するようにしても良い。
そして、メモリインタフェース54は、第1メモリ領域61への水平画像処理後の画像データの書き込みを制御すると共に、第1メモリ領域61からの画像データの読み出しを制御して、垂直処理ブロック52の画像処理部522に供給する。また、メモリインタフェース54は、画像処理部522で垂直方向処理がなされた画像データの、第2のメモリ領域62への書き込み、読み出しを制御する。
第2メモリ領域62から読み出された画像データは、画像データ出力部523に供給され、この画像データ出力部523から出力画像データDoutが導出される。
また、垂直処理ブロック52の垂直画像処理部522には、算出した垂直手ぶれ補正量SY_ADDが小数点以下(補正後の画素位置が、垂直方向の画素位置よりオフセットされた位置となる)の場合を想定し、補間処理を行なう垂直方向補間処理部(図8では図示を省略)が設けられている。この垂直方向補間処理部は、後述するように、この実施形態では、垂直方向のデジタルFIRフィルタ(以下、垂直FIRフィルタという)が用いられるが、レンズ歪み補正のために必要なライン数および垂直解像度変換を考慮したタップ数とされる。
ここで、算出した水平手ぶれ補正量SX_ADDとレンズ歪み水平補正量との加算量および垂直手ぶれ補正量SY_ADDとレンズ歪み垂直補正量との加算量が小数点以下の値を持つ場合の補間処理について説明する。
まず、手ぶれ補正について説明する。例えば、手ぶれの水平方向の速度成分により、水平方向に図11に示すような画像歪みが生じた場合を想定する。すなわち、図11の例は、手ぶれが無ければ破線で示す直線上にあるべき画素G11,G21,G31・・・、G12,G22,G32・・・、G13,G23,G33・・・、が、手ぶれの水平方向の速度成分のために実線で示すような斜め位置となっている場合である。
この手ぶれを補正するためには、ずれている画素位置を本来の位置にあるようにずらせばよく、そのずれ量が、図11に示すように、前述した水平手ぶれ補正量SX_ADDに相当する。この水平手ぶれ補正量SX_ADDが、画素ピッチdxの整数倍であれば、画素データを当該水平手ぶれ補正量SX_ADDに応じた画素ピッチ分だけずらして読み出すようにすることで補正することができる。
しかしながら、水平手ぶれ補正量SX_ADDが、画素ピッチdxの整数倍ではなく、小数点以下のずれ量を含む場合には、そのずれ量に対応する位置は、画素データが存在する位置ではないので、その位置の近傍の複数個の画素データを用いた補間処理により、対応する画素位置の画素データを生成する必要がある。
図12は、その補間方法の一例を示すもので、求める画素データが、画素G1と画素G2との間の補間画素Gsである場合に、この補間画素Gsの位置と画素G1,G2の位置との距離k1,k2に応じた割合で、画素G1のデータと画素G2のデータとを加算することにより、補間画素Gsの画素データを生成するものである。この場合、k1:k2=W:(1−W)としたとき、
補間画素Gs=G1×W+G2×(W−1)
なる補間演算により、補間画素Gsの画素データを得る。
また、図12の例のような2個の画素データを用いるのではなく、図13の例のように2個以上(図13の例では4個)の近傍画素データを用いて、補間演算をして補間画素を求めることもできる。この場合、補間画素Gsの位置に対する画素G0,G1,G2,G3の位置との距離k0,k1,k2,k3に応じた割合となる乗算係数W0,W1,W2,W3を定めて、画素G0,G1,G2,G3のデータを加算することにより、補間画素Gsの画素データを得る。
すなわち、
補間画素Gs=G0×W0+G1×W1+G2×W2+G3×W3
なる補間演算により、補間画素Gsの画素データを得るようにする。
この図13の例の場合、乗算係数W0,W1,W2,W3の値の組は、画素G1または画素G2と補間画素Gsとの距離dsに対応するものとして関連付けられたテーブルを用意しておき、距離dsを検索子として、上記乗算係数W0,W1,W2,W3の組をテーブルから読み出すようにすることで得ることができる。なお、距離dsは、水平手ぶれ補正量SX_ADDの小数部に相当するものである。
この補間処理は、この実施形態では、水平FIRフィルタを用いて行なうようにする。すなわち、水平手ぶれ補正量SX_ADDの小数部に対応する前記乗算係数の組をテーブルから読み出し、その乗算係数を水平FIRフィルタに対して供給することで上記補間処理を行なうことができる。
以上は、水平方向の手ぶれ補正の場合の補間処理であるが、垂直方向の手ぶれ補正の場合の補間処理についても、補間方向が垂直方向になるだけで、全く同様である。
この手ぶれ補正の場合の補間処理動作は、この実施形態では、レンズ歪みが全く無いとした場合にのみ行なわれることになる。この実施形態では、手ぶれ補正のための補正量とレンズ歪み補正のための補正量との加算量により補正された座標位置の画素データを得るように補間処理を行なうものである。この補間処理も基本的な考え方は、上述の図12、図13の場合と全く同様である。
このレンズ歪みを含む場合における補間処理を、図14を参照して説明する。なお、図14においては、x方向およびy方向にそれぞれ4つ並んだ4×4=16個からなる画素データを用いて出力画像の画素データを決定する場合の例示である。なお、このレンズ歪み補正についての補間処理の方法は、特開2004−80545公報に詳細に記載されているものを適用したものであり、詳細な説明は、上記公報に譲り、ここでは要点のみを説明する。
図14(A)は、歪みを伴う画像データを構成する点B1〜B4が、水平方向の補間により、それぞれ点B10〜B40の画像データに変換された様子を示す図である。また、図14(B)は、さらに垂直方向の補間により、点B10〜B40が、それぞれb1〜b4の画素データに変換された様子を示している。
この場合、この実施形態では、図14(A)の左側の歪みを伴う画像データを構成する点B1〜B4は、水平方向の手ぶれ補正量が含まれたものと考えることができる。図14(A)の場合の水平方向の補間は、各点B1〜B4のそれぞれに対して、前述した例えば図の場合を適用することで行なうことができる。つまり、水平FIRフィルタを用いる1次元補間演算でよい。
また、図14(B)の垂直方向の場合にも同様に、図14(B)で、例えば点B30に対しては、垂直方向に連続した当該点B30を跨ぐ、破線内の4つの格子点(点K20〜K23)における画像データに、前述した図12または図13と同様の考え方による乗算係数を用いて補間処理を実行することにより、点b3の画素データが算出される。したがって、垂直方向についても、垂直FIRフィルタによる1次元補間演算でよい。
[水平処理ブロック51における処理動作]
[水平処理用手ぶれ補正量積分部511の積分処理]
図15に、水平処理用手ぶれ補正量積分部511における積分処理動作のフローチャートを示す。
まず、初期y座標(水平ライン位置に対応)SYに、水平同期信号H−SYNC(ここでは、水平同期信号H−SYNCは、一般的な水平走査信号のうち、有効画像領域以外をマスクしたタイミング信号を意味するものとする)毎に「step」という値を加算して行く(ステップS1)。
初期y座標SYは、出力画像の最初の1水平ライン目が、CMOSイメージャ上の総画素の座標系(以後絶対座標系と呼ぶ)のどこに位置するかを表しており、一般的には「0」ではない。
これは、動画時には、通常、CMOSイメージャ上の全画素が、信号処理部5に入力されるのではなく、CMOSイメージャ内で垂直方向に平均加算されてから、後段の信号処理部5に入力されるからである。また、信号処理部5に入力されてからでも、幾つかの処理を経るため、1水平ライン目の絶対座標は「0」でないことの方が多いからである。更に、入力画像データに対して、垂直方向の部分拡大処理を行なう場合には、初期y座標SYは、画面の中ほどの水平ライン位置となるので、非常に大きい値をとることもあり得るからである。
ステップS1で、1水平同期信号H−SYNC毎に加算する「step」という値は、ライン間隔の絶対座標系における垂直座標の増量を表わすが、上述したCMOSイメージャ内もしくは水平処理ブロックの前段における、垂直方向の複数ラインの画像データの平均加算により、1以外に2や4といった値をとる可能性がある。
さて、ステップS1で、初期y座標値をSYとして、1水平同期信号H−SYNC毎に、値stepを加算することにより、現在処理している水平ラインの絶対座標が求まり、当該絶対座標の整数成分vp_i(ステップS2)が、水平補正速度成分X_STB_*(*は0〜7のいずれかである。すなわち、水平補正速度成分X_STB_*は、X_STB_0〜X_STB_7のいずれかを意味する。以下、同じ。)を、現時点までに積分すべき積分回数に対応する。ここで、この積分回数は、1画面内における積算値である。
次に、現在処理している水平ライン(以下、現処理ラインという)の絶対座標の整数成分vp_iと、現処理ラインの1水平ライン前までに積分した回数(積分回数hstb_cnt)とを比較する。これにより、現処理ラインにおいて、あと何回積分すれば良いかが分かり、その回数分だけ、処理単位サイクル(1水平周期よりも十分に短い)毎にトリガTG1が発生する(ステップS3)。
このトリガTG1が発生する毎に、積分回数hstb_cntは1づつインクリメントする(ステップS4、ステップS5)。
そして、このトリガTG1ごとに、水平補正速度成分X_STB_0〜X_STB_7のうちの、現処理ラインが所在する分割画像区間についての水平補正速度成分を加算することにより、積分処理を行ない、水平手ぶれ補正量SX_ADDを得る(ステップS6)。ここで、図15のステップS6における「stb_x」は、水平補正速度成分X_STB_0〜X_STB_7のいずれかの値である。すなわち、「stb_x」は、現処理ラインが所在する分割画像区間についての水平補正速度成分の値である。
また、水平レンズ歪み水平補正量データを、水平レンズ歪み水平補正量データデコード部121から取得するためには、補正対象部位の画素のx座標だけではなくy座標も必要であり、かつ、当該y座標は、CMOS手ぶれの影響を受けているため、この水平処理用手ぶれ補正量積分部511においても、垂直手ぶれ補正量SY_ADDを積分して得るようにする。
すなわち、ステップS3で発生するトリガTG1ごとに、垂直補正速度成分Y_STB_0〜Y_STB_7のうちの、現処理ラインが所在する分割画像区間についての垂直補正速度成分を加算することにより、積分処理を行ない、垂直手ぶれ補正量SY_ADDを得る(ステップS7)。ここで、図15のステップS7における「stb_y」は、垂直補正速度成分Y_STB_0〜Y_STB_7のいずれかの値である。すなわち、「stb_y」は、現処理ラインが所在する分割画像区間についての垂直補正速度成分の値である。
ステップS1で、1水平同期信号H−SYNC毎に加算される値「step」=1であって、画像の拡大などではない通常の画像出力の場合には、トリガTG1は、1水平同期信号H−SYNC毎に発生するため、ステップS6では、1水平ライン毎に「stb_x」を加算(積分)し、ステップS7では1水平ライン毎に「stb_y」を加算(積分)するものである。
こうして得られる水平手ぶれ補正量SX_ADDは、前述もしたように、CMOSイメージャ上での各水平ラインの水平方向の読み出し開始位置の補正量、すなわち、水平処理ブロック51における水平方向画像歪み補正処理における各ラインの水平初期位置(水平オフセット)そのものとなる。補正対象部位としての水平ラインの各画素のx座標は、この水平手ぶれ補正量SX_ADDだけ、水平方向にシフトされたものとなる。
また、垂直手ぶれ補正量SY_ADDは、CMOSイメージャ上での各水平ラインの垂直方向の座標シフト量となる。この値は、同一水平ライン内では同じであり、したがって、補正対象部位としての水平ラインの各画素のy座標は、当該垂直手ぶれ補正量SY_ADDだけ、垂直方向にシフトされたものとなる。
このように、水平手ぶれ補正量SX_ADDおよび垂直手ぶれ補正量SY_ADDにより、CMOS手ぶれに応じて補正された画素位置の情報は、後述するように、当該画素位置における水平方向のレンズ歪みを取得するための情報として用いられる。
上述したように、ステップS6およびステップS7では、現処理ラインが、1画面分(1フレーム=1垂直同期周期)を垂直方向に8分割した分割画像区間のどこに属するかによって、水平補正速度成分X_STB_0〜X_STB_7のうちのいずれか1つ、および垂直補正速度成分Y_STB_0〜Y_STB_7のうちのいずれか1つを選択しなければならない。そのための仕組みが、図15の残りの部分の処理である。
この例では、分割画像区間分のライン数の加算値stb_gridが定義される(ステップS8)。この加算値stb_gridの初期値は、1分割画像区間のライン数DIVである。
そして、この加算値stb_gridと、積分回数hstb_cntとを比較し、積分回数hstb_cntが加算値stb_gridを超える毎に、トリガTG2を発生する(ステップS9)。そして、トリガTG2が発生するごとに、加算値hstb_cntに、1分割画像区間のライン数DIVを加算する(ステップS10)。
以上の処理により、現処理ラインが次の分割画像区間に移る毎に、トリガTG2が発生する。したがって、現処理ラインが各分割画像区間Pdiv_0〜Pdiv_7の何れに存在するかの分割区間値HDIV_CNTを定義し(ステップS11)、この分割区間値HDIV_CNTを、トリガTG2が発生する毎に、1づつインクリメントする(ステップS12)。すると、分割区間値HDIV_CNTは、現処理ラインが所在する各分割画像区間Pdiv_0〜Pdiv_7のそれぞれに対応して「0」〜「7」の値を取る。すなわち、分割区間値HDIV_CNTは、水平処理の進捗度合いを示すものとなる。
ステップS6、ステップS7では、この分割区間値HDIV_CNTを参照して、「stb_x」、「stb_y」を決定する。
なお、この例では、分割区間値HDIV_CNT=8のときには、1フレーム分の画像データについての処理が終了したことを意味する。そして、分割区間値HDIV_CNT=8に、「1」が加わると、分割区間値HDIV_CNT=0となるように計算される。
この分割区間値HDIV_CNTは、また、垂直処理ブロック52およびレジスタブロック53に、水平処理ブロック51での現処理ラインが何れの分割画像区間に所在しているかを示すために、すなわち、水平処理の進捗状況を報知するために供給される。
[水平画像処理部512の処理動作]
図16は、水平画像処理部512の構成例を示すものである。この図16の例では、前述の図15のフローチャートにおける水平同期信号H−SYNC毎に値「step」を初期y座標SYに加算する加算部101が、この水平画像処理部512に含まれるものとしており、このため、この水平画像処理部512に初期y座標SYが入力される。さらに、この水平画像処理部512には初期x座標SXが入力される。これら初期y座標SYおよび初期x座標SXは、1フレームの先頭で、例えば制御部10で設定されて入力される。
そして、加算部101からの、水平同期信号H−SYNC毎に値「step」が加算されたy座標値SY´は、水平処理用手ぶれ補正量積分部511に供給される。すると、この水平処理用手ぶれ補正量積分部511からは、現処理ラインの先頭のx座標のオフセット値として、水平手ぶれ補正量SX_ADDが返ってくると共に、現処理ラインのy座標のオフセット値SY_ADDが返ってくる。
水平画像処理部512では、加算部102において、各水平ラインの先頭で一回だけ、水平処理用手ぶれ補正量積分部511からの水平手ぶれ補正量SX_ADDを、初期x座標SXに加算する。また、加算部103において、各水平ラインの先頭で一回だけ、水平処理用手ぶれ補正量積分部511からの垂直手ぶれ補正量SY_ADDを、初期y座標SYに加算する。
そして、加算部102の出力値に対して、画素処理クロックCLKごとに、水平拡大・縮小のパラメータ並びに水平方向の解像度変換のパラメータである値「hmag」を、加算部104により加算する。この加算部104の出力値hx_addは、レンズ歪み水平補正量データデコード部121に対する引数としての座標(x、y)データのうちのx座標として供給する。
また、加算部103の出力値hy_addは、レンズ歪み水平補正量データデコード部121に対する引数としての座標(x,y)データのうちのy座標として供給する。
レンズ歪み水平補正量データデコード部121からは、これに入力された座標(x,y)の撮像素子上のレンズ歪み水平補正量データCORR_Xが出力される。このレンズ歪み水平補正量CORR_Xは、加算部104の出力値hx_addに、画素処理クロックCLKごとに加算部106で加算される。
なお、加算部104からの水平座標の補正出力値hx_addは、レンズ歪み水平補正量データデコード部121からレンズ歪み水平補正量データCORR_Xを得るときの遅延量分の遅延部105を介して加算部106に供給される。
そして、加算部106からの出力値X_ADDは、比較部107および108、また、小数部抽出部109および整数部抽出部110に供給される。
比較部107は、加算部106からの出力値X_ADDを、1画素処理クロックCLKだけ前の出力値X_ADDの整数成分と比較し、差が1以上であるとき、すなわち、画素位置が1画素分以上ジャンプしたときに、そのジャンプを示す信号SKIPを出力する。この例では、このジャンプを示す信号SKIPを参照することで、次に画素処理クロックCLKのタイミングで処理すべきジャンプした画素位置を知ることができる。この信号SKIPは、FIFOメモリコントローラ111に供給される。
また、比較部108は、加算部106からの出力値X_ADDを、1画素処理クロックCLKだけ前の出力値X_ADDの整数成分と比較し、差が1より小さいときに、その旨を示す信号HOLDを出力する。したがって、この信号HOLDを参照することで、読み出し画素を、1画素処理クロックCLKだけ前と同じであることを知ることができる。この信号HOLDは、1ライン分の容量のFIFOラインメモリ112への書き込み及び読み出しを制御するFIFOメモリコントローラ111に供給される。FIFOラインメモリ112は、前述したが、画像メモリ6のメモリ領域の一部を用いても良い。その場合には、FIFOメモリコントローラ111は、メモリインタフェース54内に設けられる。
小数部抽出部109は、加算部106からの出力値X_ADDの小数部を、画素処理クロックCLK毎に抽出し、抽出した小数部の値X_PHASEを出力する。この少数部の値X_PHASEは、水平FIRフィルタ113を備える水平補間処理部114に供給される。水平補間処理部114では、この小数部の値X_PHASEに基づいて乗算係数テーブルを検索し、水平FIRフィルタ113に供給する乗算係数を得るようにする。
整数部抽出部110は、加算部106からの出力値X_ADDの整数部を、水平同期信号H−SYNCにより各水平ラインの先頭で抽出し、抽出した整数部の値ST_POSを出力する。この整数部の値ST_POSは、現処理ラインの初期x座標としてFIFOメモリコントローラ111に供給される。
FIFOメモリコントローラ111は、入力画像データDinについて、水平処理用FIFOラインメモリ112を用いて、水平手ぶれ補正量SX_ADDとレンズ歪み水平補正量CORR_Xとの加算量の整数部に基づいた補正処理を行なうと共に、水平拡大・縮小処理および水平方向の解像度変換を行なう。ここで、水平処理用FIFOラインメモリ112が、実際に1水平ライン分相当のサイズを必要とするのは、後述するように、画像の部分拡大処理をサポートすることを考慮する場合のみである。
すなわち、FIFOメモリコントローラ111は、入力画像データDinについて、前記整数部の値ST_POSを用いて、出力画像データとして読み出す各水平ラインの画素データの初期x座標を決める。また、FIFOメモリコントローラ111は、信号SKIPおよび信号HOLDを画素処理クロックCLKごとに参照し、水平処理用FIFOラインメモリ112から読み出す画素データを決定するようにする。
そして、FIFOメモリコントローラ111は、以上のようにして読み出した水平ラインの画素データを出力画像データDHimdとして、データイネーブル信号ENと共に、水平補間処理部114に供給する。
水平補間処理部114は、データイネーブル信号ENがイネーブル状態となっているときに入力される画像データを有効データとして、水平FIRフィルタ113を用いて前述したような水平方向の補間処理を実行する。前述したように、このときに水平補間処理部114に入力される小数部の値X_PHASEを用いて、水平FIRフィルタ113に供給する乗算係数が決定されている。
こうして、水平補間処理部114からは、水平手ぶれ補正量SX_ADDとレンズ歪み水平補正量CORR_Xとの加算量に応じて水平方向補正処理がなされると共に、水平方向の拡大・縮小処理および水平方向の解像度変換がなされた画像データDHoutが得られる。このDHoutは、データイネーブル信号ENと共に、メモリインタフェース54を通じて画像メモリ6の第1メモリ領域61に書き込まれる。
ところで、上述の説明では、水平処理用手ぶれ補正量積分部511の水平手ぶれ補正量SX_ADDおよび垂直手ぶれ補正量SY_ADDの積分処理と、水平画像処理部511の水平拡大・縮小画像処理、水平解像度変換処理の、互いの処理タイミングについて特に触れなかったが、水平手ぶれ補正量SX_ADDおよび垂直手ぶれ補正量SY_ADDの積分処理を、遅延無しで、水平拡大・縮小画像処理、水平解像度変換処理との単純なシーケンス処理で行なうことが好都合なのは、図17の上側の図17(A)に示すように、垂直方向の部分切り出し及び部分拡大をサポートしない場合にほぼ限られる。図17で、V−SYNCは垂直同期信号を示し、また、ST_TGは、有効走査ラインの開始時点を示している。また、図17で、網掛けを付して示した四角で囲まれた区間は、それぞれの処理区間を示している。
一方、垂直方向の部分切り出し、もしくは部分拡大をサポートする場合、初期y座標SYが非常に大きな値を取り得るため、フレーム先頭の積分処理に、相当長いサイクル数(画素処理サイクル数)を要してしまう可能性がある。図17下側の(B)のシーケンスにおける期間tmがそのための積分期間である。
このようになると、図17上側の(A)のシーケンスでは、最初の拡大・縮小処理が水平同期信号H−SYNCの1周期期間をオーバーしてしまうため、次の水平同期信号H−SYNCで入力されて来る2ライン目の画像データを保持しておくためのラインメモリが必要となる。
そこで、この実施形態では、図17下側の(B)のシーケンスに示すように、水平拡大・縮小画像処理が開始される1水平周期前から積分処理の起動を行ない、常に画像処理に対して、1水平周期だけ先行して積分処理を行なうタイミングおよびシーケンスを採用する。このため、水平処理用FIFOラインメモリ61は、1水平周期分のサイズのものがこの実施形態では用いられている。
上述した問題は、画像の部分拡大等に関わらず、水平処理は常に全入力ラインに対して処理を施す、というアーキテクチャにすれば避けられる。しかし、いずれにしても、図18上側のシーケンスを実現しようとすると、積分処理の終了信号を新たに設け、それを受けて画像処理の起動をかけなければならず、やや煩雑である。つまり、換言すれば、上述したこの実施形態で採用した手法は、既存の画像処理の回路に新たな手を加えないで済む、というメリットがあるのである。
なお、上述した実施形態で採用した手法は、水平同期信号H−SYNCの1周期期間内の画素処理サイクル数よりも、絶対座標系の垂直サイズが大きい場合には採用できない。その場合には、水平処理は常に全入力ラインに対して処理を施すという、上述したアーキテクチャにすれば良い。
[垂直処理ブロック52における処理動作]
[垂直処理用手ぶれ補正量積分部521の積分処理]
次に、垂直処理用手ぶれ補正量積分部521における積分処理動作について説明する。図18は、この垂直手ぶれ補正量SY_ADDを得るための積分処理動作のフローチャートを示すものである。
この垂直処理用手ぶれ補正量積分部521の積分処理動作は、図15を用いて上述した水平処理用手ぶれ補正量積分部511の積分処理動作と類似しているが、次の点が異なる。
すなわち、水平同期信号H−SYNC毎に初期y座標に加算する値が「vmag」であることと、水平処理の進捗度合いを表すHDIV_CNTを見て、ウエイト(WAIT)をかけることと、各ラインの積分処理が終了したことを表わす積分完了信号STB_RDYを生成して、垂直信号処理モジュールへ伝達すること、の以上3点である。
この実施形態では、垂直画像処理において垂直方向の拡大・縮小を想定しており、また、垂直解像度の変換を行なうことを想定しているので、値「vmag」は垂直拡大・縮小の倍率パラメータおよび垂直解像度変換に応じたパラメータを表わしている。したがって、垂直処理ブロック52では、水平処理ブロック51から出力される画像データを全て処理するのではなく、拡大・縮小処理および垂直解像度変換処理後に出力するラインの垂直座標を基準として処理を行なう。
そのため、この垂直方向の積分処理においても、実際に、この垂直方向の積分処理後の垂直画像処理の対象となる座標における積分値を出力することが求められることから、垂直方向の座標増分パラメータを水平同期信号H−SYNC毎に加算するのである。なお、画像の拡大・縮小や垂直解像度変換を伴わずに、CMOS手ぶれの補正のみを行なうのであれば、vmag = 1として良い。
水平方向の積分処理とは異なる二つ目の、分割区間値HDIV_CNTを見て、水平処理の進捗度合いを観測する必要性は、水平処理を垂直処理が追い越すことがあってはならないからである。一般的な画像の垂直拡大・縮小処理、解像度変換処理においては、垂直処理が水平処理を追い越す、というのは、まだ生成されていない画像に対して処理を施すことであるため、自ずとウエイトをかける仕組みが必要となる。同様に、この垂直方向の積分処理においても、画像を直接扱う訳ではないが、水平処理を追い越さない仕掛けが必要なのである。
もう少し詳細に説明する。水平および垂直方向の積分パラメータである水平補正速度成分X_STB_*(*は0〜7のいずれかであり、X_STB_*は、X_STB_0〜X_STB_7のいずれかを意味する。以下同じ)と、垂直補正速度成分Y_STB_*(*は0〜7のいずれかであり、Y_STB_0〜Y_STB_7のいずれかを意味する。以下、同じ)は、処理を行っている水平ラインのサンプリング時刻(厳密に言うと露光期間の中心時点であることは既に説明)付近の手ぶれ速度ベクトル(手ぶれの速度と方向)の、それぞれ水平成分、垂直成分の逆符号である。したがって、露光時間が極めて短い時間の場合まで考慮すると、水平補正速度成分X_STB_*と垂直補正速度成分Y_STB_*は、対応する水平ラインの画像データが入力される直前まで確定できない場合がある。
後で詳述するレジスタブロック53では、この事情を考慮し、水平方向の積分処理において現在処理しているラインが属する分割画像区間を意味する分割区間値HDIV_CNTの値を見て、水平補正速度成分X_STB_*と垂直補正速度成分Y_STB_*を、水平処理ブロック用レジスタと、垂直処理ブロック用レジスタにラッチする。したがって、水平処理ブロック51では、特別な仕組みを設けなくとも、入力された画像を順次処理して行けば良いのである。
一方、垂直処理ブロック52での積分処理では、当該積分処理を行なった結果を、後段の垂直方向画像処理の初期オフセット座標とするため、水平処理からの画像が未だ入って来ていないことに後から気付いても、その時点では既にそのラインの積分処理は終わってしまっている。つまり、そのときには、未確定の垂直補正速度成分が用いられて積分がなされてしまったことになる。
そのため、積分処理の段階で、処理しようとするラインに対応した積分パラメータである垂直補正速度成分Y_STB_*が、まだ確定前であることを、水平処理の進捗度合いから判断する必要があるのである。
そのための仕組みとして、図18のように、垂直処理の進捗度合いを表わす分割区間値VDIV_CNTが、水平処理の進捗度合いを表わす分割区間値HDIV_CNTを超えてしまっていれば、ウエイトを発行し、図18の左下で、垂直処理における現処理ラインが所在する分割画像区間についての垂直補正速度成分の値である「stb_y」が未確定のままの垂直補正速度成分Y_STB_*が選択された状態で、垂直手ぶれ補正量SY_ADDに加算されるのを防ぐ。
垂直方向の積分処理(図18)が水平方向の積分(図15)と異なる、3つ目の点は、各ラインでの垂直積分が完了したことを表す積分完了信号STB_RDYの生成である。各ライン内で積分を繰り返して行なった結果、そのラインの絶対座標の整数成分vp_iと、そのフレーム内での累積積分回数vstb_cntとが一致したときに、後段の垂直画像処理モジュールに渡すべき垂直オフセットSY_ADDが求められ、それと同時に、後段の垂直画像処理の起動をかけるのが目的である。
既に説明した水平方向の積分処理においては、有効画像が入力されるタイミングよりも1水平同期信号H−SYNC(1水平周期)前から積分処理を開始しておけば、有効画像に対する水平画像処理が始まるまでに積分処理を完了できることが、殆どの場合、システム的に保証可能であるが、垂直方向の積分処理では、前述のウエイトが発生する可能性があるために、直前1水平周期の時間で積分が完了することを、全ての場合において保証するのは不可能だからである。すなわち、ウエイトが発生したときには、垂直積分が完了したことを表す積分完了信号STB_RDYが発生したときに、垂直手ぶれ補正および垂直拡大・縮小処理を含む垂直画像処理を実行するようにする。
以上の機能を有する、この垂直方向の積分回路を適用した垂直方向の積分処理を図18のフローチャートを参照しながら説明する。
まず、初期y座標(水平ライン位置に対応)SYに、水平同期信号H−SYNC毎に前述した値「vmag」を加算して行く(ステップS21)。
ステップS21で、初期y座標値をSYとして、1水平同期信号H−SYNC毎に、値vmagを加算することにより、現在処理している水平ラインの絶対座標が求まり、当該絶対座標の整数成分vp_i(ステップS22)が、垂直補正速度成分Y_STB_*(Y_STB_0〜Y_STB_7のいずれか)を、現時点までに積分すべき積分回数に対応する。ここで、この積分回数は、1画面内における積算値である。
次に、現在処理している水平ライン、すなわち、現処理ラインの絶対座標の整数成分vp_iと、現処理ラインの1水平ライン前までに積分した回数(積分回数vstb_cnt)とを比較する。これにより、現処理ラインにおいて、あと何回積分すれば良いかが分かり、その回数分だけ、処理単位サイクル(1水平周期よりも十分に短い)毎にトリガTG3が発生する(ステップS23)。
このトリガTG3が発生する毎に、積分回数vstb_cntは1づつインクリメントする(ステップS24、ステップS25)。
そして、このトリガTG3ごとに、垂直補正速度成分Y_STB_0〜Y_STB_7のうちの、現処理ラインが所在する分割画像区間についての垂直補正速度成分を加算することにより、積分処理を行ない、垂直手ぶれ補正量SY_ADDを得る(ステップS26)。ここで、図18のステップS26における「stb_y」は、垂直補正速度成分Y_STB_0〜Y_STB_7のいずれかの値である。すなわち、「stb_y」は、現処理ラインが所在する分割画像区間についての垂直補正速度成分の値である。
また、垂直レンズ歪み水平補正量データを、垂直レンズ歪み水平補正量データデコード部122から取得するためには、補正対象部位の画素のy座標だけではなくx座標も必要であり、かつ、当該x座標は、CMOS手ぶれの影響を受けているため、この垂直処理用手ぶれ補正量積分部521においても、水平手ぶれ補正量SX_ADDを積分して得るようにする。
すなわち、ステップS23で発生するトリガTG3ごとに、水平補正速度成分X_STB_0〜Y_STB_7のうちの、現処理ラインが所在する分割画像区間についての水平補正速度成分を加算することにより、積分処理を行ない、水平手ぶれ補正量SX_ADDを得る(ステップS27)。ここで、図18のステップS27における「stb_x」は、水平補正速度成分X_STB_0〜X_STB_7のいずれかの値である。すなわち、「stb_x」は、現処理ラインが所在する分割画像区間についての水平補正速度成分の値である。
ステップS21で、1水平同期信号H−SYNC毎に加算される値「vmag」=1であって、画像の拡大などではない通常の画像出力の場合には、トリガTG3は、1水平同期信号H−SYNC毎に発生するため、ステップS26では、1水平ライン毎に「stb_y」を加算(積分)し、ステップS27では1水平ライン毎に「stb_x」を加算(積分)するものである。
こうして得られる垂直手ぶれ補正量SY_ADDは、前述もしたように、CMOSイメージャ上での各水平ラインの垂直方向の読み出し開始位置の補正量、すなわち、垂直処理ブロック52における垂直方向画像歪み補正処理における各ラインの垂直位置(垂直オフセット)そのものとなる。補正対象部位としての水平ラインの各画素のy座標は、この垂直手ぶれ補正量SY_ADDだけ、垂直方向にシフトされたものとなる。
また、水平手ぶれ補正量SX_ADDは、CMOSイメージャ上での各水平ラインの水平方向の座標シフト量となる。したがって、補正対象部位としての水平ラインの各画素のx座標は、当該水平手ぶれ補正量SX_ADDだけ、水平方向にシフトされたものとなる。
このように、水平手ぶれ補正量SX_ADDおよび垂直手ぶれ補正量SY_ADDにより、CMOS手ぶれに応じて補正された画素位置の情報は、後述するように、当該画素位置における垂直方向のレンズ歪みを取得するための情報として用いられる。
上述したように、ステップS26およびステップS27では、現処理ラインが、1画面分(1フレーム=1垂直同期周期)を垂直方向に8分割した分割画像区間のどこに属するかによって、垂直補正速度成分Y_STB_0〜Y_STB_7のうちのいずれか1つ、および水平補正速度成分X_STB_0〜X_STB_7のうちのいずれか1つを選択しなければならない。
この例では、分割画像区間分のライン数の加算値vstb_gridが定義される(ステップS28)。この加算値vstb_gridの初期値は、1分割画像区間のライン数DIVである。
そして、この加算値vstb_gridと、積分回数vstb_cntとを比較し、積分回数vstb_cntが加算値vstb_gridを超える毎に、トリガTG4を発生する(ステップS29)。そして、トリガTG4が発生するごとに、加算値vstb_cntに、1分割画像区間のライン数DIVを加算する(ステップS30)。
以上の処理により、現処理ラインが次の分割画像区間に移る毎に、トリガTG4が発生する。したがって、現処理ラインが各分割画像区間Pdiv_0〜Pdiv_7の何れに存在するかの分割区間値VDIV_CNTを定義し(ステップS31)、この分割区間値VDIV_CNTを、トリガTG4が発生する毎に、1づつインクリメントする(ステップS32)。すると、分割区間値VDIV_CNTは、現処理ラインが所在する各分割画像区間Pdiv_0〜Pdiv_7のそれぞれに対応して「0」〜「7」の値を取る。すなわち、分割区間値VDIV_CNTは、垂直処理の進捗度合いを示すものとなる。
ステップS6、ステップS7では、この分割区間値HDIV_CNTを参照して、「stb_x」、「stb_y」を決定する。
なお、この例では、分割区間値VDIV_CNT=8のときには、1フレーム分の画像データについての処理が終了したことを意味する。そして、分割区間値VDIV_CNT=8に、「1」が加わると、分割区間値VDIV_CNT=0となるように計算される。
この分割区間値VDIV_CNTは、水平処理ブロック51からの、水平処理の進捗度合いを示す分割区間値HDIV_CNTと比較され、分割区間値VDIV_CNTが分割区間値HDIV_CNTよりも大きくなったときには、水平処理を垂直処理が追い越してしまう状態を意味するので、ウエイト(WAIT)を発生して、トリガTG3の発生を待機させる。すなわち、トリガTG3は、ウエイトが解除された後に発生するように遅延させる(ステップS33)。
そして、この実施形態では、ステップS22で得られるy座標の整数成分vp_iと、積分回数vstb_cntとが等しいかどうかをチェックし、等しければ現処理ラインについての垂直方向の積分が完了したことを示す積分完了信号STB_RDYを生成して出力する(ステップS34)。
この積分完了信号STB_RDYは、垂直画像処理部522に供給される。垂直画像処理部522では、現処理ラインについての垂直方向の手ぶれ補正処理のみを行なうのであれば、この積分完了信号STB_RDYにより、現処理ラインについての垂直方向の手ぶれ補正処理を開始してよいことを認識し、次の水平同期信号H−SYNCのタイミングで垂直画像処理を再開することができる。
しかし、この実施形態では、垂直方向の手ぶれと同時に垂直方向のレンズ歪みを補正するようにしているので、ライン単位のレンズ歪み補正完了信号DIST_RDY(図示せず)を、垂直画像処理部522が発生するようにしており、積分完了信号STB_RDYと、レンズ歪み補正完了信号DIST_RDYとの両方がアクティブになった後の、次の水平同期信号H−SYNCのタイミングで垂直画像処理を再開するようにする。
DIST_RDY信号の遅延は、レンズ歪み補正処理が扱う画像データが、水平処理ブロック51の処理ラインの画像と連動しておらず、場合によっては水平処理ブロックが数10ライン以上先行しないと生成されない画像データであるため、この水平処理の処理待ちのために発生する。
[垂直画像処理部522の処理動作]
図19は、垂直画像処理部522の構成例を示すものである。この図19の例では、前述の図18のフローチャートにおける水平同期信号H−SYNC毎に値「vmag」を加算する加算部201が、この垂直画像処理部522に含まれるものとしており、この垂直画像処理部522に初期y座標SYが入力される。
そして、加算部201からの、垂直同期信号H−SYNC毎に値「vmag」が加算されたy座標値SY´は、垂直処理用手ぶれ補正量積分部521に供給される。すると、この垂直処理用手ぶれ補正量積分部521からは、現処理ラインの先頭のy座標のオフセット値として、垂直手ぶれ補正量SY_ADDが返ってくると共に、現処理ラインのx座標のオフセット値SX_ADDが返ってくる。
垂直画像処理部522では、加算部202において、各水平ラインの先頭で一回だけ、垂直処理用手ぶれ補正量積分部521からの垂直手ぶれ補正量SY_ADDを、y座標SY´に加算する。また、加算部203において、各水平ラインの先頭で一回だけ、垂直処理用手ぶれ補正量積分部521からの水平手ぶれ補正量SX_ADDを、初期x座標SXに加算する。
そして、加算部203の出力値に対して、画素処理クロックCLKごとに、水平拡大・縮小のパラメータである値「hmag」を、加算部204により加算する。この加算部204の出力値vx_addは、レンズ歪み垂直補正量データデコード部122に対する引数としての座標(x、y)データのうちのx座標として供給する。
また、加算部202の出力値vy_addは、レンズ歪み垂直補正量データデコード部122に対する引数としての座標(x,y)データのうちのy座標として供給する。
レンズ歪み垂直補正量データデコード部122からは、これに入力された座標(x,y)の撮像素子上のレンズ歪み垂直補正量データCORR_Yが出力される。このレンズ歪み垂直補正量CORR_Yは、加算部202の出力値vy_addに、画素処理クロックCLKごとに加算部206で加算される。
なお、加算部202からの垂直座標の補正出力値vy_addは、レンズ歪み垂直補正量データデコード部122からレンズ歪み垂直補正量データCORR_Yを得るときの遅延量分の遅延部205を介して加算部206に供給される。
そして、加算部206からの出力値Y_ADDは、小数部抽出部207および整数部抽出部208に供給される。
小数部抽出部207は、加算部206からの出力値Y_ADDの小数部を、画素処理クロックCLK毎に抽出し、抽出した小数部の値Y_PHASEを出力する。この少数部の値Y_PHASEは、垂直FIRフィルタ210を備える垂直補間処理部209に供給される。
垂直FIRフィルタ210は、垂直方向に並ぶ複数ラインの画素データを用いて補間処理を行なうもので、垂直補間処理部209では、この小数部の値Y_PHASEに基づいて乗算係数テーブルを検索し、垂直FIRフィルタ210に供給する乗算係数を得るようにする。これは、補間方向が垂直方向になるだけで、図11〜図13を用いて説明した水平FIRフィルタを用いる水平方向の補間処理とほぼ同様である。
整数部抽出部208は、加算部206からの出力値Y_ADDの整数部を、画素処理クロックCLK毎に抽出し、抽出した整数部の値Y_POSを出力する。この整数部の値Y_POSは、現処理ラインの画素処理クロックCLK毎のy座標としてメモリインタフェース54に供給される。
メモリインタフェース54は、レジスタブロック53に保持されているセパレートアドレスSepAdrを取り込み、第1メモリ領域61と、第2メモリ領域62との分割点アドレスを認識して、第1メモリ領域61のアドレス範囲(書き込み、読み出し領域)を認識し、第1メモリ領域61に対する書き込みおよび読み出しを制御する。
メモリインタフェース54は、水平処理ブロック51からの画像データDHoutを、一旦、画像メモリ6の第1メモリ領域61に書き込む。そして、メモリインタフェース54は、垂直手ぶれ補正量SY_ADDとレンズ歪み垂直補正量CORR_Yとの加算量Y_ADDの整数部Y_POSに基づいて、出力画像データDHout_0〜DHout_nとして出力する複数の水平ラインの画像データを決める。
そして、メモリインタフェース54は、垂直方向の画像処理を開始することができるデータ量の画像データが第1メモリ領域61に書き込まれたら、垂直補間処理部209からの要求信号(ライン要求)REQに応じて、この第1メモリ領域61から、前記整数部Y_POSに基づいて決定された出力画像データDHout_0〜DHout_nを読み出して、垂直補間処理部209に送出する。
垂直補間処理部209では、これに入力された画像データDHout_0〜DHout_nについて、垂直手ぶれ補正量SY_ADDとレンズ歪み垂直補正量CORR_Yとの加算量Y_ADDの少数部Y_PHASEに基づいて、垂直FIRフィルタ210を用いて垂直方向の補間処理を行なって、垂直方向の手ぶれ補正およびレンズ歪み補正処理を行なうと共に、垂直拡大・縮小処理、垂直解像度変換処理を行なう。前述したように、このときに垂直補間処理部209に入力される小数部の値Y_PHASEを用いて、垂直FIRフィルタ210に供給する乗算係数が決定されている。
こうして、垂直補間処理部209からは、垂直手ぶれ補正量SY_ADDとレンズ歪み垂直補正量CORR_Yとの加算量に応じて垂直方向補正処理がなされると共に、垂直方向の拡大・縮小処理、垂直方向の解像度変換がなされた画像データDYoutが得られる。
この画像データDYoutは、データイネーブル信号ENと共に、メモリインタフェース54に送られる。メモリインタフェース54は、この画像データDYoutを第2メモリ領域62に書き込む。
そして、メモリインタフェース54は、画像データ出力処理部523からの要求信号REQに応じて、例えば、元の画像データのタイミングからみると、1垂直周期遅れたタイミングで、第2メモリ領域62から画像データを読み出して、画像データ出力処理部523に出力画像データDoutとして出力する。
次に、図20に、上説明した垂直方向の積分処理と、その後段の垂直画像処理のタイミング関係を示す。
垂直方向の部分切り出し、垂直方向の部分拡大・縮小のいずれもサポートしない場合には、前述したウエイト(WAIT)は発生せず、現処理ラインについての垂直方向の積分回数の上限は高々数回である。このため、同一のラインに対する積分処理と画像処理の両方を、同じ1水平同期信号H−SYNC期間内でシーケンス化可能である。したがって、この場合には、わざわざ積分完了信号STB_RDYを導入する必要はない。
一方、垂直方向の部分切り出し、もしくは垂直方向の部分拡大をサポートする場合には、1ライン目の積分処理の途中でウエイトが発生する可能性があり、縮小をサポートする場合には、どこか途中の水平ラインでウエイトが発生する可能性がある。そこで、積分完了信号STB_RDYがアクティブ(図20の例ではハイレベル)になるのを待つ必要がある。さらに、この実施形態の垂直処理ブロックでは、レンズ歪み補正も同時に行うので、レンズ歪み垂直補正完了信号DIST_RDYも、アクティブ(図20の例ではハイレベル)になるのを待って、次の水平ラインの処理のトリガとして、垂直処理用の水平同期信号H−SYNCが生成される。
すなわち、図20に示すように、垂直方向の部分切り出し、もしくは垂直方向の部分拡大のいずれの場合でも、同一ラインの積分処理が、ウエイトによって数水平同期信号H−SYNC区間もしくはそれ以上に渡って中断されるため、積分処理が終了したことを後段に知らせるための積分完了信号STB_RDYが必要となる。
そして、図20に示すように、レンズ歪み垂直補正処理が終了しないと次のラインの処理に移行できないため、レンズ歪み垂直補正完了信号DIST_RDYが、積分完了信号STB_RDYがアクティブになるのに加えて、アクティブになったときに、垂直処理終了信号を出し、その後の水平同期信号H−SYNCのタイミングから、垂直画像処理を次のラインの画像データの処理を行なうようにする。
また、同時に、あるラインの垂直画像処理が完了していない場合には、次の水平同期信号H−SYNCを、図20において点線で示すように、マスクするようにする。すなわち、垂直処理終了信号が立たない限り、水平ライン開始処理トリガとしての水平同期信号H−SYNCは、マスクされる。
[画像メモリ6のメモリアクセス制御および容量]
次に、以上説明した画像処理における画像メモリ6に対する書き込み、読み出しのアクセス制御および画像メモリ6の第1メモリ領域61および第2メモリ領域62として必要な容量について、さらに説明する。
この実施形態の撮像装置は、動作モードとして、
(a)動画撮影モード
(b)モニタリングモード(静止画記録の画枠を決定する際などに、モニター用表示画面に表示される映像を生成するモード)
(c)静止画記録モード
(d)静止画再生モード
などがある。
動画撮影モードには、HD(High Definition;高精細度)動画撮影モードと、SD(Standard Definition)動画撮影モードとがある。
静止画記録モードやHD動画撮影モードの場合には、出力画像解像度が大容量となるので、画像メモリ6は、1つのメモリ領域として動作させるようにする。一方、SD動画撮影モードやモニタリングモード、さらに静止画再生モードの場合には、出力画像解像度が比較的小さくなるので、上述したように、画像メモリ6を論理的に2分割して使用するようにする。
図21は、画像メモリ6を論理的に2分割して使用するようにした上述の画像処理の全体の流れを示す図である。
すなわち、入力撮像画像信号は、水平画像処理部512で上述したような水平方向の画像処理がなされ、その水平方向画像処理結果が、画像メモリ6の第1メモリ領域61の4つのバンクBANK0〜BANK3に書き込まれる。この水平方向画像処理結果の、画像メモリ6の4つのバンクBANK0〜BANK3への書き込みは、メモリインタフェース54の制御部541が制御する。
この第1メモリ領域61に書き込まれた水平方向画像処理結果は、垂直画像処理部522からの要求に応じて、メモリインタフェース54の制御部542の制御にしたがい読み出されて、垂直画像処理部522に供給され、垂直画像処理が実行される。
そして、垂直画像処理部522で上述したような垂直方向の画像処理がなされ、その垂直方向画像処理結果が、画像メモリ6の第2メモリ領域62の4つのバンクBANK0〜BANK3に書き込まれる。この垂直方向画像処理結果の、画像メモリ6の4つのバンクBANK0〜BANK3への書き込みは、メモリインタフェース54の制御部543が制御する。
そして、この第2メモリ領域62に書き込まれた垂直方向画像処理結果は、画像データ出力処理部523からの要求に応じて、メモリインタフェース54の制御部544の制御にしたがい読み出されて、画像データ出力処理部523に供給され、出力撮像画像信号が生成されて出力される。
以上のように、この実施形態では、メモリインタフェース54は、水平方向処理後の画像データの書き込み制御部541と、垂直方向処理のための画像データの読み出し制御部542と、垂直方向処理後の画像データの書き込み制御部543と、画像データ出力のための読み出し制御部544を備える。
したがって、メモリインタフェース54では4個の制御部541〜544による画像メモリに対するアクセスを調停する必要がある。また、上述のように、この実施形態では、画像メモリ6は、4個のバンクBANK0〜BANK3からなっているので、メモリインタフェース54では、この4個のバンクBANK0〜BANK3に対する書き込みおよび読み出し制御も必要である。そこで、画像メモリ6に対する画像の書き込みおよび読み出しについて、さらに、図22を参照しながら詳細に説明する。
図22に示すように、メモリインタフェース54は、機能的には、前述した4個の制御部541〜544を備えると共に、これら制御部541〜544からの要求(リクエスト)REQを調停するための調停部545を備える。
この調停部545は、制御部541〜544からのリクエストREQを受けたとき、それがいずれの制御部541〜544からのリクエストREQであるかを判別する。そして、調停部545は、4個の制御部541〜544からのリクエストREQについて予め定めた優先順位にしたがって、各制御部541〜544からのリクエストREQに対応するアクセス処理の実行を調停するように構成されている。
この実施形態では、この優先順位の決定においては、画像データの書き込みよりも読み出しを優先し、さらに、それぞれの書き込み/読み出し処理が複雑であればあるほど優先するものとする。
したがって、この実施形態では、調停部545では、
優先度第1位;垂直方向処理のための画像データの読み出し(制御部542)
優先度第2位;画像データ出力のための読み出し(制御部544)
優先度第3位;水平方向処理後の画像データの書き込み(制御部541)
優先度第4位;垂直方向処理後の画像データの書き込み(制御部543)
というように優先順序付けをしている。
そして、この実施形態では、画像データの画像メモリ6への読み書き単位は、1画素分単位や1ライン単位ではなく、水平方向の複数画素分単位、この例では、水平方向の8画素分単位とする。すなわち、メモリインタフェース54は、水平方向の8画素を、1メモリサイクルでアクセスするメモリ・アーキテクチャーを有する。
この実施形態では、画像データの輝度成分Y、色差成分CrおよびCbとは標本化周波数比が、4:1:1とされているので、8画素分が最適である。もっとも、画像データの輝度成分Y、色差成分CrおよびCbとは標本化周波数比が、4:1:1でない場合であっても、水平方向の8画素分を読み書き単位としても、勿論良い。
なお、この実施形態では、輝度成分Yは8ビット、色差成分CrおよびCbはそれぞれ2ビットとされ、1画素は12ビットとなる。したがって、8画素分単位では、96ビット単位で書き込みがなされることになる。
したがって、この実施形態では、各制御部541〜544は、8画素分の画像データが取得(パッキング)できるまで画像データのバッファリングを行なう。
図22は、水平処理ブロック51および垂直処理ブロック52からのメモリインタフェース54を通じた画像メモリ6に対する書き込みおよび読み出しのアクセスを、より詳細に説明するための図である。
この図22に示すように、水平処理ブロック51は、機能的に、水平方向処理後の画像データを画像メモリ5に書き込むように要求する水平処理後データ書き込み要求部513を備える。
また、垂直処理ブロック52は、機能的に、垂直方向処理を行うための画像データを画像メモリ5から読み出すように要求する垂直処理用データ取得要求部524と、垂直方向処理後の画像データを画像メモリ5に書き込むように要求する垂直処理後データ書き込み要求部525と、垂直方向処理後の画像データを画像メモリ5から出力画像データとして読出すように要求する出力データ読み出し要求部526とを備える。
まず、メモリインタフェース54による画像データの画像メモリ6への書き込み処理制御について説明する。
水平処理ブロック51の水平方向処理後の画像データの書き込みにおいては、水平処理ブロック51の水平処理データ書き込み要求部513からは、有効画素データであることを示すデータイネーブル信号ENと共に、当該有効画素データData(12ビット/画素)が、画素クロックCLKに同期して、メモリインタフェース54の制御部541に、要求信号として出力される。
同様に、垂直処理ブロック52の垂直方向処理後の画像データの書き込みにおいては、垂直処理ブロック52の水平処理データ書き込み要求部525からは、有効画素データであることを示すデータイネーブル信号ENと共に、当該有効画素データData(12ビット/画素)が、画素クロックCLKに同期して制御部543に、要求信号として出力される。
例えば、水平処理ブロック51の水平方向処理の書き込みあるいは垂直処理ブロックの垂直方向処理の書き込みにおいて、画素クロックCLK(図23(A)参照)に同期して、データイネーブル信号EN(図23(B)参照;ハイレベルがアクティブ)と、画像データの輝度成分Yi(i=0,1,2・・・)(図23(C)参照)および色差成分(図23(D)参照)が出力されたときには、制御部541あるいは制御部543は、破線で囲んで示す8画素分を取得するまで待って、8画素分取得したら書き込みのリクエストREQ(図23(E)参照)を、調停部545を通じて画像メモリ6に送出する。
したがって、画像メモリ6の第1メモリ領域61あるいは第2メモリ領域62には、画像データは、8画素分(96ビット)単位で書き込みがなされる。
また、書き込み制御部541および543は、画像データの書き込みを、1バンクごとに行なう。そして、書き込み制御部541および543は、所定データ長単位、この例では、1ライン単位で、バンクを順次に切り換えて画像データを書き込むようにする。
例えば図24の左側に示すように、水平方向処理後の画像空間のうちの垂直方向処理対象領域の画像データを、画像メモリ6の第1メモリ領域61の4個のバンクBANK0〜BANK3に書き込む場合、その書き込みは、図24の右側に示すようになる。
すなわち、書き込み制御部541は、先ず、最初の1ラインの画像データを、8画素分単位で、バンクBANK0に書き込む。次に、当該最初の1ラインの画像データのバンクBANK0への書き込みが終了すると、2番目のラインの画像データは、バンクBANK1に、8画素分単位で書き込む。そして、この2番目の1ラインの画像データのバンクBANK1への書き込みが終了すると、3番目のラインの画像データは、バンクBANK2に、8画素分単位で書き込む。さらに、この3番目の1ラインの画像データのバンクBANK2への書き込みが終了すると、4番目のラインの画像データは、バンクBANK3に、8画素分単位で書き込む。
そして、この4番目の1ラインの画像データのバンクBANK3への書き込みが終了すると、次の5番目のラインの画像データは、バンクBANK0に戻って、8画素分単位で書き込む。以下、同様にして、1ライン毎に、バンクを切り換えながら、画像データの書き込みを行なう。
そして、この場合に、図24にも示したように、4バンク構成の画像メモリ6の各バンクBANK0〜4では、上述のようなラインメモリ動作をしながら、FIFOメモリ(リングメモリ)動作を行なう。
次に、メモリインタフェース54による画像データの画像メモリ6からの読み出し処理制御について説明する。
この実施形態では、画像メモリ6からの画像データの読み出しは、複数バンクごとに行なう。つまり、複数のバンクからの画像データを同時に読み出すようにする。
この場合に、この実施形態では、垂直処理ブロック52の垂直処理用データ取得要求部524からの読み出し要求に基づいて、読み出し制御部542が、垂直方向処理のための画像データを画像メモリ6から読み出す場合には、図25(A)に示すように、画像メモリ6の4バンクBANK0〜3のすべてから、合計4ライン分を同時に読み出すようにする。つまり、制御部542は、画素クロックCLKの1周期に対応する1メモリサイクルで、垂直方向の4ラインの4画素を読み出し、1処理単位周期(8サイクル)で、4×8=32画素、1ライン分の読み出し区間で、4ラインの画素データのすべてを読み出すようにする。次の1ライン分の読み出し区間では、次の4ラインの画素データを読み出すようにする。
また、垂直処理ブロック52の出力データ読み出し要求部526からの読み出し要求に基づいて、読み出し制御部546が、出力画像データを画像メモリ6から読み出す場合には、図25(B)に示すように、画像メモリ6の4バンクBANK0〜3のうちの、2個ずつから、それぞれ1ライン分、合計2ライン分を同時に読み出すようにする。つまり、制御部544は、画素クロックCLKの1周期に対応する1メモリサイクルで、垂直方向の2ラインの2画素を読み出し、1処理単位周期(8サイクル)で、2×8=16画素、1ライン分の読み出し区間で、2ライン分の画素データを読み出すようにする。
そして、図25(B)に示すように、この例では、制御部544は、バンクBANK0,1の組と、バンクBANK2,3の組とを、順次に、1ライン分の読み出し区間毎に切り換えて読み出しを実行する。
また、この実施の形態では、上述したように、画素クロックCLKの1サイクルが、1メモリアクセスサイクルとなるが、4個の制御部541〜544による書き込みアクセスおよび読み出しアクセスを1セットとして、その1セットを実行する区間を処理単位周期の区間(以下、処理単位周期の区間をアクセス権周期区間と呼ぶ)としたとき、メモリインタフェース54では、このアクセス権周期区間は、複数メモリサイクル(書き込み、読み出しの制御部の数以上のサイクル数)からなるものとし、このアクセス権周期区間を繰り返すことにより、画像メモリ6に対する書き込み/読み出しを行って、画像データをリアルタイム処理するようにしている。
この実施形態では、アクセス権周期区間は、8メモリサイクル(8クロックサイクル)を1周期としている。そして、各制御部541〜544のメモリアクセス権は、前述した各制御部についてのアクセスについての優先順位と同様の考えから、1処理アクセス周期内で、
制御部541のアクセス権は、1回
制御部542のアクセス権は、最低2回、最大5回
制御部543のアクセス権は、1回
制御部544のアクセス権は、1回
を割り当てるようにしている。
この場合に、アクセス権周期区間である8クロックサイクル区間の各々の1クロックサイクル区間で、制御部541〜544のいずれかから、必ず、リクエストREQが発生するわけではなく、リクエストREQが発生しない場合もある。
また、同じ1クロックサイクル区間で、複数の制御部からのリクエストREQが重なる場合もある。その場合には、前述した各制御部541〜544に割り当てられた優先順位したがって、調停部545が、その1サイクル区間のアクセス権を、どの制御部からのリクエストREQに応じたアクセスに割り付けるかを決定して調停するようにする。
図26に、1アクセス権周期区間における制御部541〜544からのリクエストに対する各1サイクル区間についてのアクセス件の割り当ての例を示す。なお、この図26において、各制御部541〜544からのリクエストはハイレベルのときアクティブ(リクエスト発生)とされている。
図26の例では、1アクセス権周期区間において、始めの2クロックサイクル区間では、制御部542からの読み出しリクエストのみが発生しているので、調停部545は、アクセス権を制御部542に渡し、垂直方向処理のための画像データの読み出し制御が実行されるようにする。
次の、3番目のクロックサイクル区間では、制御部542からの読み出しリクエストと、制御部544からの読み出しリクエストとが重なって発生するが、優先順位に従い、調停部545は、この3番目のクロックサイクル区間も、アクセス権を制御部542に渡し、垂直方向処理のための画像データの読み出し制御が実行されるようにする。
そして、次の4番目のクロックサイクル区間では、制御部543からの書き込みリクエストが発生するが、3番目のクロックサイクル区間で実行できなかった制御部544からの読み出しリクエストの方が優先順位が高いので、調停部545は、アクセス権を制御部544に渡し、出力画像データの読み出し処理が実行されるようにする。
次の5番目のクロックサイクル区間では、制御部541からの書き込みリクエストが発生するが、この制御部541の方が制御部543よりも優先順位が高いので、調停部545は、アクセス権を制御部541に渡し、水平方向処理後の画像データの書き込みを実行させるようにする。
次の6番目および7番目のクロックサイクル区間では、最先優先順位である制御部542のリクエストが発生するので、調停部545は、この6,7番目のクロックサイクル区間は、アクセス権を制御部542に渡し、垂直方向処理のための画像データの読み出し制御が実行されるようにする。
最後の8番目のクロックサイクル区間では、何れの制御部からもリクエストが発生していないので、実行されずに残っている制御部543のリクエストに対する要求に答えるために、調停部545は、アクセス権を制御部543に渡し、垂直方向処理後の画像データの書き込みを実行させるようにする。
ここで、制御部541,542,543,544のそれぞれは、水平処理後データ書き込み要求部513、垂直処理用データ取得要求部524、垂直処理後データ書き込み要求部525、出力データ読み出し要求部526から、アクセス処理を実行しようとするアクセス権周期区間よりも例えば1アクセス権周期区間前の1アクセス権周期区間において受け取った、前述の図22に示したような要求信号に基づいて、図26に示したようなリクエストをそれぞれ発生する。
この場合、垂直処理用データ取得要求部524および出力データ読み出し要求部526からの要求信号には、読み出し要求する画素(以下、これを注目画素という)の画素位置(垂直方向および水平方向の位置)を示す情報が含まれている。
出力データ読み出し要求部526からの要求信号に含まれる、出力する画素データの画素位置(垂直方向および水平方向の位置)の情報は、垂直方向の位置、つまりライン番号は、1アクセス権周期区間では常に同一となるので、制御部526は、例えば図26に示したように、1アクセス権周期区間内の1サイクル区間において、リクエストREQをハイレベルとして、1サイクル区間分のリクエストを発生する。
一方、垂直処理用データ取得要求部524からの要求信号に含まれる、読み出し要求する注目画素の画素位置(垂直方向および水平方向の位置)を示す情報は、手ぶれおよびレンズ歪みに応じて垂直方向の位置が変動するものとなる。
制御部542は、垂直処理用データ取得要求部524からの、水平方向の処理単位である1アドレス権取得周期分の8個の注目画素についての位置情報を受け取ると、当該8個の注目画素についての垂直方向の画像歪みに応じた変動分を求め、求めたその変動分に応じた必要なすべての画素データを読み出すために必要なサイクル区間数を求める。そして、制御部542は、求めたサイクル数のサイクル区間についてリクエストREQを発生する。
画像歪みに応じた変動分と、1アドレス権取得周期区間内に割り当てるべきサイクル区間数との関係を、画像処理としてレンズ歪みの補正処理の場合について、説明する。
まず、レンズ歪み画像の歪みの「変動」について述べる。この実施形態の撮像装置では、図58に示した樽型の歪みの他に、それと逆方向に歪む糸巻き歪みにも対応している。まず、「歪み変動の勾配」について定義する。
ここで、「歪み変動の勾配」とは、ある一定の水平方向サイズの中で、画像が垂直方向にどれくらい歪んでいるかを示す数値であり、その水平方向サイズ内で最も下側に歪んでいる箇所から最も上側に歪んでいる箇所までの差(変動の最大値=変動値)を言うものとする。そして、この「歪み変動の勾配」の値である変動値は、正の値であり、0から定義する。ただし、変動0とは「歪み変動無し」とする。
この実施形態の撮像装置では、8画素単位で画像メモリ6に対して読み書きする処理を前提としている。そこで、水平方向8画素内の変動0〜4の一部を、例として図27〜図30に示す。これらの図は、注目画素位置として要求されるラインと、当該注目画素について垂直方向の補間処理を処理するために必要なラインの画素として上下8ラインの画素を考えた場合の図である。
すなわち、図27(A),(B)は、水平方向8画素単位の変動1の場合の変動パターンを示している。図28(A),(B),(C)は、水平方向8画素単位の変動2の場合の変動パターンを示している。図29(A),(B),(C),(D)は、水平方向8画素単位の変動3の場合の変動パターンを示している。図30(A),(B),(C),(D)は、水平方向8画素単位の変動4の場合の変動パターンを示している。
これらの図27〜図30において、変動パターン[−1]、[−1,1]、[−2,1]などは、水平方向の8画素単位の最初の注目画素に対して、右上がりに変動する変動値の最大値(負の値とする)と、右下がりに変動する変動値の最大値(正の値とする)とを表している。すなわち、変動パターン[−1]は、8画素単位の最初の注目画素に対して右上がりに1画素分が変動の最大値であるパターンを示している。また、[−1,1]は、8画素単位の最初の注目画素に対して、右上がりには1画素分が変動の最大値であり、右下がりには1画素分が変動の最大値であるパターンを示している。また、[−2,1]8画素単位の最初の注目画素に対して、右上がりには2画素分が変動の最大値であり、右下がりには1画素分が変動の最大値であるパターンを示している。
前述したように、この実施形態では、画像メモリ6は、4バンク構成であることから一度に4ラインのメモリアクセスが可能である。そこで、図27〜図30に示した水平方向8画素単位の変動4においては、4ライン分ずつを3回、読み出すようにすれば、必要なすべての画素データを読み出すことが分かる。
したがって、制御部542は、水平方向8画素単位の画像歪みの勾配が変動4までの範囲においては、いずれの変動の場合も、読み出しアクセスの必要なサイクル数を3として、3サイクルを1アクセス権周期区間内に割り当てるように要求するリクエストREQを、調停部545に対して供給するようにする。
以上のようにして、制御部542は、垂直処理用データ取得要求部524から送られてくる、水平方向の処理単位である1アドレス権取得周期分の8個の注目画素についての位置情報から水平方向の8画素単位の画像歪みの勾配を算出し、その画像歪みの変動の勾配から、水平方向の8画素単位についての垂直方向処理に必要なライン数を算出する。
そして、制御部542は、算出された必要なライン数を読み出すのみ必要なメモリアクセスのサイクル数を算出する。さらに、制御部542は、その算出したサイクル数分を、1アクセス権周期区間内に割り当てるように要求するリクエストREQを、調停部545に対して供給するようにする。
なお、実際的には、水平方向の処理単位である1アドレス権取得周期分の水平方向の8個の注目画素についての画像歪みの勾配が算出されると、図27〜図30に示したように、垂直方向処理に必要なライン数が分かる。
そこで、この実施形態では、制御部542では、算出した画像歪みの変動の勾配から水平方向の8画素単位についての垂直方向処理に必要なライン数を算出するのではなく、その算出した画像歪みの変動の勾配から、1アクセス権周期区間内に割り当てるサイクル数を直接的に求め、リクエストREQを調停部545に供給するようにしている。
ところで、この実施形態では、制御部542による垂直方向処理用の画像データの読み出しには、アクセス権周期区間で、最大5回のアクセス権を与えている。そして、垂直方向処理用の画像データは、4バンクからライン単位で同時読み出しが可能であるため、
4ライン×5回=20ライン
分の画像データを、1アクセス権周期区間内で読み出して取得可能となる。
このため、アクセス権周期区間、すなわち、クロックCLKの8サイクル内(リアルタイム処理可能な範囲内)では、画像歪み補正と解像度変換を行った場合、前述の図65に示すように、変動12までの画像歪み変動の勾配の範囲内であれば、リアルタイム処理対応可能となる。
この変動12は、通常のデジタルカメラやビデオカメラで使用されている撮像レンズの場合には、殆どの画像歪み変動が収まってしまう値である。しかしながら、課題の欄でも述べたように、魚眼レンズのような特殊レンズを使用する場合には、垂直方向の画像歪み変動の勾配が、変動12を超えることがある。このように垂直方向の画像歪み変動の勾配が変動12を超えた場合には、1処理単位周期の区間、すなわち、1アクセス権周期区間内では、垂直方向処理のために、水平方向の8画素単位で必要とする複数ラインからの画像データを読み出すことができなくなるという問題がある。
そこで、この実施形態では、制御部542で、水平方向8画素単位の画像歪みの勾配が変動12を超えた場合には、1アクセス権周期区間を超えて、画像データの読み出しを行う必要がある。
そのため、この実施形態では、制御部542は、垂直処理用データ取得要求部523に対して、図22に示すように、待機指示信号waitを送る構成とし、当該待機指示信号waitがアクティブ(アサート(assert))になっている間は、垂直処理用データの取得要求のそれ以降の発生を一時停止させて、待機の状態(ストール(stall)の状態)とさせるようにする。そして、水平方向の8画素単位で必要とする垂直方向処理のために必要な画像データの読み出しが完了したら、待機指示信号waitを、非アクティブ状態(デアサート(deassert))に戻し、垂直処理用データ取得要求部523からの垂直処理用データの取得要求の発生を再開させるようにする。
以上説明した制御部542の処理動作のフローチャートを図31および図32に示す。また、図33および図34に、垂直処理用データ取得要求部524からの垂直処理用データ取得要求の要求REQと、1アクセス権周期区間におけるアクセス権割り当ての例を示すタイミングチャートを示す。この場合、図33は、垂直処理用データ取得要求から求められた水平方向8画素単位の画像歪みの勾配が変動12を超えない場合であり、図34は、垂直処理用データ取得要求から求められた水平方向8画素単位の画像歪みの勾配が変動12を超える場合のタイミングチャートである。
図31、図32のフローチャートおよび図33,図34のタイミングチャートを参照しながら、制御部542の処理動作の流れを説明する。なお、図31および図32のフローチャートは、1画面分の画像データについての処理として示したものである。
まず、図31に示すように、制御部542では、垂直処理用データ取得要求部524からの1画素単位の垂直処理用データ取得要求reqk(k=0,1,2,・・・,7)を受けたか否か判別する(ステップS41)。垂直処理用データ取得要求reqkを受けていないと判別したときには、垂直処理用データ取得要求reqkの到来を待つ。そして、ステップS1で、垂直処理用データ取得要求reqkを受けたと判別したときには、制御部542は、画像歪み変動の勾配の計算を行う(ステップS42)。
そして、制御部542は、1処理単位である水平方向の8画素分の垂直処理用データ取得要求reqkのすべてを受けたか否か判別し(ステップS43)、未だ水平方向の8画素分の垂直処理用データ取得要求reqkのすべては受けていないと判別したときには、ステップS1に戻り、このステップS41以降の処理を繰り返す。
すなわち、図33および図34に示すように、垂直処理用データ取得要求部524からは、各1アクセス権周期区間の8画素区間において、1画素毎に、注目画素位置を指定する情報を含む1画素単位の垂直処理用データ取得要求req0〜req7が制御部542に供給される。
制御部542は、垂直処理用データ取得要求req0〜req7のそれぞれを受け取る毎に、画像歪み変動の勾配を計算する。したがって、8画素分の垂直処理用データ取得要求req0〜req7の最後の垂直処理用データ取得要求req7を受け取って、ステップS2の処理を行うと、制御部542では、1処理単位の水平方向の8画素分についての最終的な画像歪み変動の勾配が求められることになる。
そして、制御部542は、ステップS3で、1処理単位の水平方向の8画素分の垂直処理用データ取得要求reqkのすべてを受けたと判別したときには、ステップS2で計算した1処理単位の水平方向の8画素分についての画像歪み変動の勾配が、変動12を超えているか否か判別する(ステップS44)。
ステップS4で、画像歪み変動の勾配が変動12を超えていないと判別したときには、制御部542は、待機指示信号waitを非アクティブの状態(例えばwait=0)とする(ステップS45)。そして、ステップS2で求められた、1処理単位の水平方向の8画素分についての最終的な画像歪み変動の勾配に応じて定まる、垂直処理に必要な画像データを読み出すために必要なアクセスサイクル数のリクエストREQ(図33参照)を、調停部545に供給し、画像メモリ6に対するメモリアクセスを開始するようにする(ステップS46)。なお、図33のリクエストREQは、最大数の5サイクルのリクエストとなっているが、これは、画像歪み変動の勾配に応じて、2サイクル以上、5サイクル以下のサイクル数のリクエストREQとなる。
次に、ステップS4で、画像歪み変動の勾配が変動12を超えていると判別したときには、制御部542は、待機指示信号waitを、図34に示すように、アクティブの状態(例えばwait=1)とする(ステップS47)。待機指示信号waitは、図34からも分かるように、1アクセス権周期区間に同期した、アクセス権周期区間単位の信号である。そして、制御部542は、垂直処理用データの読み出しアクセスに割り当てられたサイクル数の最大数を要求するリクエストREQ(図34参照)を、調停部545に供給し、画像メモリ6に対するメモリアクセスを開始するようにする(ステップS48)。
図34では、待機指示信号waitがアクティブになったので、垂直処理用データ取得要求部524は、最初の1画素についての垂直処理用データ取得要求req0はメモリインタフェース54の制御部542に出力するが、それ以降の垂直処理用データ取得要求は出力を一時停止して、待機する状態を示している。
なお、垂直処理用データ取得要求部524は、待機指示信号waitが、非アクティブの状態に戻ったら、2番目の垂直処理用データ取得要求req1から出力を再開するようにする。
ステップS8の次には、制御部542は、図32のステップS11に進み、1アクセス権周期区間が経過するのを待つ。そして、ステップS51で、1アクセス権周期区間が経過したことを判別したときには、制御部542は、次の1アクセス権周期区間において、前の1アクセス権周期区間で読み出しができなかった画像データを読み出すのに必要なサイクル数の再割り当てを行い、その割り当てられたサイクル数のリクエストREQ(図34参照)を、調停部545に供給し、画像メモリ6に対するメモリアクセスを開始するようにする(ステップS52)。
そして、制御部542は、再割り当てされた読み出しアクセスサイクルによって、前の1アクセス権周期区間で読み出しができなかった必要な画像データの読み出しが完了するか否かを判別する(ステップS53)。
ステップS53で、必要な画像データの読み出しが完了しないと判別したときには、制御部542は、ステップS51に戻って、次の1アクセス権周期区間において、前の1アクセス権周期区間で読み出しができなかった画像データを読み出すのに必要なサイクル数を求めて再割り当てを行い、その割り当てられたサイクル数のリクエストREQ(図34参照)を、調停部545に供給し、画像メモリ6に対するメモリアクセスを開始するようにする。このとき、待機指示信号waitは、アクティブの状態(この例ではwait=1)の状態であり、垂直処理用データ取得要求部524は、垂直処理用データ取得要求reqkの送出は、未だ一時停止の状態にある。
そして、ステップS53で、必要な画像データの読み出しが完了すると判別したときには、制御部542は、待機指示信号waitを、非アクティブの状態(この例ではwait=0)に戻す(ステップS14)。このように、待機指示信号waitを、非アクティブの状態に戻すタイミングは、必要な画像データの読み出しについての最後の再割り当て時である。したがって、後述するように、2アクセス権周期区間で必要な画像データのすべての読み出しが可能なときには、図34に示すように、1回目の再割り当て時に、待機指示信号waitは、非アクティブの状態に戻る。
待機指示信号waitが非アクティブの状態に戻ると、図34に示すように、垂直処理用データ取得要求部524は、垂直処理用データ取得要求の送出を再開する。この時点から制御部542が新たな水平方向8画素分の垂直処理用データ取得要求req0〜req7を受け取るまでに、垂直処理用の必要な画像データの読み出しが完了するから、待機指示信号waitは、水平方向8画素分の垂直処理用データ取得要求req0〜req7に対応する読み出しアクセスが開始する1アクセス権周期区間前に非アクティブの状態に戻されるのである。これにより、連続的な処理が可能となる。
制御部542は、次に、1画面分の画像データの処理が終了したか否かを判別し(ステップS55)、終了していないと判別したときには、ステップS41に戻り、ステップS41以降の処理を繰り返し、終了していると判別したときには、この処理ルーチンを終了する。
以上の例では、画像歪み変動の勾配に応じて、ステップS51〜ステップS53の処理を再帰的に行うことにより、画像歪み変動の勾配の変動の大きさに対して制限の無い読み出しアクセス処理、延いては、画像歪み補正処理が可能となる。
処理対象となる撮像画像が、静止画である場合には、リアルタイム処理を必要としないので、上述の読み出しアクセスのアクセス権周期区間内への再割り当ての回数は、何回であっても、つまり、何個のアクセス権周期区間において再割り当ても行っても、問題とはならない。
これに対して、動画処理(ビデオ信号処理)においては、リアルタイム性が必要になるので、上記の再割り当て回数が多くなると、結果的にシステム破綻を引き起こすおそれがある。このため、上述のように、再割り当てを再帰的に多数回、無限に可能とするように構成するのは、好ましくない。
ところで、この場合、1アクセス権周期区間内に、制御部542からのリクエストREQに基づく読み出しアクセスに対しては5サイクルが最大割り当て可能であり、画像メモリ6が4バンクメモリの構成であるので、図35に示すように、待機指示信号waitを、1アクセス権周期区間のみアクティブにして、1回だけ、垂直処理用画像データの読み出しアクセスの再割り当てを行うことで、画像歪み変動の勾配が変動32までの大きさの歪みに対応することができる。すなわち、1アクセス権周期区間では、20ラインに渡る画像データの読み出しが可能であるので、2アクセス権周期区間では、40ラインに渡る画像データの読み出しが可能となり、画像歪み変動の勾配が変動32までの大きさの歪みに対応することができる。
前述したように、魚眼レンズを用いた場合には、図58(B)に示したような樽型歪みや、糸巻き歪みの画像歪みが生じるが、一般的な魚眼レンズを用いた場合の画像歪みの補正においては、撮像画像の殆どの位置において、水平方向の8画素単位での画像歪み変動の勾配は、変動32以内で収まっている。再割り当て回数が多くなるのは、水平方向の8画素での歪み変動が大きくなる場合であり、一般的には、図58(B)に示した樽型歪みや、糸巻き歪みの画像の4隅付近である。
つまり、垂直処理用画像データの読み出しアクセスの再割り当ては、1画像内のすべての位置において実行されることはなく、画像の4隅付近を処理する際に、実行される可能性が高い。そして、一般に、画像の4隅付近では、画像歪みに対して厳正な補正をしなくても、画質的に問題が無いことが分かっている。
以上のことを踏まえて、次に説明する第2の実施形態においては、動画データのリアルタイム処理を実現するために、上述の実施形態のように垂直処理用画像データの読み出しアクセスのアクセス権周期区間内への再割り当てを再帰的に多数回、無限に可能とするのではなく、上記再割り当ては、1回のみに制限することとする。
そして、再割り当てによる読み出しアクセスサイクルにおける読み出し処理は、上述した図35に示した、画像歪み変動の勾配が変動32内の場合における40ラインに渡る画像データのみを用いて行うようにする。
水平方向の画素単位についての垂直処理用画像データの画像歪み変動の勾配が、例えば図36に示すように、変動32を超えてしまうような場合を想定する。この図36においては、垂直処理用画像データ取得要求req4〜req6で示される注目画素を処理するために必要な画素データは、変動32に対応する40ライン分の範囲を超えた位置のものとなる。
そこで、この第2の実施形態のメモリインタフェース54の制御部542では、当該垂直処理用画像データ取得要求req4〜req6で示される注目画素の位置を、変動32に対応する40ライン分の範囲内において、当該要求req4〜req6で指定された注目画素位置に最も近く、かつ、垂直処理用を行うための画像データを読み出し可能となる画素位置req4*〜req6*に強制的に置き換え変更するようにする。
そして、メモリインタフェース54の制御部542では、この変更した注目画素位置req4*〜req6*の画素の垂直方向処理に必要な垂直方向の8画素(変動32に対応する40ライン分の範囲内)を、元の要求req4〜req6で指定された注目画素の垂直方向処理に必要な垂直方向の8画素として読み出すようにする。
したがって、このような注目画素の置き換え変更により、補正後の画像は、歪みが残留するものとなるが、前述したように、このような処理が行われる画像位置が4隅であり、目立たないことから、画質的には大きな問題とならない。
この第2の実施形態の場合における制御部542の処理のフローチャートの要部を、図37に示す。この図37のフローチャートは、図31に続く部分の処理に関するもので、上述の実施形態における図32の処理部分に対応する。
すなわち、第2の実施形態においても、図31に示した、画像歪み変動の勾配が変動12以下であって、垂直処理用画像データの読み出しアクセスに対するメモリサイクル割り当てについて再割り当てが必要でない範囲での処理部分については、上述の実施形態と全く同様である。
この第2の実施形態においては、画像歪み変動の勾配が変動12を超える場合の処理が上述の実施形態の場合と異なる。
すなわち、この第2の実施形態においても、図31のステップS4で、水平方向の8画素についての画像歪み変動の勾配が変動12を超えていると判別したときには、制御部542は、図31のステップS8で、垂直処理用データの読み出しアクセスに割り当てられたサイクル数の最大数を要求するリクエストREQ(図34参照)を、調停部545に供給し、画像メモリ6に対するメモリアクセスを開始する。
そして、その後、制御部542は、図37に示すように、1アクセス権周期区間が経過するのを待ち(ステップS51)、1アクセス権周期区間が経過したことを判別したときには、次の1アクセス権周期区間において、前の1アクセス権周期区間で読み出しができなかった画像データを読み出すのに必要なサイクル数の再割り当てを行い、その割り当てられたサイクル数のリクエストREQを、調停部545に供給し、画像メモリ6に対するメモリアクセスを開始するようにする(ステップS61)。
この場合に、ステップS61では、ステップS42で計算した画像歪み変動の勾配が、変動32を超えていない場合には、5サイクル数以下のサイクルを再割り当てすることで、前の1アクセス権周期区間で読み出しができなかった画像データを読み出すことができる。
また、ステップS42で計算した画像歪み変動の勾配が、変動32を超えている場合には、図36を用いて説明したように、必要な画素データの位置が変動32に対応する40ライン分の範囲外となる注目画素の位置(req4〜req6で指定される注目画素位置)を、変動32に対応する40ライン分の範囲内において、当該注目画素位置に最も近く、かつ、垂直処理用を行うための画像データを読み出し可能となる画素位置(req4*〜req6*の位置)に強制的に置き換え変更するようにして、読み出す画像データ範囲を、変動32に対応する40ライン分の範囲内となるようにしてメモリアクセス(読み出しアクセス)処理を実行するようにする。
そして、この第2の実施形態では、制御部542は、再割り当て後のメモリアクセス開始を行うと同時に、待機指示信号waitを非アクティブの状態(wait=0)に戻し(ステップS62)、垂直処理用画像データ取得要求部524を、垂直処理用画像データ要求reqkを出力する状態に復帰させる。
そして、制御部542は、1画面分の画像データの処理が終了したか否かを判別し(ステップS63)、終了していないと判別したときには、図31のステップS41に戻り、ステップS41以降の処理を繰り返し、終了していると判別したときには、この処理ルーチンを終了する。
この第2の実施形態によれば、垂直処理用画像データの読み出しアクセスの再割り当て回数をシステムが破綻しない範囲に制限するので、動画データの場合に、リアルタイム処理を確実に行うことができるものである。
なお、第2の実施形態において、垂直処理用画像データの読み出しアクセスのアクセス権周期区間内への再割り当て回数は、1回に制限するようにしたが、システムが破綻しない範囲であれば、複数回であってもよい。
以上のようにして、上述の実施形態の撮像装置では、水平8画素内での垂直方向の画像歪み変動の勾配が、変動12以内であるならば、その垂直方向の画像歪み補正処理を1アクセス権周期区間内において処理可能となる。一般の撮像レンズによる画像歪み変動の勾配は、通常、変動12以内の変動であるので、通常の画像歪みを十分カバーすることができ、高画質な画像歪み補正処理と解像度変換処理とがリアルタイムで実現できる。
また、魚眼レンズを撮像レンズとして用いる場合のような画像歪み変動の勾配が変動12を超えるような場合においては、垂直処理用画像データ取得要求部524に待機指示信号waitを供給して、垂直処理用画像データ取得要求の出力を一時停止させると共に、複数のアクセス権周期区間において、対応する画像データ読み出しアクセス処理を行うようにしたことにより、補正が不能になるという事態を防ぐことができる。
そして、画像歪み変動の勾配が変動12を超えるような場合において、画像データ読み出しアクセス処理を行う複数のアクセス権周期区間を制限することにより、リアルタイム処理を確保することもできる。
さらに、制御部542は、水平8画素内の垂直方向の歪みの変動をチェックした後、そのアクセス範囲を決定することで、垂直方向のメモリアクセスは、水平8画素内で最低限必要な範囲だけのアクセスが可能となり、不必要なデータの読み出しは削減できる。
すなわち、この実施形態の手法では、図61に示したような綿密なアクセスは困難であるが、図60の場合と比べると、図62に示すように不必要なデータの読み出しは削減できていることがわかる。
また、図61の手法では、垂直1画素用ごとに常にアドレス計算、メモリアクセスを行なう必要あるため、垂直方向処理を8画素分行なうためには、8画素×8画素=64画素のデータが必要であるため、64回のアドレス計算およびコマンド発行が必要となる。
一方、この実施形態の手法では、一度のアクセスで水平方向8画素のデータを取得できるため、最大20ラインのアクセスの場合でも20回のアドレス計算およびコマンド発行で、垂直方向8画素分のデータを取得できる。
以上のことから、この実施形態の手法によれば、図60の場合および図61の場合に存在する問題を解決して、低消費電力化と、高処理効率化を実現することができる。
以上のように、アクセス権周期区間において、上述のようなアクセス権調停を行なうと共に、上述のような、複数バンクに対する書き込み、読み出しを制御することにより、リアルタイムで、手ぶれ補正、レンズ歪み補正および解像度変換などの画像処理が可能となる。各制御部541〜544では、データはパイプライン処理されており、図26に示したような8サイクルで、全ての制御部541〜544の8画素分のアクセスを実現することにより、リアルタイムで歪み補正かつ解像度変換が可能となる。
例えば、画像処理として図38に示すように、撮像素子2の全有効画素領域AFLのうちの、解像度変換用の有効画素領域FLkから、横×縦=720画素×240画素の出力画像に解像度変換する場合を想定し、この場合における、画像メモリ6の第1メモリ領域61および第2メモリ領域62における画像データの書き込み、読み出しの様子を図28に示す。
すなわち、撮像素子2からの入力撮像画像信号は、水平画像処理部512において、上述のような水平方向の画像処理がなされた後、画像メモリ6の第1メモリ領域61に書き込まれる。
このとき、第1メモリ領域61は、前述したように、垂直画像処理が開始できるだけの容量+マージン分の記憶容量を備えるもので、1画面分(1フィールド分または1フレーム分)よりも少なくてよく、垂直FIRフィルタのタップ数に応じた複数ライン分以上であれば良い。
したがって、入力撮像画像信号(図39(C))の1画面分は、水平方向の画像処理がなされた後、第1メモリ領域61に対して、図39(A)において実線で示すようにして、1垂直周期の間で複数回書き込まれることになる。第1メモリ領域61に書き込まれた水平処理後の画像信号は、図39(D)のように入力撮像画像信号よりも遅延したものとなる。この実施形態では、この遅延は、上述したように、1ライン分FIFOメモリ112によるものとされている。
そして、1画面分の画像データの第1メモリ領域61への初回の書き込みが終了してから、垂直方向の画像処理が開始可能なデータ量が第1メモリ領域61に書き込まれると、次の第1メモリ領域61への書き込みが始まる前に、図39(A)において太い点線で示すように、この第1メモリ領域61から、先に書き込まれた画像データの読み出しが開始される。
そして、第1メモリ領域61から読み出された撮像画像データは、垂直画像処理部522で、垂直方向の画像処理がなされた後、図39(A)において、1点鎖線で示すようにして、第2メモリ領域62に書き込まれる。したがって、第2メモリ領域62に書き込まれた垂直処理後の画像信号は、図39(E)のように遅延したものとなる。この実施形態では、この遅延は、上述したように、垂直FIRフィルタのタップ数に応じてものとされている。
こうして、入力撮像画像信号の1画面分は、第1メモリ領域61に対して複数回読み書きされながら、垂直方向の画像処理がなされ、その垂直方向画像処理結果が、第2メモリ領域62に書き込まれてゆく。そして、1垂直周期経過すると、図39(A)において、2点鎖線で示すようにして、次の垂直同期信号(図39(B)参照)の時点から、第2メモリ領域62から前記垂直方向画像処理結果が、次の画像データの第2メモリ領域62への書き込みに先立ち、読み出される。すなわち、読み出された出力画像データは、図39(F)に示すようなタイミングで出力される。
以下、上述の処理が、撮像画像データの1画面分単位で、順次に繰り返され、入力撮像画像データは、上述のような画像処理が施された後、1垂直周期遅れで、垂直同期信号および水平同期信号に同期した状態で出力画像データとされる。
この場合、第1メモリ領域61は、リングバッファメモリとしてFIFO動作により読み書きがなされる。図39の例では、1画面分の画像データは、第1メモリ領域61において、2回、折り返されて書き込まれ、また、読み出されるようにされている。
以上の説明は、垂直同期信号を跨ぐことなく、垂直同期信号区間で、画像メモリ6への書き込み、読み出しが行なわれる場合であるが、画像の部分拡大を行なう場合には、その処理区間が垂直同期信号を跨ぐことがある。しかし、出力画像信号は、1垂直周期遅れで出力されるので、出力画像信号としては同期規格を満たしており、問題とはならない。
すなわち、例えば画像処理として図40に示すように、撮像素子2の解像度変換用の有効画素領域FLkのうちの、例えばユーザにより指定された部分拡大領域を、電子ズーム処理により拡大して、横×縦=720画素×240画素の出力画像に解像度変換する場合を想定し、この場合における、画像メモリ6の第1メモリ領域61および第2メモリ領域62における画像データの書き込み、読み出しの様子を図41に示す。
この場合、撮像素子2からの入力撮像画像信号(図41(C))のうちの部分拡大領域に対応する部分の信号は、水平画像処理部512において処理された後、図41(A)において実線で示すようにして、第1メモリ領域61に書き込まれる。図41(D)の水平処理後画像信号においては、当該書き込まれた画像部分は、網点を付して示している。
第1メモリ領域61に、部分拡大領域の画像データが、垂直画像処理が可能なデータ量分以上書き込まれると、当該書き込まれた部分拡大領域の画像データが、図41(A)において太い点線で示すように、第1メモリ領域61から読み出されて、垂直画像処理がなされる。そして、垂直画像処理後の画像データは、図41(A)において、1点鎖線で示すようにして、第2メモリ領域62に書き込まれる。したがって、垂直処理後の画像信号は、図41(E)のように、垂直同期信号を跨いだ区間で、第2メモリ領域62に書き込まれる。
そして、図41(A)において、2点鎖線で示すようにして、当該跨いだ垂直同期信号(図41(B)参照)の時点から、第2メモリ領域62から前記垂直方向画像処理結果が、次の画像データの第2メモリ領域62への書き込みに先立ち、読み出される。すなわち、読み出された出力画像データは、図41(F)に示すようなタイミングで出力される。
次に、画像メモリ6の第1メモリ領域に必要な容量について説明する。前述したように、第1メモリ領域61として必要な容量は、垂直解像度変換や補間処理のための垂直FIRフィルタのタップ数、電子ズーム率、レンズ歪み補正率、手ぶれ補正率に応じて変化する。
第1メモリ領域61の容量の決定方法を、図42のフローチャートを参照しながら説明する。この実施形態の撮像装置は、手ぶれ補正の有無、電子ズームの有無、レンズ歪み補正の有無を、ユーザが選択設定できるようにしており、それらのユーザ選択設定に応じて、第1メモリ領域61の容量が変更決定される。このフローチャートの処理は、制御部10で、ユーザインターフェース9を通じたユーザ入力された選択設定情報に基づいてなされる。
図42においては、先ず、手ぶれ補正無しに設定されているかどうか判別する(ステップS101)。手ぶれ補正無しではなく、手ぶれ補正有りに設定されているときには、電子ズーム無しに設定されているかどうか判別する(ステップS102)。そして、このステップS102で、電子ズーム有りに設定されていると判別したときには、制御部10は、電子ズーム率(最大電子ズーム倍率)と、手ぶれ補正率(どの程度の大きさの手ぶれ補正までを補正することが可能であるかの率)とを考慮した容量MAに、第1メモリ領域61の記憶容量を設定する(ステップS103)。すなわち、第1メモリ領域61の記憶容量が、メモリ容量MAに設定されるように、セパレートアドレスSepAdrを決定し、レジスタブロック53のセパレートアドレスSepAdrを設定すべきレジスタに設定する。
このステップS103では、電子ズーム率と手ぶれ補正率とを考慮した場合において、最も容量を必要とする条件での容量を設定容量MAとすればよい。手ぶれ補正有り、電子ズーム有りというモードにおいて、最も容量を必要とする条件は、図43に示すように、「(n−1)フィールドで、手ぶれ補正範囲を含む入力画像最下段を拡大」を行ない、続いて「nフィールドで入力画像最上段を含む、第1メモリ領域61の容量を超えるライン数からの拡大」を行なうときである。
(n−1)フィールドで、手ぶれ補正を含む入力画像最下段を、出力画像信号として拡大すると、入力垂直同期Vを跨いで垂直方向処理用のデータ読み出しが行なわれ、さらに入力画像の最下段の処理であることから、読み出し開始が最も遅れる。そのとき、nフィールドの垂直方向読み出し処理は待ち状態となるが、nフィールドの最上段の処理を行なう場合は、その待ち時間分の入力画像を保存しておく必要があり、必要ラインメモリが増加する。また、水平方向処理結果の画像データの書き込みが、垂直方向処理のための画像データの読み出しを追い越してはならないため、必要とされる電子ズーム率、手ぶれ補正率を満足するようにラインメモリ数に、第1メモリ領域61の容量を設定する必要があるのである。
この場合における、画像メモリ6の第1メモリ領域61および第2メモリ領域62における画像データの書き込み、読み出しの様子を図44に示す。
この場合、撮像素子2からの入力撮像画像信号(図44(C))のうちの部分拡大領域に対応する部分の信号は、水平画像処理部512において処理された後、図44(A)において実線で示すようにして、第1メモリ領域61に書き込まれる。図44(D)の水平処理後画像信号においては、当該書き込まれた画像部分は、網点を付して示している。
第1メモリ領域61に、(n−1)フィールドの部分拡大領域の画像データが、垂直画像処理が可能なデータ量分以上書き込まれると、当該書き込まれた部分拡大領域の画像データが、図44(A)において太い点線で示すように、第1メモリ領域61から読み出されて、垂直画像処理がなされる。そして、垂直画像処理後の画像データは、図44(A)において、1点鎖線で示すようにして、第2メモリ領域62に書き込まれてゆく。したがって、垂直処理後の画像信号は、図44(E)のように、垂直同期信号を跨いだ区間で、第2メモリ領域62に書き込まれる。
このため、nフィールドの部分拡大領域の画像データ部分になると、図44(A)において、実線で示すように、当該画像データの水平方向画像処理がなされ、その処理結果の第1メモリ領域61への書き込みが開始される。そして、セパレートアドレスSepAdrのところで、折り返されて、nフィールドの部分拡大領域の画像データの全てが第1メモリ領域61に書き込まれる。
このnフィールドの画像データの水平処理結果の書き込み時にも、(n−1)フィールドの部分拡大領域の水平処理結果の画像データの読み出しが行なわれるので、この読み出しを、nフィールドの部分拡大領域の水平処理結果の画像データの書き込みが追い越してしまわないようにしなければならず、そのようにするために、第1メモリ領域61の容量が設定されるものである。
そして、第2メモリ領域への垂直処理結果の画像データの書き込みが完了すると、図44(A)において、2点鎖線で示すようにして、第2メモリ領域62から前記垂直方向画像処理結果が、次の画像データの第2メモリ領域62への書き込みに先立ち、読み出される。すなわち、読み出された出力画像データは、図44(F)に示すようなタイミングで出力される。
以上のように、(n−1)フィールドで、手ぶれ補正を含む入力画像最下段を、拡大画像の出力信号にしようとすると、入力同期Vを跨いで垂直方向処理用のデータ読み出しが行われ、さらに入力画像の最下段の処理であることから、読み出し開始が最も遅れる。
その時、次フィールドであるnフィールドの垂直方向読み出し処理は、待ち状態となるが、nフィールドの最上段の処理を行なう場合は、その待ち時間分の入力画像を保存しておく必要があり、必要ラインメモリが増加する。また、図44に示したように、水平方向処理結果の画像データの第1メモリ領域61への書き込みが、当該第1メモリ領域61からの垂直方向処理のための画像データの読み出しを追い越してはならないため、必要とされる電子ズーム率、手ぶれ補正率を満足するようなラインメモリ数分の記憶容量MAを設定する必要がある。
次に、ステップS101で、手ぶれ補正なしであると判別したときには、制御部10では、電子ズームなしであるかどうか判別し(ステップS104)、電子ズーム有りであると判別したときには、手ぶれ補正無しであるので、電子ズーム率のみを考慮した容量MBを、第1メモリ領域61の容量として設定する(ステップS105)。すなわち、第1メモリ領域61の記憶容量が、メモリ容量MBに設定されるように、セパレートアドレスSepAdrを決定し、レジスタブロック53のセパレートアドレスSepAdrを設定すべきレジスタに設定する。
この場合の容量MBは、図45に示すように、「(n−1)フィールドの中心部分の拡大電子ズーム処理」を行ない、続いて「nフィールドで、通常の解像度変換処理」を行なうときを考慮して設定すればよい。この場合は、手ぶれ補正が行なわれないため、その分、垂直方向処理の読み出しを早く実行でき、垂直方向処理の入力垂直同期Vを跨いで処理する時間が短くなる。そのため、上述のステップS103の場合と比べて、第1メモリ領域61の容量を小さくできる。
この場合における、画像メモリ6の第1メモリ領域61および第2メモリ領域62における画像データの書き込み、読み出しの様子を図46に示す。
この場合、撮像素子2からの入力撮像画像信号(図46(C))のうちの部分拡大領域に対応する部分の信号は、水平画像処理部512において処理された後、図46(A)において実線で示すようにして、第1メモリ領域61に書き込まれる。図46(D)の水平処理後画像信号においては、当該書き込まれた画像部分は、網点を付して示している。
第1メモリ領域61に、(n−1)フィールドの部分拡大領域の画像データが、垂直画像処理が可能なデータ量分以上書き込まれると、当該書き込まれた部分拡大領域の画像データが、図46(A)において太い点線で示すように、第1メモリ領域61から読み出されて、垂直画像処理がなされる。そして、垂直画像処理後の画像データは、図46(A)において、1点鎖線で示すようにして、第2メモリ領域62に書き込まれてゆく。したがって、垂直処理後の画像信号は、図46(E)のように、垂直同期信号を跨いだ区間で、第2メモリ領域62に書き込まれる。
このため、次フィールドであるnフィールドの画像データ部分になると、図46(A)において、実線で示すように、当該画像データの水平方向画像処理がなされ、その処理結果の第1メモリ領域61への書き込みが開始される。そして、セパレートアドレスSepAdrのところで、折り返されて、nフィールドの部分拡大領域の画像データの全てが第1メモリ領域61に書き込まれる。
このnフィールドの画像データの水平処理結果の書き込み時にも、(n−1)フィールドの部分拡大領域の水平処理結果の画像データの読み出しが行なわれるので、この読み出しを、nフィールドの部分拡大領域の水平処理結果の画像データの書き込みが追い越してしまわないようにしなければならず、そのようにするために、第1メモリ領域61の容量が設定されるものである。
そして、第2メモリ領域への垂直処理結果の画像データの書き込みが完了すると、図46(A)において、2点鎖線で示すようにして、第2メモリ領域62から前記垂直方向画像処理結果が、次の画像データの第2メモリ領域62への書き込みに先立ち、読み出される。すなわち、読み出された出力画像データは、図46(F)に示すようなタイミングで出力される。
次に、ステップS104で、電子ズーム有りであると判別したときには、制御部10では、レンズ歪み補正無しかどうか判別する(ステップS106)。ステップS102で、電子ズーム有りであると判別したときにも、このステップS106に進み、レンズ歪み補正無しかどうか判別する。
ステップS106で、レンズ歪み補正有りと判別したときには、制御部10は、図47に示すようなレンズ歪みの最大歪み量を見込んだライン数に対応できるメモリ容量MCに、第1メモリ領域61の記憶容量が設定されるように、セパレートアドレスSepAdrを決定し、レジスタブロック53のセパレートアドレスSepAdrを設定すべきレジスタに設定する(ステップS107)。
すなわち、レンズ歪みの補正をするときには、注目するラインを処理するためには、最大歪み分のライン数のデータが確保されている必要があるからである。このステップS107では、手ぶれ補正、電子ズームを行なわないため、垂直方向処理が入力垂直同期Vを跨ぐことがないことから、上書きを考慮する必要はない。よって、最大歪み分のラインメモリで対応できる。
最後に、ステップS106で、レンズ歪み補正無しであると判別したときには、制御部10は、解像度変換のみを考慮して、垂直解像度変換フィルタとしての垂直FIRフィルタのタップ数分のラインメモリ容量として、第1メモリ領域61の記憶容量MDを設定する(ステップS108)。すなわち、第1メモリ領域61の記憶容量が、メモリ容量MDに設定されるように、セパレートアドレスSepAdrを決定し、レジスタブロック53のセパレートアドレスSepAdrを設定すべきレジスタに設定する。
この場合、垂直解像度変換は、図57に示したように、垂直解像度変換処理前の画像の複数ラインから、垂直FIRフィルタを用いて、垂直解像度変換後の画像の1ラインの画像データを得るようにするものである。垂直解像度変換処理前の画像についての、ある要求ラインに対して、垂直解像度変換結果の1ラインを得るために垂直FIRフィルタで用いる垂直解像度変換処理前の画像の複数ラインは、垂直FIRフィルタのタップ数分である。よって、この複数ライン数分が、第1メモリ領域61に蓄積されると、垂直解像度変換を行なうことできるので、第1メモリ領域61の容量は、垂直FIRフィルタのタップ数分のライン数分である容量MDでよい。実際には、容量MDは、垂直FIRフィルタのタップ数分のライン数分の容量に、マージン分を付加した容量とする。
以上のようにして、第1メモリ領域61の容量が決定されるが、この図42のフローチャートの処理と同様にして、各モードや、手ぶれ補正の有無、レンズ歪み補正の有無、電子ズームの有無などの条件に応じて、予め、レジスタに容量MA,MB,MC,MDを記憶しておき、前記条件を制御部10が判断して、その判断結果に基づいて、適切なレジスタから第1メモリ領域61の容量を読み出して、セパレートアドレスを設定するようにしても良い。レジスタに容量MA,MB,MC,MDを記憶しておくのではなく、セパレートアドレスSepAdrの値をレジスタブロック53に予め設定しておき、それを必要に応じて読み出して、画像メモリ6のメモリ領域を分割するようにしても良い。
なお、この実施形態では、撮像装置の制御部10がユーザの入力選択設定情報に応じて、画像メモリ6の第1メモリ領域の大きさをダイナミックに変更するようにしたが、撮像装置の設計に当たって、電子ズームを設けるか、設けるとしたらどの程度のズーム率にするか、手ぶれ補正をつけるか、つけるとしたらどのくらいの大きさの手ぶれ補正を可能とするか、レンズ歪み補正を付けるか、付けるとしたらどの程度の補正率とするか、などを考慮して、固定的にセパレートアドレスSepAdrを設定する場合にも、図42のフローチャートと同様の手順により、メモリ領域61,62の大きさを決定するようにするものである。
次に、この実施形態の撮像装置における画像メモリ6として必要となるメモリ容量について、全画面縮小を例に挙げて説明する。ここで、全画面縮小とは、入力画像を部分切り出しするのではなく、入力画像全範囲から、必要な解像度の出力画像信号に変換する処理である。
この場合、画像の水平方向サイズをXピクセル(pixel=画素)、垂直サイズをYピクセル(pixel=画素)、1画素あたりの情報量を、Zビットとした時、保存するために必要となるメモリ容量は、
SUMmem=X×Y×Z(ビット)
となり、出力画像信号を、4:1:1の輝度信号、色差信号を持つNTSC(National Television System Committee)方式のSD画像とした場合、第2メモリ領域62で必要とする容量は、
SUMmem2=720×240×12=約2.0(メガビット)
となる。
次に、第1メモリ領域61において必要となる容量は、上で述べたように、垂直解像度変換のタップ数、手ぶれ補正範囲、電子ズーム率、電子歪み補正率などによって変化する。最もその容量を必要とする条件は、手ぶれ補正範囲を撮像素子の全有効画素領域に指定、電子ズーム率の限界として垂直タップ数の垂直サイズから出力画像信号サイズへの拡大を網羅、電子手ぶれ補正あり、とした場合であり、この場合に、第1メモリ領域61に必要な容量は、
SUMmem1=約2.0(メガビット)(実績値)
となる。
したがって、必要メモリ容量の合計は
SUMall=SUMmem1+SUMmem2=2.0+2.0=約4.0(メガビット)
となる。第2メモリ領域62には、解像度変換後の全データを書き込むため、入力画像サイズに関わらず、2.0(メガビット)となる。
一方、冒頭で説明した図54、図56の従来手法の場合は、入力画像サイズを、1152ピクセル×864ピクセル(1メガサイズ)とすると、SD画像は、それぞれ、
SUMall=1152×864×12=約11.0(メガビット)
SUMall=720×864×12=約7.0(メガビット)
となる。
したがって、上述したこの実施形態の場合には、従来手法に対して、画像メモリの必要メモリ容量を、それぞれ 40%、60%に削減できる。ここでは、1メガサイズの画像についてその効果を述べたが、入力サイズが増加しても、この実施形態では、必要メモリ容量が増加しないことから、入力サイズが増大するにつれて、その効果がより顕著となる。
[画像メモリ6の読み書きタイミング制御]
上述したように、この実施形態では、第1メモリ領域61には、水平方向の画像処理結果の画像データは1画面分の全てを書き込むのではなく、第1メモリ領域61の容量を1画面分よりも少ない容量としつつ、上書きにより消去される前に、書き込んだ画像データの読み出しを開始するようにしている。すなわち、水平方向の画像処理結果の画像データに対する垂直方向の画像処理は、1垂直周期待たずに処理を開始することが可能である。このことを可能にした画像メモリ6の第1メモリ領域61に対する読み出し開始タイミング制御の方法を、以下に説明する。
この実施形態では、前述した4種の撮像モードに応じて、2種類の読み出し開始タイミング制御方法を用いるようにしている。
方法1.読み出し開始タイミングを予め計算しておき、有効入力画像データの開始を示す水平および垂直同期信号などに基づいて、当該読み出し開始タイミングを検出して、読み出しを開始する。
方法2.メモリインタフェース54の内部で自ら開始タイミングを生成し、垂直方向処理の制御を行なう。
方法1では、手ぶれ補正、電子ズーム、電子歪み補正率などの条件により、第1メモリ領域61からの水平処理結果の画像データの読み出し開始タイミングを、予め詳細に決定しておくことは困難であるため、詳細な制御はできないが、メモリコントローラなどで詳細な制御する必要がなく、容易にタイミング制御を実現できる点と、読み出し開始タイミングの設定値によっては、処理開始以降は、回路が待ち状態になることがないような特殊な制御が可能となる点に長所がある。
この実施形態では、HD動画撮影モードおよび静止画記録モードでは、この方法1を用いるようにしている。
一方、方法2では、メモリインタフェース54自身が、読み出し開始タイミングを生成するため、それに必要な情報を管理・更新する必要があるが、画像メモリ6上の画像データをリアルタイムで管理可能となり、読み出し開始タイミングの詳細な制御ができるという長所がある。そして、この方法2は、メモリ容量の制限などで、詳細な制御を行ないたい場合に効果を発揮する。この実施形態では、SD動画撮影モードおよびモニタリングモードでは、方法2を用いるようにしている。
以上の方法1および方法2の適用例は、一例であり、これに限定されるものではない。
次に、上記の方法2について、その詳細を述べる。方法2を実現するための重要ポイントは、第1メモリ領域61上に存在する当該フィールド(フレーム)の画像管理情報(メモリ領域上に存在する1フィールド(1フレーム)中での画像範囲およびその開始アドレス、終了アドレス)を常に更新、管理することである。
一例として、図38、図39の例の場合における第1メモリ領域61についてのデータ書き込み/読み出しの挙動図をクローズアップしたものを図48に示す。また、1画面分の画像データが、そのときに、第1メモリ領域61にどのように書き込まれるかを、図49に示す。図49は、入力画像データについて水平方向の処理を全て行なった後、有効画像データ部分のみを第1メモリ領域61に書き込む場合を示している。
まず、図48において実線401で示すように、水平方向処理後の有効画像の書き込みが開始される。その時の書き込み開始アドレスは任意である。書き込み続けると、アドレスが第1メモリ領域61のメモリ上限に達し、折り返しが発生する。
そして、この折り返しが発生した状態で、さらに画像データを書き込み続けると、書き込みアドレスは、前に設定した書き込み開始アドレスに戻って、当該書き込み開始アドレスから、図48において実線402で示すように、第1メモリ領域61上で画像データの上書きが発生する。さらに、書き込み続けると、アドレスが、再度、第1メモリ領域61のメモリ上限に達し、折り返しが発生する。
この折り返しが発生した状態で、さらに画像データを書き込み続けると、書き込みアドレスは、再度、前に設定した書き込み開始アドレスに戻って、当該書き込み開始アドレスから、図48において実線403で示すように、第1メモリ領域61上で画像データの上書きが発生し、1画面分の残りの画像データが書き込まれる。
図48における実線401,402,403で示した書き込み区間の画像データは、1画面分の画像データとしては、図49に示すようになる。
図50(A)および(B)に、このときに、第1メモリメモリ61の1個のバンク上に存在する画像範囲の遷移を示す。なお、図39(B)では、第1メモリ領域61の1個のバンクの容量を、説明の便宜上、100ライン分として示している。
書き込みを始めてから第1メモリ領域61の1個のバンクの記憶容量分の書き込みがなされると、図50(B)に示すように、画像データの上書きが初めて発生する。その時、保存されていた書き込み開始ラインの画像データが上書きされ、消去されるが、存在終了ラインが増加する。したがって、存在開始ラインと存在終了ラインの相対的な差分は、上書きが開始された時点から常に一定となっている。この存在開始ラインと存在終了ラインのそれぞれのライン情報およびアドレス情報を、メモリインタフェース54で常に更新管理して、垂直方向読み出しタイミングを自動生成する。
すなわち、この実施形態では、第1メモリ領域61上に存在する画像範囲およびその開始アドレス、終了アドレスを管理することで、垂直方向処理のための読み出し開始タイミングを早めることができ、データの上書きが発生する前に所望のデータを読み出すことで、図54、図55の従来手法よりも少ないメモリ容量でかつ任意の入力画像サイズからのビデオ信号変換を可能とする。
さらに、この実施形態では、上述した存在開始ラインの情報をもとに、所望のラインの読み出しアドレス計算を行なうことで、従来では複雑になり得たアドレス計算を簡素化するようにしている。
すなわち、図54、図55に示した従来手法では、画像の読み出しアドレス計算には、図49に示した書き込み開始ラインおよびその開始アドレスをもとに計算している。つまり、従来手法では、書き込み開始ラインに対する相対アドレスを画像の読み出しのアドレス計算に利用している。その書き込み開始ラインおよびアドレス情報は、垂直ブランキング期間中に一度更新される。
図51に、従来方法の場合における垂直方向処理のための画像データの読み出し開始タイミングの計算方法を示す。すなわち、図51に示すように、垂直方向処理対象のラインが指定されて、その要求が垂直画像処理部で発生したとき、メモリコントローラは、要求されたラインを処理するために必要な画像範囲の複数ラインのアドレスを、書き込み開始ラインからの相対差分を利用して計算し、それらの必要な画像範囲の複数ラインの書き込みが終了していて、その読み出しが開始できるかどうかを判断するようにする。
しかし、この図51に示した垂直方向処理のための画像データの読み出し開始タイミングの計算方法として、書き込み開始アドレスを利用したアドレス計算を、この実施形態の撮像装置へ適用すると、次のような問題がある。すなわち、
1.任意の折り返しアドレスに対応するためには除算器が必要となる。
2.折り返しアドレスが2のべき乗の場合、シフト演算などを用いることで代用できるが、汎用性に欠け、また、動的に折り返しアドレスを変化させることが困難である。
という問題がある。
そこで、この実施形態では、アドレス計算には図50に示した存在開始ラインおよびそのアドレスを利用することでこれらの問題を解決するようにしている。
図52に、この実施形態における垂直方向処理のための画像データの読み出し開始タイミングの計算方法を示す。すなわち、図52に示すように、垂直方向処理対象のラインが指定されて、その要求が垂直画像処理部で発生したとき、メモリインタフェース54は、要求されたラインを処理するために必要な画像範囲の複数ラインの、その存在開始ラインからの相対差分を利用して計算し、それらの必要な画像範囲の複数ラインの書き込みが終了していて、垂直方向処理が開始できるかどうかを判断するようにする。
この実施形態では、存在開始ラインに対する相対アドレスを、垂直方向処理のための画像データの読み出し開始タイミングを決定する際のアドレス計算に利用することで、アドレス計算の際の折り返しは高々一回となる。このことより、除算器ではなく減算器などで実現することができ、計算の簡素化できる。
また、任意の折り返しアドレスに対応可能となる。そして、どのような入力画像サイズの場合でも、アドレス計算の際の折り返し回数は高々一回となるため、任意の入力画像サイズの画像データからの出力画像データへの変換が容易に実現できる。
この例におけるメモリインタフェース54の制御部542の、垂直処理のための画像データの読み出し制御動作のフローチャートを図53に示す。ただし、図53のフローチャートは、1画面分の画像データについての処理を示したもので、動画の画像データの場合には、この図53の処理が繰り返されることになる。
すなわち、この場合、図19に示したように、垂直補間処理部209は、前のラインについての垂直補間処理が終了すると、次のラインの垂直補間処理のために、メモリインタフェース54の制御部542(図19では制御部542は省略)に新たな要求ラインの情報を送る。
メモリインタフェース54の制御部542は、この要求ラインの情報を受け取ると(ステップS201)、要求ラインを垂直方向処理するために必要な複数ラインを認識し、それら複数ラインの、存在開始ラインに対する相対アドレスに関する計算を、上述したようにして行なう(ステップS202)。
このとき、レジスタブロック53には、制御部10から手ぶれ補正の有無、レンズ歪み補正の有無、電子ズームの有無などのモードに関する情報が保持されており、メモリインタフェース54の制御部542は、このレジスタブロック53のモードの情報から、そのときのモードにおいて、要求ラインを垂直方向処理するために必要な複数ラインを認識し、そのアドレス計算を行なう。
そして、メモリインタフェース54の制御部542は、必要な複数ラインの画像データの読み出しが可能になったか否か判別し(ステップS203)、未だ、それらの画像データの書き込みが終了していない場合には、垂直補間処理部209に供給するウエイト信号WRwait=1として、その画像データの書き込みが終了していない旨を垂直補間処理部209に通知する(ステップS204)。そして、ステップS203に戻る。
また、ステップS203で、必要な複数ラインの画像データの読み出しが可能になったと判別したときには、メモリインタフェース54の制御部542は、垂直補間処理部209に供給するウエイト信号WRwait=0に戻すと共に、上記必要な複数ラインの画像データを読み出す(ステップS206)。このステップS206での読み出しアクセスは、前述したように、アクセス権周期区間(8メモリサイクル区間)において、レンズ歪みの大きさに応じて、最大5回なされ、画像データは、8画素単位で、4ライン分同時に読み出される。
そして、メモリインタフェース54の制御部542は、一回の読み出しで得た8画素のうち、垂直補間処理に必要な画素データのみを垂直補間処理部209に転送する(ステップS207)。したがって、垂直補間処理部209は、要求ラインについての垂直補間処理を開始する。
次に、メモリインタフェース54の制御部542は、垂直補間処理部209から要求されたラインについての垂直補間処理がすべて終了したか否か判別し(ステップS208)、終了していないと判別したときには、ステップS206に戻り、ステップS206,207、208を繰り返す。
また、ステップS208で、垂直補間処理部209から要求されたラインについての垂直補間処理がすべて終了したと判別したときには、メモリインタフェース54の制御部542は、1画面分の画像データの全てについての上記処理が終了したか否か判別し、終了してはいないと判別したときには、ステップS201に戻って、上述の処理を繰り返す。また、1画面分の画像データの全てについての上記処理が終了したと判別したときには、この処理ルーチンを終了する。
なお、上述の実施形態の説明では、主に動画記録モードのときの撮像画像信号の場合について述べたが、静止画記録、静止画再生などの際にも、上述と同様のアドレス計算方法を適用できることは勿論である。
以上説明したように、この実施形態によれば、1フィールド(1フレーム)分のメモリ容量に、垂直解像度変換などの垂直方向画像処理を開始するのに必要なメモリ容量を加えるだけで、任意データサイズの入力画像信号から、出力画像信号への変換が可能となり、入力画像分のメモリ容量相当を必要とする従来システムより少ない容量で、解像度変換などの画像処理をリアルタイム処理として実現できる。
そして、そのリアルタイム画像処理において、この実施の形態では、8画素単位で画像メモリに対する読み書きのアクセスを行なうようにすることにより、画像処理について、低消費電力化と、高処理効率化を実現することができる。
さらに、この実施の形態では、画像メモリを複数バンクの構成とすると共に、画像データの当該複数バンクに対する読み書きを工夫することにより、リアルタイム画像処理を容易に実現することができるようにしている。
また、水平方向処理および垂直方向処理のための画像データの、画像メモリ6に対する読み書きについて、4個のメモリ書き込みあるいは読み出し制御部541〜544を設けて、それぞれ独立に制御すると共に、それら4個の制御部によるアクセスを、調停部545によって調停するようにしたので、この点でも、リアルタイム画像処理を容易に実現することができる。
また、この実施形態では、レジスタ設定のセパレートアドレスによるメモリ分割を行なうことで、動的に回路構成を変化させることができ、その結果、さまざまな処理モードに対応することが可能であり、シームレスなモード遷移が可能となる。
また、メモリ上の画像管理情報をリアルタイムで管理・更新することで、読み出しの際のアドレス計算も簡素化でき、さらに、任意の折り返しアドレスに対応可能となる。
また、入力画像サイズによらず一定のメモリ容量にて解像度変換などの画像処理を実現できるため、入力画像サイズが大きくなればなるほど、従来システムに対して、その効果を、より発揮できる。さらに、動画像処理だけでなく、静止画処理に対しても適用できるため、より広い分野での利用が期待できる。
また、画像処理モードに応じてメモリ構成を動的に変化させることと、垂直処理の開始タイミングを2種類の方法を用いて柔軟に設定できることから、汎用性が高く、撮像装置だけでなく、さまざまな画像処理システムに組み込むことが期待できる。
[他の実施形態および変形例]
なお、上述の実施形態は、垂直方向処理のために画像データを読み出す場合において、1処理単位周期区間内で、メモリアクセス処理が完了しない場合について説明したが、この発明は、このような場合に限らない。
例えば、図22において、水平処理ブロック51の水平処理後データ書き込み要求部513、垂直処理ブロック52の垂直処理用データ取得要求部524、垂直処理後データ書き込み要求部525、出力データ読み出し要求部526のそれぞれは、画像メモリ6に対して、メモリインタフェース54を通じてメモリアクセスを要求するクライアントとなるが、それらクライアントの一つからの要求に対する処理として、この発明は適用可能である。
なお、上述の実施形態の説明は、撮像装置を操作するユーザにより生起される手ぶれによる画像歪みを補正する場合であったが、ユーザにより生起される手ぶれのみではなく、撮影時に、撮像素子に対して、その撮像画像の水平方向および/または垂直方向の位置的変化を生じるように加わった振動などの偏倚力に起因して生じる画像歪みをも補正することができることは言うまでもない。
また、上述の実施形態では、レンズの交換や光学ズームによるレンズの光軸上の移動を考慮するために、レンズ歪み補正用データ導出・エンコード部11を設けたが、レンズ交換を行なわず、光学ズームの機能を有しない撮像装置の場合であれば、レンズ歪み補正用ベクトルは、撮像素子の各画素位置に対して一意に定まるので、レンズ歪み補正用データデコード部の代わりに、レンズ歪み補正用データの格納部を設け、画素座標データを引数として、レンズ歪み水平方向補正量データやレンズ歪み垂直方向補正量データを読み出すようにすれば良い。
また、上述の実施形態は、X−Yアドレス型の固体撮像素子としてCMOSイメージャを用いた場合であるが、撮像素子としてはCMOSイメージャに限定されるものでないことは勿論である。また、撮像素子は、X−Yアドレス型のものに限定されるものではなく、CCD固体撮像素子であってもよい。
また、この発明は、撮像装置(カメラ)にのみ適用されるものではなく、例えば携帯電話端末、情報携帯端末などに撮像素子が取付けられて、画像を撮影する場合にも適用できるものである。
また、上述の実施の形態では、撮像画像データに対する画像処理について説明したが、この発明が対象とする画像データは、撮像画像データに限られるものではないことは言うまでもない。
なお、メモリインタフェース54の制御部541〜544および調停部545は、上述の実施形態では、ハードウエアとして実現するようにしたが、ソフトウエアにより実現するようにしても良い。
また、上述の実施形態では、水平方向の画素列の画像データを先に読み出して、1ライン分を読み出したら、次のラインを読み出すようにしたので、水平方向処理を先に行ない、その処理結果を第1メモリ領域に書き込み、垂直方向処理のためには、この第1メモリ領域から水平方向処理結果を読み出すようにしたが、垂直方向の画素列を先に読み出し、垂直方向の1列を読み出したら、次の1列を読み出すようにして、垂直方向処理を先に行ない、その処理結果を第1メモリ領域に書き込み、水平方向処理のために、この第1メモリ領域から水平方向処理結果を読み出すようにしても良い。
この発明による画像データ処理装置の実施形態の構成例を示すブロック図である。 手ぶれ補正を説明するために用いる図である。 CMOSイメージャにおける、手ぶれによるフレーム内画像歪みの原因を説明するための図である。 CMOSイメージャにおける、手ぶれによるフレーム内画像歪みを説明するために用いる図である。 この発明による画像データ処理装置の実施形態における手ぶれ補正の概要を説明するための図である。 この発明による画像データ処理装置の実施形態における手ぶれ補正動作を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリのメモリ領域を説明するための図である。 図1の一部の詳細構成例を示す図である。 この発明による画像データ処理装置の実施形態における手ぶれ補正動作を説明するための図である。 この発明による画像データ処理装置の実施形態における手ぶれ補正動作を説明するための図である。 この発明による画像データ処理装置の実施形態において、画像歪みを補正するために用いる補間処理を説明するための図である。 この発明による画像データ処理装置の実施形態において、画像歪みを補正するために用いる補間処理を説明するための図である。 この発明による画像データ処理装置の実施形態において、画像歪みを補正するために用いる補間処理を説明するための図である。 この発明による画像データ処理装置の実施形態において、画像歪みを補正するために用いる補間処理を説明するための図である。 図1の実施形態の装置における水平処理用手ぶれ補正量積分部の動作の流れを説明のためのフローチャートである。 図1の実施形態の装置における水平画像処理部の詳細構成例を示すブロック図である。 図16の水平画像処理部の動作タイミングを説明するための図である。 図1の実施形態の装置における垂直処理用手ぶれ補正量積分部の動作の流れを説明のためのフローチャートである。 図1の実施形態の装置における垂直画像処理部の詳細構成例を示すブロック図である。 図20の垂直画像処理部の動作タイミングを説明するための図である。 この発明による画像データ処理装置の実施形態における画像データの処理の流れを説明するためのブロック図である。 この発明による画像データ処理装置の実施形態における画像メモリに対するメモリアクセス制御の一例を説明するために用いるブロック図である。 この発明による画像データ処理装置の実施形態における画像メモリに対するメモリアクセス制御の一例を説明するために用いる図である。 この発明による画像データ処理装置の実施形態における画像メモリへの画像データの書き込み動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリからの画像データの読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリに対するメモリアクセス制御の一例を説明するために用いる図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの画像メモリからの読み出し制御の説明に用いる図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの画像メモリからの読み出し制御の説明に用いる図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの画像メモリからの読み出し制御の説明に用いる図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの画像メモリからの読み出し制御の説明に用いる図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの読み出し処理の例を説明するためのフローチャートの一部を示す図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの読み出し処理の例を説明するためのフローチャートの一部を示す図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの読み出し処理の例を説明するために用いるタイミングチャートを示す図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの読み出し処理の例を説明するために用いるタイミングチャートを示す図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの読み出し処理の例を説明するために用いる図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの読み出し処理の他の例を説明するために用いる図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの読み出し処理の他の例を説明するためのフローチャートの一部を示す図である。 この発明による画像データ処理装置の実施形態における画像データの処理の一例を説明するために用いる図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像データの処理の一例を説明するために用いる図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリのうちの第1メモリ領域の容量の設定方法を説明するためのフローチャートである。 この発明による画像データ処理装置の実施形態における画像データの処理の一例を説明するために用いる図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像データの処理の一例を説明するために用いる図である。 図45の例における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における画像メモリへの書き込み/読み出し動作例を説明するための図である。 この発明による画像データ処理装置の実施形態における垂直処理のための画像データの画像メモリからの読み出し制御を説明するためのフローチャートである。 従来の画像データ処理装置を説明するためのブロック図である。 図54の例の画像データ処理装置における画像メモリへの書き込み/読み出し動作を説明するための図である。 画像データ処理装置の他の例を説明するためのブロック図である。 垂直方向処理のための画像データの読み出しを説明するための図である。 撮像レンズの歪曲収差特性に基づく画像歪みを説明するための図である。 撮像レンズの歪曲収差特性に基づく画像歪みの垂直方向補正処理をするための画像データの読み出しの例を説明するための図である。 撮像レンズの歪曲収差特性に基づく画像歪みの垂直方向補正処理をするための画像データの読み出しの例を説明するための図である。 撮像レンズの歪曲収差特性に基づく画像歪みの垂直方向補正処理をするための画像データの読み出しの他の例を説明するための図である。 先に提案した発明による画像データ処理装置の実施形態における垂直処理のための画像データの画像メモリからの読み出し制御の説明に用いる図である。 先に提案した発明による画像データ処理装置の実施形態における画像メモリからの画像データの書き込み/読み出し制御の説明に用いるブロック図である。 先に提案した発明による画像データ処理装置におけるメモリアクセス処理を説明するための図である。 先に提案した発明による画像データ処理装置の実施形態における垂直処理のための画像データの画像メモリからの読み出し制御の説明に用いる図である。
符号の説明
2…撮像素子、5…信号処理部、6…画像メモリ、7…手ぶれ検出部、8…手ぶれ速度検出処理部、10…制御部、12…レンズ歪み補正データデコード部、51…水平処理ブロック、52…垂直処理ブロック、53…レジスタブロック、54…メモリインタフェース、61…第1メモリ領域、62…第2のメモリ領域、209…垂直補間処理部、541〜544…制御部、545…調停部、BANK0〜BANK3…画像メモリ6を構成するバンク

Claims (12)

  1. 画像データを格納する画像メモリと、
    前記画像メモリに書き込む画像データを出力する、または、前記画像メモリから読み出した画像データを受けて所定の処理を行う複数個の処理手段と、
    前記複数個の処理手段からの書き込みまたは読み出しの要求を受けて、前記画像メモリに対する画像データの書き込みアクセスまたは画像データの読み出しアクセスを制御するメモリ制御手段と、
    を備え、
    前記メモリ制御手段は、
    前記画像メモリに対して、1ライン分の有効画素数の1/N(Nは2以上の正の整数)からなる水平方向の複数画素単位で、前記書き込みアクセスの1サイクルまたは前記読み出しアクセスの1サイクルを行なうと共に、
    複数サイクルを処理単位周期として、前記複数個の処理手段のそれぞれからの前記要求に応じた書き込みまたは読み出しのアクセス処理を、前記処理単位周期内に1サイクル単位ですべて割り当てて実行し、かつ、前記処理単位周期を繰り返すようにするものであり、
    さらに、前記メモリ制御手段は、
    前記処理単位周期の1周期内に割り当てられた前記処理手段のそれぞれに対応して割り当てられた前記サイクル内で、それぞれの前記処理手段からの前記要求に基づいて指定された前記アクセス処理が完了できるか否かを判別する判別手段と、
    前記判別手段で前記アクセス処理が完了できないと判別したときに、前記要求を出した前記処理手段に対して、前記処理単位周期の待機指示信号を送って、新たな前記要求の送出を一時停止させるようにすると共に、前記処理単位周期の1周期内でできないとされた前記アクセス処理を、当該アクセス処理を行うべき前記処理単位周期に続く1または複数の処理単位周期において前記処理手段に対応して割り当てた前記サイクルにおいても実行するようにするアクセス実行手段と、
    を備えることを特徴とする画像データ処理装置。
  2. 請求項1に記載の画像データ処理装置において、
    前記処理手段の一つは、前記メモリ制御手段に対して、前記画像メモリからの画像データの読み出し要求を、注目画素を指定して行い、前記画像メモリから読み出された画像データに対して、垂直方向の画像歪みを除去するようにする垂直方向処理を行なう垂直方向処理手段であり、
    前記メモリ制御手段の前記判別手段は、
    前記垂直方向処理手段からの前記要求信号に基づいて、前記処理単位周期の1周期内に割り当てられた、前記垂直方向処理手段からの前記読み出し要求に対応するサイクルで、前記水平方向の複数画素単位分の前記指定された注目画素のすべてについての前記垂直方向処理に必要な前記画像データを読み出すことができるか否かを判別し、
    前記メモリ制御手段の前記アクセス実行手段は、
    前記判別手段で前記垂直方向処理に必要な前記画像データのすべての読み出しができないと判別したときに、前記垂直方向処理手段に対して、前記処理単位周期の待機指示信号を送って、前記要求信号の送出を待機させるようにすると共に、前記処理単位周期の1周期内でできないとされた前記画像メモリ部からの画像データの読み出し処理を、当該画像データの読み出し処理を行うべき前記処理単位周期に続く1または複数の処理単位周期において割り当てた前記垂直方向処理手段からの前記読み出し要求に対応するサイクルにおいて実行するようにする
    ことを特徴とする画像データ処理装置。
  3. 請求項1に記載の画像データ処理装置において、
    前記書き込みアクセスおよび読み出しアクセスを行なう前記水平方向の複数画素単位は、水平方向の8画素単位である
    ことを特徴とする画像データ処理装置。
  4. 請求項2に記載の画像データ処理装置において、
    前記垂直方向処理は、画像データに対する所定の画像処理を水平方向処理と垂直方向処理とに分けたときの垂直方向処理であり、前記水平方向処理の処理結果の画像データを前記垂直方向処理対象の画像データとして前記画像メモリに書き込む
    ことを特徴とする画像データ処理装置。
  5. 請求項1に記載の画像データ処理装置において、
    前記画像メモリは、複数のバンクに分割されており、前記画像データの前記画像メモリへの書き込みは、所定のデータ長ごとに、前記バンクを順次に切り換えて行ない、前記画像データの前記画像メモリからの読み出しは、前記所定のデータ長ごとについて、複数の前記バンクから同時に行なう
    ことを特徴とする画像データ処理装置。
  6. 請求項5に記載の画像データ処理装置において、
    前記画像データの輝度成分と2個の色差成分との標本化周波数比は、4:1:1であって、前記複数のバンクの数は、4の倍数である
    ことを特徴とする画像データ処理装置。
  7. 請求項5または請求項6に記載の画像データ処理装置において、
    前記所定のデータ長は、1ラインまたは複数ライン分である
    ことを特徴とする画像データ処理装置。
  8. 請求項2に記載の画像データ処理装置において、
    前記処理単位周期内において、前記垂直方向処理手段からの要求に対応する読み出しアクセスについて複数サイクルを割り当てる
    ことを特徴とする画像データ処理装置。
  9. 請求項2に記載の画像データ処理装置において、
    前記メモリ制御手段の前記アクセス実行手段は、
    前記判別手段で前記垂直方向処理に必要な前記画像データのすべての読み出しができないと判別したときに、前記垂直方向処理手段に対して、前記処理単位周期の待機指示信号を送って、前記要求信号の送出を一時停止させるようにすると共に、前記処理単位周期の1周期内でできないとされた前記画像メモリ部からの画像データの読み出し処理を、当該画像データの読み出し処理を行うべき前記処理単位周期に続く1処理単位周期において割り当てた前記垂直方向処理手段からの前記要求信号に対応するサイクルのみにおいて実行するようにし、
    かつ、前記垂直方向処理手段からの前記読み出し要求において指定される前記注目画素について必要とされる画像データが、前記処理単位周期に続く1処理単位周期において割り当てた前記垂直方向処理手段からの前記要求信号に対応するサイクルで読み出し可能な画像データ範囲よりも逸脱するときには、前記要求信号に対応するサイクルで読み出し可能な画像データ範囲内の、前記注目画素に近い画素データを読み出すようにする
    ことを特徴とする画像データ処理装置。
  10. 請求項4に記載の画像データ処理装置において、
    前記画像データは、撮像素子からの撮像画像データであると共に、前記画像データに対する所定の画像処理は、撮像に用いたレンズに基づく画像歪みを補正するレンズ歪み補正処理である
    ことを特徴とする画像データ処理装置。
  11. 画像データを格納する画像メモリと、前記画像メモリに書き込む画像データを出力する、または、前記画像メモリから読み出した画像データを受けて所定の処理を行う複数個の処理手段と、前記複数個の処理手段からの書き込みまたは読み出しの要求を受けて、前記画像メモリに対する画像データの書き込みアクセスまたは画像データの読み出しアクセスを制御するメモリ制御手段とを備える画像データ処理装置における画像データ処理方法であって、
    前記メモリ制御手段により、前記画像メモリに対して、1ライン分の有効画素数の1/N(Nは2以上の正の整数)からなる水平方向の複数画素単位で、前記書き込みアクセスの1サイクルまたは前記読み出しアクセスの1サイクルを行なうようにすると共に、複数サイクルを処理単位周期として、前記複数個の処理手段のそれぞれからの前記要求に応じた書き込みまたは読み出しのアクセス処理を、前記処理単位周期内に1サイクル単位ですべて割り当てて実行し、かつ、前記処理単位周期を繰り返すようにし、かつ、
    前記メモリ制御手段は、
    前記処理単位周期の1周期内に割り当てられた前記処理手段のそれぞれに対応して割り当てられた前記サイクル内で、それぞれの前記処理手段からの前記要求に基づいて指定された前記アクセス処理が完了できるか否かを判別する判別工程と、
    前記判別工程で前記アクセス処理が完了できないと判別したときに、前記要求を出した前記処理手段に対して、前記処理単位周期の待機指示信号を送って、新たな前記要求の送出を一時停止させるようにすると共に、前記処理単位周期の1周期内でできないとされた前記アクセス処理を、当該アクセス処理を行うべき前記処理単位周期に続く1または複数の処理単位周期において前記処理手段に対応して割り当てた前記サイクルにおいても実行するようにするアクセス実行工程と、
    を行うことを特徴とする画像データ処理方法。
  12. 垂直方向の画像歪みを有する画像の画像データである第1の画像データを格納する第1の画像メモリ領域と、
    前記第1の画像メモリ領域から読み出された画像データに対して、前記垂直方向の画像歪みを除去するようにする垂直方向処理を行なう垂直方向処理手段と、
    前記垂直方向処理手段で前記垂直方向の画像歪みが除去された画像の画像データである第2の画像データを格納する第2の画像メモリ領域と、
    前記第1および第2の画像メモリ領域と、前記垂直方向処理手段との間に設けられ、前記第1および第2の画像メモリ領域に対する前記第1および第2の画像データの読み出し、書き込みを制御するためのメモリ制御手段と、
    を備え、
    前記メモリ制御手段は、少なくとも、
    前記垂直方向処理手段からの要求信号を受けて、前記第1の画像メモリ領域から、前記要求信号により指定された注目画素についての前記垂直方向処理に必要な前記第1の画像データを読み出して前記垂直方向処理手段に供給するようにする第1のアクセスと、
    前記垂直方向処理手段からの前記第2の画像データを第2の画像メモリ領域に書き込む第2のアクセスと、
    を実行するものであり、
    前記第1および第2の画像メモリ領域に対して、1ライン分の有効画素数の1/N(Nは2以上の正の整数)からなる水平方向の複数画素単位で、前記書き込みおよび読み出しのアクセスの1サイクルを行なうと共に、
    複数メモリアクセスサイクルを処理単位周期として、当該処理単位周期内に、前記第1および第2のアクセスをそれぞれ割り当てて、前記処理単位周期で繰り返すようにする画像処理装置であって、
    前記メモリ制御手段は、
    前記垂直方向処理手段からの前記要求信号に基づいて、前記処理単位周期の1周期内に割り当てられた前記第1のアクセスのサイクルで、前記要求信号により指定された前記水平方向の複数画素単位分の注目画素のすべてについての前記垂直方向処理に必要な前記第1の画像データを読み出すことができるか否かを判別する判別手段と、
    前記判別手段で前記垂直方向処理に必要な前記第1の画像データのすべての読み出しができないと判別したときに、前記垂直方向処理手段に対して、前記処理単位周期の待機指示信号を送って、前記要求信号の送出を一時停止させるようにすると共に、前記処理単位周期の1周期内でできないとされた前記水平方向の複数画素単位についての前記第1の画像メモリ部からの画像データの読み出し処理を、当該画像データの読み出し処理を行うべき前記処理単位周期に続く1または複数の処理単位周期において割り当てた前記第1のアクセスのサイクルにおいて実行するようにする手段と、
    を備えることを特徴とする画像データ処理装置。
JP2006245006A 2006-09-11 2006-09-11 画像データ処理装置および画像データ処理方法 Expired - Fee Related JP4702233B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006245006A JP4702233B2 (ja) 2006-09-11 2006-09-11 画像データ処理装置および画像データ処理方法
US11/852,852 US8350927B2 (en) 2006-09-11 2007-09-10 Image-data processing apparatus and image-data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006245006A JP4702233B2 (ja) 2006-09-11 2006-09-11 画像データ処理装置および画像データ処理方法

Publications (2)

Publication Number Publication Date
JP2008065722A true JP2008065722A (ja) 2008-03-21
JP4702233B2 JP4702233B2 (ja) 2011-06-15

Family

ID=39288370

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006245006A Expired - Fee Related JP4702233B2 (ja) 2006-09-11 2006-09-11 画像データ処理装置および画像データ処理方法

Country Status (2)

Country Link
US (1) US8350927B2 (ja)
JP (1) JP4702233B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110068747A (ko) * 2009-12-16 2011-06-22 삼성전자주식회사 화상 처리 장치, 방법, 및 상기 방법을 수행하는 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체
US8928782B2 (en) 2012-10-23 2015-01-06 Fujitsu Semiconductor Limited Image processing device and image capture device
US10726528B2 (en) 2016-12-27 2020-07-28 Kabushiki Kaisha Toshiba Image processing apparatus and image processing method for image picked up by two cameras

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009169601A (ja) * 2008-01-15 2009-07-30 Ricoh Co Ltd 画像処理システム及びこの画像処理システムを有するカメラ
US8988492B2 (en) * 2009-01-30 2015-03-24 Panasonic Automotive Systems Company Of America, Division Of Panasonic Corporation Of North America Method and apparatus for correction of an image from a fisheye lens in a camera
JP5272977B2 (ja) * 2009-09-01 2013-08-28 株式会社リコー 制御装置、画像読取装置、画像形成装置、及び、画像読取装置の制御方法
JP2011090576A (ja) * 2009-10-23 2011-05-06 Seiko Epson Corp 画像読取装置及び画像読取装置における画像データの書き込み方法
US9109301B2 (en) * 2009-12-14 2015-08-18 Sino-American Silicon Products, Inc. Crystalline silicon formation apparatus
JP6084000B2 (ja) * 2012-10-18 2017-02-22 株式会社メガチップス 画像処理装置
CN102970495B (zh) 2012-11-23 2014-11-19 华为技术有限公司 一种透镜畸变校正方法和装置
JP2014230159A (ja) * 2013-05-23 2014-12-08 株式会社メガチップス 画像処理装置
JP6273881B2 (ja) 2014-02-13 2018-02-07 株式会社リコー 画像処理装置、画像処理方法、及びプログラム
US9967461B2 (en) 2015-10-14 2018-05-08 Google Inc. Stabilizing video using transformation matrices
US10462370B2 (en) 2017-10-03 2019-10-29 Google Llc Video stabilization
US10171738B1 (en) 2018-05-04 2019-01-01 Google Llc Stabilizing video to reduce camera and face movement
JP7170478B2 (ja) * 2018-09-18 2022-11-14 株式会社東芝 画像処理装置、画像処理方法及び画像処理プログラム
CN111988552B (zh) * 2019-05-23 2022-08-23 北京嗨动视觉科技有限公司 图像输出控制方法及装置和视频处理设备
CN111768341B (zh) * 2020-07-01 2023-09-19 成都国科微电子有限公司 一种图像处理方法及图像处理装置
US11190689B1 (en) 2020-07-29 2021-11-30 Google Llc Multi-camera video stabilization
US20220100504A1 (en) * 2020-09-25 2022-03-31 Advanced Micro Devices, Inc. Shared data fabric processing client reset system and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH114379A (ja) * 1997-06-12 1999-01-06 Matsushita Electric Ind Co Ltd 画像信号処理装置
JP2006222827A (ja) * 2005-02-14 2006-08-24 Sony Corp 画像データ処理方法および画像データ処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2956527A (en) 1955-07-07 1960-10-18 Babcock & Wilcox Co Combustion apparatus for ash containing fuel
US5293236A (en) * 1991-01-11 1994-03-08 Fuji Photo Film Co., Ltd. Electronic still camera including an EEPROM memory card and having a continuous shoot mode
JP2956527B2 (ja) 1995-04-28 1999-10-04 松下電器産業株式会社 画像メモリ機能付き映像装置
JP3296780B2 (ja) * 1998-05-11 2002-07-02 三洋電機株式会社 ディジタルカメラ
US6873658B2 (en) * 1999-12-20 2005-03-29 Texas Instruments Incorporated Digital still camera system and method
JP2008022372A (ja) * 2006-07-13 2008-01-31 Canon Inc 改竄検知情報生成装置、撮像装置、改竄検知情報生成方法、プログラムおよび記憶媒体

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH114379A (ja) * 1997-06-12 1999-01-06 Matsushita Electric Ind Co Ltd 画像信号処理装置
JP2006222827A (ja) * 2005-02-14 2006-08-24 Sony Corp 画像データ処理方法および画像データ処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110068747A (ko) * 2009-12-16 2011-06-22 삼성전자주식회사 화상 처리 장치, 방법, 및 상기 방법을 수행하는 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체
JP2011130102A (ja) * 2009-12-16 2011-06-30 Samsung Electronics Co Ltd 画像処理装置及び画像処理方法
KR101646673B1 (ko) * 2009-12-16 2016-08-08 삼성전자주식회사 화상 처리 장치, 방법, 및 상기 방법을 수행하는 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 매체
US8928782B2 (en) 2012-10-23 2015-01-06 Fujitsu Semiconductor Limited Image processing device and image capture device
US10726528B2 (en) 2016-12-27 2020-07-28 Kabushiki Kaisha Toshiba Image processing apparatus and image processing method for image picked up by two cameras

Also Published As

Publication number Publication date
US8350927B2 (en) 2013-01-08
US20080174822A1 (en) 2008-07-24
JP4702233B2 (ja) 2011-06-15

Similar Documents

Publication Publication Date Title
JP4702233B2 (ja) 画像データ処理装置および画像データ処理方法
JP4340915B2 (ja) 撮像画像信号の歪み補正方法、撮像画像信号の歪み補正装置、撮像方法および撮像装置
JP4310645B2 (ja) 撮像画像信号の歪み補正方法および撮像画像信号の歪み補正装置
US8009337B2 (en) Image display apparatus, method, and program
JP4389779B2 (ja) 撮像画像信号の歪み補正方法および撮像画像信号の歪み補正装置
EP2063646A2 (en) Method and apparatus for predictive coding
JP2007215114A (ja) 撮像画像の歪み補正方法、撮像画像の歪み補正装置および撮像装置
JP4390068B2 (ja) 撮像画像信号の歪み補正方法および撮像画像信号の歪み補正装置
KR101128167B1 (ko) 화상 표시 장치
US8928782B2 (en) Image processing device and image capture device
JP4406711B2 (ja) 画像データ処理方法および画像データ処理装置
US8269859B2 (en) Photographing apparatus that performs distortion correction in association with digital and optical zoom, method of controlling the same, and recording medium having recorded thereon computer program to implement the method
JP4403409B2 (ja) 画像データ処理方法および画像データ処理装置
US20100135644A1 (en) Photographing apparatus and method of controlling the same
JP5959194B2 (ja) 撮像装置
JP4453559B2 (ja) 画像データ処理方法および画像データ処理装置
JP2006279144A (ja) 歪補正装置
CN107615742B (zh) 显示控制装置和摄像装置
WO2018134882A1 (ja) メモリアクセス装置、画像処理装置、および撮像装置
KR20110048250A (ko) 디지털 영상 신호 처리 장치 및 방법
JP4888306B2 (ja) 画像処理装置および画像処理方法
JP2009065323A (ja) 画像処理装置、画像処理方法、撮像装置および撮像方法
JP2005020521A (ja) 撮像装置及びこの撮像装置を備える携帯型電話機
JP2009253671A (ja) 画像処理装置および画像処理方法
JP2011244305A (ja) 撮像装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090224

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090807

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20091005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110126

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110221

LAPS Cancellation because of no payment of annual fees