IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン電子株式会社の特許一覧

特開2024-66466画像処理回路、位置決定方法、プログラムおよび画像処理装置
<>
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図1
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図2
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図3
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図4
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図5
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図6
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図7
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図8
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図9
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図10
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図11
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図12
  • 特開-画像処理回路、位置決定方法、プログラムおよび画像処理装置 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024066466
(43)【公開日】2024-05-15
(54)【発明の名称】画像処理回路、位置決定方法、プログラムおよび画像処理装置
(51)【国際特許分類】
   G06T 7/70 20170101AFI20240508BHJP
   B64G 1/36 20060101ALI20240508BHJP
【FI】
G06T7/70 A
B64G1/36 100
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2023177743
(22)【出願日】2023-10-13
(31)【優先権主張番号】P 2022174543
(32)【優先日】2022-10-31
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000104652
【氏名又は名称】キヤノン電子株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】後藤 昂司
(72)【発明者】
【氏名】稲川 智也
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096FA69
5L096GA07
5L096GA51
(57)【要約】
【課題】撮像対象の位置の推定する際、その処理時間を短縮させる。
【解決手段】画像処理回路は、撮像対象を撮像して当該撮像対象の画像を取得し、取得された画像において単位領域ごとに輝度を検出し、検出された、隣り合う二つの単位領域間の輝度の差を演算し、演算された輝度の差に基づいて、画像において所定値を超える輝度を有する画素に対応する撮像対象の位置を決定する。
【選択図】図2
【特許請求の範囲】
【請求項1】
撮像対象を撮像して当該撮像対象の画像を取得する撮像手段と、
前記撮像手段で取得された前記画像において単位領域ごとに輝度を検出する輝度検出手段と、
前記輝度検出手段で検出された、隣り合う二つの単位領域間の前記輝度の差を演算する演算手段と、
前記演算手段で演算された前記輝度の差に基づいて、前記画像において所定値を超える輝度を有する画素に対応する前記撮像対象の位置を決定する位置決定手段と、
を備える、画像処理回路。
【請求項2】
請求項1に記載の画像処理回路であって、前記単位領域は、前記画像における1画素である、画像処理回路。
【請求項3】
請求項1に記載の画像処理回路であって、
前記撮像手段は、前記画像を撮像する撮像素子を備え、
前記輝度検出手段は、前記輝度を検出する際、前記撮像素子からの画像の読み出し方向に沿って前記単位領域を順に走査する、画像処理回路。
【請求項4】
請求項3に記載の画像処理回路であって、
前記演算手段は、前記隣り合う二つの単位領域のち、前記輝度検出手段での走査方向において前方に位置する第一単位領域の輝度から、前記走査方向において後方に位置する第二単位領域の輝度を減じた値を前記輝度の差として演算する、画像処理回路。
【請求項5】
請求項4に記載の画像処理回路であって、
前記輝度の差が0以上から負に転じたときの前記第一単位領域を直前画素とし、該直前画素の位置を記憶する記憶手段を備え、
前記記憶手段は、前記直前画素の前で前記輝度の差が負から0以上に転じたときの前記単位領域を第1画素とし、前記直前画素の後で前記輝度の差が負から0以上に転じたときの前記単位領域を第2画素とし、前記第1画素と前記第2画素との間隔が規定値を超えた場合に、前記直前画素の位置を、前記輝度が最大となるピーク候補として記憶する、画像処理回路。
【請求項6】
請求項5に記載の画像処理回路であって、
前記位置決定手段は、前記ピーク候補に基づいて、前記撮像対象の実際の位置を決定する、画像処理回路。
【請求項7】
請求項5に記載の画像処理回路であって、
前記記憶手段は、異なるタイミングで得られた2つのピーク候補を一旦記憶し、前記2つのピーク候補の位置が所定範囲内である場合には、該2つのピーク候補のうちの前記輝度が大きい方のピーク候補を記憶し、前記輝度が小さい方のピーク候補を消去する、画像処理回路。
【請求項8】
請求項5に記載の画像処理回路であって、前記画像において、前記直前画素を探索する探査領域が設定可能である、画像処理回路。
【請求項9】
請求項5に記載の画像処理回路であって、前記記憶手段は、前記第1画素の輝度と前記第2画素の輝度とを記憶し、前記第1画素の輝度と前記第2画素の輝度とが前記ピーク候補の条件として使用される、画像処理回路。
【請求項10】
請求項1に記載の画像処理回路であって、さらに、
複数の単位領域を順に記憶する記憶手段を備え、
前記記憶手段が前記複数の単位領域を順に記憶する間に、前記輝度検出手段による前記輝度の検出と、前記演算手段による前記輝度の差の演算と、前記位置決定手段による前記撮像対象の実際の位置の決定とが順に行われる、画像処理回路。
【請求項11】
請求項1に記載の画像処理回路であって、
FPGA(Feild Programmable Gate Array)と、
前記FPGAと通信可能に接続されたCPU(Central Processing Unit)と、を備え、
前記FPGAは、前記輝度検出手段、前記演算手段、および、前記位置決定手段のうちの少なくとも1つを有する、画像処理回路。
【請求項12】
請求項1に記載の画像処理回路であって、
前記画像処理回路は、撮像装置に搭載される、画像処理回路。
【請求項13】
請求項1に記載の画像処理回路であって、
前記撮像対象は、星であり、
前記画像処理回路は、宇宙機に搭載されるスタートラッカであり、かつ、
前記位置決定手段で決定された前記星の実際の位置に基づいて、前記宇宙機の姿勢を決定する姿勢決定手段をさらに備える、画像処理回路。
【請求項14】
撮像対象の位置を決定する位置決定方法であって、
前記撮像対象を撮像して前記撮像対象の画像を取得する撮像工程と、
前記撮像工程で取得された前記画像において単位領域ごとに輝度を検出する輝度検出工程と、
前記輝度検出工程で検出された、隣り合う二つの単位領域の前記輝度の差を演算する演算工程と、
前記演算工程で演算された前記輝度の差に基づいて、前記撮像対象の実際の位置を決定する位置決定工程と、
を有する、位置決定方法。
【請求項15】
コンピュータに、
撮像対象を撮像して前記撮像対象の画像を取得する撮像工程と、
前記撮像工程で取得された前記画像において単位領域ごとに輝度を検出する輝度検出工程と、
前記輝度検出工程で検出された、隣り合う二つの単位領域の前記輝度の差を演算する演算工程と、
前記演算工程で演算された前記輝度の差に基づいて、前記撮像対象の実際の位置を決定する位置決定工程と
を実行させる、プログラム。
【請求項16】
撮像対象を撮像して当該撮像対象の画像を取得する撮像素子と、
前記画像に対して複数の画像処理を実行する少なくとも一つのプロセッサと、を有し、前記複数の画像処理は、
前記撮像素子で取得された前記画像において単位領域ごとに輝度を検出する輝度検出工程と、
前記輝度検出工程で検出された、隣り合う二つの単位領域間の前記輝度の差を演算する演算工程と、
前記演算工程で演算された前記輝度の差に基づいて、前記画像において所定値を超える輝度を有する画素に対応する前記撮像対象の位置を決定する位置決定工程と、
を含む、画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理回路、位置決定方法、プログラムおよび画像処理装置に関する。
【背景技術】
【0002】
人工衛星および宇宙探査機等の宇宙機は、スタートラッカが搭載されており、スタートラッカにより恒星の位置を検出して、その検出された恒星の位置に基づいて宇宙機の姿勢を決定する。スタートラッカは、宇宙機用姿勢センサの1つであり、星画像を撮像する撮像素子を有する。スタートラッカは、撮像素子により撮像した星画像に基づいて、星位置を検出する。
【0003】
そして、スタートラッカは、この検出結果として取得された星位置を、恒星カタログ(星表)上での星位置とを比較して星を同定して、宇宙機の姿勢を決定することができる。
【0004】
従来のスタートラッカでは、たとえば太陽が視野に入った場合または視野外太陽干渉角内に入った場合には、撮影画像全体の輝度が上がって、恒星の判定(検出)が困難となり、その結果、姿勢決定も困難となるおそれがあった。そのため、従来のスタートラッカの使用に際し、恒星以外の場所の輝度が恒星判定に用いられる閾値よりも十分に低くなるような視野範囲で使用する必要があった。
【0005】
また、従来のスタートラッカは、撮像素子から出力される画像データを処理することなくメモリに格納し、その格納後に演算装置がメモリにアクセスして画像データに処理を施すことで星位置を検出していた(特許文献1)。
【0006】
その他の従来のスタートラッカは、メモリ格納前の処理として撮像素子から出力される画像データを複数のブロックに分割し、予め設定された閾値を越える輝度を有するピクセルの個数によってブロックごとに恒星があるか否かを検出する。この従来のスタートラッカの演算装置は、各ブロックの周辺にある領域に対してのみアクセスして、星位置を検出する(特許文献2)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平7-270177号公報
【特許文献2】特開平11-291996号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、従来のスタートラッカの演算装置は、画像処理を行う際に画像データが記憶されたメモリの全てにアクセスする、または、恒星があると判定されたブロックの全てにアクセスする。そのため、画像処理に時間がかかっていた。また、太陽が視野角近傍に位置した場合、画像全体の輝度が上がる。そのため、多くのブロックは星が存在すると判定されてしまう。その結果、多くのブロックに演算装置がアクセスしなければならない。
【0009】
なお、このような問題は、撮像対象と高輝度の物体との両方が撮像素子の視野に存在したり、視野に撮像対象が存在し、かつ、高輝度の物体が視野外であるが視野角近傍に位置したりする場合にも発生する。たとえば、ある物品を製造する製造装置において、物品に付着した異物(特に輝度が高い異物)を検査する場合に、高輝度物体からの反射光と異物からの反射光とを区別する必要があり、画像処理の時間が増えてしまう。そこで、本発明は、撮像対象の位置の推定する際、その処理時間を短縮することを目的とする。
【課題を解決するための手段】
【0010】
本発明は、たとえば、
撮像対象を撮像して当該撮像対象の画像を取得する撮像手段と、
前記撮像手段で取得された前記画像において単位領域ごとに輝度を検出する輝度検出手段と、
前記輝度検出手段で検出された、隣り合う二つの単位領域間の前記輝度の差を演算する演算手段と、
前記演算手段で演算された前記輝度の差に基づいて、前記画像において所定値を超える輝度を有する画素に対応する前記撮像対象の位置を決定する位置決定手段と、
を備える、画像処理回路を提供する。
【発明の効果】
【0011】
本発明によれば、撮像対象の位置を推定する際、その処理時間を短縮することができる。
【図面の簡単な説明】
【0012】
図1】第1実施形態におけるスタートラッカのハードウェア構成を示すブロック図である。
図2図1に示すスタートラッカが有するFPGAのハードウェア構成を示すブロック図である。
図3図2に示すFPGAが有するデータ処理部のハードウェア構成を示すブロック図である。
図4図3に示すデータ処理部で実行される動作のタイミングチャートである。
図5図2に示すFPGAが有する星位置探査部のハードウェア構成を示すブロック図である。
図6図5に示す星位置探査部が有する輝度差算出部のハードウェア構成を示すブロック図である。
図7】輝度勾配幅計測部で実行される処理を示すフローチャートである。
図8】山判定部およびデータバッファで実行される処理を示すフローチャートである。
図9】谷判定部、ピーク候補判定部およびピーク候補格納部で実行される処理を示すフローチャートである。
図10】ピーク判定部および星位置情報格納用RAMで実行される処理を示すフローチャートである。
図11】星位置探査部での処理例を説明するための図である。
図12】第2実施形態における星位置探査部のハードウェア構成を示すブロック図である。
図13】谷判定部、ピーク候補判定部およびピーク候補格納部で実行される処理を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴が任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
【0014】
<第1実施形態>
以下、図1図11を参照して、第1実施形態が説明される。図1は、第1実施形態におけるスタートラッカのハードウェア構成を示すブロック図である。図1が示すスタートラッカ(STT)1は、宇宙空間を飛行する宇宙機に搭載可能であり、宇宙空間で星を撮影して、宇宙機の姿勢(向き)を求める装置である。宇宙機としては、特に限定されず、たとえば、人工衛星もしくは人工惑星等の無人宇宙機、または、宇宙探査機、宇宙往還機、宇宙ステーション等の有人宇宙機が挙げられる。
【0015】
スタートラッカ1は、Central Processing Unit(CPU)10、およびFeild Programmable Gate Array(FPGA)20を有する。スタートラッカ1は、撮像素子(撮像手段)30、Random Access Memory(RAM)40、Read Only Memory(ROM)50、およびRAM60を有する。スタートラッカ1を構成するこれらの構成要素は、互いに通信可能に接続されている。
【0016】
撮像素子30は、星の画像を撮像する(撮像工程)。撮像素子30は、星の画像を撮像する撮像面(不図示)を有する素子であり、たとえば、Complementary Metal Oxide Semiconductor(CMOS)イメージセンサ、Charge Coupled Device(CCD)イメージセンサ、または、その他の素子等で構成される。
【0017】
なお、本実施形態では、撮像素子30の撮像面の外形は長方形である。撮像素子30は、画素クロックに同期して、撮像面に入射した光を電気信号に変換するとともに当該電気信号をアナログデジタル(A/D)変換して画像データを生成し、画像データを画像バス80に出力する。この画像データは、FPGA20およびApplication Specific Integrated Circuit(ASIC)で構成された画像処理回路によって画像処理される。画像データは画素データと呼ばれてもよい。
【0018】
FPGA20は、撮像素子30に通信可能に接続され、撮像素子30から出力された画像データを取り込む制御を行う。この制御では、たとえば、垂直同期信号、水平同期信号、および画素クロックがFPGA20から撮像素子30に送信される。FPGA20は、画像データが画像処理されることによって得られるデジタルデータをRAM40に順次書き込んでいく。
【0019】
FPGA20は、この書き込みに伴って、後述される輝度検出工程、演算工程、および位置推定工程を実行する。そして、FPGA20は、これらの工程を実行することで得られた星位置情報をFPGA20内部の星位置情報格納用RAM230(図2参照)に保存する。FPGA20は、これを1フレーム分繰り返して、処理が終了した場合には、CPU10に撮影完了信号11を出力する。すなわち、撮影完了信号11が送信される。
【0020】
ROM50は、CPU10により実行される各種プログラムを記憶している。各種プログラムは、たとえば、CPU10およびFPGA20等で構成されたコンピュータを、スタートラッカ1の各部や各ユニットとして機能させるためのプログラム(星の位置推定方法を実行する星位置推定プログラム)等を含む。RAM60は、CPU10のワークメモリである。
【0021】
CPU10は、FPGA20の動作および撮像素子30の動作(シャッタスピード制御)等、種々の制御を行う。具体的には、CPU10は、撮像素子30のゲインデータと、撮像オンまたは撮像オフのタイミングを示すタイミングデータと、をFPGA20にシステムバス70経由で設定する。FPGA20は、この設定されたデータをシリアル信号90に変換して、撮像素子30へ設定する。これにより、撮像素子30が撮像を実行できるようになる。
【0022】
CPU10は、FPGA20から撮影完了信号11を受信すると、星位置情報格納用RAM230内の星位置情報を読み出す。CPU10は、星位置情報を使用して、星位置周辺の画素データをRAM40から抽出し、さらに正確な星位置を重心計算等で求める。CPU10は、この処理を繰り返すことにより、複数の星の星間距離を算出する。CPU10は、この算出結果と、ROM50に予め記憶された星地図(星のカタログデータ)と照合して、宇宙機の姿勢を推定する。このように本実施形態では、CPU10は、宇宙機の姿勢を推定する姿勢推定手段として機能する。
【0023】
図2は、図1に示されたスタートラッカが有するFPGA20のハードウェア構成を示すブロック図である。図2が示すように、FPGA20は、データ処理部210、星位置探査部220、および星位置情報格納用RAM230を有する。
【0024】
図2が示すように、データ処理部210には、撮像素子30から出力される画像データが入力される。データ処理部210は、入力された画像データに対して画像処理を実施して、その画像処理された画像データを、RAM40と星位置探査部220とにそれぞれ出力する。星位置探査部220は、この画像データに対して、後述される星の位置を探査する処理を実施する。星位置探査部220は、この処理によってピーク候補を検知した場合には、そのピーク候補(星)の位置と、星位置情報格納用RAM230に格納されているこれまでにピークと判定された画素位置とを比較する。
【0025】
星の位置に関する情報が星位置情報格納用RAM230に未だ格納されていない場合もある。この場合、星の位置情報および輝度が星位置情報格納用RAM230に格納される。
【0026】
図3は、図2に示されたFPGA20が有するデータ処理部210のハードウェア構成を示すブロック図である。図4は、図3に示されたデータ処理部210で実行される動作のタイミングを示すタイミングチャートである。図3が示すように、データ処理部210は、シリアル-パラレル変換回路211、および送信レジスタ213を有する。シリアル-パラレル変換回路211は、撮像素子30から出力される画素データおよび画素クロックを入力される。
【0027】
シリアル-パラレル変換回路211は、パラレル信号に変換された1画素分のデータを、シフトレジスタに出力する。また、このデータは、画素クロックを分周することで生成されたクロックによってラッチされる。たとえば、1画素の輝度値(階調値)が12ビットで表現される場合、画素クロックは12分周される。本実施形態では、1回の通信でRAM40に送信される画素の数と同じ数の順序論理回路が実装されている。一例としてRAM40に送信される画素の数が4画素であれば、4つの順序論理回路が実装される。
【0028】
この順序論理回路は、12分周された画素クロックにしたがって、画素データをシフトし、4画素分の画素データが溜まったら、さらに送信画素数で分周(例:4分周)されたクロックにしたがって4画素分のデータをラッチする。このとき、受信完了信号212がHighとなる(図4の「Ph1」参照)。また、ラッチされた4画素分のデータは、送信レジスタ213に出力される。送信レジスタ213は、受信完了信号212がHighである場合に、システムクロック201の立上りで、入力された4画素分の画素データをラッチして(図4の「Ph2」参照)、RAM40に出力する。
【0029】
図5は、図2に示されたFPGA20が有する星位置探査部220のハードウェア構成を示すブロック図である。図6は、図5に示された星位置探査部220が有する輝度差算出部221のハードウェア構成を示すブロック図である。図5が示すように、星位置探査部220は、輝度差算出部221、輝度勾配幅計測部222、山判定部223、データバッファ224、谷判定部225、ピーク候補判定部226、ピーク候補格納部227、およびピーク判定部228を有する。山判定部223は極大値判定部と呼ばれてもよい。谷判定部225は極小値判定部と呼ばれてもよい。
【0030】
図6が示すように、輝度差算出部221は、フリップフロップ(FF)2211、および減算器2212を有する。前述されたように、データ処理部210は、画像処理後の画像データをRAM40に送信する(図2参照)。このとき、輝度差算出部221は、データ処理部210から画像データにおける画素の輝度に関する輝度情報を入力される。
【0031】
図6が示すように、FF2211および減算器2212は、それぞれ、1画素ずつ輝度値221A(図4の「Ph3」参照)を入力される。その後、FF2211は、システムクロック201の立上りでラッチされた値をフリップフロップ後の輝度値221Bとして、減算器2212に出力する(図4の「Ph4」参照)。
【0032】
減算器2212は、輝度値221Aと輝度値221Bとの差分を演算することにより、走査方向において隣り合う画素の輝度差221Cを算出する(図4の「Ph5」参照)。輝度差算出部221により算出された輝度差221Cは、輝度勾配幅計測部222、山判定部223および谷判定部225に入力されて、これらの各部で並列に処理される。
【0033】
以上のように、輝度差算出部221は、撮像素子30で撮像された画像中の1画素ごとに輝度(輝度値)を検出し、隣り合う二つの画素の輝度間の差を演算する。1画素ごとに輝度が検出されることにより、撮像素子30で撮像された星画像の輝度ができる限り細かく、すなわち、できる限り多点で検出される。
【0034】
なお、星画像中で輝度を検出される単位領域は、その画像における1画素であってもよい。しかし、これは一例にすぎない。単位領域は、たとえば、隣り合う複数の画素から形成されてもよい。
輝度差算出部221は、輝度を検出する際に、撮像素子30からの読み出し方向に沿って1画素ごとに順に読み込んでいく。輝度差算出部221は、輝度の差を演算する際、輝度検出時の走査方向前方に位置する1画素の輝度から、その走査方向後方に位置する1画素の輝度を減じた値を、輝度差(輝度の差)として、輝度勾配幅計測部222、山判定部223および谷判定部225に出力することができる。
【0035】
このように本実施形態では、輝度差算出部221(FPGA20)は、輝度を検出する輝度検出手段としての機能と、輝度差を演算する演算手段としての機能とを有する。なお、撮像素子30における読み出し単位は、星画像全体であってもよいし、星画像全体の一部であってもよい。輝度差算出部221は、撮像素子30において読み出された領域に対し、その領域の読み出し方向と同じ方向に走査を実行すればよい。
【0036】
図7は、輝度勾配幅計測部222で実行される処理を示すフローチャートである。図8は、山判定部223およびデータバッファ224で実行される処理を示すフローチャートである。図9は、谷判定部225、ピーク候補判定部226およびピーク候補格納部227で実行される処理を示すフローチャートである。図10は、ピーク判定部228および星位置情報格納用RAM230で実行される処理を示すフローチャートである。以下では、画像の走査方向が左から右である場合に、右側が前方と呼ばれ、左側は後方と呼ばれる。隣り合った二つの画素のうち、処理対象である1画素は「注目画素」と呼ばれ、走査方向において注目画素の後方に位置する1画素は「直前画素」と呼ばれる。つまり、注目画素は、走査方向において直前画素の前方に位置する。
【0037】
図7が示すように、ステップS201では、輝度勾配幅計測部222は、注目画素と直前画素との輝度差が入力された場合に、その輝度差が閾値(以下「閾値A」と言う)以上か否かを判定する。この閾値Aは、閾値A以上となる画素のみがピーク候補として後述される処理対象となるように、ノイズまたは暗い星に対応する輝度差を排除可能な値に設定されている。
【0038】
なお、閾値Aとしては、たとえば、FPGAコンフィグレーション時に予め設定されたものであってもよいし、CPU10からシステムバス70経由で設定されたものであってもよい。ステップS201での判定の結果、輝度差が閾値A以上であると判定された場合には、処理はステップS202に進む。一方、ステップS201での判定の結果、輝度差が閾値A以上ではないと判定された場合には、処理はステップS205に進む。
【0039】
ステップS202では、輝度勾配幅計測部222は、輝度勾配幅カウンタを1だけインクリメントして、処理はステップS203に進む。
【0040】
ステップS203では、輝度勾配幅計測部222は、輝度差が負から0以上に転じた、すなわち、輝度勾配の谷が現れたか否かを判定する。ステップS203での判定の結果、輝度差が負から0以上に転じたと判定された場合には、処理はステップS204に進む。一方、ステップS203での判定の結果、輝度差が負から0以上に転じていないと判定された場合には、処理はステップS205に進む。
【0041】
ステップS204では、輝度勾配幅計測部222は、輝度勾配幅カウンタのカウント値を記憶装置(例:RAM40)に保存し、輝度勾配幅カウンタを0にクリアする。
【0042】
ステップS205では、輝度勾配幅計測部222は、ステップS204までの処理が1フレーム分完了したか否かを判定する。ステップS205での判定の結果、1フレーム分完了したと判定された場合には、処理は終了する。一方、ステップS205での判定の結果、1フレーム分完了していないと判定された場合には、輝度勾配幅計測部222は、注目画素を次の画素に進めてステップS201に戻り、それ以降のステップを順に実行する。
【0043】
このように輝度勾配幅計測部222は、輝度差を使用して走査方向の輝度勾配を調べて、輝度勾配の幅、すなわち、星が作る像の幅を計測する。また、閾値Aが適切に設定されることにより、星画像内のノイズが除去される。これにより、輝度勾配が正確に把握可能となる。
【0044】
図8が示すように、ステップS211では、山判定部223は、輝度差が入力された場合には、輝度差が0以上から負に転じた、すなわち、輝度勾配の傾向として、輝度勾配の山が検出されたか否かを判定する。ステップS211での判定の結果、輝度差が0以上から負に転じたと判定された場合には、処理はステップS212に進む。一方、ステップS211での判定の結果、輝度差が0以上から負に転じていないと判定された場合には、処理はステップS213に進む。
【0045】
ステップS212では、山判定部223は、直前画素の位置および輝度値を、記憶装置としてのデータバッファ224に保存する(記憶させる)。この直前画素は、輝度差が0以上から負に転じたときの直前画素であり、その直前画素を含む周辺画素群において輝度が最も高い画素となっている。ステップS212では、直前画素の輝度値が輝度のピークとなる可能性があるため、直前画素の輝度値が一時的にデータバッファ224に保存される。
【0046】
ステップS213では、山判定部223は、ステップS212までの処理が1フレーム分完了したか否かを判定する。ステップS213での判定の結果、1フレーム分完了したと判定された場合には、処理は終了する。一方、ステップS213での判定の結果、1フレーム分完了していないと判定された場合には、山判定部223は、注目画素を次の画素に進めてステップS211に戻り、それ以降のステップを順に実行する。
【0047】
図9が示すように、ステップS221では、谷判定部225は、輝度差が入力された場合には、輝度差が負から0以上に転じた、すなわち、輝度勾配の傾向として、輝度勾配の谷が検出されたか否かを判定する。ステップS221での判定の結果、輝度差が負から0以上に転じたと判定された場合には、処理はステップS222に進む。一方、ステップS221での判定の結果、輝度差が負から0以上に転じていないと判定された場合には、処理はステップS224に進む。
【0048】
ステップS222では、谷判定部225は、輝度勾配幅計測部222の輝度勾配幅カウンタの値を確認して、そのカウント値が閾値(以下「閾値B」と言う)以上か否かを判定する。閾値は、たとえば、閾値Aと同様に、FPGAコンフィグレーション時に予め設定されたものであってもよいし、CPU10からシステムバス70経由で設定されたものであってもよい。ステップS222での判定の結果、カウント値が閾値B以上であると判定された場合には、処理はステップS223に進む。一方、ステップS222での判定の結果、カウント値が閾値B以上ではないと判定された場合には、処理はステップS224に進む。
【0049】
ステップS223では、ピーク候補判定部226は、データバッファ224に保存されている輝度勾配の山に対応する画素データを、輝度のピーク候補としてピーク候補格納部227に保存する。つまり、ここでは、輝度勾配の谷を検知する度に、星の像の大きさが確認され、輝度勾配幅カウンタの値が閾値B以上であれば、輝度のピーク候補としてピーク候補格納部227に輝度値(画素データ)が保存される。星像の大きさについては、たとえば、センサ感度、絞り値、またはシャッタスピード等に基づいて、事前に推測可能である。そのため、閾値Bが適切に設定されることにより、星画像中の輝度が周辺画素の輝度に比べて比較的高い部分が、星像なのか、それとも、ノイズなのかが判別可能となる。
【0050】
ステップS224では、ピーク候補判定部226は、ステップS223までの処理が1フレーム分完了したか否かを判定する。ステップS224での判定の結果、1フレーム分完了したと判定された場合には、処理は終了する。一方、ステップS224での判定の結果、1フレーム分完了していないと判定された場合には、ピーク候補判定部226は、注目画素を次の画素に進めてステップS221に戻り、それ以降のステップを順に実行する。
【0051】
図10が示すように、ステップS231では、ピーク判定部228は、ステップS223で保存された画素データがピーク候補格納部227から入力された場合に、星位置情報格納用RAM230に既にピークとしてデータが保存されているか否かを判定する。ステップS231での判定の結果、星位置情報格納用RAM230にデータが保存されていると判定された場合には、処理はステップS233に進む。一方、ステップS231での判定の結果、星位置情報格納用RAM230にデータが保存されていないと判定された場合には、処理はステップS232に進む。
【0052】
ステップS232では、ピーク判定部228は、ステップS231で入力されたピーク候補の画素データをピークと判定して、星位置情報格納用RAM230に保存する。ステップS232が実施された後、処理は終了する。
【0053】
ステップS233では、ピーク判定部228は、ステップS231で入力されたピーク候補の画素データと、星位置情報格納用RAM230に保存されているピークの画素データとの垂直位置と水平位置とを比較する。そして、ピーク判定部228は、双方の画素データの位置が予め設定された範囲(以下「範囲C」と言う)内に存在するか否かを判定する。なお、範囲Cとしては、たとえば閾値Aや閾値Bと同様に、FPGAコンフィグレーション時に予め設定されたものであってもよいし、CPU10からシステムバス70経由で設定されたものであってもよい。ステップS233での判定の結果、双方の画素データの位置が範囲C内に存在すると判定された場合には、処理はステップS234に進む。一方、ステップS233での判定の結果、双方の画素データの位置が範囲C内に存在していないと判定された場合には、処理はステップS236に進む。
【0054】
ステップS234では、ピーク判定部228は、ピーク候補画素の輝度値が星位置情報格納用RAM230に保存されているピークの輝度値以上か否かを判定する。ステップS234での判定の結果、ピーク候補画素の輝度値がピークの輝度値以上であると判定された場合には、処理はステップS235に進む。一方、ステップS234での判定の結果、ピーク候補画素の輝度値がピークの輝度値以上ではないと判定された場合には、処理はS236に進む。
【0055】
ステップS235では、ピーク判定部228は、ピーク候補画素の輝度値をピークとして星位置情報格納用RAM230に保存するとともに、元々保存されていたピークの画素データ(輝度値)については破棄する。
【0056】
ステップS236では、ピーク判定部228は、ピーク候補格納部227に保存され、ピーク候補と判定された画素全てに対して、ステップS235までの処理が完了したか否かを判定する。ステップS236での判定の結果、完了と判定された場合には、処理は終了する。一方、ステップS236での判定の結果、未完了と判定された場合には、処理はステップS233に戻り、それ以降のステップを順に実行する。
【0057】
このように、新たにピーク候補と判定された画素と、これまでにピークと判定された画素とが同じ星を示している場合がある。その場合、ピーク判定部228では、同じ星に由来する二つの画素をマージする処理を実行している。
【0058】
これまで説明された星位置探査部220の処理は、1画素(1ライン)ずつ実行される。そのため、星が走査方向と垂直方向との複数の画素にわたって撮像された場合は、既にピークと判定された画素と同じ星に由来する別の画素も、ピーク候補格納部227に保存されてしまう。そのような画素の座標は、ピークと判定された画素の位置と隣接する垂直位置かつ同じような水平位置であるにもかかわらず、新たなピーク候補として検知される。そこで、ピーク判定部228では、これらの画素を同じ星に由来する画素群と判定するために、ピーク候補画素の垂直位置および水平位置とピーク判定画素の垂直位置および水平位置とが指定された範囲内にある場合には、輝度の高い方の画素の輝度値をピークとして残す。
【0059】
ピーク判定部228は、ピーク候補(輝度差)に基づいて、ピーク候補画素を、星の実際の位置として推定することができる。このように本実施形態では、ピーク判定部228は、星の実際の位置を推定する位置推定手段として機能する。CPU10は、ピーク判定部228により推定された星の実際の位置に基づいて、宇宙機の姿勢を推定することができる。
【0060】
図11は、星位置探査部220での処理例を説明するための図である。図11中の矢印内に記載されている値は、注目画素の輝度値と直前画素の輝度値との差分(輝度差)である。なお、ここでは閾値A=1、閾値B=4、範囲C=1とする。星画像を左上から走査する場合、(X,Y)=(0,0)から右方向に輝度差を算出していく。(X,Y)=(1,0)~(2,0)で輝度差が負から0以上に転じている。そのため、直前画素である(X,Y)=(1,0)が谷と判定され、カウント値が初期化される。これと同様に、輝度差が0以上から負に転じている直前画素の(X,Y)=(4,0)が山と判定される。
【0061】
データバッファ224には、山と判定された画素の位置と輝度値とが格納される。さらに走査を進めることにより、(X,Y)=(8,0)で谷が判定される。ここで、カウント値、すなわち、谷から谷の幅は、7画素である。7画素は、閾値B以上を満足するため、直前で山と判定されデータバッファ224に格納されている(X,Y)=(4,0)がピーク候補と判定される。
【0062】
ピーク候補格納部227には、この山と判定された画素の位置と輝度値とが格納される。この時点では、星位置情報格納用RAM230には何もデータが保存されていない。そのため上述されたピーク判定部228によるステップS233~ステップS236の処理は行われずに、ピーク候補格納部227に格納された画素の位置と輝度値とが星位置情報格納用RAM230に保存される。
【0063】
このようなY=0での走査が終了した後、Y=1での走査が開始される。Y=1での走査では、(X,Y)=(1,1)が谷と判定され、(X,Y)=(4,1)が山と判定されて、山と判定された画素の位置と輝度値とがデータバッファ224に格納される。さらに(X,Y)=(7,1)で谷と判定される。カウント値は、6画素である。
【0064】
6画素は、閾値B以上であることを満足する。そのため、(X,Y)=(4,1)がピーク候補として判定される。ピーク候補格納部227には、この画素の位置と輝度値とが格納される。ここで、星位置情報格納用RAM230には、既に(X,Y)=(4,0)の位置と輝度値とが格納されている。そして、(X,Y)=(4,0)と、(X,Y)=(4,1)とは、範囲C内に存在することを満足する。そのため、(X,Y)=(4,0)の輝度値と、(X,Y)=(4,1)の輝度値とが比較される。(X,Y)=(4,1)の輝度値の方が、(X,Y)=(4,0)の輝度値よりも大きい。従って、星位置情報格納用RAM230は、(X,Y)=(4,0)の位置と輝度値とを破棄し、新たに(X,Y)=(4,1)の位置と輝度値とを保存する。
【0065】
このように星画像には、
山と判定される画素(基準画素)と、
山と判定される画素の前で輝度差が負から0以上に転じる直前画素、すなわち、谷と判定される画素(第1画素)と、
山と判定される画素の後に位置する画素であって輝度差が負から0以上に転じる直前画素、すなわち、谷と判定される画素(第2画素)と、
がある。
【0066】
この場合、星位置探査部220は、2つの谷と判定された画素の間隔(第1単位領域と第2単位領域との間隔)、すなわちカウント値が、閾値(閾値B)以上である場合(所定値を超えた場合)に、山と判定される画素の位置を、輝度が最大となるピーク候補の位置として記憶する。つまり、星画像に実際の星の画像が含まれ、かつ、その星のサイズが検出対象となる星のサイズであれば、その星についてのカウント値が閾値を超えるように、閾値が設定されている。
【0067】
ピーク候補となる2つの画素、すなわち、(X,Y)=(4,0)と、(X,Y)=(4,1)とがそれぞれ異なるタイミングで得られ、データバッファ224に一旦記憶される。(X,Y)=(4,0)と、(X,Y)=(4,1)とは、範囲C内に存在する。すなわち、一方のピーク候補のY方向の位置と他方のピーク候補のY方向の位置とが同じである場合、2つのピーク候補のうちの輝度が大きい方のピーク候補が記憶され、輝度が小さい方のピーク候補が消去される。本実施形態では、(X,Y)=(4,1)の位置と輝度値とが残され、(X,Y)=(4,0)の位置と輝度値とが破棄される。
【0068】
以上のような構成のスタートラッカ1は、隣り合う二つの画素の輝度差を用いて星位置を推定する。そのため、太陽が視野に入った場合または視野外太陽干渉角内に入った場合に撮影画像全体の輝度が上がったとしても、星位置推定は、画像全体の輝度上昇の影響を受けにくくなる。これにより、星位置推定精度が向上する。
【0069】
画像全体の輝度が上昇することに対する処置としては、画像全体、または、画像を複数ブロックに分割した状態で輝度値の平均を求め、その平均値を各画素の輝度値から減算する方法も考えられる。この方法は、必要数分の画素のデータを溜めなければならず、多くのメモリを必要とする。これに対し、スタートラッカ1は、走査前後の複数の画素のデータを保持するだけでピーク候補判定を実行できる。そのため、メモリの容量が削減可能となる。
【0070】
FPGA20は、前述したように本実施形態では輝度検出手段としての機能と、演算手段としての機能と、位置推定手段としての機能とを有するが、これに限定されず、たとえば、これらのうちの少なくとも1つの機能を有していればよい。
【0071】
スタートラッカ1は、記憶装置であるRAM40に各画素を順に記憶する。この記憶の間に、FPGA20による輝度の検出と、輝度差の演算と、星の実際の位置の推定とが順に行われる。これにより、たとえば画素の記憶と、輝度の検出と、輝度差の演算と、星の実際の位置の推定とを順に行う場合に比べて、星の実際の位置の推定までの時間が短縮される。これにより、宇宙機の姿勢の迅速な推定が可能となる。
【0072】
本実施形態においては、谷と判定された二つの画素の間隔(谷から谷の幅)がカウント値として閾値Bと比較されている。これによって、二つの谷の間に存在する山と判定された画素がピーク候補として判定される例が説明された。しかし、これは一例にすぎない。たとえば、山と判定された画素の前後に存在する複数の画素の輝度勾配が、実際の星による輝度勾配と相関があればよい。このような輝度勾配を基礎とした判定条件が設定されてもよい。このように、画素の間隔など、設定された判定条件に基づき、ピーク候補が判定されてもよい。
【0073】
<第2実施形態>
以下、図12および図13が参照されて、第2実施形態が説明される。前述された実施形態との相違点が中心に説明される。同様の事項の説明は省略される。第1実施形態と第2実施形態との間の相違点は、星位置探査部220のハードウェア構成である。それ以外の点は、第1実施形態と第2実施形態とで同様である。図12は、第2実施形態における星位置探査部220のハードウェア構成を示すブロック図である。
【0074】
図12が示すように、第2実施形態の星位置探査部220は、ピーク探査領域判定部229をさらに有する。ピーク探査領域判定部229は、データ処理部210から入力される画素の位置に関する情報に基づいて、注目画素(山と判定される画素)が、輝度のピークを探索されるピーク探査領域内にあるか否かを判定する。
【0075】
ピーク探査領域は、たとえば、FPGAコンフィグレーション時に予め設定されたものであってもよいし、CPU10からシステムバス70経由で設定されたものであってもよい。ピーク探査領域判定部229から判定信号(判定結果)は、ピーク候補判定部226に入力されて、ピーク候補判定に使用される。
【0076】
図13は、谷判定部225、ピーク候補判定部226およびピーク候補格納部227で実行される処理を示すフローチャートである。図13が示すように、ステップS241では、谷判定部225は、輝度差が入力された場合には、輝度差が負から0以上に転じたか否かを判定する。ステップS241での判定の結果、輝度差が負から0以上に転じたと判定された場合には、処理はステップS242に進む。一方、ステップS241での判定の結果、輝度差が負から0以上に転じていないと判定された場合には、処理はステップS245に進む。
【0077】
ステップS242では、谷判定部225は、輝度勾配幅計測部222の輝度勾配幅カウンタの値を確認して、そのカウント値が閾値B以上か否かを判定する。ステップS242での判定の結果、カウント値が閾値B以上であると判定された場合には、処理はステップS243に進む。一方、ステップS242での判定の結果、カウント値が閾値B以上ではないと判定された場合には、処理ステップS245に進む。
【0078】
ステップS243では、ピーク候補判定部226は、注目画素がピーク探査領域内にあるか否かを判定する。ステップS243での判定の結果、注目画素がピーク探査領域内にあると判定された場合には、処理はステップS244に進む。一方、ステップS243での判定の結果、注目画素がピーク探査領域内にないと判定された場合には、処理はステップS245に進む。
【0079】
ステップS244では、ピーク候補判定部226は、データバッファ224に保存されている山に対応する画素データを、輝度のピーク候補としてピーク候補格納部227に保存する。
【0080】
ステップS245では、ピーク候補判定部226は、ステップS244までの処理が1フレーム分完了したか否かを判定する。ステップS245での判定の結果、1フレーム分完了したと判定された場合には、処理は終了する。一方、ステップS245での判定の結果、1フレーム分完了していないと判定された場合には、処理はステップS241に戻り、それ以降のステップを順に実行する。
【0081】
太陽が視野角近傍に位置すると、撮像素子の光学系に取り付けられるバッフルの形状等の影響で撮影された画像の任意の領域に、迷光が写り込んでしまうことがある。迷光が星画像に写り込んだ場合、星ではない領域に輝度勾配ができてしまい、星位置誤検知の原因となる。そこで、本実施形態は、迷光が入る領域を予め把握することにより、その領域以外でピーク探査をして、迷光の影響を最小限に抑えることができる。
【0082】
図1によれば、FPGA20は、本実施形態の画像処理回路の一例である。しかし、FPGA20に実装されるすべての機能または一部の機能がCPU10によって実装されてもよい。また、FPGA20またはCPU10はプロセッサと呼ばれてもよい。
【0083】
スタートラッカ1は、撮像装置または画像処理装置の一例である。
【0084】
図1によれば、一つの撮像素子30と一つのメモリ40とが例示されているが、複数の撮像素子30と複数のメモリ40とが実装されてもよい。この場合、複数の撮像素子30は、それぞれ異なる視野または一部で重複した視野を有してもよい。FPGA20またはCPU10は、n個の撮像素子30によってそれぞれ取得されるn個の画像を順次にまたは並列に処理して、n個の画像のそれぞれにおいて異物または星の位置を推定してもよい。とりわけ、並列処理のシナリオでは、n個のFPGA20はそれぞれn個の画像を並列に処理してもよい。つまり、n個のFPGA20のうちi番目のFPGA20は、n個の画像のうちの、対応するi番目の画像を処理する。ここで、iはインデクスであり、1からnまでの整数である。
【0085】
上述された実施形態では星が撮像対象であり、星の位置が推定されている。しかし、これは一例にすぎない。撮像対象は、生産装置により生産された物品あってもよい。この場合、その物品に存在する異物の位置が推定されることになる。このように、ある程度の輝度を有する異物を検査する検査装置において、撮像素子30の視野内に、または、視野外であるが視野内に迷光を生じさせる高輝度の光源が存在することがある。本実施形態の技術思想は、このような異物検査においても適用可能である。つまり、本実施形態の技術思想は、ある程度の輝度を有する検出対象の位置を検出または推定する画像処理回路、画像処理装置、検査装置、情報処理装置、コンピュータ、および撮像装置において有用であろう。
【0086】
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13