JPH0956679A - 画像処理装置及び光学装置 - Google Patents
画像処理装置及び光学装置Info
- Publication number
- JPH0956679A JPH0956679A JP7232118A JP23211895A JPH0956679A JP H0956679 A JPH0956679 A JP H0956679A JP 7232118 A JP7232118 A JP 7232118A JP 23211895 A JP23211895 A JP 23211895A JP H0956679 A JPH0956679 A JP H0956679A
- Authority
- JP
- Japan
- Prior art keywords
- edge
- range
- center
- calculation
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Automatic Focus Adjustment (AREA)
- Eye Examination Apparatus (AREA)
Abstract
(57)【要約】
【課題】 不正確な瞳孔エッジの検出をしないようにし
ている。 【解決手段】 画像信号を差分する差分演算手段(#G
03)と、差分出力の重心位置を求めてエッジ位置を検
出するエッジ検出手段(#G09)と、重心位置を計算
する範囲を差分出力から求める計算範囲計算手段(#G
03〜#G06)とを備え、前記計算範囲と所定に計算
範囲を比較し、計算範囲が所定の計算範囲より広い場合
は、瞼の持ち上がりと瞳孔エッジの部分がつながった時
であり、この時は重心によるエッジ計算を行わないよう
にしている。
ている。 【解決手段】 画像信号を差分する差分演算手段(#G
03)と、差分出力の重心位置を求めてエッジ位置を検
出するエッジ検出手段(#G09)と、重心位置を計算
する範囲を差分出力から求める計算範囲計算手段(#G
03〜#G06)とを備え、前記計算範囲と所定に計算
範囲を比較し、計算範囲が所定の計算範囲より広い場合
は、瞼の持ち上がりと瞳孔エッジの部分がつながった時
であり、この時は重心によるエッジ計算を行わないよう
にしている。
Description
【0001】
【発明の属する技術分野】本発明は、観察者の眼球像の
特徴点を検出する視線検出装置に具備され、瞳孔のエッ
ジ位置を検出する画像処理装置及び該装置を具備したカ
メラ等の光学装置の改良に関するものである。
特徴点を検出する視線検出装置に具備され、瞳孔のエッ
ジ位置を検出する画像処理装置及び該装置を具備したカ
メラ等の光学装置の改良に関するものである。
【0002】
【従来の技術】従来より、撮影者が観察面上のどの位置
を観察しているかを検出する、いわゆる視線(視軸)を
検出する装置(例えばアイカメラ)が種々提供されてい
る。
を観察しているかを検出する、いわゆる視線(視軸)を
検出する装置(例えばアイカメラ)が種々提供されてい
る。
【0003】例えば特開平1−274736号公報にお
いては、光源からの平行光束を撮影者の眼球の前眼部へ
投射し、角膜からの反射光による角膜反射像と瞳孔の結
像位置を利用して注視点を求めている。また同公報にお
いて、注視点検出装置を一眼レフカメラに配設し撮影者
の注視点情報を用いて撮影レンズの自動焦点調節を行な
う例を開示している。
いては、光源からの平行光束を撮影者の眼球の前眼部へ
投射し、角膜からの反射光による角膜反射像と瞳孔の結
像位置を利用して注視点を求めている。また同公報にお
いて、注視点検出装置を一眼レフカメラに配設し撮影者
の注視点情報を用いて撮影レンズの自動焦点調節を行な
う例を開示している。
【0004】図11は視線検出の原理を説明する為の図
であり、同図において、15は撮影者の眼球、16は角
膜、17は虹彩である。
であり、同図において、15は撮影者の眼球、16は角
膜、17は虹彩である。
【0005】以下、この図を用いて視線の検出方法を説
明する。
明する。
【0006】光源13bより放射された赤外光は、観察
者の眼球15の角膜16を照射する。このとき、角膜1
6の表面で反射した赤外光の一部により形成される角膜
反射像d(虚像)は受光レンズ12により集光され、イ
メージセンサ14上の位置d´に結像する。同様に光源
13aにより放射された赤外光は、眼球15の角膜16
を照明する。このとき、角膜16の表面で反射した赤外
光の一部により形成された角膜反射像eは受光レンズ1
2により集光され、イメージセンサ14上の位置e´に
結像する。
者の眼球15の角膜16を照射する。このとき、角膜1
6の表面で反射した赤外光の一部により形成される角膜
反射像d(虚像)は受光レンズ12により集光され、イ
メージセンサ14上の位置d´に結像する。同様に光源
13aにより放射された赤外光は、眼球15の角膜16
を照明する。このとき、角膜16の表面で反射した赤外
光の一部により形成された角膜反射像eは受光レンズ1
2により集光され、イメージセンサ14上の位置e´に
結像する。
【0007】又、虹彩17の端部a,bからの光束は、
受光レンズ12を介してイメージセンサ14上の位置a
´,b´に該端部a,bの像を結像する。受光レンズ1
2の光軸に対する眼球15の光軸の回転角θが小さい場
合、虹彩17の端部a,bのx座標をxa,xbとする
と、瞳孔19の中心位置cの座標xcは、 xc≒(xa+xb)/2 と表される。
受光レンズ12を介してイメージセンサ14上の位置a
´,b´に該端部a,bの像を結像する。受光レンズ1
2の光軸に対する眼球15の光軸の回転角θが小さい場
合、虹彩17の端部a,bのx座標をxa,xbとする
と、瞳孔19の中心位置cの座標xcは、 xc≒(xa+xb)/2 と表される。
【0008】また、角膜反射像d及びeの中点のx座標
と角膜16の曲率中心oのx座標xoとは略一致する。
このため、角膜反射像の発生位置d,eのx座標をx
d,xe、角膜16の曲率中心oと瞳孔19の中心cま
での標準的な距離をOCとすると、眼球15の光軸15
aの回転角θxは OC*SINθx≒(xd+xe)/2−xc ………(1) の関係式を略満足する。このためイメージセンサ14上
に投影された眼球15の各特徴点(角膜反射像及び瞳孔
の中心)の位置を検出することにより、眼球15の光軸
15aの回転角θを求めることができる。
と角膜16の曲率中心oのx座標xoとは略一致する。
このため、角膜反射像の発生位置d,eのx座標をx
d,xe、角膜16の曲率中心oと瞳孔19の中心cま
での標準的な距離をOCとすると、眼球15の光軸15
aの回転角θxは OC*SINθx≒(xd+xe)/2−xc ………(1) の関係式を略満足する。このためイメージセンサ14上
に投影された眼球15の各特徴点(角膜反射像及び瞳孔
の中心)の位置を検出することにより、眼球15の光軸
15aの回転角θを求めることができる。
【0009】眼球15の光軸15aの回転角は(1)式
より、 β*OC*SINθx≒{(xpo−δx)−xic}*pitch ………(2) β*OC*SINθy≒{(ypo−δy)−yic}*pitch ………(3) と求められる。ここで、θxはz−x平面内での眼球光
軸の回転角、θyはy−z平面内での眼球光軸の回転角
である。(xpo,ypo)はイメージセンサ14上の
2個の角膜反射像の中点の座標、(xic,yic)は
イメージセンサ14上の瞳孔中心の座標である。pit
chはイメージセンサ14の画素ピッチである。また、
βは受光レンズ12に対する眼球15の位置により決ま
る結像倍率で、実質的には2個の角膜反射像の間隔の関
数として求められる。
より、 β*OC*SINθx≒{(xpo−δx)−xic}*pitch ………(2) β*OC*SINθy≒{(ypo−δy)−yic}*pitch ………(3) と求められる。ここで、θxはz−x平面内での眼球光
軸の回転角、θyはy−z平面内での眼球光軸の回転角
である。(xpo,ypo)はイメージセンサ14上の
2個の角膜反射像の中点の座標、(xic,yic)は
イメージセンサ14上の瞳孔中心の座標である。pit
chはイメージセンサ14の画素ピッチである。また、
βは受光レンズ12に対する眼球15の位置により決ま
る結像倍率で、実質的には2個の角膜反射像の間隔の関
数として求められる。
【0010】δx,δyは角膜反射像の中点の座標を補
正する補正項であり、撮影者の眼球を平行光ではなく発
散光にて照明していることにより生じる誤差を補正する
補正項、及び、δyに関しては、撮影者の眼球を下瞼の
方から発散光にて照明していることにより生じるオフセ
ット成分を補正する補正項も含まれている。
正する補正項であり、撮影者の眼球を平行光ではなく発
散光にて照明していることにより生じる誤差を補正する
補正項、及び、δyに関しては、撮影者の眼球を下瞼の
方から発散光にて照明していることにより生じるオフセ
ット成分を補正する補正項も含まれている。
【0011】次に、眼球回転角と注視点の座標の関係か
ら撮影者の注視点を求める。眼球回転角と注視点の座標
の関係は、撮影者の眼球光軸の回転角を(θx,θy)
とすると、撮影者の観察面上の注視点(x,y)は、カ
メラの姿勢が横位置の場合、 x=m*(θx+Δ) ………(4) y=m*θy ………(5) と求められる。ここで、x方向はカメラの姿勢が横位置
の場合の撮影者に対して水平方向、y方向はカメラの姿
勢が横位置の場合の撮影者に対して垂直方向を示してい
る。mは眼球の回転角からピント板上の座標に変換する
変換係数、Δは眼球光軸15aと視軸(注視点)との成
す角である。この時の変換係数m、Δには個人差がある
ため、この変換係数を含んだ形での個人差補正データを
予め求めておく必要がある。
ら撮影者の注視点を求める。眼球回転角と注視点の座標
の関係は、撮影者の眼球光軸の回転角を(θx,θy)
とすると、撮影者の観察面上の注視点(x,y)は、カ
メラの姿勢が横位置の場合、 x=m*(θx+Δ) ………(4) y=m*θy ………(5) と求められる。ここで、x方向はカメラの姿勢が横位置
の場合の撮影者に対して水平方向、y方向はカメラの姿
勢が横位置の場合の撮影者に対して垂直方向を示してい
る。mは眼球の回転角からピント板上の座標に変換する
変換係数、Δは眼球光軸15aと視軸(注視点)との成
す角である。この時の変換係数m、Δには個人差がある
ため、この変換係数を含んだ形での個人差補正データを
予め求めておく必要がある。
【0012】個人差補正データは、撮影者に所定の座標
を注視してもらい、そのときの眼球光軸の回転角を求め
る事で算出する事ができる。この様に個人差補正データ
を求めるための検出動作をキャリブレーションといい、
キャリブレーションにより求めた個人差補正データをキ
ャリブレーションデータという。
を注視してもらい、そのときの眼球光軸の回転角を求め
る事で算出する事ができる。この様に個人差補正データ
を求めるための検出動作をキャリブレーションといい、
キャリブレーションにより求めた個人差補正データをキ
ャリブレーションデータという。
【0013】観察面上(x1,0)を注視したときの眼
球の回転角を(θx1,0)、(x2,0)を注視した
ときの眼球の回転角を(θx2,0)とすると、以下の
式で個人差データを求める事ができる。
球の回転角を(θx1,0)、(x2,0)を注視した
ときの眼球の回転角を(θx2,0)とすると、以下の
式で個人差データを求める事ができる。
【0014】 m=(x1−x2)/(θx1−θx2) ………(6) Δ=(x2・θx1−x1・θx2)/(x1−x2) ………(7) 尚、個人差データの入力は、カメラの姿勢毎に入力する
ことが望ましい。
ことが望ましい。
【0015】このようにして、角膜反射像や瞳孔の位置
から撮影者の注視点を求めることができるが、センサ上
の眼球像から角膜反射像や瞳孔の位置などの特徴点を求
める方法は、特開平4−347133号等に提案されて
いる。
から撮影者の注視点を求めることができるが、センサ上
の眼球像から角膜反射像や瞳孔の位置などの特徴点を求
める方法は、特開平4−347133号等に提案されて
いる。
【0016】
【発明が解決しようとする課題】しかしながら、上記特
開平4−347133号等にて開示されている技術で
は、瞳孔のエッジ部分の近傍にまつ毛がかかった場合に
正しいエッジ位置を検出出来ない。
開平4−347133号等にて開示されている技術で
は、瞳孔のエッジ部分の近傍にまつ毛がかかった場合に
正しいエッジ位置を検出出来ない。
【0017】(発明の目的)本発明の目的は、瞳孔のエ
ッジ部分の近傍にまつ毛がかかった場合に、誤った瞳孔
エッジの検出を行うといったことを防止することのでき
る画像処理装置及び光学装置を提供することにある。
ッジ部分の近傍にまつ毛がかかった場合に、誤った瞳孔
エッジの検出を行うといったことを防止することのでき
る画像処理装置及び光学装置を提供することにある。
【0018】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、画像信号を差分する差分演算手段と、差
分出力の重心位置を求めてエッジ位置を検出するエッジ
検出手段と、重心位置を計算する範囲を差分出力から求
める計算範囲計算手段とを備え、前記計算範囲と所定の
計算範囲を比較し、計算範囲が所定の計算範囲より広い
場合、前記エッジ検出手段によるエッジ検出を行わない
ようにしている。
に、本発明は、画像信号を差分する差分演算手段と、差
分出力の重心位置を求めてエッジ位置を検出するエッジ
検出手段と、重心位置を計算する範囲を差分出力から求
める計算範囲計算手段とを備え、前記計算範囲と所定の
計算範囲を比較し、計算範囲が所定の計算範囲より広い
場合、前記エッジ検出手段によるエッジ検出を行わない
ようにしている。
【0019】
【発明の実施の形態】以下、本発明を図示の実施の形態
に基づいて詳細に説明する。
に基づいて詳細に説明する。
【0020】図1は本発明の実施の形態に係るカメラ本
体に内蔵された電気回路の要部ブロック図である。
体に内蔵された電気回路の要部ブロック図である。
【0021】カメラ本体に内蔵されたカメラ制御手段で
あるところのマイクロコンピュータの中央処理装置(以
下、CPUと称す)100には、視線検出回路101,
姿勢検知回路102,自動焦点検出回路103,信号入
力回路104,LCD駆動回路105,LED駆動回路
106,IRED駆動回路107が接続されている。ま
た、不図示ではあるが、視撮影レンズ内に配置された焦
点調節回路、絞り駆動回路とはマウント接点を介して信
号の伝達がなされる。
あるところのマイクロコンピュータの中央処理装置(以
下、CPUと称す)100には、視線検出回路101,
姿勢検知回路102,自動焦点検出回路103,信号入
力回路104,LCD駆動回路105,LED駆動回路
106,IRED駆動回路107が接続されている。ま
た、不図示ではあるが、視撮影レンズ内に配置された焦
点調節回路、絞り駆動回路とはマウント接点を介して信
号の伝達がなされる。
【0022】CPU100に付随した記憶手段としての
EEPROM100aは、フィルムカウンタその他の撮
影情報を記憶すると共にキャリブレーションを行って得
た個人差補正データを記憶する。
EEPROM100aは、フィルムカウンタその他の撮
影情報を記憶すると共にキャリブレーションを行って得
た個人差補正データを記憶する。
【0023】視線検出回路101は、イメージセンサ
(CCD−EYE)14からの眼球像の出力をCPU1
00に送信する。CPU100はイメージセンサ14か
らの眼球像信号をCPU内部のA/D変換手段によりA
/D変換し、この像情報を視線検出に必要な眼球像の各
特徴点を所定のアルゴリズムに従って抽出し、さらに各
特徴点の位置から撮影者の眼球の回転角を算出する。
(CCD−EYE)14からの眼球像の出力をCPU1
00に送信する。CPU100はイメージセンサ14か
らの眼球像信号をCPU内部のA/D変換手段によりA
/D変換し、この像情報を視線検出に必要な眼球像の各
特徴点を所定のアルゴリズムに従って抽出し、さらに各
特徴点の位置から撮影者の眼球の回転角を算出する。
【0024】姿勢検知回路102は、複数のペアのフォ
トセンサとLED(HV1,HV2)及び重力により可
動な遮蔽物から成り、重力により遮蔽物が動きフォトセ
ンサの出力が変化することにより姿勢を検知する。該フ
ォトセンサは互いに90°程度の角度で配置されそれぞ
れ水平軸からも角度をもって配置される。
トセンサとLED(HV1,HV2)及び重力により可
動な遮蔽物から成り、重力により遮蔽物が動きフォトセ
ンサの出力が変化することにより姿勢を検知する。該フ
ォトセンサは互いに90°程度の角度で配置されそれぞ
れ水平軸からも角度をもって配置される。
【0025】自動焦点検出回路103は複数のラインセ
ンサから得た光電変換電圧をCPU100に送り、CP
U100では内蔵されたA/D変換装置によってライン
センサ信号を順次A/D変換し、所定の演算を行って焦
点検出を行う。
ンサから得た光電変換電圧をCPU100に送り、CP
U100では内蔵されたA/D変換装置によってライン
センサ信号を順次A/D変換し、所定の演算を行って焦
点検出を行う。
【0026】信号入力回路104は、各種スイッチから
の信号入力を行い、スイッチの状態が変化するとCPU
100に割り込み信号を発生させる。
の信号入力を行い、スイッチの状態が変化するとCPU
100に割り込み信号を発生させる。
【0027】SW−1はレリーズ釦の第1ストロークで
ONし、測光,AF,視線検出動作を開始するスイッ
チ、SW−2はレリーズ釦の第2ストロークでONする
レリーズスイッチ、SW−MDIALはカメラの各種撮
影モードの他、キャリブレーションモードやカメラのロ
ックポジションをを選択するモードダイアルである。S
W−CALDELは個人差補正データ消去スイッチであ
る。SW−DIAL1とSW−DIAL2は電子ダイヤ
ルスイッチで、信号入力回路104のアップダウンカウ
ンタに入力され、ここで前記電子ダイヤルの回転クリッ
ク量をカウントする。
ONし、測光,AF,視線検出動作を開始するスイッ
チ、SW−2はレリーズ釦の第2ストロークでONする
レリーズスイッチ、SW−MDIALはカメラの各種撮
影モードの他、キャリブレーションモードやカメラのロ
ックポジションをを選択するモードダイアルである。S
W−CALDELは個人差補正データ消去スイッチであ
る。SW−DIAL1とSW−DIAL2は電子ダイヤ
ルスイッチで、信号入力回路104のアップダウンカウ
ンタに入力され、ここで前記電子ダイヤルの回転クリッ
ク量をカウントする。
【0028】LCD駆動回路105はファインダ内LC
D24及びモニタ用LCD42に各種情報を表示する他
に、不図示のブザーを駆動し、ブザー音を発生させる。
D24及びモニタ用LCD42に各種情報を表示する他
に、不図示のブザーを駆動し、ブザー音を発生させる。
【0029】LED駆動回路106はファインダー内の
測距点をスーパーインポーズ照明するためのLED21
(LED−L2,LED−L1,LED−C,LED−
R1,LED−R2)を点灯させるための回路である。
LED−L2,LED−L1,LED−C,LED−R
1,LED−R2はそれぞれファインダ内の焦点検出マ
ークFP−L2,FP−L1,FP−C,FP−R1,
FP−R2に対応しており、LED21を点灯させるこ
とによりファインダ内の焦点検出マークが照明される。
測距点をスーパーインポーズ照明するためのLED21
(LED−L2,LED−L1,LED−C,LED−
R1,LED−R2)を点灯させるための回路である。
LED−L2,LED−L1,LED−C,LED−R
1,LED−R2はそれぞれファインダ内の焦点検出マ
ークFP−L2,FP−L1,FP−C,FP−R1,
FP−R2に対応しており、LED21を点灯させるこ
とによりファインダ内の焦点検出マークが照明される。
【0030】IRED駆動回路107は、撮影者の眼球
を赤外光で照明するための赤外LED(IRED−0,
IRED−1,IRED−2,IRED−3,IRED
−4,IRED−5,IRED−6,IRED−7)を
点灯させるための回路である。この回路には過電流を防
止する為の回路や長時間の通電による事故を防止するた
めの安全回路が組み込まれている。
を赤外光で照明するための赤外LED(IRED−0,
IRED−1,IRED−2,IRED−3,IRED
−4,IRED−5,IRED−6,IRED−7)を
点灯させるための回路である。この回路には過電流を防
止する為の回路や長時間の通電による事故を防止するた
めの安全回路が組み込まれている。
【0031】IREDは2つがペアで使用され、眼球に
対して下側から照明される。具体的なIREDの位置を
示した図を図2に示す。
対して下側から照明される。具体的なIREDの位置を
示した図を図2に示す。
【0032】カメラの姿勢が横位置の場合、裸眼用とし
てIRED−0,IRED−1が、又眼鏡用としてIR
ED−4,IRED−5が、それぞれペアとして使用さ
れ、グリップ上の縦位置では、裸眼用としてIRED−
3,IRED−0が、又眼鏡用としてIRED−7,I
RED−4が、それぞれペアとして使用される。また、
グリップ下の縦位置では、裸眼用としてIRED−1,
IRED−2が、又眼鏡用としてIRED−5,IRE
D−6が、それぞれペアとして使用される。つまり、ど
の姿勢においても裸眼の場合は間隔の狭いIREDペア
が使用され、眼鏡や眼球の距離が遠い場合は間隔の広い
IREDペアが使用される。
てIRED−0,IRED−1が、又眼鏡用としてIR
ED−4,IRED−5が、それぞれペアとして使用さ
れ、グリップ上の縦位置では、裸眼用としてIRED−
3,IRED−0が、又眼鏡用としてIRED−7,I
RED−4が、それぞれペアとして使用される。また、
グリップ下の縦位置では、裸眼用としてIRED−1,
IRED−2が、又眼鏡用としてIRED−5,IRE
D−6が、それぞれペアとして使用される。つまり、ど
の姿勢においても裸眼の場合は間隔の狭いIREDペア
が使用され、眼鏡や眼球の距離が遠い場合は間隔の広い
IREDペアが使用される。
【0033】スイッチSW1が押されると、所定の動作
を実行した後、視線メインフローがコールされる。
を実行した後、視線メインフローがコールされる。
【0034】図3のフローチャートを使って、この視線
メインフローの説明を行う。このフローは、視線検出動
作の全体の説明を行うフローチャートである。
メインフローの説明を行う。このフローは、視線検出動
作の全体の説明を行うフローチャートである。
【0035】サブルーチン「視線メイン」がコールされ
ると、ステップ#M01からプログラムを実行してい
く。
ると、ステップ#M01からプログラムを実行してい
く。
【0036】視線検出ルーチンは、必ずしも1回実行さ
れただけで視線位置を出力するわけではなく、複数回実
行し(何回か制御方法を変えて試してみる)、最終的に
注視点の位置を検出するようになっている。
れただけで視線位置を出力するわけではなく、複数回実
行し(何回か制御方法を変えて試してみる)、最終的に
注視点の位置を検出するようになっている。
【0037】まず、設定されたキャリブレーション番号
をチェックし、キャリブレーション番号に対応した個人
差補正データをEEPROM100aから読み込む(ス
テップ#M02)。正しくないキャリブレーション番号
や、キャリブレーション番号が設定されていない場合
(視線がOFFになっている場合も含む)のチェックも
行い(ステップ#M03)、正常でなければ(ステップ
#M09)へ分岐し、リターンする。
をチェックし、キャリブレーション番号に対応した個人
差補正データをEEPROM100aから読み込む(ス
テップ#M02)。正しくないキャリブレーション番号
や、キャリブレーション番号が設定されていない場合
(視線がOFFになっている場合も含む)のチェックも
行い(ステップ#M03)、正常でなければ(ステップ
#M09)へ分岐し、リターンする。
【0038】キャリブレーション番号が正しく設定され
ていて、個人差補正データが読み込めたら、視線検出パ
ラメータの初期化を行う(ステップ#M04)。ここで
は、視線検出状態を示すパラメータの初期化を、繰り返
しサブルーチン「視線メイン」が実行される場合の初回
にのみ行う。
ていて、個人差補正データが読み込めたら、視線検出パ
ラメータの初期化を行う(ステップ#M04)。ここで
は、視線検出状態を示すパラメータの初期化を、繰り返
しサブルーチン「視線メイン」が実行される場合の初回
にのみ行う。
【0039】次に、視線検出用エリアセンサの蓄積をサ
ブルーチン「YBASIS」で行う(ステップ#M0
5)。このサブルーチンの中では、眼球を照明するLE
Dとその駆動電流の決定を行い、センサの予備蓄積を行
って、視線検出を行うときの蓄積制御を決定する。決定
した蓄積制御方法で眼球像の画像データを得る。
ブルーチン「YBASIS」で行う(ステップ#M0
5)。このサブルーチンの中では、眼球を照明するLE
Dとその駆動電流の決定を行い、センサの予備蓄積を行
って、視線検出を行うときの蓄積制御を決定する。決定
した蓄積制御方法で眼球像の画像データを得る。
【0040】次に、画像データの特徴点抽出のためのパ
ラメータの初期化を行う(ステップ#M06)。そし
て、蓄積されたデータを読み出しつつ特徴点を抽出する
サブルーチン「Read_Detect」を実行する
(ステップ#M07)。このサブルーチンの内部動作は
後で詳しく説明する。
ラメータの初期化を行う(ステップ#M06)。そし
て、蓄積されたデータを読み出しつつ特徴点を抽出する
サブルーチン「Read_Detect」を実行する
(ステップ#M07)。このサブルーチンの内部動作は
後で詳しく説明する。
【0041】センサの読み出し及び特徴点抽出が終了す
ると、検出された特徴点から注視点位置の計算をサブル
ーチン「P_Process」で行う(ステップ#M0
8)。ここでは、「Read_Detect」で求めた
瞳孔エッジ座標から、瞳孔円の中心座標、及び、照明光
の角膜反射像(プルキンエ像:P像)の座標を使って所
定の計算式から眼球の回転角を求める。眼球の回転角が
検出できたら、個人差補正データを用いてその人の注視
する点を計算する。
ると、検出された特徴点から注視点位置の計算をサブル
ーチン「P_Process」で行う(ステップ#M0
8)。ここでは、「Read_Detect」で求めた
瞳孔エッジ座標から、瞳孔円の中心座標、及び、照明光
の角膜反射像(プルキンエ像:P像)の座標を使って所
定の計算式から眼球の回転角を求める。眼球の回転角が
検出できたら、個人差補正データを用いてその人の注視
する点を計算する。
【0042】最後にプログラムをリターンする(ステッ
プ#M10)。
プ#M10)。
【0043】1回で注視点が求められない場合は繰り返
し「視線メイン」がコールされ、別の制御方法(照明,
蓄積制御方法,演算パラメータを変えて行う)で視線検
出を行う。
し「視線メイン」がコールされ、別の制御方法(照明,
蓄積制御方法,演算パラメータを変えて行う)で視線検
出を行う。
【0044】次に、上記ステップ#M07において実行
されるサブルーチン「Read_Detect」につい
て、図4のフローチャートにより説明する。サブルーチ
ン「Read_Detect」は、センサの蓄積が終了
した後にコールされる。
されるサブルーチン「Read_Detect」につい
て、図4のフローチャートにより説明する。サブルーチ
ン「Read_Detect」は、センサの蓄積が終了
した後にコールされる。
【0045】サブルーチン「Read_Detect」
がコールされると、ステップ#R01から実行してい
く。
がコールされると、ステップ#R01から実行してい
く。
【0046】まず、センサのブロック読み機能を使っ
て、センサ全体を荒くみる(ステップ#R02)。セン
サのブロック読み機能とは、センサの複数の画素をまと
めたデータを出力する機能で、センサ出力を「4×4」
の16画素を1つのブロックにして出力することができ
る(4×4の平均値を出力)。
て、センサ全体を荒くみる(ステップ#R02)。セン
サのブロック読み機能とは、センサの複数の画素をまと
めたデータを出力する機能で、センサ出力を「4×4」
の16画素を1つのブロックにして出力することができ
る(4×4の平均値を出力)。
【0047】こうすることにより、例えば「100×7
0」画素のセンサ出力を、「25×18」ブロックのデ
ータで全体の画像を荒く見ることができる。データ数を
少なくすることで「100×70」画素のメモリが確保
できなくても、「25×18」画素分のメモリを確保す
る事はカメラのような機器の組み込みマイコンでも可能
である。また、ブロック出力がハード的に得られないセ
ンサでもソフト的に平均をもとめデータ数を減らすこと
で同等の演算を行うことができる。また、必ずしも平均
値である必要はなく、全センサ画素を間引いて使っても
よい。
0」画素のセンサ出力を、「25×18」ブロックのデ
ータで全体の画像を荒く見ることができる。データ数を
少なくすることで「100×70」画素のメモリが確保
できなくても、「25×18」画素分のメモリを確保す
る事はカメラのような機器の組み込みマイコンでも可能
である。また、ブロック出力がハード的に得られないセ
ンサでもソフト的に平均をもとめデータ数を減らすこと
で同等の演算を行うことができる。また、必ずしも平均
値である必要はなく、全センサ画素を間引いて使っても
よい。
【0048】次に、ブロック読み出しした画像の最大
値,最小値,平均値を求める(ステップ#R03)。最
大値はプルキンエ像を求める時に使用し、最小値は瞳孔
を探すときに使用する。平均値は、画像全体の明るさの
データとして使用する。
値,最小値,平均値を求める(ステップ#R03)。最
大値はプルキンエ像を求める時に使用し、最小値は瞳孔
を探すときに使用する。平均値は、画像全体の明るさの
データとして使用する。
【0049】ブロック像の最低値と所定の閾値を使って
瞬きの検知を行う(ステップ#R04)。瞬きの最中は
視線検出不能なのでその処理を行う。例えば、今回は視
線検出を中止して次回全く同じ制御で視線検出を行なっ
たりする。
瞬きの検知を行う(ステップ#R04)。瞬きの最中は
視線検出不能なのでその処理を行う。例えば、今回は視
線検出を中止して次回全く同じ制御で視線検出を行なっ
たりする。
【0050】次に、読み出し範囲の初期化を行う。通常
全体範囲をはじめに指定しておく(ステップ#R0
5)。センサをカメラに取り付けた状態で周辺がけられ
てしまうような場合には、その部分を除いたけられない
エリアを指定する。
全体範囲をはじめに指定しておく(ステップ#R0
5)。センサをカメラに取り付けた状態で周辺がけられ
てしまうような場合には、その部分を除いたけられない
エリアを指定する。
【0051】次に、ブロックデータから求めた平均輝度
(BlkAve)と閾値を比較する(ステップ#R0
6)。平均輝度が低ければステップ#R08へ進み、ブ
ロックデータによる瞳孔位置推定を行わない。これは、
全体の輝度が低いとセンサの周辺部分が低くなり、必ず
しも瞳孔位置が最低輝度とはならなくなってしまうた
め、最低輝度を使って瞳孔位置推定を行うと正しく瞳孔
位置を推定することができないからである。
(BlkAve)と閾値を比較する(ステップ#R0
6)。平均輝度が低ければステップ#R08へ進み、ブ
ロックデータによる瞳孔位置推定を行わない。これは、
全体の輝度が低いとセンサの周辺部分が低くなり、必ず
しも瞳孔位置が最低輝度とはならなくなってしまうた
め、最低輝度を使って瞳孔位置推定を行うと正しく瞳孔
位置を推定することができないからである。
【0052】平均輝度が閾値より高ければ、サブルーチ
ン「瞳孔位置推定」をコールして、瞳孔位置の推定を行
う(ステップ#R07)。
ン「瞳孔位置推定」をコールして、瞳孔位置の推定を行
う(ステップ#R07)。
【0053】そして、サブルーチン「読み出し&逐次処
理」をコールして、決定した領域内のセンサ読み出し及
び逐次処理で特徴点抽出を行い(ステップ#R08)、
リターンする(ステップ#R09)。
理」をコールして、決定した領域内のセンサ読み出し及
び逐次処理で特徴点抽出を行い(ステップ#R08)、
リターンする(ステップ#R09)。
【0054】次に、図5のフローチャートを使って、サ
ブルーチン「読み出し&逐次処理」の説明を行う。
ブルーチン「読み出し&逐次処理」の説明を行う。
【0055】サブルーチン「読み出し&逐次処理」がコ
ールされると(ステップ#x01)、まずセンサに読み
出し開始通信を行う(ステップ#x02)。次に、セン
サ出力をA/D変換する為にA/D変換の初期化を行う
(ステップ#x03)。次いで、逐次計算を行うための
パラメータの初期化や、制限された領域だけを読み出す
ためのパルス数の設定を行う(ステップ#x04)。
ールされると(ステップ#x01)、まずセンサに読み
出し開始通信を行う(ステップ#x02)。次に、セン
サ出力をA/D変換する為にA/D変換の初期化を行う
(ステップ#x03)。次いで、逐次計算を行うための
パラメータの初期化や、制限された領域だけを読み出す
ためのパルス数の設定を行う(ステップ#x04)。
【0056】次に、これから読む水平ラインが読み出す
領域を含むかどうかを判定し(ステップ#x05)、読
み出し領域外ならステップ#x19へ分岐する。そし
て、このステップ#x19では、水平ラインを1ライン
読み飛ばすための、水平ライン読み飛ばしパルスを出力
する。このパルスがセンサに送られると、センサは水平
の1ラインの読み出しを行わない。
領域を含むかどうかを判定し(ステップ#x05)、読
み出し領域外ならステップ#x19へ分岐する。そし
て、このステップ#x19では、水平ラインを1ライン
読み飛ばすための、水平ライン読み飛ばしパルスを出力
する。このパルスがセンサに送られると、センサは水平
の1ラインの読み出しを行わない。
【0057】上記ステップ#x05で、これから読む水
平ラインが読み出す領域を含んでいる場合、ステップ#
x06へ分岐し、ここでは1ラインの読み出しを行う。
まず、1画素毎の読み出しパルスを送り、センサからの
出力をA/D変換し、所定のRAMに一時的に格納す
る。読み出す水平ラインの中でも指定された領域外の部
分はAD変換を行わず、読み出しパルスを高速に出力す
ることによって、指定された領域のデータだけを短時間
で得ることができる。
平ラインが読み出す領域を含んでいる場合、ステップ#
x06へ分岐し、ここでは1ラインの読み出しを行う。
まず、1画素毎の読み出しパルスを送り、センサからの
出力をA/D変換し、所定のRAMに一時的に格納す
る。読み出す水平ラインの中でも指定された領域外の部
分はAD変換を行わず、読み出しパルスを高速に出力す
ることによって、指定された領域のデータだけを短時間
で得ることができる。
【0058】これらの動作はソフト的にタイミングを作
って動作させる以外にも、ハード的にパルス出力、AD
変換、データ格納を行う様な構成にしても良い。この場
合、A/D変換やパルス出力にソフトが介在する必要が
ないため、その間、ソフトは特徴点の抽出を行うことが
できる。
って動作させる以外にも、ハード的にパルス出力、AD
変換、データ格納を行う様な構成にしても良い。この場
合、A/D変換やパルス出力にソフトが介在する必要が
ないため、その間、ソフトは特徴点の抽出を行うことが
できる。
【0059】次に、カメラの位置が縦位置かどうかを判
定し(ステップ#x07)、縦位置なら読み出しライン
数をAレジスタに入れ(ステップ#x08)、横位置な
ら(縦位置でないなら)今まで検出した瞳孔エッジの総
数を計算し、Aレジスタに格納する(ステップ#x0
9)。次に、Aレジスタが0かどうかを判定し(ステッ
プ#x11)、0で無いならステップ#x12へ分岐
し、サブルーチン「P像検出」を実行する(ステップ#
x12)。
定し(ステップ#x07)、縦位置なら読み出しライン
数をAレジスタに入れ(ステップ#x08)、横位置な
ら(縦位置でないなら)今まで検出した瞳孔エッジの総
数を計算し、Aレジスタに格納する(ステップ#x0
9)。次に、Aレジスタが0かどうかを判定し(ステッ
プ#x11)、0で無いならステップ#x12へ分岐
し、サブルーチン「P像検出」を実行する(ステップ#
x12)。
【0060】カメラ位置が縦位置の場合、少なくとも1
ライン以上センサの読み出しが終了してから「P像検
出」を行うようにしている。また、横位置の場合は、照
明位置の関係から瞳孔位置よりP像の方が下に成ること
が判っているので、無駄な演算を省くために瞳孔のエッ
ジが少なくとも1つ検出されてからP像の検出を行うよ
うにしている。
ライン以上センサの読み出しが終了してから「P像検
出」を行うようにしている。また、横位置の場合は、照
明位置の関係から瞳孔位置よりP像の方が下に成ること
が判っているので、無駄な演算を省くために瞳孔のエッ
ジが少なくとも1つ検出されてからP像の検出を行うよ
うにしている。
【0061】次に、瞳孔エッジを検出するのに充分なラ
イン数の読み出しが終了しているかを判定し(ステップ
#x13)、十分ならステップ#x14に分岐する。そ
して、このステップ#x14では、サブルーチン「瞳孔
エッジ検出」をコールし、瞳孔エッジを検出する。
イン数の読み出しが終了しているかを判定し(ステップ
#x13)、十分ならステップ#x14に分岐する。そ
して、このステップ#x14では、サブルーチン「瞳孔
エッジ検出」をコールし、瞳孔エッジを検出する。
【0062】画像データはメモリの制約上から数ライン
分記憶できるだけで、その分のライン数が記憶されたら
充分なライン数があると判定する。水平方向にのみ瞳孔
エッジを検出する場合(即ち、瞳孔の左右方向のエッジ
だけを検出する場合)は、1ラインでも十分である。瞳
孔のエッジは、それまで読み出したセンサ出力の最低値
を基準として計算する。
分記憶できるだけで、その分のライン数が記憶されたら
充分なライン数があると判定する。水平方向にのみ瞳孔
エッジを検出する場合(即ち、瞳孔の左右方向のエッジ
だけを検出する場合)は、1ラインでも十分である。瞳
孔のエッジは、それまで読み出したセンサ出力の最低値
を基準として計算する。
【0063】次に、1ライン分のデータ読み込みが終了
するまで待ち、読み込んだ画像データを一時的に格納し
たRAMから計算用のRAMに移しかえる(ステップ#
x15)。上記ステップ#x06でソフト的に読み込み
が終了している場合はこの動作は必要ないが、ハード的
にセンサの読み込みを行っている場合はここでセンサ読
み込みのチェックを行う。
するまで待ち、読み込んだ画像データを一時的に格納し
たRAMから計算用のRAMに移しかえる(ステップ#
x15)。上記ステップ#x06でソフト的に読み込み
が終了している場合はこの動作は必要ないが、ハード的
にセンサの読み込みを行っている場合はここでセンサ読
み込みのチェックを行う。
【0064】次に、サブルーチン「最低輝度検出」を実
行する(ステップ#x16)。最低輝度は、瞳孔を検出
するときに使用するが、センサ出力が1ライン読み込ま
れる毎に検出を行い、1ライン毎に更新していく。
行する(ステップ#x16)。最低輝度は、瞳孔を検出
するときに使用するが、センサ出力が1ライン読み込ま
れる毎に検出を行い、1ライン毎に更新していく。
【0065】1ラインの中で領域外の部分の残りの空送
りパルスを出力する(ステップ#x17)。ハード的に
センサ読み出しを行う場合は領域外空送りパルスを送る
必要がある。
りパルスを出力する(ステップ#x17)。ハード的に
センサ読み出しを行う場合は領域外空送りパルスを送る
必要がある。
【0066】次に、読み出したライン数をカウントアッ
プする(ステップ#x18)。ここで、カウントアップ
するのは制限された領域内の読み出したライン数をカウ
ントする。
プする(ステップ#x18)。ここで、カウントアップ
するのは制限された領域内の読み出したライン数をカウ
ントする。
【0067】次に、センサに送った駆動パルス数(1ラ
イン分に対応)をカウントアップする(ステップ#x2
0)。そして、カウントがセンサの水平ライン数になっ
たかどうか判定し(ステップ#x21)、なっていなけ
ればステップ#x05に戻り、センサ読み出しを繰り返
す。
イン分に対応)をカウントアップする(ステップ#x2
0)。そして、カウントがセンサの水平ライン数になっ
たかどうか判定し(ステップ#x21)、なっていなけ
ればステップ#x05に戻り、センサ読み出しを繰り返
す。
【0068】指定された領域のセンサ読み出しが終了し
ても、センサの水平ライン数分の読み出しパルスを送る
必要があるため、ステップ#x05に戻り、読み出しを
繰り返す。この場合、読み出しの空送りパルスのみをス
テップ#x19にて出力する。
ても、センサの水平ライン数分の読み出しパルスを送る
必要があるため、ステップ#x05に戻り、読み出しを
繰り返す。この場合、読み出しの空送りパルスのみをス
テップ#x19にて出力する。
【0069】センサの読み出しが終了すると、このサブ
ルーチンをリターンする(ステップ#x22)。
ルーチンをリターンする(ステップ#x22)。
【0070】次に、図5のステップ#x14にて実行さ
れるサブルーチン「瞳孔エッジ検出」について、図6の
フローチャートにより説明する。
れるサブルーチン「瞳孔エッジ検出」について、図6の
フローチャートにより説明する。
【0071】サブルーチン「瞳孔エッジ検出」がコール
されると(ステップ#D01)、まず、エッジ検出用の
変数の初期化を行う(ステップ#D02)。次に、瞳孔
エッジを検出する範囲を計算し、所定のRAMに設定す
る(ステップ#D03)。次に、サブルーチン「水平エ
ッジ検出」をコールして水平エッジの検出を行う(ステ
ップ#D04)。
されると(ステップ#D01)、まず、エッジ検出用の
変数の初期化を行う(ステップ#D02)。次に、瞳孔
エッジを検出する範囲を計算し、所定のRAMに設定す
る(ステップ#D03)。次に、サブルーチン「水平エ
ッジ検出」をコールして水平エッジの検出を行う(ステ
ップ#D04)。
【0072】そして、現在演算している水平ラインで最
低輝度が更新されたか判定し(ステップ#D05)、更
新していればステップ#D06へ分岐し、サブルーチン
「垂直エッジ検出」をコールし、垂直エッジの検出を行
う。
低輝度が更新されたか判定し(ステップ#D05)、更
新していればステップ#D06へ分岐し、サブルーチン
「垂直エッジ検出」をコールし、垂直エッジの検出を行
う。
【0073】演算が終了するとこのサブルーチンをリタ
ーンする(ステップ#D07)。
ーンする(ステップ#D07)。
【0074】次に、上記図6のステップ#D04にて実
行されるサブルーチン「水平エッジ検出」について、図
7のフローチャートにより説明する。
行されるサブルーチン「水平エッジ検出」について、図
7のフローチャートにより説明する。
【0075】サブルーチン「水平エッジ検出」がコール
されると(ステップ#H01)、図6のステップ#D0
3で設定した演算範囲内で、センサ画素出力が閾値EY
EMINLVLより小さいかを比較する。条件を満たし
ていなければステップ#H03へ進み、jをカウントア
ップし、それが計算範囲内なら再びステップ#H02へ
戻り、比較を繰り返す。図8(a)のim(jA)から
同図右側に検出していく。
されると(ステップ#H01)、図6のステップ#D0
3で設定した演算範囲内で、センサ画素出力が閾値EY
EMINLVLより小さいかを比較する。条件を満たし
ていなければステップ#H03へ進み、jをカウントア
ップし、それが計算範囲内なら再びステップ#H02へ
戻り、比較を繰り返す。図8(a)のim(jA)から
同図右側に検出していく。
【0076】jをカウントアップしながら、im(j)
と閾値EYEMINLVLを比較し、im(j)が閾値
より小さくなったらステップ#H04へ分岐する。図8
(b)のCでim(j)が閾値EYEMINLVLより
小さくなる。ステップ#H04において、今検出中の水
平ラインの左エッジが未発見ならステップ#H05へ分
岐する。左エッジが検出されていればステップ#H13
へ分岐し、右エッジの探査を行う。
と閾値EYEMINLVLを比較し、im(j)が閾値
より小さくなったらステップ#H04へ分岐する。図8
(b)のCでim(j)が閾値EYEMINLVLより
小さくなる。ステップ#H04において、今検出中の水
平ラインの左エッジが未発見ならステップ#H05へ分
岐する。左エッジが検出されていればステップ#H13
へ分岐し、右エッジの探査を行う。
【0077】まず、左エッジが未発見でステップ#H0
5へ分岐した場合を説明する。
5へ分岐した場合を説明する。
【0078】ここで、この水平ラインにおいて、閾値E
YEMINLVLより小さい画素があったかどうかをフ
ラグ「MinDetect」で判定する。未発見ならフ
ラグ「MinDetect」をセットする(ステップ#
H06)。次に、位置jをjstに記憶しておく(ステ
ップ#H07)。図8(b)のCの位置のjをjstに
保存する。
YEMINLVLより小さい画素があったかどうかをフ
ラグ「MinDetect」で判定する。未発見ならフ
ラグ「MinDetect」をセットする(ステップ#
H06)。次に、位置jをjstに記憶しておく(ステ
ップ#H07)。図8(b)のCの位置のjをjstに
保存する。
【0079】次に、これがエッジ条件を満たすか判定し
(ステップ#H08)、満たさなければjをカウントダ
ウンして(ステップ#H09)、このjが計算範囲内か
を判定する(ステップ#H10)。計算範囲内なら再び
ステップ#H08へ戻り、エッジ条件を満たすかどうか
判定する。計算範囲外になったらステップ#H03へ分
岐する。
(ステップ#H08)、満たさなければjをカウントダ
ウンして(ステップ#H09)、このjが計算範囲内か
を判定する(ステップ#H10)。計算範囲内なら再び
ステップ#H08へ戻り、エッジ条件を満たすかどうか
判定する。計算範囲外になったらステップ#H03へ分
岐する。
【0080】例えば、左エッジのエッジ条件として、次
のようなものがある。
のようなものがある。
【0081】 im(j−2)−im(j)>EDGETHR かつ im(j−3)−im(j−1)>EDGETHR 但し、EDGETHR=10 エッジ条件はこれに限定されるものではなく別の条件で
もよい。
もよい。
【0082】図8(c)でCから左側にエッジ条件を満
たすか、演算範囲外になるまで探査していく。jをカウ
ントダウンして、エッジ条件を満たしたなら〔図8
(c)エッジ検出(画素単位)の部分〕、ステップ#H
08からステップ#H11へ分岐し、サブルーチン「左
エッジ重心演算」をコールし、エッジ位置を重心演算を
用いて正確に計算する。
たすか、演算範囲外になるまで探査していく。jをカウ
ントダウンして、エッジ条件を満たしたなら〔図8
(c)エッジ検出(画素単位)の部分〕、ステップ#H
08からステップ#H11へ分岐し、サブルーチン「左
エッジ重心演算」をコールし、エッジ位置を重心演算を
用いて正確に計算する。
【0083】次に、右エッジを探査するために、上記ス
テップ#H07で記憶したjstをjに代入し(ステッ
プ#H12)、最初に閾値EYEMINLVLより小さ
くなった位置に戻す。その後は右エッジの探査を行う。
テップ#H07で記憶したjstをjに代入し(ステッ
プ#H12)、最初に閾値EYEMINLVLより小さ
くなった位置に戻す。その後は右エッジの探査を行う。
【0084】上記ステップ#H04で左エッジが発見さ
れた後の場合、又はステップ#H08〜ステップ#H1
2で左エッジが検出された場合、ステップ#H13へ進
んでくる。ここから、右エッジの探査を行う、まず、右
エッジ条件を満たすか判定し(ステップ#H13)、満
たさなければステップ#H14へ進み、jをカウントア
ップする。カウントアップした値が計算範囲外でないか
判定し(ステップ#H15)、範囲内なら再びステップ
#H13へ戻り、右エッジ条件の判定を行う。図8
(c)でCから左側にエッジ条件を満たすか、演算範囲
外になるまで探査していく。
れた後の場合、又はステップ#H08〜ステップ#H1
2で左エッジが検出された場合、ステップ#H13へ進
んでくる。ここから、右エッジの探査を行う、まず、右
エッジ条件を満たすか判定し(ステップ#H13)、満
たさなければステップ#H14へ進み、jをカウントア
ップする。カウントアップした値が計算範囲外でないか
判定し(ステップ#H15)、範囲内なら再びステップ
#H13へ戻り、右エッジ条件の判定を行う。図8
(c)でCから左側にエッジ条件を満たすか、演算範囲
外になるまで探査していく。
【0085】右エッジのエッジ条件は、 im(j+2)−im(j)>EDGETHR かつ im(j+3)−im(j+1)>EDGETHR である。
【0086】図8(d)でCから右側にエッジ条件を満
たすか、演算範囲外になるまで探査していく。エッジ検
出(画素単位)の部分まで探査すると、そこで右エッジ
条件を満たすので、ステップ#H16へ分岐し、サブル
ーチン「右エッジ重心演算」を実行する。
たすか、演算範囲外になるまで探査していく。エッジ検
出(画素単位)の部分まで探査すると、そこで右エッジ
条件を満たすので、ステップ#H16へ分岐し、サブル
ーチン「右エッジ重心演算」を実行する。
【0087】そして、このサブルーチンを終了すると、
ステップ#H03でjをカウントアップし、計算範囲内
なら再度ステップ#H02へ戻り、閾値判定を繰り返
す。また、計算範囲外ならこのサブルーチンをリターン
する(ステップ#H03)。
ステップ#H03でjをカウントアップし、計算範囲内
なら再度ステップ#H02へ戻り、閾値判定を繰り返
す。また、計算範囲外ならこのサブルーチンをリターン
する(ステップ#H03)。
【0088】次に、図7のステップ#H11にて実行さ
れるサブルーチン「左エッジ重心演算」について、図9
のフローチャートを用いて説明する。
れるサブルーチン「左エッジ重心演算」について、図9
のフローチャートを用いて説明する。
【0089】サブルーチン「左エッジ重心演算」がコー
ルされると、ステップ#G01からプログラムを実行す
る。
ルされると、ステップ#G01からプログラムを実行す
る。
【0090】まず重心演算を行う範囲を決める。初めに
開始位置をj0に保存する(ステップ#G02)。次に
輝度信号の差分「im(j−1)−im(j+1)」を
求める(ステップ#G03)。差分信号は、重心演算で
使用するので配列 d(j)に保存しておく。
開始位置をj0に保存する(ステップ#G02)。次に
輝度信号の差分「im(j−1)−im(j+1)」を
求める(ステップ#G03)。差分信号は、重心演算で
使用するので配列 d(j)に保存しておく。
【0091】 d(j)=im(j−1)−im(j+1) 次に、その差分信号がスロープ条件 d(j)<EDGETHR を満たすか判定し(ステップ#G04)、満たさなけれ
ばステップ#G05へ進み、jをダウンカウントする。
jが図6のステップ#D03で設定した演算範囲内であ
るか判定し(ステップ#G06)、範囲内ならステップ
#G03へ戻り、再度差分値を計算し(ステップ#G0
3)、判定を繰り返す。
ばステップ#G05へ進み、jをダウンカウントする。
jが図6のステップ#D03で設定した演算範囲内であ
るか判定し(ステップ#G06)、範囲内ならステップ
#G03へ戻り、再度差分値を計算し(ステップ#G0
3)、判定を繰り返す。
【0092】ステップ#G03〜#G06を、スロープ
条件を満たしている間繰り返す。
条件を満たしている間繰り返す。
【0093】ステップ#G04でスロープ条件を満たさ
なくなったら、ステップ#G07へ分岐し、ここで重心
演算を行うためのパラメータ[〔Σk×d(k)及びΣ
k〕を計算する為のパラメータを0に]を初期化を行
う。
なくなったら、ステップ#G07へ分岐し、ここで重心
演算を行うためのパラメータ[〔Σk×d(k)及びΣ
k〕を計算する為のパラメータを0に]を初期化を行
う。
【0094】次に、重心演算を行う範囲が閾値より広い
か判定する(ステップ#G08)。上記ステップ#G0
2で記憶しておいた位置j0とjとの差と閾値LenT
hrの関係が「jo−j<LenThr」を満たせば、
ステップ#G09に分岐し、重心演算を行う。LenT
hrは「8」程度に設定されている。次のステップ#G
09)では、j〜jo+1の範囲で重心演算を行う。重
心の計算は図示(ステップ#G09内参照)の様にして
求めることが出来、このxがエッジ座標になる。
か判定する(ステップ#G08)。上記ステップ#G0
2で記憶しておいた位置j0とjとの差と閾値LenT
hrの関係が「jo−j<LenThr」を満たせば、
ステップ#G09に分岐し、重心演算を行う。LenT
hrは「8」程度に設定されている。次のステップ#G
09)では、j〜jo+1の範囲で重心演算を行う。重
心の計算は図示(ステップ#G09内参照)の様にして
求めることが出来、このxがエッジ座標になる。
【0095】計算が終了したら、ステップ#G14でサ
ブルーチンをリターンする。
ブルーチンをリターンする。
【0096】次に、上記ステップ#G08で「jo−j
<LenThr」が満たさない場合は、ステップ#G1
0へ分岐し、重心演算が失敗したことを示すフラグを設
定し(ステップ#G10)、その時の処理「だらだら処
理」を行う(ステップ#G11)。だらだら処理では重
心演算以外の方法でエッジ位置を決定する。エッジの決
定方法としては、 1)輝度閾値を定め、その輝度になる水平方向の位置を
補間して求める。
<LenThr」が満たさない場合は、ステップ#G1
0へ分岐し、重心演算が失敗したことを示すフラグを設
定し(ステップ#G10)、その時の処理「だらだら処
理」を行う(ステップ#G11)。だらだら処理では重
心演算以外の方法でエッジ位置を決定する。エッジの決
定方法としては、 1)輝度閾値を定め、その輝度になる水平方向の位置を
補間して求める。
【0097】2)整数座標のままで計算する。
【0098】3)エッジが検出されなかったことにす
る。
る。
【0099】4)重心を計算する広さを所定の広さに限
定して計算する。等の方法が考えられる。
定して計算する。等の方法が考えられる。
【0100】処理が終了すると、ステップ#G14でリ
ターンする。
ターンする。
【0101】次に、上記ステップ#G06でjが計算範
囲外になった場合、ステップ#G12に進み、重心演算
が失敗したことを示すフラグを設定し(ステップ#G1
2)、エッジ検出が出来なかった時と同様な処理を行う
(ステップ#G13)。
囲外になった場合、ステップ#G12に進み、重心演算
が失敗したことを示すフラグを設定し(ステップ#G1
2)、エッジ検出が出来なかった時と同様な処理を行う
(ステップ#G13)。
【0102】最後にこのサブルーチンをリターンする。
【0103】次に、図10を用いて左エッジ重心演算の
説明を行う。
説明を行う。
【0104】同図(a1),(b1),(c1)は、重
心演算によってエッジ位置が検出出来る場合の例で、図
10(a1)の瞳孔の左側のエッジ部分の輝度は、図1
0(b1)のグラフim(j)の様になる。これに差分
処理を行うと。図10(c1)のグラフd(j)様にな
る。d(j)のEDGETHRより小さい部分の範囲は
LenThrより短い。この時の重心位置xは、エッジ
位置となっている。
心演算によってエッジ位置が検出出来る場合の例で、図
10(a1)の瞳孔の左側のエッジ部分の輝度は、図1
0(b1)のグラフim(j)の様になる。これに差分
処理を行うと。図10(c1)のグラフd(j)様にな
る。d(j)のEDGETHRより小さい部分の範囲は
LenThrより短い。この時の重心位置xは、エッジ
位置となっている。
【0105】図10(a2),(b2),(c2)は、
重心演算によってエッジ位置が検出出来ない場合の例
で、図10(a2)の瞳孔の左側のエッジ部分は瞼が重
なってはいないものの、エッジの隣は瞼になっている。
この時のim(j)は、図10(b2)の様になる。エ
ッジの端では輝度の変化が一時的に無くなるが、瞼の部
分はまた輝度の変化がある。この差分は図10(c2)
のd(j)様になる。d(j)のEDGETHRより小
さい部分の範囲はLenThrより長く、この範囲で重
心演算を行って求めた位置xはエッジ位置と異なる位置
になっている。
重心演算によってエッジ位置が検出出来ない場合の例
で、図10(a2)の瞳孔の左側のエッジ部分は瞼が重
なってはいないものの、エッジの隣は瞼になっている。
この時のim(j)は、図10(b2)の様になる。エ
ッジの端では輝度の変化が一時的に無くなるが、瞼の部
分はまた輝度の変化がある。この差分は図10(c2)
のd(j)様になる。d(j)のEDGETHRより小
さい部分の範囲はLenThrより長く、この範囲で重
心演算を行って求めた位置xはエッジ位置と異なる位置
になっている。
【0106】この様に重心演算範囲が広い場合は、瞼の
持ち上がりと瞳孔エッジの部分がつながった時であり、
この時は重心位置がエッジの位置にならない。
持ち上がりと瞳孔エッジの部分がつながった時であり、
この時は重心位置がエッジの位置にならない。
【0107】本実施の形態では、そのような場合を排除
する事によって不正確なエッジを検出しないようにして
いる。
する事によって不正確なエッジを検出しないようにして
いる。
【0108】(発明と実施の形態の対応)本実施の形態
において、CPU100内の図9のステップ#G03を
実行する部分が本発明の差分演算手段に相当し、図9の
ステップ#G09を実行する部分がエッジ検出手段に相
当し、図9のステップ#G03〜#G06を実行する部
分が本発明の計算範囲計算手段に相当する。
において、CPU100内の図9のステップ#G03を
実行する部分が本発明の差分演算手段に相当し、図9の
ステップ#G09を実行する部分がエッジ検出手段に相
当し、図9のステップ#G03〜#G06を実行する部
分が本発明の計算範囲計算手段に相当する。
【0109】(変形例)本発明は、一眼レフカメラに適
用した場合を述べているが、ビデオカメラや電子スチル
カメラ等の映像機器にも適用可能である。更には、顕微
鏡やヘッドマウントディスプレイ装置やゲーム機等の光
学装置にも適用可能である。
用した場合を述べているが、ビデオカメラや電子スチル
カメラ等の映像機器にも適用可能である。更には、顕微
鏡やヘッドマウントディスプレイ装置やゲーム機等の光
学装置にも適用可能である。
【0110】
【発明の効果】以上説明したように、本発明によれば、
画像信号を差分する差分演算手段と、差分出力の重心位
置を求めてエッジ位置を検出するエッジ検出手段と、重
心位置を計算する範囲を差分出力から求める計算範囲計
算手段とを備え、前記計算範囲と所定に計算範囲を比較
し、計算範囲が所定の計算範囲より広い場合は、瞼の持
ち上がりと瞳孔エッジの部分がつながった時であり、こ
の時は重心によるエッジ計算を行わない事によって不正
確なエッジを検出しないようにしている。
画像信号を差分する差分演算手段と、差分出力の重心位
置を求めてエッジ位置を検出するエッジ検出手段と、重
心位置を計算する範囲を差分出力から求める計算範囲計
算手段とを備え、前記計算範囲と所定に計算範囲を比較
し、計算範囲が所定の計算範囲より広い場合は、瞼の持
ち上がりと瞳孔エッジの部分がつながった時であり、こ
の時は重心によるエッジ計算を行わない事によって不正
確なエッジを検出しないようにしている。
【図1】本発明の実施の一形態に係るカメラの概略構成
を示すブロック図である。
を示すブロック図である。
【図2】図1のカメラのファインダ近傍を示す図であ
る。
る。
【図3】図1のカメラの視線検出時の動作を示すフロー
チャートである。
チャートである。
【図4】図3のステップ#M07の動作を示すフローチ
ャートである。
ャートである。
【図5】図4のステップ#R08の動作を示すフローチ
ャートである。
ャートである。
【図6】図5のステップ#x14の動作を示すフローチ
ャートである。
ャートである。
【図7】図6のステップ#D04の動作を示すフローチ
ャートである。
ャートである。
【図8】図7の動作説明を助ける為の図である。
【図9】図7のステップ#H07の動作を示すフローチ
ャートである。
ャートである。
【図10】図9の動作説明を助ける為の図である。
【図11】一般的な視線検出の原理を説明する為の図で
ある。
ある。
14 イメージセンサ 100 CPU 100a EEPROM 101 視線検出回路 107 IRED駆動回路
Claims (2)
- 【請求項1】 画像信号を差分する差分演算手段と、差
分出力の重心位置を求めてエッジ位置を検出するエッジ
検出手段と、重心位置を計算する範囲を差分出力から求
める計算範囲計算手段とを備えた画像処理装置であっ
て、 前記計算範囲と所定の計算範囲を比較し、計算範囲が所
定の計算範囲より広い場合、前記エッジ検出手段による
エッジ検出を行わないことを特徴とする画像処理装置。 - 【請求項2】 上記請求項1記載の画像処理装置を具備
したことを特徴とする光学装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7232118A JPH0956679A (ja) | 1995-08-18 | 1995-08-18 | 画像処理装置及び光学装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7232118A JPH0956679A (ja) | 1995-08-18 | 1995-08-18 | 画像処理装置及び光学装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0956679A true JPH0956679A (ja) | 1997-03-04 |
Family
ID=16934294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7232118A Pending JPH0956679A (ja) | 1995-08-18 | 1995-08-18 | 画像処理装置及び光学装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0956679A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006333902A (ja) * | 2005-05-31 | 2006-12-14 | Matsushita Electric Ind Co Ltd | 異物検出方法及び眼球観察装置 |
JP2016207042A (ja) * | 2015-04-24 | 2016-12-08 | 株式会社コーエーテクモゲームス | プログラム及び記録媒体 |
-
1995
- 1995-08-18 JP JP7232118A patent/JPH0956679A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006333902A (ja) * | 2005-05-31 | 2006-12-14 | Matsushita Electric Ind Co Ltd | 異物検出方法及び眼球観察装置 |
JP2016207042A (ja) * | 2015-04-24 | 2016-12-08 | 株式会社コーエーテクモゲームス | プログラム及び記録媒体 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7358530B2 (ja) | 被写体認識装置及び被写体認識装置の制御方法 | |
JPH06304142A (ja) | 視線検出装置 | |
JP3352238B2 (ja) | 視線検出装置及びカメラ | |
US5926655A (en) | Line of sight detection device and an apparatus having a line of sight detection device | |
US6507702B2 (en) | Device having sight line detecting function | |
US5402199A (en) | Visual axis detecting apparatus | |
JP3313803B2 (ja) | 視線検出装置 | |
JPH0956679A (ja) | 画像処理装置及び光学装置 | |
JP2004008323A (ja) | 視線機能付光学装置 | |
JP3256294B2 (ja) | 視線検出装置および視線検出方法 | |
JP3630792B2 (ja) | 視線検出装置及び光学装置 | |
JPH10171995A (ja) | 特徴点検出装置、瞳孔エッジ検出装置及び視線検出装置 | |
JP2002301030A (ja) | 視線検出機能付き機器 | |
JP3184633B2 (ja) | カメラ | |
JP3624030B2 (ja) | 視線検出装置及び光学装置 | |
JP3530647B2 (ja) | 視線検出装置及び光学装置 | |
US20240085979A1 (en) | Recording device, image-capturing apparatus, control method, and recording system | |
JP3211427B2 (ja) | 視線検出装置 | |
JP2003339642A (ja) | 視線検出装置及びそれを有した光学装置 | |
JP3184634B2 (ja) | 視線検出装置を有する光学装置 | |
JP3391892B2 (ja) | 視線検出装置、光学装置及び視線検出方法 | |
JP3219491B2 (ja) | 視線検出装置 | |
JP2733260B2 (ja) | 検出装置及び光学機器 | |
JP2022185313A (ja) | 撮像装置 | |
JP3500171B2 (ja) | カメラの焦点制御装置 |