t; 抓* 義6呈 多峰。因?yàn)棣?1場,?挪3)> ?,Ss= 3。假設(shè)DSS^集合總兌…,.?的泛化連通性檢查 的圓心依次【附圖說明】圖3中所示為. . .,P6,對于P2,?9中與方向差異最 小的是Θο?5 2 對于Ρ3,?ρ.中與方向差異最小的是;對于Pzt,?θ中與 方向差異最小的是&>ss3,此時(shí)根據(jù)式(9),SP = 士因?yàn)?amp;SS3出現(xiàn)前,lSS2 連續(xù)出現(xiàn)了《次,滿足了式(9)的條件,所以P4被標(biāo)記為分割位置。
[0173] 對于各DSS分割產(chǎn)生的新DSS,其中來自于不同原DSS的部分分割產(chǎn)生的DSS可能具 有相似的方向和相近的位置,因此,在分割后本發(fā)明方法還會嘗試融合。若?表示If中識別 的所有DSS,即:DSS!,β·?·?2, ...?λ?%!,那么這些DSS可分類為如下的集合:Ι)Μ。
[0174]
[0175] 其中ki,fc2: e l+,.ki關(guān)k2,1《ki,ic2 S 丨1)財(cái)丨;表示露"^的方向,i = 1,2; %表 示在2?中具有最多接納點(diǎn)DSS的平均中心坐標(biāo)系中,平均中心的橫坐標(biāo)值。?μ被進(jìn)一步分 類為如下的集合。
[0176]
[0177] 其中 k3,n4,ns Ε Ζ,1 .S.紀(jì)3 S I忽μ.U .1 S 漢4 S 5 .1 S .? S |?/).s,s'!Vjax:|
X~s分別表示像素 和1在055(^的平均中心坐標(biāo)系中的橫坐標(biāo)。將中的DSS從S中刪除,并將它們的接納 點(diǎn)和未拒絕點(diǎn)分別保存為DSSMaJ^接納點(diǎn)和未拒絕點(diǎn)。DSSMax的方向根據(jù)式(10)計(jì)算。
[0178] 假設(shè)【附圖說明】圖3中DSS2和DSS3已知,DSSi未知,DSSi為融合DSS2和DSS3的結(jié)果,則
【附圖說明】圖3展示了 DSS2和DSS3的融合過程。假設(shè)Θ=45°,α = 1.6,.Λ! =,乃_像素。因?yàn)?|?%vls..?3)| 45。U 且 14? .... ^瑪卜 0.750 S 禮/2,根據(jù)式(1 1 ),= ,此時(shí)DSSMax = DSS2』SS2的平均中心在【附圖說明】圖3中以標(biāo)有P的黑點(diǎn)標(biāo)識, DSS3的平均中心是【附圖說明】圖3中標(biāo)識有P5的像素。DSS2和DSS 3的邊界點(diǎn)縱坐標(biāo)差的絕對值 的最大值,即|々ss2 - 標(biāo)識在【附圖說明】圖3中。因?yàn)? A).SS3j W S ?龍成立, 根據(jù)(12)DSS2和DSS3發(fā)生融合,其結(jié)果為DSSuDSSd^方向則根據(jù)式(10)計(jì)算。
[0179]本發(fā)明計(jì)算方法的【具體實(shí)施方式】通過使用高級程序語言,例如C#,編寫計(jì)算機(jī)程 序完成。實(shí)施過程依賴3個自定義的類,分別是DSSGroup類,DSS類和DSSPo int類。這3個類的 關(guān)系及成員由【附圖說明】圖5中的UML類圖描述。本發(fā)明方法的概念性流程分別由【附圖說明】圖 4,圖6至圖14所示的UML活動圖描述,其中圖4展示了本發(fā)明方式實(shí)施的概況。如圖4所示,本 發(fā)明方法包括2個主要步驟:"步驟1:找到DSS"和"步驟2:融合DSS"。除探索半徑滅與方向差 異閥值Θ依賴人工輸入,本發(fā)明方法涉及的其它參數(shù)均設(shè)定為常數(shù),具體有:式(3)中的α設(shè) 為2,式(7 )中的在設(shè)為1 · 5,式(8 )中的m設(shè)為〇 · 7,式(9 )中的ft設(shè)為4,對于 % e%,£(%)由|心|近似。為便于實(shí)施,式(4)及式(5)中,對應(yīng)1的分支條件 I茍丨參〇被替換為1^1羊〇。
[0180] DSSPoint類保存了泛化連通性檢查所發(fā)現(xiàn)前景像素相對于圖像空間左上角像素 的指針偏移量,檢查圓心相對于圖像空間左上角像素的指針偏移量,由圓心指向該前景像 素的向量的方向,以及該像素的圖像空間坐標(biāo)和平均中心坐標(biāo)。DSS類保存了式(6)定義的 像素。邊界點(diǎn)保存在DSS類中具有DSSPoint類型的屬性中。DSSGroup類對應(yīng)式(11)定義的 _.,DSSGroup類的屬性DSSForMerging對應(yīng)了式(12)定義的,其他屬性則用于式(11)的 計(jì)算。DSSGroup類還包括一個具有兩個參數(shù)DSS1和DSS2的構(gòu)造函數(shù)。
[0181] 基于【附圖說明】圖5所示的類,【附圖說明】圖6的UML活動圖描述了本發(fā)明方法的步驟 及相互關(guān)系。如圖6所示,步驟1至步驟5包括5個子步驟:"步驟1:找到至少兩個相鄰的點(diǎn)", "步驟2:持續(xù)搜索直至未發(fā)現(xiàn)與當(dāng)前DSS相鄰的點(diǎn)","步驟3:評估當(dāng)前DSS的接納點(diǎn)和未拒 絕點(diǎn)","步驟4:生成方向直方圖并根據(jù)直方圖多峰性分割當(dāng)前DSS","步驟5:評估當(dāng)前DSS 寬度并根據(jù)寬度進(jìn)行縮減";步驟6至步驟8包括3個子步驟:"步驟6:根據(jù)DSS方向,將DSS集 合中的DSS分組","步驟7:根據(jù)DSS間的距離,將每組中的DSS細(xì)分為小組","步驟8:嘗試融 合每個小組內(nèi)的DSS"。步驟1和2實(shí)現(xiàn)了由式(1)至式(6)描述的通過檢查泛化連通性和計(jì)算 統(tǒng)計(jì)度量直線特征識別DSS的過程。步驟3至5實(shí)現(xiàn)了由式(7)至式(10)描述的DSS分割過程。 步驟6至步驟8實(shí)現(xiàn)了由式(11)和式(12)描述的DSS融合過程。
[0182] 如【附圖說明】圖6所示,本發(fā)明方法逐行依次掃描給定邊緣圖像的所有像素,一旦發(fā) 現(xiàn)尚未讀取過的前景像素,就會觸發(fā)步驟1。圖7所示的UML活動圖描述了步驟1的流程:
[0183] SI. 1,初始化一個新的DSS對象,稱為當(dāng)前DSS,并使用所讀取的第一個前景像素初 始化新的DSSPoint對象,將該DSSPoint對象保存為DSS對象的接納點(diǎn);
[0184] S1.2,在以該前景像素為圓心且半徑為探索半徑的圓形范圍內(nèi),收集前景像素;
[0185] S1.3,如果收集到至少1個非圓心的前景像素,則將每個收集到的前景像素都初始 化為DSSPoint對象,計(jì)算每個DSSPoint對象相對于圓心的方向并將在DSSPoint對象中保存 計(jì)算結(jié)果;否則,結(jié)束步驟1;
[0186] SI.4,計(jì)算收集到的前景像素的平均方向,并找出與平均方向差異最小的 DSSPoint 對象;
[0187] S1.5,將S1.4找到的DSSPoint對象保存為當(dāng)前DSS對象的接納點(diǎn),并根據(jù)平均方向 對剩余的DSSPoint對象進(jìn)行分類;
[0188] S1.6,在圖像空間中刪除歸屬當(dāng)前DSS對象的DSSPoint對象所對應(yīng)的前景像素;更 新當(dāng)前DSS的平均中心和邊界點(diǎn)。
[0189] 步驟1在圖像空間中所讀取前景像素的坐標(biāo),根據(jù)中點(diǎn)圓算法(Midpoint circle algorithm)計(jì)算一個圓心為所讀取前景像素,半徑為32的圓內(nèi)像素的圖像空間坐標(biāo),根據(jù) 所計(jì)算坐標(biāo)確定圓內(nèi)像素相對于圖像空間左上角像素的指針偏移量,并根據(jù)該偏移量逐一 讀取圓內(nèi)的每個像素。此時(shí),圓心對應(yīng)式(4)中的Pi,圓內(nèi)前景像素組成了式,這些前 景像素相對于圓心的方向由從圓心出發(fā)指向這些前景像素的向量的方向確定,這些方向的 平均值是式(5)的^!"然后根據(jù)式(3),對Si*的前景像素進(jìn)行分類,形成對和.^^與^方向 差異最小的像素被選為下次泛化連通性檢查的圓心,即式(4)定義的P 2。
[0190] 步驟1結(jié)束時(shí),如果當(dāng)前DSS包含至少兩個前景像素,則步驟2開始,否則刪除找到 的一個前景像素,繼續(xù)掃描邊緣圖像。【附圖說明】圖8展示了步驟2的流程:
[0191 ] S2.1,以最后保存的像素為圓心,半徑為探索半徑的半圓范圍內(nèi)收集前景像素,半 圓唯一的直徑與當(dāng)前DSS方向垂直,且半圓位于從圓心出發(fā),依當(dāng)前DSS方向指向的位置;
[0192] S2.2,嘗試讀取S2.1所收集的,除圓心以外的一個尚未讀取過的前景像素;
[0193] S2.3,如果未成功讀取一個前景像素,執(zhí)行S2.7,否則根據(jù)所讀取的前景像素初始 化一個新DSSPoint對象并假設(shè)該DSSPoint對象被接納,計(jì)算假設(shè)條件下的DSS厚度,如果厚 度超過探索半徑2倍,則返回S2.2,否則執(zhí)行S2.4;
[0194] S2.4,計(jì)算當(dāng)前DSS方向與該DSSPoint對象方向的差異;
[0195] S2.5,如果所得差異超過方向差異閥值,則執(zhí)行S2.51,否則執(zhí)行S2.52;
[0196] S2.51,將該DSSPoint對象保存為當(dāng)前DSS的未拒絕點(diǎn),更新歸屬當(dāng)前DSS的每個點(diǎn) 相對于平均中心的坐標(biāo),以及當(dāng)前DSS的邊界點(diǎn);
[0197] S2.52,將該DSSPoint對象保存為當(dāng)前DSS的接納點(diǎn),更新當(dāng)前DSS方向并在圖像空 間中永久刪除該DSSPoint對象對應(yīng)的像素;
[0198] S2.6,根據(jù)接納點(diǎn)和未拒絕點(diǎn)的圖像空間坐標(biāo),更新當(dāng)前DSS平均中心坐標(biāo),然后 返回S2.2;
[0199] S2.7,在圖像空間中刪除步驟1與步驟2訪問過的前景像素。
[0200] 步驟2以之前計(jì)算的為圓心,根據(jù)式(2)在直徑與垂直的半圓內(nèi)尋找前景 像素,所找到的前景像素組成式(2)的&根據(jù)之前計(jì)算的幻,根據(jù)式(5)更新DSS方向。& 中前景像素相對于圓心的方向由圓心出發(fā)指向這些前景像素的向量的方向確定,根據(jù)這些 方向,1_;l和式(3),各中的像素分類為舄和其中與方向差異最小的像素被選為 下次泛化連通性檢查的圓心,即式(4)定義的。這個過程反復(fù)重復(fù),直至0結(jié)束。
[0201] 步驟2結(jié)束后,步驟3開始。【附圖說明】圖9展示了步驟3的流程:比較DSS中接納點(diǎn)與 未拒絕點(diǎn)的數(shù)量,如果未拒絕點(diǎn)的數(shù)量是接納點(diǎn)數(shù)量1.5倍,則將接納點(diǎn)標(biāo)識為未拒絕點(diǎn), 并將未拒絕點(diǎn)標(biāo)識為接納點(diǎn)。
[0202] 步驟3通過計(jì)算式(7),判斷當(dāng)前DSS是否存在比例失調(diào),如果存在,則交換ULdf 和中的像素,否則開始步驟4。
[0203] 步驟4根據(jù)式(8)檢查當(dāng)前DSS的/V是否呈多峰,并且計(jì)算分割位置如果·^?呈多 峰?!靖綀D說明】中圖10展示了步驟4的流程:
[0204] S4.1,比較接納點(diǎn)的數(shù)量和探索半徑整數(shù)部分的值,如果數(shù)量超過值,則生成方向 統(tǒng)計(jì),其索引為DSS中每個點(diǎn)的方向的整數(shù)部分,值是方向整數(shù)部分與索引值相同的點(diǎn)的數(shù) 量;否則執(zhí)行S4.11;
[0205] S4.2,按方向統(tǒng)計(jì)中值的大小降序排列索引;
[0206] S4.3,嘗試找到方向統(tǒng)計(jì)的最大值和次大值,如果方向統(tǒng)計(jì)中包含至少2對索引與 值,則執(zhí)行S4.41;否則執(zhí)行S4.42;
[0207] S4.41,比較最大值和次大值,如果次大值達(dá)到0.7倍的最大值,則將最大值與次大 值對應(yīng)的索引,記錄為分割方向,并在方向統(tǒng)計(jì)中刪除最大值及其索引,否則返回S4.3; [0208] S4.42,檢查分割方向數(shù)量,如果至少存在2個分割方向,則按步驟2記錄的像素順 序,依次讀取當(dāng)前DSS中尚未被S4.42讀取過的接納點(diǎn),否則執(zhí)行S4.8;
[0209] S4.5,如果所讀取接納點(diǎn)非當(dāng)前DSS的最后一個接納點(diǎn),則將所讀取點(diǎn)的方向與所 有分割方向進(jìn)行比較;否則執(zhí)行S4.8;
[0210] S4.6,如果與所讀取點(diǎn)的方向差異最小的分割方向與兼容分割方向不同,則記錄 新分割方向的出現(xiàn)次數(shù),否則返回S4.42以讀取下一個接納點(diǎn);
[0211 ] S4.7,如果出現(xiàn)次數(shù)大于3次,則將所讀取點(diǎn)標(biāo)記為分割位置并將新分割方向標(biāo)記 為兼容分割方向;否則返回S4.42以讀取下一個接納點(diǎn);
[0212] S4.8,刪除第一個分割位置,根據(jù)剩余的分割位置,將步驟2中保存接納點(diǎn)的前后 順序劃分為多個區(qū)間,對于每個區(qū)間所保存的接納點(diǎn),初始化一個新的DSS并將接納點(diǎn)重新 保存為該DSS的接納點(diǎn);
[0213] S4.9,生成S4.8產(chǎn)生的多個DSS的平均中心,并根據(jù)線性回歸計(jì)算每個DSS的方向; [0214] S4.10,對于當(dāng)前DSS的每個未拒絕點(diǎn),計(jì)算其與S4.8所生成DSS的平均中心之間的 距離,將其分配給距離最近的DSS,初始化一個新的DSS集合,并將分割產(chǎn)生的DSS保存在該 集合中,結(jié)束步驟4;
[0215] S4.11,在圖像空間中恢復(fù)S2.7所刪除的,原DSS的未拒絕點(diǎn),結(jié)束步驟4。
[0216] 步驟4計(jì)算的最大值與次大值之比,所計(jì)算的比例與參數(shù)m比