專利名稱:數(shù)字圖像的線段描述方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)字圖像的線段描述方法。
背景技術(shù):
圖像分割是數(shù)字圖像處理技術(shù)的一個(gè)重要方面,其目的主要是將對象從背景中分離出來,以供后續(xù)處理。目前這方面的處理基本上是以像素為基礎(chǔ)而進(jìn)行的。
通常圖像分割的第一步是將圖像作二值化處理,之后再從二值化圖像中提取對象。
根據(jù)處理對象和背景的關(guān)系,二值化處理的方法各異。應(yīng)用最多的是閾值法,根據(jù)閾值的作用范圍可分為全局閾值法和局部閾值法,根據(jù)閾值的確定方法可分為固定閾值法和動態(tài)閾值法。
對二值化圖像進(jìn)行一系列處理如濾波、區(qū)域生長等,可以將對象從背景中分離出來。而目前這方面的處理技術(shù)均以像素為基礎(chǔ),即處理過程中,需一個(gè)像素一個(gè)像素地處理,限制了處理速度的提高。
以濾波處理為例,目前應(yīng)用的濾波器可分為空間域?yàn)V波器和頻率域?yàn)V波器。空間域?yàn)V波器主要有低通濾波器、高通濾波器、中值濾波器、高斯濾波器等等。這些濾波器一般都需將圖像與一個(gè)模板作卷積運(yùn)算,模板是m×n矩陣。圖像上要處理的區(qū)域內(nèi)所有像素均需與模板進(jìn)行卷積運(yùn)算。頻率域?yàn)V波器需作兩次變換處理,分別是從空間域到頻率域的轉(zhuǎn)換和在頻率域處理完成后從頻率域到空間域的轉(zhuǎn)換,圖像上的像素也必須逐個(gè)處理。這樣處理的時(shí)間復(fù)雜度取決于圖像的大小和模板矩陣的大小。
區(qū)域生長是從一個(gè)稱為種子的像素開始的,種子的附近像素與種子進(jìn)行比較,如果他們是相似的,則該像素被添加到當(dāng)前區(qū)域。然后將區(qū)域的其它像素作為種子,重復(fù)操作,直到?jīng)]有新的像素增加為止。在操作過程中,圖像上的像素也必須逐個(gè)處理,處理的時(shí)間復(fù)雜度取決于圖像的大小及圖像的復(fù)雜程度。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種數(shù)字圖像的線段描述方法,將數(shù)字圖像中同一行內(nèi)具有相同特征的連續(xù)的像素點(diǎn)用線段表示,以減少數(shù)據(jù)處理量,提高處理速度,使處理速度與圖像大小基本無關(guān),濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取操作可一次完成。
本發(fā)明的技術(shù)方案是一幅數(shù)字圖像由三層結(jié)構(gòu)描述圖像表ImageTable、行表RowTable及線段結(jié)點(diǎn)LineNode,其中1)線段結(jié)點(diǎn)LineNode是一個(gè)由三個(gè)域Start域、End域及Next組成的自定義結(jié)構(gòu),Start域和End域分別代表一條線段的起點(diǎn)和終點(diǎn)橫坐標(biāo),Next域?yàn)橹赶蛳乱粭l線段的指針;2)行表RowTable是圖像上同一行所有線段結(jié)點(diǎn)組成的單鏈表,代表數(shù)字圖像上的一行圖像;3)圖像表ImageTable是結(jié)點(diǎn)類型與LineNode相同且長度等于數(shù)字圖像高度的一維數(shù)組,其結(jié)點(diǎn)的Next域指向代表數(shù)字圖像某一行的行表RowTable,并反映該行的縱坐標(biāo);4)數(shù)字圖像按下面的方法處理后可轉(zhuǎn)換成線段描述方式對二值化處理后的數(shù)字圖像從上到下按行掃描,對每一行按從左到右的次序掃描,將每一行中連續(xù)的可能代表對象的像素點(diǎn)用線段結(jié)點(diǎn)LineNode記錄,每一行圖像上的所有線段結(jié)點(diǎn)之間通過線段結(jié)點(diǎn)的Next域鏈接成行表RowTable,行表RowTable由與該行序號相對應(yīng)的圖像表ImageTable的結(jié)點(diǎn)的Next域指示;數(shù)字圖像的濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取操作依靠縱坐標(biāo)相鄰的線段之間的鄰接關(guān)系進(jìn)行,對象的邊界數(shù)據(jù)存貯于圖像表的Start域和End域內(nèi)。
所述的縱坐標(biāo)相鄰的線段之間的鄰接關(guān)系,是指對于縱坐標(biāo)相鄰的兩條線段L1,L2,如果存在橫坐標(biāo)值xx∈L1且x∈L2 (1)則稱這兩條線段L1,L2相鄰接。否則,稱這兩條線段不相鄰接。
縱坐標(biāo)相鄰的兩條線段L1,L2不相鄰存在2種情況,即L1.Start域>L2.End域 (2)或L1.End域<L2.Start域 (3)縱坐標(biāo)相鄰的兩條線段不相鄰只存在4種情況,即L2.Start域<L1.Start域>L2.End域 (4)或L2.Start域<L1.End域>L2.End域 (5)或L1.Start域<L2.Start域>L1.End域 (6)
或L1.Start域<L2.End域>L1.End域 (7)在編程實(shí)現(xiàn)時(shí),利用公式(2)和公式(3)編制一個(gè)函數(shù)UnConnective,將縱坐標(biāo)相鄰的兩條線段作為參數(shù)輸入到一個(gè)函數(shù),根據(jù)公式(2)和公式(3)判斷其相鄰關(guān)系,如果滿足其中一個(gè)條件,則函數(shù)返回false,表示這兩條線段不相鄰;否則返回true,表示這兩條線段相鄰。利用公式(4)~(7)編制成另一個(gè)函數(shù)Connective,將縱坐標(biāo)相鄰的兩條線段作為參數(shù)輸入到一個(gè)函數(shù),根據(jù)公式(4)~(7)判斷其相鄰關(guān)系,如果滿足其中一個(gè)條件,則函數(shù)返回true,表示這兩條線段相鄰,否則返回false,表示這兩條線段不相鄰。
所述的數(shù)字圖像的濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取操作,是指1)對圖像按自上而下的次序進(jìn)行掃描,從中第i行取出一條線段L0,將其起點(diǎn)和終點(diǎn)值分別存入第i行表頭結(jié)點(diǎn),釋放線段L0;2)在i+1行取第一條線段L1,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L1的相鄰關(guān)系,如果相鄰,則將線段L1的起點(diǎn)和終點(diǎn)值存入第i+1行圖像表結(jié)點(diǎn),并釋放線段L0,否則,查找下一條線段;然后在i+1行取第二條線段L2,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L2的相鄰關(guān)系,如果相鄰,則將線段L2的終點(diǎn)值存入第i+1行表頭結(jié)點(diǎn),釋放線段L2。如此重復(fù),直到i+1行所有線段處理完畢;3)i+1行成為新的第i行,圖像表上結(jié)點(diǎn)i+1的Start域值和End域值分別成為線段L0的起點(diǎn)和終點(diǎn),重復(fù)操作2);4)當(dāng)i+1行掃描完畢,沒有新的相鄰線段加入時(shí),則表明圖像中一個(gè)區(qū)域已生長完成,此時(shí)判斷存放在表頭結(jié)點(diǎn)的對象大小,如果小于設(shè)定的閾值,則說明該區(qū)域?yàn)樵肼暎瑧?yīng)舍去。然后重復(fù)1)~3);否則,說明對象的邊界區(qū)域已基本確定,可退出循環(huán);5)回溯對圖像按自下而上的次序進(jìn)行掃描,由圖像表結(jié)點(diǎn)i的Start域值和End域值組成線段L0,在i-1行取第一條線段L1,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L1的相鄰關(guān)系,如果相鄰,則將線段L1的起點(diǎn)和終點(diǎn)值存入第i-1行圖像表結(jié)點(diǎn),并釋放線段L0,否則,查找下一條線段。然后在i-1行取第二條線段L2,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L2的相鄰關(guān)系,如果相鄰,則將線段L2的終點(diǎn)值存入第i-1行表頭結(jié)點(diǎn),釋放線段L2。如此重復(fù),直到i-1行所有線段處理完畢;然后i-1行成為新的i行,重復(fù)處理,直到整幅圖像處理完成。
本發(fā)明具有的有益的效果是將數(shù)字圖像上同一特征類型的連續(xù)的像素點(diǎn)被表示成線段,可減少數(shù)據(jù)處理量,提高處理速度,且處理速度與圖像大小基本無關(guān);濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取操作可一次完成。
圖1數(shù)字圖像及其描述方法示意圖;圖2是線段結(jié)點(diǎn)的結(jié)構(gòu)示意圖;圖3是縱坐標(biāo)相鄰的兩條線段之間不相鄰接的情況示意圖;圖4是縱坐標(biāo)相鄰的兩條線段之間相鄰接的情況示意圖;圖5是數(shù)字圖像1的原始圖像;圖6是數(shù)字圖像1的二值化圖像;圖7是數(shù)字圖像1經(jīng)過本方法處理后分割得到的對象;圖8是數(shù)字圖像1經(jīng)過本方法處理后得到的邊界;圖9是數(shù)字圖像2的原始圖像;圖10是數(shù)字圖像2的二值化圖像;圖11是數(shù)字圖像2回溯處理前分割得到的對象;圖12是數(shù)字圖像2回溯處理后分割得到的對象。
具體實(shí)施例方式
如圖1所示,一幅數(shù)字圖像由三層結(jié)構(gòu)組成圖像表ImageTable、行表RowTable及線段結(jié)點(diǎn)LineNode。
如圖2所示,線段結(jié)點(diǎn)LineNode是一個(gè)由三個(gè)域Start域、End域及Next組成的自定義結(jié)構(gòu),可用C語言作如下描述struct LineNode{int Start;//線段起點(diǎn)int End;//線段終點(diǎn)struct LineNode*next;//后繼指針};Start域和End域分別代表一條線段的起點(diǎn)和終點(diǎn),Next域?yàn)橹赶蛳乱粭l線段的指針。
行表RowTable是一個(gè)帶頭結(jié)點(diǎn)的單鏈表,結(jié)點(diǎn)類型LineNode類型,由數(shù)字圖像上一行所有線段組成,代表數(shù)字圖像的一行數(shù)據(jù)。
圖像表ImageTable是結(jié)點(diǎn)類型為LineNode類型的一維數(shù)組,其長度等于數(shù)字圖像高度;結(jié)點(diǎn)的下標(biāo)與數(shù)字圖像的列號相對應(yīng),每個(gè)結(jié)點(diǎn)的Next域指向數(shù)字圖像的一個(gè)行表RowTable,結(jié)點(diǎn)的下標(biāo)即為該行線段的縱坐標(biāo)。
數(shù)字圖像按下述方式處理后可轉(zhuǎn)換成線段描述方式1)首先對數(shù)字圖像按處理目的進(jìn)行二值化處理,處理后的圖像分別由0和1代表背景和目標(biāo)。
2)創(chuàng)建圖像表ImageTable,其結(jié)點(diǎn)類型為LineNode型,其長度等于數(shù)字圖像高度。創(chuàng)建bool型標(biāo)志變量LineStart域Tag,其初始值設(shè)為false。創(chuàng)建LineNode型指針變量pLineCurrent。
3)對數(shù)字圖像從0行開始按自上而下進(jìn)行的次序進(jìn)行逐行掃描,對每一行按從左至右的次序進(jìn)行掃描。這里,用變量i表示行號掃描前。掃描前,先動態(tài)生成一個(gè)LineNode型結(jié)點(diǎn),作為行表RowTable的頭結(jié)點(diǎn),該頭結(jié)點(diǎn)由ImageTable.Next域指示,并執(zhí)行pLineCurrent=ImageTable.Next操作,使pLineCurrent指向頭結(jié)點(diǎn)。然后開始進(jìn)行行掃描如果當(dāng)前像素值為1且LineStart域Tag為false,則動態(tài)生成一個(gè)LineNode型結(jié)點(diǎn),由pLineCurrent->Next域指示,并執(zhí)行下面的操作pLineCurrent=pLinCurrent->Next在該操作執(zhí)行后,新生成的結(jié)點(diǎn)由pLineCurrent指示。然后將當(dāng)前橫坐標(biāo)值寫入新結(jié)點(diǎn)的Start域,LineStart域Tag設(shè)為true。然后繼續(xù)掃描,直到找到第一個(gè)像素值為0的像素點(diǎn),此時(shí)將當(dāng)前橫坐標(biāo)值寫入新結(jié)點(diǎn)的End域,并將LineStart域Tag設(shè)為false。在一行掃描完成后,執(zhí)行pLineCurrent->Next=NULL,指示該行結(jié)束。
在所有行掃描結(jié)束后,即可將數(shù)字圖像轉(zhuǎn)換成線段描述方式。
在上述步驟完成之后,還需對圖像進(jìn)行進(jìn)一步的處理,如濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取等操作,這些操作要利用縱坐標(biāo)相鄰的兩條線段之間的鄰接關(guān)系進(jìn)行。
縱坐標(biāo)相鄰的兩條線段之間的鄰接關(guān)系用相鄰接和不相鄰接表示。其定義如下對于縱坐標(biāo)相鄰的兩條線段L1,L2,如果存在橫坐標(biāo)值xx∈L1且x∈L2 (1)則稱這兩條線段L1,L2相鄰接,否則,稱這兩條線段不相鄰接。
如圖3所示,縱坐標(biāo)相鄰的兩條線段之間不相鄰接。從圖中可以看出,兩條線段不相鄰存在2種情況即
L1.Start域>L2.End域 (2)或L1.End域<L2.Start域 (3)如圖4所示,縱坐標(biāo)相鄰的兩條線段之間相鄰接。從圖中可以看出,兩條線段不相鄰只存在4種情況即L2.Start域<L1.Start域>L2.End域 (4)或L2.Start域<L1.End域>L2.End域 (5)或L1.Start域<L2.Start域>L1.End域 (6)或L1.Start域<L2.End域>L1.End域 (7)在編程實(shí)現(xiàn)時(shí),利用公式(2)和公式(3)編制一個(gè)函數(shù)UnConnective,將縱坐標(biāo)相鄰的兩條線段作為參數(shù)輸入到一個(gè)函數(shù),根據(jù)公式(2)和公式(3)判斷其相鄰關(guān)系,如果滿足其中一個(gè)條件,則函數(shù)返回false,表示這兩條線段不相鄰,否則返回true,表示這兩條線段相鄰。也可利用公式(4)~(7)編制另一個(gè)函數(shù)Connective,將縱坐標(biāo)相鄰的兩條線段作為參數(shù)輸入到一個(gè)函數(shù),根據(jù)公式(4)~(7)判斷其相鄰關(guān)系,如果滿足其中一個(gè)條件,則函數(shù)返回true,表示這兩條線段相鄰,否則返回false,表示這兩條線段不相鄰。
濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取等操作按下述步驟進(jìn)行1)對圖像按自上而下的次序進(jìn)行掃描,從中第i行取出一條線段L0,將其起點(diǎn)和終點(diǎn)值分別存入第i行表頭結(jié)點(diǎn),釋放線段L0。
2)在i+1行取第一條線段L1,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L1的相鄰關(guān)系,如果相鄰,則將線段L1的起點(diǎn)和終點(diǎn)值存入第i+1行圖像表結(jié)點(diǎn),并釋放線段L0,否則,查找下一條線段。然后在i+1行取第二條線段L2,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L2的相鄰關(guān)系,如果相鄰,則將線段L2的終點(diǎn)值存入第i+1行表頭結(jié)點(diǎn),釋放線段L2。如此重復(fù),直到i+1行所有線段處理完畢。
3)i+1行成為新的第i行,圖像表上結(jié)點(diǎn)i+1的Start域值和End域值分別成為線段L0的起點(diǎn)和終點(diǎn),重復(fù)操作2)。
4)當(dāng)i+1行掃描完畢,沒有新的相鄰線段加入時(shí),則表明圖像中一個(gè)區(qū)域已生長完成,此時(shí)判斷存放在表頭結(jié)點(diǎn)的對象大小,如果小于設(shè)定的閾值,則說明該區(qū)域?yàn)樵肼?,?yīng)舍去。然后重復(fù)1)~3)。否則,說明對象的邊界區(qū)域已基本確定,可退出循環(huán)。
5)回溯對圖像按自下而上的次序進(jìn)行掃描,由圖像表結(jié)點(diǎn)i的Start域值和End域值組成線段L0,在i-1行取第一條線段L1,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L1的相鄰關(guān)系,如果相鄰,則將線段L1的起點(diǎn)和終點(diǎn)值存入第i-1行圖像表結(jié)點(diǎn),并釋放線段L0,否則,查找下一條線段。然后在i-1行取第二條線段L2,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L2的相鄰關(guān)系,如果相鄰,則將線段L2的終點(diǎn)值存入第i-1行表頭結(jié)點(diǎn),釋放線段L2。如此重復(fù),直到i-1行所有線段處理完畢;然后i-1行成為新的i行,重復(fù)處理,直到整幅圖像處理完成。
在整幅圖像掃描完成后,對象的邊界數(shù)據(jù)就存放在圖像表結(jié)點(diǎn)中。
圖5~圖8是對數(shù)字圖像1(柑桔圖像)用上述方法進(jìn)行處理的結(jié)果,圖5為原始圖像,圖6為二值化圖像,圖7本方法處理后分割得到的對象,圖8是數(shù)字圖像1經(jīng)過本方法處理后得到的邊界。從中可以看出,該圖像經(jīng)本方法處理后,由于二值分割不完美而引起的水果內(nèi)部區(qū)域缺失被自動補(bǔ)齊了。
圖9~圖12是對數(shù)字圖像2(柑桔圖像)用上述方法進(jìn)行處理的結(jié)果,圖9為原始圖像,圖10為二值化圖像,圖11是數(shù)字圖像2回溯處理前分割得到的對象,圖12是數(shù)字圖像2回溯處理后分割得到的對象。從中可以看出,回溯處理前,圖11的B區(qū)缺失了,經(jīng)過回溯處理后,B區(qū)得到了恢復(fù)。
權(quán)利要求
1.一種數(shù)字圖像的線段描述方法,其特征在于一幅數(shù)字圖像由三層結(jié)構(gòu)描述圖像表ImageTable、行表RowTable及線段結(jié)點(diǎn)LineNode,其中1)線段結(jié)點(diǎn)LineNode是一個(gè)由三個(gè)域Start域、End域及Next組成的自定義結(jié)構(gòu),Start域和End域分別代表一條線段的起點(diǎn)和終點(diǎn)橫坐標(biāo),Next域?yàn)橹赶蛳乱粭l線段的指針;2)行表RowTable是圖像上同一行所有線段結(jié)點(diǎn)組成的單鏈表,代表數(shù)字圖像上的一行圖像;3)圖像表ImageTable是結(jié)點(diǎn)類型與LineNode相同且長度等于數(shù)字圖像高度的一維數(shù)組,其結(jié)點(diǎn)的Next域指向代表數(shù)字圖像某一行的行表RowTable,并反映該行的縱坐標(biāo);4)數(shù)字圖像按下面的方法處理后可轉(zhuǎn)換成線段描述方式對二值化處理后的數(shù)字圖像從上到下按行掃描,對每一行按從左到右的次序掃描,將每一行中連續(xù)的可能代表對象的像素點(diǎn)用線段結(jié)點(diǎn)LineNode記錄,每一行圖像上的所有線段結(jié)點(diǎn)之間通過線段結(jié)點(diǎn)的Next域鏈接成行表RowTable,行表RowTable由與該行序號相對應(yīng)的圖像表ImageTable的結(jié)點(diǎn)的Next域指示;數(shù)字圖像的濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取操作依靠縱坐標(biāo)相鄰的線段之間的鄰接關(guān)系進(jìn)行,對象的邊界數(shù)據(jù)存貯于圖像表的Start域和End域內(nèi)。
2.根據(jù)權(quán)利要求1所述的一種數(shù)字圖像的線段描述方法,其特征在于所述的縱坐標(biāo)相鄰的線段之間的鄰接關(guān)系,是指對于縱坐標(biāo)相鄰的兩條線段L1,L2,如果存在橫坐標(biāo)值xx∈L1且x∈L2 (1)則稱這兩條線段L1,L2相鄰接。否則,稱這兩條線段不相鄰接。縱坐標(biāo)相鄰的兩條線段L1,L2不相鄰存在2種情況,即;L1.Start域>L2.End域 (2)或L1.End域<L2.Start域 (3)縱坐標(biāo)相鄰的兩條線段不相鄰只存在4種情況,即L2.Start域<L1.Start域>L2.End域 (4)或L2.Start域<L1.End域>L2.End域 (5)或L1.Start域<L2.Start域>L1.End域(6)或L1.Start域<L2.End域>L1.End域 (7)在編程實(shí)現(xiàn)時(shí),利用公式(2)和公式(3)編制一個(gè)函數(shù)UnConnective,將縱坐標(biāo)相鄰的兩條線段作為參數(shù)輸入到一個(gè)函數(shù),根據(jù)公式(2)和公式(3)判斷其相鄰關(guān)系,如果滿足其中一個(gè)條件,則函數(shù)返回false,表示這兩條線段不相鄰;否則返回true,表示這兩條線段相鄰。利用公式(4)~(7)編制成另一個(gè)函數(shù)Connective,將縱坐標(biāo)相鄰的兩條線段作為參數(shù)輸入到一個(gè)函數(shù),根據(jù)公式(4)~(7)判斷其相鄰關(guān)系,如果滿足其中一個(gè)條件,則函數(shù)返回true,表示這兩條線段相鄰,否則返回false,表示這兩條線段不相鄰。
3.根據(jù)權(quán)利要求1所述的一種數(shù)字圖像的線段描述方法,其特征在于所述的數(shù)字圖像的濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取操作,是指1)對圖像按自上而下的次序進(jìn)行掃描,從中第i行取出一條線段L0,將其起點(diǎn)和終點(diǎn)值分別存入第i行表頭結(jié)點(diǎn),釋放線段L0;2)在i+1行取第一條線段L1,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L1的相鄰關(guān)系,如果相鄰,則將線段L1的起點(diǎn)和終點(diǎn)值存入第i+1行圖像表結(jié)點(diǎn),并釋放線段L0,否則,查找下一條線段;然后在i+1行取第二條線段L2,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L2的相鄰關(guān)系,如果相鄰,則將線段L2的終點(diǎn)值存入第i+1行表頭結(jié)點(diǎn),釋放線段L2;如此重復(fù),直到i+1行所有線段處理完畢;3)i+1行成為新的第i行,圖像表上結(jié)點(diǎn)i+1的Start域值和End域值分別成為線段L0的起點(diǎn)和終點(diǎn),重復(fù)操作2);4)當(dāng)i+1行掃描完畢,沒有新的相鄰線段加入時(shí),則表明圖像中一個(gè)區(qū)域已生長完成,此時(shí)判斷存放在表頭結(jié)點(diǎn)的對象大小,如果小于設(shè)定的閾值,則說明該區(qū)域?yàn)樵肼?,?yīng)舍去。然后重復(fù)1)~3);否則,說明對象的邊界區(qū)域已基本確定,可退出循環(huán);5)回溯對圖像按自下而上的次序進(jìn)行掃描,由圖像表結(jié)點(diǎn)i的Start域值和End域值組成線段L0,在i-1行取第一條線段L1,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L1的相鄰關(guān)系,如果相鄰,則將線段L1的起點(diǎn)和終點(diǎn)值存入第i-1行圖像表結(jié)點(diǎn),并釋放線段L0,否則,查找下一條線段。然后在i-1行取第二條線段L2,采用UnConnective函數(shù)或Connective函數(shù)判斷線段L0與線段L2的相鄰關(guān)系,如果相鄰,則將線段L2的終點(diǎn)值存入第i-1行表頭結(jié)點(diǎn),釋放線段L2。如此重復(fù),直到i-1行所有線段處理完畢;然后i-1行成為新的i行,重復(fù)處理,直到整幅圖像處理完成。
全文摘要
本發(fā)明公開了一種數(shù)字圖像的線段描述方法,由圖像表、行表及線段結(jié)點(diǎn)描述;線段結(jié)點(diǎn)包括Start域、End域及Next等3個(gè)域;行表是同一行上線段結(jié)點(diǎn)組成的單鏈表;圖像表是由線段結(jié)點(diǎn)組成且長度為圖像高度的一維數(shù)組,其結(jié)點(diǎn)的Next域指向?qū)?yīng)的行表,并反映該行的縱坐標(biāo);數(shù)字圖像的濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取等操作依靠縱坐標(biāo)相鄰的線段之間的鄰接關(guān)系進(jìn)行,提取的對象邊界數(shù)據(jù)存貯于圖像表的Start域和End域內(nèi);本發(fā)明將數(shù)字圖像上特征相同的連續(xù)像素點(diǎn)用線段表示,可減少數(shù)據(jù)處理量,提高處理速度,且處理速度與圖像大小基本無關(guān);濾波、區(qū)域生長、對象邊界數(shù)據(jù)提取等操作可一次完成。
文檔編號G06T7/60GK1619594SQ20041008918
公開日2005年5月25日 申請日期2004年11月30日 優(yōu)先權(quán)日2004年11月30日
發(fā)明者饒秀勤, 應(yīng)義斌 申請人:浙江大學(xué)