本発明の実施形態に係る撮像装置100の概略構成を、図1を用いて説明する。
CPU101は、撮像装置100における各部の全体的な制御を司る。CPU101は、周辺の制御ブロックへの処理キューの投入や、状態の監視等を行い、装置全体としての処理進捗の把握を行う。
例えば、CPU101は、外的要因や経時変化による後傷画素を検出する為の実行条件が整うと、SSG(Synchronous Signal Generator :同期信号生成部)102に対して起動をかける。なお、実行条件は、メーカーの保守・サービスによるものであっても良いし、ユーザーが撮影を行う前の準備期間に設定しても良い。ここでは、条件を限定しない。後傷画素は、宇宙線、静電破壊等の外部要因や経時変化に起因して製品出荷後に後発的に欠陥を有することになった画素である。
また、CPU101は、補間部101aを含む。補間部101aの機能及び動作については、後述する。
SSG102は、撮影画像取り込みのフレームタイミングとして、水平同期信号HD、垂直同期信号VDを生成してTG(Timing Generator)103へ供給する。それと共に、SSG102は、画像信号(デジタル信号)の取得タイミングを傷検出部107へ供給する。
TG103は、撮像センサ104、CDS/AGC105、及びA/D変換器106のそれぞれを駆動するための駆動パルスを生成して、撮像センサ104、CDS/AGC105、及びA/D変換器106のそれぞれへ供給する。
光学系(図示せず)は、撮像センサ104の撮像面(画素配列)に被写体の像を形成する。光学系は、主として、シャッター(図示せず)、レンズ(図示せず)及び絞り(図示せず)を備える。シャッターは、光路上に設けられ、撮像センサ104の露出を制御する。レンズは、入射した光を屈折させて、撮像センサ104の撮像面に被写体の像を形成する。絞りは、光路上においてレンズと撮像センサ104との間に設けられ、レンズを通過後に撮像センサ104へ導かれる光の量を調節する。なお、光学系は、本実施形態における要部に該当しないので、図示を省略している。
撮像センサ104は、TG103からの駆動パルスを受けて、撮像面(画素配列)に形成された被写体の像を画像信号に変換して出力する。撮像センサ104は、例えば、CCDイメージセンサ、又はCMOSイメージセンサである。具体的には、画素配列104aでは、光電変換部をそれぞれ含む複数の画素が2次元的に配列されている。例えば、画素配列104aでは、複数の画素が行に沿った方向及び列に沿った方向に配列されている。光電変換部は、光に応じた電荷を発生させる。光電変換部は、例えば、フォトダイオードである。
例えば、撮像センサ104がCCDイメージセンサである場合、垂直転送CCD(図示せず)及び水平転送CCD(図示せず)が、複数の画素から出力された電荷を順次に(例えば行アドレス及び列アドレス順に)出力アンプへ転送する。出力アンプは、順次に、転送された電荷を画像信号(アナログ信号)に変換して出力する。
例えば、撮像センサ104がCMOSイメージセンサである場合、垂直走査回路(図示せず)が、画素配列104aを垂直方向(列に沿った方向)に走査して読み出し行における各列の画素の信号が並行して読み出し回路(図示せず)へ読み出されるようにする。そして、水平走査回路(図示せず)が、読み出し回路を水平方向(行に沿った方向)に走査して読み出し行における各列の信号が順次に出力アンプへ転送されるようにする。
これにより、撮像センサ104は、画素配列104aにおける複数の画素の画像信号(アナログ信号)を順次に(例えば行アドレス及び列アドレス順に)出力する。
CDS/AGC105は、撮像センサ104から出力された画像信号(アナログ信号)を受ける。CDS/AGC105は、画像信号(アナログ信号)におけるS/N比を改善するために、画像信号(アナログ信号)に対して暗電流成分の除去処理やゲイン調整処理を含むアナログ信号処理を行う。CDS/AGC105は、処理後の画像信号(アナログ信号)をA/D変換器106へ転送する。
A/D変換器106は、画像信号(アナログ信号)をCDS/AGC105から受ける。A/D変換器106は、受けた画像信号(アナログ信号)を画像信号(デジタル信号)へ変換する。A/D変換器106は、変換後の画像信号(デジタル信号)を傷検出部107へ転送する。
傷検出部(検出手段)107は、複数の後傷画素の検出を行う。後傷画素は、宇宙線、静電破壊等の外部要因や経時変化に起因して製品出荷後に後発的に欠陥を有することになった画素である。すなわち、傷検出部107は、撮像センサ104から順次に出力され転送された複数の画素の信号に応じて、画素配列104a内(画素配列内)の複数の後傷画素(複数の第2の欠陥画素)を検出する。傷検出部107は、後傷画素の検出時に於いて、周囲の画素と著しく画像信号のレベルの異なる(例えば、周囲の画素との画像信号のレベル差が閾値を超える)画素を後傷画素として検出する。それとともに、傷検出部107は、撮像センサ104から順次に出力され転送された複数の画素の画像信号に応じて、複数の後傷画素のそれぞれに対する絶対位置を検出する。ここで、絶対位置は、画素配列104aにおける座標である。傷検出部107は、後傷画素の検出された絶対位置を含む後傷画素の情報を揮発性記憶部108へ供給する。
揮発性記憶部108は、傷検出部107により検出された後傷画素の絶対位置の情報を傷検出部107から受ける。揮発性記憶部108は、その検出された後傷画素の絶対位置の情報を一時的に記憶する。揮発性記憶部108は、例えば、RAM(Random Access Memory)を含む。もちろん、絶対位置の情報を、直接不揮発性記憶部111に格納しても良いが、本実施形態では、一旦揮発性記憶部108に格納している。不揮発性記憶部111(例えば、EEPROM)が、その書き込み応答速度が揮発性記憶部108(例えば、RAM)に比べて遅いことや、その書き込み電圧レベルが揮発性記憶部108と異なる等デジタルシーケンス以外の要素を含むことを考慮している。
第1のコントローラ112は、CPU101による制御のもと、不揮発性記憶部111を制御する。第2のコントローラ109は、CPU101による制御のもと、揮発性記憶部108を制御する。すなわち、CPU101は、次のように、第2のコントローラ109及び第1のコントローラ112を制御する。CPU101は、傷検出部107により検出された傷画素の絶対位置の情報を揮発性記憶部108に一時的に記憶させ、その後、記憶された後傷画素の絶対位置の情報を揮発性記憶部108から不揮発性記憶部111へ転送するように、制御する。
また、第2のコントローラ109は、傷検出部107とのデータ転送に係るステータスの授受を行う。
不揮発性記憶部111は、第1の記憶部111a及び第2の記憶部111bを含む。第1の記憶部111aと第2の記憶部111bとは、不揮発性記憶部111における互いに独立した記憶領域(記憶部)である。
第1の記憶部111aは、製品出荷前に、又は、製品出荷時に、複数の工程傷画素(複数の第1の欠陥画素)のそれぞれに対する相対位置を含む第1の欠陥情報(図4(a)参照)を予め記憶する。第1の欠陥情報は、撮像センサ104から順次に出力され転送された複数の画素の信号に応じて予め(例えば傷検出部107が工程傷画素を検出することにより)取得された画素配列104a内の複数の工程傷画素に関する情報である。工程傷画素は、撮像センサ104の製造工程で既に初期的な欠陥を有することになっている画素である。相対位置は、注目対象の工程傷画素(第1の欠陥画素)までの直前に検出された工程傷画素(第1の欠陥画素)からの転送された画素数(図4(a)に示すオフセットアドレス)を示している。
第2の記憶部111bは、傷検出部107により検出された後傷画素の絶対位置の情報を、揮発性記憶部108から受ける。第2の記憶部111bは、その受けた絶対位置の情報に応じて、第2の欠陥情報(図4(b)参照)を記憶する。第2の欠陥情報は、複数の第2の欠陥画素のそれぞれに対する絶対位置を含む。ここで、絶対位置は、画素配列104aにおける行アドレス(図4(b)に示すVアドレス)及び列アドレス(図4(b)に示すHアドレス)を含む座標である。
マージ部110は、撮影前に、工程傷画素の相対位置を含む第1の欠陥情報と後傷画素の絶対位置を含む第2の欠陥情報とをそれぞれ第1の記憶部111a及び第2の記憶部111bから読み出してマージする。具体的には、マージ部110は、第1の記憶部111aに記憶された第1の欠陥情報における相対位置を絶対位置に変換することにより、複数の第1の欠陥画素のそれぞれに対する絶対位置を含む第3の欠陥情報を生成する。マージ部110は、その生成した第3の欠陥情報と第2の記憶手段に記憶された第2の欠陥情報とを絶対位置の順番にマージすることにより、複数の工程傷画素のそれぞれと複数の後傷画素のそれぞれとに対する絶対位置を含む第4の欠陥情報を生成する。
マージ部110は、さらに、生成した第4の欠陥情報における絶対位置を相対位置に変換することにより、複数の工程傷画素のそれぞれと複数の後傷画素のそれぞれとに対する相対位置を含む第5の欠陥情報を生成する。生成された第5の欠陥情報は、揮発性記憶部108上に展開して用いられる。すなわち、揮発性記憶部(第3の記憶手段)108は、マージ部110により生成された第5の欠陥情報を一時的に記憶する。
これに応じて、CPU101の補間部101aは、マージ部110により生成された第5の欠陥情報に応じて補間対象画素の位置を順次特定する。これにより、補間部101aは、位置の特定された補間対象画素の画像信号を、周囲の画素の画像信号を用いて補間する。
次に、実施形態における後傷検出処理のフローを、図2のフローチャートを用いて説明する。図2は、撮像装置の処理における、後傷検出要求が発生したときに飛んでいくサブルーチンの要部動作を示している。図2では、撮像センサにおける後傷画素を検出し、その絶対位置情報を揮発性記憶部108に一時記憶していく処理を示す。
S401では、CPU101が、後傷処理要求を受けて、第2のコントローラ109への設定更新を行う。後傷画素の検出結果は、不揮発性記憶部111に比べて処理速度が速いことから、一旦、揮発性記憶部108に記憶する。具体的には、CPU101は、第2のコントローラ109に対してこれから受信する後傷画素のデータを格納するための領域を設定する。データの格納領域指示として、揮発性記憶部108の書き込み開始アドレスを設定する。ここで、揮発性記憶部108が幾つかのバンク(例えば、制御を一とするRAM領域)に分かれて存在する場合には、そのバンクの書き込み開始アドレスが設定される。
S402では、CPU101が、傷検出部107のレジスタ設定を行う。CPU101は、周囲の画素との画像信号のレベル差が閾値を超える画素を後傷画素として検出する検出処理が傷検出部107により行われるように、その検出処理で用いられる閾値を設定する。
S403では、CPU101が、SSG(同期信号生成部)102のレジスタの設定を行う。SSG102は、レジスタを有する。そのレジスタは、撮像センサ104を含むアナログ部に対する同期信号を生成するTG(タイミング生成部)103への信号期間の設定、デジタル部である傷検出部107に対する取込タイミングの設定、フレームのサイズ設定等を記憶する。
S401〜S403の初期設定が完了すると、CPU101は、後傷画素の検出処理の実行を開始できる状態になる。後傷画素の検出処理の内容にもよるが、ここでは、例えばサービスセンター等で均一なレベルの入射光を撮像センサに感光したときの応答から、特異なレベルの画素を検出することとする。撮像センサから出力された画素の信号の取得は、写真撮影と同様に撮影釦が所定の状態まで押されたことを検知したタイミングで行うものとして、以下に記す。
S404では、CPU101が、SSG102に起動要求を出す。SSG102は、起動した後、水平同期信号HD、垂直同期信号VDを生成してTG(Timing Generator)103へ供給すると共に、画像信号(デジタル信号)の取得タイミングを傷検出部107へ供給する。これにより、撮像系(104〜107)の動作が開始する。
S405では、CPU101が、撮影釦が半押しされた状態(以下、S1状態とする)になったか否かを判断する。CPU101は、S1状態になっていない場合(S405でno)、処理をS405へ進め、S1状態になった場合(S405でyes)、処理をS406へ進める。
S406では、CPU101が、撮像センサから出力された画素の信号を取り込む準備に入る為、第2のコントローラ109に対してデータ受信要求を出す。データ受信要求を受けた第2のコントローラ109は、例えば受信の為のデータ領域のメモリバンクをアクティブにする等、揮発性記憶部108に対してデータ受信の為の制御を行う。
S407では、CPU101が、撮影釦が全押しされた状態(以下、S2状態とする)になったか否かを判断する。CPU101は、S2状態になっていない場合(S407でno)、処理をS407へ進め、S2状態になった場合(S407でyes)、処理をS408へ進める。
S408では、CPU101が、SSG102に対してデータ取込要求を出す。データ取込要求を受けたSSG102は、次期フレームデータを取り込む様、各サブブロックにステータスを出す。ステータスを受けた傷検出部107は、有効であるデータを取り込んで、傷検出処理を実行する。その結果、傷検出部107を経て検出された後傷画素の絶対位置を含む欠陥情報(第2の欠陥情報)は、揮発性記憶部108に順次格納される。
S409では、CPU101が、設定量分(1フレームにおける設定画素数)のデータ(画素の信号)がSSG102により取得されたか否かを判断する。例えば、CPU101は、設定量分のデータの取得終了を示す通知をSSG102から受けた場合に、設定量分のデータが取得されたと判断する。CPU101は、設定量分のデータが取得されていないと判断した場合、そのフレームの処理を終了すべきでないと判断して(S409でno)、処理をS409へ進める。CPU101は、設定量分のデータが取得されたと判断した場合、そのフレームの処理を終了すべきと判断して(S409でyes)、処理をS410へ進める。
S410では、CPU101が、SSG102に対してフレーム処理の停止要求を出すと共に、第2のコントローラ109に対してデータ受信の完了を通知する。
S411では、第2のコントローラ109が、予約されたデータ(後傷画素のデータ)の揮発性記憶部108への格納を完了すると、該当メモリバンクのアクティブを解除し、揮発性記憶部108をスタンバイ状態へと戻す制御を実施する。その後、CPU101は、揮発性記憶部108に格納した後傷画素のデータを不揮発性記憶部111における第2の記憶部111bに格納させる。なお、このとき、CPU101は、メモリバンクのアクティブを解除せずに、揮発性記憶部108領域のデータを不揮発性記憶部111における第2の記憶部111bに転送しても良い。
図2に示す処理フローの実施により、後傷画素の絶対位置を含む欠陥情報(第2の欠陥情報)を得ることができる。得られた後傷画素の欠陥情報は、不揮発性記憶部111における第2の記憶部111bに格納され、以降、適宜読み出されて使用される。このとき、取得された後傷画素の欠陥情報は、そのままでは使用されず、後述のように、工程傷画素の欠陥情報と後傷画素の欠陥情報とを重畳(マージ)するための処理を経て、フレーム全体における各傷画素に対して補間処理を施す。
ここで、工程傷画素の欠陥情報と後傷画素の欠陥情報とをマージしてから不揮発性記憶部111における同一の又は関連した記憶領域(記憶部)に格納すると、書込み時のアクシデントにより、工程傷画素の欠陥情報が破壊される可能性がある。そこで、本実施形態では、上記のように、工程傷画素の欠陥情報(第1の欠陥情報)と後傷画素の欠陥情報(第2の欠陥情報)とを、それぞれ、不揮発性記憶部111における互いに独立した第1の記憶部111aと第2の記憶部111bとに記憶する。このことから、工程傷画素の欠陥情報と後傷画素の欠陥情報とのマージ処理は、撮像装置100における傷画素の補間処理の直前までに実施されていれば良い。マージ処理を実施するトリガとなるタイミングは、撮像装置の起動直後でも良いし、現像処理の直前でも良い。
次に、実施形態におけるマージ処理のフローを、図3のフローチャートを用いて説明する。
S501では、CPU101が、上記のマージ処理を実施するトリガとなるタイミングに達したと判断すると、第1のコントローラ112に対して、工程傷画素のデータ先頭位置、後傷画素のデータ先頭位置、及び、夫々のデータ個数(画素数)等を設定する。また、CPU101は、不揮発性記憶部111に書き込み動作をする為に必要な初期準備を、第1のコントローラ112を介してこのステップで行う。
S502では、CPU101が、マージ部110の初期化を行う。マージ部110中には、処理中の現在位置を記憶する為の座標レジスタ等幾つかの処理レジスタがあるので、CPU101は、その値を初期化する為のレジスタ設定を行う。
S503では、CPU101が、第1のコントローラ112に対して、不揮発性記憶部111からの欠陥情報の読み出し処理の開始を要求する。これに応じて、第1のコントローラ112は、第1の記憶部111aから工程傷画素の欠陥情報を読み出し、第2の記憶部111bから後傷画素の欠陥情報を読み出す。
S504では、CPU101が、所定量のデータの不揮発性記憶部111からの読み出し処理が完了したか否かを判断する。例えば、CPU101は、設定量分のデータの読み出し終了を示す通知(例えば、読み出し終了ステータス)を不揮発性記憶部111から受けた場合に、読み出し処理が完了したと判断する。CPU101は、読み出し処理が完了していないと判断した場合(S504でno)、処理をS504へ進める。CPU101は、読み出し処理が完了したと判断した場合(S504でyes)、処理をS505へ進める。
S505では、CPU101が、データ読み出し終了ステータスを受信後、マージ部110に、工程傷画素の欠陥情報と後傷画素の欠陥情報とのマージ処理を行うよう指示する。これに応じて、マージ部110は、撮影前に、S503でそれぞれ読み出された、工程傷画素の相対位置を含む第1の欠陥情報と後傷画素の絶対位置を含む第2の欠陥情報とをマージする。具体的には、マージ部110は、第1の記憶部111aに記憶された第1の欠陥情報における相対位置を絶対位置に変換することにより、複数の第1の欠陥画素のそれぞれに対する絶対位置を含む第3の欠陥情報を生成する。マージ部110は、その生成した第3の欠陥情報と第2の記憶手段に記憶された第2の欠陥情報とを絶対位置の順番にマージすることにより、複数の工程傷画素のそれぞれと複数の後傷画素のそれぞれとに対する絶対位置を含む第4の欠陥情報を生成する。
マージ部110は、さらに、生成した第4の欠陥情報における絶対位置を相対位置に変換することにより、複数の工程傷画素のそれぞれと複数の後傷画素のそれぞれとに対する相対位置を含む第5の欠陥情報を生成する。生成された第5の欠陥情報は、揮発性記憶部108上に展開して用いられる。すなわち、揮発性記憶部(第3の記憶手段)108は、マージ部110により生成された第5の欠陥情報を一時的に記憶する。
その後、CPU101は、マージ部110のレジスタに記憶された内容を読み出し、処理位置が終端まで行っていることを確認したら、マージ処理を完了させる。ここで、処理終端の判断の為に、CPU101は、工程傷画素の最後の位置と後傷画素の最後の位置とを取得する必要がある。その手間を省く為に、CPU101は、ダミーの傷データとして第1の欠陥情報及び第2の欠陥情報のそれぞれにフレーム終端位置の傷データを付加しておいても良い。
次に、不揮発性記憶部111における第1の記憶部111aと第2の記憶部111bとのそれぞれに記憶される傷データのフォーマット例を、図4を用いて説明する。
図4(a)に示すフォーマット601は、第1の記憶部111aに記憶される工程傷画素ごとの傷データのフォーマット例である。フォーマット601は、オフセットアドレス601aと傷情報601bとの組を含む。
オフセットアドレス601aは、注目対象の工程傷画素(第1の欠陥画素)までの直前に検出された工程傷画素(第1の欠陥画素)からの転送された画素数、すなわち工程傷画素(第1の欠陥画素)の相対位置を示す。オフセットアドレス601aは、例えば、16bitのデータ長を有する。傷情報601bは、傷の欠損状態や傷の種類を示し、ISO感度やシャッター秒時、温度等のパラメータによって、傷補間時に傷として処理をするかどうかの判断基準として用いるものである。傷情報601bは、例えば、16bitのデータ長を有する。
図4(b)に示すフォーマット602は、第2の記憶部111bに記憶される後傷画素ごとの傷データのフォーマット例である。フォーマット602は、Hアドレス602a1とVアドレス602a2と傷情報602bとの組を含む。
Hアドレス602a1とVアドレス602a2との組は、画素配列104aにおける行アドレス(Vアドレス)及び列アドレス(Hアドレス)を含む座標、すなわち絶対位置を示す。Hアドレス602a1は、例えば、14bitのデータ長を有する。Vアドレス602a2は、例えば、14bitのデータ長を有する。この場合、16384画素×16384画素までのフレームデータ中の傷位置を指定出来る。また、傷情報602bは、上記の傷情報601bと同様の情報である。
ここで、仮に、工程傷画素の位置と後傷画素の位置とをいずれも絶対位置(座標)を含む同一のフォーマットで不揮発性記憶部に記憶する場合について考える。この場合、工程傷画素及び後傷画素の総数の増加に比例して、工程傷画素の位置と後傷画素の位置とを記憶するためのデータ容量の合計が増大してしまう。
あるいは、仮に、工程傷画素の位置と後傷画素の位置とをいずれも相対位置(画素距離)を含む同一のフォーマットで不揮発性記憶部に記憶する場合について考える。この場合、ある程度の数量のある工程傷画素の欠陥情報を、絶対位置を含むフォーマット(例えば、(14bit+14bit+16bit)×画素数)に比べて少ないデータ容量(例えば、(16bit+16bit)×画素数)に抑えることができる。一方、後傷画素は、後天的に発生していくものであり、出荷後ユーザーが手にする段階では、工程傷画素に対してその個数は少量である。この様な場合、その距離(転送方向における後傷画素と後傷画素との間隔)は大きく、相対位置を含むフォーマットで欠陥情報を記憶する場合、相対位置で表す桁によっては一度に表せない場合が起こる。例えば、16bit幅での相対位置で表せる範囲は0〜65535である。その数字を超えて傷画素の相対位置を表すには、途中で中継点(ダミー傷画素)を追加して挟む必要があり、その分無駄に不揮発性記憶手段の容量を消費する。このようなダミー傷画素の数が増加すると、工程傷画素(第1の欠陥画素)の位置と後傷画素(第2の欠陥画素)の位置とを記憶するためのデータ容量が全体として増大してしまう。
それに対して、本実施形態によれば、複数の工程傷画素の相対位置を含む第1の欠陥情報が第1の記憶部により記憶される。これにより、複数の工程傷画素の位置を記憶するためのデータ容量を容易に低減することができる。また、複数の後傷画素の絶対位置を含む第2の欠陥情報が第2の記憶部により記憶される。これにより、ダミー傷画素を追加する必要がないので、複数の後傷画素の位置を記憶するためのデータ容量の増加を容易に抑えることができる。
また、仮に、後傷画素の位置を含む第2の欠陥情報を、不揮発性メモリにおける工程傷画素の位置を含む第1の欠陥情報が記憶された領域と関連した領域に記憶する場合について考える。この場合、第2の欠陥情報の書込み時のアクシデントにより工程傷画素の位置を含む第1の欠陥情報が破壊される可能性がある。
それに対して、本実施形態では、第1の欠陥情報を記憶する第1の記憶部と第2の欠陥情報を記憶する第2の記憶部とが不揮発性記憶部における互いに独立した記憶部(記憶領域)となっている。これにより、第2の欠陥情報の書込み時のアクシデントにより工程傷画素の位置を含む第1の欠陥情報が破壊されることを避けることができる。
以上のように、本実施形態によれば、複数の工程傷画素の位置と複数の後傷画素の位置とを互いに独立して記憶するためのデータ容量を全体として低減することができる。
また、本実施形態によれば、複数の工程傷画素のそれぞれと複数の後傷画素のそれぞれとに対する相対位置を含む第5の欠陥情報を生成して揮発性記憶部に一時的に記憶する。これにより、複数の工程傷画素の位置と複数の後傷画素の位置とを一時的に記憶するためのデータ容量を低減することができる。
なお、マージ部110への欠陥情報の供給は、直接不揮発性記憶部111からでも、一旦揮発性記憶部108へと展開してからでも、構わない。もちろん、工程傷画素の欠陥情報を揮発性記憶部108上に展開せずに、後傷画素の欠陥情報を揮発性記憶部108上に展開してあっても良い。あるいは、傷検出部107の出力がそのままマージ部110へ転送されても構わない。
また、マージ部110による、工程傷画素と後傷画素とのマージ(重畳)された欠陥情報は、ユーザーの撮影時に既に生成されており使えれば良い。生成された第5の欠陥情報は、揮発性記憶部108上に展開して用いられるが、展開後のデータ扱いとしては、不揮発性記憶部111に格納しても良いし、そのまま補間部101aに転送されても構わない。
次に、傷検出部107の内部構成例について、図5を用いて説明する。
傷判定器201は、傷判定を行う。傷判定器201は、いくつかのバッファ(ハードウエアならば、幾つかのフリップフロップ構成で良い)を持つ。傷判定器201におけるいくつかのバッファは、判定注目画素の信号(データ)とその周辺画素の信号(データ)とを保持する。傷判定器201による判定は、例えば、注目画素の信号レベルと周辺画素の信号レベルの平均値との乖離や、転送方向における注目画素前後のメディアンフィルタ出力レベルと注目画素の信号レベルとの乖離が、閾値を超えたか否かについて行われる。
例えば、傷判定器201は、注目画素の信号レベルと設定指標(周辺画素)の信号レベルとの乖離が、事前に設定されたある閾値を超えた場合に、制御部204に対して1値を送出するものとする。傷判定器201には、前述の如く幾つかのバッファが存在するので、画素左端等のエッジ処理は備えていても良い。例えば、最初に受信したデータをバッファに画素コピーする。
アドレスカウンタ202は、絶対位置を取得する。ハードウエア構成として言及すると、傷検出部107は、例えば、その前段・後段の回路とデータ授受を行う際に、valid statusと、hold (request) statusとを取り得る。valid statusは、現在のデータが有効であることを示す。hold (request) statusは、現在データの受信を行えないことを示す。
信号の状態定義として、「valid status が1値(active high) を受信したときの受信データは有効である」と定義する。同様に、「有効な送信データを送信するときには、valid statusを1値にして送信する」、と定義する。この場合、valid statusの1値状態をカウントすることで、現在の注目データがフレームのどの位置に該当するのかを把握できる。
また、hold statusは、前段に対してデータの送出の停止を求めるrequest(status)として定義する。この場合、後段でデータ処理が滞った場合には、それ以前のデータ処理を停止することが出来る。例えば、hold statusが1値のときのvalid status の1値は保留として、前段はその状態(data送出状態も含めて)を保持しなければならない、と定義できる。
もちろん、撮像センサ104のデータ読み出しを即時に停止できないので、stop statusの発生頻度は、撮像系(104〜107)のパスに於いて、HD(水平のブランキング期間)に収まることが必要である。バッファ203は、後段からのhold (request) status に対するタイミング緩衝の役目を持つ。又は(不図示ではあるが)、撮像データを一旦揮発性記憶部108に取り込んでから、傷検出部107に投入しても目的は達成出来る。
アドレスカウンタ202は、水平画素カウンタ(以降、Hカウンタ)2021と、垂直ラインカウンタ(以降、Vカウンタ)2022とを含む。Hカウンタ2021とVカウンタ2022とは、hold status = 0時のvalid status = 1 値をカウントすることで、フレームの座標を把握する為のカウンタ構成である。Hカウンタ2021が事前に設定された値に達したときに、Hカウンタは0に戻り、Vカウンタ2022値が1インクリメントされる。
このとき、傷判定器201の出力が1値であれば、Hカウンタ2021、Vカウンタ2022の値をバッファ203へと格納する。Hカウンタ2021のカウント値とVカウンタ2022のカウント値とも事前設定値に達したのであれば、アドレスカウンタ202は、制御部204に対してフレーム処理終了のdone status(パルスでも良い)を送出する。
バッファ203は、制御部204から書き込み指示wrを受けたことに応じて、アドレスカウンタ202のカウント値を一時的にバッファに取り込む。バッファ203は、制御部204から読み出し指示rdを受けたことに応じて、取り込んだカウント値を後段へと出力する。バッファ203は、制御部204との間でstatusの授受を行う簡単なコントローラ(図示せず)を含む。このコントローラは、書き込み指示・読み出し指示のstatusに応じて、現在アクセスすべきバッファ領域を切り替えるものである。
制御部204は、主にstatus signalの監視・制御を行う。制御部204は、CPU101からのデータ処理開始指示(不図示)を受けて、アドレスカウンタ202の初期化、バッファ203の初期化等を行う。制御部204は、傷判定器201に初期化機能があれば、その実行要求も発行する。
また、制御部204は、次のようなstatusの監視・制御を行う。制御部204は、後段からhold requestが発行されたときに、バッファ203の読み出し処理を停止し、hold期間中にバッファ203がfull状態になった場合に、前段の回路に対してhold requestを発行する。
そして、制御部204は、フレーム終了のdone statusを受信したときに、前段からのデータ受信処理・後段へのデータ送信処理を停止し、CPU101に対して終了statusを返す。
次に、マージ部110の内部構成例について、図6を用いて説明する。図6は、工程傷画素の欠陥情報と後傷画素の欠陥情報とのマージ処理における工程傷画素の相対位置の情報と後傷画素の絶対位置の情報とのマージを行うための構成(ロジック)を中心に説明する。
マージ部110は、レジスタ301〜305,310,311,313と、FF(フリップフロップ)316,317とを含む。これらのイベントタイミングは、クロック同期であるが、レジスタ304,305の演算phaseと、その他のレジスタ更新phaseとは独立とする。また、レジスタ304,305,310,311は、リセット実行による初期化phase及び初期値を持つものとする。図6は、データパスの詳細を説明するための図なので、上記イベントについては不図示とする。また、説明を簡素化するために、夫々の傷データは全て有効なものとして説明していく。
マージ部110は、工程傷画素の相対位置の情報群と、後傷画素の絶対位置の情報群とを、それぞれ不揮発性記憶部111から読み出す。マージ部110は、工程傷画素の相対位置を絶対位置に変換した後、工程傷画素の絶対位置と後傷画素の絶対位置とのそれぞれにおける絶対位置の順位(大小)を比較して、直前の傷画素の位置に対して近い情報を採択し、相対位置情報として出力するものである。
マージ部110は、比較対照である傷画素の位置の情報として、工程傷画素の相対位置の情報をレジスタ301に受けて格納し、後傷画素の絶対位置の情報をレジスタ302,303に受けて格納している。後傷画素の絶対位置情報は、H(水平位置情報)とV(垂直位置情報)との座標データとして格納している。
マージ部110は、工程傷画素の相対位置の情報から、直前の傷とのオフセット位置を積算しながら座標位置を算出する、すなわち、工程傷画素の相対位置を絶対位置に変換する。その後、マージ部110は、工程傷画素の絶対位置と後傷画素の絶対位置とを比較していく。
具体的には、レジスタ301に格納された工程傷画素の相対位置が更新されると、オフセット加算後の結果の座標位置が示すH位置とV位置とを更新する。H位置はレジスタ304に、V位置はレジスタ305に、それぞれ保持される。
値の更新は、レジスタ304の保持する値の上位にレジスタ305の保持する値を連接して(座標値を、距離積算値に換算して)、それにオフセット値としてレジスタ301の保持する値を加算することで更新する。更新値をレジスタ304、305に戻すには、連接した距離積算値の下位をレジスタ304(H位置)に、上位をレジスタ305(V位置)に分けて保持すれば良い。
もちろん、レジスタ304、305を一つの距離積算レジスタとして存在させても良い。また、加算器306等は、H情報とV情報とを連接した長bitでの演算を行うので、ハードウエアで構成する場合には、キャリー信号の通るゲート段数が大きくなる。HレジスタとVレジスタとに分けて演算をしても良いが、その場合には、H演算実行後の桁上げをV演算に反映させる等の処置が必要である。
レジスタ302,303は、不揮発性記憶部111から読み出した後傷画素の絶対位置の情報を保持する。レジスタ302,303の保持する値もまた、レジスタ303(V位置の情報)を上位として連接して演算に用いる。図中’&’は連接演算子表記であり、ある信号と別の信号とをマージした状態で一つの信号として取り扱うことを示す。
加算器(減算器)307は、工程傷画素の相対位置の情報(オフセット)を加算していき得た次期位置から、後傷画素の次期位置を引く演算を行う。加算器(減算器)307は、演算結果をセレクタ308へ出力する。
セレクタ308は、加算器(減算器)307の演算結果におけるMSB(最上位bit:符号bit)を選択条件として用い、大小関係の結果を得る。すなわち、セレクタ308は、加算器(減算器)307の演算結果における符号が0ならば、工程傷画素の次期位置より後傷画素の次期位置が小さいと判断する。セレクタ308は、加算器(減算器)307の演算結果における符号が1ならば、後傷画素の次期位置より工程傷画素の次期位置が小さいと判断する。セレクタ308は、加算器(減算器)307の演算結果における符号に応じて、マージ結果へ追加すべき傷画素の次期位置の情報を選択して出力する。
セレクタ308の出力である傷画素の次期位置の情報は、絶対位置としての情報を含んでいる。その為、一旦、レジスタ310,311に絶対位置の情報としてのH情報,V情報を保持する。図6では連接を解いて、Hhold値,Vhold値のそれぞれを保持する場合を示しているが、そのまま一つのレジスタで保持しても何ら問題は無い。
前述の如く、マージ出力は相対位置情報とする為、レジスタ310,311への保持と同じタイミングで、レジスタ313に、レジスタ310,311の前の値と、セレクタ308の出力との差を保持する。加算器(減算器)312は、その差分を得るためのものである。すなわち、加算器(減算器)312は、セレクタ308から出力された絶対位置の値から直前の傷画素の絶対位置の値を引くことで相対位置の情報を求めレジスタ313へ供給する。レジスタ313は、求められた相対位置の情報を一時的に記憶する。
等面コンパレータ(比較器)309は、2つの入力値が等しいときに1値を出力するものである。レジスタ301、302、及び303の保持する値は、その値がマージされる度に傷画素の次期位置の情報へと更新される。この更新は、加算器(減算器)の符号値の0/1に加えて、レジスタ302,303の保持する値とレジスタ304,305の保持する値とが等しい場合も考慮する必要がある。
工程傷画素の位置の情報としての次期相対位置情報の要求は、加算器(減算器)307の演算結果における符号(MSB)が1のときと、比較器309の出力値が1のときとに行う。すなわち、加算器(減算器)307の演算結果における符号(MSB)と比較器309の出力値とがOR回路314を経てFF316へ供給される。FF316は、そのステータスを保持して回路出力としている。
同様に、後傷画素の位置の情報としての次期絶対位置情報の要求は、加算器(減算器)307の演算結果における符号(MSB)が0のときと、比較器309の出力値が1のときとに行う。すなわち、加算器(減算器)307の演算結果における符号(MSB)を論理反転した信号と比較器309の出力値とがOR回路315を経てFF317へ供給される。FF317は、そのステータスを保持して回路出力としている。
マージ部110を経て得た相対位置情報としての傷画素の位置の情報は、揮発性記憶部108に一時的に記憶して、補間処理を実行時にそれを読み出し、その情報における相対位置を絶対位置に変換した後、補間対象画素の絶対位置を特定するために用いられる。もちろん、マージ部110の出力をそのまま補間部101aに供給しても構わないし、不揮発性記憶部111に一時的に記憶しても構わない。