專利名稱:交錯(cuò)線矢量化提取及圖形識(shí)別方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種工程CAD圖紙的矢量化方法,特別是一種工程CAD圖紙的矢量化 圖形識(shí)別方法。
背景技術(shù):
在當(dāng)今的信息社會(huì)中,盡管CAD技術(shù)在工業(yè)設(shè)計(jì)領(lǐng)域得到了廣泛的應(yīng)用,但仍有 大量的圖紙信息以紙質(zhì)、圖片的形式保存、管理和使用著。這些工程圖紙往往使一個(gè)系統(tǒng)或 者行業(yè)長(zhǎng)時(shí)間積累下來(lái)的,完整的保存了以往的寶貴經(jīng)驗(yàn),對(duì)以后的設(shè)計(jì)有很好的借鑒作 用。其中相當(dāng)一部分還會(huì)在以后的設(shè)計(jì)和制造中被修改和重復(fù)使用。為了復(fù)用這些圖紙, 將這些圖紙圖像的信息用計(jì)算機(jī)進(jìn)行管理,并建立相應(yīng)的數(shù)據(jù)庫(kù),以大大減少圖紙的更新 和維護(hù)耗費(fèi)的人力資源,更加便于存儲(chǔ)、修改、查詢、交流,是必然的發(fā)展趨勢(shì),具有重要的 社會(huì)現(xiàn)實(shí)意義。工程圖矢量化是將工程圖的掃描位圖表達(dá)轉(zhuǎn)化為CAD系統(tǒng)使用的圖形描述 矢量實(shí)體,如直線、圓、圓弧、曲線以及字符等,可大大提高圖紙的復(fù)用能力。
完整的矢量化過(guò)程大體分為兩類,一種是包括有圖像的預(yù)處理、圖像二值化以及 二值圖的矢量化識(shí)別過(guò)程,即直接在光柵圖上進(jìn)行圖形識(shí)別的矢量化系統(tǒng);一種是包括光 柵圖初步矢量化和圖形類型檢測(cè)/識(shí)別的兩步操作的二維矢量化系統(tǒng)。其中應(yīng)用較為理想 的是第二種方法,即先通過(guò)矢量化預(yù)處理方法,然后利用預(yù)處理過(guò)程的輸出數(shù)據(jù)進(jìn)行基于 圖形類型的檢測(cè)和識(shí)別過(guò)程,該過(guò)程可以得到較為理想的CAD文件。圖像初步矢量化過(guò)程 同樣包括有圖像的預(yù)處理過(guò)程、圖像的二值化等過(guò)程。本發(fā)明涉及包括圖像初步矢量化和 基于矢量化的圖形檢測(cè)識(shí)別的整個(gè)過(guò)程,稱為工程CAD圖紙的矢量化圖形識(shí)別系統(tǒng)。
國(guó)內(nèi)外研究人員針對(duì)圖像矢量化處理過(guò)程提出了一些比較有效的算法,主要集中 于初步矢量化/識(shí)別的思路。不同的初步矢量化算法往往對(duì)應(yīng)于不同的圖形識(shí)別算法。這 里根據(jù)初步矢量化算法分類有基于細(xì)化的方法、基于輪廓線的方法、基于圖形結(jié)構(gòu)的方 法、離散象素跟蹤的方法以及正交之字型(簡(jiǎn)稱為0ZZ)方法。目前針對(duì)矢量化的研究基本 上都是在這些方法的框架下進(jìn)行的,但對(duì)于圖像具有噪聲干擾,僅有離散圖像跟蹤的方法 能夠取得比較好的效果,但離散圖像跟蹤的方法為了避免在初步矢量化過(guò)程中全圖搜索的 過(guò)程而采用了位置索引算法,該算法得到的覆蓋域不能完全與原圖匹配,會(huì)造成一些誤矢 量化的結(jié)果。另外,由于對(duì)工程CAD圖紙的矢量化在理論方面還有很多不完善的地方,因此 大都仍然處于研究階段,沒(méi)有形成完整的系統(tǒng)。 現(xiàn)有專利(基于二值區(qū)域的逐步迭代矢量化預(yù)處理系統(tǒng))和專利( 一種工程CAD 圖紙的矢量化識(shí)別方法)分別提出了一種二值區(qū)域的逐步迭代矢量化處理方法和一種矢 量化識(shí)別方法。其中第一項(xiàng)專利的矢量化預(yù)處理方法主要進(jìn)行了基于斜框覆蓋域的初步矢 量化過(guò)程,但該覆蓋域方法并不能有效覆蓋已矢量化部分,而且很可能覆蓋多余的未矢量 化區(qū)域;第二項(xiàng)專利的識(shí)別過(guò)程是在前一個(gè)專利的基礎(chǔ)上進(jìn)行的,矢量化數(shù)據(jù)通過(guò)位置索 引方法提高識(shí)別的效率,識(shí)別方法采用了基于假設(shè)/檢驗(yàn)的方法進(jìn)行。由于存在交錯(cuò)線后 位置索引方法帶來(lái)的誤差,使得識(shí)別結(jié)果獲得了很多不完整的圖形。
發(fā)明內(nèi)容
本發(fā)明提供一種交錯(cuò)線矢量化提取及圖形識(shí)別方法,該方法能改善矢量化識(shí)別的 結(jié)果,提高矢量化識(shí)別的運(yùn)算速率,并具有適用范圍廣、矢量化識(shí)別精度高、運(yùn)算速度快等 優(yōu)點(diǎn),對(duì)于工程圖紙矢量化系統(tǒng)處理以及三維重建等工作具有重要意義和實(shí)用價(jià)值。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是一種交錯(cuò)線矢量化提取及圖形識(shí)別方法, 包括在通用計(jì)算機(jī)平臺(tái)上采用MFC微軟的基礎(chǔ)類庫(kù)進(jìn)行圖像預(yù)處理和矢量化處理,具體步 驟如下 1.圖像預(yù)處理 (1)去除工程圖像的噪聲點(diǎn) (2)工程圖紙二值化處理 首先將藍(lán)色背景的工程圖紙的RGB表示方式轉(zhuǎn)變成為HSI表示方式,然后結(jié)合RGB
表示方法中的B分量對(duì)圖像的I分量進(jìn)行二值化處理,而后,利用B分量二值化結(jié)果對(duì)I分
量的二值化結(jié)果進(jìn)行校正,在獲得灰度直方圖后進(jìn)行直方圖的軟平滑濾波,求取灰度直方
圖兩個(gè)峰值點(diǎn)之間的局部最小值點(diǎn),該局部最小值點(diǎn)作為全局閾值。 2.矢量化處理 (1)初始中軸點(diǎn)獲取 1)對(duì)整個(gè)圖像進(jìn)行掃描,掃描線進(jìn)入矢量化區(qū)域的點(diǎn)cl{x, ylh掃描線躍出矢量 化區(qū)域的點(diǎn)為c2{x, y2}像素的位置信息; 2)對(duì)cl和c2進(jìn)行平均,獲得中間點(diǎn)pi {x, (yl+y2)/2}; 3)以pi點(diǎn)為中心進(jìn)行上下掃描,得到cl和c2平均值p2{(xl+x2)/2, (yl+y2)/2}; 4)判斷pl和p2之間的像素距離,S卩(xl+x2)/2和x之間的差值,如果該差值小于 一個(gè)像素值,則將p2點(diǎn)作為初始中軸點(diǎn);否則從p2點(diǎn)開(kāi)始橫向掃描,返回步驟l)繼續(xù)2)、 3) 、4)步; (2)中軸點(diǎn)鏈掃描獲取 從初始中軸pixl點(diǎn)開(kāi)始,將pixl點(diǎn)保存在中軸點(diǎn)鏈的中軸點(diǎn)列表中,并將相應(yīng)的 寬度信息加入到鏈表中,寬度信息是該中軸點(diǎn)縱向方向的碰撞距離;
(3)中軸點(diǎn)鏈掃描條件判斷 在進(jìn)入點(diǎn)鏈獲取掃描前,先進(jìn)行三個(gè)條件的判斷
4)寬度一致性檢驗(yàn);
5)方向一致性檢驗(yàn);
6)掃描步長(zhǎng)限制條件檢驗(yàn);
(4)中軸點(diǎn)多義線處理 得到整張圖紙的中軸點(diǎn)鏈信息后,采用多義線處理的手段對(duì)這些信息進(jìn)行壓縮, 該過(guò)程是對(duì)中軸點(diǎn)鏈的再次掃描;
(5)節(jié)點(diǎn)復(fù)原 首先放棄當(dāng)前的中軸點(diǎn),將前一個(gè)中軸點(diǎn)設(shè)置為當(dāng)前中軸點(diǎn),緩沖計(jì)數(shù)器自動(dòng)加 l,然后對(duì)該中軸點(diǎn)的與中軸點(diǎn)掃描方向一致的最大掃描步長(zhǎng)進(jìn)行設(shè)置,使其進(jìn)行折半處理,重新進(jìn)行一次中軸點(diǎn)橫向和縱向掃描,通過(guò)循環(huán)過(guò)程后,系統(tǒng)會(huì)獲得整張工程圖紙的中 軸點(diǎn)鏈,該中軸點(diǎn)鏈包括中軸點(diǎn)的鏈表信息、中軸點(diǎn)的寬度信息以及該中軸點(diǎn)鏈的方向信 息; (6)軸出中軸點(diǎn)鏈 上述第二步驟中,峰值點(diǎn)的求取過(guò)程和它們之間的局部最小值點(diǎn)的求取過(guò)程如 下 1)定義一個(gè)灰度直方圖類CImageHist,該類中主要包含了一個(gè)一維向量m—
ImgeHi st 、對(duì)向量進(jìn)行平滑的濾波函數(shù)Fi 11er ()、對(duì) 一 維向量進(jìn)行求取峰值點(diǎn)的函數(shù)
getMaxVector ()以及求取某峰值點(diǎn)之間的局部最小值點(diǎn)的函數(shù)getLocalMin(); 2)灰度直方圖的一維向量mJmgeHist,其維度為256,對(duì)應(yīng)于像素值的0到255 ; 3)平滑的濾波函數(shù)Filter ()中選擇不同的濾波方法,使用平滑方法,利用灰度值
統(tǒng)計(jì)變化最大閾值來(lái)平滑直方圖,對(duì)向量mJmgeHist從0點(diǎn)開(kāi)始掃描,以此對(duì)變化幅度進(jìn)
行比較,當(dāng)變化幅度大于某個(gè)閾值時(shí),則根據(jù)變化方向加減該位置的元素值,否則,保持原
數(shù)值不變;該函數(shù)的輸出為一個(gè)bool變量,以表示正確執(zhí)行,方便后續(xù)函數(shù)的調(diào)用; 4)對(duì)一維向量進(jìn)行求取峰值點(diǎn)函數(shù)getMaxVector ()返回值為一個(gè)峰值列表,比
較大小,若發(fā)現(xiàn)后值比前值小,則認(rèn)為前值所對(duì)應(yīng)的數(shù)值為一個(gè)峰值點(diǎn); 5)對(duì)給定峰值點(diǎn)求取局部最小值點(diǎn)getLocalMin(),返回值為一個(gè)一維數(shù)組,數(shù)
組中包含兩個(gè)元素,第一個(gè)元素表示該最小值點(diǎn)的數(shù)值,第二個(gè)點(diǎn)表示該最小值點(diǎn)所對(duì)應(yīng)
的灰度值。 上述第四步驟中,對(duì)于一條中軸點(diǎn)鏈,該過(guò)程如下 5)設(shè)置第一個(gè)中軸點(diǎn)為當(dāng)前中軸點(diǎn),第二個(gè)中軸點(diǎn)為拓展中軸點(diǎn),當(dāng)前中軸點(diǎn)與 拓展中軸點(diǎn)進(jìn)行連線處理; 6)連線處理是在拓展中軸點(diǎn)上以該中軸點(diǎn)的寬度為直徑,以該中軸點(diǎn)為圓心作 圓,在用當(dāng)前的中軸點(diǎn)與這個(gè)圓做兩條切線; 7)從拓展中軸點(diǎn)開(kāi)始找下一個(gè)中軸點(diǎn),對(duì)其作圓,方法與連線處理過(guò)程一樣,如果
這個(gè)圓落在這兩條切線內(nèi),則將該中軸點(diǎn)刪除;再找下一個(gè)中軸點(diǎn),重復(fù)本次操作; 8)直到有中軸點(diǎn)的圓與切線相切,則將該中軸點(diǎn)作為當(dāng)前中軸點(diǎn),該當(dāng)前中軸點(diǎn)
的第二個(gè)中軸點(diǎn)設(shè)置為擴(kuò)展中軸點(diǎn),重復(fù)2) 、3)步驟直到該條中軸點(diǎn)鏈掃描完成。 本發(fā)明的有益效果是本發(fā)明方法是一種工程CAD圖紙的矢量化圖形識(shí)別方法具
有適用范圍廣、矢量化精度高、運(yùn)算速度快等優(yōu)點(diǎn),對(duì)于工程圖紙矢量化系統(tǒng)以及三維重建
等工作具有重要意義和實(shí)用價(jià)值。
圖1是本發(fā)明方法的流程示意圖; 圖2是本發(fā)明實(shí)施例中經(jīng)過(guò)去噪處理后的圖像; 圖3是本發(fā)明實(shí)施例中經(jīng)過(guò)矢量化提取過(guò)程后的圖像。
具體實(shí)施例方式
以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步描述。
如圖1所示,本發(fā)明的交錯(cuò)線矢量化提取及圖形識(shí)別方法,包括在通用計(jì)算機(jī)平
臺(tái)上采用MFC微軟的基礎(chǔ)類庫(kù)進(jìn)行圖像預(yù)處理和矢量化處理,具體步驟如下 1.圖像預(yù)處理 (1)去除工程圖像的噪聲點(diǎn) (2)工程圖紙二值化處理 2.矢量化處理 (1)初始中軸點(diǎn)獲取 (2)中軸點(diǎn)鏈掃描獲取 (3)中軸點(diǎn)鏈掃描條件判斷 (4)中軸點(diǎn)多義線處理 (5)節(jié)點(diǎn)復(fù)原 (6)軸出中軸點(diǎn)鏈 本實(shí)施例中的圖像采集裝置采用三星KV-S3065CWCN型號(hào)的一體機(jī)掃描儀,其性 能如下 掃描元件CIS ;
設(shè)計(jì)類型文件掃描儀;
掃描范圍227 X 2540mm ;
光學(xué)分辨率600X600 ; 色彩位數(shù)黑白(二值,半色調(diào)模式),灰度(8bit),彩色(24bit);
掃描速度60卯m/110ipm ; 傳輸接口 Ultra SCSI (SCSI-III)傳輸速率20M-byte/sec, 接口器50細(xì)針,USB2. 0 ; 掃描介質(zhì)文件; 光源性能雙管白色熒光燈。
本實(shí)施例中的計(jì)算機(jī)平臺(tái)性能如下 CPU主頻:Celon 2. 66G ; 內(nèi)存容量516M ;運(yùn)行操作系統(tǒng)為Windows XP ; —個(gè)并行打印端口,配置為USB端口。 本發(fā)明在通用計(jì)算機(jī)平臺(tái)上啟動(dòng)矢量化系統(tǒng),矢量化系統(tǒng)關(guān)聯(lián)掃描設(shè)備啟動(dòng)程 序,使其對(duì)掃描設(shè)備進(jìn)行掃描,獲得圖紙的BMP格式文件,各步驟的具體細(xì)節(jié)描述如下
1、在通用計(jì)算機(jī)平臺(tái)上的矢量化系統(tǒng)采用了 MFC的結(jié)構(gòu)設(shè)計(jì),在該結(jié)構(gòu)中設(shè)計(jì)了 一個(gè)掃描工具、一個(gè)矢量化工具以及識(shí)別工具 第一步對(duì)于獲得的圖像進(jìn)行二值化和基本的預(yù)處理,如采用形態(tài)學(xué)濾波的方法 對(duì)圖像的噪聲點(diǎn)進(jìn)行去除。 MFC是微軟的基礎(chǔ)類庫(kù),它提供有很方便的構(gòu)建軟件系統(tǒng)架構(gòu)的能力,其使用的關(guān) 鍵之處在于消息和命令的傳遞機(jī)制。本發(fā)明的掃描工具、矢量化工具以及識(shí)別工具就是使 用命令機(jī)制構(gòu)造的。使用需求的定義如下 掃描工具進(jìn)程直接調(diào)用三星掃描儀的API函數(shù)進(jìn)行,該過(guò)程的調(diào)用方法和傳統(tǒng)的
7函數(shù)調(diào)用方法類似,本發(fā)明不再予以陳述。矢量化工具啟動(dòng)2步驟的矢量化過(guò)程。識(shí)別工 具啟動(dòng)了一個(gè)MFC的對(duì)話框,在該對(duì)話框中具有不同圖形的拓展復(fù)選框,可供用戶選擇,如 "直線"、"圓弧"、"橢圓弧"、"點(diǎn)劃線"以及"全部圖形"等。
對(duì)于該系統(tǒng)的具體實(shí)現(xiàn)概要如下 設(shè)掃描工具的ID號(hào)為ID_SCAN,矢量化工具的ID號(hào)為ID_VECT0R,識(shí)別工具的ID 號(hào)為ID_REC0。這些ID號(hào)在MFC框架的Resouce.h文件中定義,其定義方法也是非常成熟 的技術(shù),這里不再敘述。 為了使ID號(hào)與程序的調(diào)用子函數(shù)對(duì)應(yīng),這里使用了 MFC的消息傳遞和命令傳遞機(jī) 制。在系統(tǒng)的視圖類CMyView中,定義了這樣的一個(gè)映射關(guān)系
ON—COMMAND (ID_VECT0R, OnVectorization)
0N_C0MMAND(ID_REC0, OnRecognition) 2、系統(tǒng)的矢量化工具采用了區(qū)域增長(zhǎng)和矢量化區(qū)域包圍合以及多條件限制的方 法,該方法分為四步進(jìn)行,其具體過(guò)程如下 由于工程機(jī)械圖紙是一種藍(lán)色背景的圖像,而單純的矢量化方法需要在二值化圖 像上進(jìn)行,本發(fā)明的二值化方法采用的是一種自適應(yīng)的二值化方法,能夠有效去除工程圖 紙的無(wú)效背景。具體過(guò)程如下 第一、首先將藍(lán)色背景的工程圖紙的RGB表示方式轉(zhuǎn)變成為色彩耦合度很小的 HSI表示方式,在這種表示方式中,H分量反映的是色度信息;S分量反映的是飽和度信息; I分量反映的是對(duì)比度信息。對(duì)比度信息將RGB分量的所有能夠反映的對(duì)比度特征用一個(gè) 分量表達(dá)出來(lái)了,這種方式有利于使用灰度圖像處理方法來(lái)處理彩色圖像,保證了對(duì)比度 信息的缺失。 第二、結(jié)合RGB表示方法中的B分量對(duì)圖像的I分量進(jìn)行二值化處理。B分量反映 了圖像的藍(lán)色分量,工程圖紙的藍(lán)色分量反映出其背景信息,所謂二值化其實(shí)就是對(duì)背景 信息的濾除。本發(fā)明對(duì)B分量和I分量分別進(jìn)行自適應(yīng)的二值化處理,而后,利用B分量二 值化結(jié)果對(duì)I分量的二值化結(jié)果進(jìn)行校正。圖像的全局閾值使用了灰度直方圖低谷點(diǎn)的方 法,所謂灰度直方圖是對(duì)灰度圖像像素灰度值的一種統(tǒng)計(jì)結(jié)果,即統(tǒng)計(jì)整張圖像在0 255 個(gè)灰度等級(jí)下的分布。在獲得了灰度直方圖后進(jìn)行直方圖的軟平滑濾波,求取灰度直方圖 兩個(gè)峰值點(diǎn)之間的局部最小值點(diǎn),該局部最小值點(diǎn)作為全局閾值。為了獲得較快速的處理 過(guò)程,本發(fā)明的峰值點(diǎn)的求取過(guò)程和它們之間的局部最小值點(diǎn)的求取過(guò)程如下 1)定義一個(gè)灰度直方圖類CImageHist,該類中主要包含了一個(gè)一維向量m—
ImgeHi st 、對(duì)向量進(jìn)行平滑的濾波函數(shù)Fi 11er ()、對(duì) 一 維向量進(jìn)行求取峰值點(diǎn)的函數(shù)
getMaxVector ()以及求取某峰值點(diǎn)之間的局部最小值點(diǎn)的函數(shù)getLocalMin ()。 2)灰度直方圖的一維向量mJmgeHist,其維度為256,對(duì)應(yīng)于像素值的0到255 ; 3)平滑的濾波函數(shù)Filter ()中有一個(gè)方法選擇參數(shù),即選擇不同的濾波方法,本
實(shí)施例中使用了軟件開(kāi)關(guān)的平滑方法,利用了灰度值統(tǒng)計(jì)變化最大閾值來(lái)平滑直方圖,對(duì)
向量nUmgeHist從0點(diǎn)開(kāi)始掃描,以此對(duì)變化幅度進(jìn)行比狡,當(dāng)變化幅度大于某個(gè)閾值時(shí),
則根據(jù)變化方向加減該位置的元素值,否則,保持原數(shù)值不變;該函數(shù)的輸出為一個(gè)bool
變量,以表示正確執(zhí)行,方便后續(xù)函數(shù)的調(diào)用。 4)對(duì)一維向量進(jìn)行求取峰值點(diǎn)函數(shù)getMaxVector()返回值為一個(gè)峰值列表,本
8實(shí)施例中使用比較大小,若發(fā)現(xiàn)后值比前值小,則認(rèn)為前值所對(duì)應(yīng)的數(shù)值為一個(gè)峰值點(diǎn)。本 實(shí)施例中使用兩次求峰值方法,得出的峰值點(diǎn)列表再作為輸出。 5)對(duì)給定峰值點(diǎn)求取局部最小值點(diǎn)getLocalMin(),該方法返回值為一個(gè)一維數(shù) 組,數(shù)組中包含兩個(gè)元素,第一個(gè)元素表示該最小值點(diǎn)的數(shù)值,第二個(gè)點(diǎn)表示該最小值點(diǎn)所 對(duì)應(yīng)的灰度值。 如圖2所示為本步驟所獲得的圖去噪處理后的圖像。 第三、為了保留工程機(jī)械圖紙的有效信息,本發(fā)明對(duì)二值像中包含的噪聲點(diǎn) 進(jìn)行類似形態(tài)學(xué)濾波的處理過(guò)程,該形態(tài)學(xué)濾波方法考慮了像素的局部灰度信息分布特 征。形態(tài)學(xué)因子選擇了 5X5的正方形窗口,在圖像中進(jìn)行全局掃描,掃描窗口中對(duì)應(yīng)的區(qū) 域進(jìn)行了灰度統(tǒng)計(jì),如果統(tǒng)計(jì)結(jié)果大于一個(gè)給定的數(shù)字,且該窗口所對(duì)應(yīng)的形態(tài)不是預(yù)先 給定的如圖2所示的幾種形態(tài)時(shí),本實(shí)施例中使用3,則說(shuō)明該處為孤立噪聲點(diǎn),將該窗口 的中心點(diǎn)所對(duì)應(yīng)的圖像像素灰度值賦值為O,表明為背景。
第二步獲取二值化圖像某一個(gè)矢量的初始中軸點(diǎn)。 1)對(duì)整個(gè)圖像進(jìn)行掃描, 一旦掃描線碰到從1到0的狀態(tài)時(shí),則表明該掃描線即將 進(jìn)入矢量化區(qū)域,并對(duì)該點(diǎn)進(jìn)行標(biāo)記cl。標(biāo)記方法使用像素的位置信息{x, ylh從該點(diǎn)開(kāi) 始繼續(xù)掃描,如果碰到從0到1的狀態(tài)時(shí),則表明掃描線即將躍出矢量化區(qū)域,并記錄該點(diǎn) 為c2{x, y2}; 2)對(duì)cl和c2進(jìn)行平均,獲得中間點(diǎn),標(biāo)記為pl點(diǎn){x, (yl+y2)/2};
3)以pl點(diǎn)為中心進(jìn)行上下掃描,向上掃描時(shí),如果碰到從O到1的狀態(tài)時(shí),則將相 應(yīng)的點(diǎn)記錄為cl, {xl, (yl+y2)/2h對(duì)應(yīng)于向下掃描時(shí),記錄點(diǎn)為c2, {x2, (yl+y2)/2};在 對(duì)cl和c2進(jìn)行平均,得到p2點(diǎn),{(xl+x2)/2, (yl+y2)/2}; 4)判斷pl和p2之間的像素距離,S卩(xl+x2)/2和x之間的差值,如果該差值小于 一個(gè)像素值,則將p2點(diǎn)作為初始中軸點(diǎn);否則從p2點(diǎn)開(kāi)始橫向掃描,返回步驟l)繼續(xù)2)、 3)、4)步,掃描過(guò)程仍然是先橫向掃描后縱向掃描,像素距離判斷仍然使用(xl+x2)/2和x 之間的差值。 5)以上步驟都要記錄中間點(diǎn)pl和p2的橫向和縱向掃描距離,如pl點(diǎn)的橫向掃描 距離可以使用從cl到pl的距離與pl點(diǎn)到c2點(diǎn)的距離和表示。初始中軸點(diǎn)橫向和縱向的 掃描距離進(jìn)行比較,如果橫向距離大于縱向距離,則標(biāo)記該次矢量化區(qū)域?yàn)闄M向的,否則標(biāo) 記為縱向。 第三步,迭代跟蹤 首先定義輸出的中軸點(diǎn)鏈,該中軸點(diǎn)鏈為一個(gè)二維數(shù)組,其中一維表示了中軸點(diǎn)
的列表,另外一維表示中軸點(diǎn)鏈中中軸點(diǎn)所對(duì)應(yīng)的寬度信息。 從初始中軸(設(shè)為pixl)點(diǎn)開(kāi)始,首先將pixl點(diǎn)保存在中軸點(diǎn) 鏈的中軸點(diǎn)列表中,并將相應(yīng)的寬度信息加入到鏈表中,寬度信 息是該中軸點(diǎn)縱向方向的碰撞距離; 如果矢量化區(qū)域?yàn)闄M向標(biāo)記 從該點(diǎn)開(kāi)始進(jìn)行兩個(gè)方向的掃描,在一個(gè)方向掃描完成后執(zhí)行另外一個(gè)方向的掃 描,這兩個(gè)方向的掃描過(guò)程一致。假設(shè)向右掃描以該初始中軸點(diǎn)橫向掃描,直到碰到像素 過(guò)渡區(qū)域,即從0到1狀態(tài)的變化時(shí),記錄該點(diǎn)為Cl ;再?gòu)腃l點(diǎn)出發(fā)向下掃描,碰到0到1狀態(tài)變化時(shí),記錄該點(diǎn)為c2點(diǎn),將cl點(diǎn)和c2點(diǎn)的中間點(diǎn)pix2記錄下來(lái),將cl到c2的距 離保存為寬度; 如果矢量化區(qū)域標(biāo)記為縱向 從該點(diǎn)開(kāi)始進(jìn)行兩個(gè)方向的掃描,在一個(gè)方向掃描完成后執(zhí)行另外一個(gè)方向的掃 描,這兩個(gè)方向的掃描過(guò)程一致。假設(shè)向右掃描以該初始中軸點(diǎn)縱向掃描,直到碰到像素 過(guò)渡區(qū)域,即從0到1狀態(tài)的變化時(shí),記錄該點(diǎn)為Cl ;再?gòu)腃l點(diǎn)出發(fā)向右掃描,碰到0到1 狀態(tài)變化時(shí),記錄該點(diǎn)為c2點(diǎn),將cl點(diǎn)和c2點(diǎn)的中間點(diǎn)pix2記錄下來(lái),將cl到c2的距 離保存為寬度;將這些信息加入到中軸點(diǎn)鏈中。 計(jì)算該中軸點(diǎn)和上一個(gè)中軸點(diǎn)之間的距離,并保存為pixdist,進(jìn)行下一個(gè)中軸點(diǎn) 的掃描,在真正進(jìn)入點(diǎn)鏈獲取掃描前,先進(jìn)行四個(gè)條件的判斷
7)寬度一致性檢驗(yàn); 寬度一致性檢驗(yàn)是要求點(diǎn)鏈跟蹤時(shí),每個(gè)點(diǎn)鏈獲取的寬度保持一致,本發(fā)明要求 點(diǎn)鏈中的中軸點(diǎn)寬度保持在一定的數(shù)量之內(nèi),也就是說(shuō)兩個(gè)點(diǎn)鏈寬度相差不超過(guò)4 5個(gè) 像素。這里涉及到中軸點(diǎn)寬度的計(jì)算問(wèn)題當(dāng)點(diǎn)鏈方向標(biāo)志為橫向時(shí),中軸點(diǎn)縱向的掃描碰 撞到的兩個(gè)點(diǎn)之間的像素距離為中軸點(diǎn)的寬度。
8)方向一致性檢驗(yàn); 方向一致性檢驗(yàn)是要求點(diǎn)鏈的方向信息一致,方向信息是根據(jù)中軸點(diǎn)橫向掃描與 縱向掃描的比值確定的,如果比值大于l,則表明該中軸點(diǎn)為橫向的,否則則表示中軸點(diǎn)為 縱向的。
9)掃描步長(zhǎng)限制條件檢驗(yàn); 掃描步長(zhǎng)限制條件檢驗(yàn)是系統(tǒng)預(yù)先給予一個(gè)最大的掃描步長(zhǎng),無(wú)論是中軸點(diǎn)的橫
向掃描還是縱向掃描,都要滿足這一最大掃描步長(zhǎng)。由于該方法所涉及到的系統(tǒng)分辨率變
化多樣,也就是圖紙線的信息所使用的像素點(diǎn)的個(gè)數(shù)變化較大,但對(duì)于一種圖紙分辨率變
化是不大的,本發(fā)明提出一種自適應(yīng)的最大掃描步長(zhǎng),該步長(zhǎng)的計(jì)算是在初始化中軸點(diǎn)的
過(guò)程中給出的,取初始化中軸點(diǎn)橫向掃描寬度和縱向掃描寬度的平均值。 方法如上,當(dāng)進(jìn)行第一次碰撞時(shí),得到cl點(diǎn),計(jì)算cl點(diǎn)和當(dāng)前中軸點(diǎn)之間的距離,
如果與pixdist比較大于某個(gè)數(shù)值,則將碰撞距離減半,繼續(xù)進(jìn)行掃描,如果寬度條件不滿
足,繼續(xù)將碰撞距離減半。這里限制減半次數(shù)為兩次。 第四步,節(jié)點(diǎn)復(fù)原 當(dāng)系統(tǒng)滿足第三步的三個(gè)要求后,中軸點(diǎn)鏈的獲取掃描過(guò)程開(kāi)始啟動(dòng),在根據(jù)第 三步的方法每獲得一個(gè)中軸點(diǎn)后,都會(huì)進(jìn)行以上三個(gè)條件的判斷,當(dāng)條件不滿足時(shí)并非立 刻退出掃描,本發(fā)明設(shè)計(jì)了一個(gè)緩沖計(jì)數(shù)器首先放棄當(dāng)前的中軸點(diǎn),將前一個(gè)中軸點(diǎn)設(shè)置 為當(dāng)前中軸點(diǎn),緩沖計(jì)數(shù)器自動(dòng)加l,然后對(duì)該中軸點(diǎn)的與中軸點(diǎn)掃描方向一致的最大掃描 步長(zhǎng)進(jìn)行設(shè)置,使其進(jìn)行折半處理,重新進(jìn)行一次中軸點(diǎn)橫向和縱向掃描,如果仍然不滿足 掃描條件,緩沖計(jì)數(shù)器再次加1,最大掃描步長(zhǎng)再次進(jìn)行折半處理。這樣進(jìn)行兩次緩沖,如果 仍然不滿足條件,則放棄該方向的中軸點(diǎn)掃描,改為從初始化中軸點(diǎn)處的另外一個(gè)方向掃 描或者掃描結(jié)束。如果滿足條件后,則中軸點(diǎn)的掃描繼續(xù)進(jìn)行,且將最大掃描步長(zhǎng)恢復(fù)為系 統(tǒng)預(yù)先設(shè)置的最大掃描步長(zhǎng)。 第二步到第四步為一個(gè)循環(huán)過(guò)程,該循環(huán)過(guò)程的結(jié)束條件是掃描整張圖紙后沒(méi)有不被占有的矢量化區(qū)域存在。該循環(huán)過(guò)程結(jié)束后,系統(tǒng)會(huì)獲得整張工程圖紙的中軸點(diǎn)鏈,該 中軸點(diǎn)鏈包括了中軸點(diǎn)的鏈表信息、中軸點(diǎn)的寬度信息以及該中軸點(diǎn)鏈的方向信息。
第五步,多義線處理 得到整張圖紙的中軸點(diǎn)鏈信息后,本發(fā)明采用多義線處理的手段對(duì)這些信息進(jìn)行
壓縮,該過(guò)程是對(duì)中軸點(diǎn)鏈的再次掃描。對(duì)于一條中軸點(diǎn)鏈,該過(guò)程如下 9)設(shè)置第一個(gè)中軸點(diǎn)為當(dāng)前中軸點(diǎn),第二個(gè)中軸點(diǎn)為拓展中軸點(diǎn),當(dāng)前中軸點(diǎn)與
拓展中軸點(diǎn)進(jìn)行連線處理。 10)連線處理是在拓展中軸點(diǎn)上以該中軸點(diǎn)的寬度為直徑,以該中軸點(diǎn)為圓心作 圓,在用當(dāng)前的中軸點(diǎn)與這個(gè)圓做兩條切線。
11)從拓展中軸點(diǎn)開(kāi)始找下一個(gè)中軸點(diǎn),對(duì)其作圓,方法與連線處理過(guò)程一樣,如 果這個(gè)圓落在這兩條切線內(nèi),則將該中軸點(diǎn)刪除;再找下一個(gè)中軸點(diǎn),重復(fù)本次操作;
12)直到有中軸點(diǎn)的圓與切線相切,則將該中軸點(diǎn)作為當(dāng)前中軸點(diǎn),該當(dāng)前中軸點(diǎn) 的第二個(gè)中軸點(diǎn)設(shè)置為擴(kuò)展中軸點(diǎn),重復(fù)2) 、3)步驟直到該條中軸點(diǎn)鏈掃描完成。
如圖3所示是本步驟中經(jīng)過(guò)矢量化提取過(guò)程后的圖像。 綜上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用來(lái)限定本發(fā)明的實(shí)施范圍。即凡 依本發(fā)明申請(qǐng)專利范圍的內(nèi)容所作的等效變化與修飾,都應(yīng)為本發(fā)明的技術(shù)范疇。
1權(quán)利要求
一種交錯(cuò)線矢量化提取及圖形識(shí)別方法,其特征在于包括在通用計(jì)算機(jī)平臺(tái)上采用MFC微軟的基礎(chǔ)類庫(kù)進(jìn)行圖像預(yù)處理和矢量化處理,具體步驟如下(一)圖像預(yù)處理(1)去除工程圖像的噪聲點(diǎn)(2)工程圖紙二值化處理首先將藍(lán)色背景的工程圖紙的RGB表示方式轉(zhuǎn)變成為HSI表示方式,然后結(jié)合RGB表示方法中的B分量對(duì)圖像的I分量進(jìn)行二值化處理,而后,利用B分量二值化結(jié)果對(duì)I分量的二值化結(jié)果進(jìn)行校正,在獲得灰度直方圖后進(jìn)行直方圖的軟平滑濾波,求取灰度直方圖兩個(gè)峰值點(diǎn)之間的局部最小值點(diǎn),該局部最小值點(diǎn)作為全局閾值。(二)矢量化處理(1)初始中軸點(diǎn)獲取1)對(duì)整個(gè)圖像進(jìn)行掃描,掃描線進(jìn)入矢量化區(qū)域的點(diǎn)c1{x,y1},掃描線躍出矢量化區(qū)域的點(diǎn)為c2{x,y2}像素的位置信息;2)對(duì)c1和c2進(jìn)行平均,獲得中間點(diǎn)p1{x,(y1+y2)/2};3)以p1點(diǎn)為中心進(jìn)行上下掃描,得到c1和c2平均值p2{(x1+x2)/2,(y1+y2)/2};4)判斷p1和p2之間的像素距離,即(x1+x2)/2和x之間的差值,如果該差值小于一個(gè)像素值,則將p2點(diǎn)作為初始中軸點(diǎn);否則從p2點(diǎn)開(kāi)始橫向掃描,返回步驟1)繼續(xù)2)、3)、4)步;(2)中軸點(diǎn)鏈掃描獲取從初始中軸pix1點(diǎn)開(kāi)始,將pix1點(diǎn)保存在中軸點(diǎn)鏈的中軸點(diǎn)列表中,并將相應(yīng)的寬度信息加入到鏈表中,寬度信息是該中軸點(diǎn)縱向方向的碰撞距離;(3)中軸點(diǎn)鏈掃描條件判斷在進(jìn)入點(diǎn)鏈獲取掃描前,先進(jìn)行三個(gè)條件的判斷1)寬度一致性檢驗(yàn);2)方向一致性檢驗(yàn);3)掃描步長(zhǎng)限制條件檢驗(yàn);(4)中軸點(diǎn)多義線處理得到整張圖紙的中軸點(diǎn)鏈信息后,采用多義線處理的手段對(duì)這些信息進(jìn)行壓縮,該過(guò)程是對(duì)中軸點(diǎn)鏈的再次掃描;(5)節(jié)點(diǎn)復(fù)原首先放棄當(dāng)前的中軸點(diǎn),將前一個(gè)中軸點(diǎn)設(shè)置為當(dāng)前中軸點(diǎn),緩沖計(jì)數(shù)器自動(dòng)加1,然后對(duì)該中軸點(diǎn)的與中軸點(diǎn)掃描方向一致的最大掃描步長(zhǎng)進(jìn)行設(shè)置,使其進(jìn)行折半處理,重新進(jìn)行一次中軸點(diǎn)橫向和縱向掃描,通過(guò)循環(huán)過(guò)程后,系統(tǒng)會(huì)獲得整張工程圖紙的中軸點(diǎn)鏈,該中軸點(diǎn)鏈包括中軸點(diǎn)的鏈表信息、中軸點(diǎn)的寬度信息以及該中軸點(diǎn)鏈的方向信息;(6)軸出中軸點(diǎn)鏈。
2. 根據(jù)權(quán)利要求1所述的交錯(cuò)線矢量化提取及圖形識(shí)別方法,其特征在于上述第二 步驟中,峰值點(diǎn)的求取過(guò)程和它們之間的局部最小值點(diǎn)的求取過(guò)程如下1)定義一個(gè)灰度直方圖類CImageHist,該類中主要包含了一個(gè)一維向量m— ImgeHi st 、對(duì)向量進(jìn)行平滑的濾波函數(shù)Fi 11er ()、對(duì) 一 維向量進(jìn)行求取峰值點(diǎn)的函數(shù)getMaxVector ()以及求取某峰值點(diǎn)之間的局部最小值點(diǎn)的函數(shù)getLocalMin();2) 灰度直方圖的一維向量mJmgeHist,其維度為256,對(duì)應(yīng)于像素值的0到255 ;3) 平滑的濾波函數(shù)Filter ()中選擇不同的濾波方法,使用平滑方法,利用灰度值統(tǒng)計(jì) 變化最大閾值來(lái)平滑直方圖,對(duì)向量mJmgeHist從0點(diǎn)開(kāi)始掃描,以此對(duì)變化幅度進(jìn)行比 較,當(dāng)變化幅度大于某個(gè)閾值時(shí),則根據(jù)變化方向加減該位置的元素值,否則,保持原數(shù)值 不變;該函數(shù)的輸出為一個(gè)bool變量,以表示正確執(zhí)行,方便后續(xù)函數(shù)的調(diào)用;4) 對(duì)一維向量進(jìn)行求取峰值點(diǎn)函數(shù)getMaxVector()返回值為一個(gè)峰值列表,比較大 小,若發(fā)現(xiàn)后值比前值小,則認(rèn)為前值所對(duì)應(yīng)的數(shù)值為一個(gè)峰值點(diǎn);5) 對(duì)給定峰值點(diǎn)求取局部最小值點(diǎn)getLocalMin(),返回值為一個(gè)一維數(shù)組,數(shù)組中 包含兩個(gè)元素,第一個(gè)元素表示該最小值點(diǎn)的數(shù)值,第二個(gè)點(diǎn)表示該最小值點(diǎn)所對(duì)應(yīng)的灰 度值。
3.根據(jù)權(quán)利要求1所述的交錯(cuò)線矢量化提取及圖形識(shí)別方法,其特征在于上述第四 步驟中,對(duì)于一條中軸點(diǎn)鏈,該過(guò)程如下1) 設(shè)置第一個(gè)中軸點(diǎn)為當(dāng)前中軸點(diǎn),第二個(gè)中軸點(diǎn)為拓展中軸點(diǎn),當(dāng)前中軸點(diǎn)與拓展 中軸點(diǎn)進(jìn)行連線處理;2) 連線處理是在拓展中軸點(diǎn)上以該中軸點(diǎn)的寬度為直徑,以該中軸點(diǎn)為圓心作圓,在 用當(dāng)前的中軸點(diǎn)與這個(gè)圓做兩條切線;3) 從拓展中軸點(diǎn)開(kāi)始找下一個(gè)中軸點(diǎn),對(duì)其作圓,方法與連線處理過(guò)程一樣,如果這個(gè) 圓落在這兩條切線內(nèi),則將該中軸點(diǎn)刪除;再找下一個(gè)中軸點(diǎn),重復(fù)本次操作;4) 直到有中軸點(diǎn)的圓與切線相切,則將該中軸點(diǎn)作為當(dāng)前中軸點(diǎn),該當(dāng)前中軸點(diǎn)的第 二個(gè)中軸點(diǎn)設(shè)置為擴(kuò)展中軸點(diǎn),重復(fù)2) 、3)步驟直到該條中軸點(diǎn)鏈掃描完成。
全文摘要
本發(fā)明涉及一種交錯(cuò)線矢量化提取及圖形識(shí)別方法,包括在通用計(jì)算機(jī)平臺(tái)上采用MFC微軟的基礎(chǔ)類庫(kù)進(jìn)行圖像預(yù)處理和矢量化處理,具體步驟如下1.圖像預(yù)處理(1)去除工程圖像的噪聲點(diǎn),(2)工程圖紙二值化處理;2.矢量化處理(1)初始中軸點(diǎn)獲取,(2)中軸點(diǎn)鏈掃描獲取,(3)中軸點(diǎn)鏈掃描條件判斷,(4)中軸點(diǎn)多義線處理,(5)節(jié)點(diǎn)復(fù)原,(6)軸出中軸點(diǎn)鏈。本發(fā)明方法是一種工程CAD圖紙的矢量化圖形識(shí)別方法具有適用范圍廣、矢量化精度高、運(yùn)算速度快等優(yōu)點(diǎn),對(duì)于工程圖紙矢量化系統(tǒng)以及三維重建等工作具有重要意義和實(shí)用價(jià)值。
文檔編號(hào)G06K9/38GK101763510SQ20101002307
公開(kāi)日2010年6月30日 申請(qǐng)日期2010年1月21日 優(yōu)先權(quán)日2010年1月21日
發(fā)明者劉剛, 張楊, 錢虹 申請(qǐng)人:上海電力學(xué)院