IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧 ▶ 東芝デバイス&ストレージ株式会社の特許一覧

<>
  • 特許-画像処理装置及び画像処理方法 図1
  • 特許-画像処理装置及び画像処理方法 図2
  • 特許-画像処理装置及び画像処理方法 図3
  • 特許-画像処理装置及び画像処理方法 図4
  • 特許-画像処理装置及び画像処理方法 図5
  • 特許-画像処理装置及び画像処理方法 図6
  • 特許-画像処理装置及び画像処理方法 図7
  • 特許-画像処理装置及び画像処理方法 図8
  • 特許-画像処理装置及び画像処理方法 図9
  • 特許-画像処理装置及び画像処理方法 図10
  • 特許-画像処理装置及び画像処理方法 図11
  • 特許-画像処理装置及び画像処理方法 図12
  • 特許-画像処理装置及び画像処理方法 図13
  • 特許-画像処理装置及び画像処理方法 図14
  • 特許-画像処理装置及び画像処理方法 図15
  • 特許-画像処理装置及び画像処理方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-15
(45)【発行日】2023-12-25
(54)【発明の名称】画像処理装置及び画像処理方法
(51)【国際特許分類】
   G06T 1/20 20060101AFI20231218BHJP
   H04N 23/60 20230101ALI20231218BHJP
【FI】
G06T1/20 C
H04N23/60 500
【請求項の数】 6
(21)【出願番号】P 2020153260
(22)【出願日】2020-09-11
(65)【公開番号】P2022047375
(43)【公開日】2022-03-24
【審査請求日】2022-06-23
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110002907
【氏名又は名称】弁理士法人イトーシン国際特許事務所
(72)【発明者】
【氏名】羽田 隆二
(72)【発明者】
【氏名】増田 篤司
【審査官】中田 剛史
(56)【参考文献】
【文献】特開2019-160063(JP,A)
【文献】特開2000-287174(JP,A)
【文献】特開2008-299871(JP,A)
【文献】特開2006-148327(JP,A)
【文献】特開2011-085539(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/20
H04N 5/232
H04N 23/60
(57)【特許請求の範囲】
【請求項1】
複数の撮像部により生成された複数の画像を、1ライン毎に入力する画像を切り替えて、1ライン毎に入力する入力コントローラと、
前記複数の撮像部からの入力をバッファリングする入力バッファ回路と、
前記入力コントローラから1ライン毎に切り替えて入力される前記複数の画像をパイプライン処理で画像処理する画像処理回路と、
前記画像処理回路により画像処理された前記複数の画像を、一の画像内における画素位置が連続する画素の集合であるブロック単位でバッファリングする出力バッファ回路と、
前記ブロックに、前記ブロックに含まれる特定画素のアドレスと、前記ブロックを含む画像を生成した撮像部の識別IDと、を含むタグ情報を付すバッファコントローラと、
を備え
前記バッファコントローラは、前記出力バッファ回路の使用率を監視して、前記出力バッファ回路のオーバフローが予測される場合に指示信号を前記入力コントローラへ出力し、
前記入力コントローラは、前記指示信号に応じて、前記入力バッファ回路に前記複数の撮像部からの入力をバッファリングさせ、遅延して前記画像処理回路へ出力するように制御する画像処理装置。
【請求項2】
前記画像処理回路は、一の画像内における複数の着目領域の処理を行う領域処理回路を備え、
前記バッファコントローラは、着目領域を識別するための領域IDをさらに含むタグ情報を前記ブロックに付す請求項1に記載の画像処理装置。
【請求項3】
前記画像処理回路は、前記複数の画像の歪みを補正する歪補正回路を含む請求項1に記載の画像処理装置。
【請求項4】
前記画像処理回路は、前記複数の撮像部から入力されるRAW画像をデモザイキング処理してRGB画像を生成する前処理回路を、前記歪補正回路の前段にさらに含み、
前記入力バッファ回路は、前記前処理回路よりも前段側に設けられている請求項3に記載の画像処理装置。
【請求項5】
前記出力バッファ回路は、2段以上に階層化された複数の出力バッファを含み、ある段の出力バッファに記憶したブロック内の全ての画素が揃ってから、次の段の出力バッファに転送することを順次行い、最終段の出力バッファを含む1段以上の出力バッファの全ての画素が揃った複数のブロックを連結して伝送ブロックを生成し、
前記バッファコントローラは、前記伝送ブロックに含まれる特定画素のアドレスと、前記識別IDと、を含むタグ情報を付して、前記出力バッファ回路に前記伝送ブロックを出力させる請求項1に記載の画像処理装置。
【請求項6】
複数の撮像部により生成された複数の画像を、1ライン毎に入力する画像を切り替えて、1ライン毎に入力し、
前記複数の撮像部からの入力を入力バッファ回路にバッファリングし、
1ライン毎に切り替えて入力される前記複数の画像をパイプライン処理で画像処理回路により画像処理し、
前記画像処理回路により画像処理された前記複数の画像を、一の画像内における画素位置が連続する画素の集合であるブロック単位で出力バッファ回路にバッファリングし、
前記ブロックに、前記ブロックに含まれる特定画素のアドレスと、前記ブロックを含む画像を生成した撮像部の識別IDと、を含むタグ情報を付し、
前記出力バッファ回路の使用率を監視して、前記出力バッファ回路のオーバフローが予測される場合に指示信号を出力し、
前記指示信号に応じて、前記入力バッファ回路に前記複数の撮像部からの入力をバッファリングさせ、遅延して前記画像処理回路へ出力するように制御する画像処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、画像処理装置及び画像処理方法に関する。
【背景技術】
【0002】
一般的に、デジタルカメラ等の撮像装置で被写体を撮像して得られた画像は、撮像レンズ等の光学系が有する歪曲収差や倍率色収差の影響を受ける。例えば、撮像装置によって取得した画像を、自動車の衝突防止、または監視カメラに利用する場合等においては、広い範囲を見ることができるように超広角レンズが採用されることがある。超広角レンズは、より狭い画角のレンズに比べて、歪曲収差や倍率色収差が大きくなる傾向にある。
【0003】
歪曲収差や倍率色収差を抑制する光学系も知られているが、こうした光学系はコストが高いために、近年では、画像処理により収差を補正する技術が用いられるようになってきている。
【0004】
画像処理回路による画像処理をDRAM経由で行うと、フレーム遅延、DRAMバンド幅によるデータ転送速度の制限、消費電力の増加などが生じる。そこで、パイプライン処理により画素を処理して出力バッファ回路に蓄積し、出力バッファ回路からDRAMへ転送する構成が採用されている。
【0005】
ところで、近年の車載カメラ等では、例えば図16に示すように、前方を広角で撮影する4kカメラFWC、前方を狭角で撮影する2kカメラFC、右側方を広角で撮影する4kカメラRC、左側方を広角で撮影する4kカメラLC、後方を広角で撮影する4kカメラBWC、後方を狭角で撮影する2kカメラBCなど、画角や画素数が異なる複数種類の撮像部が組み合わされることがある。図16は車載カメラの配置例を示す図である。
【0006】
従来は、複数の撮像部に1対1に対応して複数の画像処理回路が設けられ、画像処理回路により処理された画素を蓄積する出力バッファ回路が、複数の画像処理回路に1対1に対応して複数設けられていた。
【0007】
近年、画像処理回路の処理能力が向上し、複数の撮像部からの画像を1つの画像処理回路で時分割して処理できるようになってきている。1つの画像処理回路で時分割して処理された複数の撮像部からの複数の画像は、複数の撮像部に1対1に対応して設けた複数の出力バッファ回路にそれぞれ記憶される。
【0008】
しかし、上述したような種類が異なる複数の撮像部を組み合わせて、複数の画像を1つの画像処理回路で時分割して処理する場合、画像によって出力バッファ回路の使用量ピークとなるライン位置が異なる。このために、複数の画像を複数の出力バッファ回路にそれぞれ記憶すると、複数の出力バッファ回路の全体として、バッファ利用効率が下がることがある。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2003-158659号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
そこで、実施形態は、複数の撮像部からの画像を1つの画像処理回路で処理して出力バッファ回路に蓄積する場合に、バッファ利用効率を向上してバッファ容量を削減することができる画像処理装置及び画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
実施形態の画像処理装置は、複数の撮像部により生成された複数の画像を、1ライン毎に入力する画像を切り替えて、1ライン毎に入力する入力コントローラと、前記複数の撮像部からの入力をバッファリングする入力バッファ回路と、前記入力コントローラから1ライン毎に切り替えて入力される前記複数の画像をパイプライン処理で画像処理する画像処理回路と、前記画像処理回路により画像処理された前記複数の画像を、一の画像内における画素位置が連続する画素の集合であるブロック単位でバッファリングする出力バッファ回路と、前記ブロックに、前記ブロックに含まれる特定画素のアドレスと、前記ブロックを含む画像を生成した撮像部の識別IDと、を含むタグ情報を付すバッファコントローラと、を備え、前記バッファコントローラは、前記出力バッファ回路の使用率を監視して、前記出力バッファ回路のオーバフローが予測される場合に指示信号を前記入力コントローラへ出力し、前記入力コントローラは、前記指示信号に応じて、前記入力バッファ回路に前記複数の撮像部からの入力をバッファリングさせ、遅延して前記画像処理回路へ出力するように制御する
【図面の簡単な説明】
【0012】
図1】第1の実施形態に係わる画像処理システムの構成を示すブロック図である。
図2】第1の実施形態に係わる歪補正回路の構成の一例を示すブロック図である。
図3】第1の実施形態に係わる歪補正回路の読み出し画素と書き込み画素の対応関係を示す図表である。
図4】第1の実施形態に係わる画像補正処理を示すフローチャートである。
図5】第1の実施形態に係わる出力バッファ回路を説明するためのブロック図である。
図6】第1の実施形態に係わり、多層化されていない場合の出力バッファの書き込み及び読み出しを説明するための図である。
図7】第1の実施形態に係わり、多層化されている場合の出力バッファの書き込み及び読み出しを説明するための図である。
図8】第1の実施形態に係わる出力バッファの、撮像部に応じた使用量の変化の一例を示すグラフである。
図9】第1の実施形態に係わり、出力バッファ内のサブブロックに付すタグ情報の例を示す図である。
図10】第1の実施形態に係わり、バッファコントローラがオーバフローを監視して行う処理を示すフローチャートである。
図11】第1の実施形態に係わり、図1中のある段の出力バッファの動作を説明するための説明図である。
図12】第1の実施形態に係わり、図1中の次の段の出力バッファの動作を説明するための説明図である。
図13】第1の実施形態に係わり、出力バッファ回路の実装例を説明するための図である。
図14】第2の実施形態に係わる画像処理システムの構成を、一部を省略して示すブロック図である。
図15】第1の実施形態に係わり、出力バッファ内のサブブロックに付すタグ情報の例を示す図である。
図16】車載カメラの配置例を示す図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して実施形態を説明する。
【0014】
(第1の実施形態)
図1は第1の実施形態に係わる画像処理システムの構成を示すブロック図である。本実施の形態は歪補正処理においてラインバッファ容量を低減するラスタスキャン入力・ランダム出力を採用する。本実施の形態はこのラスタスキャン入力・ランダム出力の歪補正に際して、出力バッファ回路を多層化することにより、バッファサイズ(容量)の低減及び伝送効率の向上を可能にする。また、本実施形態は、複数の撮像部から入力される複数の画像に対して、時分割で歪補正処理を含む画像処理を行い、画像処理後の複数の画像を出力バッファ回路に格納することで、さらにバッファサイズ(容量)の低減を可能とするものである。
【0015】
(構成)
図1の画像処理システムは、CPU25を備えている。CPU25は図示しないメモリに記憶されたプログラムに従い動作して各部を制御するようになっている。撮像部22は、撮像部[0]22aと、撮像部[1]22bと、を備えている(なお、撮像部を区別するための[0],[1]は、省略しても混乱が生じない場合に、適宜省略する)。図1では撮像部22が2つの撮像部22a,22bを備える例を示すが、画像処理装置21が処理可能であれば、より一般に任意の複数の撮像部を備えていても構わない。
【0016】
撮像部22a、及び撮像部22bは、図示しない光学系と、CMOSセンサ等の図示しない撮像素子と、をそれぞれ備えている。撮像素子は、行(ライン)方向および列方向に配列された複数の画素と、例えば原色ベイヤー配列のカラーフィルタを備え、光学系を介して入射した光学像を光電変換して、複数の画素で構成される撮像信号(RAW画像)を取得する。ここで、撮像部22aにより取得された画像、及び撮像部22bにより取得された画像は、光学系の歪曲収差等による歪みを有している。
【0017】
撮像部22の出力(RAW画像)は画像処理装置21に入力され、画像処理装置21により画像処理が行われる。画像処理装置21は、入力コントローラ4と、FIFO5と、前処理回路2と、歪補正回路1と、出力バッファ回路3と、を備えている。
【0018】
入力コントローラ4は、複数の撮像部22a,22bにより生成された複数の画像を、1ライン毎に入力する画像を切り替えて、1ライン毎に入力する。すなわち、入力コントローラ4は、撮像部22aにより生成された第1の画像から1ラインの画素を入力したら、次は撮像部22bにより生成された第2の画像から1ラインの画素を入力し、その次は撮像部22aにより生成された第1の画像から1ラインの画素を入力する、等を行う。
【0019】
入力コントローラ4には、FIFO(First In First Out)5が接続されている。FIFO5は、複数の撮像部22a,22bからの入力をバッファリングする入力バッファ回路である。入力コントローラ4は、後述する待機信号(readyフラグが0のready[0]信号)(指示信号)を受信すると、撮像部22から入力される画素をFIFO5に蓄積し、準備完了信号(readyフラグが1のready[1]信号)を受信すると、FIFO5に蓄積した画素を読み出して前処理回路2へ出力する。
【0020】
ここで、撮像部22からラスタスキャン順で1ライン毎に入力される画素は、撮像部22a,22bの何れから出力された画素であるかに応じて、撮像部22aから出力されたラインであることを示すタグ情報、または撮像部22から出力されたラインであることを示すタグ情報が付されている。そこで、入力コントローラ4は、タグに応じてFIFO5の入出力を区別することで、撮像部[0]22a用のFIFO[0]5aと、撮像部[1]22b用のFIFO[1]5bと、の2つが設けられているのと同様の処理を行う。
【0021】
前処理回路2及び歪補正回路1は、入力コントローラ4から1ライン毎に切り替えて入力される複数の画像を、パイプライン処理で画像処理する画像処理回路である。前処理回路2は歪補正回路1よりも前段に設けられ、1画素がRGBの内の何れか1色成分で構成されるRAW画像をデモザイキング処理して、1画素にRGBの3色成分が存在するRGB画像に変換する。また、前処理回路2は、必要に応じて、ガンマ変換等の処理を行っても構わない。
【0022】
なお、RAW画像は、例えば1画素が14ビットのデータで構成されている。これに対してRGB画像は、1画素が8×3=24ビット、または16×3=48ビットのデータで構成され、デモザイキング処理によりデータ量が増大する。このために、入力バッファ回路であるFIFO5を前処理回路2よりも前段側に設けてRAW画像の画素を記憶するように構成することで、バッファ容量の低減を図っている。
【0023】
歪補正回路1は、前処理回路2から出力される複数の画像の歪みを時分割で補正した後に、出力バッファ回路3へ出力する。具体的に、歪補正回路1は、入力コントローラ4および前処理回路2を経由して、撮像部22aからラスタスキャン順で入力された画像に歪補正及び倍率色収差補正を行うことと、撮像部22bからラスタスキャン順で入力された画像に歪補正及び倍率色収差補正を行うこととを、時分割で実施する。歪補正回路1による歪曲収差等の補正処理については、後でより詳しく説明する。
【0024】
出力バッファ回路3は、画像処理回路(前処理回路2、歪補正回路1)により画像処理された複数の画像を、一の画像内における画素位置が連続する画素の集合であるブロック単位でバッファリングする。そして、出力バッファ回路3は、全ての画素が揃った複数のブロック(具体的には、後述するサブブロック)を連結して、伝送ブロックとして出力する。
【0025】
ここで、出力バッファ回路3は、バッファコントローラ31(図5参照)を含む。そして、バッファコントローラ31は、ブロック(サブブロックまたは伝送ブロック)に、前記ブロックに含まれる特定画素(ブロック内の、例えば先頭画素)のアドレス(address)と、前記ブロックを含む画像を生成した撮像部22a,22bの識別IDであるカメラID(camID)と、を含むタグ情報を付す。従って、画素位置が連続する複数画素の集合である伝送ブロックは、例えば先頭画素のアドレスに基づいて、いわゆるバースト転送によってRAMへ高速に転送される。
【0026】
画像処理装置21の出力バッファ回路3から出力される伝送ブロックは、バス23を介してDRAM24へ転送され記憶される。DRAM24は、CPU25の制御により、カメラIDが撮像部[0]22aからの画像であることを示す場合には記憶領域であるメモリ[0]24aに伝送ブロックを記憶し、カメラIDが撮像部[1]22bからの画像であることを示す場合には記憶領域であるメモリ[1]24bに伝送ブロックを記憶する。また、メモリ[0]24a及びメモリ[1]24b内における記憶アドレスは、タグ情報のアドレスに基づきCPU25により制御される。
【0027】
次に、図2図4を参照して、本実施の形態において採用するラスタスキャン入力・ランダム出力の歪補正処理を具体的に説明する。
【0028】
図2は、図1中の歪補正回路1の構成の一例を示すブロック図である。
【0029】
図2において、歪補正回路1は、ラインバッファ11と、書き込み画素位置計算部12と、読み出し画素位置計算部13と、書き込み画素位置判定部14と、パラメータ格納部15と、画素補間部16と、を備えている。
【0030】
ラインバッファ11は、前処理回路2からラスタスキャン順に読み込まれる入力画像の画素(入力画素)を、補正処理に必要なライン数だけ保持する。例えば、バイリニア補間を用いて歪曲収差の補正を行う場合、1~2ライン分の画素を保持する。
【0031】
書き込み画素位置計算部12は、書き込み画素領域を算出する。書き込み画素領域は、補正対象である読み出し画素Piを用いて補間した画素が含まれると推定される領域である。具体的には、読み出し画素Piの位置(vo, ho)(以下、画素Pi(vo, ho)と示す)を含む、周囲4点の画素{Pi0(vo, ho)、Pi1(vo, ho-1)、Pi2(vo-1, ho-1)、Pi3(vo-1, ho)}からなる読み出し画素位置集合を定義する。図3は歪補正回路1の読み出し画素と書き込み画素の対応関係を示す図表である。なお、本説明において、画素位置座標(v, h)は、画像左上を原点(0, 0)として、vを垂直画素位置、hを水平画素位置としている。
【0032】
読み出し画素Pi0、Pi1、Pi2、Pi3のそれぞれについて、画素位置計算の関数を用い、対応する書き込み画素Po0、Po1、Po2、Po3の位置(vo’, ho’)、(vo’, ho-1’)、(vo-1’, ho-1’)、(vo-1’, ho’)を算出する。4点の画素Po0(vo’, ho’)、Po1(vo’, ho-1’)、Po2(vo-1’, ho-1’)、Po3(vo-1’, ho’)を頂点とする矩形領域が、書き込み画素領域となる。
【0033】
画素位置計算には、例えば、多項式で表現される関数や、グリッドテーブル変換など、一般的な画素位置計算用の関数を用いることができる。ただし、画素位置計算関数は、逆関数が存在するものを用いる。
【0034】
読み出し画素位置計算部13は、書き込み画素領域内において、垂直位置、水平位置ともに整数となる画素の位置(書き込み画素候補Poc(v’, h’))を抽出する。そして、書き込み画素候補Poc(v’, h’)に対応する読み出し画素Pi(v”, h”)を、画素位置計算を行って算出する。なお、画素位置計算は、書き込み画素位置計算部12で行った画素位置計算の逆関数を用いて行う。候補が複数ある場合は、全ての候補Poc(v’, h’)に対して読み出し画素Pi(v”, h”)を算出する。
【0035】
書き込み画素位置判定部14は、読み出し画素Pi(v”, h”)が読み出し画素位置集合に含まれている場合、当該画素Pi(v”, h”)に対する書き込み画素候補Poc(v’, h’)を、補正画素位置の書き込み画素Po(v’, h’)として確定する。
【0036】
パラメータ格納部15は、書き込み画素位置計算部12及び読み出し画素位置計算部13における画素位置計算関数に用いるパラメータが格納されている。
【0037】
画素補間部16は、確定した書き込み画素Po(v’, h’)に対応する読み出し画素Pi(v”, h”)の画素値を算出する。通常、読み出し画素Pi(v”, h”)の座標は非整数であるので、例えば周辺の4画素を用いたバイリニア補間など、既存の補間手法を用いて画素値を算出する。算出した読み出し画素Pi(v”, h”)の画素値を、書き込み画素Po(v’, h’)の画素値として出力する。出力された画素値は、出力バッファ回路3に格納される。なお、出力画素は補正を行った順に出力するため、出力画素の位置(補正画素位置)はランダムとなる。
【0038】
次に、歪補正回路1における画像補正処理の手順を説明する。図4は画像補正処理を示すフローチャートである。
【0039】
まず、ラスタスキャン順に歪補正回路1に入力された画素を、画素補間部16での処理に必要なライン数分、ラインバッファ11に格納する(ステップS1)。例えば、バイリニア補間を用いる場合、補間対象画素の周辺2×2画素(4画素)の画素値が必要となるため、少なくとも1ライン+1画素分の画素値を格納する。
【0040】
次に、補正対象画素である読み出し画素Pi(vo, ho)を特定し、読み出し画素Piを用いて補間した画素が含まれると推定される、書き込み画素領域を算出する(ステップS2)。具体的には、まず、読み出し画素Pi(vo, ho)を含む周囲4点の画素{Pi0(vo, ho)、Pi1(vo, ho-1)、Pi2(vo-1, ho-1)、Pi3(vo-1, ho)}からなる読み出し画素位置集合を定義する。すなわち、Pi1(vo, ho-1)は、Pi(vo, ho)の左隣の画素、Pi2(vo-1, ho-1)はPi(vo, ho)の左上の画素、Pi3(vo-1, ho)はPi(vo, ho)の上の画素である。次に、画素Pi0、Pi1、Pi2、Pi3のそれぞれについて、画素位置計算を行い、対応する書き込み画素Po0(vo’, ho’)、Po1(vo’, ho-1’)、Po2(vo-1’, ho-1’)、Po3(vo-1’, ho’)を算出する。
【0041】
画素位置計算は、例えば、多項式で表現される関数を用いる場合、次の手順で行う。
(a)像高の算出:入力画素の位置を、左上を原点とする(v, h)の座標系から、光学中心を原点とする(x, y)の座標系に変換する。なお、両座標系とも、水平方向は右側を正とし、垂直方向は下側を正とする。また、光学中心から入力画素までの距離(像高)rを算出する。以下に示す(1)~(3)式を用いて行う。
【0042】
(1)式において、vin は、垂直方向の入力画素位置(非負数)、[SENSOR_CROP_OFS_V]は、光学中心からの垂直画素位置オフセット(光学中心と、(v, h)座標系の原点との間の、垂直方向のオフセット)とする。また、(2)式において、hinは、水平方向の入力画素位置(非負数)、[SENSOR_CROP_OFS_H]は、光学中心からの水平画素位置オフセット(光学中心と、(v, h)座標系の原点との間の、水平方向のオフセット)とする。また、(3)式において、[NORM_SCALE]は正規化係数(非負数)とする。
【0043】
なお、画像中心と光学中心とが一致する場合、[SENSOR_CROP_OFS_V]、[SENSOR_CROP_OFS_H]は、以下の(4)(5)式となる。
[SENSOR_CROP_OFS_V] = -(入力画像垂直サイズ/2 - 0.5) …(4)式
[SENSOR_CROP_OFS_ H] = -(入力画像水平サイズ/2 - 0.5) …(5)式
【0044】
(b)画素位置計算の像高スケールの算出:光学中心から距離rにある点が、画素位置変換によって光学中心方向に移動する距離r_scaleを算出する。以下に示す(6)式を用いて行う。
r_scale = P0 + P1*r + P2 * r2 + P3*r3 + P4*r4 + P5*r5 + P6*r6 + P7*r7 + P8*r8 + P9*r9 + P10*r10 …(6)式
(6)式において、Px(x = 0~10 )は、それぞれの次数に応じた多項式係数とする。
【0045】
(c)出力画素位置の算出:像高スケールを用いて入力画素位置を出力画素位置に変換し、(v, h)の座標系に戻す。以下に示す(7)(8)式を用いて行う。
vout = r_scale * y - [SENSOR_CROP_OFS_V] …(7)式
hout = r_scale*x - [SENSOR_CROP_OFS_ H] …(8)式
(7)式において、voutは垂直方向の出力画素位置(非負数)、(8)式において、houtは水平方向の出力画素位置(非負数)とする。
【0046】
すなわち、(a)から(c)の一連の手順により、読み出し画素Pi(vo, ho)、Pi1(vo, ho-1)、Pi2(vo-1, ho-1)、Pi3(vo-1, ho)が、それぞれ、書き込み画素Po0(vo’, ho’) 、Po1(vo’, ho-1’)、Po2(vo-1’, ho-1’)、Po3(vo-1’, ho’)に変換される。
【0047】
なお、画素位置計算として、上述のような多項式で表現される関数を用いる場合、[SENSOR_CROP_OFS_V]、[SENSOR_CROP_OFS_H]、[NORM_SCALE]、Px(x = 0~10 )の各パラメータは予め設定されており、パラメータ格納部15に格納されているものとする。
【0048】
画素位置計算は、グリッドテーブル変換を用いて行うこともできる。グリッドテーブルとは、画素位置(v, h)をグリッドノードとした2次元のアドレステーブルである。各グリッドノードには、変換先の画素位置が格納されている。グリッドノードの間に位置する任意の画素位置に対応するアドレスは、近傍グリッドノードから補間することで算出する。画素位置計算としてグリッドテーブル変換を用いる場合、次の手順で行う。
【0049】
(d)参照グリッドノードの算出:参照グリッドノードとして、入力画素の左上に位置するグリッドノードを決定する。以下に示す(9)(10)式を用いて行う。
ref_v = vin * GRID_PATCH_VSIZE_INV …(9)式
ref_h = hin * GRID_PATCH_HSIZE_INV …(10)式
【0050】
(9)式において、vin は、垂直方向の入力画素位置(非負数)、GRID_PATCH_VSIZE_INVは、垂直グリッドノード間距離の逆数とする。GRID_PATCH_VSIZE_INVは、以下の(11)式を用いて算出する。
(11)式において、[SENSOR_CROP_VSIZE]は、入力画像垂直サイズ、[GRID_NODE_NUM_V]は、垂直グリッドノード数とする。
【0051】
また、(10)式において、hinは、水平方向の入力画素位置(非負数)、GRID_PATCH_HSIZE_INVは、水平グリッドノード間距離の逆数とする。GRID_PATCH_HSIZE_INVは、以下の(12)式を用いて算出する。
(12)式において、[SENSOR_CROP_HSIZE]は、入力画像水平サイズ、[GRID_NODE_NUM_H]は、水平グリッドノード数とする。
【0052】
(e)重みの算出:入力画素位置から参照グリッドノードを含む周囲4点のグリッドノードに対する、垂直方向及び水平方向の距離の比に基づく重みを算出する。以下に示す(13)(14)式を用いて算出する。
weight_v = ref_v - [ref_v] …(13)式
weight_h = ref_h - [ref_h] …(14)式
(13)(14)式において、[]はガウス記号を表す。参照グリッドノードに関する垂直方向の重みは1-weight_vとなる。また、参照グリッドノードに関する水平方向の重みは、1-weight_hとなる。
【0053】
(f)出力画素位置の算出:参照グリッドノードを含む周囲4点のグリッドノードのテーブルと、入力画素位置に対する各グリッドノードの重みを用い、バイリニア補間によって、出力画素位置を算出する。
【0054】
(f-1)垂直方向の出力画素位置の算出
以下に示す(15)~(17)式を用いて算出する。
v0out = table_v(ref_v, ref_h) * (1-weight_h) + table_v(ref_v, ref_h+1) * weight_h …(15)式
v1out = table_v(ref_v+1, ref_h) * (1-weight_h) + table_v(ref_v+1, ref_h+1) * weight_h …(16)式
vout = v0out * (1-weight_v) + v1out * weight_v …(17)式
(15)(16)式において、table_v(v, h)は、垂直画素位置グリッドテーブルとする。また、(17)式において、voutは、は垂直方向の出力画素位置(非負数)である。
【0055】
(f-2)水平方向の出力画素位置の算出
以下に示す(18)~(20)式を用いて算出する。
h0out = table_ h (ref_v, ref_h) * (1-weight_h) + table_ h (ref_v, ref_h+1) * weight_h …(18)式
h1out = table_h(ref_v+1, ref_h) * (1-weight_h) + table_h(ref_v+1, ref_h+1) * weight_h …(19)式
hout = h0out * (1-weight_h) + h1out * weight_v …(20)式
(18)(19)式において、table_h(v, h)は、水平画素位置グリッドテーブルとする。また、(20)式において、houtは、は水平方向の出力画素位置(非負数)である。
【0056】
すなわち、(d)から(f)の一連の手順により、読み出し画素Pi(vo, ho)、Pi1(vo, ho-1)、Pi2(vo-1, ho-1)、Pi3(vo-1, ho)が、それぞれ、書き込み画素Po0(vo’, ho’) 、Po1(vo’, ho-1’)、Po2(vo-1’, ho-1’)、Po3(vo-1’, ho’)に変換される。
【0057】
なお、画素位置計算として、上述のようなグリッドテーブル変換を用いる場合、[SENSOR_CROP_VSIZE]、[GRID_NODE_NUM_V]、[SENSOR_CROP_HSIZE]、[GRID_NODE_NUM_H]、table_v(v, h)、table_h(v, h)の各パラメータは予め設定されており、パラメータ格納部15に格納されているものとする。
【0058】
画素位置計算により算出された、4点の画素Po0(vo’, ho’) 、Po1(vo’, ho-1’)、Po2(vo-1’, ho-1’)、Po3(vo-1’, ho’)を頂点とする矩形領域が、書き込み画素領域として特定される。
【0059】
次に、上記特定された矩形領域内において、垂直座標、及び、水平座標が共に整数となる画素位置(書き込み画素候補Poc(v’, h’))を抽出する。例えば、画素Po0(vo’, ho’) 、Po1(vo’, ho-1’)、Po2(vo-1’, ho-1’)、Po3(vo-1’, ho’)の各座標を、繰り上げ・繰り下げにより調整・整数化し、得られた画素位置に外接する矩形領域内の全ての画素位置を、書き込み画素候補Poc(v’, h’)とする(ステップS3)。
【0060】
繰り上げ・繰り下げによる調整・整数化は、以下に示す(21)(22)式を用いて行う。なお、4点の内、左側または上側に位置する画素については、(21)式を用い、右側または下側に位置する画素については、(22)式を用いる。
調整後画素位置 = [書き込み画素位置 - WRITE_AREA_DELTA] …(21)式
調整後画素位置 = [書き込み画素位置 + WRITE_AREA_DELTA] …(22)式
(21)(22)式において、WRITE_AREA_DELTAは整数化調整値であり、予め設定された値である。また、[]はガウス記号を表す。
【0061】
続いて、ステップS3で求めた全ての書き込み画素候補Poc(v’, h’)に対し、書き込み画素Po(v’, h’)であるか否かの判定を行う。判定をまだ行っていない書き込み画素候補Poc(v’, h’)がある場合(ステップS4、No)、画素位置計算により、対応する読み出し画素Pi(v”, h”)を算出する(ステップS5)。画素位置計算は、ステップS2で用いた画素位置計算の逆関数を用いて行う。このとき、Pi(v”, h”)の垂直座標、水平座標は、一般に非整数となる。
【0062】
次に、Pi(v”, h”)の画素値を補間によって算出するために必要な画素を特定する。例えば、バイリニア補間によって画素値を算出する場合、Pi(v”, h”)の周囲4点の画素が補間に必要な画素となる。補間に必要な全ての画素が、読み出し画素位置集合に含まれている場合、当該読み出し画素Pi(v”, h”)に対応する書き込み画素候補Poc(v’, h’)を、書き込み画素Po(v’, h’)と確定する(ステップS6、Yes)。
【0063】
この場合、確定した書き込み画素Po(v’, h’)の画素値を、対応する読み出し画素Pi(v”, h”)の画素値を画素補間によって算出して出力する(ステップS7)。なお、出力画素Po(v’, h’)は、ラスタスキャン順でなくランダムとなる。続いてステップS4に戻り、未判定の書き込み画素候補Poc(v’, h’)の有無を調べる。
【0064】
一方、補間に必要な画素の内、読み出し画素位置集合に含まれていない画素が存在する場合、当該読み出し画素Pi(v”, h”)に対応する書き込み画素候補Poc(v’, h’)は、書き込み画素Po(v’, h’)でないと確定する(ステップS6、No)。この場合、画素補間は行わずに、ステップS4に戻って、未判定の書き込み画素候補Poc(v’, h’)の有無を調べる。
【0065】
ステップS4において、ステップS3で求めた全ての書き込み画素候補Poc(v’, h’)について、判定が行われている場合、画像補正処理の一連の手順を終了する。
【0066】
このように、本実施の形態の歪補正回路1による歪補正処理では、前処理回路2からラスタスキャン順に読み込まれる入力画素を、この順に補正処理を行う。従って、補正に必要な入力画素の範囲を1乃至数ライン程度で抑えることができるため、入力画素を格納するラインバッファ11の搭載量を低減することができ、製造コストを抑制することができる。
【0067】
なお、ラインバッファ11の搭載量は、画素補間の手法に応じて設定される。例えば、バイリニア法を用いる場合、2ライン程度搭載すればよいが、バイキュービック法を用いる場合、4ライン程度搭載する必要がある。
【0068】
また、読み出し画素から書き込み画素を算出する画素位置計算の方法は、上述の方法に限定されない。すなわち、逆関数が存在する方法であれば、任意の方法を用いることができる。また、複数の画素位置計算方法を組み合わせて用いてもよい。
【0069】
(出力バッファの多層化)
歪補正回路1から出力される各画素は、出力バッファ回路3へ入力される。出力バッファ回路3は、入力された画像を一時的に保持した後、バス23を介してDRAM24に出力する。こうして、DRAM24には、歪補正された画像が記憶される。
【0070】
ところで、一般的に、DRAMへの転送は、伝送効率を考慮して、所定の伝送単位で行われる。このとき、歪補正処理をもしラスタスキャン入力・ラスタスキャン出力で行う場合には、出力バッファにラスタスキャン順の画素を順次蓄積し、例えば1ライン分の画素が蓄積される毎に、DRAMへの転送を行えばよい。
【0071】
これに対し、歪補正処理をラスタスキャン入力・ランダム出力で行う場合には、出力がランダムとなることから、例えば、伝送単位の出力バッファを複数用意して、各バッファにラスタスキャン順の画素が蓄積される毎に、DRAMへ転送することになる。この場合、DRAMへの転送は、伝送単位の出力バッファ内に、画素が全てラスタスキャン順に蓄積されてからとなる。
【0072】
しかし、ランダム出力では、出力バッファの連続したアドレスに順次画素が書き込まれるとは限らないので、出力バッファの利用効率が低下する。DRAM転送の伝送効率を考慮すると、所定の伝送単位はある程度の大きさを確保する必要があるのに対して、ランダム出力での出力バッファの利用効率を考慮すると、所定の伝送単位を小さくする方が好ましくなってしまう。
【0073】
そこで、本実施の形態においては、レンズ歪みの特性に応じて出力バッファを多層化することで、出力バッファの利用効率の向上と、DRAM転送の伝送効率の向上との両立を図りながら、出力バッファ全体のサイズ低減を行っている。
【0074】
図5図1中の出力バッファ回路3を説明するためのブロック図である。図5の例は出力バッファを2段に多層化した例を示しているが、3段以上に多層化してもよい。
【0075】
図5において出力バッファ回路3は、バッファコントローラ31と、出力バッファ32,33と、を備えている。出力バッファ32は1段目の出力バッファであり、出力バッファ33は2段目の出力バッファである。バッファコントローラ31は出力バッファ32,33の書き込み及び読み出しを制御する。
【0076】
出力バッファ32は、所定の容量の複数の領域E1を有しており、出力バッファ33は、所定の容量の複数の領域E2を有している。領域E1,E2の容量は独立して設定可能である。例えば、領域E1の容量と領域E2の容量との和の容量を伝送単位の容量に設定する。
【0077】
例えば、領域E1,E2の容量が何れも64バイトであるものとすると、1画素が16ビットデータの場合には各領域E1,E2にそれぞれ32画素が格納可能であり、1画素が8ビットデータの場合には各領域E1,E2にそれぞれ64画素が格納可能である。
【0078】
以下、領域E1又はE2にそれぞれ格納される補正画素位置が連続する一連の画素の集合をそれぞれサブブロックというものとし、2つの領域E1及びE2に格納された補正画素位置が連続した伝送単位の一連の画素の集合を伝送ブロックというものとする。なお、出力バッファが3段以上で構成される場合には、これらの3段以上の出力バッファに格納されている補正画素位置が連続した伝送単位の一連の画素の集合を伝送ブロックという。
【0079】
バッファコントローラ31は、歪補正回路1からランダムな順に出力される各画素を、出力バッファ32の複数の領域E1の内の何れかの領域E1にまず格納する。このとき、対象画素が、既に画素が格納された領域E1の何れかと同じ領域E1に格納すべき補正画素位置(アドレス)である場合に、その領域E1に格納する。また、対象画素が、既に画素が格納された領域E1の何れとも異なる領域E1に格納すべきアドレスである場合に、まだ画素が格納されていない領域E1の何れかに格納する。
【0080】
出力バッファ32の各領域E1には、最初に書き込まれる画素が含まれるサブブロック(ここでは、1段目の領域E1に格納されるサブブロック)における特定画素(例えば、サブブロック内の先頭画素)のアドレスを含むタグ情報(本実施の形態のタグ情報には上述したようにカメラIDも含まれるが、これについては後述する)が付与される。
【0081】
こうしてバッファコントローラ31は、補正画素位置(アドレス)が連続する画素を各領域E1の連続した記憶位置に書き込む。つまり、領域E1の容量が64バイトで、1画素が16ビットデータの場合には、各領域E1に補正画素位置(アドレス)が連続する32画素分の画素が格納される。例えば、伝送単位である伝送ブロックが64画素で構成される場合には、領域E1には伝送ブロックの半分の画素のサブブロックが格納可能である。
【0082】
バッファコントローラ31は、出力バッファ32のある領域E1の全記憶位置に画素が格納された状態になったか否かを判定する。以下、領域E1にサブブロックの全データが格納されたことを充填完了とも言い、バッファコントローラ31は、充填完了となった領域E1に格納されているサブブロックの画素を後段の出力バッファ33に転送する。
【0083】
出力バッファ33の各領域E2にも、最初に書き込まれる画素が含まれるサブブロック(ここでは、2段目の領域E2に格納されるサブブロック)における特定画素(例えば、サブブロック内の先頭画素)のアドレスを含むタグ情報が付与される。
【0084】
バッファコントローラ31は、補正画素位置(アドレス)が連続する画素を各領域E2の連続した記憶位置に書き込む。つまり、例えば、領域E2の容量が64バイトで、1画素が16ビットデータの場合には、各領域E2に補正画素位置が連続する32画素分の画素が格納される。1伝送ブロックが64画素で構成される場合には、領域E1,E2に格納されたアドレスが連続するサブブロック(一方のサブブロックの末尾の画素のアドレスが、他方のサブブロックの先頭の画素のアドレスと連続するサブブロック)同士を連結することで、伝送ブロックの画素が得られる。
【0085】
バッファコントローラ31は、出力バッファ33の領域E2毎に充填完了になったか否かを判定する。バッファコントローラ31は、領域E2が充填完了となった場合において、当該領域E2に格納された画素と、この画素に補正画素位置が連続する画素を格納する領域E1に格納された画素とで、伝送ブロックの全データが格納される(以下、この場合も充填完了という)状態になると、これらの領域E1,E2に格納されている全画素、すなわち、補正画素位置が連続する伝送単位の複数の画素(伝送ブロックの全画素)をバス23を介してDRAM24に転送して記憶させるようになっている。
【0086】
次に、図6及び図7を参照して本実施の形態における多層化された出力バッファ32,33によって出力バッファの利用効率を向上させることができる理由について説明する。図6は多層化されていない場合の出力バッファの書き込み及び読み出しを説明するための図、図7は多層化されている場合の出力バッファの書き込み及び読み出しを説明するための図である。
【0087】
説明を簡略化するために、前処理回路2からの画像が水平方向に16画素であり、DRAM24への伝送単位が4画素であるものとして、図6及び図7を説明する。図6及び図7は、撮像部22の光学系の収差等の影響により破線で示すようなたる型歪が生じた結果、本来の画像の第1ラインの各画素が図6及び図7の画素a1~a4,b1~b4,…,d1~d4の位置に移動した画像として歪補正回路1に入力された例を示している。撮像部22からの各画素はラスタスキャン順で歪補正回路1に入力され、入力された画素順で画像処理が行われて出力バッファへ出力される。
【0088】
図6は出力バッファが階層化されておらず伝送単位である4画素分の3つの領域D1~D3を有している例を示している。図6の例では、画素a1~a4,b1~b4,…,d1~d4の内、歪補正回路1に最初に入力される画素は画素d1である。この画素d1は出力バッファの例えば領域D3に格納される。第2ラインの左から3番目の画素a3及び画素a4が順次歪補正回路1に入力されて処理されると、処理後の画素a3,a4は領域D1の連続する位置に書き込まれる(ただし、領域D1のタグ情報に含まれるアドレスは、例えば、先頭画素a1のアドレスとなる)。次に、補正画素位置が連続する画素b1~b4が順次入力され、これらの補正画素位置が連続する画素b1~b4は、領域D2に順次格納される。領域D2が充填完了すると、領域D2に格納されている全ての画素が読み出されてDRAMに転送される。
【0089】
図6の太枠の画素まで処理が進んだ状態では、領域D2は充填完了後に転送されて空き状態となる一方、領域D1は第3ラインの左から1番目及び2番目の画素a1,a2の処理が行われるまで充填状態とはならず、また、領域D3は第3ラインの右から2番目の画素d4の処理が行われるまで充填状態とはならない。すなわち、出力バッファに空きがあるにもかかわらず、これらの空き領域は利用されず、利用効率が低い状態である。
【0090】
図7は出力バッファを2段に多層化した例を示しており、出力バッファ32に相当する領域E1a,E1bにより1段目出力バッファを構成し、出力バッファ33に相当する領域E2a,E2bにより2段目出力バッファを構成した例を示している。領域E1a,E1b,E2a,E2bは何れも2画素分の容量を有している。
【0091】
画素a1~a4,b1~b4,…,d1~d4の内、歪補正回路1に最初に入力される画素d1は、1段目出力バッファの例えば領域E1bに格納される。第2ラインの左から3番目の画素a3及び画素a4が順次歪補正回路1に入力されて処理されると、処理後の画素a3,a4は領域E1aの位置に書き込まれる。バッファコントローラ31は領域E1aが充填完了すると、領域E1aに格納されているサブブロックの画素a3,a4を2段目出力バッファの例えば領域E2aに転送して記憶させ、領域E1aを空き状態とする。
【0092】
次に、補正画素位置が連続する画素b1~b4が順次入力される。先ず、画素b1,b2は、領域E1aに書き込まれ、更にバッファコントローラ31によって領域E2bに転送される。更に、バッファコントローラ31は、空き領域E1aに画素b3,b4を書き込む。バッファコントローラ31は、2段目出力バッファを構成する領域E2bが充填完了すると共に、この領域E2bに格納されている画素に補正画素位置が連続する画素によって、1段目出力バッファの領域が充填完了すると、これらの2つの領域の画素、すなわち、領域E2b,E1aに格納されている伝送ブロックの全ての画素をバス23を介してDRAM24に転送する。これにより、これらの領域E1a,E2bは空き領域となる。
【0093】
すなわち、図7の太枠に示す画素まで処理が進んでいる状態では、1段目出力バッファE1aおよび2段目出力バッファE2bは空き領域となっており、次に歪補正処理が終了した画素の書き込みが可能となる。太枠に示す画素までの処理を、図6の例では合計出力バッファサイズ(4×3=12画素分)で行っていたが、図7の例では合計出力バッファサイズ(2×4=8画素分)で行うことができる。従って、図7のバッファ回路の構成例は、図6のバッファ回路の構成例に比べて、出力バッファの利用効率が向上している。
【0094】
図6及び図7に示すようなたる型歪では、画像中央ほど歪が小さく、画像の四隅ほど歪が大きい。このため、画像中央近傍では、各画素は歪補正回路1への入力順と略同じ順で出力され、1段目バッファの各領域E1は充填速度が比較的高く、比較的短時間で充填完了する。逆に、画像四隅近傍では、各画素の歪補正回路1への入力順と出力順とは比較的大きく異なり、1段目バッファの各領域E1は充填速度が比較的遅く、充填完了するまでに比較的長時間を要する。
【0095】
このため、1段目バッファのバッファサイズを比較的小さくすることで、充填速度の速い画素位置の画素によるバッファ利用効率を高めると共に、充填速度の遅い画素位置の画素によるバッファ利用効率の低下を抑制することができる。これにより、合計バッファサイズを低減化し伝送効率を向上させることが可能である。なお、(1段目の出力バッファ32の領域E1の数)≧(2段目の出力バッファ33の領域E2の数)になるように構成した場合に、伝送効率をより向上させることもできる。3段以上で出力バッファを階層化する場合にも、好適となる場合がある。
【0096】
(評価の一例)
撮像部22a,22bの何れかの光学系として所定の魚眼レンズを採用した場合に、魚眼レンズを採用した撮像部22aまたは22bからの画像を歪補正するのに必要な出力バッファの容量について、1段構成である場合と2段構成である場合とを比較する評価を行った。
【0097】
バス23を介してDRAM24への伝送単位である伝送ブロックサイズを128バイトに設定した場合についてシミュレーションを行い、図6のような1段構成の出力バッファと図7のような2段構成の出力バッファとについて、歪補正に必要な出力バッファ容量を求めた。なお、1画素は16ビットデータとし、1伝送ブロックは64画素の集合であるものとする。
【0098】
シミュレーションによると、出力バッファを1段で構成した場合には、歪補正のために、1伝送ブロック(128バイト)を記憶する領域(以下、エントリともいう)を1001個有する出力バッファを用いる必要がある。すなわち、この場合の出力バッファサイズは1001×128バイト=125Kバイトとなる。
【0099】
これに対し、出力バッファを2段で構成した場合には、歪補正のために、1サブブロック(64バイト)を記憶する領域(エントリ)E1を447個有する出力バッファ32と、1サブブロック(64バイト)を記憶する領域(エントリ)E2を232個有する出力バッファ33とを用いればよい。この場合の出力バッファサイズは、447×64バイト+232×64バイト=42Kバイトとなる。
【0100】
すなわち、この例では、出力バッファを多層化することにより、出力バッファの合計サイズを約1/3に低減可能である。なお、出力バッファの合計サイズを変更しないものとすると、出力バッファを多層化することにより伝送ブロックサイズを大きくすることができることになり、伝送効率を向上させることができる。
【0101】
このように、画像の位置によって歪の大きさが異なり、出力バッファの充填速度が異なるという性質を利用して、出力バッファを複数段に多層化し、各段のバッファ数(エントリ数)及びバッファサイズを適正な値とすることで、バッファメモリ容量を低減し伝送効率を向上させることが可能である。
【0102】
(撮像部22a,22bによる出力バッファ使用量の相違)
次に、図8は出力バッファの、撮像部22a,22bに応じた使用量の変化の一例を示すグラフである。
【0103】
上述したように、たる型歪の場合は画像の周辺部ほど歪みが大きくなるために、出力バッファの使用量が中央部よりも大きくなる。従って、画像の第1ラインや最終ライン付近では出力バッファの使用量が比較的大きく、画像の中央ライン付近では出力バッファの使用量が比較的小さい。
【0104】
このとき、撮像部[0]22aと撮像部[1]22bの種類(例えば、レンズの画角、撮像素子の画素数など)が異なると、図8に示すように、出力バッファの使用量ピークとなるライン位置が撮像部22a,22b毎に異なる場合がある。
【0105】
ここで、図8に示す例は、曲線C0がライン位置に対する撮像部[0]22aの出力バッファ使用量の変化の例を示し、曲線C1がライン位置に対する撮像部[1]22bの出力バッファ使用量の変化の例を示している。
【0106】
図8の例では、撮像部[0]22aの出力ライン数が撮像部[1]22bの出力ライン数よりも多く、撮像部[0]22aの出力バッファ使用量の最大値は撮像部[1]22bの出力バッファ使用量の最大値よりも大きく、撮像部[0]22aの出力バッファ使用量の最小値は撮像部[1]22bの出力バッファ使用量の最小値よりも小さくなっている。
【0107】
ここで仮に、出力バッファ回路3を、撮像部[0]22a用と撮像部[1]22b用とで別々に設けたとすると、合計のバッファ容量は、撮像部[0]22aの出力バッファ使用量の最大値と、撮像部[1]22bの出力バッファ使用量の最大値と、を合計した加算最大値以上の容量を確保する必要がある。
【0108】
これに対して、出力バッファ回路3を、撮像部[0]22a用と撮像部[1]22b用とで共用する構成にした場合、曲線C0と曲線C1とを加算した合成曲線のピーク位置(合成最大値)をカバーするバッファ容量であれば足りることになる。そして、撮像部の種類が異なる場合は、一般的に、合成最大値は加算最大値よりも小さくなる。
【0109】
このような理由から、出力バッファの利用効率を向上して容量を低減するために、本実施の形態では、出力バッファ回路3を、撮像部[0]22a用と撮像部[1]22b用とで共用する構成を採用している。このために、タグ情報に撮像部[0]22aと撮像部[1]22bとを区別するためのカメラIDを付加している。
【0110】
図9は、出力バッファ内のサブブロックに付すタグ情報の例を示す図である。
上述したように、バッファコントローラ31は、出力バッファE1,E2に格納されたサブブロック(block[0],block[1],…)に対して、特定画素(例えば、サブブロック内の先頭画素)のアドレス(address)と、伝送ブロックを含む画像を生成した撮像部22a,22bを識別するためのカメラID(camID)と、を含むタグ情報(tag[0],tag[1],…)を付す。
【0111】
このとき、カメラIDが共通し、アドレスが連続する出力バッファE1のサブブロックと出力バッファE2のサブブロックとを連結して伝送ブロックを生成する際には、生成される伝送ブロックに含まれる特定画素(例えば、伝送ブロック内の先頭画素)のアドレスと、共通するカメラIDとを含むタグ情報を付する。
【0112】
また、出力バッファ回路3が3段以上の複数段で構成される場合にも、カメラIDが共通し、アドレスが連続する複数のサブブロックを連結して後段の出力バッファに格納する際には、連結により生成されるサブブロックに含まれる特定画素(例えば、サブブロック内の先頭画素)のアドレスと、共通するカメラIDとを含むタグ情報を付する。
【0113】
このように、アドレスに加えてカメラIDをタグ情報に含ませることで、1つの出力バッファ回路3に、撮像部[0]22aからの画素と、撮像部[1]22bからの画素とを区分して蓄積することができる。
【0114】
上述したように、出力バッファ回路3は、図8を参照して説明したような、曲線C0と曲線C1とを加算した合成曲線のピーク位置(合成最大値)をカバーするバッファ容量を備えるように構成されている。しかし、合成最大値に対する余裕分を大きくするとバッファ容量の増大につながるために、余裕分はなるべく小さくすることが好ましい。
【0115】
実際の使用時においては、撮像部[0]22aから出力される画素の出力タイミングと、撮像部[1]22bから出力される画素の出力タイミングとに、様々な要因による揺らぎが存在する。すると、設計時に見積もった合成曲線の合成最大値よりも高いピーク値が表れて、出力バッファがオーバフローしてしまう可能性が生じる。
【0116】
そこで、本実施の形態の画像処理装置21では、出力バッファのオーバフローを事前に予測して、オーバフローが予測される場合には、入力バッファ回路であるFIFO5に画素を一時的に保持することで、オーバフローを回避するようにしている。このための処理を、図10を参照して説明する。
【0117】
図10は、バッファコントローラ31がオーバフローを監視して行う処理を示すフローチャートである。
【0118】
バッファコントローラ31は、1回の動作サイクル毎(ただし、所定数の動作サイクル毎でも構わない)に、出力バッファ回路3内に設けられた出力バッファの使用率を算出する(ステップS11)。
【0119】
次に、バッファコントローラ31は、前回算出したバッファ使用率と、今回算出したバッファ使用率と(必要に応じて、さらには前回よりも以前に算出したバッファ使用率と)から、バッファ使用率の傾きを算出する(ステップS12)。なお、ここではバッファ使用率の変化を1次近似で予測する場合を想定して傾きを算出したが、2次以上の近似で予測するようにしても構わない。
【0120】
続いて、バッファ使用率の傾きが正である(つまり、バッファ使用率が増加していることを示す)場合には、算出した傾きで現在のバッファ使用率が増加すると、何回の動作サイクルを経た後にバッファ使用率が100%以上になる(つまり、オーバフローする)かをバッファコントローラ31が予測する(ステップS13)。
【0121】
そして、バッファコントローラ31は、オーバフローするまでの動作サイクル数が、予め設定された所定サイクル以内であるか否かを判定する(ステップS14)。
【0122】
ステップS14において、所定サイクル以内であると判定した場合に、バッファコントローラ31は待機信号(ready[0]信号)(指示信号)を入力コントローラ4へ送信する(ステップS15)。上述したように、入力コントローラ4は、待機信号(ready[0]信号)(指示信号)を受信すると、撮像部22から入力される画素を前処理回路2へ転送せずに、FIFO5に一旦蓄積する。
【0123】
このように、バッファコントローラ31は、出力バッファ回路3の使用率を監視して、出力バッファ回路3のオーバフローが予測される場合に指示信号を入力コントローラ4へ出力する。入力コントローラ4は、指示信号に応じて、入力バッファ回路であるFIFO5に複数の撮像部22a,22bからの入力をバッファリングさせ、遅延して画像処理回路(前処理回路2、歪補正回路1)へ出力するように制御する。
【0124】
また、ステップS14において、所定サイクル以内でないと判定した場合に、バッファコントローラ31は準備完了信号(ready[1]信号)を入力コントローラ4へ送信する(ステップS16)。入力コントローラ4は、準備完了信号(ready[1]信号)を受信すると、FIFO5に画素の蓄積がある場合には、撮像部22から入力される画素をFIFO5に蓄積しながら、FIFO5から前処理回路2へ画素の出力を行う。また、入力コントローラ4は、準備完了信号(ready[1]信号)を受信すると、FIFO5に画素の蓄積がない場合には、撮像部22から入力される画素を前処理回路2へ転送する。
【0125】
ステップS15またはステップS16の処理を行ったら、バッファコントローラ31は、撮像部[0]22aからの画像と、撮像部[1]22bからの画像との何れについても、全ての処理が済んで、この処理を終了するか否かを判定する(ステップS17)。
【0126】
ステップS17において、バッファコントローラ31が処理を終了しないと判定した場合には、ステップS11へ戻って、次の動作サイクルの処理を上述したように行う。一方、ステップS17において、バッファコントローラ31が処理を終了すると判定した場合には、この処理を終える。
【0127】
図11及び図12を参照して、出力バッファ回路3の動作を更に詳細に説明する。図11図1中のある段(2段構成の例では1段目)の出力バッファの動作を説明するための説明図、図12図1中の次の段(2段構成の例では2段目)の出力バッファの動作を説明するための説明図である。
【0128】
図11は出力バッファ32を示しており、[0],[1],…[i]によって示す複数の(具体的には、(i+1)個の)領域E1(以下、これらの領域を区別する必要がある場合には領域E1[0],E1[1],…E1[i]という)を備えている。複数の領域E1[0],E1[1],…E1[i]は、それぞれがサブブロックの画素を記憶し、Nバイトの容量を各有している。各領域E1には、1つ以上の画素が記憶されることによって、上述したように、領域E1に格納されるサブブロック内の例えば先頭画素のアドレス(address)と、カメラID(camID)と、を含むタグ情報(tag)が付加される。
【0129】
それぞれの領域E1,E2には、同一の撮像部22a,22bから出力された補正画素位置(アドレス)が連続する一連の画素(サブブロックの画素)が記憶される。このために、タグ情報にサブブロック内の各画素のアドレスを含ませる必要はなく、特定画素(例えば、サブブロック内の先頭画素)のアドレス1つを含ませれば、サブブロック内の各画素のアドレスを特定することが可能となっている。
【0130】
図12は出力バッファ33を示しており、[0],[1],…[j]によって示す複数の(具体的には、(j+1)個の)領域E2(以下、これらの領域を区別する必要がある場合には領域E2[0],E2[1],…E2[j]という)を備えている。複数の領域E2[0],E2[1],…E2[j]は、それぞれがサブブロックの画素を記憶し、Nバイトの容量を各有している。各領域E2には、出力バッファ32から1つ以上の画素が転送されることによって、上述と同様に、領域E2に格納されるサブブロック内の例えば先頭画素のアドレス(address)と、カメラID(camID)と、を含むタグ情報(tag)が付加される。
【0131】
バッファコントローラ31は、出力バッファ32から出力バッファ33への画素の転送をタグ情報により管理する。これにより、バッファコントローラ31は、領域E1,E2に格納された、カメラIDが一致し、アドレスが連続する2つのサブブロックを連結して、より大きいサブブロックを生成し、または伝送ブロックを生成することができる。
【0132】
具体的に、連結される2つのサブブロックは、一方のサブブロックの末尾画素のアドレスと、他方のサブブロックの先頭画素のアドレスとが連続している。このとき、連結によって生成される新たなサブブロック(または、伝送ブロック)のアドレスは、前述した一方のサブブロックの先頭画素のアドレスとなる。
【0133】
例えば、伝送ブロックを構成する補正画素位置が連続する一連の画素a1,a2,…,an,an+1,…,amの内、先ず画素a1,a2,…,anが出力バッファ32の所定の領域E1に記憶されるものとする。この場合には、画素a1,a2,…,anの例えば先頭画素a1に対応するアドレスと、カメラIDと、を含むタグ情報tag01が付加されて当該領域E1に記憶される。
【0134】
バッファコントローラ31は、領域E1が充填完了すると、これらのサブブロックの画素a1,a2,…,anを、タグ情報tag01と共に、出力バッファ33の領域E2、例えば領域E2[1]に転送して記憶させる(図12参照)。
【0135】
次に、画素a1,a2,…,anにアドレスが連続する画素an+1,…,amが出力バッファ32の領域E1、例えば、領域E1[0]に書き込まれるものとする(図11参照)。この場合には、領域E1[0]には、領域E2[1]のタグ情報tag01に画像位置が連続することを示すタグ情報tag02(例えば先頭画素an+1に対応するアドレスと、カメラIDと、を含むタグ情報tag02)が付加されて記憶される。
【0136】
画素an+1,…,amにより領域E1[0]が充填完了すると、バッファコントローラ31は、タグ情報を利用して、出力バッファ33の領域E2[1]と出力バッファ32の領域E1[0]とに格納されている伝送ブロック(ここでは2段構成の例を説明しているために、2つのサブブロックを連結すると伝送ブロックが生成される)の画素、すなわち、カメラIDが一致し、アドレスが連続する一連の画素a1,a2,…,an,an+1,…,amを読み出して、バス23を介してDRAM24に転送する。
【0137】
この場合には、バッファコントローラ31は、画素a1,a2,…,an,an+1,…,amに含まれる特定画素(例えば、先頭画素)の画像位置に対応するアドレスと、カメラIDと、を含むタグ情報(例えば先頭画素a1に対応するアドレスと、tag01およびtag02に共通するカメラIDと、を含むタグ情報)tag[0]を伝送ブロックに付加する。
【0138】
CPU25は、タグ情報tag[0]を参照して、伝送ブロックを、カメラIDに応じたDRAM24のメモリ[0]24aまたはメモリ[1]24b内の、アドレスに応じた位置に記憶させる。
【0139】
なお、図11及び図12は、領域E1,E2に格納するサブブロックのサイズ(容量)は何れもNバイト(n個の画素)の例を示しており、伝送ブロックサイズM=2Nであり、m=2nである。しかし、領域E2に格納したNバイト(n画素)のサブブロックと、領域E1に格納したNバイトよりも小さいサブブロックによって構成される伝送ブロックの画素を伝送することも可能であり、この場合には、M≧Nとなる。
【0140】
また、図11及び図12を用いた説明では、2段目の出力バッファ33には転送されたサブブロックに対応して付加されたタグ情報が記憶されるとしたが、この出力バッファ33に記憶されたサブブロックとこれに対応する1段目の出力バッファ32に記憶されたサブブロックとの画像上の位置関係が明確である場合には、出力バッファ33には伝送ブロックに対応した画像位置を示すタグ情報を記憶させるようになっていてもよい。
【0141】
(実装例)
図13は、出力バッファ回路3の実装例を説明するための図である。なお、図13では、[y:x]の表記によって、下位側の第xビットから上位側の第yビットのビット範囲のデータであることを示す。また、図13に示す各段のエントリ数は例であり、図示の数に限定されるものではなく、歪曲収差や倍率色収差などに応じて必要となる適宜の数に設定すればよい。図13に示す書き込み及び読み出し制御は、図5に示したバッファコントローラ31によって実現される。
【0142】
出力バッファ回路3への入力画素は、G,B,Rの成分i_g_pix[15:0],i_b_pix[15:0],i_r_pix[15:0]の各16ビットのデータである。そして、入力画素は、水平方向の補正画素位置を示す13ビットの水平アドレスi_h[12:0]及び垂直方向の補正画素位置を示す12ビットの垂直アドレスi_v[11:0]と、カメラIDと、を有する。
【0143】
図13に示す例では、出力バッファ回路3に、1段目バッファL2ISP_wbuf1~6段目バッファL2ISP_wbuf6が設けられている。
【0144】
1段目バッファL2ISP_wbuf1には、2バイトのG,B,R各成分のデータ(1画素分)が276エントリ分格納される。具体的に、1エントリには、2バイトのG成分のデータと、2バイトのB成分のデータと、2バイトのR成分のデータと、が画素値として格納される。1段目バッファL2ISP_wbuf1のタグには、12ビットの水平アドレスi_h[12:1]及び3ビットの垂直アドレスi_v[2:0]と、カメラIDとが格納される。1段目バッファL2ISP_wbuf1のエントリにサブブロックが充填完了すると、1段目バッファL2ISP_wbuf1から2段目バッファL2ISP_wbuf2へ転送される。
【0145】
2段目バッファL2ISP_wbuf2には4バイトのG,B,R各成分のデータ(2画素分)が260エントリ分格納される。2段目バッファL2ISP_wbuf2のタグには、11ビットの水平アドレスi_h[12:2]及び3ビットの垂直アドレスi_v[2:0]と、カメラIDとが格納される。2段目バッファL2ISP_wbuf2は、1段目バッファL2ISP_wbuf1から転送されたデータを、カメラIDが一致し、アドレスが連続するエントリへ格納する。2段目バッファL2ISP_wbuf2のエントリにサブブロックが充填完了すると、2段目バッファL2ISP_wbuf2から3段目バッファL2ISP_wbuf3へ転送される。
【0146】
3段目バッファL2ISP_wbuf3には8バイトのG,B,R各成分のデータ(4画素分)が263エントリ分格納される。3段目バッファL2ISP_wbuf3のタグには、10ビットの水平アドレスi_h[12:3]及び3ビットの垂直アドレスi_v[2:0]と、カメラIDとが格納される。3段目バッファL2ISP_wbuf3は、2段目バッファL2ISP_wbuf2から転送されたデータを、カメラIDが一致し、アドレスが連続するエントリへ格納する。3段目バッファL2ISP_wbuf3のエントリにサブブロックが充填完了すると、3段目バッファL2ISP_wbuf3から4段目バッファL2ISP_wbuf4へ転送される。
【0147】
4段目バッファL2ISP_wbuf4には16バイトのG,B,R各成分のデータ(8画素分)が263エントリ分格納される。4段目バッファL2ISP_wbuf4のタグには、9ビットの水平アドレスi_h[12:4]及び4ビットの垂直アドレスi_v[3:0]と、カメラIDとが格納される。4段目バッファL2ISP_wbuf4は、3段目バッファL2ISP_wbuf3から転送されたデータを、カメラIDが一致し、アドレスが連続するエントリへ格納する。4段目バッファL2ISP_wbuf4のエントリにサブブロックが充填完了すると、4段目バッファL2ISP_wbuf4から5段目バッファL2ISP_wbuf5へ転送される。
【0148】
5段目バッファL2ISP_wbuf5には32バイトのG,B,R各成分のデータ(16画素分)が254エントリ分格納される。5段目バッファL2ISP_wbuf5のタグには、8ビットの水平アドレスi_h[12:5]及び5ビットの垂直アドレスi_v[4:0]と、カメラIDとが格納される。5段目バッファL2ISP_wbuf5は、4段目バッファL2ISP_wbuf4から転送されたデータを、カメラIDが一致し、アドレスが連続するエントリへ格納する。5段目バッファL2ISP_wbuf5のエントリにサブブロックが充填完了すると、5段目バッファL2ISP_wbuf5から6段目バッファL2ISP_wbuf6へ転送される。
【0149】
6段目バッファL2ISP_wbuf6には64バイトのG,B,R各成分のデータ(32画素分)が248エントリ分格納される。6段目バッファL2ISP_wbuf6のタグには、7ビットの水平アドレスi_h[12:6]及び5ビットの垂直アドレスi_v[4:0]と、カメラIDとが格納される。6段目バッファL2ISP_wbuf6は、5段目バッファL2ISP_wbuf5から転送されたデータを、カメラIDが一致し、アドレスが連続するエントリへ格納する。
【0150】
上記のように、第1段から第6段へ移行するにつれて、アドレスが連続する画素数が増えるために、タグには水平アドレスの下位ビットから順に格納不要となり、上位ビットだけを格納すれば足りるようになる。また、アドレスが連続する画素数が増えるにつれて歪みが大きくなるために、第1段から第6段へ移行するにつれて垂直アドレスのビット数を適宜増加させている。
【0151】
そして、充填完了した各段のエントリに、アドレスが連続する128バイトのデータがある場合に、各段のエントリのデータを連結する。例えば、第6段の充填完了した2つのエントリに、アドレスが連続する64バイトのデータが2つある場合には、バッファコントローラ31は、これらを連結してアドレスが連続する128バイトのデータを生成する。また例えば、第6段の充填完了した1つのエントリに64バイトのデータが1つあり、第5段の充填完了した2つのエントリに32バイトのデータが2つあって、これらのアドレスが連続している場合に、バッファコントローラ31は、1つの64バイトデータと2つの32バイトデータを連結して、アドレスが連続する128バイトのデータを生成する。
【0152】
こうして生成したアドレスが連続する128バイトのデータに、アドレスとカメラIDとを含むタグ情報を付加して、バッファコントローラ31が伝送ブロックを生成する。生成した伝送ブロックは、出力バッファ回路3から、バス23を経由してDRAM24へ伝送される。伝送ブロックは、上述したように、タグ情報に示されるカメラIDに応じたDRAM24のメモリ[0]24aまたはメモリ[1]24b内の、タグ情報に示されるアドレスに応じた位置に記憶される。
【0153】
なお、上述では図13を参照して1画素が16ビットデータである例を説明したが、1画素が8ビットデータである場合には、図13の出力バッファ回路3内の上段に示すように、0段目バッファL2ISP_wbuf0を追加して、1バイトのG,B,R各成分のデータ(1画素分)を276エントリ分格納すればよい。具体的に、1エントリには、1バイトのG成分のデータと、1バイトのB成分のデータと、1バイトのR成分のデータと、が画素値として格納される。0段目バッファL2ISP_wbuf0のタグには、12ビットの水平アドレスi_h[12:1]及び3ビットの垂直アドレスi_v[2:0]と、カメラIDとが格納される。
【0154】
0段目バッファL2ISP_wbuf0のエントリにサブブロックが充填完了すると、0段目バッファL2ISP_wbuf0から1段目バッファL2ISP_wbuf1へ転送される。そして、1段目バッファL2ISP_wbuf1の1エントリには、アドレスが連続する2画素分のデータが格納されることになる。1画素が8ビットデータである場合には、その後の各段の1エントリに格納される画素数も、16ビットデータである場合の2倍となる。
【0155】
また、YUV422プレーナーフォーマットを採用した場合には、UV画素(br)の出力データ幅はY画素(g)の半分になる。従って、Y画素は128バイトの伝送ブロックで出力されるが、UV画素はそれぞれ64バイトの伝送ブロックで出力される。
【0156】
こうして、出力バッファ回路3は、2段以上に階層化された複数の出力バッファを含み、ある段の出力バッファに記憶したサブブロック内の全ての画素が揃ってから、次の段の出力バッファに転送することを順次行い、最終段の出力バッファを含む1段以上の出力バッファの全ての画素が揃った複数のブロックを連結して伝送ブロックを生成する。そして、バッファコントローラ31は、伝送ブロックに含まれる特定画素のアドレスと、カメラIDと、を含むタグ情報を付して、出力バッファ回路3に伝送ブロックを出力させる。
【0157】
このような第1の実施形態によれば、複数の撮像部22a,22bにより生成された複数の画像を、入力コントローラ4が1ライン毎に入力する画像を切り替えて1ライン毎に入力し、パイプライン処理により画像処理回路(前処理回路2、歪補正回路1)で画像処理するようにしたために、撮像部と同一数の画像処理回路を設ける必要がなくなり、回路規模を縮小して消費電力及びコストの削減を図ることができる。
【0158】
さらに、出力バッファ回路3が格納するブロックにアドレスとカメラIDとを含むタグ情報を付すようにしたために、出力バッファ回路3が、複数の撮像部22a,22bにより生成された複数の画像をバッファリングすることが可能となる。これにより、出力バッファ回路3の利用効率を向上することができ、撮像部と同一数の出力バッファ回路3を設ける必要がなくなって、回路規模を縮小し消費電力及びコストの削減を図ることができる。
【0159】
また、出力バッファ回路3が、画像の画素を、一の画像内における画素位置が連続する画素の集合である伝送ブロック毎に出力するようにしたために、より小さいブロック単位(例えば1画素毎に)で出力する場合に比べて、伝送効率を向上することができる。
【0160】
そして、伝送ブロックにアドレスとカメラIDとを含むタグ情報を付すようにしたために、DRAM24内における画像毎の適切な記憶領域の適切なアドレスに、伝送ブロックを記憶させることができる。
【0161】
出力バッファ回路3の使用率を監視してオーバフローが予測される場合に、複数の撮像部22a,22bからの入力を入力バッファ回路であるFIFO5にバッファリングするようにしたために、複数の撮像部22a,22bからの入力のタイミングに揺らぎがある場合でも、処理漏れを生じることなく画像処理回路(前処理回路2、歪補正回路1)により処理することができる。
【0162】
画像処理回路が、複数の画像の歪みを補正する歪補正回路1を含むために、広角レンズが採用された撮像部を複数有する例えば車載カメラ等のコスト削減にも好適となる。
【0163】
入力バッファ回路であるFIFO5を、複数の撮像部22a,22bから入力されるRAW画像をデモザイキング処理してRGB画像を生成する前処理回路2よりも前段側に設けたために、FIFO5は、一般的に、RGB画像よりもデータ量が小さいRAW画像をバッファリングすれば足りる。このために、FIFO5を前処理回路2よりも後段側に設けた場合よりも、バッファ容量を低減することができる。
【0164】
出力バッファ回路3を2段以上に階層化したために、合計バッファサイズを低減して、伝送効率を向上させることができる。このとき、各段のサブブロックに、アドレスと、カメラIDと、を含むタグ情報を付すようにしたために、複数の撮像部22からの画像を、何れの段においても適切に区別して格納することができる。
【0165】
(第2の実施形態)
図14は、第2の実施形態に係わる画像処理システムの構成を、一部を省略して示すブロック図である。
この第2の実施形態において、上述の第1の実施形態と同様である部分については同一の符号を付すなどして説明を適宜省略し、主として異なる点について説明する。
【0166】
なお、図14では簡略化のために図示を省略しているが、画像処理システムは、図1の画像処理システムと同様に、CPU25を備えている。また、第2の実施形態の画像処理装置21Aは、図1の画像処理装置21と同様に、入力コントローラ4、FIFO5、及び前処理回路2を備えている。そして、図10を参照して説明したように、バッファコントローラ31が所定サイクル以内のオーバフローを予測すると、待機信号(ready[0]信号)(指示信号)を入力コントローラ4へ送信して、撮像部22から入力されるFIFO5にバッファリングするのも上述した第1の実施形態と同様である。
【0167】
第2の実施形態の画像処理装置21Aは、画像処理回路として、領域処理回路6をさらに備えている。領域処理回路6は、一の画像内における複数の着目領域の処理を行う回路であり、歪補正回路1と出力バッファ回路3との間に設けられている。複数の着目領域の一例としては、ある撮像部、例えば撮像部22aにより取得された画像に対して、画像全体を1つの着目領域とし、画像の中央部の部分領域を他の1つの着目領域とすることが挙げられる。ただし、この例に限定されるものではなく、画像の任意の領域を着目領域とすることができる。
【0168】
図14には、領域処理回路6が1つの画像に対して2つの領域処理を行う例を示している。具体的に、領域処理回路6は、1つの画像におけるある領域[0]を処理する領域処理回路[0]6aと、同画像における他の領域[1]を処理する領域処理回路[1]6bと、を備えている。
【0169】
領域処理回路[0]6aは、歪補正回路1により歪み補正された画素がある領域[0]に含まれる画素である場合に処理を行って、領域[0]に係る画素であることを示す領域IDと共に出力バッファ回路3へ出力する。
【0170】
領域処理回路[1]6bは、歪補正回路1により歪み補正された画素が他の領域[1]に含まれる画素である場合に処理を行って、領域[1]に係る画素であることを示す領域IDと共に出力バッファ回路3へ出力する。
【0171】
なお、歪補正回路1により歪み補正された画素は、ある領域[0]だけに含まれる場合と、他の領域[1]だけに含まれる場合と、ある領域[0]と他の領域[1]との両方に含まれる場合と、ある領域[0]と他の領域[1]との何れにも含まれない場合と、がある。そして、ある領域[0]と他の領域[1]との両方に含まれる場合には、領域処理回路[0]6aと領域処理回路[1]6bとの両方から、その画素がそれぞれの領域IDと共に出力バッファ回路3へ個別に出力される。
【0172】
出力バッファ回路3は、2段以上に階層化されている各段のエントリにサブブロックを記憶する際に、アドレス(address)と、カメラID(camID)と、着目領域を識別するための領域ID(roiID)と、を含むタグ情報を付して記憶する。
【0173】
図15は、出力バッファ内のサブブロックに付すタグ情報の例を示す図である。
図示のように、サブブロック(block[0],block[1],…)のそれぞれに、タグ情報(tag[0],tag[1],…)が付されており、タグ情報は、アドレス(address)と、カメラID(camID)と、領域ID(roiID)とを含んでいる。
【0174】
そして、バッファコントローラ31は、サブブロックから伝送ブロックを生成すると、アドレス(address)と、カメラID(camID)と、領域ID(roiID)と、を含むタグ情報を付して、バス23を経由しDRAM24へ伝送する。
【0175】
カメラIDが撮像部[0]22aからの画像であり、領域IDがある領域[0]の画像であることを示す場合には、CPU25の制御により、DRAM24は、記憶領域であるメモリ[0,0]24a1に伝送ブロックを記憶する。
【0176】
カメラIDが撮像部[0]22aからの画像であり、領域IDが他の領域[1]の画像であることを示す場合には、CPU25の制御により、DRAM24は、記憶領域であるメモリ[0,1]24a2に伝送ブロックを記憶する。
【0177】
カメラIDが撮像部[1]22bからの画像であり、領域IDがある領域[0]の画像であることを示す場合には、CPU25の制御により、DRAM24は、記憶領域であるメモリ[1,0]24b1に伝送ブロックを記憶する。
【0178】
カメラIDが撮像部[1]22bからの画像であり、領域IDが他の領域[1]の画像であることを示す場合には、CPU25の制御により、DRAM24は、記憶領域であるメモリ[1,1]24b2に伝送ブロックを記憶する。
【0179】
ここに、メモリ[0,0]24a1、メモリ[0,1]24a2、メモリ[1,0]24b1、及びメモリ[1,1]24b2内における記憶アドレスが、タグ情報のアドレスに基づきCPU25により制御されることは、第1の実施形態と同様である。
【0180】
このような第2の実施形態によれば、上述した第1の実施形態とほぼ同様の効果を奏するとともに、複数の画像の内の少なくとも1つの画像に対して、複数の着目領域の処理を行う場合に、バッファコントローラ31が、着目領域を識別するための領域IDをさらに含むタグ情報をサブブロックに付すようにしたために、出力バッファ回路3が、複数の着目領域の画素をバッファリングすることが可能となる。これにより、出力バッファ回路3の利用効率を向上することができ、着目領域の数と同じ数の出力バッファ回路3を設ける必要がなくなって、回路規模を縮小し消費電力及びコストの削減を図ることができる。
【0181】
また、バッファコントローラ31が、着目領域を識別するための領域IDをさらに含むタグ情報を伝送ブロックに付すようにしたために、DRAM24内における画像毎かつ着目領域毎の適切な記憶領域の、適切なアドレスに、伝送ブロックを記憶させることができる。
【0182】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0183】
1…歪補正回路、2…前処理回路、3…出力バッファ回路、4…入力コントローラ、5…FIFO、6…領域処理回路、11…ラインバッファ、12…書き込み画素位置計算部、13…読み出し画素位置計算部、14…書き込み画素位置判定部、15…パラメータ格納部、16…画素補間部、21,21A…画像処理装置、22…撮像部、23…バス、24…DRAM、25…CPU、31…バッファコントローラ、32,33…出力バッファ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16