



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、摘要本論文主要講述了圖像文件( bmp)文件格式下中簡單圖形的識別,主要是直線和圓的識別,這在工程圖的識別和其他領域中都有很多的應用。【關鍵詞】:圖形識別 、圖像處理、霍夫變換、單義域、多義域、 delphi目錄第一章 概述 4第一節 引言 4第二節 在工程圖的識別中常用的方法4第二章 論文的工作基礎和工作環境6第一節 數字圖像處理技術61. 圖像處理的基本內容 62. 主要的圖像處理技術 6第二節 圖像格式 BMP 格式 7第三節 算法及數學基礎81. 霍夫變換( Hough Transform) 82. 基于單義域的直線及圓識別算法 113. 主要技術 14第三章 直線和圓的識別和編輯的實
2、現15第一節 系統的層次結構的圖示15第二節 系統數據結構及類的設計161. 主要類的層次結構 162. 圖形基類( CShape)173. 圖形類( CLine 、CCircle ) 184. 圖形容器類( CShapes)205. 點類( CPoint) 216. 單義域類( CSegment) 217. 基于單義域識別類( CSegments) 228. 霍夫變換識別直線類( CHTLine )239. 霍夫變換識別圓類( CHTCircle )23第三節 系統功能介紹 24第四章 結束語 29參考文獻 30第一章概述第一節引言計算機技術的發展,使人類社會進入了信息化和自動化,計算機智能
3、識別也隨著計算機的發展得到了迅速的發展。特別是圖形圖像的計算機處理技術更是有了前所未有的進步和應用。計算機識別也逐漸的從圖形圖像處理的大環境下分離出來作為一門新的高科技研究領域出現。圖形圖像的識別涉及到的學科很多,包括數字信號處理、工程數學、信息論、運籌學、等,它與計算機、自動化、生物學、關學、視覺心里和生理學、人工智能、智能信息處理等眾多領域交叉、綜合集成,有廣泛的應用。本論文實現的是基礎的圖形識別,bmp 圖像文件格式中對圖形的矢量化。識別基本的圖元直線和圓。直線和圓是二值圖像中最基本的組成元素,也是最常見的圖形元素。在工程圖的數字化識別中有很大的應用。關于理想情況的幾點說明:1. 所識別
4、的 bmp 圖像文件是經過處理的,沒有“噪音”等,在本論文中直接采用的是用 Windows 中的畫圖軟件畫出的圖像。2. 本論文中圖像中的圖元都是單一的線性,即線寬是一個象素的情況。第二節在工程圖的識別中常用的方法圖形的識別最主要的是圖形特征的提取,在這個階段,常用的方法是全局特征方法(包括:不變距,自回歸模型、傅立葉描述符、霍夫變換等),全局特征的特征提取方法是理論比較完善的,計算過程比較清楚。針對不同的特征提取處理,采用相對應的模式匹配方法來將圖形分類,模式識別迄今已有很多方法,有模板匹配、統計模式識別、句法模式識別、模糊識別和神經網絡識別等。在二值圖像的處理中,人們常用的數據結果有游程編
5、碼考慮了掃描行上相鄰象素間的相關性;行相鄰圖法(Line Adjeceney Gragh),是由 Pavlidis 提出的一種二值圖的數據結構,LAG 還考慮了相鄰行黑游程之間的相鄰關系,遍歷時很方便;BAG ( Bloek Adjeceney Gragh)是由余斌提出的,它是相鄰圖LAG在兩個方向上的推廣。在本論文中就是利用了LAG 的數據結構思想與c+ builder 的數據結構相結合的方法即:用下一個象素點是與鏈表頭相鄰還是和尾相鄰來描述其相鄰的關系。本論文中對交點的處理。目前對交點的處理有下面幾類算法:1. 基于網格算法,該算法是通過網格加大搜索步長來跳過交點。2. 基于圖段合并的算法
6、,是根據交點處行程段的連通性,以交點為界將圖線分割成圖段,記錄各段之間的連接及從屬關系,然后連接或延長各分支圖段,然后得到整條圖線。在本論文中采用了第二種方法,基于圖段合并的算法。當然現下有很多更好的算法和數據結構,但是大部分是針對具體的結構或者研究方向不具有一般性,所以本論文的實現用了上述的數據結構和方法。第二章論文的工作基礎和工作環境第一節數字圖像處理技術將客觀世界實體或圖片等通過不同的量化(數字化 )手段送入計算機,由計算機按使用要求進行圖像的平滑、增強、復原、分割、重建、編碼、存儲、傳輸等種種不同的處理,需要時把加工處理后的圖像重新輸出,這個過程稱為圖像處理。因此,圖像處理的含義是用計
7、算機對圖像進行加工處理以得到某種預期的效果,它本質上是一種二維數字信號處理技術。1. 圖像處理的基本內容圖像處理的基本內容可以歸結為:1. 對圖像進行增強或修改。以改變或強調圖像信息的某些特點 (增強有用信息,無用信息 ),改善圖像的視覺質量;2. 描述圖像的特征并進行特征抽取和分析。例如提取圖像的紋理特征、頻譜特征、邊界特征和顏色特征等;對像素用某個標準衡量并進行分類比較,將抽取的特征歸結為一定的模式,這屬于模式識別的范圍;3.圖像的重建 (Reconstruction)。對圖像的某些部分合并或進行重新組織,這種技術是從N1 維的信息用某種算法得到N 維的圖像,例如計算機視覺就是這樣的一種技
8、術。2. 主要的圖像處理技術2.1 圖像的增強和恢復圖像增強所追求的目標是改善圖像的視覺質量,符合人們的主觀要求,它不追究圖像客觀質量的降低原因。圖像的視覺質量是因人而異的,其質量的高低和好壞受觀看者的心理、愛好和文化素質等因素的影響。圖像的恢復則致力于探索圖像質量降低的原因,并盡可能消除圖像質量的降低,恢復圖像的本來面目。2.2 圖像的壓縮編碼彩色數字圖像通常是由三個二維數組組成的,其信息量相當大,這給圖像的傳輸、處理、存儲和顯示等帶來很大的負擔。但問題的另一方面是圖像中又往往存在很多冗余信息,在傳輸和存儲時可以對數字圖像進行一定方式的編碼,刪除圖像中的冗余信息,以提高圖像傳輸和存儲的效率。
9、2.3 圖像重建在醫學和工程應用中,利用超聲波、x 射線等技術取得物體的多幅來自不同角度的投影圖,通過計算可得到物缽內部的圖像,這種技術稱為投影重建,例如 CT 就是圖像重建的一個應用。2.4 圖像的分割和描述計算機按照一定的客觀測度(例如灰度、顏色和幾何性質等)將圖像中包含的物體和區域從圖像中區分出來,稱為圖像的分割。用適當的數學語言來表示被分割出來的物體或區域的結構和統計特性,或用數學語言表示區域問的關系,稱為描述。圖像經分別和描述后,可較為容易地分類和識別。第二節圖像格式 BMP 格式BMP(Bitmap-File) 圖形文件是Windows 采用的圖形文件格式,在Windows環境下運
10、行的所有圖像處理軟件都支持BMP 圖像文件格式。 Windows 系統內部各圖像繪制操作都是以 BMP 為基礎的。 Windows 3.0 以前的 BMP 圖文件格式與顯示設備有關,因此把這種 BMP 圖像文件格式稱為設備相關位圖DDB(device-dependent bitmap) 文件格式。 Windows 3.0 以后的 BMP 圖像文件與顯示設備無關,因此把這種BMP 圖像文件格式稱為設備無關位圖DIB(device-independent bitmap) 格式,目的是為了讓Windows能夠在任何類型的顯示設備上顯示所存儲的圖像。BMP位圖文件默認的文件擴展名是BMP或者bmp(有
11、時它也會以.DIB或.RLE作擴展名)。文件結構位圖文件可看成由4 個部分組成:位圖文件頭(bitmap-file header)、位圖信息頭(bitmap-informationheader)、彩色表 (color table)和定義位圖的字節陣列,它具有如下所示的形式。位圖文件的組成結構名稱符號位圖文件頭BITMAPFILEHEADERbmfh(bitmap-file header)位圖信息頭BITMAPINFOHEADERbmih(bitmap-information header)彩色表 (color table)RGBQUADaColors圖象數據陣列字節BYTEaBitmapBit
12、s第三節算法及數學基礎1. 霍夫變換( Hough Transform )霍夫變換是圖像處理中從圖像中識別幾何形狀的基本方法之一。其基本思想就是把圖像平面上的點對應到參數平面上的曲線,最后通過統計特性來解決問題。自 1962 年 Hough 公布了該算法以來,由于其良好的抗噪聲性能和對部分遮蓋的不敏感等特性,霍夫變換在模式識別領域得到廣泛的應用,如直線、圓、橢圓、矩形等幾何圖形檢測,任意形狀區域的邊界提取,二維或三維運動的參數估計等。下面就于本論文相關的直線和圓的識別進行簡單的介紹。1.1 霍夫變換識別直線霍夫變換識別直線,是將圖像空間中的一點變換為參數空間中的一條直線。圖像空間中同一直線上的
13、點,經霍夫變換所形成的直線相交于參數空間中的一點,該點坐標代表圖像空間中直線的斜率及截距。利用累加數組累計參數空間中通過該點的直線條數,即代表圖像空間中直線上的點數。圖 1.1 霍夫變換識別直線( 1)設已知一黑白圖像上畫了一條直線,要求出這條直線所在的位置。我們知道,直線的方程可以用ykxb 來表示,其中k 和 b 是參數,分別是斜率和截距。過某一點 ( x0, y0 ) 的所有直線的參數都會滿足方程 y0kx0b 。即圖像空間中的一點 ( x0, y0 ) 確定了參數空間中的一族直線。方程y0kx0 b在參數 k-b 平面上是一條直線。這樣,圖像x-y 平面上的一個前景像素點就對應到參數平
14、面上的一條直線。霍夫變換識別直線的算法描述如下:Step1. 初始化一塊緩沖區,對應于參數平面,將其所有數據置為0。Step2. 對于圖像上每一前景點,求出參數平面對應的直線,把這直線上的所有點的值都加。Step3. 找到參數平面上峰值點的位置,這些位置的坐標就是原圖像上直線的參數,每個位置對應于原圖像上的一條直線。上面是霍夫變換識別直線的基本思想。在實際應用中,ykxb 形式的直線方程沒有辦法表示x=c 形式的直線(這時候,直線的斜率為無窮大)。所以實際應用中,是采用參數方程:x cosy sin這樣,圖像平面(x, y)空間上的一個點就對應到參數空間中的一條正弦曲線上。在變換后的空間中這條
15、正弦曲線上的任意一點對應于原始圖像平面(x, y)空間的一條直線,這條直線必通過 (xi , yi ) 這個點,而 (x, y) 空間中所有共線的點經過變換后所對應的各正弦曲線都相交于一點。圖 1.2 霍夫變換識別直線(2)1.2 霍夫變換識別圓1) 半徑已知的圓的識別利用霍夫變換檢測出半徑已知的圓形,是將圖像平面上的每一點對應到參數平面上的一個以已知半徑為半徑的圓。經過霍夫變換,在參數平面上得到圓相交于一點,這個點的坐標即為原圖形坐標平面上待識別的圓心坐標。算法可以簡單描述為:取和圖像平面一樣的參數平面,以圖像上每一個前景點為圓心,以已知的半徑在參數平面上畫圓,并把結果進行累加。最后找出參數
16、平面上的峰值點,這個位置就對應了圖像上的圓心。2) 未知半徑的圓的識別在第一個問題基礎上,把參數平面擴大稱為三維空間,即x-y-R 三維,對應圓的圓心和半徑。圖像平面上的每一點就對應于參數空間中每個半徑下的一個圓,在參數的三維空間中得到一個圓錐。最后找出參數空間中的峰值點,即得到待識別的圓的圓心和半徑。由于霍夫變換具有良好的抗噪聲性能和對部分遮蓋的不敏感等特性,又不受圖像旋轉的影響,在很多領域都有廣泛的應用,有關霍夫變換的研究和改進也很多。例如廣義霍夫變換、隨機霍夫變換、快速霍夫變換等等,就是針對直線的霍夫變換也有很多改進算法。由于時間的原因,在本軟件中,只是使用了標準的霍夫變換算法。2. 基
17、于單義域的直線及圓識別算法霍夫變換為幾何圖形的識別的一個重要算法,但是由于該標準算法的時間 m對具體問題(例如直線識別)的改進算法,其在實際使用中也存在計算量大的問題。針對本論文的工作的實際情況,參考文獻【1】,并進行了適當的簡化,完成了論文的識別部分。下面就對這個基于單義域的識別算法進行簡單的介紹。2.1 多義域的獲得單義域是指對待識別的圖形進行分割得到的具有單一的幾何意義(線段或圓弧)點的集合。對圖片進行從上往下、從左往右的掃描,根據交點進行分割得到多義域,多義域中的點構成一個連通區域。對多義域進行識別并分割得到單義域。多義域由鏈表實現。算法描述如下:1 對圖形進行從上往下、從左往右的掃描
18、;2 對每一個前景點,判斷其是否為交點;3 將該點與現有的多義域的頭(如果其頭節點不是交點)、尾(如果其尾節點不是交點)節點進行比較,如果與頭節點相鄰,將其插入到該多義域的頭節點之前;如果與尾節點相鄰,將其插入到該多義域的尾節點之后。4 如果該前景點不屬于任何現有多義域,則以該點為頭節點生成新的多義域。5 直到圖形掃描完畢。注:交點的判斷。由此得到的多義域將是一個線段、一個圓弧或者線段和圓弧的組合。在后續的識別過程中將把不是單義域的進行分裂。2.2 最小二乘法擬合直線和圓最小二乘法首先由 Karl Gauss 為進行行星軌道預測的研究而提出的。現在最小二乘法已經變成從實驗數據來進行參數估計的主
19、要手段。由最小二乘法獲得的估計在一定條件下有最佳的統計特性:一致、無偏、有效。它提供給我們一個數學程式,通過它能獲得一個在最小方差意義上與實驗數據最好擬合助模型。運用最小二乘法進行圓的擬合公式如下:其中, ( xi , yi ) 為樣點, ( x0 , y0 ) 為所求圓心,為半徑,為平均徑向誤差,為最大徑向誤差。2.3 多義域分裂和單義域的識別對 2.1 中得到的多義域,運用最小二乘法進行擬合,對于擬合不成功的多義域運用首尾相連最大距離法進行分裂,得到單義域,并記錄下各單義域的擬合結果,供全局考慮,識別直線和圓用。算法描述如下:1 從 2.1 得到的多義域列表里取第一個多義域;2 對選中的多
20、義域運用最小二乘法進行圓的擬合;如果得到的平均徑向誤差和最大徑向誤差小于指定閾值,則認為擬合成功,該多義域為一圓弧的單義域;記錄擬合的結果,作為總體識別的種子圓,轉向 5 執行,否則執行 3。3 對選中的多義域運用最小二乘法進行直線擬合;如果得到的平均距離誤差和最大距離誤差小于指定閾值,則認為擬合成功,該多義域為一線段的單義域;記錄擬合結果,作為總體識別的種子直線,轉向 5 執行,否則執行 4。4 該多義域為多個線段或圓弧的組合。將該多義域的頭尾節點連接,計算該多義域中各點與頭尾節點連線的距離,取距離最大的點,對該多義域進行分裂,得到兩個新的多義域,取代原先的多義域;轉向 2 執行。5 取多義
21、域列表中的下一個,轉向2 執行。由此,所有的多義域都分裂為單義域,并對各單義域進行了擬合。2.4 總體整合,識別直線和圓對 2.3 得到的單義域列表進行總體的整合,得到直線和圓。1 選取單義域列表中的第一個單義域,將其擬合的圖形(直線或圓)作為種子圖形;2 將列表中其他單義域的識別結果與種子圖形進行比較,如果誤差小于指定閾值,則屬于同一直線或同一圓,將其與選定單一域進行合并,從列表中刪除該單義域;3 計算選定單義域的幾何數據,得到圖形;4 選取列表中的下一個單義域,轉動2 執行。3. 主要技術3.1 Borland C+ Builder本論文的編程環境之所以選用c+ builder 是因為他有
22、以下的優點:輸出入接口設計簡單提供一流的開發環境提供最標準的CC魯開發工具提供豐富的組件與最強勁的調試工具 VCL 類庫中封裝了 Windows 的圖形設備接口 (GDI) ,使得用戶很方便地在應用程序添加圖像或處理圖像。圖像類主要有 Tbitmap 、 TBrush 、 TCanves、 TFont 、 TgraphakControl 、Tgraphic、 Ticon 、 TJPEGImage、TPen 和 Tpictur 以 Tmatifile 類。3.2 虛類及虛方法的使用虛類和虛方法的使用在本論文中主要是Cshapes基類及虛方法的實現。第三章直線和圓的識別和編輯的實現第一節系統的層次
23、結構的圖示第二節系統數據結構及類的設計1. 主要類的層次結構1.1 圖形處理類:1.2識別用類:2. 圖形基類( CShape)2.1 描述圖形基類,提供所有圖形的標準屬性和方法。其他圖形類(直線、圓)等都 是該 類的 子類 ,繼承其 所有的 public 屬 性和 方法,對 其中的虛 方法( virtual )進行重定義和實現。該類為虛類,其成員函數主要為虛函數,為其所有子類提供統一的接口,但是沒有實現。其他模塊對圖形進行操作時,除非生成新的實例( Instance),都無須知道所操作的是哪個具體的圖形,而統一使用 Cshape 類型,為程序的實現、擴充和維護提供很大方便。2.2 實現cla
24、ss CShape public:/* 屬性定義*/ 前景色(由于時間等的限制,本系統暫時只定義該圖形的屬性,其/ 他如:填充色,線條型,填充型等可擴充)TColor color 。/* 編輯用屬性*/ 編輯時標志該圖形是否被選擇bool isSelected。/ 編輯操作所選中的點TPoint * editP/* 識別用屬性*/ 識別的效果描述,值越小說明識別效果越好/ 最小二乘法的平均誤差;/ 霍夫變換: 1 - 參數空間中該圖形的值 /最大值double chance。/ 圖形上點的數量int pointCount 。/* 成員函數定義*/* 顯示和描述用方法*/ 顯示圖形:在指定的位圖
25、上顯示圖形virtual void draw(Graphics:TBitmap * argDest)。/ 描述圖形:作為 TtreeView 的節點(主窗體使用)virtual void discript(int index, TTreeView * tree)。/ 描述圖形:返回描述圖形的字符串virtual String discript() 。/* 識別用 */ 比較兩個圖形,如果是同一個圖形,返回True ,否則 False。/ 直線上的兩個線段;圓上面的兩個圓弧virtual bool similarWith(CShape * argShape) 。/ 合并兩個圖形/ 經過判斷為相同
26、的圖形進行合并,返回True ;否則返回 False。virtual bool mergeWith(CShape * argShape) 。/ 判斷圖形存在的可能性(利用具體圖形的幾何規則)virtual bool checkPossible() 。/* 編輯用 */ 判斷是否點擊該圖形,若選中則當前編輯的圖形改為當前圖形virtual bool isClickOnShape(int x, int y) 。/ 取得鼠標形狀:鼠標移動到選中圖形的可操作點上時,顯示為編輯形狀virtual TCursor getCursor(int x, int y)。/ 更新圖形:將編輯點移動到(x, y) 點
27、。更新成功返回True,否則 False。virtual bool update(int x, int y) 。 。3. 圖形類( CLine 、 CCircle )3.1 描述圖形類是幾何圖形的具體實現,實現對應幾何圖形的描述和相關操作。圖形類有共同的父類 CShape,對父類中定義的虛方法根據本幾何圖形的特征進行實現。根據要求,本系統中實現了直線( CLine )和圓( CCircle )兩個圖形類。其他簡單的幾何圖形如橢圓、矩形等也可以類似的方法實現,作為本系統的一個擴充。本系統中,直線類采用直觀的AxByC0 的形式來描述直線(既避免點斜式不能描述豎直直線,也避免極坐標方程轉換的問題)
28、。因為成比例的兩組 ( A1, B1,C1 ) 和 ( A2 , B2 ,C2 ) 表示同一條直線,所以規定,如果B 參數不為 0,則B 1 A 1。由于要識別圖像中的線段,所以增加兩個端點進行限制。直線類有三個點可以編輯: 1)兩個端點,選中一個端點并移動,是以另一端點為軸進行旋轉; 2)線段的中點,選中中點并移動,是平移整個直線。圓類采用( xxc )2( yyc )2R 2 的形式描述(其中( xc , yc ) 為圓心,R 為半徑),直觀方便。圓上有兩個點支持編輯操作:1)圓心,選中圓心并移動,是平移整個圓;2)圓上的一個點,選中該點并移動,是改變圓的半徑,圓心不變。3.2 實現直線類
29、( CLine )class CLine: public CShape public:/* 初始化 */CLine(double argA, double argB, double argC) 。/* 直線的屬性*/ 線段的兩個端點TPoint *startP, *endP 。/ 直線方程的參數: A,B,Cdouble A, B, C。/* 對父類虛方法的實現*/ 在目標位圖上畫出直線(本系統中的實現為畫線段)void draw(Graphics:TBitmap * argDest)。/ 在 TTreeView 中描述void discript(int index, TTreeView *
30、tree) 。/ 返回描述用字符串String discript() 。/ 判斷該直線是否與指定圖形相同/將指定圖形強制轉化為CLine 類型,比較其參數A, B, C ,/ 若小于指定閾值,則返回 Ture ,否則返回 False。bool similarWith(CShape * argShape) 。/ 合并同一直線上的兩個線段/若目標圖形與該圖形屬同一直線,進行合并,返回True ;/ 否則返回 False。void mergeWith(CShape * argShape)。/ 判斷是否選擇該直線進行編輯。/ 判斷指定點 (x, y) 到該直線的距離,/ 如果小于指定閾值則返回 Tru
31、e ,否則 False。bool isClickOnShape(int x, int y) 。/ 取得鼠標形狀。/ 端點時返回 45度, 135 度的雙向箭頭形狀表示旋轉;/ 中點時返回垂直的四個方向箭頭的形狀表示移動TCursor getCursor(int x, int y) 。/ 更新直線bool update(int x, int y) 。 。圓類( CCircle )class CCircle: public CShape public:/* 初始化 */CCircle(int argX, int argY, int argR)。/* 圓的屬性*/ 圓心TPoint * center
32、P 。/ 半徑int R。/* 對父類虛方法的實現*/ 在目標位圖上畫出圓void draw(Graphics:TBitmap * argDest)。/ 在 TTreeView 中描述void discript(int index, TTreeView * tree) 。/ 返回描述用字符串String discript() 。/ 判斷該圓是否與指定圖形相同/ 將指定圖形強制轉化為 CCircle 類型,比較其參數圓心坐標和半徑,/ 若小于指定閾值,則返回 Ture ,否則返回 False。bool similarWith(CShape * argShape) 。/ 合并同一圓上的兩個圓弧/若
33、目標圖形與該圖形屬同一圓,進行合并,返回True ;/ 否則返回 False。void mergeWith(CShape * argShape)。/ 判斷是否選擇該圓進行編輯。/ 計算指定點 (x, y) 到圓心的距離,并與半徑比較,/ 如果小于指定閾值則返回 True ,否則 False。bool isClickOnShape(int x, int y) 。/ 取得鼠標形狀。/ 圓上點時返回水平的雙向箭頭形狀表示改變半徑;/ 圓心時返回垂直的四個方向箭頭的形狀表示移動TCursor getCursor(int x, int y) 。/ 更新圓bool update(int x, int y)
34、 。 。4. 圖形容器類( CShapes)4.1 描述圖形容器類是圖形類的集合類,由C+ Builder 的 TList 繼承得到。用來組織對圖像的識別結果、組織當前編輯工作的圖形對象集。提供添加圖形、刪除圖形、圖形編輯等接口。4.2 實現class CShapes : public TList public:/* 初始化 */CShapes()。/ 從 TreeView 得到 ShapesCShapes(TTreeView * tree)。/ 在目標位圖上畫出所有的圖形void drawShapes(Graphics:TBitmap * argDest) 。/ 描述圖形void discr
35、ipt(TTreeView * tree) 。 。5. 點類( CPoint )5.1 描述點類對于與圖像上的前景點。由于識別時需要判斷是否為交點,在一般的點的基礎上增加是否為交點的屬性。由C+ Builder 的 TPoint 繼承得到。5.2 實現class CPoint : public TPoint public:/* 初始化 */CPoint() isCrossPoint = false 。 。CPoint(int argx, int argy, bool isCross) 。CPoint(int argx, int argy, Graphics:TBitmap * argImg)。
36、/* 屬性:是否為交點*/bool isCrossPoint 。 。6. 單義域類( CSegment)6.1 描述在“基于單義域的圖形識別算法”中,單義域和多義域的唯一區別就是多義域不是單一的幾何元素,其在存儲結構上是一樣的,在本系統中,都由CSegment類實現,姑且命名為單義域類。單義域類為點的集合類,由 C+ Builder 的 TList 類繼承得到。提供添加點、刪除點、判斷該單義域是否有識別價值、識別該單義域等接口和方法。6.2 實現class CSegment : public TList public:/* 初始化 */CSegment(CPoint * p) 。/* 識別該單
37、義域:實現算法中對單義域的識別部分*/ 如果識別成功(得到圓或線段)返回True,否則返回Falsebool recognize()。/* 嘗試添加新的點到該單義域*/ 判斷該點是否屬于該單義域并確定是在頭部還是在尾部,并將其插入到適當位置;如果該點為交點,則將相應的方向關閉增長;若加入成功返回否則返回 False。True ,bool addNewPoint() 。/* 判斷該單義域是否有識別價值*/ 如果該單義域含有的點數太少,則沒有價值返回False,否則返回True。bool checkValue()。/*屬性:識別出的圖形*/CShape * shape。 。7. 基于單義域識別類(
38、 CSegments)7.1 描述基于單義域識別類是實現“基于單義域的直線和圓識別算法”的主要類。它實現了對目標圖像的分割、對分割結果的顯示、對識別得到的多義域進行分割、對單義域識別結果的總體考慮,最終得到識別結果集。基于單義域識別類同時是單義域的集合類,由C+ Builder 的TList類繼承得到。用來組織對圖像的單義域分割后的結果。7.2 實現class CSegments : public TList public:/* 構造和析構函數*/CSegments()。CSegments()。/* 掃描圖像,得到多義域*/ 從上往下,從左往右掃描圖像,對于每一個前景點/ 1 。生成新的 CP
39、oint 實例/ 2 。對于本類中的所有單義域,將該點嘗試加入/ 3 。如果加入失敗,以該點為頭生成新的單義域并加入。void segmentize(Graphics:TBitmap * argSrc) 。/* 在指定的位圖上顯示分割得到的多義域、單義域*/void displaySegments(Graphics:TBitmap * argDes) 。/* 識別該集合中的元素*/ 1 。調用單義域的 checkValue() ,如果得到 False,刪除該單義域;/ 2 。調用單義域的 recognize() ,如果返回 False,對該單義域進行分割;/ 將新得到的 2個單義域取代當前的單
40、義域,并進行識別/ 3 。所有的單義域識別完畢后,對各個單義域的識別結果進行合并/ 4 。返回得到的圖形容器類。CShapes * recognize()。/* 刪除集合中的指定位置的元素*/void removeItemOnly(int index) 。void removeItemAndFreePoints(int index) 。 。8. 霍夫變換識別直線類( CHTLine )8.1 描述實現霍夫變換識別直線算法。8.2 實現class CHTLine public:/* 構造和析構函數*/CHTLine () 。 CHTLine () 。/* 對源位圖按照直線識別算法進行霍夫變換*/
41、 argRho, argTheta 分別是對和的分割的份數。void recognize(Graphics:TBitmap * argSource, int argRho, int argTheta) 。/* 在目標位圖上顯示參數坐標的信息*/ 以參數坐標的最大值為灰度最大值,按比例灰度在位圖上顯示。void displayPramater(Graphics:TBitmap* argDest)。/* 按照 argRate指定的概率取得識別出的直線列表*/void getLines(TList * argList, double argRate) 。 。9. 霍夫變換識別圓類( CHTCircl
42、e )9.1 描述實現霍夫變換識別圓算法。9.2 實現class CHTCircle public:/* 構造和析構函數*/CHTCircle () 。 CHTCircle () 。/* 對源位圖按照圓的識別算法進行霍夫變換*/void recognize(Graphics:TBitmap * argRes) 。/* 在目標位圖上顯示參數坐標的信息*/ 以參數坐標的最大值為灰度最大值,按比例灰度在位圖上顯示參數坐標中指定半徑的二維平面的數據。void displayPramater(Graphics:TBitmap* argDest, int argR)。/* 按照 argRate指定的概率取得識別出的直線列表*/void getCircles(TList * argList, double argRate) 。 。第三節系統功能介紹1識別部分(1).基于霍夫變換下的識別啟動 rec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中標通知書簽訂合同樣本
- 勞務塔吊司機合同標準文本
- 包裝盒合同樣本
- 動產抵押擔保合同樣本
- 勞務合同樣本歌曲
- shuinin供銷合同樣本
- 加工合同樣本英文
- 辦公裝修協議合同樣本
- 公司租客車合同范例
- 化妝助理培訓合同標準文本
- 2025-2030中國考試系統行業市場發展現狀分析及發展趨勢與投資前景研究報告
- GB/T 45456-2025包裝折疊紙盒折痕挺度的測定
- 國企薪酬福利體系與市場化改革
- 2025年04月國家稅務總局稅務干部學院公開招聘事業單位工作人員36人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2025年鄭州理工職業學院高職單招職業技能測試近5年常考版參考題庫含答案解析
- Unit 4 Healthy food B Lets learn(教學設計)-2024-2025學年人教PEP版(2024)英語三年級下冊
- 《自由飛翔之鳥》教學課件-2024-2025學年嶺南美版(2024)初中美術七年級下冊
- 腰椎間盤突出癥試講教案
- 2024-2025年人教版七下語文期中復習-專題01 基礎知識積累(考點串講)
- ?2025年華能慶陽煤電有限責任公司高校畢業生招聘152人筆試參考題庫附帶答案詳解
- 2025-2030中國汽車用鋁板行業市場現狀供需分析及重點企業投資評估規劃分析研究報告
評論
0/150
提交評論