日韩中文字幕久久久97都市激情,久久91网,亚洲天堂最新,国产精品嫩草影院九色,亚洲午夜精品一本二本,精品少妇一区二区三区蜜桃,av一道本

一種鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法

文檔序號:10726437閱讀:282來源:國知局
一種鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法
【專利摘要】本發(fā)明公開了一種鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法。本發(fā)明利用鏈碼方式提取線段有序點(diǎn),然后根據(jù)所有線段的端點(diǎn)、不同線段的交點(diǎn),利用圖論技術(shù)對所有線段進(jìn)行重組,最終得到所有連續(xù)曲線的有序序列。相交曲線會產(chǎn)生不同路徑的閉合和非閉合曲線,這會大大增加提取難度,本發(fā)明利用圖論技術(shù)解決了該相交技術(shù)難題,克服了現(xiàn)有方法的不足;同時采用鏈碼方式提取曲線,中間數(shù)據(jù)存儲是采用自己實(shí)現(xiàn)的動態(tài)數(shù)組,從而增加了處理斷點(diǎn)連續(xù)的能力,達(dá)到了很好的效果。
【專利說明】
一種鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于計算機(jī)視覺領(lǐng)域,涉及到圖像中曲線的提取方法,特別涉及到鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法。
【背景技術(shù)】
[0002]曲線提取是計算機(jī)視覺領(lǐng)域的一個基本問題,有著重要的理論意義和廣泛的應(yīng)用價值,可以應(yīng)用在圖像處理中,其中包括一些工業(yè)應(yīng)用中。通過鏈碼方式得到曲線序列已經(jīng)有過很多的研究,但是對于圖像中不同曲線相交的情況,這方面研究甚少。
[0003]目前常用的圖像曲線提取方法有基于EM迭代的曲線提取算法,EM算法是機(jī)器學(xué)習(xí)、模式分類領(lǐng)域用于重估特征分布參數(shù)的重要方法。該算法主要通過兩個步驟來實(shí)現(xiàn),首先是E步驟(Expectat1n,利用現(xiàn)有樣本對未知變量分布進(jìn)行估計),利用兩個先驗(yàn)點(diǎn)采用切線導(dǎo)向法預(yù)測出下一個目標(biāo)點(diǎn)。之后是M步驟(Maximum,對位置變量的分布進(jìn)行最大后驗(yàn)估計),對目標(biāo)點(diǎn)的坐標(biāo)進(jìn)行調(diào)整優(yōu)化,將搜索到的黑游程正中間的點(diǎn)作為最終目標(biāo)點(diǎn)。還有提取算法是掃描圖像曲線輪廓關(guān)鍵點(diǎn)及其提取處理算法,該算法可自動逐行檢測掃描行中的黑游程,當(dāng)相繼行中的黑游程滿足一定的條件準(zhǔn)則時即可取出相應(yīng)的黑游程邊界點(diǎn),并形成關(guān)鍵點(diǎn),依據(jù)這些關(guān)鍵點(diǎn),利用B樣條曲線理論來擬合曲線,最終即可實(shí)現(xiàn)對圖像曲線的提取。這兩種方法的缺點(diǎn)是搜索過程復(fù)雜,計算量大并且計算過程復(fù)雜,當(dāng)交叉曲線過多的時,不利于提取,并且沒有進(jìn)行斷點(diǎn)連續(xù)處理的能力。
[0004]中國科學(xué)院深圳先進(jìn)技術(shù)研究院的專利,申請?zhí)枮镃N2013104444859,“圖像特征曲線提取方法及系統(tǒng)”,提出了一種圖像特征曲線提取方法,通過近似曲線和調(diào)和向量場得到最優(yōu)的特征曲線。優(yōu)點(diǎn)是得到的圖像特征曲線能夠保證光滑和彎曲特征,缺點(diǎn)是會出現(xiàn)失真,不能原原本本還原成原曲線,不適應(yīng)對大規(guī)模曲線相交情況,同時也沒有考慮到斷點(diǎn)連續(xù)問題。

【發(fā)明內(nèi)容】

[0005]為了克服上述現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法。
[0006]本發(fā)明提供了一種鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法,包括:
[0007]步驟100,利用MATLAB工具庫對圖像進(jìn)行預(yù)處理,得到單一像素寬度的二值圖。
[0008]步驟200,對步驟100所得的二值圖進(jìn)行掃描,并對掃描后所得圖像上每個灰度值非O的像素點(diǎn)進(jìn)行處理,得到端點(diǎn)數(shù)組D1、交點(diǎn)數(shù)組Jl和結(jié)果圖,具體過程如下:步驟201,如果灰度值非O的像素點(diǎn)周圍的8鄰域中沒有灰度值為非O的像素點(diǎn),則該像素點(diǎn)為孤立的噪聲點(diǎn),讓其灰度值為O去除噪聲點(diǎn)。步驟202,如果灰度值非O的像素點(diǎn)周圍的8鄰域內(nèi)只有一個灰度值為255的像素點(diǎn),則該像素點(diǎn)為曲線的端點(diǎn),將這些端點(diǎn)保存到端點(diǎn)數(shù)組Dl中。步驟203,如果灰度值非O的像素點(diǎn)周圍的8鄰域中灰度值為255的像素點(diǎn)的數(shù)目大于等于3,則該像素點(diǎn)為曲線相交處的交點(diǎn),將這些交點(diǎn)保存到交點(diǎn)數(shù)組JI中;去除曲線中這些交點(diǎn),得到結(jié)果圖。
[0009]步驟300,處理步驟200所得結(jié)果圖,得到端點(diǎn)數(shù)組D2,并提取連接端點(diǎn)的曲線段,具體過程如下:步驟301,掃描步驟200所得的結(jié)果圖,得到所有端點(diǎn),將這些端點(diǎn)保存到端點(diǎn)數(shù)組D2中。步驟302,對于步驟200所得結(jié)果圖,利用步驟301所得端點(diǎn)數(shù)組D2以及8鄰域鏈碼方式,即8鄰域順時針?biāo)阉鳎鶕?jù)端點(diǎn)搜索以及曲線中點(diǎn)的連通關(guān)系將所有連接端點(diǎn)的曲線段序列有序化提取出來,這些曲線段都是非閉合曲線。
[0010]步驟400,對步驟203所得交點(diǎn)數(shù)組Jl進(jìn)行分類,得到交點(diǎn)數(shù)組J2;提取連接端點(diǎn)與交點(diǎn)的曲線段,并添加到相應(yīng)的曲線中,具體過程如下:步驟401,利用8鄰域鏈碼方式將交點(diǎn)數(shù)組Jl中所有鄰域連通的交點(diǎn)歸為一類,從而得到若干類交點(diǎn)集合;對于每一類交點(diǎn)集合,統(tǒng)計其中每個交點(diǎn)周圍8鄰域中點(diǎn)的個數(shù),選擇個數(shù)最多的交點(diǎn)作為中心交點(diǎn),將這些中心交點(diǎn)保存到交點(diǎn)數(shù)組J2中。步驟402,將步驟401所得的若干類交點(diǎn)集合與交點(diǎn)數(shù)組J2進(jìn)行組合,并通過曲線首末端點(diǎn)的8領(lǐng)域搜索每一類交點(diǎn)集合,在交點(diǎn)集合找到后,提取相應(yīng)中心交點(diǎn)到曲線端點(diǎn)的曲線段,把曲線段添加到對應(yīng)的曲線中;組合過程中,通過外部給定設(shè)置的半徑參數(shù),使得盡可能多的不連接但相互間距離小于直徑的端點(diǎn)包含在同一個圓中,圓心坐標(biāo)為所有端點(diǎn)的中心點(diǎn),所述中心點(diǎn)為所有端點(diǎn)的橫縱坐標(biāo)的平均值,這種圓心是新產(chǎn)生的交點(diǎn);更新端點(diǎn)數(shù)組D2,即從端點(diǎn)數(shù)組D2中去除這些端點(diǎn),同時更新交點(diǎn)數(shù)組J2,即把這些端點(diǎn)加到交點(diǎn)數(shù)組J2中;提取圓心到所有端點(diǎn)的曲線段,并將曲線段添加到相應(yīng)的曲線中。
[0011 ]步驟500,將步驟400所得的全部曲線轉(zhuǎn)化成圖的結(jié)構(gòu),獲取所有頂點(diǎn)之間的路徑,具體過程如下:步驟501,將步驟400所得曲線的首末端點(diǎn)轉(zhuǎn)化成圖的頂點(diǎn),曲線轉(zhuǎn)化成圖的邊,相同端點(diǎn)的不同曲線用不同的邊表示,端點(diǎn)和邊都用數(shù)字進(jìn)行編號,得到由邊和點(diǎn)組成的圖;圖的頂點(diǎn)編號和圖的邊編號唯一,兩頂點(diǎn)之間有多條邊;步驟502,生成一個曲線首末端點(diǎn)到編號的映射,同時生成端點(diǎn)數(shù)組D2和交點(diǎn)數(shù)組J2到數(shù)字編號的映射;步驟503,通過棧實(shí)現(xiàn)深度優(yōu)先遍歷函數(shù)獲取所有頂點(diǎn)之間的路徑,閉合曲線是從端點(diǎn)到端點(diǎn),非閉合曲線是從交點(diǎn)到交點(diǎn),順序不同但是邊和點(diǎn)相同的路徑是同一條路徑。
[0012]步驟600,根據(jù)步驟501所得圖頂點(diǎn)和圖邊的編號及步驟502所得映射,將步驟503所得全部路徑還原成曲線,實(shí)現(xiàn)曲線重組,進(jìn)而得到需要的閉合和非閉合曲線,每一條曲線都是由有序序列點(diǎn)組成,所有曲線放進(jìn)曲線鏈表中,輸出是曲線結(jié)構(gòu)體鏈表序列。
[0013]有益效果:本發(fā)明利用鏈碼方式提取線段有序點(diǎn),然后根據(jù)所有線段的端點(diǎn)、不同線段的交點(diǎn),利用圖論技術(shù)對所有線段進(jìn)行重組,最終得到所有連續(xù)曲線的有序序列;利用圖論技術(shù)解決了相交曲線會產(chǎn)生不同路徑的閉合和非閉合曲線這一技術(shù)難題,克服了現(xiàn)有方法的不足。同時采用鏈碼方式提取曲線,中間數(shù)據(jù)存儲是采用自己實(shí)現(xiàn)的動態(tài)數(shù)組,從而增加了處理斷點(diǎn)連續(xù)的能力,達(dá)到了很好的效果。
【附圖說明】
[0014]圖1是非閉合曲線和閉合曲線相交測試圖。
[0015]圖2是非閉合曲線和閉合曲線相交測試結(jié)果圖一。
[0016]圖3是非閉合曲線和閉合曲線相交測試結(jié)果圖二。
[0017]圖4是非閉合曲線和閉合曲線相交測試結(jié)果圖三。
[0018]圖5是非閉合曲線和閉合曲線相交測試結(jié)果圖四。
[0019]圖6是非閉合曲線和閉合曲線相交測試結(jié)果圖五。
[0020]圖7是非閉合曲線和閉合曲線相交測試結(jié)果圖六。
[0021]其中,圖1是第一張輸入測試圖像,經(jīng)過方法處理得到了3條非閉合曲線和3條閉合曲線。把結(jié)果曲線序列輸出到圖像得到了 6幅結(jié)果圖像。圖2是圖1處理后得到第一條非閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖3是圖1處理后得到的第二條非閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖4是圖1處理后得到的第三條非閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖5是圖1處理后得到的第一條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖6是圖1處理后得到的第二條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖7是圖1處理后得到的第三條閉合曲線轉(zhuǎn)化成的結(jié)果圖。
[0022]圖8是閉合曲線相交測試圖。
[0023]圖9是閉合曲線相交測試結(jié)果圖一。
[0024]圖10是閉合曲線相交測試結(jié)果圖二。
[0025]圖11是閉合曲線相交測試結(jié)果圖三。
[0026]圖12是閉合曲線相交測試結(jié)果圖四。
[0027]圖13是閉合曲線相交測試結(jié)果圖五。
[0028]圖14是閉合曲線相交測試結(jié)果圖六。
[0029]其中,圖8是第二張輸入測試圖像,經(jīng)過方法處理得到了6條閉合曲線。把結(jié)果曲線序列輸出到圖像得到了 6幅結(jié)果圖像。圖9是圖8處理后得到的第一條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖10是圖8處理后得到的第二條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖11是圖8處理后得到的第三條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖12是圖8處理后得到的第四條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖13是圖8處理后得到的第五條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖14是圖8處理后得到的第六條閉合曲線轉(zhuǎn)化成的結(jié)果圖。
[0030]圖15是帶斷點(diǎn)測試圖。
[0031]圖16是帶斷點(diǎn)測試結(jié)果圖一。
[0032]圖17是帶斷點(diǎn)測試結(jié)果圖二。
[0033]圖18是帶斷點(diǎn)測試結(jié)果圖三。
[0034]圖19是帶斷點(diǎn)測試結(jié)果圖四。
[0035]圖20是帶斷點(diǎn)測試結(jié)果圖五。
[0036]圖21是帶斷點(diǎn)測試結(jié)果圖六。
[0037]其中,圖15是第三張輸入測試圖像,經(jīng)過方法處理并且進(jìn)行了斷點(diǎn)連接,同樣得到3條非閉合曲線和3條閉合曲線。把結(jié)果曲線序列輸出到圖像得到了 6幅結(jié)果圖像。圖16是圖15處理后得到第一條非閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖17是圖15處理后得到的第二條非閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖18是圖15處理后得到的第三條非閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖19是圖15處理后得到的第一條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖20是圖15處理后得到的第二條閉合曲線轉(zhuǎn)化成的結(jié)果圖,圖21是圖15處理后得到的第三條閉合曲線轉(zhuǎn)化成的結(jié)果圖。
【具體實(shí)施方式】
[0038]為使本發(fā)明解決的技術(shù)問題、采用的技術(shù)方案和達(dá)到的技術(shù)效果更加清楚,下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖牵颂幩枋龅木唧w實(shí)施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
[0039]請參照圖1至圖7,圖8至圖14,圖15至圖21本實(shí)施例的鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法,包括以下步驟:
[0040]步驟1:利用MATLAB工具庫對圖1進(jìn)行預(yù)處理,得到單一像素寬度的二值圖,具體過程如下:
[0041 ]步驟1-1,利用MATLAB工具庫里的rgb2gray函數(shù)將圖1轉(zhuǎn)化為灰度圖。
[0042]步驟1-2,利用MATLAB工具庫里的im2bw函數(shù)對步驟1-1所得灰度圖進(jìn)行二值化處理生成二值圖。
[0043]步驟1-3,利用MATLAB工具庫里的bwmorph函數(shù)對步驟1-2所得二值圖進(jìn)行細(xì)化處理,得到單一像素寬度的二值圖。
[0044]步驟2:對步驟1-3所得的二值圖進(jìn)行掃描,并對掃描后所得圖像上每個灰度值非O的像素點(diǎn)進(jìn)行處理,得到端點(diǎn)數(shù)組D1、交點(diǎn)數(shù)組Jl和結(jié)果圖,具體過程如下:
[0045]步驟2-1,如果灰度值非O的像素點(diǎn)周圍的8鄰域中沒有灰度值為非O的像素點(diǎn),則該像素點(diǎn)為孤立的噪聲點(diǎn),操作是讓其灰度值為O來去除噪聲點(diǎn)。
[0046]步驟2-2,如果灰度值非O的像素點(diǎn)周圍的8鄰域內(nèi)只有一個灰度值為255的像素點(diǎn),則該像素點(diǎn)為曲線的端點(diǎn),操作是將這些端點(diǎn)保存到端點(diǎn)數(shù)組Dl中。
[0047]步驟2-3,如果灰度值非O的像素點(diǎn)周圍的8鄰域中灰度值為255的像素點(diǎn)的數(shù)目大于等于3,則該像素點(diǎn)為曲線相交處的點(diǎn),操作是將這些交點(diǎn)保存到交點(diǎn)數(shù)組Jl中,并且去除曲線中這種點(diǎn)。在實(shí)際圖像中,對于每兩條曲線相交處,得到的可能不止一個點(diǎn),而是包括很多點(diǎn)。即對于每個相交處,都會產(chǎn)生一些符合要求的點(diǎn)集,需要把這些點(diǎn)都存儲到交點(diǎn)數(shù)組Jl中,并且去除曲線中的這些點(diǎn),得到結(jié)果圖。
[0048]步驟3:處理步驟2所得結(jié)果圖,得到端點(diǎn)數(shù)組D2,并提取連接端點(diǎn)的曲線段,具體過程如下:
[0049]步驟3-1,掃描步驟2所得的結(jié)果圖,得到所有端點(diǎn),將這些端點(diǎn)保存到端點(diǎn)數(shù)組D2中。這些端點(diǎn)不僅包含了第一次掃描得到的端點(diǎn)也包含了原相交曲線去除交點(diǎn)后新產(chǎn)生的端點(diǎn)。
[0050]步驟3-2,對于步驟2所得結(jié)果圖,利用步驟3-1所得端點(diǎn)數(shù)組D2以及8鄰域鏈碼方式(即8鄰域順時針?biāo)阉?,根據(jù)端點(diǎn)搜索以及曲線中點(diǎn)的連通關(guān)系將所有連接端點(diǎn)的曲線段序列有序化提取出來。這些曲線段都是非閉合曲線。
[0051]步驟4:對步驟2-3所得交點(diǎn)數(shù)組Jl進(jìn)行分類,得到交點(diǎn)數(shù)組J2;提取連接端點(diǎn)與交點(diǎn)的曲線段,并添加到相應(yīng)的曲線中,具體過程如下:
[0052]步驟4-1,利用8鄰域鏈碼方式將交點(diǎn)數(shù)組Jl中所有鄰域連通的點(diǎn)歸為一類,從而得到若干類交點(diǎn)集合;對于每一類交點(diǎn)集合,統(tǒng)計其中每個點(diǎn)周圍8鄰域中點(diǎn)的個數(shù),選擇個數(shù)最多的點(diǎn)作為中心交點(diǎn),將這些中心交點(diǎn)保存到交點(diǎn)數(shù)組J2中。分類后交點(diǎn)集合的個數(shù)即為交點(diǎn)數(shù)組J 2中點(diǎn)的個數(shù)。
[0053]步驟4-2,將步驟4-1所得的若干類交點(diǎn)集合與交點(diǎn)數(shù)組J2進(jìn)行組合,并通過曲線首末端點(diǎn)的8領(lǐng)域搜索每一類交點(diǎn)集合,在交點(diǎn)集合找到后,提取相應(yīng)中心交點(diǎn)到曲線端點(diǎn)的曲線段,把曲線段添加到對應(yīng)的曲線中;組合過程中,同時需要考慮斷點(diǎn)連續(xù)的問題,通過外部給定設(shè)置的半徑參數(shù),使得盡可能多的不連接但相互間距離小于直徑的端點(diǎn)包含在同一個圓中,圓心坐標(biāo)為所有端點(diǎn)的中心點(diǎn)(所有端點(diǎn)的橫縱坐標(biāo)的平均值),這種圓心是新產(chǎn)生的交點(diǎn)。更新端點(diǎn)數(shù)組D2即從端點(diǎn)數(shù)組D2中去除這些端點(diǎn),同時更新交點(diǎn)數(shù)組J2即把這些端點(diǎn)加到交點(diǎn)數(shù)組J2中。提取圓心到所有端點(diǎn)的曲線段,并將曲線段添加到相應(yīng)的曲線中。
[0054]步驟5:將步驟4所得的全部曲線轉(zhuǎn)化成圖的結(jié)構(gòu),通過算法獲取所有頂點(diǎn)之間的路徑,具體過程如下:
[0055]步驟5-1,將步驟4所得曲線的首末端點(diǎn)轉(zhuǎn)化成圖的頂點(diǎn),曲線轉(zhuǎn)化成圖的邊,相同端點(diǎn)的不同曲線用不同的邊表示,端點(diǎn)和邊都用數(shù)字進(jìn)行編號,得到由邊和點(diǎn)組成的圖。圖的頂點(diǎn)編號和圖的邊編號都是唯一的,兩頂點(diǎn)之間會有多條邊。
[0056]步驟5-2,生成一個曲線首末端點(diǎn)到編號的映射,同時生成端點(diǎn)數(shù)組D2和交點(diǎn)數(shù)組J2到數(shù)字編號的映射。
[0057]步驟5-3,通過棧實(shí)現(xiàn)深度優(yōu)先遍歷函數(shù)獲取所有頂點(diǎn)之間的路徑。由于存在閉合曲線和非閉合曲線,兩種曲線對應(yīng)的路徑不一樣,閉合曲線是從端點(diǎn)到端點(diǎn),非閉合曲線是從交點(diǎn)到交點(diǎn),因此獲取時需要實(shí)現(xiàn)不同的深度優(yōu)先遍歷函數(shù),并且認(rèn)為順序不同但是邊和點(diǎn)相同的路徑是同一條路徑。所以獲取閉合曲線時還需要判斷兩條路徑是不是同一條。
[0058]步驟6:根據(jù)步驟5-1所得圖頂點(diǎn)和圖邊的編號及步驟5-2所得映射,將步驟5-3所得全部路徑(由數(shù)字編號序列組成)還原成曲線從而實(shí)現(xiàn)曲線重組,進(jìn)而得到需要的閉合和非閉合曲線。每一條曲線都是由有序序列點(diǎn)組成,所有曲線放進(jìn)曲線鏈表中,輸出是曲線結(jié)構(gòu)體鏈表序列。將結(jié)果曲線序列轉(zhuǎn)化為圖像得到了 6幅結(jié)果圖像,如圖2—圖7。
[0059]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【主權(quán)項(xiàng)】
1.一種鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法,其特征在于,所述鏈碼與圖論技術(shù)相結(jié)合的圖像曲線提取方法包括: 步驟10,利用MATLAB工具庫對圖像進(jìn)行預(yù)處理,得到單一像素寬度的二值圖; 步驟200,對步驟100所得的二值圖進(jìn)行掃描,并對掃描后所得圖像上每個灰度值非O的像素點(diǎn)進(jìn)行處理,得到端點(diǎn)數(shù)組D1、交點(diǎn)數(shù)組Jl和結(jié)果圖,具體過程如下: 步驟201,如果灰度值非O的像素點(diǎn)周圍的8鄰域中沒有灰度值為非O的像素點(diǎn),則該像素點(diǎn)為孤立的噪聲點(diǎn),讓其灰度值為O去除噪聲點(diǎn); 步驟202,如果灰度值非O的像素點(diǎn)周圍的8鄰域內(nèi)只有一個灰度值為255的像素點(diǎn),則該像素點(diǎn)為曲線的端點(diǎn),將這些端點(diǎn)保存到端點(diǎn)數(shù)組Dl中; 步驟203,如果灰度值非O的像素點(diǎn)周圍的8鄰域中灰度值為255的像素點(diǎn)的數(shù)目大于等于3,則該像素點(diǎn)為曲線相交處的交點(diǎn),將這些交點(diǎn)保存到交點(diǎn)數(shù)組Jl中;去除曲線中這些交點(diǎn),得到結(jié)果圖; 步驟300,處理步驟200所得結(jié)果圖,得到端點(diǎn)數(shù)組D2,并提取連接端點(diǎn)的曲線段,具體過程如下: 步驟301,掃描步驟200所得的結(jié)果圖,得到所有端點(diǎn),將這些端點(diǎn)保存到端點(diǎn)數(shù)組D2中; 步驟302,對于步驟200所得結(jié)果圖,利用步驟301所得端點(diǎn)數(shù)組D2以及8鄰域鏈碼方式,即8鄰域順時針?biāo)阉?,根?jù)端點(diǎn)搜索以及曲線中點(diǎn)的連通關(guān)系將所有連接端點(diǎn)的曲線段序列有序化提取出來,這些曲線段都是非閉合曲線; 步驟400,對步驟203所得交點(diǎn)數(shù)組Jl進(jìn)行分類,得到交點(diǎn)數(shù)組J2;提取連接端點(diǎn)與交點(diǎn)的曲線段,并添加到相應(yīng)的曲線中,具體過程如下: 步驟401,利用8鄰域鏈碼方式將交點(diǎn)數(shù)組Jl中所有鄰域連通的交點(diǎn)歸為一類,從而得到若干類交點(diǎn)集合;對于每一類交點(diǎn)集合,統(tǒng)計其中每個交點(diǎn)周圍8鄰域中點(diǎn)的個數(shù),選擇個數(shù)最多的交點(diǎn)作為中心交點(diǎn),將這些中心交點(diǎn)保存到交點(diǎn)數(shù)組J2中; 步驟402,將步驟401所得的若干類交點(diǎn)集合與交點(diǎn)數(shù)組J2進(jìn)行組合,并通過曲線首末端點(diǎn)的8領(lǐng)域搜索每一類交點(diǎn)集合,在交點(diǎn)集合找到后,提取相應(yīng)中心交點(diǎn)到曲線端點(diǎn)的曲線段,把曲線段添加到對應(yīng)的曲線中;組合過程中,通過外部給定設(shè)置的半徑參數(shù),使得盡可能多的不連接但相互間距離小于直徑的端點(diǎn)包含在同一個圓中,圓心坐標(biāo)為所有端點(diǎn)的中心點(diǎn),所述中心點(diǎn)為所有端點(diǎn)的橫縱坐標(biāo)的平均值,這種圓心是新產(chǎn)生的交點(diǎn);更新端點(diǎn)數(shù)組D2,即從端點(diǎn)數(shù)組D2中去除這些端點(diǎn),同時更新交點(diǎn)數(shù)組J2,即把這些端點(diǎn)加到交點(diǎn)數(shù)組J2中;提取圓心到所有端點(diǎn)的曲線段,并將曲線段添加到相應(yīng)的曲線中; 步驟500,將步驟400所得的全部曲線轉(zhuǎn)化成圖的結(jié)構(gòu),獲取所有頂點(diǎn)之間的路徑,具體過程如下: 步驟501,將步驟400所得曲線的首末端點(diǎn)轉(zhuǎn)化成圖的頂點(diǎn),曲線轉(zhuǎn)化成圖的邊,相同端點(diǎn)的不同曲線用不同的邊表示,端點(diǎn)和邊都用數(shù)字進(jìn)行編號,得到由邊和點(diǎn)組成的圖;圖的頂點(diǎn)編號和圖的邊編號唯一,兩頂點(diǎn)之間有多條邊; 步驟502,生成一個曲線首末端點(diǎn)到編號的映射,同時生成端點(diǎn)數(shù)組D2和交點(diǎn)數(shù)組J2到數(shù)字編號的映射; 步驟503,通過棧實(shí)現(xiàn)深度優(yōu)先遍歷函數(shù)獲取所有頂點(diǎn)之間的路徑,閉合曲線是從端點(diǎn)到端點(diǎn),非閉合曲線是從交點(diǎn)到交點(diǎn),順序不同但是邊和點(diǎn)相同的路徑是同一條路徑; 步驟600,根據(jù)步驟501所得圖頂點(diǎn)和圖邊的編號及步驟502所得映射,將步驟503所得全部路徑還原成曲線,實(shí)現(xiàn)曲線重組,進(jìn)而得到需要的閉合和非閉合曲線,每一條曲線都是由有序序列點(diǎn)組成,所有曲線放進(jìn)曲線鏈表中,輸出是曲線結(jié)構(gòu)體鏈表序列。
【文檔編號】G06T7/00GK106097350SQ201610421447
【公開日】2016年11月9日
【申請日】2016年6月15日 公開號201610421447.5, CN 106097350 A, CN 106097350A, CN 201610421447, CN-A-106097350, CN106097350 A, CN106097350A, CN201610421447, CN201610421447.5
【發(fā)明人】賈棋, 徐秀娟, 許真珍, 趙小薇, 王倩, 王宇新, 劉斌
【申請人】大連理工大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1