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