本発明の実施形態に係る加熱制御装置(以下、「本制御装置」と称呼される場合がある。)は、車両(以下において、他の車両と区別するために、「自車両SV」と称呼される場合がある。)に適用される。本制御装置は、図1に示すように、制御ECU10、カメラセンサ21、車輪速センサ22、ヒータ(以下、「加熱部」と称呼される場合がある。)31、表示器32及びスピーカ33を備える。
制御ECU10は、マイクロコンピュータを主要部として備える電気制御装置(Electric Control Unit)である。本明細書において、マイクロコンピュータは、CPU、ROM、RAM、不揮発性メモリ及びインターフェース(I/F)等を含む。CPUはROMに格納されたインストラクション(プログラム、ルーチン)を実行することにより各種機能を実現するようになっている。
図2に示すように、カメラセンサ21は、自車両SVのフロントウィンド45の後面(即ち、車内側の面)の上縁部付近の車幅方向中央部に配置される。より具体的に述べると、フロントウィンド45の後面の上縁部及びその近傍部には、全体形状が略T字形をなす遮光シート46が貼り付けられている。遮光シート46の中央部には前斜め下方に向かって延びる前方延出部46aが形成されている。カメラセンサ21を収容するカバー23の上面には接着面(図示省略)が設けられている。この接着面が前方延出部46aの下面に接着されることによって、カメラセンサ21は前方延出部46aの下面に固定される。
前方延出部46aの前端近傍部には略台形形状をなす光透過孔46bが形成され、フロントウィンド45の光透過孔46bと対向する部位は光透過部45aを構成している。このため、カメラセンサ21が前方延出部46aの下面に固定されたとき、光透過孔46bと対向する位置にカメラセンサ21に備わる撮像部24が位置するようになる。
このため、撮像部24は、フロントウィンド45の前方(即ち、自車両SVの前方)に位置する物標(例えば、他の車両)によって後方へ反射され且つフロントウィンド45の光透過部45a、遮光シート46の光透過孔46bを透過した反射光を所定時間が経過する毎に撮像して撮像画像を取得する。そして、撮像部24は、取得した撮像画像をカメラセンサ21に備わる画像処理装置(図示省略)に送信する。
画像処理装置は、撮像部24が送信した撮像画像に基づいて自車両SVの前方に存在する物標を検出した場合、当該撮像画像に基づいて当該物標の自車両SVに対する位置を取得する。そして、画像処理装置は、取得した物標の位置を示す位置情報及び当該撮像画像を含む物標情報を所定時間が経過する毎に制御ECU10に送信する。
制御ECU10は、物標情報に基づいて、「自動ブレーキ制御、レーンキーピングアシスト制御(レーントレーシングアシスト制御)及びアダプティブハイビーム制御」等を実行したり、自動運転を実施したり、警報を発したりする。以下、撮像画像に基づいて検出された物標に基づくこのような制御は運転支援制御と称呼される。
図2に示すように、ヒータ31は、カメラセンサ21の一部の領域に設けられる。より具体的に述べると、ヒータ31は、カメラセンサ21が前方延出部46aに固定されたときに、フロントウィンド45の下方に位置し且つフロントウィンド45全面に渡って対面する領域に設けられる。ヒータ31は、通電時に発熱する金属(例えば、黄銅)によって構成された電熱線である。自車両SVに搭載された電源から電力がヒータ31に供給されてヒータ31の状態が通電状態となると、ヒータ31は発熱する。このヒータ31が発した熱は上方へ伝わるため、光透過部45aが加熱されることになる。光透過部45aが曇っている場合、ヒータ31によって光透過部45aが加熱されて光透過部45a付近の温度が露点温度以上になると、当該曇りは消失する。更に、光透過部45aに氷及び/霜が付着していた場合も、ヒータ31が光透過部45aを加熱することによって、光透過部45aの温度が上昇し、光透過部45aに付着していた氷及び/霜を溶かすことができる。
車輪速センサ22は、自車両SVの車輪毎に設けられ、各車輪が所定角度回転する毎に一つのパルス信号(車輪パルス信号)を発生させる。制御ECU10は、各車輪速センサ22から送信されてくる車輪パルス信号の単位時間におけるパルス数を計測し、その計測したパルス数に基づいて各車輪の回転速度(車輪速度)を演算する。制御ECU10は、各車輪の車輪速度に基づいて自車両SVの速度を示す車速Vsを演算する。車速Vsは、例えば、4つの車輪の車輪速度の平均値である。
表示器32は、制御ECU10からの表示信号を受信し、その表示信号が示す情報を運転者に対して表示する液晶ディスプレイである。従って、表示器32は、制御ECU10からの信号に応答して後述する曇り発生表示及び霧発生表示を行うことができる。表示器32は、ヘッドアップディスプレイであってもよい。
スピーカ33は、制御ECU10からの発音信号を受信し、その発音信号に応じた音を発生する。従って、スピーカ33は、制御ECU10からの信号に応答して後述する曇り発生音及び霧発生音を発生することができる。
(作動の概要)
次に、本制御装置の作動の概要について説明する。
本制御装置は、今回撮像された最新の撮像画像(以下、「今回撮像画像」と称呼される場合もある。)PIの画素値に基づいて撮像画像PI全体が白色であるか否かを判定する。撮像画像PI全体が白色である場合、光透過部45aが曇っているか、車外に霧が発生しているかのいずれかの状況が発生していると考えられる。
そこで、本制御装置は、撮像画像PIの図5に示す各所定領域PA1乃至PA6のエッジ指標値EIVの時系列的な遷移に基づいて、以下の曇り条件が成立している場合、光透過部45aが曇っていると判定し、ヒータ31に光透過部45aを加熱させる。一方、本制御装置は、曇り条件が成立していない場合、ヒータ31に光透過部45aを加熱させない。エッジ指標値EIVは、各所定領域PA1乃至PA6で検出されたエッジ強度に基づく値である。エッジ強度が閾値強度以上である画素が存在しない所定領域PAのエッジ指標値EIVの値は「0」であり、エッジ強度が閾値強度以上である画素が存在する所定領域PAのエッジ指標値EIVの値は「1」である。
曇り条件は、以下の条件A1及びA2の何れもが成立したときに成立する。但し、曇り条件は以下のA2のみが成立したときに成立する条件であってもよい。
<曇り条件>
(A1)撮像画像PI全体が白色である状態が継続した時間を示す白色継続時間が第1閾値時間T1th以上であること
なお、撮像画像PI全体が白色である状態であるか否かは、後述する白色度WDに基いて判定される(図7を参照。)。
(A2)変化領域数CNが閾値領域数CNth未満である状態が継続した時間を示す無変化継続時間が第2閾値時間T2th以上であること
変化領域数CNは、今回のエッジ指標値EIVが「所定時間前の撮影画像に基づいて得られたエッジ指標値(以下、「前回のエッジ指標値EIV」と称呼する。)」から変化した領域の数である。
光透過部45aが曇っている状況下で撮像された撮像画像PIを図3A及び図3Bに示す。光透過部45aの曇りの原因は、光透過部45aの内側に発生した結露、光透過部45aに付着する氷及び/又は霜が考えられる。結露は、光透過部45aの内側に発生するので車外の風の影響を受けないため、発生した場所から移動せず、その発生した場所に留まる傾向にある。更に、氷及び/又は霜は、光透過部45aに張り付いているため、発生した場所から移動せず、その発生した場所に留まる傾向にある。
図3Aに示すように、時刻taにて撮像された撮像画像PIaの左上方の領域には濃い曇りDCが写り込み、それ以外の領域には薄い曇りTCが写り込んでいる。更に、時点taから所定時間が経過した時刻tbにて撮像された撮像画像PIbに写り込む曇りは、図3Bに示すように、撮像画像PIaから変化していない。撮像画像PIの濃い曇りDC及び薄い曇りTCが写り込んだ領域ではエッジが検出されなかったと仮定すると、撮像画像PIa及びPIbのエッジ指標値は「0」のまま変化しない。このように、光透過部45aが曇っている場合には、エッジ指標値EIVが時系列的に変化しない可能性が高く、変化領域数CNは閾値領域数CNth未満となる可能性が高い。
車外に霧が発生している場合に撮像された撮像画像PIを図4A及び図4Bに示す。車外に発生する霧に含まれる水分濃度が場所によって異なるため、霧が発生している場所と霧が発生していない場所とがあり、更に、水分濃度が高い濃霧DFが発生している場所もあれば、水分濃度が低い薄霧TFが発生している場所もある。このため、自車両SVが走行することによって撮像部24が撮像する風景が変われば、撮像画像PIに写り込む霧の撮像画像PIにおける位置も変化する。図4Aに示すように、時刻tcにて、自車両SVは薄霧TF1の後方に位置し、時点tcにて撮像された撮像画像PIcの左側の領域には薄霧TF1が写り込み、右側の領域には濃霧DF1が写り込む。図4Bに示すように、時点tcから所定時間が経過した時点tdでは薄霧TF1は自車両SVの移動によって自車両SVの後方に位置している。よって、時点tdにて撮像された撮像画像PIdには、当該撮像画像PIにおける中央の領域には薄霧TF2が写り込み、右側の領域には濃霧DF1が写り込む。撮像画像PIの薄霧TF及び濃霧DFが写り込んだ領域では、エッジが検出されないと仮定すると、撮像画像PIc及びPIdの右側の領域のエッジ指標値EIVは「0」から変化しないが、左側の領域のエッジ指標値EIVは「0」から「1」に変化するとともに、中央の領域のエッジ指標値EIVは「1」から「0」に変化する。このように、車外に霧が発生している場合には、エッジ指標値EIVが時系列的に変化する可能性が高く、変化領域数CNは閾値領域数CNth以上となる可能性が高い。このため、車外に霧が発生している場合、上述した曇り条件が成立しない可能性が高い。
以上説明したように、本制御装置は、曇り条件が成立した場合に光透過部45aが曇っていると判定するので、光透過部45aが曇っているのか車外に霧が発生しているのかを正確に判別することができる。よって、車外で霧が発生している場合にヒータ31に光透過部45aを加熱させることを防止できるので、無駄な電力の消費を低減させることができる。
(作動の詳細)
図5に示した例を参照しながら、本制御装置の作動の詳細を説明する。図5に示した撮像画像PIt1乃至撮像画像PIt4は、所定時間が経過する毎にのそれぞれの時点(即ち、時点t1乃至時点t4のそれぞれ)にて撮影された画像である。
図5に示した例においては、時刻t1の直前にて光透過部45aが曇り始め、時点t1乃至時点t4にて撮像された撮像画像PIはいずれも全体が白色であると仮定する。このため、本制御装置は、時刻t1にて白色継続時間のカウントを開始し、時点t4までそのカウントを継続する。
時点t1にて撮像された撮像画像PIt1の所定領域PA6のエッジ指標値EIVは「1」であり、所定領域PA1乃至PA5のエッジ指標値EIVは「0」である。前回の総ての所定領域PA1乃至PA6のエッジ指標値EIVが「1」であったと仮定すると、所定領域PA1乃至PA5でエッジ指標値EIVが変化しており、変化領域数CNは「5」である。閾値領域数CNthが「2」であると仮定すると、時刻t1にて変化領域数CNが閾値領域数CNth以上である。
時刻t2にて撮像された撮像画像PIt2の所定領域PA5及びPA6のエッジ指標値EIVは「1」であり、所定領域PA1乃至PA4のエッジ指標値EIVは「0」である。所定領域PA5のエッジ指標値EIVは「0」から「1」に変化しているため、変化領域数CNは「1」である。変化領域数CNが閾値領域数CNth未満となり、本制御装置は、上述した無変化継続時間のカウントを開始する。
時刻t3にて撮像された撮像画像PIt3の所定領域PA5及びPA6のエッジ指標値EIVは「1」であり、所定領域PA1乃至PA4のエッジ指標値EIVは「0」である。このため、撮像画像PIt3の何れの所定領域PAのエッジ指標値EIVも撮像画像PIt2から変化しておらず、変化領域数CNは「0」である。時刻t3においても、変化領域数CNが閾値領域数CNth未満となる。よって、本制御装置は、上述した無変化継続時間のカウントを継続する。
時刻t4にて撮像された撮像画像PIt4のPA6のエッジ指標値EIVは「1」であり、所定領域PA1乃至PA5のエッジ指標値EIVは「0」である。このため、所定領域PA5のエッジ指標値EIVは「1」から「0」に変化しているため、変化領域数CNは「1」であり、時刻t4においても、変化領域数CNが閾値領域数CNth未満となる。よって、本制御装置は、上述した無変化継続時間のカウントを継続する。
時刻t4において、白色継続時間が第1閾値時間T1th以上となり且つ無変化継続時間が第2閾値時間T2th以上となると仮定すると、時刻t4にて、本制御装置は、曇り条件が成立したと判定し、ヒータ31に光透過部45aを加熱させる。
(具体的作動)
制御ECU10のCPUは、図6にフローチャートで示したルーチンを所定時間が経過する毎に実行する。図6に示すルーチンは、光透過部45aの状態及び車外の状態に応じてヒータ31を制御するためのルーチンである。
従って、所定のタイミングになると、CPUは図6のステップ600から処理を開始し、以下に述べるステップ605及びステップ610をこの順に実行し、ステップ615に進む。
ステップ605:CPUは、撮像画像PIをカメラセンサ21から取得する。
ステップ610:CPUは、ステップ605にて取得した撮像画像PIを複数の所定領域PA1乃至PA6に分割する。
ステップ610の実行後、CPUは、ステップ615に進み、撮像画像PI全体が白色である状態が継続している時間(以下、「白色継続時間」と称呼する。)が第1閾値時間T1th以上となったか否かを判定する白色条件判定処理を実行する。即ち、CPUは、図6に示すステップ615に進むと、図7にフローチャートで示したサブルーチンの処理をステップ700から開始し、以下に述べるステップ705及びステップ710をこの順に実行してステップ715に進む。
ステップ705:CPUは、各所定領域PAの白色度WDを計算する。
より具体的に述べると、CPUは、撮像画像PIをグレースケールに変換し、グレースケールに変換後の撮像画像PIの各所定領域PAに含まれる画素値の平均である平均画素値を白色度WDとして計算する。この場合、平均画素値が大きいほど(即ち、白色度WDが大きいほど)、所定領域PAの白色らしさが高くなる。
ステップ710:CPUは、白色度WDが所定の閾値白色度WDth以上となる所定領域PAの数を白色領域数WNとして計数する。換言すれば、CPUは、白色度WDが閾値白色度WDth以上である所定領域PAを白色であると見做し、白色であると見做した所定領域PAの数を計数する。
ステップ715:CPUは、ステップ710にて計数された白色領域数WNが所定の閾値領域数WNth以上であるか否かを判定する。換言すれば、CPUは、ステップ715にて撮像画像PI全体が白色であるか否かを判定する。
白色領域数WNが閾値領域数WNth未満である場合、即ち、撮像画像PI全体が白色でないと判定される場合、CPUは、ステップ715にて「No」と判定し、ステップ720に進む。ステップ720にて、CPUは、後述する白色フラグWF、白色条件フラグWCF、曇りフラグCF及び霧フラグFFの値を「0」に設定することによってこれら初期化する。白色フラグWFの値は、白色領域数WNが閾値領域数WNth以上である場合に「1」に設定され、白色条件フラグWCFの値は、白色継続時間が所定の第1閾値時間T1th以上継続した場合に「1」に設定される。曇りフラグCFの値は、光透過部45aが曇っていると判定された場合に「1」に設定される。霧フラグFFの値は、車外に霧が発生していると判定された場合に「1」に設定される。なお、白色フラグWF、白色条件フラグWCF、曇りフラグCF及び霧フラグFFの値は、自車両SVの図示しないイグニッション・キー・スイッチがオフ位置からオン位置へと変更されたときに実行される初期化ルーチンにより「0」に設定される。ステップ720の実行後、CPUは、ステップ795に進み、本ルーチンを一旦終了し、図6に示すステップ620に進む。
ステップ620にて、CPUは、白色フラグWFの値が「1」に設定されているか否かを判定する。この時点では図7に示すステップ720にて白色フラグWFの値は「0」に設定されている。即ち、白色領域数WNが閾値領域数WNth未満であり、光透過部45aの曇り及び車外の霧の何れも発生していないと考えられる。よって、CPUは、ステップ620にて「No」と判定し、以下に述べるステップ630を実行し、ステップ695に進んで本ルーチンを一旦終了する。
ステップ630:CPUは、ヒータ31への電源の供給を停止する。これは、白色フラグWFの値が「0」であれば、光透過部45aが曇っておらず、ヒータ31が光透過部45aを加熱する必要がないためである。
その後光透過部45aが曇り始めたことにより、白色領域数WNが閾値領域数WNth以上となった場合、CPUが図7に示すステップ715に進むと、CPUは、そのステップ715にて「Yes」と判定し、以下に述べるステップ725を実行してからステップ730に進む。
ステップ725:CPUは、白色フラグWFの値を「1」に設定する。白色フラグWFの値は、白色領域数WNが閾値領域数WNth以上であれば、白色継続時間が第1閾値時間T1th未満であっても、「1」に設定される。
ステップ730:CPUは、白色領域数WNが閾値領域数WNth以上である状態が継続した時間を示す白色継続時間が第1閾値時間T1th以上であるか否かを判定する。なお、CPUは図示しない白色継続時間計数ルーチンを所定時間が経過する毎に実行している。CPUは、このルーチンにおいて、白色フラグWFの値が「1」となっている継続時間を白色継続時間として計測(カウントアップ)している。よって、白色フラグWFの値が「0」となると、白色継続時間は「0」にリセットされる。
白色継続時間が第1閾値時間T1th未満である場合、CPUは、ステップ730にて「No」と判定し、ステップ795に直接進んで本ルーチンを一旦終了し、図6に示すステップ620に進む。
上述したように白色フラグWFの値が「1」に設定されているので、CPUは、ステップ620にて「Yes」と判定し、以下に述べるステップ635及びステップ640に進む。
ステップ635:CPUは、車輪速センサ22からの車輪パルス信号に基づいて自車両SVの車速Vsを取得(演算)する。
ステップ640:CPUは、ステップ635にて取得した車速Vsの大きさが「0km/h」よりも大きいか否かを判定する。
以下、自車両SVが走行していて、車速Vsの大きさが「0km/h」よりも大きいと仮定して説明を続ける。この場合、CPUは、ステップ640にて「Yes」と判定し、ステップ645に進み、撮像画像PI全体が白色となった原因が光透過部45aの曇りによるものか車外の霧によるものかを判定する曇り・霧判定処理を実行する。即ち、CPUは、図6に示すステップ645に進むと、図8にフローチャートで示したサブルーチンの処理をステップ800から処理を開始し、以下に述べるステップ805及びステップ810をこの順に実行してからステップ815に進む。
ステップ805:CPUは、上述したように、各所定領域PAからエッジを検出する。
ステップ810:CPUは、上述したように、ステップ805にて検出したエッジに基づいて、各所定領域PAのエッジ指標値EIVを計算する。
ステップ815:CPUは、前回各所定領域PAのエッジ指標値EIVが計算されているか否かを判定する。
前回白色フラグWFの値が「0」に設定されていたので、図8に示すルーチンは実行されていない。従って、各所定領域PAのエッジ指標値EIVは前回計算されていないので、CPUは、ステップ815にて「No」と判定し、ステップ895に進み、本ルーチンを一旦終了し、図6に示すステップ650に進む。
ステップ650にて、CPUは、曇りフラグCFの値が「1」であるか否かを判定する。現時点では、光透過部45aが曇っていると判定されておらず、曇りフラグCFの値は「0」であるので、CPUは、ステップ650にて「No」と判定し、ステップ655に進む。ステップ655にて、CPUは、霧フラグFFの値が「1」であるか否かを判定する。
現時点では、車外に霧が発生していると判定されておらず、霧フラグFFの値は「0」であるので、CPUは、ステップ655にて「No」と判定してステップ630に進み、ヒータ31への電源の供給を停止する。次いで、CPUは、ステップ695に進んで本ルーチンを一旦終了する。
その後光透過部45aが曇ったまま所定時間が経過した場合、CPUは、図7に示すステップ715に進んだとき、上述したように白色領域数WNが閾値領域数WNth以上であるので、そのステップ715にて「Yes」と判定する。そして、CPUは、ステップ725に進み、白色フラグWFの値「1」に設定し、ステップ730に進む。
ここで、白色領域数WNが閾値領域数WNth以上である状態が第1閾値時間T1th以上継続したとすると、CPUは、ステップ730にて「Yes」と判定し、ステップ735に進む。ステップ735にて、CPUは、白色条件フラグWCFの値を「1」に設定し、ステップ795に進み、本ルーチンを一旦終了し、図6に示すステップ620に進む。
白色フラグWFの値は「1」であるので、CPUは、ステップ620にて「Yes」と判定し、ステップ635にて車速Vsを取得し、ステップ640に進む。車速Vsの大きさは「0km」よりも大きいため、CPUはステップ640にて「Yes」と判定し、ステップ645に進む。
そして、CPUは、図8に示すステップ805及びステップ810を実行してステップ815に進む。前回エッジ指標値EIVが計算されているので、ステップ815にて「Yes」と判定し、以下に述べるステップ820及びステップ825をこの順に実行する。
ステップ820:CPUは、今回ステップ810にて計算したエッジ指標値EIVが前回計算したエッジ指標値EIVの値から変化している所定領域PAの数を変化領域数CNとして計数する。
ステップ825:CPUは、変化領域数CNが閾値領域数CNth未満であるか否かを判定する。
現在の状態は光透過部45aが曇った状態であるから、今回のエッジ指標値EIVは前回のエッジ指標値EIVから変化する可能性は低い。よって、変化領域数CNが閾値領域数CNth未満である。この場合、CPUは、ステップ825にて「Yes」と判定し、ステップ830に進む。
ステップ830にて、CPUは、変化領域数CNが閾値領域数CNth未満である状態が継続した時間を示す無変化継続時間が所定の第2閾値時間T2th以上であるか否かを判定する。なお、CPUは図示しない無変化継続時間計数ルーチンを所定時間が経過する毎に実行している。CPUは、このルーチンにおいて、変化領域数CNが閾値領域数CNth未満である状態の継続時間を無変化継続時間として計測(カウントアップ)している。前述したように、光透過部45aが曇った状態であると、変化領域数CNが閾値領域数CNth未満である状態が継続する。従って、無変化継続時間が第2閾値時間T2th以上になる。この場合、CPUは、ステップ830にて「Yes」と判定し、ステップ835に進む。
ステップ835にて、CPUは、白色条件フラグWCFの値は「1」であるか否かを判定する。白色条件フラグWCFの値は「1」に設定されているので、CPUは、ステップ835にて「Yes」と判定し、ステップ840に進む。
ステップ840にて、CPUは、曇りフラグCFの値を「1」に設定するとともに、霧フラグFFの値を「0」に設定し、ステップ895に進み、本ルーチンを一旦終了し、図6に示すステップ650に進む。即ち、CPUは、図8に示すステップ835にて「Yes」と判定すると、白色継続時間が第1閾値時間T1th以上であって且つ無変化継続時間が第2閾値時間T2th以上であるという曇り条件が成立したと判定し、曇りフラグCFの値を「1」に設定する。
曇りフラグCFの値が「1」に設定されると、CPUは、図6に示すステップ650にて「Yes」と判定し、以下に述べるステップ660及びステップ665をこの順に実行し、ステップ695に進んで本ルーチンを一旦終了する。
ステップ660:CPUは、ヒータ31への電源の供給を開始する。即ち、CPUは、光透過部45aが曇っていると判定したため、ヒータ31へ電源を供給することによって、ヒータ31に光透過部45aを加熱させる。
ステップ665:CPUは、光透過部45aが曇っている旨を運転手に通知するために、曇り発生表示を表示器32に表示させ、曇り発生音をスピーカ33に出力させる。より具体的に述べると、CPUは、表示器32に「フロントウィンドが曇っています」とのメッセージ及び/又は特定の注意喚起マークを表示する処理を実行するとともに、スピーカ33から所定の警告音を出力させる処理を実行する。光透過部45aが曇っている場合には、撮像画像PIに基づく運転支援制御が実施されない。運転者は、曇り発生表示及び曇り発生音により、運転支援制御が実施されない理由を知ることができる。
なお、CPUが、図8に示すステップ830に進んだとき、無変化継続時間が第2閾値時間T2th未満であれば、ステップ830にて「No」と判定し、ステップ895に進み、本ルーチンを一旦終了し、図6に示すステップ650以降の処理に進む。更に、CPUが、図8に示すステップ835に進んだとき、白色条件フラグWCFの値が「0」であれば、そのステップ835にて「No」と判定し、ステップ895に進み、本ルーチンを一旦終了し、図6に示すステップ650以降の処理に進む。これらの場合、曇りフラグCFの値は「1」に設定されず、「0」のままである。
ヒータ31の加熱により光透過部45aの曇りが除去された場合、撮像画像PI全体が白色でなくなり、白色領域数WNが閾値領域数WNth未満となる。この場合、光透過部45aが曇ってなく且つ車外に霧も発生していない。この場合、CPUは、図6のステップ615を経由して図7に示すステップ715に進んだとき、そのステップ715にて「No」と判定し、白色フラグWF、白色条件フラグWCF、曇りフラグCF及び霧フラグFFを初期化する。その後、CPUは、図6に示すステップ620に進む。白色フラグWFの値は「0」に設定されているので、CPUは、ステップ620にて「No」と判定し、ステップ630に進み、ヒータ31への電源の供給を停止し、ステップ695に進み、本ルーチンを一旦終了する。これによって、光透過部45aから曇りが除去されたことを正確に検出でき、光透過部45aから曇りが除去された場合にはヒータ31への電源供給を停止するので、無駄に消費される電力量を低減できる。
一方、車外に霧が発生し、霧が発生したまま所定時間が経過した場合にも白色領域数WNが閾値領域数WNth以上となり、更に、白色継続時間が第1閾値時間T1th以上となる。よって、この場合、CPUは、図6のステップ615を経由して図7に示すステップ715に進んだとき、そのステップ715にて「Yes」と判定し、更に、ステップ730にて「Yes」と判定してステップ735に進み、白色条件フラグWCFの値を「1」に設定する。従って、CPUは、ステップ620にて「Yes」と判定し、ステップ635にて車速Vsを取得し、ステップ640にて「Yes」と判定し、ステップ645に進む。CPUは、ステップ645に進むと、図8に示すステップ805以降の処理に進み、ステップ815にて「Yes」と判定し、ステップ820を実行してステップ825に進む。
上述したように、車外に霧が発生している場合、変化領域数CNが閾値領域数CNth以上となる可能性が高い。ここでは、変化領域数CNが閾値領域数CNth以上であると仮定すると、CPUは、ステップ825にて「No」と判定し、ステップ845に進む。
ステップ845にて、CPUは、変化領域数CNが閾値領域数CNth以上である状態が継続した時間を示す変化継続時間が所定の第3閾値時間T3th以上であるか否かを判定する。なお、CPUは図示しない変化継続時間計数ルーチンを所定時間が経過する毎に実行している。CPUは、このルーチンにおいて、変化領域数CNが閾値領域数CNth以上である継続時間を変化継続時間として計測(カウントアップ)している。ここでは、変化継続時間が第3閾値時間T3th以上であると仮定する。この場合、CPUは、ステップ845にて「Yes」と判定し、ステップ850に進む。
ステップ850にて、CPUは、白色条件フラグWCFの値は「1」であるか否かを判定する。白色条件フラグWCFの値は「1」に設定されているので、CPUは、ステップ850にて「Yes」と判定し、ステップ855に進む。
ステップ855にて、CPUは、霧フラグFFの値を「1」に設定するとともに、曇りフラグCFの値を「0」に設定し、ステップ895に進み、本ルーチンを一旦終了し、図6に示すステップ650に進む。即ち、CPUは、図8に示すステップ845及びステップ850の両ステップにて「Yes」と判定すると、白色継続時間が第1閾値時間T1th以上であって且つ変化継続時間が第3閾値時間T3th以上であるという霧条件が成立したと判定し、霧フラグFFの値を「1」に設定する。
この場合、CPUは、図6に示すステップ650にて「No」と判定してステップ655に進み、ステップ655にて「Yes」と判定して以下に述べるステップ670及びステップ675をこの順に実行する。その後、CPUはステップ695に進み、本ルーチンを一旦終了する。
ステップ670:CPUは、ヒータ31への電源の供給を停止する。車外に霧が発生している場合にヒータ31へ電源を供給しても霧が除去できないためである。
ステップ675:CPUは、車外に霧が発生している旨を運転手に通知するために、霧発生表示を表示器32に表示させ、霧発生音をスピーカ33に出力させる。より具体的に述べると、CPUは、表示器32に「霧が発生しています」とのメッセージ及び/又は特定の注意喚起マークを表示する処理を実行するとともに、スピーカ33から所定の警告音を出力させる処理を実行する。霧が発生している場合も、光透過部45aが曇っている場合と同様に、撮像画像PIに基づく運転支援制御が実施されないため、運転者は、霧発生表示及び霧発生音により、運転支援制御が実施されない理由を知ることができる。
なお、CPUが、図8に示すステップ845に進んだとき、変化継続時間が第3閾値時間T3th未満であれば、ステップ845にて「No」と判定し、ステップ895に進み、本ルーチンを一旦終了し、図6に示すステップ650以降の処理に進む。更に、CPUが、図8に示すステップ850に進んだとき、白色条件フラグWCFの値が「0」であれば、そのステップ850にて「No」と判定し、ステップ895に進み、本ルーチンを一旦終了し、図6に示すステップ650以降の処理に進む。霧条件の白色継続時間が第1閾値時間T1th以上であるという条件が未成立であるので、車外に霧が発生していないと判定される。この結果、霧フラグFFの値は「1」に設定されず、「0」のままである。
自車両SVが停止している場合、撮像部24が撮像した撮像画像PIの風景は変化しないため、車外に霧が発生していても、変化領域数CNが閾値領域数CNth未満となる可能性がある。これに起因して、本制御装置は、車外に霧が発生している場合であっても「光透過部45aが曇っている」と誤判定する可能性がある。そこで、CPUは、自車両SVが停止している場合、即ち、車速Vsの大きさが「0km/h」である場合、ステップ640にて「No」と判定し、ステップ645の曇り・霧判定処理(即ち、図8のサブルーチン)を実行せずに、ステップ650以降の処理に進む。従って、自車両SVが停止している場合、CPUは、光透過部45aが曇っているのか、車外に霧が発生しているのかを判定せずに、前回の判定結果に基づいてステップ650以降の処理を実行する。なお、この場合、CPUは、無変化継続時間及び変化継続時間の何れも計時しない(カウントアップしない。)。
以上から理解されるように、本制御装置は、変化領域数CNが閾値領域数CNth未満である状態が第2閾値時間T2th以上継続した場合、光透過部45aが曇っていると判定する。光透過部45aが曇っている場合には変化領域数CNが閾値領域数CNth未満となる可能性が高く、車外に霧が発生している場合には変化領域数CNが閾値領域数CNth以上となる可能性が高いので、より正確に「光透過部45aが曇っていること」を判定することができる。そして、本制御装置は、光透過部45aが曇っていると判定した場合、ヒータ31に光透過部45aを加熱させ、光透過部45aが曇っていると判定していない場合、ヒータ31に光透過部45aを加熱させない。これによって、無駄に消費される電力量を低減することができる。
本発明は前述した実施形態に限定されることはなく、本発明の種々の変形例を採用することができる。
例えば、本制御装置は、各所定領域PAにおけるエッジ強度の平均値(平均エッジ強度)をエッジ指標値EIVとして用いてもよい。この場合、本制御装置は、今回の平均エッジ強度の前回の平均エッジ強度からの変化量の大きさが閾値変化量以上である所定領域PAの数を変化領域数CNとして計数する。
上述した実施形態では、エッジ指標値EIVは「1」及び「0」の何れかの値である。このため、本制御装置は、今回のエッジ指標値EIVが前回のエッジ指標値EIVから変化している所定領域PAの数を変化領域数CNとして計数した。この計数方法は、今回のエッジ指標値EIVの前回のエッジ指標値EIVからの変化量の大きさが「「1」に設定された閾値変化量」以上である所定領域PAの数を変化領域数CNとして計数していると表現できる。
更に、図8に示すステップ825にて、本制御装置は、変化領域数CNを「総ての所定領域PAの数」で除算した値を示す変化割合が閾値割合未満であるか否かを判定してもよい。加えて、CPUはステップ640の処理を省略することもできる。この場合、CPUは常にステップ635からステップ645へ進む。これは、霧は一般には風によって移動するので、自車両SVが走行していない場合であっても霧が発生している場合には変化領域数CNが閾値領域数CNth以上になる頻度が高いからである。
更に、カメラセンサ21は、フロントウィンド45とは別の窓部に装着されてもよい。例えば、自車両SVの後方に位置する物標を検出可能となるように、自車両SVの図示しないバックウィンドに装着されてもよい。