欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種圓?棱柱組合體表面的二維碼的生成和采集方法與流程

文檔序號(hào):11952184閱讀:209來源:國(guó)知局
一種圓?棱柱組合體表面的二維碼的生成和采集方法與流程

本發(fā)明涉及二維碼的打印和識(shí)別領(lǐng)域,特別是指一種圓-棱柱組合體表面的二維碼的生成和采集方法。



背景技術(shù):

目前,隨著移動(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),在未來,手機(jī)無疑將成為移動(dòng)商務(wù)賴以發(fā)展的最重要的終端之一,而手機(jī)二維碼的發(fā)展將在移動(dòng)商務(wù)的發(fā)展中將扮演重要角色。

但是,當(dāng)前二維碼的印刷和放置受到一定限制,在目前的技術(shù)中,需要將二維碼印制在平面或近似平面的印品上、或顯示在平面的終端顯示屏上,才能使得用戶移動(dòng)終端中的掃碼APP可以識(shí)別。但如果需要將二維碼圖案印制或者顯示在非平面的物體表面上,尤其是圓-棱柱組合體表面,如何在不改變當(dāng)前的掃碼軟件的解碼功能的前提便可掃碼成功,成為了一個(gè)有待解決的問題。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明的目的在于提出一種在圓-棱柱組合體表面打印二維碼,并且在不改變當(dāng)前的掃碼軟件的解碼功能的前提便可掃碼成功的二維碼的生成和采集方法。

基于上述目的本發(fā)明提供的一種圓-棱柱組合體表面的二維碼的生成和采集方法,所述圓-棱柱組合體表面包括圓柱面以及圓柱面兩側(cè)的第一平面和第二平面,包括:

獲取所述原始二維碼的寬度,以及所述圓-棱柱組合體表面中第一平面、圓柱面和第二平面在標(biāo)準(zhǔn)平面中的投影的寬度比例,其中,所述標(biāo)準(zhǔn)平面為所述圓柱面中線處的切面的平行平面;

根據(jù)所述寬度比例將所述原始二維碼分割為對(duì)應(yīng)部分,對(duì)所述第一平面和第二平面對(duì)應(yīng)的原始二維碼部分分別做橫向線性拉伸,得到所述第一平面和所述第二平面的預(yù)形變二維碼部分,對(duì)所述圓柱面對(duì)應(yīng)的原始二維碼部分做橫向非線性拉伸,得到所述圓柱面的預(yù)形變二維碼部分,將所述第一平面和所述第二平面的預(yù)形變二維碼部分以及所述圓柱面的預(yù)形變二維碼部分組合成完整的預(yù)形變二維碼,打印在所述圓-棱柱組合體表面的對(duì)應(yīng)位置處;

使用采集設(shè)備對(duì)所述完整的預(yù)形變二維碼沿垂直所述標(biāo)準(zhǔn)面的方向進(jìn)行圖像采集,得到所述完整的預(yù)形變二維碼對(duì)應(yīng)的采集圖像,所述采集圖像與所述原始二維碼相同。

進(jìn)一步的,所述圓-棱柱組合體表面的二維碼的生成包括:

將所述原始二維碼在豎直高度上切成單位厚度為1像素點(diǎn)的行像素;

對(duì)每一行所述像素進(jìn)行相應(yīng)的所述橫向線性拉伸和橫向非線性拉伸,得到所述圓-棱柱組合體表面上的預(yù)形變二維碼的與所述行像素對(duì)應(yīng)的預(yù)形變行像素;

遍歷整個(gè)所述的預(yù)形變二維碼圖像,根據(jù)與原始二維碼圖像的對(duì)應(yīng)關(guān)系,對(duì)預(yù)形變二維碼圖像進(jìn)行賦值,從而得到預(yù)形變二維碼圖像。

進(jìn)一步的,對(duì)于所述行像素,其進(jìn)一步包括第一段直線段、第二段直線段和弧線段,所述對(duì)每一行所述像素進(jìn)行相應(yīng)的所述橫向線性拉伸和橫向非線性拉伸的過程為對(duì)所述第一段直線段和第二段直線段進(jìn)行橫向線性拉伸,對(duì)所述弧線段進(jìn)行橫向非線性拉伸,具體為:

將原始二維碼中的第一直線段的像素進(jìn)行編號(hào);

得到第一平面與第二平面之間的較小的角度,計(jì)算其角度的正弦作為第一比例值,將原始二維碼中的第一直線段長(zhǎng)度除以第一比例值,可以得到預(yù)形變二維碼中第一直線段的長(zhǎng)度。將所述預(yù)形變二維碼中第一直線段的像素點(diǎn)進(jìn)行編號(hào)。

將預(yù)形變二維碼中所述第一直線段的編號(hào)乘以所述第一比例值,然后四舍五入取整,得到對(duì)應(yīng)的原始二維碼中第一直線段的像素點(diǎn)編號(hào)。從而得到預(yù)形變二維碼第一直線段中像素點(diǎn)與原始二維碼第一直線段像素點(diǎn)的對(duì)應(yīng)關(guān)系;

根據(jù)所述的像素點(diǎn)對(duì)應(yīng)關(guān)系將原始二維碼中第一直線段中的像素點(diǎn)的像素賦值在預(yù)形變二維碼部分的第一直線段的對(duì)應(yīng)編號(hào)的像素點(diǎn),生成預(yù)形變二維碼第一直線段;

對(duì)所述第二段直線段對(duì)應(yīng)的原始二維碼部分做如對(duì)所述第一段直線段的所述橫向線性拉伸,生成第二段直線段的預(yù)形變二維碼第二行像素段;

以所述弧線段的圓心為原點(diǎn),垂直所述弧線段對(duì)稱軸的直線為坐標(biāo)軸,以像素點(diǎn)為單位對(duì)所述弧線段對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)進(jìn)行編號(hào),;

定義第二比值的函f(x)=x/sinx;其中,x∈(0,θ/2],θ為所述弧線段的圓心角的弧度值;

將所述弧線段對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的編號(hào)乘所述第二比值,然后四舍五入取整,可以得到預(yù)形變二維碼中第二直線段的長(zhǎng)度。將所述預(yù)形變二維碼中第二直線段的像素點(diǎn)進(jìn)行編號(hào),從而得到預(yù)形變二維碼第二直線段中像素點(diǎn)與原始二維碼第二直線段像素點(diǎn)的對(duì)應(yīng)關(guān)系;

根據(jù)所述的像素點(diǎn)對(duì)應(yīng)關(guān)系將原始二維碼中第二直線段中的像素點(diǎn)的像素賦值在預(yù)形變二維碼部分的第二直線段的對(duì)應(yīng)編號(hào)的像素點(diǎn),生成預(yù)形變二維碼第二直線段;

將所述預(yù)形變二維碼第一行像素段、預(yù)形變二維碼第二行像素段和預(yù)形變二維碼弧線段像素段組成所述行像素對(duì)應(yīng)的預(yù)形變二維碼行像素;

對(duì)每一個(gè)所述行像素均執(zhí)行前述過程,將生成的多個(gè)所述預(yù)形變二維碼行像素組合成所述完整的預(yù)形變二維碼。

進(jìn)一步的,所述對(duì)所述第一平面和第二平面對(duì)應(yīng)的原始二維碼部分分別做橫向線性拉伸包括:

獲取所述原始二維碼的像素點(diǎn)的像素值,將所述第一平面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)進(jìn)行編號(hào);

計(jì)算得到所述第一平面的寬度和所述第一平面在所述標(biāo)準(zhǔn)平面中的投影寬度的比值,作為第一比值;

將所述第一平面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的編號(hào)乘所述第一比值,然后四舍五入取整,得到對(duì)應(yīng)的所述第一平面的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào);

將所述第一平面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的像素值賦值在所述第一平面的預(yù)形變二維碼部分的對(duì)應(yīng)編號(hào)的像素點(diǎn)上,并將所述相鄰的所述第一平面的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào)之間的像素點(diǎn)的像素值設(shè)定為后一編號(hào)對(duì)應(yīng)像素點(diǎn)的像素值,生成第一平面的預(yù)形變二維碼部分;

對(duì)所述第二平面對(duì)應(yīng)的原始二維碼部分做如對(duì)所述第一平面相同的所述橫向線性拉伸,生成第二平面的預(yù)形變二維碼部分;

所述對(duì)所述圓柱面對(duì)應(yīng)的原始二維碼部分做橫向非線性拉伸包括:

以所述圓柱面的一個(gè)截面的圓心為原點(diǎn),垂直所述截面對(duì)稱軸的直線為坐標(biāo)軸,以像素點(diǎn)為單位對(duì)所述圓柱面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)進(jìn)行編號(hào);

定義第二比值的函數(shù)f(x)=x/sinx;其中,x∈(0,θ/2],θ為所述圓柱面的截面的圓心角的弧度值;

將所述圓柱面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的編號(hào)乘所述第二比值,然后四舍五入取整,得到對(duì)應(yīng)的所述圓柱面的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào);

將所述圓柱面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的像素值賦值在所述圓柱面的預(yù)形變二維碼部分的對(duì)應(yīng)編號(hào)的像素點(diǎn)上,并將所述相鄰的所述圓柱面的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào)之間的像素點(diǎn)的像素值設(shè)定為后一編號(hào)對(duì)應(yīng)像素點(diǎn)的像素值,生成圓柱面的預(yù)形變二維碼部分。

進(jìn)一步的,所述圓-棱柱組合體表面的二維碼的生成過程包括:

將所述原始二維碼一列像素進(jìn)行相應(yīng)的橫向線性拉伸或橫向非線性拉伸,得到所述圓-棱柱組合體表面上的預(yù)形變二維碼的與所述列像素對(duì)應(yīng)的列像素;

遍歷整個(gè)所述的預(yù)形變二維碼圖像,根據(jù)與原始二維碼圖像的對(duì)應(yīng)關(guān)系,對(duì)預(yù)形變二維碼圖像進(jìn)行賦值,從而得到預(yù)形變二維碼圖像。

進(jìn)一步的,當(dāng)所述一種圓-棱柱組合體表面左右對(duì)稱時(shí),僅需計(jì)算對(duì)稱軸一側(cè)的預(yù)形變二維碼的像素點(diǎn)編號(hào),根據(jù)所述編號(hào)對(duì)所述預(yù)形變二維碼的像素點(diǎn)賦值,并按照同樣的賦值方法對(duì)對(duì)稱軸另一側(cè)的預(yù)形變二維碼的像素點(diǎn)進(jìn)行賦值。

從上面所述可以看出,本發(fā)明提供的一種圓-棱柱組合體表面的二維碼的生成和采集方法,根據(jù)棱柱面和圓柱面的比例將原始二維碼分割為對(duì)應(yīng)部分,并對(duì)棱柱面對(duì)應(yīng)的二維碼部分做橫向線性拉伸,得到棱柱面的預(yù)形變二維碼部分,對(duì)圓柱面對(duì)應(yīng)的原始二維碼部分做橫向非線性拉伸,得到所述圓柱面的預(yù)形變二維碼部分,并組合成完整的預(yù)形變二維碼,打印在圓-棱柱組合體表面的對(duì)應(yīng)位置處;使用采集設(shè)備對(duì)所述完整的預(yù)形變二維碼沿垂直所述標(biāo)準(zhǔn)面的方向進(jìn)行圖像采集,得到所述完整的預(yù)形變二維碼對(duì)應(yīng)的采集圖像;所述采集圖像與所述原始二維碼相同。在不改變當(dāng)前的掃碼軟件的解碼模塊情況下實(shí)現(xiàn)二維碼的讀取和識(shí)別,拓寬了二維碼的應(yīng)用場(chǎng)合,特別在一些小尺寸的、表面為圓-棱柱組合體表面的商品上可得到相關(guān)應(yīng)用。

附圖說明

圖1為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法的一個(gè)實(shí)施例的流程圖;

圖2為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法的另一個(gè)實(shí)施例的流程圖;

圖3為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法的再一個(gè)實(shí)施例的流程圖;

圖4為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法一個(gè)實(shí)施例中預(yù)形變二維碼打印載體示意圖;

圖5為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法的載體截面示意圖;

圖6為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法一個(gè)實(shí)施例中采用的原始二維碼圖片;

圖7為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法一個(gè)實(shí)施例中采用的原始二維碼拉伸后生成的預(yù)形變二維碼圖片。

具體實(shí)施方式

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。

本發(fā)明的實(shí)施例提供一種圓-棱柱組合體表面的二維碼的生成和采集方法,所述圓-棱柱組合體表面包括圓柱面以及圓柱面兩側(cè)的第一平面和第二平面,,包括:

獲取所述原始二維碼的寬度,以及所述圓-棱柱組合體表面中第一平面、圓柱面和第二平面在標(biāo)準(zhǔn)平面中的投影的寬度比例,其中,所述標(biāo)準(zhǔn)平面為所述圓柱面中線處的切面的平行平面。

并根據(jù)所述寬度比例將所述原始二維碼分割為對(duì)應(yīng)部分,對(duì)所述第一平面和第二平面對(duì)應(yīng)的原始二維碼部分分別做橫向線性拉伸,得到所述第一平面和所述第二平面的預(yù)形變二維碼部分,對(duì)所述圓柱面對(duì)應(yīng)的原始二維碼部分做橫向非線性拉伸,得到所述圓柱面的預(yù)形變二維碼部分,將所述第一平面和所述第二平面的預(yù)形變二維碼部分以及所述圓柱面的預(yù)形變二維碼部分組合成完整的預(yù)形變二維碼,打印在所述圓-棱柱組合體表面的對(duì)應(yīng)位置處。

當(dāng)使用采集設(shè)備對(duì)所述完整的預(yù)形變二維碼沿垂直所述標(biāo)準(zhǔn)面的方向進(jìn)行圖像采集,得到所述完整的預(yù)形變二維碼對(duì)應(yīng)的采集圖像,所述采集圖像與所述原始二維碼相同。

如圖1所示,為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法的一個(gè)實(shí)施例的流程圖。在本實(shí)施例中,所述圓-棱柱組合體表面的二維碼的生成和采集方法包括以下步驟:

步驟101:獲取所述原始二維碼,并測(cè)量其寬度。

步驟102:選取圓柱面中線處的切面的平行平面為標(biāo)準(zhǔn)平面,并計(jì)算圓-棱柱組合體表面中第一平面、圓柱面和第二平面在標(biāo)準(zhǔn)平面中的投影的寬度比例。

步驟103:根據(jù)圓-棱柱組合體表面中第一平面、圓柱面和第二平面在標(biāo)準(zhǔn)平面中的投影的寬度比例將原始二維碼分割為對(duì)應(yīng)部分。

步驟104:對(duì)所述第一平面和第二平面對(duì)應(yīng)的原始二維碼部分分別做橫向線性拉伸,得到所述第一平面和所述第二平面的預(yù)形變二維碼部分,對(duì)所述圓柱面對(duì)應(yīng)的原始二維碼部分做橫向非線性拉伸,得到所述圓柱面的預(yù)形變二維碼部分。

步驟105:將所述第一平面和所述第二平面的預(yù)形變二維碼部分以及所述圓柱面的預(yù)形變二維碼部分組合成完整的預(yù)形變二維碼,打印在所述圓-棱柱組合體表面的對(duì)應(yīng)位置處。

步驟106:當(dāng)使用采集設(shè)備對(duì)所述完整的預(yù)形變二維碼沿垂直所述標(biāo)準(zhǔn)面的方向進(jìn)行圖像采集,得到所述完整的預(yù)形變二維碼對(duì)應(yīng)的采集圖像,所述采集圖像與所述原始二維碼相同。

本發(fā)明通過張貼二維碼的圓-棱組合柱體的空間幾何關(guān)系約束,按照保形投影逆映射的要求,將正常的二維碼圖片預(yù)先進(jìn)行線性和非線性拉伸,得到預(yù)形變二維碼。預(yù)形變的二維碼經(jīng)過打印以后張貼到圓-棱組合柱體表面,通過二維碼掃描終端,在不改變當(dāng)前的掃碼軟件的解碼模塊情況下實(shí)現(xiàn)二維碼的讀取和識(shí)別,拓寬了二維碼的應(yīng)用場(chǎng)合,特別在一些小尺寸的、表面為圓-棱柱組合體表面的商品上可得到相關(guān)應(yīng)用。

如圖2所示,為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法的另一個(gè)實(shí)施例的流程圖。在本實(shí)施例中,圓-棱柱組合體表面的二維碼的生成和采集方法包括以下步驟:

步驟201:獲取原始二維碼,測(cè)量原始二維碼的寬度,并對(duì)原始二維碼的像素點(diǎn)進(jìn)行編號(hào),選取標(biāo)準(zhǔn)平面。

步驟202:將所述原始二維碼在豎直高度上切成單位厚度為1像素點(diǎn)的行像素,對(duì)單一行像素進(jìn)行操作,對(duì)于所述行像素,其進(jìn)一步包括第一段直線段、第二段直線段和弧線段。

步驟203:對(duì)第一直線段和第二直線段對(duì)應(yīng)的行像素部分進(jìn)行橫向的線性拉伸,具體過程包括步驟204和步驟205。

步驟204:計(jì)算得到所述第一段直線段的寬度和所述第一段直線段在所述標(biāo)準(zhǔn)平面中的投影寬度的比值,作為第一比值。

步驟205:將所述第一段直線段對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的編號(hào)乘所述第一比值,然后四舍五入取整,得到對(duì)應(yīng)的所述第一段直線段的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào)。將所述第一段直線段對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的像素值賦值在所述第一段直線段的預(yù)形變二維碼部分的對(duì)應(yīng)編號(hào)的像素點(diǎn)上,并將所述相鄰的所述第一段直線段預(yù)形變二維碼部分的像素點(diǎn)的編號(hào)之間的像素點(diǎn)的像素值設(shè)定為后一編號(hào)對(duì)應(yīng)像素點(diǎn)的像素值,生成第一段直線段對(duì)應(yīng)的預(yù)形變二維碼第一行像素段。對(duì)所述第二段直線段對(duì)應(yīng)的原始二維碼部分做如對(duì)所述第一段直線段的所述橫向線性拉伸,生成第二段直線段的預(yù)形變二維碼第二行像素段。

步驟206:對(duì)弧線段對(duì)應(yīng)的行像素部分進(jìn)行橫向的非線性拉伸,具體過程包括步驟207和步驟208。

步驟207:以所述弧線段的圓心為原點(diǎn),垂直所述弧線段對(duì)稱軸的直線為坐標(biāo)軸,以像素點(diǎn)為單位對(duì)所述弧線段對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)進(jìn)行編號(hào)。定義第二比值的函數(shù)f(x)=x/sinx;其中,x∈(0,θ/2],θ為所述弧線段的圓心角的弧度值。

步驟208:將所述弧線段對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的像素值賦值在所述弧線段的預(yù)形變二維碼部分的對(duì)應(yīng)編號(hào)的像素點(diǎn)上,并將所述相鄰的所述弧線段的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào)之間的像素點(diǎn)的像素值設(shè)定為后一編號(hào)對(duì)應(yīng)像素點(diǎn)的像素值,生成弧線段對(duì)應(yīng)的預(yù)形變二維碼的弧線段像素段。

步驟209:將預(yù)形變二維碼第一行像素段、預(yù)形變二維碼第二行像素段和預(yù)形變二維碼弧線段像素段組成所述行像素對(duì)應(yīng)的預(yù)形變二維碼行像素。

步驟210:對(duì)每一行所述像素進(jìn)行相應(yīng)的所述橫向線性拉伸和橫向非線性拉伸,得到所述圓-棱柱組合體表面上的預(yù)形變二維碼的與所述行像素對(duì)應(yīng)的預(yù)形變行像素;遍歷整個(gè)所述的預(yù)形變二維碼圖像,根據(jù)與原始二維碼圖像的對(duì)應(yīng)關(guān)系,對(duì)預(yù)形變二維碼圖像進(jìn)行賦值,從而得到預(yù)形變二維碼圖像。

如圖3所示,為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法的再一個(gè)實(shí)施例的流程圖。在本實(shí)施例中,圓-棱柱組合體表面的二維碼的生成和采集方法包括以下步驟:

步驟301:獲取原始二維碼,測(cè)量原始二維碼的寬度,并對(duì)原始二維碼的像素點(diǎn)進(jìn)行編號(hào),選取標(biāo)準(zhǔn)平面。所示標(biāo)準(zhǔn)平面為圓柱面中線處的切面的平行平面。對(duì)原始二維碼的像素點(diǎn)從左到右進(jìn)行編號(hào),也可以從右到左進(jìn)行編號(hào),為了計(jì)算方便,通常從1開始對(duì)像素點(diǎn)進(jìn)行編號(hào)。

步驟302:將原始二維碼根據(jù)圓-棱柱組合面在標(biāo)準(zhǔn)平面中投影寬度的比例分割,即將原始二維碼分割為第一平面、第二平面和圓柱面對(duì)應(yīng)的部分。

步驟303:分別對(duì)第一平面部分對(duì)應(yīng)的原始二維碼和第二平面部分對(duì)應(yīng)的原始二維碼做橫向線性拉伸,具體過程包括步驟304和步驟305。

步驟304:計(jì)算得到所述第一平面的寬度和所述第一平面在所述標(biāo)準(zhǔn)平面中的投影寬度的比值,作為第一比值;計(jì)算得到所述第二平面的寬度和所述第二平面在所述標(biāo)準(zhǔn)平面中的投影寬度的比值,作為第二比值。

步驟305:將所述第一平面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的編號(hào)乘所述第一比值,然后四舍五入取整,得到對(duì)應(yīng)的所述第一平面的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào);將所述第一平面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的像素值賦值在所述第一平面的預(yù)形變二維碼部分的對(duì)應(yīng)編號(hào)的像素點(diǎn)上,并將所述相鄰的所述第一平面的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào)之間的像素點(diǎn)的像素值設(shè)定為后一編號(hào)對(duì)應(yīng)像素點(diǎn)的像素值,生成第一平面的預(yù)形變二維碼部分;對(duì)所述第二平面對(duì)應(yīng)的原始二維碼部分做如對(duì)所述第一平面相同的所述橫向線性拉伸,生成第二平面的預(yù)形變二維碼部分。

步驟306:對(duì)圓柱面部分對(duì)應(yīng)的原始二維碼做橫向非線性拉伸,具體過程包括步驟307和步驟308。

步驟307:以所述圓柱面的一個(gè)截面的圓心為原點(diǎn),垂直所述截面對(duì)稱軸的直線為坐標(biāo)軸,以像素點(diǎn)為單位對(duì)所述圓柱面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)進(jìn)行編號(hào);

定義第二比值的函數(shù)f(x)=x/sinx;其中,x∈(0,θ/2],θ為所述圓柱面的截面的圓心角的弧度值。

步驟308:將所述圓柱面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的編號(hào)乘所述第二比值,然后四舍五入取整,得到對(duì)應(yīng)的所述圓柱面的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào);將所述圓柱面對(duì)應(yīng)的原始二維碼部分的像素點(diǎn)的像素值賦值在所述圓柱面的預(yù)形變二維碼部分的對(duì)應(yīng)編號(hào)的像素點(diǎn)上,并將所述相鄰的所述圓柱面的預(yù)形變二維碼部分的像素點(diǎn)的編號(hào)之間的像素點(diǎn)的像素值設(shè)定為后一編號(hào)對(duì)應(yīng)像素點(diǎn)的像素值,生成圓柱面的預(yù)形變二維碼部分。

步驟309:將第一平面的預(yù)形變二維碼部分、第二平面的預(yù)形變二維碼部分和圓柱面的預(yù)形變二維碼部分組合成完整的預(yù)形變二維碼。

作為本發(fā)明的一個(gè)實(shí)施例,所述圓-棱柱組合體表面的二維碼的生成過程還可以為:

將所述原始二維碼一列像素進(jìn)行相應(yīng)的橫向線性拉伸或橫向非線性拉伸,得到所述圓-棱柱組合體表面上的預(yù)形變二維碼的與所述列像素對(duì)應(yīng)的列像素;

遍歷整個(gè)所述的預(yù)形變二維碼圖像,根據(jù)與原始二維碼圖像的對(duì)應(yīng)關(guān)系,對(duì)預(yù)形變二維碼圖像進(jìn)行賦值,從而得到預(yù)形變二維碼圖像。

作為本發(fā)明的另一個(gè)實(shí)施例,當(dāng)所述一種圓-棱柱組合體表面左右對(duì)稱時(shí),僅需計(jì)算對(duì)稱軸一側(cè)的預(yù)形變二維碼的像素點(diǎn)編號(hào),根據(jù)所述編號(hào)對(duì)所述預(yù)形變二維碼的像素點(diǎn)賦值,并按照同樣的賦值方法對(duì)對(duì)稱軸另一側(cè)的預(yù)形變二維碼的像素點(diǎn)進(jìn)行賦值。

如圖4所示,為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法一個(gè)實(shí)施例中預(yù)形變二維碼打印載體示意圖。所述預(yù)形變二維碼打印載體包括第一平面ABB’A’、圓柱面BCC’B’和第二平面CDD’C’,將原始二維碼拉伸后,打印在圓-棱柱組合體側(cè)面ADD’A’上。

如圖5所示,為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法的載體截面示意圖。

根據(jù)幾何投影關(guān)系可知,二維碼的高度在預(yù)形變時(shí)不變,即在縱向上圖像并沒有產(chǎn)生伸縮形變。因此,只需考慮與二維碼圖像等高的一段縱向載體即可。將載體在高度上切成單位厚度為像素點(diǎn)的高度為1的薄片,個(gè)數(shù)為h,因此可知載體可由h個(gè)如圖5所示圖形組成。

于是每個(gè)薄片上找出正常二維碼的行像素與載體表面相應(yīng)的行的投影映射關(guān)系進(jìn)行行像素的計(jì)算,即可計(jì)算出整個(gè)二維碼與載體的逆映射關(guān)系,從而計(jì)算出形變后的二維碼圖像。

如圖5所示,其中l(wèi)AD為二維碼的寬度,即lAD可表示為二維碼圖像的行像素,根據(jù)映射關(guān)系可知,為載體上的與lAD對(duì)應(yīng)的行像素,于是所表示的是形變后的二維碼圖像的行像素。因此根據(jù)上述原理可知,形變后的圖像可通過四步得出:

第1步:設(shè)定二維碼圖像在三個(gè)載體面中所占比例即lAB、lBC、lCD(可相應(yīng)求出lHG、lFE的大小),其值可根據(jù)要求自由設(shè)定;

第2步:根據(jù)已知的二維碼的尺寸和載體的直徑、棱長(zhǎng)等信息,求出lHG、lFE的長(zhǎng)度,從而確定形變后二維碼的尺寸大小,然后對(duì)載體以一個(gè)像素點(diǎn)的間隔進(jìn)行縱向切片并任意選取其中一片如圖5所示,進(jìn)行下一步計(jì)算,計(jì)算如下:

lB′O=lBC/2=(lAD-lAB-lCD)/2 (1-1)

<mrow> <mi>&theta;</mi> <mo>=</mo> <mi>arcsin</mi> <mrow> <mo>(</mo> <mfrac> <msub> <mi>l</mi> <mrow> <msup> <mi>B</mi> <mo>&prime;</mo> </msup> <mi>O</mi> </mrow> </msub> <mi>r</mi> </mfrac> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

lHG=lAB/sin(β),lFE=lCD/sin(β) (1-5)

第3步:設(shè)x1、x2點(diǎn)分別為lFE上的任意二點(diǎn),y1、y2便是移動(dòng)的點(diǎn)x1、x2映射在二維碼圖像中的二個(gè)行像素點(diǎn),載體表面映射到二維碼圖像上為y1到二維碼圖像行像素的圓左邊緣點(diǎn)B的距離,載體表面映射到二維碼圖像上為到二維碼圖像行像素的圓右邊緣點(diǎn)C的距離,載體左棱與右堎算法相同在此不做累述。

當(dāng)x1點(diǎn)向O’點(diǎn)移動(dòng)時(shí),弧長(zhǎng)與圓心角γ(弧度制)以及的關(guān)系為:

lO″O=r·sinγ (1-8)

lB′O″=lB′O-lO″O (1-9)

于是可以得到,行像素B'O”的映射弧線。

當(dāng)x2點(diǎn)向E點(diǎn)移動(dòng)時(shí),長(zhǎng)度與夾角β以及的關(guān)系為:

<mrow> <msub> <mi>l</mi> <mrow> <msub> <mi>Cy</mi> <mn>2</mn> </msub> </mrow> </msub> <mo>=</mo> <msub> <mi>l</mi> <mrow> <msub> <mi>Fx</mi> <mn>2</mn> </msub> </mrow> </msub> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mi>&beta;</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mn>10</mn> <mo>)</mo> </mrow> </mrow>

由以上關(guān)系可知,當(dāng)x1點(diǎn)沿著向中心O處右移動(dòng)時(shí),要得到對(duì)應(yīng)原圖二維碼行像素映射的像素點(diǎn)y1、y2,只需要獲得已映射的長(zhǎng)度和對(duì)應(yīng)原圖的長(zhǎng)度,當(dāng)點(diǎn)x2沿著向點(diǎn)右移動(dòng)時(shí),要得到對(duì)應(yīng)原圖二維碼行像素映射的像素點(diǎn),只需獲得已映射的長(zhǎng)度和對(duì)應(yīng)原圖的長(zhǎng)度。

第4步:通過對(duì)預(yù)形變二維碼逐行操作,由軸線處向左向右依次映射,便可根據(jù)與原二維碼的幾何對(duì)應(yīng)關(guān)系進(jìn)行賦值,當(dāng)遍歷整個(gè)預(yù)形變二維碼圖像后,可得到形變二維碼圖像的展開圖。

為適合應(yīng)用需求,以圓半徑8cm以及左右兩棱各為2cm的特例即左右棱切線情況下,假設(shè)二維碼圖像長(zhǎng)寬各為10cm,以此為例來說明預(yù)形變實(shí)現(xiàn)過程。圖6為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法一個(gè)實(shí)施例中采用的原始二維碼圖片。圖7為本發(fā)明圓-棱柱組合體表面的二維碼的生成和采集方法一個(gè)實(shí)施例中采用的原始二維碼拉伸后生成的預(yù)形變二維碼圖片。首先讀取標(biāo)準(zhǔn)二維碼圖像(如圖6所示),并獲得其行個(gè)數(shù)carrierRows、列個(gè)數(shù)carrierCols,圖像印制在載體上時(shí),行數(shù)不發(fā)生變化。由于圖像印制在載體左右棱部分寬度相等,所以左棱所占行、列數(shù)與右棱相等,具體算法如下:

第1步:根據(jù)(1-1)至(1-6)式求出形變后的二維碼圖像各部分的行、列像素?cái)?shù),具體求解如下:(l表示距離大小,L表示像素大小)

<mrow> <msub> <mi>L</mi> <mrow> <mi>A</mi> <mi>B</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>L</mi> <mrow> <mi>C</mi> <mi>D</mi> </mrow> </msub> <mo>=</mo> <mfrac> <mn>2</mn> <mn>10</mn> </mfrac> <mo>&CenterDot;</mo> <mi>c</mi> <mi>a</mi> <mi>r</mi> <mi>r</mi> <mi>i</mi> <mi>e</mi> <mi>r</mi> <mi>C</mi> <mi>o</mi> <mi>l</mi> <mi>s</mi> <mo>=</mo> <mn>0.2</mn> <mo>*</mo> <mn>372</mn> <mo>=</mo> <mn>74</mn> <mrow> <mo>(</mo> <mi>P</mi> <mi>X</mi> <mo>)</mo> </mrow> </mrow>

LBC=carrierCols-LAB-LCD=224(PX)

lB'O=(lAD-lAB-lCD)/2=(10-2-2)/2=3(cm)

<mrow> <mi>&theta;</mi> <mo>=</mo> <mi>arcsin</mi> <mrow> <mo>(</mo> <mfrac> <msub> <mi>l</mi> <mrow> <msup> <mi>B</mi> <mo>&prime;</mo> </msup> <mi>O</mi> </mrow> </msub> <mi>r</mi> </mfrac> <mo>)</mo> </mrow> <mo>=</mo> <mi>arcsin</mi> <mrow> <mo>(</mo> <mfrac> <mn>3</mn> <mn>4</mn> </mfrac> <mo>)</mo> </mrow> <mo>&ap;</mo> <mn>0.848</mn> <mrow> <mo>(</mo> <mi>r</mi> <mi>a</mi> <mi>d</mi> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>&beta;</mi> <mo>=</mo> <mfrac> <mi>&pi;</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mi>&theta;</mi> <mo>&ap;</mo> <mn>0.723</mn> <mrow> <mo>(</mo> <mi>r</mi> <mi>a</mi> <mi>d</mi> <mo>)</mo> </mrow> </mrow>

LHG=LFE=LAB·sin(β)=74/sin(0.723)=111(px)

(半徑所對(duì)應(yīng)的像素點(diǎn),為求)

第2步:二維碼圖像的軸線位置為每個(gè)薄片的圓心O所在,為二維碼中的一行像素,通過遍歷每一個(gè)像素來與原圖像素進(jìn)行一一對(duì)應(yīng),對(duì)于不同部分遍歷算法不同,當(dāng)遍歷左棱是采取從左往右逐一遍歷,即左棱從H點(diǎn)開始到G點(diǎn)結(jié)束(遍歷111像素):H點(diǎn)對(duì)應(yīng)原圖的A點(diǎn)的像素,G點(diǎn)對(duì)應(yīng)原圖B點(diǎn)的像素,設(shè)圖像遍歷在左棱LHG移動(dòng)了Δx,則在原圖對(duì)應(yīng)的位置是Δx·sin(β)(從A點(diǎn)開始,A點(diǎn)為0,遍歷長(zhǎng)為L(zhǎng)HG=111像素),遍歷到G點(diǎn)結(jié)束。

第3步:當(dāng)對(duì)圓柱部分進(jìn)行遍歷時(shí),由于角度不斷變化,所以算法不同,我采取的是將圓柱部分從中軸線分為兩部分,即圓柱部分O’點(diǎn)對(duì)應(yīng)原圖的Z點(diǎn)的像素,作為起點(diǎn)(注意不是遍歷起點(diǎn),遍歷還有從左往右逐一遍歷,是一個(gè)參考點(diǎn))無論左半圓還有右半圓,像素遍歷時(shí),計(jì)算遍歷點(diǎn)到O’點(diǎn)的弧長(zhǎng),進(jìn)而計(jì)算出原圖對(duì)應(yīng)點(diǎn)。假設(shè)圖像遍歷在左半圓LGO'(從G點(diǎn)開始遍歷,考慮已遍歷完的左棱,G點(diǎn)為L(zhǎng)HG,遍歷長(zhǎng)為=126像素)移動(dòng)了Δy,則對(duì)應(yīng)原圖的位置是(考慮已遍歷完的左棱),遍歷到O’點(diǎn)結(jié)束,當(dāng)圖像遍歷圖像在右半圓LO'F(起點(diǎn)是O’,考慮到已遍歷的點(diǎn),O’點(diǎn)為遍歷長(zhǎng)為像素)移動(dòng)了Δz,則原圖對(duì)應(yīng)的的位置是(考慮已遍歷完的點(diǎn)),遍歷到F點(diǎn)結(jié)束。

第4步:當(dāng)遍歷右棱時(shí),從F點(diǎn)開始到E點(diǎn)結(jié)束(遍歷111像素),右棱從F點(diǎn)開始到E點(diǎn)結(jié)束(遍歷111像素),F(xiàn)點(diǎn)對(duì)應(yīng)C點(diǎn)的像素,E點(diǎn)對(duì)應(yīng)D點(diǎn)的像素,右棱算法與左棱相同,不加累述。

第5步:因?yàn)檩d體是柱體,所以橫截面都是相同的,所以載體表面的二維碼形變后,一列像素的個(gè)數(shù)不變,所以通過對(duì)形變后二維碼newImgs從第一行像素開始,第carrierRows行像素為止,逐行進(jìn)行計(jì)算,當(dāng)上述四步處理遍歷整個(gè)newImgs時(shí)也遍歷了二維碼原圖像,然后會(huì)得到一個(gè)儲(chǔ)存有形變后二維碼圖像的點(diǎn)陣newImgs,讀取并顯示newImgs后,便可看到如圖7所示的形變并展開的二維碼圖像。

需要說明的是,本發(fā)明實(shí)施例中所有使用“第一”和“第二”的表述均是為了區(qū)分兩個(gè)相同名稱非相同的實(shí)體或者非相同的參量,可見“第一”“第二”僅為了表述的方便,不應(yīng)理解為對(duì)本發(fā)明實(shí)施例的限定,后續(xù)實(shí)施例對(duì)此不再一一說明。

所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上任何實(shí)施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權(quán)利要求)被限于這些例子;在本發(fā)明的思路下,以上實(shí)施例或者不同實(shí)施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡(jiǎn)明它們沒有在細(xì)節(jié)中提供。

本專利實(shí)在軟件平臺(tái),通過vs2010編寫程序?qū)崿F(xiàn),輸入原圖像,輸出預(yù)形變圖像。另外,為簡(jiǎn)化說明和討論,并且為了不會(huì)使本發(fā)明難以理解,在所提供的附圖中可以示出或可以不示出與集成電路(IC)芯片和其它部件的公知的電源/接地連接。此外,可以以框圖的形式示出裝置,以便避免使本發(fā)明難以理解,并且這也考慮了以下事實(shí),即關(guān)于這些框圖裝置的實(shí)施方式的細(xì)節(jié)是高度取決于將要實(shí)施本發(fā)明的平臺(tái)的(即,這些細(xì)節(jié)應(yīng)當(dāng)完全處于本領(lǐng)域技術(shù)人員的理解范圍內(nèi))。在闡述了具體細(xì)節(jié)(例如,電路)以描述本發(fā)明的示例性實(shí)施例的情況下,對(duì)本領(lǐng)域技術(shù)人員來說顯而易見的是,可以在沒有這些具體細(xì)節(jié)的情況下或者這些具體細(xì)節(jié)有變化的情況下實(shí)施本發(fā)明。因此,這些描述應(yīng)被認(rèn)為是說明性的而不是限制性的。

盡管已經(jīng)結(jié)合了本發(fā)明的具體實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是根據(jù)前面的描述,這些實(shí)施例的很多替換、修改和變型對(duì)本領(lǐng)域普通技術(shù)人員來說將是顯而易見的。例如,其它存儲(chǔ)器架構(gòu)(例如,動(dòng)態(tài)RAM(DRAM))可以使用所討論的實(shí)施例。

本發(fā)明的實(shí)施例旨在涵蓋落入所附權(quán)利要求的寬泛范圍之內(nèi)的所有這樣的替換、修改和變型。因此,凡在本發(fā)明的精神和原則之內(nèi),所做的任何省略、修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
保山市| 江门市| 涿州市| 东台市| 星子县| 永安市| 洛川县| 东光县| 永泰县| 屯门区| 闻喜县| 台南市| 社会| 镇原县| 贞丰县| 六安市| 岳阳市| 汉源县| 尼玛县| 启东市| 分宜县| 响水县| 陵川县| 鄂伦春自治旗| 罗定市| 铜陵市| 正阳县| 金秀| 囊谦县| 汶上县| 澜沧| 抚顺市| 双牌县| 呼伦贝尔市| 射洪县| 阳城县| 筠连县| 西林县| 柏乡县| 武隆县| 郓城县|