(57)【特許請求の範囲】
【請求項１】
一次元パターンのシンボル画像であって、重力方向に対して所定角度で配置されたシンボル画像を撮影して、その撮影されたシンボル画像の読取走査を行う携帯端末装置であって、
前記重力方向に対する当該装置の傾きを検出する検出手段と、
前記検出手段で検出された当該装置の傾きに基づいて前記シンボル画像に対する当該装置の相対角度を取得することで前記シンボル画像の一次元パターンの各バーを横切る走査の読取走査方向あるいは読取走査位置を特定する特定手段と、
前記特定手段で特定された前記読取走査方向あるいは前記読取走査位置で、前記シンボル画像の読み取りを行う制御手段と、
を具備したことを特徴とする携帯端末装置。
【請求項２】
前記特定手段は、前記シンボル画像の中心を通る前記読取走査方向あるいは前記読取走査位置を特定する、
ことを特徴とする請求項１に記載の携帯端末装置。
【請求項３】
前記特定手段は、前記読取走査位置として前記シンボル画像を読み取る際の読取開始位置を特定し、
前記制御手段は、前記読取開始位置から前記シンボル画像の読み取りを開始制御する、
ことを特徴とする請求項１又は２に記載の携帯端末装置。
【請求項４】
前記制御手段で読取走査されたシンボル画像のデコード処理で、そのデコード処理が成功したか否かを判別する判別手段と、を更に具備し、
前記制御手段は、前記判別手段で前記デコード処理が失敗した場合には、前記特定手段で特定された読取走査位置を、前記画像内の他の位置に変更して、その変更された新たな読取走査位置で前記シンボル画像の読取走査を再度行う、
ことを特徴とする請求項１〜３の何れかに記載の携帯端末装置。
【請求項５】
前記制御手段は、前記特定手段で特定された読取走査位置を、前記シンボル画像内の他の位置に所定方向で順次移動し、その順次移動された新たな読取走査位置毎に、前記シンボル画像の読取操作を繰り返し行う、
ことを特徴とする請求項１〜３の何れかに記載の携帯端末装置。
【請求項６】
前記制御手段は、前記読取走査位置を順次移動では、前記シンボル画像内のシンボルが検出されなくなるまで移動を行う、
ことを特徴とする請求項５に記載の携帯端末装置。
【請求項７】
表示画面を更に備え、
前記制御手段は、前記シンボル画像の読取結果を前記表示画面に表示する、
ことを特徴とする請求項１〜６の何れかに記載の携帯端末装置。
【請求項８】
一次元パターンのシンボル画像であって、重力方向に対して所定角度で配置されたシンボル画像を撮影して、その撮影されたシンボル画像の読取走査を行う携帯端末装置のコンピュータを制御するためのプログラムであって、
前記コンピュータを、
前記重力方向に対する当該装置の傾きを検出する検出手段、
前記検出手段で検出された当該装置の傾きに基づいて前記シンボル画像に対する当該装置の相対角度を取得することで前記シンボル画像の一次元パターンの各バーを横切る走査の読取走査方向あるいは読取走査位置を特定する特定手段、
前記特定手段で特定された前記読取走査方向あるいは前記読取走査位置で、前記シンボル画像の読み取りを行う制御手段、
として機能させるようにしたコンピュータ読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯端末装置及びプログラムに関する。
【背景技術】
【０００２】
従来、商品等に付されたシンボル（バーコード）を読み取るシンボル読取装置（バーコード読取装置（スキャナ））が知られている。バーコード読取装置を含む機器としては、スーパーマーケット、コンビニエンスストア、個人商店、倉庫等において使用され、バーコード読取機能を有するハンディターミナル等の機器が知られている。
【０００３】
バーコード読取装置は、レーザスキャナと、イメージセンサを用いたスキャナと、がある。レーザスキャナは、バーコード（一次元バーコード）に向けて各バーを横切るようにレーザ光を照射し、そのレーザ光の反射光を受光して光電変換し、得られた電気信号をデコードエンジン（デコーダ）で解析することにより、バーコードに含まれるバーコード情報を取得する。また、イメージセンサを用いたスキャナは、ＣＣＤ（Charge-Coupled  Device）やＣＭＯＳ（Complementary Metal-Oxide Semiconductor）等のイメージセンサを備える。イメージセンサを用いたスキャナ（ＣＣＤ／ＣＭＯＳスキャナ）は、イメージセンサで一次元バーコード又は二次元コードを撮影し、撮影画像データを画像解析することにより、バーコード情報を取得する。
【０００４】
レーザスキャナや、一次元ＣＣＤ／ＣＭＯＳスキャナでは、レーザ光の受光センサ又はイメージセンサの画像データから得られる解析対象のデータが一次元データである。このため、レーザスキャナ又は一次元ＣＣＤ／ＣＭＯＳスキャナは、解析対象のデータの情報量が少なく、ＣＰＵ（Central Processing Unit）等の装置のスペックが低くても、高速にデコード処理等の処理を行うことができるというメリットがあった。
【０００５】
二次元ＣＣＤ／ＣＭＯＳスキャナ（イメージスキャナ）は、イメージセンサから得られる解析対象のデータが二次元データ（画像データ）である。イメージスキャナは、読み取り方向を二次元コードの向きに合せなくてもよいというメリットがあった。
【０００６】
また、レーザ光による読取部とジャイロセンサとを備え、当該ジャイロセンサにより検出された移動状態に基づいて、読取部から得られたバーコードイメージデータを、基準位置からのバーコードイメージデータに補正し、補正されたバーコードイメージデータを合成してデコードするレーザスキャナが知られている（例えば、特許文献１参照）。
【０００７】
また、レーザ光による読取部とジャイロセンサとを備え、当該ジャイロセンサにより検出された移動状態に基づいて、読取部の移動量を算出し、当該読取部の移動の前後のバーコードデータを合成してデコードするレーザスキャナが知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２４２８２８号公報
【特許文献２】特開２００８−２４２８２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、従来のレーザスキャナ又は一次元ＣＣＤ／ＣＭＯＳスキャナでは、読み取り方向を一次元バーコードの向きに合せなくてはならなかった。多くのレーザスキャナ又は一次元ＣＣＤ／ＣＭＯＳスキャナからは、レーザ光やエイマー光が照射される。操作者は、これらの光が一次元バーコードの端から端までを含むように、装置を持つ方向を調整せねばならなかった。このため、装置の操作性を高める要請があった。
【００１０】
また、従来のイメージスキャナでは、一次元バーコードを読み取る場合に、二次元の画像データから一次元バーコードのイメージを抽出し、読み取り方向等の判定を行っていた。このため、実用的な読み取りスピードを確保するために、イメージスキャナを搭載する機器に、高いスペックのＣＰＵやメモリを搭載しなければならなかった。また、低スペックな機器に搭載可能なスキャナとして、デコードエンジンを専用のハードウェアに組み込んだイメージスキャナも登場しているが、非常に高価であった。
【００１１】
本発明の課題は、シンボル画像の読み取りにおける操作性を高めるとともに、シンボル画像の画像解析の処理負担を低減することである。
【課題を解決するための手段】
【００１２】
請求項１は、一次元パターンのシンボル画像であって、重力方向に対して所定角度で配置されたシンボル画像を撮影して、その撮影されたシンボル画像の読取走査を行う携帯端末装置であって、前記重力方向に対する当該装置の傾きを検出する検出手段と、前記検出手段で検出された当該装置の傾きに基づいて前記シンボル画像に対する当該装置の相対角度を取得することで前記シンボル画像の一次元パターンの各バーを横切る走査の読取走査方向あるいは読取走査位置を特定する特定手段と、前記特定手段で特定された前記読取走査方向あるいは前記読取走査位置で、前記シンボル画像の読み取りを行う制御手段と、を具備したことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、シンボル画像の読み取りにおける操作性を高めるとともに、シンボル画像の画像解析の処理負担を低減することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明に係る第１の実施の形態のハンディターミナルの外観構成を示す斜視図である。
【図２】ハンディターミナルによる一次元バーコードの読み取りを示す図である。
【図３】ハンディターミナルの機能構成を示すブロック図である。
【図４】傾きセンサが検出する傾きを示す図である。
【図５】イメージセンサが撮影した画像データの画像を示す。
【図６】シンボルスキャン処理を示すフローチャートである。
【図７】シンボルスキャン処理における走査方向・走査開始位置決定処理を示すフローチャートである。
【図８】シンボルスキャン処理における第１のデコード処理を示すフローチャートである。
【図９】｜Ｒ｜≦arctan（Ｈ／Ｗ）の場合の画像データの画像を示す図である。
【図１０】arctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ））の場合の画像データの画像を示す図である。
【図１１】−（１８０度−arctan（Ｈ／Ｗ））＜Ｒ＜−arctan（Ｈ／Ｗ）場合の画像データの画像を示す図である。
【図１２】｜Ｒ｜≧arctan（Ｈ／Ｗ）の場合の画像データの画像を示す図である。
【図１３】一次元バーコードを撮影した画像データの画像における走査開始位置の移動の一例を示す図である。
【図１４】スタック型二次元コードの例を示す図である。
【図１５】バーパターンテーブルの構成を示す図である。
【図１６】第２のデコード処理を示すフローチャートである。
【図１７】第２のデコード処理におけるスタック型コードデコード処理を示すフローチャートである。
【図１８】第２のデコード処理におけるスタック型コードデコード処理を示すフローチャートである。
【図１９】スタック型二次元コードを撮影した画像データの画像における走査開始位置の移動の一例を示す図である。
【図２０】スタック型二次元コードにおける検出開始位置の移動の一例を示す図である。
【発明を実施するための形態】
【００２０】
以下、添付図面を参照して本発明に係る第１、第２の実施の形態を順に詳細に説明する。なお、本発明は、図示例に限定されるものではない。
【００２１】
（第１の実施の形態）
図１〜図１３を参照して、本発明に係る第１の実施の形態を説明する。本実施の形態は、シンボルとして、１つの一次元バーパターンからなる一次元バーコードを読み取る構成である。先ず、図１〜図３を参照して、本実施の形態の装置構成を説明する。図１に、本実施の形態のハンディターミナル１の外観構成を示す。図２に、ハンディターミナル１によるバーコード５Ｂの読み取りを示す。
【００２２】
本実施の形態のハンディターミナル１は、コンビニエンスストア、スーパーマーケット等の小売業の店舗等において使用され、商品等に付されたバーコードを読み取る機能を有する携帯端末である。
【００２３】
図１に示すように、本実施の形態のハンディターミナル１は、ケース２と、トリガキー１２Ａと、各種キー１２Ｂと、表示部１４と、イメージセンサ１６と、を備える。
【００２４】
ケース２は、ハンディターミナル１の本体ケースであり、（略）直方体の形状を有する。ケース２の正面の長方形を正面２Ａとする。正面２Ａの長方形の短手方向に平行な所定の軸を（横）軸ａとし、同じく長手方向に平行な所定の軸を（縦）軸ｂとする。
【００２５】
トリガキー１２Ａは、ケース２の正面２Ａに設けられ、イメージセンサ１６によるバーコードのスキャン実行のためのトリガキーである。各種キー１２Ｂは、ケース２の正面２Ａに設けられ、文字、数字等の入力キーや、各種機能キー等を含む。表示部１４は、各種表示情報を表示する。
【００２６】
イメージセンサ１６は、ケース２の縦軸ｂ方向の先端側の側面に設けられ、バーコードを撮影して画像データ（イメージデータ）を取得するセンサである。イメージセンサ１６の画像撮影の方向は、縦軸ｂの正方向であるものとする。
【００２７】
図２に示すように、商品棚３に商品４Ａ，４Ｂが陳列されている店舗においてハンディターミナル１を使用する例を説明する。一次元バーコードであるバーコード５Ａ，５Ｂは、それぞれ、商品４Ａ，４Ｂに対応する。商品棚３には、商品４Ａ，４Ｂが陳列されている場所に対応して、バーコード５Ａ，５Ｂが貼り付けられている。そして、バーコード５Ａ，５Ｂは、一次元バーパターンの長手方向（延在方向、一次元バーパターンの各バーを横切る方向）が重力方向に対して垂直な方向（水平面上の一方向）になるよう配置されて、商品棚３に貼り付けられている。
【００２８】
ハンディターミナル１によりバーコード５Ｂを読み取る場合に、ハンディターミナル１は、横軸ａがバーコード５Ｂの平面に平行にされ、縦軸ｂがバーコード５Ｂの平面に垂直にされた姿勢にされる。この姿勢で、トリガキー１２Ａがユーザにより押下されることで、イメージセンサ１６によりバーコード５Ｂが撮影される。
【００２９】
次いで、図３を参照して、ハンディターミナル１の内部の機能構成を説明する。図３に、ハンディターミナル１の機能構成を示す。
【００３０】
ハンディターミナル１は、制御部としてのＣＰＵ１１と、操作部１２と、ＲＡＭ（Random Access Memory）１３と、表示部１４と、ＲＯＭ（Read Only Memory）１５と、イメージセンサ１６と、フラッシュメモリ１７と、傾きセンサ１８と、Ｉ／Ｆ（InterFace）部１９と、電源部２０と、を備え、各部がバス２１を介して接続されている。
【００３１】
ＣＰＵ１１は、ハンディターミナル１の各部を制御する。ＣＰＵ１１は、ＲＯＭ１５に記憶されているシステムプログラム及びアプリケーションプログラムのうち、指定されたプログラムを読み出してＲＡＭ１３に展開し、ＲＡＭ１３に展開されたプログラムとの協働で、各種処理を実行する。
【００３２】
ＣＰＵ１１は、シンボルスキャンプログラム１５１に従い、イメージセンサ１６により、一次元バーパターンを有するシンボルとしての一次元バーコードを撮影して画像データを取得する。そして、ＣＰＵ１１は、傾きセンサ１８により検出されたハンディターミナル１の傾きデータに基づいて、一次元バーコードの走査方向及び走査開始位置を算出する。そして、ＣＰＵ１１は、イメージセンサ１６により取得された画像データの画像に対して、前記算出した走査開始位置から前記算出した走査方向へ走査を行い、当該走査により得られたバーパターンをデコードする。
【００３３】
操作部１２は、トリガキー１２Ａ、各種キー１２Ｂを含むキーパッドを備える。操作部１２は、キーパッドの各キーの操作入力を受け付け、操作入力に応じた操作情報をＣＰＵ１１に出力する。
【００３４】
ＲＡＭ１３は、情報を一時的に記憶する揮発性のメモリである。ＲＡＭ１３は、各種データ及びプログラムを格納するワークエリアを有する。ＲＡＭ１３には、イメージセンサ１６から入力された画像データが格納される。
【００３５】
表示部１４は、ＬＣＤ（Liquid Crystal Display）、ＥＬＤ（Electro-Luminescent Display）等により構成される。表示部１４は、ＣＰＵ１１から入力される表示情報に応じて各種表示を行う。
【００３６】
ＲＯＭ１５は、読み出し専用の情報を記憶しているメモリである。ＲＯＭ１５には、シンボルスキャンプログラム１５１が記憶されている。
【００３７】
イメージセンサ１６は、シンボルを読み取るスキャナ部として、ＣＣＤ、ＣＭＯＳ等の撮像素子で構成されている。イメージセンサ１６は、ＣＰＵ１１の制御に従い、被写体としてのシンボルを撮影して画像データ（二次元データ）を生成し、その画像データをＲＡＭ１３に出力する。
【００３８】
また、イメージセンサ１６は、エイマー光出射部を備える。イメージセンサ１６は、シンボル撮影の際に、エイマー光出射部からエイマー光を出射する。エイマー光は、ユーザに対して、シンボルの読み取り可能な範囲を示す照準光である。
【００３９】
フラッシュメモリ１７は、情報を読み書き自在に記憶する半導体メモリである。
【００４０】
傾きセンサ１８は、三次元加速度センサ等により構成される。傾きセンサ１８は、重力方向を検出し、この重力方向に対するハンディターミナル１（ケース２）の傾きを検出し、検出した傾きの傾きデータをＣＰＵ１１に出力する。
【００４１】
Ｉ／Ｆ部１９は、所定機器と接続可能であり、接続された機器との通信を仲介する接続部である。Ｉ／Ｆ部１９は、例えば、ハンディターミナル１が載置されるクレードルに接続され、このクレードルを介して管理サーバ等の機器に通信接続される。
【００４２】
電源部２０は、ハンディターミナル１の各部に電源を供給する電源である。電源部２０は、例えば、リチウム電池等の二次電池である。
【００４３】
ここで、図４を参照して、傾きセンサ１８の検出する傾きを説明する。図４に、傾きセンサ１８が検出する傾きを示す。
【００４４】
図４に示すように、傾きセンサ１８は、重力方向に対するハンディターミナル１のケース２の傾きを検出する機能を有する。また、正面２Ａを鉛直上方向に向けた状態におけるハンディターミナル１の姿勢を基本姿勢とする。傾きセンサ１８が出力する基本姿勢の傾きデータは、横軸ａを中心とした周方向に０度回転し、縦軸ｂを中心とした周方向に０度回転したデータとする。他の姿勢の傾きデータは、基本姿勢から横軸ａ，縦軸ｂをそれぞれ中心として回転した角度の差のデータとして表される。
【００４５】
傾きデータの横軸ａを中心とした周方向の角度の値の範囲は、−１８０度（正面２Ａを重力方向に向けた姿勢（下回転））〜０度（基本姿勢）〜＋１８０度（正面２Ａを重力方向に向けた姿勢（上回転））である。但し、−１８０度は、＋１８０度に含められる。縦軸ｂは、例えば、イメージセンサ１６の撮影画像の中心点に対応する位置にとられる。
【００４６】
傾きデータの縦軸ｂを中心とした周方向の角度の値の範囲は、−１８０度（正面２Ａを重力方向に向けた姿勢（右回転））〜０度（基本姿勢）〜＋１８０度（正面２Ａを重力方向に向けた姿勢（左回転））である。但し、縦軸ｂを中心とした周方向の角度を回転角度Ｒ［度］（Ｒ：変数）とすると、−１８０［度］＜Ｒ≦１８０［度］である。
【００４７】
ハンディターミナル１は、ユーザにより、横軸ａを中心として回転されず、縦軸ｂの正方向が常にシンボル（一次元バーコード）の平面を向き、縦軸ｂを中心とした周方向に回転されるものとする。このため、傾きセンサ１８が出力する傾きデータのうち、傾きデータの横軸ａを中心とした周方向の角度の値のみが、一次元バーコードの読み取りに使用される。
【００４８】
また、図５を参照して、イメージセンサ１６の撮影する画像データを説明する。図５に、イメージセンサ１６が撮影した画像データの画像Ｆ０を示す。
【００４９】
図５に示すように、イメージセンサ１６が撮影する画像データの画像Ｆ０は、横Ｗピクセル、縦Ｈピクセル（Ｗ，Ｈ；正の整数）のグレースケールビットマップデータとする。この画像Ｆ０は、例えば、Ｗ＝６４０、Ｈ＝４８０のＶＧＡ（Video Graphics Array）のサイズであるものとするが、このサイズに限定されるものではない。また、画像Ｆ０の横方向（Ｗピクセル）は、横軸ａの方向に対応している。画像Ｆ０の縦方向（Ｈピクセル）は、横軸ａ及び縦軸ｂに垂直な方向に対応している。さらに、撮影対象の一次元バーコードは、その長手方向（延在方向）が重力方向に垂直な方向になるように、商品、商品棚等に付されているものとする。
【００５０】
図５には、正面２Ａの縦軸ｂの周方向の回転角度がＲ度となるように、ハンディターミナル１が傾けられた姿勢が示されている。このハンディターミナル１の姿勢において、イメージセンサ１６により一次元バーコードが撮影され、画像Ｆ０の画像データが得られる。
【００５１】
次に、図６〜図１３を参照して、ハンディターミナル１の動作を説明する。図６に、シンボルスキャン処理を示す。図７に、シンボルスキャン処理における走査方向・走査開始位置決定処理を示す。図８に、シンボルスキャン処理における第１のデコード処理を示す。図９に、｜Ｒ｜≦arctan（Ｈ／Ｗ）の場合の画像データの画像Ｆ１を示す。図１０に、arctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ））の場合の画像データの画像Ｆ２を示す。図１１に、−（１８０度−arctan（Ｈ／Ｗ））＜Ｒ＜−arctan（Ｈ／Ｗ）の場合の画像データの画像Ｆ３を示す。図１２に、｜Ｒ｜≧arctan（Ｈ／Ｗ）の場合の画像データの画像Ｆ４を示す。図１３に、一次元バーコードを撮影した画像データの画像Ｆ５における走査開始位置の移動の一例を示す。
【００５２】
先ず、図６を参照して、シンボルスキャン処理を説明する。シンボルスキャン処理は、ハンディターミナル１が、シンボルとしての一次元バーコードを撮影し、撮影時の傾きデータを用いて、撮影した画像データをデコードする処理である。
【００５３】
予め、操作部１２を介するユーザからの操作入力に応じて、ハンディターミナル１がシンボルスキャンモードに設定されているものとする。シンボルスキャンモードは、イメージセンサ１６からエイマー光が出射され、トリガキー１２Ａの押下に応じてシンボル読み取りを開始するモードである。そして、読取対象のシンボルとしての一次元バーコードに照準が合せられるよう、ハンディターミナル１がユーザにより動かされているものとする。
【００５４】
ハンディターミナル１において、例えば、ユーザからトリガキー１２Ａの押下入力がなされたことをトリガとして、ＲＯＭ１５から読み出されて適宜ＲＡＭ１３に展開されたシンボルスキャンプログラム１５１と、ＣＰＵ１１との協働により、シンボルスキャン処理が実行される。
【００５５】
先ず、イメージセンサ１６によりシンボルとしての一次元バーコードが撮影されて画像データが取得される（ステップＳ１）。そして、ステップＳ１で取得された画像データがＲＡＭ１３に格納される（ステップＳ２）。そして、傾きセンサ１８により、ハンディターミナル１の傾きが検出され、その検出されたデータが傾きデータとして取得される（ステップＳ３）。
【００５６】
そして、走査方向・走査開始位置決定処理が実行される（ステップＳ４）。ステップＳ４の走査方向・走査開始位置決定処理は、一次元バーコードを走査するために必要な走査方向及び走査開始位置を決定する処理であり、詳細に後述される。そして、第１のデコード処理が実行される（ステップＳ５）。ステップＳ５の第１のデコード処理は、一次元バーコードの走査及びデコードをする処理であり、詳細に後述される。
【００５７】
そして、ステップＳ５の第１のデコード処理のデコードが成功したか否かが判別される（ステップＳ６）。デコードが成功していない場合（ステップＳ６；ＮＯ）、ステップＳ１に移行される。デコードが成功した場合（ステップＳ６；ＹＥＳ）、ステップＳ５のデコード処理のデコード結果が表示部１４に表示される（ステップＳ７）。そして、シンボルスキャン処理が終了する。デコード結果とは、デコード成功の旨と、デコードにより得られたバーコード情報と、である。
【００５８】
ここで、図７、図９〜図１２を参照して、ステップＳ４の走査方向・走査開始位置決定処理を説明する。図７に示すように、先ず、変数Ｗに、ステップＳ１で取得された画像データの横幅のピクセル数が代入され、変数Ｈに、ステップＳ１で取得された画像データの縦幅のピクセル数が代入される（ステップＳ４１）。
【００５９】
そして、ステップＳ３で取得された傾きデータに基づいて、変数Ｒに、ハンディターミナル１の縦軸ｂを中心とした横回転の角度の値［度］が代入される（ステップＳ４２）。そして、変数Ｒについて、｜Ｒ｜≦arctan（Ｈ／Ｗ）を満たすか否かが判別される（ステップＳ４３）。但し、０＜arctan（Ｈ／Ｗ）＜９０度とする。
【００６０】
変数Ｒが｜Ｒ｜≦arctan（Ｈ／Ｗ）を満たす場合（ステップＳ４３；ＹＥＳ）、変数Ｘに０が代入され、変数Ｙに、Ｈ／２＋Ｗ＊（tan（−Ｒ））／２の値が代入される（ステップＳ４４）。変数Ｒが｜Ｒ｜≦arctan（Ｈ／Ｗ）を満たさない場合（ステップＳ４３；ＮＯ）、変数Ｒがarctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ））を満たすか否かが判別される（ステップＳ４５）。
【００６１】
変数Ｒがarctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ））を満たす場合（ステップＳ４５；ＹＥＳ）、変数Ｘに、Ｗ／２＋Ｈ／（２＊tan（−Ｒ））の値が代入され、変数Ｙに０が代入される（ステップＳ４６）。変数Ｒがarctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ））を満たさない場合（ステップＳ４５；ＮＯ）、変数Ｒが−（１８０度−arctan（Ｈ／Ｗ））＜Ｒ＜−arctan（Ｈ／Ｗ）を満たすか否かが判別される（ステップＳ４７）。
【００６２】
変数Ｒが−（１８０度−arctan（Ｈ／Ｗ））＜Ｒ＜−arctan（Ｈ／Ｗ）を満たす場合（ステップＳ４７；ＹＥＳ）、変数Ｘに、Ｗ／２＋Ｈ／（２＊tanＲ）の値が代入され、変数ＹにＨの値が代入される（ステップＳ４８）。変数Ｒが−（１８０度−arctan（Ｈ／Ｗ））＜Ｒ＜−arctan（Ｈ／Ｗ）を満たさない場合（ステップＳ４７；ＮＯ）、変数Ｒが｜Ｒ｜≧（１８０度−arctan（Ｈ／Ｗ））を満たし、変数ＸにＷの値が代入され、変数Ｘに、Ｈ／２＋Ｗ＊（tanＲ）／２の値が代入される（ステップＳ４９）。
【００６３】
そして、走査開始位置が、ステップＳ４４、Ｓ４６、Ｓ４８又はＳ４９で設定されたＸ，Ｙを用いた座標（Ｘ，Ｙ）に設定され、走査方向が、−Ｒ度に設定される（ステップＳ５０）。そして、走査方向・走査開始位置決定処理が終了する。
【００６４】
走査開始位置の座標（Ｘ，Ｙ）は、撮影された画像データの画像の左上の端点を原点（０，０）とした平面座標である。走査開始位置とは、画像中の最初のデコード対象のラインの走査開始位置である。走査方向とは、画像中のデコード対象のラインの走査方向である。
【００６５】
図９に示すように、｜Ｒ｜≦arctan（Ｈ／Ｗ）を満たす回転角度Ｒで撮影された画像データの画像Ｆ１において、ステップＳ４４に対応する走査開始位置の座標（Ｘ，Ｙ）は、画像Ｆ１の左辺上の点となる。画像Ｆ１において、座標（Ｘ，Ｙ）からステップＳ５０における走査方向（−Ｒ）に走査すると、走査上の点が画像Ｆ１の中心座標（Ｗ／２，Ｈ／２）を通る。
【００６６】
図１０に示すように、arctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ））を満たす回転角度Ｒで撮影された画像データの画像Ｆ２において、ステップＳ４６に対応する走査開始位置の座標（Ｘ，Ｙ）は、画像Ｆ２の上辺上の点となる。画像Ｆ２においても、座標（Ｘ，Ｙ）からステップＳ５０における走査方向（−Ｒ）に走査すると、走査上の点が画像Ｆ２の中心座標（Ｗ／２，Ｈ／２）を通る。
【００６７】
図１１に示すように、−（１８０度−arctan（Ｈ／Ｗ））＜Ｒ＜−arctan（Ｈ／Ｗ）を満たす回転角度Ｒで撮影された画像データの画像Ｆ３において、ステップＳ４８に対応する走査開始位置の座標（Ｘ，Ｙ）が画像Ｆ３の上辺の一点となる。画像Ｆ３においても、座標（Ｘ，Ｙ）からステップＳ５０における走査方向（−Ｒ）に走査すると、走査上の点が画像Ｆ３の中心座標（Ｗ／２，Ｈ／２）を通る。
【００６８】
図１２に示すように、｜Ｒ｜≧（１８０度−arctan（Ｈ／Ｗ））を満たす回転角度Ｒで撮影された画像データの画像Ｆ４において、ステップＳ４９に対応する走査開始位置の座標（Ｘ，Ｙ）が画像Ｆ４の上辺の一点となる。画像Ｆ４においても、座標（Ｘ，Ｙ）からステップＳ５０における走査方向（−Ｒ）に走査すると、走査上の点が画像Ｆ４の中心座標（Ｗ／２，Ｈ／２）を通る。
【００６９】
ここで、図８及び図１３を参照して、ステップＳ５の第１のデコード処理を説明する。図８に示すように、先ず、変数ｘに、ステップＳ４で設定された走査開始位置Ｘが代入され、変数ｙに、ステップＳ４（ステップＳ５０）で設定された走査開始位置Ｙが代入される（ステップＳ５１）。変数ｘ，ｙは、画像の二次元座標の変数である。
【００７０】
そして、変数Ｎに０が代入される（ステップＳ５２）。変数Ｎは、走査実行回数の変数である。そして、画像の座標（ｘ，ｙ）から、ステップＳ４（ステップＳ５０）で設定された走査方向に走査され、一次元データ（一次元バーパターンのデータ）が取得される（ステップＳ５３）。そして、ステップＳ５３で走査された一次元データがデコードされる（ステップＳ５４）。ステップＳ５４のデコードは、一次元バーコードの一般的なデコードであり、その説明を省略する。
【００７１】
そして、ステップＳ５４のデコード結果から、一次元バーコードが検出されたか否かが判別される（ステップＳ５５）。一次元バーコードが検出された場合（ステップＳ５５；ＹＥＳ）、デコードが成功しており、第１のデコード処理が終了する。一次元バーコードが検出されていない場合（ステップＳ５５；ＮＯ）、変数Ｎが１インクリメントされ、変数Ｄに、（−１）Ｎ＊Ｎ＊２が代入される（ステップＳ５６）。変数Ｄは、走査開始位置の移動幅の変数である。
【００７２】
そして、回転角度Ｒが｜Ｒ｜≦arctan（Ｈ／Ｗ）を満たすか否かが判別される（ステップＳ５７）。回転角度Ｒが｜Ｒ｜≦arctan（Ｈ／Ｗ）を満たす場合（ステップＳ５７；ＹＥＳ）、図９に対応し、変数ｙに、ｙ＋Ｄが代入される（ステップＳ５８）。そして、変数ｙ＜０又はｙ＞Ｈであるか否かが判別される（ステップＳ５９）。変数ｙ＜０又はｙ＞Ｈである場合（ステップＳ５９；ＹＥＳ）、デコードが失敗しており、デコード処理が終了する。変数ｙ＜０又はｙ＞Ｈでない場合（ステップＳ５９；ＮＯ）、ステップＳ５３に移行される。
【００７３】
回転角度Ｒが｜Ｒ｜≦arctan（Ｈ／Ｗ）を満たさない場合（ステップＳ５７；ＮＯ）、回転角度Ｒが｜Ｒ｜≧（１８０度−arctan（Ｈ／Ｗ））を満たすか否かが判別される（ステップＳ６０）。回転角度Ｒが｜Ｒ｜≧（１８０度−arctan（Ｈ／Ｗ））を満たす場合（ステップＳ６０；ＹＥＳ）、ステップＳ５８に移行される。回転角度Ｒが｜Ｒ｜≧（１８０度−arctan（Ｈ／Ｗ））を満たさない場合（ステップＳ６０；ＮＯ）、変数Ｒが、arctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ））、又は−（１８０度−arctan（Ｈ／Ｗ））＜Ｒ＜−arctan（Ｈ／Ｗ）を満たし、図１０又は図１１に対応し、変数ｘに、ｘ＋Ｄが代入される（ステップＳ６１）。
【００７４】
そして、変数ｘ＜０又はｘ＞Ｗであるか否かが判別される（ステップＳ６２）。変数ｘ＜０又はｘ＞Ｗである場合（ステップＳ６２；ＹＥＳ）、デコードが失敗しており、第１のデコード処理が終了する。変数ｘ＜０又はｘ＞Ｗでない場合（ステップＳ６２；ＮＯ）、ステップＳ５３に移行される。
【００７５】
ここで、図１３を参照して、デコード処理における走査開始位置の移動の一例を説明する。図１３に示すように、イメージセンサ１６により撮影された画像データの画像Ｆ５（arctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ）））を考える。
【００７６】
デコード処理において、ステップＳ５１により最初の走査開始位置が点Ｐ１の座標（Ｘ，０）にとられて、走査方向に走査されデコードされる。この走査は、座標（Ｗ／２，Ｈ／２）を通る。
【００７７】
そして、点Ｐ１に対応するデコードが失敗すると、ステップＳ６１により走査開始位置が点Ｐ２の座標（Ｘ−２，０）にとられて、走査されデコードされる。点Ｐ２に対応するデコードが失敗すると、ステップＳ６１により走査開始位置が、点Ｐ１を中心として点Ｐ２と反対側の点Ｐ３の座標（Ｘ＋４，０）にとられて、走査されデコードされる。そして、点Ｐ３に対応するデコードが失敗すると、ステップＳ６１により走査開始位置が、点Ｐ１を中心として点Ｐ３と反対側の点Ｐ４の座標（Ｘ−６，０）にとられて、走査されデコードされる。
【００７８】
そして、点Ｐ４に対応するデコードが失敗すると、ステップＳ６１により走査開始位置が、点Ｐ１を中心として点Ｐ４と反対側の点Ｐ５の座標（Ｘ＋８，０）にとられて、走査されデコードされる。このように、走査毎に走査開始位置が移動され、デコードが成功するか、走査開始位置が画像から出るまで続けられる。
【００７９】
以上、本実施の形態によれば、ハンディターミナル１のＣＰＵ１１は、イメージセンサ１６により重力方向に垂直な方向（水平方向）に配置された一次元バーコードを撮影して画像データを取得し、傾きセンサ１８によりハンディターミナル１の傾きデータを検出して取得する。そして、ＣＰＵ１１は、傾きセンサ１８により検出されたハンディターミナル１の傾きデータに基づいて、一次元バーコードの一次元バーパターンを横切る走査の走査方向及び走査開始位置を算出する。そして、ＣＰＵ１１は、撮影された画像データの画像に対して、前記算出した走査開始位置から前記算出した走査方向へ走査を行い、当該走査により得られた一次元バーパターンをデコードする。このため、ユーザが手首を回転してハンディターミナル１の角度を変更することなく一次元バーコードを読み取ることができるので、一次元バーコードの読み取り操作性を高めることができる。また、傾きデータから一次元バーコードの読み取りに必要な走査開始位置及び走査方向を算出するので、画像解析により走査開始位置及び走査方向を算出せずともよく、一次元バーコードの画像解析の処理負担を低減できる。
【００８０】
また、ＣＰＵ１１は、最初の走査において、イメージセンサ１６により撮影された画像データの画像の中心を通る走査開始位置及び走査方向を算出する。というのは、一次元バーコードは、画像の中心を含む位置に存在する確率が高いからである。このため、一次元バーコードのデコードが成功するまでの走査回数を低減できる。ここで、イメージセンサ１６から出射されるエイマー光が、読み取り画像範囲の中心に照準を有するものとする。そうすれば、ユーザが意識して一次元バーコードに中心の照準を合わせる。このため、一次元バーコードに中心の照準が合うように一次元バーコードが撮影されるので、一次元バーコードのデコードが成功するまでの走査回数をさらに低減できる。
【００８１】
また、ＣＰＵ１１は、イメージセンサ１６により撮影された画像データの画像に対して、算出した走査開始位置から走査方向へ走査してデコードを行い、当該デコードが成功したか否かを判別し、当該デコードが失敗した場合に、走査開始位置を前記画像内で移動するよう変更し、当該変更した走査開始位置から前記走査方向へ走査してデコードを行うことを、デコードが成功するまで繰り返す。このため、走査開始位置を移動して一次元バーコードを適切に検出してデコードできる。
【００８２】
また、ＣＰＵ１１は、一次元バーコードのデコードの結果を表示部１４に表示する。このため、ユーザが一次元バーコードのデコードの結果を目視により容易に確認できる。
【００８３】
（第２の実施の形態）
図１４〜図２０を参照して、本発明に係る第２の実施の形態を説明する。図１４に、スタック型二次元コードの例を示す。
【００８４】
第１の実施の形態では、ハンディターミナル１が、シンボルとして一次元バーコードを読み取った。本実施の形態では、ハンディターミナル１が、シンボルとして図１４に示すようなスタック型二次元コードを読み取る。スタック型二次元コードは、一次元パーコードのような一次元パーパターンが多段に積み重ねられた構造を有する。このため、スタック型二次元コードについては、各一次元パーパターンを走査してデコードする必要がある。また、読取対象のスタック型二次元コードは、各一次元パーパターンの長手方向（延在方向、各一次元パーパターンのバーを横切る方向）が重力方向に対して垂直な方向（水平面上の一方向）になるよう配置されているものとする。
【００８５】
本実施の形態の装置構成として、第１の実施の形態と同様のハンディターミナル１を用いる。このため、ハンディターミナル１について、第１の実施の形態と共通な部分の説明を省略し、異なる部分を主として説明する。
【００８６】
ＲＯＭ１５には、第１のデコード処理に代えて、第２のデコード処理を実行するシンボルスキャンプログラム１５１が記憶されている。
【００８７】
次に、図１５を参照して、本実施の形態のシンボルスキャン処理においてＲＡＭ１３に記憶される情報を説明する。図１５に、バーパターンテーブル６０の構成を示す。
【００８８】
バーパターンテーブル６０は、走査により検出したスタック型二次元コードの各一次元バーパターンを格納するテーブルである。バーパターンテーブル６０は、係数Ｅ６１と、バーパターン６２と、の項目を有する。
【００８９】
係数Ｅ６１は、スタック型二次元コードの各一次元バーパターンに対応する係数Ｅである。係数Ｅとは、イメージセンサ１６により撮影された画像データの画像の複数の走査において、各一次元バーパターンを検出するための検出開始位置を表すための数値である。係数Ｅは、例えば、最初の走査の検出開始位置に対応する値を０として、値が正の方向に大きくなるにつれて、画像中において検出開始位置が最初の検出開始位置から右側に離れていくものとする。同様に係数Ｅは、値が負の方向に大きくなるにつれて、画像中において検出開始位置が最初の検出開始位置から左側に離れていくものとする。
【００９０】
バーパターン６２は、係数Ｅ６１に対応する走査における黒のバー及び白のバー（スペース）の幅の数値のパターンである。バーパターン６２には、黒のバー及び白のスペースの幅の値が、黒１、白１、黒２、白２…の項目として格納される。黒１、白１等の項目自体の数値は、検出開始位置からの走査順に対応して昇順に付与されている。
【００９１】
次に、図１６〜図２０を参照して、本実施の形態におけるハンディターミナル１の動作を示す。図１６に、第２のデコード処理を示す。図１７に、第２のデコード処理におけるスタック型コードデコード処理を示す。図１８に、第２のデコード処理におけるスタック型コードデコード処理を示す。図１９に、スタック型二次元コードを撮影した画像データの画像Ｆ６における走査開始位置の移動の一例を示す。図２０に、スタック型二次元コードにおける検出開始位置の移動の一例を示す。
【００９２】
ハンディターミナル１において、第１の実施の形態と同様に、ユーザからトリガキー１２Ａの押下入力がなされたことをトリガとして、ＲＯＭ１５から読み出されて適宜ＲＡＭ１３に展開されたシンボルスキャンプログラム１５１と、ＣＰＵ１１との協働により、シンボルスキャン処理が実行される。但し、本実施の形態のシンボルスキャン処理は、図６のステップＳ５として、第１のデコード処理に代えて第２のデコード処理を含む。このため、第２のデコード処理を説明する。
【００９３】
図１６に示すように、第２のデコード処理におけるステップＳ８１〜Ｓ８４、Ｓ８８〜Ｓ９４は、それぞれ順に、第１のデコード処理におけるステップＳ５１〜Ｓ５４、Ｓ５６〜Ｓ６２と同様の処理のステップである。
【００９４】
ステップＳ８４の実行後、ステップＳ８４のデコード結果から、一次元バーパターンが検出されたか否かが判別される（ステップＳ８５）。一次元バーパターンが検出されていない場合（ステップＳ８５；ＮＯ）、ステップＳ８８に移行される。
【００９５】
一次元バーパターンが検出された場合（ステップＳ８５；ＹＥＳ）、デコードが成功しており、検出開始位置の座標（ＳＸ，ＳＹ）に、座標（ｘ，ｙ）が代入される（ステップＳ８６）。検出開始位置とは、二次元コードの多段の一次元バーパターンそれぞれ検出するための走査開始位置である。そして、スタック型コードデコード処理が実行される（ステップＳ８７）。そして、第２のデコード処理が終了する。
【００９６】
第２のデコードにおいて、図１９に示すように、イメージセンサ１６により撮影された画像データの画像Ｆ６（arctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ）））を考える。この場合、図１３と同様にして、走査開始位置が、順に、点Ｑ１：座標（Ｘ，０）、点Ｑ２：座標（Ｘ−２，０）、点Ｑ３：座標（Ｘ＋４，０）、点Ｑ４：座標（Ｘ−６，０）、点Ｑ５：座標（Ｘ＋８，０）と移動する。
【００９７】
ここで、図１７を参照して、ステップＳ８７のスタック型コードデコード処理を説明する。先ず、各項目の値がクリアされているバーパターンテーブル６０が作成されてＲＡＭ１３に記憶され、又はＲＡＭ１３に記憶されているバーパターンテーブル６０の各数値がクリアされる（ステップＳ８７１）。そして、ステップＳ８４，Ｓ８５で検出された一次元バーパターンがＲＡＭ１３内のバーパターンテーブル６０のバーパターン６２に格納される（ステップＳ８７２）。
【００９８】
そして、係数Ｅに０が代入され、ステップＳ８７２で格納されたバーパターン６２に対応して係数Ｅ６１に係数Ｅ＝０が格納される（ステップＳ８７３）。そして、係数Ｅに、（Ｅ＋１）が代入される（ステップＳ８７４）。ステップＳ８７４は、検出開始位置を走査方向に垂直な一方の方向に移動することに対応する。そして、バーパターン走査処理が実行される（ステップＳ８７５）。バーパターン走査処理は、係数Ｅに対応して、検出開始位置から走査方向にスタック型二次元コードの走査を行う処理であり、詳細に後述される。
【００９９】
そして、ステップＳ８７５における走査結果についてバーパターンが検出されたか否かが判別される（ステップＳ８７６）。バーパターンが検出された場合（ステップＳ８７６；ＹＥＳ）、ステップＳ８７４に移行される。バーパターンが検出されていない場合（ステップＳ８７６；ＮＯ）、検出開始位置がスタック型二次元コードの一方の端まで走査完了したものであり、係数Ｅに０が代入される（ステップＳ８７８）。
【０１００】
そして、係数Ｅに、（Ｅ−１）が代入される（ステップＳ８７８）。ステップＳ８７８は、検出開始位置を走査方向に垂直なもう一方の方向（ステップＳ８７４の方向と反対方向）に移動することに対応する。そして、バーパターン走査処理が実行される（ステップＳ８７９）。そして、ステップＳ８７９における走査結果についてバーパターンが検出されたか否かが判別される（ステップＳ８８０）。バーパターンが検出された場合（ステップＳ８８０；ＹＥＳ）、ステップＳ８７８に移行される。
【０１０１】
バーパターンが検出されていない場合（ステップＳ８８０；ＮＯ）、検出開始位置がスタック型二次元コードのもう一方の端まで走査完了したものであり、ＲＡＭ１３に記憶されているバーパターンテーブル６０を用いて、スタック型二次元コードのデコードが実行される（ステップＳ８８１）。そして、スタック型コードデコード処理が終了する。ステップＳ８８１のデコードは、スタック型二次元コードの一般的なデコードであり、その説明を省略する。
【０１０２】
次いで、図１８を参照して、ステップＳ８７５のバーパターン走査処理を説明する。先ず、変数ｘに検出開始位置ＳＸ＋（sinＲ）＊Ｅが代入され、変数ｙに検出開始位置ＳＹ−（cosＲ）＊Ｅが代入される（ステップＳ８７５１）。そして、画像の座標（ｘ，ｙ）から、ステップＳ４（ステップＳ４８）で設定された走査方向に走査され、一次元データが取得される（ステップＳ８７５２）。
【０１０３】
そして、ステップＳ８７５２で取得された一次元データについて、バーパターンが検出され、バーパターンが検出されたか否かが判別される（ステップＳ８７５３）。バーパターンが検出されない場合（ステップＳ８７５３；ＮＯ）、バーパターンが未検出であるとして、バーパターン走査処理が終了する。
【０１０４】
バーパターンが検出された場合（ステップＳ８７５３；ＹＥＳ）、ステップＳ８７５３で検出されたバーパターンが、ＲＡＭ１３に記憶されているバーパターンテーブル６０の全てのバーパターン６２と照合される（ステップＳ８７５４）。そして、ステップＳ８７５４のバーパターン照合において、一致するバーパターンがあるか否かが判別される（ステップＳ８７５５）。
【０１０５】
一致するバーパターンがある場合（ステップＳ８７５５；ＹＥＳ）、ステップＳ８７５３で検出されたバーパターンが、前回以前に検出されたものであり、バーパターン走査処理が終了する。
【０１０６】
一致するバーパターンがない場合（ステップＳ８７５５；ＮＯ）、ステップＳ８７５４で新たなバーパターンが検出されたものであり、現在の係数Ｅと、ステップＳ８７５５で検出されたバーパターンとが、ＲＡＭ１３に記憶されているバーパターンテーブル６０の係数Ｅ６１とバーパターン６２とのレコードとして追加される（ステップＳ８７５６）。そして、バーパターン走査処理が終了する。
【０１０７】
ここで、図２０を参照して、スタック型コードデコード処理における検出開始位置の移動の一例を説明する。図２０に示すように、イメージセンサ１６により撮影された画像データの画像において、arctan（Ｈ／Ｗ）＜Ｒ＜（１８０度−arctan（Ｈ／Ｗ））である場合を考える。
【０１０８】
先ず、係数Ｅが０とされ、走査開始位置（Ｘ，Ｙ）を検出開始位置（ＳＸ，ＳＹ）として、検出開始位置（ＳＸ，ＳＹ）から画像中のスタック型二次元コードが走査される。そして、係数Ｅが１インクリメントされて、検出開始位置が右方向に移動され走査されて一次元バーパターンが検出されることが、スタック型二次元コードの右端まで繰り返される。そして、係数Ｅが０に戻され、係数Ｅが１デクリメントされて、検出開始位置が右方向に移動され走査されて一次元バーパターンが検出されることが、スタック型二次元コードの左端まで繰り返される。
【０１０９】
以上、本実施の形態によれば、第１の実施の形態と同様に、スタック型二次元コードの読み取り操作性を高めることができるとともに、スタック型二次元コードの画像解析の処理負担を低減できる。また、走査開始位置を移動してスタック型二次元コードを適切に検出してデコードできる。また、スタック型二次元コードのデコードが成功するまでの走査回数を低減できる。また、ユーザがスタック型二次元コードのデコードの結果を目視により容易に確認できる。
【０１１０】
さらに、ＣＰＵ１１は、算出した走査開始位置をスタック型二次元コードの一次元バーパターンの検出開始位置に設定し、イメージセンサ１６により撮影された画像データの画像に対してデコードを行う。そして、ＣＰＵ１１は、当該検出開始位置をスタック型二次元コードの別の一次元バーパターンを走査する位置に移動し、前記画像に対して前記移動した検出開始位置から前記走査方向へ走査してデコードを行うことを、スタック型二次元コードの全ての一次元バーパターンについて行う。このため、スタック型二次元コードの全ての一次元バーパターンの検出を適切に行うことができ、スタック型二次元コードを適切にデコードできる。
【０１１１】
以上の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体としてＲＯＭ１５を使用した例を開示したが、この例に限定されない。
その他のコンピュータ読み取り可能な媒体として、フラッシュメモリ１７等の不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬型記録媒体を適用することが可能である。
また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ（搬送波）も本発明に適用される。
【０１１２】
なお、上記実施の形態における記述は、本発明に係るシンボル読取装置及びプログラムの一例であり、これに限定されるものではない。
【０１１３】
例えば、上記第２の実施の形態では、バーパターン走査処理のステップＳ８７５４〜Ｓ８７５６において、検出したバーパターンとバーパターンテーブル６０のバーパターンとを照合し、異なる新たなバーパターンのみをバーパターンテーブル６０に追加登録する構成としたが、これに限定されるものではない。一般的に普及しているほとんどのスタック型二次元コードの読み取りについては、上記第２の実施の形態の方法で問題ない。しかし、一部の二次元コードにおいては、上記第２の実施の形態の方法では問題が生じる可能性がある。具体的には、例えば図１４の最下段の二次元コードには、１個の二次元コード内に２個以上の同じ一次元バーパターンが含まれる可能性がある。そのような場合に、バーパターン走査処理において、検出されたバーパターンは、バーパターンテーブル６０の全てのバーパターンと照合されるのではなく、直前のバーパターンのみと照合されればよい。
【０１１４】
また、上記各実施の形態では、ハンディターミナル１が、バーコードのデコードを失敗した場合に走査開始位置を画像の辺上で移動させていき、移動先が辺の一方の端を超えた場合に、デコードを終了する構成としたが、これに限定するものではない。例えば、ハンディターミナル１が、バーコードのデコードを失敗した場合に走査開始位置を画像の辺上で移動させていき、移動先が辺の一方の端を超えた場合に、引き続きもう一方の端の方向へ走査開始位置を移動させていき、移動先が辺のもう一方の端を超えた場合に、デコードを終了する構成としてもよい。
【０１１５】
また、上記各実施の形態では、ハンディターミナル１が、成功するまでデコードを繰り返し、デコードを成功した場合にデコードが成功した旨のデコード結果を表示部１４に表示する構成としたが、これに限定されるものではない。例えば、ハンディターミナル１が、成功するまでデコードを所定回数繰り返し、デコードを成功した場合にデコードが成功した旨のデコード結果を表示部１４に表示し、デコードを所定回数失敗した場合に、デコードが失敗した旨のデコード結果を表示部１４に表示する構成としてもよい。
【０１１６】
また、上記各実施の形態では、一次元バーコード又はスタック型二次元コードは、一次元バーパターンの長手方向（一次元バーパターンの各バーを横切る方向）が重力方向に対して垂直な方向になるよう配置されているものとしたが、これに限定されるものではない。一次元バーコード又はスタック型二次元コードは、一次元バーパターンの長手方向が、重力方向に対して所定角度になるよう配置される構成としてもよい。この構成においても、走査方向は、一次元バーパターンのバーを横切る方向にとられる。
【０１１７】
また、上記各実施の形態では、シンボル読取装置としてハンディターミナルを用いる構成としたが、これに限定されるものではない。シンボル読取装置としては、携帯電話機、ＰＨＳ（Personal Handyphone System）、ＰＤＡ（Personal Digital Assistant）等、他のシンボル読取機能を有する装置を用いることとしてもよい。
【０１１８】
また、上記各実施の形態におけるハンディターミナル１の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。
【符号の説明】
【０１１９】
１  ハンディターミナル
１１  ＣＰＵ
１２  操作部
１３  ＲＡＭ
１４  表示部
１５  ＲＯＭ
１６  イメージセンサ
１７  フラッシュメモリ
１８  傾きセンサ
１９  Ｉ／Ｆ部
２０  電源部
２１  バス
【図１】
0005413006.tif 000002
【図２】
0005413006.tif 000003
【図３】
0005413006.tif 000004
【図４】
0005413006.tif 000005
【図５】
0005413006.tif 000006
【図６】
0005413006.tif 000007
【図７】
0005413006.tif 000008
【図８】
0005413006.tif 000009
【図９】
0005413006.tif 000010
【図１０】
0005413006.tif 000011
【図１１】
0005413006.tif 000012
【図１２】
0005413006.tif 000013
【図１３】
0005413006.tif 000014
【図１４】
0005413006.tif 000015
【図１５】
0005413006.tif 000016
【図１６】
0005413006.tif 000017
【図１７】
0005413006.tif 000018
【図１８】
0005413006.tif 000019
【図１９】
0005413006.tif 000020
【図２０】
0005413006.tif 000021