(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-20
(45)【発行日】2022-06-28
(54)【発明の名称】コード読み取り装置、および、コード読み取りプログラム
(51)【国際特許分類】
G06T 5/00 20060101AFI20220621BHJP
G06K 7/10 20060101ALI20220621BHJP
G06K 7/14 20060101ALI20220621BHJP
G06K 19/06 20060101ALI20220621BHJP
【FI】
G06T5/00 725
G06K7/10 372
G06K7/14 017
G06K7/14 056
G06K7/14 069
G06K19/06 103
G06K19/06 037
(21)【出願番号】P 2018133406
(22)【出願日】2018-07-13
【審査請求日】2021-03-03
(73)【特許権者】
【識別番号】501428545
【氏名又は名称】株式会社デンソーウェーブ
(74)【代理人】
【識別番号】100106149
【氏名又は名称】矢作 和行
(74)【代理人】
【識別番号】100121991
【氏名又は名称】野々部 泰平
(74)【代理人】
【識別番号】100145595
【氏名又は名称】久保 貴則
(72)【発明者】
【氏名】小澤 諒
【審査官】豊田 好一
(56)【参考文献】
【文献】特開2009-129222(JP,A)
【文献】特開2000-222517(JP,A)
【文献】特開2011-49690(JP,A)
【文献】特開2015-135701(JP,A)
【文献】特開2012-181757(JP,A)
【文献】特開2004-362053(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 5/00
G06K 7/10
G06K 7/14
G06K 19/06
(57)【特許請求の範囲】
【請求項1】
コード領域(110)と画像(120)とが組み合わせられており、前記コード領域には、複数色のセルによりデータコード語と誤り訂正コード語とが記録されている2次元コードである画像付き2次元コード(100)から、前記データコード語を読み取るコード読み取り装置であって、
前記画像付き2次元コードを撮像可能な撮像部(23)と、
前記撮像部によって前記画像付き2次元コードが撮像された場合に、前記コード領域に記録された前記データコード語を、誤り訂正処理を行いつつ読み取るデータ読み取り部(S20)と、
前記データ読み取り部が前記データコード語を読み取ったことにより定まるセルの配列に基づいて、セル座標を補正するセル座標補正部(S60)と、
補正後の前記セル座標に基づいて、画像全体を含む全体復元領域を分割した分割領域を定める点になる基準点を設定する基準点設定部(S70)と、
前記基準点に基づいて定まる前記分割領域を平面画像に復元する復元処理を行う復元処理部(S80)と、を備えるコード読み取り装置。
【請求項2】
請求項1に記載のコード読み取り装置であって、
前記基準点設定部は、前記画像を挟んで前記コード領域が形成されている場合、前記画像を挟んで前記基準点を設定するコード読み取り装置。
【請求項3】
請求項1または2に記載のコード読み取り装置であって、
前記復元処理部は、画像全体の一部の前記分割領域を前記平面画像に復元するコード読み取り装置。
【請求項4】
請求項1~3のいずれか1項に記載のコード読み取り装置であって、
前記基準点設定部は、セル座標間の間隔が狭いほど前記基準点間の間隔を狭くするコード読み取り装置。
【請求項5】
請求項2に記載のコード読み取り装置であって、
前記基準点設定部は、前記コード領域において、基準点設定方向が前記全体復元領域の一辺に沿った方向であり、前記基準点設定方向において両隣が他色になっている1つのセルである単独セル(134、135)が、前記画像を挟んで互いに向かい合う位置に存在している場合、前記単独セルのセル座標を前記基準点に設定するコード読み取り装置。
【請求項6】
請求項5に記載のコード読み取り装置であって、
前記基準点設定部は、前記コード領域において前記画像に近いセルから順に、前記画像から離れる方向に前記単独セルを探索するコード読み取り装置。
【請求項7】
請求項5または6に記載のコード読み取り装置であって、
前記基準点設定部は、前記基準点を決めるためのセルの候補として最初に設定するセルである初回候補セル(130)を、前記基準点設定方向において等セル間隔に設定し、前記初回候補セルおよび前記初回候補セルに対して前記基準点設定方向に連続する同色のセルを含む同色セルブロックが誤り訂正されていない場合、前記初回候補セルのセル座標を前記基準点に設定するコード読み取り装置。
【請求項8】
請求項7に記載のコード読み取り装置であって、
前記基準点設定部は、前記初回候補セルを含む前記同色セルブロックが誤り訂正されている場合、前記初回候補セルに対して前記基準点設定方向に隣接するセルを含み前記画像に対して接近離隔方向に延びるセル列を探索範囲(133)とし、前記探索範囲を前記画像に近いセルから順に探索し、前記画像を挟んで互いに向かい合う位置に1対の前記単独セルがある場合に、その1対の前記単独セルのセル座標を前記基準点に設定するコード読み取り装置。
【請求項9】
請求項7または8に記載のコード読み取り装置であって、
前記基準点設定部は、前記初回候補セルを含む前記同色セルブロックが誤り訂正されている場合、前記初回候補セルに対して前記基準点設定方向に隣接するセルを含み前記画像に対して接近離隔方向に延びるセル列を探索範囲(133)とし、前記探索範囲に、同色セルが基準点設定方向に連結しており、かつ、前記探索範囲内で同色セルの連結が終了しているセルである独立連結セル(137、138、139)が、前記画像を挟んで、前記基準点設定方向において同じ位置にある場合、1対の前記独立連結セルの中心を、前記基準点に設定するコード読み取り装置。
【請求項10】
請求項7~9のいずれか1項に記載のコード読み取り装置であって、
前記基準点設定部は、前記初回候補セルを含む前記同色セルブロックが誤り訂正されている場合、前記初回候補セルを含み前記画像に対して接近離隔方向に延びるセル列に、相互に1列ずれて存在している2つのエッジであって、2つのエッジ間が1セル分である段差エッジ(140)がある場合、前記基準点設定方向において2つのエッジの中間に前記基準点を設定するコード読み取り装置。
【請求項11】
コード領域(110)と画像(120)とが組み合わせられており、前記コード領域には、複数色のセルによりデータコード語と誤り訂正コード語とが記録されている2次元コードである画像付き2次元コード(100)から、前記データコード語を読み取るために、前記画像付き2次元コードを撮像可能な撮像部(23)と、コンピュータ(40)とを備えたコード読み取り装置において、前記コンピュータを、
前記撮像部によって前記画像付き2次元コードが撮像された場合に、前記コード領域に記録された前記データコード語を、誤り訂正処理を行いつつ読み取るデータ読み取り部(S20)と、
前記データ読み取り部が前記データコード語を読み取ったことにより定まるセルの配列に基づいて、セル座標を補正するセル座標補正部(S60)と、
補正後の前記セル座標に基づいて、画像全体を含む全体復元領域を分割した分割領域を定める点になる基準点を設定する基準点設定部(S70)と、
前記基準点に基づいて定まる前記分割領域を平面画像に復元する復元処理を行う復元処理部(S80)として機能させるためのコード読み取りプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
コード読み取り装置およびコード読み取りプログラムに関し、特に、2次元コードとともに示された画像の歪みを補正する機能を備えた装置およびプログラムに関する。
【背景技術】
【0002】
特許文献1に、2次元コード内に付された画像を読み取り装置で利用する技術が開示されている。特許文献1に開示されている2次元コードは、全体として正方形状であり、2次元コードの中央部分に画像領域が形成されている。特許文献1には、画像領域に対して、画像領域の4隅を特定して正規化することも開示されている。正規化された後の画像は、パターンマッチングなどに用いられる。
【0003】
なお、画像領域が2次元コードの中央にある場合に以外に、1対の長方形状のコード領域に画像領域が挟まれている2次元コードも知られている。以下では、コード領域と画像とが組み合わせられている2次元コードを、画像付き2次元コードとする。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
画像全体の4隅を特定して正規化する技術は、画像の1対の隅間を直線とみなしており、その1対の隅間の距離を変更するだけである。一方、画像付き2次元コードが曲面に形成されている場合、画像の1対の隅間は、平面であれば直線であっても、撮像された画像では曲線である。
【0006】
したがって、画像付き2次元コードが曲面に形成されている場合、画像全体の4隅を特定して正規化するだけでは、正規化後の画像は、正しい平面画像とは大きく異なった画像になってしまう可能性がある。
【0007】
本開示は、この事情に基づいて成されたものであり、その目的とするところは、画像付き2次元コードが曲面に形成されている場合でも、画像を精度よく平面画像に変換することができるコード読み取り装置、および、コード読み取りプログラムを提供することにある。
【課題を解決するための手段】
【0008】
上記目的は独立請求項に記載の特徴の組み合わせにより達成され、また、下位請求項は更なる有利な具体例を規定する。特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、開示した技術的範囲を限定するものではない。
【0009】
上記目的を達成するためのコード読み取り装置は、コード領域(110)と画像(120)とが組み合わせられており、コード領域には、複数色のセルによりデータコード語と誤り訂正コード語とが記録されている2次元コードである画像付き2次元コード(100)から、データコード語を読み取るコード読み取り装置であって、
画像付き2次元コードを撮像可能な撮像部(23)と、
撮像部によって画像付き2次元コードが撮像された場合に、コード領域に記録されたデータコード語を、誤り訂正処理を行いつつ読み取るデータ読み取り部(S20)と、
データ読み取り部がデータコード語を読み取ったことにより定まるセルの配列に基づいて、セル座標を補正するセル座標補正部(S60)と、
補正後のセル座標に基づいて、画像全体を含む全体復元領域を分割した分割領域を定める点になる基準点を設定する基準点設定部(S70)と、
基準点に基づいて定まる分割領域を平面画像に復元する復元処理を行う復元処理部(S80)と、を備える。
【0010】
データ読み取り部によりデータコード語の読み取りができたとき、2次元コードは各列のセルの配列が判別できたことになる。そして、セルの配列が定まると、セルの配列を、画像付き2次元コードを撮像した画像(以下、コード撮像画像)を画像解析することで抽出できるセル配列と照らし合わせることで、コード撮像画像におけるセルの座標を補正することができる。
【0011】
そして、補正後のセル座標に基づいて、画像全体を含む全体復元領域を分割した分割領域を定める点になる基準点を設定する。このようにして基準点を設定することから、画像付き2次元コードが曲面に形成されていても、画像付き2次元コードが平面にあるときの基準点の間隔が分かる。したがって、このようにして基準点を設定することで、復元処理では、分割領域の基準点を、画像付き2次元コードが平面にあるときの位置に精度よく戻すことができる。
【0012】
しかも、この復元処理では、画像全体を含む基準点を設定して画像を復元するのではなく、画像を分割した分割領域を対象として復元処理を行う。2次元コードが曲面に形成されていることにより、平面画像では直線である線が曲線になっているとしても、分割領域とすることで、各分割領域に含まれる曲線は、画像全体よりは、元の直線に対する歪みが少ない曲線になっている。
【0013】
これらのことから、セル座標に基づいて分割領域の基準点を設定し、分割領域を単位として復元処理をすることで、画像付き2次元コードが曲面に形成されている場合でも、画像を精度よく平面画像に戻すことができる。
【0014】
請求項2に記載のコード読み取り装置では、基準点設定部は、画像を挟んでコード領域が形成されている場合、画像を挟んで基準点を設定する。
【0015】
このようにすることで、コード撮像画像が、画像付き2次元コードを斜めから撮像した画像であっても、分割領域の基準となる各基準点を、画像付き2次元コードを平面としたときの座標に正しく対応させることができる。
【0016】
請求項3に記載のコード読み取り装置では、復元処理部は、画像全体の一部の分割領域を平面画像に復元する。
【0017】
画像全体の一部の分割領域を平面画像に復元すれば、画像全部を複数の分割領域に分割して、全部の分割領域を平面画像に復元するよりも、復元処理時間を短くすることができる。
【0018】
請求項4に記載のコード読み取り装置では、基準点設定部は、セル座標間の間隔が狭いほど基準点間の間隔を狭くする。
【0019】
撮影された画像において、セル座標間の間隔が狭い部分は、セル座標間の間隔が広い部分に比較して、平面画像に対する歪みが大きい部分である。しかし、セル座標間の間隔が狭いほど基準点間の間隔を狭くすれば、歪みが大きい部分に対して、相対的に小さい分割領域を設定できる。よって、一定間隔で基準点を設定するよりも、精度のよい平面画像を復元することができる。
【0020】
請求項5に記載のコード読み取り装置では、基準点設定部は、コード領域において、基準点設定方向が全体復元領域の一辺に沿った方向であり、基準点設定方向において両隣が他色になっている1つのセルである単独セル(133、134)が、画像を挟んで互いに向かい合う位置に存在している場合、単独セルのセル座標を基準点に設定する。
【0021】
単独セルのセル座標を基準点とすることで基準点を精度よく決めることができ、その結果、平面画像の復元精度が向上する。
【0022】
請求項6に記載のコード読み取り装置では、基準点設定部は、コード領域において画像に近いセルから順に、画像から離れる方向に単独セルを探索する。
【0023】
画像に近い側にある単独セルを基準点を設定することになるので、分割領域を小さくすることができる。
【0024】
請求項7に記載のコード読み取り装置では、基準点設定部は、基準点を決めるためのセルの候補として最初に設定するセルである初回候補セル(130)を、基準点設定方向において等セル間隔に設定し、初回候補セルおよび初回候補セルに対して基準点設定方向に連続する同色のセルを含む同色セルブロックが誤り訂正されていない場合、初回候補セルのセル座標を基準点に設定する。
【0025】
このようにすれば、誤った位置を基準点に設定してしまうことを抑制しつつ、基準点を等間隔に設定できる。
【0026】
請求項8に記載のコード読み取り装置では、基準点設定部は、初回候補セルを含む同色セルブロックが誤り訂正されている場合、初回候補セルに対して基準点設定方向に隣接するセルを含み画像に対して接近離隔方向に延びるセル列を探索範囲(133)とし、探索範囲を画像に近いセルから順に探索し、画像を挟んで互いに向かい合う位置に1対の単独セルがある場合に、その1対の単独セルのセル座標を基準点に設定する。
【0027】
このようにすれば、誤った位置を基準点に設定してしまうことを抑制しつつ、基準点を等間隔に近い間隔で設定できる。
【0028】
請求項9に記載のコード読み取り装置では、基準点設定部は、初回候補セルを含む同色セルブロックが誤り訂正されている場合、初回候補セルに対して基準点設定方向に隣接するセルを含み画像に対して接近離隔方向に延びるセル列を探索範囲(133)とし、探索範囲に、同色セルが基準点設定方向に連結しており、かつ、探索範囲内で同色セルの連結が終了しているセルである独立連結セル(137、138、139)が、画像を挟んで、基準点設定方向において同じ位置にある場合、その1対の独立連結セルの中心を、基準点に設定する。
【0029】
このようにしても、誤った位置を基準点に設定してしまうことを抑制しつつ、基準点を等間隔に近い間隔で設定できる。
【0030】
請求項10に記載のコード読み取り装置では、基準点設定部は、初回候補セルを含む同色セルブロックが誤り訂正されている場合、初回候補セルを含み画像に対して接近離隔方向に延びるセル列に、相互に1列ずれて存在している2つのエッジであって、2つのエッジ間が1セル分である段差エッジ(140)がある場合、基準点設定方向において2つのエッジの中間に基準点を設定する。
【0031】
このようにすれば、誤った位置を基準点に設定してしまうことを抑制しつつ、基準点設定方向における基準点間の距離を等間隔に設定できる。
【0032】
請求項11に記載のコード読み取りプログラムは、請求項1のコード読み取り装置が備えるプログラムである。すなわち、コード読み取りプログラムは、
コード領域(110)と画像(120)とが組み合わせられており、コード領域には、複数色のセルによりデータコード語と誤り訂正コード語とが記録されている2次元コードである画像付き2次元コード(100)から、データコード語を読み取るために、画像付き2次元コードを撮像可能な撮像部(23)と、コンピュータ(40)とを備えたコード読み取り装置において、コンピュータを、
撮像部によって画像付き2次元コードが撮像された場合に、コード領域に記録されたデータコード語を、誤り訂正処理を行いつつ読み取るデータ読み取り部(S20)と、
データ読み取り部がデータコード語を読み取ったことにより定まるセルの配列に基づいて、セル座標を補正するセル座標補正部(S60)と、
補正後のセル座標に基づいて、画像全体を含む全体復元領域を分割した分割領域を定める点になる基準点を設定する基準点設定部(S70)と、
基準点に基づいて定まる分割領域を平面画像に復元する復元処理を行う復元処理部(S80)として機能させるためのコード読み取りプログラムである。
【図面の簡単な説明】
【0033】
【
図1】実施形態となるコード読み取り装置10の機械的構成を示すブロック図である。
【
図2】画像付き2次元コード100を撮像したコード撮像画像の一例を示す図である。
【
図3】制御回路40が実行する画像復元処理を示すフローチャートである。
【
図5】
図3のS70の基準点設定処理を詳しく示すフローチャートである。
【
図6】
図5のS72で設定する初回候補セル130を説明する図である。
【
図7】
図5のS74で実行する基準セル変更処理を詳しく示すフローチャートである。
【
図8】S741において単独セルを探索する探索範囲133を例示する図である。
【
図9】
図7のS745で拡大した後の探索範囲133を例示する図である。
【
図10】
図7のS747で探索する1対の独立連結セルを例示する図である。
【
図11】
図7のS747で探索する1セル分の段差エッジ140を例示する図である。
【
図12】
図3のS80の湾曲復元処理を詳しく示すフローチャートである。
【
図13】
図12のS81で作成する分割領域150の一例を示す図である。
【
図14】
図2に示す画像120を復元した平面復元画像を示す図である。
【
図15】実施形態とは異なる画像付き2次元コード200を示す図である。
【
図16】画像付き2次元コード100が円筒体250に表されている状態を示す図である。
【
図17】
図16の画像付き2次元コード100の部分の拡大図である。
【
図18】画像付き2次元コード300を示す図である。
【
図19】画像付き2次元コード400を示す図である。
【
図20】画像付き2次元コード500を示す図である。
【発明を実施するための形態】
【0034】
以下、実施形態を図面に基づいて説明する。
図1は、実施形態となるコード読み取り装置10の機械的構成を示すブロック図である。なお、外見は省略しているが、このコード読み取り装置10は携帯型である。コード読み取り装置10は、2次元コードに記録されているデータコード語を光学的に読み取る装置である。
【0035】
[機械的構成の説明]
回路部20は、図示しないハウジング内に収容されている。この回路部20は、主に、光学系とコンピュータ系と電源系とから構成されている。光学系は、マーカ光投射器60、発光ダイオード21、受光センサ23、結像レンズ27等から構成されている。
【0036】
発光ダイオード21は、ハウジング本体の読取口(図示せず)を介して読み取り面Rに向けて照明光Lfを照射可能に構成されている。受光センサ23は、撮像部の一例であり、読み取り面Rに照射された照明光Lfが反射して生じた反射光Lrを受光可能に構成される。例えば、C-MOSやCCD等の固体撮像素子である受光素子を数10万から数100万個オーダでm行n列の2次元に配列して構成されている。受光素子は、受光した光を電気信号に変換して出力する。
【0037】
この受光センサ23の受光面23aは、ハウジング本体外から上述の読取口を介して外観可能に位置しており、受光センサ23は、結像レンズ27を介して入射する入射光をこの受光面23aで受光可能に配置されている。
【0038】
結像レンズ27は、外部から読取口を介して入射する入射光を集光して受光センサ23の受光面23aに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。発光ダイオード21から照射された照明光Lfが読み取り面Rに反射して読取口に入射する反射光Lrは、結像レンズ27により集光され、これにより、受光センサ23の受光面23aにコード像が結像する。マーカ光投射器60は、2次元コードの読み取り範囲を示すマーカ光Mを読み取り面Rに投射する。
【0039】
次に、コンピュータ系の構成概要を説明する。コンピュータ系は、増幅回路31、A/D変換回路33、メモリ35、アドレス発生回路36、同期信号発生回路38、制御回路40、操作スイッチ42、LED43、ブザー44、液晶表示器46、無線通信部47、通信インタフェース48等から構成されている。このコンピュータ系は、前述した光学系によって撮像されたコード像の画像信号をハードウェア的およびソフトウェア的に信号処理し得るものである。また制御回路40は、コード読み取り装置10の全体システムに関する制御も行っている。
【0040】
光学系の受光センサ23から出力される画像信号(アナログ信号)は、増幅回路31に入力されて所定ゲインで増幅された後、A/D変換回路33に入力されて、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データは、メモリ35に入力されて蓄積される。なお、同期信号発生回路38は、受光センサ23およびアドレス発生回路36に対する同期信号を発生可能に構成されている。また、アドレス発生回路36は、この同期信号発生回路38から供給される同期信号に基づいて、メモリ35に格納される画像データの格納アドレスを発生可能に構成されている。
【0041】
メモリ35は、半導体メモリ装置で、例えばRAM(DRAM、SRAM等)やROMがこれに相当する。ROMには、画像処理プログラム、コード読み取りプログラムの他、マーカ光投射器60、発光ダイオード21、受光センサ23等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
【0042】
制御回路40は、コード読み取り装置10全体を制御可能なコンピュータであり、CPU、システムバス、入出力インタフェース等からなる。この制御回路40は、内蔵された入出力インタフェースを介して種々の入出力装置(周辺装置)と接続可能に構成されている。また、電源スイッチ41、操作スイッチ42、LED43、ブザー44、液晶表示器46、通信インタフェース48、マーカ光投射器60等が制御回路40に接続されている。
【0043】
この制御回路40は、例えば、2次元コードのデコード処理、および2次元コードが備えている画像の復元処理を行う。その他にも、電源スイッチ41や操作スイッチ42の監視や管理、LED43の点消灯、ブザー44の鳴動のオンオフ、液晶表示器46の画面制御、通信インタフェース48の通信制御、マーカ光投射器60からのマーカ光Mの投射制御等を行う。
【0044】
電源系は、電源スイッチ41、電池49等により構成されており、制御回路40により管理される電源スイッチ41のオンオフによって、上述した各装置や各回路に、電池49から供給される駆動電圧の導通や遮断が制御されている。
【0045】
[画像付き2次元コード100の説明]
コード読み取り装置10は種々の2次元コードが読み取り可能であり、
図2に示す画像付き2次元コード100を読み取ることもできる。
図2に示す画像付き2次元コード100は、フレームQRと呼ばれる2次元コードである。フレームQRは登録商標である。
【0046】
図2に示す画像付き2次元コード100は、本来の形状は正方形である。しかし、
図2では湾曲した形状になっている。この理由は、
図2は、円柱状の曲面に形成された画像付き2次元コード100を撮像したものだからである。
【0047】
画像付き2次元コード100は、四角枠形状にコード領域110が形成されており、このコード領域110と画像120とが組み合わせられたコードである。画像120は、四角枠形状のコード領域110の内側に配置されている。
【0048】
コード領域110には、明セルと暗セルとがそれぞれ多数配置されており、明セルと暗セルにより、種々の規定パターン、データコード語、誤り訂正コード語が符号表現される。一方、画像120は、符号を読み取る必要がない部分である。
【0049】
規定パターンには、位置検出パターン111などがある。位置検出パターン111の周囲には、フォーマット情報を記録する領域がある。コード領域110において、データコード語が記録される部分と、誤り訂正コード語が記録される部分は、規格等により予め定められている。フォーマットが分かれば、データコード語が記録される部分と、誤り訂正コード語が記録される部分がどこであるかは決定可能である。この画像付き2次元コード100のコード領域110の生成方法は、特許文献1に記載された方法と同じ方法を採用することができる。
【0050】
本実施形態のコード読み取り装置10は、コード読み取りプログラムを実行することで、コード領域110に記録されているデータコード語を読み取ることに加えて、画像120の歪みを補正する機能を備える。画像120の歪みを補正する機能は特許文献1にも開示されている。しかし、本実施形態のコード読み取り装置10は、円筒面などの曲面に画像付き2次元コード100が形成されている場合に、特許文献1に開示されている画像補正処理よりも、歪みの少ない復元画像を得ることができる。以下、本実施形態のコード読み取り装置10が行う画像復元処理について説明する。
【0051】
[画像復元処理の説明]
図3に、制御回路40が実行する画像復元処理を示す。ステップ(以下、ステップを省略)S10では、画像付き2次元コード100を含む画像を撮像する。S20はデータ読み取り部としての処理であり、データ読み取り処理を行う。データ読み取り処理は、S10で撮像した画像からコード領域110を特定し、そのコード領域110からデータコード語を読み取る処理である。コード領域110からデータコード語を読み取る処理は、特許文献1に記載された処理と同じ処理である。ここでは、画像復元処理に関連する部分を中心に、データ読み取り処理を説明する。
【0052】
データ読み取り処理では、コード領域110の湾曲を検出しており、湾曲に応じてセルの配列方向を推定する。湾曲の検出方法の一例を
図4に示す。
図4に示す例では、位置検出パターン111において、画像付き2次元コード100の同一の外辺上の点となる4つの頂点112a、112b、112c、112dを決定する。これら4つの頂点を通る線の中点113と、両端の頂点112a、112dを通る直線の中点114との差dを求める。この差dが大きいほどコード領域110の湾曲が大きいとする。
【0053】
このようにして検出した湾曲になるように各列のセルが配列しているとして、各列の明暗を検出する。セルの明暗の変化は、S10で撮像した画像をエッジ検出することで決定する。また、撮像した画像における各セルの大きさは、撮像した画像における画像付き2次元コード100の全体の大きさと、フォーマット情報から決定できる1辺のセル数から計算する。
【0054】
また、データ読み取り処理では、データコード語を正しく読み取るために、誤り訂正処理を行う。誤り訂正処理は、誤り訂正コード語を用いた演算を行って、復号できなかったシンボルキャラクタや間違って復号したシンボルキャラクタを訂正する処理である。なお、誤り訂正コード語は、たとえばリード・ソロモン符号であり、データコード語から生成する。
【0055】
S30では、S20でのデータ読み取り処理の結果が、読み取り成功であったか否かを判断する。読み取り成功である場合、誤り訂正処理により、データコード語が正しく復元されたことになる。S30の判断がYESであればS40に進む。一方、S30の判断がNOであればS10に戻り、撮像をやり直す。
【0056】
S40では、S10で撮像した画像付き2次元コード100が湾曲しているか否かを判断する。S20で実行するデータ読み取り処理では、コード領域110の湾曲を検出しているので、このS40ではS20での検出結果に基づいて判断を行う。たとえば、
図4に示す差dの大きさに基づいて、S10で撮像した画像付き2次元コード100が湾曲しているか否かを判断する。S40の判断がNOであればS50へ進み、YESであればS60へ進む。
【0057】
S50では平面復元処理を行う。平面復元処理では、まず、画像120の全体を含む全体復元領域の頂点を特定する。ここでの頂点は、コード領域110において、画像120との境界となる四角枠の各頂点であり、頂点により囲まれる領域が全体復元領域である。
【0058】
頂点を特定した後は、複数の頂点間の間隔が、フォーマットにより定まる規定の頂点間の間隔になるように全体復元領域の形状を変換する。変換処理には、たとえば、射影変換処理を用いる。射影変換処理を用いて画像を変換する処理は特許文献1にも開示されている。
【0059】
S60はセル座標補正部としての処理であり、セル座標補正を行う。セル座標補正は、各セルの中心座標を補正する処理である。セル座標補正を行う理由は次の通りである。S10で撮像した画像付き2次元コード100が湾曲している場合、同じセル列内のセルであっても画像上の大きさは異なる。たとえば、
図2に示している画像付き2次元コード100では、図左右方向の正面から離れたセルほど、画像上でのサイズは小さくなっている。
【0060】
したがって、1セル列の長さを、フォーマット情報から決定した1セル列のセル数で割った長さを、単純に1セルの長さとするだけでは、画像上での各セルの大きさを正しく決定することができない。その結果、画像解析結果から決定できる明セルおよび暗セルが、何セル分であるかを正しく決定できない。
【0061】
しかし、誤り訂正処理を含んでいるデータ読み取り処理により読み取りが成功した場合には、データコード領域のセルの配列が決定できていることになる。加えて、フォーマット情報から、画像付き2次元コード100のセル数、規定パターンの位置も決定できる。さらに、誤り訂正コード語は、データコード語から生成することができる。これらのことから、読み取りに成功している場合、コード領域110の全てのセルの明暗が決定できることになる。
【0062】
そこで、読み取り結果から定まる各セル列の明セルおよび暗セルの配列を、画像解析結果から決定できる各セル列の明セルおよび暗セルの配列に当てはめる。これにより、画像解析結果から決定できる各セル列の明セルおよび暗セルが、何セルの連続であるかが決定できる。この決定結果をもとに、画像上での各セルの中心座標を再決定する。この処理がセル座標補正である。
【0063】
S70で基準点設定部としての処理であり、基準点設定処理を行う。基準点は、画像120の全体を含む全体復元領域を分割した分割領域を定める点である。基準点設定処理は、詳しくは、
図5に示す処理である。
【0064】
図5において、S71では湾曲方向を推定する。
図2の例では、画像の左右方向が湾曲している方向であり、上下方向は湾曲していない。湾曲方向を推定するために、
図4に示す差dを、画像付き2次元コード100において、互いに同じ辺に位置する2つの位置検出パターン111について算出する。
図2の例では、左右方向に並んだ2つの位置検出パターン111および上下方向に並んだ2つの位置検出パターンのそれぞれに対して差dを算出する。そして、その差dが相対的に大きい側を湾曲方向とする。
【0065】
続くS72では、セル中心が基準点となるセルである基準セルの候補として、初回候補セル130を設定する。初回候補セル130は、全体復元領域を定める
図6に示す四角枠132において、湾曲方向に沿った方向に等間隔に並んだセルである。
【0066】
図6は、初回候補セル130を説明するための図であり、図示の便宜上、湾曲していない状態で画像付き2次元コード100を示し、また、説明に不要な部分は省略している。また、
図6では、初回候補セル130の位置を黒色の四角で示しているが、これは、初回候補セル130の位置を示すものに過ぎず、暗セルを意味している訳ではない。
図6では、コード領域110内のセルの色は示していない。
【0067】
四角枠132は、セルの結合により形成され、画像120を含むように定められる。本実施形態では、四角枠132は、具体的には、画像120に隣接するセルにより形成される。初回候補セル130は、四角枠132において、湾曲方向に沿った方向となる一対の辺に、互いに対向するように設定される。初回候補セル130の間隔は、
図6では4セル間隔としているが、3セル以下の間隔でもよい。また、5セル以上でもよい。初回候補セル130の間隔が狭いと、平面復元画像が、正しい平面画像に近い画像になる利点があるが、処理が煩雑になる。反対に、初回候補セル130の間隔が広いと、処理は簡単になるが、平面復元画像に湾曲の影響が残る程度が増加する。これらを考慮して初回候補セル130の間隔を決定する。
【0068】
S73では、初回候補セル130と、その初回候補セル130に対して基準点設定方向に連続する同色のセルを含む同色セルブロックに対して誤り訂正がされているか否かを判断する。この同色セルブロックに含まれる少なくとも1つのセルが誤り訂正されている場合、S73の判断はYESになり、この同色セルブロックに含まれる全てのセルが誤り訂正されていない場合、S73の判断がNOになる。
【0069】
S73の判断は、初回候補セル130ごとに行う。S73の判断がNOであれば
図5の処理を終了し、
図3のS80に進む。この場合、S72で設定した初回候補セル130がそのまま基準セルになり、基準セルのセル中心を基準点とする。
【0070】
図6において、×印を付しているセルが誤り訂正されているセルである。上側の左から3番目の初回候補セル130に×印が付されている。したがって、
図6の例では、上側の左から3番目の初回候補セル130についてはS73の判断がYESになる。S73の判断がYESであればS74に進む。
【0071】
S74では基準セル変更処理を行う。基準セル変更処理は、詳しくは
図7に示す処理である。
図7において、S741では、初回候補セル130がある列を画像120から離隔する方向に、画像120側から順に、単独セルがあるか否かを探索する。
【0072】
図8に、S741において単独セルを探索する探索範囲133を例示する。
図8の例では、誤り訂正された同色セルブロックに含まれている初回候補セル130が画像120の上側にあるため、その初回候補セル130がある列を画像120から離隔する方向に延びる探索範囲133は、画像120から上方向に延びている。
【0073】
単独セルは、基準点設定方向において両隣が他色になっている1つのセルである。
図8には、いくつかの暗セルと明セルを示している。
図8において、探索範囲133内には、暗セルである単独セル134および明セルである単独セル135が存在する。
【0074】
S724では、探索の結果、単独セルがあったか否かを判断する。S724の判断がYESであればS743に進む。S743では、探索できた単独セルに対して、画像120を挟んで対向する位置に基準セルが設定されているか否かを判断する。
図8の例では、画像120の下側に設定されている初回候補セル130は、いずれも、誤り訂正されていないことから、そのまま基準セルになる。したがって、
図8の例において、上側の左から3番目の初回候補セル130に対して
図7の処理が実行された場合、S743の判断はYESになる。S743の判断がYESであればS744に進む。S744では、S741で探索できた単独セルのセル中心を基準点とする。
【0075】
S742の判断がNOである場合、および、S743の判断がNOである場合には、S745に進む。S745では、探索範囲133を基準点設定方向の両側に拡張する。
図9には、拡大後の探索範囲133を例示している。
図9に示す探索範囲133は、初回候補セル130に対して基準点設定方向に隣接するセルを含み画像120に対して接近離隔方向に延びるセル列である。
【0076】
また、
図9に示すように、S745を実行する場合には、画像120を基準にして、S741で設定した探索範囲133とは反対側についても探索範囲133を設定する。そして、1対の探索範囲133について、S741と同様に単独セルを探索する。
【0077】
図9に示す例は、
図8とは異なるセルパターンである。
図6、
図8と同様、コード領域110内のセルの色は示していない。ただし、一点鎖線で囲んだセル色明示範囲136については、セルの色を示している。
【0078】
S746では、画像120を挟んで一対の単独セルが検出できたか否かを判断する。
図9の例では、探索範囲133において、
図8に対して右側に拡張された部分に、一対の単独セルが検出できている。
【0079】
S746の判断がYESであればS744に進み、S744において、S743での探索の結果、抽出した一対の単独セルのセル中心を基準点とする。S746の判断がNOであればS747に進む。
【0080】
S747では、探索範囲133に1対の独立連結セルがあるか否かを判断する。独立連結セルは、同色セルが基準点設定方向に連結している複数のセル(以下、連結セル)であり、かつ、探索範囲133内で同色セルの連結が終了している連結セルである。画像120を挟んで基準点設定方向において同じ位置に同じセル数の独立連結セルがある場合、1対の独立連結セルがあるとする。
【0081】
図10には、
図9とは異なるセルパターンであり、拡張された探索範囲133に1対の単独セルはないが、1対の独立連結セルがある例を示している。
図10の例では、暗セルが3つ連結した独立連結セル137、暗セルが2つ連結した独立連結セル138、明セルが2つ連結した独立連結セル139が、上下両側の探索範囲133にそれぞれ1対存在している。
【0082】
S747の判断がYESであればS748に進む。S748では、S747で検出した1対の独立連結セルの中心を基準点に決定する。たとえば、暗セルが3つ連結した独立連結セル137であれば、その3つの暗セルの中心を基準点に決定する。
【0083】
S747の判断がNOであればS749に進む。S749では、誤り訂正がされていることにより基準セルに採用されなかった初回候補セル130を含み、画像120に対して接近離隔する方向の列に、1セル分の段差エッジがあるか否かを判断する。エッジは、撮像画像の輝度値が急峻に変化する点であり、明セルと暗セルの境界である。段差エッジは、1組のエッジであって、その1組のエッジが同一列ではなく、1列ずれて存在しているものを意味する。1セル分の段差エッジは、1組の段差エッジ間が1セル分であることを意味する。
【0084】
1組の段差エッジ間が1セル分であるか否かは、コード読み取り結果と、エッジの位置の比較から決定する。具体的には、データ読み取り処理により得られたセル種類の配列とエッジの位置とから、エッジが、基準点設定方向において端からそれぞれ何セル目と何セル目の境界であるかを求める。この境界の位置が1セル分ずれている場合に、1組の段差エッジ間が1セル分であるとする。
【0085】
図11には、
図9、
図10とは異なるセルパターンであり、拡張された探索範囲133に、1対の単独セルおよび1対の独立連結セルはないが、1セル分の段差エッジ140がある例を示している。
図11において、セル色明示範囲136に、2つのエッジ141、142が示されている。エッジ141は画像120から数えて3列目に存在しており、エッジ142は画像120から数えて4列目に存在している。
【0086】
S749の判断がYESであればS750に進む。S750では、S749で検出した1セル分の段差エッジ140を構成する2つのエッジ141、142の基準点設定方向の位置の中点を、基準点の基準点設定方向の座標とする。基準点の、基準点設定方向に直交する方向の座標は、段差エッジ140に含まれる座標であればよい。たとえば、エッジ141により定まるセルの中心、エッジ142により定まるセルの中心、これら2つのセルの境界のいずれかを、基準点の、基準点設定方向に直交する方向の座標とする。
【0087】
S749の判断がNOである場合、S744、S748、S750のいずれかを実行した場合には
図7の処理を終了する。
図7の処理を終了することで
図5の処理も終了することになるので、
図3のS80に進む。
【0088】
図3のS80は復元処理部としての処理であり、湾曲復元処理を実行する。湾曲復元処理は、画像120が湾曲している場合に、その画像120を平面画像に復元する処理である。S80の湾曲復元処理あるいはS50の平面復元処理を実行して得た画像を、平面復元画像とする。湾曲復元処理は、詳しくは
図12に示す処理である。
【0089】
図12において、S81では、分割領域150を作成する。分割領域150は、S70の基準点設定処理で設定した基準点を4つの頂点とする四角形の領域である。
図13に、分割領域150の一例を示している。なお、
図13に示す画像付き2次元コード100では、分割領域150の説明に不要な要素は省略している。
図13には、基準点151が、画像120を挟んで上下に8つずつ設定されており、分割領域150は7つ形成されている。分割領域150は、画像120の一方の側において互いに隣接する2つの基準点151と、その2つの基準点151と画像120を挟んで対向する、互いに隣接する2つの基準点151を4つの頂点とする四角形の領域である。なお、これら分割領域150を全部組み合わせた領域が全体復元領域である。
【0090】
S82では、S81で作成した分割領域150を1つずつ射影変換する。これにより、分割領域150は、各頂点がデータ読み取り処理で得たセルの配列から定まる、分割領域150を正面から見た形状に変換される。本実施形態では、変換後の形状は長方形であるので、変換後の分割領域150を長方形領域とする。
【0091】
S83では、全部の分割領域150を変換したか否かを判断する。この判断がNOであればS82に戻り、まだ変換していない分割領域150を長方形領域に変換する。S83の判断がYESになった場合、S84に進む。
【0092】
S84では、全部の長方形領域を合成する。これにより平面復元画像が作成できる。
図14には、
図2に示す画像120を、このようにして復元した平面復元画像を示している。
【0093】
説明を
図3に戻す。S50またはS80を実行後はS90に進む。S90では、S50またはS80で作成した平面復元画像を出力する。出力先は、画面、紙、他の処理装置などである。
【0094】
[実施形態のまとめ]
データ読み取り処理(S20)によりデータコード語の読み取りができたとき(S30:YES)、画像付き2次元コード100は各列のセルの配列が判別できたことになる。そして、セルの配列が定まると、セルの配列を、S10で撮像したコード撮像画像を画像解析することで抽出できるセル配列と照らし合わせることで、コード撮像画像におけるセルの座標を補正することができる(S60)。
【0095】
そして、補正後のセル座標に基づいて、画像120の全体を含む全体復元領域を分割した分割領域150を定める点になる基準点151を設定する。このようにして基準点151を設定することから、画像付き2次元コード100が曲面に形成されていても、画像付き2次元コード100が平面にあるときの基準点151の間隔が分かる。したがって、このようにして基準点151を設定することで、湾曲復元処理(S80)では、分割領域150の基準点151を、画像付き2次元コード100が平面にあるときの位置に精度よく戻すことができる。
【0096】
しかも、湾曲復元処理(S80)では、画像120の全体を含む基準点151を設定して画像120を復元するのではなく、画像120を分割した分割領域150ごと復元処理を行う。したがって、画像付き2次元コード100が曲面に形成されていることにより、平面画像では直線である線が曲線になっているとしても、その曲線は、画像120の全体を含む全体復元領域よりは分割領域150のほうが直線との乖離が少ない。そのため、分割領域150に含まれる基準点設定方向のセル列を、精度よく歪みの少ない配列に戻すことができる。よって、分割領域150を正面から見た画像に戻した長方形領域を合成して得られる平面復元画像は、画像120が精度よく平面画像に変換された画像になる。
【0097】
また、基準点151を、画像120を挟んで設定しているので、画像120が斜め方向から撮像されている場合でも、分割領域150の各頂点を、画像付き2次元コード100を平面としたときの座標に正しく対応させることができる。
【0098】
また、基準点151として、画像120を挟んで互いに向かい合う位置にある単独セル134、135のセル座標を設定するので、精度のよい基準点151を設定することができ、その結果、平面画像の復元精度が向上する。
【0099】
また、単独セル134、135を、画像120に近い側から順に探索するので、基準点151を画像120に近い位置に決定でき、その結果、分割領域150を小さくすることができる。
【0100】
また、初回候補セル130を基準点設定方向において等間隔に設定しつつ、かつ、初回候補セル130を含む同色セルブロックが誤り訂正されている場合には、基準セルを変更する。これにより、誤った位置を基準点151に設定してしまうことを抑制しつつ、基準点151を等間隔に設定できる。
【0101】
また、初回候補セル130を基準セルに設定しない場合、探索範囲133を、基準点設定方向に隣接するセル列に拡張して1対の単独セルを基準セルに設定する。この処理によって、誤った位置を基準点に設定してしまうことを抑制しつつ、基準点を等間隔に近い間隔で設定できる。
【0102】
また、初回候補セル130を基準セルに設定しない場合、探索範囲133に1対の独立連結セルを探索し、独立連結セルの中心を基準点に設定することもできる。この処理によっても、誤った位置を基準点に設定してしまうことを抑制しつつ、基準点を等間隔に近い間隔で設定できる。
【0103】
また、初回候補セル130を基準セルに設定しない場合、初回候補セル130と同じセル列に、1セル分の段差エッジ140があれば、その段差エッジ140が備える2つのエッジ141、142間を1セルと見たて、基準点を設定することもできる。この処理によって、誤った位置を基準点に設定してしまうことを抑制しつつ、基準点設定方向における基準点間の距離を等間隔に設定できる。
【0104】
以上、実施形態を説明したが、開示した技術は上述の実施形態に限定されるものではなく、次の変形例も開示した範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施できる。なお、以下の説明において、それまでに使用した符号と同一番号の符号を有する要素は、特に言及する場合を除き、それ以前の実施形態における同一符号の要素と同一である。また、構成の一部のみを説明している場合、構成の他の部分については先に説明した実施形態を適用できる。
【0105】
<変形例1>
実施形態では、画像120の全部を平面復元処理をしていたが、画像120の一部のみを平面画像復元処理の対象としてもよい。画像付き2次元コードは、データ読み取り処理においてデータコード後の読み取りに成功した場合に復元処理を行う。データコード語に復元範囲を記録しておけば、画像のどの範囲を復元処理すればよいかを決定することができる。
【0106】
図15は、前述した実施形態とは異なる画像付き2次元コード200を示している。画像付き2次元コード200は、アンケートの回答を画像220としている。アンケートの回答は、チェック欄221を画像解析すればよく、チェック欄221が何に対するチェックであるかは、画像解析をする必要がない既知の事項である。
【0107】
そこで、チェック欄221を含む1つの分割領域150のみ、復元処理をして平面復元画像とする。この場合、分割領域150は1つのみであるが、画像220の一部を復元処理する領域とし、残りは復元処理をしない領域に分割していることになる。
【0108】
この変形例1において、基準点および分割領域の設定方法は実施形態と同じとし、復元処理をする領域を、チェック欄221を含む分割領域150のみとすることができる。また、チェック欄221を含む1つの分割領域150のみを形成するように基準点を設定してもよい。
【0109】
この変形例1で示したように、画像220の一部の分割領域150のみを平面復元画像にするようにすれば、画像220の全部を複数の分割領域に分割して、全部の分割領域を平面画像に復元するよりも、復元処理時間を短くすることができる。
【0110】
<変形例2>
実施形態において、S10で撮像したコード撮像画像は、画像横方向の中心から、画像左右方向の端に向かうほどセルの間隔が狭くなっていた。
図16には、画像付き2次元コード100を撮像した別例を概念的に示している。
図16では、画像付き2次元コード100は円筒体250に表されている。
図16において一点鎖線は、コード読み取り装置10に対する円筒体250の正面の位置である。
図16に示す例では、画像付き2次元コード100は、円筒体250の正面に位置していない。
【0111】
図17は、
図16に示す画像付き2次元コード100の拡大図である。
図17に示すように、画像付き2次元コード100は、円筒体250の正面から離れるほど、セルの間隔が狭くなっている。したがって、
図16、
図17に示す例では、セル座標補正後の各セルの中心座標の間隔は、図右側ほど狭くなる。コード撮像画像において、セル座標間の間隔が狭い部分は、セル座標間の間隔が広い部分に比較して、平面画像に対する歪みが大きい部分である。
【0112】
この例において、コード撮像画像において等間隔になるように基準点を設定してしまうと、
図17の右側と左側とで、基準点間に含まれるセルの数が異なってしまう。しかし、同じコード撮像画像内でセルの大きさが異なって写っているとしても、等セル間隔で基準点を設定することで、セルの中心座標の間隔が狭いほど、基準点の間隔を狭くすることができる。
【0113】
これにより、歪みが大きい部分に対して、相対的に小さい分割領域を設定できる。よって、コード撮像画像において一定間隔で基準点を設定するよりも、精度のよい平面画像を復元することができる。
【0114】
<変形例3>
画像付き2次元コードは、実施形態に示したものに限られない。他にも、
図18に示すように、1対の長方形状のコード領域310が画像320を挟んでいる画像付き2次元コード300でもよい。また、
図19に示すように、画像420を小さくし、コード領域410を大きくした画像付き2次元コード400でもよい。画像420が小さい場合、画像420をデータコード語を記録する領域に重畳して、誤り訂正機能で、画像420により読み取れないデータコード語を復元するようにしてもよい。
【0115】
さらに、
図20に示すように、画像520がコード領域510に囲われていない画像付き2次元コード500が備えている画像520を復元処理の対象としてもよい。この場合、画像520を挟んで基準点を設定することはできない。そこで、コード領域510において画像520に近い位置に一列に基準点を配置し、隣接する基準点間を1辺として所定形状の分割領域を設定する。所定形状は、たとえば長方形であり、隣接する基準点間を短辺とする。この場合、長辺の延びる方向は、基準点を通り、その基準点を端とする2つの短辺の角度を2等分する方向とする。長辺の長さは、画像付き2次元コード500が撮像された大きさに基づいて決定すればよい。
【0116】
<変形例4>
画像付き2次元コードが備えている画像の形状は四角形に限られない。画像付き2次元コードが備えている画像の形状は、四角形以外の多角形、丸型など、形状に制限はない。全体復元領域を、その画像を含む所定形状(たとえば四角形など)にすればよいからである。
【0117】
<変形例5>
分割領域は、四角形である必要はなく、他の形状、たとえば、三角形でもよい。
【0118】
<変形例6>
コード読み取り装置として、スマートフォンを用いることもできる。
【符号の説明】
【0119】
10:コード読み取り装置 23:受光センサ(撮像部) 40:制御回路 100:画像付き2次元コード 110:コード領域 111:位置検出パターン 113:中点 114:中点 120:画像 130:初回候補セル 132:四角枠 133:探索範囲 134:単独セル 135:単独セル 136:セル色明示範囲 137、138、139:独立連結セル 140:段差エッジ 141:エッジ 142:エッジ 150:分割領域 151:基準点 200:画像付き2次元コード 220:画像 221:チェック欄 250:円筒体 300:画像付き2次元コード 310:コード領域 320:画像 400:画像付き2次元コード 410:コード領域 420:画像 500:画像付き2次元コード 510:コード領域 520:画像 S20:データ読み取り部 S60:セル座標補正部 S70:基準点設定部 S80:復元処理部