(58)【調査した分野】(Int.Cl.,DB名)
前記読み出し部は、前記矩形領域の内部の画素値と同一の値を前記境界領域に設定することにより前記境界領域の画素値を設定することを特徴とする請求項1記載の画像処理装置。
前記読み出し部は、前記原画像データに含まれる全ての複数の矩形領域の画像データを順次読み出し、前記原画像データの外周エッジ部分に接する矩形領域については前記拡張画像データを前記メモリの当該矩形領域に対応する位置に書き込み、前記原画像データの外周エッジ部分に接しない矩形領域については読み出した矩形領域の画像データをそのまま前記メモリの当該矩形領域に対応する位置に書き込み、
前記読み出し部は更に、前記読み出し部により前記メモリに書き込まれた各矩形領域の画像データと当該矩形領域の周辺の一定サイズの領域の画像データとを一つの拡張矩形領域の画像データとして読み出し、前記フィルタ処理部は前記拡張矩形領域の画像データに対してフィルタ処理を施すことを特徴とする請求項1乃至4いずれか一項記載の画像処理装置。
【背景技術】
【0002】
デジタルスチルカメラ等の撮像機器では、撮像センサで取り込まれた画像のアナログ信号をアナログフロントエンドにおいてデジタル信号に変換し、その後、デジタル信号である画像データに対して種々の画像処理を適用する。その際、フィルタ処理等の画像処理については、画像データをまずフレームメモリであるSDRAM(Synchronous Dynamic Random Access Memory)に書き込んでおき、SDRAMから読み出したデータに対して画像処理を適用する。
【0003】
SDRAMに書き込まれた画像データの全体サイズが水平方向N画素であり垂直方向Mラインであるとする。このとき、フィルタの縦のサイズがL画素であるとすると、水平方向について1ライン分のN画素のデータを、フィルタ処理に必要なライン数Lだけ纏めて読み出せば、水平方向の全データについてフィルタ処理を実行できる。しかしながらこの場合、フィルタ処理の計算を実行するフィルタ処理部において、N×L画素分のメモリが必要になってしまう。
【0004】
フィルタ処理部におけるメモリの容量を削減するために、画像データを複数の矩形領域に分割し、SDRAMから各矩形領域毎に読み出した画像データに対してフィルタ処理を適用すればよい。例えば水平方向1ラインを16分割すれば、フィルタの縦のサイズがL画素であるとすると、フィルタ処理部においてはN/16×L画素分のメモリがあればよい。但し、矩形領域の外周エッジ部分の画素についてのフィルタ処理後の値を求めるためには、矩形領域の外側の領域(以降、境界領域と呼ぶ)の画素値が必要になる。従って、SDRAMから矩形領域の画像データを読み出す際には、矩形領域の画像データとともにその周囲に追加する境界領域の画像データも同時に読み出して、フィルタ処理部に供給することになる。
【0005】
図1は、SDRAMから読み出す際の矩形領域と境界領域との位置関係のパターンを示す図である。
図1には、矩形領域10とその境界領域11a乃至11iとが示される。以下に説明するように、SDRAMから読み出す矩形領域10とその境界領域との位置関係には、9個の異なるパターンが存在する。
【0006】
まず、全体の画像データの左上コーナーに位置する矩形領域10を読み出す場合、その右隣の矩形領域10の一部と下に隣接する矩形領域10の一部とを境界領域として一緒に読み出すことになる。この場合、SDRAMから読み出すデータは、
図1の左上に示すように、矩形領域10と境界領域11aのようになる。他のコーナーに位置する矩形領域10を読み出す場合も同様であり、
図1の右上に示す矩形領域10と境界領域11c、
図1の左下に示す矩形領域10と境界領域11g、
図1の右下に示す矩形領域10と境界領域11iのようになる。
【0007】
全体の画像データの上側エッジに位置する矩形領域10を読み出す場合、その左隣の矩形領域10の一部と、右隣の矩形領域10の一部と、下に隣接する矩形領域10の一部とを境界領域として一緒に読み出すことになる。この場合、SDRAMから読み出すデータは、
図1の真ん中上に示すように、矩形領域10と境界領域11bのようになる。他のエッジに位置する矩形領域10を読み出す場合も同様であり、
図1の真ん中左に示す矩形領域10と境界領域11d、
図1の真ん中右に示す矩形領域10と境界領域11f、
図1の真ん中下に示す矩形領域10と境界領域11hのようになる。
【0008】
また例えば、全体の画像データの何れのエッジにも接しない矩形領域10(即ち周囲を他の矩形領域10で囲まれている矩形領域10)を読み出す場合には、その周囲の8個の矩形領域の一部を境界領域として一緒に読み出すことになる。この場合、SDRAMから読み出すデータは、
図1の真ん中に示すように、矩形領域10と境界領域11bのようになる。
【0009】
このように、SDRAMから読み出す矩形領域10が存在する全体の画像データ中の位置に応じて、矩形領域10とそれと一緒に読み出す境界領域との位置関係が異なることになる。具体的には、
図1に示すように、異なる9個の位置関係のパターンが存在する。従って、SDRAMから矩形領域10の画像データを読み出す読み出し部においては、読み出し対象の矩形領域10の位置に応じて9個の異なる位置関係のパターンを読み出せるように、読み出しアドレスを制御する必要がある。また読み出し対象の矩形領域10の位置に応じて、読み出す画像データのサイズも変化させる必要がある。その結果、読み出し処理の制御が複雑になってしまう。そのような複雑な制御をおこなう読み出し部を設計することは、設計時間の増大及び費用の増加につながる。
【0010】
フィルタ処理部は、フィルタ処理後の出力データとして、矩形領域10のサイズの画像データを出力する。従って、
図1に示されるように矩形領域10と境界領域との位置関係が変化する場合、フィルタ処理部への入力とフィルタ処理部からの出力との間の位置関係が変化することになる。
【0011】
図2は、フィルタ処理部の入力画像データと出力画像データとの位置関係のパターンを示す図である。
図2には、フィルタ処理部への入力画像データ12a乃至12iとそこに含まれる矩形領域10とが示される。矩形領域10が、フィルタ処理部からの出力画像データとなる。以下に説明するように、入力画像データと出力画像データとの位置関係には、4個の異なるパターンが存在する。
【0012】
まず、全体の画像データの左上コーナーに位置する矩形領域10をフィルタ処理する場合、フィルタ処理部の入力画像データと出力画像データとの位置関係は、
図2の左上に示すように、入力画像データ12aと矩形領域10のようになる。このとき、入力画像データ12aの左上コーナーの座標に対して、出力画像データの左上コーナーの座標は一致している。
【0013】
また全体の画像データの上側エッジに位置する矩形領域10をフィルタ処理する場合、フィルタ処理部の入力画像データと出力画像データとの位置関係は、
図2の真ん中上に示すように、入力画像データ12bと矩形領域10のようになる。また全体の画像データの右上コーナーに位置する矩形領域10をフィルタ処理する場合、フィルタ処理部の入力画像データと出力画像データとの位置関係は、
図2の右上に示すように、入力画像データ12cと矩形領域10のようになる。これらの場合、入力画像データの左上コーナーの座標に対して、出力画像データの左上コーナーの座標は水平右方向にずれたものとなる。
【0014】
また全体の画像データの左側エッジに位置する矩形領域10をフィルタ処理する場合、フィルタ処理部の入力画像データと出力画像データとの位置関係は、
図2の真ん中左に示すように、入力画像データ12dと矩形領域10のようになる。また全体の画像データの左下コーナーに位置する矩形領域10をフィルタ処理する場合、フィルタ処理部の入力画像データと出力画像データとの位置関係は、
図2の左下に示すように、入力画像データ12gと矩形領域10のようになる。これらの場合、入力画像データの左上コーナーの座標に対して、出力画像データの左上コーナーの座標は垂直下方向にずれたものとなる。
【0015】
上記以外の場合、フィルタ処理部の入力画像データと出力画像データとの位置関係は、
図2の右下の4個のパターンに示すように、入力画像データ12e、12f、12h、及び12iと矩形領域10との位置関係のようになる。これらの場合、入力画像データの左上コーナーの座標に対して、出力画像データの左上コーナーの座標は右斜め下方向にずれたものとなる。
【0016】
このように、SDRAMから読み出す矩形領域10が存在する全体の画像データ中の位置に応じて、フィルタ処理部の入力画像データと出力画像データとの位置関係が異なることになる。具体的には、
図2に示すように、異なる4個の位置関係のパターンが存在する。従って、フィルタ処理部においては、処理対象の矩形領域10の位置に応じて4個の異なる位置関係のパターンを認識して出力画像データを生成する必要がある。その結果、フィルタ処理の出力座標制御が複雑になってしまう。そのような複雑な制御をおこなうフィルタ処理部を設計することは、設計時間の増大及び費用の増加につながる。
【発明を実施するための形態】
【0022】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。なお各図において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【0023】
図3は、撮像装置の構成の一例を示す図である。
図3に示す撮像装置は、レンズ21、撮像センサ22、AFE(アナログフロントエンド)23、DBE(デジタルバックエンド)24、ストレージメディア25、及びSDRAM(Synchronous Dynamic Random Access Memory)26を含む。DBE24は、前処理部31、画像処理部32、後処理部33、書き込み部34、及び読み出し部35を含む。
【0024】
図3及び以降の図において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能ブロックは、当該機能を有する電子回路ブロックにより実現したハードウェア構成でもよいし、電子回路である汎用のプロセッサにおいてソフトウェアを実行することにより当該機能を実現したソフトウェア構成でもよい。ハードウェアの場合、各機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。ソフトウェアの場合、各機能ブロックは、他のブロックと論理的にある程度分離された1つのソフトウェアモジュールであってもよいし、或いは他のブロックと論理的に一体となったソフトモジュール中の1つの機能を示したものであってもよい。
【0025】
撮像センサ22は、レンズ21を介して入射する光を検出して対象物を撮像し、撮像した画像をアナログ信号として出力する。AFE23は、撮像センサ22からのアナログ信号をデジタル信号に変換することにより、デジタルの画像データを出力する。DBE24は、デジタルの画像データに対して種々の処理を適用し、処理後の画像データをストレージメディア25に出力する。ストレージメディア25は、DBE24から供給された処理後の画像データを格納する。
【0026】
DBE24の前処理部31は、AFE23からの画像データに対して欠陥画素の画素値を補正する欠陥画素補正、装置特性により発生する画像濃度のむらを補正するシェーディング補正、ホワイトバランス調整、ガンマ補正等を実行する。画像処理部32は、フィルタ処理等の種々の画像処理を行う。画像処理部32はまず、前処理部31による処理後の画像データを書き込み部34に供給し、書き込み部34が画像データをSDRAM26に書き込む。
【0027】
読み出し部35は、当該画像データの一部である矩形領域の画像データをSDRAM26から読み出す。この時読み出し部35は、矩形領域の周囲に追加する境界領域の画素値を設定し、矩形領域の画像データと画素値設定済みの境界領域の画像データとを含む拡張画像データを出力する。読み出し部35が出力する拡張画像データは画像処理部32に供給される。読み出し部35は、境界領域への画素値設定のために、垂直コピー部35a及び水平コピー部35bを含む。読み出し部35は、垂直コピー部35a及び水平コピー部35bを用いて、矩形領域の内部の画素値と同一の値を境界領域に設定することにより境界領域の画素値を設定してよい。なお、矩形領域の内部の画素値と同一の値を境界領域に設定するのではなく、他の方法で境界領域の画素値設定を行ってもよい。例えば、境界領域を一定の画素値で埋めることにより、境界領域の画素値設定を行ってもよい。
【0028】
画像処理部32は、フィルタ処理等の種々の画像処理を実行する。フィルタ処理においては、例えばノイズ除去、エッジ強調、平滑化等のためのフィルタが用いられてよい。画像処理部32による画像処理後の画像データは、書き込み部34を介してSDRAM26に書き込まれてもよいし、画像処理部32から直接に後処理部33に供給されてもよい。画像処理後の画像データがSDRAM26に書き込まれた場合には、その後、読み出し部35により当該画像データを読み出して、読み出した画像データを後処理部33に供給してよい。
【0029】
後処理部33は、フィルタ処理、画像縮小処理、画像拡大処理、色空間変換処理、JPEG(Joint Photographic Experts Group)エンコード等の処理を実行する。後処理部33の処理によりストレージメディア25への格納に適した形式にされた画像データは、ストレージメディア25へ供給されて格納される。
【0030】
図4は、境界領域への画素値設定処理の第1実施例について説明するための図である。撮像センサ22により撮像された画像データは、書き込み部34により、SDRAM26に画像データ41として書き込まれる。
図4は、処理の流れの概略を示す図であり、
図3に示されるAFE23や前処理部31による処理については図示を省略している。また
図4の上部には、各処理の前後における画像データの様子を模式的に示してある。なお
図4には、書き込み部34が2つ示されているが、これら2つの書き込み部34は、処理の流れを示すために便宜上2つとして示されているにすぎず、その物理的実体は
図3に示す一つの書き込み部34に相当する。
【0031】
垂直コピー部35a及び水平コピー部35bは、CPU(Central Processing Unit)40により制御される。読み出し部35の垂直コピー部35aは、画像データ41の一部である矩形領域10を含む画像データ12aをSDRAM26から読み出す。この画像データ12aは、矩形領域10とその周辺の一定サイズの境界領域の画像データとを含む。当該矩形領域10の下側、右下側、及び右側には、隣接する矩形領域が存在するので、それらの隣接する矩形領域の一部分の画像データと着目矩形領域10の画像データとを画像データ12aとしてSDRAM26から読み出している。着目矩形領域10は画像データ41の左上コーナーに位置しているので、当該矩形領域10の上側、左上側、及び左側には境界領域の画像データが存在しない。
【0032】
垂直コピー部35aは、矩形領域10を含む画像データ12aの上側に追加する境界領域13aの画素値を設定し、矩形領域10の画像データを含む画像データ12aと画素値設定済みの境界領域13aの画像データとを含む拡張画像データを出力する。この際、画像データ12aの上側エッジに近接する画像データ12aの内部の画素値を境界領域13aにコピーすることにより、境界領域13aの画素値を設定してよい。
【0033】
垂直コピー部35aが生成した拡張画像データは、水平コピー部35bに供給される。水平コピー部35bは、矩形領域10を含む画像データ12aの左側に追加する境界領域13bの画素値を設定し、矩形領域10の画像データを含む画像データ12aと画素値設定済みの境界領域13a及び13bの画像データとを含む拡張画像データを出力する。この際、画像データ12aの左側エッジに近接する画像データ12aの内部の画素値を境界領域13bにコピーすることにより、境界領域13bの画素値を設定してよい。
【0034】
処理部32aは、水平コピー部35bが出力する拡張画像データに対してフィルタ処理Aを適用し、フィルタ処理後の画像データ14を出力する。処理部32bは、処理部32aが出力する画像データ14に対してフィルタ処理Bを適用し、フィルタ処理後の画像データ15を出力する。書き込み部34は、処理部32bが出力する画像データ15をSDRAM26に書き込む。
【0035】
以下同様に、画像データ41の全ての矩形領域に対して、必要に応じて境界領域に画素値を設定したのちにフィルタ処理A及びフィルタ処理Bを施し、フィルタ処理後の画像データをSDRAM26に書き込むことで、フィルタ処理後の画像データ42が得られる。また処理部32bが出力する画像データ15に対しては、更に処理部32cによる画像処理Cが適用されてよい。
【0036】
なお、
図4に示す元の画像データ41は、水平方向3個及び垂直方向2個の合計6個の矩形領域を含むように図示されているが、画像データ41は実際には、水平方向及び垂直方向により多くの矩形領域を含んでいてよい。この場合、元の画像データ41の4つのコーナーに位置する矩形領域10については、垂直方向に隣接する境界領域及び水平領域に隣接する境界領域の両方について、垂直コピー部35a及び水平コピー部35bによる画素値設定処理が行われる。また元の画像データ41の上側及び下側の2つのエッジに接する矩形領域10については、垂直方向に隣接する境界領域について、垂直コピー部35aによる画素値設定処理が行われる。また
図4に示す元の画像データ41の左側及び右側の2つのエッジに接する矩形領域10については、水平方向に隣接する境界領域について、水平コピー部35bによる画素値設定処理が行われる。
【0037】
図5は、境界領域への画素値設定処理の効果を説明するための図である。
図4において説明したように、垂直コピー部35a及び/又は水平コピー部35bによる境界領域への画素値設定処理により、矩形領域10の上下左右の4方向の周囲にフィルタ計算に使用可能な境界領域が設けられた拡張画像データが得られる。
【0038】
図5において、境界領域の追加位置に着目すると、境界領域17a乃至17d及び17f乃至17iを追加する8通りの追加の仕方が存在し、更に境界領域を追加しない場合を含めると、全体で9個の異なるパターンが存在する。例えば原画像データの左上コーナーに位置する矩形領域10の場合は、境界領域17aとして示されるように、矩形領域10の上側と左側とに境界領域が追加される。また例えば、原画像データの右側エッジに位置する矩形領域10の場合は、境界領域17fとして示されるように、矩形領域10の右側に境界領域が追加される。また例えば、原画像データの外周エッジに接しない矩形領域10の場合は、その周囲の全方向において隣接矩形領域の画像データが境界領域として元から存在するので、新たに境界領域を追加する必要はない。
【0039】
図5に示される9個のパターンの何れにおいても、矩形領域10の画像データ、その周囲の隣接矩形領域の一部分である境界領域の画像データ、及び追加された境界領域の画像データを合わせると、一定のサイズの矩形画像データ16a乃至16iとなる。即ち、矩形画像データ16a乃至16iは、その縦横のサイズが互いに同一であり、またその左上コーナーの座標に対する矩形領域10の左上コーナーの座標の位置関係は一定である。具体的には、矩形画像データ16a乃至16iの左上コーナーに対して、矩形画像データ16a乃至16iの内部の矩形領域10の左上コーナーは、矢印で示されるように右下方向に一定の距離だけずれている。
【0040】
従って、矩形画像データ16a乃至16iをフィルタ処理する場合、フィルタ処理部の入力画像データと出力画像データとの位置関係は、常に一定となる。即ち、フィルタ処理部においては、処理対象の矩形領域10の位置に応じて異なる位置関係のパターンを認識して出力画像データを生成する必要がなく、フィルタ処理の出力座標制御は単純なものであってよい。そのような単純な制御をおこなうフィルタ処理部を設計することは比較的容易であり、設計時間の短縮及び費用の削減につながる。
【0041】
図6は、境界領域への画素値設定処理の第2実施例について説明するための図である。撮像センサ22により撮像された画像データは、書き込み部34により、SDRAM26に画像データ51として書き込まれる。
図6は、処理の流れの概略を示す図であり、
図3に示されるAFE23や前処理部31による処理については図示を省略している。また
図6の上部には、各処理の前後における画像データの様子を模式的に示してある。なお
図6には、書き込み部34が2つ示されているが、これら2つの書き込み部34は、処理の流れを示すために便宜上2つとして示されているにすぎず、その物理的実体は
図3に示す一つの書き込み部34に相当する。また読み出し部35と、垂直コピー部35a及び水平コピー部35bとについても同様であり、これらの物理的実体は
図3に示す一つの読み出し部35に相当する。
【0042】
垂直コピー部35a及び水平コピー部35bは、CPU(Central Processing Unit)40により制御される。読み出し部35の垂直コピー部35aは、画像データ51の一部である矩形領域をSDRAM26から読み出す。このとき読み出される画像データは、読み出し対象の矩形領域の位置に関わらず、矩形領域の画像データのみであってよい。即ち、着目矩形領域の周囲に存在する隣接する矩形領域の一部分の画像データを、着目矩形領域の画像データとともに読み出す必要はない。
【0043】
垂直コピー部35aは、読み出した矩形領域が画像データ51の上側又は下側のエッジに接する矩形領域である場合には、画像データ51の外部に相当する境界領域に画素値を設定するようにして境界領域を追加する。垂直コピー部35aは、矩形領域の画像データと画素値設定済みの境界領域の画像データとを含む拡張画像データを出力する。この際、矩形領域の上側又は下側エッジに近接する矩形領域の内部の画素値を境界領域にコピーすることにより、境界領域の画素値を設定してよい。
【0044】
垂直コピー部35aが生成した拡張画像データは、水平コピー部35bに供給される。水平コピー部35bは、読み出した矩形領域が画像データ51の右側又は左側のエッジに接する矩形領域である場合には、画像データ51の外部に相当する境界領域に画素値を設定するようにして境界領域を追加する。水平コピー部35bは、矩形領域の画像データと画素値設定済みの境界領域の画像データとを含む拡張画像データを出力する。この際、矩形領域の右側又は左側エッジに近接する矩形領域の内部の画素値を境界領域にコピーすることにより、境界領域の画素値を設定してよい。
【0045】
水平コピー部35bが生成した拡張画像データは、SDRAM26に書き込まれる。その際、各矩形領域の画像データ51内での位置関係が保たれるように、水平コピー部35bは各矩形領域の画像データをSDRAM26に書き込んでいく。その結果、SDRAM26には、画像データ53が書き込まれることになる。画像データ53は、矩形領域が縦横に並んだ元の画像データ51と、その画像データ51の周囲に追加された境界領域52とを含む。
【0046】
以上のようにして、読み出し部(垂直コピー部35a及び水平コピー部35b)は、画像データ51に含まれる全ての複数の矩形領域の画像データをSDRAM26から順次読み出す。読み出し部35は、画像データ51の外周エッジ部分に接する矩形領域については拡張画像データをSDRAM26の当該矩形領域に対応する位置に書き込む。読み出し部35は更に、画像データ51の外周エッジ部分に接しない矩形領域については読み出した矩形領域の画像データをそのままSDRAM26の当該矩形領域に対応する位置に書き込む。
【0047】
その後、読み出し部35は、SDRAM26に書き込まれた画像データ53から、各矩形領域の画像データと当該矩形領域の周辺の一定サイズの境界領域の画像データとを、一つの拡張矩形領域の画像データとして読み出す。読み出した拡張矩形領域の画像データは、例えば、
図6に示すように、隣接矩形領域の一部のデータと画素設定された境界領域とが矩形領域10の周囲に配置された画像データ16aである。この拡張矩形領域の画像データは、処理部32aに供給される。
【0048】
処理部32aは、SDRAM26から読み出された拡張矩形領域の画像データに対してフィルタ処理Aを適用し、フィルタ処理後の画像データ14を出力する。処理部32bは、処理部32aが出力する画像データ14に対してフィルタ処理Bを適用し、フィルタ処理後の画像データ15を出力する。書き込み部34は、処理部32bが出力する画像データ15をSDRAM26に書き込む。
【0049】
以下同様に、画像データ41の全ての矩形領域に対して、必要に応じて境界領域に画素値を設定したのちにフィルタ処理A及びフィルタ処理Bを施し、フィルタ処理後の画像データをSDRAM26に書き込むことで、フィルタ処理後の画像データ42が得られる。また処理部32bが出力する画像データ15に対しては、更に処理部32cによる画像処理Cが適用されてよい。
【0050】
図6に示す画素値設定処理の第2実施例では、読み出し部35がSDRAM26から最初に画像データ51を読み出すときには、画像データ51の各矩形領域10だけをそのまま読み出せばよい。即ち、矩形領域10の周辺の境界領域を同時に読み出す必要はない。従って、読み出し部35が最初に画像データ51の矩形領域10を読み出すときには、矩形領域10の位置に関わらず、一定の大きさの画像データを読み出せばよく、読み出しアドレスの制御は単純となる。また読み出し部35がSDRAM26から2回目に画像データ53を読み出すときには、画像データ53の各矩形領域10とその周囲を囲む一定の大きさの境界領域の画像データとを、一つの拡張矩形領域の画像データとして読み出せばよい。この拡張矩形領域の画像データは、矩形領域10の位置に関わらず、一定の大きさであり且つ一定の形状である。従って、読み出し部35が2回目に画像データ53の矩形領域10を読み出すときには、矩形領域10の位置に関わらず、一定の大きさの画像データを読み出せばよく、読み出しアドレスの制御は単純となる。そのような単純な制御をおこなう読み出し部を設計することは比較的容易であり、設計時間の短縮及び費用の削減につながる。
【0051】
以上の説明から分かるように、
図3に示す画像処理部32では、フィルタ処理の入力画像データに、フィルタ演算を計算するために必要な量の境界領域の画像データが既に付加されている。従って、画像処理部32のフィルタ処理は、周辺画素のデータを外挿(パディング)により生成する処理を実行する必要がない。
【0052】
図3の画像処理部32がフィルタ処理を実行する場合、複数のフィルタ処理を順次実行することがある。この場合、複数のフィルタ処理のうちで最初に実行されるフィルタ処理への入力画像データに、十分な量の境界領域の画像データが付加されている必要がある。以下にこれについて説明する。
【0053】
図7は、複数の異なるサイズのフィルタ処理を実行する場合の境界領域量について説明するための図である。
図7において、
図4と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【0054】
図7に示す例では、3つのフィルタ処理が順番に実行される。処理部32aによるフィルタ処理Aは、サイズが7のフィルタマトリクスを用いて実行される。処理部32bによるフィルタ処理ABは、サイズが5のフィルタマトリクスを用いて実行される。処理部32cによるフィルタ処理Cは、サイズが3のフィルタマトリクスを用いて実行される。このとき3つのフィルタ処理を実行して最終的に矩形領域10の大きさの画像データを得るためには、最後のフィルタ処理Cへの入力画像データにおいて、矩形領域10の上下左右に3画素分の画像データがフィルタ計算用の境界領域として付加されてる必要がある。従って、矩形領域10の大きさをX画素×Y画素としたとき、フィルタ処理Bの出力画像データ(フィルタ処理Cの入力画像データ)は(X+3×2)画素×(Y+3×2)画素の大きさである必要がある。またサイズが5のフィルタ処理Bの出力画像データが(X+3×2)画素×(Y+3×2)画素の大きさであるためには、フィルタ処理Aの出力画像データは(X+(3+5)×2)画素×(Y+(3+5)×2)画素の大きさである必要がある。またサイズが7のフィルタ処理Aの出力が(X+(3+5)×2)画素×(Y+(3+5)×2)画素の大きさであるためには、フィルタ処理Aの入力は(X+(3+5+7)×2)画素×(Y+(3+5+7)×2)画素の大きさである必要がある。
【0055】
以上の説明から分かるように、垂直コピー部35a及び水平コピー部35bは、それぞれ15画素の幅を有する境界領域63a及び63bを矩形領域10に追加して、処理部32aへの入力画像データを生成する。この入力画像データに対して、処理部32aが、サイズが7のフィルタ処理Aを適用することにより、矩形領域10の周囲に幅8画素の境界領域が付加された画像データ64を生成する。この画像データ64に対して、処理部32bが、サイズが5のフィルタ処理Bを適用することにより、矩形領域66の周囲に幅3画素の境界領域が付加された画像データ65を生成する。この画像データ65に対して、処理部32cが、サイズが3のフィルタ処理Cを適用することにより、矩形領域10に等しい大きさの画像データ67を生成する。
【0056】
上記の動作において、読み出し部35(垂直コピー部35a及び水平コピー部35b)がSDRAM26から画像データ41を読み出して境界領域17に画素値を設定する際、CPU40が、境界領域17の大きさを適切な大きさになるように制御する。これにより、読み出し部35が、複数の一連のフィルタ処理において用いる複数のフィルタのサイズの和(上記の例の場合は15(=3+5+7)))に相当する大きさ以上の大きさの境界領域に対して画素値を設定することにより、拡張画像データを出力する。この際の境界領域の必要最小な大きさは、複数の一連のフィルタ処理において用いる複数のフィルタのサイズの和(上記の例の場合は15(=3+5+7)))である。更に、ある段のフィルタ処理部は、矩形領域のサイズの画像データの周囲に、次段のフィルタ処理において用いるフィルタのサイズに相当する大きさ以上の大きさの境界領域を有した画像データを出力する。
【0057】
図8は、複数の異なるサイズのフィルタ処理を実行する場合の境界領域量について説明するための図である。
図8において、
図7と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【0058】
図8に示す例では、処理部32a及び32cによる処理はフィルタ処理ではなく、周辺部にフィルタ計算用の境界領域は必要ない。処理部32bによる処理はサイズ5のフィルタによるフィルタ処理である。この場合、垂直コピー部35aは、矩形領域10に5画素幅の境界領域が付加された画像データ71aをSDRAM26から読み出す。その後、垂直コピー部35a及び水平コピー部35bは、サイズ5に相当する大きさ(即ち5画素幅)の境界領域73a及び73bにそれぞれ画素値を設定することにより、拡張画像データを出力する。この拡張画像データに対して、処理部32bが、サイズが5のフィルタ処理Bを適用することにより、矩形領域10に等しい大きさの画像データ75を生成する。
【0059】
図9は、境界領域量の設定動作の一例を示すフローチャートである。なお
図9及び以降の図において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
【0060】
ステップS1で、カメラモードを設定する。ステップS2では静止画撮影が行われる。ステップS3で使用フィルタとして、サイズ7の処理A、サイズ5の処理B、及びサイズ3の処理Cが指定される。ステップS4で、境界領域量として15が計算される。
【0061】
ステップS5では動画撮影が行われる。ステップS6で使用フィルタとして、サイズ5の処理Bが指定される。ステップS7で、境界領域量として5が計算される。
【0062】
ステップS8では夜景撮影が行われる。ステップS9で使用フィルタとして、サイズ7の処理A及びサイズ5の処理Bが指定される。ステップS10で、境界領域量として12が計算される。
【0063】
ステップS11では人物撮影が行われる。ステップS12で使用フィルタとして、サイズ5の処理B及びサイズ3の処理Cが指定される。ステップS13で、境界領域量として8が計算される。
【0064】
上記の各処理の後、ステップS14で、計算された境界領域量を有する境界領域を設定するように、CPU40により垂直コピー部35a及び水平コピー部35bが制御される。これにより、適切な大きさの境界領域を有する画像データが生成され、フィルタ処理に供給される。
【0065】
図10は、フィルタの一例を示す図である。
図10に示すフィルタは、7画素×7画素のマトリクス82であり、49個の画素位置にそれぞれの重み係数が割り当てられている。中心画素81の位置の画素値を求めるためには、当該画素の画素値とその周囲の上下左右方向それぞれ3画素幅の領域に存在する画素値とが用いられる。
【0066】
図11は、フィルタの一例を示す図である。
図11に示すフィルタは、5画素×5画素のマトリクス83であり、25個の画素位置にそれぞれの重み係数が割り当てられている。中心画素81の位置の画素値を求めるためには、当該画素の画素値とその周囲の上下左右方向それぞれ2画素幅の領域に存在する画素値とが用いられる。
【0067】
図12は、フィルタの一例を示す図である。
図12に示すフィルタは、3画素×3画素のマトリクス84であり、9個の画素位置にそれぞれの重み係数が割り当てられている。中心画素81の位置の画素値を求めるためには、当該画素の画素値とその周囲の上下左右方向それぞれ1画素幅の領域に存在する画素値とが用いられる。
【0068】
図13は、垂直コピー部の構成の一例を示す図である。
図13に示す垂直コピー部35aは、読み出し制御部91、FIFO(First-In First-Out)92、及び出力制御部93を含む。SDRAMコントローラ35cは、読み出し部35の一部であり、読み出し制御部91の制御のもとで、SDRAM26からのデータの読み出し動作を制御する。FIFO92には、SDRAM26から読み出したデータが格納される。出力制御部93は、FIFO92に格納されたデータを順次読み出す。
【0069】
図14は、垂直コピー部の動作の一例を示す図である。
図14に示す例では、垂直コピー部35aは、垂直同期信号Vsyncに同期する水平同期信号Hsyncに同期して、画像データの1ライン目から6ライン目までを順次読み出している。この動作例においては、境界領域に画素値を設定するためのコピー動作は行われていない。
【0070】
図15は、垂直コピー部の動作の一例を示す図である。
図15に示す例では、垂直コピー部35aは、垂直同期信号Vsyncに同期する水平同期信号Hsyncに同期して、画像データの各ラインを順次読み出している。但しこの動作例においては、1ライン目と2ライン目とを一度SDRAM26から読み出した後、コピーライン95及び96として示されるように、1ライン目と2ライン目とをもう一度SDRAM26から読み出している。また更に、5ライン目と6ライン目とを一度SDRAM26から読み出した後、コピーライン97及び98として示されるように、5ライン目と6ライン目とをもう一度SDRAM26から読み出している。これらのコピーラインの画像データが、境界領域の画像データとして用いられてよい。
【0071】
図16は、垂直コピー部の動作の一例を示すフローチャートである。このフローチャートの各ステップの動作は、読み出し制御部91の制御のもとでSDRAMコントローラ35cが実行する。この動作例は、
図14の読み出し動作に対応し、境界領域に画素値を設定するためのコピー動作は行われていない。
【0072】
ステップS21で読み出しを開始する。ステップS22で、読み出し制御部91が先頭アドレスを設定する。ステップS23で、読み出し制御部91がSDRAMコントローラ35cを介してSDRAM26から現在設定されているアドレスのデータを読み出す。ステップS24で、読み出し制御部91が、水平1ライン分の全画素の読み出しを完了したか否かを判断する。完了していない場合、ステップS25でアドレスを加算してステップS23に戻り、ステップS23以降の処理を繰り返す。完了した場合、ステップS26で、読み出し制御部91が、垂直画素分(即ち読み出し対象のライン数分)の画像データの読み出しを完了したか否かを判断する。完了していない場合、ステップS25でアドレスを加算してステップS23に戻り、ステップS23以降の処理を繰り返す。完了した場合、ステップS27に進み読み出し処理を完了する。
【0073】
図17は、垂直コピー部の動作の一例を示すフローチャートである。このフローチャートの各ステップの動作は、読み出し制御部91の制御のもとでSDRAMコントローラ35cが実行する。この動作例は、
図15の読み出し動作に対応し、境界領域に画素値を設定するためのコピー動作が行われる。
【0074】
ステップS31で読み出しを開始する。ステップS32で、読み出し制御部91が先頭アドレスを設定する。ステップS33で、読み出し制御部91がSDRAMコントローラ35cを介してSDRAM26から現在設定されているアドレスのデータを読み出す。ステップS34で、読み出し制御部91が、水平1ライン分の全画素の読み出しを完了したか否かを判断する。完了していない場合、ステップS35でアドレスを加算してステップS33に戻り、ステップS33以降の処理を繰り返す。完了した場合、ステップS36で、読み出し制御部91が、直前に読み出したラインがコピー対象のラインであるか否かを判断する。コピー対象のラインである場合、ステップS37でアドレスを1ライン分減算してステップS33に戻り、ステップS33以降の処理を繰り返す。コピー対象のラインでない場合、ステップS38で、読み出し制御部91が、垂直画素分(即ち読み出し対象のライン数分)の画像データの読み出しを完了したか否かを判断する。完了していない場合、ステップS35でアドレスを加算してステップS33に戻り、ステップS33以降の処理を繰り返す。完了した場合、ステップS39に進み読み出し処理を完了する。
【0075】
上記のようにして、読み出し部35は、SDRAM26から同一の画素の画素値を複数回読み出し、複数回読み出しのうちのある一回の読み出しにより得られる画素値を矩形領域の画素値として用いる。読み出し部35は更に、複数回読み出しのうちの別の一回の読み出しにより得られる画素値を、境界領域の画素値として用いる。
【0076】
図18は、水平コピー部の構成の一例を示す図である。
図18に示す水平コピー部35bは、バッファ101、セレクタ102、及び出力部103を含む。バッファ101には、垂直コピー部35aから出力される画像データが各画素ごとに順番に格納される。これにより、バッファ101は、SDRAM26から読み出されて垂直コピー部35aを介して供給される複数の画素の一連の画像値データを遅延させる。セレクタ102は、バッファ101から供給される遅延後の一連の画像値データと遅延前の一連の画像値データとから一つの画素値を順次選択して出力することにより、同一の画素の画素値を矩形領域の内部と境界領域との両方に設定する。出力部103は、セレクタ102から供給される画像データを出力する。
【0077】
図19は、水平コピー部の動作の一例を示す図である。
図19に示す例では、水平コピー部35bは、水平同期信号Hsyncに同期するクロック信号Clockに同期して、各水平ラインの画素データを順次出力している。この動作例においては、境界領域に画素値を設定するためのコピー動作は行われていない。なお各画素値は、ベイヤー配列の画素値を想定している。
【0078】
図20は、水平コピー部の動作の一例を示す図である。
図20に示す例では、水平コピー部35bは、水平同期信号Hsyncに同期するクロック信号Clockに同期して、各水平ラインの画素データを順次出力している。但しこの動作例においては、同一の画素の画素値を異なる複数のクロックタイミングにおいて重複して出力することにより、他のタイミングで出力されている画素値と同一のコピー画素値104乃至109を生成している。この動作の詳細については、以下に説明する。
【0079】
図21は、水平コピー部のバッファの一例を示すフローチャートである。
図21に示すバッファ101は、フリップフロップ(FF)112乃至119を含む。各フリップフロップのクロック入力には、クロック信号Clockが印可されてる。フリップフロップ112乃至115は従属接続され、各画素値を示すデータ信号Dataをクロック信号Clockに同期して順次伝搬させていく。これらのフリップフロップ112乃至115により、遅れのないデータD0、2クロック遅れたデータD2、及び4クロック遅れたデータD4が生成される。フリップフロップ116乃至119は従属接続され、イネーブル信号ENを、クロック信号Clockに同期して順次伝搬させていく。これらのフリップフロップ116乃至119により、遅れのないイネーブル信号D0en、2クロック遅れたイネーブル信号D2en、及び4クロック遅れたイネーブル信号D4enが生成される。
【0080】
セレクタ102は、イネーブル信号D2enがHIGHのとき、2クロック遅れたデータD2を選択する。セレクタ102は、イネーブル信号D2enがLOWのとき、イネーブル信号D0enがHIGHであれば、遅れのないデータD0を選択する。セレクタ102は、イネーブル信号D2enがLOWのとき、イネーブル信号D4enがHIGHであれば、4クロック遅れたイネーブル信号D4enを選択する。
【0081】
図22は、
図21の回路の動作の一例を示す図である。セレクタ102は、前述のようにイネーブル信号D0en、D2en、及びD4enに応じて、遅れのないデータD0、2クロック遅れたデータD2、又は4クロック遅れたデータD4を選択して出力する。その結果、
図22に出力信号OUTとして示されるような画素データが出力される。この出力信号OUTにおいて、最初の2画素はその直後の2画素のコピーであり、最後の2画素はその直前の2画素のコピーとなっている。これらのコピー画素が、境界領域の画素となってよい。
【0082】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。