亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向物聯(lián)網(wǎng)應(yīng)用的彩碼識別技術(shù)研究*

        2018-03-13 01:18:36張恒麗李林森李建華周國民
        通信技術(shù) 2018年2期
        關(guān)鍵詞:色塊中心點(diǎn)輪廓

        張恒麗,李林森,李建華,周國民

        0 引 言

        如今,無論是公共自行車、食堂三餐還是溝通聯(lián)系,都離不開移動互聯(lián)網(wǎng)。其中,二維碼已經(jīng)融入到人們的吃穿住行,給人們帶來了諸多便利?!皰叽a”不只是一種工具,更成為一種生活方式。本文討論一種基于彩色光學(xué)識別的、極簡的、先進(jìn)的物聯(lián)網(wǎng)技術(shù)——彩碼。顧名思義,彩碼不同于二維碼,是由彩色色塊組成的矩形碼。

        彩碼是在傳統(tǒng)二維碼基礎(chǔ)上加上紅黃藍(lán)等色彩矩陣構(gòu)成的彩色三維矩陣碼,是全球第三代條碼技術(shù)的代表。對比當(dāng)前常見的二維碼技術(shù),彩碼具有安全性強(qiáng)、識別率高、生產(chǎn)成本低、信息容量大、抗畸變性強(qiáng)等特點(diǎn)。一般的商品以及報紙、雜志都可以附有彩碼,簡單、便捷。

        在國外,彩碼的應(yīng)用已經(jīng)比較普遍[1]。2015年,意大利米蘭世博會,日本館便采用了彩碼技術(shù);在東京書店、名古屋的圖書館,都可以看見彩碼的應(yīng)用實例。在韓國,彩碼的使用已經(jīng)普及到百姓生活的方方面面,戶外屏幕、廣告牌、雜志、商品、電影海報隨處可見各式彩碼。可見,它比以往的識別方式具有更大的優(yōu)越性和更廣泛的應(yīng)用空間。

        但是,在國內(nèi),彩碼的發(fā)展尚處于起步階段[2]。目前,國內(nèi)學(xué)術(shù)界對彩碼的研究主要涉及彩碼的設(shè)計、讀取和安全性等。陳錦昌等結(jié)合計算機(jī)科學(xué)與藝術(shù)設(shè)計兩個領(lǐng)域,對彩碼進(jìn)行再設(shè)計[3];盛健等提出了彩碼的信息讀入和讀取的基本思路[4];孫向華等為保證彩碼的版權(quán)保護(hù),提出了基于奇異值分解的零水印算法[5]。但是,這些研究尚處于理論階段,并未得到實踐的驗證。

        本文基于對三色彩碼的色塊定位和提取,完成了對彩碼的解碼,成功驗證了ID的輸出。同時,對識別過程中可能遇到的問題進(jìn)行分析和解決,如色塊的偏移、彩碼的雜點(diǎn)等。根據(jù)所查閱的文獻(xiàn),還未有學(xué)者研究類似算法。

        本文通過兩種方案來識別彩碼。方案一采用輪廓提取與中心點(diǎn)排序算法,在PC中通過Opencv2.4.10和Visual Studio 2012實現(xiàn);方案二是在方案一的算法基礎(chǔ)上,增加聚類算法和抗干擾算法,通過Android Studio進(jìn)行安卓手機(jī)的APP開發(fā)。

        本文的結(jié)構(gòu)如下:第1部分為輪廓提取與中心點(diǎn)排序算法及其實現(xiàn);第2部分為改進(jìn)的聚類算法和抗干擾算法及其實現(xiàn);第3部分為結(jié)論。

        1 輪廓提取與中心點(diǎn)排序算法及其實現(xiàn)

        彩碼標(biāo)簽的結(jié)構(gòu)為,選擇多種可見光顏色,分別繪制矩形色塊,通過不同顏色的矩形色塊的組合標(biāo)識標(biāo)簽的識別號,即ID號。其中,矩形色塊相互之間用填充色黑色進(jìn)行分隔。

        假設(shè)彩色矩形碼標(biāo)簽上設(shè)置有ROW×COL的矩形色塊陣列,分別著色為R、B、Y,即對應(yīng)紅色、藍(lán)色、黃色。其中:定義紅色為0,藍(lán)色為1,黃色為2;ROW=3、COL=8分別為矩形色塊陣列的行標(biāo)和列標(biāo)[6]。

        本代碼實現(xiàn)的功能是識別計算機(jī)中存入的一張彩碼圖片。本文利用軟件Opencv2.4.10和Visual Studio 2012實現(xiàn)識別彩色矩形碼的基本算法,并輸出彩碼的ID編號。

        1.1 畫出色塊的輪廓

        首先,在電腦中導(dǎo)入一張彩色矩形碼標(biāo)簽的圖片,如圖1所示。程序讀入并顯示圖片,圖片名稱為origin。

        圖1 彩色矩形碼標(biāo)簽的圖片

        色塊提取過程中,為了后續(xù)能夠更方便地找出色塊中心點(diǎn)并排序,因此需要檢測出色塊的邊緣輪廓。具體方法如下。

        取origin中紅色色塊的結(jié)果,并顯示為result;設(shè)置提取紅色色塊的方法為getRedImage;傳入?yún)?shù)是1個圖像Mat;所有像素點(diǎn)的行數(shù)和列數(shù)就是圖像的高和寬;BGR表示每個像素點(diǎn)有3個顏色通道——紅綠藍(lán);對圖像的行和列進(jìn)行遍歷,取Mat中每個像素點(diǎn)對應(yīng)的坐標(biāo)。

        所有顏色都是由BGR 3個通道來表示的。通過在線顏色選擇器進(jìn)行實驗,發(fā)現(xiàn):

        ①當(dāng)滿足(r-b>70)&&(g-b>50)時,認(rèn)為色塊是黃色;

        ②當(dāng)滿足(b-r>75)&&(b>g)時,認(rèn)為色塊是藍(lán)色;

        ③當(dāng)滿足(r-g>60)&&(r-b>65)的時候,認(rèn)為色塊是紅色。

        同時,把對應(yīng)的紅色色塊的row和col置為白色,其他不滿足紅色的色塊置為黑色,從而得到result。圖2為紅色色塊置白(其余色塊置黑)的圖片。以此類推,可以同樣得到藍(lán)色色塊或黃色色塊置為白色的result圖片。

        圖2 紅色色塊置白(其余色塊置黑)的圖片

        畫出白色區(qū)域的輪廓。以黃色色塊為例,通過findContours勾勒黃色色塊的輪廓,并存儲輪廓上的所有點(diǎn)。通過drawContours繪制輪廓,就能在contours窗口上顯示黃色色塊的輪廓[7],如圖3所示。

        圖3 黃色色塊的輪廓

        1.2 計算色塊中心點(diǎn)

        計算每個contour的中心點(diǎn)。因為這是一個有序的序列,即從左往右、從上往下排序編碼的,所以必須得有順序。比如,黃色對應(yīng)的編碼為2,為了區(qū)分所有黃色色塊的位置,就要根據(jù)中心點(diǎn)來判斷。同一行中,左邊色塊中心點(diǎn)的x必定小于右邊色塊中心點(diǎn)的x,且y處于同一行。當(dāng)y值處于比較接近的值時,說明它們處在同一行。所以,首先區(qū)分它們是否處于同一行,然后區(qū)分處于哪一列。

        以紅色色塊為例。計算每個色塊的中心點(diǎn),并畫出中心點(diǎn)。其中,centerMoments是所有中心點(diǎn)的坐標(biāo)。如果傳入的是藍(lán)色色塊,那么中心點(diǎn)就是藍(lán)色的中心點(diǎn);如果傳入的是黃色色塊,那么中心點(diǎn)就是黃色的中心點(diǎn)。最后的結(jié)果是所有紅黃藍(lán)色塊的中心點(diǎn)集合[8],如圖4所示。

        圖4 所有紅黃藍(lán)色塊的中心點(diǎn)集合

        1.3 中心點(diǎn)排序

        現(xiàn)在把這些中心點(diǎn)組合起來進(jìn)行排序。先進(jìn)行y值排序。y值只有3個值,且每一行的y值是相等的。首先分別取得紅黃藍(lán)中心點(diǎn)y值的最大值和最小值,得出所有點(diǎn)的最大值和最小值。其中,最小值是第一行,最大值是最后一行,兩個相加除以2就是第二行的坐標(biāo),從而可以把每一行區(qū)分開來,進(jìn)而把紅色色塊的中心點(diǎn)分別分配到對應(yīng)的行(row_01,row_02,row_03)。同樣地,分配藍(lán)色和黃色色塊的中心點(diǎn)。具體步驟如下:

        定義maxVerticalValue=0;

        minVerticalValue=10000;

        遍歷所有紅色點(diǎn)集

        當(dāng)maxVerticalValue小于紅色點(diǎn)集y值,則將y值賦于maxVerticalValue;

        同樣地,當(dāng)minVerticalValue大于紅色點(diǎn)集y值,則將y值賦于minVerticalValue。

        遍歷完成后得到第一行的y坐標(biāo),即為minVerticalValue;

        第三行的y坐標(biāo)為maxVerticalValue;

        第二行的x坐標(biāo)為(maxVerticalValue+minVertic alValue)/2;

        定義row_01、row_02、row_03為第一行、第二行、第三行的點(diǎn)集。

        遍歷紅色點(diǎn)集,將點(diǎn)集分別push到row_01、row_02、row_03。

        此時,line01表示第一行所有點(diǎn)的集合,line02和line03同理。此時,x值是亂序的,因此要對每一行的8個x進(jìn)行排序。x值小,說明靠左端;x值大,說明靠右端。以第一行為例,進(jìn)行x的升序排序:遍歷第一行的點(diǎn),對第一行的點(diǎn)x坐標(biāo)進(jìn)行升序排序。

        sort(第一行起始橫坐標(biāo),第一行末尾橫坐標(biāo));

        當(dāng)知道每個點(diǎn)的坐標(biāo)順序后,需要找出這些坐標(biāo)對應(yīng)的顏色。首先,定義sortedRow_01為第一行排序后的點(diǎn)。然后,遍歷第一行的點(diǎn)。當(dāng)?shù)谝恍械狞c(diǎn)x坐標(biāo)與排序后的x坐標(biāo)值相等時,將此點(diǎn)push到sortedRow_01中,完成第一行點(diǎn)從左往右的排序[9]。

        1.4 輸出彩碼ID

        將某個中心點(diǎn)坐標(biāo)放入紅黃藍(lán)集合中進(jìn)行搜索。當(dāng)這個坐標(biāo)與其中一點(diǎn)相等時,認(rèn)為色塊與顏色相互對應(yīng)。由此,計算出第一行的顏色。第二行與第三行類似。最后,程序計算出整個彩色矩形碼的ID,如圖5所示。

        圖5 彩色矩形碼的ID

        2 改進(jìn)的聚類算法和抗干擾算法及其實現(xiàn)

        此方案中,采用與方案一同樣的彩碼結(jié)構(gòu)。本節(jié)代碼在安卓手機(jī)上進(jìn)行APP開發(fā),實現(xiàn)識別彩碼并輸出相應(yīng)編碼的功能。

        2.1 通過計算機(jī)執(zhí)行Android程序的過程

        在Android手機(jī)上運(yùn)行。

        (1)手機(jī)設(shè)置

        ①將安卓手機(jī)用USB連線連接到電腦上;

        ②開啟安卓手機(jī)上的USB調(diào)試選項。

        (2)從Android Studio運(yùn)行程序

        ②出現(xiàn)Choose Device窗口,選擇連接電腦的安卓手機(jī),點(diǎn)擊OK。

        這樣,Android Studio會把應(yīng)用程序安裝到手機(jī)設(shè)備,并啟動程序進(jìn)行運(yùn)行。

        2.2 Android開發(fā)相關(guān)概念

        在Android開發(fā)中有著重要的4大組件——activity顯示界面,service服務(wù),Broadcast Receiver廣播和Content Provider數(shù)據(jù)通信。其中,Activity組件負(fù)責(zé)與用戶交互。具體地,在單獨(dú)的屏幕上顯示一些控件,并監(jiān)聽處理用戶的事件,從而做出相應(yīng)響應(yīng)。

        Activity有4種基本狀態(tài):Running、Paused、Stopped和Killed,即運(yùn)行、暫停、停止和刪除狀態(tài)[10]。

        Running:當(dāng)啟動一個Activity時,它被激活。

        Paused:啟動一個透明的或新的非全屏的Activity時,之前的Activity雖然仍然可見,但不可與用戶交互,即失去了焦點(diǎn),此時的狀態(tài)稱之為Paused。

        Stopped:當(dāng)新的Activity完全覆蓋了之前的Activity,導(dǎo)致之前的窗口被隱藏,不可見的時候,之前的Activity進(jìn)入Stopped狀態(tài),即停止?fàn)顟B(tài)。

        Killed:當(dāng)Activity處于Paused或Stopped狀態(tài)時,系統(tǒng)可將此Activity從內(nèi)存中刪除。此時,該Activity就被Killed了。若要再次顯示該Activity,必須從頭開始。

        當(dāng)一個Activity實例被創(chuàng)建、刪除或啟動其他Activity時,它就在這四種狀態(tài)中進(jìn)行轉(zhuǎn)換。

        Android通過Activity棧來管理Activity,而前臺的Activity處于棧頂。此時分兩種情況來看。第一種情況,當(dāng)前臺Activity被刪除時,棧中第二層的Activity將上浮到棧頂,從而被激活。第二種情況,當(dāng)有一個新的Activity入棧時,原來的Activity會被壓入到棧的第二層。因此,Activity在不同狀態(tài)間的轉(zhuǎn)換與它在棧中的位置變化密切相關(guān)。

        Activity典型的生命周期,如圖6所示(在有用戶參與的情況下,Activity的生命周期過程)。

        圖6 Activity典型的生命周期

        如圖6所示,Activity經(jīng)過了從創(chuàng)建、運(yùn)行、停止到刪除的生命周期過程。下面將逐一介紹它們的調(diào)用時機(jī)[11]。

        onCreate:這是Activity生命周期的第一個調(diào)用方法,是在創(chuàng)建Activity時回調(diào)??梢愿鶕?jù)需要重寫該方法,以此做一些初始化操作。比如,通過setContentView()函數(shù)填充屏幕的用戶界面;通過findViewById()返回xml中定義的視圖或組件的ID等。

        onStart:此方法被回調(diào)時,說明Activity正在啟動,但還沒有在前臺顯示,因此無法與用戶進(jìn)行交互。此時,Activity已處于可見狀態(tài),只是無法看見。

        onResume:當(dāng)調(diào)用此方法時,Activity已在前臺可見,可以與用戶進(jìn)行交互。此時,Activity處于前面所說的Running狀態(tài)。由此可以看出,onResume與onStart方法有一個相同點(diǎn),即兩者都表示Activity可見。不同在于onStart回調(diào)時,Activity在后臺,無法與用戶交互;而onResume回調(diào)時,Activity已顯示在前臺,能夠與用戶交互。從流程圖中看到,Activity執(zhí)行onPause()方法后,也有可能通過調(diào)用onResume()方法重新回到前臺。同樣地,也可以在onResume方法中進(jìn)行一些初始化操作,如初始化在onPause中釋放資源的控件,同時主動觸發(fā)Activity在進(jìn)入onResume時發(fā)生的所有初始化。

        onPause:此方法被回調(diào)時,表示Activity正在停止,此時Activity進(jìn)入Paused狀態(tài),表示當(dāng)前Activity失去焦點(diǎn)。比如,來電話時,系統(tǒng)自動調(diào)用onPause()方法。從圖1可以看到兩種情況。一種情況是上述onResume中所說的,在onPause方法執(zhí)行后,由于用戶操作,使得當(dāng)前Activity退居后臺后又迅速回到當(dāng)前Activity。因此,Activity會調(diào)用onResume方法。另一種情況更普遍,即在執(zhí)行完onPause后,Activity會緊接著回調(diào)onStop,具體見下面描述。同樣,在onPause中能夠執(zhí)行一些操作,如存儲數(shù)據(jù)、停止動畫或回收資源等,但這些操作不能太耗費(fèi)時間。因為只有調(diào)用完onPause()方法后,新的Activity的onResume方法才會被調(diào)用。所以,如果操作耗時,將會影響到新的Activity的顯示。

        onStop:通常情況下,onPause方法執(zhí)行完成后便會立即執(zhí)行onStop方法,表示Activity即將停止或者完全被覆蓋。此時,Activity進(jìn)入Stopped狀態(tài),Activity不可見,僅在后臺運(yùn)行。當(dāng)然,onStop方法可以釋放不再需要的資源,但不能太耗時。

        onRestart:當(dāng)Activity從不可見狀態(tài)變?yōu)榭梢姞顟B(tài)時,該方法被調(diào)用,說明Activity重新啟動。例如,當(dāng)用戶暫停一個Activity而打開一個新的Activity時,系統(tǒng)執(zhí)行onPause和onStop,之后用戶如果又回到之前被暫時停止的Activity頁面,onRestart就會被回調(diào)。

        onDestroy:這是生命周期中最后一個執(zhí)行的方法,表示Activity正在被銷毀。執(zhí)行此方法后,系統(tǒng)銷毀了這個Activity占據(jù)的內(nèi)存空間。如果要再次進(jìn)入這個Activity,那么需要重新創(chuàng)建,回調(diào)onCreate()方法。

        2.3 實現(xiàn)彩碼識別

        在編寫識別彩碼的代碼過程中,有3種基本標(biāo)簽:文字TextView、圖片ImageView和按鈕Button。TextView設(shè)置的是屏幕上的Result字樣。setOnClickListener是設(shè)置當(dāng)點(diǎn)擊按鈕時進(jìn)行監(jiān)聽,當(dāng)按下按鈕時把結(jié)果改掉,啟動計算,并把結(jié)果放到TextView中。

        這里設(shè)計了一個函數(shù),稱為findContoursAndDraw。由于圖像會有很大的噪聲干擾,因此將彩碼的3種顏色色塊進(jìn)行圖像灰度化,通過cvtColor函數(shù)實現(xiàn)原圖→grayscale的轉(zhuǎn)換。圖7為彩碼灰度圖。

        圖7 彩碼灰度圖

        然后,將灰度圖轉(zhuǎn)換為binary二值圖[12],如圖8所示。

        圖8 彩碼二值圖

        下面將描述圖像的構(gòu)成。每張圖像的像素由R/G/B 3種顏色組成,每個分量值分別為0~255,組合共有256×256×256種顏色變化范圍。如果一個圖像像素的RGB為43、43、43,說明此時圖像是黑色的。如果圖像寬1 920,高1 080,那么這幅圖像就有1 920×1 080×3的數(shù)據(jù)。

        圖像灰度化是將彩色圖像中的彩色信息剔除,只留下了亮度信息。因此,把RGB 3個分量轉(zhuǎn)成一個分量:3 channel→1 channel。如果將上述RGB圖片(43,43,43)轉(zhuǎn)換成grayscale灰度圖,那么就有1 920×1 080的數(shù)據(jù)。因為對于灰度圖來說,每個像素上的點(diǎn)就一個值,為0~255中的一個數(shù)。值越小越黑,值越大越白。所以,一般先將彩色圖像轉(zhuǎn)化為灰度圖,以降低后續(xù)的圖像計算量。然而,灰度圖像仍然反映了彩碼圖像的整體以及局部色塊的色度和亮度等級的分布和特征。

        此時,再進(jìn)行圖像二值化。Binary的意思是非此即彼,非負(fù)即正。將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,即將整個圖像呈現(xiàn)出明顯的只有黑和白的視覺效果。當(dāng)把灰度圖轉(zhuǎn)換成二值圖時,首先獲取每個pixel,之后將判斷grayscale的value是否大于某個值,假設(shè)為120。若這個值大于120,說明圖像偏白,因此設(shè)為255;如果小于120,就設(shè)為黑色0。這樣做是因為將圖片轉(zhuǎn)換成黑白后,能夠更加清晰地辨識每個色塊的邊緣輪廓。如果有雜點(diǎn),相比彩色圖片更易抗干擾。

        對于彩碼雜點(diǎn)圖(如圖9所示),要找出正確色塊的連通域。因此,設(shè)計了彩碼圖像抗干擾算法。

        圖9 彩碼雜點(diǎn)圖

        算法思想:通過進(jìn)行色塊輪廓的遍歷,找出彩碼的有效色塊。尋找連通域時,會把雜點(diǎn)也計算進(jìn)去,因此設(shè)置一個rule用來過濾一些不規(guī)則的色塊。具體步驟:(1)判斷這個contours的面積大小是否符合;(2)假如連通域面積與正常色塊相比太小或者太大,那么認(rèn)為這不是正確色塊;(3)如果contours的面積與正常色塊面積差不多,那么要根據(jù)它的形狀進(jìn)行判斷;(4)由于標(biāo)準(zhǔn)色塊的寬高比為1∶1,若contours的輪廓寬高比并不滿足1∶1,那么認(rèn)為此色塊為雜點(diǎn)。

        算法基本思路如下:

        輸入 area, sizeRate

        定義 DEBUG=false

        THRES_SIZE_MIN=100*100

        THRES_SIZE_MAX=1000*1000

        THRES_SIZE_RATE_MIN=0.618

        THRES_SIZE_RATE_MAX=1.618

        IF DEBUG或

        (area>THRES_SIZE_MIN

        且 area<THRES_SIZE_MAX

        且 sizaRate>THRES_SIZE_RATE_MIN

        且 sizaRate<THRES_SIZE_RATE_MAX)

        為真

        畫出輪廓

        下面將正確色塊用綠色的邊框勾勒出來,其三原色 RGB為(50,255,80),并針對 24個contour找到它的中心。(rect.x,rect.y)表示每個色塊的左上角點(diǎn)的坐標(biāo)。rect.x往右加上寬的一半,是色塊中心點(diǎn)的橫坐標(biāo);rect.y往下加上高的一半,是色塊中心點(diǎn)的縱坐標(biāo)。同樣地,中心點(diǎn)為綠色(50,255,80),半徑是10。這里需注意,圖像具有一個特點(diǎn),即x從左往右逐漸變大,y值從上往下逐漸變大。如圖10所示,為圖像中的坐標(biāo)建立。

        圖10 圖像中的坐標(biāo)建立

        編碼過程中,calArray是最關(guān)鍵的函數(shù)。實現(xiàn)步驟:(1)上傳原圖,創(chuàng)建一個color代碼,寬和高為3行8列的數(shù)組;(2)findContours把矩形框全找出來;(3)find initial contours做一個初始化,如果邊框個數(shù)不是3行8列,說明這個彩碼有問題,那么屏幕顯示”the target number is not standard!(3*8)”;(4)如果檢測到的是正確的彩碼,那么根據(jù)色塊邊緣計算中心點(diǎn);(5)通過函數(shù)getSortedContourCenters()得到每一個Contour的中心點(diǎn)。

        然而,雖然知道了每個中心點(diǎn)的坐標(biāo),但是這些點(diǎn)是無序排列的。圖11為中心點(diǎn)無序坐標(biāo)。因此,需要知曉8個點(diǎn)分別對應(yīng)的行數(shù)(第一、二、三行)以及從左往右的序列,而這需要采用聚類算法。

        聚類算法如下。首先,需要區(qū)分出每一行的點(diǎn)。因為每一個色塊的排列位置有可能上下左右小范圍波動,所以在設(shè)計算法時也要考慮到這一點(diǎn)。例如,假設(shè)第一行有3個點(diǎn)分別為(100,120)(120,121)(140,119),第二行有3個點(diǎn)(100,160)(121,158)(139,162)……可以看出,盡管中心點(diǎn)橫坐標(biāo)和縱坐標(biāo)的排列上是有一定誤差的,但仍然可以進(jìn)行聚類——如y坐標(biāo),只會把相近數(shù)據(jù)歸為一行,而相差40上下的數(shù)據(jù)歸為兩行。

        圖11 中心點(diǎn)無序坐標(biāo)

        排序算法[13]:由于中心點(diǎn)是亂序的,所以要進(jìn)行排序算法。假設(shè)x、 y上下左右波動容忍值THRES_ROW_DIS=20,遍歷所有中心點(diǎn)進(jìn)行從小到大y值排序和x排序。

        輸入中心點(diǎn)坐標(biāo) o1,o2

        if o2.y-o1.y>=THRES_ROW_DIS

        return

        o1.y,o2.y相對位置

        else return

        o1.x,02.x相對位置

        排序完畢后,找出每個中心點(diǎn)對應(yīng)的色塊顏色,即getColorOfPoint()函數(shù),并返回相應(yīng)的編碼(紅色0,藍(lán)色1,黃色2)。

        圖12是雜點(diǎn)彩碼計算輸出結(jié)果。

        圖12 雜點(diǎn)彩碼計算輸出結(jié)果

        3 結(jié) 語

        本文提出了一種新型的掃碼標(biāo)簽——彩碼,通過中心點(diǎn)排序、色塊偏移矯正和雜點(diǎn)去除等多個算法,實現(xiàn)了對彩碼信息的讀取??梢姡蚀a在未來商品世界中的廣泛應(yīng)用即將成為可能,如圖書的識別、產(chǎn)品的身份認(rèn)證、生產(chǎn)銷售的狀態(tài)等。然而,在彩碼的研究設(shè)計中還有諸多問題要解決,如識別的安全性能、識別的速度等,是下一步的研究重點(diǎn)。

        [1] 許冬琦.彩碼識別技術(shù):所見即所得改變商業(yè)世界[J].通信世界,2012(13):25.XU Dong-qi.Color Code Recognition:What You See Is The Change in The Business World[J].Communications World,2012(13):25.

        [2] 付金瑩,戴治城.一種創(chuàng)新型五色彩碼的設(shè)計與實現(xiàn)[J].中國新通信,2015(23):99-100.FU Jin-ying,DAI Zhi-cheng.Design and Implementation of an Innovative Color Code[J].New Communications,2015(23):99-100.

        [3] 陳錦昌,王超然.彩碼再設(shè)計中降低色彩飽和度的研究[J].圖學(xué)學(xué)報,2017,38(03):346-351.CHEN Jin-chang,WANG Chao-ran.The Research on Reduction of Saturation in Redesign of Color Code[J].Journal of Graphics,2017,38(03):346-351.

        [4] 盛健,王晶晶,張毅群等.基于新型彩碼的信息生成、讀取和加密系統(tǒng)設(shè)計[J].科技創(chuàng)新與應(yīng)用,2015(25):66.SHENG Jian,WANG Jing-jing,ZHANG Yi-qun,et al.Design of Information Generation,Reading and Encryption System Based on New Color Code[J].Technology Innovation and Application,2015(25):66.

        [5] 孫向華,趙雅英,馬小虎等.基于奇異值分解的三維彩碼零水印算法[J].電腦知識與技術(shù),2011,7(01):199-201.SUN Xiang-hua,ZHAO Ya-ying,MA Xiao-hu,et al.A Zero-Watermark Algorithm Based on SVD for Color Code Image[J].Computer Knowledge and Technology,2011,7(01):199-201.

        [6] 李林森,王世祺,唐俊華等.基于彩色矩形碼的圖書管理方法及彩色矩形碼標(biāo)簽:中國,201611240151.X[P].2017-01-04.LI Lin-sen,WANG Shi-qi,TANG Jun-hua,et al.Book Management Method Based on Color Rectangle Code and Color Rectangle Code Lable:China,201611240151.X[P].2017-01-04.

        [7] Gary Rost Bradski.學(xué)習(xí)opencv[M].北京:清華大學(xué)出版社,2009.Gary Rost Bradski.Learning Opencv[M].Beijin:Tsinghua University Press,2009.

        [8] Robert Laganiere.OpenCV2計算機(jī)視覺編程手冊[M].北京:科學(xué)出版社,2013.Robert Laganiere.OpenCV2 Computer Visual Programming Manual[M].Beijin:China Science Publishing & Media Ltd,2013.

        [9] 譚浩強(qiáng).C++程序設(shè)計[M].北京:清華大學(xué)出版社,2015.TAN Hao-qiang.C++ Program Design[M].Beijin:Tsinghua University Press,2015.

        [10] 任玉剛.Android開發(fā)藝術(shù)探索[M].北京:電子工業(yè)出版社,2015.REN Yu-gang.Exploration of The Art of Development of Android[M].Beijin:Publishing House of Electronics Industry,2015.

        [11] 何紅輝.Android開發(fā)進(jìn)階:從小工到專家[M].北京:人民郵電出版社,2016.HE Hong-hui.Android Advanced Development:From The Laborer to The Experts[M].Beijin:Posts & Telecom Press,2016.

        [12] Bruce Eckel.Java編程思想[M].第4版.北京:機(jī)械工業(yè)出版社,2007.Bruce Eckel.Thinking in Java[M].Fourth Edition.Beijin:China Machine Press,2007.

        [13] Damonare.十大經(jīng)典排序算法[DB/OL].(2016-09-19)[2017-10-20].http://web.jobbole.com/87968/.Damonare.Ten Classical Sorting Algorithms[DB/OL].(2016-09-19)[2017-10-20].http://web.jobbole.com/87968/.

        猜你喜歡
        色塊中心點(diǎn)輪廓
        足球色塊
        OPENCV輪廓識別研究與實踐
        Scratch 3.9更新了什么?
        電腦報(2020年12期)2020-06-30 19:56:42
        基于校驗信息隱藏的彩碼抗篡改攻擊技術(shù)*
        基于實時輪廓誤差估算的數(shù)控系統(tǒng)輪廓控制
        如何設(shè)置造型中心點(diǎn)?
        電腦報(2019年4期)2019-09-10 07:22:44
        閻先公和他的瓷板色塊潑彩畫
        漢字藝術(shù)結(jié)構(gòu)解析(二)中心點(diǎn)處筆畫應(yīng)緊奏
        三個色塊
        尋找視覺中心點(diǎn)
        大眾攝影(2015年9期)2015-09-06 17:05:41
        亚洲中文字幕一区二区三区多人| 麻豆国产高清精品国在线| 99热久久精里都是精品6| 一本久道久久综合五月丁香| 久久精品亚洲国产成人av| 97cp在线视频免费观看| 免费观看又色又爽又湿的视频| 亚洲伊人久久一次| 国产原创精品视频| 亚洲天堂一区二区三区视频| 亚洲精品国产电影| 亚洲精品无码久久久久av老牛| 久久99精品久久久久久野外| 中文字幕精品亚洲无线码二区| 亚洲视频在线免费观看一区二区| 最近免费中文字幕中文高清6 | 国产精品欧美久久久久久日本一道| 国产无遮挡a片又黄又爽| 午夜无码无遮挡在线视频| 日韩一区二区,亚洲一区二区视频 国产一区二区三区经典 | 精品一区二区三区免费爱| 久久久精品网站免费观看| 性做久久久久久免费观看| 亚洲精品无码mv在线观看| 欧美日韩精品乱国产| 国产成人自拍视频在线观看网站 | 无码专区一ⅴa亚洲v天堂 | 亚洲精品精品日本日本| 国产精品久久久三级18| 国产熟人av一二三区| 国产综合激情在线亚洲第一页| 国产91一区二这在线播放| 一区二区三区内射视频在线观看| 色婷婷资源网| 亚洲福利第一页在线观看| 国产毛片视频一区二区| 永久免费观看国产裸体美女| 日本特黄a级高清免费大片| 青青草视频在线观看绿色| 国产av无码专区亚洲av蜜芽 | 久久99久久99精品免观看女同|