• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

    0 引 言

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

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

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

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

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

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

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

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

    彩碼標簽的結構為,選擇多種可見光顏色,分別繪制矩形色塊,通過不同顏色的矩形色塊的組合標識標簽的識別號,即ID號。其中,矩形色塊相互之間用填充色黑色進行分隔。

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

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

    1.1 畫出色塊的輪廓

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

    圖1 彩色矩形碼標簽的圖片

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

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

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

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

    ②當滿足(b-r>75)&&(b>g)時,認為色塊是藍色;

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

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

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

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

    圖3 黃色色塊的輪廓

    1.2 計算色塊中心點

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

    以紅色色塊為例。計算每個色塊的中心點,并畫出中心點。其中,centerMoments是所有中心點的坐標。如果傳入的是藍色色塊,那么中心點就是藍色的中心點;如果傳入的是黃色色塊,那么中心點就是黃色的中心點。最后的結果是所有紅黃藍色塊的中心點集合[8],如圖4所示。

    圖4 所有紅黃藍色塊的中心點集合

    1.3 中心點排序

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

    定義maxVerticalValue=0;

    minVerticalValue=10000;

    遍歷所有紅色點集

    當maxVerticalValue小于紅色點集y值,則將y值賦于maxVerticalValue;

    同樣地,當minVerticalValue大于紅色點集y值,則將y值賦于minVerticalValue。

    遍歷完成后得到第一行的y坐標,即為minVerticalValue;

    第三行的y坐標為maxVerticalValue;

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

    定義row_01、row_02、row_03為第一行、第二行、第三行的點集。

    遍歷紅色點集,將點集分別push到row_01、row_02、row_03。

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

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

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

    1.4 輸出彩碼ID

    將某個中心點坐標放入紅黃藍集合中進行搜索。當這個坐標與其中一點相等時,認為色塊與顏色相互對應。由此,計算出第一行的顏色。第二行與第三行類似。最后,程序計算出整個彩色矩形碼的ID,如圖5所示。

    圖5 彩色矩形碼的ID

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

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

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

    在Android手機上運行。

    (1)手機設置

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

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

    (2)從Android Studio運行程序

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

    這樣,Android Studio會把應用程序安裝到手機設備,并啟動程序進行運行。

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

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

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

    Running:當啟動一個Activity時,它被激活。

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

    Stopped:當新的Activity完全覆蓋了之前的Activity,導致之前的窗口被隱藏,不可見的時候,之前的Activity進入Stopped狀態(tài),即停止狀態(tài)。

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

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

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

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

    圖6 Activity典型的生命周期

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

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

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

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

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

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

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

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

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

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

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

    圖7 彩碼灰度圖

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

    圖8 彩碼二值圖

    下面將描述圖像的構成。每張圖像的像素由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ù)。因為對于灰度圖來說,每個像素上的點就一個值,為0~255中的一個數(shù)。值越小越黑,值越大越白。所以,一般先將彩色圖像轉(zhuǎn)化為灰度圖,以降低后續(xù)的圖像計算量。然而,灰度圖像仍然反映了彩碼圖像的整體以及局部色塊的色度和亮度等級的分布和特征。

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

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

    圖9 彩碼雜點圖

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

    算法基本思路如下:

    輸入 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)表示每個色塊的左上角點的坐標。rect.x往右加上寬的一半,是色塊中心點的橫坐標;rect.y往下加上高的一半,是色塊中心點的縱坐標。同樣地,中心點為綠色(50,255,80),半徑是10。這里需注意,圖像具有一個特點,即x從左往右逐漸變大,y值從上往下逐漸變大。如圖10所示,為圖像中的坐標建立。

    圖10 圖像中的坐標建立

    編碼過程中,calArray是最關鍵的函數(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ù)色塊邊緣計算中心點;(5)通過函數(shù)getSortedContourCenters()得到每一個Contour的中心點。

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

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

    圖11 中心點無序坐標

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

    輸入中心點坐標 o1,o2

    if o2.y-o1.y>=THRES_ROW_DIS

    return

    o1.y,o2.y相對位置

    else return

    o1.x,02.x相對位置

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

    圖12是雜點彩碼計算輸出結果。

    圖12 雜點彩碼計算輸出結果

    3 結 語

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

    [1] 許冬琦.彩碼識別技術:所見即所得改變商業(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)新型五色彩碼的設計與實現(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] 陳錦昌,王超然.彩碼再設計中降低色彩飽和度的研究[J].圖學學報,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)設計[J].科技創(chuà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].電腦知識與技術,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] 李林森,王世祺,唐俊華等.基于彩色矩形碼的圖書管理方法及彩色矩形碼標簽:中國,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.學習opencv[M].北京:清華大學出版社,2009.Gary Rost Bradski.Learning Opencv[M].Beijin:Tsinghua University Press,2009.

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

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

    [10] 任玉剛.Android開發(fā)藝術探索[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ā)進階:從小工到專家[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版.北京:機械工業(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/.

    猜你喜歡
    色塊中心點輪廓
    足球色塊
    OPENCV輪廓識別研究與實踐
    Scratch 3.9更新了什么?
    電腦報(2020年12期)2020-06-30 19:56:42
    基于校驗信息隱藏的彩碼抗篡改攻擊技術*
    通信技術(2019年12期)2019-12-11 02:23:54
    基于實時輪廓誤差估算的數(shù)控系統(tǒng)輪廓控制
    如何設置造型中心點?
    電腦報(2019年4期)2019-09-10 07:22:44
    閻先公和他的瓷板色塊潑彩畫
    漢字藝術結構解析(二)中心點處筆畫應緊奏
    三個色塊
    尋找視覺中心點
    大眾攝影(2015年9期)2015-09-06 17:05:41
    三上悠亚av全集在线观看| 国产免费视频播放在线视频| 日韩中文字幕欧美一区二区 | 亚洲国产欧美日韩在线播放| 成人毛片60女人毛片免费| 最近2019中文字幕mv第一页| 精品国产乱码久久久久久小说| 久久热在线av| 亚洲,欧美精品.| 久久久精品区二区三区| 男女边吃奶边做爰视频| 亚洲人成网站在线观看播放| 人妻少妇偷人精品九色| 久久99热这里只频精品6学生| 精品一区二区三区四区五区乱码 | 亚洲国产欧美日韩在线播放| 色视频在线一区二区三区| 18在线观看网站| 91成人精品电影| 亚洲国产最新在线播放| 国产日韩欧美在线精品| 9191精品国产免费久久| 自拍欧美九色日韩亚洲蝌蚪91| 精品人妻偷拍中文字幕| 国产午夜精品一二区理论片| 天堂俺去俺来也www色官网| 91精品伊人久久大香线蕉| 亚洲欧洲日产国产| 老鸭窝网址在线观看| 制服诱惑二区| 午夜影院在线不卡| 激情视频va一区二区三区| 天美传媒精品一区二区| 免费人妻精品一区二区三区视频| 国产精品不卡视频一区二区| 婷婷成人精品国产| 欧美精品亚洲一区二区| xxx大片免费视频| 99国产精品免费福利视频| 日本91视频免费播放| 大码成人一级视频| 美女脱内裤让男人舔精品视频| 亚洲国产精品成人久久小说| 中文精品一卡2卡3卡4更新| 看非洲黑人一级黄片| 只有这里有精品99| 亚洲欧美精品自产自拍| 丁香六月天网| 天堂8中文在线网| 搡女人真爽免费视频火全软件| 精品福利永久在线观看| 亚洲国产看品久久| 黄色视频在线播放观看不卡| 亚洲成国产人片在线观看| 一级片免费观看大全| 国产成人aa在线观看| 男女免费视频国产| 一本大道久久a久久精品| 久久99一区二区三区| 美女国产高潮福利片在线看| 天天操日日干夜夜撸| a级毛片黄视频| 一级,二级,三级黄色视频| 性色av一级| 国产国语露脸激情在线看| 涩涩av久久男人的天堂| 免费久久久久久久精品成人欧美视频| 在线观看免费视频网站a站| 大片免费播放器 马上看| 欧美精品国产亚洲| 黄片无遮挡物在线观看| 久久国产精品大桥未久av| 久久毛片免费看一区二区三区| 熟妇人妻不卡中文字幕| 丝袜脚勾引网站| 高清不卡的av网站| av天堂久久9| 丝袜美腿诱惑在线| 蜜桃在线观看..| 欧美精品高潮呻吟av久久| 欧美国产精品va在线观看不卡| 高清av免费在线| 1024视频免费在线观看| 久久国产精品大桥未久av| 久久精品国产亚洲av涩爱| 极品少妇高潮喷水抽搐| 一本大道久久a久久精品| 欧美日韩国产mv在线观看视频| 丰满少妇做爰视频| 午夜老司机福利剧场| 有码 亚洲区| 欧美精品人与动牲交sv欧美| 亚洲国产看品久久| 丝袜喷水一区| 人妻少妇偷人精品九色| av一本久久久久| 一区二区av电影网| 精品一区二区免费观看| av免费观看日本| 久久国产精品大桥未久av| 日韩视频在线欧美| 新久久久久国产一级毛片| 久久精品久久久久久久性| 国产黄色视频一区二区在线观看| 久久影院123| 777米奇影视久久| 街头女战士在线观看网站| av有码第一页| 岛国毛片在线播放| 80岁老熟妇乱子伦牲交| 久久久国产欧美日韩av| 中文字幕制服av| 美女视频免费永久观看网站| 国产av国产精品国产| 国产男女内射视频| 香蕉国产在线看| 黄片无遮挡物在线观看| 国产女主播在线喷水免费视频网站| 亚洲国产看品久久| 精品国产超薄肉色丝袜足j| av国产久精品久网站免费入址| 色哟哟·www| 亚洲精品国产一区二区精华液| 大码成人一级视频| 国产亚洲最大av| 精品一区二区免费观看| 精品一区二区免费观看| 亚洲欧洲国产日韩| 亚洲欧美成人综合另类久久久| 男女边摸边吃奶| 精品少妇黑人巨大在线播放| 日韩在线高清观看一区二区三区| 男人添女人高潮全过程视频| 精品人妻在线不人妻| 在线观看www视频免费| 久久青草综合色| 有码 亚洲区| 国产精品一区二区在线不卡| 国产国语露脸激情在线看| 在线看a的网站| 老司机影院毛片| 日本黄色日本黄色录像| 欧美变态另类bdsm刘玥| 欧美97在线视频| 国产亚洲av片在线观看秒播厂| 男人舔女人的私密视频| 国产乱来视频区| 国产免费一区二区三区四区乱码| 日韩中文字幕视频在线看片| av片东京热男人的天堂| 99热国产这里只有精品6| 国产精品成人在线| 免费高清在线观看视频在线观看| 欧美日韩成人在线一区二区| 国产探花极品一区二区| 亚洲精品美女久久av网站| 夫妻性生交免费视频一级片| 寂寞人妻少妇视频99o| 国产伦理片在线播放av一区| 尾随美女入室| 久久久久久久亚洲中文字幕| 免费看不卡的av| 午夜福利,免费看| 91精品三级在线观看| 亚洲欧美成人精品一区二区| 亚洲国产精品999| www.av在线官网国产| 大陆偷拍与自拍| 久久婷婷青草| 韩国精品一区二区三区| 欧美日韩亚洲高清精品| 美女视频免费永久观看网站| 最近2019中文字幕mv第一页| 成人漫画全彩无遮挡| av天堂久久9| 91精品伊人久久大香线蕉| 老司机影院成人| 少妇熟女欧美另类| 秋霞在线观看毛片| 麻豆乱淫一区二区| 黑人巨大精品欧美一区二区蜜桃| 男人舔女人的私密视频| 97在线人人人人妻| 亚洲av在线观看美女高潮| 日日啪夜夜爽| 精品一区二区三卡| 在线观看一区二区三区激情| 80岁老熟妇乱子伦牲交| 国产一区二区激情短视频 | 亚洲精品在线美女| 国产日韩欧美在线精品| 精品一品国产午夜福利视频| 精品亚洲成国产av| 久久久久久久国产电影| av线在线观看网站| 午夜福利乱码中文字幕| 十八禁网站网址无遮挡| 久久亚洲国产成人精品v| 国产成人一区二区在线| 国产白丝娇喘喷水9色精品| 亚洲精品aⅴ在线观看| 欧美bdsm另类| 多毛熟女@视频| 久久久久久久久免费视频了| 国产福利在线免费观看视频| videosex国产| 亚洲一区二区三区欧美精品| 精品久久久久久电影网| 亚洲精品国产色婷婷电影| 我要看黄色一级片免费的| 免费观看性生交大片5| 五月天丁香电影| 久久久久精品性色| 激情视频va一区二区三区| 亚洲国产欧美日韩在线播放| 久久久久久久大尺度免费视频| 在线观看免费视频网站a站| 捣出白浆h1v1| 中文字幕人妻丝袜制服| 国产精品偷伦视频观看了| 国产成人免费观看mmmm| 精品国产一区二区久久| 日韩中文字幕视频在线看片| 各种免费的搞黄视频| 看免费av毛片| 成年人午夜在线观看视频| 国产精品一二三区在线看| 久久久久久人人人人人| 久久久久久人妻| 波多野结衣av一区二区av| 一级毛片黄色毛片免费观看视频| 91午夜精品亚洲一区二区三区| 免费不卡的大黄色大毛片视频在线观看| 日日撸夜夜添| 日本猛色少妇xxxxx猛交久久| 中国国产av一级| 国产成人a∨麻豆精品| 午夜福利影视在线免费观看| 三级国产精品片| 在线亚洲精品国产二区图片欧美| 在线观看免费视频网站a站| 国产男女超爽视频在线观看| 久久99精品国语久久久| 国产亚洲欧美精品永久| 大片电影免费在线观看免费| 精品第一国产精品| 婷婷色综合www| 成年av动漫网址| 另类亚洲欧美激情| 精品国产乱码久久久久久男人| 久久久久国产网址| 欧美日韩一区二区视频在线观看视频在线| 一级片免费观看大全| 免费不卡的大黄色大毛片视频在线观看| 啦啦啦在线免费观看视频4| 建设人人有责人人尽责人人享有的| 亚洲精品中文字幕在线视频| 国产成人欧美| 男女午夜视频在线观看| 两个人免费观看高清视频| 国产精品av久久久久免费| 1024视频免费在线观看| 亚洲熟女精品中文字幕| 精品国产一区二区久久| 久久影院123| 最近的中文字幕免费完整| 日韩电影二区| 99精国产麻豆久久婷婷| 一级,二级,三级黄色视频| 少妇被粗大猛烈的视频| 成人影院久久| 精品少妇久久久久久888优播| 亚洲欧美日韩另类电影网站| 亚洲三级黄色毛片| 国产欧美亚洲国产| 国产精品国产三级专区第一集| 大片电影免费在线观看免费| 91精品伊人久久大香线蕉| 777久久人妻少妇嫩草av网站| 久久久国产欧美日韩av| 人体艺术视频欧美日本| 国产精品成人在线| 国产男女内射视频| 亚洲欧美中文字幕日韩二区| 国产免费又黄又爽又色| 成人亚洲精品一区在线观看| 又大又黄又爽视频免费| 国产视频首页在线观看| 丰满少妇做爰视频| 久久久久久人妻| 欧美+日韩+精品| freevideosex欧美| 国产精品 欧美亚洲| 久久午夜综合久久蜜桃| 99九九在线精品视频| 久久久久国产精品人妻一区二区| 精品亚洲乱码少妇综合久久| 久久鲁丝午夜福利片| 国产精品一国产av| 人人澡人人妻人| 国产精品久久久久久精品电影小说| 国产乱人偷精品视频| 捣出白浆h1v1| 日本午夜av视频| 国产视频首页在线观看| 最近的中文字幕免费完整| 天天影视国产精品| 人人妻人人澡人人爽人人夜夜| av网站免费在线观看视频| 十分钟在线观看高清视频www| 精品国产国语对白av| 国产爽快片一区二区三区| 亚洲中文av在线| 日韩精品有码人妻一区| 又黄又粗又硬又大视频| 热re99久久精品国产66热6| 久久久欧美国产精品| 亚洲成人av在线免费| 视频在线观看一区二区三区| 熟女少妇亚洲综合色aaa.| 丝袜美足系列| 国产成人精品一,二区| 国产不卡av网站在线观看| 欧美xxⅹ黑人| 国产国语露脸激情在线看| 久久热在线av| 午夜激情av网站| 在线观看人妻少妇| 岛国毛片在线播放| 一区二区三区精品91| 在线观看三级黄色| av国产久精品久网站免费入址| 婷婷成人精品国产| 宅男免费午夜| 精品人妻偷拍中文字幕| 亚洲av电影在线观看一区二区三区| 如何舔出高潮| 午夜福利在线免费观看网站| 五月伊人婷婷丁香| 99久久精品国产国产毛片| av视频免费观看在线观看| 男人操女人黄网站| 亚洲欧洲日产国产| 亚洲四区av| 精品亚洲乱码少妇综合久久| 岛国毛片在线播放| 国产精品一国产av| 丰满迷人的少妇在线观看| 欧美日韩精品网址| 国产又爽黄色视频| 国产av码专区亚洲av| 人人妻人人澡人人看| 国产综合精华液| 少妇 在线观看| 在线观看免费视频网站a站| 寂寞人妻少妇视频99o| 七月丁香在线播放| 亚洲婷婷狠狠爱综合网| 天天躁狠狠躁夜夜躁狠狠躁| 1024香蕉在线观看| 国产女主播在线喷水免费视频网站| 啦啦啦在线观看免费高清www| 777久久人妻少妇嫩草av网站| kizo精华| 免费观看a级毛片全部| 久久 成人 亚洲| 亚洲欧美一区二区三区国产| 亚洲三级黄色毛片| 人成视频在线观看免费观看| 2018国产大陆天天弄谢| 妹子高潮喷水视频| 成人免费观看视频高清| av免费在线看不卡| 老司机影院成人| 男人添女人高潮全过程视频| 国产白丝娇喘喷水9色精品| 国产女主播在线喷水免费视频网站| 欧美国产精品一级二级三级| 一边摸一边做爽爽视频免费| 九草在线视频观看| 国产97色在线日韩免费| 亚洲国产精品成人久久小说| 捣出白浆h1v1| 99热网站在线观看| 一二三四在线观看免费中文在| 日本黄色日本黄色录像| 国产成人精品婷婷| 秋霞在线观看毛片| 欧美变态另类bdsm刘玥| 这个男人来自地球电影免费观看 | 丝袜美腿诱惑在线| 各种免费的搞黄视频| av女优亚洲男人天堂| 在线观看免费视频网站a站| 中文字幕另类日韩欧美亚洲嫩草| 最近最新中文字幕免费大全7| 中文字幕精品免费在线观看视频| 久久精品aⅴ一区二区三区四区 | 男女边吃奶边做爰视频| 在线亚洲精品国产二区图片欧美| 90打野战视频偷拍视频| 十分钟在线观看高清视频www| 黄色视频在线播放观看不卡| 久久亚洲国产成人精品v| 免费高清在线观看视频在线观看| 色视频在线一区二区三区| 女人高潮潮喷娇喘18禁视频| 成年美女黄网站色视频大全免费| 亚洲欧洲日产国产| 国产成人欧美| 久久人妻熟女aⅴ| 欧美精品国产亚洲| 五月天丁香电影| 欧美老熟妇乱子伦牲交| 最新中文字幕久久久久| 亚洲婷婷狠狠爱综合网| 久久久久久久亚洲中文字幕| 亚洲精品久久久久久婷婷小说| 久久韩国三级中文字幕| av在线老鸭窝| 亚洲精品日韩在线中文字幕| 成人漫画全彩无遮挡| 狠狠精品人妻久久久久久综合| 国产成人精品福利久久| 日韩中文字幕视频在线看片| 人妻系列 视频| 波野结衣二区三区在线| www.精华液| 国产精品久久久久久久久免| 伦理电影大哥的女人| av又黄又爽大尺度在线免费看| 777久久人妻少妇嫩草av网站| 亚洲视频免费观看视频| 亚洲美女视频黄频| 国产精品99久久99久久久不卡 | 日韩电影二区| 一区在线观看完整版| 我要看黄色一级片免费的| 午夜福利乱码中文字幕| 哪个播放器可以免费观看大片| 99久久精品国产国产毛片| 99re6热这里在线精品视频| 久久久久国产一级毛片高清牌| 亚洲成人一二三区av| 免费高清在线观看日韩| 多毛熟女@视频| 国产精品久久久久久精品古装| 免费观看av网站的网址| 人人澡人人妻人| 女人高潮潮喷娇喘18禁视频| 丝袜人妻中文字幕| 一区二区三区四区激情视频| 99久久人妻综合| 日韩人妻精品一区2区三区| 久久精品久久精品一区二区三区| 午夜福利视频在线观看免费| 91午夜精品亚洲一区二区三区| 亚洲中文av在线| 一本—道久久a久久精品蜜桃钙片| 黄片无遮挡物在线观看| 天天躁夜夜躁狠狠久久av| 一区二区三区四区激情视频| 亚洲精品久久成人aⅴ小说| 91午夜精品亚洲一区二区三区| 大片免费播放器 马上看| 国产又色又爽无遮挡免| 少妇人妻久久综合中文| 亚洲欧美日韩另类电影网站| 人妻一区二区av| 亚洲一级一片aⅴ在线观看| 一级a爱视频在线免费观看| 成人亚洲精品一区在线观看| av天堂久久9| 一级爰片在线观看| 日韩中字成人| 亚洲欧美日韩另类电影网站| 欧美激情高清一区二区三区 | 免费播放大片免费观看视频在线观看| 少妇 在线观看| av.在线天堂| 黄色毛片三级朝国网站| 少妇的逼水好多| 成人国语在线视频| 久久久久久免费高清国产稀缺| 欧美日韩一区二区视频在线观看视频在线| 欧美中文综合在线视频| 晚上一个人看的免费电影| 纵有疾风起免费观看全集完整版| av卡一久久| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 婷婷色综合大香蕉| 99久久精品国产国产毛片| 欧美精品高潮呻吟av久久| 欧美日韩一区二区视频在线观看视频在线| 免费观看性生交大片5| 丝袜喷水一区| 满18在线观看网站| 少妇猛男粗大的猛烈进出视频| 日韩在线高清观看一区二区三区| 七月丁香在线播放| 另类精品久久| 精品人妻偷拍中文字幕| av不卡在线播放| 久久精品人人爽人人爽视色| 男女高潮啪啪啪动态图| 天天躁狠狠躁夜夜躁狠狠躁| 精品国产乱码久久久久久小说| 日韩一区二区三区影片| 一级毛片黄色毛片免费观看视频| 校园人妻丝袜中文字幕| 欧美变态另类bdsm刘玥| 午夜激情久久久久久久| 丝袜喷水一区| 69精品国产乱码久久久| 秋霞在线观看毛片| 亚洲一码二码三码区别大吗| 人妻人人澡人人爽人人| 国产免费现黄频在线看| 国产成人av激情在线播放| 欧美在线黄色| 日本wwww免费看| 18禁观看日本| 黄片无遮挡物在线观看| 国产黄色视频一区二区在线观看| 日本-黄色视频高清免费观看| 9191精品国产免费久久| 黄色一级大片看看| 欧美另类一区| 涩涩av久久男人的天堂| 免费观看a级毛片全部| 国产精品免费视频内射| 中文天堂在线官网| 老司机影院成人| 狠狠婷婷综合久久久久久88av| 美女福利国产在线| 精品酒店卫生间| 亚洲色图综合在线观看| 亚洲精品一二三| 精品久久蜜臀av无| 女人被躁到高潮嗷嗷叫费观| 午夜日本视频在线| 午夜激情av网站| 欧美精品一区二区大全| 婷婷色综合www| 欧美日韩综合久久久久久| 精品少妇内射三级| 伦理电影大哥的女人| 最近中文字幕高清免费大全6| 午夜免费男女啪啪视频观看| 一级片'在线观看视频| 久久久a久久爽久久v久久| 日韩制服骚丝袜av| 亚洲美女搞黄在线观看| 久久精品久久久久久噜噜老黄| 久久久久久久大尺度免费视频| 国产一区二区三区av在线| 日韩中文字幕欧美一区二区 | 亚洲色图综合在线观看| 亚洲久久久国产精品| 久久综合国产亚洲精品| 黄片小视频在线播放| 搡老乐熟女国产| 日韩在线高清观看一区二区三区| 国产激情久久老熟女| 老女人水多毛片| 男人操女人黄网站| 亚洲精品在线美女| 超色免费av| 亚洲精品成人av观看孕妇| 午夜日本视频在线| 人妻系列 视频| 久久99蜜桃精品久久| 韩国高清视频一区二区三区| 亚洲精品视频女| av女优亚洲男人天堂| 狠狠婷婷综合久久久久久88av| 午夜91福利影院| 国产精品一区二区在线观看99| 啦啦啦在线免费观看视频4| 精品少妇黑人巨大在线播放| 91久久精品国产一区二区三区| 一区福利在线观看| 又粗又硬又长又爽又黄的视频| 新久久久久国产一级毛片| 国产精品秋霞免费鲁丝片| 成年av动漫网址| 又大又黄又爽视频免费| 纯流量卡能插随身wifi吗| 婷婷色综合大香蕉| 晚上一个人看的免费电影| 哪个播放器可以免费观看大片| 亚洲成人一二三区av| 日本av免费视频播放| 免费看av在线观看网站| 91aial.com中文字幕在线观看| www日本在线高清视频| 亚洲第一av免费看| 成年女人毛片免费观看观看9 | 99九九在线精品视频| 高清视频免费观看一区二区| 天美传媒精品一区二区| 捣出白浆h1v1| 免费观看无遮挡的男女| 国产成人精品福利久久| 一二三四中文在线观看免费高清| 国产一区二区激情短视频 | 亚洲成人手机| 国产av码专区亚洲av| 亚洲国产精品成人久久小说| 麻豆av在线久日| 免费黄色在线免费观看| 国产精品一国产av| 三级国产精品片| 免费在线观看黄色视频的| 美女视频免费永久观看网站|