以下に、本発明の実施の形態について図面を参照して説明する。
[システム構成]
図2は、本発明を適用したシステムの一実施の形態の構成を示す図である。図2に示したシステムは、所定の機器に対して、その機器のバグなどの不具合を検出する際に用いられる検査システムである。不具合が検出される対象となる所定の機器とは、ここでは、例えば、開発中の機器である。そのような開発の中の機器の不具合を検出し、対処することで、バグなどの不具合をなくす(改善する)ことができる。
また、不具合が検出される対象となる所定の機器とは、ここでは、商品として出荷される機器でもある。そのような商品として出荷される機器の不具合を検出することで、不具合が検出された不良品を、商品として出荷してしまうような不都合を回避することができる。
検査対象とされる所定の機器として、以下の説明においては、デジタルスチルカメラを例に挙げて説明するが、本発明は、デジタルスチルカメラにのみ適用されることを意味するのではない。すなわち、本発明が適用されたシステムにおける検査対象は、どのような機器であってもよい。
図2に示したシステムは、検査対象が、デジタルスチルカメラ1であり、そのデジタルスチルカメラ1を検査するのがPC(Personal Computer)2とされている。このデジタルスチルカメラ1は、撮像された画像や、ユーザに対する情報などを表示する表示部11と、ユーザからの指示が入力される操作部12が設けられている。
デジタルスチルカメラ1とPC2は、有線または無線で接続され、互いにデータの授受が行えるように構成されている。
[デジタルスチルカメラの内部構成例]
図3は、デジタルスチルカメラ1の内部構成例を示す図である。デジタルスチルカメラ1は、入力部31を備え、その入力部31は、PC2からのデータを入力し、通信解釈部32に供給する構成とされている。通信解釈部32は、入力部31から供給されたPC2からのデータを解析する。
PC2から供給されるデータは、デジタルスチルカメラ1の操作部12(図1)を疑似的に操作するためのデータである。“疑似的”とは、ここでは、例えば、操作部12は、押下されるボタンや回転操作されるダイヤルなどから構成されているが、そのような物理的に操作される操作部12を、実際に物理的に操作していなくても(人為的に操作されなくても)、物理的に操作されたかのように扱う(人為的に操作されたかのように扱う)ことを意味するとする。
通信解釈部32により解釈されたPC2からのデータは、疑似キー操作部33に供給される。疑似キー操作部33は、操作部12が疑似的に操作されたかのように、デジタルスチルカメラ1の各部を制御する。ここでは、疑似キー操作部33による疑似的な操作(以下、単に、疑似キー操作部33による操作と記述する)により、表示部11(図2)に表示される画面のデータが生成される例を挙げて説明を続ける。
疑似キー操作部33による操作は、記憶部34に供給される。記憶部34には、表示部11に表示される画面を生成するためのデータが記憶されている。記憶部34は、疑似キー操作部33の操作に対応するデータを、画面データ生成部35に供給する。画面データ生成部35は、供給されたデータを基に画面データを生成し、出力部36に供給する。出力部36は、供給された画面データを、接続されているPC2に対して出力する。
このように、デジタルスチルカメラ1は、PC2からデータが供給され、そのデータに基づき、画面データをPC2に対して供給する。デジタルスチルカメラ1に対してデータを供給し、デジタルスチルカメラ1から画面データが供給されるPC2の内部構成について説明を加える。
[PCの内部構成例]
図4は、PC2の内部構成例を示す図である。PC2のCPU(Central Processing Unit)51は、ROM(Read Only Memory)52に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)53には、CPU51が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース55は、キーボードやマウスから構成される入力部56が接続され、入力部56に入力された信号をCPU51に出力する。また、入出力インタフェース55には、ディスプレイやスピーカなどから構成される出力部57も接続されている。
さらに、入出力インタフェース55には、ハードディスクなどから構成される記憶部58、および、インターネットなどのネットワークを介して他の装置とデータの授受を行う通信部59も接続されている。ドライブ60は、磁気ディスク71、光ディスク72、光磁気ディスク73、半導体メモリ74などの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
デジタルスチルカメラ1とPC2は、上述したように、データの授受を行う際、有線または無線により接続される。その接続は、デジタルスチルカメラ1の入力部31とPC2の出力部57が接続され、デジタルスチルカメラ1の出力部36とPC2の入力部56が接続されるように構成される。または、デジタルスチルカメラ1の入力部31と出力部36は、PC2の通信部59と接続されるようにしても良い。
[PCの機能について]
図5は、PC2の機能について説明するための機能ブロック図である。PC2は、デジタルスチルカメラ1から供給される画面データの入力を制御するための入力制御部101を備える。また、PC2は、記憶部102を備える。記憶部102には、シナリオファイル103とマスタ画像104が記憶されている。
シナリオファイル103には、図6を参照して後述するように、デジタルスチルカメラ1に疑似的な操作を行わせるためのコマンドや、画像処理に関するコマンドなどが書き込まれている。デジタルスチルカメラ1に疑似的な操作を行わせるためのコマンドとは、換言すれば、デジタルスチルカメラ1の操作部11が操作されたときにデジタルスチルカメラ1側で行われる処理と同等の処理を、操作部11を操作しないで状態で行わせるためのデータである。
マスタ画像104には、デジタルスチルカメラ1の表示部11に表示される正しい画面(その画面の一部分)が書き込まれている。マスタ画像104として、複数の言語に対応した画面が、言語毎に用意されている(内容的には同一であるが、その内容を異なる言語で表した画面が、言語毎に用意されている)。
シナリオ解釈部105は、記憶部102に記憶されているシナリオファイル103を解釈するために設けられている。シナリオ解釈部105は、操作手順指示部106と画像処理指示部107を含む構成とされている。操作手順指示部106は、シナリオファイル103に基づき、デジタルスチルカメラ1が行う疑似的な操作に関する指示を出す(操作指示データを作成する)。画像処理指示部107は、シナリオファイル103で指示される画像の処理を行うように指示を出す(画像処理操作指示データを生成する)。
操作手順指示部106により生成された操作指示データは、操作指示部108に供給され、操作指示部108から出力制御部109にさらに供給される。出力制御部109は、供給された操作指示データを、デジタルスチルカメラ1に対して出力する際の制御を行う。
画像処理指示部107により生成された画像処理操作指示データは、表示画像データ生成部110とマスタ画像データ生成部111に供給される。表示画像データ生成部110には、入力制御部101により入力が制御されたデジタルスチルカメラ1からの画面データも供給される。マスタ画像データ生成部111には、記憶部102に記憶されているマスタ画像104も供給される。
表示画像データ生成部110は、操作手順指示部106から供給された操作指示データに基づき、その時点で必要となる(検査対象となる)画像を、入力制御部101から供給された画面データに基づく画面から切り出し、比較判定部112に供給する。同様にマスタ画像データ生成部111は、その時点で必要となる画像を、記憶部102に記憶されているマスタ画像104から切り出し、比較判定部112に供給する。
比較判定部112には、表示画像データ生成部110からの画像とマスタ画像データ生成部111からの画像が供給される。供給される画像は、同一の指示データに基づくものであり、基本的には同一の画像となる。すなわち、マスタ画像104から切り出された画像は、本来デジタルスチルカメラ1の表示部11に表示されるべき画像(設計段階で、設計者が表示部11に表示される画像として意図している画像)であり、デジタルスチルカメラ1の画像データから切り出された画像は、実際にデジタルスチルカメラ1の表示部11に表示されている画像である。
比較判定部112は、それら2つの画像を比較し、一致しているか否かを判断する。一致していれば問題無いと判定されるが、一致していない場合、問題有り(不具合有り)と判定される。
表示画像データ生成部110、マスタ画像データ生成部111、および、比較判定部112から、それぞれ出力されるデータは、画面生成部113に供給される。画面生成部113は、供給されたデータを基に、図7を参照して後述するような画面の画面データを生成し、表示制御部114に供給する。表示制御部114は、供給された画面データに基づく表示の制御を行う。
比較判定部112により比較結果は、必要に応じて、記憶部115に記憶させることができる構成とされている。なお、図5に示した構成では、比較結果だけが記憶部115に記憶される構成とされているが、例えば、表示画像データ生成部110からの画像データなども記憶されるような構成とすることも勿論可能である。また、記憶部115に記憶される比較結果は、不具合が発生したときの画像や、そのときに行われた疑似的な操作に関する情報である。
なお、記憶部115は、PC2に内蔵されている記憶部58(図4)などでも良いし、PC2に対して着脱自在の磁気ディスク71、光ディスク72、光磁気ディスク73、半導体メモリ74などでも良い。
[シナリオファイルについて]
図6は、シナリオファイル103の一例(一部分)を示す図である。シナリオファイル103は、デジタルスチルカメラ1に対する操作手順や、画像処理内容が記載されたファイルであり、デジタルスチルカメラ1の不具合などを検出する処理が実行される前の時点で、作成され、記憶部103に記憶されているファイルである。
デジタルスチルカメラ1に対する操作手順としては、例えば、シャッターの操作、電源のオン、オフの操作などがある。また、デジタルスチルカメラ1の状態確認のための指示、例えば、エラー状態、LCDの発光・点滅状態などを確認するための指示も記載されている。
画像処理関係の記載としては、例えば、画像比較範囲の設定、画像の照合と比較の指示などがある。また、シナリオファイル103には、シナリオファイル103自体を制御する(PC2を制御する)ための、例えば、実行しない行、コメント、任意に終了させるためのコマンド、繰り返し同一の処理を行わせるためのコマンドなども記載されている。
図6に示したシナリオファイル103中の左側の数値は、行番号を表し、その各行番号の右側(図中略中央)の記載は、コマンドを表す。また、図6に示したシナリオファイル103中の右側には、’(アポストロフィ:apostrophe)と、その後に文が記載されているが、このアポストロフィは、コメントであることを示している。このアポストロフィの意味は、コマンドの所でも同様の意味であり、コマンドの前にアポストロフィが記載されている場合には、そのコマンドはコメントであることを示す。
シナリオファイル103には、少なくとも、コマンドが記載されていれば良く、行番号やコメントは削除することが可能である(なくても良い)。特に、図中右側のコメントは、説明のためにふしたものであり、必ずしも、各行に何らかのコメントを付けなくてはならないことを示すものではない。
図6に示したシナリオファイル103を参照し、コマンドについて説明を加える。ただしここでは、図6に示したシナリオファイル103の30行に関して全て説明を加えるのではなく、重複する説明などは適宜省略して説明を加える。
図6に示したシナリオファイル103の1行目を参照するに、1行目には、“’■DSC-W1 SETUP画面:日本語検証”との記載がある。1行目には、コメントであることを示すアポストロフィ(’)が記載されているため、1行目のコマンドは、コメントであることがわかる。そしてこの場合、このシナリオファイル103は、DSC-W1という型番の商品のSetup画面の、日本語表記の画面を検証するためのファイルであることを示すコメントであることがわかる。
2行目には、“POWER_ON”というコマンドが記載されている。このコマンドは、デジタルスチルカメラ1の電源をオンにするということを指示するコマンドである。3行目には、“NTSC”というコマンドが記載されている。このコマンドは、ビデオ出力をNTSC表示にするということを指示するコマンドである。4行目には、“LANG_JPN”というコマンドが記載されている。このコマンドは、複数の記憶されている言語の内、日本語表示に切り替えることを指示するコマンドである。
5行目には、“ModeSetup”というコマンドが記載されている。このコマンドは、Setupモードにすることを指示するコマンドである。23行目には、“CommonRight”というコマンドが記載されている。このコマンドは、操作部12(図2)を構成するコントロールボタンの右キーを操作する(操作したと疑似的に扱う)ことを指示するコマンドである。
7行目には、“Wait,3000”といコマンドが記載されている。このコマンドは、デジタルスチルカメラ1に対してモード切り替えのために、所定の時間(この場合、3秒(3000)間)だけ待機せよというコマンドである。
このような、“POWER_ON”、“NTSC”、“LANG_JPN”、“ModeSetup”、“CommonRight”、“Wait”というコマンド(ただし、ここでは1例のみしか示していない)は、デジタルスチルカメラ1に対する操作指示コマンドである。
9行目の“’カメラ1タイトル”というコマンドは、シナリオファイル103の内容をわかりやすくするためのコメントであり、以下の行に記載されていることは、“カメラ1タイトル”に係わることであることを示している。このようなコメントは、デジタルスチルカメラ1側の動作やPC2側の画像処理には影響を与えない記載である。
10行目の“SetDir,c:/OsdFont/FONTFILES/MT”というコマンドは、マスタ画像104内に管理されているマスタ画像のうち、処理対象とされるマスタ画像が記憶されているファイルディレクトリを指示するコマンドであり、参照ディレクトリを設定するためのコマンドである。11行目の“ReadImage,MTSET_CAMERA1_JJ”というコマンドは、そのファイルディレクトリに記憶されており、読み出されるマスタ画像のファイル名を示すコマンドである。
12行目の“RectangleB,52,15,248,26”というコマンドは、検証範囲(比較対象となる範囲)を指定するコマンドであり、開始点のX座標、Y座標、開始点から終了点までの縦と横の画素数がそれぞれ記載され、所定の領域を長方形の枠で絞り込むことを指示するコマンドである。同じようなコマンドであるが、19行目には“Rectangle,53,44,187,68”とのコマンドがある。このコマンドは、検証範囲(比較対象となる範囲)を指定するコマンドであり、開始点のX座標、Y座標、終了点のX座標、Y座標がそれぞれ記載され、所定の領域を長方形の枠で絞り込むことを指示するコマンドである。
13行目の“CreateMode,DarkGray”というコマンドは、マスタ画像の登録と文字の色(この場合、DarkGray)を指定するコマンドである。14行目の“Matching”というコマンドは、上記行で指定された範囲内のマスタ画像とデジタルスチルカメラ1から取得される画像との比較、判定を行うことを指示するコマンドである。
このような“SetDir”、“ReadImage”、“RectangleB”、“Rectangle”、“CreateMode”、“Matching”というコマンド(ただし、ここでは1例のみしか示していない)は、画像処理に関するコマンドである。
シナリオファイル103は、このようなコマンドなどから構成される。
このようなシナリオファイル103を設け、以下に説明するようなシナリオファイル103に記載されているコマンドに従った処理が行われることにより、以下のような利点がある。
まず、シナリオファイル103として、手順操作を保存しておくことができる。すなわち、デジタルスチルカメラ1に搭載する言語(外国語表示も含む)が所定の文言・所定の位置に表示をさせるためのキー・ボタン操作を、疑似的に発生させるためのコマンドを、記憶部102に保存し、その保存されているシステムファイル103を呼び出して処理を実行させることにより、同じ操作を何度でも、再現することができるようになる。
また、シナリオファイル103に基づく処理が行われることにより、検査官の人手によらず、指定された手順に従い、検査対象とされた装置(この場合、デジタルスチルカメラ1)に押下動作を行い、所定の画面を表示させることができるようになる。
また、表示されるべき画像・文言の画像(マスタ画像104)と現在の表示画面(デジタルスチルカメラ1の表示部11に表示される画像)の比較・一致を判定することができるようになる。そして、正しい場所に正しい画像が表示画面に存在し、かつ一致しているかを判定し、誤っている場合は、相違点を図示し、記憶部115に記録することができるようになる。
このような利点を有するシナリオファイル103に基づく処理が行われることにより、生成される画面(出力部56(図4)としてのディスプレイ上に表示される画面)について説明を加える。
[画面の構成について]
図7は、PC2の出力部57としてのディスプレイ上に表示される画面(検査官側に提供される画面)の一例を示す図である。画面の左上側には、検査を実行させるときに読み出されるシナリオファイル103を表示するための実行シナリオ表示部161が設けられている。図7に示した画面例では、実行シナリオ表示部161には、読み込みの実行を指示するボタンと、その右側に、例えば、“SETUP_日本語.txt”といったようなシナリオファイル103のファイル名を表示するための欄が設けられている。
シナリオファイル103が複数存在しているような場合、どのシナリオファイル103が実行されるのか確認するために、また、どのシナリオファイル103を実行するのかを選択するために、実行シナリオ表示部161が設けられている。本実施の形態においては、シナリオファイル103を変えるだけで、さまざま検査対象に対応をとることが可能である。換言すれば、デジタルスチルカメラ1に対して検査を行った後、異なるタイプのデジタルスチルカメラに対して検査を行うことや、異なる機種、例えばデジタルビデオカメラに対して検査を行うことが、同一のPC2を用いて、シナリオファイル103を変えるだけで実行させることが可能である。
よって、PC2には、さまざまなタイプの機器や、機種に対応するために、複数のシナリオファイル103を記憶させることが可能であり、複数のシナリオファイル103が記憶されている場合、どのシナリオファイル103を利用するのかを設定する(確認する)部分を、画面上に設けることは、検査官の使い勝手を向上させる点でも効果的であると考えられる。
ディスプレイ上に表示される画面の実行シナリオ表示部161の下側には、自動評価・検証実行中断ボタン部162が設けられている。なお、ここで、“自動”との意味は、ユーザ(検査官)側の手を煩わすことなく(人手で行われるのではなく)、PC2側で従来人手により行われていた評価や検証といった処理が実行されることを意味する。
自動評価・検証実行中断ボタン部162には、“実行”、“テスト中断”、“強制中断”という3つのボタンが設けられている。“実行”というボタンは、検査を開始させるときに操作されるボタンであり、“テスト中断”と“強制中断”というボタンは、実行されている検査を中断させるときに操作されるボタンである。
なお、検証処理が実行される前の時点では、“実行”というボタンのみが有効な状態とされ、“テスト中断”と“強制中断”というボタンは、無効な状態とされるている。そして、検証処理が実行されているときには、“実行”というボタンは、操作できない(無効)な状態とされる。また、検証処理が実行中のときに、“テスト中断”または“強制中断”のボタンが操作されると、“実行”というボタンは、有効な状態に切り換えられる。
自動評価・検証実行中断ボタン部162の右側には、動作状態表示部163が設けられている。動作状態表示部163には、その時点での動作状況を示すメッセージ、例えば、検査中であれば、図7に示したように“自動検証中”といったメッセージが表示される。
動作状況表示部163の右側には、自動評価全体状況表示部164が設けられている。自動評価全体状況表示部164は、検査官に対して処理の終了までどのくらいの時間がかかるのかなどの情報を提示するために設けられている。
例えば、図7に示した画面例では、全項目数に対して、その時点で処理済みの項目数を表す“消化項目数”、処理できなかった項目があったときの項目数を表す“NG数”、処理の開始時刻(実行ボタンが操作された時刻)を示す“開始時刻”、処理の開始から経過した時間を表す“経過時刻”、全ての処理が終了する予定時刻を表す“予測終了時間”、現在の時刻を表す“現在時刻”といった項目が設けられ、それらの情報が提示される例を示している。
なお、“予測終了時間”という項目は、検証処理が中断や終了したときには、“終了時刻”という表示に切り替えられ、その時点での時刻が表示される。検証処理が実行されているときには、“予測終了時間”という項目のところに表示される時刻は、リアルタイムに変動される。これは、図8のフローチャートを参照して後述するように、ステップS14の処理として算出されるため、検証処理中には、リアルタイムに変動し、処理が進むにつれて、より精度が増すように構成されている。
また、この“予測終了時間”が“終了時刻”に切り替えられたときの時刻、すなわち、検証処理が中断または終了された時刻は、後述するように、ログファイルに記載される時刻とされる。
画面中央左側(実行シナリオ表示部161の下側)には、マスタ画像表示部165が設けられている。このマスタ画像表示部165には、その時点で、検査対象とされているマスタ画像(本来デジタルスチルカメラ1に表示部11に表示されるべき画像)が表示される。
画面中央(マスタ画像表示部165の右側)には、パネル表示部166が設けられている。パネル表示部166には、その時点で、デジタルスチルカメラ1から供給された画面データに基づく画面(すなわち、PC2側からの指示によりデジタルスチルカメラ1の表示部11(図2)に表示される画面)が表示される。
画面中央右側(パネル表示部166の右側)には、判定表示部167が設けられている。判定表示部167には、その時点での判定結果(エラーがあったか否かなどの結果)が表示される。
このような各表示部の下側(画面下側)には、シナリオ実行状況表示部168が設けられている。このシナリオ実行状況表示部168は、その時点で実行されているシナリオファイル103の内容を表示する。“その時点で実行されているシナリオファイル103の内容”とは、解釈結果の最新の内容(最終解釈結果の内容)である。また、図7のシナリオ実行状況表示部168においては、最終行が、最終解釈結果の内容を示している。すなわちこの場合、最終解釈結果が、表示末尾に、順次改行後に追加されていく構成とされている。
また、シナリオ実行状況表示部168に表示されている項目のうち、その時点で実行されている項目(コマンド)は、他の項目(コマンド)と区別がつくように、例えば、文字が反転された状態で表示される、下線が引かれた状態で表示されるなどされる。図7に示した例では、マッチングというコマンド(Matchingコマンド)が実行されているために、“マッチング実行”という項目が、他の項目と区別がつくような表示とされている。
なお、シナリオ実行状況表示部168には、既に実行されたシナリオファイル103の内容を表示させたいときに操作される縦スクロールバーも、図中右側に設けられている。このスクロールバーは、シナリオ実行状況表示部168に表示される最大の行数(図7では9行)以上の内容が表示されるときに、表示される。
図7に示した画面は、一例であり、図7では図示していないボタンなどを適宜表示させることは、勿論可能である。
このような構成を有する画面が、検査官(ユーザ)側に提供される。
[PC側の処理について]
次に、上記したような画面を提示しながら行われる検査を実行するPC2の処理について図8のフローチャートを参照して説明する。PC2の処理とは、上記したように、デジタルスチルカメラ1の不具合を検査することである。
検査官により、自動評価・検証実行中断ボタン部162の“実行”ボタンが操作されると、ステップS11において、記憶部102にシナリオファイル103が記憶されているか否か(存在しているか否か)が確認される。記憶部102にシナリオファイル103が存在していなければ、ステップS11以降の処理を実行することはできないので、図8に示した検証処理は終了される。
ステップS11において、シナリオファイル103の存在が確認されると、その確認されたシナリオファイル103が記憶部102から読み出される。シナリオファイル103が読み出される一方で、ステップS12において、開始時刻の記録と初期化の処理が実行される。図4や図5には図示していないが、PC2は、計時する機能を有し、その計時機能により開始時刻が記録される。初期化の処理とは、例えば、図7に示した画面の内の自動評価全体表示部164内の各情報を初期化(例えば、開始時刻を先に記憶した時間に設定する)したり、マスタ画面表示部165などの表示部を初期化(例えば、何も表示されていない状態にする)したりする。
ステップS13において、自動評価・検証実行中断ボタン部162の“テスト中断”ボタンが操作されたか否かが判断される。ステップS13において、“テスト中断”ボタンは操作されていないと判断された場合、ステップS14に処理が進められる。ステップS14において、シナリオファイル103内の1行あたりの処理にかかる所要時間が算出され、その1行あたりの所要時間が用いられて、予測終了時刻の算出が行われる。
1行あたりの処理にかかる所要時間は、例えば、実際に処理が開始されたときに、1行あたりの処理にかかった時間を計測し、その平均値を求める(従って、処理が行われている間、繰り返し行われる処理とされる)ようにしたり、その処理にかかった時間そのものを利用したりしても良い。そして、予測終了時刻は、1行あたりの処理にかかる所要時間と、シナリオファイル103内の行数を乗算し、その値を開始時刻に加算することにより算出することができる。このようにして算出された予測終了時刻などは、後述する処理により自動評価全体状況表示部164の、例えば“予測終了時間”のところに表示される。
後述するように、このステップS14の処理は、ステップS17で、中断や停止が指示されたと判断されるか、または、ステップS19において、シナリオファイル103の行末まで処理が達したと判断(すなわち、検証処理は終了したと判断)されなければ、繰り返し行われる処理である。従って、上述したように、“予測終了時間”のところに表示される時刻は、検証処理が実行されている間、更新されることになる。
ステップS15において、入力ビデオ信号の状態が確認され、その確認結果に応じた設定に切り替えられる。ステップS15において、ビデオ信号が、NTSC方式の信号であるかPAL方式の信号であるかが識別され、その識別結果に応じた方式に設定される。デジタルスチルカメラ1から画面データ(ビデオ信号)が供給されるが、そのデジタルスチルカメラ1が、PAL方式の国に出荷されるものであれば、PAL方式の画面データが供給されるため、ステップS15のような処理が設けられる。
このようなステップを設けることで、方式の異なる国々の製品を扱うことができるようになる。すなわち、本実施の形態においては、異なる方式のビデオ信号を扱うことできる。なお、ここでは、このようなステップを設け、デジタルスチルカメラ1側には出力部36(図3)を設け、PC2側には入力制御部101を設けることにより、デジタルスチルカメラ1からのビデオ信号の授受が行われるとして説明するが、例えば、デジタルスチルカメラ1の表示部11に表示されている画像を、図示していないカメラで撮像し、そのカメラで撮像された画像のデータが、PC2側に、デジタルスチルカメラ1からのビデオ信号のかわりに供給されるようにしても良い。
ステップS16において、コマンド実行処理が行われる。この処理は、シナリオファイル103を解析することにより行われる(シナリオファイル103に記載されているコマンドに従って行われる)。このステップS16におけるコマンド実行処理については、図9に示すフローチャートを参照して後述する。
ステップS17において、自動評価・検証実行中断ボタン部162の“テスト中断”ボタンまたは“強制中断”ボタンのうちのいずれか一方のボタンが操作されたか否かが判断される。ステップS17において、それらのボタンが操作されたと判断された場合、ステップS20に処理が進められ、それらのボタンは操作されていないと判断された場合、ステップ18に処理が進められる。
ステップS18において、シナリオファイル103内の解釈が1行分だけ進められる。すなわち、この図8に示したフローチャートに基づく検証処理は、シナリオファイル103に記載されている1行毎に行われる処理である。
ステップS19において、シナリオファイル103内の解釈が1行分だけ進められることにより、最後の行に達したか否かが判断される。ステップS19において、シナリオファイル103の最後の行まで処理は終了されていないと判断された場合、ステップS13に処理が戻され、それ以降の処理が繰り返される。
一方、ステップS19において、シナリオファイル103の最後の行まで処理は終了されたと判断された場合、ステップS20に処理が進められる。ステップS20への処理には、ステップS13において、“テスト中断”ボタンが操作されたと判断された場合、ステップS17において、“テスト中断”ボタンまたは“強制中断”ボタンが操作されたと判断された場合も来る。すなわち、シナリオファイル103に基づく処理が何らかの指示により終了された時点で、ステップS20に処理が進められる。
ステップS20において、画面窓、表示部に対して結果表示が行われる。すなわち、検査官が視認できる画面として、エラー(バグ)が発生した部分を提示するための処理が実行される。また、ステップS21において、検査にかかった所要時間や履歴の追加といった処理が行われる。
このようにして、シナリオファイル103に基づき、デジタルスチルカメラ1に対する検査が行われる。
ステップS16において実行されるコマンド実行処理について、図9のフローチャートを参照して説明する。ステップS41において、処理対象とされているシナリオファイル103の行に記載されているコマンドに対し整形の処理が施される。コマンドの整形とは、例えば、大文字や小文字を統一して大文字にする、全角や半角を統一して半角にする、空白を除去するなどの処理がある。
ステップS42において、整形が施されたシナリオファイル103内の行に記載されているコマンドの解釈が行われる。そして、その解釈に基づき、ステップS43において、処理対象となっているシナリオファイル103の行に記載されていたコマンドは、コメントまたは改行であるか否かが判断される。コメントや改行は、操作指示を出すためのコマンドではなく、画像処理操作指示に関するコマンドでもないため、そのようなコマンドではないか否かが、ステップS43において判断される。
ステップS43において、コマンドは、コメントまたは改行ではないと判断された場合、換言すれば、操作指示または画像処理操作指示を示すコマンドであると判断された場合、ステップS44に処理が進められる。ステップS44において、解釈されたコマンドに基づく指示コマンドのデータが生成され、そのコマンドによる処理が実行される。この処理で生成され、実行されるコマンド(コマンドデータ)は、[シナリオファイルについて]のところで説明したようなコマンドである。
生成されたコマンドが、操作指示コマンドに関するものであった場合、出力制御部109(図5)からデジタルスチルカメラ1に対して出力され、画像処理操作指示コマンドに関するものであった場合、表示画像データ生成部110やマスタ画像データ生成部11に対して出力される。そして、コマンドを受けた各部は、そのコマンドに対応する処理を実行する。
このような処理が終了されると、または、ステップS43において、解釈されコマンドはコメントまたは改行であると判断された場合、ステップS45に処理が進められる。ステップS45において、解釈されたコマンドの結果が、検査官側に提示される。すなわち、図7に示した画面を参照するに、シナリオ実行状況表示部168に、解釈されたコマンドの結果が表示される。
なお、ステップS42において、シナリオを解釈し、その解釈されたコマンドの処理が実行された後、ステップS45において、解釈されたコマンドの結果を表示するようにしたのは、デジタルスチルカメラ1の処理能力とPC2の処理能力が異なることを考慮し、別々に処理が行われるようにしている。このように、シナリオの解釈と表示を別々に行うことで、デジタルスチルカメラ1からの画像のとりこぼしを無くし、必ず、表示画像を比較対象とすることが可能となる。
ステップS45における処理が終了されると、ステップS46において、画像照合の処理が行われたか否かが判断される。画像照合の処理とは、マスタ画像と、デジタルスチルカメラ1からの画像が一致するか否かを判断する処理である。また、この画像照合の処理は、シナリオファイル103内の“Matchingコマンド”が実行されたときに行われる処理である。従って、ステップS46の処理は、“Matchingコマンド”が実行されたか否かを判断することにより行うことができる。
ステップS46において、画像照合をしたと判断された場合、ステップS47に処理が進められ、画像照合はされていないと判断された場合、コマンド実行処理は終了される。
ステップS47において、比較判定の処理が実行される。すなわち、上記したように、マスタ画像と、デジタルスチルカメラ1からの画像が比較され、一致しているか否かが判定される。その判定結果なども含め、ステップS48において、履歴、ログ、結果画像が、それぞれ作成され、保存される。
このようにして、シナリオファイル103で規定される処理が実行される。なお、上記したように処理が行われ、1つのコマンドが出された後、その1つのコマンドだけで処理が実行され続けるような処理にはされていない。例えば、処理の開始を指示するコマンドだけを用意し、そのコマンドが実行されると、処理の最後まで(シナリオファイル103の最後の行まで)処理が行われるようには、上記したシナリオファイル103およびそのシナリオファイル103を用いた処理では設定されてはいない。
換言すれば、上記した処理は、シナリオファイル103の行毎(コマンド毎)に解釈され、実行されるという処理が繰り返されるように設定されている。このように設定することで、以下のような利点がある。
まず、開発段階の機器(この場合、デジタルスチルカメラ1)に対して検査を行う場合、PC2側のシナリオファイル103自体にバグがある可能性がある。シナリオファイル103自体にバグがあると、結果として、画面が凍ってしまう(ハングアップの状態になってしまう)、画面上に必要のない情報(ゴミ)が表示されてしまうなどの不具合が発生する可能性がある。またこのような不具合は、検査対象の機器(デジタルスチルカメラ1)側の不具合により発生する可能性も勿論ある。
仮に、開始を指示する1つのコマンドにより最後まで処理が実行されるように設定されていると、バグが発生したときでも、そのまま、最後まで処理が継続されてしまう可能性があり、その結果、バグの発生を検査官が発見できないような不具合が発生する可能性がある。
しかしながら、本実施の形態のように、1つのコマンド毎に処理が行われるようにすれば、あるコマンドが実行されることによりバグが発生した場合、そのコマンドでバグが発生したことを確認できる(コマンドが実行された時点で、バグを発見できる)ようになる。
また、1つのコマンド毎に処理が行われるようにすることで、図7に示した画面内の表示が更新される、例えば、シナリオ実行状況表示部168の表示される文章が、コマンドが実行される毎に追加される(図7を参照して説明した例では、シナリオ実行状況表示部168内の最終行に、その時点で実行されているコマンドの内容が追加、表示される)ので、画面が凍り付いたように見えてしまうといった不都合を回避することができる。また、画面が更新されることにより、検査官は、検査が順調に行われている(検査の処理自体にはバグが発生していない)ということを確認することができる。
勿論、シナリオ実行状況表示部168内の表示だけでなく、マスタ画像表示部165、パネル表示部166、判定表示部167などの表示も更新されるため、上記したように、検査官は、検査が順調に行われていることを確認することができる。
[具体例による動作説明]
上記したフローチャートにおける処理(特に図9に示したコマンド実行処理)について、図10を参照してさらに説明を加える。以下の説明においては、マスタ画像を基準画像、デジタルスチルカメラ1から供給される画面データに基づく画像を表示画像(比較対象画像)と、それぞれ適宜記述する。
シナリオ解釈部105(図5)が、記憶部102に記憶されているシナリオファイル103から読み出し、処理対象とされた行に記載されているコマンドを、ReadImageコマンド(例えば、図6のシナリオファイル103の18行目)であると解釈すると、そのコマンドで指示されているマスタ画像104が記憶部102から読み出される。
この一連の処理は、まずステップS42の処理で、処理対象とされた行に記載されているコマンドが、ReadImageコマンドであると解釈され、ステップS43において、ReadImageコマンドであるので、コメントや改行のコマンドではないと判断され、ステップS44に処理が進められる。そして、ステップS44において、ReadImageコマンドに対応する指示コマンドデータが生成される。この場合、ReadImageコマンドで指示されたマスタ画像104を、記憶部102から読み出すという指示が、マスタ画像データ生成部111に出力される。
そして、ステップS45の処理として、コマンド解釈結果表示として、シナリオ実行状況表示部168(図7)に、“マスタ画像[MBSET AFMODE_JJ]を読む”といった表示がなされる。ステップS46において、画像照合が行われたか否かが判断されるが、この場合、マスタ画像104を読み出しただけであり、画像照合は行っていないので、NOと判断され、ReadImageコマンドに対する処理は終了される。
図10では、ReadImageコマンドに基づく処理が実行されることにより、マスタ画像として“AFモード:”という文言の画像が読み出された例を示している。この“AFモード:”という文言(画像)は、マスタ画像表示部165に表示される。
この表示は、マスタ画像データ生成部111により生成された画像データを基に、画面生成部113が、マスタ画像表示部165に“AFモード:”という画像が表示される画面の画面データを生成し、その生成された画面データを基に、表示制御部114がディスプレイ上の画面の表示を制御することにより行われる。
次に、ステップS42において解釈されたコマンドがCreateModelコマンド(例えば、図6のシナリオファイル103の20行目)であった場合、マスタ画像104として読み出された画像(この場合、“AFモード:”という文言)を、基準画像としてテンプレートに登録する処理が実行される。
テンプレートとして登録されるのは、この場合、“AFモード:”という文言(画像)そのものであっても良いが、この画像から特徴を抽出し、その抽出された特徴に関する情報が登録されるようにしても良い。ここでは、抽出された特徴に関する情報が、テンプレートして登録されるとして以下の処理を進める。
このようにCreateModelコマンドというコマンドが実行された場合、マスタ画像(基準画像)の特徴が抽出され、その抽出された特徴に関する情報が、テンプレートとして登録される。また、このとき、背景の色や文字の色なども指定される(例えば、図6の20行目を参照すると、LightGrayとの指示がある)。そのような登録の処理が、ステップS44の処理として終了されると、ステップS45における処理として、シナリオ実行状況表示部168に、例えば、“字体は薄灰色でテンプレート抽出”といった表示がなされる。
この場合も、画像照合は行われていないので、ステップS46における処理ではNOと判断され、コマンド実行処理は終了され、次の行のコマンドに処理対象が移される(ステップS18(図8)の処理)。
次に、ステップS42において解釈されたコマンドがRectangleコマンド(例えば、図6のシナリオファイル103の19行目)であった場合、表示画像(比較対象画像)から、比較対象となる画像が切り出される。なお、図6に示したシナリオファイル103に従えば、既に説明したCreateModelコマンドは、ここで説明しているRectangleコマンドより後に処理が行われるが、説明の都合上、ここでは、順番を入れ換えて説明を加えた。
Rectangleコマンドは、デジタルスチルカメラ1から供給される画面データを基に作成された画面から、所定の領域内(この場合、図6の19行目のコマンドに従えば、開始点(53,44)から終了点(187,68)で囲まれる長方形の枠内)の画像を切り出すことを指示するコマンドである。例えば、図10に示すように、また、図7に示すように、デジタルスチルカメラ1から供給される画面データを基に作成された画面は、パネル表示部166に表示される。
このパネル表示部166に表示されている画面は、入力制御部101(図5)で入力が制御されたデジタルスチルカメラ1からの画面データを基に、表示画像データ生成部110(図5)により作成される。表示画像データ生成部110は、作成した画面データを画面生成部113に供給するとともに、シナリオ解釈部105の画像処理指示部107からの指示があったときには、その指示に基づく処理も実行する。
この場合、画像処理指示部107からは、RectangleBコマンド(または、Rectangleコマンド)により設定された領域内の画像を切り出すという指示なので、その指示に基づいて、画像の切り出しを行う。図10に示した例は、“AFモード:”という文言(画像)が切り出された例である。また、切り出された画像の特徴が抽出され、その抽出された特徴の情報が、比較判定部112に供給される。
このようにして、比較判定部112には、マスタ画像(基準画像)から抽出された特徴に関する情報と、表示画像(比較対象画像)から抽出された特徴に関する情報とが供給される。そのような状態のときに、シナリオファイル103の解析結果として、Matchingコマンド(例えば、図6のシナリオファイル103の21行目)が入力されると、評価、判定の処理が実行される。
すなわち、比較判定部112は、入力されている2つの画像の、それぞれの特徴に関する情報を用いて、パターンを見いだし、一致性の確認を行う。例えば、2つの画像のパターンマッチング(1ドット単位で明暗を比較するなど)を行うことにより、2つの画像の類似性、相違点が検出される。そして、その2つの画像が一致すれば、不具合はないと判断され、その2つの画像に相違点があれば、その点が不具合であるとして判断される。
このように、Matchingコマンドが入力されると、画像照合が行われる。従って、ステップS46(図9)において、画像照合したと判断され、ステップS47に処理が進められ、比較と判定が行われる。そして、その結果が、ステップS48において、比較判定部112から記憶部115に書き込まれる。
このようにして、記憶部115には、画面照合が行われたときに、その結果が書き込まれる。記憶部115に書き込まれる結果としては、例えば、図10に示すようなログ画像やログファイルがある。ログ画像とは、判定表示部167に表示されている画像(表示されていた画像)であり、ログファイルは、その画像を生成する過程で行われた操作指示のログである。
ログファイルは、例えば、図11に示すようなテキストが記載されたファイルである。図11に示したログファイルは、図6に示したシナリオファイル103が実行されたときに作成されるファイルである。例えば、シナリオファイル103の14行目に記載のMatchingコマンドが実行されたことにより、ログファイルとして作成されるのは、1乃至16行目である。なお、行番号は、説明のために記載し、必ずしもログファイルに記載されていなくてはならない事項ではない。
1つのMatchingコマンドが実行されることによりログファイルに記載される内容には、マッチングの結果(2行目)、実行日時(3行目)、マスタ画像が記憶されているディレクトリ(4行目)、ログ画像が記憶されているディレクトリ(5行目)、枠やラジオボタンが指定されていたか否かを示すデータ(6,7行目)、文字の色が指定されていたか否かを示すデータ(8行目)、シナリオファイル103の対応する部分にコメントが記載されていたときにはそのコメント(9行目)がある。
またログファイルには、マッチングのときのマッチング率(10行目)、マッチングのときに用いた画像の倍率(11行目)、マッチングの処理にかかった時間(12行目)、角度(13行目)、マスタ画像と処理対象との画像との間で一致しなかったピクセルの数(14行目)、扱った画像のビデオ出力の形式(15行目)、カラー出力の形式(16行目)なども記載される。
なお、ここでは、ログファイルとログ画像は、別々のものとして記載したが、1つにまとめたファイル(例えば、ログファイルなかに、ログ画像のデータが含まれるようなファイル)として記憶されるようにしても良い。
また、ログファイルやログ画像として記録するのは、マッチングを行った全ての結果と画像でも良いし、NG(エラー、不具合)が発生したときの結果と画像のみでも良い。
このようなログ画像やログファイルを記録することで、検査官が、検査が行われた後の時点で、不具合が出た部分や、不具合が出たときの状況を確認することができるようになる。
このようにMatchingコマンドが入力された時点で、画像照合が行われることにより、表示されるべき画像・文言の画像(マスタ画像104)と現在の表示画面(デジタルスチルカメラ1の表示部11に表示される画像)の比較・一致を判定することができるようになる。
そして、正しい場所に正しい画像が表示画面に存在し、かつ一致しているかが判定され、誤っている場合は、相違点が図示され、記憶部115に記憶されるので、すなわち、判定結果が、ログ画像やログファイルとして記憶されるので、検査終了後の時点でも、検査中の画面の表示を行うことができるようになる。よって、判定、検査結果とその相違点の画像などを、検査官などが確認することができる。また、不具合が発生したときの状況を、ログファイルに基づき、再現することが可能となる。
[検証後の結果について]
図12に、ログ画像の一例を示す。図12に示したログ画像201は、不具合が検出されたときの画面であり、その不具合は、“Inteligente”という単語の表示に発生しているときの画面である。また、図12に示したログ画像201は、ポルトガル語圏内のユーザ向けの画面であり、文言は、ポルトガル語で表示されている。
図12に示した例では、“Inteligente”という単語に不具合が発生しているため、その“Inteligente”という単語は、他の単語と区別がつくような表記がされる。例えば、“Inteligente”という単語は、赤色の四角で囲まれて表示される。ここで、赤色の四角としたのは、赤色は一般的に注意を向けされるときなどに用いられる色であり、不具合を検査官に認識させるには、適した色であると考えられる。勿論、他の色で囲まれるようにしても良い。
また、不具合が発生している箇所には棒線(比較的太い下線など)が引かれるなどして、検査官が一目して不具合が発生している箇所を認識できるような表示を行うようにしても良い。換言すれば、不具合が発生している箇所(マスタ画像と一致しなかった箇所)が、明確になるような表示が行われるようにしてもよい。図12に示した画面では、“Inteligente”という単語のなかの“g”という文字の下側に、下線が引かれている。
図13に、図12に示した不具合が発生した“Inteligente”という単語の表示を拡大した画像を図示する。図13の上側の画像は、マスタ画像(基準画像)であり、下側の画像は、表示上の画像(比較対象画像)である。マスタ画像は、既に説明しているように、本来表示されるべき正しい画像であり、そのマスタ画像と一致しない比較対象画像の部分が不具合と判断される。
図13に示した2枚の画像のうち、上側の基準画像の“g”の部分の下側と、下側の比較対象画像の“g”の部分の下側を見比べる。見比べることにより、比較対象画像の“g”の部分の下側の丸みがある部分が欠けていることがわかる。基準画像と比較対象画像との、このような違いは、数ドット単位である。このような数ドット単位の違い(不具合)は、検査官が、目視で検査を行っているような場合には、見つけづらい不具合であり、見落としてしまう可能性が高い不具合である。
また、ポルトガル語圏内の検査官が、ポルトガル語の画面を目視して不具合を発見するのと、日本語圏内の検査官が、外国語であるポルトガル語の画面を目視して不具合を発見するのとでは、同一の精度で検査が行われるとはいえず、明らかに、後者の方が精度が低いと考えられる。しかしながら、本発明を適用すれば、PC2側で不具合を発見し、検査官の目視などによらないなので、検査官が、ポルトガル語圏内の検査官であっても、日本語圏内の検査官であっても関係なく、同一の精度で、不具合の発見を行うことが可能となる。
すなわち、本発明を適用することで、所定の機器に対する検証(検査)を、人手によらず行うことができるので、検証・評価作業者間による評価差を減少させることができ、一定の精度を維持することが可能となる。すなわち、人の五感による作業では、経験差も含めて、作業完了までの時間や精度面で大きな開きが発生するが、本発明を適用することにより、この人的要因を排除することが可能となり、作業時間を短縮することができるだけでなく、精度面においても一定の基準を確保することができる。
また近年、商品化される製品は、さまざまな国に出荷される傾向にあるため、その出荷先の国の言語で、画面上の文言が表示される必要がある。そのため、1つの商品であっても、さまざまな言語に対応する画面を用意する必要があり、それらの画面毎に検査を行う必要がある。このような状況を考慮すると、上記したような異なる言語を、同一の精度で不具合を発見できるようにすることは、本発明を適用したときに期待できる大きな効果の1つである。
このように、本発明によれば、人手に頼っていたソフトウェアの開発・検証作業が自動化する(人手に頼らずできるようにする)ことがきる。よって、そのような開発、検証などにかかる作業時間を短縮し、手間のかかる作業を自動的に実行でき、人の目視で行っていた画像の確認なども精度を高めた上で実行することが可能となる。
また、人為的に検査などを行わないことにより、夜間なども連続して検査を実行できる(PC2に連続して処理を行わせることができる)ようになる。すなわち、複数の操作手順を連続で自動実行することが可能となるため、夜間、無人での作業も可能となる。
また、人が同じ操作をしているつもりでも不具合を再現できないようなケースにおいても、本発明によれば、操作手順が記録されるため、再生実行させるだけで、容易に不具合の再現が可能となる。よって、上記したように、夜間などに無人で行われた作業も、後の時点で、検査官(人)による確認作業を行うことが可能となる。もって、検査の精度をより向上させることが可能となる。
[記録媒体について]
上述した一連の処理は、それぞれの機能を有するハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
記録媒体は、図4に示すように、PC2とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク71(フレキシブルディスクを含む)、光ディスク72(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク73(MD(Mini-Disc)(登録商標)を含む)、若しくは半導体メモリ74などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM52や記憶部58が含まれるハードディスクなどで構成される。
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
1 デジタルスチルカメラ, 2 PC, 11 表示部, 12 操作部, 31 入力部, 32 通信解釈部, 33 疑似キー操作部, 34 記憶部, 35 画像データ生成部, 36 出力部, 101 入力制御部, 102 記憶部, 103 シナリオファイル, 104 マスタ画像, 105 シナリオ解釈部, 106 操作手順指示部, 107 画像処理指示部, 108 操作指示部, 109 出力制御部, 110 表示画像データ生成部, 111 マスタ画像データ生成部, 112 比較判定部, 113 画像生成部, 114 表示制御部, 115 記憶部