以下、コード読取装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
図1は、本実施の形態におけるコード読取装置1のブロック図である。
コード読取装置1は、撮影部101、照明部102、取得部103、制御部104、出力部105を備える。
コード読取装置1は、コードを読み取るための装置である。コード読取装置は、コード読取のための専用の装置であっても良く、他の機能を有する汎用の装置等であっても良い。例えば、コード読取装置は、いわゆるスマートフォン等の多機能携帯電話や、タブレット型端末や、携帯電話等の、カメラ等を備えた携帯情報端末等と考えてもよい。
撮影部101は、一以上のコードを含む領域を撮影して撮影画像を取得する。撮影部101は、例えば、一の画像において、二以上のコードを含む領域を撮影した撮影画像を取得してもよい。撮影部101は、例えば、CCDやCMOS等の撮像素子を備えたカメラである。撮影部101は、ビデオカメラであっても良く、デジタルスチルカメラであっても良い。撮影画像は、通常、動画像であるが、静止画像であっても良く、予め指定された時間間隔を隔てて撮影された一連の複数の静止画像等であっても良い。また、撮影画像は、動画像を構成する一または二以上のフレーム画像と考えてもよい。二以上のフレーム画像は、連続していてもよく、連続していなくても良い。例えば、二以上のフレーム画像は、予め指定された数のフレーム画像を隔てて取得された二以上のフレーム画像であっても良い。また、撮影部101が撮影する撮影画像の画素数や、撮影部101が送信する撮影画像のファイル形式や、圧縮方式等は問わない。また、撮影部101が撮影画像を撮影するタイミング等は問わない。なお、撮影部101は、外部のカメラ等を制御するドライバー等と考えてもよい。
撮影部101は、いわゆるスマートフォン等の多機能携帯電話や、タブレット型端末や、携帯電話等のカメラ等と考えてもよい。
一以上のコードは、情報と対応づけられたコードである。コードと対応づけられた情報は、例えば、コードから読み出される情報である。一以上のコードと対応づけられた情報は、例えば、コードの識別子である。一以上のコードと対応づけられた情報は、例えば、物品またはサービスの識別子と対応づけられた情報である。コードと対応づけられた情報が、物品またはサービスの識別子と対応づけられているということは、例えば、コードと対応づけられた情報自身が、物品またはサービスの識別子であることであっても良く、コードと対応づけられた情報が、物品またはサービスの識別子と対応づけられていることであってもよい。例えば、コードから読み出される情報と、物品識別子とを対応づけて有する情報を図示しない格納部等に予め格納しておくことで、コードから読み出される情報と、物品識別子とを対応づけて管理することができる。
一以上のコードは、例えば、物品あるいはそのパッケージの表面や、サービスを示すメニュー等に配置(例えば、添付や印刷)されている。コードは、例えば、二次元状のコードである。一以上のコードは、このコードに対応づけられた物品が配置されている位置の近傍に配置されていても良い。例えば、一以上のコードは、このコードに対応づけられた物品が配置されている棚やパレットや、物品を仕切っている仕切板等に配置(例えば添付)されたコードであってもよい。
コードとは、例えば、バーコード、二次元バーコード、QRコード(登録商標)、カラーコード、文字列、数字列等の識別可能なものであれば何でも良い。コードは、例えば、光学的な機器を用いて読取り可能な情報である。コードは、文字列や数字列を除いた図形の形状や色やパターンやこれらの組合わせにより識別可能なコードであることが好ましい。コードは、色の配列を識別のための情報として有する二次元コードであるカラーコードであることは好適である。カラーコードは、例えば、カメレオンコードやカラーバーコード、カラー二次元コードとも呼ばれる場合がある。
なお、以下、本実施の形態においては、後述する取得部103がコードから取得する情報がコードの識別子であるコード識別子である場合を例に挙げて説明する。コード識別子は、例えば、コードに対応した文字列や、数字列や、文字列と数字列との組合わせ等である。
照明部102は、撮影部101が撮影する領域に光を照射する。照明部102は、例えば、照明のオン、オフや照明の光量等を調節するためのドライバ等を有している。また、照明部102は、通常、一以上の光源(図示せず)を有している。ただし、照明部102は、光源を備えておらず、ドライバ等により照明部102の外部の光源(図示せず)等を用いて光を照射させるようにしても良い。照明部102の照射する光は、後述する制御部104により制御される。照明部102は、いわゆるスマートフォン等の多機能携帯電話や、タブレット型端末や、携帯電話等のフラッシュや照明と考えてもよい。なお、照明部102は、結果として、撮影部101が撮影する領域に光を照射できればよい。
照明部102は、例えば、照射する光の量(以下、光量と称す)を変更可能なものである。例えば、照明部102は、制御部104が出力する制御信号等に応じて、動作電流を制御することで、発光する光量を調節可能なものであることが好ましい。また、発光する光量が異なる照明を切り替えたり、照明に利用する光源の数を変更することで、結果的に、照射する光の光量を変更可能なものであっても良い。照射する光の量は、光の強度と考えてもよい。また、光量の代わりに光の照度を考えるようにしてもよい。
照明部102は、例えば、照射する光の色を変更可能なものである。例えば、照明部102が照射する光の色は、制御部104により制御される。照明部102は、どのような構成により照射する光の色を変更できるものであっても良い。照明部102は、例えば、異なる色を発する二以上の光源(図示せず)を有しており、これらの光源が出力する光量を個別に制御することで、照射する光の色を変更可能なものである。例えば、照明部102は、個別に光量を制御可能な、R(赤)の光を照射する光源と、G(緑)の光を照射する光源と、B(青)の光を照射する光源とを備えたものであり、各光源の光量を個別に制御することで、照射する光の色を変更可能なものである。光の強度を制御することは、光をオン、オフすることも含む概念である。また、照明部102は、例えば、1以上の光源から出射される光を、カラーフィルタを透過させることによって着色して出力することで、光の色を制御してもよい。例えば、複数の光源から出力される光が、それぞれ異なる色のカラーフィルタを通過して出力されるようにし、各光源の出力を変更することで、光の色を制御しても良い。また、例えば、複数の光源から出力される光が、それぞれ、液晶フィルタ(図示せず)と、異なるカラーフィルタ(図示せず)とを通過して出力されるようにし、制御部104が出力する制御信号等に応じて、各液晶フィルタについての光の透過、非透過を個別に切り替えることで、照射される光の色を制御しても良い。例えば、光の透過を個別に切り替えて、各カラーフィルタから出射される光の組み合わせを変更することで、異なる色の光を照射できるようにしてもよい。異なるカラーフィルタは、例えば、R、G、Bのカラーフィルタである。
取得部103は、撮影部101が取得した撮影画像内において一または二以上のコードを検出する処理を行なう。そして、取得部103は、検出した一または二以上のコードから、このコードに対応づけられた情報を取得する。例えば、取得部103は、コードと対応づけられた情報として、コード識別子を取得する。
取得部103によるコードの検出は、コードの画像や、コードの領域を検出することと考えてもよい。例えば、撮影画像が動画像である場合、取得部103は、撮影部101が取得したフレーム画像を二値化して、パターンマッチングや特徴量を検出する処理等により、コードの外枠等の形状を認識して、撮影画像内のコードが配置されている領域を検出する。そして、検出したコードの画像を取得する。撮影画像が静止画像である場合においても同様である。なお、取得部103は、一の撮影画像から、複数のコードの画像を取得しても良い。また、取得部103は、取得したコードの画像の形状を、適宜補正してもよい。なお、撮影画像から、コードを検出してコード識別子を取得する処理等は、公知技術であるため、ここでは詳細な説明は省略する。
取得部103は、例えば、撮影画像内においてコードを検出できなかった場合、コードが検出できなかったことを示す情報を、後述する制御部104に出力してもよい。例えば、撮影画像が動画像である場合においては、コードの検出を開始してから予め指定された時間内にコードが検出できなかった場合に、コードを検出できなかったことを示す情報を出力しても良い。
取得部103が、撮影画像から検出した一または二以上のコードから、この一または二以上のコードに対応づけられた情報、例えば、コード識別子等を取得する処理については、公知の技術であるため、ここでは、詳細な説明は省略する。
取得部103は、例えば、撮影画像から検出したコードから、このコードに対応づけられた情報を取得できなかった場合、コードが取得できなかったことを示す情報を、後述する制御部104に出力してもよい。検出されたコードから、コードに対応づけられた情報を取得できなかった場合とは、例えば、コードがカラーコードであった場合において、コードが配置されている領域は検出できたが、このコードを構成する色が判別できなかった場合等である。例えば、撮影画像が動画像である場合においては、コードの検出を開始してから予め指定された時間内にコードに対応づけられた情報が取得できなかった場合、取得部103は、コードに対応づけられた情報が取得できなかったことを示す情報を出力しても良い。
取得部103は、更に、図示しない格納部等に予め格納されているコード識別子と物品またはサービスの識別子とを対応づけて有する複数の情報から、上記で取得した一以上のコード識別子に対応した物品またはサービスの識別子を取得するようにしてもよい。
なお、例えば、カラーコード等の、色の配列を識別情報として有する二次元コードの場合、一の撮影画像に複数のコードが存在する場合であっても、複数の各コードからそれぞれコード識別子等のコードに対応する情報を取得可能なものがあることが知られている。このため、このようなコードを使うことで、一の撮影画像内の複数のコードについてそれぞれ、コード識別子等の情報を取得することが可能である。
取得部103は、例えば、一の撮影画像について一以上のコードを検出した場合、あるいは、検出したコードから、このコードに対応する情報が取得できた場合、それ以降は、同じ撮影画像については、コードの検出や、コードに対応する情報の取得は行なわないようにしても良い。
制御部104は、取得部103が撮影画像から取得した情報に応じて、照明部102が撮影領域に対して照射する光を制御する。例えば、制御部104は、照明部102が照射する光の光量や、光の色を制御する。制御部104による照明部102の制御は、例えば、照明部102に対して、制御信号等を出力することにより行なわれる。
制御部104は、例えば、撮影部101が取得した撮影画像から、一以上のパラメータを取得し、取得したパラメータに応じて、照明部102が撮影領域に対して照射する光を制御する。制御部104が取得するパラメータは、どのようなパラメータであっても良い。制御部104が取得するパラメータは、例えば、撮影領域に対して照射されている光の状況に対応関係を有するパラメータである。
制御部104が撮影画像から取得するパラメータは、例えば、光量に関するパラメータである。制御部104は、例えば、撮影画像から、光量に関するパラメータを取得し、取得したパラメータに応じて、照明部102が撮影領域に対して照射する光の光量を制御する。光量に関するパラメータは、光の強度に関するパラメータと考えてもよい。光量に関するパラメータは、例えば、撮影領域に照射されている光の光量を結果的に判断可能なパラメータである。照明の光量に関するパラメータとは、例えば、照明の光量に対して対応関係を有する撮影画像のパラメータである。光量に関するパラメータは、例えば、撮影画像全体あるいはその一部の、明度または輝度のパラメータである。明度または輝度のパラメータは、例えば、撮影画像全体あるいはその一部を構成する一以上の画素の明度または輝度や、その平均値や中央値等の代表値や、最大値や最小値等である。また、光量に関するパラメータは、例えば、撮影画像全体あるいはその一部の、Rチャンネルや、Gチャンネル、Bチャンネル等の一以上のチャンネルの値やその代表値や最大値や最小値等であってもよい。
制御部104は、例えば、光量に関するパラメータを取得して、取得したパラメータが予め指定された条件を満たす場合に、照明部102が撮影領域に対して照射する光の光量を制御する。予め指定された条件とは、例えば、撮影領域からコードを適切に読み取れないことを判断するための光量に関する条件である。予め指定された条件は、例えば、光量に関するパラメータが第一の閾値以下であるという条件や、第二の閾値以上であるという条件(ただし、第一の閾値は、第二の閾値よりも小さい値であるとする)等である。
制御部104は、例えば、取得した光量に関するパラメータが予め指定された条件を満たすと判断した場合に、照明部102により、撮影領域を照明させるようにしてもよい。この際、制御部104は、例えば、照明部102に予め指定された光量で撮影領域を照明させてもよい。なお、上述した閾値は、コード読取装置1が利用される環境等に応じて、適宜変更可能である。また、閾値の最適な値は、例えば、実験結果や経験値等に応じて得られた値を設定することが好ましい。かかることは、以下の他の閾値等についても同様である。
また、制御部104は、例えば、パラメータが予め指定された条件を満たさなくなるよう照明部102が照射する光を制御してもよい。例えば、撮影部101が撮影する撮影画像が動画像である場合や、撮影部101が撮影する撮影画像が静止画像であって、制御部104が照明の制御を行なうごとに新たな撮影画像が撮影される場合等においては、撮影画像から取得した光量に関するパラメータが、予め指定された条件を満たさなくなるまで、照明部102が照射する光量をフィードバック制御するようにしても良い。例えば、制御部104は、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たす場合に、照明部102に予め指定された光量の光を照射させ、その後、撮影部101が撮影したフレーム画像や静止画像について、再度、光量に関するパラメータを取得し、取得したパラメータの値が条件を満たす場合に、前回の光量とは異なる光量の光を照明部102に照射させることを、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たさなくなるまで繰り返すようにしてもよい。フィードバック制御については、公知技術であるため、ここでは詳細な説明は省略する。
また、制御部104は、例えば、照明の光量に関するパラメータの値が示す光量の不足分が大きくなるに従って、連続的または段階的に撮影領域に対して照射される光の光量が大きくなるよう、照明部102を制御してもよい。
なお、照明の光量に関するパラメータに応じて制御される光は、通常は、白色光である。ただし、白色光以外の光を用いても良い。
また、制御部104が撮影画像から取得するパラメータは、例えば、光の色に関するパラメータであってもよい。例えば、制御部104は、撮影画像から、光の色に関するパラメータを取得し、取得したパラメータに応じて、照明部102が撮影領域に対して照射する光の色を制御する。
光の色に関するパラメータは、例えば、撮影領域に照射される光の色を結果的に判断可能なパラメータである。光の色に関するパラメータとは、例えば、撮影領域に照射される光の色に対して対応関係を有する撮影画像のパラメータである。光の色に関するパラメータは、例えば、撮影画像内の少なくとも一部についての、色相、色相および彩度、または色相、彩度および明度のパラメータの値やその平均値や中央値等の代表値や、最大値や最小値等である。また、光の色に関するパラメータは、例えば、撮影画像全体あるいはその一部の、Rチャンネルや、Gチャンネル、Bチャンネル等の一以上のカラーチャンネルの値やその代表値や最大値や最小値等であってもよい。各カラーチャンネルの値は、例えば、各カラーチャンネルを構成する画素の明度の値である。撮影画像の画像モードが、CMYKモード等である場合、各カラーチャンネルは、CMYKの各チャンネルであっても良い。また、光の色に関するパラメータは、撮影画像内の少なくとも一部の領域、好ましくは全ての領域内の各画素の色相の値であってもよい。色相の値は、例えば、撮影部101が取得するRGBモード等の撮影画像をHSLモードに変更した場合の各画素のH(色相)の値である。
制御部104は、例えば、撮影画像から光の色に関するパラメータを取得して、取得したパラメータが予め指定された条件を満たす場合に、照明部102が撮影領域に対して照射する光の色を制御する。予め指定された条件とは、例えば、撮影領域からコードを適切に読み取れないことを判断するための光の色に関する条件である。予め指定された条件とは、撮影画像に色の偏りがあることを示す条件である。
例えば、予め指定された条件は、撮影画像内の少なくとも一部(好ましくは全部)から取得した光の色のパラメータである各画素の色相の値の分布において、予め指定された値の幅を有する連続した色相の領域に、上記の少なくとも一部の画素中の予め指定された閾値以上の比率の画素(例えば、90%以上の比率の画素)が含まれている、という条件である。色相の値の幅は、例えば、色相環を構成する連続した色の全体の幅を「360」とした場合の値(例えば、「20」等)で示すことが可能である。例えば、制御部104は、撮影画像から取得した光の色のパラメータである各画素の色相の値の分布において、予め指定された値の幅を有する連続した色相の領域であって、その領域に全画素中の予め指定された閾値以上の比率の画素が含まれる領域があるか否かを判断する。このような領域が検出された場合、制御部104は、撮影画像の少なくとも一部に色の偏りが存在すると判断し、この検出された領域の色相の範囲に対応する色が、撮影画像内において偏っている色であると判断する。なお、上述した色相の値の幅は、コード読取装置1が利用される環境等に応じて、適宜変更可能である。また、この値の幅の最適な値は、例えば、実験結果や経験値等に応じて得られた値を設定することが好ましい。
また、予め指定された条件は、例えば、撮影画像の各カラーチャンネルの代表値や最大値等が、閾値以下であるという条件であってもよい。この場合、例えば、閾値以下のカラーチャンネルに対応する色が撮影画像から欠けている、あるいは不足していると判断することができる。
制御部104は、例えば、取得した光の色に関するパラメータが予め指定された条件を満たすと判断した場合に、光の色のパラメータに応じて決定される色の光で照明部102に撮影領域を照明させる。例えば、制御部104は、上述したような条件を満たすか否かの判断処理に応じて取得した、撮影画像内において偏っている色の色相の範囲に基づいて、この色相の範囲外の色の光を照明部102に照射させるようにしてもよい。あるいは、制御部104は、この色相の範囲の色の補色となる色の光を照明部102により照射させてもよい。例えば、照明部102が異なる色を出射する複数の光源(図示せず)を有している場合、異なる色の光源の出力を個別に制御することで、照明部102に、所望の色の光を出力させる。所望の色の光は、所望の色相の範囲の色の光と考えてもよい。また、異なる色の光源の代わりに、異なる色のフィルタを通して光を出射する光源を用いるようにしてもよい。
また、制御部104は、例えば、上述したように、上述したような判断処理により、一以上のカラーチャンネルに対応する色が撮影画像から欠けていると判断した場合、この欠けていると判断されたカラーチャンネルが示す色の光を照明部102に照射させるようにしても良い。例えば、Rチャンネルに対応する色が撮影画像から欠けていると判断した場合、この欠けていると判断されたRチャンネルに対応する色である赤色の光を照明部102に照射させるようにしてもよい。
また、制御部104は、例えば、光の色に関するパラメータが予め指定された条件を満たさなくなるよう照明部102が照射する光の色を制御してもよい。例えば、撮影部101が撮影する撮影画像が動画像である場合や、撮影部101が撮影する撮影画像が静止画像であって、制御部104が照明の制御を行なうごとに新たな撮影画像が撮影される場合等においては、撮影画像から取得した光の色に関するパラメータが、予め指定された条件を満たさなくなるよう、照明部102が照射する光量をフィードバック制御するようにしても良い。例えば、制御部104は、撮影画像から取得した光の色に関するパラメータが予め指定された条件を満たす場合、照明部102にこの条件に対応した色の光を照明部102に照射させ、その後、撮影部101が撮影したフレーム画像や静止画像について、再度、光の色に関するパラメータを取得し、取得したパラメータの値が条件を満たす場合に、さらに、この条件に対応した色の光を照明部102に照射させることを、撮影画像から取得した光の色に関するパラメータが予め指定された条件を満たすまで繰り返すようにしてもよい。フィードバック制御については、公知技術であるため、ここでは詳細な説明は省略する。
なお、制御部104は、光量に関する異なる二以上のパラメータを用いて、これらのパラメータの組合わせに応じて、適宜、照明の光量を制御しても良い。また、制御部104は、光の色に関する異なる二以上のパラメータを用いて、これらのパラメータの組合わせに応じて、適宜、照明の光の色を制御しても良い。制御部104は、照明の光量に関する一以上のパラメータと、光の色に関する一以上のパラメータとの組合わせに応じて、適宜、照明の光を制御しても良い。また、制御部104は、一の光量に関するパラメータに対して、予め指定された二以上の条件の組合わせについて、条件を満たすか否かの判断を行ない、その判断結果の組合わせについて、適宜、照明の光量を制御しても良い。かかることは、光の色についても同様である。
なお、制御部104が、撮影画像から取得した情報に応じて、照明部102が照射する光の制御を行なうタイミングやトリガー等は問わない。例えば、制御部104は、予め指定された一定または不定のタイミング毎に、上述したような照明部102が照射する光の制御を行なうようにしても良い。また、例えば、制御部104は、撮影部101が最初に撮影画像(例えば、撮影画像のフレーム画像等)を取得した場合に、撮影画像から取得した情報に応じた照射する光の制御を行なうようにしてもよい。
また、制御部104は、取得部103が撮影画像からコードを検出できなかった場合に、撮影画像から取得した情報に応じて、照明部102が撮影領域に対して照射する光を制御するようにしてもよい。例えば、制御部104は、撮影画像から取得したパラメータを用いて、照明部102が照射する光の制御を行なう。例えば、制御部104は、上述したような光量に関するパラメータを用いた制御を行なっても良く、光の色に関するパラメータを用いた制御を行なっても良く、その両方を行なっても良い。
出力部105は、取得部103が取得した情報を出力する。例えば、出力部105は、取得部103が取得したコード識別子を、コード識別子を処理するための図示しないサーバ装置等に送信する。
なお、出力部105は、撮影画像からコードに対応づけられた情報を取得できなかった場合、その旨を示す情報を出力しても良い。例えば、その旨を示す情報として、コードの読取エラーを示す文字列や画像の表示や、音声の出力を行なっても良い。
また、出力部105は、撮影部101が撮影した撮影画像を図示しないモニタ等に表示してもよい。
ここでの出力とは、ディスプレイへの表示、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
出力部105は、モニタや通信手段等の出力デバイスを含むと考えても含まないと考えても良い。出力部105は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
次に、コード読取装置1の動作の一例について図2のフローチャートを用いて説明する。
(ステップS101)撮影部101は、撮影領域の撮影を開始する。ここでは、撮影部101が撮影により取得する撮影画像が、動画像である場合を例に挙げて説明する。また、ここでは、最初は、照明部102による撮影領域の照明は行なわないものとする。
(ステップS102)取得部103は、ステップS101で取得した撮影画像から一のフレーム画像を取得する。例えば、取得部103は、最新のフレーム画像を取得する。なお、例えば、後述するステップS108,S109の直後に、このステップS102の処理を行なう場合においては、取得部103は、これらのステップS108,S109の後に撮影されたフレーム画像を取得する。なお、撮影画像が動画像でない場合、撮影部101は、例えば、このステップにおいて新たな静止画像等を撮影して取得してもよい。また、この場合、その後の処理においては、この静止画像をフレーム画像の代わりに利用するようにしてもよい。
(ステップS103)取得部103は、ステップS102で取得したフレーム画像から1以上のコードを検出する処理を行ない、コードが検出できたか否かを判断する。例えば、取得部103は、コードの輪郭を検出して、コードの画像を取得する。検出できた場合、ステップS104に進み、検出できていない場合、ステップS106に進む。
(ステップS104)取得部103は、コードから、コードに対応づけられた情報、例えばコード識別子を読み出す処理を行なう。そして、コードに対応づけられた情報が読み出せた場合、ステップS105に進み、読み出せなかった場合、ステップS106に進む。
(ステップS105)出力部105は、ステップS104で取得した情報を出力する。そして、処理を終了する。
(ステップS106)制御部104は、撮影の開始から予め指定された時間が経過したか否かを判断する。経過していない場合、ステップS107に進み、経過した場合、ステップS110に進む。
(ステップS107)制御部104は、ステップS102で取得したフレーム画像から、パラメータを取得する。例えば、制御部104は、光量に関するパラメータを取得する。また、制御部104は、光の色に関するパラメータを取得する。
(ステップS108)制御部104は、ステップS107で取得したパラメータが、予め指定された条件を満たすか否かを判断する。例えば、制御部104は、ステップS107で取得した光量に関するパラメータが、この光量に関するパラメータに対応した条件を満たすか否かを判断する。また、制御部104は、例えば、ステップS107で取得した光の色に関するパラメータが、この光の色に関するパラメータに対応した条件を満たすか否かを判断する。そして、制御部104は、いずれか一方が条件を満たすと判断した場合に、ステップS107で取得したパラメータが予め指定された条件を満たすと判断し、いずれの条件も満たさなかった場合、予め指定された条件を満たさないと判断するようにして良い。予め指定された条件を満たす場合、ステップS109に進み、条件を満たさない場合、ステップS102に戻る。例えば、ステップS107で取得したパラメータが、予め指定された条件を満たさない場合にステップS102に戻ることにより、例えば、単に撮影画像内にコードが写っていないためにコードが検出できないことや、手ぶれ等により撮影画像が鮮明でないためにコードの検出やコードからの情報の読み出しができない場合等に、再度、撮影画像からコードを検出して情報を取得する処理を行なうことが可能となる。
(ステップS109)制御部104は、ステップS108の判断結果に対応して、照明部102による光の照射を制御する。例えば、証明制御部104は、判断結果に対応した制御信号を証明部102に出力する。制御部104は、例えば、ステップS108において、光量に関するパラメータが、予め指定された条件を満たしている場合、この条件を満たさなくなるように、照射される光量が変更されるよう照明部102を制御する。また、光の色に関するパラメータが、予め指定された条件を満たしている場合、この条件を満たさなくなるように、照射される光の色が変更されるよう照明部102を制御する。あるいは、これらの制御を組合わせても良い。光量を変更したり、光の色を変更するよう照明部102を制御することは、照明部102による発光のオン、オフの制御であっても良い。この制御に応じて、照明部102は、撮影領域に対して光を照射する。そして、ステップS102に戻る。
(ステップS110)出力部105は、撮影画像からコードに対応付けられた情報が取得できなかった旨を示すエラー出力を行なう。そして、処理を終了する。
なお、上記の処理において、ステップS103で複数のコードが検出された場合、取得部103は、例えば、ステップS104等において、各コードから個別に、コードに対応した情報を読み出す処理を行なうようにすればよい。
以下、本実施の形態におけるコード読取装置1の具体的な動作について説明する。なお、以下の具体例において用いる閾値等の値は、説明のための便宜上の値であり、実際のコードの読み取りに必ずしも適したものではない場合がある。
図3は、コード読取装置1でコードを撮影している状況を示すための、コード読取装置の正面側から見た斜視図(図3(a))、および背面側から見た斜視図(図3(b))である。ここでは、コード読取装置1がいわゆるスマートフォンを用いて実現されている場合を例に挙げて説明する。コード読取装置1の背面側には、撮影部101であるビデオカメラと、照明部102とが設けられている。ここでは、照明部102は、図示しないR(赤)色の光源と、G(緑)色の光源と、B(青)色の光源とを有しており、これらの光源が照射する光を個別に制御可能なものであるとする。コード読取装置1の正面には、撮影部101が撮影した撮影画像等を表示するモニタ105aが設けられている。ここでは、撮影部101の撮影対象であるコード200がカラーコードである場合を例に挙げて説明する。ここでは、一例として、黒い背景に、水色・紫・黄・緑・赤・青・オレンジの最大8色の色を有する矩形の図柄を、3行9列となるよう2次元に配列した構成を有しているものを用いる場合について説明する。ただし、本具体例においては、カラーコードの形状等は問わない。例えば、カラーコードは円環状のカラーコード等であっても良い。
ユーザが、コード読取装置1の背面の撮影部101をコードに向けて、カラーコードを撮影したとする。このとき、デフォルトでは、照明部102は、照明を行なわないものとする。
撮影部101は、カラーコードが配置された撮影領域を撮影して、動画像である撮影画像を取得する。
取得部103は、撮影部101が取得した動画像からフレーム画像を取得して、カラーコードを検出する処理を行なう。例えば、取得部103は、カラーコードの輪郭等を検出して、カラーコードの領域を検出する。カラーコードを検出する処理は公知技術であるため、ここでは詳細な説明は省略する。
カラーコードが検出できたとすると、取得部103は、検出したカラーコードを構成する色の配列を読み取る。カラーコードから、色の配列を読み取り、読み取った色の配列に対応した情報(例えば、コード識別子)を取得する処理は、公知技術であるため、ここでは詳細な説明は省略する。また、カラーコードから色の配列を読み出す際等に、上記で検出したカラーコードの画像の形状を適宜補正するようにしても良い。
出力部105は、取得部103がカラーコードから取得した情報を出力する。例えば、予め指定された図示しないサーバ装置等に取得した情報を送信する。
ここで、取得部103が、フレーム画像からカラーコードが検出できなかったとすると、制御部104は、フレーム画像から、光量に関するパラメータとして、フレーム画像を構成する画素の明度の平均値を取得する。例えば、取得した平均値が、「20」であったとする。なお、ここでは、フレーム画像の各画素が明度として取り得る値の範囲が、「0」から「255」であるとし、値が小さいほど、画素の明度が低い、つまり暗いものとする。
制御部104は、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された閾値以下である、という条件を満たすか否かを判断する。例えば、閾値が、「100」であったとすると、制御部104は、明度の平均値が条件を満たすと判断する。
また、制御部104は、フレーム画像から、光の色に関するパラメータとして、フレーム画像を構成する全画素のそれぞれについて色相の値を取得する。
制御部104は、取得したパラメータを用いて、光の色についての条件を満たすか否かを判断する。具体的には、まず、制御部104は、フレーム画像の全画素のそれぞれの色相の値を用いて、フレーム画像の色相のヒストグラムを作成する。このヒストグラムは、例えば、色相の値毎に画素数を集計して、集計した値を色相の値が連続した値となるよう配列したものである。そして、このヒストグラムにおいて、予め指定された値の幅を有する色相の範囲内に含まれる画素数を集計して、全画素数の比率を算出し、その比率が、閾値以上であるものがあるか否かを判断する処理を行なう。そして、同様の処理を、予め指定された値の幅を有する色相の範囲を、色相の値の最小値ずつ移動させて繰り返し行なう。
例えば、予め指定された値の幅が「30」であったとすると、最初は、色相の値が、「1」から「30」までの範囲である画素数を取得し、取得した画素数の、全画素に対する比率を算出する。そして、算出した比率が、予め指定された色相についての閾値以上であるか否かを判断する。算出した比率が閾値以上である場合、この色相の範囲を示す値と、比率の値とを対応づけて、図示しない格納部等に一時記憶する。閾値以下である場合、一時記憶しない。更に、色相の範囲を一つずらして、「2」から「31」までの範囲である画素数を取得して、全画素数に対する比率を算出し、閾値以上であるか否かを判断する。その後も色相の範囲をずらして、同様の処理を繰り返す。
そして、色相の全ての範囲について、上記の処理が終わった時点で、図示しない格納部に色相の範囲を示す値と比率との組が格納されているか否かを判断し、複数の色相の範囲を示す値と比率との組が格納されている場合、その中から、比率が最大である色相の範囲を示す値を取得する。なお、一つだけ色相の範囲を示す値が格納されている場合、この色相の範囲を示す値を取得すればよい。この色相の範囲を示す値が取得できた場合、制御部104は、光の色についての条件を満たすと判断する。ここでは、閾値が「90%」であり、色相の値の範囲を示す値として、「23」から「52」が取得できたとし、制御部104は条件を満たしたと判断する。なお、ここでは、フレーム画像の各画素が取り得る色相の値の範囲が、「0」から「359」であるとする。
制御部104は、上記のように、光量についての条件を満たすと判断したため、ここでは、照明部102に対して、予めデフォルト等で指定された光量で照明を行なわせることを決定する。
また、制御部104は、上述したように光の色についての条件を満たすと判断したため、照明部102に対して、上記で取得した色相の範囲に対応した色の光で照明を行なうことを決定する。照明部102は、まず上記で取得した色相の範囲「23」から「52」の中央値「37.5」を算出する。そして、この値を色相(H)の値とし、彩度(S)を予め指定された値(例えば100等)とし、輝度(L)を予め指定された値(例えば、50%)として有するHSL値で表された色を、RGB値に変換する。このようなHSL値で表される色を、RGB値で表される色に変換する処理としては公知技術が利用可能である。そして、取得したRGB値の色の補色を取得する。例えば、補色のRGB値は、現在のRGB値のうち最大値と最小値の合計から、各R,G,Bの構成要素の値を減算することで取得可能である。なお、補色をどのように取得するかは問わない。補色を取得する処理は公知技術であるため、ここでは詳細な説明は省略する。制御部104は、この取得したRGB値に対応した色の光を、照明部102に照射させることを決定する。
制御部104は、照明部102を制御することで、上記で決定した予め指定された光量を有する光であって、上記で決定した色の光を、照明部102に照射させる。例えば、制御部104は、照明部102が有する、R色の光源と、G色の光源と、B色の光源とに対して、上記で取得した補色のRGB値が示すR,G,およびBの値の比率に対応した光量の光であって、それぞれの光源から出射される光の光量を合わせた値が、予め指定された光量となるような光を照射させる。
これにより、照明部102が照射する光により、撮影対象となるコード200が、制御部104が決定した光量と色とを有する光で照明される。
取得部103は、上記の照明の直後に、撮影部101が撮影した撮影画像からフレーム画像を取得し、取得したフレーム画像においてコードを検出する。コードが検出された場合、上記と同様に、コードに対応づけられた情報を読み出し、出力する。
ここで、更に、コードが検出できなかった場合、制御部104は、フレーム画像から上記と同様に、光量に関するパラメータを取得して、上記と同じ予め指定された条件を満たすか否かを判断し、条件を満たす場合には、光量を、上記で決定して照射した光量よりも予め指定された値だけ多い光量で照明することを決定する。例えば、光量を、上記で決定して照射した光量よりも、例えば10%だけ多い光量で照明することを決定する。なお、条件を満たさないと判断された場合には、直前に決定された光量と同じ光量で照明することを決定する。
また、制御部104は、上記と同様に、フレーム画像から光の色に関するパラメータを取得して、このパラメータが、上述したように、光の色に関する条件を満たすか否かを判断する。満たす場合、上記と同様に、光の色に関するパラメータを用いて決定した補色により、コードを照明することを決定する。また、満たさない場合、直前に決定された色の光により照明することを決定する。
そして、制御部104は、照明部102を制御して、上記で決定した光でコードを照明させ、上記と同様の処理を、コードから情報が取得できるまで繰り返す。
なお、撮影部101の撮影開始から、予め指定された時間以上経過した時点で、撮影画像からカラーコードに対応した情報を取得できていない場合、例えば、カラーコードが検出できていない場合や、カラーコードから対応する情報を取得できていない場合、出力部105は、モニタ105aに、コードから情報が取得できなかった旨の表示を行ない、コードを読み取る処理を終了する。
これにより、照明部102により、適切に照明したコードを撮影することが可能となり、コードを適切に読み取ることが可能となる。
なお、上記においては、フレーム画像からコードが検出できない場合に、照明部102が出射する光を制御するようにしたが、フレーム画像から検出したコードから、このコードに対応づけた情報が読み出せない場合、例えば、カラーコードを構成する色が判別できない場合等においても、照明部102が照射する光量や光の色を、上記と同様に決定するようにしても良い。
また、上記においては、光量についての条件を満たす場合に、予め指定された光量の光を照射するようにしたが、例えば、制御部104は、フレーム画像を構成する画素の明度の平均値についての値の範囲と、照射すべき光の光量の値とを対応づけて図示しない格納部等に予め格納されている情報から、現在のフレーム画像から取得した明度の平均値に対応した光量の値を取得して、取得した値の光量の光を照明部102に照射させるようにしても良い。また、フレーム画像を構成する画素の明度の平均値と、照射すべき光の光量の値との関係を示す予め用意された関係式に、現在のフレーム画像から取得した明度の平均値を代入して、現在のフレーム画像に対応する照射すべき光量の値を取得するようにしても良い。
また、上記の具体例においては、フレーム画像からコードに対応する情報を取得できない場合に、制御部104が、照明部102の照射する光を制御するようにしたが、本発明においては、制御部104が、フレーム画像から取得部103がコードを検出する前に、フレーム画像から、光量に関するパラメータや、光の色に関するパラメータ等を取得して、取得したパラメータを用いて、予め指定された条件を満たすか否かの判断を行ない、条件を満たす場合に、上記と同様に照明部102が照射する光量や光の色等を制御して、制御された光により照明されたコードを撮影したフレーム画像について、取得部103がコードを検出する処理や、検出したコードからコードに対応した情報を取得する処理を行なうようにしてもよい。
以上、本実施の形態によれば、撮影画像から取得した情報に応じて、コードに照射する光を制御することにより、コードを適切に読み取ることができるコード読取装置を提供することができる。
なお、上記実施の形態においては、制御部104が、撮影部101が取得した撮影画像から、一以上のパラメータを取得し、取得したパラメータに応じて、照明部102が撮影領域に対して照射する光を制御する例等について説明したが、本発明においては、制御部104は、撮影画像に応じて照明部102が撮影領域に対して照射する光を制御するものであればよく、例えば、上述した例のように照射する光を制御するようにしてもよく、上述した例以外の処理により、撮影画像に応じて照射する光を制御するようにしても良い。例えば、パラメータを取得して、取得したパラメータに応じて照射する光を制御する代わりに、上述したように、取得部103が出力する撮影画像からコードを読み取ることができなかったことを示す情報を受け付けた場合、制御部104は、照明部102が照射する光を、コードが読取可能となるまでフィードバック制御するようにしてもよい。例えば、撮影画像からコードが読取可能となるまで、段階的に照明部102が照射する光の光量や光の色を変更し、変更する毎にコードの撮影を行なうようにしても良い。ここでのコードの読取とは、コードの検出と考えても良く、コードからの情報の取得と考えても良く、その両方と考えてもよい。
(実施の形態2)
上記実施の形態1においては、制御部104が、照明を制御する場合について説明したが、以下、本実施の形態においては、制御部が、撮影部のシャッタースピードや撮影位置の制御を行なう場合の一例について説明する。
図5は、本実施の形態におけるコード読取装置2のブロック図である。
コード読取装置2は、撮影部101、照明部102、取得部103、制御部204、出力部105を備える。撮影部101、照明部102、取得部103、出力部105については、上記実施の形態1と同様であるため、ここでは詳細な説明は省略する。なお、ここでは、撮影部101は、例えば、シャッタースピードが変更可能なものであるとする。シャッタースピードは露光時間と考えてもよい。また、コードの撮影時に照明が不要である場合、照明部102は省略しても良い。
制御部204は、撮影部101が取得した撮影画像に応じて、撮影部101による撮影時のシャッタースピードを制御する。制御部204は、例えば、シャッタースピードを制御することで、撮影画像を取得するための環境を制御する。シャッタースピードとは、例えば露光時間と考えてもよい。シャッタースピードを制御するということは、例えば、シャッタースピードを、直前のシャッタースピードや、デフォルトのシャッタースピードや、測光用のセンサ(図示せず)を用いて行なわれた測光結果から決定されるシャッタースピード等から変更することや、測定結果に応じて変更しないこと等である。シャッタースピードの制御とは、例えば、シャッタースピードを上げることや下げることや、撮影画像に適したシャッタースピードに設定することである。制御部20が、シャッタースピードを制御するということは、例えば、シャッタースピードを制御する制御信号や、命令等を、撮影部101に対して出力することである。
制御部204は、例えば、コードが読み取り可能な撮影画像が得られるよう、撮影部101による撮影時のシャッタースピードを制御する。通常、カメラ等の撮影部101のシャッタースピードは、予め決められた複数段階のシャッタースピードのいずれかの値に設定されることから、例えば、制御部204は、撮影画像に応じて、シャッタースピードを一段ずつ早く、あるいは遅くなるよう制御してもよい。また、制御部204は、予め図示しない格納部等に格納されている明度に関するパラメータの値の範囲と最適なシャッタースピードとを対応付けた対応表から、撮影画像から取得した明度に関するパラメータの値に対応するシャッタースピードを、変更後のシャッタースピードとして取得しても良い。なお、撮影部101のシャッタースピードは、連続的に変更可能なものであっても良い。この場合、例えば、制御部204は、明度に関するパラメータを引数としたシャッタースピードを算出するための予め用意された演算式に、撮影画像から取得した明度に関するパラメータを代入することで、変更後のシャッタースピードを算出しても良い。明度に関するパラメータについては後述する。
撮影部101が撮影した撮影画像は、静止画像であっても良く、動画像であっても良い。動画像である場合、シャッタースピードは、例えば、動画像を構成するフレーム画像を撮影する際のシャッタースピードである。また、制御部20は、例えば、撮影部101が撮影した1以上のフレーム画像に応じて、その後にフレーム画像を撮影する際のシャッタースピードを制御する。撮影部101が静止画像を撮影する場合、シャッタースピードを変更後に、静止画像を撮影し直すようにしてもよい。
例えば、制御部204は、取得部103が撮影画像から取得した情報に応じて、撮影部101による撮影時のシャッタースピードを制御する。例えば、取得部103が出力する撮影画像からコードを検出できなかったことを示す情報を受け付けた場合、制御部204は、撮影時のシャッタースピードをフィードバック制御するようにしてもよい。例えば、撮影画像からコードが検出されるまで、段階的にシャッタースピードを変更し、変更する毎に、撮影を行なうようにしても良い。この場合のシャッタースピードの変更は、通常は、シャッタースピードを下げることであるが、上げることであっても良い。
制御部204は、例えば、撮影部101が取得した撮影画像から、一以上のパラメータを取得し、取得したパラメータに応じて、シャッタースピードを制御する。ここでの1以上のパラメータは、例えば、シャッタースピードを制御する際に利用されるパラメータであり、実施の形態1において説明した光を制御する際に利用されるパラメータと区別するために、シャッターパラメータと呼ぶようにしても良い。制御部204が取得するパラメータは、例えば、撮影時の露光量に対応関係を有するパラメータである。
制御部204が撮影画像から取得するパラメータは、例えば、撮影画像の明度に関するパラメータである。明度に関するパラメータは、輝度や照度に関するパラメータと考えてもよい。明度に関するパラメータは、撮影画像の明度の統計値(例えば、平均値や、中央値や、中間値、最大値、最小値等)や、撮影画像のガンマ値であっても良く、撮影画像の明度のヒストグラムであっても良い。制御部204は、例えば、撮影画像から、明度に関するパラメータを取得し、取得したパラメータに応じて、撮影時のシャッタースピードを制御する。明度に関するパラメータは、例えば、撮影に適したシャッタースピードを結果的に判断可能なパラメータである。撮影に適したシャッタースピードとは、例えば、カラーコードの色を識別することが可能な撮影画像を撮影可能なシャッタースピードである。撮影画像内においてコードが配置されている領域を認識可能である場合、制御部204が撮影画像から取得するパラメータは、撮影画像内の一部、例えば、撮影画像内のコードが配置されている領域の明度に関するパラメータであっても良く、全体の明度に関するパラメータであってもよい。また、明度に関するパラメータは、例えば、撮影画像全体あるいはその一部の、Rチャンネルや、Gチャンネル、Bチャンネル等の一以上のチャンネルについての明度のパラメータ、例えば、一以上のチャンネルの明度の代表値や最大値や最小値等であってもよく、撮影画像をグレースケール化した画像についての明度のパラメータであってもよい。
制御部204は、例えば、パラメータ(例えば、明度に関するパラメータ)を取得して、取得したパラメータが予め指定された条件を満たす場合に、シャッタースピードを制御する。予め指定された条件は、シャッタースピードを制御するためのパラメータについての条件である。予め指定された条件とは、例えば、撮影領域からコードを適切に読み取れないことを判断するための明度に関する条件である。予め指定された条件は、例えば、明度に関するパラメータ(例えば、撮影画像の明度の平均値等)が第一の閾値以下であるという条件や、第二の閾値以上であるという条件(ただし、第一の閾値は、第二の閾値よりも小さい値であるとする)等である。なお、本実施の形態においては、明度が高い場合、即ち明度の値が高い場合とは、撮影画像が明るいことを示し、明度が低い場合、即ち明度の値が低い場合とは、撮影画像が暗いことを示すものとする。
制御部204は、例えば、取得したパラメータ(例えば、明度に関するパラメータ)が予め指定された条件を満たすと判断した場合に、撮影部101のシャッタースピードを変更させる。例えば、撮影画像から取得した明度に関するパラメータが、第一の閾値以下である場合、制御部204は、シャッタースピードを遅くする。例えば、撮影画像から取得した明度が第一の閾値が示す明度よりも暗い場合、シャッタースピードを遅くして、露光する時間を増加させる。例えば、シャッタースピードをj段(jは1以上の整数)だけ遅くする。また、例えば、撮影画像から取得した明度に関するパラメータが、第二の閾値以上である場合、制御部204は、シャッタースピードを早くする。例えば、撮影画像から取得した明度が第二の閾値が示す明度よりも明るい場合、シャッタースピードを早くして、露光時間を減少させる。例えば、シャッタースピードをk段(kは1以上の整数)だけ早くする。なお、上述した第一の閾値や第二の閾値は、コード読取装置1が利用される環境等に応じて、適宜変更可能である。また、閾値の最適な値は、例えば、実験結果や経験値等に応じて得られた値を設定することが好ましい。かかることは、以下の他の閾値等についても同様である。なお、制御部204は、第一の閾値と第二の閾値のいずれか一方のみを用いても良い。
また、制御部204は、例えば、パラメータ(例えば、明度に関するパラメータ)が予め指定された条件を満たさなくなるようシャッタースピードを制御してもよい。例えば、撮影部101が撮影する撮影画像が動画像である場合や、撮影部101が撮影する撮影画像が静止画像であって、制御部204がシャッタースピードの制御を行なうごとに新たな撮影画像が撮影される場合等においては、撮影画像から取得したパラメータが、予め指定された条件を満たさなくなるまで、シャッタースピードをフィードバック制御するようにしても良い。例えば、制御部204は、予め指定されたシャッタースピード等で撮影画像の撮影を行ない、その後、撮影部101が撮影したフレーム画像や静止画像について、光量に関するパラメータを取得し、取得したパラメータの値が条件を満たす場合に、前回のシャッタースピードとは異なるシャッタースピード、例えば遅いシャッタースピードで撮影することを、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たさなくなるまで繰り返すようにしてもよい。フィードバック制御については、公知技術であるため、ここでは詳細な説明は省略する。
なお、制御部204は、例えば、明度に関するパラメータの値が示す明度の不足分(例えば、パラメータが第一の閾値以下である場合におけるパラメータと第一の閾値との差の絶対値等)が大きくなるに従って、連続的または段階的に増加する変更量により、シャッタースピードが遅くなるよう、撮影部101を制御してもよい。同様に、制御部204は、例えば、明度に関するパラメータの値が示す明度の過剰分(例えば、パラメータが第二の閾値以上である場合におけるパラメータと第二の閾値との差の絶対値等)が大きくなるに従って、連続的または段階的に増加する変更量により、シャッタースピードが早くなるよう、撮影部101を制御してもよい。
なお、制御部204は、撮影画像から取得した二以上のパラメータを用いて、これらのパラメータの組合わせに応じて、適宜、シャッタースピードを制御しても良い。また、制御部204は、一の光量に関するパラメータに対して、予め指定された二以上の条件の組合わせについて、条件を満たすか否かの判断を行ない、その判断結果の組合わせについて、適宜、シャッタースピードを制御しても良い。
撮影部101の撮影位置が制御可能である場合、制御部204は、撮影部101が取得した撮影画像に応じて、撮影部101による撮影位置を制御するようにしてもよい。制御部204は、例えば、撮影位置を制御することで、撮影画像を取得するための環境を制御してもよい。例えば、制御部204は、コードが読み取り可能な撮影画像が得られるよう、撮影時の撮影部101の位置を制御してもよい。撮影部101の位置を制御することは、撮影部101を有するコード読取装置2の位置を制御することであっても良い。撮影部101の位置とは、撮影部101が配置される空間における位置であり、撮影部101の向き等も含む概念である。
例えば、撮影部101、具体的には撮影部101を有するコード読取装置2が、無人車両や無人航空機等のいわゆるドローン(図示せず)に取り付けられている場合、制御部204は、ドローンに対して制御信号等を出力することで、ドローンの位置を制御することにより、撮影部101による撮影位置を制御する。例えば、撮影部101が撮影した画像内に、カラーコードの存在が認識されない場合や、カラーコードの情報が読み取れない場合、、カラーコードが存在が認識される、あるいはカラーコードの情報が読み取れるよう、ドローンの位置や向きを変更させる。カラーコードの存在が認識できない場合や、カラーコードの情報が取得できない場合のドローンの前後左右等の移動の仕方は、予め指定されていても良く、ランダムに決定されても良い。また、ドローンは、ユーザの制御等によって一旦指定された位置を起点として移動するようにしてもよい。
例えば、制御部204は、撮影部101が撮影した画像において、カラーコードが配置されている物体や領域を、パターンマッチング等により認識し、その物体や領域の画像内にカラーコードの存在が認識できない場合、例えば、ドローンを制御して、カラーコードの存在が認識されるまでドローンを前後や上下、左右に移動させる。ここでの移動は、回転も含む概念である。ドローンを移動させることは、ドローンの撮影部101が設置されている部分を移動させることと考えてもよい。
例えば、予め、カラーコードが配置されている物体や領域が予め指定されている場合、制御部204は、撮影部101が撮影した画像において、カラーコードが配置されている物体や領域を、パターンマッチング等により認識し、その物体や領域の画像内にカラーコードの存在が認識できない場合、例えば、ドローンを制御して、カラーコードが認識されるまで、ドローンの撮影部101が設置されている部分を、物体や領域に対して近づけたり、物体や領域に沿って移動させる。
例えば、撮影部101が撮影した画像において、カラーコードの存在が認識されたが、カラーコードの情報の取得できない、具体的には、カラーコード情報の読取ができない場合、制御部204は、例えば、この存在が認識されたカラーコードに対して、ドローンを近づけるよう、ドローンを制御してもよい。また、撮影された画像において、カラーコードの輪郭や、外周の頂点等を検出し、この検出した輪郭や、頂点の位置が、予め指定された形状、例えば、長方形に近い形状となるよう、ドローンの位置を制御してもよい。
ドローン等を用いる代わりに、位置を自在に移動制御可能なクレーン等に、コード読取装置2を設置し、コード読取装置2の制御部204が、このクレーン等を、制御するようにしても良い。
なお、制御部204が、シャッタースピードや、撮影位置等を変更するタイミングやトリガー等は問わない。例えば、制御部204は、予め指定された一定または不定のタイミング毎に、上述したようなシャッタースピードの制御を行なうようにしても良い。また、例えば、制御部204は、撮影部101が撮影画像(例えば、撮影画像のフレーム画像等)を取得した場合に、この撮影画像に応じたシャッタースピードの制御を行なうようにしてもよい。また、制御部204は、取得部103が撮影画像からコードを検出できなかった場合に、撮影画像に応じて、シャッタースピードを制御するようにしてもよい。例えば、制御部204は、撮影画像から取得したパラメータを用いて、シャッタースピードの制御を行なう。
制御部204は、例えば、MPUやメモリ等から実現され得る。制御部204の処理手順は、例えば、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
次に、コード読取装置2の動作の一例について図6のフローチャートを用いて説明する。なお、図において、図2と同一符号は同一または相当する処理ステップを示しており、ここでは詳細な説明は省略する。なお、図2と同一符号の処理ステップにおいて、制御部104が行なっていた処理は、ここでは、制御部204が行なうものとする。
(ステップS207)制御部204は、制御部104は、ステップS102で取得したフレーム画像から、シャッタースピードを制御する際に利用されるパラメータを取得する。例えば、制御部104は、明度に関するパラメータを取得する。
(ステップS208)制御部204は、ステップS207で取得したパラメータが、シャッタースピードを制御するための予め指定された一以上の条件を満たすか否かを判断する。満たす場合、ステップS209に進み、満たさない場合、ステップS102に戻る。
(ステップS209)制御部204は、シャッタースピードを制御する。例えば、制御部204は、撮影を行なう際のシャッタースピードの設定を変更する指示を、撮影部101に出力する。そして、ステップS102に戻り、撮影部101が、変更されたシャッタースピードで撮影を行なう。
以下、本実施の形態におけるコード読取装置2の具体的な動作について説明する。なお、以下の具体例において用いる閾値等の値は、説明のための便宜上の値であり、実際のコードの読み取りに必ずしも適したものではない場合がある。
コード読取装置2を用いてコードの撮影する状況を示す模式図は、図3と同様であるとする。
撮影部101がカラーコードが配置された撮影領域を撮影して撮影画像を取得する処理や、撮影画像からカラーコードを検出し、検出したカラーコードから情報を取得する処理等については、上記実施の形態1の具体例と同様であるため、ここでは詳細な説明は省略する。
ここで、撮影部101が撮影したカラーコードが配置された撮影領域を撮影した撮影画像のフレーム画像において、上記の実施の形態1の具体例と同様に、取得部103が、フレーム画像からカラーコードが検出できなかった、あるいはカラーコードから情報が取得できなかったとすると、制御部204は、撮影画像であるフレーム画像から、明度に関するパラメータとして、フレーム画像を構成する画素の明度の平均値を取得する。例えば、取得した平均値が、「20」であったとする。なお、ここでは、フレーム画像の各画素が明度として取り得る値の範囲が、「0」から「255」であるとし、値が小さいほど、画素の明度が低い、つまり暗いものとする。
制御部204は、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された第一の閾値以下である、という条件を満たすか否かを判断する。例えば、第一の閾値が、「100」であったとすると、制御部204は、明度の平均値が条件を満たすと判断する。制御部204は、上記のように、明度についての第一の条件を満たすと判断したため、撮影部101に対して、デフォルトのシャッタースピードである1/125秒から一段分だけ遅いシャッタースピードに変更する指示を出力する。具体的には、シャッタースピードを、1段分だけ遅い1/60秒に設定する指示を出力する。なお、制御部204は、単に、シャッタースピードを1段分遅くさせる指示を、撮影部101に送信するようにしてもよい。なお、ここでは撮影部101に設定可能なシャッタースピードは、複数段のシャッタースピードのいずれかであるとする。この複数段のシャッタースピードにおいては、シャッタースピードを1段分遅くすると、撮影部101が受光する光量、例えば、図示しない撮像素子が受光する光量が2倍となるものとする。
撮影部101は、制御部024により指示されたシャッタースピードで、撮影対象となるコード200が配置された領域を撮影する。一段分遅くすることで、露光量を2倍にすることができ、変更前よりも適切に撮影、つまりカラーコードが読み取りやすい画像の撮影を行なうことが可能となる。取得部103は、撮影部101が撮影したフレーム画像を取得し、取得したフレーム画像においてコードを検出する。コードが検出された場合、上記と同様に、コードに対応づけられた情報を読み出し、出力する。
ここで、更に、コードが検出できなかった場合、制御部204は、フレーム画像から上記と同様に明度に関するパラメータを取得して、このパラメータが予め指定された第一の閾値以下を満たすか否かを判断し、条件を満たす場合には、シャッタースピードを1段分遅くし、条件を満たさない場合には、シャッタースピードを変更せずに、再度フレーム画像からのコード検出や、コードの情報の取得を行なう。
そして、制御部204は、上記と同様の処理を、コードから情報が取得できるまで繰り返す。
なお、撮影部101の撮影開始から、予め指定された時間以上経過した時点で、撮影画像からカラーコードに対応した情報を取得できていない場合、例えば、カラーコードが検出できていない場合や、カラーコードから対応する情報を取得できていない場合、出力部105は、モニタ105aに、コードから情報が取得できなかった旨の表示を行ない、コードを読み取る処理を終了する。
これにより、撮影画像に応じてシャッタースピードを変更して、適切にコードを撮影することが可能となり、コードを適切に読み取ることが可能となる。
なお、上記においては、フレーム画像からコードが検出できない場合に、シャッタースピードを制御するようにしたが、フレーム画像から検出したコードから、このコードに対応づけた情報が読み出せない場合、例えば、カラーコードを構成する色が判別できない場合等においても、上記と同様にシャッタースピードを変更することができるようにしても良い。
また、上記において、制御部204により、上記で取得した画素の明度の平均値が、第一の閾値以下でないと判断された場合、制御部204が、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された第二の閾値以上である、という条件を満たすか否かを判断し、条件を満たすと判断した場合、制御部204が、シャッタースピードを1段分速くするようにしても良い
以上、本実施の形態によれば、撮影画像から取得した情報に応じて、コードを撮影する際のシャッタースピードを変更することができ、コードを適切に読み取ることができるコード読取装置を提供することができる。特に撮影画像に応じてシャッタースピードを制御することで、一般的なカメラのようにきれいな画像を撮影するための制御とは異なり、撮影画像からカラーコードが性格に読み取れるようになるような画像が撮影できるよう、シャッタースピードを制御することができ、精度良くカラーコードを読み取ることが可能となる。
なお、上記においては、制御部204が、撮影部101が撮影する際のシャッタースピードを制御するようにしたが、本発明においては、制御部204は、撮影部101が撮影する際の撮影状況を変更するものであればよい。撮影状況の変更とは、上述したシャッタースピードや、絞りや、受光感度等の変更や、これらの2以上の組合わせの変更である。この場合の撮影状況の変更は、例えば、精度良く情報が読み取り可能となるカラーコードが撮影された撮影画像が得られものとなるようにする撮影状況の変更である。例えば、撮影部101が、絞りや受光感度を変更可能なものである場合、シャッタースピードを速くする代わりに、撮影画像に応じて、絞りを絞るようにしてもよく、受光感度を低くするようにしてもよい。その逆についても同様である。
(実施の形態3)
上記実施の形態1においては、制御部104が、照明を制御する場合について説明したが、以下、本実施の形態においては、コード読取装置の制御部が、撮影対象となるコードを表示する装置の制御を行なう場合について説明する。この実施の形態においては、特に、撮影対象となるコードを表示する装置が、コード読取装置の外部に設けられた投影装置である場合を例に挙げて説明する。
図7は、本実施の形態3におけるコード読取装置3と、投影装置5とを示すブロック図である。
コード読取装置3は、撮影部301、照明部102、取得部103、制御部304、出力部105を備える。照明部102、取得部103、出力部105については、上記実施の形態1と同様であるため、ここでは詳細な説明は省略する。また、コードの撮影時に照明が不要である場合、照明部102は省略しても良い。
投影装置5は、投影撮影部501と、投影部502と、受信部503とを有している。
投影装置5は、一以上のコードを含む領域を撮影して撮影画像を取得し、取得した撮影画像を投影する装置である。投影装置5は、例えば、カメラ等の、投影用の画像を撮影する構成を備えたプロジェクタや、投影用の画像を撮影する構成と接続されたプロジェクタである。
投影撮影部501は、一以上のコードを含む領域を撮影して撮影画像を取得する。投影撮影部501の構成は、撮影部101と同様であるため、ここでは詳細な説明は省略する。なお、ここでは、投影撮影部501が撮影する撮影画像を、撮影部101が撮影する撮影画像と区別するために、投影撮影画像と呼ぶ。
投影部502は、投影撮影部501が取得した投影撮影画像を投影する。投影部502が投影撮影画像を投影する場所は問わない。投影部502は、投影する際の光量や、投影する光の色を調節可能なものであることが好ましい。例えば、投影部502が、三原色の光を重ねた光を投影に利用するものである場合、この三原色の光の光量を個別に調節することで、照射する光の色を変更可能なものであっても良い。また、色を変更可能なカラーフィルタを介して光を照射することで、照射する光の色を変更可能なものであっても良い。投影部502が投影撮影画像を投影する構成は、通常のプロジェクタが画像を投影する構成と同様であるため、ここでは詳細な説明は省略する。
投影部502は、例えば、後述する受信部503がコード読取装置3の制御部204から受信した投影装置5による画像、即ち投影撮影画像の投影を制御するための制御信号に応じて投影撮影画像を投影する際の制御を行なう。具体的には、投影部502は、制御信号に応じて、投影撮影画像を投影した画像である投影画像の調節をおこなう。投影画像の調節とは、例えば、投影する光の光量の増減や、投影する光の色の変更や、投影に用いられる投影撮影画像の色の調節、例えば、彩度や輝度、色調等の調節を行なうこと等である。投影画像の調節は、投影画像を投影する際のパラメータ等を調節することや、投影画像の画質を調節することと考えても良い。例えば、受信部503が受信した制御信号が、光量を増加させる指示を含むものである場合、投影部502は、投影撮影画像を投影する光量をこの指示に応じて変更する。また、受信した制御信号が、投影画像の色を変更する指示を含むものである場合、投影部502は、照射する光の色を変更することで、投影画像の色を変更する。あるいは、投影撮影画像の色を画像処理を行なって制御信号に応じて変更し、変更した投影撮影画像を投影することで、投影画像を変更してもよい。投影撮影画像の色を変更する場合、投影部502は、MPUやGPU等のプロセッサや、メモリ等を備えていても良く、画像処理専用の回路を備えていても良い。
受信部503は、コード読取装置3の制御部204が送信する制御信号を受信する。受信部503が受信する制御信号は、投影装置5による画像の投影を制御する信号である。
撮影部301は、投影装置5が投影した画像である投影画像を撮影する。投影画像を撮影するものである点を除けば、撮影部301は、撮影部101と同様の構成を有している。投影画像は、投影装置5が、一以上のコードを含む領域を撮影して取得した撮影画像を投影した画像である。投影画像がコードを撮影した画像を投影したものであるため、この投影画像を撮影した撮影画像もコードを撮影した画像となる。
制御部304は、撮影部101が取得した撮影画像に応じて、投影装置5による画像の投影を制御する。投影装置5による画像の投影とは、投影装置5による、この投影装置5が一以上のコードを含む領域を撮影して取得した撮影画像の投影である。投影を制御するということは、例えば、投影を制御するための制御信号を、投影装置5に送信することである。制御信号の送信は、無線通信により行なわれても良く、有線通信により行なわれても良い。制御部304は、例えば、通信を行なうための通信手段を有していてもよい。あるいは制御部304は、図示しない送信部等を介して制御信号を投影装置5に送信してもよい。
制御部304は、例えば、上記の実施の形態1において説明したように、取得部103が出力する撮影画像からコードを読み取ることができなかったことを示す情報を受け付けた場合、制御部304は、投影装置5に画像の投影を制御する制御信号を送信することで、投影装置5が投影する投影画像を撮影した画像からコードが読み取り可能となるよう、投影装置による画像の投影をフィードバック制御するようにしてもよい。例えば、撮影画像からコードが検出されるようになるまで、段階的に投影装置5が投影する光量や光の色を変更する制御信号を投影装置5に送信し、送信を行なう毎に投影画像の撮影を行なうようにしても良い。ここでの光量の変更は、例えば、投影する光量の増加や、減少である。
また、制御部304は、上記実施の形態1において説明したように、撮影画像から一以上のパラメータを取得し、取得したパラメータに応じて、投影装置5による画像の投影を制御するようにしてもよい。制御部304が、撮影画像から取得するパラメータは、例えば、実施の形態1において説明した制御部104が取得するパラメータと同様のパラメータであり、制御部304は、制御部104と同様の処理により、一以上のパラメータを取得する。
制御部304は、例えば、一以上のパラメータの値に対応付けられた光量や、色の情報を、図示しない格納部等から取得し、取得した光量や色の光で画像の投影を行なわせるための制御信号を投影装置5に送信する。
また、制御部304は、例えば、撮影画像から取得した一以上のパラメータが予め指定された条件を満たす場合に、投影装置5による画像の投影を制御するようにしても良い。例えば、制御部304は、例えば、撮影画像から光量に関するパラメータを取得して、取得したパラメータが予め指定された条件を満たす場合に、投影装置5が画像の投影を行なう際の光量を制御する。予め指定された条件は、上述した実施の形態1の条件と同様の条件が利用可能である。予め指定された条件は、例えば、撮影領域からコードを適切に読み取れないことを判断するための光量に関する条件である。予め指定された条件は、例えば、光量に関するパラメータが第一の閾値以下であるという条件や、第二の閾値以上であるという条件(ただし、第一の閾値は、第二の閾値よりも小さい値であるとする)等である。また、例えば、制御部304は、予め指定された条件を満たす場合に、上記実施の形態1において、制御部104が照明部102に対して行なった制御と同様の制御を、投影装置5に対して行なうようにすればよい。例えば、実施の形態1において、光量に関するパラメータが予め指定された条件を満たすと判断された際に、照明部102が行なう照明の光量を増加させる制御を行なったとすると、本実施の形態においては、光の色に関するパラメータが同様の条件を満たすと判断された際には、投影装置5が投影する光量を増加させる制御を行なうようにすればよい。ただし、増加させる光量の大きさ等は異なっていても良い。
また、制御部304は、例えば、パラメータが予め指定された条件を満たさなくなるよう、投影装置5による画像の投影を制御してもよい。例えば、撮影部301が撮影する撮影画像が動画像である場合や、撮影部301が撮影する撮影画像が静止画像であって、制御部304が照明の制御を行なうごとに新たな撮影画像が撮影される場合等においては、撮影画像から取得した光量に関するパラメータが、予め指定された条件を満たさなくなるまで、投影装置5が画像を投影する際の光量をフィードバック制御するようにしても良い。例えば、制御部304は、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たす場合に、投影装置5が投影する光の光量を増加させる制御信号を投影装置5に送信する。更に、撮影部301が撮影したフレーム画像や静止画像について、再度、光量に関するパラメータを取得し、取得したパラメータの値が条件を満たす場合に、投影装置5が投影する光の光量を増加させる制御信号を送信する処理を、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たさなくなるまで繰り返すようにしてもよい。フィードバック制御については、公知技術であるため、ここでは詳細な説明は省略する。
なお、制御部304は、例えば、光量に関するパラメータの値が示す光量の不足分が大きくなるに従って、連続的または段階的に投影装置5が投影する光の光量が大きくなるよう、投影装置5を制御してもよい。また、制御部304は、例えば、光量に関するパラメータの値が示す光量の過剰分が大きくなるに従って、連続的または段階的に投影装置5が投影する光の光量が小さくなるよう、投影装置5を制御してもよい。
また、制御部304が撮影画像から取得するパラメータは、上述したような、光の色に関するパラメータであってもよい。例えば、制御部304は、撮影画像から、光の色に関するパラメータを取得し、取得したパラメータに応じて、投影装置5が投影する光の色を制御する。
制御部304は、例えば、撮影画像から光の色に関するパラメータを取得して、取得したパラメータが予め指定された条件を満たす場合に、投影装置5が投影する光の色を制御する。予め指定された条件については、上記実施の形態1における光の色に関するパラメータについての条件と同様の条件が利用可能である。また、例えば、制御部304は、予め指定された条件を満たす場合に、上記実施の形態1において、制御部104が照明部102に対して行なった制御と同様の制御を、投影装置5に対して行なうようにすればよい。例えば、実施の形態1において、光の色に関するパラメータが予め指定された条件を満たすと判断された際に、照明部102が行なう照明の特定の色の強度を強くさせる制御を行なったとすると、本実施の形態においては、光の色に関するパラメータが同様の条件を満たすと判断された際には、投影装置5が投影する光の特定の色の強度を強くさせる制御を行なうようにすればよい。ただし、特定の色の強度を強くする程度等は、実施の形態1とは異なっていても良い。
また、制御部304は、例えば、光の色に関するパラメータが予め指定された条件を満たさなくなるよう投影装置5による画像の投影を制御してもよい。例えば、上記と同様に、投影装置5により行なわれる画像の投影、具体的には投影する光の色の変更をフィードバック制御するようにしても良い。
なお、制御部304は、撮影画像から取得した異なる二以上のパラメータを用いて、これらのパラメータの組合わせに応じて、適宜、投影装置5による画像の投影を制御しても良い。
なお、制御部304が、撮影画像から取得した情報に応じて、投影装置5による投影の制御を行なうタイミングやトリガー等は問わない。例えば、制御部304は、予め指定された一定または不定のタイミング毎に制御を行なうようにしても良い。また、例えば、制御部304は、撮影部101が最初に撮影画像(例えば、撮影画像のフレーム画像等)を取得した場合に、撮影画像から取得した情報に応じて制御を行なうようにしてもよい。
また、制御部304は、取得部103が撮影画像からコードを検出できなかった場合に、撮影画像から取得した情報に応じて、投影装置5による投影を制御するようにしてもよい。例えば、制御部304は、取得部103が撮影画像からコードを検出できなかった場合に、撮影画像から取得したパラメータを用いて、投影装置5による投影の制御を行なう。
次に、コード読取装置3の動作の一例について図8のフローチャートを用いて説明する。なお、図において、図2と同一符号は同一または相当する処理ステップを示しており、ここでは詳細な説明は省略する。なお、図2と同一符号の処理ステップにおいて、制御部104が行なっていた処理は、ここでは、制御部304が行なうものとする。
(ステップS309)制御部304は、ステップS207で取得したパラメータに応じて、投影装置5による画像の投影を制御する。例えば、制御部304は、投影装置5に、投影を制御するための制御信号を送信する。そして、ステップS102に戻る。
以下、投影装置5の動作の一例について簡単に説明すると、投影撮影部501は、コードが配置された領域を撮影して投影撮影画像を取得する。投影部502は、投影撮影部501が取得した投影撮影画像を順次切り替えて表示する。受信部503は、コード読取装置3から送信される制御信号を受信する。投影部501は、受信部503が受信した制御信号に応じて、投影撮影画像の投影を制御する。例えば、投影する光量を、制御信号に応じて変更したり、投影する光の色を、制御信号に応じて変更する。
以下、本実施の形態の具体例について説明する。
図9は、投影装置5が投影している投影画像を、コード読取装置3で撮影している状況を示す模式図である。
投影装置5の投影撮影部301は、カラーコード200が配置されている領域を撮影して、投影撮影画像を取得する。ここで取得する投影撮影画像は動画像であるとする。投影装置5の投影部302は、例えば、投影撮影部301が撮影した投影撮影画像を、図示しない壁やスクリーンに投影する。この投影により、投影画像50が壁やスクリーン等に表示される。ここでは、投影部302は、予めデフォルトで指定された光量で投影を行なうものとする。
ユーザが、投影画像50を、コード読取装置3の撮影部301で撮影すると、撮影部301が動画像である撮影画像を取得する。
撮影部101が取得した撮影画像からカラーコードを検出し、検出したカラーコードから情報を取得する処理等については、上記実施の形態1の具体例と同様であるため、ここでは詳細な説明は省略する。
ここで、撮影部101が撮影したカラーコードが配置された撮影領域を撮影した撮影画像のフレーム画像において、上記の実施の形態1の具体例と同様に、取得部103がカラーコードを検出できなかった、あるいはカラーコードから情報が取得できなかったとすると、制御部304は、撮影画像であるフレーム画像から、光量に関するパラメータとして、フレーム画像を構成する画素の明度の平均値を取得する。
制御部304は、実施の形態1の具体例と同様に、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された第一の閾値以下である、という条件を満たすか否かを判断する。ここでは、制御部304は、明度の平均値が条件を満たすと判断したとする。
また、制御部304は、実施の形態1の具体例と同様に、フレーム画像から、光の色に関するパラメータとして、フレーム画像を構成する全画素のそれぞれについて色相の値を取得する。そして制御部304は、実施の形態1の具体例と同様の処理により、取得した色に関するパラメータが、光の色についての条件を満たすか否かを判断する。ここでは、制御部304は、色に関するパラメータが条件を満たすと判断したとする。
制御部304は、上記のように、光量についての条件を満たすと判断したため、ここでは、投影装置5に対して、投影に利用する光量を予め指定された値だけ増加させることを決定する。
また、制御部304は、上述したように光の色についての条件を満たすと判断したため、統制装置5に対して、上記で取得した色相の範囲に対応した色の光で投影を行なうことを決定する。ここでの対応した色の決定は、上記実施の形態1の具体例における照明の色の決定と同様におこなわれるものとする。
そして、制御部304は、上記の決定に従って、光量を予め指定された値だけ増加させるための制御信号と、上記で決定した色の光で投影を行なわせるための制御信号とを、無線通信により、投影装置5に送信する。
投影装置5の受信部503が、コード読取装置3の制御部304から送信された制御信号を受信すると、投影部502は、受信した制御信号に応じて、投影する光を制御する。具体的には、光量を予め指定された値だけ増加させるための制御信号に応じて、投影する光量を増加させ、上記で決定した色の光で投影を行なわせるための制御信号に応じて、投影する光の色を変化させる。このようにして変更された光で、投影撮影部501が撮影した画像が新たに投影される。
ここで、更に、この変更された光で投影された投影画像を、撮影部301で撮影した撮影画像からコードが検出できなかった場合、制御部304は、フレーム画像から上記と同様に光量に関するパラメータや色に関するパラメータを取得して、これらのパラメータがそれぞれに対して予め容易された条件を満たすか否かを判断し、投影装置5による投影を制御し、条件を満たさない場合には、投影装置5による投影を制御せずに、再度フレーム画像からのコード検出や、コードの情報の取得を行なう。
そして、制御部304は、上記と同様の処理を、コードから情報が取得できるまで繰り返す。
なお、撮影部101の撮影開始から、予め指定された時間以上経過した時点で、撮影画像からカラーコードに対応した情報を取得できていない場合、例えば、カラーコードが検出できていない場合や、カラーコードから対応する情報を取得できていない場合、出力部105は、モニタ105aに、コードから情報が取得できなかった旨の表示を行ない、コードを読み取る処理を終了する。
これにより、撮影画像に応じて投影装置5による投影を制御して、適切にコードを撮影することが可能となり、コードを適切に読み取ることが可能となる。
また、上記において、制御部304により、上記で取得した画素の明度の平均値が、第一の閾値以下でないと判断された場合、制御部304が、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された第二の閾値以上である、という条件を満たすか否かを判断し、条件を満たすと判断した場合、制御部204が、投影装置5が投影する際の光量を減少させても良い。
以上、本実施の形態によれば、撮影画像から取得した情報に応じて、投影装置によるコードを撮影した画像の投影を制御することができ、コードを適切に読み取ることができるコード読取装置を提供することができる。
なお、上記各実施の形態においては、制御部が、照明や、シャッタースピード等の撮影状況、投影装置を制御する場合について説明したが、本発明においては、制御部は、撮影画像を取得するための環境を制御するものであればよい。撮影画像を取得するための環境の制御とは、例えば、撮影時のコード読取装置の内部環境の制御であっても良く、外部環境の制御であっても良い。撮影画像を取得するための環境の制御は、例えば、撮影時の撮影部の設定の制御や、上述したような照明の制御や、撮影対象のコードの表示の制御等やこれらの2以上の組合わせである。撮影部の設定の制御とは、具体的には上述したようなシャッタースピードや、絞りや、感度等の設定の制御の1以上である。撮影対象のコードの表示の制御は、例えば、撮影対象のコードを表示する装置等の制御であり、具体的には、上述したような投影装置の制御である。
なお、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
また、上記各実施の形態では、コード読取装置がスタンドアロンである場合について説明したが、コード読取装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、撮影部101は、通信回線を介して撮影画像の入力を受け付けたり、照明部102は、通信回線を介して撮影領域を照明するための情報を送信したりすることになる。
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、格納部(例えば、ハードディスクやメモリ等の記録媒体)にアクセスしながらプログラムを実行してもよい。
なお、上記各実施の形態におけるコード読取装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、一以上のコードを含む領域を撮影して撮影画像を取得する撮影部と、撮影画像内において一以上のコードを検出し、検出した一以上のコードから、コードに対応づけられた情報を取得する取得部と、取得部が取得した情報を出力する出力部と、撮影画像に応じて、撮影画像を取得するための環境を制御する制御部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
図4は、上記プログラムを実行して、上記実施の形態によるカラーコード読取装置を実現するコンピュータシステム900の一例を示す図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図4において、コンピュータシステム900は、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムや、アプリケーションプログラム、システムプログラム、及びデータが記憶されるフラッシュメモリ等のROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、タッチパネル914と、無線通信モジュール915と、MPU911、ROM912等を相互に接続するバス916とを備える。なお、無線通信モジュール915に代えて、有線通信モジュールを備えていてもよい。また、タッチパネル914に代えて、ディスプレイと、マウスやキーボード等の入力デバイスとを備えていてもよい。
コンピュータシステム900に、上記実施の形態によるカラーコード読取装置の機能を実行させるプログラムは、無線通信モジュール915を介してROM912に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、ネットワークから直接、ロードされてもよい。
プログラムは、コンピュータシステム900に、上記実施の形態によるカラーコード読取装置の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。