以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態における撮像装置の概略構成を示したブロック図である。図1に示した撮像装置1は、CPU10と、メモリ20と、CCD30と、撮像処理部40と、画像処理部50と、表示処理部60と、表示デバイス70と、データ変換部41および51と、データ逆変換部52および62と、出力DMA部45および55と、入力DMA部56および66と、を備えている。なお、撮像装置1は、撮影した画像データを記録する機能も有しているが、説明を容易にするため、以下の説明においては、撮影した画像データを表示する場合について説明する。また、図1においては、撮像装置1内の各構成要素(処理ブロック)間での画素データの受け渡しに係るデータバスであるメモリバスの接続のみを示している。
CPU10は、撮像装置1の全体の制御を行う制御装置である。
メモリ20は、撮像装置1内の各処理ブロックが処理する画素データを一時的に記憶する、例えば、DRAM(Dynamic Random Access Memory)などのメモリである。メモリ20には、撮像装置1内の各処理ブロックによる各処理段階の画素データが一時記憶される。
CCD30は、入射した被写体光を画像信号に変換する、例えば、ベイヤー配列の固体撮像素子である。CCD30は、被写体の画素信号を撮像処理部40に出力する。
撮像処理部40は、CCD30から入力された画素信号に対して、予め定められた信号処理を行った画像データを生成する。
画像処理部50は、撮像処理部40が生成した画像データに対して、撮像装置1における種々の画像処理を行った画像データを生成する。
表示処理部60は、画像処理部50によって画像処理された画像データを、表示デバイス70に応じた表示データに変換する。表示処理部60は、変換した表示データを表示デバイス70に出力する。
表示デバイス70は、表示データを表示する、例えば、液晶などの表示装置である。
本実施形態の撮像装置1では、CCD30によって撮像された被写体の画素信号を、撮像処理部40、画像処理部50、表示処理部60が順次処理し、表示デバイス70に表示させる。このとき、各処理段階の画像データは、メモリ20を介して各処理ブロック間で受け渡される。撮像装置1内のデータ変換部41および51と、データ逆変換部52および62と、出力DMA部45および55と、入力DMA部56および66とは、各処理段階の画像データの受け渡しに係る処理ブロックである。
データ変換部41および51は、前段の処理ブロック(図1に示した本実施形態においては、撮像処理部40または画像処理部50)から入力された画像データ内の各画素データを、予め定められた配置(パッキング)方法で、メモリバスの各ビットに配置する。データ変換部41および51の構成と、データ変換部41および51による画素データのパッキング方法に関する詳細な説明は、後述する。
出力DMA部45および55は、データ変換部41または51によってメモリバスの各ビットにパッキングされた画素データからなる画像データを、DMAアクセスによってメモリ20に書き込む(記憶させる)。
入力DMA部56および66は、メモリ20に記憶されている画像データをDMAアクセスによって読み出し、読み出した画像データを、データ逆変換部52または62に出力する。
データ逆変換部52および62は、入力DMA部56または66から入力された画像データに含まれる画素データを、予め定められた配置(パッキング)方法と逆の方法で元の画像データに戻し、後段の処理ブロック(図1に示した本実施形態においては、画像処理部50または表示処理部60)に出力する。データ逆変換部52および62の構成に関する詳細な説明は、後述する。
ここで、図1に示した撮像装置1における画像データの処理について説明する。撮像装置1における撮影動作では、以下のような手順で画像データの処理が行われる。
(手順1):まず、撮像処理部40は、CCD30によって撮像された被写体の画素信号に対して、予め定められた信号処理を行った画像データ(例えば、CCD30の画素の配列に応じた画像データ)を生成する。そして、生成した画像データを、データ変換部41および出力DMA部45を介して、メモリ20に転送して一時記憶する。
(手順2):続いて、画像処理部50は、メモリ20に一時記憶している画像データを、入力DMA部56およびデータ逆変換部52を介して読み出す。そして、画像処理部50は、読み出した画像データに対して記録用の画像処理や、表示用の画像処理を行った画像データ(例えば、RGBデータや、YC422点順次フォーマットのYCbCrデータ)を生成する。その後、生成した画像データを、再びデータ変換部51および出力DMA部55を介してメモリ20に転送して一時記憶する。
(手順3):続いて、表示処理部60は、画像処理部50によって表示用の画像処理がされた画像データや、別途、メモリ20に記憶しているOSD(On−Screen Display)表示用の画像データを、入力DMA部66およびデータ逆変換部62を介して読み出し、表示デバイス70に表示させる。
なお、撮像装置1が撮影した画像データを記録する場合には、画像データの記録処理を行う図示しない記録処理部が、画像処理部50によって記録用の画像処理がされた画像データを、図示しない入力DMA部およびデータ逆変換部を介して読み出し、読み出した記録用の画像データをメモリカードなどの図示しない画像データ記録部に記録する。また、撮像装置1に、例えば、音を入出力する機能を備えている場合には、音声処理を行う図示しない音声処理部が、撮影時の音声データを、図示しないデータ変換部および出力DMA部を介してメモリ20に記憶する。また、音声処理部が、メモリ20に記憶している音声データを、図示しない入力DMA部およびデータ逆変換部を介して読み出し、読み出した音声データに応じた音声を、スピーカーなどの図示しない音出力部に出力させる。
<第1の構成>
次に、撮像装置1内のデータ変換部について説明する。なお、上記に述べたように、データ変換部41とデータ変換部51とは、接続される前段の処理ブロックと後段の処理ブロックが異なるのみである。より具体的には、図1に示したように、データ変換部41は、前段の撮像処理部40と後段の出力DMA部45との間に配置され、データ変換部51は、前段の撮画像処理部50と後段の出力DMA部55との間に配置されている。従って、データ変換部41とデータ変換部51とは、入力される画像データと出力する画像データとのデータ形式(フォーマット)が異なるのみである。以下の説明においては、代表してデータ変換部41について説明する。
データ変換部41には、図19に示したような、16行×16列のベイヤー配列の画像データ(以下、「ベイヤーデータ」という)が入力される。そして、データ変換部41は、入力されたベイヤーデータ内の画素データを、予め定められたパッキング方法で、メモリバスに配置(パッキング)したパックデータを出力する。例えば、ベイヤーデータ内の各画素データのビット数が10bitであり、メモリバスのバス幅(メモリバス幅)が32bitである場合、データ変換部41は、ベイヤーデータ内の各画素データをパッキングする単位を4転送とし、4転送を1回のバースト転送の単位とする、すなわち、1バーストを画素データのパッキング単位としてパッキングした32bitのパックデータを出力する。なお、図19に示したベイヤーデータでは、各画素データの数字がCCD30内の画素の位置を表しており、数字の前の「R」,「G」,「B」がCCD30内の画素の色を表している。より具体的には、「R」がCCD30の赤色の画素の画素データ、「G」がCCD30の緑色の画素の画素データ、「B」がCCD30の青色の画素の画素データを表している。
データ変換部41は、撮像処理部40から順次入力された10bitの画素データの各ビットのデータを、予め定められた後述するパッキング方法のいずれか1つの方法で、メモリバス上の各ビットに配置した32bitのパックデータを生成する。そして、データ変換部41は、例えば、出力DMA部45から入力される図示しないデータイネーブル信号に基づいて生成したパックデータを順次出力する。なお、データイネーブル信号は、出力DMA部45がバースト転送する際にパックデータを転送するタイミングを表す信号である。
データ変換部41がパックデータを生成する際には、まず、入力された画素データをビット毎に比較して、ビット変化の少ない画素データ(以下、「転送画素データ」という)を生成する。より具体的には、データ変換部41は、入力された画素データを予め定められたビット数の上位の画素データと下位の画素データとに分離する。そして、前回出力した下位の画素データの各ビットの値と、今回分離した下位の画素データの各ビットの値とを比較し、前回出力した下位の画素データに対して、値が変化しているビットの数が少ない下位の画素データを生成する。その後、今回分離した上位の画素データと結合し、転送画素データとする。また、データ変換部41は、下位の画素データの値が変化しているビットの数(ビット変化数)に応じた、転送画素データを生成したときの情報を出力する。
その後、データ変換部41は、予め定められたパッキング方法で、転送画素データの各ビットのデータを、メモリバスに対応したデータバス(このデータバスはメモリバスの各ビットに対応しているため、以下の説明においては、「メモリバス」として説明する)の各ビットに配置(パッキング)し、最終的に出力するパックデータとして出力する。また、データ変換部41は、転送画素データを生成したときの情報を、パッキング単位(4転送)内に存在する未使用ビットに付加して、パックデータと共に出力する。
なお、データ変換部41は、上記に述べたように、画素データが入力される毎に、転送画素データを生成し、生成した転送画素データおよび転送画素データを生成したときの情報を順次パッキングしたパックデータを順次出力することもできるが、データ変換部41内に、例えば、1バースト分、すなわち、パッキング単位(4転送)分の32bitのパックデータを一時的に保持するメモリ部を備えた構成とすることもできる。この場合には、入力された画素データをメモリ部に一旦保持し、保持したそれぞれの画素データに基づいた転送画素データを生成し、生成した転送画素データのパッキングと、転送画素データを生成したときの情報の付加とを行う。
また、入力された画素データを最初にパッキングし、その後、ビット変化の少ないパックデータの生成と、パックデータを生成したときの情報の付加とを行う構成とすることもできる。この場合には、最初にパッキングしたパックデータを、入力された画素データと同様に扱って処理する。
図2は、本実施形態の撮像装置1に備えた第1の構成のデータ変換部41の概略構成を示したブロック図である。図2に示したように、データ変換部41は、ビット分離部411と、EXOR(排他的論理和)回路412と、D−FF413と、EXOR回路414と、多数決判定部415と、ビット結合部416と、を備えている。
上記に述べたように、データ変換部41は、入力された10bitの画素データの値が変化しているビットの数が少ない転送画素データをパッキングして、データ変換部41が最終的に出力する32bitのパックデータを生成する。しかし、以下の説明においては、説明を容易にするため、データ変換部41に8bitの画素データが順次入力され、入力された画素データから転送画素データを生成し、転送画素データを生成したときの情報を付加した9bitのパックデータを出力する場合について説明する。すなわち、データ変換部41は、1つの転送画素データをパッキングしたパックデータを生成する場合について説明する。なお、複数の転送画素データをパッキングしたパックデータの生成方法に関する詳細な説明は、後述する。
以下の説明においては、データ変換部41に入力される10bitの画素データと8bitの画素データとを区別するため、8bitの画素データを入力データDIN[7:0]と表す。また、32bitのパックデータと9bitのパックデータとを区別するため、以下の説明においては、9bitのパックデータを出力データDOUT[8:0]と表す。なお、以下の説明において、入力データDINまたは出力データDOUTのビットを特定しない、すなわち、入力データDINまたは出力データDOUTの全てのビット範囲を表す場合には、データのビットの範囲を表す“[]:括弧”内の数字を省略する。
また、以下の説明においては、8bitの入力データDINを、上位4bitと下位4bitとに分離して、ビット変化の少ない転送画素データを生成する場合について説明する。
ビット分離部411は、入力された8bitの入力データDIN[7:0]を、上位4bitの入力データDIN[7:4]と下位4bitの入力データDIN[3:0]とに分離する。そして、入力データDIN[7:4]をビット結合部416に、入力データDIN[3:0]をEXOR回路412とEXOR回路414とに出力する。
EXOR回路412は、多数決判定部415から入力された反転ビットに応じて、ビット分離部411から入力された下位の入力データDINの各ビットの値を、ビット毎に反転(“1”から“0”、または“0”から“1”)した反転データ[3:0]、または下位の入力データDINの各ビットの値がそのままの非反転データ[3:0]を、ビット結合部416とD−FF413とに出力する。なお、以下の説明においては、EXOR回路412から出力される反転データまたは非反転データを、「下位画像データ」という。また、ビット分離部411から出力される上位4bitの入力データDINを、「上位画像データ」という。また、以下の説明においては、EXOR回路412が、多数決判定部415から入力された反転ビットに応じて、反転データまたは非反転データを出力する処理を、「反転処理」という。
D−FF413は、EXOR回路412から出力された下位画像データ[3:0]を保持する。このD−FF413によって保持された下位画像データは、前回出力した出力データDOUTの下位4bitの出力データDOUT[3:0]として、EXOR回路414に出力される。
EXOR回路414は、ビット分離部411から入力された下位の入力データDIN[3:0]と、D−FF413から入力された下位の出力データDOUT[3:0]との2つのデータの各ビットの値を比較して、値が変化しているビットの有無を検出する。そして、EXOR回路414は、値が変化しているビットであることを表す値=“1”、または値が変化しているビットではないことを示す値=“0”を、比較したそれぞれのビット毎に出力する。
より具体的には、EXOR回路414による2つのデータの比較においては、下位の入力データDINの各ビットと、下位の出力データDOUTの各ビットとの排他的論理和がとられる。これにより、下位の入力データDINのビットの値と下位の出力データDOUTのビットの値とが同じ値のときに“0”が出力され、下位の入力データDINのビットの値と下位の出力データDOUTのビットの値とが異なる値のときに“1”が出力される。
多数決判定部415は、EXOR回路414から入力された値が変化しているビットの有無を検出した結果に基づいて、下位の入力データDIN[3:0]が、次に下位の出力データDOUT[3:0]として出力されるときに、値が変化するビットの数(ビット変化数)を算出する。そして、多数決判定部415は、算出したビット変化数と、下位の入力データDINのビット数(データ幅:4ビット)との多数決判定を行い、反転データまたは非反転データのいずれのデータを、下位画像データとして出力するかを決定する。これにより、多数決判定部415は、前回入力された入力データDINを反転処理した後の出力データDOUTと、今回入力された入力データDINとのビット変化数に基づいて、多数決判定を行うことになる。そして、決定したデータを表す情報を反転ビットとして、EXOR回路412とビット結合部416とに出力する。
多数決判定部415による多数決判定は、算出したビット変化数が、下位の入力データDINのビット数の過半数であるか否かによって判定される。より具体的には、ビット変化数が下位の入力データDINのビット数の過半数を占める(>2)場合に、反転データを出力すると判定し、反転ビットとして“1”の値を出力する。また、多数決判定部415は、ビット変化数が下位の入力データDINのビット数の半数以下(≦2)の場合に、非反転データを出力すると判定し、反転ビットとして“0”の値を出力する。この反転ビットの値に応じて、EXOR回路412による反転処理が行われる。
EXOR回路412による反転処理においては、下位の入力データDINの各ビットと、反転ビットとの排他的論理和がとられる。これにより、EXOR回路412から反転ビットに応じた下位画像データが出力される。より具体的には、反転ビットが“1”のとき、下位の入力データDIN[3:0]の各ビットの値が反転された反転データ[3:0]が出力され、反転ビットが“0”のとき、下位の入力データDIN[3:0]の各ビットの値がそのままの非反転データ[3:0]が出力される。
なお、多数決判定部415による多数決判定は、上記に述べたように、前回出力した下位の出力データDOUTと今回出力する下位の出力データDOUTのビット変化数に基づいて行われる。しかし、例えば、下位の入力データDINのビット数が偶数である場合には、ビット変化数が下位の入力データDINのビット数の半数になる場合がある。この場合、EXOR回路412は、下位画像データとして、反転データまたは非反転データのいずれのデータを出力してもよい。
しかし、反転ビットも出力データDOUT(パックデータ)に付加されて出力されるため、反転処理の結果に応じて反転ビットが異なる値に変化すると、反転ビットの変化が下位の出力データDOUTの各ビットの変化数に加算されてしまう。このため、前回出力した下位の出力データDOUTに対して今回出力する下位の出力データDOUTのビット変化数が最も少なくなるようにするためには、下位の出力データDOUTと反転ビットとを含めた全体を考慮して、下位画像データを出力するのが望ましい。このため、多数決判定部415は、反転ビットも含めて多数決判定を行う。より具体的には、多数決判定部415は、前回出力した下位の出力データDOUTが、反転データであったか非反転データであったか、すなわち、反転ビットが“1”であったか“0”であったかに基づいて、多数決判定を行う。そして、多数決判定部415は、ビット変化数が下位の入力データDINのビット数の半数(=2)である場合には、前回出力した下位の出力データDOUTに対応した反転ビットの値と同じ値の反転ビットを、今回出力する下位の出力データDOUTに対応した反転ビットとして出力する。これにより、反転ビットの変化が下位の出力データDOUTの各ビットの変化数に加算されてしまうということを回避することができる。
ビット結合部416は、ビット分離部411から入力された上位画像データ[7:4]と、EXOR回路412から出力された下位画像データ[3:0]とを結合した転送画素データ[7:0]を生成する。また、ビット結合部416は、さらに、生成した転送画素データの最上位ビットの上位側の次のビットに、多数決判定部415から入力された反転ビットを付加(ビット結合)した出力データDOUT[8:0]を生成する。ここで生成された出力データDOUTが、データ変換部41から最終的に出力する出力データDOUT(パックデータ)として、出力DMA部45に出力される。
次に、撮像装置1内のデータ逆変換部について説明する。なお、上記に述べたように、データ逆変換部52とデータ逆変換部62とは、接続される前段の処理ブロックと後段の処理ブロックが異なるのみである。より具体的には、図1に示したように、データ逆変換部52は、前段の入力DMA部56と後段の画像処理部50との間に配置され、データ逆変換部62は、前段の入力DMA部66と後段の表示処理部60との間に配置されている。従って、データ逆変換部52とデータ逆変換部62とは、入力される画像データと出力する画像データとのデータ形式(フォーマット)が異なるのみである。以下の説明においては、代表してデータ逆変換部52について説明する。
なお、以下の説明においては、データ逆変換部52に、データ変換部41によってパッキングされた、4転送をパッキング単位とした1バーストのパックデータが、入力DMA部56を介して入力され、入力されたパックデータを、図19に示したベイヤーデータに戻す場合について説明する。従って、ベイヤーデータ内の各画素データのビット数は10bitであり、メモリバス幅は32bitであるものとして説明する。
データ逆変換部52は、入力DMA部56から順次入力された32bitのパックデータの各ビットに配置されたデータを、予め定められた後述するパッキング方法のいずれか1つの方法と逆の方法で、画像処理部50が画像処理する元の画像データ(ベイヤーデータ)に戻した10bitの画素データに復元する。そして、データ逆変換部52は、例えば、画像処理部50から入力される図示しないデータイネーブル信号に基づいて復元した元の画素データを順次出力する。なお、データイネーブル信号は、画像処理部50に出力するタイミングを表す信号である。
データ逆変換部52が画素データを復元する際には、まず、入力された32bitのパックデータ(このパックデータは、データ変換部41が生成したパックデータと同等である)から、データ変換部41によるパッキング方法と逆の方法で、それぞれのデータ(このデータは、データ変換部41が生成した転送画素データと同等であるため、以下の説明においては、「転送画素データ」として説明する)に、順次分割(アンパッキング)する。
その後、データ逆変換部52は、パッキング単位(4転送)内に存在する未使用ビットに付加されている、転送画素データを生成したときの情報に基づいて、データ変換部41によってパックデータを生成した方法と逆の方法で、それぞれの画素データを生成する。より具体的には、データ逆変換部52は、転送画素データを、予め定められたビット数の上位の転送画素データと下位の転送画素データとに分離する。そして、転送画素データを生成したときの情報に基づいて、下位の転送画素データに対して反転処理を行う。その後、今回分離した上位の転送画素データと結合し、元の画素データとする。
なお、データ逆変換部52は、上記に述べたように、入力DMA部56からパックデータが入力される毎に、転送画素データに分割し、分割した転送画素データに対する反転処理を順次行うこともできるが、データ逆変換部52内に、例えば、1バースト分、すなわち、パッキング単位(4転送)分の32bitのパックデータを一時的に保持するメモリ部を備えた構成とすることもできる。この場合には、入力DMA部56から入力されたパックデータをメモリ部に一旦保持し、保持したそれぞれのパックデータからの転送画素データの分割と、転送画素データを生成したときの情報に基づいた反転処理を行う。
また、入力DMA部56から入力されたパックデータを最初に、ビット変化の少ないパックデータと、パックデータを生成したときの情報とに分割し、元のパックデータに戻した後に、元のパックデータに配置されたそれぞれの画素データに分割(アンパッキング)する構成とすることもできる。この場合には、入力DMA部56から入力されたパックデータを、転送画素データと同様に扱って処理する。
図3は、本実施形態の撮像装置1に備えた第1の構成のデータ逆変換部52の概略構成を示したブロック図である。図3に示したように、データ逆変換部52は、ビット分離部521と、EXOR回路522と、ビット結合部523と、を備えている。
上記に述べたように、データ逆変換部52は、入力DMA部56から入力された32bitのパックデータから転送画素データを分割し、分割した転送画素データに反転処理を行って、元に戻した画素データを生成する。しかし、以下の説明においては、説明を容易にするため、データ逆変換部52に、入力DMA部56から転送画素データを生成したときの情報が付加された9bitのパックデータが入力され、パックデータから分割した転送画素データから元の画素データを生成する場合について説明する。すなわち、データ逆変換部52は、1つの転送画素データがパッキングされたパックデータから、1つの画素データを復元する場合について説明する。
以下の説明においては、32bitのパックデータと9bitのパックデータとを区別するため、以下の説明においては、9bitのパックデータを入力データDIN[8:0]と表す。また、10bitの画素データと8bitの画素データとを区別するため、以下の説明においては、8bitの画素データを出力データDOUT[7:0]と表す。なお、以下の説明において、入力データDINまたは出力データDOUTのビットを特定しない、すなわち、入力データDINまたは出力データDOUTの全てのビット範囲を表す場合には、データのビットの範囲を表す“[]:括弧”内の数字を省略する。
また、以下の説明においては、9bitのパックデータの最上位ビット(入力データDIN[8])に転送画素データを生成したときの情報である反転ビットが付加されており、転送画素データを、上位4bitと下位4bitとに分離して、元の画素データに復元する場合について説明する。
ビット分離部521は、入力された9bitの入力データDIN[8:0]を、最上位の入力データDIN[8]、すなわち、反転ビットと、入力データDIN[7:0]、すなわち、転送画素データとに分離する。さらに、ビット分離部521は、入力データDIN[7:0]を、上位4bitの入力データDIN[7:4]と下位4bitの入力データDIN[3:0]とに分離する。そして、入力データDIN[7:4]をビット結合部523に、入力データDIN[8]と入力データDIN[3:0]とをEXOR回路522に出力する。
EXOR回路522は、ビット分離部521から入力された反転ビットに応じて、同じくビット分離部521から入力された下位の入力データDINの各ビットの値を、ビット毎に反転(“1”から“0”、または“0”から“1”)した下位のデータ[3:0]、または下位の入力データDINの各ビットの値がそのままの下位のデータ[3:0]を、ビット結合部523に出力する。なお、EXOR回路522が出力する下位のデータは、データ変換部41が生成した反転データまたは非反転データと同等であるため、以下の説明においては、「反転データ」または「非反転データ」として説明する。また、以下の説明においては、EXOR回路522から出力される反転データまたは非反転データを、データ変換部41と同様に、「下位画像データ」という。また、ビット分離部521から出力される上位4bitの入力データDINも、データ変換部41における上位画像データと同様であるため、「上位画像データ」という。また、以下の説明においては、EXOR回路522が、ビット分離部521から入力された反転ビットに応じて、反転データまたは非反転データを出力する処理を、データ変換部41と同様に、「反転処理」という。
EXOR回路522による反転処理においては、データ変換部41内のEXOR回路412と同様に、下位の入力データDINの各ビットと、反転ビットとの排他的論理和がとられる。これにより、EXOR回路522から反転ビットに応じた下位の画像データが出力される。すなわち、EXOR回路522からは、EXOR回路412と同様に、反転ビットが“1”のときに、下位の入力データDIN[3:0]の各ビットの値が反転された反転データ[3:0]が出力され、反転ビットが“0”のときに、下位の入力データDIN[3:0]の各ビットの値がそのままの非反転データ[3:0]が出力される。
ビット結合部523は、ビット分離部521から入力された上位画像データ[7:4]と、EXOR回路522から出力された下位画像データ[3:0]とを結合した出力データDOUT [7:0]を生成する。ここで生成された出力データDOUTが、データ逆変換部52によって復元された、すなわち、データ変換部41に入力された、元の画素データとして、画像処理部50に出力される。
<反転処理方法>
次に、データ変換部41による転送画素データの生成方法について説明する。図4は、本実施形態の撮像装置1に備えた第1の構成のデータ変換部41における転送画素データの生成方法を説明する図である。なお、以下の説明においては、説明を容易にするため、データ変換部41に8ビットの入力データDINが入力され、9ビットの出力データDOUTを出力する場合について説明する。ここでは、図25(a)に示した入力データと同じデータが、入力データDINとしてデータ変換部41に入力される場合を考える。そして、データ変換部41が、1つの転送画素データをパッキングしたパックデータを生成する場合について説明する。図4(a)は、図25(a)に示した入力データ(入力データDIN)と下位の入力データDINのビット変化数とを示し、図4(b)には、データ変換部41から出力される出力データDOUTおよび反転ビット(パックデータ)と、出力データDOUT全体のビット変化数とを示している。
データ変換部41には、図4(a)に示したような入力データDINが、上段から下段に向かって時系列的に順次入力される。データ変換部41は、入力データDINが入力される毎に、下位の入力データDINの各ビットの値を順次比較する。より具体的には、図4(a)に示した入力データDINのそれぞれの段において、下位の入力データDINの各ビットの値を上段の下位の入力データDINの値と比較し、ビット変化数を算出する。これにより、図4(a)に示したような下位の入力データDINのビット変化数を得る。図4(a)からわかるように、データ変換部41に入力された入力データDINにおける下位の入力データDIN[3:0]のビット変化数は、「A」の段のビット変化数が半数を超えている。
そこで、データ変換部41は、算出したビット変化数に応じて、下位の入力データDINに対して反転処理を行った転送画素データを生成し、さらに、生成した転送画素データの最上位ビットの上位側の次のビットに反転ビットを付加して、図4(b)に示したようなパックデータを、最終的に出力するパックデータとして順次出力する。図4(b)をみてわかるように、データ変換部41が生成したパックデータに含まれる転送画素データおけるビット変化数の合計は、26ビットになる。これは、図25(b)に示した従来のデータ処理装置における反転処理よりも、データの変化量が4ビット削減されている。
このように、データ変換部41は、データの相関性が低い(データの変化頻度の高い)下位の入力データDINの各ビットの値を順次比較し、ビット変化数が大きい下位の入力データDINに対して反転処理を行う。これにより、図24に示した従来のデータ処理装置による反転処理よりも、データを転送するときの全体でのデータの変化量を削減することができる。すなわち、反転処理によるデータの変化量の削減効果を、より多く得ることができる。なお、図4(b)の「B」の段では、転送画素データのビット変化数が、過半数になっている。これは、上位の入力データDINのビット変化数が、多いことに起因している。
また、図24に示した従来のデータ処理装置では、入力データの全てのビットに対して反転処理を行っているのに対して、データ変換部41では、入力データDINの下位のビットにのみ反転処理を行っている。このため、データ変換部41では、多数決判定部415など、反転処理に係る回路規模の削減の効果も得ることができる。
ここで、反転ビットも考慮したビット変化数について考える。図5は、本実施形態の撮像装置1に備えた第1の構成のデータ変換部41における転送画素データの生成方法を説明する図である。図5においては、図4(b)に示した出力データDOUTと反転ビットとを合わせた全体を考慮した、パックデータの生成方法を示している。そして、図5(a)には、図4(b)に示した出力データDOUTおよび反転ビット(パックデータ)と、反転ビットを含めた出力データDOUT全体のビット変化数とを示し、図5(b)には、反転ビットを考慮した判定によって生成された出力データDOUTおよび反転ビット(パックデータ)と、パックデータ全体のビット変化数とを示している。
図4(b)に示した出力データDOUTと反転ビットとを合わせたビット変化数は、図5(a)に示したように、反転ビットの変化がビットの変化数に加算される。このため、図5(a)の場合においては、図25(b)に示した従来のデータ処理装置において反転ビットを含めた場合のビット変化数よりも削減されるものの、得られるデータの変化量の削減効果は少なくなる。また、図5(a)からわかるように、「C」の段のビット変化数が半数を超えている。
そこで、多数決判定部415が、反転ビットも含めて多数決判定を行うことによって、図5(b)に示したようなパックデータを、最終的に出力するパックデータとする。図5(b)をみてわかるように、データ変換部41が反転ビットを考慮して生成したパックデータに含まれる転送画素データにおけるビット変化数の合計は、28ビットになる。なお、図示していないが、図25(b)に示した従来のデータ処理装置において反転ビットを考慮した場合のビット変化数の合計は、33ビットである。このように、反転ビットを含めた場合においても、従来のデータ処理装置における反転処理よりも、データの変化量を削減することができる。なお、図5(b)の「D」の段では、転送画素データのビット変化数が、過半数になっている。これは、上位の入力データDINのビット変化数が、多いことに起因している。
次に、画素データの配置(パッキング)方法について説明する。本実施形態の撮像装置1では、データ変換部41および51が入力された画素データをメモリバスに配置したパックデータを生成し、データ逆変換部52および62が入力されたパックデータを元の画素データに戻す。なお、以下の説明においては、データ変換部41に、図19に示したベイヤーデータ内の各画素データが順次入力され、4転送を1つのパッキング単位とした1バーストのパックデータにパッキングする場合について説明する。また、ベイヤーデータ内の各画素データのビット数は10bitであり、メモリバス幅は32bitであるものとする。そして、1転送あたり3画素分の画素データを、32bitのメモリバスに配置するものとする。
なお、データ逆変換部52および62によるパックデータを元の画素データに戻す方法は、データ変換部41および51による画素データのパッキング方法と逆の方法であるため、詳細な説明は省略する。
また、以下の説明においては、10bitの画素データのそれぞれを、上位6bitと下位4bitとに分離し、1転送内に含まれる3つの画素データの下位4bitに共通の反転ビットを、1転送内に存在する未使用ビットの内、下位側のビットに付加する場合について説明する。従って、多数決判定部415は、4bit×3画素=12bitの画素データを、図2の説明における下位の入力データDINと同様に扱って、多数決判定を行い、多数決判定の結果に応じた1つの反転ビットを出力する。また、図2の説明における上位の入力データDINは、6bit×3画素=18bitの画素データである。
<第1のデータ配置方法>
図6は、本実施形態の撮像装置1に備えた第1の構成のデータ変換部41における第1のデータ配置方法を説明する図である。図6(a)には、従来のバースト単位でのデータ配置方法(パッキング方法)によって画素データの各ビットが配置されたパックデータを示している。また、図6(b)には、データ変換部41によってパックデータ内の画素データに対する反転ビットが付加されたパックデータ内のデータの配置を示している。以下の説明においては、データ変換部41が、図6(a)に示したパックデータ内の画素データの配置と同様の配置で、反転処理された画素データが配置された、図6(b)に示したパックデータを生成する場合について説明する。
本第1のパッキング方法では、1転送のメモリバスに配置するそれぞれの画素データの下位のビットをまとめて反転処理し、画素データの上位のビットと、反転処理した後の画素データの下位ビットとを、それぞれ1転送のメモリバスに配置する。さらに、画素データの下位のビットを反転処理したときの情報を表す反転ビットを、1転送のメモリバス内に存在する未使用ビットに付加して、最終的な1転送のデータとする。
なお、図6に示したように、それぞれの1転送のデータには、3つの画素データが含まれているため、データ変換部41は、3つの画素データを1つのデータとして扱う。このため、データ変換部41は、例えば、3つの画素データを一時的に保持するメモリ部を備え、順次入力された3つの画素データをメモリ部に一旦保持し、保持したそれぞれの画素データに基づいて反転処理、パッキング、および反転ビットの付加を行う。
より具体的には、まず、ビット分離部411に1転送目の3つの画素データ「R0」、「G1」、「R2」が入力されると、ビット分離部411は、入力されたそれぞれの画素データを、それぞれ保持する。そして、ビット分離部411は、メモリ部に保持した「R0」のビット[9]〜ビット[4]、「G1」のビット[9]〜ビット[4]、および「R2」のビット[9]〜ビット[4]の18bitのデータを、1転送目の上位画像データ[17:0]として、ビット結合部416に出力する。また、ビット分離部411は、メモリ部に保持した「R0」のビット[3]〜ビット[0]、「G1」のビット[3]〜ビット[0]、および「R2」のビット[3]〜ビット[0]の12bitのデータを、1転送目の下位の画素データ[11:0]として、EXOR回路412とEXOR回路414とに出力する。
ここで、1転送目の下位の画素データ[11:0]は、バースト転送において最初に出力されるデータであるため、多数決判定部415からは、反転ビットとして“0”の値が出力されている。このため、EXOR回路412は、1転送目の下位の画素データ[11:0]がそのままの1転送目の下位画像データ[11:0]を出力する。また、D−FF413は、1転送目の下位画像データ[11:0]を保持する。
その後、ビット結合部416は、ビット分離部411から入力された1転送目の上位画像データ[17:0]と、EXOR回路412から入力された1転送目の下位画像データ[11:0]とを、図6(b)の1転送目に示したように、それぞれの画素データ(「R0」、「G1」、「R2」)毎に32bitのメモリバスに配置する。より具体的には、1転送目の下位画像データ[3:0]、すなわち、反転処理された「R0」のビット[3]〜ビット[0]を、メモリバスのビット[3]〜ビット[0]に配置し、1転送目の上位画像データ[5:0]、すなわち、「R0」のビット[9]〜ビット[4]を、メモリバスのビット[9]〜ビット[4]に配置する。また、1転送目の下位画像データ[7:4]、すなわち、反転処理された「G1」のビット[3]〜ビット[0]を、メモリバスのビット[13]〜ビット[10]に配置し、1転送目の上位画像データ[11:6]、すなわち、「G1」のビット[9]〜ビット[4]を、メモリバスのビット[19]〜ビット[14]に配置する。また、1転送目の下位画像データ[11:8]、すなわち、反転処理された「R2」のビット[3]〜ビット[0]を、メモリバスのビット[23]〜ビット[20]に配置し、1転送目の上位画像データ[17:12]、すなわち、「R0」のビット[9]〜ビット[4]を、メモリバスのビット[29]〜ビット[24]に配置する。
また、ビット結合部416は、多数決判定部415から入力された1転送目の下位画像データ[11:0]に対応した反転ビットを、メモリバスのビット[30]に配置する。なお、メモリバスのビット[31]は、未使用ビットにする。
続いて、ビット分離部411に2転送目の3つの画素データ「G3」、「R4」、「G5」が入力されると、ビット分離部411は、入力されたそれぞれの画素データを、それぞれ保持する。そして、ビット分離部411は、メモリ部に保持した「G3」のビット[9]〜ビット[4]、「R4」のビット[9]〜ビット[4]、および「G5」のビット[9]〜ビット[4]の18bitのデータを、2転送目の上位画像データ[17:0]として、ビット結合部416に出力する。また、ビット分離部411は、メモリ部に保持した「G3」のビット[3]〜ビット[0]、「R4」のビット[3]〜ビット[0]、および「G5」のビット[3]〜ビット[0]の12bitのデータを、2転送目の下位の画素データ[11:0]として、EXOR回路412とEXOR回路414とに出力する。
EXOR回路414は、ビット分離部411から入力された2転送目の下位の画素データ[11:0]の各ビットの値と、D−FF413から入力された1転送目の下位画像データ[11:0]の各ビットの値とを比較して、値が変化しているビットの有無を検出する。そして、EXOR回路414は、それぞれのビット毎に、値が変化しているビットの有無を表す値を、多数決判定部415に出力する。そして、多数決判定部415は、EXOR回路414から入力された値が変化しているビットの有無を検出した結果に基づいて多数決判定を行い、反転ビットを出力する。これにより、EXOR回路412は、2転送目の下位の画素データ[11:0]を反転処理した2転送目の下位画像データ[11:0]を出力する。また、D−FF413は、2転送目の下位画像データ[11:0]を保持する。
その後、ビット結合部416は、ビット分離部411から入力された2転送目の上位画像データ[17:0]と、EXOR回路412から入力された2転送目の下位画像データ[11:0]とを、図6(b)の2転送目に示したように、それぞれの画素データ(「G3」、「R4」、「G5」)毎に32bitのメモリバスに配置する。より具体的には、2転送目の下位画像データ[3:0]、すなわち、反転処理された「G3」のビット[3]〜ビット[0]を、メモリバスのビット[3]〜ビット[0]に配置し、2転送目の上位画像データ[5:0]、すなわち、「G3」のビット[9]〜ビット[4]を、メモリバスのビット[9]〜ビット[4]に配置する。また、2転送目の下位画像データ[7:4]、すなわち、反転処理された「R4」のビット[3]〜ビット[0]を、メモリバスのビット[13]〜ビット[10]に配置し、2転送目の上位画像データ[11:6]、すなわち、「R4」のビット[9]〜ビット[4]を、メモリバスのビット[19]〜ビット[14]に配置する。また、2転送目の下位画像データ[11:8]、すなわち、反転処理された「G5」のビット[3]〜ビット[0]を、メモリバスのビット[23]〜ビット[20]に配置し、2転送目の上位画像データ[17:12]、すなわち、「G5」のビット[9]〜ビット[4]を、メモリバスのビット[29]〜ビット[24]に配置する。
また、ビット結合部416は、多数決判定部415から入力された2転送目の下位画像データ[11:0]に対応した反転ビットを、メモリバスのビット[30]に配置する。なお、メモリバスのビット[31]は、未使用ビットにする。
以降、同様に、データ変換部41は、入力された3転送目の3つの画素データ「R6」、「G7」、「R8」、4転送目の3つの画素データ「G9」、「R10」、「G11」、が入力される毎に、処理後の画素データをメモリバスのビット[29]〜ビット[0]に配置すると共に、下位画像データ[11:0]に対応した反転ビットをメモリバスのビット[30]に配置する。なお、同様に、メモリバスのビット[31]は、未使用ビットにする。
このようにして、本第1のパッキング方法では、バースト転送における1サイクル分のメモリアクセス(1転送)毎に、画素データの上位のビットと、反転処理した画素データの下位のビットと、反転ビットとをメモリバスのそれぞれのビットに配置する。これにより、バースト転送時における各転送間でのメモリバスの各ビットの変化量を少なくすることができる。
<第2のデータ配置方法>
図7は、本実施形態の撮像装置1に備えた第1の構成のデータ変換部41における第2のデータ配置方法を説明する図である。図7(a)には、本第2のデータ配置方法(パッキング方法)におけるパックデータの第1のデータ配置の一例を示している。また、図7(b)には、本第2のデータ配置方法(パッキング方法)におけるパックデータの第2のデータ配置の一例を示している。
画像データは、通常、隣接する画素同士の方が画素データの変化量が小さい。このため、パックデータを構築する際には、バースト転送時にメモリバスの各ビットの変化量が最も小さくなるように、隣接する画素の画素データの同一ビットを、各転送におけるメモリバスの同一のビットに配置することが望ましい。
また、ベイヤー、RGB、またはYC422点順次など、画像処理部50が画像処理する際の画像のフォーマットによって、画像データ内の各画素データが表す色の情報が異なる。このため、パックデータを構築する際には、バースト転送時にメモリバスの各ビットの変化量が最も小さくなるように、同一色の画素データを、各転送におけるメモリバスの同一のビットに配置することが望ましい。
本第2のパッキング方法では、第1のパッキング方法と同様に、1転送のメモリバスに配置するそれぞれの画素データの下位のビットをまとめて反転処理し、反転処理した後の画素データの下位ビットと、上位ビットとを、それぞれ1転送のメモリバスに配置する。このとき、本第2のパッキング方法では、バースト転送する際の連続する2転送間のデータにおいて、メモリバス上に配置される隣接する同一色の画素データのビットの位置がなるべく同じ位置になるように、画素データの上位のビットと、反転処理した後の画素データの下位ビットとを、それぞれ1転送のメモリバスに配置する。さらに、第1のパッキング方法と同様に、画素データの下位のビットを反転処理したときの情報を表す反転ビットを、1転送のメモリバス内に存在する未使用ビットに付加して、最終的な1転送のデータとする。
なお、本第2のパッキング方法は、上位画像データおよび下位画像データの配置位置が、第1のパッキング方法と異なるのみである。しかし、同じ1転送のメモリバスに配置する画素データは、第1のパッキング方法と異なり、データ変換部41に連続して入力される画素データではない。このため、データ変換部41は、1バースト分、すなわち、パッキング単位(4転送)分の10bitの画素データを一時的に保持するメモリ部を備え、1バースト(4転送)分の全ての画素データをメモリ部に一旦保持する。そして、メモリ部に保持したそれぞれの画素データの内、同じ1転送のメモリバスに配置する3つの画素データを1つのデータとして扱って、反転処理を行う。なお、保持した画素データに基づいた反転処理、多数決判定、および反転ビットの付加は、第1のパッキング方法と同様であるため、詳細な説明は省略する。
図7(a)に示した本第2のパッキング方法におけるパックデータの第1のデータ配置の一例では、バースト転送における連続する2転送間のデータにおいて、隣接する同一色の画素データのビットの位置がなるべく同じ位置になるように、上位画像データおよび下位画像データをメモリバス上に配置する。
より具体的には、図7(a)に示したように、1転送目におけるメモリバスへの上位画像データおよび下位画像データの配置では、1転送目の下位画像データ[3:0](反転処理された「R0」のビット[3]〜ビット[0])をメモリバスのビット[3]〜ビット[0]に配置し、1転送目の上位画像データ[5:0](「R0」のビット[9]〜ビット[4])をメモリバスのビット[9]〜ビット[4]に配置する。また、1転送目の下位画像データ[7:4](反転処理された「G1」のビット[3]〜ビット[0])をメモリバスのビット[13]〜ビット[10]に配置し、1転送目の上位画像データ[11:6](「G1」のビット[9]〜ビット[4])をメモリバスのビット[19]〜ビット[14]に配置する。また、1転送目の下位画像データ[11:8](反転処理された「R8」のビット[3]〜ビット[0])をメモリバスのビット[23]〜ビット[20]に配置し、1転送目の上位画像データ[17:12](「R8」のビット[9]〜ビット[4])をメモリバスのビット[29]〜ビット[24]に配置する。また、1転送目の下位画像データ[11:0]に対応した反転ビットを、メモリバスのビット[30]に配置し、メモリバスのビット[31]は、未使用ビットにする。
2転送目におけるメモリバスへの上位画像データおよび下位画像データの配置では、2転送目の下位画像データ[3:0](反転処理された「R2」のビット[3]〜ビット[0])をメモリバスのビット[3]〜ビット[0]に配置し、2転送目の上位画像データ[5:0](「R2」のビット[9]〜ビット[4])をメモリバスのビット[9]〜ビット[4]に配置する。また、2転送目の下位画像データ[7:4](反転処理された「G3」のビット[3]〜ビット[0])をメモリバスのビット[13]〜ビット[10]に配置し、2転送目の上位画像データ[11:6](「G3」のビット[9]〜ビット[4])をメモリバスのビット[19]〜ビット[14]に配置する。また、2転送目の下位画像データ[11:8](反転処理された「R10」のビット[3]〜ビット[0])をメモリバスのビット[23]〜ビット[20]に配置し、2転送目の上位画像データ[17:12](「R10」のビット[9]〜ビット[4])をメモリバスのビット[29]〜ビット[24]に配置する。また、2転送目の下位画像データ[11:0]に対応した反転ビットを、メモリバスのビット[30]に配置し、メモリバスのビット[31]は、未使用ビットにする。
以降、同様に、データ変換部41は、3転送目の3つの画素データ「R4」、「G5」、「G9」、4転送目の3つの画素データ「R6」、「G7」、「G11」にそれぞれ対応した上位画像データおよび下位画像データを、メモリバスのビット[29]〜ビット[0]に配置する。また、データ変換部41は、同様に、それぞれの下位画像データに対応した反転ビットを、メモリバスのビット[30]に配置し、メモリバスのビット[31]は、未使用ビットにする。
図7(b)に示した本第2のパッキング方法におけるパックデータの第2のデータ配置の一例では、第1のデータ配置の一例と同様に、バースト転送における連続する2転送間のデータにおいて、隣接する同一色の画素データのビットの位置がなるべく同じ位置になるように、上位画像データおよび下位画像データをメモリバス上に配置する。このとき、本第2のデータ配置の一例では、上位画像データと下位画像データとを分けて、メモリバス上に配置する。
より具体的には、図7(b)に示したように、1転送目におけるメモリバスへの上位画像データおよび下位画像データの配置では、1転送目の上位画像データ[5:0](「R0」のビット[9]〜ビット[4])をメモリバスのビット[5]〜ビット[0]に配置し、1転送目の上位画像データ[11:6](「G1」のビット[9]〜ビット[4])をメモリバスのビット[11]〜ビット[6]に配置し、1転送目の上位画像データ[17:12](「R8」のビット[9]〜ビット[4])をメモリバスのビット[17]〜ビット[12]に配置する。また、1転送目の下位画像データ[3:0](反転処理された「R0」のビット[3]〜ビット[0])をメモリバスのビット[21]〜ビット[18]に配置し、1転送目の下位画像データ[7:4](反転処理された「G1」のビット[3]〜ビット[0])をメモリバスのビット[25]〜ビット[22]に配置し、1転送目の下位画像データ[11:8](反転処理された「R8」のビット[3]〜ビット[0])をメモリバスのビット[29]〜ビット[26]に配置する。また、1転送目の下位画像データ[11:0]に対応した反転ビットを、メモリバスのビット[30]に配置し、メモリバスのビット[31]は、未使用ビットにする。
2転送目におけるメモリバスへの上位画像データおよび下位画像データの配置では、2転送目の上位画像データ[5:0](「R2」のビット[9]〜ビット[4])をメモリバスのビット[5]〜ビット[0]に配置し、2転送目の上位画像データ[11:6](「G3」のビット[9]〜ビット[4])をメモリバスのビット[11]〜ビット[6]に配置し、2転送目の上位画像データ[17:12](「R10」のビット[9]〜ビット[4])をメモリバスのビット[17]〜ビット[12]に配置する。また、2転送目の下位画像データ[3:0](反転処理された「R2」のビット[3]〜ビット[0])をメモリバスのビット[21]〜ビット[18]に配置し、2転送目の下位画像データ[7:4](反転処理された「G3」のビット[3]〜ビット[0])をメモリバスのビット[25]〜ビット[22]に配置し、2転送目の下位画像データ[11:8](反転処理された「R10」のビット[3]〜ビット[0])をメモリバスのビット[29]〜ビット[26]に配置する。また、2転送目の下位画像データ[11:0]に対応した反転ビットを、メモリバスのビット[30]に配置し、メモリバスのビット[31]は、未使用ビットにする。
以降、同様に、データ変換部41は、3転送目の3つの画素データ「R4」、「G5」、「G9」、4転送目の3つの画素データ「R6」、「G7」、「G11」にそれぞれ対応した上位画像データを、メモリバスのビット[17]〜ビット[0]に配置する。また、3転送目の3つの画素データ「R4」、「G5」、「G9」、4転送目の3つの画素データ「R6」、「G7」、「G11」にそれぞれ対応した下位画像データを、メモリバスのビット[29]〜ビット[18]に配置する。また、データ変換部41は、同様に、それぞれの下位画像データに対応した反転ビットを、メモリバスのビット[30]に配置し、メモリバスのビット[31]は、未使用ビットにする。
このようにして、本第2のパッキング方法でも、第1のパッキング方法と同様に、バースト転送における1サイクル分のメモリアクセス(1転送)毎に、画素データの上位のビットと、反転処理した画素データの下位のビットと、反転ビットとをメモリバスのそれぞれのビットに配置する。また、本第2のパッキング方法では、バースト転送する際の連続する2転送間のデータにおいて、メモリバス上に配置される隣接する同一色の画素データのビットの位置がなるべく同じ位置になるように、反転処理した後の画素データの下位ビットと、上位ビットとを、それぞれ1転送のメモリバスに配置する。これにより、バースト転送時における各転送間でのメモリバスの各ビットの変化量が、さらに少なくなる場合がある。
なお、図7に示した第2のパッキング方法では、反転処理した後の画素データの下位ビットと上位ビットとをメモリバスに配置する際に、画素データの各色をまとめて、それぞれ1転送のメモリバスに配置する場合について説明したが、画素データをメモリバスに配置する方法は、本第2のパッキング方法に限定されるものではない。すなわち、同一色で同一ビットの画素データが、連続する2転送間においてメモリバス上の同一ビットに配置される方法であれば、他の配置方法を適用することもできる。例えば、各画素データをそれぞれのビットに分割して、分割したビット毎に、同一色で同一ビットの画素データが、連続する2転送間のメモリバス上の同一ビットに配置されるようにすることもできる。
上記に述べたように、本第1の構成のデータ変換部41および51では、データの相関性が低い(データの変化頻度の高い)下位の画素データの各ビットの値を順次比較し、ビット変化数が大きい下位の画素データに対して反転処理を行うことにより、バースト転送時におけるメモリバスの各ビットの変化量を少なくした画素データを、メモリバスに配置することができる。これにより、本第1の構成のデータ変換部41および51では、従来のバースト単位でのパッキング方法と同様に、画像データの転送効率を維持すると共に、従来のバースト単位でのパッキング方法よりも、画像データの転送に係る消費電力を低減させることができる。このことにより、撮像装置1内の各構成要素(処理ブロック)とメモリ20との間での画素データの転送、すなわち、撮像装置1内の各構成要素間での画素データの受け渡しに係る消費電力を低減させることができる。
一般的に、画素データは、バイナリコードで表される。しかし、バイナリコードの場合、相関性が高く、値の変化が少ない(データの変化頻度が低い)データであっても、データの変化によっては、各ビットの値が全て異なる値になってしまう場合がある。例えば、データの値が“128”から“127”に変化した場合、バイナリコードでは、“1000_0000”から“0111_1111”に変化するため、全てのビットの値が変化してしまう。そこで、バイナリコードの代わりに、グレイコードを用いて画素データを表すことを検討する。
グレイコードは、その特徴として、データの変化が“1”である場合には、必ず1ビットだけしか変化しないという特徴があるデータコードである。画素データをグレイコードで表すことによって、バイナリコードのように、データの変化が“1”であるにもかかわらず全てのビットの値が変化してしまう、ということを回避することができる。例えば、画素データが8bitである場合、画素データの値が“128”および“64”の近辺で微小に変動した場合などに、グレイコードにおいてはビットの値の変化が少ないという効果を得ることができる。
<第2の構成>
次に、本第2の構成のデータ変換部について説明する。図8は、本実施形態の撮像装置1に備えた第2の構成のデータ変換部43の概略構成を示したブロック図である。図8に示したデータ変換部43は、第1の構成のデータ変換部41の代わりに、撮像装置1に備えられる。従って、データ変換部43は、データ変換部51の代わりに撮像装置1に備えることもできる。図8に示したように、データ変換部43は、ビット分離部411と、EXOR回路412と、D−FF413と、EXOR回路414と、多数決判定部415と、ビット結合部416と、コード変換部431と、を備えている。
本第2の構成のデータ変換部43と、図2に示した第1の構成のデータ変換部41との異なる点は、第1の構成のデータ変換部41に加えて、コード変換部431を備えたことのみである。従って、以下の説明においては、第1の構成のデータ変換部41内の構成要素と同様の構成要素に対して同一の符号を付与し、それぞれの詳細な説明は省略する。
なお、以下の説明においては、第1の構成と同様に、データ変換部43に、図19に示したような、16行×16列のベイヤーデータが入力され、4転送をベイヤーデータ内の各画素データのパッキング単位とし、ベイヤーデータ内の各画素データのビット数は10bitであり、メモリバス幅は32bitである場合について説明する。
データ変換部43は、第1の構成のデータ変換部41と同様に、撮像処理部40から順次入力された10bitの画素データの各ビットのデータを、上述したような予め定められたパッキング方法で、メモリバス上の各ビットに配置した32bitのパックデータを出力する。ただし、 データ変換部43がパックデータを生成する際に、入力された画素データをビット毎に比較して生成する転送画素データの生成方法が、第1の構成のデータ変換部41と異なる。
より具体的には、データ変換部43は、第1の構成のデータ変換部41と同様に、入力された画素データを予め定められたビット数の上位の画素データと下位の画素データとに分離する。そして、今回分離した下位の画素データは、第1の構成のデータ変換部41と同様に、反転処理して、値が変化しているビットの数が少ない下位の画素データを生成する。また、データ変換部43は、今回分離した上位の画素データのデータコードを、バイナリコードからグレイコードに変換する。その後、グレイコードに変換した上位の画素データと、反転処理した下位の画素データとを結合し、転送画素データとする。また、データ変換部43は、第1の構成のデータ変換部41と同様に、下位の画素データを反転処理したときの情報を表す反転ビットを付加する。
その後、データ変換部43は、第1の構成のデータ変換部41と同様に、上述したような予め定められたパッキング方法で、転送画素データの各ビットのデータと、反転ビットとを、メモリバスの各ビットに配置し、最終的に出力するパックデータとして出力する。
上記に述べたように、データ変換部43は、入力された10bitの画素データの値が変化しているビットの数が少ない転送画素データをパッキングして、最終的に出力する32bitのパックデータを生成する。しかし、以下の説明においては、説明を容易にするため、データ変換部43に8bitの画素データが順次入力され、入力された画素データから転送画素データを生成し、転送画素データを生成したときの情報を付加した9bitのパックデータを出力する場合について説明する。すなわち、データ変換部43においても、第1の構成のデータ変換部41と同様に、1つの転送画素データをパッキングしたパックデータを生成する場合について説明する。なお、複数の転送画素データをパッキングしたパックデータの生成方法は、図6に示した上述した第1のパッキング方法および図7に示した上述した第2のパッキング方法と同様であるため、それぞれの詳細な説明は省略する。
また、以下の説明においては、第1の構成のデータ変換部41と同様に、データ変換部43に入力される10bitの画素データと8bitの画素データとを区別するため、8bitの画素データを入力データDIN[7:0]と表す。また、32bitのパックデータと9bitのパックデータとを区別するため、9bitのパックデータを出力データDOUT[8:0]と表す。なお、入力データDINまたは出力データDOUTのビットを特定しない、すなわち、入力データDINまたは出力データDOUTの全てのビット範囲を表す場合には、データのビットの範囲を表す“[]:括弧”内の数字を省略する。
また、以下の説明においては、8bitの入力データDINを、上位4bitと下位4bitとに分離して、ビット変化の少ない転送画素データを生成する場合について説明する。
コード変換部431は、ビット分離部411から入力された上位画像データ[7:4]のデータコードを、バイナリコードからグレイコードに変換する。そして、コード変換部431は、グレイコードに変換した上位画像データを、ビット結合部416に出力する。
ビット結合部416は、コード変換部431から入力されたグレイコードに変換された上位画像データ[7:4]と、EXOR回路412から出力された下位画像データ[3:0]とを結合した転送画素データ[7:0]を生成する。また、ビット結合部416は、さらに、生成した転送画素データの最上位ビットの上位側の次のビットに、多数決判定部415から入力された反転ビットを付加(ビット結合)した出力データDOUT[8:0]を生成する。ここで生成された出力データDOUTが、データ変換部43から最終的に出力する出力データDOUT(パックデータ)として、出力DMA部45に出力される。
次に、本第2の構成のデータ逆変換部について説明する。図9は、本実施形態の撮像装置1に備えた第2の構成のデータ逆変換部54の概略構成を示したブロック図である。図9に示したデータ逆変換部54は、第1の構成のデータ逆変換部52の代わりに、撮像装置1に備えられる。従って、データ逆変換部54は、データ逆変換部62の代わりに撮像装置1に備えることもできる。図9に示したように、データ逆変換部54は、ビット分離部521と、EXOR回路522と、ビット結合部523と、コード変換部541と、を備えている。
本第2の構成のデータ逆変換部54と、図3に示した第1の構成のデータ逆変換部52との異なる点は、第1の構成のデータ逆変換部52に加えて、コード変換部541を備えたことのみである。従って、以下の説明においては、第1の構成のデータ逆変換部52内の構成要素と同様の構成要素に対して同一の符号を付与し、それぞれの詳細な説明は省略する。
なお、以下の説明においては、第1の構成と同様に、データ逆変換部54に、データ変換部43によってパッキングされた、4転送をパッキング単位とした1バーストのパックデータが、入力DMA部56を介して入力され、入力されたパックデータを、図19に示したベイヤーデータに戻す場合について説明する。従って、ベイヤーデータ内の各画素データのビット数は10bitであり、メモリバス幅は32bitであるものとして説明する。
データ逆変換部54は、第1の構成のデータ逆変換部52と同様に、入力DMA部56から順次入力された32bitのパックデータの各ビットに配置されたデータを、上述したような予め定められたパッキング方法のいずれか1つの方法と逆の方法で、画像処理部50が画像処理する元の画像データ(ベイヤーデータ)に戻した10bitの画素データに復元する。ただし、データ逆変換部54が画素データを復元する際に、分割されたそれぞれの転送画素データを、元の画素データに復元する方法が、第1の構成のデータ逆変換部52と異なる。
より具体的には、データ逆変換部54は、第1の構成のデータ逆変換部52と同様に、入力された32bitのパックデータから、データ変換部43によるパッキング方法と逆の方法で、それぞれの転送画素データに、順次分割(アンパッキング)する。
その後、データ逆変換部54は、第1の構成のデータ逆変換部52と同様に、転送画素データを、予め定められたビット数の上位の転送画素データと下位の転送画素データとに分離する。そして、パッキング単位(4転送)内に存在する未使用ビットに付加されている、転送画素データを生成したときの情報を表す反転ビットに基づいて、今回分離した下位の転送画素データに対して反転処理を行う。また、データ逆変換部54は、今回分離した上位の転送画素データのデータコードを、グレイコードからバイナリコードに変換する。その後、バイナリコードに変換した上位の転送画素データと、反転処理した下位の転送画素データとを結合し、元の画素データとする。
上記に述べたように、データ逆変換部54は、入力DMA部56から入力された32bitのパックデータから転送画素データを分割し、分割した転送画素データに反転処理を行って、元に戻した画素データを生成する。しかし、以下の説明においては、説明を容易にするため、データ逆変換部54に、入力DMA部56から転送画素データを生成したときの情報が付加された9bitのパックデータが入力され、パックデータから分割した転送画素データから元の画素データを生成する場合について説明する。すなわち、データ逆変換部54においても、第1の構成のデータ逆変換部52と同様に、1つの転送画素データがパッキングされたパックデータから、1つの画素データを復元する場合について説明する。
また、以下の説明においては、第1の構成のデータ逆変換部52と同様に、32bitのパックデータと9bitのパックデータとを区別するため、9bitのパックデータを入力データDIN[8:0]と表す。また、10bitの画素データと8bitの画素データとを区別するため、8bitの画素データを出力データDOUT[7:0]と表す。なお、入力データDINまたは出力データDOUTのビットを特定しない、すなわち、入力データDINまたは出力データDOUTの全てのビット範囲を表す場合には、データのビットの範囲を表す“[]:括弧”内の数字を省略する。
また、以下の説明においては、9bitのパックデータの最上位ビット(入力データDIN[8])に転送画素データを生成したときの情報である反転ビットが付加されており、転送画素データを、上位4bitと下位4bitとに分離して、元の画素データに復元する場合について説明する。
コード変換部541は、ビット分離部521から入力された上位画像データ[7:4]のデータコードを、グレイコードからバイナリコードに変換する。そして、コード変換部541は、バイナリコードに変換した上位画像データを、ビット結合部523に出力する。
ビット結合部523は、コード変換部541から入力されたバイナリコードに変換された上位画像データ[7:4]と、EXOR回路522から出力された下位画像データ[3:0]とを結合した出力データDOUT [7:0]を生成する。ここで生成された出力データDOUTが、データ逆変換部54によって復元された、すなわち、データ変換部43に入力された、元の画素データとして、画像処理部50に出力される。
<反転処理方法>
次に、データ変換部43による転送画素データの生成方法について説明する。図10は、本実施形態の撮像装置1に備えた第2の構成のデータ変換部43における転送画素データの生成方法を説明する図である。なお、以下の説明においては、説明を容易にするため、データ変換部43に8ビットの入力データDINが入力され、9ビットの出力データDOUTを出力する場合において、8bitの入力データDINを、上位4bitと下位4bitとに分離して、ビット変化の少ない転送画素データを生成する場合について説明する。そして、データ変換部43が、1つの転送画素データをパッキングしたパックデータを生成する場合について説明する。図10(a)は、入力データDINと上位および下位のそれぞれの入力データDINのビット変化数とを示し、図10(b)には、データ変換部43から出力される出力データDOUTおよび反転ビット(パックデータ)と、上位および下位のそれぞれの出力データDOUTのビット変化数とを示している。
ここでは、データ変換部43に、図10(a)に示したような入力データDINが、上段から下段に向かって時系列的に順次入力される場合を考える。図10(a)は、入力データDINの値が“128”または“64”の近辺で微小に変動している場合を示している。図10(a)をみてわかるように、入力データDINのデータの相関性が高い(データの変化頻度が低い)場合であっても、それぞれのビットの値は変化している。ここで、図10(a)に示した入力データDINを、上位の入力データDINと下位の入力データDINとに分けて、それぞれビット変化数をみると、上位の入力データDINのビット変化数の合計は27ビットであり、下位の入力データDINのビット変化数の合計は26ビットである。なお、図10(a)をみてわかるように、上位4bitの入力データDINの変化は、“1”である。
データ変換部43は、入力データDINが入力される毎に、第1の構成のデータ変換部41と同様に、下位の入力データDINの各ビットの値を順次比較し、下位の入力データDINに対して反転処理を行った下位画像データを生成する。また、データ変換部43は、入力データDINが入力される毎に、上位の入力データDINのバイナリコードを、グレイコードに変換した上位画像データを生成する。そして、データ変換部43は、グレイコードに変換された上位画像データと、反転処理された下位画像データとを結合した転送画素データを生成し、さらに、生成した転送画素データの最上位ビットの上位側の次のビットに反転ビットを付加して、図10(b)に示したようなパックデータを、最終的に出力するパックデータとして順次出力する。
図10(b)をみてわかるように、データ変換部43が生成したパックデータに含まれる下位の転送画素データおけるビット変化数の合計は、16ビットになる。これは、図10(b)に示した下位の入力データDINのビット変化数よりも、データの変化量が10ビット削減されている。また、図10(b)をみてわかるように、データ変換部43が生成したパックデータに含まれる上位の転送画素データおけるビット変化数の合計は、9ビットになる。これは、図10(b)に示した上位の入力データDINのビット変化数よりも、データの変化量が18ビット削減されている。
このように、データ変換部43は、第1の構成のデータ変換部41と同様に、データの相関性が低い(データの変化頻度の高い)下位の入力データDINの各ビットの値を順次比較し、ビット変化数が大きい下位の入力データDINに対して反転処理を行う。また、データ変換部43は、データの相関性が高い(データの変化頻度が低い)上位の入力データDINに対しては、バイナリコードをグレイコードに変換する。これにより、入力データDINのデータの相関性が高い(データの変化頻度が低い)場合であっても、ビット変化の少ないパックデータを生成することができる。特に、画素データの上位ビットは、相関性が高く、値の変化が少ないデータであるが、上位ビットのデータのデータコードを、バイナリコードからグレイコードに変換することによって、上位ビットの画像データは、さらに相関性が高まる。また、第1の構成のデータ変換部41のように、下位の入力データDINに対してのみ反転処理するよりも、データを転送するときの全体でのデータの変化量を削減することができる。なお、図10(b)の「B」の段における上位の転送画素データのビット変化数が、“2”になっているが、これは、入力データDINの値が“128”近辺の値から“64”近辺の値に変化したことに起因している。
上記に述べたように、本第2の構成のデータ変換部43では、データの相関性が低い(データの変化頻度の高い)下位の画素データと、データの相関性が高い(データの変化頻度が低い)上位の画素データとのそれぞれに、異なる処理を行うことにより、バースト転送時におけるメモリバスの各ビットの変化量を少なくした画素データを、メモリバスに配置することができる。これにより、本第2の構成のデータ変換部43では、従来のバースト単位でのパッキング方法と同様に、画像データの転送効率を維持すると共に、従来のバースト単位でのパッキング方法および第1の構成のデータ変換部41よりも、画像データの転送に係る消費電力を低減させることができる。このことにより、撮像装置1内の各構成要素(処理ブロック)とメモリ20との間での画素データの転送、すなわち、撮像装置1内の各構成要素間での画素データの受け渡しに係る消費電力を低減させることができる。
上記に述べた第1の構成のデータ変換部41および第2の構成のデータ変換部43においては、予め定められたビット数の下位の画像データ、すなわち、画像データ内の1つのビットの範囲に対して反転処理を行う場合について説明した。しかし、反転処理を行う画像データのビットの範囲は、予め定められた1つの範囲のみではなく、画像データ内の複数のビットの範囲に対して反転処理を行う構成にすることもできる。
<第3の構成>
次に、本第3の構成のデータ変換部について説明する。図11は、本実施形態の撮像装置1に備えた第3の構成のデータ変換部47の概略構成を示したブロック図である。図11に示したデータ変換部47は、第1の構成のデータ変換部41または第2の構成のデータ変換部43の代わりに、撮像装置1に備えられる。従って、データ変換部47は、データ変換部51の代わりに撮像装置1に備えることもできる。
図11に示したように、データ変換部47は、4つのビット反転部471a〜471d(以下、ビット反転部471a〜471dのいずれか1つを表すときには「ビット反転部471」という)と、機能選択部472と、D−FF473と、4つのEXOR回路474a〜474d(以下、EXOR回路474a〜474dのいずれか1つを表すときには「EXOR回路474」という)と、4つのビット加算部475a〜475d(以下、ビット加算部475a〜475dのいずれか1つを表すときには「ビット加算部475」という)と、比較部476と、ビット結合部477と、を備えている。
なお、以下の説明においては、第1の構成および第2の構成と同様に、データ変換部47に、図19に示したような、16行×16列のベイヤーデータが入力され、4転送をベイヤーデータ内の各画素データのパッキング単位とし、ベイヤーデータ内の各画素データのビット数は10bitであり、メモリバス幅は32bitである場合について説明する。
データ変換部47は、撮像処理部40から順次入力された10bitの画素データの各ビットのデータを、上述したような予め定められたパッキング方法のいずれか1つの方法で、メモリバス上の各ビットに配置した32bitのパックデータを生成する。そして、データ変換部47は、例えば、出力DMA部45から入力される図示しないデータイネーブル信号に基づいて生成したパックデータを順次出力する。なお、データイネーブル信号は、出力DMA部45がバースト転送する際にパックデータを転送するタイミングを表す信号である。
データ変換部47がパックデータを生成する際には、まず、入力された画素データを、例えば、図12に示したような、予め定められた反転処理の適用範囲に応じて反転処理したそれぞれの画素データ(以下、「反転画素データ」という)を生成する。図12は、本実施形態の撮像装置1に備えた第3の構成のデータ変換部47における反転処理の適用範囲の一例を説明する図である。より具体的には、データ変換部47には、図12に示したように、4つの反転処理の適用範囲に対応した反転ケース(反転ケースa〜d)が予め定められ、入力された画素データに対して、それぞれの反転ケースに応じた反転処理を行った、それぞれの反転画素データを生成する。なお、ここで、反転処理とは、第1の構成および第2の構成と同様に、画素データの各ビットの値を、ビット毎に反転(“1”から“0”、または“0”から“1”)する処理である。
そして、データ変換部47は、前回出力した反転画素データの各ビットの値と、今回生成した反転画素データの各ビットの値とをそれぞれ比較し、前回出力した反転画素データに対して、値が変化しているビットの数が少ない反転画素データを選択する。そして、選択した反転画素データを、今回出力する反転画素データとする。また、データ変換部47は、選択した反転画素データに対応した機能選択ビットを、反転画素データを選択したときの情報として出力する。この機能選択ビットは、画素データに対して適用した反転処理の範囲を表している。また、図12に示した反転処理の適用範囲では、4つの反転処理の適用範囲を予め設定しているため、機能選択ビットのビット数は、2bitである。
その後、データ変換部47は、上述したような予め定められたパッキング方法で、反転画素データの各ビットのデータを、メモリバスに対応したデータバス(このデータバスはメモリバスの各ビットに対応しているため、以下の説明においては、「メモリバス」として説明する)の各ビットに配置(パッキング)し、最終的に出力するパックデータとして出力する。また、データ変換部47は、反転画素データを選択したときの情報(機能選択ビット)を、パッキング単位(4転送)内に存在する未使用ビットに付加して、パックデータと共に出力する。
なお、データ変換部47は、上記に述べたように、画素データが入力される毎に、それぞれの反転ケースに応じた反転画素データを生成し、選択した反転画素データおよび機能選択ビットを順次パッキングしたパックデータを順次出力することもできるが、データ変換部47内に、例えば、1バースト分、すなわち、パッキング単位(4転送)分の32bitのパックデータを一時的に保持するメモリ部を備えた構成とすることもできる。この場合には、入力された画素データをメモリ部に一旦保持し、保持したそれぞれの画素データに基づいた反転画素データを生成し、選択した反転画素データのパッキングと、機能選択ビットの付加とを行う。
また、入力された画素データを最初にパッキングし、その後、予め定められた反転ケースに応じた反転画素データと同様のパックデータの生成と、パックデータを選択したときの情報(パックデータに対して適用した反転処理の範囲を表す情報)の付加とを行う構成とすることもできる。この場合には、最初にパッキングしたパックデータを、入力された画素データと同様に扱って処理する。
上記に述べたように、データ変換部47は、入力された10bitの画素データから、予め定められた反転ケースに応じて生成した反転画素データのいずれかを選択し、選択した反転画素データをパッキングして、データ変換部47が最終的に出力する32bitのパックデータを生成する。しかし、以下の説明においては、説明を容易にするため、データ変換部47に8bitの画素データが順次入力され、入力された画素データから生成した反転画素データのいずれかを選択し、選択した反転画素データに2bitの機能選択ビットを付加した10bitのパックデータを出力する場合について説明する。すなわち、データ変換部47は、1つの反転画素データをパッキングしたパックデータを生成する場合について説明する。なお、複数の反転画素データをパッキングしたパックデータの生成方法は、図6に示した上述した第1のパッキング方法および図7に示した上述した第2のパッキング方法と同様であるため、それぞれの詳細な説明は省略する。
以下の説明においては、第1の構成のデータ変換部41および第2の構成のデータ変換部43と同様に、データ変換部47に入力される10bitの画素データと8bitの画素データとを区別するため、8bitの画素データを入力データDIN[7:0]と表す。また、32bitのパックデータと10bitのパックデータとを区別するため、以下の説明においては、10bitのパックデータを出力データDOUT[9:0]と表す。なお、以下の説明において、入力データDINまたは出力データDOUTのビットを特定しない、すなわち、入力データDINまたは出力データDOUTの全てのビット範囲を表す場合には、データのビットの範囲を表す“[]:括弧”内の数字を省略する。
また、以下の説明においては、8bitの入力データDINを、図12に示したような、予め定められた反転ケースに応じて反転処理した、それぞれの反転画素データを生成する場合について説明する。
ビット反転部471a〜471dは、それぞれ、図12に示した反転処理の適用範囲に応じて、入力された8bitの入力データDIN[7:0]の各ビットの値を、ビット毎に反転処理した反転画素データを生成する。ビット反転部471a〜471dのそれぞれは、生成した反転画素データを、機能選択部472と、対応するEXOR回路474a〜474dとに出力する。なお、ビット反転部471a〜471dは、それぞれ、反転ケースa〜dに対応している。そして、以下の説明において、ビット反転部471a〜471dが生成した反転画素データを区別する場合には、ビット反転部471a〜471dに付与した符号の最後の1文字を反転画素データにも付与し、「反転画素データa」、「反転画素データb」、「反転画素データc」、および「反転画素データd」という。
ここで、ビット反転部471a〜471dのそれぞれの処理について、より具体的に説明する。ビット反転部471aにおける反転処理は、反転ケースa、すなわち、「反転しない」である。ビット反転部471aは、入力データDIN[7:0]の各ビットの値がそのままの反転画素データa[7:0]を出力する。また、ビット反転部471bにおける反転処理は、反転ケースb、すなわち、「下位2ビット反転」である。ビット反転部471bは、入力データDIN[7:0]の下位の2ビット(入力データDIN[1:0])の値を反転し、その他のビット(入力データDIN[7:2])の値がそのままの反転画素データb[7:0]を出力する。また、ビット反転部471cにおける反転処理は、反転ケースc、すなわち、「下位4ビット反転」である。ビット反転部471cは、入力データDIN[7:0]の下位の4ビット(入力データDIN[3:0])の値を反転し、その他のビット(入力データDIN[7:4])の値がそのままの反転画素データc[7:0]を出力する。また、ビット反転部471dにおける反転処理は、反転ケースd、すなわち、「全ビット反転」である。ビット反転部471dは、入力データDIN[7:0]の全てのビットの値を反転した反転画素データd[7:0]を出力する。
機能選択部472は、比較部476から入力された機能選択ビットに応じて、ビット反転部471a〜471dのそれぞれから入力された反転画素データa〜dの内、いずれか1つの反転画素データを選択する。そして、選択した反転画素データを、ビット結合部477とD−FF473とに出力する。なお、以下の説明においては、機能選択部472によって選択され、出力された反転画素データを、「選択画素データ」という。
D−FF473は、機能選択部472から出力された選択画素データ[7:0]を保持する。このD−FF473によって保持された選択画素データは、前回出力した出力データDOUT[7:0]として、EXOR回路474a〜474dのそれぞれに出力される。
EXOR回路474a〜474dは、それぞれ、ビット反転部471a〜471dから入力された反転画素データa[7:0]〜d[7:0]と、D−FF473から入力された出力データDOUT[7:0]との2つのデータの各ビットの値を比較して、値が変化しているビットの有無を検出する。そして、EXOR回路474a〜474dのそれぞれは、値が変化しているビットであることを表す値=“1”、または値が変化しているビットではないことを示す値=“0”を、比較したそれぞれのビット毎に出力する。
より具体的には、EXOR回路474のそれぞれによる2つのデータの比較においては、反転画素データの各ビットと、出力データDOUTの各ビットとの排他的論理和がとられる。これにより、反転画素データのビットの値と出力データDOUTのビットの値とが同じ値のときに“0”が出力され、反転画素データのビットの値と出力データDOUTのビットの値とが異なる値のときに“1”が出力される。
ビット加算部475a〜475dは、それぞれ、対応するEXOR回路474a〜474dから入力された値が変化しているビットの数を計数し、値が変化しているビットの数の合計(以下、「ビット変化数」という)を算出する。そして、算出したビット変化数を、比較部476に出力する。例えば、EXOR回路474aから入力された、値が変化しているビットの値が、“1111_0000”である場合には、ビット変化数の値として“4”が出力される。このように、ビット加算部475a〜475dのそれぞれは、反転画素データ[7:0]が、次に出力データDOUT[7:0]として出力されるときに、値が変化するビットの数(ビット変化数)を出力する。
比較部476は、ビット加算部475a〜475dのそれぞれから入力されたビット変化数の内、ビット変化数が最も少ないものを判定し、最も少ないビット変化数を出力したビット加算部475を特定(選択)する。そして、最も少ないビット変化数を出力したビット加算部475を表す情報を、機能選択ビットとして、機能選択部472とビット結合部477とに出力する。これにより、前回出力した反転画素データ(出力データDOUT)に対して、値が変化しているビットの数が最も少ない反転画素データを選択することになる。
ビット結合部477は、機能選択部472からから入力された選択画素データ[7:0]の最上位ビットの上位側の次の2ビットに、比較部476から入力された機能選択ビットを付加(ビット結合)した出力データDOUT[9:0]を生成する。ここで生成された出力データDOUTが、データ変換部47から最終的に出力する出力データDOUT(パックデータ)として、出力DMA部45に出力される。
次に、本第2の構成のデータ逆変換部について説明する。図13は、本実施形態の撮像装置1に備えた第3の構成のデータ逆変換部58の概略構成を示したブロック図である。図13に示したデータ逆変換部58は、第1の構成のデータ逆変換部52または第2の構成のデータ逆変換部54の代わりに、撮像装置1に備えられる。従って、データ逆変換部58は、データ逆変換部62の代わりに撮像装置1に備えることもできる。
図13に示したように、データ逆変換部58は、ビット分離部581と、4つのビット復元部582a〜582d(以下、ビット復元部582a〜582dのいずれか1つを表すときには「ビット復元部582」という)と、機能選択部583と、を備えている。
なお、以下の説明においては、第1の構成および第2の構成と同様に、データ逆変換部58に、データ変換部47によってパッキングされた、4転送をパッキング単位とした1バーストのパックデータが、入力DMA部56を介して入力され、入力されたパックデータを、図19に示したベイヤーデータに戻す場合について説明する。従って、ベイヤーデータ内の各画素データのビット数は10bitであり、メモリバス幅は32bitであるものとして説明する。
データ逆変換部58は、入力DMA部56から順次入力された32bitのパックデータの各ビットに配置されたデータを、上述したような予め定められたパッキング方法のいずれか1つの方法と逆の方法で、画像処理部50が画像処理する元の画像データ(ベイヤーデータ)に戻した10bitの画素データに復元する。そして、データ逆変換部58は、例えば、画像処理部50から入力される図示しないデータイネーブル信号に基づいて復元した元の画素データを順次出力する。なお、データイネーブル信号は、画像処理部50に出力するタイミングを表す信号である。
また、データ逆変換部58には、図12に示したデータ変換部47が画素データに対して反転処理するときの反転ケースと同じ反転処理の適用範囲である反転ケース(反転ケースa〜d)が、予め設定されている。
データ逆変換部58が画素データを復元する際には、まず、入力された32bitのパックデータ(このパックデータは、データ変換部47が生成したパックデータと同等である)から、データ変換部47によるパッキング方法と逆の方法で、それぞれのデータ(このデータは、データ変換部47が生成した選択画素データと同等であるため、以下の説明においては、「選択画素データ」として説明する)に、順次分割(アンパッキング)する。
その後、データ逆変換部58は、パッキング単位(4転送)内に存在する未使用ビットに付加されている、画素データに対して適用した反転ケースを表す情報(機能選択ビット)に基づいて、データ変換部47が画素データに対して行った反転処理と逆の方法で、選択画素データを反転処理し、それぞれの画素データを生成する。より具体的には、データ逆変換部58は、機能選択ビットに基づいて、データ変換部47によって選択された反転ケースに対応した反転ケースを選択する。そして、データ逆変換部58は、選択した反転ケース(反転処理の適用範囲)に応じた反転処理を、選択画素データに対して行って、元の画素データに復元する。
なお、データ逆変換部58は、上記に述べたように、入力DMA部56からパックデータが入力される毎に、選択画素データに分割し、分割した選択画素データに対する反転処理を順次行うこともできるが、データ逆変換部58内に、例えば、1バースト分、すなわち、パッキング単位(4転送)分の32bitのパックデータを一時的に保持するメモリ部を備えた構成とすることもできる。この場合には、入力DMA部56から入力されたパックデータをメモリ部に一旦保持し、保持したそれぞれのパックデータからの選択画素データの分割と、選択画素データを生成したときの情報に基づいた反転処理を行う。
また、入力DMA部56から入力されたパックデータを最初に、選択画素データ(反転画素データ)と同様のパックデータと、パックデータを選択したときの情報(パックデータに対して適用した反転処理の範囲を表す情報)とに分割し、元のパックデータに戻した後に、元のパックデータに配置されたそれぞれの画素データに分割(アンパッキング)する構成とすることもできる。この場合には、入力DMA部56から入力されたパックデータを、選択画素データ(反転画素データ)と同様に扱って処理する。
上記に述べたように、データ逆変換部58は、入力DMA部56から入力された32bitのパックデータから選択画素データを分割し、分割した選択画素データに反転処理を行って、元に戻した画素データを生成する。しかし、以下の説明においては、説明を容易にするため、データ逆変換部58に、入力DMA部56から、画素データに対して適用した反転処理の範囲を表す2bitの機能選択ビットが付加された10bitのパックデータが入力され、パックデータから分割した選択画素データに対して、機能選択ビットで表された、データ変換部47が画素データに対して行った反転処理の適用範囲と同じ範囲に反転処理を行って、元の画素データを生成する場合について説明する。すなわち、データ逆変換部58は、1つの選択画素データがパッキングされたパックデータから、1つの画素データを復元する場合について説明する。
以下の説明においては、第1の構成のデータ逆変換部52および第2の構成のデータ逆変換部54と同様に、32bitのパックデータと10bitのパックデータとを区別するため、以下の説明においては、10bitのパックデータを入力データDIN[9:0]と表す。また、10bitの画素データと8bitの画素データとを区別するため、以下の説明においては、8bitの画素データを出力データDOUT[7:0]と表す。なお、以下の説明において、入力データDINまたは出力データDOUTのビットを特定しない、すなわち、入力データDINまたは出力データDOUTの全てのビット範囲を表す場合には、データのビットの範囲を表す“[]:括弧”内の数字を省略する。
また、以下の説明においては、10bitのパックデータの最上位ビットから2ビット(入力データDIN[9:8])に、画素データに対して適用した反転ケースを表す情報である機能選択ビットが付加されており、選択画素データを、機能選択ビットによって表されている反転処理の適用範囲に応じて反転処理して、元の画素データに復元する場合について説明する。
ビット分離部581は、入力された10bitの入力データDIN[9:0]を、最上位から2ビットの入力データDIN[9:8]、すなわち、機能選択ビットと、入力データDIN[7:0]、すなわち、選択画素データとに分離する。そして、ビット分離部581は、分離した選択画素データを、ビット復元部582a〜582dに出力する。また、ビット分離部581は、分離した機能選択ビットを機能選択部583に出力する。なお、選択画素データは、データ変換部47内のビット反転部471によって生成された反転画素データa〜dの内、いずれか1つの反転画素データと同等である。
ビット復元部582a〜582dは、それぞれ、予め設定されている図12に示した反転処理の適用範囲と同じ反転処理の適用範囲に応じて、入力された選択画素データ[7:0]の各ビットの値を、ビット毎に反転処理した反転出力データを生成する。ビット復元部582a〜582dのそれぞれは、生成した反転出力データを、機能選択部583に出力する。
なお、ビット復元部582a〜582dは、それぞれ、図12に示した反転ケースa〜dに対応している。そして、以下の説明において、ビット復元部582a〜582dが生成した反転出力データを区別する場合には、ビット復元部582a〜582dに付与した符号の最後の1文字を反転出力データにも付与し、「反転出力データa」、「反転出力データb」、「反転出力データc」、および「反転出力データd」という。
ここで、ビット復元部582a〜582dのそれぞれの処理について、より具体的に説明する。ビット復元部582aにおける反転処理は、反転ケースa、すなわち、「反転しない」である。ビット復元部582aは、選択画素データ[7:0]の各ビットの値がそのままの反転出力データa[7:0]を出力する。また、ビット復元部582bにおける反転処理は、反転ケースb、すなわち、「下位2ビット反転」である。ビット復元部582bは、選択画素データ[7:0]の下位の2ビット(選択画素データ[1:0])の値を反転し、その他のビット(選択画素データ[7:2])の値がそのままの反転出力データb[7:0]を出力する。また、ビット復元部582cにおける反転処理は、反転ケースc、すなわち、「下位4ビット反転」である。ビット復元部582cは、選択画素データ[7:0]の下位の4ビット(選択画素データ[3:0])の値を反転し、その他のビット(選択画素データ[7:4])の値がそのままの反転出力データc[7:0]を出力する。また、ビット復元部582dにおける反転処理は、反転ケースd、すなわち、「全ビット反転」である。ビット復元部582dは、選択画素データ[7:0]の全てのビットの値を反転した反転出力データd[7:0]を出力する。
機能選択部583は、ビット分離部581から入力された機能選択ビットに応じて、ビット復元部582a〜582dのそれぞれから入力された反転出力データa〜dの内、いずれか1つの反転出力データを選択する。そして、選択した反転出力データを、出力データDOUT[7:0]として出力する。ここで出力された出力データDOUTが、データ逆変換部58によって復元された、すなわち、データ変換部47に入力された、元の画素データとして、画像処理部50に出力される。
上記に述べたように、本第3の構成のデータ変換部47では、反転処理を行う画素データのビットの範囲の数を、予め定められた反転処理の適用範囲の複数の範囲にする。そして、反転処理の適用範囲に応じた複数の反転画素データを生成し、ビット変化数が最も少ない反転画素データを選択して出力する。これにより、バースト転送時のメモリバスの各ビットの変化量が少なくなる場合がある。
なお、反転処理を行う画像データのビットの範囲を複数にすることによって、反転処理を行ったビットの範囲を表す情報が複数必要になる。しかし、本第3の構成のデータ変換部47では、反転処理を行うビットの範囲(反転処理の適用範囲)の数を、予め定められた数にすることによって、反転処理の適用範囲を表す情報に使用するビット数を少なくしている。これにより、パックデータ内の反転処理の適用範囲を表す情報に使用されるビットの割合を少なくして、バースト転送の効率の低下を抑えると共に、反転処理の適用範囲の選択に係る回路規模が安易に増大してしまうことを抑えることができる。
また、反転処理を行う画素データのビットの範囲の数を、予め定められた反転処理の適用範囲の複数の範囲にすることは、パックデータに含まれる未使用ビットのビット数が少ない場合においても、必要な反転処理の適用範囲を表す情報を付加することができるため、有効な方法である。
なお、本第3の構成のデータ変換部47においては、反転処理の適用範囲を画素データの全てのビットの範囲に設定した反転ケースも設定した場合について説明したが、反転処理の適用範囲の設定は、本第3の構成のデータ変換部47での設定に限定されるものではない。例えば、データの相関性が低い(データの変化頻度の高い)下位の画素データの範囲内で、反転処理の適用範囲を設定することもできる。この場合、下位の画素データにおいて、各ビットの変化量が少なくなることが期待される。
また、本第3の構成のデータ変換部47において、反転せずにそのまま出力するデータに対して、例えば、第2の構成のデータ変換部43に備えたコード変換部431と同様の機能を適用することもできる。また、例えば、本第3の構成のデータ変換部47の機能をデータの相関性が低い(データの変化頻度の高い)下位の画素データに適用し、第2の構成のデータ変換部43に備えたコード変換部431と同等に機能を、データの相関性が高い(データの変化頻度が低い)上位の画素データに適用することもできる。この場合、本第3の構成のデータ変換部47の効果に加えて、グレイコードによるデータの変化量の削減の効果も、同時に得ることができる。
上記に述べた実施形態においては、ベイヤーデータに本実施形態のパッキング方法および反転処理方法を適用したデータ処理装置およびデータ処理方法について説明したが、本実施形態のパッキング方法および反転処理方法は、ベイヤーデータへの適用に限定されるものではなく、RGBデータ、YC422点順次やYC444点順次フォーマットのYCbCrデータ、またはOSDデータなど、様々な画像データに適用することができる。また、本実施形態のパッキング方法および反転処理方法は、画像データへの適用に限定されるものではなく、音声データなど、他の形式のデータに適用することもできる。
<適用例>
次に、本実施形態のパッキング方法を、他の形式の画像データや、画像データ以外のデータに適用した場合の一例について説明する。なお、本実施形態の反転処理方法を、他の形式の画像データや、画像データ以外のデータに適用する場合については、上述した反転処理方法と同様に考えることができるため、詳細な説明は省略する。
まず、本実施形態のパッキング方法をRGBデータに適用した場合の一例について説明する。図14は、本実施形態の撮像装置1に備えたデータ変換部41によるデータ配置方法(パッキング方法)を、別の画像データ(RGBデータ)に適用した場合の一例を示した図である。なお、図14では、10bitのRGBデータを、従来のバースト単位でのデータ配置方法(パッキング方法)によって画素データの各ビットが配置されたパックデータの一例(図9(a)参照)と、本実施形態のパッキング方法でパックデータ内の画素データに対する反転ビットが付加されたパックデータ内のデータの配置の一例(図9(b)参照)とを、それぞれ示している。
図14(a)に示したように、RGBデータ(10bit×3色=30bit)が単純に配置されたパックデータ内の画素データの配置と同様の配置で、反転処理された画素データを配置する場合、データ変換部41は、1転送のメモリバスに配置するそれぞれの画素データの下位のビットをまとめて反転処理する。そして、図14(b)に示したように、画素データの上位のビットと、反転処理した後の画素データの下位ビットとを、それぞれ1転送のメモリバスに配置する。さらに、画素データの下位のビットを反転処理したときの情報を表す反転ビットを、1転送のメモリバス内に存在する未使用ビットに付加して、最終的な1転送のデータとする。これにより、バースト転送時の連続する2転送間において、メモリバスの各ビットの変化量を少なくする。
図14の例では、それぞれの1転送のデータには、3つの画素データが含まれているため、データ変換部41は、3つの画素データを1つのデータとして扱う。より具体的には、例えば、1転送目では、それぞれの画素データの下位4bit(「R0」のビット[3]〜ビット[0]、「G0」のビット[3]〜ビット[0]、および「B0」のビット[3]〜ビット[0])をまとめて、反転処理する下位の画素データ[11:0]とする。その後、反転処理した後の下位の画素データ[11:0]をそれぞれの画素データに分割して、それぞれの画素データの上位6bit(「R0」のビット[9]〜ビット[4]、「G0」のビット[9]〜ビット[4]、および「B0」のビット[9]〜ビット[4])と結合し、それぞれ1転送のメモリバスに配置する。そして、さらに、下位の画素データ[11:0]に対応した反転ビットを、メモリバスのビット[30]に配置する。なお、メモリバスのビット[31]は、未使用ビットのままである。これにより、4つのパックデータの各ビットの変化量を少なくすることができ、画像データの転送に係る消費電力を低減させることができる。
図15は、本実施形態の撮像装置1に備えたデータ変換部41によるデータ配置方法(パッキング方法)を、さらに別の画像データ(YCbCrデータ)に適用した場合の一例を示した図である。なお、図15では、図15(a)に示したような、9bitのY、6bitのCbおよびCrデータを、従来のバースト単位でのデータ配置方法(パッキング方法)によって画素データの各ビットが配置されたパックデータの一例(図15(b)参照)と、本実施形態のパッキング方法でパックデータ内の画素データに対する反転ビットが付加されたパックデータ内のデータの配置の一例(図15(c)参照)とを、それぞれ示している。
図15(b)に示したように、YCbCrデータが単純に配置されたパックデータ内の画素データの配置と同様の配置で、反転処理された画素データを配置する場合、データ変換部41は、1転送のメモリバスに配置するそれぞれの画素データの下位のビットをまとめて反転処理する。そして、図15(c)に示したように、画素データの上位のビットと、反転処理した後の画素データの下位ビットとを、それぞれ1転送のメモリバスに配置する。さらに、画素データの下位のビットを反転処理したときの情報を表す反転ビットを、1転送のメモリバス内に存在する未使用ビットに付加して、最終的な1転送のデータとする。これにより、バースト転送時の連続する2転送間において、メモリバスの各ビットの変化量を少なくする。
図15の例では、それぞれの1転送のデータには、4つの画素データが含まれているため、データ変換部41は、4つの画素データを1つのデータとして扱う。より具体的には、例えば、1転送目では、Yデータの下位4bitと、CbおよびCrデータの下位2bit(「Y0」のビット[3]〜ビット[0]、「Y1」のビット[3]〜ビット[0]、「Cb0」のビット[1]〜ビット[0]、および「Cr0」のビット[1]〜ビット[0])をまとめて、反転処理する下位の画素データ[11:0]とする。その後、反転処理した後の下位の画素データ[11:0]をそれぞれの画素データに分割して、Yデータの上位5bit(「Y0」のビット[8]〜ビット[4]、および「Y1」のビット[8]〜ビット[4])と、CbおよびCrデータの上位4bit(「Cb0」のビット[5]〜ビット[2]、および「Cr0」のビット[5]〜ビット[2])と結合して、それぞれ1転送のメモリバスに配置する。
なお、図15の例では、図15(c)に示したように、それぞれの画素データをメモリバスへの配置する際に、メモリバス上に配置される隣接する同一色の画素データのビットの位置が同じ位置になるように、上位の画像データと下位の画像データとを分けて、メモリバス上に配置した例を示している。
そして、さらに、下位の画素データ[11:0]に対応した反転ビットを、メモリバスのビット[30]に配置する。なお、メモリバスのビット[31]は、未使用ビットのままである。これにより、4つのパックデータの各ビットの変化量を少なくすることができ、画像データの転送に係る消費電力を低減させることができる。
図16は、本実施形態の撮像装置1に備えたデータ変換部41によるデータ配置方法(パッキング方法)を、さらに別の画像データ(OSDデータ)に適用した場合の一例を示した図である。なお、図16では、6bitのOSDデータを、従来のバースト単位でのデータ配置方法(パッキング方法)によって画素データの各ビットが配置されたパックデータの一例(図16(a)参照)と、本実施形態のパッキング方法でパックデータ内の画素データに対する反転ビットが付加されたパックデータ内のデータの配置の一例(図16(b)参照)とを、それぞれ示している。
図16(a)に示したように、OSDデータが単純に配置されたパックデータ内の画素データの配置と同様の配置で、反転処理された画素データを配置する場合、データ変換部41は、1転送のメモリバスに配置するそれぞれの画素データの下位のビットをまとめて反転処理する。そして、図16(b)に示したように、画素データの上位のビットと、反転処理した後の画素データの下位ビットとを、それぞれ1転送のメモリバスに配置する。さらに、画素データの下位のビットを反転処理したときの情報を表す反転ビットを、1転送のメモリバス内に存在する未使用ビットに付加して、最終的な1転送のデータとする。これにより、バースト転送時の連続する2転送間において、メモリバスの各ビットの変化量を少なくする。
図16の例では、それぞれの1転送のデータには、5つのOSDデータが含まれているため、データ変換部41は、5つのOSDデータを1つのデータとして扱う。より具体的には、例えば、1転送目では、それぞれのOSDデータの下位2bit(「OSD0」〜「OSD4」のビット[1]〜ビット[0])をまとめて、反転処理する下位のOSDデータ[9:0]とする。その後、反転処理した後の下位のOSDデータ[9:0]をそれぞれのOSDデータに分割して、それぞれのOSDデータの上位4bit(「OSD0」〜「OSD4」のビット[5]〜ビット[2])と結合し、それぞれ1転送のメモリバスに配置する。そして、さらに、下位のOSDデータ[9:0]に対応した反転ビットを、メモリバスのビット[31]に配置する。なお、メモリバスのビット[30]は、未使用ビットのままである。これにより、4つのパックデータの各ビットの変化量を少なくすることができ、画像データの転送に係る消費電力を低減させることができる。
なお、図16(b)をみてわかるように、反転ビットを配置するメモリバス上の位置は、未使用ビットであれば、いかなるところにも配置することができる。図16(b)の例では、メモリバスのビット[31]に配置した例を示している。
図17は、本実施形態の撮像装置1に備えたデータ変換部41によるデータ配置方法(パッキング方法)を、別のデータ(音声データ)に適用した場合の一例を示した図である。なお、図17では、それぞれ24bitのR(右)データおよびL(左)データを64bitのメモリバスに適用した場合を示している。そして、図17(a)には、従来のバースト単位でのデータ配置方法(パッキング方法)によって音声データの各ビットが配置されたパックデータの一例を示し、図17(b)には、本実施形態のパッキング方法でパックデータ内の音声データに対する反転ビットが付加されたパックデータ内のデータの配置の一例を示している。なお、図17においては、24bitのR(右)データおよびL(左)データを連続せずにメモリバスに配置した場合を示している。
図17(a)に示したように、音声データが単純に配置されたパックデータ内の音声データの配置と同様の配置で、反転処理された音声データを配置する場合、データ変換部41は、1転送のメモリバスに配置するそれぞれの音声データの下位のビットをまとめて反転処理する。そして、図17(b)に示したように、音声データの上位のビットと、反転処理した後の音声データの下位ビットとを、それぞれ1転送のメモリバスに配置する。さらに、音声データの下位のビットを反転処理したときの情報を表す反転ビットを、1転送のメモリバス内に存在する未使用ビットに付加して、最終的な1転送のデータとする。これにより、バースト転送時の連続する2転送間において、メモリバスの各ビットの変化量を少なくする。
図17の例では、それぞれの1転送のデータには、R(右)データおよびL(左)データが分かれて配置されている。しかし、メモリバス上の音声データは、合わせて2つである。データ変換部41は、2つの音声データを1つのデータとして扱う。より具体的には、例えば、1転送目では、それぞれの音声データの下位8bit(「R0」のビット[7]〜ビット[0]、および「L0」のビット[7]〜ビット[0])をまとめて、反転処理する下位の音声データ[15:0]とする。その後、反転処理した後の下位の音声データ[15:0]をそれぞれの音声データに分割して、それぞれの音声データの上位16bit(「R0」のビット[23]〜ビット[8]、および「L0」のビット[23]〜ビット[8])と結合し、それぞれ1転送のメモリバスに配置する。そして、さらに、下位の音声データ[15:0]に対応した反転ビットを、メモリバス上の未使用ビットに配置する。これにより、4つのパックデータの各ビットの変化量を少なくすることができ、音声データの転送に係る消費電力を低減させることができる。
なお、図17(b)をみてわかるように、反転ビットを配置するメモリバス上の位置は、未使用ビットであれば、いかなるところにも配置することができる。図17(b)の例では、R(右)データに対応した反転ビットを、メモリバスのビット[24]に配置した例を示している。また、L(左)データに対応した反転ビットを、4転送目のメモリバスのビット[59]〜ビット[56]に配置した例を示している。このように、反転ビットは、1転送毎のメモリバスに配置するのみではなく、予め定められた1転送のメモリバスに、複数の反転ビットをまとめて配置することもできる。
上記に述べたとおり、本発明を実施するための形態によれば、データの相関性にも基づいて、転送するデータを予め定められたビットの範囲に分割する。そして、相関性が低い(変化頻度の高い)データの各ビットの値と、前回転送した対応するビットの値とを、ビット毎に比較し、変化しているビットの数が多い場合に、そのデータに対して反転処理を行う。また、反転処理したときの情報を、パックデータの未使用ビットに付加して出力する。これにより、各ビットの変化量を少なくしたデータを、メモリバスに配置することができ、バースト転送時の連続する2転送間において、メモリバスの各ビットの変化量を少なくすることができると共に、パックデータを容易に復元することができる。しかも、データの転送効率は、従来と同等のデータ転送効率を維持することができる。これにより、像装置内の各構成要素(処理ブロック)とメモリとの間でのデータの受け渡しに係る消費電力の低減効果を十分に得ることができる。
また、本発明を実施するための形態においては、データの全てのビットに対して反転処理を行うのではなく、データの相関性に基づいて予め定めた一部のビットの範囲にのみ反転処理を行う。そして、反転処理は、相関性が低い(変化頻度の高い)データのビットに対して行う。このため、反転処理によるデータの変化量の削減効果を、より多く得ることができる。さらに、反転処理に係る回路規模が削減できるという効果も得ることができる。
また、本発明を実施するための形態によれば、反転処理を適用するビットの範囲を複数設定し、それぞれの反転処理の適用範囲に応じた複数の反転処理後のデータから、ビット変化数が最も少ない反転処理後のデータを選択して出力することができる。これにより、バースト転送時のメモリバスの各ビットの変化量を効率的に少なくすることができる。また、反転処理を適用するビットの範囲の設定数を、予め定められた数に定めておく。これにより、ビットの範囲の設定数が多くなることによって、反転処理の適用範囲を表す情報に使用するビット数が増加し、パックデータ内の反転処理の適用範囲を表す情報に使用されるビットの割合が大きくなるのを抑えることができる。また、ビットの範囲の設定数が多くなることによって、反転処理および反転処理後のデータの選択に係る回路の規模が増大してしまうことを抑えることができる。このことにより、データの転送効率の低下を抑えることができる。
また、本発明を実施するための形態によれば、相関性が高い(変化頻度が低い)データを、グレイコードを用いて表すことにより、相関性が低い(変化頻度の高い)データに対する反転処理と異なる処理を行う。これにより、データの相関性に応じた、効率的なビットの変化量の削減を行うことができる。
なお、本実施形態においては、前回出力したデータの各ビットの値と、今回入力されたデータの各ビットの値とを比較した結果から、反転処理した後のデータを切り替える(選択する)ための情報(反転ビット)を得る場合について説明したが、反転ビットを得るための方法は、本発明を実施するための形態に限定されるものではない。
例えば、特許文献2で開示された技術と同様に、前回入力されたデータの各ビットの値と、今回入力されたデータの各ビットの値とを比較した結果から今回の反転ビットを得て、その後、前回の反転ビットと比較して、最終的な今回の反転ビットにする構成にすることもできる。
また、本実施形態においては、4転送を1回のバースト転送の単位とし、1バーストをデータのパッキング単位とした場合について説明したが、1回のバースト転送における転送の回数や、データのパッキングの単位は、本発明を実施するための形態に限定されるものではない。例えば、64転送を1回のバースト転送の単位とし、1バースト内の16転送をデータのパッキングの単位とする、すなわち、1バースト内に4つのパッキング単位が含まれる構成にすることもできる。また、例えば、16転送をデータのパッキングの単位とし、8転送を1回のバースト転送の単位とする、すなわち、パッキング単位が2回のバースト転送に跨っている構成にすることもできる。
また、本実施形態においては、撮像装置内の構成要素間でデータの受け渡しを行う場合のパッキング方法を、いくつかのデータに適用した場合について説明したが、本実施形態のパッキング方法を適用することができる範囲は、本発明を実施するための形態に限定されるものではなく、各構成要素間でデータの受け渡しを行うシステムであれば、どのようなシステムにも適用することができる。
また、本実施形態においては、例えば、データ変換部を出力DMA部の前段の処理ブロックとして配置し、データ逆変換部を入力DMA部の後段の処理ブロックとして配置した場合の一例について説明したが、データ変換部およびデータ逆変換部の配置は、本発明を実施するための形態に限定されるものではない。例えば、データ変換部を出力DMA部内の構成要素とすることや、データ逆変換部を入力DMA部内の構成要素とすることもできる。また、例えば、データ変換部を前段の撮像処理部内の構成要素とすることや、データ逆変換部を後段の画像処理部内の構成要素とすることもできる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。