描,以后就可以不進行掃描了。
[0193]還有,即使進行周圍探索,也能夠充分減少圖像掃描次數(shù)。采用周圍探索處理時間最長的最壞情況的一個例子,是對每I像素配置I像素的縱向條紋的情況,但是這樣的情況原本不會發(fā)生,而且即使發(fā)生,周圍長的探索也能夠以與I次掃描相同的次數(shù)對全部像素進行抑制,掃描次數(shù)不增加。這對于其他最壞的情況也相同。
[0194]圖1的二維碼的情況下,通過尋找暗明暗明暗之比為1:1:3:1:1的部分,能夠檢測出位置檢測圖形,通過I次掃描能夠找到位置檢測圖形。在這里,通過拍攝的代碼傾斜45度時的掃描得到1:1:3:1:1的比例只是對角線上的掃描。多數(shù)情況下攝影的方向是自由的,因此拍攝的代碼的方向也可能是360度的任一旋轉(zhuǎn)位置。在這樣的情況下,能夠間隔剔除的量少,由于實際旋轉(zhuǎn)位置不清楚,因此不能夠加大間隔剔除量。
[0195]圖21是候補位置檢測圖形的形狀核對的說明圖。
[0196]下面,核對候補位置檢測圖形的形狀。第I實施形態(tài)的二維碼的位置檢測圖形全都具有框、即空孔形狀。因此,首先確認有無空孔。實施起點為外接長方形的左側(cè)中點(xl,(yl+y2)/2),終端為(x2,(yl+y2)/2)的x軸方向的掃描。在這里,對符合下面的(I)或(2)的條件的情況進行確認。
[0197](I)確認存在暗明暗的排列。確認從第I個暗的左端(Ixl)到第2個暗的右端(rxl)的中心的像素為明。
[0198](2)尋找暗明暗明暗的圖形。確認從第I個暗的左端(1x2)到第3個暗的右端(rx2)的中心的像素為暗。
[0199](I)的情況下再如圖21的(A)所示,從中心坐標((lxl+rxl)/2, (yl+y2)/2)起對上下進行掃描,上為明暗明(終點:((lxl+rxl)/2),yl — 1))、下為明暗明(終點:((lxl+rxl)/2),y2+l)),確認上側(cè)掃描的暗與明的邊界的y坐標tyl與下側(cè)掃描的暗與明的邊界的I坐標byl的中點,與明的中心坐標大致一致。
[0200](2)的情況下也還如圖21的(B)所示,從中心坐標((lx2+rx2)/2, (yl+y2)/2)對上下進行掃描,上為暗明暗明(終點:((lx2+rx2)/2),yl 一 I))、下為暗明暗明(終點:((lx2+rx2)/2),y2+l)),確認對上側(cè)掃描的第2個暗與明的邊界的y坐標ty2與下側(cè)掃描的第2個暗與明的邊界的y坐標by2的中點,與明的中心坐標大致一致。
[0201]利用以上所述的處理,可以區(qū)別框內(nèi)具有暗部的第I位置檢測圖形(正方形框內(nèi)有正方形)、以及只有框的第2?第4位置檢測圖形(正方形框或長方形框:口型)。
[0202]不符合⑴或⑵的不是位置檢測圖形。
[0203]下面對各候補位置檢測圖形的頂點進行探索。從外接的長方形的左上方的坐標(xl,yl)沿X軸方向掃描到(x2,yl)。將最初接觸的暗點的坐標記為vertexl: (vxl,vyl)。接著從右上方的坐標(x2,yl)掃描到Y(jié)軸方向(x2,y2)o將最初接觸的暗點的坐標記為vertex2: (vx2,vy2)。從右下方的坐標(x2,y2)沿X軸的相反方向掃描到(xl,y2)。最初接觸的暗點的坐標記為vertex3: (vx3,vy3)。接著從左下方的坐標(xl,y2)沿Y軸的相反方向掃描到(xl,yl)。最初接觸的暗點的坐標記為vertex4: (vx4,vy4)。vertexl?4理應(yīng)形成長方形(包括正方形)。不是那樣的情況下,不是位置檢測圖形。圖21的(B)的記載省略。
[0204]下面看長方形的縱橫比。利用((vxl— vx2) X (vxl — vx2) + (vyl — vy2) X (vyl —vy2))1/2求 I 邊的長度,利用((vx2 — vx3) X (vx2 一 vx3) + (vy2 一 vy3) X (vy2 一 vy3)) 1/2求另一邊的長度。如果邊的比率為(長邊):(短邊)=1:1且形狀為(I),則為第2位置檢測圖形,如果是(2),則為第I位置檢測圖形;如果(長邊):(短邊)=1:2,形狀為(1),則為第3或第4位置檢測圖形。到這里,3種位置檢測圖形就能夠區(qū)別了。
[0205]下面求面積。這里的面積是外側(cè)的長方形框的面積,也包含內(nèi)側(cè)的空間的面積。第I位置檢測圖形的情況下,也包含框中的正方形。位置檢測圖形的面積可從外側(cè)的長方形的面積減去包含4個角落的4個直角三角形的面積求得。從下式求得面積,即面積=(x2-xl) X (y2 — yl) — (vxl — vx4) X (vy4 — vyl) /2 — (vx2 — vxl) X (vy2 — vyl) /2 —(vx2 — vx3) X (vy3 — vy2) /2 — (vx3 — vx4) X (vy3 — vy4)/2。
[0206]下面求旋轉(zhuǎn)角度。第I及第2位置檢測圖形由于是正方形,不能夠檢測出90度以上的傾斜,因此求至90度為止。角度定為順時針旋轉(zhuǎn)的角度。
[0207]Θ = actan ((vy2 一 vyl) / (vx2 一 vxl))
[0208]Θ為旋轉(zhuǎn)角度。
[0209]第3及第4位置檢測圖形求O?180度。關(guān)于第3位置檢測圖形,將求2點間坐標的距離的函數(shù)定義為:length(Xl,yl,X2,y2) = ((x2 — xl)2+(y2 — yl)2)1/2,在 O ?45 度,length (vxl, vyl, vx2, vy2) > length (vx4, vy4, vxl, vyl),而且(x2 —xl) > (y2 — yl),利用 Θ = arctan((vy2 一 vyl)/(vx2 一 vxl))求得。在 45 ?90 度,length (vxl, vyl, vx2, vy2) > length (vx4, vy4, vxl, vyl)而且(x2 — xl)
<(y2 — yl),利用 Θ = arctan ((vy2 一 vyl) / (vx2 一 vxl))求得。在 90 ?135 度,length (vxl, vyl, vx2, vy2) < length (vx4, vy4, vxl, vyl)而且(x2 — xl) < (y2 —yl),利用 Θ = arctan((vy2 一 vyl)/(vx2 一 vxl)) +90 度求得。在 135 ?180 度,length (vxl, vyl, vx2, vy2) < length (vx4, vy4, vxl, vyl)而且(x2 — xl) > (y2 — yl),利用θ = arctan((vy2 — vyl)/(vx2 — vxl))+90度求得。對于第4位置檢測圖形,也同樣求旋轉(zhuǎn)角度Θ。
[0210]下面檢測候補位置檢測圖形的中心坐標。中心坐標定為外接長方形的中心((xl+x2)/2(yl+y2)/2)o
[0211]到此為止,對候補位置檢測圖形的檢查結(jié)束。
[0212]在步驟S106,對于已經(jīng)區(qū)分為3種的位置檢測圖形,針對每一區(qū)分將位置檢測圖形按面積降序排序。
[0213]在步驟S107,生成4種位置檢測圖形的組合。首先,選擇第I位置檢測圖形的候補中面積最大的候補位置檢測圖形。將第I位置檢測圖形的面積記為S時,尋找面積為S/4的第2位置檢測圖形的候補、且旋轉(zhuǎn)角度相同的組合。一旦找到這組合,就尋找面積為S/2的第3及第4位置檢測圖形的候補,再度尋找角度相同的候補和相差90度的候補的組合。
[0214]在這里,在I個畫面寫入多個二維碼的情況下,考慮候補位置檢測圖形的所有的組合時,成了莫大的組合。像本發(fā)明這樣通過將位置檢測圖形完全改變,使組合大大減少,再利用事前得到的形狀、面積、旋轉(zhuǎn)等特征,用簡單的比較運算,能夠進一步縮減組合。下面將對此加以敘述。
[0215]在步驟S107,判斷是否剩下未探討的4種位置檢測圖形的組合,如果剩下,就進入步驟S108,如果沒有剩下,就進入步驟S112。
[0216]在步驟S108,對于組合的位置檢測圖形,將其當作同一二維碼的位置檢測圖形,進行信息的取出。對于該處理,將參照圖19和圖20在后面敘述。
[0217]在步驟S109,根據(jù)信息取出成功與否的結(jié)果,進行如下處理:在成功的情況下進入步驟S110,在失敗的情況下進行將失敗的位置檢測圖形的組合除外,之后,返回步驟S107o
[0218]在步驟S110,保存取出成功的信息的消息。
[0219]在步驟S111,將成功地取出數(shù)據(jù)的二維圖形所使用的候補從候補位置檢測圖形中除去,然后返回步驟S107。還有,成功地取出數(shù)據(jù)的二維圖形的范圍內(nèi)存在未使用的候補位置檢測圖形的情況下,也將其從候補中去除。
[0220]通過反復實施步驟S107?S111,使拍入的二維碼的分析結(jié)束。在這里,剩下未被去除的候補位置檢測圖形的情況下,也可以對3種或2種組合實施步驟S108的信息取出處理。對此將在后面加以敘述。
[0221]在步驟S112,將關(guān)于分析已經(jīng)結(jié)束的消息發(fā)送到呼叫源。
[0222]在步驟S113,使分析主處理結(jié)束。
[0223]下面參照圖19和圖20對步驟S108的信息取出處理進行說明。。
[0224]在步驟S200,開始實施信息取出處理。
[0225]在步驟S201,核對位置檢測圖形的4種組合的關(guān)系。核對通過判斷以下的(a) (b)條件是否得到滿足來進行,如果有未滿足的項目,就認定為有問題,將處理結(jié)束。
[0226]首先,將上述第I位檢測圖案的中心坐標記為ptl,上述第2位檢測圖案的中心坐標記為pt2,上述第3位檢測圖案的中心坐標記為pt3、上述第4位檢測圖案的中心坐標記為pt4,依序?qū)tl、pt3、pt2、pt4、ptl各點加以連結(jié)。位置檢測的4種組合正確的話,能夠得到長方形。
[0227](a)全部頂點的角度為直角。
[0228](b)相向的邊的長度為1:1。
[0229]在步驟S202,根據(jù)以上的核對結(jié)果判斷有否問題,如果有,就進入步驟S203,就立表示信息取出失敗的標志,如果沒有問題,就進入步驟S204。
[0230]在步驟S204,從任一位置檢測圖形求每I單元的像素數(shù)。第2位置檢測圖形的情況下,面積為4X4= 16單元大小的面積,用每I單元的像素數(shù)=((面積)/16)1/2的公式求得。
[0231]在步驟S205,縱橫分別測定相鄰的位置檢測圖形的中心坐標的距離,用在步驟S204求出的值除,能夠分別求得二維碼的縱.橫單元尺寸。假設(shè)得到的中心坐標的橫向距離為d像素,每I單元的像素數(shù)為每單元P像素,則得到代碼的橫向單元尺寸=d/p+(4+6)??v向也采用同樣的方法。
[0232]在步驟S205,根據(jù)在步驟S205求得的單元尺寸臨時決定二維碼的版本(A'— P 3y )。版本每次增大8單元地階段性變大。由于通過代碼的橫向單元尺寸=橫向版本X8+19求得,將該式變形,可求得橫向版本=(單元尺寸一 19)/8。在這里得到的橫向版本的值作為橫向臨時決定版本。單元尺寸一致的版本不存在的情況下,指定單元尺寸最接近的版本??v向也用同樣的方法。作為臨時的理由是,考慮到由于從傾斜方向攝影、打字的紙彎曲等因素而得不到正確的值的可能性,通過將版本信息塊也一起利用,能夠得到正確的值。
[0233]在步驟S206,從位置檢測圖形出發(fā),掃描相鄰的位置檢測圖形的方向,以檢測構(gòu)成版本信息塊、格式信息塊的單元的在攝影圖像上的坐標。
[0234]在步驟S207,進行版本信息塊的分析(縱橫