999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Symbian嵌入式平臺的DM碼識別系統

2010-09-25 02:58:18史秉政
單片機與嵌入式系統應用 2010年2期

史秉政

(南京航空航天大學 信息科學與技術學院,南京 210016)

引 言

隨著智能手機處理能力及手機攝像頭分辨率的快速提高,手機二維條碼的應用也越來越廣。手機既可以作為二維條碼的載體,比如用戶可以接收到服務商發送來的二維條碼,再到實際消費場所以此作為憑證,進行消費;也可以作為二維條碼的解碼設備,對印刷在商品包裝上的二維條碼進行解碼識別,得到商品相應的信息。目前,二維條碼在國外一些發達國家已經有了很廣泛的應用,在我國還處于發展階段。中國移動已經正式推出了二維條碼的業務,可以預見,手機二維條碼必將在我國發展成為重要的移動增值業務。

DM碼(DataMatrix Code),原名Datacode,是由美國國際資料公司(International Data Matrix)于1989年發明的。DataM atrix二維條碼是一種矩陣式二維條碼,其發展構想是希望在較小的條碼上存入更多的數據。DataMatrix二維條碼的最小尺寸是目前所有條碼中最小的,特別適合于小零件的識別,以及直接印刷在實體上。

DataMatrix采用了復雜的糾錯碼技術,使得該編碼具有超強的抗污染能力,即使編碼部分破損,也不會影響讀出全部信息。它有兩種類型,即ECC 000-140和ECC200。ECC 000-140具有幾種不同等級(ECC 050、ECC 080、ECC 100、ECC 140)的卷積錯誤糾正功能 ;而ECC 200是通過Reed-Solomon糾錯算法實現糾錯功能。對于新的應用,推薦使用ECC 200,本文也以 ECC 200為對象。

本文實現了基于Symbian平臺的DM碼的識別系統。測試表明,本系統可以正確、快速地識別DM 碼。

1 DM碼符號簡介

每個DataMatrix二維條碼符號由規則排列的方形模組構成的資料區組成,資料區的四周由定位圖形(Finder Pattern)所包圍,定位圖形的四周則由空白區包圍,資料區再以排位圖形(alignment pattern)加以分隔。

定位圖形是資料區域的一個邊界,為一個模組寬度。其中兩條鄰邊為暗實線,主要用于限定物理尺寸,定位和符號失真。另兩條鄰邊由交替的深色和淺色模組組成,主要用于限定符號的單元結構,但也能幫助確定物理尺寸及失真,如圖1所示。

圖1 Data Matrix圖形結構

2 DM碼識別與解碼的基本過程

識別過程是對DM碼進行解碼的前期步驟,其基本步驟如下:

①圖像灰度化。灰度化有兩種常見的算法:第1種是標準灰度化計算公式W=0.30R+0.59G+0.11B,第2種是最大值灰度化公式W=max(R,G,B)。設某像素的RGB的彩色各分量值為(R,G,B),其中0≤R,G,B≤255,W為灰度轉換結果,max用于求取最大值。考慮到嵌入式設備得到的待解碼圖像多為黑白顏色,為了能夠以更快的速度進行灰度化,并減少系統的運算量,這里采用第2種方法的改進公式W=G來進行灰度化。

②圖像濾波。條碼圖像的噪聲一般來自于嵌入式設備的光學采集系統。這種噪聲是滿足泊松分布的椒鹽噪聲,可以用適當大小的中值濾波來進行處理。

③圖像增強。由于圖像可能存在高光區、陰影等缺陷,可以在二值化之前進行同態濾波,以此將圖像亮度范圍壓縮,并將圖像對比度增強,可以得到比較滿意的圖像增強效果,有利于二值化操作。

④灰度圖像二值化處理。這里使用Ostu算法[1]計算出一個全局閾值T1,以此作為二值化的閾值。

⑤在得到的二值圖像上進行對DM碼定位圖形的檢測,定位圖形就是左邊與下邊的直線連在一起形成的“L”邊。關鍵是對直線的檢測。

首先通過Sobel算子,將二維條碼圖像進行邊緣提取。然后根據Freeman準則進行直線檢測。

Freeman直線檢測的3條準則如下:

a.一條數字直線的8鄰域鏈碼中最多包括兩個方向,其中一個為主方向。它是決定直線方向的主要因素。

b.這兩個方向的鏈碼值相差1(mod8)。

c.主方向上鏈碼值相同的連續像素組成一個線段子元,除去第一個和最后一個線段子元,其余各線段子元的長度至多相差一個像素。

對檢測到的直線段,采用以下準則判斷是否是條碼的“L”定位圖形:

a.兩直線段夾角在90°附近時判斷兩線段夾角準則如下:設線段1中起始像素坐標為(X1,Y1),終止像素坐標為(X2,Y2);線段2中起始像素坐標為(X3,Y3),終止像素坐標為(X4,Y4),則線段1的斜率K1=(Y2-Y1)/(X2-X1),線段 2的斜率 K2=(Y4-Y3)/(X4-X3),兩線段之間的偏轉角度θ=arctg(|(K2-K1)/(1+K2K1)|)。

由于存在透視效果,若|90°-θ|≤α(α為閾值,一般α∈[0,20°])成立,則兩線段近似認為是垂直線段。

b.DataMatrix條碼的“L”定位圖像有交點,因此判斷兩直線是否具有相同或相近交點。

c.由于DataMatrix條碼的特點,一般長寬比不超過3,因此判斷兩直線段長度比在1~3之間。

將符合以上準則的直線段作為候選“L”邊,過濾其他不符合條件的直線段。

⑥通過得到DM碼定位圖形,可以將DM碼旋轉至水平位置,并將DM碼分割出來。

通過以上步驟完成DM碼的識別。

DM碼解碼基本步驟如下:

a.識別格式信息,完成對格式信息模塊的糾錯和識別。

b.識別版本信息,確定DM 碼的版本。

c.消除掩膜。

d.根據模塊排列規則,識別符號字符,得到信息和糾錯碼字。

e.用得到的糾錯碼字對識別得到的信息進行錯誤檢測,如發現錯誤則進行糾錯。

f.按照所使用的模式譯碼得出數據字符,并輸出結果。

3 DM碼識別系統在Symbian平臺上的實現

3.1 Symbian操作系統介紹

目前,主流的智能手機操作系統有3種:Symbian、Windows Mobile和Linux。其中Symbian以其平臺的開放性、較低的授權費用、眾多廠商的支持、對硬件要求低、第三方軟件豐富等優勢,成為智能手機市場上應用最為廣泛的產品。Symbian是一個實時、多任務的純32位操作系統,具有功耗低、內存占用少等特點,非常適合手機等移動設備使用,經過不斷完善,可以支持GPRS、藍牙、SyncML以及3G技術。最重要的是,它是一個標準化的開放式平臺,任何人都可以為支持Symbian的設備開發軟件。Symbian操作系統融合了許多功能強大、成熟穩定的技術,其中包括豐富的應用引擎、移動電話技術、安全性、多媒體、支持多種應用界面、通信協議、軟件開發(Java和C++)等。

根據不同的終端產品在屏幕尺寸、用戶輸入方式等方面的差異,Symbian給出了用戶界面風格的3種參考設計——Pearl、Crystal和Quartz,最終演變為Symbian上的3種主要平臺——Series 60、Series 80和 UIQ。Series 60是智能手機中應用最廣泛的系統版本,擁有最多第三方軟件或游戲的界面。Series 80針對屏幕分辨率為640×200像素、采用標準鍵盤輸入的高端智能手機。UIQ針對采用筆式輸入(觸摸屏)的智能手機。本系統是在基于Symbian Series 60 3rd FP2(第3版Features Pack 2)平臺的手機上實現的。

3.2 圖像采集

在手機移動平臺上進行DM碼解碼處理,圖像采集獲取是重要的第一步。在Symbian Serial 60平臺上,使用CCamera類對攝像頭的操作進行了封裝,提供了與攝像頭操作有關的API,并提供了一個MCameraObserver的類來通知系統攝像頭操作的各種關鍵事件的完成,必須實現這個類的所有純虛方法,以供系統在一個事件完成的時候進行回調。McameraObserver類與CCamera類是觀察者設計模式(observer designed Pattern)在Symbian中的具體體現。具體啟動攝像頭取景器步驟如下:

首先,創建一個CCamera類的實例:

這樣以后就可以通過iCamera來實現對攝像頭的操作了。然后,取得攝像頭的使用權,這可以通過函數iCamera->Reserve()來實現。這是個異步函數,在取得攝像頭使用權成功后,系統會自動調用 MCameraObserver::ReserveComplete()方法。在這個回調函數中,就可以進行下一步操作,對攝像頭進行上電啟動,通過函數iCamera->PowerOn()來實現,同樣這也是一個異步函數。在對攝像頭上電完成后,系統接著就會自動調用MCameraObserver::PowerOnComplete()這個回調函數,這時在這個函數中就可以啟動取景器了,具體函數為iCamera->StartViewFinderBitmapL()。當取景器得到一幀圖像的時候,系統就會自動的周期性的調用MCameraObserver::ViewFinderFrameReady(CFbsBitmap aFrame),而放在aFrame這個參數中的圖像就是得到的要進行處理的圖像,在這個函數中完成圖像的解碼。這樣就完成了圖像的采集工作。

3.3 自動對焦

一般的DM碼是印刷在商品的包裝上的,這就決定了DM碼的面積不能太大。另外手機在取景的過程中,操作者可能會有抖動的現象,這兩點原因就給DM碼的圖像采集造成了麻煩,可能導致攝像頭得到的圖像很不清楚,不利于后期的解碼。對于這一問題,如果攝像頭支持自動對焦(auto focus),那就可以用自動對焦來使攝像頭得到的圖像自動變得清晰。

自動對焦是作為Symbian開發平臺SDK的擴展庫(extension library)中的一個功能,可由開發者自行將相應的頭文件和庫文件添加到SDK中。具體使用如下:

首先包含頭文件#include<CCamAutoFocus.h>和在Symbian工程的MMP文件中鏈接庫文件LIBRARY Cam-AutoFocus.lib。然后構造一個CCamAutoFocus類的實例,iAutoFocus=CCamAutoFocus::NewL(iCamera),這樣就可以用iAutoFocus來進行自動對焦的相應操作。

對自動對焦進行操作需通過以下步驟:

①初始化:iAutoFocus->InitL(*this)。

②開始自動對焦:iAutoFocus->AttemptOptimisedFocusL()。

③取消自動對焦:iAutoFocus->Cancel()。

④關閉:iAutoFocus->Close()。

對于初始化和開始自動對焦這兩個步驟,都有相應的回調函數,CCamEngine ::InitComplete()和 CCamEngine::OptimisedFocusComplete(),以便在完成相應動作的時候,開發者作一些相關操作。

通過自動對焦,當用戶將手機攝像頭在一定距離內對準DM碼時,可以看到攝像頭的取景器自動變得清晰了,而這對于解碼來說非常重要。

在本項目中,為了方便用戶,還采用了定時器的功能,即通過設定時間間隔,每隔一段時間就自動對焦一次,這樣更能保證采集圖像的清晰程度。

3.4 清除棧和兩階段構造

Symbian平臺是專門為嵌入式移動設備而設計的操作系統,而手機這一移動嵌入式設備的內存資源非常有限,而且通常要連續運行很長時間卻很少重啟。這兩個特點就使得內存泄漏在Symbian系統上變成了非常重要的問題。對于這個問題,Symbian系統采用清除棧和兩階段構造來解決[2]。

清除棧(在e32base.h中定義CleanupStack)是一個特殊棧,它對于Symbian OS資源管理至關重要。它在本質上是一種用于保護在異常退出發生時清除所有資源,從而不會產生任何內存泄漏的方式。

其基本思想是,在調用可能異常退出的函數前,使用PushL()將可能泄露的內存指針推入清除棧。如果真的發生異常,就自動刪除推入棧上的指針所指向的內存空間;如果沒有發生異常,就使用Pop()方法從棧上移除指針。這樣就可以避免因為發生異常而導致的內存泄露。

兩階段構造就是建立在清除棧基礎上的一種安全的構造對象的方法。

一般PC平臺的程序通過new方法來進行構造的對象,會自動調用相應的構造函數,但如果在構造函數中發生了異常退出,那么這個對象前期所申請的內存就會產生泄露。兩階段構造就是用于解決這一問題的。

3.5 版本兼容

本項目基于Symbian Serial 60 3rd FP1平臺,而目前已經有了Symbian Serial 60 3rd FP2和Symbian Serial 60 5th(第5版)。這2個版本和本項目的平臺版本的一個重要區別,就是對攝像頭的操作。為了與這兩個版本保持兼容,需要將對攝像頭操作的CCamera類換成CCameraEngine類。這個類同樣也是一個SDK擴展功能,使用時要包含頭文件#include"CamEngine.h"和鏈接庫LIBRARY camerawrapper.lib。

本系統在NOKIA N82和NOKIA N95上進行了測試,可以正確、快速地進行解碼;在NOKIA 5800(Symbian S60第五版)上進行了兼容性測試,也得到了很好的效果。

4 結 論

本文通過介紹DataMatrix二維條碼的基本原理和識別解碼的基本步驟,設計并實現了一個基于Symbian平臺的DataMatrix的識別系統。詳細介紹了Symbian平臺攝像頭的應用和自動對焦的特點,并對不同的Symbian平臺版本之間的代碼兼容作了說明。

本系統可以準確、快速地識別二維條碼。還可以加入驗證功能,即通過網絡連接或發送短信的方式,將識別所得的二維條碼所包含的真偽信息發送的服務器,在服務器端進行防偽驗證工作,并將驗證結果返回給用戶。此功能目前已經實現,這也是本系統的一項擴展應用。可以預見,通過使用手機識別二維條碼來獲取信息的應用前景將會非常廣泛。

[1]高木干雄,下田陽久.圖像處理技術手冊[M].北京:科學出版社,2007.

[2]Leigh Edwards,Richard Barker.Serial 60應用程序開發[M].周良忠,譯.北京:人民郵電出版社,2005.

[3]劉寧鐘,楊靜宇.基于傅里葉變換的二維條碼識別[J].中國圖像圖形學報,2003,8(8):877-882.

[4]劉寧鐘,楊靜宇.基于波形分析的二維條碼識別[J].計算機研究與發展,2004,41(3):463-469.

[5]章毓晉.圖象處理和分析[M].北京:清華大學出版社,1999.

[6]王新梅,肖國鎮.糾錯碼——原理與方法[M].西安:西安電子科技出版社,2001.

[7]史冊,徐勝榮,荊仁杰,等.實時圖像處理中一種快速的直線檢測算法[J].浙江大學學報.1999(9).

主站蜘蛛池模板: 一级香蕉人体视频| 91av国产在线| 亚洲另类色| 亚洲男人的天堂视频| 国产亚洲欧美在线中文bt天堂| 亚洲不卡无码av中文字幕| 91视频99| 成人精品区| 欧洲熟妇精品视频| 亚洲首页国产精品丝袜| 凹凸国产分类在线观看| 国产精品视屏| 成人毛片免费观看| 亚洲无线视频| 国产一区二区三区在线观看视频| 亚欧成人无码AV在线播放| 99视频精品全国免费品| 91精品啪在线观看国产| 国产h视频免费观看| 免费在线观看av| 欧美日本二区| 国产乱肥老妇精品视频| 巨熟乳波霸若妻中文观看免费| 国产人妖视频一区在线观看| 久久国产V一级毛多内射| 99精品高清在线播放| 亚洲欧美人成人让影院| 无码中文字幕加勒比高清| 亚洲综合日韩精品| 亚洲黄色高清| www.亚洲一区| 亚洲无卡视频| 亚洲三级影院| 国产精品九九视频| 亚洲国产精品一区二区高清无码久久| 黄色三级网站免费| 伊人福利视频| 97色伦色在线综合视频| 国产另类视频| a毛片免费看| 国产在线视频欧美亚综合| 婷婷丁香在线观看| 91久久精品日日躁夜夜躁欧美| 免费在线一区| 久久99热66这里只有精品一 | 精品伊人久久大香线蕉网站| 波多野结衣第一页| 欧美啪啪精品| 久久久精品久久久久三级| 亚洲一区黄色| 国内自拍久第一页| 国产成人喷潮在线观看| 日韩一级二级三级| 色九九视频| 日韩小视频在线播放| 伊人狠狠丁香婷婷综合色| 国产又粗又爽视频| 999精品色在线观看| 国产成人做受免费视频| 在线观看免费人成视频色快速| 激情综合图区| 日韩中文欧美| 国产成人a毛片在线| 毛片a级毛片免费观看免下载| 波多野衣结在线精品二区| 国产无码精品在线| 亚洲欧洲自拍拍偷午夜色| 九月婷婷亚洲综合在线| 国产黄色片在线看| 天堂网亚洲综合在线| 亚洲码在线中文在线观看| 亚洲三级电影在线播放| 丁香六月激情综合| 亚洲精品777| 91麻豆国产视频| 中文字幕亚洲精品2页| 国产综合色在线视频播放线视 | 影音先锋丝袜制服| 日韩国产综合精选| 国产精品人成在线播放| 在线一级毛片| 国产精品视频第一专区|