畢業(yè)設(shè)計(論文)基于自適應(yīng)閾值的視網(wǎng)膜圖像分割及其程序設(shè)計_第1頁
畢業(yè)設(shè)計(論文)基于自適應(yīng)閾值的視網(wǎng)膜圖像分割及其程序設(shè)計_第2頁
畢業(yè)設(shè)計(論文)基于自適應(yīng)閾值的視網(wǎng)膜圖像分割及其程序設(shè)計_第3頁
畢業(yè)設(shè)計(論文)基于自適應(yīng)閾值的視網(wǎng)膜圖像分割及其程序設(shè)計_第4頁
畢業(yè)設(shè)計(論文)基于自適應(yīng)閾值的視網(wǎng)膜圖像分割及其程序設(shè)計_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于自適應(yīng)閾值的視網(wǎng)膜圖像分割算法及程序設(shè)計 摘 要 視網(wǎng)膜圖像分割作為圖像處理的一個應(yīng)用在臨床醫(yī)學(xué)和身份鑒定 中發(fā)揮著愈來愈重要的作用。當(dāng)前的圖像分割方法主要包括并行邊界 分割、串行邊界分割、并行區(qū)域分割和串行區(qū)域分割等。本文致力于 研究基于自適應(yīng)閾值的視網(wǎng)膜圖像分割算法及其實現(xiàn)技術(shù)。文章內(nèi)容 主要包括:1)綜述了公開報道的各種視網(wǎng)膜圖像的分割方法;2)研 究了并行區(qū)域分割方法中基于自適應(yīng)閾值的視網(wǎng)膜圖像分割的算法及 其實現(xiàn)技術(shù);3)通過 vc+6.0 編程實現(xiàn)了用自適應(yīng)閾值算法進行視 網(wǎng)膜圖像分割;4)通過實驗驗證了算法的有效性。 關(guān)鍵詞:視網(wǎng)膜圖像,自適應(yīng)閾值,圖像分割 review o

2、n adaptive threshold-based segmentation of retinal image and its program design abstract retinal image segmentation as one of image processing applications, play an increasingly important role in clinical medicine and identification. the current image segmentation methods include parallel boundary s

3、egmentation, serial boundary segmentation, parallel region segmentation and serial region segmentation. this article focused on the adaptive threshold-based segmentation algorithm of retinal image and its implementation techniques, including 1)reviewed a variety of publicly reported retinal image se

4、gmentation methods. 2)discussed the adaptive threshold-based segmentation algorithm of retinal image in the parallel region segmentation and its realization. 3)do the segmentation of retinal images using adaptive threshold algorithm via vc+ 6.0 programming algorithm. 4)test the validity of the algor

5、ithm by experiments. key words: retinal image, adaptive threshold, image segmentation , 目錄目錄 摘摘 要要.i abstract .ii 目錄目錄.ii 第第 1 章章緒論緒論.2 1.1本課題研究的目的及意義.2 1.2當(dāng)前的研究進展和存在的問題.2 1.2.1基于并行邊界的分割方法canny 自適應(yīng)的邊緣檢測方法.3 1.2.2基于串行邊界的分割方法追蹤的分割方法.3 1.2.3基于并行區(qū)域的分割法聚類分割法.4 1.2.4基于串行區(qū)域的分割法區(qū)域生長分割法.4 1.3本課題研究的主要內(nèi)容及貢獻.5

6、1.4本論文的結(jié)構(gòu).5 第第 2 章章基本算法原理基本算法原理.6 2.1并行區(qū)域分割.6 2.1.1 固定閾值算法.6 2.1.2 自適應(yīng)閾值算法.7 第第 3 章章基于自適應(yīng)算法的視網(wǎng)膜圖像分割基于自適應(yīng)算法的視網(wǎng)膜圖像分割.9 3.1核心算法.9 3.1.1 固定閾值.9 3.1.2 自適應(yīng)閾值.10 3.1.3 canny 算子.12 3.2實驗結(jié)果.15 3.3性能分析.18 第第 4 章章總結(jié)總結(jié).19 參考文獻參考文獻.20 附錄附錄 核心代碼核心代碼.22 致謝致謝.32 軟件使用說明書軟件使用說明書.33 第第 1 章章緒論緒論 1.11.1本課題研究的目的及意義本課題研究的

7、目的及意義 圖圖 1 1 眼底結(jié)構(gòu)示意圖眼底結(jié)構(gòu)示意圖 由哈佛公共衛(wèi)生學(xué)院和世界衛(wèi)生組織聯(lián)合展開的一項長期的研究表明,在發(fā) 達國家和發(fā)展中國家,包含中風(fēng)和糖尿病在內(nèi)的心血管疾病是導(dǎo)致死亡的首要原 因之一.一個可以有效預(yù)測心血管疾病發(fā)生和幫助治療的手段,將每年挽救和提高 廣大群體的生活質(zhì)量,在如高血壓,心血管和心衰竭等疾病的癥狀明顯出現(xiàn)前,循 環(huán)系統(tǒng)的檢測可以為此提供證據(jù).這一點已經(jīng)在 t.wong 等人1的通過對大量研究 得到的綜述中被證實.這些研究中包含的大量主訴同通過視網(wǎng)膜檢測即可發(fā)現(xiàn)的 循環(huán)問題和跡象相聯(lián)系.對人類眼睛血管的檢測,可以預(yù)測疾病的發(fā)生和輔助診斷,以 及追蹤一系列與循環(huán)系統(tǒng)相

8、關(guān)的疾病和癥狀. 另外,視網(wǎng)膜,具有唯一性、穩(wěn)定性、可采集性、非侵犯性等優(yōu)點,在身份 鑒別等高層次安全保密方面有重要的應(yīng)用前景。而且與臉像、聲音等非接觸式的 身份鑒別方法相比,視網(wǎng)膜具有更高的準(zhǔn)確性。據(jù)統(tǒng)計,視網(wǎng)膜識別的錯誤率是 各種生物特征識別中最低的。基于視網(wǎng)膜的身份鑒別技術(shù)日益得到學(xué)術(shù)界和企業(yè) 界的重視。 然而,通過肉眼直接觀測眼睛或者人工分析視網(wǎng)膜影像是耗時的,耗力的,而 且需要經(jīng)過專門培訓(xùn)的眼科醫(yī)生和專業(yè)設(shè)備.一種可以精確的繪制視網(wǎng)膜血管的 方法是采用一般的數(shù)碼相機和陳舊的計算機設(shè)備,自動化的分析和診斷工具可以 在這些儀器上配合使用,這大大提升了這些檢測的速度和效度,同時也大大減少了

9、 成本.任何自動視網(wǎng)膜圖像分割方法都需要精確確定眼內(nèi)的靜脈,動脈以及毛細血 管的位置,大小和邊界,通過此圖像去追蹤它們的通路.這使得自動化診斷工具的 應(yīng)用成為可能.這些自動診斷工具通過進行視網(wǎng)膜檢測,可以預(yù)見和顯示這些健康 問題的所在,并為此提供很多有價值的信息. 由于硬件限制,視網(wǎng)膜圖像較明顯地表現(xiàn)出以下特點:光照不均勻;血管與 背景的對比度不強;圖像噪聲點多。這導(dǎo)致采用常用的圖像處理方法很難分割出 滿意的效果,尋找合適的視網(wǎng)膜圖像分割方法是難點所在。目前視網(wǎng)膜圖像的分 割方法已有不少,但是基于自適應(yīng)閾值的分割方法尚未見發(fā)表。本文就重點研究 基于自適應(yīng)閾值的視網(wǎng)膜圖像分割算法。 1.21.2

10、當(dāng)前的研究進展和存在的問題當(dāng)前的研究進展和存在的問題 視網(wǎng)膜圖像的分割檢測在臨床醫(yī)療過程和身份鑒定中發(fā)揮著重要作用。國內(nèi) 外發(fā)表了許多關(guān)于視網(wǎng)膜圖像分割檢測的文章。當(dāng)今的分割方法主要可以分為兩 大類:一類是邊界方法2,這種方法的假設(shè)是圖像分割結(jié)果的某個子區(qū)域在原來 的圖像中一定會有邊緣存在,一般有孤立點法,孤立線法,組成邊界法,邊界跟 蹤法等;一類是區(qū)域方法2,這種方法的假設(shè)是圖像分割結(jié)果的某個子區(qū)域一定 會有相同的性質(zhì),而不同區(qū)域的像素則沒有共同的性質(zhì),一般有閾值分割法,區(qū) 域分裂與合并,自適應(yīng)等。 根據(jù)分割方法的不同,可分為: 1.并行邊界分割2:對圖像上的每一點所作的分割處理不依賴與其他

11、的點處 理結(jié)果,同時地在所有點上進行分割運算。 2.串行邊界分割2:通過順序的搜索邊緣點,采用串行的方法來對目標(biāo)邊界 檢測來實現(xiàn)分割的方法。在處理圖像時不但利用了本身像素的信息,而且利用前 面已經(jīng)處理像素的結(jié)果。對某個像素的處理,以及是否把它分類成邊界點,和先 前對其它點處理得到的信息有關(guān)。 3.并行區(qū)域分割2:采用并行的算法對目標(biāo)區(qū)域進行檢測實現(xiàn)圖像的分割。 4.串行區(qū)域分割2:采用串行處理策略對目標(biāo)區(qū)域直接檢測來實現(xiàn)分割的方 法。主要特點是整個處理過程分解為順序的多個步驟依次進行。 以下綜述了當(dāng)今主流的視網(wǎng)膜圖像分割的方法及其優(yōu)缺點。 如下圖為當(dāng)如上所述的分割方法的框架表: 圖圖 2 2

12、圖像分割方法框架圖像分割方法框架 1.2.1基于并行邊界的分割方法canny 自適應(yīng)的邊緣檢測方法3 基于canny算子2,提出了一種canny自適應(yīng)的邊緣檢測方法。canny自適應(yīng)算 法在保持了canny算子原有的定位準(zhǔn)確,單邊響應(yīng)和信噪比高等優(yōu)點的基礎(chǔ)上, 提 高了canny算子在提取圖像邊緣細節(jié)信息和抑制假邊緣噪聲方面的性能。canny自 適應(yīng)算法將整幅圖像分割為若干子圖像,并根據(jù)各子圖像的邊緣梯度信息,結(jié)合全 局邊緣梯度特征信息自適應(yīng)地生成動態(tài)閾值,提高了邊緣檢測的自動化程度,在實 際的應(yīng)用中獲得了很好的效果。通過數(shù)學(xué)分析和試驗結(jié)果證明了canny自適應(yīng)算 法是一種有效的邊緣檢測改善方

13、法。 canny自適應(yīng)算法普遍適用于各類圖像的階躍邊緣,本算法保持了傳統(tǒng)canny 算子的優(yōu)點,提高了抑制噪聲的能力,而且在算法復(fù)雜度和計算時間上均小于傳統(tǒng) canny算子,得到的邊緣輪廓圖信噪比高,連通性好,更重要的是本算法能夠自適應(yīng) 的生成高、低閾值檢測圖像邊緣,自動化程度高,為實現(xiàn)自動匹配進行了有益的探 索。canny自適應(yīng)算法也存在如檢測效果優(yōu)于sobel、laplacian等簡單算子,但是 速度相對較慢等問題,這有待于進一步研究解決。 1.2.2基于串行邊界的分割方法追蹤的分割方法4 基于追蹤(tracking)的分割方法,此法由血管圖像邊界上的一個點出發(fā)依 次搜索并連接相鄰邊界點從

14、而逐步檢測出整個血管邊界。主要包括如下步驟:搜 索起點的確定,搜索機制的選取,搜索結(jié)束的判定。根據(jù)算法的不同,搜索起點 可有一個或數(shù)個。方法的缺點在于它不是全自動的,需要操作者給出初始點和結(jié) 束條件。menegaz 等提出一種結(jié)合了先驗知識的血管追蹤算法,即利用血管位置、 走向和寬度的連續(xù)性特點,在人工設(shè)定種子點和搜索方向之后利用追蹤算法尋找 血管中心線實現(xiàn)血管分割。 串行分割法比并行分割法有潛在的優(yōu)點。并行分割法必須在每個圖像點完 成相同的計算,因為接受或放棄這個像素點的惟一依據(jù)就是它的本身的計算結(jié)果。 但是這種計算帶來的問題是:如果希望分割是可靠的,這些計算可能會相當(dāng)?shù)膹?fù) 雜,因為不得不在

15、處理該像素的時候,考慮鄰域甚至更多其他的像素。采用串行 分割可采用簡單的、方便的計算。 1.2.3基于并行區(qū)域的分割方法聚類分割法5 聚類分割法是最為直接和最實用的圖像分割方法。閾值法實際上是聚類法 的一個特例。為了彌補不使用訓(xùn)練數(shù)據(jù)所造成的缺陷,聚類算法在分割圖像和確 定每一類特征之間進行迭代計算。從這個角度而言,聚類算法是在用已存在的數(shù) 據(jù)對自身進行訓(xùn)練。目前常用的聚類算法有 k 均值(或 isodata)算法、模糊 c 均值算法和最大期望值(expection maximization, em)算法等。盡管聚類算法不要 求訓(xùn)練數(shù)據(jù),但需要預(yù)分割(或初始參數(shù))。由于聚類算法不需要直接包含空

16、間建模, 所以對初始化參數(shù)敏感、噪聲和灰度不均勻性均比較敏感;但這種缺乏空間模型 的算法卻帶來了計算的快捷。ayala6等提出 2 種新的模糊集均值算法并應(yīng)用于視 網(wǎng)膜血管的自動分割。thanapong 等利用 fcm 算法分割 20 套眼底視網(wǎng)膜血管圖 像,fcm 算法敏感性,與目前臨床應(yīng)用的傳統(tǒng)的分割方法相比較,特異性分別 達到 78.116%和 95.175%。 1.2.4基于串行區(qū)域的分割方法區(qū)域生長分割法5 基于區(qū)域生長(region growing)的分割方法區(qū)域生長法從滿足檢測準(zhǔn)則的 種子點開始,在各個方向上生長區(qū)域,當(dāng)其相鄰點滿足特定檢測準(zhǔn)則就并入小塊 區(qū)域中。當(dāng)新的點被合并后

17、再用新的區(qū)域重復(fù)這一過程,直到?jīng)]有可接受的鄰近 點時生成過程終止,性質(zhì)的相似性和空間的相鄰性是其重要準(zhǔn)則。區(qū)域生長算法 假定灰度相近、性質(zhì)上相似、空間上相鄰的像素屬于同一物體,除將閾值作為判 定條件外,還考慮到目標(biāo)區(qū)域的空間相鄰性,其優(yōu)點在于計算簡單,對于均勻的 連通目標(biāo)有很好的分割效果。其主要缺點是需要用戶放置種子點,并反復(fù)調(diào)試閾 值直到獲得滿意的結(jié)果,耗時較長,所獲結(jié)果在很大程度上依賴于用戶對閾值的 選擇。由于圖像密度和噪聲不一,區(qū)域生長法往往產(chǎn)生孔洞和過度分割,所以需 要后處理 tuduki 等改進了傳統(tǒng)的區(qū)域生長法先利用閾值法處理 mra 數(shù)據(jù),再通 過基于歐幾里德變換的算法提取血管中

18、軸線,以此為種子點進行區(qū)域生長,自動 分割提取了腦血管,實現(xiàn)了血管三維成像。 1.31.3本課題研究的主要內(nèi)容及貢獻本課題研究的主要內(nèi)容及貢獻 1) 綜述了公開報道的各種視網(wǎng)膜血管檢測方法; 2) 深入研究并行區(qū)域分割法,重點比較了固定閾值分割和自適應(yīng)閾值分割 算法; 3) 研究自適應(yīng)算法的實現(xiàn)技術(shù); 4) 以自適應(yīng)閾值算法為工具研究視網(wǎng)膜圖像分割問題。 5) 通過 vc+6.0 編程實現(xiàn)了以自適應(yīng)閾值算法為基礎(chǔ)的并行區(qū)域分割法進 行視網(wǎng)膜圖像分割; 6) 通過實驗驗證了算法的有效性。 1.41.4本論文的結(jié)構(gòu)本論文的結(jié)構(gòu) 第 1 章 緒論; 第 2 章 基本算法原理; 第 3 章 基于自適應(yīng)

19、閾值算法的視網(wǎng)膜圖像分割; 第 4 章 總結(jié); 參考文獻; 附錄 核心代碼; 致謝; 軟件使用說明書。 第第 2 2 章章基本算法原理基本算法原理 本章主要介紹算法的基本原理。先對并行區(qū)域分割技術(shù)進行描述,再對經(jīng)典 的并行區(qū)域分割算法固定閾值算法和自適應(yīng)閾值算法分別作詳細討論。 2.12.1并行區(qū)域分割并行區(qū)域分割 并行區(qū)域分割技術(shù)是指采用并行的方法對目標(biāo)區(qū)域進行檢測實現(xiàn)圖像分割 的方法。從某種角度講,圖像分割的目的之一就是目標(biāo)提取將人類感興趣的區(qū) 域提取出來。從這一點說,區(qū)域分割是最直接的方法,利用這種分割方法可以直 接得到感興趣的目標(biāo)區(qū)域。 并行區(qū)域是把圖像分成前景和背景,所以閾值分割相當(dāng)

20、于對圖像進行二值化, 實質(zhì)是對每一個像素點確定一個閾值,根據(jù)閾值決定當(dāng)前像素是前景還是背景點。 出于這個原因,直接的閾值分割一般不能適用于復(fù)雜景物的正確分割,如自然場 景,因為復(fù)雜景物的圖像,有的區(qū)域很難判斷究竟是前景還是背景。不過閾值分 割在處理前景與背景有較強對比的圖像時特別有用,此時需要的計算復(fù)雜度小。 當(dāng)物體的灰度級比較集中時,簡單設(shè)置灰度級閾值提取物體是一個有效方法。 2.1.1 固定閾值算法 固定閾值分割的研究已經(jīng)有幾十年的歷史,到現(xiàn)在為止,已經(jīng)提出了很多算 法。固定閾值分割的基本想法是確定一個閾值,然后把每個像素點的像素值和閾 值相比較,根據(jù)比較的結(jié)果把該像素劃分成兩類前景或者背

21、景。一般閾值分 割可以分成以下 3 步: (1)確定閾值; (2)將閾值和像素值比較; (3)把像素歸類。 上面的 3 個步驟,關(guān)鍵的是第一步,如果能確定一個合適的閾值,就可以 對圖像進行正確、方便的分割。 固定閾值方法分全局閾值和局部閾值兩種,如果分割過程中對圖像上每個像 素所使用的閾值都相等,則為全局閾值方法;如果每個像素所使用的閾值可能不 同,則為局部閾值方法。 全局閾值: (2-12-1 )( ftt ) 局部閾值: (2-22-2 ),(yxftt ) 可以認(rèn)為局部閾值是全局閾值的一般情況,全局閾值則是最簡單的圖像分割 方法。在選用閾值時,根據(jù)不同的目標(biāo),對圖像分割往往存在一個最佳的

22、閾值。 2.1.2 自適應(yīng)閾值算法 當(dāng)照明不均勻、有突發(fā)噪聲,或者背景灰度變化比較大時,整幅圖像分割將 沒有合適的單一門限,因為單一的閾值不能兼顧圖像各個像素的實際情況。這時, 可對圖像按照坐標(biāo)分塊,對每一塊分別選一閾值進行分割,這種與坐標(biāo)相關(guān)的閾 值稱為動態(tài)閾值方法,也稱為自適應(yīng)閾值方法。這類算法的時間復(fù)雜度和空間復(fù) 雜度比較大,但是抗噪聲能力比較強,對采用全局閾值不容易分割的圖像有較好 的效果。 自適應(yīng)閾值選取比較簡單的方法則是對每個像素確定以它為中心的一個 n 的 鄰域窗口,但是,一般來說,同一種運算窗口越大,需要處理的數(shù)據(jù)越多,時間 復(fù)雜度越大,所以要根據(jù)實際對圖像的要求進行鄰域的大小

23、選取。計算窗口內(nèi)像 素的最大值和最小值,或者窗口內(nèi)所有的像素值得和,然后取它們的均值作為閾 值。 令 value max 表示 n 鄰域像素的最大灰度值,value min 表示 n 鄰域像素的最小 灰度值,則閾值可以設(shè)定為: (2-32-3) 2 minmaxvaluevalue t 也可以采用均值設(shè)定閾值: (2-42-4) n pi t n i 1 具體如下圖(3)所示選取的窗口為當(dāng)前像素的 8 鄰域窗口: p p c c 圖圖 3 3 自適應(yīng)閾值確定方法自適應(yīng)閾值確定方法 在圖( 3 )中,令 c 表示當(dāng)前像素,p 為 c 的 8 鄰域像素,根據(jù)上訴公式 則閾值具體可以設(shè)定為: (2-

24、52-5) 8 8 1 i pi t 其中 pi 是 c 的 8 鄰域像素。 第第 3 章章基于自適應(yīng)算法的視網(wǎng)膜基于自適應(yīng)算法的視網(wǎng)膜圖像分割圖像分割 本章深入研究自適應(yīng)算法在視網(wǎng)膜圖像分割的實現(xiàn)技術(shù)。本課題的核心算法 是在均值閾值算法基礎(chǔ)上,用鄰域內(nèi)的均值作為閾值進行比較,以提高實驗性能。 為了體現(xiàn)本算法的特點和優(yōu)越性,特與固定閾值算法和串行區(qū)域分割法中的 canny 算子進行比較,得出鮮明可比的實驗結(jié)果,并進行具體的性能分析。3.1 節(jié) 首先給出了三種算法的核心算法代碼;3.2 節(jié)給出了實驗結(jié)果;3.3 節(jié)進性能分析。 3.13.1核心算法核心算法 該研究以 vc+6.0 為開發(fā)平臺,以

25、 cximage 圖像處理庫為開發(fā)工具,設(shè)計 并實現(xiàn)了相關(guān)算法。上述核心算法的描述和代碼如下: 3.1.1固定閾值 本算法先選固定閾值為全局像素值的平均值,即先對全局像素值求和為 tp,并記錄像素個數(shù) c,然后再求得全局像素均值為固定閾值,最后遍 c tp ap 歷整圖中的像素值與固定閾值進行比較并重新賦值進行顯示。 void cdemodoc:oncximage_ybbct() / 在這里開始添加自己的命令代碼 if (image=null) return; /*如果沒有讀取到圖像,返回*/ long w, h, x, y; /*w 為圖像的寬度,h 為圖像的高度,x 為像素的橫坐標(biāo),y 為

26、像素的縱坐標(biāo)*/ int c=0; double v=0; w = image-getwidth(); /*讀取圖像的寬度*/ h = image-getheight(); /*讀取圖像的高度*/ image-grayscale(); /*把圖像轉(zhuǎn)換為灰度圖*/ byte *thd_img; /*建立圖像數(shù)據(jù)的指針*/ thd_img = (byte *)malloc(w)*(h)*sizeof(byte); /*給圖像分配內(nèi)存*/ for (y = 0; y h; y+) /*對圖像的高度 h 開始遍歷*/ for (x =0; x getpixelindex(x,y); c+; v/=c;

27、 if(image-getpixelindex(x,y)=(byte)v) /*跟所求閾值進行比較并賦值*/ thd_imgy*w+x=255; else thd_imgy*w+x=0; image-setpixelindex(x,y,(byte)thd_imgy*w+x); /*對所得的像素點進行顯示*/ free(thd_img); /*釋放指針*/ 3.1.2自適應(yīng)閾值 本算法先對每個像素選取一個大小為 18*18 的鄰域,然后針對每一個鄰域求 出它相應(yīng)的均值,即為自適應(yīng)閾值,然后針對該鄰域中的每個像 118*18 1 118*18 1 i pi at 素的值與該鄰域的閾值進行比較并重新

28、賦值,依次遍歷整圖,最后對所得的像素 點進行顯示。 void cdemodoc:oncximage_ybbat() /在這里開始添加自己的命令代碼 if (image=null) return; /*如果沒有讀取到圖像,返回*/ long w, h, x, y; /*w 為圖像的寬度,h 為圖像的高度,x 為像素的橫坐標(biāo), y 為像素的縱坐標(biāo)*/ int k, l, c; /*k 表示所取子領(lǐng)域的寬度,l 為所取子領(lǐng)域的高度,c 作為灰 度值的和加總*/ double v; /*v 為所求灰度的均值*/ w = image-getwidth(); /*讀取圖像的寬度*/ h = image-g

29、etheight(); /*讀取圖像的高度*/ image-grayscale(); /*把圖像轉(zhuǎn)換為灰度圖*/ byte *thd_img; /*建立圖像數(shù)據(jù)的指針*/ thd_img = (byte *)malloc(w)*(h)*sizeof(byte); /*給圖像分配內(nèi)存*/ for (y = 0; y h; y+) /*對圖像的高度 h 開始遍歷*/ for (x =0; x w; x+) /*對圖像的寬度 w 開始遍歷*/ v =0; /*對變量 v 賦初值 0*/ c =0; /*對變量 c 賦初值 0*/ for (l=-9;l10;l+) /*對鄰域的高度 l 開始遍歷*/

30、 for(k=-9;k=0 c+; v/=c; if(image-getpixelindex(x,y)=(byte)v) /*跟所求閾值進行比較并賦值*/ thd_imgy*w+x=255; else thd_imgy*w+x=0; for (y = 0; y h; y+) for (x =0; x setpixelindex(x,y,(byte)thd_imgy*w+x); /*對所得的像素點進行顯示*/ free(thd_img); /*釋放指針*/ 3.1.3canny 算子 本算法先是利用高斯函數(shù)對圖像進行平滑,去除圖像中的噪聲,并產(chǎn)生一個 一維高斯分布函數(shù),在高斯平滑函數(shù)中生成高斯濾

31、波函系數(shù)7,然后采用二階范 數(shù)計算梯度,抑制局部像素非最大梯度點,根據(jù)梯度計算及經(jīng)過非最大值抑制后 的結(jié)果設(shè)定閾值,再利用函數(shù)尋找邊界的起點,最后用 hysteresis2執(zhí)行的結(jié)果, 從一個像素點開始進行搜索,搜索以該像素為邊界起點的一條邊界所有的邊界點。 void canny(unsigned char *punchimage, int nwidth, int nheight, double sigma, double dratiolow, double dratiohigh, unsigned char *punchedge) unsigned char * punchsmooth ;

32、/*經(jīng)過高斯濾波后的圖像數(shù)據(jù)*/ int * pngradx ; /*指向 x 方向?qū)?shù)的指針*/ int * pngrady ; /*指向 y 方向?qū)?shù)的指針*/ int * pngradmag ; /*梯度的幅度*/ punchsmooth = new unsigned charnwidth*nheight ; pngradx = new int nwidth*nheight ; pngrady = new int nwidth*nheight ; pngradmag = new int nwidth*nheight ; gaussiansmooth(punchimage, nwidth,

33、 nheight, sigma, punchsmooth) ; /*對原圖像進行濾波*/ dirgrad(punchsmooth, nwidth, nheight, pngradx, pngrady) ; /*計算方向?qū)?shù)*/ gradmagnitude(pngradx, pngrady, nwidth, nheight, pngradmag) ; /*計算梯度的幅度*/ nonmaxsuppress(pngradmag, pngradx, pngrady, nwidth, nheight, punchedge) ; /*應(yīng)用 non-maximum 抑制*/ hysteresis(pngra

34、dmag, nwidth, nheight, dratiolow, dratiohigh, punchedge); /*應(yīng)用 hysteresis,找到所有的邊界*/ delete pngradx ; pngradx = null ; delete pngrady ; pngrady = null ; delete pngradmag ; pngradmag = null ; delete punchsmooth ; punchsmooth = null ; void cimageprocessingview:onedgecanny() cimageprocessingdoc*pdoc=(ci

35、mageprocessingdoc*)this-getdocument(); cdib * pdib = pdoc-m_pdibinit; lpbitmapinfoheader lpbmih=pdib-m_lpbmih; if (lpbmih-bibitcount != 8) /*判斷是否是 8-bpp 位圖*/ messagebox(目前只支持 256 色位圖的圖像分割!, 系統(tǒng)提示 , mb_iconinformation | mb_ok); /*提示用戶*/ return; int y; int x; csize sizeimage = pdib-getdimensions();/*獲得

36、圖像的大小*/ int nwidth = sizeimage.cx ; int nheight= sizeimage.cy ; int nsavewidth = pdib-getdibsavedim().cx; unsigned char * punchimage = new unsigned charnwidth*nheight; /*開 辟內(nèi)存,存儲圖像數(shù)據(jù)*/ for(y=0; ynheight; y+) for(x=0; xm_lpimagey*nsavewidth+x; unsigned char * punchedge = new unsigned charnwidth*nheig

37、ht; /* canny 算子計算后的結(jié)果*/ canny(punchimage, nwidth, nheight, 0.4, 0.4, 0.79, punchedge) ; /*調(diào)用 canny 函數(shù)進行邊界提取*/ for(y=0; ynheight; y+) for(x=0; xm_lpimagey*nwidth+x=(unsigned char)(255- punchedgey*nwidth+x); delete punchimage; punchimage = null ; delete punchedge ; punchedge = null ; endwaitcursor();

38、invalidate(); 3.23.2實驗結(jié)果實驗結(jié)果 本節(jié)給出了幾幅主要的視網(wǎng)膜圖像分割的測試結(jié)果:圖 4 為原始圖,圖 5 為所轉(zhuǎn)換成的 256 級灰度圖,圖 6 為用固定閾值進行的視網(wǎng)膜圖像分割,圖 7 至 圖 11 為選取了各種大小的子鄰域?qū)σ暰W(wǎng)膜圖像分別進行的分割測試。圖 12 為用 canny 算子所進行的邊緣檢測分割,用此與自適應(yīng)閾值分割來進行對比。 圖圖 4 4 所要測試的原圖所要測試的原圖 圖圖 5 5 轉(zhuǎn)換成的轉(zhuǎn)換成的 256256 級灰度圖級灰度圖 圖圖 6 6 固定閾值分割固定閾值分割 圖圖 7 7 鄰域為鄰域為 3x33x3 的自適應(yīng)閾值分割的自適應(yīng)閾值分割 圖圖

39、8 8 鄰域為鄰域為 5x55x5 的自適應(yīng)閾值分割的自適應(yīng)閾值分割 圖圖 9 9 鄰域為鄰域為 9x99x9 的自適應(yīng)閾值分割的自適應(yīng)閾值分割 圖圖 1010 鄰域為鄰域為 15x1515x15 的自適應(yīng)閾值分割的自適應(yīng)閾值分割 圖圖 1111 鄰域為鄰域為 23x2323x23 的自適應(yīng)閾值分割的自適應(yīng)閾值分割 圖圖 1212 canny 算子所進行的邊緣檢測分割算子所進行的邊緣檢測分割 3.33.3性能分析性能分析 通過 3.2 節(jié)的圖 4 至圖 12 可以驗證本課題的可行性。 圖 6 的固定閾值分割結(jié)果只顯示了一個眼球的整體輪廓,由此可見這種固定 閾值的分割法顯然無法從事繁瑣的視網(wǎng)膜圖

40、像分割,用于精確的血管分割便 顯得毫無作用。 圖 7 至圖 11 的以自適應(yīng)閾值分割可得到圖像中,可以清晰的看到所提取的 視網(wǎng)膜血管,并且選用不同的鄰域進行自適應(yīng)閾值分割,所得到的圖像清晰 程度也不同。所選取子鄰域越小的分割圖像背景噪聲分布越廣,但對所提取 的目標(biāo)血管影響越小。反之,當(dāng)選取的鄰域越大的分割圖像背景噪聲分布顯 得集中了,但對所提取的目標(biāo)血管有所影響。 圖12為canny算子所進行的邊緣檢測分割,通過圖中所顯示的目標(biāo)血管與自適 應(yīng)閾值分割的圖像相比,明顯可見其損失了很多目標(biāo)血管圖像,出現(xiàn)假的邊 緣,丟失真的邊緣,效果失真。 對自適應(yīng)閾值視網(wǎng)膜圖像分割的結(jié)果表明,檢測的準(zhǔn)確程度明顯高

41、于其他 方法,目標(biāo)血管提取清晰程度高,而且失真最小,因此自適應(yīng)閾值分割算法可有 效地用于視網(wǎng)膜圖像的分割。但還是存在著背景噪聲對于目標(biāo)血管的干擾,因而 今后對算法的改進可以從去噪這個方面進行深入研究。 第第 4 4 章章總結(jié)總結(jié) 本文對視網(wǎng)膜圖像分割方法的理論和應(yīng)用進行了一定的研究,在查閱了大量 的國內(nèi)外關(guān)于視網(wǎng)膜圖像分割的文獻后,本人對視網(wǎng)膜圖像分割的方法有了具體 的了解,文中開始先闡述了視網(wǎng)膜圖像分割在醫(yī)學(xué)治療和身份鑒別中的重要應(yīng)用, 然后再提到手動分割圖像對于人工的消耗和步驟的繁雜,既耗時又耗力,而計算 機自動分割卻剛好能有效的解決這些不足,體現(xiàn)出其快捷,方便,準(zhǔn)確的優(yōu)點, 而且還能節(jié)省

42、很多資金上的花費。之后再對當(dāng)今對于視網(wǎng)膜圖像分割的算法按照 分割方法的不同進行歸類,并在每大類中取出一個具體例子加以說明,比較其優(yōu) 缺點。說明了當(dāng)今視網(wǎng)膜圖像分割的研究和存在的問題。最后自己開始著手于第 三大類并行區(qū)域分割法中的自適應(yīng)閾值分割算法進行深入研究,并開始了軟件的 設(shè)計,過程中還發(fā)生過許多小的問題,在張教授的指導(dǎo)下進行程序的分部調(diào)試和 檢測,最終完成了本程序并開始進行具體實驗驗證。文中給出了若干幅具有代表 性的實驗結(jié)果圖,并對這些實驗結(jié)果圖進行比較和分析,來說明其算法的優(yōu)點以 及不足之處。 本文所提出的算法是基于對目標(biāo)像素點的鄰域進行求均值,然后跟所求均值 進行比較,進行重新賦值。這

43、類算法的時間復(fù)雜圖和空間復(fù)雜度較大,但是抗噪 聲能力較強,得到的圖像清晰程度較高,對原圖的目標(biāo)血管數(shù)據(jù)的失真小。而本 課題的實驗結(jié)果已經(jīng)充分地驗證了該研究的可行性。因此背景的噪聲干擾對精確 性仍存在一定的影響。故今后對該算法的改進可以從去噪方面進行深入研究。對 于去噪算法的介紹在很多公開的期刊上都能找到。 本文中該視網(wǎng)膜圖像分割算法取得了若干成果,但是,視網(wǎng)膜圖像分割技術(shù) 涉及到圖像處理、計算機、醫(yī)學(xué)、數(shù)學(xué)等許多方面,作為一項多學(xué)科交叉的綜合 性技術(shù),它還有許多問題有待進一步研究。此外,眼底圖像中血管網(wǎng)絡(luò)的提取屬 于弱信號的提取,由于血管網(wǎng)絡(luò)的復(fù)雜性、特殊性和處理結(jié)果要求的高精確性, 使得研究

44、面臨的難題仍然很多,算法有待改進的空間仍然很大。 目前,本研究只是實現(xiàn)了對視網(wǎng)膜的目標(biāo)血管與背景進行分離和提取。今后 將進一步研究在視網(wǎng)膜用于身份鑒定中的配比核對。 參考文獻參考文獻 1t.y. wong and r. mcintosh. systemic associations of retinal microvascular signs: a review of recent population-based studies. ophthalmic and physiological optics,25(3):195204, 2005. 2楊枝靈,王開.visual c+ 數(shù)字圖像獲取處

45、理及實踐應(yīng)用m.北京:人民郵 電出版社,2003. 3王植,賀賽先.一種基于 canny 理論的自適應(yīng)邊緣檢測方法j.中國圖象圖 形學(xué)報,2004,9 (8):957-962. 4戴培山,王博亮,鞠穎. 視網(wǎng)膜血管圖像分割及眼底血管三維重建j.自動化 學(xué)報,2009,35 (9):1165-1176. 5周鮮成. 圖像分割方法及其應(yīng)用研究綜述j.信息技術(shù)報,2007,24(12) :11-14. 6ayala g,leon t,zapater v. different averages of a fuzzy set with an applicati on to vessel segmenta

46、tionj.ieee transactions on fuzzy systems,2005,13 (3) :384-393. 7朱宏擎.基于灰度-梯度共生矩陣的視網(wǎng)膜血管分割方法j.上海交通大學(xué)學(xué)報 ,2004,38 (9):1485-1488. 8張惠蓉.眼微循環(huán)及其相關(guān)疾病m.北京:北京醫(yī)科大學(xué)中國協(xié)和醫(yī)科大 學(xué)聯(lián)合出版社,1993. 9吳振中.現(xiàn)代臨床眼科學(xué)m.長沙:湖南科學(xué)技術(shù)出版社,1996. 10 湯敏,王惠男.彩色視網(wǎng)膜血管圖像的自動分割算法j.儀器儀表學(xué)報,2007 ,28(7):1281-1285. 11 姚暢,陳后金,李居朋.基于過渡區(qū)提取的視網(wǎng)膜血管分割方法j.電子學(xué)報

47、,2008,36 (5):974-978. 12 潘立豐,王利生.一種視網(wǎng)膜血管自適應(yīng)提取方法j.中國圖象圖形學(xué)報,200 6,11 (3):310-316. 13 趙凡.一種基于邊緣檢測的視網(wǎng)膜圖像的分割方法j.陜西工學(xué)院學(xué)報,2003 ,19 (2):32-33. 14 zhu h q,shu h z,luo l m. blood vessels segmentation in retina via wavelet t ransforms using steerable filtersj.proceedings of the 17th ieee symposium on computer-

48、based medical systems 2004,2004:316-321. 15 y. zhang, et al., “detection of retinal blood vessels based on nonlinear projections,” j. signal processing systems, vol. 55, pp. 103-112, 2009. 16 e. w. dijkstra, “a note on two problems in connexion with graphs,” numerische mathematik, 1, pp. 269-271, 19

49、59. 17 h. azegrouz, e. trucco, “max-min central vein detection in retional fundus images,” ieee international conference on image processing (icip 2006), pp. 1925-1928, 2006. 18 m. s. mabroukl, “survey of retinal image segmentation and registration,” gvip journal, vol. 6 (2), pp. 1-11, 2006. 19 x. f

50、alcao, et al., “an ultra-fast user-steered image segmentation pardigm:live wi re on the fly,” ieee trans on medical imageing, vol. 19 (1), pp. 55-62, 2000. 附錄附錄 核心代碼核心代碼 由于本研究的軟件實現(xiàn)用了開源框架 cximage,而 cximage 源碼較長,讀者 在網(wǎng)上可以比較容易地找到,故附錄里只給出了本研究的核心算法的源碼。源碼 如下: void cdemodoc:oncximageybb() / todo: add your c

51、ommand handler code here if (image=null) return; long w, h, x, y; rgbquad c; dlgcanny dlg; if (dlg.domodal()=idok) setcursor(loadcursor(0,idc_wait); stopwatch(0); w = image-getwidth(); h = image-getheight(); unsigned char *img; /* the input image */ unsigned char *edge; /* the output edge image */ /

52、int rows, cols; /* the dimensions of the image. */ float sigma, /* standard deviation of the gaussian kernel. */ tlow, /* fraction of the high threshold in hysteresis. */ thigh; /* high hysteresis threshold control. the actual threshold is the (100 * thigh) percentage point in the histogram of the m

53、agnitude of thegradient image that passes non-maximalsuppression. */ sigma = dlg.m_sigma; tlow = dlg.m_tlow; thigh = dlg.m_thigh; img = (unsigned char *) calloc(w*h,sizeof(unsigned char); edge = (unsigned char *) calloc(w*h,sizeof(unsigned char); for (y = 0; yh;y+) for(x =0; xgetpixelcolor(x,y).rgbg

54、reen; canny(img, h, w, sigma, tlow, thigh, edge); free(img); cximage *newb = new cximage(w,h,24); for (y = 0; yh;y+) for(x =0; xsetpixelcolor(x,y,c); free(edge); cdemodoc *newdocg=(cdemodoc*)(cdemoapp*)afxgetapp()- demotemplate-opendocumentfile(null); if (newdocg) newdocg-image = newb; cstring s; s.

55、format(canny edge from %s,gettitle(); newdocg-settitle(s); newdocg-updateallviews(0,wm_user_newimage); stopwatch(1); updatestatusbar(); setcursor(loadcursor(0,idc_arrow); void cdemodoc:onupdatecximagecanny(ccmdui* pcmdui) / todo: add your command update ui handler code here m_menucommand=id_cximage_

56、canny; hthread=(handle)_beginthread(runcximagethread,0,this); void cdemodoc:oncximagezhou() / todo: add your command handler code here void cdemodoc:onupdatecximagezhou(ccmdui* pcmdui) / todo: add your command update ui handler code here void cdemodoc:oncximagedu() / todo: add your command handler c

57、ode here if (image=null) return; cximage *newr = new cximage(); cximage *newg = new cximage(); cximage *newb = new cximage(); long w, h, x, y; /int n; /long x1,y1,x2,y2,x3,y3,x4,y4; /double mdist,dist; /byte th_l; /rgbquad c; stopwatch(0); w = image-getwidth(); h = image-getheight(); byte *edgeimg,

58、v; edgeimg = (byte *)malloc(w)*(h)*sizeof(byte); for (y=0;yh;y+) for(x =0; xw;x+) v = 0; if(x+1)=0 v += 2*image-getpixelindex(x+1,y); v += image-getpixelindex(x+1,y+1); v -= image-getpixelindex(x-1,y-1); v -= 2*image-getpixelindex(x-1,y); v -= image-getpixelindex(x-1,y+1); edgeimgy*w+x = v; for (y=0

59、;yh;y+) for(x =0; xsetpixelindex(x,y,v); void cdemodoc:onupdatecximagedu(ccmdui* pcmdui) / todo: add your command update ui handler code here m_menucommand=id_cximage_du; hthread=(handle)_beginthread(runcximagethread,0,this); void cdemodoc:oncximagemyfirst() / todo: add your command handler code her

60、e if (image=null) return; long w, h, x, y; w = image-getwidth();/ obtain the width of image h = image-getheight();/ obtain the height of the image image-grayscale();/ convert the color image into gray image/ byte v, *edge; edge = (byte *)malloc(w)*(h)*sizeof(byte);/ save processed results /processin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論