新聞中心

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

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

        作者: 時間:2010-04-01 來源:網絡 收藏

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

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


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

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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 岑巩县| 特克斯县| 北宁市| 新宁县| 徐水县| 泰和县| 福清市| 团风县| 乳山市| 上饶市| 沭阳县| 新竹市| 柳江县| 嵊州市| 石阡县| 平乐县| 北辰区| 沁阳市| 青河县| 忻州市| 商水县| 离岛区| 宁武县| 进贤县| 博湖县| 屯留县| 嘉祥县| 奇台县| 平乡县| 土默特右旗| 台安县| 凉城县| 新闻| 库车县| 固原市| 印江| 荔波县| 兴宁市| 中方县| 清水河县| 凤山市|