以下に添付図面を参照して本願に係る認識プログラム、認識方法および認識装置について説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
図1は、実施例1に係るメータ監視システムの構成例を示す図である。図1に示すメータ監視システム1は、遠隔地等に設置されるドラム式メータ2A〜2Cに表示された文字を画像処理によって認識することにより、クライアント端末30にメータ監視サービスを提供するものである。
図1に示すように、メータ監視システム1には、サーバ装置10と、カメラ20A〜20Cと、クライアント端末30とが含まれる。以下では、ドラム式メータ2A〜2Cを総称する場合に「ドラム式メータ2」と記載すると共に、カメラ20A〜20Cを総称する場合に「カメラ20」と記載することがある。なお、図1には、サーバ装置10およびクライアント端末30を1つずつ例示したが、1つのサーバ装置30に複数のクライアント端末30が収容されることとしてもかまわない。また、図1には、3つのカメラ20を例示したが、サーバ装置10に収容されるカメラ20の数は、3つに限定されず、単数であっても複数であってもかまわない。
これらサーバ装置10、カメラ20およびクライアント端末30の間は、任意のネットワークNWを介して接続される。このネットワークNWは、有線または無線を問わず、インターネット、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の種類の通信網により構築することができる。
ドラム式メータ2は、複数桁のドラムを回転させることにより、計測値を表示するメータである。
ここで、ドラム式メータ2が搭載するドラムには、線画の一例として、数字が配置される例を挙げて以下の説明を行うこととする。以下では、メータが計測する物理量や指標などの計測値のことを「メータ計測値」と記載することがある。また、メータ計測値に対応する数字列が表示される領域のことを「メータ表示領域」と記載することがある。さらに、メータ表示領域の各桁に表示される1字分の数字の領域のことを「数字表示領域」と記載することがある。なお、以下では、桁数は、左端の桁から右端の桁へ向けて昇順にカウントを開始し、左端の桁のことを「開始桁」と記載し、右端の桁のことを「最終桁」と記載することがある。
このようなドラム式メータ2のメータ計測値が画像認識される場合、次に挙げる(1)〜(7)の共通項が活用される。
(1)ドラムの円周部分には、一例として、0〜9までの数字が上から順番に配置される。
(2)ドラムは、メータ表示領域の手前側から奥側の方向、すなわち鉛直の下方から上方へ向かって回転する。
(3)最終桁のドラムは、メータ計測値の小数点レベルの変動にも連動して回転する。
(4)最終桁以外の桁のドラムは、1つ下位の桁の数字が「9」から「0」へ繰り上がるタイミングに合わせて1つインクリメントされた数字が定位置となるまで回転する。
(5)数字表示領域は、ドラム上に配置される1字分の数字のサイズよりも大きい。
(6)数字表示領域には、同時に2つの数字が出現しうるが、完全には数字表示領域に収まらない。
(7)ドラム上に配置される数字と数字の間には、区切りとして空白部が挿入される。
サーバ装置10は、上記のメータ監視サービスをクライアント端末30に提供するコンピュータである。
ここで言う「サーバ装置」というラベルは、あくまで機能の一面からの分類であってコンピュータの種類やそのハードウェア構成は特定のものに限定されない。例えば、サーバ装置10は、パッケージソフトウェア又はオンラインソフトウェアとして、上記のメータ監視サービスを実現するメータ監視プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、サーバ装置10は、上記のメータ監視サービスを提供するWebサーバとして実装することとしてもよいし、アウトソーシングによって上記のメータ監視サービスを提供するクラウドとして実装することとしてもかまわない。
カメラ20は、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)などの撮像素子を搭載する撮像装置である。
例えば、カメラ20は、1対1に対応するドラム式メータ2に併設される。このとき、カメラ20は、少なくともドラム式メータ2のメータ表示領域がカメラ20の撮像範囲に含まれる状態で配置される。このようなカメラ20の配置の下、カメラ20は、サーバ装置10からのリクエストまたはサーバ装置10等の外部装置により指示された設定、例えばタイマなどにしたがってドラム式メータ2のメータ表示領域を撮像する。以下では、ドラム式メータ2のメータ表示領域が撮像された画像のことを「メータ画像」と記載する場合がある。このメータ画像は、ドラム式メータ2A〜2Cなどの個体を識別できるように、ドラム式メータ2の識別情報と共にサーバ装置10へアップロードされる。このとき、カメラ20は、リアルタイムでメータ画像をアップロードすることとしてもよいし、所定の期間に渡って蓄積されたメータ画像をバッチ処理でアップロードすることとしてもかまわない。なお、ここでは、ドラム式メータ2およびカメラ20が1対1で併設される場合を例示したが、必ずしもドラム式メータ2およびカメラ20を1対1で併設せずともかまわない。例えば、1つのカメラ20が複数のドラム式メータ2を撮影できる場合、複数のドラム式メータ2につき1つのカメラ20を併設することとしてもかまわない。
クライアント端末30は、上記のメータ監視サービスの提供を受けるコンピュータである。
ここで言う「クライアント端末」というラベルも、あくまで機能の一面からの分類であってコンピュータの種類やそのハードウェア構成は特定のものに限定されない。例えば、クライアント端末30には、パーソナルコンピュータやワークステーションなどのデスクトップ型のコンピュータなどが対応する。このようなデスクトップ型のコンピュータに限定されず、ラックトップ型のコンピュータや携帯端末装置、ウェアラブル端末などがクライアント端末として採用されることとしてもかまわない。
例えば、クライアント端末30は、上記のメータ監視サービスの利用が許可されたアカウントを通じてサーバ装置10へのログイン認証に成功した場合、サーバ装置10からの指示にしたがってドラム式メータ2のメータ計数値を表示するメータ監視画面等を表示することができる。この他、クライアント端末30は、予め指定された定期日時などに、サーバ装置10からのプッシュ通知としてメータ計測値などを受け付けることもできる。
[サーバ装置10の機能的構成]
図2は、実施例1に係るサーバ装置10の機能的構成の一例を示すブロック図である。図2に示すように、サーバ装置10は、通信I/F(InterFace)部11と、記憶部13と、制御部15とを有する。図2には、データの授受の関係を表す実線が示されているが、説明の便宜上、最小限の部分について示されているに過ぎない。すなわち、各処理部に関するデータの入出力は、図示の例に限定されず、図示以外のデータの入出力、例えば処理部及び処理部の間、処理部及びデータの間、並びに、処理部及び外部装置の間のデータの入出力が行われることとしてもかまわない。
通信I/F部11は、他の装置、例えばカメラ20やクライアント端末30との間で通信制御を行うインタフェースである。
一実施形態として、通信I/F部11には、LAN(Local Area Network)カードなどのネットワークインタフェースカードを採用できる。例えば、通信I/F部11は、カメラ20から画像を受信したり、カメラ20に関する各種の設定、例えばカメラ20に撮像を指示する日時などをカメラ20へ送信したりすることができる。また、通信I/F部11は、クライアント端末30からログイン認証に用いるアカウント情報を受け付けたり、ログイン認証に成功したクライアント端末30にメータ監視画面を送信したりする。
記憶部13は、制御部15で実行されるOS(Operating System)を始め、上記のメータ監視サービスを実現するアプリケーションプログラムなどの各種プログラムに用いられるデータを記憶する記憶デバイスである。
一実施形態として、記憶部13は、サーバ装置10における補助記憶装置として実装することができる。例えば、記憶部13には、HDD(Hard Disk Drive)、光ディスクやSSD(Solid State Drive)などを採用できる。なお、記憶部13は、必ずしも補助記憶装置として実装されずともよく、サーバ装置10における主記憶装置として実装することもできる。この場合、記憶部13には、各種の半導体メモリ素子、例えばRAM(Random Access Memory)やフラッシュメモリを採用できる。
記憶部13は、制御部15で実行されるプログラムに用いられるデータの一例として、テンプレートデータ13aと、メータ計測値データ13bとを記憶する。これらのデータ以外にも、記憶部13には、他の電子データが記憶されることとしてもかまわない。例えば、記憶部13は、クライアント端末30を使用するユーザに付与されたアカウント情報なども併せて記憶することもできる。なお、テンプレートデータ13aおよびメータ計測値データ13bの説明は、各データの登録または参照が行われる制御部15の説明と合わせて行うこととする。
制御部15は、サーバ装置10の全体制御を行う処理部である。
一実施形態として、制御部15は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などのハードウェアプロセッサにより実装することができる。ここでは、プロセッサの一例として、CPUやMPUを例示したが、汎用型および特化型を問わず、任意のプロセッサ、例えばGPGPU(Graphics Processing Unit)やDSP(Digital Signal Processor)により実装することができる。この他、制御部15は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによって実現されることとしてもかまわない。
制御部15は、図示しない主記憶装置として実装されるDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などのRAMのワークエリア上に、上記のメータ監視プログラムを展開することにより、下記の処理部を仮想的に実現する。
制御部15は、図2に示すように、取得部15aと、切出し部15bと、認識部15cと、分離部15dと、第1の特定部15eと、第2の特定部15fと、組み立て部15gとを有する。
取得部15aは、画像を取得する処理部である。
一実施形態として、取得部15aは、カメラ20からサーバ装置10へメータ画像をアップロードさせることにより、当該メータ画像を取得することができる。例えば、取得部15aは、カメラ20によりメータ画像が撮像される度に当該メータ画像をリアルタイムでアップロードさせることができる。他の一例として、取得部15aは、クライアント端末30からアップロードの指示操作が実行された場合、それまでにカメラ20に保存されていたメータ画像をアップロードさせることもできる。更なる一例として、取得部15aは、一定の周期、例えば1時間や1日、1週間、1ヶ月ごとにメータ画像をアップロードさせることとしてもよいし、定期日時、例えば毎日12時や毎月15日などにメータ画像をアップロードさせることとしてもかまわない。このようにカメラ20からアップロードされたメータ画像は、記憶部13へ保存しておくこともできる。この場合、カメラ20に対応付けられたドラム式メータ2の識別情報をメータ画像のファイル名やメータ画像のメタデータ等に埋め込むことにより、カメラ20により撮像されたドラム式メータ2の個体が識別可能な状態でメータ画像を記憶部13へ保存することができる。
他の実施形態として、取得部15aは、メータ画像を蓄積するメモリカードやUSB(Universal Serial Bus)メモリなどのリムーバブルメディアからメータ画像を取得することもできる。更なる一例として、取得部15aは、カメラ20以外の他の外部装置からネットワークNWを介して受信することによってメータ画像を取得することもできる。このように取得部15aがメータ画像を取得する経路は任意の経路であってよく、特定の経路に限定されない。
切出し部15bは、画像からメータ表示領域を切り出す処理部である。
一実施形態として、切出し部15bは、取得部15aにより取得されたメータ画像から、切出しがあらかじめ設定された領域をメータ表示領域として切り出すことができる。他の一例として、切出し部15bは、取得部15aにより取得されたメータ画像から、ドラム式メータ2のメータ表示領域の近傍に配置されたマーカを認識する。このマーカとメータ表示領域との間の相対位置をあらかじめキャリブレーションしておくことにより、切出し部15bは、メータ画像上のマーカの位置からメータ表示領域の位置を求めて当該メータ表示領域を切り出すことができる。
他の実施形態として、切出し部15bは、取得部15aにより取得されたメータ画像をクライアント端末30に表示させると共に当該メータ画像から切り出す矩形領域の照準を表示させる。この矩形領域の照準をメータ表示領域に合わせるユーザ操作をクライアント端末30を介して受け付けることにより、メータ表示領域を切り出すこともできる。この他、切出し部15bは、メータ表示領域に含まれる数字の背景に対応する色情報に基づいてメータ表示領域を切り出すこともできる。
このようにメータ画像からメータ表示領域が切り出された後、切出し部15bは、メータ表示領域を各桁の数字表示領域へ分割する。例えば、切出し部15bは、メータ表示領域上であらかじめ分割が設定された各桁の区画にしたがって、メータ画像から切り出されたメータ表示領域を数字表示領域に分割する。他の一例として、切出し部15bは、メータ表示領域に桁が整列する桁の方向と同一の方向に向かって、メータ画像から切り出されたメータ表示領域に含まれる数字の背景に対応する色を探索することにより、メータ表示領域から数字と数字が並ぶ隙間を検出する。その上で、切出し部15bは、数字の隙間を桁の方向と直交する方向に区切ることによって当該メータ表示領域を複数の数字表示領域に分割することとしてもよい。
図3は、メータ表示領域の切出しから数字表示領域への分割までの模式図の一例を示す図である。図3に示すように、取得部15aによりメータ画像300が取得されると、切出し部15bは、当該メータ画像300からドラム式メータ2のメータ表示領域310を切り出す。このようにメータ画像300からメータ表示領域310が切り出された後、切出し部15bは、メータ表示領域310を各桁の数字表示領域310A〜310Fへ分割する。この場合、開始桁「1」である数字表示領域310Aから順に最終桁「N=6」である数字表示領域310Fまで6つ数字表示領域が得られる。
認識部15cは、数字表示領域に対応する文字を認識する処理部である。
一実施形態として、認識部15cは、図示しない桁数カウンタが保持するレジスタの値nを初期値、例えば「1」に初期化する。続いて、認識部15cは、切出し部15bによりメータ表示領域から分割された数字表示領域のうち開始桁「1」の数字表示領域から順に選択する。その後、認識部15cは、最終桁「N」の数字表示領域が選択されるまで、記憶部13に記憶されたテンプレートデータ13aを参照して、各桁の数字表示領域に次のような画像処理を実行することによって数字表示領域に対応する数字を認識する。このテンプレートデータ13aの一例として、各数字のテンプレート画像、すなわち数字「0」のテンプレート画像、数字「1」のテンプレート画像、・・・、数字「9」のテンプレート画像といった10種類のテンプレート画像が参照される。
このようなテンプレートデータ13aを参照して、認識部15cは、数字ごとに、テンプレート画像と、先に選択された数字表示領域の部分画像との照合、いわゆるテンプレートマッチングを実行する。ここで、最終桁以外の他の桁では、上記の(4)で説明した通り、桁が繰り上がる時を除いて、数字は定位置に存在する。すなわち、数字が形成する線画の中心と数字表示領域の中心とが略一致する状態であると想定できる。このため、テンプレート画像の中心と、数字表示領域の中心とを一致させる位置合わせが行われた状態で、テンプレートマッチングが実行される。このようなテンプレートマッチングによって、テンプレート画像および数字表示領域の間の類似度が数字ごとに得られる。その上で、認識部15cは、各テンプレート画像のうち数字表示領域との間で最高の類似度が算出されたテンプレート画像の数字を当該数字表示領域に対応する数字と認識する。続いて、認識部15cは、桁数カウンタが保持するレジスタの値nを1つインクリメントする。その後、認識部15cは、桁数カウンタが保持するレジスタの値nが最終桁Nになるまで、数字表示領域に対応する数字の認識を繰り返し実行する。
分離部15dは、数字表示領域に含まれる複数の文字片候補を分離する処理部である。
一実施形態として、分離部15dは、桁数カウンタが保持するレジスタの値nが最終桁Nになると、処理を起動する。すなわち、上記の(3)で説明した通り、最終桁のドラムは、メータ計測値の小数点レベルの変動にも連動して回転する。したがって、上記の(6)で説明した通り、数字表示領域の外枠を形成する表示枠には、複数の数字が含まれる可能性がある。このことから、分離部15dは、上記の(7)の事項にしたがって、ドラム上に配置される数字と数字の区切りを検出するために、数字と数字の間に挿入される空白部を検出する。このとき、複数の空白部が検出された場合、最終桁の数字表示領域には、数字が1つしか含まれない可能性が高いと判断できる。この場合、分離部15dは、認識部15cと同様のテンプレートマッチングを認識部15cに実行させることにより、最終桁の数字表示領域に対応する数字を認識させる。
一方、1つの空白部しか検出されない場合、最終桁の数字表示領域には、2つの数字が含まれる可能性が高いと判明する。この場合、分離部15dは、最終桁の数字表示領域から検出された空白部を境界に、最終桁の数字表示領域を2つに分離する。このように2つに分離される領域には、上記の(6)で説明した通り、完全には2つの数字が収まらないので、各々の領域には、数字の文字片が含まれる。このことから、2つに分離された領域のうち一方の分離先を「第1の文字片領域」と記載すると共に他方の分離先を「第2の文字片領域」と記載する場合がある。なお、第1の文字片領域は、第1の線画領域の一例である。また、第2の文字片領域は、第2の線画領域の一例である。
図4は、複数の文字片候補の分離方法の一例を示す図である。図4には、図3に示すメータ表示領域310に含まれる数字表示領域310A〜310Fのうち最終桁の数字表示領域310Fが示されている。図4に示す最終桁の数字表示領域310Fから、背景色が識別される。例えば、分離部15dは、数字部分と背景部分のコントラストの差と、数字部分と背景部分の画素数、面積の差とから、背景色を「黒」、数字の色を「白」と識別できる。この場合、分離部15dは、背景色の「黒」に対応し、かつ数字表示領域310Fを桁の方向、すなわち左右の横方向へ分断する矩形状のブロブを空白部400として検出する。ここでは、メータ計測値に対応する数字列が並ぶ桁の方向が横方向であるので、分離部15dは、数字表示領域310Fを横断する空白部400を境界に、数字表示領域310Fを上下に分離する。これによって、上側に分離された第1の文字片領域410と、下側に分離された第2の文字片領域420とが得られる。
第1の特定部15eは、文字片領域ごとに当該文字片領域に含まれる文字片候補を特定する処理部である。
一側面として、第1の特定部15eは、第1の文字片領域に含まれる文字片候補を特定する。ここで、上側に分離された第1の文字片領域には、数字の下部分が含まれる可能性が高い一方で、数字の上部分が含まれる可能性は低い。このことから、第1の特定部15eは、テンプレート画像ごとに、当該テンプレート画像の数字の下部分が切り出された部分テンプレート画像を生成する。
図5は、部分テンプレート画像の切出し方法の一例を示す図である。例えば、数字「0」のテンプレート画像500の場合、数字「0」の最下端の位置から上方向に第1の文字片領域410に対応する高さH1分の領域を切り出すことにより、部分テンプレート画像500Aが生成される。また、数字「1」のテンプレート画像510の場合、数字「1」の最下端の位置から上方向に第1の文字片領域410に対応する高さH1分の領域を切り出すことにより、部分テンプレート画像510Aが生成される。これと同様の要領で、数字「2」のテンプレート画像520〜数字「9」のテンプレート画像590から、部分テンプレート画像520A〜部分テンプレート画像590Aが生成される。
このように部分テンプレート画像が生成された後、第1の特定部15eは、部分テンプレート画像ごとに、当該部分テンプレート画像と、第1の文字片領域に対応する部分画像との間でテンプレートマッチングを実行する。このテンプレートマッチングでは、部分テンプレート画像の下端と、第1の文字片領域に対応する部分画像の下端とを一致させる位置合わせが行われた上で、両者の類似度が算出される。例えば、数字「0」の場合、部分テンプレート画像500Aの下端と、第1の文字片領域410の下端との位置合わせを行ってテンプレートマッチングが実行される。他の数字においても、部分テンプレート画像の中身は異なれども同様のテンプレートマッチングが実行される。この結果、部分テンプレート画像および数字表示領域の間の類似度が数字ごとに得られる。
その上で、第1の特定部15eは、各部分テンプレート画像のうち第1の文字片領域との間で所定の閾値Th以上の類似度が算出された部分テンプレート画像の数字を第1の文字片領域に含まれる文字片候補として特定する。
他の一側面として、第1の特定部15eは、第2の文字片領域に含まれる文字片候補を特定する。ここで、下側に分離された第2の文字片領域には、数字の上部分が含まれる可能性が高い一方で、数字の下部分が含まれる可能性は低い。このことから、第1の特定部15eは、テンプレート画像ごとに、当該テンプレート画像の数字の上部分が切り出された部分テンプレート画像を生成する。
図6は、部分テンプレート画像の切出し方法の一例を示す図である。例えば、数字「0」のテンプレート画像600の場合、数字「0」の最上端の位置から下方向に第2の文字片領域420に対応する高さH2分の領域を切り出すことにより、部分テンプレート画像600Aが生成される。また、数字「1」のテンプレート画像610の場合、数字「1」の最上端の位置から下方向に第2の文字片領域420に対応する高さH2分の領域を切り出すことにより、部分テンプレート画像610Aが生成される。これと同様の要領で、数字「2」のテンプレート画像620〜数字「9」のテンプレート画像690から、部分テンプレート画像620A〜部分テンプレート画像690Aが生成される。
このように部分テンプレート画像が生成された後、第1の特定部15eは、部分テンプレート画像ごとに、当該部分テンプレート画像と、第2の文字片領域に対応する部分画像との間でテンプレートマッチングを実行する。このテンプレートマッチングでは、部分テンプレート画像の上端と、第2の文字片領域に対応する部分画像の上端とを一致させる位置合わせが行われた上で、両者の類似度が算出される。例えば、数字「0」の場合、部分テンプレート画像600Aの上端と、第2の文字片領域420の上端との位置合わせを行ってテンプレートマッチングが実行される。他の数字においても、部分テンプレート画像の中身は異なれども同様のテンプレートマッチングが実行される。この結果、部分テンプレート画像および数字表示領域の間の類似度が数字ごとに得られる。
その上で、第1の特定部15eは、各部分テンプレート画像のうち第2の文字片領域との間で所定の閾値Th以上の類似度が算出された部分テンプレート画像の数字を第2の文字片領域に含まれる文字片候補として特定する。
第2の特定部15fは、第1の文字片領域の文字片候補および第2の文字片領域の文字片候補の組合せの中から、ドラム式メータ2の数字の配列条件に適合する組合せを特定する処理部である。
一実施形態として、第2の特定部15fは、第1の文字片領域の文字片候補のうち文字片候補を1つ選択する。以下では、第1の文字片領域の文字片候補の中でも選択された文字片候補を他の文字片候補と識別するために、「選択中の文字片候補」と記載する場合がある。そして、第2の特定部15fは、第2の文字片領域の文字片候補の中に、選択中の文字片候補との間で上記の数字の配列条件を満たす第2の文字片領域の文字片候補が存在するか否かを判定する。すなわち、上記の(1)で説明した通り、ドラムの円周部分には、0〜9までの数字が上から順番に配列される。この配列条件にしたがって、第2の文字片領域の文字片候補の中に、選択中の文字片候補の数字に後続する連番の数字を持つものが存在するか否かが判定される。その後、第2の特定部15fは、上記の数字の配列条件を満たす第2の文字片領域の文字片候補が判明するまで、第1の文字片領域の文字片候補の中から選択を繰り返し、上記の数字の配列条件を満たす第2の文字片領域の文字片候補を探索する。このような探索が実行されることによって、ドラム式メータ2の数字の配列条件に適合する、第1の文字片領域の文字片候補および第2の文字片領域の文字片候補の組合せが特定される。
この探索を具体的に例を挙げて説明する。ここでは、次に示す(イ)及び(ロ)の条件下で探索が実行されることとする。(イ)第1の文字片領域の文字片候補は「3」、「5」、「9」であるとする。(ロ)第2の文字片領域の文字片候補は「6」であるとする。この条件下では、まず、第1の文字片領域の文字片候補の中から数字「3」が選択される。そして、選択中の文字片候補の数字「3」に後続する連番の数字「4」を持つものが第2の文字片領域の文字片候補に存在するか否かが判定される。この条件下では第2の文字片領域の文字片候補の中に数字「4」は存在しない。このため、第1の文字片領域の文字片候補の中から数字「5」が改めて選択される。そして、選択中の文字片候補の数字「5」に後続する連番の数字「6」を持つものが第2の文字片領域の文字片候補に存在するか否かが判定される。この場合、条件(ロ)の通り、第2の文字片領域の文字片候補の中に数字「6」が存在する。したがって、第1の文字片領域の文字片候補の数字「5」および第2の文字片領域の文字片候補の数字「6」の組合せがドラム式メータ2の数字の配列条件に適合する組合せとして特定される。
すなわち、条件(イ)として想定に組み込んだ通り、第1の文字片領域410に含まれる数字の下部分だけでは、部分テンプレート画像との間でテンプレートマッチングを実行したとしても、第1の文字片領域の文字片候補を正解である数字「5」だけには絞り込みにくい。このため、正解の数字「5」と下部部の形状が類似する数字「3」および数字「9」も、第1の文字片領域の文字片候補に含まれる可能性がある。このように第1の文字片領域の文字片候補が複数存在する場合でも、ドラム式メータ2の数字の配列条件に適合する組合せを探索することで、第1の文字片領域の文字片候補の数字「5」および第2の文字片領域の文字片候補の数字「6」の組合せを特定できる。
このようにドラム式メータ2の数字の配列条件に適合する組合せが特定された後、第2の特定部15fは、当該組合せから最終桁における整数部の数字と、最終桁における小数部、例えば小数点第一位の数字とをさらに特定する。
ここで、第1の文字片領域の文字片候補および第2の文字片領域の文字片候補の組合せが判明した場合、最終桁が繰り上がりの途中であることから、整数部には、ドラム式メータ2の数字の配列条件に適合する第1の文字片領域の文字片候補の数字が当てはまると判断できる。
さらに、第2の特定部15fは、空白部の位置から小数部の数字を算出することができる。例えば、第2の特定部15fは、最終桁の数字表示領域の最下端に対する空白部の高さ方向の中心位置の変位を算出する。そして、第2の特定部15fは、最終桁の数字表示領域の高さに対する、空白部の高さ方向の中心位置の変位の割合、例えば「空白部の高さ方向の中心位置の変位÷最終桁の数字表示領域の高さ」を小数部として算出する。
図7A〜図7Cは、空白部および最終桁の数字表示領域の位置関係の一例を示す図である。図7A及び図7Cには、いずれも最終桁の小数部が「0」である場合の位置関係が示されているが、図7Aに示す最終桁の数字表示領域310Fには、数字「5」が定位置に表示される一方で、図7Cに示す最終桁の数字表示領域310Fには、数字「6」が定位置に表示される点で異なる。さらに、図7Bには、最終桁の小数部が「0.5」である場合の位置関係が示されている。なお、図7A及び図7Cの例では、複数の空白部が検出される場合、2つの数字が最終桁の数字表示領域310Fに出現しないので、小数部の算出は実行されないが、上記の割合が小数部に対応することを説明する観点から計算例を説明することする。
図7Aに示すように、数字「5」が定位置に位置する場合、空白部400の高さ方向の中心位置は、最終桁の数字表示領域310Fの最下端と同じ位置に存在する。この場合、空白部400の高さ方向の中心位置の変位もゼロとなるので、小数部を「0」と算出できる。また、図7Bに示すように、ドラムが数字「5」の定位置からの回転を開始し、数字「6」の定位置へ切り替わるまでの半分まで回転した場合、空白部400の高さ方向の中心位置は、最終桁の数字表示領域310Fの高さ方向の中心位置と同じ位置に存在する。この場合、空白部400の高さ方向の中心位置の変位は、D1(=0.5h1)となるので、小数部は、D1÷h1(0.5h1÷h1)の計算により、「0.5」と算出できる。さらに、図7Cに示すように、ドラムが数字「6」の定位置まで回転した場合、空白部400の高さ方向の中心位置は、最終桁の数字表示領域310Fの最上端と同じ位置に達する。この場合、空白部400の高さ方向の中心位置の変位は、D2(=h1)となるので、小数部は、D2÷h1(h1÷h1)の計算により、「1」と算出できる。
ここで、空白部の位置が小数部の数字の算出に有利に働く根拠の一例を挙げる。すなわち、空白部の幅は、メータの種類によって異なることもあれば、同一の種類のメータであってもその製造元によって異なる場合がある。その一方で、アクチュエータ等の駆動機構の構造や制御が複雑化するのを抑制する観点から、数字の表示の切替え時にドラムを回転させる角度は、一定となるように設計される。このため、同一のドラムでは、各数字の間で互いの高さは共通すると共に、各空白部の間で互いの高さも共通する。したがって、メータの種類が違っても、あるいはメータの製造元が異なっても、同一のロジックで小数部の数字を算出できるので、ロバスト性を向上させることができる。
なお、ここでは、あくまで一例として、空白部の位置から小数部の数字を算出する例を説明したが、例えば、数字の高さ方向の中心が最終桁の数字表示領域310Fの枠内に存在する位置から小数部を算出することもできる。この場合、第1の文字片領域から推定される数字領域の高さ方向の中心が枠内の中心に位置する場合、小数部は「0」と算出される。また、第1の文字片領域または第2の文字片領域から推定される数字領域の高さ方向の中心が枠内の最上端に位置する場合、小数部は「0.5」と算出される。また、第2の文字片領域から推定される数字領域字の高さ方向の中心が枠内の最下端に位置する場合、小数部は「0」と算出される。この他にも、公知の方法を用いて、小数部を算出することができる。
組み立て部15gは、メータ計測値を組み立てる処理部である。
一実施形態として、組み立て部15gは、認識部15cにより最終桁以外の各桁で認識される数字表示領域の数字と、第2の特定部15fにより特定される最終桁の整数部の数字および小数部の数字とに基づいてメータ計測値を組み立てる。例えば、メータ計測値が10進数により表現される場合、組み立て部15gは、各桁の数字を次式(1)に代入することによりメータ計測値を算出できる。
開始桁の数字×10N−1+開始2桁+1桁の数字×10N−2、・・・、最終桁の数字×100・・・(1)
このように組み立てられたメータ計測値は、次のような出力先へ出力することができる。例えば、組み立て部15gは、メータ計測値をクライアント端末30へ出力することができる。この場合、組み立て部15gは、一例として、ドラム式メータ2のメータ計測値もしくはその時系列データを表示するメータ監視画面等をクライアント端末30に表示させることができる。また、組み立て部15gは、メータ計測値を記憶部13へ出力することができる。この場合、組み立て部15gは、ドラム式メータ2の識別情報にメータ計測値が対応付けられたメータ計測値データ13bを記憶部13へ保存する。この他、組み立て部15gは、バックエンドに位置するアプリケーションプログラム、例えばメータ計測値の分析や通知を行うアプリケーションプログラム等へ出力することもできる。例えば、通知プログラムへ出力された場合、通知プログラムは、メータ計測値が所定の閾値以上であるか否かを判定し、閾値以上であるメータ計測値を関係者の情報処理端末へ出力することができる。また、分析プログラムへ出力された場合、分析プログラムは、メータ計測値の統計分析を実行したり、メータ計測値に関する図表、例えばグラフ等を作成することもできる。
[処理の流れ]
次に、本実施例に係るサーバ装置10の処理の流れについて説明する。なお、ここでは、サーバ装置10により実行される(1)メータ計測値の監視処理について説明した後、そのサブフローとして実行される(2)認証処理について説明することとする。
(1)メータ計測値の監視処理
図8は、実施例1に係るメータ計測値の監視処理の手順を示すフローチャートである。この処理は、一例として、カメラ20からメータ画像が取得される度に繰り返し実行される処理である。
図8に示すように、取得部15aによりメータ画像が取得されると(ステップS101)、切出し部15bは、ステップS101で取得されたメータ画像からドラム式メータ2のメータ表示領域を切り出す(ステップS102)。続いて、切出し部15bは、メータ表示領域を各桁の数字表示領域へ分割する(ステップS103)。
そして、認識部15cは、図示しない桁数カウンタが保持するレジスタの値nを初期値、例えば「1」に初期化する(ステップS104)。続いて、ステップS103でメータ表示領域から分割された数字表示領域のうち開始桁「1」の数字表示領域から順に、数字表示領域に対する数字を認識する「認識処理」が実行される(ステップS105)。
その後、認識部15cは、桁数カウンタを1つインクリメントする(ステップS106)。そして、桁数カウンタに保持された桁数nが最終桁Nに到達するまで(ステップS107No)、上記のステップS105および上記のステップS106の処理が実行される。
そして、桁数カウンタに保持された桁数nが最終桁Nに到達すると(ステップS107Yes)、組み立て部15gは、ステップS105で認識された各桁の数字からメータ計測値を組み立て(ステップS108)、当該メータ計測値を所定の出力先へ出力し(ステップS109)、処理を終了する。
(2)認識処理
図9は、実施例1に係る認識処理の手順を示すフローチャートである。この処理は、図8に示すステップS105の処理に対応する。図9に示すように、桁数カウンタに保持された桁数nが最終桁「N」でない場合(ステップS201No)、認識部15cは、記憶部13に記憶されたテンプレートデータ13aを参照して、桁数カウンタに保持された桁数nに対応する桁の数字表示領域にテンプレートマッチング等の画像処理を実行することにより、当該数字表示領域に対応する数字を認識し(ステップS202)、処理を終了する。
また、桁数カウンタに保持された桁数nが最終桁「N」である場合(ステップS201Yes)、分離部15dは、ドラム上に配置される数字と数字の区切りを検出するために、最終桁の数字表示領域から数字と数字の間に挿入される空白部を検出する(ステップS203)。
このとき、複数の空白部が検出された場合(ステップS204No)、最終桁の数字表示領域には、数字が1つしか含まれない可能性が高いと判断できる。この場合、分離部15dは、認識部15cと同様のテンプレートマッチングを認識部15cに実行させることにより、最終桁の数字表示領域に対応する数字を認識させ(ステップS202)、処理を終了する。
一方、1つの空白部しか検出されない場合(ステップS204Yes)、最終桁の数字表示領域には、2つの数字が含まれる可能性が高いと判明する。この場合、分離部15dは、最終桁の数字表示領域から検出された空白部を境界に、最終桁の数字表示領域を第1の文字片領域および第2の文字片領域に分離する(ステップS205)。
続いて、第1の特定部15eは、各テンプレート画像の数字の下部分が切り出された部分テンプレート画像のうち、第1の文字片領域との間で所定の閾値Th以上の類似度が算出された部分テンプレート画像の数字を第1の文字片領域に含まれる文字片候補として特定する(ステップS206)。
また、第1の特定部15eは、各テンプレート画像の数字の上半分が切り出された部分テンプレート画像のうち、第2の文字片領域との間で所定の閾値Th以上の類似度が算出された部分テンプレート画像の数字を第2の文字片領域に含まれる文字片候補として特定する(ステップS207)。
その後、第2の特定部15fは、ステップS206で特定された第1の文字片領域の文字片候補およびステップS207で特定された第2の文字片領域の文字片候補の組合せの中から、ドラム式メータ2の数字の配列条件に適合する組合せを特定する(ステップS208)。
その後、第2の特定部15fは、当該組合せから最終桁における整数部の数字と、最終桁における小数部、例えば小数点第一位の数字とをさらに特定し(ステップS209およびステップS210)、処理を終了する。
[効果の一側面]
上述してきたように、本実施例に係るサーバ装置10は、ドラム式メータ2の最終桁に複数の文字片が含まれる場合に文字片ごとに数字候補を特定し、各文字片の数字候補の組合せの中からドラム式メータ2の数字の配列条件に適合する組合せを特定する。このように、一方の文字片から特定される数字候補ともう一方の文字片から特定される数字候補の整合性から最終桁のドラム表示を認識できるので、数字と数字の間に挿入される空白部の間隔の違いにより認識精度が低下するのを抑制できる。したがって、本実施例に係るサーバ装置10によれば、メータ認識のロバスト性を向上させることができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
[数字以外の文字]
上記の実施例1では、ドラム式メータ2のドラム表示が数字である場合を例示したが、ドラム表示が数字以外の文字である場合にも、図8及び図9に示す処理を実行することができる。例えば、ドラム式メータ2のドラム表示がひらがなやカタカナ、アルファベットが含まれる場合にも、ドラムに配列される文字間で各文字の配列条件を定義することにより、メータ表示を認識できる。
[スタンドアローンでの適用]
上記の実施例1では、上記のメータ監視システム1がクライアントサーバシステムとして構築される場合を例示したが、必ずしもクライアントサーバシステムとして構築されずともよい。例えば、サーバ装置10が有する機能部により実行される図8や図9に示す処理は、カメラ20を搭載する各種の情報処理装置、例えばポータブル端末やスマートフォン、タブレット端末やウェアラブル端末によりスタンドアローンで実行されることとしてもかまわない。
[分散および統合]
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されておらずともよい。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、取得部15a、切出し部15b、認識部15c、分離部15d、第1の特定部15e、第2の特定部15fまたは組み立て部15gをサーバ装置10の外部装置としてネットワーク経由で接続するようにしてもよい。
また、取得部15a、切出し部15b、認識部15c、分離部15d、第1の特定部15e、第2の特定部15fまたは組み立て部15gを別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記のサーバ装置10の機能を実現するようにしてもよい。
[認識プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図10を用いて、上記の実施例と同様の機能を有する認識プログラムを実行するコンピュータの一例について説明する。
図10は、実施例1及び実施例2に係る認識プログラムを実行するコンピュータのハードウェア構成例を示す図である。図10に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD170と、RAM180とを有する。これら110〜180の各部はバス140を介して接続される。
HDD170には、図10に示すように、上記の実施例1で示した取得部15a、切出し部15b、認識部15c、分離部15d、第1の特定部15e、第2の特定部15f及び組み立て部15gと同様の機能を発揮する認識プログラム170aが記憶される。この認識プログラム170aは、図2に示した取得部15a、切出し部15b、認識部15c、分離部15d、第1の特定部15e、第2の特定部15f及び組み立て部15gの各構成要素と同様、統合又は分離してもかまわない。すなわち、HDD170には、必ずしも上記の実施例1で示した全てのデータが格納されずともよく、処理に用いるデータがHDD170に格納されればよい。例えば、認識プログラム170aが有する機能のうち、各桁の数字表示領域に対応する数字を認識する機能または最終桁の数字表示領域に対応する数字を認識する機能が抜粋してモジュール化されたライブラリをメータ監視を実現するメータ監視プログラムに参照させることとしてもかまわない。
このような環境の下、CPU150は、HDD170から認識プログラム170aを読み出した上でRAM180へ展開する。この結果、認識プログラム170aは、図10に示すように、認識プロセス180aとして機能する。この認識プロセス180aは、RAM180が有する記憶領域のうち認識プロセス180aに割り当てられた領域にHDD170から読み出した各種データを展開し、この展開した各種データを用いて各種の処理を実行する。例えば、認識プロセス180aが実行する処理の一例として、図2に示す処理などが含まれる。なお、CPU150では、必ずしも上記の実施例1で示した全ての処理部が動作せずともよく、実行対象とする処理に対応する処理部が仮想的に実現されればよい。
なお、上記の認識プログラム170aは、必ずしも最初からHDD170やROM160に記憶されておらずともかまわない。例えば、コンピュータ100に挿入されるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に認識プログラム170aを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から認識プログラム170aを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに認識プログラム170aを記憶させておき、コンピュータ100がこれらから認識プログラム170aを取得して実行するようにしてもよい。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)画像内の文字の線画領域内に複数の線画領域を特定した場合に、それぞれの線画領域からそれぞれの文字の候補を特定し、
特定した複数の文字の候補の内、線画領域が離れている場合における文字の組合せの条件を満たすそれぞれの文字を特定する、
処理をコンピュータに実行させることを特徴とする認識プログラム。
(付記2)前記文字の組合せの条件は、ドラム式メータが有するドラムに配列される数字の配列条件であることを特徴とする付記1に記載の認識プログラム。
(付記3)前記ドラム式メータのメータ表示領域が撮像された画像を取得し、
前記画像から切り出されたメータ表示領域に含まれる桁のうち末尾の桁の数字表示領域内に複数の線画領域を特定した場合に、前記末尾の桁の数字表示領域から検出される空白部を境界に、前記末尾の桁の数字表示領域を前記桁の方向に沿って第1の線画領域および第2の線画領域に分離する処理を前記コンピュータにさらに実行させ、
前記文字の候補を特定する処理は、前記メータ表示領域に含まれる桁に配置される各数字のテンプレート画像を参照して、前記第1の線画領域および前記第2の線画領域からそれぞれの数字の候補を特定することを特徴とする付記2に記載の認識プログラム。
(付記4)前記分離する処理は、前記桁に対応するドラムが回転する第1の方向側に前記第1の線画領域を分離し、前記第1の方向とは逆である第2の方向側に前記第2の線画領域を分離し、
前記文字の候補を特定する処理は、前記テンプレート画像のうち前記第2の方向寄りの一部が切り出された部分テンプレート画像と前記第1の線画領域との照合により数字の候補を特定し、前記テンプレート画像のうち前記第1の方向寄りの一部が切り出された部分テンプレート画像と前記第2の線画領域との照合により数字の候補を特定することを特徴とする付記3に記載の認識プログラム。
(付記5)前記文字を特定する処理は、前記数字の配列条件を満たす数字の組合せから前記末尾の桁の整数部および小数部をさらに特定することを特徴とする付記3または付記4に記載の認識プログラム。
(付記6)前記文字を特定する処理は、前記末尾の桁の数字表示領域から検出される空白部の位置に基づいて前記小数部を特定することを特徴とする付記5に記載の認識プログラム。
(付記7)画像内の文字の線画領域内に複数の線画領域を特定した場合に、それぞれの線画領域からそれぞれの文字の候補を特定し、
特定した複数の文字の候補の内、線画領域が離れている場合における文字の組合せの条件を満たすそれぞれの文字を特定する、
処理をコンピュータが実行することを特徴とする認識方法。
(付記8)前記文字の組合せの条件は、ドラム式メータが有するドラムに配列される数字の配列条件であることを特徴とする付記7に記載の認識方法。
(付記9)前記ドラム式メータのメータ表示領域が撮像された画像を取得し、
前記画像から切り出されたメータ表示領域に含まれる桁のうち末尾の桁の数字表示領域内に複数の線画領域を特定した場合に、前記末尾の桁の数字表示領域から検出される空白部を境界に、前記末尾の桁の数字表示領域を前記桁の方向に沿って第1の線画領域および第2の線画領域に分離する処理を前記コンピュータがさらに実行し、
前記文字の候補を特定する処理は、前記メータ表示領域に含まれる桁に配置される各数字のテンプレート画像を参照して、前記第1の線画領域および前記第2の線画領域からそれぞれの数字の候補を特定することを特徴とする付記8に記載の認識方法。
(付記10)前記分離する処理は、前記桁に対応するドラムが回転する第1の方向側に前記第1の線画領域を分離し、前記第1の方向とは逆である第2の方向側に前記第2の線画領域を分離し、
前記文字の候補を特定する処理は、前記テンプレート画像のうち前記第2の方向寄りの一部が切り出された部分テンプレート画像と前記第1の線画領域との照合により数字の候補を特定し、前記テンプレート画像のうち前記第1の方向寄りの一部が切り出された部分テンプレート画像と前記第2の線画領域との照合により数字の候補を特定することを特徴とする付記9に記載の認識方法。
(付記11)前記文字を特定する処理は、前記数字の配列条件を満たす数字の組合せから前記末尾の桁の整数部および小数部をさらに特定することを特徴とする付記9または付記10に記載の認識方法。
(付記12)前記文字を特定する処理は、前記末尾の桁の数字表示領域から検出される空白部の位置に基づいて前記小数部を特定することを特徴とする付記11に記載の認識方法。
(付記13)画像内の文字の線画領域内に複数の線画領域を特定した場合に、それぞれの線画領域からそれぞれの文字の候補を特定する第1の特定部と、
特定した複数の文字の候補の内、線画領域が離れている場合における文字の組合せの条件を満たすそれぞれの文字を特定する第2の特定部と、
を有することを特徴とする認識装置。
(付記14)前記文字の組合せの条件は、ドラム式メータが有するドラムに配列される数字の配列条件であることを特徴とする付記13に記載の認識装置。
(付記15)前記ドラム式メータのメータ表示領域が撮像された画像を取得する取得部と、
前記画像から切り出されたメータ表示領域に含まれる桁のうち末尾の桁の数字表示領域内に複数の線画領域を特定した場合に、前記末尾の桁の数字表示領域から検出される空白部を境界に、前記末尾の桁の数字表示領域を前記桁の方向に沿って第1の線画領域および第2の線画領域に分離する分離部とをさらに有し、
前記第1の特定部は、前記メータ表示領域に含まれる桁に配置される各数字のテンプレート画像を参照して、前記第1の線画領域および前記第2の線画領域からそれぞれの数字の候補を特定することを特徴とする付記14に記載の認識装置。
(付記16)前記分離部は、前記桁に対応するドラムが回転する第1の方向側に前記第1の線画領域を分離し、前記第1の方向とは逆である第2の方向側に前記第2の線画領域を分離し、
前記第1の特定部は、前記テンプレート画像のうち前記第2の方向寄りの一部が切り出された部分テンプレート画像と前記第1の線画領域との照合により数字の候補を特定し、前記テンプレート画像のうち前記第1の方向寄りの一部が切り出された部分テンプレート画像と前記第2の線画領域との照合により数字の候補を特定することを特徴とする付記15に記載の認識装置。
(付記17)前記第2の特定部は、前記数字の配列条件を満たす数字の組合せから前記末尾の桁の整数部および小数部をさらに特定することを特徴とする付記15または付記16に記載の認識装置。
(付記18)前記第2の特定部は、前記末尾の桁の数字表示領域から検出される空白部の位置に基づいて前記小数部を特定することを特徴とする付記17に記載の認識装置。