一種圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及二維碼設(shè)計(jì)領(lǐng)域,特別是指一種圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法。
【背景技術(shù)】
[0002] 目前,隨著移動(dòng)互聯(lián)網(wǎng)高速發(fā)展,隨著3G/4G移動(dòng)網(wǎng)絡(luò)環(huán)境下智能手機(jī)和平板電腦 等移動(dòng)智能終端的快速普及以及二維碼編碼解碼技術(shù)的相對(duì)成熟,二維碼應(yīng)用不再受到時(shí) 空和硬件設(shè)備的局限因而對(duì)人們?nèi)粘I町a(chǎn)生的影響日益深遠(yuǎn)。二維碼被廣泛應(yīng)用于各個(gè) 行業(yè),如物流業(yè)、生產(chǎn)制造業(yè)、交通、安防、票證等行業(yè)。而且,隨著全球信息通信技術(shù)的迅猛 發(fā)展,以手機(jī)為終端的各種應(yīng)用不斷涌現(xiàn),在未來(lái),手機(jī)無(wú)疑將成為移動(dòng)商務(wù)賴以發(fā)展的最 重要的終端之一,而手機(jī)二維碼的發(fā)展將在移動(dòng)商務(wù)的發(fā)展中將扮演重要角色。
[0003] 但是,當(dāng)前二維碼的印刷和放置受到一定限制,在目前的技術(shù)中,需要將二維碼印 制在平面或近似平面的印品上、或顯示在平面的終端顯示屏上,才能使得用戶移動(dòng)終端中 的掃碼APP可以識(shí)別。但如果需要將二維碼圖案印制或者顯示在非平面的物體表面上,尤其 是圓錐體表面且不改變當(dāng)前的掃碼軟件的解碼功能便可掃碼成功,成為了一個(gè)有待解決的 問題。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本發(fā)明的目的在于提出一種圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法。通過 將想要印制在印品表面(或二維碼顯示圖像,用于圓錐體的電子顯示平面)的二維碼進(jìn)行預(yù) 形變后再進(jìn)行印刷。
[0005] 基于上述目的本發(fā)明提供的一種圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法,包括:
[0006] 對(duì)原始二維碼圖像進(jìn)行橫向拉伸,得到第一形變二維碼圖像;
[0007] 對(duì)第一形變二維碼圖像進(jìn)行縱向拉伸,得到第二形變二維碼圖像,并作為預(yù)形變 后的二維碼圖像。
[0008] 在一些實(shí)施方式中,所述對(duì)原始二維碼圖像進(jìn)行橫向拉伸,得到第一形變二維碼 圖像的步驟,還包括:
[0009] 將原始二維碼圖像上的像素點(diǎn)均儲(chǔ)存為原始像素點(diǎn);
[0010]將目標(biāo)圓錐體以豎直方向上的像素點(diǎn)為間隔進(jìn)行水平切片,得到若干個(gè)圓形切 片;
[0011] 根據(jù)原始二維碼圖像的尺寸和目標(biāo)圓錐體的尺寸,得到第一形變二維碼圖像在每 個(gè)圓形切片邊緣上所占弧長(zhǎng),所述弧上每一個(gè)像素點(diǎn)為形變后像素點(diǎn);
[0012] 將每一個(gè)原始二維碼圖像上的原始像素點(diǎn)的像素值賦給對(duì)應(yīng)的形變后像素點(diǎn)的 像素值;
[0013] 計(jì)算得到每個(gè)形變后像素點(diǎn)到所在弧的左端點(diǎn)的弧長(zhǎng),得到所述形變后像素點(diǎn)的 已映射長(zhǎng)度并記錄,記錄每個(gè)形變后像素點(diǎn)所屬弧的順序號(hào);
[0014] 整合所得數(shù)據(jù),在平面上得到第一形變二維碼圖像的展開圖。
[0015] 在一些實(shí)施方式中,所述得到第一形變二維碼圖像在每個(gè)圓形切片邊緣上所占弧 長(zhǎng)的步驟,可隨機(jī)選取任意切片計(jì)算,也可按照所述圓形切片的直徑從小到大的順序計(jì)算。
[0016] 在一些實(shí)施方式中,所述計(jì)算得到每個(gè)形變后像素點(diǎn)到所在弧的左端點(diǎn)的弧長(zhǎng), 得到所述形變后像素點(diǎn)的已映射長(zhǎng)度的步驟,還進(jìn)一步包括:
[0017] 找到所述每個(gè)形變后像素點(diǎn)到所在弧的中點(diǎn);
[0018] 判斷所述形變后像素點(diǎn)在所述中點(diǎn)的左側(cè)還是右側(cè);
[0019] 若所述形變后像素點(diǎn)在所述中點(diǎn)的左側(cè),使用第一左側(cè)算法得到所述形變后像素 點(diǎn)的已映射長(zhǎng)度;
[0020] 若所述形變后像素點(diǎn)在所述中點(diǎn)的右側(cè),使用第一右側(cè)算法得到所述形變后像素 點(diǎn)的已映射長(zhǎng)度。
[0021 ]在一些實(shí)施方式中,所述整合所得數(shù)據(jù)的步驟為:
[0022] 按照所述每個(gè)形變后像素點(diǎn)所屬弧的順序號(hào);
[0023] 將同一順序號(hào)中的形變后像素點(diǎn)分為一組;
[0024]將同一組中的像素點(diǎn)按照對(duì)應(yīng)的已映射長(zhǎng)度排列,得到第一形變二維碼圖像中的 不同行像素;
[0025] 將第一形變二維碼圖像中的不同行像素按照順序號(hào)進(jìn)行排布,得到第一形變二維 碼圖像的展開圖。
[0026] 在一些實(shí)施方式中,所述對(duì)第一形變二維碼圖像進(jìn)行縱向拉伸,得到第二形變二 維碼圖像,并作為預(yù)形變后的二維碼圖像的步驟,還包括:
[0027]確定預(yù)形變后的二維碼圖像的軸線和第一形變二維碼圖像的軸線,從第一形變二 維碼圖像中找到對(duì)應(yīng)的點(diǎn)并將其像素值賦值給所述預(yù)形變后的二維碼圖像的軸線上對(duì)應(yīng) 的點(diǎn)。
[0028] 在一些實(shí)施方式中,所述對(duì)第一形變二維碼圖像進(jìn)行縱向拉伸,得到第二形變二 維碼圖像,并作為預(yù)形變后的二維碼圖像的步驟,還包括:
[0029] 計(jì)算出行像素是所述第一形變二維碼圖像中的第X行,計(jì)算得到行像素 上任意一點(diǎn)P到第一形變二維碼圖像的軸線的弧長(zhǎng),其中,為第一形變二維碼圖像中 的任意一行像素,X為大于等于1的整數(shù)。
[0030] 在一些實(shí)施方式中,將預(yù)形變后的二維碼圖像的軸線最底端的點(diǎn)設(shè)為原點(diǎn),以所 述軸線為y軸建立平面直角坐標(biāo)系,計(jì)算得到第一形變二維碼圖像上任意P點(diǎn)對(duì)應(yīng)在所述預(yù) 形變后的二維碼圖像中的平面直角坐標(biāo)系中的坐標(biāo)(n,m),將所述P點(diǎn)的像素值賦給點(diǎn)(n, m),其中η和m均為整數(shù)。
[0031] 在一些實(shí)施方式中,所述計(jì)算得到行像素'_@^上任意一點(diǎn)P到第一形變二維碼圖 像的軸線的弧長(zhǎng)的步驟,還進(jìn)一步包括:
[0032] 找到所述P點(diǎn)所在弧的中點(diǎn);
[0033] 判斷所述P點(diǎn)在所述中點(diǎn)的左側(cè)還是右側(cè);
[0034] 若所述P點(diǎn)在所述中點(diǎn)的左側(cè),使用第二左側(cè)算法得到所述點(diǎn)P到第一形變二維碼 圖像的軸線的弧長(zhǎng);
[0035] 若所述P點(diǎn)在所述中點(diǎn)的右側(cè),使用第二右側(cè)算法得到所述點(diǎn)P到第一形變二維碼 圖像的軸線的弧長(zhǎng)。
[0036] 在一些實(shí)施方式中,其特征在于,若所述η和m不是整數(shù),則對(duì)其進(jìn)行向下取整。
[0037] 從上面所述可以看出,本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法,通過一 定的空間幾何關(guān)系對(duì)原始二維碼圖像進(jìn)行預(yù)形變,將得到的預(yù)形變后的二維碼圖像印刷于 圓錐體印品平面,在曲面情況下其投影平面恰好為未失真的二維碼,任意解碼軟件均可在 該二維碼的中心處掃描、解碼,以此提高二維碼的應(yīng)用范圍。
【附圖說明】
[0038] 圖1為本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法中目標(biāo)圓錐體正視圖;
[0039] 圖2為本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法中目標(biāo)圓錐體橫切面示意 圖;
[0040] 圖3為本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法中目標(biāo)圓錐體表面展開示 意圖;
[0041] 圖4為本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法中原始二維碼圖像示意 圖;
[0042] 圖5為本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法中第一形變二維碼圖像展 開圖;
[0043] 圖6為本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法中預(yù)形變后的二維碼圖像 展開圖。
【具體實(shí)施方式】
[0044] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照 附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。
[0045]需要說明的是,本發(fā)明實(shí)施例中所有使用"第一"和"第二"的表述均是為了區(qū)分兩 個(gè)相同名稱非相同的實(shí)體或者非相同的參量,可見"第一" "第二"僅為了表述的方便,不應(yīng) 理解為對(duì)本發(fā)明實(shí)施例的限定,后續(xù)實(shí)施例對(duì)此不再一一說明。
[0046] 本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法,其中
[0047] 對(duì)原始二維碼圖像進(jìn)行橫向拉伸,得到第一形變二維碼圖像;
[0048] 對(duì)第一形變二維碼圖像進(jìn)行縱向拉伸,得到預(yù)形變后的二維碼圖像。
[0049] 在本發(fā)明所提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法中,
[0050] 將需要印刷形變后的二維碼圖像的圓錐載體視為目標(biāo)圓錐體,將目標(biāo)圓錐體豎直 放置于平面,并將原始二維碼圖像同樣豎直放置于平面并正對(duì)目標(biāo)圓錐體,根據(jù)投影關(guān)系 可知,原始二維碼圖像投影在目標(biāo)圓錐體表面會(huì)產(chǎn)生形變,而所述在立體投影中產(chǎn)生的形 變,在平面圖中則需要對(duì)原始二維碼圖像按橫向拉伸和縱向拉伸形變兩個(gè)階段進(jìn)行,才能 使得預(yù)形變后的二維碼圖像印刷在所述目標(biāo)圓錐體上時(shí)可以在豎直平面上投影出原始二 維碼圖像。參照附圖1,為本發(fā)明提供的圓錐表面的二維碼預(yù)形變?cè)O(shè)計(jì)方法中目標(biāo)圓錐體的 正視圖。
[0051] 第一階段,原始二維碼圖像在縱向保存不變,對(duì)其橫向進(jìn)行兩側(cè)拉伸,其中實(shí)線部 分為二維碼覆蓋區(qū)域,設(shè)二維碼的寬高度均為h,設(shè)
[0052]
[0053]
[0054]
[0055] 將目標(biāo)圓錐體由〇dlj〇2切成單位厚度為單位1的圓片,其中所述單位1為原始二維 碼圖像在豎直方向上的原始像素點(diǎn)個(gè)數(shù),所述豎直方向上的原始像素點(diǎn)個(gè)數(shù)為h,因此可知 目標(biāo)圓錐體被投影的部分可由h個(gè)半徑不同的圓片組成,其中每個(gè)圓片的尺寸信息可按照 如下方法計(jì)算,待計(jì)算的圓片稱為目標(biāo)圓片。
[0056] R〇 = r+n · tana(〇<nh)
[0057]
[0058] 其中,Ro為h個(gè)圓片中目標(biāo)圓片的半徑值;r為h個(gè)圓片中半