以下、本開示の一側面に係る画像処理装置について図を参照しつつ説明する。但し、本開示の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
図1は、実施形態に従った画像処理装置100の概略構成の一例を示す図である。
画像処理装置100は、タブレットPC、多機能携帯電話(いわゆるスマートフォン)、携帯情報端末、ノートPC等の携帯可能な情報処理装置であり、そのユーザである作業者により使用される。画像処理装置100は、通信装置101と、入力装置102と、表示装置103と、音出力装置104と、振動発生装置105と、撮像装置106と、センサ107と、記憶装置110と、CPU(Central Processing Unit)120と、処理回路130とを有する。以下、画像処理装置100の各部について詳細に説明する。
通信装置101は、主に2.4GHz帯、5GHz帯等を感受帯域とするアンテナを含む、通信インターフェース回路を有する。通信装置101は、アクセスポイント等との間でIEEE(The Institute of Electrical and Electronics Engineers, Inc.)802.11規格の無線通信方式に基づいて無線通信を行う。そして、通信装置101は、アクセスポイントを介して外部のサーバ装置(不図示)とデータの送受信を行う。通信装置101は、アクセスポイントを介してサーバ装置から受信したデータをCPU120に供給し、CPU120から供給されたデータをアクセスポイントを介してサーバ装置に送信する。なお、通信装置101は、外部の装置と通信できるものであればどのようなものであってもよい。例えば、通信装置101は、携帯電話通信方式に従って不図示の基地局装置を介してサーバ装置と通信するものでもよいし、有線LAN通信方式に従ってサーバ装置と通信するものでもよい。
入力装置102は、入力部の一例であり、タッチパネル式の入力装置、キーボード、マウス等の入力デバイス及び入力デバイスから信号を取得するインターフェース回路を有する。入力装置102は、ユーザの入力を受け付け、ユーザの入力に応じた信号をCPU120に対して出力する。
表示装置103は、出力部の一例であり、液晶、有機EL(Electro-Luminescence)等から構成されるディスプレイ及びディスプレイに画像データ又は各種の情報を出力するインターフェース回路を有する。表示装置103は、CPU120と接続されて、CPU120から出力された画像データをディスプレイに表示する。なお、タッチパネルディスプレイを用いて、入力装置102と表示装置103を一体に構成してもよい。
音出力装置104は、出力部の一例であり、スピーカ及びスピーカに音声データを出力するインターフェース回路を有する。音出力装置104は、CPU120と接続されて、CPU120から出力された音声データをスピーカから出力する。
振動発生装置105は、出力部の一例であり、振動を発生させるモータ及びモータに振動を発生させるための信号を出力するインターフェース回路を有する。振動発生装置105は、CPU120と接続されて、CPU120から出力された指示信号に応じて振動を発生させる。
撮像装置106は、1次元又は2次元に配列されたCCD(Charge Coupled Device)からなる撮像素子を備える縮小光学系タイプの撮像センサと、A/D変換器とを有する。撮像装置106は、撮像部の一例であり、CPU120からの指示に従ってメータを順次撮影する(例えば30フレーム/秒)。撮像センサは、メータを撮影したアナログの画像信号を生成してA/D変換器に出力する。A/D変換器は、出力されたアナログの画像信号をアナログデジタル変換してデジタルの画像データを順次生成し、CPU120に出力する。なお、CCDの代わりにCMOS(Complementary Metal Oxide Semiconductor)からなる撮像素子を備える等倍光学系タイプのCIS(Contact Image Sensor)を利用してもよい。以下では、撮像装置106によりメータが撮影されて出力されたデジタルの画像データを入力画像と称する場合がある。
センサ107は、加速度センサであり、CPU120から出力された指示信号に応じて、画像処理装置100に加わる加速度を3軸方向毎に検出し、検出した加速度を画像処理装置100の移動情報として出力する。センサ107は、例えば、ピエゾ抵抗効果を利用したピエゾ抵抗型の3軸加速度センサ、又は静電容量の変化を利用した静電容量型の3軸加速度センサとすることができる。なお、センサ107として、加速度センサの代わりに、画像処理装置100の回転角速度を検出するジャイロセンサを利用し、加速度の代わりに回転角速度を画像処理装置100の移動情報として出力してもよい。
記憶装置110は、記憶部の一例である。記憶装置110は、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、記憶装置110には、画像処理装置100の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、例えばCD−ROM(compact disk read only memory)、DVD−ROM(digital versatile disk read only memory)等のコンピュータ読み取り可能な可搬型記録媒体からインストールされてもよい。コンピュータプログラムは、公知のセットアッププログラム等を用いて記憶装置110にインストールされる。
CPU120は、予め記憶装置110に記憶されているプログラムに基づいて動作する。CPU120は、汎用プロセッサであってもよい。なお、CPU120に代えて、DSP(digital signal processor)、LSI(large scale integration)等が用いられてよい。また、CPU160に代えて、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等が用いられてもよい。
CPU120は、通信装置101、入力装置102、表示装置103、音出力装置104、振動発生装置105、撮像装置106、センサ107、記憶装置110及び処理回路130と接続され、これらの各部を制御する。CPU120は、通信装置101を介したデータ送受信制御、入力装置102の入力制御、表示装置103、音出力装置104及び振動発生装置105の出力制御、撮像装置106の撮像制御、センサ107及び記憶装置110の制御等を行う。さらに、CPU120は、撮像装置106により生成された入力画像に写っているメータ内の数値を認識するとともに、証拠画像を記憶装置110に記憶する。
処理回路130は、撮像装置106から取得した入力画像に補正処理等の所定の画像処理を施す。なお、処理回路130として、LSI、DSP、ASIC又はFPGA等が用いられてもよい。
図2は、記憶装置110及びCPU120の概略構成を示す図である。
図2に示すように、記憶装置110には、検出プログラム111、移動距離検出プログラム112、判定プログラム113、指示プログラム114、数値認識プログラム115及び記憶制御プログラム116等の各プログラムが記憶される。これらの各プログラムは、プロセッサ上で動作するソフトウェアにより実装される機能モジュールである。CPU130は、記憶装置110に記憶された各プログラムを読み取り、読み取った各プログラムに従って動作することにより、検出部121、移動距離検出部122、判定部123、指示部124、数値認識部125及び記憶制御部126として機能する。
図3、4A、4B、5、6A、6Bは、本実施形態において説明に用いる座標系について説明するための図である。
図3〜6Bに示す例では、撮像装置106による撮像位置150からの撮像方向、即ち撮像装置106の光軸方向をz軸とし、z軸に垂直であり且つ水平面に平行な方向をx軸とし、z軸及びx軸に垂直な方向をy軸としている。図3〜6Bに示すように、画像処理装置100は、メータ300を撮影する際に、ユーザにより、撮像装置106による撮像位置150からの撮像方向が、メータ300が計測した電力量等の数値が示されるメータ部分301を向くように移動される。なお、図3〜6Bでは、画像処理装置100の長手方向が水平線に平行になるように撮影される場合を例に説明している。また、以下では、画像処理装置100において表示装置103のディスプレイが設けられた平面を表示面と称し、その裏側にある撮像装置106による撮像位置150が設けられた面を背面と称する場合がある。
図3は、撮像装置106の光軸(z軸)方向の画像処理装置100の水平移動の例を示す。画像処理装置100は、メータ部分301との間の距離を調整するために、矢印A1の方向又はその逆方向に水平移動するようにユーザに指示する。
図4Aは、撮像装置106の光軸(z軸)に垂直な平面(xy平面)に沿った画像処理装置100のy軸方向の水平移動の例を示す。画像処理装置100は、メータ部分301に対する撮像位置150の垂直位置を調整するために、矢印A2の方向又はその逆方向に水平移動される。図4Bは、撮像装置106の光軸(z軸)に垂直な平面(xy平面)に沿った画像処理装置100のx軸方向の水平移動の例を示す。画像処理装置100は、メータ部分301に対する撮像位置150の水平位置を調整するために、矢印A3の方向又はその逆方向に水平移動するようにユーザに指示する。これらの水平移動では、画像処理装置100は、メータ300に対する表示面又は背面の向きを一定に保ちながら移動される。
図5は、撮像装置106の光軸(z軸)を中心とする画像処理装置100の回転移動の例を示す。この回転移動では、画像処理装置100は、表示面又は背面が、撮像位置150の配置位置を中心として、光軸(z軸)に垂直な平面(xy平面)に沿って回転するように移動される。以下では、この回転移動において画像処理装置100が回転する角度を回転角と称する場合がある。図5では、時計回り方向を正方向とし、反時計回り方向を負方向としている。画像処理装置100の長手方向が水平線に対して反時計回り方向に回転するように(−θ1)傾いている場合、画像処理装置100は、矢印A4の方向(時計回り方向)に回転移動するようにユーザに指示する。一方、画像処理装置100の長手方向が水平線に対して時計回り方向に回転するように(θ1)傾いている場合、画像処理装置100は、矢印A4の逆方向(反時計回り方向)に回転移動するようにユーザに指示する。
図6Aは、撮像装置106の光軸(z軸)に対する仰俯角方向の画像処理装置100の回転移動の例を示す。この回転移動では、画像処理装置100は、表示面又は背面が、撮像位置150を通過するx軸に平行な直線を回転軸として回転するように移動される。以下では、この回転移動において画像処理装置100が回転する角度を仰俯角と称する場合がある。図6Aでは、時計回り方向を正方向とし、反時計回り方向を負方向としている。画像処理装置100の表示面又は背面が光軸(z軸)と直交するxy平面に対して反時計回り方向に回転するように(−θ2)傾いている場合、画像処理装置100は、矢印A5の方向(時計回り方向)に回転移動するようにユーザに指示する。一方、画像処理装置100の表示面又は背面が光軸(z軸)と直交するxy平面に対して時計回り方向に回転するように(θ2)傾いている場合、画像処理装置100は、矢印A5の逆方向(反時計回り方向)に回転移動するようにユーザに指示する。
図6Bは、撮像装置106の光軸(z軸)に対する方位角方向の画像処理装置100の回転移動の例を示す。この回転移動では、画像処理装置100は、表示面又は背面が、撮像位置150を通過するy軸に平行な直線を回転軸として回転するように移動される。以下では、この回転移動において画像処理装置100が回転する角度を方位角と称する場合がある。図6Bでは、時計回り方向を正方向とし、反時計回り方向を負方向としている。画像処理装置100の表示面又は背面が光軸(z軸)と直交するxy平面に対して反時計回り方向に回転するように(−θ3)傾いている場合、画像処理装置100は、矢印A6の方向(時計回り方向)に回転移動するようにユーザに指示する。一方、画像処理装置100の表示面又は背面が光軸(z軸)と直交するxy平面に対して時計回り方向に回転するように(θ3)傾いている場合、画像処理装置100は、矢印A6の逆方向(反時計回り方向)に回転移動するようにユーザに指示する。
図7は、画像処理装置100による全体処理の動作の例を示すフローチャートである。
以下、図7に示したフローチャートを参照しつつ、画像処理装置100による全体処理の動作の例を説明する。なお、以下に説明する動作のフローは、予め記憶装置110に記憶されているプログラムに基づき主にCPU120により画像処理装置100の各要素と協働して実行される。
最初に、検出部121は、ユーザにより、入力装置102を用いてメータ部分の撮影の開始を指示する撮影開始指示が入力され、入力装置102から撮影開始指示信号を受信すると、撮影開始指示を受け付ける(ステップS101)。検出部121は、撮影開始指示を受け付けると、画像処理に用いられる各情報の初期化、及び、撮像装置106の撮像サイズ、フォーカス等のパラメータ設定を実行する。
次に、移動距離検出部122は、画像処理装置100の現在位置を示す位置情報を初期位置として設定する(ステップS102)。
次に、検出部121は、撮像装置106にメータの撮影を開始させて入力画像を生成させる(ステップS103)。
次に、検出部121は、撮像装置106により生成された入力画像を取得し、記憶装置110に記憶する(ステップS104)。
次に、移動距離検出部122は、センサ107から出力された移動情報を受信し、受信した移動情報に基づいて画像処理装置100の移動量及び移動方向を算出して、画像処理装置100の位置情報を更新する。移動距離検出部122は、更新した位置情報に基づいて、初期位置からの移動距離、即ち入力装置102が撮影開始指示を受け付けてからの移動距離を検出する(ステップS105)。
次に、検出部121は、取得した入力画像からメータ部分を検出するメータ検出処理を実行する(ステップS106)。
図8は、メータ(装置)を撮影した入力画像800の一例を示す図である。
図8に示すように、一般に、メータは黒色の筐体801を有し、筐体801の内部に白色のプレート802を有する。プレート802は、ガラス(不図示)を介して目視可能になっており、プレート802には、メータが計測した電力量等の数値が示されるメータ部分803が配置される。メータ部分803において、数値は白色で示され、背景は黒色で示されている。
まず、検出部121は、プレート802を検出する。検出部121は、入力画像内の画素の水平及び垂直方向の両隣の画素又はその画素から所定距離だけ離れた複数の画素の輝度値又は色値(R値、B値、G値)の差の絶対値が第1閾値を越える場合、その画素をエッジ画素として抽出する。検出部121は、ハフ変換又は最小二乗法等を用いて、抽出した各エッジ画素の近傍を通過する直線を抽出し、抽出した各直線のうち二本ずつが略直交する四本の直線から構成される矩形の内、最も大きい矩形をプレート802として検出する。略直交とは、直角に対して±45°以内の角度(45°以上且つ135°以下)で交わることを意味する。または、検出部121は、抽出した各エッジ画素が他のエッジ画素と連結しているか否かを判定し、連結しているエッジ画素を一つのグループとしてラベリングする。検出部121は、抽出したグループの内、最も面積が大きいグループで囲まれる領域をプレート802として検出してもよい。
なお、検出部121は、筐体801の色と、プレート802の色の違いを利用してプレート枠を検出してもよい。検出部121は、各画素の輝度値又は色値が第2閾値未満であり(黒色を示し)、その画素に右側に隣接する画素又はその画素から右側に所定距離離れた画素の輝度値又は色値が第2閾値以上である(白色を示す)場合、その画素を左端エッジ画素として抽出する。第2閾値は黒色を示す値と白色を示す値の中間の値に設定される。同様に、検出部121は、各画素の輝度値又は色値が第2閾値未満であり、その画素に左側に隣接する画素又はその画素から左側に所定距離離れた画素の輝度値又は色値が第2閾値以上である場合、その画素を右端エッジ画素として抽出する。同様に、検出部121は、各画素の輝度値又は色値が第2閾値未満であり、その画素に下側に隣接する画素又はその画素から下側に所定距離離れた画素の輝度値又は色値が第2閾値以上である場合、その画素を上端エッジ画素として抽出する。同様に、検出部121は、各画素の輝度値又は色値が第2閾値未満であり、その画素に上側に隣接する画素又はその画素から上側に所定距離離れた画素の輝度値又は色値が第2閾値以上である場合、その画素を下端エッジ画素として抽出する。検出部121は、ハフ変換又は最小二乗法等を用いて、抽出した左端エッジ画素、右端エッジ画素、上端エッジ画素及び下端エッジ画素のそれぞれを連結した直線を抽出し、抽出した各直線から構成される矩形をプレート802として検出する。
次に、検出部121は、検出したプレート802内の領域から、メータ部分803を検出する。検出部121は、メータ部分803を含むプレート802が写っている画像が入力された場合に、メータ部分803の位置情報を出力するように事前学習された識別器により、メータ部分803を検出する。この識別器は、例えばディープラーニング等により、メータを撮影した複数の画像を用いて事前学習され、予め記憶装置110に記憶される。検出部121は、検出したプレート802を含む画像を識別器に入力し、識別器から出力された位置情報を取得することにより、メータ部分803を検出する。
なお、検出部121は、プレート802を検出する場合と同様に、入力画像内のエッジ画素に基づいて、メータ部分803を検出してもよい。検出部121は、入力画像のプレート枠を含む領域からエッジ画素を抽出し、抽出した各エッジ画素の近傍を通過する直線を抽出し、抽出した各直線のうち二本ずつが略直交する四本の直線から構成される矩形の内、最も大きい矩形の領域を検出する。または、検出部121は、抽出した各エッジ画素が相互に連結するグループの内、最も面積が大きいグループで囲まれる矩形の領域を検出する。検出部121は、公知のOCR(Optical Character Recognition)技術を利用して、検出した各領域から所定桁の数字を検出し、所定桁の数字を検出できた場合、その領域をメータ部分803として検出する。
または、検出部121は、プレート802を検出する場合と同様に、プレート802の色と、メータ部分803の色の違いを利用して矩形の領域を検出してもよい。検出部121は、各画素の輝度値又は色値が第2閾値以上であり(白色を示し)、その画素に右側に隣接する画素又はその画素から右側に所定距離離れた画素の輝度値又は色値が第2閾値未満である(黒色を示す)場合、その画素を左端エッジ画素として抽出する。同様にして、検出部121は、右端エッジ画素、上端エッジ画素及び下端エッジ画素を抽出する。検出部121は、ハフ変換又は最小二乗法等を用いて、抽出した左端エッジ画素、右端エッジ画素、上端エッジ画素及び下端エッジ画素のそれぞれの近傍を通過する直線を抽出し、抽出した各直線から構成される矩形の領域を検出する。
また、メータのプレート802内にメータ部分803が存在する位置を示す目印804が示されている場合、検出部121は、目印804を検出し、水平及び垂直方向において各目印804で挟まれた領域内でメータ部分803を検出してもよい。
次に、判定部123は、メータ検出処理においてメータ部分が検出されたか否かにより、入力画像にメータ部分の全体が含まれるか否かを判定する(ステップS107)。
図9A、9Bは、メータ部分803の全体が含まれない入力画像900、910の例を示す図である。
図9Aは、メータ部分803が端部付近に撮影されることにより、メータ部分803の全体が含まれていない入力画像900を示す。また、図9Bは、メータ部分803の撮影サイズが大きくなりすぎることにより、メータ部分803の全体が含まれていない入力画像910を示す。入力画像900又は入力画像910にはメータ部分803の全体が写っていないため、メータ検出処理ではメータ部分803内の数値が検出されず、メータ部分803は検出されない。
入力画像にメータ部分の全体が含まれない場合、指示部124は、入力画像にメータ部分の全体が含まれない旨の警告を出力して、ユーザに通知し(ステップS108)、ステップS104へ処理を戻し、新たに入力画像を取得するまで待機する。指示部124は、入力画像にメータ部分の全体が含まれない旨の警告として、メータ部分の全体が写るように画像処理装置100を移動させる指示を出力してもよい。指示部124は、表示装置103に表示することにより、音出力装置104から音声として出力することにより、又は、振動発生装置105に所定の振動を発生させることにより、警告を出力する。
なお、指示部124は、入力装置102が撮影開始指示を受け付けてからの移動距離に応じて、警告の表示サイズを変更してもよい。ユーザが撮影開始指示を入力する場合、画像処理装置100は、ユーザが操作し易いように、ユーザの手元にある可能性が高い。一方、メータは必ずしも撮影し易い位置に設置されておらず、ユーザは腕を伸ばしたりする等、無理な体勢でメータを撮影し、メータの撮影中において表示装置103を見づらい状態にある可能性がある。
指示部124は、ステップS105において検出した画像処理装置100の移動距離が距離閾値未満である場合、画像処理装置100はユーザの手元にあり、移動距離が距離閾値以上である場合、画像処理装置100はユーザの手元から離れた位置にあるとみなす。そして、指示部124は、画像処理装置100の移動距離が距離閾値以上である場合の警告の表示サイズを、画像処理装置100の移動距離が距離閾値未満である場合の警告の表示サイズより大きくする。なお、指示部124は、画像処理装置100の移動距離が大きい程、警告の表示サイズを段階的に大きくしてもよい。
図9C及び図9Dは、表示装置103に表示される警告の例を示す図である。
図9Cに示す画面920には、画像処理装置100の移動距離が距離閾値未満である場合に表示される警告921が示され、図9Dに示す画面930には、画像処理装置100の移動距離が距離閾値以上である場合に表示される警告931が示される。警告931は警告921より大きく表示され、ユーザは、画像処理装置100(表示画面)が手元から離れた位置にあっても、警告931を容易に確認することができる。
ステップS107において、入力画像にメータ部分の全体が含まれていた場合、判定部123及び指示部124は、画像判定処理を実行する(ステップS109)。画像判定処理において、判定部123は、入力画像内で検出されたメータ部分の傾き又は大きさに基づいて、入力画像が証拠画像として適切であるか否かを判定する。また、指示部124は、入力画像が証拠画像として適切でない場合に、メータ内の数値が入力画像内の所定の位置又は所定の大きさで撮像されるように、ユーザに対する画像処理装置100の移動指示を出力する。画像判定処理の詳細については後述する。
次に、判定部123は、画像判定処理において入力画像が証拠画像として適切であると判定されたか否かを判定する(ステップS110)。
入力画像が証拠画像として適切でなかった場合、判定部123は、ステップS104へ処理を戻し、新たに入力画像を取得するまで待機する。一方、入力画像が証拠画像として適切であった場合、数値認識部125は、数値認識処理を実行する(ステップS111)。
数値認識処理において、数値認識部125は、数値が写っている画像が入力された場合に、その画像に写っている数値を出力するように事前学習された識別器により、メータ部分に写っている数値を特定する。この識別器は、例えばディープラーニング等により、メータ内の各数値を撮影した複数の画像を用いて事前学習され、予め記憶装置110に記憶される。数値認識部125は、メータ部分が含まれる画像を識別器に入力し、識別器から出力された数値を、メータ部分に写っている数値として特定する。なお、数値認識部125は、公知のOCR技術を利用して、メータ部分に写っている数値を特定してもよい。
次に、数値認識部125は、数値認識処理において、メータ内の数値を認識できたか否かを判定する(ステップS112)。
メータ内の数値を認識できなかった場合、数値認識部125は、ステップS104へ処理を戻し、新たに入力画像を取得するまで待機する。一方、メータ内の数値を認識できた場合、記憶制御部126は、入力画像の少なくとも一部を証拠画像として、数値認識部125が認識した数値を関連付けて記憶装置110に記憶する(ステップS113)。記憶制御部126は、例えば入力画像からメータ部分の領域を切出した画像を証拠画像として記憶装置110に記憶する。なお、記憶制御部126は、入力画像からプレートの領域を切出した画像、又は、入力画像自体を証拠画像として記憶装置110に記憶してもよい。
次に、記憶制御部126は、数値認識部125が認識した数値、及び/又は、記憶制御部126が記憶した証拠画像を表示装置103に表示し(ステップS114)、一連のステップを終了する。また、記憶制御部126は、数値認識部125が認識した数値、及び/又は、記憶制御部126が選択した証拠画像を通信装置101を介してサーバ装置に送信してもよい。
なお、ステップS109及びS110の処理は、ステップS111及びS112の処理の後に実行され、画像判定処理は、数値認識処理においてメータ内の数値を認識された画像に対してのみ実行されてもよい。
また、移動距離検出部122は、入力装置102が撮影開始指示を受け付けたときの画像処理装置100の位置ではなく、装置起動時又は全体処理を実行するためのアプリケーションプログラム起動時の画像処理装置100の位置を初期位置として設定してもよい。
図10は、画像判定処理の動作の例を示すフローチャートである。図10に示す動作のフローは、図7に示すフローチャートのステップS109において実行される。
最初に、判定部123は、入力画像内で検出されたメータ部分の大きさが所定範囲内に含まれるか否かを判定する(ステップS201)。メータ部分の大きさは、面積(画素数)、又は、水平方向もしくは垂直方向の長さ(画素数)により規定される。例えば入力画像の水平方向の画素数が640画素である場合、所定範囲は、水平方向の画素数が400画素以上であり且つ600画素以下である範囲に設定される。なお、所定範囲の上限は設定されなくてもよい。
図11Aは、メータ部分の大きさが所定範囲内に含まれない入力画像1100の例を示す図である。
図11Aは、離れた位置からメータが撮影され、メータ部分803が小さく写っている入力画像1100を示す。入力画像1100では、メータ部分803の大きさが小さいため、ユーザは、メータ部分803に写っている数値を目視により確認しづらい。
メータ部分の大きさが所定範囲内に含まれない場合、指示部124は、撮像装置106の光軸(z軸)方向の画像処理装置100の水平移動指示を、ユーザに対する画像処理装置100の移動指示として出力して、ユーザに通知する(ステップS202)。指示部124は、メータ部分の大きさが所定範囲内に含まれるように、水平移動指示を出力する。指示部124は、メータ部分の大きさが所定範囲の下限未満である場合、画像処理装置100をメータに近づけるように、図3の矢印A1の方向に水平移動させる移動指示を出力する。一方、指示部124は、メータ部分の大きさが所定範囲の上限より大きい場合、画像処理装置100をメータから離すように、図3の矢印A1の逆方向に水平移動させる移動指示を出力する。
画像判定処理において、指示部124は、警告を出力する場合と同様に、表示装置103に表示することにより、音出力装置104から音声として出力することにより、又は、振動発生装置105に所定の振動を発生させることにより、移動指示を出力する。また、画像判定処理において、指示部124は、警告を出力する場合と同様に、入力装置102が撮影開始指示を受け付けてからの移動距離に応じて、移動指示の表示サイズを変更してもよい。さらに、指示部124は、入力装置102が撮影開始指示を受け付けてからの移動距離に応じて、移動指示の表示態様を変更してもよい。
図11B及び図11Cは、表示装置103に表示される移動指示の例を示す図である。
図11Bの画面1110には、画像処理装置100の移動距離が距離閾値未満である場合に表示される移動指示1111が示され、図11Cの画面1120には、画像処理装置100の移動距離が距離閾値以上である場合に表示される移動指示1121が示される。移動指示1121は、移動指示1111より大きく表示される。また、移動指示1121は、移動指示1111より簡略化されて簡潔に表示される。また、移動指示1111は文字のみで表示されるが、移動指示1121は文字及び記憶を用いて表示される。これらにより、ユーザは、画像処理装置100(表示画面)が手元から離れた位置にあっても、移動指示1121を容易に確認することができる。
このように、指示部124は、入力画像内で検出されたメータ部分の大きさに基づいて、メータ内の数値が入力画像内の所定の大きさで撮像されるように、ユーザに対する画像処理装置の移動指示を出力する。
次に、判定部123は、入力画像が証拠画像として適切でないと判定し(ステップS203)、一連のステップを終了する。
一方、ステップS201において、メータ部分の大きさが所定範囲内に含まれていた場合、判定部123は、入力画像内で検出されたメータ部分にボケが含まれるか否かを判定する(ステップS204)。ボケとは、撮像装置106の焦点ずれにより、画像内の各画素の輝度値の差が小さくなっている領域、又は、ユーザの手ぶれによって画像内の複数の画素に同一物が写り、画像内の各画素の輝度値の差が小さくなっている領域を意味する。
図12Aは、メータ部分にボケが含まれる入力画像1200の例を示す図である。
図12Aは、撮像装置106の焦点ずれにより、メータ部分803内の数字の輝度値と背景の輝度値の差が小さくなっている入力画像1200を示す。入力画像1200では、メータ部分803の数字の輝度値と背景の輝度値の差が小さいため、ユーザは、メータ部分803に写っている数値を目視により確認しづらい。
判定部123は、画像が入力された場合に、入力された画像にボケが含まれる度合いを示すボケ度を出力するように事前学習された識別器により、メータ部分にボケが含まれるか否かを判定する。この識別器は、例えばディープラーニング等により、メータを撮影し且つボケが含まれない画像を用いて事前学習され、予め記憶装置110に記憶される。なお、この識別器は、メータを撮影し且つボケが含まれる画像をさらに用いて事前学習されていてもよい。判定部123は、検出したメータ部分を含む画像を識別器に入力し、識別器から出力されたボケ度が第3閾値以上であるか否かにより、メータ部分にボケが含まれるか否かを判定する。
または、判定部123は、入力画像内のメータ部分の領域に含まれる各画素の輝度値のエッジ強度に基づいて、メータ部分にボケが含まれるか否かを判定してもよい。判定部123は、メータ部分の領域内の画素の水平もしくは垂直方向の両隣の画素又はその画素から所定距離だけ離れた複数の画素の輝度値の差の絶対値を、その画素のエッジ強度として算出する。判定部123は、メータ部分の領域内の各画素について算出したエッジ強度の平均値が第4閾値以下であるか否かにより、メータ部分にボケが含まれるか否かを判定する。
または、判定部123は、入力画像内のメータ部分の領域に含まれる各画素の輝度値の分布に基づいて、メータ部分にボケが含まれるか否かを判定してもよい。判定部123は、メータ部分の領域内の各画素の輝度値のヒストグラムを生成し、数値(白色)を示す輝度値の範囲と、背景(黒色)を示す輝度値の範囲のそれぞれにおいて極大値を検出し、各極大値の半値幅の平均値を算出する。判定部123は、算出した各極大値の半値幅の平均値が第5閾値以上であるか否かにより、メータ部分にボケが含まれるか否かを判定する。なお、上記した各閾値及び各範囲は、事前の実験により、予め設定される。
メータ部分にボケが含まれる場合、指示部124は、メータ部分にボケが含まれる旨の通知とともに、撮像装置106の焦点を調節する指示を出力して、ユーザに通知する(ステップS205)。指示部124は、警告を出力する場合と同様に、表示装置103に表示することにより、音出力装置104から音声として出力することにより、又は、振動発生装置105に所定の振動を発生させることにより、指示を出力する。なお、指示部124は、ユーザにより、入力装置102を用いて入力画像内の所定位置の指定が入力されると、指定された位置に撮像装置106の焦点を合わせるように調節してもよい。その場合、指示部124は、焦点を合わせる位置として、メータ部分を指定するように指示を出力してもよい。
次に、判定部123は、入力画像が証拠画像として適切でないと判定し(ステップS203)、一連のステップを終了する。
一方、ステップS204において、メータ部分にボケが含まれていなかった場合、判定部123は、入力画像内で検出されたメータ部分にテカリが含まれるか否かを判定する(ステップS206)。テカリとは、外乱光等の影響により、画像内の所定領域の画素の輝度値が一定の値に飽和(白飛び)している領域を意味する。
図12Bは、メータ部分にテカリが含まれる入力画像1210の例を示す図である。
図12Bは、メータ部分803の前面を覆うガラス部分に照明等の環境光が写り込むことにより、メータ部分803の一部に外乱光1211が写り、その領域が白飛びしている入力画像1210を示す。入力画像1210ではメータ部分803の数字の一部が白飛びしているため、ユーザは、メータ部分803に写っている数値を目視により確認しづらい。
判定部123は、画像が入力された場合に、入力された画像にテカリが含まれる度合いを示すテカリ度を出力するように事前学習された識別器により、メータ部分にテカリが含まれるか否かを判定する。この識別器は、例えばディープラーニング等により、メータを撮影し且つテカリが含まれない画像を用いて事前学習され、予め記憶装置110に記憶される。なお、この識別器は、メータを撮影し且つテカリが含まれる画像をさらに用いて事前学習されていてもよい。判定部123は、検出したメータ部分を含む画像を識別器に入力し、識別器から出力されたテカリ度が第6閾値以上であるか否かにより、メータ部分にテカリが含まれるか否かを判定する。
または、判定部123は、入力画像内のメータ部分の領域に含まれる各画素の輝度値に基づいて、メータ部分にテカリが含まれるか否かを判定してもよい。判定部123は、メータ部分の領域内の画素の内、輝度値が第7閾値以上(白色)である画素の数を算出し、算出した数が第8閾値以上であるか否かにより、メータ部分にテカリが含まれるか否かを判定する。
または、判定部123は、入力画像内のメータ部分の領域に含まれる各画素の輝度値の分布に基づいて、メータ部分にテカリが含まれるか否かを判定してもよい。判定部123は、メータ部分の領域内の各画素の輝度値のヒストグラムを生成し、第7閾値以上の領域に分布された画素の数が第8閾値以上であるか否かにより、メータ部分にテカリが含まれるか否かを判定する。なお、上記した各閾値及び各範囲は、事前の実験により、予め設定される。
メータ部分にテカリが含まれる場合、指示部124は、撮像装置106の光軸(z軸)に垂直な平面(xy平面)に沿った画像処理装置100の水平移動指示をユーザに対する画像処理装置100の移動指示として出力して、ユーザに通知する(ステップS207)。指示部124は、メータ部分にテカリが含まれなくなるように、水平移動指示を出力する。指示部124は、メータ部分の中心位置より上側にテカリが存在する場合、画像処理装置100を図4Aの矢印A2の方向に水平移動させる移動指示を出力する。一方、指示部124は、メータ部分の中心位置より下側にテカリが存在する場合、画像処理装置100を図4Aの矢印A2の逆方向に水平移動させる移動指示を出力する。または、指示部124は、メータ部分の中心位置より左側にテカリが存在する場合、画像処理装置100を図4Bの矢印A3の方向に水平移動させる移動指示を出力する。一方、指示部124は、メータ部分の中心位置より右側にテカリが存在する場合、画像処理装置100を図4Bの矢印A3の逆方向に水平移動させる移動指示を出力する。
画像処理装置100がタブレットPC又はスマートフォン等である場合、ユーザが画像処理装置100を持ちやすいように、一般に、撮像装置106による撮像位置150は、背面の中央位置ではなく、端部付近に配置される。一方、ユーザは、撮影時に、撮像位置150が画像処理装置100の中央位置に配置されていると勘違いして、画像処理装置100の中央位置がメータ部分に対向するように移動させる傾向にある。画像処理装置100は、画像処理装置100の移動指示を出力することにより、メータ部分が良好に撮影されるように、ユーザによって画像処理装置100を適切な位置に移動させることが可能となる。
次に、判定部123は、入力画像が証拠画像として適切でないと判定し(ステップS203)、一連のステップを終了する。
一方、ステップS206において、メータ部分にテカリが含まれていなかった場合、判定部123は、入力画像内でメータ部分が傾いているか否かを判定する(ステップS208)。
図13Aは、メータ部分が傾いている入力画像1300の例を示す図である。
図13Aは、図5に示すように、画像処理装置100が回転角方向に回転するように傾いた状態、特に矢印A4の逆方向に回転するように(−θ1)傾いた状態で撮影された入力画像1300を示す。入力画像1300では、メータ部分803が傾いているため、ユーザは、メータ部分803に写っている数値を目視により確認しづらい。
判定部123は、検出部121により入力画像内で検出されたメータ部分803に含まれる四辺形を特定する。判定部123は、検出部121がメータ部分803を検出する際に矩形を抽出している場合、検出部121により抽出された矩形を、メータ部分803に含まれる四辺形として特定する。一方、判定部123は、検出部121が矩形を抽出していない場合、検出部121によるメータ部分803の検出処理において説明した方法と同様にしてメータ部分803から矩形を抽出し、抽出した矩形をメータ部分803に含まれる四辺形として特定する。
次に、判定部123は、特定した四辺形の四辺の内、略水平方向に延伸し且つ相互に対向する二辺1301、1302を特定する。略水平方向とは、例えば水平ラインに対して45°以内の角度を有する方向を意味し、略水平方向に延伸する辺とは、水平ラインとなす角度が45°以内である直線を意味する。判定部123は、特定した二辺1301、1302の各中点1303、1304を通過する直線1305と入力画像1300の垂直ライン1306とがなす角度θ4を算出する。判定部123は、算出した角度θ4が第1角度(例えば15°)以上である場合、メータ部分803が傾いていると判定し、算出した角度θ4が第1角度未満である場合、メータ部分803が傾いていないと判定する。
なお、判定部123は、入力画像内で検出されたメータ部分が入力画像の水平ラインに対して第1角度以上傾いているか否かを判定してもよい。その場合、判定部123は、特定した四辺形の四辺の内、略垂直方向に延伸し且つ相互に対向する二辺の各中点を通過する直線と入力画像の水平ラインとがなす角度が第1角度以上であるか否かを判定する。略垂直方向とは、例えば垂直ラインに対して45°以内の角度を有する方向を意味し、略垂直方向に延伸する辺とは、水平ラインとなす角度が45°以内である直線を意味する。
メータ部分が傾いている場合、指示部124は、撮像装置106の光軸(z軸)を中心とする画像処理装置100の回転移動指示をユーザに対する画像処理装置100の移動指示として出力して、ユーザに通知する(ステップS209)。指示部124は、メータ部分に含まれる四辺形の略水平方向に延伸し且つ相互に対向する二辺の各中点を通過する直線と入力画像の垂直ラインとがなす角度が第1角度以下になるように、回転移動指示を出力する。指示部124は、その直線が垂直ラインに対して時計回りに回転している場合(図13Aに示す状態)、画像処理装置100を図5の矢印A4の方向(時計回り)に回転移動させる移動指示を出力する。一方、指示部124は、その直線が垂直ラインに対して反時計回りに回転している場合(図13Aに示す状態の逆向きにメータ部分803が傾いている状態)、画像処理装置100を図5の矢印A4の逆方向(反時計回り)に回転移動させる移動指示を出力する。
このように、指示部124は、入力画像内で検出されたメータ部分の傾きに基づいて、メータ内の数値が入力画像内の所定の傾きで撮像されるように、ユーザに対する画像処理装置の移動指示を出力する。
次に、判定部123は、入力画像が証拠画像として適切でないと判定し(ステップS203)、一連のステップを終了する。
一方、ステップS208において、メータ部分が傾いていなかった場合、判定部123は、メータ部分が入力画像の垂直方向において歪んでいるか否かを判定する(ステップS210)。
図13Bは、メータ部分が垂直方向において歪んでいる入力画像1310の例を示す図である。
図13Bは、図6Aに示すように、画像処理装置100が仰俯角方向に回転した状態、特に矢印A5の方向に回転した状態(θ2)で撮影された入力画像1310を示す。入力画像1310では、メータ部分803が垂直方向において歪み、メータ部分803に写っている数値が歪んでいるため、ユーザは、メータ部分803に写っている数値を目視により確認しづらい。
判定部123は、ステップS208の処理と同様にして、検出部121により入力画像内で検出されたメータ部分803に含まれる四辺形を特定する。次に、判定部123は、特定した四辺形の四辺の内、略垂直方向に延伸し且つ相互に対向する二辺1311、1312を特定する。判定部123は、特定した二辺1311、1312がなす角度θ5を算出する。判定部123は、算出した角度θ5が第2角度(例えば20°)以上である場合、メータ部分803が垂直方向において歪んでいると判定し、算出した角度θ5が第2角度未満である場合、メータ部分803が垂直方向において歪んでいないと判定する。
メータ部分が垂直方向において歪んでいる場合、指示部124は、撮像装置106の光軸(z軸)に対する仰俯角方向の画像処理装置100の回転移動指示をユーザに対する画像処理装置100の移動指示として出力して、ユーザに通知する(ステップS211)。指示部124は、メータ部分に含まれる四辺形の略垂直方向に延伸し且つ相互に対向する二辺がなす角度が第2角度以下になるように、回転移動指示を出力する。指示部124は、略垂直方向に延伸し且つ相互に対向する二辺がメータ部分803より上側で交わる場合(図13Bに示す状態)、画像処理装置100を図6Aの矢印A5の逆方向(反時計回り)に回転移動させる移動指示を出力する。一方、指示部124は、略垂直方向に延伸し且つ相互に対向する二辺がメータ部分803より下側で交わる場合、画像処理装置100を図6Aの矢印A5の方向(時計回り)に回転移動させる移動指示を出力する。
このように、指示部124は、入力画像内で検出されたメータ部分の傾きに基づいて、メータ内の数値が入力画像内の所定の傾きで撮像されるように、ユーザに対する画像処理装置の移動指示を出力する。
次に、判定部123は、入力画像が証拠画像として適切でないと判定し(ステップS203)、一連のステップを終了する。
一方、ステップS210において、メータ部分が入力画像の垂直方向において歪んでいなかった場合、判定部123は、メータ部分が入力画像の水平方向において歪んでいるか否かを判定する(ステップS212)。
図13Cは、メータ部分が水平方向において歪んでいる入力画像1320の例を示す図である。
図13Cは、図6Bに示すように、画像処理装置100が方位角方向に回転した状態、特に矢印A6の逆方向に回転した状態(−θ3)で撮影された入力画像1320を示す。入力画像1320では、メータ部分803が水平方向において歪み、メータ部分803に写っている数値が歪んでいるため、ユーザは、メータ部分803に写っている数値を目視により確認しづらい。
判定部123は、ステップS208の処理と同様にして、検出部121により入力画像内で検出されたメータ部分803に含まれる四辺形を特定する。次に、判定部123は、特定した四辺形の四辺の内、略水平方向に延伸し且つ相互に対向する二辺1321、1322を特定する。判定部123は、特定した二辺1321、1322がなす角度θ6を算出する。判定部123は、算出した角度θ6が第3角度(例えば20°)以上である場合、メータ部分803が水平方向において歪んでいると判定し、算出した角度θ6が第3角度未満である場合、メータ部分803が水平方向において歪んでいないと判定する。
メータ部分が水平方向において歪んでいる場合、指示部124は、撮像装置106の光軸(z軸)に対する方位角方向の画像処理装置100の回転移動指示をユーザに対する画像処理装置100の移動指示として出力して、ユーザに通知する(ステップS213)。指示部124は、メータ部分に含まれる四辺形の略水平方向に延伸し且つ相互に対向する二辺がなす角度が第3角度以下になるように、回転移動指示を出力する。指示部124は、略水平方向に延伸し且つ相互に対向する二辺がメータ部分803より左側で交わる場合(図13Bに示す状態)、画像処理装置100を図6Bの矢印A6の方向(時計回り)に回転移動させる移動指示を出力する。一方、指示部124は、略水平方向に延伸し且つ相互に対向する二辺がメータ部分803より右側で交わる場合、画像処理装置100を図6Bの矢印A6の逆方向(反時計回り)に回転移動させる移動指示を出力する。
このように、指示部124は、入力画像内で検出されたメータ部分の傾きに基づいて、メータ内の数値が入力画像内の所定の傾きで撮像されるように、ユーザに対する画像処理装置の移動指示を出力する。
次に、判定部123は、入力画像が証拠画像として適切でないと判定し(ステップS203)、一連のステップを終了する。
一方、ステップS212において、メータ部分が入力画像の水平方向において歪んでいなかった場合、判定部123は、入力画像が証拠画像として適切であると判定し(ステップS214)、一連のステップを終了する。
以上詳述したように、画像処理装置100は、入力画像内で検出されたメータ部分の傾き又は大きさに基づいて、メータ内の数値が入力画像内の所定の位置又は所定の大きさで撮像されるように、ユーザに対する画像処理装置の移動指示を出力する。これにより、画像処理装置100は、メータを撮影するユーザに対して適切な指示を行うことが可能となった。また、各ユーザは、ユーザ毎の個人差に依存せずに、メータを良好に撮影することが可能となった。特に、撮影しづらい位置にメータが設置されている場合でも、ユーザは、移動指示に従ってメータを良好に撮影することが可能となった。また、各ユーザがメータの撮影に失敗していることに気付かないまま撮影を完了してしまうことが抑制され、画像処理装置100は、適切な証拠画像をより確実に保存することが可能となった。
図14は、他の実施形態に係る画像処理装置における処理回路230の概略構成を示すブロック図である。
処理回路230は、画像処理装置100の処理回路130の代わりに用いられ、CPU120の代わりに、全体処理を実行する。処理回路230は、検出回路231、移動距離検出回路232、判定回路233、指示回路234、数値認識回路235及び記憶制御回路236等を有する。
検出回路231は、検出部の一例であり、検出部121と同様の機能を有する。検出回路231は、撮像装置106からメータを撮影した入力画像を順次取得し、入力画像からメータ部分を検出し、検出結果を判定回路233に出力する。
移動距離検出回路232は、移動距離検出部の一例であり、移動距離検出部122と同様の機能を有する。移動距離検出回路232は、センサ107から出力された移動情報を受信し、受信した移動情報に基づいて画像処理装置100の移動距離を検出し、検出結果を指示回路234に出力する。
判定回路233は、判定部の一例であり、判定部123と同様の機能を有する。判定回路233は、入力画像内で検出されたメータ部分の傾き又は大きさに基づいて、入力画像が証拠画像として適切であるか否かを判定し、判定結果を指示回路234に出力する。
指示回路234は、指示部の一例であり、指示部124と同様の機能を有する。指示回路234は、判定回路233による判定結果及び移動距離検出回路232による検出結果に基づいて、ユーザに対する画像処理装置100の移動指示を表示装置103、音出力装置104又は振動発生装置105に出力する。
数値認識回路235は、数値認識部の一例であり、数値認識部125と同様の機能を有する。数値認識回路235は、入力画像に写っているメータ内の数値を認識し、認識結果を記憶装置110に記憶する。
記憶制御回路236は、記憶制御部の一例であり、記憶制御部126と同様の機能を有する。記憶制御回路236は、証拠画像を数値認識回路235が認識した数値を関連付けて記憶装置110に記憶する。
以上詳述したように、画像処理装置100は、処理回路230を用いる場合においても、メータを撮影するユーザに対して適切な指示を行うことが可能となった。
以上、本発明の好適な実施形態について説明してきたが、本発明はこれらの実施形態に限定されるものではない。例えば、全体処理で使用される各識別器は、記憶装置110に記憶されているのではなく、サーバ装置等の外部装置に記憶されていてもよい。その場合、CPU120は、通信装置101を介してサーバ装置に、各画像を送信し、サーバ装置から各識別器が出力する識別結果を受信して取得する。
また、画像処理装置100は、ユーザによって携帯可能な情報処理装置に限定されず、例えば、ユーザの操作によって飛行する飛行可能な情報処理装置でもよい。