<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于DSP的PDF417快速解碼終端的設計與實(shí)現

基于DSP的PDF417快速解碼終端的設計與實(shí)現

作者: 時(shí)間:2010-04-01 來(lái)源:網(wǎng)絡(luò ) 收藏

條碼方向的提取決定了膨脹運算所使用的結構體。由于對圖像直接進(jìn)行膨脹運算很容易受噪聲的影響,算法首先將圖像區域分為水平、垂直、45°和135° 4種大致方向,而后提取條碼的方向并根據條碼不同的方向使用4種不同的膨脹結構體。這樣有效防止了與條碼接近的其他文字等背景由于使用各向同性的結構體進(jìn)行膨脹運算而連接到條碼中。方向提取先得到圖像橫向和縱向的梯度信息,而后以適當的閾值對得到的梯度圖二值化并進(jìn)行比較。認為含有較多邊界信息的圖指示的方向為條碼的走向。如果兩圖邊界的差值在一定范圍內,則用同樣的方法檢測45°和135°兩個(gè)方向。
膨脹算法將條碼連成一個(gè)緊密的連通區域,之后要進(jìn)行連通域的標記以定位條碼區域。算法包含3個(gè)步驟:
(1)如果當前點(diǎn)A是前景點(diǎn)并且其前一點(diǎn)未被標記,則認為A是一個(gè)連通域的外輪廓點(diǎn);跟蹤這個(gè)外輪廓,并將所有外輪廓點(diǎn)都標記為與A屬于相同的連通域。
(2)如果當前點(diǎn)A下方的點(diǎn)是背景點(diǎn)且A的前一點(diǎn)已被標記,則認為A是連通域內輪廓點(diǎn);跟蹤這個(gè)內輪廓,并將所有內輪廓點(diǎn)都標記為與A屬于相同的連通域。
(3)如果前景點(diǎn)A的前一點(diǎn)已被標記且不屬于情況1和2,則將A標記為與其前一點(diǎn)屬于相同的連通域。
邊界的跟蹤是通過(guò)搜索像素點(diǎn)8臨域的,用順時(shí)針排布的1~7分別代表8臨域點(diǎn),搜索方向更新公式為:

系統采用的連通域標記法舍棄了傳統的二次標記方式,而采用跟蹤連通域外輪廓的方法,只需要對圖像進(jìn)行一次掃描,因此具有更快的速度。
3.3 條碼的精確定位
本文提出時(shí)間復雜度較低的邊緣跟蹤算法,精確定位了條碼的4個(gè)頂點(diǎn),為條碼傾斜和幾何形變的校正提供條件。圖5給出了精確定位算法流程圖。


以搜索左上角頂點(diǎn)為例。系統用參考點(diǎn)數組記錄搜索到的條碼起始符或結束符的邊緣走向,步進(jìn)點(diǎn)數組沿起始結束符黑色邊界方向逐點(diǎn)步進(jìn)。若步進(jìn)過(guò)程中某一時(shí)刻,步進(jìn)點(diǎn)數組與參考點(diǎn)數組夾角超過(guò)45°,說(shuō)明步進(jìn)點(diǎn)數組已步進(jìn)到條碼邊緣,則將步進(jìn)點(diǎn)數組中心點(diǎn)位置確定為條碼的左上頂點(diǎn)。用類(lèi)似的方法搜索,可得到條碼的其他3個(gè)頂點(diǎn)。
條碼的4個(gè)頂點(diǎn)確定以后,再經(jīng)過(guò)旋轉變換、錯切變換和透視變換,將幾何形變的不規則四邊形條碼校正為矩形條碼。條碼的旋轉使不再局限于水平和垂直的條碼,的全方位。
3.4 條碼分層及碼字讀取
是堆疊式條形碼,需要確定條碼的層次以進(jìn)行逐行碼字的讀取。確定條碼層次的步驟如下:
(1)用Sobel邊緣檢測算子作用于圖像,提取圖像邊界。
(2)將得到的分層界限進(jìn)行水平投影,記錄投影點(diǎn)數目p(i)。
(3)隔行差分。按照dif(i)=p(i)-p(i-2)計算第i行的投影差分值。若當前行投影差分值大于零,而其下一行差分值小于零,則認為該行為分層界限。
(4)偽邊界去除。將投影高度小于投影峰值1/4的邊界去除,以消除由噪聲產(chǎn)生的偽邊界。
得到條碼的層邊界后,系統采用層內投影并判斷投影高度的方法來(lái)讀取每層條碼的條空信息。實(shí)踐證明該方法具有較高的正確率。
用條空的寬度除以單位模塊的寬度得到條碼的條空寬度序列,如:81111113….31111334….711311121。單位模塊寬度求解方法為:

其中,Wm為單位模塊寬度,Wl為層寬,n為一層條空總數。
最終譯碼采用查表的方式將條空序列轉換為碼字序列。碼字序列經(jīng)過(guò)檢錯與糾錯后,按照3種壓縮模式編碼的反方向進(jìn)行譯碼,最終得到條碼的原始數據。
4 實(shí)驗結果
對采集到的28 000幅、分辨率為320×480的圖像進(jìn)行測試。測試結果表明,本對PDF417條碼的識別率可達99.76%,識別碼正確率為100%,解碼速度達10次/s以上,具有國內領(lǐng)先的技術(shù)水平。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>