(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
次に、図面を参照しながら、一実施形態について説明する。
図1は、本実施形態によるフリッカ映像検出装置の概略機能構成を示すブロック図である。図示するように、フリッカ映像検出装置1は、走査部10と、スイッチ11と、極値検出部12−1,12−2,…,12−Nと、極値バッファ13−1,13−2,…,13−N(極値タイミング記憶部)と、スイッチ14と、点滅画素抽出部15と、面積判定部16(警告判定部)とを含んで構成される。なお、Nは、映像に含まれる総画素数である。また、極値検出部12−n(1≦n≦N)と極値バッファ13−nとは対をなして、画素に対応して設けられるものであり、全部でN対の極値検出部12−nと極値バッファ13−nとが、フリッカ映像検出装置1に含まれている。
【0014】
フリッカ映像検出装置1は、入力される映像から、次の基準に基づいて、条件を満たす映像シーンを危険であると判定して、警告信号を発出する。即ち、フリッカ映像検出装置1は、既定以上の輝度変化を伴って、既定時間内に既定回数超の点滅をした画素数が、既定割合超となった場合に警告信号を発出する。
【0015】
フリッカ映像検出装置1は、上記基準に基づき、下記の、4つの基準値に基づく3条件を判定する。
(条件1)変化の量が閾値d(第一基準値)以上である輝度値変化を以て輝度値の増減する画素を変化画素とする。
(条件2)時間軸において閾値r(第二基準値,トランジション回数(条件1を満たす画素値の増加回数と減少回数の和)、すなわち点滅回数の2倍)回以上の変化画素判定が、時間h(第三基準値,継続時間)内に発生した画素を点滅画素とする。
(条件3)フレーム内の総画素数に対する点滅画素の割合が閾値s(第四基準値,面積閾値)を超えた場合を点滅フレームとして警告信号を発出する。
【0016】
フリッカ映像検出装置1による上記の機能を実現するため、フリッカ映像検出装置1を構成する各部は、以下に説明する機能を有する。
【0017】
走査部10は、入力される映像のタイミングと同期しながら、スイッチ11およびスイッチ14における切り替えを制御する。走査部10は、スイッチ11およびスイッチ14を切り替えることにより、映像入力からの映像信号の画素値を、画素位置ごとに極値検出部12−1乃至12−Nおよび極値バッファ13−1乃至13−Nに順次振り分ける。
スイッチ11は、入力される映像信号に含まれる画素値を、画素位置に応じて極値検出部12−1乃至12−Nに振り分ける。なお、スイッチ11は、前述のように、走査部10からの制御信号に応じて切り替え動作を行う。
スイッチ14は、画素位置ごとに極値バッファ13−1乃至13−Nから読み出した情報を切り替え選択して、点滅画素抽出部15へと出力する。なお、スイッチ14もまた、前述のように、走査部10からの制御信号に応じて切り替え動作を行う。
【0018】
極値検出部12−1,12−2,…,12−Nの各々は、画素ごとに対応するものであり、画素値の極値を検出するとともに、その極値が発生したタイミングに関する情報を、それぞれ極値バッファ13−1,13−2,…,13−Nに書き込む。具体的には、極値検出部12−1,12−2,…,12−Nの各々は、画素の画素値の時系列から点滅画素を検出するため、画素値の極大値および極小値(両者を併せて「極値」と呼ぶ)を検出し、極値発生時刻を対応する次段の極値バッファに書き込む。つまり、極値検出部12−n(1≦n≦N)は、極値を検出し、極値発生時刻を極値バッファ13−nに書き込む。ただし、極値検出部12−nは、極値を検出するために画素値の増減に基づく判定を行う際、第一閾値d未満の増減を無視する。
なお、極値検出部12−1,12−2,…,12−Nは、それぞれの画素に関して発生する極大値と極小値とを交互に検出する。これらの極大値及び極小値を、「極値」と総称する。なお、最初に発生する極値が、極大値であっても、極小値であってもよい。
【0019】
極値バッファ13−1,13−2,…,13−Nは、各画素位置に対応するものであり、画素値の極値が発生したタイミングに関する情報を画素ごとに記憶する。具体的には、極値バッファ13−1,13−2,…,13−Nは、極値発生時刻の情報等を少なくとも一時的に記憶する。極値バッファ13−n(1≦n≦N)は、極値検出部12−nにおいて検出された極値発生時刻の情報を一定時間区間(少なくともhフレーム分の時間区間)記録するためのメモリである。極値バッファ13−nはスイッチ14を経由して点滅画素抽出部15に接続される。極値バッファ13−nは、点滅画素抽出部15に接続されているとき、1個以上の極値発生時刻の情報、およびその極値が極大値と極小値のいずれであるかを特定するための情報を出力する。
【0020】
極値バッファ13−nへの書き込みアクセス方法としては、「極値登録」および「極値更新」の2種類の方法がある。
「極値登録」は、極値バッファ13−nのメモリに極値発生時刻を新規に追加登録するアクセス方法である。即ち、「極値登録」を行うと、極値バッファ13−nにすでにn
0個(n
0は、非負整数)の極値発生時刻が記録されている場合には、n
0+1個目のデータとして新たな極値発生時刻を記録する。なお、追加登録時において、既に登録されている極値発生時刻情報の中に現時点からhフレーム以上遡るデータが存在する場合には、追加登録と同時に、追加登録の直前に、もしくは追加登録より後の時点において当該hフレーム以上遡るデータを削除してもよい。
「極値更新」は、極値バッファ13−nのメモリにすでに記録されている極値発生時刻のうちの最新のものについて更新するアクセス方法である。即ち、「極値更新」では、既に登録されている極値発生時刻を、入力された新たな極値発生時刻で置換する。
【0021】
また、極値バッファ13−nは、「極大値と極小値のいずれであるかを特定するための情報」のとして、例えば、担当画素位置の画素値が現時点において増加状態にあるか減少状態にあるかを表す情報を出力する。極値バッファ13−nは、一例として、極値検出部12−n内の処理におけるモードの情報(変数m)を出力する。モードの情報(変数m)については、後の極値検出部12−nによる処理手順の説明内で詳述する。現時点における画素値の増減が明らかになれば、記録される各極値が極大値であるか極小値であるかが自ずと明らかになる。
【0022】
点滅画素抽出部15は、極値バッファ13−n(1≦n≦N)を参照することによって、単一の画素に関して、所定の長さの時間内に極値が発生したタイミングが所定回数以上であるか否かを判定する。そして、点滅画素抽出部15は、所定の長さの時間内に極値が発生したタイミングが所定回数以上である場合に当該画素を点滅画素として抽出する。そして、点滅画素抽出部15は、映像入力のフレーム内における点滅画素の個数を計数し、計数結果(点滅画素数)を出力する。
具体的には、点滅画素抽出部15は、第n番目(1≦n≦N)の画素について、次の手順により、所定の条件による点滅があったかどうかを判定する。まず、点滅画素抽出部15は、第n番目の画素に対応する極値バッファ13−nより、現時刻から遡ってr個目(第二基準値)の極値発生時刻f
r(n)を読み出し、現時刻fからの遡及時間T
r(n)=f−f
r(n)を求める。また、点滅画素抽出部15は、前記極値発生時刻T
r(n)が条件T
r(n)≦h (hは、第三基準値)を満たすか否かを判定する。即ち、点滅画素抽出部15は、第n番目の画素について、第三基準値hで表される長さの時間区間内に、第二基準値rで表される回数の点滅があったか否かを判定する。
点滅画素抽出部15は、スイッチ14の切り替えに同期して、第1番目の画素から第N番目の画素までについて、上記の判定の処理を行う。
そして、点滅画素抽出部15は、第1の画素から第Nの画素までのN個の画素のうち、条件を満たした画素(所定の点滅があったと判定された画素)の個数を計数する。そして、点滅画素抽出部15は、計数結果(点滅画素数S)を出力する。
【0023】
点滅画素抽出部15は、点滅画素数の計数にあたって、点滅の位相を区別して計数する。つまり、点滅画素抽出部15は、最終極値が極大値であるか極小値であるかを区別して計数する。最終極値が極大値である点滅画素数を明点滅画素数S
pとし、また最終極値が極小値である点滅画素数を暗点滅画素数S
nとして、S
pとS
nとをそれぞれ出力してもよい。この場合、点滅画素抽出部15は、例えば、極値バッファ13−nに記録された現時点における変数mがm=3であれば明点滅画素数S
pとして計数し、m=6であれば暗点滅画素数S
nとして計数する。
【0024】
面積判定部16は、点滅画素抽出部15によって抽出された点滅画素の数が所定の閾値以上である、または、点滅画素抽出部15によって抽出された点滅画素の数が全画素の数に占める割合が所定の閾値以上である、のいずれかの場合に、警告信号を出力する。具体的な処理として、面積判定部16は、映像の全体の画素数と点滅画素数との関係に基づいて、点滅画素数(あるいは点滅画素数が占める面積の割合)が所定の閾値を超える場合に警告信号を出力する。具体的には、面積判定部16は、点滅画素抽出部15が出力した点滅画素数Sと第四基準値sとを比較し、S>sであれば警告信号を出力する。なお、第四基準値sは、映像全体の画素数にも基づいて予め定めておく。
なお、点滅画素抽出部15が明点滅画素数S
pと暗点滅画素数S
nとを区別して計数して出力する場合には、面積判定部16は、条件「S
p>sまたはS
n>s」が満たされた場合に警告信号を出力する。
【0025】
図2は、極値検出部12−1,12−2,…,12−Nの各々による、極値検出処理の手順を示すフローチャートである。なお、このフローチャートで示す手順において、各変数の意味は、次の通りである。変数mは、モードを表す値を格納する。変数vは、現時点の画素値を格納する。変数fは、時刻を表す値を格納する。変数aは、直近最小値を格納する。直近最小値とは、既定以上の画素値の減少があった後、現在(最新の時点)に至るまでの間の最小値である。変数bは、直近最大値を格納する。直近最大値とは、既定以上の画素値の増加があった後、現在(最新の時点)に至るまでの間の最大値である。変数dは、輝度変化に対する第一の基準に基づく閾値(第一基準値)を格納する。
【0026】
なお、変数m,v,f,a,bのスコープは、1個の極値検出部12−nの範囲内(つまり、1画素に対応する処理の範囲内)のみである。変数dのスコープは、1個の極値検出部12−nの範囲内のみとしてもよいし、複数の極値検出部12−nにおいて共通のものとしてもよい。
【0027】
言い換えれば、図示するフローチャートの処理は、極値検出部12−nごと(n∈{1,2,…,N})に独立に動作するする。即ち、変数m,v,a,bは極値検出部12−nごと(即ち、画素位置ごと)に別個の記憶領域として管理され、異なる極値検出部の処理間では干渉しないもの。つまり、時刻(フレーム)が進んでも、異なる極値検出部の間では、変数値に干渉が生じない。
一方、第一基準値を表す変数dは、典型的には極値検出部12−1から12−Nまでのすべてに共通、且つ時不変の定数である。ただし、例えば、画像の中央部と周辺部においてフリッカ検出の感度を変えたい場合などには、第一閾値dを画素位置に応じて(即ち、極値検出部12−nの番号nに応じて)異なる値としてもよい。
【0028】
以下、このフローチャートに沿って説明する。
ステップS1において、極値検出部12−nは、変数mを初期化し、m=0とする。変数mは、画素値の時間波形の増減の状態(以下において「モード」とも呼ぶ)を一時的に記憶するための変数である。変数mの値の意味は、次の通りである。m=0は初期状態を表す。m=1は不定区間(検出開始後増減不明または増減なし)を表す。m=2は増加区間(極値付近か否かは不明)を表す。m=3は極大区間(極大値が含まれる可能性のある区間)を表す。m=4は極大近傍区間(極大付近だが画素値変化は有意でない)を表す。m=5は減少区間(極値付近か否かは不明)を表す。m=6は極小区間(極小値が含まれる可能性のある区間)を表す。そして、m=7は極小近傍区間(極小付近だが画素値変化は有意でない)を表す。ステップS1の次には、ステップS2へ進む。
【0029】
ステップS2において、極値検出部12−nは、入力される映像内の、当該極値検出部12−nが担当する画素位置の画素値を変数vに読み込む。それとともに、ステップS2において、極値検出部12−nは、画素値の変数vへの読み込みを行ったタイミングの時刻情報(例えば、映像のフレームを一意に特定する番号等)を変数fに設定する。ステップS2の次には、ステップS3へ進む。
ステップS3において、極値検出部12−nは、m=0であるか否かを判定する。判定結果が真(ステップS3:Yes)の場合には次にステップS4へ進み、判定結果が偽(ステップS3:No)の場合にはステップS6へ進む。
【0030】
ステップS4においては、極値検出部12−nは、変数mを更新し、m=1(不定区間であることを表す)を設定する。ステップS4に進んでくる場合は、変数vに設定されている画素値が初めて入力された値であるため、その前後時刻の画素値との大小関係の比較を行えない。そのために、「増減不明」であり、m=1とするものである。また、ステップS4においては、極値検出部12−nは、変数aおよび変数bのそれぞれに現在の画素値vを代入する。
なお、変数aは、画素値vが前極大値(なお、極値は既定値d未満の増減を無視する。以下において同じ。)より後に既定値d以上の減少を観測した以後の画素値の最小値(以後、「直近最小値」と呼ぶ)を保持する。また、変数bは、画素値vが前極小値より後に既定値d以上の増加を観測した以後の画素値の最大値(以後、「直近最大値」と呼ぶ)を保持する。
ステップS4の次には、ステップS5へ進む。
【0031】
ステップS5においては、極値検出部12−nは、前記の時刻情報(変数fの値)を、極値バッファ13−nに渡すことにより、この時刻fを新規の極値発生時刻として極値バッファ13−nに登録(「極値登録」と呼ぶ)する。なお、ステップS5の次には、ステップS2へ戻る。
【0032】
ステップS6に(ステップS3から)進んだ場合、ステップS6において、極値検出部12−nは、m=1であるか否かを判定する。即ち、極値検出部12−nは、現モードが不定区間であるか否かを判定する。判定結果が真(ステップS6:Yes)の場合にはステップS7へ進み、判定結果が偽(ステップS6:No)の場合にはステップS12へ進む。
【0033】
ステップS7においては、極値検出部12−nは、変数vの値に関して、v>bであるか否かを判定する。判定結果が真(ステップS7:Yes)の場合にはステップS8へ進み、判定結果が偽(ステップS7:No)の場合にはステップS10へ進む。
ステップS8においては、変数mおよび変数bを更新し、それぞれ、m=2(増加区間であることを表す)およびb=vをそれぞれ設定する。ステップS8の次には、ステップS9へ進む。
【0034】
ステップS9においては、極値検出部12−nは、前記の時刻情報(変数fの値)を、極値バッファ13−nに渡す。これにより、この時刻f(極値が更新された時刻)を用いて極値バッファ13−nに登録されている時刻を更新(「極値更新」と呼ぶ)する。なお、ステップS9の次には、ステップS2へ戻る。
【0035】
ステップS10に(ステップS7から)進んだ場合、ステップS10において、極値検出部12−nは、変数vの値に関して、v<aであるか否かを判定する。判定結果が真(ステップS10:Yes)の場合にはステップS11へ進み、判定結果が偽(ステップS10:No)の場合にはステップS9へ進む。
ステップS11においては、極値検出部12−nは、変数mおよび変数aを更新し、それぞれ、m=5(減少区間であることを表す)およびa=vをそれぞれ設定する。ステップS11の次はステップS9へ進む。
【0036】
ステップS12に(ステップS6から)進んだ場合、ステップS12において、極値検出部12−nは、変数mがm=2(増加区間)またはm=3(極大区間)のいずれかであるか否かを判定する。判定結果が真(ステップS12:Yes)の場合、即ちm=2またはm=3である場合には、ステップS13へ進む。判定結果が偽(ステップS12:No)の場合、即ち、m≠2且つm≠3の場合には、ステップS19へ進む。
【0037】
ステップS13においては、極値検出部12−nは、変数vの値に関して、v≧bであるか否かを判定する。判定結果が真(ステップS13:Yes)の場合にはステップS14へ進み、判定結果が偽(ステップS13:No)の場合にはステップS15へ進む。
ステップS14においては、極値検出部12−nは、変数bを更新し、b=vを設定する。ステップS14の次には、ステップS9へ進む。
【0038】
ステップS15に(ステップS13から)進んだ場合、ステップS15において、極値検出部12−nは、変数vの値に関して、v≦b−dであるか否かを判定する。即ち、現在の画素値では、直近最大値bよりも基準値d以上の減少があったか否かを判定する。判定結果が真(ステップS15:Yes)の場合(基準値d以上の減少があった場合)にはステップS16へ進み、判定結果が偽(ステップS15:No)の場合(基準値d以上の減少がなかった場合)にはステップS17へ進む。
ステップS16においては、極値検出部12−nは、変数mおよび変数aを更新し、それぞれ、m=6(極小区間であることを表す)およびa=vをそれぞれ設定する。ステップS16の次には、ステップS5へ進む。
【0039】
ステップS17に(ステップS15から)進んだ場合、ステップS17において、極値検出部12−nは、変数vの値に関して、v<a+dであるかいなかを判定する。即ち、基準値d未満の増減を無視したときの極大値たる条件を満たさなくなったか否かを判定する。なお、このステップS17に制御が移ってくるための必要条件の一つは、ステップS12における判定結果が真またはステップS19における判定結果が真(つまり、モードは、増加区間、極大区間、または極大近傍区間のいずれかである)であることである。ステップS17における判定結果が真(ステップS17:Yes)の場合にはステップS18へ進む。ステップS17における判定結果が偽(ステップS17:No)の場合にはステップS2へ戻る。
ステップS18においては、極値検出部12−nは、変数mを更新し、m=4(極大近傍区間であることを表す)を設定する。ステップS18の次には、ステップS2へ戻る。
【0040】
ステップS19に(ステップS12から)進んだ場合、ステップS19において、極値検出部12−nは、変数mの値に関して、m=4(極大近傍区間であることを表す)であるか否かを判定する。判定結果が真(ステップS19:Yes)の場合にはステップS20へ進み、判定結果が偽(ステップS19:No)の場合にはステップS22へ進む。
【0041】
ステップS20においては、極値検出部12−nは、変数vの値に関して、v≧a+dであるか否かを判定する。即ち、基準値d未満の増減を無視したときの極大値たる条件を再度満たしたか否かを判定する。判定結果が真(ステップS20:Yes)の場合にはステップS21へ進み、判定結果が偽(ステップS20:No)の場合にはステップS21を飛ばしてステップS13へ進む。
ステップS21においては、極値検出部12−nは、変数mを更新し、m=3(極大区間であることを表す)と設定する。ステップS21の次には、ステップS13へ進む。
【0042】
ステップS22に(ステップS19から)進んだ場合、ステップS22において、極値検出部12−nは、変数mの値に関して、m=5(減少区間)またはm=6(極小区間)のいずれかかであるか否かを判定する。判定結果が真(ステップS22:Yes)の場合、即ち、m=5またはm=6の場合、ステップS23へ進む。判定結果が偽(ステップS22:No)の場合、即ち、m≠5且つm≠6の場合、ステップS29へ進む。
【0043】
ステップS23においては、極値検出部12−nは、変数vの値に関して、v≦aであるか否かを判定する。判定結果が真(ステップS23:Yes)の場合にはステップS24へ進み、判定結果が偽(ステップS23:No)の場合にはステップS25へ進む。
ステップS24においては、極値検出部12−nは、変数aを更新し、a=vを設定する。ステップS24の次には、ステップS9へ進む。
【0044】
ステップS25に(ステップS24から)進んだ場合、ステップS25において、極値検出部12−nは、変数vの値に関して、v≦a+dであるか否かを判定する。即ち、現在の画素値では、直近最小値aよりも基準値d以上の増加があったか否かを判定する。判定結果が真(ステップS25:Yesの場合にはステップS26へ進み、判定結果が偽(ステップS25:Noの場合にはステップS27へ進む。
ステップS26においては、極値検出部12−nは、変数mおよび変数bを更新し、それぞれ、m=3(極大区間であることを表す)およびb=vを設定する。ステップS26の次には、ステップS5へ進む。
【0045】
ステップS27に(ステップS25から)進んだ場合、ステップS27において、極値検出部12−nは、変数vに関して、v>b−dであるか否かを判定する。即ち、基準値d未満の増減を無視したときの極小値たる条件を満たさなくなったか否かを判定する。判定結果が真(ステップS27:Yes)の場合にはステップS28へ進み、判定結果が偽(ステップS27:No)の場合にはステップS27を飛ばしてステップS2へ戻る。
ステップS28においては、変数mを更新し、m=7(極小近傍区間であることを表す)を設定する。ステップS28の次はステップS2へ進む。
【0046】
ステップS29に(ステップS22から)進んだ場合、ステップS29において、極値検出部12−nは、変数mに関して、m=7(極小近傍区間)であるか否かを判定する。判定結果が真(ステップS29:Yes)の場合にはステップS30へ進み、判定結果が偽(ステップS29:No)の場合にはステップS2へ進む。
【0047】
ステップS30においては、極値検出部12−nは、変数vに関して、v≦b−dであるか否かを判定する。即ち、基準値d未満の増減を無視したときの極小値たる条件を再度満たしたか否かを判定する。判定結果が真(ステップS30:Yes)の場合にはステップS31へ進み、判定結果が偽(ステップS30:No)の場合にはステップS31を飛ばしてステップS23へ進む。
ステップS31においては、極値検出部12−nは、変数mを更新し、m=6(極小区間であることを表す)を設定する。ステップS31の次には、ステップS23へ進む。
【0048】
以上、
図2のフローチャートに沿った手順として極値検出部12−nの処理を説明したが、この処理を、状態の変化(遷移)を軸として説明すると、次の通りである。下の説明における(A)から(H)までのそれぞれの場合が、遷移前の状態(変数mの値)に対応する。
【0049】
(A)m=0(初期状態)のとき、次の時刻を表す情報を変数fに設定し、次の画素値を変数vに設定する。そして、条件に応じて、次の通りの処理を行う。
即ち、vの値にかかわらず、変数aおよび変数bに、それぞれ、a=vおよびb=vを設定する。そして、極値登録(「極値登録」の意味は、前述の通り。以下においても同様。)して、m=1(不定区間)に遷移する。
【0050】
(B)m=1(不定区間)のとき、次の時刻を表す情報を変数fに設定し、次の画素値を変数vに設定する。そして、条件に応じて、次の通りの処理を行う。
(B−1)a≦v≦bならば、変数a,bを更新しない。そして、極値更新(「極値更新」の意味は、前述の通り。以下においても同様)して、状態はm=1のままとする。
(B−2)v>bならば、変数bを更新し、b=vとする。そして、極値更新して、状態m=2(増加区間)に遷移する。
(B−3)v<aならば、変数aを更新し、a=vとする。そして、極値更新して、状態m=5(減少区間)に遷移する。
【0051】
(C)m=2(増加区間)のとき、次の時刻を表す情報を変数fに設定し、次の画素値を変数vに設定する。そして、条件に応じて、次の通りの処理を行う。
(C−1)v≧bならば、変数bを更新し、b=vとする。そして、極値更新して、状態m=2(増加区間)のままとする。
(C−2)v≦b−dならば、変数aを更新し、a=vとする。そして、極値登録して、状態m=6(極小区間)に遷移する。
(C−3)b−d<v<a+dならば、変数a,bを更新しない。そして、極値更新しない。状態m=4(極大近傍区間)に遷移する。
(C−4)C−1からC−3までのいずれでもない場合、変数a,bを更新しない。そして、極値を更新しない。状態m=2(増加区間)のままとする。
【0052】
(D)m=3(極大区間)のとき、次の時刻を表す情報を変数fに設定し、次の画素値を変数vに設定する。そして、条件に応じて、次の通りの処理を行う。
(D−1)v≧bならば、変数bを更新し、b=vとする。そして、極値更新して、状態m=3(極大区間)のままとする。
(D−2)v≦b−dならば、変数aを更新し、a=vとする。そして、極値登録して、状態m=6(極小区間)に遷移する。
(D−3)b−d<v<a+dならば、変数a,bを更新しない。そして、極値更新しない。状態m=4(極大近傍区間)に遷移する。
(D−4)D−1からD−3までのいずれでもない場合、変数a,bを更新しない。そして、極値更新をしない。状態m=3(極大区間)のままとする。
【0053】
(E)m=4(極大近傍区間)のとき、次の時刻を表す情報を変数fに設定し、次の画素値を変数vに設定する。そして、条件に応じて、次の通りの処理を行う。
(E−1)v≧bならば、変数bを更新し、b=vとする。そして、極値更新して、状態m=3(極大区間)に遷移する。
(E−2)a+d≦v<bならば、変数a,bを更新しない。そして、極値更新をしない。状態m=3(極大区間)に遷移する。
(E−3)b−d<v<a+dならば、変数a,bを更新しない。そして、極値更新をしない。状態m=4(極大近傍区間)のままとする。
(E−4)v≦b−dならば、変数aを更新し、a=vとする。そして、極値登録する。状態m=6(極小区間)に遷移する。
【0054】
(F)m=5(減少区間)のとき、次の時刻を表す情報を変数fに設定し、次の画素値を変数vに設定する。そして、条件に応じて、次の通りの処理を行う。
(F−1)v≦aならば、変数aを更新し、a=vとする。そして、極値更新して、状態m=5(減少区間)のままとする。
(F−2)v≧a+dならば、変数bを更新し、b=vとする。そして、極値登録して、状態m=3(極大区間)に遷移する。
(F−3)b−d<v<a+dならば、変数a,bを更新しない。そして、極値更新をしない。状態m=7(極小近傍区間)に遷移する。
(F−4)F−1からF−3までのいずれでもない場合、変数a,bを更新しない。そして、極値更新をしない。m=5(減少区間)のままとする。
【0055】
(G)m=6(極小区間)のとき、次の時刻を表す情報を変数fに設定し、次の画素値を変数vに設定する。そして、条件に応じて、次の通りの処理を行う。
(G−1)v≦aならば、変数aを更新し、b=vとする。そして、極値更新して、状態m=6(極小区間)のままとする。
(G−2)v≧a+dならば、変数bを更新し、b=vとする。そして、極値登録して、状態m=3(極大区間)に遷移する。
(G−3)b−d<v<a+dならば、変数a,bを更新しない。そして、極値更新しない。状態m=7(極小近傍区間)に遷移する。
(G−4)G−1からG−3までのいずれでもない場合、変数a,bを更新しない。そして、極値更新をしない。状態m=6(極小区間)のままとする。
【0056】
(H)m=7(極小近傍区間)のとき、次の時刻を表す情報を変数fに設定し、次の画素値を変数vに設定する。そして、条件に応じて、次の通りの処理を行う。
(H−1)v≦aならば、変数aを更新し、a=vとする。そして、極値更新して、状態m=6(極小区間)に遷移する。
(H−2)a<v≦b−dならば、変数a,bを更新しない。そして、極値更新をしない。状態m=6(極小区間)に遷移する。
(H−3)b−d<v<a+dならば、変数a,bを更新しない。そして、極値更新をしない。状態m=7(極小近傍区間)のままとする。
(H−4)v≧a+dならば、変数bを更新し、b=vとする。そして、極値登録する。状態m=3(極大区間)に遷移する。
【0057】
ここで、実際の画素値の変化(値の時系列)の一例に基づいて、極値検出部12−n、極値バッファ13−n (nは1以上N以下の整数)および点滅画素抽出部15の動作例を説明する。この例では、第一基準値d=4である。
図3は、映像に含まれる特定の位置の画素について、画素値の時間変化を示すグラフである。同図において、横軸は時間であり、縦軸は画素値である。また、グラフにおけるグレーの太い実線(折れ線)が画素値vの時間変化を表す。
【0058】
以下においては、
図2のフローチャートにおける処理ステップと関連付けながら、時間変化に沿って、説明する。なお、
図3における時刻tの値と、
図2における時刻fの値とは、一致する。
(1)f=0のとき
まず、ステップS1において、モードm=0に初期化される。
そして、ステップS2において、時刻f=0、画素値v=10が設定される。
そして、ステップS3において真(Yes)と判定されるので、ステップS4に移る。
この時点において画素値の増減は不明であり、ステップS4において、m=1(不定区間)と設定する。また直近最小値aおよび直近最大値bについては、それぞれ、a=10およびb=10と設定される。
そして、ステップS5において、ここで時刻f=0における画素値が極値であったものとして、暫定的に極値登録を行う。つまり、極値バッファ13−nは、極値発生時刻f=0を記憶する。
【0059】
(2)f=1またはf=2のとき
時刻f=1からf=2までにおいては、画素値がv=10のままで変化がない。また、m=1が設定されているため、f=1のときもf=2のときもそれぞれ、ステップS7では偽(No)と判定され、ステップS10でも偽(No)と判定される。直近最小値aおよび直近最大値bは、a=b=10のまま更新しない。一方、f=0においてステップS5で仮に登録した極値発生時刻(f=0)は、f=1のときもf=2のときもそれぞれ、ステップS9において極値更新を行う。その結果、極値バッファ13−nが記憶する極値発生時刻は、それぞれ、f=1に更新され、そしてf=2に更新される。
【0060】
(3)f=3のとき
時刻f=3において、画素値vは増加し、v=11となった。m=1であったため、ステップS7において真(Yes)と判定され、ステップS8に移る。
ステップS8において、モードは、m=2(増加区間)に更新される。また、直近最大値は、b=11に更新される。
そして、ステップS9において、極値発生時刻が更新され、f=3となる。
【0061】
(4)f=4のとき
時刻f=4において、画素値vは増加し、v=12となった。m=2であったため、ステップS13において真(Yes)と判定され、ステップS14に移る。
ステップS14において、直近最大値は、b=12に更新される。なお、モードに関してはm=2のままである。
そして、ステップS9において、極値発生時刻が更新され、f=4となる。
【0062】
(5)f=5のとき
時刻f=5において、画素値vは減少し、v=11となった。m=2であったため、ステップS13に移る。
ステップS13では、v=11、b=12であるため、偽(No)と判定され、ステップS15に移る。
ステップS15では、v=11、b=12、d=4(前記設定の通り)であるため、偽(No)と判定される。つまり、f=4のときと比べて画素値vは減少したものの、その減少分は第一基準値(d=4)に達するほどではないため、減少区間(m=5)あるいは極小区間(m=6)であるとは判定されない。そして、ステップS17に移る。
ステップS17では、v=11、b=12、d=4であるため、真(Yes)と判定される。つまり、極値検出部12−nは、このステップにおいて、もはや増加区間や極大区間とはみなせなくなったと判断する。即ち、直近最小値aに第一基準値dを加えた値よりも画素値vが小さいため、画素値vは直近最小値aよりも十分大きいとは言えない。そして、ステップS18に移る。
ステップS18では、モードを、m=4(極大近傍区間)に更新する。極大近傍区間(m=4)とは、極大値付近ではあるが、当該区間に極大値は含まれ得ない区間であることを表す。
【0063】
(6)f=6のとき
時刻f=6において、画素値vは増加し、v=14となった。m=4であったため、ステップS20に移る。
ステップS20では、v=14、a=10、d=4であるため、真(Yes)と判定される。そして、次にステップS21に移る。
ステップS21では、モードmを更新し、m=3(極大区間)とする。次に、ステップS13に移る。
ステップS13では、v=14、b=12であるため、真(Yes)と判定される。そして、次にステップS14に移る。
ステップS14では、画素値vを用いて直近最大値bを更新し、b=14とする。
そして、ステップS9において、極値発生時刻が更新され、f=6となる。
【0064】
(7)f=7のとき
f=7において、画素値vは減少し、v=12となった。m=3であったため、ステップS13に移る。
ステップS13では、v=12、b=14であるため、偽(No)と判定される。そして、次に、ステップS15に移る。
ステップS15では、v=12、b=14、d=4であるため、偽(No)と判定される。そして、次に、ステップS17に移る。
ステップS17では、v=12、a=10、d=4であるため、真(Yes)と判定される。そして、次にステップS18に移る。
ステップS18では、モードmを更新し、m=4(極大近傍区間)とする。極値発生時刻は更新されない。
【0065】
(8)f=8のとき
f=8において、画素値vは減少し、v=10となった。m=4であったため、ステップS20に移る。
ステップS20では、v=10、a=10、d=4であるため、偽(No)と判定される。そして、次にステップS13に移る。
ステップS13では、v=10、b=14であるため、偽(No)と判定される。そして、次に、ステップS15に移る。
ステップS15では、v=10、b=14、d=4であるため、真(Yes)と判定される。つまり、徐々に減少してきた画素値が、第一基準値を考慮してもなお減少のトレンドにあると判断される。そして、次に、ステップS16に移る。
ステップS16では、モードmを更新し、m=6(極小区間)とする。また、画素値vを用いて直近最小値aを更新し、a=10とする。
そして、ステップS5において、新規の極値発生時刻としてf=8が追加登録される。
この結果、前の極値の発生時刻はもはや更新されることはなくなる。即ち、f=8で極値発生時刻を追加登録する前の極値であるところの、f=0の時点で新規登録した極値発生時刻は、f=6が最後の更新であり、f=6として確定する。つまり、f=6において画素値は極大値であったという判定がなされる。
【0066】
(9)f=9のとき
f=9において、画素値vはさらに減少し、v=9となった。m=6であったため、ステップS23に移る。
ステップS23では、v=9、a=10であるため、真(Yes)と判定される。そして、次に、ステップS24に移る。
ステップS24では、画素値vを用いて直近最小値aを更新し、a=9とする。
そして、ステップS9において、極値発生時刻が更新され、f=9となる。
【0067】
(10)その後
f=10のとき、およびそれ以降も、極値検出部12−nは、同様に極値発生時刻の仮登録と確定を繰り返しつつ、極大値および極小値の発生時刻を、順次、極値バッファ13−nに登録していく。
【0068】
点滅画素抽出部15は、各時点において極値バッファ13−nを参照することによって、現時刻fから所定の回数(r回)だけ遡った極値発生時刻までの遡及時間T
rを求める。そして、点滅画素抽出部15は、第n番目の画素の遡及時間T
rが第三基準値h以下であった場合には、その画素が点滅画素であると判定する。
なお、明滅(または滅明)がR対を超えて発生することを検出したい場合には、第二基準値rを、r=2R+1とする。なお、r=2R+1とした場合、R対の明滅に引き続き明状態に至る輝度変化や、R対の滅明に引き続き滅状態に至る輝度変化(すなわちR対半の明滅(または滅明))の場合をも含めて点滅画素と判定されることに注意されたい。例えば、3回を超える明滅を検出したい場合にはr=7(=3×2+1)とする。
一方、前記「明滅(または滅明)がR対を超えて発生する」ことの定義に、前記R対半の滅(または滅明)は含めないことを意図した場合には、第二基準値rを、r=2R+2とすればよい。
【0069】
以上説明したように、本実施形態のフリッカ映像検出装置1は、所定の条件によるフリッカの検出を実現できるものである。その条件とは、次の条件1から条件3までである。
(条件1)閾値d(第一基準値)以上の輝度値変化を以て輝度値の増減する画素を変化画素とする。
(条件2)時間軸において閾値r(第二基準値)回以上の変化画素判定が、時間h(第三基準値)内に発生した画素を点滅画素とする。
(条件3)フレーム内の総画素数に対する点滅画素の割合が閾値s(第四基準値)を超えた場合に、点滅フレームとして警告信号を発出する。
上記の条件を厳密に適用した場合のフリッカの検出は、従来技術においては行うことができなかったものである。
【0070】
言い換えれば、次の通りである。即ち、本実施形態によるフリッカ映像検出装置は、ブロック(複数の画素から成る領域)単位ではなく画素単位で輝度値の変化を検出する。このため、ブロックのサイズやブロックの切り取り方に依存した挙動変化や検出誤差の可能性をなくすことができる。また、本実施形態によるフリッカ映像検出装置は、隣接フレーム(あるいは隣接フィールド)間の画素値変化を検出するのではなく、第一基準値(d)に基づいた判定により、有意と判定された画素位置ごとの極値発生時刻に基づき点滅画素を特定する。このため、複数フレーム(あるいは複数フィールド)にわたって顕著な画素値増加(または画素値減少)が連続する場合にも、過剰な計数を行わないようにできる。これらの結果、過剰にあるいは過少に警告を発出することを防ぎ、光感受性発作の検出基準に忠実な警告を出力することができるようになる。
【0071】
なお、上述した実施形態におけるフリッカ映像検出装置の機能の少なくとも一部をコンピュータで実現するようにしても良い。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM、DVD−ROM、USBメモリ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0072】
以上、実施形態を説明したが、本発明はさらに次のような変形例でも実施することが可能である。
【0073】
[変形例1]
上記実施形態のフリッカ映像検出装置1では、スイッチ11を用いて、入力される映像に含まれる各画素位置の画素値を、対応する極値検出部12−n(1≦n≦N)に振り分けていた。また、スイッチ14を用いて、各画素位置の極値のタイミングの情報を切り替えて点滅画素抽出部15に供給していた。代わりに、この変形例1では、スイッチ11やスイッチ14を持たずに、フリッカ映像検出装置1を構成する。この場合、極値検出部12−nは、入力される映像の信号から、自身が担当する画素位置の画素値を抽出する。また、この場合、点滅画素抽出部15は、極値バッファ13−nから任意の順序で極値発生のタイミングの情報を読み出し、各画素が点滅画素であるか否かを判定する。
また、極値バッファ13−nから極値発生のタイミングの情報を読み出してその画素が点滅画素であるか否かを判定する機能部(点滅画素抽出部15の機能の一部を有する)を、N個設け、それらを並列に動作させるようにしてもよい。
【0074】
[変形例2]
上記実施形態のフリッカ映像検出装置1では、点滅画素抽出部15は、現時刻fから所定の回数(r回)だけ遡った極値発生時刻までの遡及時間T
rを極値バッファ13−nから読み出した。そして、点滅画素抽出部15は、第n番目の画素の遡及時間T
rが第三基準値h以下であるか否かを判断していた。代わりに、この変形例2では、点滅画素抽出部15は、現時刻fから遡及時間T
rを遡って極値バッファ13−nの内容を参照する。そして、点滅画素抽出部15は、その時間区間における第n番目の画素の極値発生の回数が所定の回数以上であるか否かにより、当該画素が点滅画素であるか否かを判定する。また、点滅画素抽出部15は、その他の方法によって、ある画素が点滅画素であるか否かを判定するようにしてもよい。これらのいずれの場合も、点滅画素抽出部15は、極値バッファを参照することによって、単一の画素に関して、所定の長さの時間内に極値が発生したタイミングが所定回数以上であるか否かを判定する。そして、前記所定の長さの時間内に極値が発生したタイミングが前記所定回数以上である場合に、点滅画素抽出部15は、当該画素を点滅画素として抽出する。
【0075】
以上、この発明の実施形態および変形例について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。