JP4970385B2 - Two-dimensional code reader and program thereof - Google Patents
Two-dimensional code reader and program thereof Download PDFInfo
- Publication number
- JP4970385B2 JP4970385B2 JP2008208095A JP2008208095A JP4970385B2 JP 4970385 B2 JP4970385 B2 JP 4970385B2 JP 2008208095 A JP2008208095 A JP 2008208095A JP 2008208095 A JP2008208095 A JP 2008208095A JP 4970385 B2 JP4970385 B2 JP 4970385B2
- Authority
- JP
- Japan
- Prior art keywords
- dimensional code
- boundary
- point
- image data
- distortion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 68
- 238000001514 detection method Methods 0.000 claims description 27
- 238000003384 imaging method Methods 0.000 claims description 6
- 241000269627 Amphiuma means Species 0.000 claims 1
- 230000006870 function Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000005484 gravity Effects 0.000 description 4
- 241000226585 Antennaria plantaginifolia Species 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
- Facsimile Image Signal Circuits (AREA)
Description
この発明は、例えば印刷された2次元コードをカメラにより撮像し、その画像データをもとに2次元コードを解読する2次元コード読取装置とそのプログラムに関する。 The present invention relates to, for example, a two-dimensional code reading apparatus that captures an image of a printed two-dimensional code with a camera and decodes the two-dimensional code based on the image data, and a program thereof.
近年、雑誌等の印刷物に表示されたQRコードに代表される2次元コードを例えば携帯電話機のカメラにより撮像し、その画像データから上記2次元コードに含まれるURL(Uniform Resource Locator)を認識する。そして、このURLをもとにインターネットに対しアクセスすることにより、対応するWebサーバから情報を取得できるようにするサービスが普及している。この種のサービスを利用すると、ユーザはURLをキー操作により入力する必要がなくなり、大変便利である。 In recent years, a two-dimensional code represented by a QR code displayed on a printed matter such as a magazine is imaged by a camera of a mobile phone, for example, and a URL (Uniform Resource Locator) included in the two-dimensional code is recognized from the image data. Then, a service that allows information to be acquired from a corresponding Web server by accessing the Internet based on this URL has become widespread. When this type of service is used, the user does not need to input the URL by key operation, which is very convenient.
しかしながら、2次元コードを携帯電話機のカメラにより撮像する際に、2次元コードにカメラが正対していないと、2次元コードの撮像画像が台形状に歪んでしまい、2次元コードを正しく認識できなくなることがある。そこで、従来では撮像された2次元コードの形状を矯正する機能を備えた2次元コード読取装置が提案されている。例えば、図19に示すように撮像された2次元コード画像PCの周囲に四角形ABCDを設定し、0≦s≦1,0≦t≦1を満たすs、tに対してAP:PB=CP′:P′D=s:1−s、AQ:QC=BQ′:Q′D=t:1−tとなるPP′及びQQ′を設定する。これにより任意のs及びtに対してPP′とQQ′の交点R(s,t) が求まる。ここで、あるtに対して0から1までsを変化させることにより2次元コードの一部を検査することが可能となる。さらに、0から1までのtに対して上記検査線を設定することにより2次元コード全体を検査することが可能となり、画像に含まれるデータ領域のセル位置が決定される(例えば、特許文献1を参照。)。 However, when the two-dimensional code is captured by the camera of the mobile phone, if the camera does not face the two-dimensional code, the captured image of the two-dimensional code is distorted into a trapezoidal shape and the two-dimensional code cannot be recognized correctly. Sometimes. Therefore, conventionally, a two-dimensional code reading device having a function of correcting the shape of the captured two-dimensional code has been proposed. For example, as shown in FIG. 19, a square ABCD is set around the captured two-dimensional code image PC, and AP: PB = CP ′ for s and t satisfying 0 ≦ s ≦ 1, 0 ≦ t ≦ 1. : PP ′ and QQ ′ are set such that P′D = s: 1−s, AQ: QC = BQ ′: Q′D = t: 1−t. As a result, the intersection R (s, t) between PP ′ and QQ ′ is obtained for any s and t. Here, a part of the two-dimensional code can be inspected by changing s from 0 to 1 with respect to a certain t. Furthermore, it becomes possible to inspect the entire two-dimensional code by setting the inspection line for t from 0 to 1, and the cell position of the data area included in the image is determined (for example, Patent Document 1). See).
ところが、上記従来より提案されている装置は、台形状の歪みに対しては有効であるが、例えばカメラの光学系の歪みや印刷物の表面の歪みの影響により、2次元コードの撮像画像が例えば図18(a),(b)に示すように糸巻き型又は樽型に歪んだ場合には、このような曲線状歪みを補正することができず、その結果高精度の認識を行うことができなかった。 However, although the devices proposed so far are effective for trapezoidal distortion, a captured image of a two-dimensional code is obtained, for example, due to the influence of the distortion of the optical system of the camera or the distortion of the surface of the printed material. As shown in FIGS. 18A and 18B, when the pincushion type or barrel type is distorted, such curvilinear distortion cannot be corrected, and as a result, highly accurate recognition can be performed. There wasn't.
この発明は上記事情に着目してなされたもので、その目的とするところは、2次元コード画像が曲線状歪みを有する場合でも、この曲線状歪みを効果的に矯正して高精度のコード解読を可能にした2次元コード読取装置とそのプログラムを提供することにある。 The present invention has been made paying attention to the above circumstances, and the purpose thereof is to effectively correct the curvilinear distortion even when the two-dimensional code image has curvilinear distortion, and decode the code with high accuracy. Is to provide a two-dimensional code reading apparatus and its program.
上記目的を達成するためにこの発明の第1の観点は、撮像手段から2次元コードの画像データを取り込んでメモリに記憶する。そして、メモリから読み出した画像データから、先ず当該2次元コードに含まれる複数のファインダパターンを検出し、この検出された複数のファインダパターンの各々についてその輪郭を表す辺の境界点を検出する。次に、この検出された複数のファインダパターンの辺の境界点をもとに、上記2次元コードの画像データの輪郭を表す4辺の形状を直線及び曲線の少なくとも一方で近似した近似線を生成し、この生成された近似線をもとに上記2次元コードの画像データの歪みを矯正して、この歪みが矯正された2次元コードの画像データを上記メモリに記憶する。そして、この歪みが矯正された2次元コードの画像データをもとに上記2次元コードを解読して出力するように構成する。
上記2次元コードの画像データの4辺の形状を近似して当該4辺の境界線を検出する手段としては、複数のファインダパターンの辺の境界点をもとに上記2次元コードの画像データの輪郭を表す辺の傾きを算出し、この算出された辺の傾きから推測される方向に画素探索を行って、上記2次元コードの画像データの辺を表す境界点を検出する。そして、上記検出された境界点の各々について、当該境界点が、上記算出された辺の傾きから推測される範囲内に含まれているか否かを判定し、含まれていないと判定された境界点をエラー点として上記境界点から削除する手段を用いる。
In order to achieve the above object, according to a first aspect of the present invention, image data of a two-dimensional code is fetched from an imaging means and stored in a memory. Then, a plurality of finder patterns included in the two-dimensional code are first detected from the image data read from the memory, and a boundary point of a side representing the outline of each of the detected plurality of finder patterns is detected. Next, on the basis of the detected boundary points of the plurality of finder patterns, an approximate line is generated by approximating at least one of a straight line and a curve of the shape of the four sides representing the contour of the image data of the two-dimensional code. Then, the distortion of the image data of the two-dimensional code is corrected based on the generated approximate line, and the image data of the two-dimensional code whose distortion is corrected is stored in the memory. Then, it configured to output image data of the two-dimensional code which the distortion is corrected by decoding the two-dimensional code based.
As means for approximating the shape of the four sides of the image data of the two-dimensional code and detecting the boundary lines of the four sides, the image data of the two-dimensional code is based on the boundary points of the sides of the plurality of finder patterns. The inclination of the side representing the contour is calculated, and pixel search is performed in a direction inferred from the calculated inclination of the side to detect a boundary point representing the side of the image data of the two-dimensional code. Then, for each of the detected boundary points, it is determined whether or not the boundary point is included within the range estimated from the calculated side inclination, and the boundary determined not to be included Means for deleting a point from the boundary point as an error point is used.
したがって、撮像した2次元コードの画像が例えば糸巻き型又は樽型の曲線状歪みを有していても、2次元コードの画像データの輪郭を表す4辺の形状が直線及び曲線の少なくとも一方により近似され、その近似線をもとに上記2次元コードの画像データの歪みが矯正される。このため、上記糸巻き型又は樽型の曲線状歪みを有する2次元コード画像に対しても高精度のコード解読を行うことが可能となる。 Therefore, even if the captured image of the two-dimensional code has, for example, a pincushion-type or barrel-type curved distortion, the shape of the four sides representing the contour of the image data of the two-dimensional code is approximated by at least one of a straight line and a curve. The distortion of the image data of the two-dimensional code is corrected based on the approximate line. For this reason, it is possible to perform code decoding with high accuracy even for a two-dimensional code image having the above-described pincushion-type or barrel-type curved distortion.
また、上記目的を達成するためにこの発明の第2の観点は、上記2次元コードの画像データの4辺の形状を近似して当該4辺の境界線を検出する際に、複数のファインダパターンの辺の境界点をもとに上記2次元コードの画像データの輪郭を表す辺の傾きを算出し、この算出された辺の傾きから推測される方向に画素探索を行って、上記2次元コードの画像データの辺を表す境界点を検出し、この検出された境界点に含まれるエラー点を除去する。このとき、上記エラー点を除去する手段としては、2次元コードの画像データの4辺のうち互いに直交する第1及び第2の辺の交点を算出し、この交点より外側の範囲に位置する境界点をエラー点として削除する手段を用いる。
さらに、上記交点の算出手段としては、先ず第1の辺を表す境界点集合に含まれる1個以上の境界点を算出基準点としてしきい値線を引き、第2の辺を表す境界点集合に含まれる境界点が上記しきい値線より交点側に位置するか否かを判定する。そして、上記第2の辺を表す境界点集合のうち上記しきい値線より交点側に位置しない境界点の中から、当該交点に最も近い境界点をしきい値外近接点として検出する。次に、上記算出基準点から上記第1の辺の傾きを推定して引いた直線と上記第2の辺のしきい値外近接点から第2の辺の傾きを推定して引いた直線との交点をもとに交点候補点を算出し、上記第1の辺を表す境界点集合に含まれる境界点のうち上記しきい値線より交点側に位置する境界点の中から上記しきい値直線に最も近い境界点をしきい値内近接点として検出すると共に、上記第2の辺を表す境界点集合に含まれる境界点のうち上記しきい値線より交点側に位置する境界点の中から上記しきい値直線に最も近い境界点をしきい値内近接点として検出する。そして、上記検出された第1の辺のしきい値内近接点と、上記検出された第2の辺のしきい値内近接点のうち、上記算出された交点候補点より外側にあるものはどれかを判定する手段を用いる。
このようにすることで、2次元コードの画像データの4辺において探索された境界点の集合に含まれるエラー点を、より一層確実に削除することが可能となる。
In order to achieve the above object, a second aspect of the present invention provides a plurality of finder patterns when detecting the boundary lines of the four sides by approximating the shape of the four sides of the image data of the two-dimensional code. The inclination of the side representing the contour of the image data of the two-dimensional code is calculated based on the boundary point of the two sides, the pixel search is performed in the direction inferred from the calculated side inclination, and the two-dimensional code is calculated. A boundary point representing a side of the image data is detected, and error points included in the detected boundary point are removed. At this time, as means for removing the error point, the intersection of the first and second sides orthogonal to each other among the four sides of the image data of the two-dimensional code is calculated, and the boundary located in the range outside the intersection A means for deleting a point as an error point is used.
Further, as the intersection calculation means, first, a threshold line is drawn using one or more boundary points included in the boundary point set representing the first side as a calculation reference point, and the boundary point set representing the second side It is determined whether the boundary point included in is located on the intersection side of the threshold line. Then, a boundary point closest to the intersection point is detected as an out-threshold proximity point from among boundary points not located on the intersection side of the threshold line in the boundary point set representing the second side. Next, a straight line obtained by estimating the slope of the first side from the calculation reference point, and a straight line obtained by estimating the slope of the second side from the out-of-threshold proximity point of the second side The intersection point candidate point is calculated based on the intersection point of the boundary point, and the threshold value is selected from the boundary points located on the intersection side of the threshold line among the boundary points included in the boundary point set representing the first side. The boundary point closest to the straight line is detected as an in-threshold proximity point, and among the boundary points included in the boundary point set representing the second side, the boundary point located on the intersection side of the threshold line The boundary point closest to the threshold straight line is detected as a proximity point within the threshold. Of the detected first side in-threshold proximity point and the detected second side in-threshold proximity point, those outside the calculated intersection candidate point are A means for determining which one is used is used .
By doing in this way, it becomes possible to delete the error points included in the set of boundary points searched on the four sides of the image data of the two-dimensional code even more reliably.
さらにこの発明の第3の観点は、2次元コードの歪みを矯正する際に以下のような処理を実行するものである。すなわち、先ず2次元コードの画像データの各頂点を結ぶ頂点フレームを生成する。次に、矯正対象の2次元コードの画像データにおける目標座標のピクセル値を算出するために、上記生成された頂点フレームの、上辺における上記目標座標に対応する点の座標値と、下辺における上記目標座標に対応する点の座標値と、左辺における上記目標座標に対応する点の座標値と、右辺における上記目標座標に対応する点の座標値をそれぞれ算出する。またそれと共に、上記2次元コードの画像データの、上辺における上記目標座標に対応する境界点の座標値と、下辺における上記目標座標に対応する境界点の座標値と、左辺における上記目標座標に対応する境界点の座標値と、右辺における上記目標座標に対応する境界点の座標値をそれぞれ算出する。さらに、上記頂点フレームにおいて上記目標座標に対応する目標座標値を算出する。そして、上記頂点フレームの上下左右の各辺について算出された上記目標座標に対応する点から、上記2次元コードの画像データの上下左右の各辺について算出された上記目標座標に対応する境界点へのベクトルを重み付け加算して、2次元コード歪みベクトルを算出し、上記頂点フレームについて算出された目標座標値に、上記算出された2次元コード歪みベクトルを加算して、上記2次元コードの画像データにおける上記目標座標に対応する目標座標値を算出する。
以上の処理を行うことで、曲線状歪みを有する2次元コードの画像データを長方形に矯正することが可能となる。
Further, according to a third aspect of the present invention, the following processing is executed when correcting the distortion of the two-dimensional code. That is, first, a vertex frame connecting the vertices of the image data of the two-dimensional code is generated. Next, in order to calculate the pixel value of the target coordinate in the image data of the two-dimensional code to be corrected, the coordinate value of the point corresponding to the target coordinate on the upper side of the generated vertex frame and the target value on the lower side The coordinate value of the point corresponding to the coordinate, the coordinate value of the point corresponding to the target coordinate on the left side, and the coordinate value of the point corresponding to the target coordinate on the right side are calculated. At the same time, in the image data of the two-dimensional code, the coordinate value of the boundary point corresponding to the target coordinate on the upper side, the coordinate value of the boundary point corresponding to the target coordinate on the lower side, and the target coordinate on the left side The coordinate value of the boundary point to be calculated and the coordinate value of the boundary point corresponding to the target coordinate on the right side are calculated. Further, a target coordinate value corresponding to the target coordinate is calculated in the vertex frame. Then, from the point corresponding to the target coordinate calculated for each of the upper, lower, left and right sides of the vertex frame, to the boundary point corresponding to the target coordinate calculated for each of the upper, lower, left and right sides of the image data of the two-dimensional code. To calculate the two-dimensional code distortion vector, add the calculated two-dimensional code distortion vector to the target coordinate value calculated for the vertex frame, and obtain the image data of the two-dimensional code. A target coordinate value corresponding to the target coordinate at is calculated.
By performing the above processing, it is possible to correct the image data of the two-dimensional code having a curved distortion into a rectangle.
すなわちこの発明の一観点によれば、2次元コード画像が曲線状歪みを有する場合でも、この曲線状歪みを効果的に矯正して高精度のコード解読を可能にした2次元コード読取装置とそのプログラムを提供することができる。 That is, according to one aspect of the present invention, even when a two-dimensional code image has a curvilinear distortion, a two-dimensional code reading apparatus that effectively corrects the curvilinear distortion and enables high-accuracy code decoding, and its A program can be provided.
以下、図面を参照してこの発明に係わる実施形態を説明する。
図1は、この発明の一実施形態における2次元コード読取装置のハードウエア及びソフトウエアの構成を示すブロック図である。
本実施形態の2次元コード読取装置は、中央処理制御ユニット1と、カメラ2と、入力デバイス3と、表示デバイス4とを具備している。なお、2次元コード読取装置が携帯電話機に設けられる場合には、上記中央処理制御ユニット1、カメラ2、入力デバイス3及び表示デバイス4はいずれも携帯電話機が備える既存の構成を利用する。
Embodiments according to the present invention will be described below with reference to the drawings.
FIG. 1 is a block diagram showing the hardware and software configurations of a two-dimensional code reader according to an embodiment of the present invention.
The two-dimensional code reader according to the present embodiment includes a central
中央処理制御ユニット1は、CPU(Central Processing Unit)11を備え、このCPU11に対しバス12を介してプログラムメモリ13と、カメラインタフェース(カメラI/F)14と、入出力インタフェース(入力I/F)15と、データメモリ16を接続したものとなっている。
The central
カメラI/F14にはカメラ2が接続される。カメラ2は、例えばCCD又はCMOS等の半導体撮像素子を使用したものである。カメラI/F14は、CPU11の制御の下で上記カメラ2を起動し、カメラ2により撮像された2次元コードの画像データを取り込む。
The
入出力I/F15には入力デバイス3及び表示デバイス4が接続される。入力デバイス3は、ダイヤルキーと複数の機能キーとから構成される。なお、キーの構成は機構式のキーであっても、また表示デバイス4に表示されたソフトウエアキーであってもよい。表示デバイス4は、例えばLCD又はELを使用したディスプレイからなる。入出力I/F15は、上記入力デバイス3の操作データを取り込むと共に、CPU11の制御の下で表示データを上記表示デバイスに表示させる。
The
データメモリ16には、携帯電話機の送受信に必要な電話帳や送受信履歴、送受信メール等の各種データを記憶する領域に加え、この発明に係わる2次元コード読取処理を実施するために必要なデータを一次記憶する領域を備える。2次元コード読取処理を実施するために必要なデータとしては、カメラ2により撮像された2次元コードの画像データやその二値化画像データ、処理過程で生成される種々データが含まれる。
The
プログラムメモリ13には、この発明に係わる2次元コード読取処理を実施するために必要なアプリケーション・プログラムとして、二値化画像生成プログラム131と、ファインダパターン検出プログラム132と、画像回転処理プログラム133と、ファインダパターン境界検出プログラム134と、2次元コード境界線算出プログラム135と、2次元コード歪み矯正プログラム136が格納されている。
The
二値化画像生成プログラム131は、カメラ2により撮像された2次元コードの画像データをカメラI/F14を介して取り込んでデータメモリ16に一旦記憶させ、このデータメモリ16から当該画像データを読み出して二値化画像データに変換し、この変換された二値化画像データをデータメモリ16に記憶させる処理を、上記CPU11に実行させる。
The binarized
ファインダパターン検出プログラム132は、上記データメモリ16から上記二値化画像データを読み出し、この二値化画像データから2次元コードに含まれる複数のファインダパターン(例えばQRコードの場合には3個)を検出するための処理を、上記CPU11に実行させる。
The finder
画像回転処理プログラム133は、上記ファインダパターン検出処理により検出されたファインダパターンの位置に基づいて、上記2次元コードの画像が正立した状態となるように上記二値化画像データを回転させ、この回転処理後の二値化画像データをデータメモリ16に記憶させる処理を、上記CPU11に実行させる。
The image
ファインダパターン境界検出プログラム134は、上記回転処理後の二値化画像データをデータメモリ16から読み出し、この読み出した二値化画像データから各ファインダパターンの黒枠の辺を表す境界点を検出してその座標値をデータメモリ16に記憶させる処理を、上記CPU11に実行させる。
The finder pattern
2次元コード境界線算出プログラム135は、上記検出された各ファインダパターンの黒枠の辺を表す境界点の座標値をデータメモリ16から読み出し、この読み出した境界点の座標値に基づいて、2次元コードの輪郭を表す上下左右の各辺の形状を直線及び曲線で近似した近似線を生成する。そして、この生成された近似直線と近似曲線のうちいずれか妥当であるかを判定して、妥当と判定された近似線を上記2次元コードの上下左右の各辺の形状を表す境界線としてその座標値をデータメモリ16に記憶させる処理を、上記CPU11に実行させる。
The two-dimensional code
2次元コード歪み矯正プログラム136は、上記2次元コード境界線算出プログラム135により算出された上記2次元コード画像の上下左右の各辺の境界線を表す座標値をデータメモリ16から読み出し、この読み出した上下左右の各辺の境界線をもとに、上記2次元コード画像の二値化画像データの歪みを矯正する処理を、上記CPU11に実行させる。
The two-dimensional code
次に、以上のように構成された装置による2次元コードの読取処理動作を説明する。図2乃至図5はCPU11によるその処理手順と処理内容を示すフローチャートである。
(1)2次元コードの画像データの取り込み
入力デバイス3においてユーザが撮像操作を行うと、CPU11はステップS11により上記撮像操作を入出力I/F15を介して検出する。そして、ステップS12に移行し、カメラI/F14を介してカメラ2を起動して、当該カメラ2により撮像された2次元コードの画像データをカメラI/F14を介して取り込んでデータメモリ16に記憶させる。
Next, a two-dimensional code reading process operation by the apparatus configured as described above will be described. 2 to 5 are flowcharts showing the processing procedure and processing contents of the
(1) Capture of image data of two-dimensional code When the user performs an imaging operation on the
なお、上記二次元コードの画像データは複数のピクセルにより構成される。ここで、取り込んだ画像データの幅をwidth、高さをheightとすると、取り込んだ画像データはwidth×heightこのピクセルにより構成される。各ピクセルは、RGBカラーモデルにおいて色を表現するデータであり、フレームにおけるx座標値、y座標値及びRGBの各値によって構成され、x座標値は0以上width未満の整数値、y座標値は0以上height未満の整数値であり、x軸は左から右方向へ、y軸は上から下方向へそれぞれ向くものとする。またRGBの各値はいずれも0以上255以下の整数値である。ここで、座標(x,y)におけるRGB各値が(r,g,b)であるとき、
p(x,y)=(r,g,b)
と表される。
The image data of the two-dimensional code is composed of a plurality of pixels. Here, if the width of the captured image data is width and the height is height, the captured image data is constituted by width × height pixels. Each pixel is data representing a color in the RGB color model, and is composed of an x-coordinate value, a y-coordinate value, and RGB values in the frame. The x-coordinate value is an integer value of 0 or more and less than width, and the y-coordinate value is It is an integer value of 0 or more and less than height, and the x-axis is directed from left to right and the y-axis is directed from top to bottom. Each of the RGB values is an integer value of 0 or more and 255 or less. Here, when the RGB values at the coordinates (x, y) are (r, g, b),
p (x, y) = (r, g, b)
It is expressed.
(2)二値化画像データの生成処理
上記二次元コードの画像データが取り込まれると、CPU11はステップS2において二値化画像生成プログラム131を起動し、上記二次元コードの画像データのコントラストを強調するために、当該二次元コードの画像データを二値化画像データに変換する処理を以下のように実行する。
(2) Processing for generating binarized image data When the image data of the two-dimensional code is fetched, the
すなわち、先ずステップS21により、上記データメモリ16から二次元コードの画像データを読み出し、当該画像データの各ピクセルの輝度値を算出することによりグレースケール化する。例えば、
Grayscale(x,y)=RGBtoLuminance(r,g,b)
によって輝度値を算出して、グレースケール画像を生成する。なお、輝度値は0以上255以下の値を持つものとする。
That is, first, in step S21, the image data of the two-dimensional code is read from the
Grayscale (x, y) = RGBtoLuminance (r, g, b)
The luminance value is calculated by the above to generate a gray scale image. It is assumed that the luminance value has a value between 0 and 255.
続いて、ステップS22において、上記生成されたグレースケール画像の最大輝度値maxL、再使用輝度値minLをそれぞれ検出し、この検出された最大輝度値maxL、再使用輝度値minLを用いて、以下に示す(1)式によりコントラスト拡大画像を生成する。
さらに、ステップS23において、例えばしきい値を128として下記(2)式に示す処理を実行し、二値化画像データを生成する。そして、この生成した二値化画像データをデータメモリ16に記憶させる。
(3)ファインダパターンの検出処理
上記二値化画像データの生成が終了すると、CPU11は次にステップS3によりファインダパターン検出プログラム132を起動し、上記二値化画像データからQRコードに含まれる3個の位置パターン、つまりファインダパターンを検出するための処理を以下のように実行する。
(3) Finder Pattern Detection Processing When the generation of the binarized image data is completed, the
すなわち、先ずステップS31において、データメモリ16から上記二値化画像データを読み出し、この二値化画像データに対しy軸の座標値を固定してx軸方向に走査する。そして、この走査により、例えば図6に示すように“白”、“黒”、“白”、“黒”、“白”のラインパターンを検出すると、各“白”と、各“黒”の長さをそれぞれ確認し、2個目の“黒”から6個目の“黒”までの長さの比、B1:W1:B2:W2:B3が1:1:3:1:1となっている箇所を検出し、この検出値をデータメモリ16に保持させる。
That is, first in step S31, the binarized image data is read from the
具体的には、
L=B1+W1+B2+W2+B3
として0以上のしきい値tに対して
L = B1 + W1 + B2 + W2 + B3
For a threshold t greater than or equal to 0
以下同様に、上記ステップS31によるラインパターンの検出処理をy軸方向の全ての座標値について実行する。そして、全てのラインパターンの検出値が得られたことがステップS32で確認されると、ステップS33に移行して、上記検出された複数のラインパターンのうち互いに接するラインパターンをセグメント化し、このセグメントのサイズが大きい3個をQRコードのファインダパターンとして認識して、その座標値をデータメモリ16に保存させる。
Similarly, the line pattern detection processing in step S31 is executed for all coordinate values in the y-axis direction. When it is confirmed in step S32 that the detection values of all the line patterns have been obtained, the process proceeds to step S33, and the line patterns that are in contact with each other among the detected line patterns are segmented. Are recognized as QR code finder patterns, and their coordinate values are stored in the
(4)画像回転処理
上記3個のファインダパターンの検出が終了すると、CPU11は続いてステップS4に移行して画像回線処理プログラム133を起動し、上記検出されたファインダパターンの位置をもとに上記二値化画像データを以下のように回転させる。
すなわち、先ずステップS41において、上記検出された3個のファインダパターンF1,F2,F3の重心をそれぞれ算出する。そして、この算出された重心をW1=(u1,v1)、W2=(u2,v2)、W3=(u3,v3)として、下記(4)式によりD1,D2,D3を算出する。
That is, first, in step S41, the centers of gravity of the three detected finder patterns F1, F2, and F3 are calculated. Then, D1, D2, and D3 are calculated by the following equation (4), assuming that the calculated center of gravity is W1 = (u1, v1), W2 = (u2, v2), and W3 = (u3, v3).
そして、上記D1,D2,D3の算出結果をもとに、ステップS42において左上、右上、左下の各ファインダパターンを認識する。例えばD1が最大であればF1、D2が最大であればF2、D3が最大であればF3を左上ファインダパターンとして認識する。この処理は、右上と左上のファインダパターン間の距離が最大となることを利用している。図7にD1が最大となる場合の例を示す。 Based on the calculation results of D1, D2, and D3, the upper left, upper right, and lower left finder patterns are recognized in step S42. For example, F1 is recognized as the upper left finder pattern when D1 is the maximum, F2 when D2 is the maximum, and F3 when D3 is the maximum. This process utilizes the fact that the distance between the upper right and upper left viewfinder patterns is maximized. FIG. 7 shows an example in which D1 is maximized.
続いて、右上ファインダパターンと左下ファインダパターンを認識するが、W2とW3を通り直線に対しW1が右側にある場合にはF2を右上ファインダパターン、F3を左下ファインダパターンとし、そうでない場合にはF3を右上ファインダパターン、F2を左下ファインダパターンとする。 Subsequently, the upper right finder pattern and the lower left finder pattern are recognized. When W1 is on the right side with respect to the straight line passing through W2 and W3, F2 is set as the upper right finder pattern, and F3 is set as the lower left finder pattern. Is the upper right finder pattern, and F2 is the lower left finder pattern.
そうして左上、右上、左下の各ファインダパターンが認識されると、CPU11はステップS43において、例えば図8に示すように左上ファインダパターンFPLTのx軸方向に右上ファインダパターンFPRTが位置するように、二次元コード画像の二値化画像データを回転させる。
When the upper left, upper right, and lower left finder patterns are recognized, the
(5)ファインダパターン境界の検出処理
次にCPU11は、ステップS5によりファインダパターン境界検出プログラム134を起動し、上記回転処理後の二値化画像データから3個のファインダパターンの黒枠の辺を表す境界点を検出する処理を以下のように実行する。
すなわち、CPU11は先ずステップS51において、例えば図9に示すように黒枠のセグメントSを抽出し、黒枠の4角の座標を算出する。4角の座標は、セグメントSに含まれる座標のうち、−x−yが最大となる座標を左上の角(cx1,cy1)、x−yが最大となる座標を右上の角(cx2,cy2)、y−xが最大となる座標を左下の角(cx3,cy3)、x−yが最大となる座標を右下の角(cx4,cy4)となるようにそれぞれ設定する。
(5) Finder Pattern Boundary Detection Processing Next, the
That is, in step S51, the
CPU11は次にステップS52において、上記黒枠のセグメントの上下左右の各辺を検出する。例えば、上辺FinderTopは、
これは、図10に示すように黒枠のセグメントS内において左上の角と右上の角との間のxについて、それぞれyが最小となる点の集合を表す。同様に、下辺FinderBottom、左辺FinderLeft、右辺FinderRightは、
(6)2次元コード境界線の算出処理
CPU11は、次にステップS6に移行して2次元コード境界線算出プログラム135を起動し、上記検出された3個のファインダパターンの黒枠の上下左右各辺の座標値に基づいて、2次元コード画像の輪郭を表す上下左右各辺に含まれる座標をそれぞれ検出し、その近似線を上下左右各辺の境界線として算出する処理を実行する。
(6) Calculation process of two-dimensional code boundary line Next, the
例えば、2次元コード画像の上辺の境界点座標を検出する場合、CPU11はステップS61〜S68により以下の処理を行う。すなわち、上辺の左側には左上ファインダパターンFPLT、右側には右上ファインダパターンFPRTが位置する。それぞれのファインダパターンFPLT,FPRTの上辺の境界点座標は、先に述べたファインダパターン境界検出処理により既に検出されているので、その検出結果を利用してファインダパターンFPLT,FPRT間に位置する2次元コード画像の上辺上の境界点の集合をステップS62により検出する。
For example, when detecting the boundary point coordinates of the upper side of the two-dimensional code image, the
ここで、左側のファインダパターンFPLTの上辺の境界点の集合をLeftFinderEdge、右側のファインダパターンFPRTの上辺の境界点の集合をRightFinderEdgeとし、LeftFinderEdgeの右端の境界点を(LeftEndX,LeftEndY)、RightFinderEdgeの左端の境界点を(RightStartX,RightStartY)とする。また、LeftFinderEdgeに含まれる境界点の重心を(LeftCenterX,LeftCenterY)、RightFinderEdgeに含まれる座標点の重心を(RightCenterX,RightCenterY)とする。また、LeftFinderEdgeから最小二乗法によって近似した直線をy=alx+bl、RightFinderEdgeから最小二乗法によって近似した直線をy=arx+brとする。この最小二乗法によって得られた直線から、あるx座標における上辺の傾きedgeSlope(x)は、
次にCPU11は、データメモリ16から読み出した二値化画像データにおいて、LeftEndXとRightStartXとの間の2次元コード画像の上辺を検出する。その検出処理は例えば図10に示すように、検出された上辺上の点P=(px,py)に対してx座標がpx+k(初期条件ではk=1)となる上辺上の点を検出するためにqy及びryを設定する。そして、qyからryまで下方向に“白”から“黒”に変わる最初の境界点を探索し、見つかった境界点P′=(px+k,py′)を新たな上辺上の境界点として検出する。ここで、qy及びryは、定数cq、cr,dq、drを用いて
一方、以上の処理により新たな境界点が見つからない場合には、kの値を1ずつ増やして探索し、見つかった場合にはP′に対してk=1から同様の処理を行うことで次の境界点を探索する。P=(LeftEndX,LeftEndY)から探索を開始し、px+k=RightStartXとなれば探索終了である。以上の処理によって、左上ファインダパターンFPLTと右上ファインダパターンFPRTとの間に位置する2次元コードの上辺上の境界点の集合MiddleEdgeが検出される。 On the other hand, if no new boundary point is found by the above processing, the search is performed by increasing the value of k by 1. If found, the same processing is performed on P ′ from k = 1. Search for the boundary point of. The search starts from P = (LeftEndX, LeftEndY), and the search ends when px + k = RightStartX. Through the above processing, a set of boundary points MiddleEdge on the upper side of the two-dimensional code located between the upper left finder pattern FPLT and the upper right finder pattern FPRT is detected.
以上のステップS62の処理により検出された2次元コードの上辺上の境界点集合MiddleEdgeには、本来の上辺より2次元コード画像の内側の点も含まれる。そこでCPU11は、続いて2次元コード画像内の点の除去を行う。このエラー点の除去方法には、上辺の傾きから推測される範囲に含まれない点をエラーとして除去する第1の方法と、互いに直交する2つの辺の交点を求め、この交点より外側の範囲に位置する境界点をエラー点として削除する第2の方法とがある。ここでは、先ず第1の方法について説明し、第2の方法は後に詳しく説明する。
The boundary point set MiddleEdge on the upper side of the two-dimensional code detected by the process in step S62 includes points inside the two-dimensional code image from the original upper side. Therefore, the
第1の方法は以下のように行われる。すなわち、CPU11はエラー点の除去処理を右から左に向かって行う。ここで、点P=(px,py)に対し、MiddleEdgeに含まれ、Pより左に位置する最初の点をP′=(px′,py′)とする。このとき線分PP′の傾きは、
ここで、あるxにおける上辺の傾きより定数ct(例えば0.1)だけ小さい傾きを返す関数edgeMinSlope(x)を、
ここで、P′がエラーであるか否かを、
この判定処理は、図11に示すように、線分PQの傾きを推定される上辺の傾きとし、線分PRの傾きをPRの傾きよりctだけ小さい傾きであるとすると、P1′やP2′のようにRより上に位置する点はエラーではないが、P3′のようにRより下に位置する点はエラーとして検出される。ただし、図11においてQ、R、P1′、P2′、P3′のx座標値は全てpx′であるとする。上記手順によって、MiddleEdgeからエラー点が除去される。 In this determination process, as shown in FIG. 11, assuming that the slope of the line segment PQ is the slope of the estimated upper side, and the slope of the line segment PR is a slope smaller than the slope of PR by ct, P1 ′ and P2 ′ A point located above R such as is not an error, but a point located below R such as P3 ′ is detected as an error. However, in FIG. 11, the x coordinate values of Q, R, P1 ′, P2 ′, and P3 ′ are all px ′. By the above procedure, error points are removed from MiddleEdge.
以上の手順によって、LeftFinderEdge、MiddleEdge、RightFinderEdgeによって2次元コード画像の上辺の境界点集合が検出される。ここで上辺の点集合TopEdgeは
次にCPU11は、ステップS64,S65において、上記上辺の点集合TopEdge をもとにその近似線を算出する。TopEdgeの近似線は、近似直線或いは近似曲線によって表現する。TopEdgeに含まれる点列を
(x1,y1),(x2,y2),…,(xn,yn)
とすると、最小二乗法による近似直線y=ax+bは
(x1, y1), (x2, y2), ..., (xn, yn)
Then, the approximate line y = ax + b by the least square method is
一方、近似曲線は最小二乗法による円への近似により求める。最小二乗法による円への近似では、(a,b)を中心とする半径Rの円(x−a)2 +(y−b)2 =Rを求めるために
ただし、zi,B,C,Dはそれぞれ
F(a,b,R)をB、C、Dについてそれぞれ偏微分すると、
次にCPU11は、ステップS66において近似直線と近似曲線とを比較してどちらが妥当であるかを判定する。この判定は、近似直線から各 (xi,yi)への距離の和と、近似曲線から各(xi,yi)への距離の和を比較し、距離の和が小さい方の近似線が妥当であると判定することにより正確に行うことができる。なお、計算量を低減したい場合には、(x1,y1)、(xM,yM)、(xn,yn)への距離の和によって判定しても良い。ただし、mは
以上の手順によって上辺の境界線が算出される。同様に、図13に示すように左辺についても、xy座標系を左へ90度回転させて考える(上方向をx軸方向、右方向をy軸方向とする)ことで、同じ手順によって境界線が算出される。また、下辺については、xy座標系のy方向を逆転させることで、2次元コード画像の下辺の点集合を算出できる。ただし、QRコードには右下にファインダパターンはないため、RightFinderEdgeは存在しない。そこで、edgeSlope(x)は、(LeftCenterX,LeftCenterY)から(px′,py′)へ引いた線分の傾き
また、RightFinderEdgeが存在しないため、探索は2次元コード画像の端まで行うものとし、そうして検出した点の集合をMiddleBottomEdgeとする。また右辺についても、xy座標系を右へ90度回転させて考える(下方向をx軸方向、左方向をy軸方向とする)ことで2次元コード画像の下辺の点集合を検出できる。しかし、この場合も上辺におけるRightFinderEdgeが存在しないので、edgeSlope(x)は下辺と同様に
次に、2次元コード画像の右下の角の座標RightBottomを検出する。初期のxy座標系(右方向がx軸方向、下方向がy軸方向)におけるMiddleBottomEdgeを
またCPU11は、RightBottomは2次元コードにおいてf(x,y)=x+yが最大となる点だと仮定し、MiddleBottomEdgeとMiddleRightEdgeからRightBottomの近くに位置する点を探索する。ただし、MiddleBottomEdgeはRightBottomより右側の点を、MiddleRightEdgeはRightBottomより下側の点を含んでいう可能性があるので、これらのエラー点を除去する必要がある。
The
このエラー点の除去は、先に述べた第2の方法により以下のように行われる。図4はその処理の一部である交点算出処理の手順を示すフローチャートである。
すなわち、CPU11は、ステップS631〜S635において、例えば図14に示すようにMiddleBottomEdgeに含まれる各点(bxi,byi)から傾き−1の閾値直線、つまり
y=−(x-bxi)+bxi
を引き、各直線の上方向に位置し、bxi≦rxjでかつy座標の最も大きいMiddleRightEdge内の点を示すjの値を算出する関数f(i)を
That is, the
y =-(x-bxi) + bxi
A function f (i) that calculates a value of j indicating a point in MiddleRightEdge that is located above each straight line and that has bxi ≦ rxj and the largest y coordinate.
ここでInferRightBottom(i)と比較してbi+1が右側にあるか、rj+1が下側にあるような最小のiをBottomEndとすると、BottomEndは
次にCPU11は、MiddleBottomEdgeからRightBottomより右側に位置する点(x座標値の大きい点)を除去する。また、MiddleRightEdgeからRightBottomより下側に位置する点(y座標値の大きい点)を除去する。さらに、MiddleBottomEdgeについて再びxy座標系のy方向を逆転させ、上辺における処理と同様に図11に示したような2次元コード画像内のエラー点の除去を行う。MiddleRightEdgeについては、xy座標系を右へ90度回転させて、同様に2次元コード画像内のエラー点の除去を行う。
Next, the
さらにCPU11は、左下ファインダパターンFPLBの下辺をLeftFinderBottomEdge、右上ファインダパターンFPRTの右辺をTopFinderRightEdgeとして、2次元コード画像の下辺の点集合BottomEdge及び右辺の点集合RightEdgeを、
CPU11は、以上の手順によって求めた下辺の点集合BottomEdgeから、上辺において近似線を算出した手順と同様の手順によって近似線を算出し、再び元のxy座標系に戻すことで下辺の近似線を算出する。また、右辺の点集合からも同様に近似線が算出され、元のxy座標系に戻すことで右辺の近似線が算出される。
The
(7)2次元コード画像の歪みの矯正
以上の処理により2次元コード画像の上下左右各辺についての境界線が算出されると、続いてCPU11は図5に示すステップS7において2次元コード歪み矯正プログラム136を起動し、上記算出された2次元コード画像の上下左右各辺の境界線を利用して2次元コード画像の歪みの矯正を次のように行う。
(7) Correcting the distortion of the two-dimensional code image When the boundary lines for the upper, lower, left and right sides of the two-dimensional code image are calculated by the above processing, the
すなわち、2次元コード画像の歪みの矯正においては、2次元コード画像をその幅codeWidth、高さcodeHeightについてそれぞれ矯正するものとし、矯正後の2次元コードにおける目標座標(x,y)のピクセル値を求めることによって矯正後の2次元コードを生成する。 That is, in correcting the distortion of the two-dimensional code image, the two-dimensional code image is corrected with respect to the width codeWidth and the height codeHeight, and the pixel value of the target coordinate (x, y) in the corrected two-dimensional code is determined. By calculating, a two-dimensional code after correction is generated.
CPU11は、先ずステップS71において、2次元コードの4角の座標を算出する。2次元コードの4角の座標は、上辺と左辺の境界線から左上角の点LeftTopを、上辺と右辺の境界線から右上角の点RightTopを、下辺と左辺の境界線から左下角の点LeftBottomを、左辺と右辺の境界線から右下角の点RightBottomを算出する。
First, in step S71, the
次に、LeftTop、RightTop、RightBottom、LeftBottomの4点を結ぶ四角形BaseFrameを作成する。そして、
続いてCPU11は、ステップS72,S73により、BaseFrameにおいて目標座標に対応する座標BaseCross(TopWeight,LeftWeight)を求める。ただし、図15に示すようにBaseTop(LeftWeight)とBaseBottom(LeftWeight)とを結ぶ線分と、BaseLeft(TopWeight)とBaseRight(TopWeight)とを結ぶ線分の交点をBaseCross(TopWeight,LeftWeight)とする。
BaseCross(TopWeight,LeftWeight)は、
BaseCross (TopWeight, LeftWeight)
またCPU11は、ステップS74において、図16に示すようにBaseTopとx座標値が同一となる上辺上の点をTopPoint(LeftWeight)とし、BaseBottomとx座標値が同一となる下辺上の点をBottomPoint(LeftWeight)とし、LeftBaseとy座標値が同一となる左辺上の点をLeftPoint(TopWeight)とし、RightBaseとy座標値が同一となる右辺上の点をRightPoint(TbpWeight)とする。
In step S74, the
そして、ステップS75において、図16に示すように2次元コード画像における上辺の歪みDistortionTop(LeftWeight)、下辺の歪みDistortionBottom(LeftWeight)、左辺の歪みDistortionLeft(TopWeight)、右辺の歪みDistortionRightRight(TopWieight)をそれぞれ
次にCPU11は、ステップS76において、図17に示すようにBaseCross(TopWeight, LeftWeight)にDistortionVbctor(TopWeight,LeftWeight)を加えた点を算出する関数CrossPoint(TopWeight,LeftWeight)を
CPU11は、以上のように定義したCrossPoint(TopWeight,LeftWeight)を用いて、2次元コード画像の歪みの矯正を行う。TopWeight及びLeftWeightは上記にて示した定義の通りである。したがって、矯正後の2次元コード画像における座標(x,y)のピクセル値には、矯正前の2次元コード画像における
以上の処理により、図18(a),(b)に示すような糸巻き型又は樽型の曲線歪みを有する2次元コード画像を長方形に矯正することが可能となる。また、codeWidthとcodeHeightを同一の値に設定することにより、正方形への矯正も可能となる。 Through the above processing, it becomes possible to correct a two-dimensional code image having a pincushion-type or barrel-type curve distortion as shown in FIGS. 18A and 18B into a rectangle. In addition, by setting codeWidth and codeHeight to the same value, correction to a square is possible.
そしてCPU11は、以上の処理によって矯正された2次元コード画像を、ステップS8によりコード解析し、このコード解析されたコードをデータメモリ16に記憶させる。このデータメモリ16に記憶されたコードは、例えば入力デバイス3においてユーザが2次元コードの送信操作を行った場合に、データメモリ16から読み出されてWebサーバ等に送信される。
Then, the
以上説明したようにこの実施形態では、カメラ2により撮像された2次元コードの画像データを二値化画像に変換した後、当該二値化画像から2次元コードのファインダパターンを検出し、この検出されたファインダパターンの上下左右各辺の座標値を検出する。そして、この検出されたファインダパターンの上下左右各辺の座標値をもとに、上記2次元コードの画像データの上下左右各辺の形状を直線及び曲線で近似した近似線を生成し、この生成された近似線をもとに上記2次元コードの画像データの歪みを矯正して、この歪みが矯正された2次元コードの画像データをもとに上記2次元コードを解読するようにしている。
As described above, in this embodiment, after the image data of the two-dimensional code captured by the
したがって、撮像した2次元コードの画像が例えば糸巻き型又は樽型の曲線状歪みを有していても、2次元コードの画像データの上下左右各辺の形状が直線及び曲線により近似され、その近似線をもとに上記2次元コードの画像データの歪みが矯正される。このため、上記糸巻き型又は樽型の曲線状歪みを有する2次元コード画像に対しても高精度のコード解読を行うことが可能となる。 Therefore, even if the captured image of the two-dimensional code has, for example, a pincushion-type or barrel-type curved distortion, the shapes of the upper, lower, left and right sides of the image data of the two-dimensional code are approximated by straight lines and curves. The distortion of the image data of the two-dimensional code is corrected based on the line. For this reason, it is possible to perform code decoding with high accuracy even for a two-dimensional code image having the above-described pincushion-type or barrel-type curved distortion.
なお、この発明は上記実施形態に限定されるものではない。例えば、前記実施形態では二次元コード読取装置を携帯電話機に内蔵した場合を例にとって説明したが、二次元コード読取装置をテレビジョン受信機やビデオ記録再生装置のリモートコントローラに内蔵するようにしてもよく、またパーソナル・コンピュータに内蔵するようにしてもよい。また、前記実施形態では二次元コード読取装置がカメラを内蔵する場合を例にとって説明したが、二次元コード読取装置とは別に設けられたディジタルカメラにより2次元コードを撮像し、その画像データを信号ケーブル又は記録媒体を介して二次元コード読取装置に取り込むようにしてもよい。 The present invention is not limited to the above embodiment. For example, in the above-described embodiment, the case where the two-dimensional code reading device is built in the mobile phone has been described as an example. However, the two-dimensional code reading device may be built in the remote controller of the television receiver or the video recording / reproducing device. Alternatively, it may be built in a personal computer. In the above embodiment, the case where the two-dimensional code reader includes a camera has been described as an example. However, a two-dimensional code is captured by a digital camera provided separately from the two-dimensional code reader, and the image data is signaled. You may make it take in to a two-dimensional code reader via a cable or a recording medium.
その他、二値化画像生成処理、ファインダパターン検出処理、画像回転処理、ファインダパターン境界検出処理、2次元コード境界線算出処理及び2次元コード歪み矯正処理の各処理手順と処理内容についても、この発明の要旨を逸脱しない範囲で種々変形して実施できる。 In addition, the present invention also includes processing procedures and processing contents of binarized image generation processing, finder pattern detection processing, image rotation processing, finder pattern boundary detection processing, two-dimensional code boundary calculation processing, and two-dimensional code distortion correction processing. Various modifications can be made without departing from the scope of the present invention.
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。 In short, the present invention is not limited to the above-described embodiment as it is, and can be embodied by modifying the constituent elements without departing from the scope of the invention in the implementation stage. Further, various inventions can be formed by appropriately combining a plurality of constituent elements disclosed in the embodiment. For example, some components may be deleted from all the components shown in the embodiment. Furthermore, you may combine suitably the component covering different embodiment.
1…中央処理制御ユニット、2…カメラ、3…入力デバイス、4…表示デバイス、11…CPU、12…バス、13…プログラムメモリ、14…カメラI/F、15…入出力I/F、16…データメモリ、131…二値化画像生成プログラム、132…ファインダパターン検出プログラム、133…画像回転処理プログラム、134…ファインダパターン境界検出プログラム、135…2次元コード境界線算出プログラム、136…2次元コード歪み矯正プログラム。
DESCRIPTION OF
Claims (4)
前記メモリに記憶された2次元コードの画像データを読み出し、この読み出した画像データから当該2次元コードに含まれる複数のファインダパターンを検出するファインダパターン検出手段と、
前記検出された複数のファインダパターンの各々についてその輪郭を表す辺の境界点を検出するファインダパターン境界検出手段と、
前記検出された複数のファインダパターンの辺の境界点をもとに、前記2次元コードの画像データの輪郭を表す4辺の形状を直線及び曲線の少なくとも一方で近似した近似線を生成する2次元コード境界線検出手段と、
前記生成された近似線をもとに前記2次元コードの画像データの歪みを矯正し、歪みが矯正された2次元コードの画像データを前記メモリに記憶する2次元コード歪み矯正手段と、
前記歪みが矯正された2次元コードの画像データをもとに前記2次元コードを解読し、その解読データを出力する解読手段と
を具備し、
前記2次元コード境界線検出手段は、
前記ファインダパターン境界検出手段により検出された複数のファインダパターンの辺の境界点をもとに、前記2次元コードの画像データの輪郭を表す辺の傾きを算出する手段と、
前記算出された辺の傾きから推測される方向に画素探索を行って、前記2次元コードの辺を表す境界点を検出する手段と、
前記検出された境界点の各々について、当該境界点が、前記算出された辺の傾きから推測される範囲内に含まれているか否かを判定し、含まれていないと判定された境界点をエラー点として前記境界点から削除する手段と
を備えることを特徴とする2次元コード読取装置。 Means for capturing image data of a two-dimensional code from an imaging means and storing it in a memory;
Finder pattern detection means for reading image data of a two-dimensional code stored in the memory and detecting a plurality of finder patterns included in the two-dimensional code from the read image data;
Finder pattern boundary detection means for detecting a boundary point of a side representing the outline of each of the detected plurality of finder patterns;
Two-dimensional that generates an approximate line that approximates at least one of a straight line and a curve of the shape of the four sides representing the contour of the image data of the two-dimensional code based on boundary points of the sides of the detected plurality of finder patterns. Code boundary detection means;
Two-dimensional code distortion correcting means for correcting distortion of the image data of the two-dimensional code based on the generated approximate line, and storing the image data of the two-dimensional code with corrected distortion in the memory;
Decoding means for decoding the two-dimensional code based on the image data of the two-dimensional code whose distortion has been corrected, and outputting the decoded data;
Comprising
The two-dimensional code boundary detection means includes
Means for calculating an inclination of a side representing an outline of the image data of the two-dimensional code based on boundary points of a plurality of finder patterns detected by the finder pattern boundary detection unit;
Means for detecting a boundary point representing a side of the two-dimensional code by performing a pixel search in a direction inferred from the calculated slope of the side;
For each of the detected boundary points, it is determined whether the boundary point is included in a range estimated from the calculated side inclination, and the boundary point determined not to be included is Means for deleting from the boundary points as error points ;
2-dimensional code reading apparatus you comprising: a.
前記メモリに記憶された2次元コードの画像データを読み出し、この読み出した画像データから当該2次元コードに含まれる複数のファインダパターンを検出するファインダパターン検出手段と、
前記検出された複数のファインダパターンの各々についてその輪郭を表す辺の境界点を検出するファインダパターン境界検出手段と、
前記検出された複数のファインダパターンの辺の境界点をもとに、前記2次元コードの画像データの輪郭を表す4辺の形状を直線及び曲線の少なくとも一方で近似した近似線を生成する2次元コード境界線検出手段と、
前記生成された近似線をもとに前記2次元コードの画像データの歪みを矯正し、歪みが矯正された2次元コードの画像データを前記メモリに記憶する2次元コード歪み矯正手段と、
前記歪みが矯正された2次元コードの画像データをもとに前記2次元コードを解読し、その解読データを出力する解読手段と
を具備し、
前記2次元コード境界線検出手段は、
前記ファインダパターン境界検出手段により検出された複数のファインダパターンの辺の境界点をもとに、前記2次元コードの画像データの輪郭を表す辺の傾きを算出する手段と、
前記算出された辺の傾きから推測される方向に画素探索を行って、前記2次元コードの辺を表す境界点を検出する手段と、
前記2次元コードの画像データの4辺のうち直交する第1及び第2の辺の交点を算出する手段と、この算出された交点より外側の範囲に位置する境界点をエラー点として削除する手段とを有するエラー点除去手段と
を備え、
前記2次元コードの画像データの第1及び第2の辺の交点を算出する手段は、
第1の辺を表す境界点の集合に含まれる1個以上の境界点を算出基準点としてしきい値線を引き、第2の辺を表す境界点集合に含まれる境界点が前記しきい値線より交点側に位置するか否かを判定する手段と、
前記第2の辺を表す境界点の集合のうち前記しきい値線より交点側に位置しない境界点の中から、当該交点に最も近い境界点をしきい値外近接点として検出する手段と、
前記算出基準点から前記第1の辺の傾きを推定して引いた直線と、前記第2の辺のしきい値外近接点から第2の辺の傾きを推定して引いた直線との交点をもとに、交点候補点を算出する手段と、
前記第1の辺を表す境界点の集合に含まれる境界点のうち前記しきい値線より交点側に位置する境界点の中から前記しきい値直線に最も近い境界点をしきい値内近接点として検出すると共に、前記第2の辺を表す境界点集合に含まれる境界点のうち前記しきい値線より交点側に位置する境界点の中から前記しきい値直線に最も近い境界点をしきい値内近接点として検出する手段と、
前記検出された第1の辺のしきい値内近接点と、前記検出された第2の辺のしきい値内近接点のうち、前記算出された交点候補点より外側にあるものはどれかを判定する手段と
を有することを特徴とする2次元コード読取装置。 Means for capturing image data of a two-dimensional code from an imaging means and storing it in a memory;
Finder pattern detection means for reading image data of a two-dimensional code stored in the memory and detecting a plurality of finder patterns included in the two-dimensional code from the read image data;
Finder pattern boundary detection means for detecting a boundary point of a side representing the outline of each of the detected plurality of finder patterns;
Two-dimensional that generates an approximate line that approximates at least one of a straight line and a curve of the shape of the four sides representing the contour of the image data of the two-dimensional code based on boundary points of the sides of the detected plurality of finder patterns. Code boundary detection means;
Two-dimensional code distortion correcting means for correcting distortion of the image data of the two-dimensional code based on the generated approximate line, and storing the image data of the two-dimensional code with corrected distortion in the memory;
Decoding means for decoding the two-dimensional code based on the image data of the two-dimensional code whose distortion has been corrected, and outputting the decoded data;
Comprising
The two-dimensional code boundary detection means includes
Means for calculating an inclination of a side representing an outline of the image data of the two-dimensional code based on boundary points of a plurality of finder patterns detected by the finder pattern boundary detection unit;
Means for detecting a boundary point representing a side of the two-dimensional code by performing a pixel search in a direction inferred from the calculated slope of the side;
To remove a means for calculating the first and the intersection of the second side orthogonal among the four sides of the image data before Symbol 2-dimensional code, a boundary point located outside of the range from the calculated intersection as an error point An error point removing means having a means, and
Means for calculating the intersection of the first and second sides of the image data of the two-dimensional code,
A threshold line is drawn using one or more boundary points included in the set of boundary points representing the first side as a calculation reference point, and the boundary point included in the boundary point set representing the second side is the threshold value. Means for determining whether or not it is located on the intersection side of the line;
Means for detecting, as a non-threshold proximity point, a boundary point closest to the intersection point among boundary points not located on the intersection side of the threshold line in the set of boundary points representing the second side;
An intersection of a straight line obtained by estimating the slope of the first side from the calculation reference point and a straight line obtained by estimating the slope of the second side from the out-of-threshold proximity point of the second side Based on the above, a means for calculating intersection candidate points,
Among the boundary points included in the set of boundary points representing the first side, the boundary point closest to the threshold line among the boundary points located on the intersection side of the threshold line is close to the threshold value. And detecting a boundary point closest to the threshold straight line among the boundary points included in the boundary point set representing the second side and located on the intersection side of the threshold line. Means for detecting as a proximity point within the threshold;
Which of the detected first side in-threshold proximity point and the detected second side in-threshold proximity point is outside the calculated intersection candidate point 2-dimensional code that further comprising a means for determining a reading device.
2次元コードの画像データの各頂点を結ぶ頂点フレームを生成する頂点フレーム生成手段と、
前記矯正対象の2次元コードの画像データにおける目標座標のピクセル値を算出する際に、前記生成された頂点フレームの、上辺における前記目標座標に対応する点の座標値と、下辺における前記目標座標に対応する点の座標値と、左辺における前記目標座標に対応する点の座標値と、右辺における前記目標座標に対応する点の座標値をそれぞれ算出する頂点フレーム対応点算出手段と、
前記2次元コードの画像データの、上辺における前記目標座標に対応する境界点の座標値と、下辺における前記目標座標に対応する境界点の座標値と、左辺における前記目標座標に対応する境界点の座標値と、右辺における前記目標座標に対応する境界点の座標値をそれぞれ算出する境界対応点算出手段と、
前記頂点フレームにおいて前記目標座標に対応する目標座標値を算出する頂点フレーム内目標座標値算出手段と、
前記頂点フレームの上下左右の各辺について算出された前記目標座標に対応する点から、前記2次元コードの画像データの上下左右の各辺について算出された前記目標座標に対応する境界点へのベクトルを重み付け加算して、2次元コード歪みベクトルを算出する2次元コード歪み算出手段と、
前記頂点フレームについて算出された目標座標値に、前記算出された2次元コード歪みベクトルを加算して、前記2次元コードの画像データにおける前記目標座標に対応する目標座標値を算出する2次元コード内目標座標値算出手段と
を
備えることを特徴とする請求項1又は2記載の2次元コード読取装置。 The two-dimensional code distortion correcting means includes
Vertex frame generating means for generating a vertex frame connecting the vertices of the image data of the two-dimensional code;
When calculating the pixel value of the target coordinate in the image data of the two-dimensional code to be corrected, the coordinate value of the point corresponding to the target coordinate on the upper side of the generated vertex frame and the target coordinate on the lower side A vertex frame corresponding point calculation means for calculating a coordinate value of a corresponding point, a coordinate value of a point corresponding to the target coordinate on the left side, and a coordinate value of a point corresponding to the target coordinate on the right side;
The coordinate value of the boundary point corresponding to the target coordinate on the upper side, the coordinate value of the boundary point corresponding to the target coordinate on the lower side, and the boundary point corresponding to the target coordinate on the left side of the image data of the two-dimensional code A boundary corresponding point calculating means for calculating a coordinate value and a coordinate value of a boundary point corresponding to the target coordinate on the right side;
In-vertex frame target coordinate value calculating means for calculating a target coordinate value corresponding to the target coordinate in the vertex frame;
A vector from a point corresponding to the target coordinate calculated for each of the upper, lower, left and right sides of the vertex frame to a boundary point corresponding to the target coordinate calculated for each of the upper, lower, left and right sides of the image data of the two-dimensional code 2D code distortion calculating means for calculating a two-dimensional code distortion vector by weighted addition,
In the two-dimensional code for calculating the target coordinate value corresponding to the target coordinate in the image data of the two-dimensional code by adding the calculated two-dimensional code distortion vector to the target coordinate value calculated for the vertex frame 2-dimensional code reading apparatus according to claim 1, wherein further comprising a target coordinate value calculating means.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008208095A JP4970385B2 (en) | 2008-08-12 | 2008-08-12 | Two-dimensional code reader and program thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008208095A JP4970385B2 (en) | 2008-08-12 | 2008-08-12 | Two-dimensional code reader and program thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010044586A JP2010044586A (en) | 2010-02-25 |
JP4970385B2 true JP4970385B2 (en) | 2012-07-04 |
Family
ID=42015921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008208095A Expired - Fee Related JP4970385B2 (en) | 2008-08-12 | 2008-08-12 | Two-dimensional code reader and program thereof |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4970385B2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101109510B1 (en) | 2010-07-02 | 2012-01-31 | (주) 애니모비 | Method for recognising two-dimensional barcode |
CN105488552B (en) * | 2016-01-01 | 2018-05-15 | 江苏图码信息科技有限公司 | Nonlinear Two-Dimensional code product and application component |
CN113076768B (en) * | 2021-04-08 | 2023-04-11 | 中山大学 | Distortion correction method for fuzzy recognizable two-dimensional code |
KR102597459B1 (en) * | 2022-01-04 | 2023-11-02 | 주식회사 큐에스택 | System and method of correcting of image for diagnoisis |
EP4332832B1 (en) | 2022-09-02 | 2024-06-26 | Sick Ag | Locating an optical code |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07152906A (en) * | 1993-11-26 | 1995-06-16 | Tec Corp | Recognition processor for two-dimensional symbol image |
JP2004086305A (en) * | 2002-08-23 | 2004-03-18 | Seiko Epson Corp | Method for detecting bar code tilt angle and bar code reader |
JP2005316755A (en) * | 2004-04-28 | 2005-11-10 | Nec Electronics Corp | Two-dimensional rectangular code symbol reader and two-dimensional rectangular code symbol reading method |
JP4314148B2 (en) * | 2004-05-10 | 2009-08-12 | 株式会社リコー | Two-dimensional code reader |
JP4951735B2 (en) * | 2007-11-26 | 2012-06-13 | 株式会社デンソーウェーブ | Optical information reader |
-
2008
- 2008-08-12 JP JP2008208095A patent/JP4970385B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2010044586A (en) | 2010-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4551018B2 (en) | Image combiner | |
CN110298282B (en) | Document image processing method, storage medium and computing device | |
JP4657367B2 (en) | Image processing apparatus, imaging apparatus, and image distortion correction method | |
CN109871841B (en) | Image processing method, device, terminal and storage medium | |
RU2631765C1 (en) | Method and system of correcting perspective distortions in images occupying double-page spread | |
JP2005122320A (en) | Photographing apparatus, and its image processing method and program | |
JPH07192086A (en) | Picture inclination detection method | |
JP4970385B2 (en) | Two-dimensional code reader and program thereof | |
CN111767752B (en) | Two-dimensional code identification method and device | |
TWI567654B (en) | Picture-based barcode encoding method, picture-based barcode decoding method, picture-based barcode encoding device and picture-based barcode decoding device | |
JP3866600B2 (en) | Image processing apparatus and image processing method | |
CN113888431A (en) | Training method and device of image restoration model, computer equipment and storage medium | |
JP6075294B2 (en) | Image processing system and image processing method | |
CN112927163A (en) | Image data enhancement method and device, electronic equipment and storage medium | |
WO2024169397A9 (en) | Seal recognition method and apparatus, electronic device, and storage medium | |
WO2024169397A1 (en) | Seal recognition method and apparatus, electronic device, and storage medium | |
JP4565396B2 (en) | Image processing apparatus and image processing program | |
US20120038785A1 (en) | Method for producing high resolution image | |
JP4898655B2 (en) | Imaging apparatus and image composition program | |
CN112532884A (en) | Identification method and device and electronic equipment | |
CN115983304A (en) | Two-dimensional code dynamic adjustment method and device, electronic equipment and storage medium | |
CN114998347B (en) | Semiconductor panel corner positioning method and device | |
CN114332890A (en) | Table structure extraction method and device, electronic equipment and storage medium | |
CN113452920A (en) | Focus point determining method, device, equipment and medium | |
JP6056354B2 (en) | Image processing apparatus, image processing method, and image processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100805 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110929 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111011 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111207 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120306 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120404 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150413 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |