(57)【要約】【課題】コストの低減を実現しつつ、高い処理パフォーマンスによる画像処理を実現することを課題とする。【解決手段】第１拡大部（３００）は、下位の階層の画像が上位の階層の画像を縮小した縮小画像となされている２以上の階層の画像のうち、下位側の階層の画像を拡大する。第１階層加算部（３０３）は、上位側の階層の画像を複数のブロックに分割したブロック単位で、下位側の階層の拡大画像と、上位側の階層の画像とを合成する。領域抽出部（３０２）は、第１拡大部（３００）の拡大画像のうち、上位側の階層のブロックより少なくとも広い領域から、上位側の階層のブロックの大きさに合わせた領域を抽出する。領域抽出部（３０２）が抽出した領域の画像を、第１階層加算部（３０３）により上位側の階層のブロックに対してブロック単位で合成される画像とする。【選択図】図２
2018067849.tif 000002
【特許請求の範囲】
【請求項１】
下位の階層の画像が上位の階層の画像を縮小した縮小画像となされている２以上の階層の画像のうち、下位側の階層の画像を拡大する拡大手段と、
上位側の階層の画像を複数のブロックに分割したブロック単位で、前記下位側の階層の前記拡大された画像と、前記上位側の階層の画像とを、合成する合成手段と、
前記拡大手段により前記拡大された画像から、前記上位側の階層の前記ブロックに対応した一部の領域を抽出する抽出手段と、を有し、
前記抽出手段は、前記拡大手段により前記拡大された画像のうち、前記上位側の階層の前記ブロックより少なくとも広い領域から、前記上位側の階層の前記ブロックの大きさに合わせた前記一部の領域を抽出し、
前記抽出手段が前記抽出した前記一部の領域の画像を、前記合成手段により前記上位側の階層のブロックに対して前記ブロック単位で合成される画像とすることを特徴とする画像処理装置。
【請求項２】
前記拡大手段は、前記下位側の階層の分割されていない画像全体を拡大し、
前記抽出手段は、前記拡大手段により前記画像全体が拡大された画像から、前記上位側の階層の前記ブロックの位置及び大きさに合わせた前記一部の領域を抽出することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記拡大手段は、前記下位側の階層の画像を複数のブロックに分割し、前記ブロックの区切りの位置を表す画素数が小数値を有する場合には、前記区切りの位置を含めて整数となる画素数の位置で区切った領域を拡大し、
前記抽出手段は、前記拡大手段により前記整数となる画素数の位置で区切られた領域が拡大された画像から、前記上位側の階層の前記ブロックの大きさに合わせた前記一部の領域を抽出することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記上位側の階層は、複数の階層を中間で上位階層群と下位階層群とに分けた場合の上位階層群であり、
前記下位側の階層は、前記下位階層群であることを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
入力画像を２以上の異なる縮小率で縮小して、それぞれ解像度が異なる前記２以上の階層の画像を生成する縮小手段を有し、
前記拡大手段は、下位側の階層の画像を一つ上位の階層に対応した解像度の画像に拡大し、
前記合成手段は、前記拡大手段により拡大された画像を、前記一つ上位の階層の解像度の画像と前記ブロック単位で階層加算するようにして前記合成を行うことを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
画像を複数のブロックに分割したブロック単位で処理を行う画像処理装置であって、
入力画像を拡大する拡大手段と、
前記拡大手段により前記拡大された画像から一部の領域を抽出する抽出手段と、を有し、
前記抽出手段は、前記拡大手段により前記拡大された画像のうち、前記ブロックより少なくとも広い領域から、前記ブロックの大きさに合わせた前記一部の領域を抽出し、
前記抽出手段が前記抽出した前記一部の領域の画像を、前記ブロック単位で処理される画像とすることを特徴とする画像処理装置。
【請求項７】
前記拡大手段は、前記入力画像の画像全体を拡大し、
前記抽出手段は、前記拡大手段により前記拡大された画像から、前記ブロックの位置及び大きさに合わせた前記一部の領域を抽出することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記複数のブロックへの分割は、画素数に対する所定の制約に基づくブロック数とブロックサイズにより行われることを特徴とする請求項１乃至７の何れか１項に記載の画像処理装置。
【請求項９】
下位の階層の画像が上位の階層の画像を縮小した縮小画像となされている２以上の階層の画像のうち、下位側の階層の画像を拡大する拡大工程と、
前記拡大工程により前記拡大された画像のうち、上位側の階層の画像を複数に分割したブロックより少なくとも広い領域から、前記上位側の階層の前記ブロックの大きさに合わせた一部の領域を抽出する抽出工程と、
前記上位側の階層の画像を複数に分割したブロックの画像と、前記抽出工程により前記抽出された前記一部の領域の画像とを、合成する合成工程と、
を有することを特徴とする画像処理装置の画像処理方法。
【請求項１０】
画像を複数のブロックに分割したブロック単位で処理を行う画像処理装置の画像処理方法であって、
入力画像を拡大する拡大工程と、
前記拡大工程により前記拡大された画像のうち、前記ブロックより少なくとも広い領域から、前記ブロックの大きさに合わせた一部の領域を抽出する抽出工程と、を有し、
前記抽出工程により前記抽出された前記一部の領域の画像を、前記ブロック単位で処理される画像とすることを特徴とする画像処理方法。
【請求項１１】
コンピュータを、請求項１乃至８の何れか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を処理する画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
画像の拡大及び縮小処理は、撮像装置などの画像処理装置で用いられる。一般に撮像装置では、画像をラスター方向に処理する。よって垂直方向の拡大や縮小処理において複数ラインを参照するタップ処理を行う場合には、ラインメモリが使用される。また、画像一面（１フレーム分の画像）を一度に処理する場合、ラインメモリは、画像の少なくとも水平サイズ分の大きさのメモリが必要になる。一方、近年は、撮像装置の画素数の増加や、いわゆる４ｋ、８ｋなどと呼ばれている次世代ハイビジョン規格に対応するために、画像処理装置が扱う画素数は増加している。画像処理装置が扱う画素数が増加すると、ラインメモリも大きなものが必要になる。しかしながら、ラインメモリが大きくなると、コストが増えることになる。
【０００３】
このため、画像を水平方向にブロック分割し、分割ブロック単位で処理を行うようにすることで、処理に必要なラインメモリの大きさを小さくして、コストを低減可能とした技術が提案されている。例えば特許文献１には、画像を分割ブロック単位で拡大及び縮小処理する技術が開示されている。特許文献１に記載の技術では、隣り合う分割ブロックにおいて拡大・縮小処理によるタップ処理画素数分をオーバーラップさせて入力している。この処理によって、分割ブロック毎に処理を行っても、画像一面を一度に処理した場合と同様の結果を得ることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１５１６３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、コストをさらに低減するために、例えばラインメモリをより小さくすると、ブロック分割数が増加することになり、この場合、フィルタ処理などで使用する周囲のオーバーラップ画素分だけ、トータルで処理する画素数が増加してしまう。また、ブロック分割数が増えると、分割ブロック毎に必要な制御期間が積算等されることになり、処理パフォーマンスが低下してしまう。
【０００６】
そこで、本発明は、コストの低減を実現しつつ、高い処理パフォーマンスによる画像処理を実現可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、下位の階層の画像が上位の階層の画像を縮小した縮小画像となされている２以上の階層の画像のうち、下位側の階層の画像を拡大する拡大手段と、上位側の階層の画像を複数のブロックに分割したブロック単位で、前記下位側の階層の前記拡大された画像と、前記上位側の階層の画像とを、合成する合成手段と、前記拡大手段により前記拡大された画像から、前記上位側の階層の前記ブロックに対応した一部の領域を抽出する抽出手段と、を有し、前記抽出手段は、前記拡大手段により前記拡大された画像のうち、前記上位側の階層の前記ブロックより少なくとも広い領域から、前記上位側の階層の前記ブロックの大きさに合わせた前記一部の領域を抽出し、前記抽出手段が前記抽出した前記一部の領域の画像を、前記合成手段により前記上位側の階層のブロックに対して前記ブロック単位で合成される画像とすることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、コストの低減を実現しつつ、高い処理パフォーマンスによる画像処理が実現可能となる。
【図面の簡単な説明】
【０００９】
【図１】画像処理装置の一実施形態としての撮像装置の概略構成を示す図である。
【図２】階層処理部の概略構成を示す図である。
【図３】全階層を同分割ブロック数で処理する場合のフローチャートである。
【図４】下位階層でブロック分割しない場合のフローチャートである。
【図５】第１の実施形態における画像分割の画素数制約の考え方を表す図である。
【図６】第１の実施形態における画像分割の具体的数値例を表す図である。
【図７】全階層を１１ブロックに分割して処理する場合の分割数を表す図である。
【図８】下位階層でブロック分割しない場合の分割数を表す図である。
【図９】第２の実施形態の下位階層の分割ブロックの読み出し例を表す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明の実施形態を詳細に説明する。本実施形態の画像処理装置は、デジタルカメラやデジタルビデオカメラ、カメラ機能を備えたスマートフォンやタブレット端末などの各種携帯端末、工業用カメラ、車載カメラ、医療用カメラなどの各種撮像装置に適用可能である。
【００１１】
本実施形態の画像処理装置は、入力画像をブロック分割して、分割ブロック単位で拡大や縮小等の各種画像処理を行うことで、処理に必要なラインメモリを小さくし、コストの低減を可能としている。また、本実施形態の画像処理装置は、入力画像を２以上の複数の階層に分けて、階層毎の処理を行うことで、コストを抑えた多タップ処理を実現可能としている。階層処理では、先ず、入力画像をそれぞれ異なる複数の縮小率で縮小し、それぞれ画像の解像度で分けられる複数の階層の縮小画像が生成される。次に、下位の階層の縮小画像を一つ上位の階層の画像と同じ画像サイズに拡大し、その下位階層からの拡大画像と上位階層の画像とを加算する階層加算処理が行われる。階層処理では、このような下位階層の縮小画像を上位階層の画像と同画像サイズに拡大して、上位階層の画像と階層加算する処理を、順次上位の階層に向けて繰り返して、元の入力画像と同じ画像サイズの画像を生成する。この生成された画像は、元の入力画像と同じ画像サイズではあるが、入力画像から高周波成分が取り除かれた画像となる。そして、この高周波成分を取り除いた画像と元の画像とを加算して合成することで、周波数に依存した高度な画像処理を行うことが可能になる。階層処理が適用される具体的な処理例としては、トーンマッピング処理などが挙げられる。トーンマッピング処理では、高周波成分と低周波成分を比較し、画像のエッジ部とそれ以外のベタ部とを切り分けることで、画質を維持しながら暗部補正などのトーン補正処理を行う。この処理が多階層で行われた場合、精度よく複数の周波数成分を検出することができ、補正効果を高めることができるようになる。したがって、前述した階層処理と前述したブロック分割処理とを組み合わせた処理、すなわち、階層毎の画像をブロック分割して処理するようなことを行えば、コストを抑えつつ精度の高い補正等の画像処理が実現可能となる。
【００１２】
ここで、前述のように階層毎に縮小画像をブロック分割して処理する場合、各分割ブロックの水平サイズ（水平方向の画素数）は、下位階層の縮小率の定数倍や一次関数にすることが多い。なぜならば、上記のようにサイズ設定することで、各分割ブロックにおける下位階層の画像サイズや開始画素位置を整数で算出することができ、さらに分割ブロック毎にメモリからの画像の読み出し位置やサイズを一定にすることができるためである。これにより、画像の読み出しや、階層処理の制御を簡易的に行うことができるため、コストを抑えつつ精度の高い処理等を実現することが可能となる。
【００１３】
ただし、例えば下位階層の縮小率が小さい場合、分割ブロックのサイズの制約が大きくなることで処理パフォーマンスが低下してしまうことがある。例えば、下位階層の画像の解像度が元の入力画像の１／２５６の解像度であった場合、下位階層の画像サイズや開始画素位置を整数にしようとすると、元の入力画像の解像度の画像は２５６の倍数の水平サイズで処理する必要がある。このため、分割ブロック毎の水平サイズは、例えば十数画素単位といった細かさでは制御できない。この制約により、入力画像の画像サイズによっては、画像のブロック分割数が増える場合がある。ブロック分割数が増えると、フィルタ処理などで使用する周囲のオーバーラップ画素分だけトータルで処理する画素数が増加したり、分割ブロック毎に必要な制御期間が積算されたりすることで処理パフォーマンスが低下してしまうことになる。
【００１４】
本実施形態の画像処理装置は、入力画像を階層分けして階層毎にブロック分割して処理を行う場合において、分割ブロックのサイズの制約を緩和し、コストを抑えつつ精度の高い補正等の画像処理を実現可能とするために、以下の構成を備えている。
【００１５】
＜第１の実施形態＞
図１は、本発明に係る画像処理装置の一適用例である第１の実施形態の撮像装置１００の概略構成を示す図である。
図１に示した撮像装置１００は、撮像部１０１、ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、ＤＭＡコントローラ１０５、ＵＩ部１０６、外部Ｉ／Ｆ部１０７、記録部１０８、画像処理部１１０等を有して構成されている。撮像部１０１は、光学系や撮像素子等を有し、画像を撮像して、その撮像画像を入力画像として取得する。ＣＰＵ１０２は、各部の制御及び各種演算を行う。ＲＯＭ１０３は、ＣＰＵ１０２が各部の制御や各種処理等を実行するためのプログラムや各種パラメータ等を記憶している。ＲＡＭ１０４は、ＣＰＵ１０２のワークエリアや、入出力される画像データや処理途中の画像データ等の一時的な蓄積等に使用される。ＲＡＭ１０４にはＤＲＡＭも含まれる。ＤＭＡコントローラ１０５は、ＤＭＡ（ダイレクトメモリアクセス）を行うためのコントローラである。ＵＩ部１０６は、ユーザインターフェイス部であり、ユーザにより操作される各種操作デバイスやディスプレイ等の表示デバイスからなる。外部Ｉ／Ｆ部１０７は、画像データ等の各種データやプログラム等の通信を行うためのインターフェイス部である。記録部１０８は、半導体メモリカードやハードディスク等の各種記録媒体を備えるか又は着脱可能となされ、画像データ等の各種データやプログラム等が記録される。画像処理部１１０は、撮像部１０１にて取得された撮像画像、外部Ｉ／Ｆ部１０７、記録部１０８などからの入力画像等に対して、各種画像処理を行う。
【００１６】
本実施形態では、画像処理部１１０により行われる画像処理の一例として、トーンマッピング処理によって入力画像に対して画素毎に異なるゲインを掛ける機能を実現する構成を例に挙げて説明する。
図１の画像処理部１１０において、入力画像２００は、例えば撮像部１０１にて撮像された撮像画像から、撮像素子に起因するノイズ等が取り除かれた後の画像データであるとする。撮像部１０１の撮像素子は、一般にベイヤ配列と呼ばれる、赤（Ｒ），緑（Ｇ），青（Ｂ）の各色に対応して各画素が規則正しく配列されている。このため入力画像２００は、ベイヤ配列の撮像素子による撮像画像に基づく画像データとなされている。また、本実施形態の場合、入力画像２００のデータは、後段の処理による遅延量と合わせるために、メモリ（ＲＡＭ１０４）に一時的に記憶された後に読み出される。なお、入力画像２００は、撮像素子から出力された撮像画像データがＲＡＭ１０４を介さずに直接入力された画像データであってもよい。入力画像２００のデータは、ＲＡＭ１０４への一時記憶を介して、輝度変換部２０１と後述するゲイン乗算部２０９とに送られる。
【００１７】
輝度変換部２０１は、入力画像２００のデータに輝度変換係数を乗算する。これにより、入力画像２００は輝度画像に変換される。なお、輝度変換係数は、撮像素子におけるベイヤ配列に合わせて色ごとに与えられるとする。輝度変換部２０１から出力された輝度画像のデータは、ゲイン生成部２０２に送られる。
【００１８】
ゲイン生成部２０２は、輝度変換部２０１で生成された輝度画像のデータにゲイン係数を乗算する。これにより輝度画像はゲイン画像に変換される。本実施形態では、トーンマッピング処理を行うためのゲイン画像を生成するため、ゲイン生成部２０２は、輝度画像に対し、輝度値が小さいほど大きなゲインとなるようなゲイン係数を乗算する。ここでも図示は省略しているが、ゲイン生成部２０２で生成されたゲイン画像は、後段の処理による遅延量と合わせるためにＲＡＭ１０４に一時的に格納された後、読み出される。ゲイン生成部２０２で生成されたゲイン画像は、輝度画像に対して等倍の画像（以下、１／１ゲイン画像２０３と表記する。）である。本実施形態の場合、１／１ゲイン画像２０３は、階層処理において最も上位の階層の画像に相当する。この１／１ゲイン画像２０３のデータは、階層処理部２０７と縮小部２０４とに送られる。
【００１９】
縮小部２０４は、ゲイン生成部２０２から供給された１／１ゲイン画像２０３に対して縮小処理を行う。縮小処理の方法は公知の方法を用いることができ、詳細な説明は省略するが、例えば画像を所定の単位領域ごとに加算し、加算した画素数で正規化するなどの方法等を用いる。本実施形態の場合、縮小部２０４は、１／１ゲイン画像２０３を例えば１／１６に縮小処理した１／１６ゲイン画像２０５と、１／１ゲイン画像２０３を例えば１／２５６に縮小処理した１／２５６ゲイン画像２０６とを生成する。本実施形態の場合、１／１６ゲイン画像２０５は中位の階層の画像の相当し、１／２５６画像２０６は最も下位の画像に相当する。縮小部２０４により生成された１／１６ゲイン画像２０５のデータと１／２５６ゲイン画像２０６のデータとは、階層処理部２０７に送られる。なお、１／１ゲイン画像２０３と１／１６ゲイン画像２０５と１／２５６ゲイン画像２０６は何れもゲイン画像であるが、縮小率が高い画像、つまり階層が下位の画像になるほど、高周波成分が取り除かれて低周波成分が残っている画像となる。
【００２０】
階層処理部２０７は、１／１ゲイン画像２０３と１／１６ゲイン画像２０５と１／２５６ゲイン画像２０６の各階層の画像を階層加算してゲインマップ画像を生成する。階層処理部２０７の構成と処理の詳細については後述する。階層処理部２０７により生成されたゲインマップ画像のデータは、ゲイン乗算部２０９に送られる。
【００２１】
ゲイン乗算部２０９は、階層処理部２０７で生成されたゲインマップ画像のデータを入力画像２００のデータに対して乗算することにより、出力画像２１０を生成する。ここで、ゲインマップ画像は、前述の輝度画像に対し、輝度値が小さいほど大きな値となるゲイン係数、つまり暗い領域ほど大きな値のゲイン係数が乗算されたゲイン画像から生成されている。したがって、このゲインマップ画像を入力画像２００に乗算した場合、入力画像２００の暗部に対して比較的大きなゲインが掛けられるようになり、出力画像２１０は、暗部補正によるトーンマッピング処理が行われた画像となる。
【００２２】
図２は、階層処理部２０７の詳細な構成を示す図である。
図２の階層処理部２０７は、第１拡大部３００、ラインメモリ３０１、領域抽出部３０２、第１階層加算部３０３、第２拡大部３０４、第２階層加算部３０６、ラインメモリ３０５を有して構成されている。図２では図示していないが、第１拡大部３００、領域抽出部３０２、第１階層加算部３０３、第２拡大部３０４、第２階層加算部３０６の各サブモジュールは、それぞれ図１のＲＡＭ１０４を介してデータの入出力が行われる。すなわち、各サブモジュールからの出力データは、それぞれ、ＲＡＭ１０４に一時的に記憶された後に読み出されて、次の（後段の）サブモジュールに入力される。ＲＡＭ１０４へのデータの書き込みと、ＲＡＭ１０４からのデータの読み出しは、ＤＭＡコントローラ１０５による制御の下で行われる。
【００２３】
また、第１拡大部３００、領域抽出部３０２、第１階層加算部３０３、第２拡大部３０４、第２階層加算部３０６の各サブモジュールには、図２に示すように制御部３１０〜３１４が設けられている。各制御部３１０〜３１４は、各々に対して予め設定されているパラメータを基に、画像をブロック分割する／しない、ブロック分割が行われる場合のブロックサイズ（画素数）や位置の制御等を行う。パラメータは、ブロック分割する／しない、ブロックサイズ及び位置、相対オフセット等を含む情報であり、それら情報が階層毎にそれぞれ設定されている。ブロック分割する／しないのパラメータは、サブモジュールにおいてブロック分割を行うか否かを表す情報として設定される。ブロックサイズ及び位置のパラメータは、サブモジュールで画像のブロック分割が行われる場合に、画像に対する各分割ブロックの位置及びブロックサイズを表す情報として設定されている。相対オフセットのパラメータは、サブモジュールで画像のブロック分割が行われる場合に、各分割ブロックの相対的な位置を表す値として設定されている。各制御部３１０〜３１４は、例えば画素カウンタを有しており、ブロック分割を行う場合には、画像の画素をカウントした画素数を基に、ブロック分割数、ブロックサイズ、位置等の制御を行う。例えば、ブロック分割が行われる場合、画素カウンタは、画像の画素数をカウントし、前述のパラメータにより設定された分割ブロックの位置及びブロックサイズに相当する画素数を区切りとしてブロック分割するような制御を行う。また、本実施形態では、ＤＭＡコントローラ１０５によるＲＡＭ１０４からのデータの読み出し時に、ブロック分割する／しないが制御される。
【００２４】
前述したように、図２の階層処理部２０７において、第１拡大部３００、領域抽出部３０２、第１階層加算部３０３、第２拡大部３０４、第２階層加算部３０６の各サブモジュールは、ＲＡＭ１０４を介してデータの入出力を行うようになされている。また、それら各サブモジュールは、階層毎に設定されているパラメータを基に、各階層における画像をブロック分割する／しないが制御され、また、ブロック分割が行われる階層ではパラメータに基づくブロック分割が行われる。そして、階層処理部２０７は、各階層の画像（ブロック分割が行われる階層では分割ブロック毎の画像）に対して後述するような処理が行われる。以下、これらのことを踏まえた上で、図２の階層処理部２０７の各部の説明を行う。
【００２５】
図２の階層処理部２０７において、前述した上位階層の１／１ゲイン画像２０３のデータは第２階層加算部３０６に入力される。中位階層の１／１６ゲイン画像２０５のデータは第１階層加算部３０３に入力され、下位階層の１／２５６ゲイン画像２０６のデータは第１拡大部３００に入力される。
【００２６】
第１拡大部３００は、１／２５６ゲイン画像２０６に対して拡大処理を行う。本実施形態では、１／２５６ゲイン画像２０６を１６倍に拡大する処理を行う。詳細については後述するが、第１の実施形態の場合、１／２５６ゲイン画像２０６はブロック分割が行われずに画像全体が一括して拡大処理される。第１拡大部３００における拡大処理の方法は、例えば隣接画素を用いたバイリニア補間等の処理を用いることができる。また、拡大処理の際、第１拡大部３００は、ラインメモリ３０１に蓄積した隣接ラインのデータを用いることで垂直方向の補間をも行う。第１拡大部３００において１／２５６ゲイン画像２０６が１６倍に拡大処理されたゲイン画像、つまり１／１６ゲイン画像のデータは、領域抽出部３０２に送られる。
【００２７】
領域抽出部３０２は、第１拡大部３００で拡大処理されたゲイン画像（１／１６ゲイン画像）から一部の領域を特定領域として切り出す領域抽出処理を行う。領域抽出部３０２における領域抽出処理は画素単位で行われる。領域抽出部３０２による領域抽出処理の詳細については後述する。領域抽出部３０２から出力されたデータは、第１階層加算部３０３に送られる。
【００２８】
第１階層加算部３０３は、前述した１／１６ゲイン画像２０５のデータと、領域抽出部３０２からの出力データとを階層加算処理により合成する。本実施形態の場合、第１階層加算部３０３は、１／１６ゲイン画像２０５のデータと領域抽出部３０２からの出力データとに対し、それぞれ一律に所定の係数比を掛けてから加算する。詳細については後述するが、第１の実施形態の場合、第１階層加算部３０３は、１／１６ゲイン画像２０５をブロック分割し、その分割ブロックのデータと、領域抽出部３０２で抽出された特定領域のデータとを、階層加算処理により合成する。この第１階層加算部３０３による分割ブロック毎の階層加算処理後のデータは、第２拡大部３０４に送られる。
【００２９】
第２拡大部３０４は、第１拡大部３００と同様のバイリニア補間等の処理により、第１の階層加算部３０３による階層加算処理後のデータに対して１６倍の拡大処理を行う。詳細については後述するが、第１の実施形態の場合、第２拡大部３０４は、第１の階層加算部３０３による分割ブロック毎の階層加算処理後のデータを１６倍に拡大する処理を行う。また、第２拡大部３０４は、第１拡大部３００の例と同様に、ラインメモリ３０５に蓄積した隣接ラインのデータを用いることで垂直方向の補間をも行う。第１階層加算部３０３による階層加算処理後のデータは１／１６ゲイン画像であるため、第２拡大部３０４で分割ブロック毎に１６倍に拡大処理された画像は、分割ブロック毎の１／１ゲイン画像となる。第２拡大部３０４による拡大処理で得られた分割ブロック毎の１／１ゲイン画像のデータは、第２階層加算部３０６に送られる。
【００３０】
第２階層加算部３０６は、前述した１／１ゲイン画像２０３のデータと、第２拡大部３０４から供給された１／１ゲイン画像のデータとを階層加算処理により合成する。本実施形態の場合、第２階層加算部３０６は、１／１ゲイン画像２０３のデータと第２拡大部３０４から供給された１／１ゲイン画像のデータとに対し、第１階層加算部３０３と同様にそれぞれ一律に所定の係数比を掛けてから加算する。詳細については後述するが、第１の実施形態の場合、第２階層加算部３０６は、１／１ゲイン画像２０３をブロック分割し、その分割ブロックのデータと、第２拡大部３０４からの分割ブロック毎の１／１ゲイン画像とを、階層加算処理により合成する。そして、第２階層加算部３０６は、階層加算処理後の全ての分割ブロックのデータを、図１のゲイン乗算部２０９に出力する。
【００３１】
以下、本実施形態において、階層処理部２０７で使用されているラインメモリ（３０１，３０５）に必要となるメモリサイズ（容量）と、画像を一度に処理できる最大水平画素数とについて説明する。ここで、階層処理部２０７において、画像を一度に処理できる水平の最大画素数は例えば１０００画素であるとする。ただし、階層処理部２０７が画像を一度に処理できる水平の最大画素数は、ラインメモリのサイズに依存する。また、ラインメモリのサイズは、拡大処理が行われる前の画像の水平サイズ以上あればよい。例えばラインメモリ３０５の場合は、階層処理部２０７内の各サブモジュールのうち第２拡大部３０４による拡大処理前の１／１６ゲイン画像のラインのデータを蓄積する。このため、ラインメモリ３０５は、階層処理部２０７が一度に処理できる水平最大画素数（１０００）を、１／１６ゲイン画像の水平サイズ（１６）で割った値（１０００÷１６＝６２．５）≒６３画素のサイズのメモリであればよい。一方、ラインメモリ３０１には、第１拡大部３００に入力される画像、つまりブロック分割されていない画像が供給される。ブロック分割されていない画像は、入力画像２００の画角に相当する画像であるが、第１拡大部３００に入力されるのは前述したように１／１ゲイン画像が１／２５６に縮小された１／２５６ゲイン画像である。したがって、入力画像２００の水平方向の最大サイズが例えば８０００画素であった場合、ラインメモリ３０１は、最大サイズ（８０００）を１／２５６で割ったサイズ、つまり８０００÷２５６＝３１．２５≒３２画素のサイズのメモリであればよい。
【００３２】
次に、図３と図４のフローチャートを用いて、図２の階層処理部２０７で行われる処理の流れについて説明する。なお、以下の説明の場合、これらのフローチャートの処理は、図１や図２のハードウェア構成により実行されているが、ＣＰＵ等がプログラムを実行することにより実現されてもよい。
第１の実施形態の場合、階層処理部２０７は、上位階層の１／１ゲイン画像２０３と中位階層の１／１６ゲイン画像２０５についてはブロック分割を行い、下位階層の１／２５６ゲイン画像２０６についてはブロック分割を行わないようになされている。ここでは、ブロック分割と処理の内容を分かりやすく示すために、先ず、図３のフローチャートを参照して、上位階層と中位階層だけなく下位階層をも含む全階層が同じ分割ブロック数に分割されて処理される例について説明する。すなわち、図３のフローチャートは、全階層で同じ分割ブロック数へのブロック分割が行われて、それら分割ブロック毎に拡大処理と階層加算処理が行われる場合の処理の流れを示している。
【００３３】
図３のステップＳ４０１において、階層処理部２０７の第１拡大部３００は、入力された１／２５６ゲイン画像２０６をｘ個のブロックに分割する。同様に、第１階層加算部３０３は、入力された１／１６ゲイン画像２０５をｘ個のブロックに分割し、第２階層加算部３０６は、入力された１／１ゲイン画像２０３をｘ個のブロックに分割する。ステップＳ４０１の後、階層処理部２０７の処理はステップＳ４０２に進む。以下のステップＳ４０２からステップＳ４０６までの処理は分割ブロック毎に順次行われる。
【００３４】
ステップＳ４０２では、第１拡大部３００は、分割ブロックの１／２５６ゲイン画像２０６に対し１６倍の拡大処理を行って１／１６ゲイン画像を生成する。ステップＳ４０２の後、階層処理部２０７の処理は、第１階層加算部３０３にて行われるステップＳ４０３に進む。なお、図３のフローチャートの場合、領域抽出部３０２は、第１拡大部３００での拡大処理により生成された分割ブロックの１／１６ゲイン画像を、そのままスルー処理して第１階層加算部３０３に出力する。
【００３５】
ステップＳ４０３では、第１階層加算部３０３は、分割ブロックの１／１６ゲイン画像２０５と、第１拡大部３００で１６倍拡大処理された分割ブロックの１／１６ゲイン画像とを、分割ブロック単位の階層加算処理により合成する。ステップＳ４０３の後、階層処理部２０７の処理は、第２拡大部３０４にて行われるステップＳ４０４に進む。
【００３６】
ステップＳ４０４では、第２拡大部３０４は、第１階層加算部３０３での階層加算処理により合成された分割ブロックの１／１６ゲイン画像を１６倍に拡大処理する。ステップＳ４０４の後、階層処理部２０７の処理は、第２階層加算部３０６にて行われるステップＳ４０５に進む。
【００３７】
ステップＳ４０５では、第２階層加算部３０６は、分割ブロックの１／１ゲイン画像２０３と、第２拡大部３０４での１６倍拡大処理による分割ブロックの１／１ゲイン画像とを、分割ブロック単位の階層加算処理により合成する。ステップＳ４０５の後、第２階層加算部３０６は、ステップＳ４０６に処理を進める。
【００３８】
ステップＳ４０６では、第２階層加算部３０６は、全ての分割ブロックに対する処理が終わったか否かを判定し、未処理の分割ブロックが残っている場合には、ステップＳ４０２に処理を戻す。これにより、階層処理部２０７では、未処理の分割ブロックに対して、ステップＳ４０２〜４０５の処理が行われることになる。一方、第２階層加算部３０６は、ステップＳ４０６において全ての分割ブロックの処理が完了したと判定した場合、階層処理部２０７における階層処理が完了したとして、図３のフローチャートの処理を終了する。
【００３９】
この図３の例のように、全階層を同じ分割ブロック数に分割した場合には、分割ブロック毎に、順次、下位の階層から拡大処理を行って一つ上位の階層の画像と合成し、さらにその階層の画像を拡大処理して上位の階層の画像と合成するという処理を繰り返す。なお、この例では、階層数が３階層の例を示しているが、階層数が例えば２階層や４階層以上でも同様の処理が行われることになる。
【００４０】
図３のフローチャートでは、全階層が同じ分割ブロック数に分割されて処理される例を説明したが、第１の実施形態の場合には、上位階層と中位階層についてブロック分割を行い、一方、下位階層についてはブロック分割を行わないようになされている。図４のフローチャートは、第１の実施形態における処理の流れを示している。すなわち、図４のフローチャートでは、１／１６ゲイン画像２０５と１／１ゲイン画像２０３はブロック分割されて処理されるが、１／２５６ゲイン画像２０６はブロック分割されずに画像全体が一括で処理される。
【００４１】
図４のステップＳ５０１において、階層処理部２０７の第１階層加算部３０３は、入力された１／１６ゲイン画像２０５をｘ個のブロックに分割し、また、第２階層加算部３０６は、入力された１／１ゲイン画像２０３をｘ個のブロックに分割する。一方、図４のステップＳ５０１において、第１拡大部３００は、１／２５６ゲイン画像２０６についてはブロック分割を行わない。ステップＳ５０１の後、階層処理部２０７の処理はステップＳ５０２に進む。以下のステップＳ５０２からステップＳ５０７までの処理は分割ブロック毎に順次行われる。
【００４２】
ステップＳ５０２では、第１拡大部３００は、ブロック分割されていない１／２５６ゲイン画像２０６に対して１６倍の拡大処理を行って１／１６ゲイン画像を生成する。ステップＳ５０２の後、階層処理部２０７の処理は、領域抽出部３０２にて行われるステップＳ５０３に進む。
【００４３】
ステップＳ５０３では、領域抽出部３０２は、第１拡大部３００で拡大処理された１／１６ゲイン画像から一部の領域を特定領域として抽出する。具体的には、領域抽出部３０２は、第１拡大部３００で拡大処理された１／１６ゲイン画像から、１／１６ゲイン画像２０５の分割ブロックのサイズ及び位置に対応した画像領域を、特定領域として抽出する。ステップＳ５０４の後、階層処理部２０７の処理は、第１階層加算部３０３にて行われるステップＳ５０４の処理に進む。
【００４４】
ステップＳ５０４では、第１階層加算部３０３は、分割ブロックの１／１６ゲイン画像２０５と、領域抽出部３０２にて抽出された特定領域の画像とを、階層加算処理により合成する。ステップＳ５０４の後、階層処理部２０７の処理は、第２拡大部３０４にて行われるステップＳ５０５に進む。
【００４５】
ステップＳ５０５では、第２拡大部３０４は、第１階層加算部３０３での階層加算処理により合成された分割ブロックの１／１６ゲイン画像を１６倍に拡大処理する。ステップＳ５０５の後、階層処理部２０７の処理は、第２階層加算部３０６にて行われるステップＳ５０６に進む。
【００４６】
ステップＳ５０６では、第２階層加算部３０６は、分割ブロックの１／１ゲイン画像２０３と、第２拡大部３０４で１６倍拡大処理された分割ブロックの１／１ゲイン画像とを、階層加算処理により合成する。ステップＳ５０６の後、第２階層加算部３０６は、ステップＳ５０７に処理を進める。
【００４７】
ステップＳ５０７では、第２階層加算部３０６は、全ての分割ブロックに対する処理が終わったか否かを判定し、未処理の分割ブロックが残っている場合には、ステップＳ５０２に処理を戻す。これにより、階層処理部２０７では、未処理の分割ブロックに対して、ステップＳ５０２〜５０７の処理が行われることになる。すなわち図４のフローチャートの場合、領域抽出部３０２には、第１拡大部３００による拡大処理後の１／１６ゲイン画像が、上位側の階層（つまり中位階層）における分割ブロック数に相当する回数だけＲＡＭ１０４から読み出されて入力されることになる。そして、領域抽出部３０２では、ＲＡＭ１０４から読み出された１／１６ゲイン画像から、中位階層における分割ブロックのサイズ及び位置に対応した特定領域を抽出する処理が行われる。
【００４８】
第２階層加算部３０６は、ステップＳ５０７において全ての分割ブロックの処理が完了したと判定した場合、階層処理部２０７における階層処理が完了したとして、図４のフローチャートの処理を終了する。
【００４９】
以下、前述したような第１の実施形態における上位階層と中位階層のブロック分割処理と、下位階層の画像に対する特定領域の抽出処理について説明する。
図５（ａ）〜図５（ｃ）は、第１の実施形態における画像のブロック分割処理と特定領域の抽出処理の考え方を説明するための図である。
図５（ａ）は前述した１／１ゲイン画像２０３に対するブロック分割の概要を、図５（ｂ）は１／１６ゲイン画像２０５に対するブロック分割の概要を、図５（ｃ）は１／２５６ゲイン画像２０６に対する拡大処理と特定領域の抽出処理の概要を表す図である。図５（ａ）〜図５（ｃ）の例では、水平方向の分割数が"５"であり、分割ブロック数ｘ＝５となされている例を挙げている。なお本実施形態では、垂直方向の分割は行われていないが、本実施形態は垂直方向に分割する場合も同様に可能である。
【００５０】
本実施形態において、図５（ａ）に示した１／１ゲイン画像２０３の各分割ブロックＢ１〜Ｂ４における水平サイズ（水平方向の画素数）の画素数制約は１６の倍数としている。したがって、１／１ゲイン画像２０３の各分割ブロックＢ１〜Ｂ４における水平サイズは、"ｎ"を自然数として、１６ｎ，３２ｎ，４８ｎ，６４ｎのように表される。なお、各分割ブロックＢ１〜Ｂ４の水平サイズの画素数制約は、本実施形態のような階層処理が行われる場合の階層数や、コーデック形式など様々な要因に応じて決められる数値である。また、１／１ゲイン画像２０３の分割ブロックＢ５は、１／１ゲイン画像２０３を各分割ブロックＢ１〜Ｂ４で分割した際の余りの領域からなるブロックであるため、水平サイズは１６の倍数でなくてもよい。この１／１ゲイン画像２０３の各分割ブロックＢ１〜Ｂ５の水平方向の開始座標は、前述した１６ｎ毎のブロックの区切りの位置となる。
【００５１】
また、図５（ｂ）に示した１／１６ゲイン画像２０５は、１／１ゲイン画像２０３を１／１６に縮小した画像である。このため、１／１６ゲイン画像２０５の各分割ブロックＢ１〜Ｂ４の水平サイズ及び開始座標は、１／１ゲイン画像２０３の例の１／１６で１６ｎ÷１６＝ｎとなり、それぞれｎ，２ｎ，３ｎ，４ｎのように表される。すなわち、１／１６ゲイン画像２０５の各分割ブロックＢ１〜Ｂ４の水平サイズは整数となり、開始座標も整数で等間隔となるため、例えばＲＡＭ１０４における画像データの読み出し制御が複雑になることはない。なお、１／１６ゲイン画像２０５の分割ブロックＢ５は、１／１６ゲイン画像２０５を各分割ブロックＢ１〜Ｂ４で分割した際の余りの領域からなるブロックである。
【００５２】
一方、図５（ｃ）に示した１／２５６ゲイン画像２０６は、前述したように画像全体を１６倍する拡大処理が行われた後、上位側の階層（中位階層）の分割ブロックの処理が行われる毎に、ＲＡＭ１０４から画像全体が一括して読み出される。すなわち、下位階層ではブロック分割が行われていないため、下位階層において拡大処理された１／１６ゲイン画像は、上位側の階層（中位階層）における分割ブロックの水平サイズに相当する画角の領域より広い画角の領域に相当した画像となる。そして、領域抽出部３０２は、第１拡大部３００で拡大処理されてＲＡＭ１０４から読み出された１／１６ゲイン画像から、１／１６ゲイン画像２０６の分割ブロックに対応した特定領域のみを抽出する。例えば領域抽出部３０２は、１／１６ゲイン画像２０５で１ブロック目の分割ブロックＢ１が処理される際には、１／２５６ゲイン画像２０６の拡大処理後の１／１６ゲイン画像から、１／１６ゲイン画像２０５の分割ブロックＢ１に対応した特定領域Ｂ１を抽出する。領域抽出部３０２は、１／１６ゲイン画像２０５で２ブロック目の分割ブロックＢ２が処理される際には、１／２５６ゲイン画像２０６の拡大処理後の１／１６ゲイン画像から、１／１６ゲイン画像２０５の分割ブロックＢ２に対応した特定領域Ｂ２を抽出する。以下同様である。すなわち、領域抽出部３０２が抽出する特定領域の開始座標及び水平サイズは、１／１６ゲイン画像２０５の各分割ブロックに対応した開始座標及び水平サイズと同じになされる。なお、１／２５６ゲイン画像２０６の拡大処理後の１／１６ゲイン画像から特定領域が抽出された後の残りの領域は、後段の第１階層加算部３０３での階層加算処理の際には不要であるためカットされる（使用されずに削除される）。
【００５３】
図６（ａ）〜図６（ｃ）は、具体的な数値を挙げて画像のブロック分割と特定領域の抽出の考え方を説明するための図である。図５（ａ）〜図５（ｃ）の例と同様に、図６（ａ）は１／１ゲイン画像２０３の分割ブロック、図６（ｂ）は１／１６ゲイン画像２０５の分割ブロック、図６（ｃ）は１／２５６ゲイン画像２０６の拡大処理と特定領域を表している。
【００５４】
図６（ａ）に示した１／１ゲイン画像２０３の画像全体の水平サイズ（水平方向の画素数）は４６８８画素であるとする。また、１／１ゲイン画像２０３の各分割ブロックＢ１〜Ｂ４の水平サイズは、前述した最大水平画素数の１０００以下で且つ１６の倍数である９９２画素とする。ただし、１／１ゲイン画像２０３の各分割ブロックＢ１〜Ｂ４による分割後の余りの分割ブロックＢ５の水平サイズは７２０画素になっている。この図６（ａ）の例の場合、各分割ブロックＢ１〜Ｂ５のそれぞれの読み出し開始位置は、水平方向の画素数に換算するとそれぞれ"０"，"９９２"，"１９８４"，"２９７６"，"３９６８"のように整数となる。なお、これら読み出し開始位置の画素数は、前述した画素カウンタによりカウントされる画素数に相当する。
【００５５】
また、図６（ｂ）に示す１／１６ゲイン画像２０５の場合、画像全体の水平サイズは、１／１ゲイン画像２０３の画像全体の水平サイズ（４６８８）の１／１６であるため、４６８８÷１６＝２９３画素となる。また、１／１６ゲイン画像２０５における各分割ブロックＢ１〜Ｂ４の水平サイズは、１／１ゲイン画像２０３の分割ブロックの水平サイズ（９２２）の１／１６であるため、９９２÷１６＝６２画素になる。なお、１／１６ゲイン画像２０５の各分割ブロックＢ１〜Ｂ４による分割後の余りの分割ブロックＢ５の水平サイズは４５画素になっている。したがって、１／１６ゲイン画像２０５における各分割ブロックＢ１〜Ｂ５のそれぞれの読み出し開始位置は、"０"，"６２"，"１２４"，"１８６"，"２４８"のように整数となる。
【００５６】
一方、図６（ｃ）に示す１／２５６ゲイン画像２０６の画像全体の水平サイズは、１／１ゲイン画像２０３の画像全体の水平サイズ（４６８８）の１／２５６であるため、４６８８÷２５６＝１８．３画素となり、小数値を繰り上げることで１９画素となる。なお、図６（ｃ）の１／２５６ゲイン画像２０６において、図中斜線で示す領域は、繰上げにより増やした領域を表している。ここで例えば、１／２５６ゲイン画像２０６に対して、１／１ゲイン画像２０３や１／１６ゲイン画像２０５と同様に例えば５分割によるブロック分割を行う場合について考えてみる。この場合、１／２５６ゲイン画像２０６を５分割した各分割ブロックＢ１〜Ｂ４の水平サイズは３．８７５画素になり、小数値が存在することになる。なお、１／２５６ゲイン画像２０６の分割ブロックＢ５の水平サイズは、１９画素から各分割ブロックＢ１〜Ｂ４を除いた余りと図中斜線で示す領域とを合わせたサイズとなり、小数値が存在するサイズとなる。このように、各分割ブロックの水平サイズに小数値が存在すると、分割ブロック単位でＲＡＭ１０４から画像を読み出す処理が非常に複雑になってしまう。
【００５７】
これに対し、第１の実施形態では、前述したように１／２５６ゲイン画像２０６についてはブロック分割を行わずに画像全体を一括してＲＡＭ１０４から読み出すようにしているため、前述のような小数値を扱う必要がない。第１の実施形態では、前述のように、第１拡大部３００にて１／２５６ゲイン画像２０６を１６倍に拡大処理した後、領域抽出部３０２において、１／１６ゲイン画像２０５の各分割ブロックに合わせたサイズ及び位置から特定領域を抽出している。すなわち下位階層の拡大処理後の１／１６ゲイン画像は、中位階層の分割ブロック相当の画角より広い画角相当の画像であり、特定領域は、この下位階層の拡大処理後の１／１６ゲイン画像の中から、中位階層の分割ブロックの画角相当の領域として抽出される。具体的には、特定領域は、１／１６ゲイン画像２０５の各分割ブロックの読み出し開始位置に合った整数の画素数で表される位置で抽出される。図６（ｃ）の例では、１／１６ゲイン画像２０５の分割ブロックＢ２（６２画素から１２４画素までの分割ブロック）に対応した特定領域が抽出されている例を表している。この図６（ｃ）の例の場合、特定領域は、１／２５６ゲイン画像２０６を１６倍に拡大処理した１／１６ゲイン画像の中の６２画素から１２４画素までの間の領域となる。なお、特定領域が抽出された後の残りの領域は、後段の階層加算処理では不要であるためカットされる。
【００５８】
このように、第１の実施形態では、下位側の階層の画像については、その階層に対して一つ上位側の階層に合わせた拡大処理がなされた後、その拡大処理後の画像から、上位側の階層の分割ブロックの水平サイズ及び開始座標に対応した特定領域が抽出される。そして、領域抽出された特定領域の画像と、上位側の階層の分割ブロックの画像とが階層加算されて合成される。このため、第１の実施形態では、画素位置の計算を整数で行うことができ、ＲＡＭ１０４からの読み出し処理が非常に容易になる。すなわち、第１の実施形態によれば、サイズの小さいラインメモリを使用可能にすることによるコストの低減を実現することのみならず、ＲＡＭ１０４からの読み出し処理を容易にすることによる高い処理パフォーマンスの画像処理が実現可能となる。
【００５９】
図７（ａ）〜図７（ｃ）は、入力画像２００の水平方向の最大サイズが例えば８０００画素であった場合に階層毎のブロック分割数の例を説明するための図である。また、図８（ａ）〜図８（ｃ）は、入力画像２００の水平方向の最大サイズが例えば８０００画素であった場合において、第１の実施形態における上位階層及び中位階層のブロック分割数と、下位階層の画像の例を説明するための図である。なお、図７（ａ）〜図７（ｃ）の例は、第１の実施形態に係る図８の例との対比に用いる図であり、全階層において同じ分割数でブロック分割が行われた場合を示している。図７（ａ）と図８（ａ）は１／１ゲイン画像２０３を、図７（ｂ）と図８（ｂ）は１／１６ゲイン画像２０５を、図７（ｃ）と図８（ｃ）は１／２５６ゲイン画像２０６を示している。
【００６０】
図７（ａ）〜図７（ｃ）と図８（ａ）〜図８（ｃ）において、１／１ゲイン画像２０３の水平サイズは前述したように８０００画素である。このため、１／１６ゲイン画像２０５の水平サイズは８０００÷１６＝５００画素となり、１／２５６ゲイン画像２０６の水平サイズは８０００÷２５６＝３１．２５で小数値を繰り上げて３２画素とする。また、図７（ａ）〜図７（ｃ）と図８（ａ）〜図８（ｃ）において、１／１ゲイン画像２０３を一度に処理できる水平サイズは例えば最大で１０００画素であるとする。
【００６１】
図７（ａ）〜図７（ｃ）において、１／１ゲイン画像２０３を一度に処理できる水平サイズは最大１０００画素であるため、１／２５６ゲイン画像２０６の分割ブロックの水平サイズを整数にするためには２５６で割り切れるという画素数の制約が生ずる。この制約の下、図７（ａ）に示すように、１／１ゲイン画像２０３をブロック分割した場合の水平サイズの最大値は７６８画素となる。同様に、図７（ｂ）に示すように、１／１６ゲイン画像２０５の分割ブロックの水平サイズは７６８÷１６＝４８で４８画素となり、図７（ｃ）に示すように、１／２５６ゲイン画像２０６の分割ブロックの水平サイズは７６８÷２５６＝３で３画素になる。したがって、図７（ａ）〜図７（ｃ）の例では、各階層の分割ブロック数はそれぞれ１１ブロックとなる。
【００６２】
一方、第１の実施形態では前述したように上位階層と中位階層ではブロック分割を行うが、下位階層ではブロック分割が行われない。また、１／１ゲイン画像２０３を一度に処理できる水平サイズは最大１０００画素であるとする。第１の実施形態の場合、ブロック分割されるのは１／１ゲイン画像２０３と１／１６ゲイン画像２０５であり、１／２５６ゲイン画像２０６はブロック分割されない。図８（ａ）〜図８（ｃ）の例では、１／１６ゲイン画像２０５の分割ブロックの水平サイズが整数になる必要があるため、１／１ゲイン画像２０３をブロック分割した場合の水平サイズの最大値は、１６で割り切れる最大値である９９２画素となる。また、１／１６ゲイン画像２０５の各分割ブロックの水平サイズは、９９２÷１６＝６２で６２画素となる。これらのことから、第１の実施形態の場合は、図８（ａ）と図８（ｂ）に示すように、１／１ゲイン画像２０３と１／１６ゲイン画像２０５の分割ブロック数は９ブロックとなる。一方、図８（ｃ）に示すように、１／２５６ゲイン画像２０６は画像全体を一括で読み出すためブロック分割されず、前述したように、中位階層の１／１６ゲイン画像２０５の分割ブロック数に相当する回数だけＲＡＭ１０４から読み出される。すなわち、図８（ａ）〜図８（ｃ）の場合、図７（ａ）〜図７（ｃ）のように全階層で同じ分割数でブロック分割を行う場合と比較して、分割数を少なくすることができる。
【００６３】
なお、前述の実施形態では１／１、１／１６、１／２５６の三つの階層による階層処理の例を示したが、更に多くの階層で処理を行う場合も容易に適応可能である。この場合、それら多数の階層を中間で二つの階層群に分け、上位側の各階層を上位階層群、下位側の各階層を下位階層群とする。上位階層群では分割ブロック単位で処理を行い、下位階層群ではブロック分割を行わない。また、下位階層群については、拡大処理して上位階層群の画像との階層加算を行う手前で、その上位階層群の分割ブロックに合わせた特定領域を抽出する。そして、それら上位階層群の分割ブロックと、拡大処理された下位階層群から抽出された特定領域とを階層加算する。この例のように、三つ以上の多数の階層で処理を行う場合にも、本実施形態は適用可能であり、前述同様の効果が期待できる。
【００６４】
前述したように、本実施形態の階層処理部２０７は、階層毎に分けられた画像の拡大処理と階層加算を行う際、階層毎にブロック分割する／しないを制御し、下位側の階層ではブロック分割を行わず、上位側の階層ではブロック分割を行うようにする。そして、階層処理部２０７は、ブロック分割しない下位側の階層で拡大処理した画像から、上位側の階層の分割ブロックに対応した特定領域を抽出し、その特定領域の画像と、上位側の階層の分割ブロックとで階層加算を行う。これにより、本実施形態によれば、各階層の画像をブロック単位に分割して処理する際に、分割ブロックの水平サイズの画素数の制約を緩和して分割ブロック数をより少なくすることができ、処理パフォーマンス向上させることができる。
【００６５】
また、前述した実施形態では、階層処理を行う例を挙げたが、画像を分割ブロック単位で処理する場合において、階層処理以外で例えば拡大処理を含む様々な機能にも適用可能である。例えば、二つの画像の待ち合わせ処理を行い、加減算処理やテンプレートマッチング処理などが行われる場合においても、分割数の制約や緩和を行うことができる。
【００６６】
この場合においても、階層加算以外の部分においては前述同様の制御を行えばよく、画像の読み出しは一括で行い、拡大処理の後に分割ブロックに合わせた特定領域を抽出するという処理は同様である。このとき、領域抽出部で抽出される特定領域に対応し、拡大処理前の画像の端部の画素の位置が小数値で表される位置になる場合には、少なくともその位置を含む整数となる画素の位置から読み出すようにする。また、この場合の拡大処理における拡大率は、拡大後の端部の画素の位置が整数となる倍率であればよい。
【００６７】
＜第２の実施形態＞
前述した第１の実施形態では、下位階層の１／２５６ゲイン画像２０６はブロック分割せずに画像全体を一括でＲＡＭ１０４から読み出して処理を行う例を示した。第２の実施形態では、１／２５６ゲイン画像２０６についてもブロック分割し、分割ブロック単位で必要な領域のみを読み出す例について説明する。なお、第２の実施形態の撮像装置は前述の図１の撮像装置１００と同じ構成であり、また、画像処理部１１０の階層処理部２０７も前述の図２と同じ構成であるため、それらの図示と説明は省略する。第２の実施形態の場合、第１拡大部３００は１／２５６ゲイン画像２０６をブロック分割し、分割ブロック毎に１６倍の拡大処理を行う。
【００６８】
図９は、第２の実施形態において１／２５６ゲイン画像２０６をブロック分割した場合の分割ブロック毎のＲＡＭ１０４からの読み出しについての説明に用いる図である。図９の例では、図示を省略しているが、１／１ゲイン画像２０３と１／１６ゲイン画像２０５は、例えば前述した図５（ａ）と図５（ｂ）や図６（ａ）と図６（ｂ）に示したようにそれぞれ５ブロックに分割されているとする。また、１／２５６ゲイン画像２０６は、図６（ｃ）の所で説明したように、各分割ブロックＢ１〜Ｂ４と分割ブロックＢ５のように５ブロックに分割されるとする。
【００６９】
第２の実施形態のように１／２５６ゲイン画像２０６を分割ブロックＢ１〜Ｂ５に分割した場合、各分割ブロックにおいて後段の処理で必要な画素の先頭または最後の位置は、図６（ｃ）で説明したように画素数に換算して小数値で表される位置になる。このため、第２の実施形態の場合、ＲＡＭ１０４から１／２５６ゲイン画像２０６の各分割ブロックＢ１〜Ｂ５のデータを読み出す際には、少なくとも小数値で表される位置を含む整数位置から、画像の読み出しが行われる。
【００７０】
具体的に説明すると、１／２５６ゲイン画像２０６において、分割ブロックＢ１の水平方向の先頭位置は整数位置（０）なので、分割ブロックＢ１の水平方向の先頭位置からそのまま読み出しが行われる。一方、分割ブロックＢ１の水平方向の最後の位置は画素数換算で３．８７５なので、３．８７５を含み、かつ、画素数が大きい方向の整数位置である４画素目までが読み出される。次に、分割ブロックＢ２の先頭位置は画素数換算で３．８７５なので、３．８７５を含み、かつ、画素数が小さい方向の整数位置である３画素目からの読み出しが行われる。一方、分割ブロックＢ２の最後の位置は画素数換算で７．７５なので、７．７５を含み、かつ、画素数が大きい方向の整数位置である８画素目までが読み出される。以下、同様にして、それぞれの分割ブロックＢ３〜Ｂ５について、それぞれ先頭又は最後の位置の小数値を含むように画像の読み出しが行われる。そして、第１拡大部３００は、前述したように分割ブロックＢ１〜Ｂ５に対してそれぞれ小数値を含む整数位置までの余剰分を有する領域について、１６倍の拡大処理を行った後、領域抽出部３０２に出力する。すなわち第２の実施形態において、下位階層における分割ブロックに余剰分を含めた領域は、上位側の階層（中位階層）における分割ブロックの水平サイズに相当する画角より広い画角に相当した領域となる。
【００７１】
第２の実施形態の領域抽出部３０２は、前述のように分割ブロックに余剰分を含めた領域が１６倍に拡大処理された１／１６ゲイン画像から、余剰分に相当する領域をカットする。そして、領域抽出部３０２は、そのカット後の分割ブロックの１／１６ゲイン画像のデータを、第１積層加算部３０３に出力する。第１積層加算部３０３以降の各部の処理は第１の実施形態の場合と同様であるため、その説明は省略する。
【００７２】
このように、第２の実施形態の場合、前述したように分割ブロックＢ１〜Ｂ５に対して、それぞれ小数値を含む整数位置までの余剰分が含まれた領域の読み出しが行われる。すなわち、第２の実施形態において、第１拡大部３００からは、上位側の階層（中位階層）における分割ブロックの水平サイズに相当する画角より広い画角に相当した領域を拡大した画像が出力される。また、領域抽出部３０２では、分割ブロックに余剰分を含めた領域が１６倍に拡大処理された１／１６ゲイン画像から、余剰分に相当する領域をカットしている。このため、第２の実施形態の場合、１／２５６ゲイン画像２０６の読み出し位置や読み出しサイズ、及び、領域抽出部３０２においてカットする領域が分割ブロック毎に異なることになる。例えば、図９の例の場合、分割ブロックＢ１では余剰分を含む読み出し時の水平サイズは４画素であるのに対し、分割ブロックＢ２〜Ｂ４では５画素、分割ブロックＢ５では３画素となる。このため、第２の実施形態の場合は、前述したブロック分割の際のパラメータの設定を制御することにより、１／２５６ゲイン画像２０６の読み出し位置や読み出しサイズ、領域抽出部３０２におけるカットする領域を変更可能としている。具体的には、図９の例の場合、分割ブロックＢ１では余剰分を含む４画素分の領域を分割ブロックのサイズ及び位置とするようなパラメータを設定する。同様に、分割ブロックＢ２〜Ｂ４では余剰分を含む５画素分の領域を分割ブロックのサイズ及び位置とし、分割ブロックＢ５では余剰分を含む３画素分の領域を分割ブロックのサイズ及び位置とするようなパラメータをそれぞれ設定する。これにより図９の例に示したような読み出しが可能となる。
【００７３】
前述したように、第２の実施形態によれば、１／２５６ゲイン画像２０６の各分割ブロックＢ１〜Ｂ５において小数値の画素位置を扱う必要がなく、また、１／２５６ゲイン画像２０６の各分割ブロックＢ１〜Ｂ５の読み出し量は必要最小限で済むことになる。したがって、第２の実施形態の場合は、前述した第１の実施形態のように１／２５６ゲイン画像２０６の画像全体が一括して読み出される場合と比較して、画像の読み出し量を削減することができる。第２の本実施形態においても同様に、コストの低減を実現しつつ、高い処理パフォーマンスの画像処理が実現可能となる。
【００７４】
以上説明したように、第１の実施形態及び第２の実施形態によれば、画像を階層毎にブロック分割して処理を行う際に、画素数の制約を緩和することができる。また、第１の実施形態で説明した処理を採用すれば、パラメータの変更などの制御をより単純にした処理が可能となる。一方、第２の実施形態で説明した処理を採用した場合には、画像の読み出し量を、より少なくすることができる。第１、第２の実施形態の何れにおいても、分割ブロック数を従来の処理よりも少なくすることができ、処理パフォーマンス向上させることができる。
【００７５】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７６】
上述の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明は、その技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００７７】
２０１  輝度変換部、２０２  ゲイン生成部、２０４  縮小部、２０７  階層処理部、２０９  ゲイン乗算部、３００  第１拡大部、３０１，３０５  ラインメモリ、３０２  領域抽出部、３０３  第１階層加算部、３０４  第２拡大部、３０６  第２階層加算部、３１０〜３１４  制御部
【図１】
2018067849.tif 000003
【図２】
2018067849.tif 000004
【図３】
2018067849.tif 000005
【図４】
2018067849.tif 000006
【図５】
2018067849.tif 000007
【図６】
2018067849.tif 000008
【図７】
2018067849.tif 000009
【図８】
2018067849.tif 000010
【図９】
2018067849.tif 000011