• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于圖像的物體尺寸測(cè)量算法研究

      2016-12-22 21:38趙明
      軟件導(dǎo)刊 2016年11期
      關(guān)鍵詞:邊緣檢測(cè)圖像識(shí)別

      趙明

      摘 要:提出了基于多通道色彩下的邊緣檢測(cè)和目標(biāo)識(shí)別方法,以及后期的以圓為參照的目標(biāo)尺寸計(jì)算方法。在前期預(yù)處理中采用卷積運(yùn)算和銳化等圖像增強(qiáng)手段,利用Canny 算子檢測(cè)邊緣,然后通過目標(biāo)的幾何特征高效識(shí)別,以近似曲線逼近算法減小邊界點(diǎn)數(shù)據(jù)量。對(duì)于已經(jīng)透視變形目標(biāo),立體識(shí)別模式采用余弦修正法,平面識(shí)別模式采用最小包圍矩形法進(jìn)行校正,提高了目標(biāo)的計(jì)算精度。最后在 PC 端和Android 平臺(tái)下進(jìn)行算法實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,該預(yù)處理及檢測(cè)識(shí)別方法行之有效,能在移動(dòng)設(shè)備上進(jìn)行快捷有效的圖像識(shí)別處理。

      關(guān)鍵詞關(guān)鍵詞:圖像識(shí)別;邊緣檢測(cè);物體測(cè)量

      DOIDOI:10.11907/rjdk.162445

      中圖分類號(hào):TP312

      文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):16727800(2016)011004805

      0 引言

      在數(shù)字化和自動(dòng)化時(shí)代,人們傾向于用更快捷有效的方法替代傳統(tǒng)的手工工作,如在一些自動(dòng)化生產(chǎn)車間、物流公司的配送系統(tǒng),往往需要便捷獲取

      物體(如箱子)尺寸,方法是手工測(cè)量或肉眼估計(jì),效率和精度不高。目前,國內(nèi)外已開展了物體識(shí)別、圖像矯正等方面的研究,但是

      直接通過參照物標(biāo)定未知目標(biāo)尺寸的例子還比較少[15]。在物體識(shí)別方面,常見的是用數(shù)據(jù)訓(xùn)練識(shí)別器,然后再對(duì)物體進(jìn)行識(shí)別(比如人臉識(shí)別)。

      在圖像處理方面,透視變形是最常見也是影響較大的因素,對(duì)透視變形的矯正,已經(jīng)有一些技術(shù)[68],但只是對(duì)已知物體尺寸進(jìn)行校正(如 A4 文檔矯正)或者同比例(保持長(zhǎng)寬比)情況下對(duì)目標(biāo)進(jìn)行矯正,而針對(duì)一張張獨(dú)立圖片還沒有適合的方法。

      本文開發(fā)了一款基于 Android 手機(jī)平臺(tái)的物體長(zhǎng)度測(cè)量 APP。運(yùn)用圖像處理技術(shù),直接對(duì)手機(jī)相冊(cè)里的圖片進(jìn)行目標(biāo)識(shí)別、矯正和計(jì)算,得到物體尺寸。

      1 算法設(shè)計(jì)

      為實(shí)現(xiàn)從任意給定的一張圖片中識(shí)別出目標(biāo)物體并計(jì)算尺寸,需要經(jīng)過圖片預(yù)處理(過濾去噪)、邊緣檢測(cè)、目標(biāo)識(shí)別匹配、透視變形矯正和參照對(duì)比等步驟。每一環(huán)節(jié)的處理效果及速度,都會(huì)對(duì)最終結(jié)果產(chǎn)生明顯影響。

      1.1 預(yù)處理

      圖像處理中,首先需要對(duì)給定圖片數(shù)據(jù)進(jìn)行預(yù)處理,預(yù)處理主要是進(jìn)行去噪、銳化、圖像增強(qiáng)等操作,目的是為后期處理減少干擾,突出目標(biāo)。本文處理的圖片隨機(jī)拍照生成,拍攝背景、拍攝條件不盡相同,可能導(dǎo)致背景噪聲干擾淹沒目標(biāo)物,因而預(yù)處理目標(biāo)是確保原始信息不丟失且關(guān)鍵信息得到增強(qiáng)。

      1.1.1 卷積運(yùn)算

      對(duì)圖像進(jìn)行卷積運(yùn)算,可突出圖像細(xì)節(jié),增強(qiáng)對(duì)比度。卷積運(yùn)算是利用一個(gè)矩陣核對(duì)一個(gè)小區(qū)域進(jìn)行操作,即掩碼運(yùn)算。

      要得到圖像某個(gè)特定位置的卷積值,可用下列方法計(jì)算:①將核的錨點(diǎn)放在該特定位置像素上,同時(shí),核內(nèi)其它值與該像素鄰域的各像素重合;②將核內(nèi)各值與相應(yīng)像素值相乘,并將乘積相加;③將所得結(jié)果放到與錨點(diǎn)對(duì)應(yīng)的像素上;④對(duì)圖像所有像素重復(fù)上述過程。

      1.1.2 銳化

      圖像銳化是補(bǔ)償圖像的輪廓,增強(qiáng)圖像邊緣及灰度跳變部分,使圖像變得清晰。在計(jì)算機(jī)圖像處理中可用微分運(yùn)算和高通濾波器來實(shí)現(xiàn)圖像銳化,即對(duì)空間域和頻域進(jìn)行銳化。

      根據(jù)頻率分析,任何一幅圖像都是由決定圖像反差的低頻信號(hào)和決定圖像細(xì)節(jié)的高頻信號(hào)組成,所以頻率域圖像的銳化可以采用高通濾波器濾波,以加強(qiáng)圖像所需的高頻信號(hào)。

      1.1.3 降采樣和插值

      對(duì)圖片進(jìn)行一次降采樣,可以降低圖片的數(shù)據(jù)量,減少計(jì)算量,然后進(jìn)行插值恢復(fù),保持圖像關(guān)鍵信息的完整性??梢匀ピ霝V波,消除背景噪聲和預(yù)處理帶來的部分噪聲。

      1.2 邊緣檢測(cè)

      邊緣檢測(cè)是目標(biāo)識(shí)別的前提,也是整個(gè)算法流程中非常重要的一環(huán)。邊緣是指其周圍像素灰度急劇變化的那些像素集合,它是圖像最基本的特征。邊緣存在于目標(biāo)、背景和區(qū)域之間,所以,它是圖像分割的重要依據(jù)。有許多方法用于邊緣檢測(cè),一般分為基于查找和基于零穿越兩類方法。基于查找方法通過尋找圖像一階導(dǎo)數(shù)中最大和最小值來檢測(cè)邊界,通常是將邊界定位在梯度最大的方向。

      在邊緣檢測(cè)算法中,大多數(shù)情況下僅僅需要邊緣檢測(cè)器指出邊緣出現(xiàn)在圖像某一像素點(diǎn)附近,而沒有必要指出邊緣的精確位置或方向。本文只需要確定目標(biāo)輪廓,不需要具體位置信息,步驟如下:

      1.2.1 圖像色彩通道提取

      檢測(cè)算子操作的都是單通道灰度圖或二值圖,傳統(tǒng)做法是直接對(duì)源圖像進(jìn)行灰度化或者二值化處理,通過一定的閾值截?cái)鄶?shù)據(jù),這就丟失了不同色彩通道下的目標(biāo)信息。不同拍照環(huán)境下,目標(biāo)與背景的色彩區(qū)分度較大。比如目標(biāo)是黃色,而背景是藍(lán)色,綜合進(jìn)行二值化的結(jié)果是目標(biāo)與背景的邊界沒那么明顯。如果進(jìn)行色彩通道提取然后再處理,在一種色彩通道下,能很好地將目標(biāo)與背景分割開。

      常見的圖片只涉及 RGB 三原色,所以本文做法是每次提取3種顏色的一種,然后再進(jìn)行邊緣檢測(cè)處理。

      1.2.2 檢測(cè)算子選取

      常見的邊緣檢測(cè)算子有Roberts Cross算子、 Prewitt算子、 Sobel算子、 Canny算子等。其中,Sobel算子和Canny算子效果較好。

      Sobel算子是一階微分算子,它利用像素鄰近區(qū)域的梯度值來計(jì)算1個(gè)像素的梯度,然后根據(jù)一定的閾值來取舍。Sobel 算子是算子模板,它由兩個(gè)算子核構(gòu)成,一個(gè)核對(duì)垂直邊緣響應(yīng)最大,另一個(gè)核對(duì)水平邊緣響應(yīng)最大。2個(gè)卷積的最大值作為該點(diǎn)的輸出值。本文給出2個(gè)算子對(duì)同一圖像的邊緣檢測(cè)效果。

      圖1 實(shí)物照片

      從圖1-圖3可以看出,Canny算子對(duì)圖像的邊緣信息保留較好,出現(xiàn)的輪廓斷裂或缺失情況小,而Sobel算子檢測(cè)后的輪廓圖很模糊,邊緣信息丟失很厲害。本文檢測(cè)算子采用Canny算子。

      1.2.3 閾值自適應(yīng)獲取

      Canny使用了滯后閾值。滯后閾值需要兩個(gè)閾值——高閾值與低閾值。假設(shè)圖像中的重要邊緣都是連續(xù)曲線,這樣就可以跟蹤給定曲線中的模糊部分,避免將沒有組成曲線的噪聲像素當(dāng)成邊緣。從一個(gè)較大閾值開始,標(biāo)識(shí)出比較確信的真實(shí)邊緣,使用前面導(dǎo)出的方向信息,從這些真正的邊緣開始在圖像中跟蹤整個(gè)邊緣。跟蹤時(shí)本文使用一個(gè)較小閾值,這樣就可以跟蹤曲線的模糊部分直至回到起點(diǎn)。

      圖2 Canny 算子效果圖3 Sobel 算子效果

      設(shè)置閾值過高可能會(huì)漏掉重要信息;閾值過低,枝節(jié)信息又變得很重要,很難給出一個(gè)適用于所有圖像的通用閾值。傳統(tǒng)方法是讓用戶根據(jù)經(jīng)驗(yàn)手動(dòng)輸入兩個(gè)閾值,這不但麻煩,而且同樣的閾值對(duì)不同的圖片檢測(cè)效果不一樣,缺乏泛化能力。本文提出了基于類間距的自適應(yīng)閾值算法。該算法一般都能求出兩個(gè)高低閾值,如果自適應(yīng)獲取失敗,就采用最常用的經(jīng)驗(yàn)值作為默認(rèn)值。

      1.3 目標(biāo)識(shí)別

      確定好目標(biāo)輪廓線后就可對(duì)目標(biāo)進(jìn)行識(shí)別處理。識(shí)別之前,還應(yīng)考慮實(shí)際情況對(duì)輪廓線進(jìn)一步篩選。實(shí)際應(yīng)用中目標(biāo)物的尺寸在整個(gè)圖片中屬于大物體,前面步驟處理后,一些類似的小物體也保留下來,而這些需要剔除。剔除方法是面積篩選法,只有當(dāng)閉合輪廓線面積滿足某個(gè)面積閾值時(shí)才被保留。這樣既排除了干擾,也加快了處理速度。

      輪廓線由許多點(diǎn)組成,輪廓線保存的就是這些點(diǎn),這些點(diǎn)存在著大量冗余。例如確定一個(gè)矩形,只需要4個(gè)點(diǎn)。對(duì)已經(jīng)保留下來的輪廓線進(jìn)行一次幾何曲線擬合,用一個(gè)只包含最少點(diǎn)的幾何曲線來表示原來的輪廓線,會(huì)大大降低數(shù)據(jù)量,減少存儲(chǔ)空間,同時(shí)也加快了后續(xù)處理速度。

      擬合算法采用的是RamerDouglasPeucker algorithm (RDP)算法。該算法遞歸地從原始點(diǎn)集選取兩點(diǎn)作為線段,然后找離線段最遠(yuǎn)的點(diǎn)。如果這個(gè)點(diǎn)到線段的距離大于閾值就保留,否則剔除。閾值一般采用比較常用的經(jīng)驗(yàn)值0.02。

      目標(biāo)識(shí)別方法很多,圖像紋理特征、幾何特征、模式分類器都可以作為識(shí)別依據(jù),其中幾何特征法針對(duì)規(guī)則目標(biāo)的識(shí)別具有高效快捷、數(shù)據(jù)量小的優(yōu)點(diǎn)。因此,本文采用幾何特征法進(jìn)行識(shí)別。

      一張包含參照物和目標(biāo)物的圖片經(jīng)過預(yù)處理、邊緣檢測(cè)、輪廓拾取等步驟,將參照物和目標(biāo)同時(shí)進(jìn)行識(shí)別,提高了處理效率。

      采用了多通道的分別檢測(cè)識(shí)別方法,同一個(gè)目標(biāo)物會(huì)被多次識(shí)別,解決此問題的方法是去重:如果兩次識(shí)別的目標(biāo)物大小一樣,特定點(diǎn)(如中心或左頂角)的坐標(biāo)位置一樣,那么就認(rèn)為是同一物體,只保留一份即可。

      1.3.1 參照物識(shí)別

      (1)參照物選取。

      參照物選取原則:①不能和待識(shí)別的矩形或立方體混淆干擾;②參照物自身應(yīng)當(dāng)易識(shí)別,且始終保持一致?;谏鲜隹紤],本文選擇圓(球)作為參照物。圓(球)的投影能保持很好的一致性。

      (2)參照物幾何特性。

      對(duì)于圓來說,它的幾何特性比較特殊,具有“1”的特性:任何小于1的幾何圖形都不是圓??紤]到實(shí)際情況,圖片的拍攝質(zhì)量、透視形變等原因,在實(shí)際識(shí)別過程中,閾值設(shè)置為0.8,當(dāng)大于這個(gè)值時(shí)就判定為圓。

      圖片除了參照物的圓外還可能存在多個(gè)干擾圓,解決方法是確保參照物圓是所有圓里最大的一個(gè)。

      1.3.2 平面目標(biāo)(矩形)識(shí)別

      平面目標(biāo)識(shí)別主要是對(duì)一個(gè)照片里多個(gè)目標(biāo)物(矩形)進(jìn)行識(shí)別,這些矩形可以任意角度旋轉(zhuǎn),推薦最大個(gè)數(shù)不超過10個(gè),否則會(huì)導(dǎo)致取景框裝不下,需要將拉長(zhǎng)距縮小,導(dǎo)致識(shí)別和計(jì)算精度下降。

      識(shí)別過程:

      ①判斷擬合曲線的頂點(diǎn)數(shù)是否為4;

      ②計(jì)算4個(gè)角的余弦值。 由于只知道4個(gè)頂點(diǎn)坐標(biāo),所以需要3個(gè)1組分別計(jì)算余弦值;

      ③篩選。 理想情況下,如果4個(gè)余弦值都為0,則代表目標(biāo)物是一個(gè)矩形??紤]到實(shí)際情況下圖片的拍攝質(zhì)量和透視變形,4個(gè)余弦值只會(huì)與 0 很接近。解決方法是求4個(gè)余弦值的最大值,然后判斷最大值是否小于閾值0.3。如果是,則目標(biāo)物是一個(gè)矩形;

      ④去重。 如果同一個(gè)目標(biāo)已被檢測(cè),則以后直接跳過,不更新矩形集合;

      ⑤排序。經(jīng)過以上步驟,可以獲得一個(gè)矩形集合,但是這個(gè)集合里可能還有一些邊邊角角的干擾小矩形被收錄。這時(shí)可根據(jù)面積,對(duì)所有矩形進(jìn)行排序,把面積大的用戶感興趣的目標(biāo)列出來,其它的剔除或者跳過處理。

      1.3.3 立體目標(biāo)(長(zhǎng)方體)識(shí)別

      對(duì)于立體目標(biāo),從一個(gè)角度拍最多只能看到3個(gè)面,透視變形現(xiàn)象較嚴(yán)重。正對(duì)著相機(jī)的2個(gè)面會(huì)變形拉伸為梯形,而頂部的一個(gè)面則直接變形為菱形。基于以上考慮,需將識(shí)別規(guī)則進(jìn)行修改:

      (1)單個(gè)識(shí)別。一張圖片里只能保留一個(gè)立體目標(biāo)(長(zhǎng)方體),且盡量居于圖片正中央,這樣可以減輕透視變形。

      (2)判定擬合幾何曲線的頂點(diǎn)是否為4 ,透視現(xiàn)象導(dǎo)致矩形退化為一般的四邊形。

      (3)去重。 同平面目標(biāo)一樣,立體目標(biāo)也會(huì)由于多通道提取檢測(cè)識(shí)別而出現(xiàn)多次檢測(cè),解決方法也是及時(shí)去重,保留一份結(jié)果。

      (4)排序定位 。經(jīng)過上述步驟識(shí)別出的目標(biāo),可能包含頂部已經(jīng)廢掉的菱形及其它四邊形,此時(shí)需要對(duì)這些四邊形進(jìn)行一個(gè)基于面積的排序,只取面積最大的和次最大的兩個(gè),這就是本文后續(xù)計(jì)算尺寸需要的2個(gè)面。

      1.4 透視矯正

      物體成像過程是一個(gè)單點(diǎn)投影過程,該過程無可避免地產(chǎn)生了透視變形。透視變形最直接的效應(yīng)是遠(yuǎn)小近大、平行線相交。落腳到目標(biāo)物上,導(dǎo)致目標(biāo)的幾何形狀發(fā)生改變,或水平或豎直方向進(jìn)行了拉伸或縮小。如果僅僅為了識(shí)別出目標(biāo)物,則可通過一定算法將變形后的目標(biāo)識(shí)別出來,但是目標(biāo)在像素空間的尺寸已經(jīng)發(fā)生了改變;如果要進(jìn)一步計(jì)算目標(biāo)的實(shí)際尺寸,就必須對(duì)目標(biāo)進(jìn)行校正,才能保證結(jié)果的精確性。

      目前國內(nèi)外對(duì)透視校正有一些研究,針對(duì)的是一些特定目標(biāo)的校正,復(fù)雜度高,缺乏通用性。例如袁國棟[9]的“逆向投影點(diǎn)繪制算法”、鄭全新[10]的“基于消失線的長(zhǎng)方體表面透視變形校正方法”等,需要事先知道相機(jī)的內(nèi)部參數(shù)、拍攝時(shí)的距離角度等外部條件,計(jì)算過程復(fù)雜。苗立剛[11]的“基于形態(tài)學(xué)的文檔圖像透視校正算法”需要事先知道目標(biāo)物大小,如A4紙的尺寸。代秦[12]的 “基于改進(jìn)變換和透視變換的透視圖像矯正”則需要事先知道幾個(gè)不變的坐標(biāo),求出轉(zhuǎn)換矩陣,同樣不適合本文的研究目標(biāo)。

      基于上述考慮,必須在便捷簡(jiǎn)易和精度上折中,并且不可能有 100%的矯正效果。所以在拍攝之前,為了獲得更高的精度,拍照過程應(yīng)盡量減小透視變形。在平面目標(biāo)(矩形)模式下,物體變形不是很嚴(yán)重,本文采用最小包圍矩形來進(jìn)行校正。

      在靠近相機(jī)的一端,目標(biāo)物幾乎沒有形變,可以這些像素點(diǎn)為基點(diǎn),逐步向外擴(kuò)展,構(gòu)造一個(gè)可以最小包圍目標(biāo)物的外接矩形,這樣就可以將縮小的邊拉回到正常尺寸。為了提高計(jì)算效率,可以直接以這個(gè)外接矩形尺寸為準(zhǔn),省去將目標(biāo)物進(jìn)行校正拉伸的過程。

      在平面目標(biāo)識(shí)別過程中,由于目標(biāo)可以旋轉(zhuǎn),所以這個(gè)最小包圍矩形不是水平的,而是根據(jù)目標(biāo)物最靠近相機(jī)的2條直線進(jìn)行逐步擴(kuò)展,構(gòu)造一個(gè)最小外接矩形。

      在立體目標(biāo)識(shí)別模式下,由于觀察角度問題,立體物體的兩個(gè)面不能同時(shí)正對(duì)相機(jī),必會(huì)導(dǎo)致某個(gè)面透視變形嚴(yán)重。通過觀察圖像可知,正對(duì)相機(jī)的目標(biāo)高邊幾乎沒有形變,而目標(biāo)的寬邊和長(zhǎng)邊則變形嚴(yán)重。

      針對(duì)這種變形,本文采用余弦糾正法。首先計(jì)算形變的面靠近低端和水平線的夾角,然后以低端的那條邊和水平線構(gòu)成一個(gè)直角三角形。低端的那條邊可以根據(jù)形變面的頂點(diǎn)坐標(biāo)距離求得,然后根據(jù)余弦值,再反推出斜邊的長(zhǎng)度,即為校正后的邊長(zhǎng)。最后強(qiáng)調(diào)一點(diǎn)的是,在拍攝立體目標(biāo)圖片時(shí),相機(jī)最好稍微仰視目標(biāo)拍照,這樣校正效果比較好。對(duì)于一些立體識(shí)別變形嚴(yán)重情況,推薦采用平面目標(biāo)識(shí)別,每次識(shí)別立體目標(biāo)的一個(gè)面,這樣可提高精度。

      1.5 參照計(jì)算

      經(jīng)過上述步驟處理,可以得到經(jīng)過校正的參照物和目標(biāo)物的像素空間尺寸。此時(shí)只需要進(jìn)行一個(gè)等比計(jì)算,即可獲得目標(biāo)尺寸。

      2 實(shí)驗(yàn)結(jié)果

      目前,圖像處理比較流行和成熟的第三方庫是OpenCV[1314],它是一個(gè)開源的跨平臺(tái)計(jì)算機(jī)視覺庫,可以運(yùn)行在Linux、Windows和Mac OS操作系統(tǒng)上。它是輕量級(jí)的,而且高效,由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,主要使用C/C++編程,同時(shí)提供了Python、Java 等語言接口,實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺的很多通用算法。

      OpenCV 提供了Point、Rect、Mat等基本數(shù)據(jù)結(jié)構(gòu),可以省去結(jié)構(gòu)設(shè)計(jì)和底層操作,開發(fā)程序時(shí)專注于問題域自身算法的設(shè)計(jì)和實(shí)現(xiàn),降低了實(shí)現(xiàn)復(fù)雜度,提高了靈活度。本文基于OpenCV 2加以實(shí)現(xiàn)。

      為了設(shè)定核心算法和框架,便于優(yōu)化修改,本文先在PC端實(shí)現(xiàn)算法。圖像處理代碼實(shí)現(xiàn)注重效率和檢測(cè)效果,本文采用的是經(jīng)典的面向過程編程方法,對(duì)關(guān)鍵算法的函數(shù)實(shí)現(xiàn)進(jìn)行封裝和優(yōu)化。下面以立體目標(biāo)識(shí)別計(jì)算為例,介紹幾個(gè)核心函數(shù)的實(shí)現(xiàn)。

      2.1 目標(biāo)物去重

      多通道的反復(fù)檢測(cè)處理,對(duì)同一個(gè)目標(biāo)可能會(huì)多次檢測(cè),但是只能保留一份,其它的需要排除掉。采用方法是基于位置和面積的判別。

      2.2 自適應(yīng)法確定高低

      采用OSTU算法實(shí)現(xiàn)一個(gè)自適應(yīng)算法。

      2.3 目標(biāo)檢測(cè)識(shí)別

      目標(biāo)檢測(cè)識(shí)別是較關(guān)鍵部分,綜合了很多其它算法過程。其中多通道提取算法可以用OpenCV的 mixChannels()函數(shù)實(shí)現(xiàn),邊緣搜索可以用 findContours()實(shí)現(xiàn)。實(shí)現(xiàn)過程中關(guān)鍵是算法的組合及庫函數(shù)的參數(shù)選取。

      2.4 尺寸計(jì)算

      識(shí)別過程中可能會(huì)收錄一些小尺寸目標(biāo),這些需要剔除。部分圖片是矩形,有時(shí)會(huì)錯(cuò)誤地識(shí)別,這也需要剔除。剔除方法是如果目標(biāo)物尺寸跟圖片尺寸相仿,那么目標(biāo)其實(shí)是整個(gè)圖片,應(yīng)當(dāng)剔除。

      在找到計(jì)算尺寸需要的目標(biāo)兩個(gè)面后,需要對(duì)每個(gè)面的 4 個(gè)頂點(diǎn)按縱坐標(biāo) y 為序進(jìn)行排序,再根據(jù)這4個(gè)點(diǎn)進(jìn)行余弦值求解以及實(shí)際邊長(zhǎng)計(jì)算。

      2.5 手動(dòng)輔助

      面對(duì)一些質(zhì)量很差的圖片,在自動(dòng)的3D和2D都無法識(shí)別時(shí),就需要引入人工干預(yù)。干預(yù)方法很簡(jiǎn)單,用戶只需指定要識(shí)別的物體關(guān)鍵頂點(diǎn)即可。

      本文在PC機(jī)上對(duì)一些核心算法進(jìn)行了優(yōu)化和改進(jìn),最終目標(biāo)是部署到Android平臺(tái)上運(yùn)行。從一個(gè)平臺(tái)遷移到另一個(gè)平臺(tái),需要考慮很多因素。其中,核心算法都是基于OpenCV庫,而OpenCV雖然提供Java接口,但Java接口是OpenCV2.3版本以后才有,穩(wěn)定性和提供的支持不夠完善。支持最好、效率最高的還是C/C++代碼,而Android系統(tǒng)的前端是Java語言,目前很成熟、靈活,平臺(tái)移植需要在不影響效率的情況下進(jìn)行。

      采用Java的JNI接口機(jī)制(java native interface)。該機(jī)制提供了C/C++原生代碼和Java代碼的混合編程機(jī)制,與本文所需一致。 選好接口后,要考慮數(shù)據(jù)的傳遞。數(shù)據(jù)在不同模塊間傳遞,然后處理,數(shù)據(jù)結(jié)構(gòu)的選取也影響程序運(yùn)行效率。 在Android前端,通過拍照或選圖,初始化一個(gè)位圖對(duì)象,然后將位圖的像素?cái)?shù)據(jù)以數(shù)組形式通過JNI傳遞給后臺(tái)的C/C++模塊,C/C++模塊再以這個(gè)像素?cái)?shù)組重構(gòu)出一個(gè)圖片的Mat對(duì)象,然后按照PC端的預(yù)處理、檢測(cè)、識(shí)別、校正等操作,將目標(biāo)尺寸以數(shù)組形式返回,在前端顯示。

      為了便于后續(xù)功能拓展及更好地追蹤后臺(tái)模塊處理情況,在返回值數(shù)組加了一個(gè)小技巧,保證正常情況下可返回尺寸。如果出現(xiàn)異常,如參照物識(shí)別、目標(biāo)識(shí)別失敗等,會(huì)返回錯(cuò)誤標(biāo)志及已經(jīng)成功完成的操作,這樣前端可以在了解錯(cuò)誤原因的同時(shí)獲取已經(jīng)成功的操作,不必重復(fù)原來的過程,提高了效率。

      3 結(jié)語

      通過以上測(cè)試和結(jié)果分析,本文方法在大多數(shù)場(chǎng)景下

      可以正確快捷地實(shí)現(xiàn)平面及立體目標(biāo)物的識(shí)別和尺寸計(jì)算(見圖4)。目標(biāo)尺寸的計(jì)算結(jié)果精確到小數(shù)點(diǎn)后4位,識(shí)別和計(jì)算過程簡(jiǎn)捷,實(shí)現(xiàn)了開發(fā)簡(jiǎn)便快捷手機(jī)端APP的目標(biāo)。

      在預(yù)處理、檢測(cè)識(shí)別、校正等關(guān)鍵步驟中,本文算法優(yōu)化處理效果明顯。即使在使用 JNI 的接口機(jī)制下,手機(jī)移動(dòng)端的響應(yīng)速度仍然較快。

      參考文獻(xiàn):

      [1] J R COZAR, N GUIL, E L ZAPATA.Detection of arbitrary planar shapes with 3D pose[M]. Elsevier Image and Vision Computing , 2001(19): 10571070 .

      [2] DMITRY LAGUNOVSKY,SERGEY ABLAMEYKO. Fast line and rectangle detection by clustering and grouping[EB/OL].http://link.springer.com/chapter/10.1007%2F3540634606_156.

      [3] ZI QIANG LI.Generalized hough transform:fast detection for hybrid multicircle and multirectangle[C].Proceedings of the 6th World Congress on Intelligent Control and Automation, Dalian,China,2006(6):2123.

      [4] JUNG C R,SCHRAMM R. Rectangle detection based on a windowed hough transform[C].Computer Graphics and Image Processing, Proceedings, 2004.

      [5] BAZIN J C,INSO KWEON,DEMONCEAUX, et al. Rectangle extraction in catadioptric images[C].Computer Vision, ICCV 2007, IEEE 11th International Conference,2007.

      [6] GEETHA KIRAN ,MURALI.Automatic rectification of perspective distortion from a single image using plane homography[J]. International Journal on Computational Sciences & Applications (IJCSA), 2013(10):35.

      [7] ZHENGYOU ZHANG. Weak perspective projection[Z].Microsoft Research, Redmond, WA, USA.

      [8] DENNIS PARK,DEVA RAMANAN,CHARLESS FOWLKES.Multiresolution models for object detection[C].Lecture Notes in Computer Science,2010(6413):241254.

      [9] 袁國棟, 秦開懷, 孫漢秋. 逆向投影點(diǎn)繪制算法[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2005 (2):25142521.

      [10] 鄭全新, 楊明強(qiáng), 李文輝. 基于消失線的長(zhǎng)方體表面透視變形校正方法[J]. 計(jì)算機(jī)工程,2013(5):162169.

      [11] 苗立剛. 基于形態(tài)學(xué)的文檔圖像透視校正算法[J]. 光電子激光,2009(10):112116.

      [12] 代勤, 王延杰, 韓廣良. 基于改進(jìn)霍夫變換和透視變換的透視圖像矯正[J]. 中國液晶與顯示,2012(6):2629.

      [13] GARY BRADSKI ,ADRIAN KAEBLER. Learning OpenCV [M]. 中文版.北京:清華大學(xué)出版社,2009.

      [14] Nash.Automatic perspective correction for quadrilateral objects[EB/OL].http://opencvcode.com/tutorials/automaticperspectivecorrectionforquadrilateralobjects/.

      (責(zé)任編輯:杜能鋼)

      猜你喜歡
      邊緣檢測(cè)圖像識(shí)別
      基于Resnet-50的貓狗圖像識(shí)別
      高速公路圖像識(shí)別技術(shù)應(yīng)用探討
      圖像識(shí)別在物聯(lián)網(wǎng)上的應(yīng)用
      圖像識(shí)別在水質(zhì)檢測(cè)中的應(yīng)用
      淺談模式識(shí)別在圖像識(shí)別中的應(yīng)用
      基于多組合內(nèi)容的圖像識(shí)別機(jī)制
      乌鲁木齐市| 政和县| 桂林市| 邹平县| 阜平县| 嘉黎县| 连山| 鄢陵县| 湘潭县| 宣威市| 恩施市| 安阳市| 桂东县| 肃宁县| 汤原县| 金塔县| 郴州市| 松原市| 嫩江县| 靖宇县| 隆德县| 浦北县| 盱眙县| 安平县| 武胜县| 射阳县| 靖边县| 冀州市| 原平市| 鞍山市| 万荣县| 塔河县| 永靖县| 青田县| 柯坪县| 疏附县| 兴海县| 木里| 华亭县| 汝州市| 长宁县|