【正文】
投影后只找到一個邊界時,假設投影后只找到了左邊界,那么以左邊界為起始,向右移動38個像素作為右邊界。在分割時需要用到每個字符的像素,由于沒有很好的條件,我采用截圖的方式,粗略獲得單個字符的像素為3664,而DistributionX[x]DistributionX[x+1]9) and (DistributionX[x1]DistributionX[x]=9里的9也僅僅是針對此圖像測得的數(shù)值,這個過程以此找到波谷,進而求得分割點。 end。 i:=i+1。 i:=1。 end。 end。 // end。 for y:=2 to do //投影 begin ptr1:=[y]。 // :=inttostr()。 bmp1:= 。 for Y:=0 to 500 do begin DistributionX[Y]:=0。 for i:=0 to 500 do begin charstart[i]:=0。 for X:=0 to 500 do begin DistributionX[X]:=0。begin i:=1。 PlateRect1,PlateRect2: trect。 x,y,i,j,charwidth,min1,n:Integer。 CharStart,CharEnd: array[0..500] of integer。VAR DistributionX: array[0..500] of integer。對圖像進行分割后的圖像如下圖所示: 二值化后的圖像 反色后的二值化圖像 字符分割后的圖像 由于我在設計中取圖的時候直接對圖像進行反色處理了,所以獲得的圖像比較清晰,再加上之前對圖像的預處理,所以可以很清楚的畫取分割線。 (5) 基于前端預測識別的分割方法。 (3) 基于區(qū)域聚類的分割。漢字中因為存在相當一部分的字符是由兩個或兩個以上的多個連通域組成的,所以比較少在切分是采用連通域的方法。但是,這種方法對于互相交錯粘連的字符的分割缺無能為力,并且抗干擾性比較差。第二類通過分析連通域的外形輪廓特征進行合并分割。合并和分割操作中應用的算法主要有兩類:第一類通過分析連通域的外接矩形的特性及位置關(guān)系進行合并分割?;谧址B通域的分割是對候選字符串區(qū)域檢查各個像素與其相鄰像素的連通性,將不同的連通區(qū)域進行不同的標記,再將不同的連通區(qū)域提取出來,則是候選字符區(qū)域??紤]到二值圖像丟失掉的很多信息,而且可能會造成字符粘連模糊或斷裂的缺陷,對灰度圖像的直接處理已經(jīng)有人開始研究,提出在灰度圖像中用投影輪廓和拓撲特征來決定分割區(qū)域,找到的是非線性的分割路徑,此方法適合于在一個文檔中存在各種語言的字符、各種符號的情況,而且它的分割路徑是非線性的,算法較為復雜。利用數(shù)學模型等方法進行處理,這主要是應用于本文識別。傳統(tǒng)的字符分割方法可以歸納為以下三類:直接的分割法,基于識別基礎上的分割法,自適應分割線聚類法,直接的分割法簡單,但它的局限是分割點的確定需要較高的準確性;基于識別結(jié)果的分割是把識別和分割結(jié)合起來,但是需要識別的高準確性,它根據(jù)分割和識別的耦合程度又有不同的劃分:自適應分割線聚類法是要建立一個分類器,用它來判斷圖像的每一列是否是分割線,它是根據(jù)訓練樣本來進行自適應的神經(jīng)網(wǎng)絡,但是對于粘連的字符是很難訓練的。為了實現(xiàn)更好的分割,有關(guān)景物的總體知識和先驗信息是很有用的。在我所查閱的資料中,遇到過與本文原理基本一樣的課題研究,比如車牌的識別技術(shù),需要將整個汽車圖像獲取,然后從中運用圖像分割技術(shù)把上面的車牌圖像提取出來,然后再運用字符分割技術(shù)把車牌上的數(shù)字分割出來進行識別,而我研究的數(shù)字水表由于是整體固定的,所以在獲取圖像的時候,便可以直接把攝像頭直接固定在水表的數(shù)字區(qū)域,然后直接對處理后的圖像進行字符分割。在此之后對圖像進行了一定處理,比如圖像腐蝕、圖像膨脹、邊緣檢測、反色等處理,目的都是更好的獲得清晰的二值化圖像,對后面的字符分割奠定了基礎。在圖像去噪階段,首先分析了圖像噪聲的產(chǎn)生以及分類,通過對比選擇了中值濾波法對圖像進行去噪。end。 // (TestBMP)。f:/39。 end。 p[x * 3 + 2] := not p[x * 3 + 2]。 for X := 0 to do begin begin p[x * 3] := not p[x * 3]。 X, Y: Integer。具體圖像反色處理的源程序如下:procedure (qubmp:tbitmap)。如物體連通域用黑色來表示,而二值化后的物體連通域圖像可能是白色的,而背景是黑色的,這是應手工選取圖像的反色處理或由程序根據(jù)背景和物體連通域兩種顏色的數(shù)量所占比例而自動選擇是否選取圖像的反色處理。end。 (TestBMP)。 end。p[x*3+2]:=0。 end else begin p[x*3]:=0。p[x*3+1]:=255。 for x:=0 to do begin //首先將圖像灰度化 Gray:=Round(p[x*3+2]*+p[x*3+1]*+p[x*3]*)。begin (WillbeChangedBmp)。var p:PByteArray。動態(tài)閾值是一種自適應的二值化方法,它利用了像素自身及其鄰域灰度變化特征,能夠更好地突出背景和目標的邊界,分割效果較好。局部閾值法是由考察點像素灰值和此像素鄰域的局部灰值特性來確定像素閾值的,此法能適應較為復雜的情況,但它運算時間開銷大,而且在某些情況下會產(chǎn)生一些失真。典型的全局閾值方法包括Ostu方法、最大熵方法等全局閾值法,這些算法簡單,對于背景和目標明顯分離、直方圖分布呈雙峰的圖像分割效果良好。二值化的閾值選取主要分為以下幾種:(1)全局閾值。水表圖像的二值化是整個字符識別過程中的關(guān)鍵步驟,它直接關(guān)系到后續(xù)環(huán)節(jié)中字符分割的準確性以及識別的正確率。end。 ChangedBmp .Assign (TestBMP) 。 end。p[3*x+1]:byte(Gray)。 for x:=0 to do begin //采用YUV與RGB顏色空間變換的公式,即Y=++ Gray:=Round(p[x*3+2]*+p[x*3+1]*+p[x*3]*)。begin (WillbeChangedBmp)。var p:PByteArray。第二種方法是根據(jù)在YUV的顏色空間中,Y的分量的物理意義是點的亮度,由該值反映亮度等級,根據(jù)RGB與YUV顏色控件的變化關(guān)系可建立亮度Y與R、G、B三個顏色分量的對應關(guān)系:Y=++,以這個亮度值表達圖像的灰度值。圖像的灰度化處理可用兩種方法來實現(xiàn)。彩色圖像中的每個像素的顏色有R、G、B三個分量決定,而每個分量有255種值可取,這樣一個像素點可以有1600多萬種顏色的變化范圍。 下面對水表去噪前后的圖像進行比較(由于獲得的水表圖像的清晰度有限,所以比較原圖像的噪聲情況不理想,此圖像是在二值化情況下進行比較) 去噪前的水表圖像 去噪后的水表圖像 由分析圖像可以知道,去噪前由于水表的數(shù)字部分圖像存在著椒鹽噪聲,使得數(shù)字周圍有小點,模糊不清,經(jīng)過去噪之后,去除了數(shù)字周圍的小點,使得圖像較去噪前顯得清晰,有助于后面的字符分割。 圖像噪聲的產(chǎn)生和分類 噪聲主要在數(shù)字圖像的獲取和傳輸中產(chǎn)生,可以理解為妨礙人的視覺器官或系統(tǒng)傳感器對所接收圖像源信息進行理解或分析的各種因素,一般是不可預測的隨機信號,噪聲對圖像處理十分重要,影響圖像處理的輸入、采集、處理的各個環(huán)節(jié)以及輸出結(jié)果的全過程。他可以顯示比較豐富的提示信息,還可以獲取用戶的響應。Abuttons:TmsgDlgButtons。(3)MessageDlg函數(shù)MessageDlg的定義如下:functionMessageDlg((constMsg:string。params:arrayofconst)。其中有提示信息和一個OK按鈕。2.4.7 信息對話框(1)ShowMessage過程ShowMessage的定義如下:Procedure showMessage(const Msg:string)。2.4.4 常用圖像類組件(1)Image組件:為圖像顯示組件,顯示圖像格式分為BMP、WMF和ICO;(2)ImageList組件:為圖像列表組件,是對圖像進行管理的不可視組件。2.4.3 常用列表類組件(1)ListBox組件:這列表框組件,可以顯示一系列字符串,用戶可以選中其中的一個或多個,多用于選項較多的情況;(2)ComboBox組件:為組合框組件,由一個編輯框和一個下拉式列表框組成,可以從多個列表條目中選擇一個。2.4.1 常用文本類組件(1)Label組件:用于在窗口上顯示文字;(2)Edit組件:用于顯示、編輯單獨的一行文本;(3)Memo組件:用于顯示、編輯多行文本;(4)RichEdit組件:用于顯示、編輯具有豐富文本格式的文件。2.4 常用組件組件所對應的類為Tponent,所有的組件都是由這個類派生來的。Component菜單:用于為一個組件創(chuàng)建一個單元文件、包等操作;Project菜單:用于項目管理、當前工程設置等操作;Edit菜單:用于編輯組件等操作;2.3 常用菜單提供Delphi集成開發(fā)環(huán)境中開發(fā)應用程序所需要的各種功能當開發(fā)人員在窗體設計器中進行編輯時,Delphi在后臺自動為正在窗體中操作的組件生成代碼。也被稱作IDE(Intergrated Development Enviroment)。Delphi 7的組件比原有版本更加豐富,性能上更加完善,為開發(fā)人員帶來了更大的便利。Delphi 7是Borland公司推出的Delphi系列工具軟件的最新版本,其特點是具有面身對象的程序設計思想、快速Pascal編譯器、ActiveX編程,以及支持Internet/Internet編程等。它通過給程序中加入擴展語句,把函數(shù)“封裝”進Windows編程所必需的“對象