(57)【特許請求の範囲】
【請求項１】
一以上のコードを含む領域を撮影して撮影画像を取得する撮影部と、
前記撮影画像内において一以上のコードを検出し、検出した一以上のコードから、当該コードに対応づけられた情報を取得する取得部と、
前記取得部が取得した情報を出力する出力部と、
前記撮影画像に応じて、前記撮影画像を取得するための環境を制御する制御部と、
前記撮影部が撮影する領域に光を照射する照明部と、を備え、
前記照明部は、照射する光の色を変更可能であり、
前記コードはカラーコードであり、
前記制御部は、前記撮影画像から、光の色に関するパラメータとして、撮影画像内において偏っている色の色相の範囲を取得し、取得したパラメータに応じて、前記照明部が前記撮影領域に対して照射する光の色を、取得した色相の範囲外の色に制御するコード読取装置。
【請求項２】
前記制御部は、前記取得部が前記撮影画像からコードに対応した情報を取得できなかった場合に、前記照明部が前記撮影領域に対して照射する光を制御する請求項１記載のコード読取装置。
【請求項３】
前記制御部は、前記撮影画像から、光量に関するパラメータを取得し、取得したパラメータに応じて、前記照明部が前記撮影領域に対して照射する光の光量を制御する請求項１または請求項２記載のコード読取装置。
【請求項４】
前記制御部は、前記撮影画像に応じて、前記撮影部による撮影時のシャッタースピードを制御する請求項１から請求項３いずれか一項記載のコード読取装置。
【請求項５】
撮影部と、取得部と、出力部と、制御部と、照明部とを用いて行なわれるコード読取方法であって、
前記撮影部が、一以上のコードを含む領域を撮影して撮影画像を取得する撮影ステップと、
前記取得部が、前記撮影画像内において一以上のコードを検出し、検出した一以上のコードから、当該コードに対応づけられた情報を取得する取得ステップと、
前記出力部が、前記取得ステップで取得した情報を出力する出力ステップと、
前記制御部が、前記撮影画像に応じて、前記撮影画像を取得するための環境を制御する制御ステップと、
前記照明部が、前記撮影ステップで撮影する領域に光を照射する照明ステップと、を備え、
前記コードはカラーコードであり、
前記照明ステップは、照射する光の色を変更可能であり、
前記制御ステップは、前記撮影画像から、光の色に関するパラメータとして、撮影画像内において偏っている色の色相の範囲を取得し、取得したパラメータに応じて、前記照明ステップで前記撮影領域に対して照射する光の色を、取得した色相の範囲外の色に制御するたコード読取方法。
【請求項６】
コンピュータを、
一以上のコードを含む領域を撮影して撮影画像を取得する撮影部と、
前記撮影画像内において一以上のコードを検出し、検出した一以上のコードから、当該コードに対応づけられた情報を取得する取得部と、
前記取得部が取得した情報を出力する出力部と、
前記撮影画像に応じて、前記撮影画像を取得するための環境を制御する制御部と、
前記撮影部が撮影する領域に光を照射する照明部と、して機能させ、
前記コードはカラーコードであり、
前記照明部は、照射する光の色を変更可能であり、
前記制御部は、前記撮影画像から、光の色に関するパラメータとして、撮影画像内において偏っている色の色相の範囲を取得し、取得したパラメータに応じて、前記照明部が前記撮影領域に対して照射する光の色を、取得した色相の範囲外の色に制御するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コードの読み取りを行なうコード読取装置等に関するものである。
【背景技術】
【０００２】
従来の技術として、２次元に配置された複数のセルの各々のセルの色彩又は濃度又は輝度によって、情報を符号化するカラー２次元コードが知られていた（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１７８２７７号公報（第１頁、第１図等）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のコード読取装置等においては、撮影時の環境によって、コードを適切に読み取ることができない、という課題があった。
【０００５】
例えば、従来のコード読取装置等においては、カラー二次元コードや、バーコード等のコードが配置されている環境によっては、コードに当たる光が不適切であること等によって、コードを適切に読み取ることができない場合がある、という課題があった。例えば、コードが配置されている場所に当たる光が少なく暗い場合、コードを撮影した画像から、コードを検出できず、コードを読み取ることができないという問題があった。
【０００６】
また、例えば、コードがカラーコードである場合、カラーコードに当たる光の色によって、カラーコードを構成するそれぞれの色を適切に認識できなくなってしまい、コードを読み取ることができないという問題があった。例えば、ハロゲンランプで照明されている環境下（例えば、トンネル内等）においては、カラーコードがオレンジがかったモノクロームの画像にしか見えず、適切にカラーコードの各色を認識できない、という問題があった。
【０００７】
また、例えば、画像を投影する装置等を用いて投影したコードを、読取対象のコードとして利用する場合、投影される場所の環境光や、投影する装置の設定等により、コードを適切に読み取ることができない場合がある、という課題があった。
【０００８】
本発明は、上記のような課題を解消するためになされたものであり、コードを適切に読み取ることができるコード読取装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のコード読取装置は、一以上のコードを含む領域を撮影して撮影画像を取得する撮影部と、撮影画像内において一以上のコードを検出し、検出した一以上のコードから、コードに対応づけられた情報を取得する取得部と、取得部が取得した情報を出力する出力部と、撮影画像に応じて、撮影画像を取得するための環境を制御する制御部とを備えたコード読取装置である。
【００１０】
かかる構成により、撮影画像を取得するための環境を撮影画像に応じて制御することで、コードを適切に読み取ることができる。
【００１１】
また、本発明のコード読取装置は、前記コード読取装置において、撮影部が撮影する領域に光を照射する照明部を更に備え、制御部は、撮影画像に応じて、照明部が撮影領域に対して照射する光を制御するコード読取装置である。
【００１２】
かかる構成により、撮影領域に対して照射する光を撮影画像に応じて制御することで、コードを適切に読み取ることができる。
【００１３】
また、本発明のコード読取装置は、前記コード読取装置において、制御部は、取得部が撮影画像からコードに対応した情報を取得できなかった場合に、撮影画像から取得した情報に応じて、照明部が撮影領域に対して照射する光を制御するコード読取装置である。
【００１４】
かかる構成により、撮影画像からコードに対応した情報を取得できない場合に、照明部が照射する光を制御することにより、コードを適切に読み取ることができる。また、コードが読み取れる場合には、照明を行わないようにして、電力消費を抑えるとともに、処理を高速化することができる。
【００１５】
また、本発明のコード読取装置は、前記コード読取装置において、制御部は、撮影画像から、一以上のパラメータを取得し、取得したパラメータに応じて、照明部が撮影領域に対して照射する光を制御するコード読取装置である。
【００１６】
かかる構成により、撮影画像から取得したパラメータを用いて、適切に照明部が照射する光を制御することができる。
【００１７】
また、本発明のコード読取装置は、前記コード読取装置において、制御部は、撮影画像から、光量に関するパラメータを取得し、取得したパラメータに応じて、照明部が撮影領域に対して照射する光の光量を制御するコード読取装置である。
【００１８】
かかる構成により、撮影画像から取得した光量に関するパラメータを用いて、照明部が照射する光の光量を適切に制御ことができ、適切にコードを読み取ることができる。
【００１９】
また、本発明のコード読取装置は、前記コード読取装置において、照明部は、照射する光の色を変更可能であり、制御部は、撮影画像から、光の色に関するパラメータを取得し、取得したパラメータに応じて、照明部が撮影領域に対して照射する光の色を制御するコード読取装置である。
【００２０】
かかる構成により、撮影画像から取得した光の色に関するパラメータを用いて、照明部が照射する光の色を適切に制御ことができ、適切にコードを読み取ることができる。
【００２１】
また、本発明のコード読取装置は、前記コード読取装置において、制御部は、撮影画像に応じて、撮影部による撮影時のシャッタースピードを制御するコード読取装置である。
【００２２】
かかる構成により、撮影時の露光時間を適切に制御ことができ、適切にコードを読み取ることができる。
【００２３】
また、本発明のコード読取装置は、前記コード読取装置において、撮影部は、投影装置が撮影して取得し投影した１以上のコードを含む領域の画像である投影画像を撮影して、撮影画像を取得し、制御部は、撮影画像に応じて、投影装置による画像の投影を制御するコード読取装置である。
【００２４】
かかる構成により、撮影対象となる投影画像を適切に制御ことができ、適切にコードを読み取ることができる。
【発明の効果】
【００２５】
本発明によるコード読取装置等によれば、コードを適切に読み取ることができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施の形態１におけるコード読取装置のブロック図
【図２】同コード読取装置の動作について説明するフローチャート
【図３】同コード読取装置の撮影状況を示すための、正面側から見た斜視図（図３（ａ））、および背面側から見た斜視図（図３（ｂ））
【図４】同カラーコード読取装置を実現するコンピュータシステムの一例を示す図
【図５】本発明の実施の形態２におけるコード読取装置のブロック図
【図６】同コード読取装置の動作について説明するフローチャート
【図７】本発明の実施の形態３におけるコード読取装置と投影装置のブロック図
【図８】同コード読取装置の動作について説明するフローチャート
【図９】同コード読取装置と投影装置とを説明するための模式図
【発明を実施するための形態】
【００２７】
以下、コード読取装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【００２８】
（実施の形態１）
図１は、本実施の形態におけるコード読取装置１のブロック図である。
【００２９】
コード読取装置１は、撮影部１０１、照明部１０２、取得部１０３、制御部１０４、出力部１０５を備える。
【００３０】
コード読取装置１は、コードを読み取るための装置である。コード読取装置は、コード読取のための専用の装置であっても良く、他の機能を有する汎用の装置等であっても良い。例えば、コード読取装置は、いわゆるスマートフォン等の多機能携帯電話や、タブレット型端末や、携帯電話等の、カメラ等を備えた携帯情報端末等と考えてもよい。
【００３１】
撮影部１０１は、一以上のコードを含む領域を撮影して撮影画像を取得する。撮影部１０１は、例えば、一の画像において、二以上のコードを含む領域を撮影した撮影画像を取得してもよい。撮影部１０１は、例えば、ＣＣＤやＣＭＯＳ等の撮像素子を備えたカメラである。撮影部１０１は、ビデオカメラであっても良く、デジタルスチルカメラであっても良い。撮影画像は、通常、動画像であるが、静止画像であっても良く、予め指定された時間間隔を隔てて撮影された一連の複数の静止画像等であっても良い。また、撮影画像は、動画像を構成する一または二以上のフレーム画像と考えてもよい。二以上のフレーム画像は、連続していてもよく、連続していなくても良い。例えば、二以上のフレーム画像は、予め指定された数のフレーム画像を隔てて取得された二以上のフレーム画像であっても良い。また、撮影部１０１が撮影する撮影画像の画素数や、撮影部１０１が送信する撮影画像のファイル形式や、圧縮方式等は問わない。また、撮影部１０１が撮影画像を撮影するタイミング等は問わない。なお、撮影部１０１は、外部のカメラ等を制御するドライバー等と考えてもよい。
【００３２】
撮影部１０１は、いわゆるスマートフォン等の多機能携帯電話や、タブレット型端末や、携帯電話等のカメラ等と考えてもよい。
【００３３】
一以上のコードは、情報と対応づけられたコードである。コードと対応づけられた情報は、例えば、コードから読み出される情報である。一以上のコードと対応づけられた情報は、例えば、コードの識別子である。一以上のコードと対応づけられた情報は、例えば、物品またはサービスの識別子と対応づけられた情報である。コードと対応づけられた情報が、物品またはサービスの識別子と対応づけられているということは、例えば、コードと対応づけられた情報自身が、物品またはサービスの識別子であることであっても良く、コードと対応づけられた情報が、物品またはサービスの識別子と対応づけられていることであってもよい。例えば、コードから読み出される情報と、物品識別子とを対応づけて有する情報を図示しない格納部等に予め格納しておくことで、コードから読み出される情報と、物品識別子とを対応づけて管理することができる。
【００３４】
一以上のコードは、例えば、物品あるいはそのパッケージの表面や、サービスを示すメニュー等に配置（例えば、添付や印刷）されている。コードは、例えば、二次元状のコードである。一以上のコードは、このコードに対応づけられた物品が配置されている位置の近傍に配置されていても良い。例えば、一以上のコードは、このコードに対応づけられた物品が配置されている棚やパレットや、物品を仕切っている仕切板等に配置（例えば添付）されたコードであってもよい。
【００３５】
コードとは、例えば、バーコード、二次元バーコード、ＱＲコード（登録商標）、カラーコード、文字列、数字列等の識別可能なものであれば何でも良い。コードは、例えば、光学的な機器を用いて読取り可能な情報である。コードは、文字列や数字列を除いた図形の形状や色やパターンやこれらの組合わせにより識別可能なコードであることが好ましい。コードは、色の配列を識別のための情報として有する二次元コードであるカラーコードであることは好適である。カラーコードは、例えば、カメレオンコードやカラーバーコード、カラー二次元コードとも呼ばれる場合がある。
【００３６】
なお、以下、本実施の形態においては、後述する取得部１０３がコードから取得する情報がコードの識別子であるコード識別子である場合を例に挙げて説明する。コード識別子は、例えば、コードに対応した文字列や、数字列や、文字列と数字列との組合わせ等である。
【００３７】
照明部１０２は、撮影部１０１が撮影する領域に光を照射する。照明部１０２は、例えば、照明のオン、オフや照明の光量等を調節するためのドライバ等を有している。また、照明部１０２は、通常、一以上の光源（図示せず）を有している。ただし、照明部１０２は、光源を備えておらず、ドライバ等により照明部１０２の外部の光源（図示せず）等を用いて光を照射させるようにしても良い。照明部１０２の照射する光は、後述する制御部１０４により制御される。照明部１０２は、いわゆるスマートフォン等の多機能携帯電話や、タブレット型端末や、携帯電話等のフラッシュや照明と考えてもよい。なお、照明部１０２は、結果として、撮影部１０１が撮影する領域に光を照射できればよい。
【００３８】
照明部１０２は、例えば、照射する光の量（以下、光量と称す）を変更可能なものである。例えば、照明部１０２は、制御部１０４が出力する制御信号等に応じて、動作電流を制御することで、発光する光量を調節可能なものであることが好ましい。また、発光する光量が異なる照明を切り替えたり、照明に利用する光源の数を変更することで、結果的に、照射する光の光量を変更可能なものであっても良い。照射する光の量は、光の強度と考えてもよい。また、光量の代わりに光の照度を考えるようにしてもよい。
【００３９】
照明部１０２は、例えば、照射する光の色を変更可能なものである。例えば、照明部１０２が照射する光の色は、制御部１０４により制御される。照明部１０２は、どのような構成により照射する光の色を変更できるものであっても良い。照明部１０２は、例えば、異なる色を発する二以上の光源（図示せず）を有しており、これらの光源が出力する光量を個別に制御することで、照射する光の色を変更可能なものである。例えば、照明部１０２は、個別に光量を制御可能な、Ｒ（赤）の光を照射する光源と、Ｇ（緑）の光を照射する光源と、Ｂ（青）の光を照射する光源とを備えたものであり、各光源の光量を個別に制御することで、照射する光の色を変更可能なものである。光の強度を制御することは、光をオン、オフすることも含む概念である。また、照明部１０２は、例えば、１以上の光源から出射される光を、カラーフィルタを透過させることによって着色して出力することで、光の色を制御してもよい。例えば、複数の光源から出力される光が、それぞれ異なる色のカラーフィルタを通過して出力されるようにし、各光源の出力を変更することで、光の色を制御しても良い。また、例えば、複数の光源から出力される光が、それぞれ、液晶フィルタ（図示せず）と、異なるカラーフィルタ（図示せず）とを通過して出力されるようにし、制御部１０４が出力する制御信号等に応じて、各液晶フィルタについての光の透過、非透過を個別に切り替えることで、照射される光の色を制御しても良い。例えば、光の透過を個別に切り替えて、各カラーフィルタから出射される光の組み合わせを変更することで、異なる色の光を照射できるようにしてもよい。異なるカラーフィルタは、例えば、Ｒ、Ｇ、Ｂのカラーフィルタである。
【００４０】
取得部１０３は、撮影部１０１が取得した撮影画像内において一または二以上のコードを検出する処理を行なう。そして、取得部１０３は、検出した一または二以上のコードから、このコードに対応づけられた情報を取得する。例えば、取得部１０３は、コードと対応づけられた情報として、コード識別子を取得する。
【００４１】
取得部１０３によるコードの検出は、コードの画像や、コードの領域を検出することと考えてもよい。例えば、撮影画像が動画像である場合、取得部１０３は、撮影部１０１が取得したフレーム画像を二値化して、パターンマッチングや特徴量を検出する処理等により、コードの外枠等の形状を認識して、撮影画像内のコードが配置されている領域を検出する。そして、検出したコードの画像を取得する。撮影画像が静止画像である場合においても同様である。なお、取得部１０３は、一の撮影画像から、複数のコードの画像を取得しても良い。また、取得部１０３は、取得したコードの画像の形状を、適宜補正してもよい。なお、撮影画像から、コードを検出してコード識別子を取得する処理等は、公知技術であるため、ここでは詳細な説明は省略する。
【００４２】
取得部１０３は、例えば、撮影画像内においてコードを検出できなかった場合、コードが検出できなかったことを示す情報を、後述する制御部１０４に出力してもよい。例えば、撮影画像が動画像である場合においては、コードの検出を開始してから予め指定された時間内にコードが検出できなかった場合に、コードを検出できなかったことを示す情報を出力しても良い。
【００４３】
取得部１０３が、撮影画像から検出した一または二以上のコードから、この一または二以上のコードに対応づけられた情報、例えば、コード識別子等を取得する処理については、公知の技術であるため、ここでは、詳細な説明は省略する。
【００４４】
取得部１０３は、例えば、撮影画像から検出したコードから、このコードに対応づけられた情報を取得できなかった場合、コードが取得できなかったことを示す情報を、後述する制御部１０４に出力してもよい。検出されたコードから、コードに対応づけられた情報を取得できなかった場合とは、例えば、コードがカラーコードであった場合において、コードが配置されている領域は検出できたが、このコードを構成する色が判別できなかった場合等である。例えば、撮影画像が動画像である場合においては、コードの検出を開始してから予め指定された時間内にコードに対応づけられた情報が取得できなかった場合、取得部１０３は、コードに対応づけられた情報が取得できなかったことを示す情報を出力しても良い。
【００４５】
取得部１０３は、更に、図示しない格納部等に予め格納されているコード識別子と物品またはサービスの識別子とを対応づけて有する複数の情報から、上記で取得した一以上のコード識別子に対応した物品またはサービスの識別子を取得するようにしてもよい。
【００４６】
なお、例えば、カラーコード等の、色の配列を識別情報として有する二次元コードの場合、一の撮影画像に複数のコードが存在する場合であっても、複数の各コードからそれぞれコード識別子等のコードに対応する情報を取得可能なものがあることが知られている。このため、このようなコードを使うことで、一の撮影画像内の複数のコードについてそれぞれ、コード識別子等の情報を取得することが可能である。
【００４７】
取得部１０３は、例えば、一の撮影画像について一以上のコードを検出した場合、あるいは、検出したコードから、このコードに対応する情報が取得できた場合、それ以降は、同じ撮影画像については、コードの検出や、コードに対応する情報の取得は行なわないようにしても良い。
【００４８】
制御部１０４は、取得部１０３が撮影画像から取得した情報に応じて、照明部１０２が撮影領域に対して照射する光を制御する。例えば、制御部１０４は、照明部１０２が照射する光の光量や、光の色を制御する。制御部１０４による照明部１０２の制御は、例えば、照明部１０２に対して、制御信号等を出力することにより行なわれる。
【００４９】
制御部１０４は、例えば、撮影部１０１が取得した撮影画像から、一以上のパラメータを取得し、取得したパラメータに応じて、照明部１０２が撮影領域に対して照射する光を制御する。制御部１０４が取得するパラメータは、どのようなパラメータであっても良い。制御部１０４が取得するパラメータは、例えば、撮影領域に対して照射されている光の状況に対応関係を有するパラメータである。
【００５０】
制御部１０４が撮影画像から取得するパラメータは、例えば、光量に関するパラメータである。制御部１０４は、例えば、撮影画像から、光量に関するパラメータを取得し、取得したパラメータに応じて、照明部１０２が撮影領域に対して照射する光の光量を制御する。光量に関するパラメータは、光の強度に関するパラメータと考えてもよい。光量に関するパラメータは、例えば、撮影領域に照射されている光の光量を結果的に判断可能なパラメータである。照明の光量に関するパラメータとは、例えば、照明の光量に対して対応関係を有する撮影画像のパラメータである。光量に関するパラメータは、例えば、撮影画像全体あるいはその一部の、明度または輝度のパラメータである。明度または輝度のパラメータは、例えば、撮影画像全体あるいはその一部を構成する一以上の画素の明度または輝度や、その平均値や中央値等の代表値や、最大値や最小値等である。また、光量に関するパラメータは、例えば、撮影画像全体あるいはその一部の、Ｒチャンネルや、Ｇチャンネル、Ｂチャンネル等の一以上のチャンネルの値やその代表値や最大値や最小値等であってもよい。
【００５１】
制御部１０４は、例えば、光量に関するパラメータを取得して、取得したパラメータが予め指定された条件を満たす場合に、照明部１０２が撮影領域に対して照射する光の光量を制御する。予め指定された条件とは、例えば、撮影領域からコードを適切に読み取れないことを判断するための光量に関する条件である。予め指定された条件は、例えば、光量に関するパラメータが第一の閾値以下であるという条件や、第二の閾値以上であるという条件（ただし、第一の閾値は、第二の閾値よりも小さい値であるとする）等である。
【００５２】
制御部１０４は、例えば、取得した光量に関するパラメータが予め指定された条件を満たすと判断した場合に、照明部１０２により、撮影領域を照明させるようにしてもよい。この際、制御部１０４は、例えば、照明部１０２に予め指定された光量で撮影領域を照明させてもよい。なお、上述した閾値は、コード読取装置１が利用される環境等に応じて、適宜変更可能である。また、閾値の最適な値は、例えば、実験結果や経験値等に応じて得られた値を設定することが好ましい。かかることは、以下の他の閾値等についても同様である。
【００５３】
また、制御部１０４は、例えば、パラメータが予め指定された条件を満たさなくなるよう照明部１０２が照射する光を制御してもよい。例えば、撮影部１０１が撮影する撮影画像が動画像である場合や、撮影部１０１が撮影する撮影画像が静止画像であって、制御部１０４が照明の制御を行なうごとに新たな撮影画像が撮影される場合等においては、撮影画像から取得した光量に関するパラメータが、予め指定された条件を満たさなくなるまで、照明部１０２が照射する光量をフィードバック制御するようにしても良い。例えば、制御部１０４は、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たす場合に、照明部１０２に予め指定された光量の光を照射させ、その後、撮影部１０１が撮影したフレーム画像や静止画像について、再度、光量に関するパラメータを取得し、取得したパラメータの値が条件を満たす場合に、前回の光量とは異なる光量の光を照明部１０２に照射させることを、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たさなくなるまで繰り返すようにしてもよい。フィードバック制御については、公知技術であるため、ここでは詳細な説明は省略する。
【００５４】
また、制御部１０４は、例えば、照明の光量に関するパラメータの値が示す光量の不足分が大きくなるに従って、連続的または段階的に撮影領域に対して照射される光の光量が大きくなるよう、照明部１０２を制御してもよい。
【００５５】
なお、照明の光量に関するパラメータに応じて制御される光は、通常は、白色光である。ただし、白色光以外の光を用いても良い。
【００５６】
また、制御部１０４が撮影画像から取得するパラメータは、例えば、光の色に関するパラメータであってもよい。例えば、制御部１０４は、撮影画像から、光の色に関するパラメータを取得し、取得したパラメータに応じて、照明部１０２が撮影領域に対して照射する光の色を制御する。
【００５７】
光の色に関するパラメータは、例えば、撮影領域に照射される光の色を結果的に判断可能なパラメータである。光の色に関するパラメータとは、例えば、撮影領域に照射される光の色に対して対応関係を有する撮影画像のパラメータである。光の色に関するパラメータは、例えば、撮影画像内の少なくとも一部についての、色相、色相および彩度、または色相、彩度および明度のパラメータの値やその平均値や中央値等の代表値や、最大値や最小値等である。また、光の色に関するパラメータは、例えば、撮影画像全体あるいはその一部の、Ｒチャンネルや、Ｇチャンネル、Ｂチャンネル等の一以上のカラーチャンネルの値やその代表値や最大値や最小値等であってもよい。各カラーチャンネルの値は、例えば、各カラーチャンネルを構成する画素の明度の値である。撮影画像の画像モードが、ＣＭＹＫモード等である場合、各カラーチャンネルは、ＣＭＹＫの各チャンネルであっても良い。また、光の色に関するパラメータは、撮影画像内の少なくとも一部の領域、好ましくは全ての領域内の各画素の色相の値であってもよい。色相の値は、例えば、撮影部１０１が取得するＲＧＢモード等の撮影画像をＨＳＬモードに変更した場合の各画素のＨ（色相）の値である。
【００５８】
制御部１０４は、例えば、撮影画像から光の色に関するパラメータを取得して、取得したパラメータが予め指定された条件を満たす場合に、照明部１０２が撮影領域に対して照射する光の色を制御する。予め指定された条件とは、例えば、撮影領域からコードを適切に読み取れないことを判断するための光の色に関する条件である。予め指定された条件とは、撮影画像に色の偏りがあることを示す条件である。
【００５９】
例えば、予め指定された条件は、撮影画像内の少なくとも一部（好ましくは全部）から取得した光の色のパラメータである各画素の色相の値の分布において、予め指定された値の幅を有する連続した色相の領域に、上記の少なくとも一部の画素中の予め指定された閾値以上の比率の画素（例えば、９０％以上の比率の画素）が含まれている、という条件である。色相の値の幅は、例えば、色相環を構成する連続した色の全体の幅を「３６０」とした場合の値（例えば、「２０」等）で示すことが可能である。例えば、制御部１０４は、撮影画像から取得した光の色のパラメータである各画素の色相の値の分布において、予め指定された値の幅を有する連続した色相の領域であって、その領域に全画素中の予め指定された閾値以上の比率の画素が含まれる領域があるか否かを判断する。このような領域が検出された場合、制御部１０４は、撮影画像の少なくとも一部に色の偏りが存在すると判断し、この検出された領域の色相の範囲に対応する色が、撮影画像内において偏っている色であると判断する。なお、上述した色相の値の幅は、コード読取装置１が利用される環境等に応じて、適宜変更可能である。また、この値の幅の最適な値は、例えば、実験結果や経験値等に応じて得られた値を設定することが好ましい。
【００６０】
また、予め指定された条件は、例えば、撮影画像の各カラーチャンネルの代表値や最大値等が、閾値以下であるという条件であってもよい。この場合、例えば、閾値以下のカラーチャンネルに対応する色が撮影画像から欠けている、あるいは不足していると判断することができる。
【００６１】
制御部１０４は、例えば、取得した光の色に関するパラメータが予め指定された条件を満たすと判断した場合に、光の色のパラメータに応じて決定される色の光で照明部１０２に撮影領域を照明させる。例えば、制御部１０４は、上述したような条件を満たすか否かの判断処理に応じて取得した、撮影画像内において偏っている色の色相の範囲に基づいて、この色相の範囲外の色の光を照明部１０２に照射させるようにしてもよい。あるいは、制御部１０４は、この色相の範囲の色の補色となる色の光を照明部１０２により照射させてもよい。例えば、照明部１０２が異なる色を出射する複数の光源（図示せず）を有している場合、異なる色の光源の出力を個別に制御することで、照明部１０２に、所望の色の光を出力させる。所望の色の光は、所望の色相の範囲の色の光と考えてもよい。また、異なる色の光源の代わりに、異なる色のフィルタを通して光を出射する光源を用いるようにしてもよい。
【００６２】
また、制御部１０４は、例えば、上述したように、上述したような判断処理により、一以上のカラーチャンネルに対応する色が撮影画像から欠けていると判断した場合、この欠けていると判断されたカラーチャンネルが示す色の光を照明部１０２に照射させるようにしても良い。例えば、Ｒチャンネルに対応する色が撮影画像から欠けていると判断した場合、この欠けていると判断されたＲチャンネルに対応する色である赤色の光を照明部１０２に照射させるようにしてもよい。
【００６３】
また、制御部１０４は、例えば、光の色に関するパラメータが予め指定された条件を満たさなくなるよう照明部１０２が照射する光の色を制御してもよい。例えば、撮影部１０１が撮影する撮影画像が動画像である場合や、撮影部１０１が撮影する撮影画像が静止画像であって、制御部１０４が照明の制御を行なうごとに新たな撮影画像が撮影される場合等においては、撮影画像から取得した光の色に関するパラメータが、予め指定された条件を満たさなくなるよう、照明部１０２が照射する光量をフィードバック制御するようにしても良い。例えば、制御部１０４は、撮影画像から取得した光の色に関するパラメータが予め指定された条件を満たす場合、照明部１０２にこの条件に対応した色の光を照明部１０２に照射させ、その後、撮影部１０１が撮影したフレーム画像や静止画像について、再度、光の色に関するパラメータを取得し、取得したパラメータの値が条件を満たす場合に、さらに、この条件に対応した色の光を照明部１０２に照射させることを、撮影画像から取得した光の色に関するパラメータが予め指定された条件を満たすまで繰り返すようにしてもよい。フィードバック制御については、公知技術であるため、ここでは詳細な説明は省略する。
【００６４】
なお、制御部１０４は、光量に関する異なる二以上のパラメータを用いて、これらのパラメータの組合わせに応じて、適宜、照明の光量を制御しても良い。また、制御部１０４は、光の色に関する異なる二以上のパラメータを用いて、これらのパラメータの組合わせに応じて、適宜、照明の光の色を制御しても良い。制御部１０４は、照明の光量に関する一以上のパラメータと、光の色に関する一以上のパラメータとの組合わせに応じて、適宜、照明の光を制御しても良い。また、制御部１０４は、一の光量に関するパラメータに対して、予め指定された二以上の条件の組合わせについて、条件を満たすか否かの判断を行ない、その判断結果の組合わせについて、適宜、照明の光量を制御しても良い。かかることは、光の色についても同様である。
【００６５】
なお、制御部１０４が、撮影画像から取得した情報に応じて、照明部１０２が照射する光の制御を行なうタイミングやトリガー等は問わない。例えば、制御部１０４は、予め指定された一定または不定のタイミング毎に、上述したような照明部１０２が照射する光の制御を行なうようにしても良い。また、例えば、制御部１０４は、撮影部１０１が最初に撮影画像（例えば、撮影画像のフレーム画像等）を取得した場合に、撮影画像から取得した情報に応じた照射する光の制御を行なうようにしてもよい。
【００６６】
また、制御部１０４は、取得部１０３が撮影画像からコードを検出できなかった場合に、撮影画像から取得した情報に応じて、照明部１０２が撮影領域に対して照射する光を制御するようにしてもよい。例えば、制御部１０４は、撮影画像から取得したパラメータを用いて、照明部１０２が照射する光の制御を行なう。例えば、制御部１０４は、上述したような光量に関するパラメータを用いた制御を行なっても良く、光の色に関するパラメータを用いた制御を行なっても良く、その両方を行なっても良い。
【００６７】
出力部１０５は、取得部１０３が取得した情報を出力する。例えば、出力部１０５は、取得部１０３が取得したコード識別子を、コード識別子を処理するための図示しないサーバ装置等に送信する。
【００６８】
なお、出力部１０５は、撮影画像からコードに対応づけられた情報を取得できなかった場合、その旨を示す情報を出力しても良い。例えば、その旨を示す情報として、コードの読取エラーを示す文字列や画像の表示や、音声の出力を行なっても良い。
【００６９】
また、出力部１０５は、撮影部１０１が撮影した撮影画像を図示しないモニタ等に表示してもよい。
【００７０】
ここでの出力とは、ディスプレイへの表示、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
【００７１】
出力部１０５は、モニタや通信手段等の出力デバイスを含むと考えても含まないと考えても良い。出力部１０５は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００７２】
次に、コード読取装置１の動作の一例について図２のフローチャートを用いて説明する。
【００７３】
（ステップＳ１０１）撮影部１０１は、撮影領域の撮影を開始する。ここでは、撮影部１０１が撮影により取得する撮影画像が、動画像である場合を例に挙げて説明する。また、ここでは、最初は、照明部１０２による撮影領域の照明は行なわないものとする。
【００７４】
（ステップＳ１０２）取得部１０３は、ステップＳ１０１で取得した撮影画像から一のフレーム画像を取得する。例えば、取得部１０３は、最新のフレーム画像を取得する。なお、例えば、後述するステップＳ１０８，Ｓ１０９の直後に、このステップＳ１０２の処理を行なう場合においては、取得部１０３は、これらのステップＳ１０８，Ｓ１０９の後に撮影されたフレーム画像を取得する。なお、撮影画像が動画像でない場合、撮影部１０１は、例えば、このステップにおいて新たな静止画像等を撮影して取得してもよい。また、この場合、その後の処理においては、この静止画像をフレーム画像の代わりに利用するようにしてもよい。
【００７５】
（ステップＳ１０３）取得部１０３は、ステップＳ１０２で取得したフレーム画像から１以上のコードを検出する処理を行ない、コードが検出できたか否かを判断する。例えば、取得部１０３は、コードの輪郭を検出して、コードの画像を取得する。検出できた場合、ステップＳ１０４に進み、検出できていない場合、ステップＳ１０６に進む。
【００７６】
（ステップＳ１０４）取得部１０３は、コードから、コードに対応づけられた情報、例えばコード識別子を読み出す処理を行なう。そして、コードに対応づけられた情報が読み出せた場合、ステップＳ１０５に進み、読み出せなかった場合、ステップＳ１０６に進む。
【００７７】
（ステップＳ１０５）出力部１０５は、ステップＳ１０４で取得した情報を出力する。そして、処理を終了する。
【００７８】
（ステップＳ１０６）制御部１０４は、撮影の開始から予め指定された時間が経過したか否かを判断する。経過していない場合、ステップＳ１０７に進み、経過した場合、ステップＳ１１０に進む。
【００７９】
（ステップＳ１０７）制御部１０４は、ステップＳ１０２で取得したフレーム画像から、パラメータを取得する。例えば、制御部１０４は、光量に関するパラメータを取得する。また、制御部１０４は、光の色に関するパラメータを取得する。
【００８０】
（ステップＳ１０８）制御部１０４は、ステップＳ１０７で取得したパラメータが、予め指定された条件を満たすか否かを判断する。例えば、制御部１０４は、ステップＳ１０７で取得した光量に関するパラメータが、この光量に関するパラメータに対応した条件を満たすか否かを判断する。また、制御部１０４は、例えば、ステップＳ１０７で取得した光の色に関するパラメータが、この光の色に関するパラメータに対応した条件を満たすか否かを判断する。そして、制御部１０４は、いずれか一方が条件を満たすと判断した場合に、ステップＳ１０７で取得したパラメータが予め指定された条件を満たすと判断し、いずれの条件も満たさなかった場合、予め指定された条件を満たさないと判断するようにして良い。予め指定された条件を満たす場合、ステップＳ１０９に進み、条件を満たさない場合、ステップＳ１０２に戻る。例えば、ステップＳ１０７で取得したパラメータが、予め指定された条件を満たさない場合にステップＳ１０２に戻ることにより、例えば、単に撮影画像内にコードが写っていないためにコードが検出できないことや、手ぶれ等により撮影画像が鮮明でないためにコードの検出やコードからの情報の読み出しができない場合等に、再度、撮影画像からコードを検出して情報を取得する処理を行なうことが可能となる。
【００８１】
（ステップＳ１０９）制御部１０４は、ステップＳ１０８の判断結果に対応して、照明部１０２による光の照射を制御する。例えば、証明制御部１０４は、判断結果に対応した制御信号を証明部１０２に出力する。制御部１０４は、例えば、ステップＳ１０８において、光量に関するパラメータが、予め指定された条件を満たしている場合、この条件を満たさなくなるように、照射される光量が変更されるよう照明部１０２を制御する。また、光の色に関するパラメータが、予め指定された条件を満たしている場合、この条件を満たさなくなるように、照射される光の色が変更されるよう照明部１０２を制御する。あるいは、これらの制御を組合わせても良い。光量を変更したり、光の色を変更するよう照明部１０２を制御することは、照明部１０２による発光のオン、オフの制御であっても良い。この制御に応じて、照明部１０２は、撮影領域に対して光を照射する。そして、ステップＳ１０２に戻る。
【００８２】
（ステップＳ１１０）出力部１０５は、撮影画像からコードに対応付けられた情報が取得できなかった旨を示すエラー出力を行なう。そして、処理を終了する。
【００８３】
なお、上記の処理において、ステップＳ１０３で複数のコードが検出された場合、取得部１０３は、例えば、ステップＳ１０４等において、各コードから個別に、コードに対応した情報を読み出す処理を行なうようにすればよい。
【００８４】
以下、本実施の形態におけるコード読取装置１の具体的な動作について説明する。なお、以下の具体例において用いる閾値等の値は、説明のための便宜上の値であり、実際のコードの読み取りに必ずしも適したものではない場合がある。
【００８５】
図３は、コード読取装置１でコードを撮影している状況を示すための、コード読取装置の正面側から見た斜視図（図３（ａ））、および背面側から見た斜視図（図３（ｂ））である。ここでは、コード読取装置１がいわゆるスマートフォンを用いて実現されている場合を例に挙げて説明する。コード読取装置１の背面側には、撮影部１０１であるビデオカメラと、照明部１０２とが設けられている。ここでは、照明部１０２は、図示しないＲ（赤）色の光源と、Ｇ（緑）色の光源と、Ｂ（青）色の光源とを有しており、これらの光源が照射する光を個別に制御可能なものであるとする。コード読取装置１の正面には、撮影部１０１が撮影した撮影画像等を表示するモニタ１０５ａが設けられている。ここでは、撮影部１０１の撮影対象であるコード２００がカラーコードである場合を例に挙げて説明する。ここでは、一例として、黒い背景に、水色・紫・黄・緑・赤・青・オレンジの最大８色の色を有する矩形の図柄を、３行９列となるよう２次元に配列した構成を有しているものを用いる場合について説明する。ただし、本具体例においては、カラーコードの形状等は問わない。例えば、カラーコードは円環状のカラーコード等であっても良い。
【００８６】
ユーザが、コード読取装置１の背面の撮影部１０１をコードに向けて、カラーコードを撮影したとする。このとき、デフォルトでは、照明部１０２は、照明を行なわないものとする。
【００８７】
撮影部１０１は、カラーコードが配置された撮影領域を撮影して、動画像である撮影画像を取得する。
【００８８】
取得部１０３は、撮影部１０１が取得した動画像からフレーム画像を取得して、カラーコードを検出する処理を行なう。例えば、取得部１０３は、カラーコードの輪郭等を検出して、カラーコードの領域を検出する。カラーコードを検出する処理は公知技術であるため、ここでは詳細な説明は省略する。
【００８９】
カラーコードが検出できたとすると、取得部１０３は、検出したカラーコードを構成する色の配列を読み取る。カラーコードから、色の配列を読み取り、読み取った色の配列に対応した情報（例えば、コード識別子）を取得する処理は、公知技術であるため、ここでは詳細な説明は省略する。また、カラーコードから色の配列を読み出す際等に、上記で検出したカラーコードの画像の形状を適宜補正するようにしても良い。
【００９０】
出力部１０５は、取得部１０３がカラーコードから取得した情報を出力する。例えば、予め指定された図示しないサーバ装置等に取得した情報を送信する。
【００９１】
ここで、取得部１０３が、フレーム画像からカラーコードが検出できなかったとすると、制御部１０４は、フレーム画像から、光量に関するパラメータとして、フレーム画像を構成する画素の明度の平均値を取得する。例えば、取得した平均値が、「２０」であったとする。なお、ここでは、フレーム画像の各画素が明度として取り得る値の範囲が、「０」から「２５５」であるとし、値が小さいほど、画素の明度が低い、つまり暗いものとする。
【００９２】
制御部１０４は、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された閾値以下である、という条件を満たすか否かを判断する。例えば、閾値が、「１００」であったとすると、制御部１０４は、明度の平均値が条件を満たすと判断する。
【００９３】
また、制御部１０４は、フレーム画像から、光の色に関するパラメータとして、フレーム画像を構成する全画素のそれぞれについて色相の値を取得する。
【００９４】
制御部１０４は、取得したパラメータを用いて、光の色についての条件を満たすか否かを判断する。具体的には、まず、制御部１０４は、フレーム画像の全画素のそれぞれの色相の値を用いて、フレーム画像の色相のヒストグラムを作成する。このヒストグラムは、例えば、色相の値毎に画素数を集計して、集計した値を色相の値が連続した値となるよう配列したものである。そして、このヒストグラムにおいて、予め指定された値の幅を有する色相の範囲内に含まれる画素数を集計して、全画素数の比率を算出し、その比率が、閾値以上であるものがあるか否かを判断する処理を行なう。そして、同様の処理を、予め指定された値の幅を有する色相の範囲を、色相の値の最小値ずつ移動させて繰り返し行なう。
【００９５】
例えば、予め指定された値の幅が「３０」であったとすると、最初は、色相の値が、「１」から「３０」までの範囲である画素数を取得し、取得した画素数の、全画素に対する比率を算出する。そして、算出した比率が、予め指定された色相についての閾値以上であるか否かを判断する。算出した比率が閾値以上である場合、この色相の範囲を示す値と、比率の値とを対応づけて、図示しない格納部等に一時記憶する。閾値以下である場合、一時記憶しない。更に、色相の範囲を一つずらして、「２」から「３１」までの範囲である画素数を取得して、全画素数に対する比率を算出し、閾値以上であるか否かを判断する。その後も色相の範囲をずらして、同様の処理を繰り返す。
【００９６】
そして、色相の全ての範囲について、上記の処理が終わった時点で、図示しない格納部に色相の範囲を示す値と比率との組が格納されているか否かを判断し、複数の色相の範囲を示す値と比率との組が格納されている場合、その中から、比率が最大である色相の範囲を示す値を取得する。なお、一つだけ色相の範囲を示す値が格納されている場合、この色相の範囲を示す値を取得すればよい。この色相の範囲を示す値が取得できた場合、制御部１０４は、光の色についての条件を満たすと判断する。ここでは、閾値が「９０％」であり、色相の値の範囲を示す値として、「２３」から「５２」が取得できたとし、制御部１０４は条件を満たしたと判断する。なお、ここでは、フレーム画像の各画素が取り得る色相の値の範囲が、「０」から「３５９」であるとする。
【００９７】
制御部１０４は、上記のように、光量についての条件を満たすと判断したため、ここでは、照明部１０２に対して、予めデフォルト等で指定された光量で照明を行なわせることを決定する。
【００９８】
また、制御部１０４は、上述したように光の色についての条件を満たすと判断したため、照明部１０２に対して、上記で取得した色相の範囲に対応した色の光で照明を行なうことを決定する。照明部１０２は、まず上記で取得した色相の範囲「２３」から「５２」の中央値「３７．５」を算出する。そして、この値を色相（Ｈ）の値とし、彩度（Ｓ）を予め指定された値（例えば１００等）とし、輝度（Ｌ）を予め指定された値（例えば、５０％）として有するＨＳＬ値で表された色を、ＲＧＢ値に変換する。このようなＨＳＬ値で表される色を、ＲＧＢ値で表される色に変換する処理としては公知技術が利用可能である。そして、取得したＲＧＢ値の色の補色を取得する。例えば、補色のＲＧＢ値は、現在のＲＧＢ値のうち最大値と最小値の合計から、各Ｒ，Ｇ，Ｂの構成要素の値を減算することで取得可能である。なお、補色をどのように取得するかは問わない。補色を取得する処理は公知技術であるため、ここでは詳細な説明は省略する。制御部１０４は、この取得したＲＧＢ値に対応した色の光を、照明部１０２に照射させることを決定する。
【００９９】
制御部１０４は、照明部１０２を制御することで、上記で決定した予め指定された光量を有する光であって、上記で決定した色の光を、照明部１０２に照射させる。例えば、制御部１０４は、照明部１０２が有する、Ｒ色の光源と、Ｇ色の光源と、Ｂ色の光源とに対して、上記で取得した補色のＲＧＢ値が示すＲ，Ｇ，およびＢの値の比率に対応した光量の光であって、それぞれの光源から出射される光の光量を合わせた値が、予め指定された光量となるような光を照射させる。
【０１００】
これにより、照明部１０２が照射する光により、撮影対象となるコード２００が、制御部１０４が決定した光量と色とを有する光で照明される。
【０１０１】
取得部１０３は、上記の照明の直後に、撮影部１０１が撮影した撮影画像からフレーム画像を取得し、取得したフレーム画像においてコードを検出する。コードが検出された場合、上記と同様に、コードに対応づけられた情報を読み出し、出力する。
【０１０２】
ここで、更に、コードが検出できなかった場合、制御部１０４は、フレーム画像から上記と同様に、光量に関するパラメータを取得して、上記と同じ予め指定された条件を満たすか否かを判断し、条件を満たす場合には、光量を、上記で決定して照射した光量よりも予め指定された値だけ多い光量で照明することを決定する。例えば、光量を、上記で決定して照射した光量よりも、例えば１０％だけ多い光量で照明することを決定する。なお、条件を満たさないと判断された場合には、直前に決定された光量と同じ光量で照明することを決定する。
【０１０３】
また、制御部１０４は、上記と同様に、フレーム画像から光の色に関するパラメータを取得して、このパラメータが、上述したように、光の色に関する条件を満たすか否かを判断する。満たす場合、上記と同様に、光の色に関するパラメータを用いて決定した補色により、コードを照明することを決定する。また、満たさない場合、直前に決定された色の光により照明することを決定する。
【０１０４】
そして、制御部１０４は、照明部１０２を制御して、上記で決定した光でコードを照明させ、上記と同様の処理を、コードから情報が取得できるまで繰り返す。
なお、撮影部１０１の撮影開始から、予め指定された時間以上経過した時点で、撮影画像からカラーコードに対応した情報を取得できていない場合、例えば、カラーコードが検出できていない場合や、カラーコードから対応する情報を取得できていない場合、出力部１０５は、モニタ１０５ａに、コードから情報が取得できなかった旨の表示を行ない、コードを読み取る処理を終了する。
【０１０５】
これにより、照明部１０２により、適切に照明したコードを撮影することが可能となり、コードを適切に読み取ることが可能となる。
【０１０６】
なお、上記においては、フレーム画像からコードが検出できない場合に、照明部１０２が出射する光を制御するようにしたが、フレーム画像から検出したコードから、このコードに対応づけた情報が読み出せない場合、例えば、カラーコードを構成する色が判別できない場合等においても、照明部１０２が照射する光量や光の色を、上記と同様に決定するようにしても良い。
【０１０７】
また、上記においては、光量についての条件を満たす場合に、予め指定された光量の光を照射するようにしたが、例えば、制御部１０４は、フレーム画像を構成する画素の明度の平均値についての値の範囲と、照射すべき光の光量の値とを対応づけて図示しない格納部等に予め格納されている情報から、現在のフレーム画像から取得した明度の平均値に対応した光量の値を取得して、取得した値の光量の光を照明部１０２に照射させるようにしても良い。また、フレーム画像を構成する画素の明度の平均値と、照射すべき光の光量の値との関係を示す予め用意された関係式に、現在のフレーム画像から取得した明度の平均値を代入して、現在のフレーム画像に対応する照射すべき光量の値を取得するようにしても良い。
【０１０８】
また、上記の具体例においては、フレーム画像からコードに対応する情報を取得できない場合に、制御部１０４が、照明部１０２の照射する光を制御するようにしたが、本発明においては、制御部１０４が、フレーム画像から取得部１０３がコードを検出する前に、フレーム画像から、光量に関するパラメータや、光の色に関するパラメータ等を取得して、取得したパラメータを用いて、予め指定された条件を満たすか否かの判断を行ない、条件を満たす場合に、上記と同様に照明部１０２が照射する光量や光の色等を制御して、制御された光により照明されたコードを撮影したフレーム画像について、取得部１０３がコードを検出する処理や、検出したコードからコードに対応した情報を取得する処理を行なうようにしてもよい。
【０１０９】
以上、本実施の形態によれば、撮影画像から取得した情報に応じて、コードに照射する光を制御することにより、コードを適切に読み取ることができるコード読取装置を提供することができる。
【０１１０】
なお、上記実施の形態においては、制御部１０４が、撮影部１０１が取得した撮影画像から、一以上のパラメータを取得し、取得したパラメータに応じて、照明部１０２が撮影領域に対して照射する光を制御する例等について説明したが、本発明においては、制御部１０４は、撮影画像に応じて照明部１０２が撮影領域に対して照射する光を制御するものであればよく、例えば、上述した例のように照射する光を制御するようにしてもよく、上述した例以外の処理により、撮影画像に応じて照射する光を制御するようにしても良い。例えば、パラメータを取得して、取得したパラメータに応じて照射する光を制御する代わりに、上述したように、取得部１０３が出力する撮影画像からコードを読み取ることができなかったことを示す情報を受け付けた場合、制御部１０４は、照明部１０２が照射する光を、コードが読取可能となるまでフィードバック制御するようにしてもよい。例えば、撮影画像からコードが読取可能となるまで、段階的に照明部１０２が照射する光の光量や光の色を変更し、変更する毎にコードの撮影を行なうようにしても良い。ここでのコードの読取とは、コードの検出と考えても良く、コードからの情報の取得と考えても良く、その両方と考えてもよい。
【０１１１】
（実施の形態２）
上記実施の形態１においては、制御部１０４が、照明を制御する場合について説明したが、以下、本実施の形態においては、制御部が、撮影部のシャッタースピードや撮影位置の制御を行なう場合の一例について説明する。
【０１１２】
図５は、本実施の形態におけるコード読取装置２のブロック図である。
【０１１３】
コード読取装置２は、撮影部１０１、照明部１０２、取得部１０３、制御部２０４、出力部１０５を備える。撮影部１０１、照明部１０２、取得部１０３、出力部１０５については、上記実施の形態１と同様であるため、ここでは詳細な説明は省略する。なお、ここでは、撮影部１０１は、例えば、シャッタースピードが変更可能なものであるとする。シャッタースピードは露光時間と考えてもよい。また、コードの撮影時に照明が不要である場合、照明部１０２は省略しても良い。
【０１１４】
制御部２０４は、撮影部１０１が取得した撮影画像に応じて、撮影部１０１による撮影時のシャッタースピードを制御する。制御部２０４は、例えば、シャッタースピードを制御することで、撮影画像を取得するための環境を制御する。シャッタースピードとは、例えば露光時間と考えてもよい。シャッタースピードを制御するということは、例えば、シャッタースピードを、直前のシャッタースピードや、デフォルトのシャッタースピードや、測光用のセンサ（図示せず）を用いて行なわれた測光結果から決定されるシャッタースピード等から変更することや、測定結果に応じて変更しないこと等である。シャッタースピードの制御とは、例えば、シャッタースピードを上げることや下げることや、撮影画像に適したシャッタースピードに設定することである。制御部２０が、シャッタースピードを制御するということは、例えば、シャッタースピードを制御する制御信号や、命令等を、撮影部１０１に対して出力することである。
【０１１５】
制御部２０４は、例えば、コードが読み取り可能な撮影画像が得られるよう、撮影部１０１による撮影時のシャッタースピードを制御する。通常、カメラ等の撮影部１０１のシャッタースピードは、予め決められた複数段階のシャッタースピードのいずれかの値に設定されることから、例えば、制御部２０４は、撮影画像に応じて、シャッタースピードを一段ずつ早く、あるいは遅くなるよう制御してもよい。また、制御部２０４は、予め図示しない格納部等に格納されている明度に関するパラメータの値の範囲と最適なシャッタースピードとを対応付けた対応表から、撮影画像から取得した明度に関するパラメータの値に対応するシャッタースピードを、変更後のシャッタースピードとして取得しても良い。なお、撮影部１０１のシャッタースピードは、連続的に変更可能なものであっても良い。この場合、例えば、制御部２０４は、明度に関するパラメータを引数としたシャッタースピードを算出するための予め用意された演算式に、撮影画像から取得した明度に関するパラメータを代入することで、変更後のシャッタースピードを算出しても良い。明度に関するパラメータについては後述する。
【０１１６】
撮影部１０１が撮影した撮影画像は、静止画像であっても良く、動画像であっても良い。動画像である場合、シャッタースピードは、例えば、動画像を構成するフレーム画像を撮影する際のシャッタースピードである。また、制御部２０は、例えば、撮影部１０１が撮影した１以上のフレーム画像に応じて、その後にフレーム画像を撮影する際のシャッタースピードを制御する。撮影部１０１が静止画像を撮影する場合、シャッタースピードを変更後に、静止画像を撮影し直すようにしてもよい。
【０１１７】
例えば、制御部２０４は、取得部１０３が撮影画像から取得した情報に応じて、撮影部１０１による撮影時のシャッタースピードを制御する。例えば、取得部１０３が出力する撮影画像からコードを検出できなかったことを示す情報を受け付けた場合、制御部２０４は、撮影時のシャッタースピードをフィードバック制御するようにしてもよい。例えば、撮影画像からコードが検出されるまで、段階的にシャッタースピードを変更し、変更する毎に、撮影を行なうようにしても良い。この場合のシャッタースピードの変更は、通常は、シャッタースピードを下げることであるが、上げることであっても良い。
【０１１８】
制御部２０４は、例えば、撮影部１０１が取得した撮影画像から、一以上のパラメータを取得し、取得したパラメータに応じて、シャッタースピードを制御する。ここでの１以上のパラメータは、例えば、シャッタースピードを制御する際に利用されるパラメータであり、実施の形態１において説明した光を制御する際に利用されるパラメータと区別するために、シャッターパラメータと呼ぶようにしても良い。制御部２０４が取得するパラメータは、例えば、撮影時の露光量に対応関係を有するパラメータである。
【０１１９】
制御部２０４が撮影画像から取得するパラメータは、例えば、撮影画像の明度に関するパラメータである。明度に関するパラメータは、輝度や照度に関するパラメータと考えてもよい。明度に関するパラメータは、撮影画像の明度の統計値（例えば、平均値や、中央値や、中間値、最大値、最小値等）や、撮影画像のガンマ値であっても良く、撮影画像の明度のヒストグラムであっても良い。制御部２０４は、例えば、撮影画像から、明度に関するパラメータを取得し、取得したパラメータに応じて、撮影時のシャッタースピードを制御する。明度に関するパラメータは、例えば、撮影に適したシャッタースピードを結果的に判断可能なパラメータである。撮影に適したシャッタースピードとは、例えば、カラーコードの色を識別することが可能な撮影画像を撮影可能なシャッタースピードである。撮影画像内においてコードが配置されている領域を認識可能である場合、制御部２０４が撮影画像から取得するパラメータは、撮影画像内の一部、例えば、撮影画像内のコードが配置されている領域の明度に関するパラメータであっても良く、全体の明度に関するパラメータであってもよい。また、明度に関するパラメータは、例えば、撮影画像全体あるいはその一部の、Ｒチャンネルや、Ｇチャンネル、Ｂチャンネル等の一以上のチャンネルについての明度のパラメータ、例えば、一以上のチャンネルの明度の代表値や最大値や最小値等であってもよく、撮影画像をグレースケール化した画像についての明度のパラメータであってもよい。
【０１２０】
制御部２０４は、例えば、パラメータ（例えば、明度に関するパラメータ）を取得して、取得したパラメータが予め指定された条件を満たす場合に、シャッタースピードを制御する。予め指定された条件は、シャッタースピードを制御するためのパラメータについての条件である。予め指定された条件とは、例えば、撮影領域からコードを適切に読み取れないことを判断するための明度に関する条件である。予め指定された条件は、例えば、明度に関するパラメータ（例えば、撮影画像の明度の平均値等）が第一の閾値以下であるという条件や、第二の閾値以上であるという条件（ただし、第一の閾値は、第二の閾値よりも小さい値であるとする）等である。なお、本実施の形態においては、明度が高い場合、即ち明度の値が高い場合とは、撮影画像が明るいことを示し、明度が低い場合、即ち明度の値が低い場合とは、撮影画像が暗いことを示すものとする。
【０１２１】
制御部２０４は、例えば、取得したパラメータ（例えば、明度に関するパラメータ）が予め指定された条件を満たすと判断した場合に、撮影部１０１のシャッタースピードを変更させる。例えば、撮影画像から取得した明度に関するパラメータが、第一の閾値以下である場合、制御部２０４は、シャッタースピードを遅くする。例えば、撮影画像から取得した明度が第一の閾値が示す明度よりも暗い場合、シャッタースピードを遅くして、露光する時間を増加させる。例えば、シャッタースピードをｊ段（ｊは１以上の整数）だけ遅くする。また、例えば、撮影画像から取得した明度に関するパラメータが、第二の閾値以上である場合、制御部２０４は、シャッタースピードを早くする。例えば、撮影画像から取得した明度が第二の閾値が示す明度よりも明るい場合、シャッタースピードを早くして、露光時間を減少させる。例えば、シャッタースピードをｋ段（ｋは１以上の整数）だけ早くする。なお、上述した第一の閾値や第二の閾値は、コード読取装置１が利用される環境等に応じて、適宜変更可能である。また、閾値の最適な値は、例えば、実験結果や経験値等に応じて得られた値を設定することが好ましい。かかることは、以下の他の閾値等についても同様である。なお、制御部２０４は、第一の閾値と第二の閾値のいずれか一方のみを用いても良い。
【０１２２】
また、制御部２０４は、例えば、パラメータ（例えば、明度に関するパラメータ）が予め指定された条件を満たさなくなるようシャッタースピードを制御してもよい。例えば、撮影部１０１が撮影する撮影画像が動画像である場合や、撮影部１０１が撮影する撮影画像が静止画像であって、制御部２０４がシャッタースピードの制御を行なうごとに新たな撮影画像が撮影される場合等においては、撮影画像から取得したパラメータが、予め指定された条件を満たさなくなるまで、シャッタースピードをフィードバック制御するようにしても良い。例えば、制御部２０４は、予め指定されたシャッタースピード等で撮影画像の撮影を行ない、その後、撮影部１０１が撮影したフレーム画像や静止画像について、光量に関するパラメータを取得し、取得したパラメータの値が条件を満たす場合に、前回のシャッタースピードとは異なるシャッタースピード、例えば遅いシャッタースピードで撮影することを、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たさなくなるまで繰り返すようにしてもよい。フィードバック制御については、公知技術であるため、ここでは詳細な説明は省略する。
【０１２３】
なお、制御部２０４は、例えば、明度に関するパラメータの値が示す明度の不足分（例えば、パラメータが第一の閾値以下である場合におけるパラメータと第一の閾値との差の絶対値等）が大きくなるに従って、連続的または段階的に増加する変更量により、シャッタースピードが遅くなるよう、撮影部１０１を制御してもよい。同様に、制御部２０４は、例えば、明度に関するパラメータの値が示す明度の過剰分（例えば、パラメータが第二の閾値以上である場合におけるパラメータと第二の閾値との差の絶対値等）が大きくなるに従って、連続的または段階的に増加する変更量により、シャッタースピードが早くなるよう、撮影部１０１を制御してもよい。
【０１２４】
なお、制御部２０４は、撮影画像から取得した二以上のパラメータを用いて、これらのパラメータの組合わせに応じて、適宜、シャッタースピードを制御しても良い。また、制御部２０４は、一の光量に関するパラメータに対して、予め指定された二以上の条件の組合わせについて、条件を満たすか否かの判断を行ない、その判断結果の組合わせについて、適宜、シャッタースピードを制御しても良い。
【０１２５】
撮影部１０１の撮影位置が制御可能である場合、制御部２０４は、撮影部１０１が取得した撮影画像に応じて、撮影部１０１による撮影位置を制御するようにしてもよい。制御部２０４は、例えば、撮影位置を制御することで、撮影画像を取得するための環境を制御してもよい。例えば、制御部２０４は、コードが読み取り可能な撮影画像が得られるよう、撮影時の撮影部１０１の位置を制御してもよい。撮影部１０１の位置を制御することは、撮影部１０１を有するコード読取装置２の位置を制御することであっても良い。撮影部１０１の位置とは、撮影部１０１が配置される空間における位置であり、撮影部１０１の向き等も含む概念である。
【０１２６】
例えば、撮影部１０１、具体的には撮影部１０１を有するコード読取装置２が、無人車両や無人航空機等のいわゆるドローン（図示せず）に取り付けられている場合、制御部２０４は、ドローンに対して制御信号等を出力することで、ドローンの位置を制御することにより、撮影部１０１による撮影位置を制御する。例えば、撮影部１０１が撮影した画像内に、カラーコードの存在が認識されない場合や、カラーコードの情報が読み取れない場合、、カラーコードが存在が認識される、あるいはカラーコードの情報が読み取れるよう、ドローンの位置や向きを変更させる。カラーコードの存在が認識できない場合や、カラーコードの情報が取得できない場合のドローンの前後左右等の移動の仕方は、予め指定されていても良く、ランダムに決定されても良い。また、ドローンは、ユーザの制御等によって一旦指定された位置を起点として移動するようにしてもよい。
【０１２７】
例えば、制御部２０４は、撮影部１０１が撮影した画像において、カラーコードが配置されている物体や領域を、パターンマッチング等により認識し、その物体や領域の画像内にカラーコードの存在が認識できない場合、例えば、ドローンを制御して、カラーコードの存在が認識されるまでドローンを前後や上下、左右に移動させる。ここでの移動は、回転も含む概念である。ドローンを移動させることは、ドローンの撮影部１０１が設置されている部分を移動させることと考えてもよい。
【０１２８】
例えば、予め、カラーコードが配置されている物体や領域が予め指定されている場合、制御部２０４は、撮影部１０１が撮影した画像において、カラーコードが配置されている物体や領域を、パターンマッチング等により認識し、その物体や領域の画像内にカラーコードの存在が認識できない場合、例えば、ドローンを制御して、カラーコードが認識されるまで、ドローンの撮影部１０１が設置されている部分を、物体や領域に対して近づけたり、物体や領域に沿って移動させる。
【０１２９】
例えば、撮影部１０１が撮影した画像において、カラーコードの存在が認識されたが、カラーコードの情報の取得できない、具体的には、カラーコード情報の読取ができない場合、制御部２０４は、例えば、この存在が認識されたカラーコードに対して、ドローンを近づけるよう、ドローンを制御してもよい。また、撮影された画像において、カラーコードの輪郭や、外周の頂点等を検出し、この検出した輪郭や、頂点の位置が、予め指定された形状、例えば、長方形に近い形状となるよう、ドローンの位置を制御してもよい。
【０１３０】
ドローン等を用いる代わりに、位置を自在に移動制御可能なクレーン等に、コード読取装置２を設置し、コード読取装置２の制御部２０４が、このクレーン等を、制御するようにしても良い。
【０１３１】
なお、制御部２０４が、シャッタースピードや、撮影位置等を変更するタイミングやトリガー等は問わない。例えば、制御部２０４は、予め指定された一定または不定のタイミング毎に、上述したようなシャッタースピードの制御を行なうようにしても良い。また、例えば、制御部２０４は、撮影部１０１が撮影画像（例えば、撮影画像のフレーム画像等）を取得した場合に、この撮影画像に応じたシャッタースピードの制御を行なうようにしてもよい。また、制御部２０４は、取得部１０３が撮影画像からコードを検出できなかった場合に、撮影画像に応じて、シャッタースピードを制御するようにしてもよい。例えば、制御部２０４は、撮影画像から取得したパラメータを用いて、シャッタースピードの制御を行なう。
【０１３２】
制御部２０４は、例えば、ＭＰＵやメモリ等から実現され得る。制御部２０４の処理手順は、例えば、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【０１３３】
次に、コード読取装置２の動作の一例について図６のフローチャートを用いて説明する。なお、図において、図２と同一符号は同一または相当する処理ステップを示しており、ここでは詳細な説明は省略する。なお、図２と同一符号の処理ステップにおいて、制御部１０４が行なっていた処理は、ここでは、制御部２０４が行なうものとする。
【０１３４】
（ステップＳ２０７）制御部２０４は、制御部１０４は、ステップＳ１０２で取得したフレーム画像から、シャッタースピードを制御する際に利用されるパラメータを取得する。例えば、制御部１０４は、明度に関するパラメータを取得する。
【０１３５】
（ステップＳ２０８）制御部２０４は、ステップＳ２０７で取得したパラメータが、シャッタースピードを制御するための予め指定された一以上の条件を満たすか否かを判断する。満たす場合、ステップＳ２０９に進み、満たさない場合、ステップＳ１０２に戻る。
【０１３６】
（ステップＳ２０９）制御部２０４は、シャッタースピードを制御する。例えば、制御部２０４は、撮影を行なう際のシャッタースピードの設定を変更する指示を、撮影部１０１に出力する。そして、ステップＳ１０２に戻り、撮影部１０１が、変更されたシャッタースピードで撮影を行なう。
【０１３７】
以下、本実施の形態におけるコード読取装置２の具体的な動作について説明する。なお、以下の具体例において用いる閾値等の値は、説明のための便宜上の値であり、実際のコードの読み取りに必ずしも適したものではない場合がある。
【０１３８】
コード読取装置２を用いてコードの撮影する状況を示す模式図は、図３と同様であるとする。
【０１３９】
撮影部１０１がカラーコードが配置された撮影領域を撮影して撮影画像を取得する処理や、撮影画像からカラーコードを検出し、検出したカラーコードから情報を取得する処理等については、上記実施の形態１の具体例と同様であるため、ここでは詳細な説明は省略する。
【０１４０】
ここで、撮影部１０１が撮影したカラーコードが配置された撮影領域を撮影した撮影画像のフレーム画像において、上記の実施の形態１の具体例と同様に、取得部１０３が、フレーム画像からカラーコードが検出できなかった、あるいはカラーコードから情報が取得できなかったとすると、制御部２０４は、撮影画像であるフレーム画像から、明度に関するパラメータとして、フレーム画像を構成する画素の明度の平均値を取得する。例えば、取得した平均値が、「２０」であったとする。なお、ここでは、フレーム画像の各画素が明度として取り得る値の範囲が、「０」から「２５５」であるとし、値が小さいほど、画素の明度が低い、つまり暗いものとする。
【０１４１】
制御部２０４は、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された第一の閾値以下である、という条件を満たすか否かを判断する。例えば、第一の閾値が、「１００」であったとすると、制御部２０４は、明度の平均値が条件を満たすと判断する。制御部２０４は、上記のように、明度についての第一の条件を満たすと判断したため、撮影部１０１に対して、デフォルトのシャッタースピードである１／１２５秒から一段分だけ遅いシャッタースピードに変更する指示を出力する。具体的には、シャッタースピードを、１段分だけ遅い１／６０秒に設定する指示を出力する。なお、制御部２０４は、単に、シャッタースピードを１段分遅くさせる指示を、撮影部１０１に送信するようにしてもよい。なお、ここでは撮影部１０１に設定可能なシャッタースピードは、複数段のシャッタースピードのいずれかであるとする。この複数段のシャッタースピードにおいては、シャッタースピードを１段分遅くすると、撮影部１０１が受光する光量、例えば、図示しない撮像素子が受光する光量が２倍となるものとする。
【０１４２】
撮影部１０１は、制御部０２４により指示されたシャッタースピードで、撮影対象となるコード２００が配置された領域を撮影する。一段分遅くすることで、露光量を２倍にすることができ、変更前よりも適切に撮影、つまりカラーコードが読み取りやすい画像の撮影を行なうことが可能となる。取得部１０３は、撮影部１０１が撮影したフレーム画像を取得し、取得したフレーム画像においてコードを検出する。コードが検出された場合、上記と同様に、コードに対応づけられた情報を読み出し、出力する。
【０１４３】
ここで、更に、コードが検出できなかった場合、制御部２０４は、フレーム画像から上記と同様に明度に関するパラメータを取得して、このパラメータが予め指定された第一の閾値以下を満たすか否かを判断し、条件を満たす場合には、シャッタースピードを１段分遅くし、条件を満たさない場合には、シャッタースピードを変更せずに、再度フレーム画像からのコード検出や、コードの情報の取得を行なう。
【０１４４】
そして、制御部２０４は、上記と同様の処理を、コードから情報が取得できるまで繰り返す。
【０１４５】
なお、撮影部１０１の撮影開始から、予め指定された時間以上経過した時点で、撮影画像からカラーコードに対応した情報を取得できていない場合、例えば、カラーコードが検出できていない場合や、カラーコードから対応する情報を取得できていない場合、出力部１０５は、モニタ１０５ａに、コードから情報が取得できなかった旨の表示を行ない、コードを読み取る処理を終了する。
【０１４６】
これにより、撮影画像に応じてシャッタースピードを変更して、適切にコードを撮影することが可能となり、コードを適切に読み取ることが可能となる。
【０１４７】
なお、上記においては、フレーム画像からコードが検出できない場合に、シャッタースピードを制御するようにしたが、フレーム画像から検出したコードから、このコードに対応づけた情報が読み出せない場合、例えば、カラーコードを構成する色が判別できない場合等においても、上記と同様にシャッタースピードを変更することができるようにしても良い。
【０１４８】
また、上記において、制御部２０４により、上記で取得した画素の明度の平均値が、第一の閾値以下でないと判断された場合、制御部２０４が、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された第二の閾値以上である、という条件を満たすか否かを判断し、条件を満たすと判断した場合、制御部２０４が、シャッタースピードを１段分速くするようにしても良い
【０１４９】
以上、本実施の形態によれば、撮影画像から取得した情報に応じて、コードを撮影する際のシャッタースピードを変更することができ、コードを適切に読み取ることができるコード読取装置を提供することができる。特に撮影画像に応じてシャッタースピードを制御することで、一般的なカメラのようにきれいな画像を撮影するための制御とは異なり、撮影画像からカラーコードが性格に読み取れるようになるような画像が撮影できるよう、シャッタースピードを制御することができ、精度良くカラーコードを読み取ることが可能となる。
【０１５０】
なお、上記においては、制御部２０４が、撮影部１０１が撮影する際のシャッタースピードを制御するようにしたが、本発明においては、制御部２０４は、撮影部１０１が撮影する際の撮影状況を変更するものであればよい。撮影状況の変更とは、上述したシャッタースピードや、絞りや、受光感度等の変更や、これらの２以上の組合わせの変更である。この場合の撮影状況の変更は、例えば、精度良く情報が読み取り可能となるカラーコードが撮影された撮影画像が得られものとなるようにする撮影状況の変更である。例えば、撮影部１０１が、絞りや受光感度を変更可能なものである場合、シャッタースピードを速くする代わりに、撮影画像に応じて、絞りを絞るようにしてもよく、受光感度を低くするようにしてもよい。その逆についても同様である。
【０１５１】
（実施の形態３）
上記実施の形態１においては、制御部１０４が、照明を制御する場合について説明したが、以下、本実施の形態においては、コード読取装置の制御部が、撮影対象となるコードを表示する装置の制御を行なう場合について説明する。この実施の形態においては、特に、撮影対象となるコードを表示する装置が、コード読取装置の外部に設けられた投影装置である場合を例に挙げて説明する。
【０１５２】
図７は、本実施の形態３におけるコード読取装置３と、投影装置５とを示すブロック図である。
【０１５３】
コード読取装置３は、撮影部３０１、照明部１０２、取得部１０３、制御部３０４、出力部１０５を備える。照明部１０２、取得部１０３、出力部１０５については、上記実施の形態１と同様であるため、ここでは詳細な説明は省略する。また、コードの撮影時に照明が不要である場合、照明部１０２は省略しても良い。
【０１５４】
投影装置５は、投影撮影部５０１と、投影部５０２と、受信部５０３とを有している。
【０１５５】
投影装置５は、一以上のコードを含む領域を撮影して撮影画像を取得し、取得した撮影画像を投影する装置である。投影装置５は、例えば、カメラ等の、投影用の画像を撮影する構成を備えたプロジェクタや、投影用の画像を撮影する構成と接続されたプロジェクタである。
【０１５６】
投影撮影部５０１は、一以上のコードを含む領域を撮影して撮影画像を取得する。投影撮影部５０１の構成は、撮影部１０１と同様であるため、ここでは詳細な説明は省略する。なお、ここでは、投影撮影部５０１が撮影する撮影画像を、撮影部１０１が撮影する撮影画像と区別するために、投影撮影画像と呼ぶ。
【０１５７】
投影部５０２は、投影撮影部５０１が取得した投影撮影画像を投影する。投影部５０２が投影撮影画像を投影する場所は問わない。投影部５０２は、投影する際の光量や、投影する光の色を調節可能なものであることが好ましい。例えば、投影部５０２が、三原色の光を重ねた光を投影に利用するものである場合、この三原色の光の光量を個別に調節することで、照射する光の色を変更可能なものであっても良い。また、色を変更可能なカラーフィルタを介して光を照射することで、照射する光の色を変更可能なものであっても良い。投影部５０２が投影撮影画像を投影する構成は、通常のプロジェクタが画像を投影する構成と同様であるため、ここでは詳細な説明は省略する。
【０１５８】
投影部５０２は、例えば、後述する受信部５０３がコード読取装置３の制御部２０４から受信した投影装置５による画像、即ち投影撮影画像の投影を制御するための制御信号に応じて投影撮影画像を投影する際の制御を行なう。具体的には、投影部５０２は、制御信号に応じて、投影撮影画像を投影した画像である投影画像の調節をおこなう。投影画像の調節とは、例えば、投影する光の光量の増減や、投影する光の色の変更や、投影に用いられる投影撮影画像の色の調節、例えば、彩度や輝度、色調等の調節を行なうこと等である。投影画像の調節は、投影画像を投影する際のパラメータ等を調節することや、投影画像の画質を調節することと考えても良い。例えば、受信部５０３が受信した制御信号が、光量を増加させる指示を含むものである場合、投影部５０２は、投影撮影画像を投影する光量をこの指示に応じて変更する。また、受信した制御信号が、投影画像の色を変更する指示を含むものである場合、投影部５０２は、照射する光の色を変更することで、投影画像の色を変更する。あるいは、投影撮影画像の色を画像処理を行なって制御信号に応じて変更し、変更した投影撮影画像を投影することで、投影画像を変更してもよい。投影撮影画像の色を変更する場合、投影部５０２は、ＭＰＵやＧＰＵ等のプロセッサや、メモリ等を備えていても良く、画像処理専用の回路を備えていても良い。
【０１５９】
受信部５０３は、コード読取装置３の制御部２０４が送信する制御信号を受信する。受信部５０３が受信する制御信号は、投影装置５による画像の投影を制御する信号である。
【０１６０】
撮影部３０１は、投影装置５が投影した画像である投影画像を撮影する。投影画像を撮影するものである点を除けば、撮影部３０１は、撮影部１０１と同様の構成を有している。投影画像は、投影装置５が、一以上のコードを含む領域を撮影して取得した撮影画像を投影した画像である。投影画像がコードを撮影した画像を投影したものであるため、この投影画像を撮影した撮影画像もコードを撮影した画像となる。
【０１６１】
制御部３０４は、撮影部１０１が取得した撮影画像に応じて、投影装置５による画像の投影を制御する。投影装置５による画像の投影とは、投影装置５による、この投影装置５が一以上のコードを含む領域を撮影して取得した撮影画像の投影である。投影を制御するということは、例えば、投影を制御するための制御信号を、投影装置５に送信することである。制御信号の送信は、無線通信により行なわれても良く、有線通信により行なわれても良い。制御部３０４は、例えば、通信を行なうための通信手段を有していてもよい。あるいは制御部３０４は、図示しない送信部等を介して制御信号を投影装置５に送信してもよい。
【０１６２】
制御部３０４は、例えば、上記の実施の形態１において説明したように、取得部１０３が出力する撮影画像からコードを読み取ることができなかったことを示す情報を受け付けた場合、制御部３０４は、投影装置５に画像の投影を制御する制御信号を送信することで、投影装置５が投影する投影画像を撮影した画像からコードが読み取り可能となるよう、投影装置による画像の投影をフィードバック制御するようにしてもよい。例えば、撮影画像からコードが検出されるようになるまで、段階的に投影装置５が投影する光量や光の色を変更する制御信号を投影装置５に送信し、送信を行なう毎に投影画像の撮影を行なうようにしても良い。ここでの光量の変更は、例えば、投影する光量の増加や、減少である。
【０１６３】
また、制御部３０４は、上記実施の形態１において説明したように、撮影画像から一以上のパラメータを取得し、取得したパラメータに応じて、投影装置５による画像の投影を制御するようにしてもよい。制御部３０４が、撮影画像から取得するパラメータは、例えば、実施の形態１において説明した制御部１０４が取得するパラメータと同様のパラメータであり、制御部３０４は、制御部１０４と同様の処理により、一以上のパラメータを取得する。
【０１６４】
制御部３０４は、例えば、一以上のパラメータの値に対応付けられた光量や、色の情報を、図示しない格納部等から取得し、取得した光量や色の光で画像の投影を行なわせるための制御信号を投影装置５に送信する。
【０１６５】
また、制御部３０４は、例えば、撮影画像から取得した一以上のパラメータが予め指定された条件を満たす場合に、投影装置５による画像の投影を制御するようにしても良い。例えば、制御部３０４は、例えば、撮影画像から光量に関するパラメータを取得して、取得したパラメータが予め指定された条件を満たす場合に、投影装置５が画像の投影を行なう際の光量を制御する。予め指定された条件は、上述した実施の形態１の条件と同様の条件が利用可能である。予め指定された条件は、例えば、撮影領域からコードを適切に読み取れないことを判断するための光量に関する条件である。予め指定された条件は、例えば、光量に関するパラメータが第一の閾値以下であるという条件や、第二の閾値以上であるという条件（ただし、第一の閾値は、第二の閾値よりも小さい値であるとする）等である。また、例えば、制御部３０４は、予め指定された条件を満たす場合に、上記実施の形態１において、制御部１０４が照明部１０２に対して行なった制御と同様の制御を、投影装置５に対して行なうようにすればよい。例えば、実施の形態１において、光量に関するパラメータが予め指定された条件を満たすと判断された際に、照明部１０２が行なう照明の光量を増加させる制御を行なったとすると、本実施の形態においては、光の色に関するパラメータが同様の条件を満たすと判断された際には、投影装置５が投影する光量を増加させる制御を行なうようにすればよい。ただし、増加させる光量の大きさ等は異なっていても良い。
【０１６６】
また、制御部３０４は、例えば、パラメータが予め指定された条件を満たさなくなるよう、投影装置５による画像の投影を制御してもよい。例えば、撮影部３０１が撮影する撮影画像が動画像である場合や、撮影部３０１が撮影する撮影画像が静止画像であって、制御部３０４が照明の制御を行なうごとに新たな撮影画像が撮影される場合等においては、撮影画像から取得した光量に関するパラメータが、予め指定された条件を満たさなくなるまで、投影装置５が画像を投影する際の光量をフィードバック制御するようにしても良い。例えば、制御部３０４は、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たす場合に、投影装置５が投影する光の光量を増加させる制御信号を投影装置５に送信する。更に、撮影部３０１が撮影したフレーム画像や静止画像について、再度、光量に関するパラメータを取得し、取得したパラメータの値が条件を満たす場合に、投影装置５が投影する光の光量を増加させる制御信号を送信する処理を、撮影画像から取得した光量に関するパラメータが予め指定された条件を満たさなくなるまで繰り返すようにしてもよい。フィードバック制御については、公知技術であるため、ここでは詳細な説明は省略する。
【０１６７】
なお、制御部３０４は、例えば、光量に関するパラメータの値が示す光量の不足分が大きくなるに従って、連続的または段階的に投影装置５が投影する光の光量が大きくなるよう、投影装置５を制御してもよい。また、制御部３０４は、例えば、光量に関するパラメータの値が示す光量の過剰分が大きくなるに従って、連続的または段階的に投影装置５が投影する光の光量が小さくなるよう、投影装置５を制御してもよい。
【０１６８】
また、制御部３０４が撮影画像から取得するパラメータは、上述したような、光の色に関するパラメータであってもよい。例えば、制御部３０４は、撮影画像から、光の色に関するパラメータを取得し、取得したパラメータに応じて、投影装置５が投影する光の色を制御する。
【０１６９】
制御部３０４は、例えば、撮影画像から光の色に関するパラメータを取得して、取得したパラメータが予め指定された条件を満たす場合に、投影装置５が投影する光の色を制御する。予め指定された条件については、上記実施の形態１における光の色に関するパラメータについての条件と同様の条件が利用可能である。また、例えば、制御部３０４は、予め指定された条件を満たす場合に、上記実施の形態１において、制御部１０４が照明部１０２に対して行なった制御と同様の制御を、投影装置５に対して行なうようにすればよい。例えば、実施の形態１において、光の色に関するパラメータが予め指定された条件を満たすと判断された際に、照明部１０２が行なう照明の特定の色の強度を強くさせる制御を行なったとすると、本実施の形態においては、光の色に関するパラメータが同様の条件を満たすと判断された際には、投影装置５が投影する光の特定の色の強度を強くさせる制御を行なうようにすればよい。ただし、特定の色の強度を強くする程度等は、実施の形態１とは異なっていても良い。
【０１７０】
また、制御部３０４は、例えば、光の色に関するパラメータが予め指定された条件を満たさなくなるよう投影装置５による画像の投影を制御してもよい。例えば、上記と同様に、投影装置５により行なわれる画像の投影、具体的には投影する光の色の変更をフィードバック制御するようにしても良い。
【０１７１】
なお、制御部３０４は、撮影画像から取得した異なる二以上のパラメータを用いて、これらのパラメータの組合わせに応じて、適宜、投影装置５による画像の投影を制御しても良い。
【０１７２】
なお、制御部３０４が、撮影画像から取得した情報に応じて、投影装置５による投影の制御を行なうタイミングやトリガー等は問わない。例えば、制御部３０４は、予め指定された一定または不定のタイミング毎に制御を行なうようにしても良い。また、例えば、制御部３０４は、撮影部１０１が最初に撮影画像（例えば、撮影画像のフレーム画像等）を取得した場合に、撮影画像から取得した情報に応じて制御を行なうようにしてもよい。
【０１７３】
また、制御部３０４は、取得部１０３が撮影画像からコードを検出できなかった場合に、撮影画像から取得した情報に応じて、投影装置５による投影を制御するようにしてもよい。例えば、制御部３０４は、取得部１０３が撮影画像からコードを検出できなかった場合に、撮影画像から取得したパラメータを用いて、投影装置５による投影の制御を行なう。
【０１７４】
次に、コード読取装置３の動作の一例について図８のフローチャートを用いて説明する。なお、図において、図２と同一符号は同一または相当する処理ステップを示しており、ここでは詳細な説明は省略する。なお、図２と同一符号の処理ステップにおいて、制御部１０４が行なっていた処理は、ここでは、制御部３０４が行なうものとする。
【０１７５】
（ステップＳ３０９）制御部３０４は、ステップＳ２０７で取得したパラメータに応じて、投影装置５による画像の投影を制御する。例えば、制御部３０４は、投影装置５に、投影を制御するための制御信号を送信する。そして、ステップＳ１０２に戻る。
【０１７６】
以下、投影装置５の動作の一例について簡単に説明すると、投影撮影部５０１は、コードが配置された領域を撮影して投影撮影画像を取得する。投影部５０２は、投影撮影部５０１が取得した投影撮影画像を順次切り替えて表示する。受信部５０３は、コード読取装置３から送信される制御信号を受信する。投影部５０１は、受信部５０３が受信した制御信号に応じて、投影撮影画像の投影を制御する。例えば、投影する光量を、制御信号に応じて変更したり、投影する光の色を、制御信号に応じて変更する。
【０１７７】
以下、本実施の形態の具体例について説明する。
【０１７８】
図９は、投影装置５が投影している投影画像を、コード読取装置３で撮影している状況を示す模式図である。
【０１７９】
投影装置５の投影撮影部３０１は、カラーコード２００が配置されている領域を撮影して、投影撮影画像を取得する。ここで取得する投影撮影画像は動画像であるとする。投影装置５の投影部３０２は、例えば、投影撮影部３０１が撮影した投影撮影画像を、図示しない壁やスクリーンに投影する。この投影により、投影画像５０が壁やスクリーン等に表示される。ここでは、投影部３０２は、予めデフォルトで指定された光量で投影を行なうものとする。
【０１８０】
ユーザが、投影画像５０を、コード読取装置３の撮影部３０１で撮影すると、撮影部３０１が動画像である撮影画像を取得する。
【０１８１】
撮影部１０１が取得した撮影画像からカラーコードを検出し、検出したカラーコードから情報を取得する処理等については、上記実施の形態１の具体例と同様であるため、ここでは詳細な説明は省略する。
【０１８２】
ここで、撮影部１０１が撮影したカラーコードが配置された撮影領域を撮影した撮影画像のフレーム画像において、上記の実施の形態１の具体例と同様に、取得部１０３がカラーコードを検出できなかった、あるいはカラーコードから情報が取得できなかったとすると、制御部３０４は、撮影画像であるフレーム画像から、光量に関するパラメータとして、フレーム画像を構成する画素の明度の平均値を取得する。
【０１８３】
制御部３０４は、実施の形態１の具体例と同様に、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された第一の閾値以下である、という条件を満たすか否かを判断する。ここでは、制御部３０４は、明度の平均値が条件を満たすと判断したとする。
【０１８４】
また、制御部３０４は、実施の形態１の具体例と同様に、フレーム画像から、光の色に関するパラメータとして、フレーム画像を構成する全画素のそれぞれについて色相の値を取得する。そして制御部３０４は、実施の形態１の具体例と同様の処理により、取得した色に関するパラメータが、光の色についての条件を満たすか否かを判断する。ここでは、制御部３０４は、色に関するパラメータが条件を満たすと判断したとする。
【０１８５】
制御部３０４は、上記のように、光量についての条件を満たすと判断したため、ここでは、投影装置５に対して、投影に利用する光量を予め指定された値だけ増加させることを決定する。
【０１８６】
また、制御部３０４は、上述したように光の色についての条件を満たすと判断したため、統制装置５に対して、上記で取得した色相の範囲に対応した色の光で投影を行なうことを決定する。ここでの対応した色の決定は、上記実施の形態１の具体例における照明の色の決定と同様におこなわれるものとする。
【０１８７】
そして、制御部３０４は、上記の決定に従って、光量を予め指定された値だけ増加させるための制御信号と、上記で決定した色の光で投影を行なわせるための制御信号とを、無線通信により、投影装置５に送信する。
【０１８８】
投影装置５の受信部５０３が、コード読取装置３の制御部３０４から送信された制御信号を受信すると、投影部５０２は、受信した制御信号に応じて、投影する光を制御する。具体的には、光量を予め指定された値だけ増加させるための制御信号に応じて、投影する光量を増加させ、上記で決定した色の光で投影を行なわせるための制御信号に応じて、投影する光の色を変化させる。このようにして変更された光で、投影撮影部５０１が撮影した画像が新たに投影される。
【０１８９】
ここで、更に、この変更された光で投影された投影画像を、撮影部３０１で撮影した撮影画像からコードが検出できなかった場合、制御部３０４は、フレーム画像から上記と同様に光量に関するパラメータや色に関するパラメータを取得して、これらのパラメータがそれぞれに対して予め容易された条件を満たすか否かを判断し、投影装置５による投影を制御し、条件を満たさない場合には、投影装置５による投影を制御せずに、再度フレーム画像からのコード検出や、コードの情報の取得を行なう。
【０１９０】
そして、制御部３０４は、上記と同様の処理を、コードから情報が取得できるまで繰り返す。
【０１９１】
なお、撮影部１０１の撮影開始から、予め指定された時間以上経過した時点で、撮影画像からカラーコードに対応した情報を取得できていない場合、例えば、カラーコードが検出できていない場合や、カラーコードから対応する情報を取得できていない場合、出力部１０５は、モニタ１０５ａに、コードから情報が取得できなかった旨の表示を行ない、コードを読み取る処理を終了する。
【０１９２】
これにより、撮影画像に応じて投影装置５による投影を制御して、適切にコードを撮影することが可能となり、コードを適切に読み取ることが可能となる。
【０１９３】
また、上記において、制御部３０４により、上記で取得した画素の明度の平均値が、第一の閾値以下でないと判断された場合、制御部３０４が、上記で取得した画素の明度の平均値が、明度の平均値について予め指定された第二の閾値以上である、という条件を満たすか否かを判断し、条件を満たすと判断した場合、制御部２０４が、投影装置５が投影する際の光量を減少させても良い。
【０１９４】
以上、本実施の形態によれば、撮影画像から取得した情報に応じて、投影装置によるコードを撮影した画像の投影を制御することができ、コードを適切に読み取ることができるコード読取装置を提供することができる。
【０１９５】
なお、上記各実施の形態においては、制御部が、照明や、シャッタースピード等の撮影状況、投影装置を制御する場合について説明したが、本発明においては、制御部は、撮影画像を取得するための環境を制御するものであればよい。撮影画像を取得するための環境の制御とは、例えば、撮影時のコード読取装置の内部環境の制御であっても良く、外部環境の制御であっても良い。撮影画像を取得するための環境の制御は、例えば、撮影時の撮影部の設定の制御や、上述したような照明の制御や、撮影対象のコードの表示の制御等やこれらの２以上の組合わせである。撮影部の設定の制御とは、具体的には上述したようなシャッタースピードや、絞りや、感度等の設定の制御の１以上である。撮影対象のコードの表示の制御は、例えば、撮影対象のコードを表示する装置等の制御であり、具体的には、上述したような投影装置の制御である。
【０１９６】
なお、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０１９７】
また、上記各実施の形態では、コード読取装置がスタンドアロンである場合について説明したが、コード読取装置は、スタンドアロンの装置であってもよく、サーバ・クライアントシステムにおけるサーバ装置であってもよい。後者の場合には、撮影部１０１は、通信回線を介して撮影画像の入力を受け付けたり、照明部１０２は、通信回線を介して撮影領域を照明するための情報を送信したりすることになる。
【０１９８】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、格納部（例えば、ハードディスクやメモリ等の記録媒体）にアクセスしながらプログラムを実行してもよい。
【０１９９】
なお、上記各実施の形態におけるコード読取装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、一以上のコードを含む領域を撮影して撮影画像を取得する撮影部と、撮影画像内において一以上のコードを検出し、検出した一以上のコードから、コードに対応づけられた情報を取得する取得部と、取得部が取得した情報を出力する出力部と、撮影画像に応じて、撮影画像を取得するための環境を制御する制御部として機能させるためのプログラムである。
【０２００】
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
【０２０１】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【０２０２】
図４は、上記プログラムを実行して、上記実施の形態によるカラーコード読取装置を実現するコンピュータシステム９００の一例を示す図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
【０２０３】
図４において、コンピュータシステム９００は、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１と、ブートアッププログラム等のプログラムや、アプリケーションプログラム、システムプログラム、及びデータが記憶されるフラッシュメモリ等のＲＯＭ９１２と、ＭＰＵ９１１に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するＲＡＭ９１３と、タッチパネル９１４と、無線通信モジュール９１５と、ＭＰＵ９１１、ＲＯＭ９１２等を相互に接続するバス９１６とを備える。なお、無線通信モジュール９１５に代えて、有線通信モジュールを備えていてもよい。また、タッチパネル９１４に代えて、ディスプレイと、マウスやキーボード等の入力デバイスとを備えていてもよい。
【０２０４】
コンピュータシステム９００に、上記実施の形態によるカラーコード読取装置の機能を実行させるプログラムは、無線通信モジュール９１５を介してＲＯＭ９１２に記憶されてもよい。プログラムは実行の際にＲＡＭ９１３にロードされる。なお、プログラムは、ネットワークから直接、ロードされてもよい。
【０２０５】
プログラムは、コンピュータシステム９００に、上記実施の形態によるカラーコード読取装置の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム９００がどのように動作するのかについては周知であり、詳細な説明は省略する。
【０２０６】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０２０７】
以上のように、本発明にかかるコード読取装置等は、コードを読み取る装置等として適しており、特に、照明を備えたコード読取装置等として有用である。
【符号の説明】
【０２０８】
１，２，３  コード読取装置
５  投影装置
１０１，３０１  撮影部
１０２  照明部
１０３  取得部
１０４，２０４，３０４  制御部
１０５  出力部
１０５ａ  モニタ
２００  コード
【図１】
0006523908.tif 000002
【図２】
0006523908.tif 000003
【図３】
0006523908.tif 000004
【図４】
0006523908.tif 000005
【図５】
0006523908.tif 000006
【図６】
0006523908.tif 000007
【図７】
0006523908.tif 000008
【図８】
0006523908.tif 000009
【図９】
0006523908.tif 000010