1 沈陽第一機(jī)床廠目標(biāo)識別技術(shù)探討
圖像中的目標(biāo)識別有兩個核心的過程:①圖像分割,即從一幅圖像中分離出一個或多個我們感興趣的“目標(biāo)”區(qū)域來:②對這些“目標(biāo)”區(qū)域進(jìn)行特征信息沈陽第一機(jī)床廠提取。圖像分割算法一般有邊界檢測(差分邊界檢測、梯度邊界檢測等)、邊緣匹配與擬合等方法。圖像分割算法對目標(biāo)識別極其重要,它甚至決定著目標(biāo)特征信息提取的成敗。傳統(tǒng)的圖像識別技術(shù)都是以像素的歸類的方式實現(xiàn)的,雖然在算法上比較容易實現(xiàn),但大都屬于全局搜索的算法,并且對目標(biāo)的識別大多通過和樣本圖像的相關(guān)運算所得到,對目標(biāo)的許多特征信息如目標(biāo)邊界的內(nèi)外環(huán)信息,都無能為力。
圖1 二值圖象探討
2 二值圖像探討
二值圖像是以點陣的方式來進(jìn)行排列的,因此可以看作一個二維數(shù)組。為方便,把二值圖像上的一個目標(biāo)看作為一個閉集。因此,我們把圖像的像素點分為以沈陽第一機(jī)床廠下幾類(圖1)。
實點和空點 實點為屬于某個目標(biāo)的點,空點為不屬于所有目標(biāo)的點。
內(nèi)點和邊界點 像素點在某個目標(biāo)的內(nèi)部,稱為內(nèi)點。即它至少有一個鄰域包含在某個目標(biāo)中。(像素點的最小鄰域為以此點為中心,以一個像素單位為半徑的區(qū)域)如果一個像素點不是實點,但它至少有一個鄰域,這個鄰域減去此點所形成的區(qū)域包含在某個目標(biāo)中,我們把此沈陽第一機(jī)床廠點填充為實點(它成為內(nèi)點,誤差僅為一個像素)。在某個目標(biāo)的邊界稱為邊界點(即內(nèi)點和實點的交集且減去毛刺點和孤立點中的點)。
毛刺點和孤立點 孤立點和毛刺點都為實點,但孤立點至少存在一個鄰域,它減去此點后所形成的區(qū)域與目標(biāo)的交集為空。毛刺點的這樣的區(qū)域與目標(biāo)的交集只有一個像素點。
3 數(shù)據(jù)結(jié)構(gòu)
為了更好地實現(xiàn)算法,必須有一個好的數(shù)沈陽第一機(jī)床廠據(jù)結(jié)構(gòu),它應(yīng)能夠完成本算法的所有功能。每個數(shù)據(jù)類都有自己的方法,低層的數(shù)據(jù)類的方法在條件滿足的情況下,能夠獲得自己的所有信息。為高層數(shù)據(jù)類在高層次(不考慮低層實現(xiàn))上的編程提供基礎(chǔ)。
4 邊界搜尋
搜索邊界是目標(biāo)識別中最關(guān)鍵的一步,其目的是把所有的邊界點搜索出來并連接成環(huán),其程序流程如下:
找出一個邊界點來,作為環(huán)頭。對于任一個像素點可以建立一個坐標(biāo)系,把相鄰8個點逆時針順序進(jìn)行標(biāo)記。(這里規(guī)定,如果鄰點超出圖像范圍,一律為空點)沈陽第一機(jī)床廠如圖1所示。由以上的定義可以看出,邊界點必須為實點,并且其8個鄰點至少有一個空點和一個實點,如果一個像素的8個鄰點都為實點,則此像素為內(nèi)點。如果一個像素的8個鄰點都為空點,則為孤立點,可根據(jù)需要進(jìn)行處理。(例如,可以去掉孤立點,相當(dāng)于中值濾波)。搜尋圖像,直到找出一個邊界點。作為環(huán)頭,并做記錄。
以環(huán)頭為起點,進(jìn)行環(huán)的生成:①以環(huán)頭為環(huán)中的第一個邊界點,建立(1)所述的坐標(biāo)系,并且定義鄰點0—7,規(guī)定鄰點I的前點為I-1,后點為I+1,如果I為0,則其前點為7,如果I為7,其后點為0:使其8個鄰點形成一個逆時針的環(huán)。②搜尋和邊界點相鄰的下一個邊界點。從其沈陽第一機(jī)床廠鄰點0開始,按0—7的順序依次確定其各鄰點的特征:1.空點2.出點3.入點4.實點。規(guī)定出點為它的前點為實點,后點為空點的像素點,入點為它的前點為空點,后點為實點的像素點。(0點的前點為7點,7點的后點為0點。)(一般一個邊界點所有鄰點中只有一個出點和入點。否則,其鄰點中必有毛刺點,可以進(jìn)行特殊處理)。③以邊界點搜尋的第一個入點為下一個邊界點,并對此點作標(biāo)記,返回b,直到邊界點N的下一個邊界點為環(huán)頭。于是我們生成了一個環(huán)。這是一個鏈表結(jié)構(gòu),其每個節(jié)點(邊界點)的位置和節(jié)點總數(shù)N都可以知道。對環(huán)沈陽第一機(jī)床廠數(shù)加1。進(jìn)行第(3)步。
尋找下一個沒有經(jīng)過標(biāo)記且為邊界點的像素,返回(1)重新進(jìn)行環(huán)的生成,直到圖像中沒有既是邊界點又沒有被標(biāo)記的點。到此,我們生成了所有的環(huán)(邊界)。
圖2 內(nèi)外環(huán)的特性
5 邊界處理
我們首先對環(huán)的類型和其面積進(jìn)行討論。
到此為至,我們得到了L個環(huán)及其環(huán)頭。下一步應(yīng)判斷環(huán)的類型:內(nèi)環(huán)、外環(huán)。
首先應(yīng)提到,按第(2)步中的方法沈陽第一機(jī)床廠所生成的環(huán),其內(nèi)環(huán)都為順時針,外環(huán)都為逆時針。以下提出兩個定理(圖2所示)。
環(huán)L的面積S→L S→L=1∮LKm→×dl→(其中K為平面上任意一點)
2
(1)
其證明可以用格林公式進(jìn)行證明(參看鄭軍所著《表面離散數(shù)據(jù)的三維體重構(gòu)及其應(yīng)用(華北工學(xué)院碩士論文)》
定義qLK為環(huán)L對點K的環(huán)角,則有 qLK=∮L(Km→× dl→)/|Km→|
(2)
可以證明,當(dāng)K在環(huán)外時,qLK為零,當(dāng)K在外環(huán)內(nèi)時,qLK為2p,當(dāng)K在內(nèi)環(huán)內(nèi)時,qLK為-2p。
對于外環(huán)其面積為負(fù),內(nèi)環(huán)為正沈陽第一機(jī)床廠。所以從其面積的正負(fù)可以判斷環(huán)的類型。
6 環(huán)的重組和目標(biāo)生成
目標(biāo)在二維平面上是由內(nèi)環(huán)和外環(huán)組成的,外環(huán)代表了目標(biāo)的外邊界,內(nèi)環(huán)代表目標(biāo)內(nèi)部的孔洞,由此可以得出,一個目標(biāo)只有一個外環(huán)(外邊界)但可以有多個內(nèi)環(huán)(內(nèi)邊界)。因此,有一個外環(huán)就有一個目標(biāo),環(huán)的重組和目標(biāo)生成的目的就是將外環(huán)和它包含的內(nèi)環(huán)識別沈陽第一機(jī)床廠出來(形成一個目標(biāo)的外邊界和內(nèi)邊界)。問題歸結(jié)為處理環(huán)與環(huán)的關(guān)系問題。
首先假設(shè)環(huán)與環(huán)不相交,因為如果相交的兩個環(huán)總可以通過處理使其生成一個環(huán)。
確定環(huán)的關(guān)系的流程如下:
在所有的環(huán)中選取一個外環(huán)(并作標(biāo)記),判斷與其它的內(nèi)環(huán)的關(guān)系。在沒有標(biāo)記的內(nèi)環(huán)上選取一點(通常選取其環(huán)頭)K連接Km(m 為外環(huán)上的點),計算(如圖2所示)K點和此外環(huán)的環(huán)角,并根據(jù)環(huán)角值判斷K點是否在外環(huán)內(nèi)。因為假定了環(huán)與環(huán)沒有相交,所以,如果K點在外環(huán)內(nèi),則K點所在的內(nèi)環(huán)必然位于外環(huán)內(nèi)。對在外環(huán)內(nèi)的內(nèi)環(huán)作標(biāo)記。(表示其內(nèi)環(huán)已經(jīng)有歸屬)(對于離散計算,必須考慮計算容差)。
取下一個外壞,直到所有的外環(huán)都處理完畢。
到此,對外環(huán)和內(nèi)環(huán)都處理完畢。我沈陽第一機(jī)床廠們以每一外環(huán)代表一個目標(biāo),在外環(huán)內(nèi)的內(nèi)環(huán)代表目標(biāo)的一個孔洞。我們可以計算每個目標(biāo)的面積(為外環(huán)和內(nèi)環(huán)的面積的代數(shù)和再取絕對值)。
7 本算法的特點
本文所提出的算法采用新的方式——幾何的方式來實現(xiàn),并采用局部搜索算法,在一次搜索后獲得目標(biāo)邊界的所有特征信息,在此基礎(chǔ)上對邊界進(jìn)行按目標(biāo)意義上的重組,方便快捷地實現(xiàn)目標(biāo)的特性計算。而且,由于是幾何方式的實現(xiàn),目標(biāo)的邊界很容易轉(zhuǎn)沈陽第一機(jī)床廠換成為矢量的方式(邊界擬合等),更增加了其應(yīng)用的范圍。對每一個目標(biāo)可得到所處的矩形范圍,為后續(xù)的處理提供了方便。
|