(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024047227
(43)【公開日】2024-04-05
(54)【発明の名称】画像処理回路、それを用いたスタートラッカ、画像処理方法およびプログラム
(51)【国際特許分類】
B64G 1/36 20060101AFI20240329BHJP
G06T 7/60 20170101ALI20240329BHJP
H04N 23/76 20230101ALI20240329BHJP
G06T 1/00 20060101ALI20240329BHJP
【FI】
B64G1/36 100
G06T7/60 110
H04N5/243
G06T1/00 500A
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022152740
(22)【出願日】2022-09-26
(71)【出願人】
【識別番号】000104652
【氏名又は名称】キヤノン電子株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】後藤 昂司
(72)【発明者】
【氏名】稲川 智也
【テーマコード(参考)】
5B057
5C122
5L096
【Fターム(参考)】
5B057AA20
5B057BA02
5B057CA08
5B057CA12
5B057CB08
5B057CB12
5B057DB02
5B057DB09
5C122EA14
5C122FH09
5C122FH11
5C122HB01
5C122HB02
5L096BA08
5L096BA18
5L096CA02
5L096GA28
(57)【要約】
【課題】衛星の姿勢決定などの本来の画像処理の前に実行される前処理に必要となる画像処理時間を短縮すること。
【解決手段】第一画像メモリは撮像素子が被写体を撮像して出力する画像データを保存する。演算部は第一画像メモリに保存された画像データを複数のブロックに分割し、複数のブロックのそれぞれについての基準輝度値を演算する。調整部は、各ブロックについて演算された基準輝度値に応じて高輝度判定閾値を調整する。カウンタは、高輝度判定閾値に基づき、各ブロックにおける輝度値の大きい画素をカウントする。
【選択図】
図2
【特許請求の範囲】
【請求項1】
撮像素子が被写体を撮像して出力する画像データを保存する第一画像メモリと、
前記第一画像メモリに保存された画像データを複数のブロックに分割し、前記複数のブロックのそれぞれについての基準輝度値を演算する演算部と、
各ブロックについて演算された前記基準輝度値に応じて高輝度判定閾値を調整する調整部と、
前記高輝度判定閾値に基づき、各ブロックにおける輝度値の大きい画素をカウントするカウンタと
を有することを特徴とする画像処理回路。
【請求項2】
前記第一画像メモリの前段に設けられ、前記撮像素子から出力される画像データを構成する各画素の輝度値と、前記撮像素子における欠陥画素を判定するための欠陥画素閾値とを比較し、前記欠陥画素閾値を超える輝度値を所定値に置換する置換部をさらに有することを特徴とする請求項1に記載の画像処理回路。
【請求項3】
前記撮像素子が前記被写体を撮像して出力する前記画像データを保存する第二画像メモリと、
前記第二画像メモリに記憶されている各ブロックごとの各画素の輝度値と前記高輝度判定閾値とを比較する比較手段と、をさらに有し、
前記カウンタは、前記比較手段の比較結果に基づき、各ブロックにおける輝度値の大きい画素をカウントする、ことを特徴とする請求項1または2に記載の画像処理回路。
【請求項4】
前記第二画像メモリへの前記画像データの格納と、前記演算部における前記基準輝度値の演算とが並列に実行される、ことを特徴とする請求項3に記載の画像処理回路。
【請求項5】
前記第二画像メモリへの前記画像データの格納と、前記調整部における前記高輝度判定閾値の調整とが並列に実行される、ことを特徴とする請求項3に記載の画像処理回路。
【請求項6】
前記調整部は、各ブロックごとに前記演算部により求められた前記基準輝度値を初期閾値に加算することで、各ブロックごとの前記高輝度判定閾値を求める、ことを特徴とする請求項1または2に記載の画像処理回路。
【請求項7】
各ブロックはn列×m行の画素により構成されており、
前記第一画像メモリは、m個のRAMを有し、
前記m個のRAMは、それぞれ同一のアドレスに、同一ブロックにおける異なる行におけるn個の画素の輝度値を記憶するように構成されており、
前記演算部は、
前記m個のRAMに対応して設けられたm個の第一加算器と、
前記m個の加算器から出力される和の合計値を求める第二加算器と、
前記第二加算器から出力される前記合計値をn×mで除算して前記基準輝度値を出力する除算器と、
を有数ことを特徴とする請求項1または2に記載の画像処理回路。
【請求項8】
各ブロックはn列×m行の画素により構成されており、
前記第二画像メモリは、m個のRAMを有し、
前記m個のRAMは、それぞれ同一のアドレスに、同一ブロックにおける異なる行におけるn個の画素の輝度値を記憶するように構成されており、
前記比較手段は、
前記m個のRAMに対応して設けられたm×n個の比較器を有し、
前記カウンタは、前記m×n個の比較器の比較結果に基づき、各ブロックにおける輝度値の大きい画素をカウントする、ことを特徴とする請求項3に記載の画像処理回路。
【請求項9】
請求項1または2に記載の画像処理回路であって、前記被写体が星である、画像処理回路と、
前記画像処理回路から出力される複数のブロックの画像データについて、各ブロックにおける輝度値の大きい画素のカウント結果に基づき、星位置演算の対象となるブロックとを選択する選択部と、
前記選択部により選択された前記ブロックの画像データに基づき星位置を演算する星位置演算部と、
を有するスタートラッカ。
【請求項10】
撮像素子が被写体を撮像して出力する画像データを第一画像メモリに保存し、
前記第一画像メモリに保存された画像データを複数のブロックに分割し、前記複数のブロックのそれぞれについての基準輝度値を演算し、
各ブロックについて演算された前記基準輝度値に応じて高輝度判定閾値を調整し、
前記高輝度判定閾値に基づき、各ブロックにおける輝度値の大きい画素をカウントする、
ことを特徴とする画像処理方法。
【請求項11】
請求項10に記載の画像処理方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理回路、それを用いたスタートラッカ、画像処理方法およびプログラムに関する。
【背景技術】
【0002】
人工衛星および宇宙探査機(以下、衛星と称す)は、スタートラッカを搭載しており、スタートラッカにより恒星の位置を検出し、検出された恒星の位置に基づき機体の姿勢を決定する。スタートラッカは衛星用姿勢センサの一つであり、撮像素子により取得した星画像から星位置を計算し、星カタログ上での位置と比較して星を同定して、衛星の姿勢を出力する。
【0003】
特許文献1によれば、撮像素子から出力されるデータを処理することなくメモリに格納して行き、演算装置からメモリにアクセスしてデータを処理して星位置を検出することが提案されている。この場合、演算装置は、画像処理を行う際に画像データが記憶されているメモリの全てにアクセスする必要があり、画像処理に時間がかかる。
【0004】
そこで、特許文献2によれば、撮像素子から出力される画像データを複数のブロックに分割し、あらかじめ設定された閾値を越える輝度を持つピクセルの個数によって各ブロックに恒星があるかどうかを検出し、恒星のあるブロックにのみアクセスして星位置を検出することが提案されている。これにより、星位置の演算時間が短縮されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平7-270177号公報
【特許文献2】特開平11-291996号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、従来のスタートラッカで、太陽が視野に入ったり、太陽が視野外太陽干渉角内に入ったりすると、撮像された画像全体の輝度が上がり、恒星を判別することができなくなっていた。とりわけ、特許文献2では、太陽によって演算対象のブロックが増加してしまい、星位置の演算時間が増加してしまう。なお、スタートラッカに限ることはなく、高輝度の画素の存在によって画像処理時間が増大してしまうような用途では、同様の課題が発生する。
【0007】
そこで、本発明は、衛星の姿勢決定などの本来の画像処理の前に実行される前処理に必要となる画像処理時間を短縮することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、たとえば、
撮像素子が被写体を撮像して出力する画像データを保存する第一画像メモリと、
前記第一画像メモリに保存された画像データを複数のブロックに分割し、前記複数のブロックのそれぞれについての基準輝度値を演算する演算部と、
各ブロックについて演算された前記基準輝度値に応じて高輝度判定閾値を調整する調整部と、
前記高輝度判定閾値に基づき、各ブロックにおける輝度値の大きい画素をカウントするカウンタと
を有することを特徴とする画像処理回路を提供する。
【発明の効果】
【0009】
本発明によれば、衛星の姿勢決定などの本来の画像処理の前に実行される前処理に必要となる画像処理時間が短縮される。
【図面の簡単な説明】
【0010】
【
図1】画像処理回路(FPGA)を含むスタートラッカを示すブロック図
【
図4】撮像画像を複数のブロックに分割することを示す図
【
図6】基準輝度値の演算用のRAMの構造と保存処理を示す図
【
図8】ブロックごとの高輝度画素数のカウント方法を示すフローチャート
【
図12】CPUにより実現される機能を示すブロック図
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴が任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
【0012】
<スタートラッカの構成>
図1はスタートラッカ1を示すブロック図である。スタートラッカ1は、衛星に設けられた撮像素子30によって星を撮像し、画像データとして出力する。撮像素子30はCMOSイメージセンサ、CCDイメージセンサ、その他の素子であってもよい。
【0013】
CPU10は、ROM50に記憶されているプログラムを実行することでスタートラッカ1の各部を制御する。たとえば、CPU10は、撮像素子30の設定データ(例:ゲインデータ、および撮像オン/オフのタイミングデータ)をROM50またはRAM60から読み出し、FPGA20にシステムバス70経由で設定する。FPGA20は、設定データをシリアル信号90に変換して撮像素子30へ設定する。FPGAは、Feild Programmable Gate Arrayの略称である。たとえば、FPGA20は、撮像素子30のタイミング制御、特に撮像素子30から出力された画像を取り込むための、たとえば、垂直同期信号、水平同期信号、画像クロック等を制御する。
【0014】
撮像素子30は、シリアル信号90にしたがって動作する。たとえば、撮像素子30は、画像クロックに同期して撮像素子30で撮像を実行し、各画素の輝度信号をA/D(アナログデジタル)変換して画素データを生成し、画像バス80に出力する。
【0015】
FPGA20は、画像バス80を通じて画素データを受け取り、RAM40に順次書き込んで行くとともに、後述されるブロック内基準輝度値とブロック内高輝度画素数の計算を行い、FPGA20の内部RAMに計算結果を保存する。FPGA20は、このような一連の処理を1フレーム分にわたり繰り返す。1フレーム分の処理が終了すると、FPGA20は、CPU10に撮像完了信号を出力する。
【0016】
FPGA20は、ASIC(Application Specific Integrated Circuit)などによって構成された画像処理回路であってもよい。
【0017】
ROM50は、CPU10で実行される星位置演算プログラムなどを記憶する不揮発性のメモリである。RAM60はCPU10のワークメモリとして機能する揮発性のメモリである。
【0018】
CPU10は、FPGA20からの撮像完了信号を受けると、FPGA20の内部RAMから計算結果を取得し、視野画像を構成する複数のブロックのうちどのブロックに高輝度の画素が多いかを判定する。CPU10は、高輝度の画素の多いブロックとその周辺のブロックの画素データをRAM40から抽出し、星位置計算を実行する。CPU10は、複数の星の星位置から星間距離を算出し、ROM50に予め記憶された星地図(星カタログ)と星間距離とを照合し、照合結果に基づき衛星の姿勢を決定する。
【0019】
CPU10は、これら以外にもFPGA20の動作および撮像素子30のシャッタースピード制御など、種々の制御を行ってもよい。
【0020】
<画像処理回路(FPGA)の構成>
図2は、FPGA20を示すブロック図である。データ処理部210は、撮像素子30から出力される画素データを入力される。データ処理部210は、当該画素データに対し後述される処理を実施して、画素データをRAM40、保存前処理部220および比較用のRAM260に出力する。
【0021】
保存前処理部220は、欠陥画素などに由来する高輝度の画素データを補正する画像処理回路である。たとえば、注目画素の輝度値が閾値ThAを超える場合、保存前処理部220は、注目画素の輝度値を閾値ThAに置換する。注目画素の輝度値が閾値ThAを超えていない場合、保存前処理部220は、注目画素の輝度値を補正せずに維持する。その後、画素データは、RAM230に保存される。
【0022】
RAM230は、複数の画素データから形成される画像データを複数のブロックに分割し、各ブロックを複数の行に分割し、一クロックで複数の行を並列に処理可能となるように、保存する。一ブロックを構成する複数の行がRAM230に保存されると、RAM230は、計算開始信号239を平均演算部240へ出力する。
【0023】
平均演算部240は、注目ブロックを構成する複数の画素データ(輝度値)の平均値を求め、求められた平均値をそのブロックの基準輝度値249として出力する。なお、太陽などが視野に含まれる場合、基準輝度値249は非常に大きな値となる。
【0024】
加算器250は、基準輝度値249に初期閾値ThBを加算して比較用の閾値ThCを生成し、比較器270にセットする。
【0025】
比較器270は、比較用のRAM260に保存された画素データと閾値ThCを比較し、画素データが閾値ThCを超える場合、1を出力する。画素データが閾値ThCを超えない場合、比較器270は0を出力する。
【0026】
カウンタ280は、一ブロックを構成する複数の画素データについての比較器170の比較結果を加算することで、当該ブロックのおける高輝度画素の個数を求める。
【0027】
RAM290は、データ処理部210から出力される画像データ、基準輝度値249、および、ブロックごとの高輝度画素数(カウント値281)を保存する。CPU10は、ブロックごとのカウント値281に基づき、各ブロックを星位置計算に用いるかどうかを判定する。CPU10は、RAM290にアクセスし、星位置計算に用いられるブロックの画像データを読み出し、星位置を計算する。
【0028】
<データ処理部の詳細>
図3はデータ処理部210の構造を示す。撮像素子30から出力される画素データと画素クロックは、シリアル-パラレル変換回路211に入力される。シリアル-パラレル変換回路211は、1ビットずつシリアル信号として入力される画素データを、1画素分のパラレル信号に変換する。
【0029】
パラレル信号に変換された1画素分のデータは、順序論理回路(シフトレジスタ)214a~214dに出力される。
【0030】
第一分周回路216は、画素クロックを画素輝度階調に応じて分周する。一例としては、第一分周回路216は12分周するものとする。何分周するかは、1画素分のデータを行使するビットの数に依存する。12分周されたクロックは、順序論理回路214a~214dのそれぞれに入力される。
【0031】
順序論理回路214a~214dは、第一分周回路216から供給されるクロックにしたがって、画素データをラッチする。データ処理部210に実装される順序論理回路214a~214dの個数は、1回の通信でRAM40に送信される画素データの個数と同じである。
図3では、一例として、1回の通信でRAM40に送信される画素データの個数は、4画素であるため、四つの順序論理回路214a~214dが実装されている。
【0032】
順序論理回路214a~214dは、入力される画素データをシフトして行き、4画素分のデータが蓄積されると、順序論理回路214a~214dに対応して設けられたラッチ回路215a~215dが4画素分のデータをラッチする。
【0033】
第二分周回路217は、12分周されたクロックをさらに送信画素数で分周(例:4分周)してクロックを生成し、ラッチ回路215a~215dに供給する。これにより、ラッチ回路215a~215dは、4画素分のデータをラッチする。また、第二分周回路217から出力されるクロックに応じてHighとなる受信完了信号212が送信レジスタ213に入力される。また、ラッチ回路215a~215dによりラッチされた4画素分のデータは、送信レジスタ213に出力される。
【0034】
送信レジスタ213は、受信完了信号212がHighになると、Systemクロック201の立ち上がりで、入力された4画素分の画素データをラッチして、RAM40に出力する。
【0035】
<ブロック分割>
図4は画像データを複数に分割することを説明する図である。この例では、説明の便宜上、1ブロックが8画素×8画素で構成されている。また、説明の便宜上、横方向がx方向と定義され、縦方向がy方向と定義されている。よって、各画素の位置(座標)は(x、y)と表記される。
【0036】
<基準輝度値の演算>
RAM40への画素データの送信と並行して、FPGA20は、基準輝度値249を演算する。基準輝度値249は、画像データを複数のブロックに分割して生成されるブロック毎に、演算される。1ブロックの画素数(例:64画素)は、FPGA20のコンフィグレーション時に設定されもよいし、CPU10からシステムバス70経由でFPGA20に設定されてもよい。
【0037】
RAM40に出力される画像データは、同時に保存前処理部220にも出力される。保存前処理部220は、入力された画像データに所定の前処理を施して基準輝度計算用のRAM230に出力する。
【0038】
図5は、保存前処理部220で実行される前処理を示す。
【0039】
S501で、保存前処理部220は、データ処理部210から受け取った画素データ(注目画素)の輝度値が基準輝度計算用の閾値ThAを越えているかどうかを判定する。注目画素の輝度値が閾値ThAを越えていた場合、保存前処理部220は、S502に進む。
【0040】
S502で、保存前処理部220は、注目画素の輝度値を閾値ThAに置換する。
【0041】
S503で、保存前処理部220は、注目画素の輝度値を基準輝度計算用のRAM230に保存する。ただし、データ処理部210からRAM40に送信される画像データの輝度値は更新されない。
【0042】
S501で注目画素の輝度値が閾値ThA以下の場合、保存前処理部220は、S510に進む。S510で、保存前処理部220は、注目画素の輝度値を閾値ThAに置換することなくそのままに維持する。その後、S503で、保存前処理部220は、注目画素の輝度値を基準輝度計算用のRAM230に保存する。
【0043】
このように閾値ThAを用いて注目画素の輝度値を必要に応じて補正することで、欠陥画素などの影響が低減される。つまり、極端に誤った輝度値を持つ画素が、基準輝度値249に影響しにくくなる。
【0044】
図6は基準輝度値計算用のRAM230における保存処理を示す。RAM230は複数のRAM231~238を有している。
図6が例示するように1ブロックが8×8画素から構成されている場合、RAM231~238の個数は8である。RAM231~238はFIFO(ファーストインファーストアウト)タイプのメモリにより構成されてもよい。
【0045】
図6において、左上から順番に注目画素が選択される場合、座標(x,y)が(0,0)~(7,0)である8つの画素がRAM231の最下位のアドレスに保存される。座標(x,y)が(8,0)から(15,0)である8つの画素はRAM231における下から二番目に下位のアドレスに保存される。また、座標(x,y)が(0,1)から(7,1)までの8つの画素はRAM232の最下位のアドレスに保存される。座標(x,y)が(0,7)から(7,7)までの8つの画素はRAM238の最下位のアドレスに保存される。
【0046】
このように各ブロックにおけるy行は、RAM231~RAM238のうち参照符号の最下位の番号に対応している。つまり、一行目は、RAM231に保存され、二行目は、RAM232に保存され、八行目は、RAM238に保存される。さらに、画素データが書き込まれるアドレスは、ブロックの番号に対応している。このように、1つのブロック内の画素データが、異なるRAMの同じアドレスに保存されることで、1クロックで、1ブロックの全画素データを処理することが可能となる。
【0047】
RAM230に、1ブロック分の画素データが蓄積されると、当該画素データと計算開始信号239とが平均演算部240に出力される。
図6の事例では、X=7、Y=7の画素がRAM238に入力されると、計算開始信号239が出力される。
図2には記載が省略されているが、RAM230の処理を監視して計算開始信号239を生成する生成回路が存在する。
【0048】
ところで、画素データの出力方法としては、別の方法が採用されてもよい。1ブロックのある領域(例:一行)に含まれる画素がRAM230に格納され次第、順次、画素データが平均演算部240に出力され、平均演算部240が基準輝度値の演算を実行してもよい。この場合、平均演算部240が8行分の基準輝度値から1ブロックの基準輝度値249を演算すればよい。
【0049】
あるいは、RAM230に画素データが保存される前に、ブロック内で同じ行に位置する8つの画素(例:(0,0)~(7,0))の平均値を予め計算しておき、計算結果がRAM230に保存されてもよい。RAM230に一ブロック分の平均値(例:8行の各平均値)が蓄積されると、平均演算部240は、そのブロックの基準輝度値249を演算する。
【0050】
図7が示すように、1ブロック分の画素データを入力された平均演算部240は、入力された全画素の平均値をそのブロックの基準輝度値249として演算する。
図7が示すように、平均演算部240は、複数の加算器241~248と、加算器701と、除算器702とを有していてもよい。加算器241~248の個数は、1ブロックを形成している行数と一致している。
【0051】
計算開始信号239が入力されると、注目ブロックを形成している全画素データは、8画素ずつ、合計で8つの加算器241、242~248に入力される。加算器241、242~248は、入力された8つの画素データを加算し、その和を加算器701へ出力する。
【0052】
加算器701は、加算器241、242~248から出力される8つの和を加算して、1ブロック分の合計値を求める。合計値は、除算器702に入力される。
【0053】
除算器702は、合計値を1ブロックの全画素数(例:64)で除算し、平均値を求める。この平均値が基準輝度値249として計算結果用のRAM290に保存される。
【0054】
なお、RAM230に保存される前にブロック内の同じ行に存在する8つの画素(例:(0,0)~(7,0))の輝度値を加算して8で除算して平均値が予め算出されてもよい。この場合、RAM231~238には各行の平均値が格納されている。この場合、平均演算部240は、加算器241、242~248を有していなくてよい。RAM231~238から出力される8つの平均値は、加算器701に入力される。加算器701は、8つの平均値の合計値を求め、合計値を除算器702に出力する。ただし、除算器702は8で合計値を除算して、基準輝度値249を演算する。
【0055】
平均演算部240で実行される処理は、計算開始信号239の立ち上がりを基準として開始され、次のSystemクロック201の立ち上がりを基準として基準輝度値249が出力される。
【0056】
図2が示すように、ブロック毎の基準輝度値249は、計算結果を保存するためのRAM290に格納される。RAM290はシステムバス70に接続されているため、CPU10からRAM290に保存されている基準輝度値249が参照可能となっている。
【0057】
<高輝度画素数のカウント>
図8はFPGA20により実行されるブロックごとの高輝度画素数の求め方を示すフローチャートである。
【0058】
図2を用いて説明されたように、RAM40に出力される画像データは、比較用のRAM260にも出力される。
図9が示すように、比較用のRAM260は、複数のRAM261、262、...、268を有している。1ブロックが8×8画素から構成されている場合、RAM261~268の個数は8である。RAM261~268はFIFOタイプのメモリにより構成されてもよい。
【0059】
図9において、左上から順番に注目画素が選択される場合、座標(x,y)が(0,0)~(7,0)である8つの画素がRAM261の最下位のアドレスに保存される。座標(x,y)が(8,0)から(15,0)である8つの画素はRAM261における下から二番目に下位のアドレスに保存される。また、座標(x,y)が(0,1)から(7,1)までの8つの画素はRAM262の最下位のアドレスに保存される。座標(x,y)が(0,7)から(7,7)までの8つの画素はRAM268の最下位のアドレスに保存される。
【0060】
このように各ブロックにおけるy行は、RAM261~RAM268のうち参照符号の最下位の番号に対応している。つまり、一行目は、RAM261に保存され、二行目は、RAM262に保存され、八行目は、RAM268に保存される。さらに、画素データが書き込まれるアドレスは、ブロックの番号に対応している。このように、1つのブロック内の画素データが、異なるRAMの同じアドレスに保存されることで、1クロックで、1ブロックの全画素データを処理することが可能となる。
【0061】
S801でFPGA20は、一ブロックの基準輝度値249の演算が完了したかどうかを判定する。注目ブロックの基準輝度値249の演算が完了すると、FPGA20は、S802に進む。また、RAM260に格納されている注目ブロックの画素データが比較器270に出力される。
【0062】
S802でFPGA20(加算器250)は、平均演算部240から出力される注目ブロックの基準輝度値249と、初期閾値ThBとから注目ブロック用の閾値ThCを決定する。たとえば、加算器250は、基準輝度値249と初期閾値ThBとを加算して閾値ThCを演算する。閾値ThBは、FPGA20のコンフィグレーション時に予め設定されてもよいし、CPU10からシステムバス70経由で設定されてもよい。
【0063】
S803でFPGA20(比較器270)は、RAM260から出力される注目画素の輝度値(画素データ)が閾値ThCを超えているかどうかを判定する。
【0064】
図10は、比較器270の詳細を示している。比較器270は、注目ブロックの一行目の8つの画素データと閾値ThCとを比較する比較器271a~271hを有している。さらに、比較器270は、注目ブロックの二行目の8つの画素データと閾値ThCとを比較する比較器272a~272hを有している。さらに、比較器270は、注目ブロックの8行目の8つの画素データと閾値ThCとを比較する比較器278a~278hを有している。つまり、比較器270は、合計で64個の比較器を有している。
【0065】
RAM261~268に格納されている注目ブロックの各行の画素データが取り出され、比較器271a~278hに入力される。比較器271a~278hはそれぞれ、注目画素の画素データ(輝度値)が閾値ThCを超えていなければ、ステップS804をスキップする。つまり、比較器270はカウンタ280にカウント信号を出力しない。一方、比較器271a~278hはそれぞれ、注目画素の画素データ(輝度値)が閾値ThCを超えていれば、S804に進む。
【0066】
S804でFPGA20(比較器270)は、カウンタ280にカウント信号を出力する。つまり、カウンタ280は1ブロックにおける高輝度画素数をカウント信号に基づきカウントする。
【0067】
このように一ブロックを構成している全画素の比較が並列で実行される。そのため、高速に比較結果が得られる。
図10の例では、カウンタ280は、64個の比較器271a~278hについてカウントを実行する。そのため、カウンタ280が出力する値、つまり、1ブロックあたりの高輝度画素数281は、0から64までの値となる。
【0068】
ここで求められた高輝度画素数281は、基準輝度値249が出力された次のSystemクロック201の立ち上がりでRAM290に出力される。このように、高輝度画素数281のRAM290への格納は、次のブロックの画素データがRAM40に送信されるまでに、実行される。つまり、画像データのRAM40への保存と並行して、高輝度画素数281の計算結果のRAM290への保存が実行される。よって、高輝度画素数281の計算時間がRAM40に画像データを保存する時間を超えることはない。
【0069】
<シーケンス>
図11は、各信号のシーケンスを示している。フェーズPh1で受信完了信号212が立ち上がる。これをトリガーとして、次のSystemクロック201の立ち上がりがフェーズPh2となる。
【0070】
フェーズPh2でデータ処理部210における送信レジスタ213が送信可能状態に遷移する。さらに、次のSystemクロック201の立ち上がりがフェーズPh3となる。
【0071】
フェーズPh3でRAM230に基準輝度値249の計算に必要となるデータが格納される。同時にRAM260にも比較用のデータが格納される。さらに、次のSystemクロック201の立ち上がりがフェーズPh4となる。
【0072】
フェーズPh4で計算開始信号239が立ち上がる。さらに、次のSystemクロック201の立ち上がりがフェーズPh5となる。
【0073】
フェーズPh5で基準輝度値249が更新される。さらに、次のSystemクロック201の立ち上がりがフェーズPh6となる。
【0074】
フェーズPh6で基準輝度値249に基づくカウント値281が演算される。
【0075】
<姿勢演算>
1フレームの画像データを構成する全ブロックについて画素データがRAM40に保存され、かつ、全ブロックの基準輝度値249と高輝度画素数281とがRAM290に保存されると、FPGA20はCPU10に撮像完了信号を出力する。
【0076】
図12は、CPU10がROM50に記憶されているプログラムを実行することで実現する機能を示している。ブロック選択部1202は、ブロック選択プログラム1212により実現される。CPU10(ブロック選択部1202)は撮像完了信号を受けると、計算結果用のRAM290にアクセスしてRAM40に各ブロックのカウント値281を保存し、高輝度画素数の多いブロックを星候補領域と判定する。たとえば、ブロック選択部1202は、ブロックごとに、カウント値281と候補閾値とを比較し、カウント値281が候補閾値以上となっているブロックを星候補領域と判定する。
【0077】
星位置演算部1203は、位置演算プログラム1213により実現される。星位置演算部1203は、ブロック選択部1202により星候補領域と判定されたブロックの画素データと、その周辺ブロックの画素データをRAM40の画像データ1200から読み出し、星位置を演算する。この際に、星位置演算部1203は、各ブロックの基準輝度値249を参照し、加算器250および比較器270と同様にして、高輝度の画素群を特定する。つまり、星位置演算部1203は、閾値ThCを超える画素群を星と判定し、画素群のうちで輝度値がピークとなる位置を求め、その位置を撮像素子30の視野における星の位置として演算する。
【0078】
本実施例によれば、太陽が視野に近い領域で画像全体の輝度が上がった場合においても、ブロック毎の基準輝度値249を用いることで、星判定閾値である閾値ThCを周囲の輝度値に合わせて動的に変更することが可能となる。これにより、星判定精度が向上する。
【0079】
星同定部1207は、CPU10が星同定プログラム1217を実行することで実現される機能である。星同定部1207は、各星候補の位置に基づき、星を同定し、同定結果を姿勢決定部1208に出力する。たとえば、星同定部1207は、複数の星候補の位置と、星カタログ1222に登録されている恒星の位置とをパターンマッチングして行き、複数の星候補が何の恒星であるかを具体的に特定する。
【0080】
姿勢決定部1208は、CPU10が姿勢決定プログラム1218を実行することで実現される機能である。姿勢決定部1208は、星同定部1207により同定された星と、事前計算されてROM50に記憶されている星カタログ1222とを比較して衛星の現在の姿勢ベクトルを計算する。さらに、姿勢決定部1208は、現在の姿勢ベクトルと衛星の目標ベクトルとの誤差が小さくなるように姿勢制御信号を生成し、制御対象150へ出力する。制御対象150は、衛星の姿勢を制御するための噴射装置等である。
【0081】
本実施例によれば、FPGA20とRAM40とが別の電装部品として実装されているが、これは一例にすぎない。FPGA20とRAM40とがワンチップICの内部部品として実装されてもよい。たとえは、これらがSoC(System On Chip)などによって構成されてもよい。
【0082】
これまでスタートラッカ1を例に本開示の技術思想が説明された。しかし、本開示の本質は、画像領域内において、周囲と異なる輝度を持つ領域に、CPU10に負荷をかけることなく素早くアクセスすることであるため、実施例はスタートラッカ1に限られない。たとえば、生産装置等に組み込まれる異物検出センサなど、撮像領域内全体に対し所定の輝度を超える画素を検出するような検出装置に適用さてもよい。
【0083】
<実施例から導き出される技術思想>
[観点1]
撮像素子が被写体を撮像して出力する画像データを保存する第一画像メモリ(例:RAM230)と、
前記第一画像メモリに保存された画像データを複数のブロックに分割し、前記複数のブロックのそれぞれについての基準輝度値を演算する演算部(例:平均演算部240)と、
各ブロックについて演算された前記基準輝度値に応じて高輝度判定閾値を調整する調整部(例:加算器250)と、
前記高輝度判定閾値に基づき、各ブロックにおける輝度値の大きい画素をカウントするカウンタ(例:カウンタ280)と
を有することを特徴とする画像処理回路(例:FPGA20)。
【0084】
本実施例によれば、基準輝度値に応じて高輝度判定閾値が調整されるため、計算対象となるブロック数が削減される。これにより、衛星の姿勢決定などの本来の画像処理の前に実行される前処理に必要となる画像処理時間が短縮される。
【0085】
[観点2]
前記第一画像メモリの前段に設けられ、前記撮像素子から出力される画像データを構成する各画素の輝度値と、前記撮像素子における欠陥画素を判定するための欠陥画素閾値とを比較し、前記欠陥画素閾値を超える輝度値を所定値に置換する置換部(例:保存前処理部220)をさらに有することを特徴とする観点1に記載の画像処理回路。
【0086】
このように、欠陥画素の影響が低減されるため、計算対象となるブロック数が削減される。これにより、衛星の姿勢決定などの本来の画像処理の前に実行される前処理に必要となる画像処理時間が短縮される。
【0087】
[観点3]
前記撮像素子が前記被写体を撮像して出力する前記画像データを保存する第二画像メモリ(例:RAM260)と、
前記第二画像メモリに記憶されている各ブロックごとの各画素の輝度値と前記高輝度判定閾値とを比較する比較手段(例:比較器270)と、をさらに有し、
前記カウンタは、前記比較手段の比較結果に基づき、各ブロックにおける輝度値の大きい画素をカウントする、ことを特徴とする観点1または2に記載の画像処理回路。
【0088】
このように、基準輝度値を判定するための第一画像メモリと、比較用の第二画像メモリとを設けることで、特定のメモリへのアクセス回数が削減可能となり、画像処理時間が短縮される。
【0089】
[観点4]
前記第二画像メモリへの前記画像データの格納と、前記演算部における前記基準輝度値の演算とが並列に実行される、ことを特徴とする観点3に記載の画像処理回路。
【0090】
図2や
図11を用いて説明されたように、メモリへのデータの格納と基準輝度値249の演算とが並列に実行される。これにより、画像処理時間が短縮される。
【0091】
[観点5]
前記第二画像メモリへの前記画像データの格納と、前記調整部における前記高輝度判定閾値の調整とが並列に実行される、ことを特徴とする観点3または4に記載の画像処理回路。
【0092】
図2や
図11を用いて説明されたように、メモリへのデータの格納と高輝度判定閾値ThCの演算とが並列に実行される。これにより、画像処理時間が短縮される。
【0093】
[観点6]
前記調整部は、各ブロックごとに前記演算部により求められた前記基準輝度値を初期閾値に加算することで、各ブロックごとの前記高輝度判定閾値を求める、ことを特徴とする観点1ないし5のいずれか一項に記載の画像処理回路。
【0094】
図2を用いて説明されたように、各ブロックごとに平均演算部240により求められた基準輝度値249を初期閾値(初期閾値ThB)に加算することで、各ブロックごとの高輝度判定閾値ThCが求められてもよい。これにより、簡単構成で、高輝度判定閾値ThCを調整することが可能となる。
【0095】
[観点7]
各ブロックはn列×m行の画素により構成されており、
前記第一画像メモリは、m個のRAM(例:RAM231~238)を有し、
前記m個のRAMは、それぞれ同一のアドレスに、同一ブロックにおける異なる行におけるn個の画素の輝度値を記憶するように構成されており、
前記演算部は、
前記m個のRAMに対応して設けられたm個の第一加算器(例:加算器241~248)と、
前記m個の加算器から出力される和の合計値を求める第二加算器(例:加算器701)と、
前記第二加算器から出力される前記合計値をn×mで除算して前記基準輝度値を出力する除算器(例:除算器702)と、
を有数ことを特徴とする観点1から6のいずれか一項に記載の画像処理回路。
【0096】
図6および
図7ではn=8、m=8の事例が示されているが、これは一例にすぎない。n,mはそれぞれ8よりも多くても少なくてもよい。
【0097】
[観点8]
各ブロックはn列×m行の画素により構成されており、
前記第二画像メモリは、m個のRAM(例:RAM261~268)を有し、
前記m個のRAMは、それぞれ同一のアドレスに、同一ブロックにおける異なる行におけるn個の画素の輝度値を記憶するように構成されており、
前記比較手段は、
前記m個のRAMに対応して設けられたm×n個の比較器(例:比較器271a~278h)を有し、
前記カウンタは、前記m×n個の比較器の比較結果に基づき、各ブロックにおける輝度値の大きい画素をカウントする、ことを特徴とする観点3ないし5のいずれか一項に記載の画像処理回路。
【0098】
図9および
図10ではn=8、m=8の事例が示されているが、これは一例にすぎない。n,mはそれぞれ8よりも多くても少なくてもよい。
【0099】
[観点9]
観点1から8のいずれか一項に記載の画像処理回路であって、前記被写体が星である、画像処理回路(例:FPGA20)と、
前記画像処理回路から出力される複数のブロックの画像データについて、各ブロックにおける輝度値の大きい画素のカウント結果に基づき、星位置演算の対象となるブロックとを選択する選択部(例:CPU10、ブロック選択部1202)と、
前記選択部により選択された前記ブロックの画像データに基づき星位置を演算する星位置演算部(例:CPU10、星位置演算部1203)と、
を有するスタートラッカ。
【0100】
画像処理回路が高速化されることで、スタートラッカにおける星位置の演算時間も短縮されるであろう。
【0101】
[観点10]
撮像素子が被写体を撮像して出力する画像データを第一画像メモリに保存し、
前記第一画像メモリに保存された画像データを複数のブロックに分割し、前記複数のブロックのそれぞれについての基準輝度値を演算し、
各ブロックについて演算された前記基準輝度値に応じて高輝度判定閾値を調整し、
前記高輝度判定閾値に基づき、各ブロックにおける輝度値の大きい画素をカウントする、
ことを特徴とする画像処理方法。
【0102】
図2を用いて説明されたように、本開示によれば画像処理方法が提供される。
【0103】
[観点11]
観点10に記載の画像処理方法をコンピュータに実行させるプログラム。
【0104】
図2に示された画像処理方法はコンピュータ(例:CPU10)により実行されてもよい。この場合、CPU10により実行されるプログラムはROM50に記憶されている。
【0105】
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。
【符号の説明】
【0106】
20:FPGA、230:RAM、240:平均演算部、250:加算器、280:カウンタ