基於模糊理論的圖像分割算法研究

學識都 人氣:5.13K

  論文關鍵詞: 圖像分割 邊緣檢測  模糊理論 遺傳算法 Matlab  

基於模糊理論的圖像分割算法研究

  論文摘要:分割的目的是將圖像劃分爲不同區域。圖像分割算法一般是基於亮度值的兩個基本特性之一:不連續性和相似性。第一類性質的已用途徑是基於亮度的不連續變化分割圖像,比如圖像的邊緣。第二類的主要應用途徑是依據事先制訂的準則將圖像分割爲相似的區域。門限處理、區域生長、區域分離和聚合都是這類方法的實例。遺傳算法具有簡單、魯棒性好和本質並行的突出優點。其在應用領域取得的巨大成功,引起了廣大學者的關注。在圖像分割領域,遺傳算法常用來幫助確定分割閾值。

本文介紹討論了幾種目前廣泛應用的圖像邊緣檢測、圖像閾值分割的各種算法,並給出了對比分析;對遺傳算法的基本概念和研究進展進行了綜述;給出了標準遺傳算法的原理、過程、實驗結果及分析. 實驗結果表明,本文提出的遺傳分割算法優於傳統分割算法。

  第一章 緒論 1.1  圖像分割綜述

圖像分割就是指把圖像分成各具特性的區域並提取出感興趣目標的技術和過程。這裏所說的特性可以是灰度、顏色、紋理等,而目標可以對應單個區域,也可以對應多個區域。圖像分割是數字圖像處理中的一項關鍵技術,它使得其後的圖像分析,識別等高級處理階段所要處理的數據量大大減少,同時又保留有關圖像結構特徵的信息。而且,在數字圖像處理工程中,一方面,圖像分割是目標表達的基礎,對特徵測量有重要的影響;另一方面,圖像分割是自動目標識別的關鍵步驟,圖像分割及其基於分割的目標表達、特徵提取和參數測量等將原始圖像轉化爲更抽象更緊湊的形式,分割中出現的誤差會至高層次處理階段,因此分割的精確程度是至關重要的。只有通過細緻精細的圖像分割,才能使得更高層的圖像分析和理解成爲可能。因此,圖像分割是由圖像處理進到圖像分析的關鍵步驟,在圖像工程中佔據重要的位置。

1.2  圖像分割的研究意義與發展現狀

作爲視覺和圖像處理中的難點和熱點之一,圖像分割的研究受到了研究工作者的高度重視,對圖像分割進行了深入、廣泛的研究。作爲一種重要的圖像技術,圖像分割在不同領域中有時也用其它名稱:如目標輪廓(object delineation)技術,閾值化(thresholding)技術,圖像區分或求差(image discrimination)技術,目標檢測(target detection)技術,目標識別(target recognition)技術,目標跟蹤(target tracking)技術等,但這些技術本身或其核心實際上也就是圖像分割技術。圖像分割作爲圖像處理、分析的一項基本內容,其應用非常廣泛,幾乎出現在有關圖像處理的所有領域,並涉及各種類型的圖像。在自動化、在線產品、生產程控、文件圖像處理、遙感圖像、保安監視、以及軍事、體育、等行業和工程中,圖像分割都有着廣泛的應用。例如:在遙感圖像中,合成孔徑雷達圖像中目標的分割、遙感雲圖中不同雲系和背景分佈的分割等;在應用中,腦部 MR 圖像分割成灰質(GM)、白質(WM)、腦脊髓(CSF)等腦組織和其它腦組織區域(NB)等;在圖像分析中,把車輛目標從背景中分割出來等;在面向對象的圖像壓縮和基於內容的圖像檢索中將圖像分割成不同的對象區域等。在各種圖像應用中,只要需對圖像目標進行提取,測量等都離不開圖像分割。

自 20 世紀 70 年代至今,已提出上千種各種類型的分割算法。如:門限法、匹配法、區域生長法、分裂-合併法、水線法、馬爾可夫隨機場模型法、多尺度法、小波分析法、形態學等。隨着新理論、新技術的發展,一些新的圖像分割方法也隨之出現,但這些分割算法都是針對某一類型圖像、某一具體的應用問題而提出的,並沒有一種適合所有圖像的通用分割算法。通用方法和策略仍面臨着巨大的困難。另外,還沒有制定出選擇適用分割算法的標準,這給圖像分割技術的應用帶來許多實際問題。

1.3 本論文所作的工作

據此,在本論文中只對常用的、並在實踐中行之有效的邊緣檢測方法和閾值分割方法進行深入的瞭解,並對閾值分割方法中的灰度直方圖雙峯法和基於遺傳算法的最大類間方差法進行詳細的討論,同時用Matlab對上述兩種方法進行驗證並給出結果。

1.4 本論文的論述內容

本文對圖像分割的整個過程中的一些常用的,經實踐檢驗行之有效的算法進行了討論和 改進。全文共七章。第一章爲緒論,主要介紹了現階段圖像分割技術的發展現狀和研究意義。其他六章分別在以下幾個方面介紹了本文所做的工作:

1.對本文所採用的試驗測試工具Matlab 進行簡介。

2.簡介數字圖像的基礎問題。概述了數字圖像的基本概念和特點,簡介了各種圖像格式的特點和應用,爲全文的討論作一鋪墊。

3.詳細討論了圖像分割中的基於閾值的圖像分割方法,給出了直方雙峯法的算法和驗證結果,並簡要介紹了普通最大類間方差法的算法過程。

4.對遺傳算法理論進行簡介。詳細討論了遺傳算法的定義和標準遺傳算法的流程和要素。爲應用此方法對最大閾值進行迭代尋優打下基礎。

6.應用遺傳算法改進了最大類間方差法。給出了整個遺傳操作的使 用函數與具體進程,並對實例圖片進行處理,得到處理結果並得到迭代最優閾值M。

本文研究了圖像分割的相關理論和常用技術,並對遺傳算法進行了介紹,對遺傳算法應用於圖像分割進行了驗證.

第二章  Matlab簡介 2.1  MATLAB的概況和產生背景 2.1.1   MATLAB的概況

MATLAB是矩陣實驗室(Matrix Laboratory)之意。除具備卓越的數值計算能力外,它還提供了專業水平的符號計算,文字處理,可視化建模仿真和實時控制等功能。MATLAB的基本數據單位是矩陣,它的指令表達式與,工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等完相同的事情簡捷得多.
 當前流行的MATLAB包括擁有數百個內部函數的主包和三十幾種工具包(Toolbox).工具包又可以分爲功能性工具包和學科工具包.功能工具包用來擴充MATLAB的符號計算,可視化建模仿真,文字處理及實時控制等功能.學科工具包是專業性比較強的工具包,控制工具包,信號處理工具包,工具包等都屬於此類.開放性使MATLAB廣受用戶歡迎.除內部函數外,所有MATLAB主包文件和各種工具包都是可讀可修改的文件,用戶通過對源程序的修改或加入自己編寫程序構造新的專用工具包.

2.1.2   MATLAB產生的背景

在70年代中期,Cleve Moler博士和其同事在美國國家科學基金的資助下開發了調用EISPACK和LINPACK的FORTRAN子程序庫ACK是特徵值求解的FOETRAN程序庫,LINPACK是解線性方程的程序庫.在當時,這兩個程序庫代表矩陣運算的最高水平.到70年代後期,身爲美國New Mexico大學系系主任的Cleve Moler,在給學生講授線性代數課程時,想教學生使用EISPACK和LINPACK程序庫,但他發現學生用FORTRAN編寫接口程序很費時間,於是他開始自己動手,利用業餘時間爲學生編寫EISPACK和LINPACK的接口程序e Moler給這個接口程序取名爲MATLAB,該名爲矩陣(matrix)和實驗室(labotatory)兩個英文單詞的前三個字母的組合.在以後的數年裏,MATLAB在多所大學裏作爲教學輔助軟件使用,並作爲面向大衆的軟件廣爲流傳。1983年春天,Cleve Moler到Standford大學講學,MATLAB深深地吸引了工程師John Little敏銳地覺察到MATLAB在工程領域的廣闊前景.同年,他和Cleve Moler,Steve Bangert一起,用C語言開發了第二代專業版.這一代的MATLAB語言同時具備了數值計算和數據圖示化的功能.1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向,並繼續進行MATLAB的研究和開發.
 在當今30多個數學類科技應用軟件中,就軟件數學處理的原始內核而言,可分爲兩大類.一類是數值計算型軟件,如MATLAB,Xmath,Gauss等,這類軟件長於數值計算,對處理大批數據效率高;另一類是數學分析型軟件,Mathematica,Maple等,這類軟件以符號計算見長,能給出解析解和任意精確解,其缺點是處理大量數據時效率較低Works公司順應多功能需求之潮流,在其卓越數值計算和圖示能力的基礎上,又率先在專業水平上開拓了其符號計算,文字處理,可視化建模和實時控制能力,開發了適合多學科,多部門要求的新一代科技應用軟件MATLAB.經過多年的國際競爭,MATLAB以經佔據了數值軟件市場的主導地位.
 在MATLAB進入市場前,國際上的許多軟件包都是直接以FORTRANC語言等編程語言開發的。這種軟件的缺點是使用面窄,接口簡陋,程序結構不開放以及沒有標準的基庫,很難適應各學科的最新發展,因而很難推廣。MATLAB的出現,爲各國科學家開發學科軟件提供了新的基礎。在MATLAB問世不久的80年代中期,原先控制領域裏的一些軟件包紛紛被淘汰或在MATLAB上重建。
 時至今日,經過MathWorks公司的不斷完善,MATLAB已經發展成爲適合多學科,多種工作平臺的功能強大大大型軟件。在國外,MATLAB已經經受了多年考驗。在歐美等高校,MATLAB已經成爲線性代數,自動控制理論,數理,數字信號處理,時間序列分析,動態系統仿真等高級課程的基本教學工具;成爲攻讀學位的大學生,碩士生,博士生必須掌握的基本技能。在設計研究單位和部門,MATLAB被廣泛用於科學研究和解決各種具體問題。在國內,特別是工程界,MATLAB一定會盛行起來。可以說,無論你從事工程方面的哪個學科,都能在MATLAB裏找到合適的功能。

2.2 MATLAB的語言特點

一種語言之所以能如此迅速地普及,顯示出如此旺盛的生命力,是由於它有着不同於其他語言的特點,正如同FORTRAN和C等高級語言使人們擺脫了需要直接對計算機硬件資源進行操作一樣,被稱作爲第四代計算機語言的MATLAB,利用其豐富的函數資源,使編程人員從繁瑣的程序代碼中解放出來。MATLAB最突出的特點就是簡潔。MATLAB用更直觀的,符合人們思維習慣的代碼,代替了C和   FORTRAN語言的冗長代碼。MATLAB給用戶帶來的是最直觀,最簡潔的程序開發。以下簡單介紹一下MATLAB的主要特點。
1. 語言簡潔緊湊,使用方便靈活,庫函數極其豐富。MATLAB程序書寫形式自由,利用起豐富的庫函數避開繁雜的子程序編程任務,壓縮了一切不必要的編程工作。由於庫函數都由本領域的專家編寫,用戶不必擔心函數 的可靠性。可以說,用MATLAB進行科技開發是站在專家的肩膀上。 更爲難能可貴的是,MATLAB甚至具有一定的智能水平,所以用戶根本不用懷疑MATLAB的準確性。
2. 運算符豐富。由於MATLAB是用C編寫的,MATLAB提供了和C語言幾乎一樣多的運算符,靈活使用MATLAB的運算符將使程序變得極爲簡短。
3. MATLAB既具有結構化的控制語句(如for循環,while循環,break語句和if語句),又有面向對象編程的特性。
4. 程序限制不嚴格,程序設計自由度大。例如,在MATLAB裏,用戶無需對矩陣預定義就可使用。
5. 程序的可移植性很好,基本上不做修改就可以在各種型號的和操作系統上運行。
6. MATLAB的圖形功能強大。在FORTRAN和C語言裏,繪圖都很不容易,但在MATLAB裏,數據的可視化非常簡單。MATLAB還具有較強的編輯圖形界面的能力。
7. MATLAB的缺點是,它和其他高級程序相比,程序的執行速度較慢。由於MATLAB的程序不用編譯等預處理,也不生成可執行文件,程序爲解釋執行,所以速度較慢。
8. 功能強大的工具箱是MATLAB的另一特色。MATLAB包含兩個部分:核心部分和各種可選的工具箱。核心部分中有數百個核心內部函數。其工具箱又分爲兩類:功能性工具箱和學科性工具箱。功能性工具箱主要用來擴充其符號計算功能,圖示建模仿真功能,文字處理功能以及與硬件實時交互功能。功能性工具箱用於多種學科。而學科性工具箱是專業性比較強的,如control,toolbox,signl proceessing toolbox,commumnication toolbox等。這些工具箱都是由該領域內學術水平很高的專家編寫的,所以用戶無需編寫自己學科範圍內的基礎程序,而直接進行高,精,尖的研究。
9. 源程序的開放性。開放性也許是MATLAB最受人們歡迎的特點。除內部函數以外,所有MATLAB的核心文件和工具箱文件都是可讀可改的源文件,用戶可通過對源文件的修改以及加入自己的文件構成新的工具箱。

2.3 MATLAB 遺傳算法工具箱簡介

  鑑於Matlab強大的擴展功能和影響力,各個領域的專家相繼突出了許多基於Matlab的專用工具箱。本文所採用的遺傳算法工具箱,就是由英國謝菲爾德(Sheffield)大學設計推出的。相對於其他版本的遺傳算法工具箱,如:美國北卡萊羅納州立大學推出的遺傳算法優化工具箱GAOT(Genetic Algorithm Optimization Toolbox),以及MathWorks公司最新發布的一個專門設計的Matlab遺傳算法和直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox),本工具箱的出現最早,影響較大且功能較爲完備。文中所採用的所有遺傳操作函數大部分出自本工具箱。

第三章  數字圖像基礎簡介

 圖像處理的首要一步,就是要了解圖像的基本性質與特點。只有充分了解和掌握了所要處理得圖像的特點和性質,才能在接下來的處理中根據圖像的特點獲取所需的信息,並對其進行相應的處理。

本章將介紹數字圖像的基礎知識,以及圖像在計算機處理中的信息表達形式,並對幾種常用的圖像文件格式Bmp, Jpeg以及Png等做簡要的介紹。

3.1  圖像的基本概念及其特點

要對圖像進行處理,必須清楚圖像的概念。一般來說,二維或三維景物呈現在人眼中的樣子就是圖像。圖像具有以下三個方面的特點:

①圖像帶有大量的信息,一幅圖像頂得上千言萬語;

②圖像種類繁多,包括照片、繪圖視頻圖像等;

③人類從外界獲得的大部分信息來自視覺系統。

人們看到的任何自然界的圖像都是連續的模擬圖像。其形狀和形態表現由圖像各位置的顏色來決定。可以用f(x, y)表示一幅模擬圖像,其中x, y表示空間座標點的位置,f表示圖像在點(x, y)的某種性質的數值,如亮度、顏色等,f、x、y可以是任意的實數。而把連續空間的圖像在座標空間(X, Y)和性質空間F都離散化,以便於計算機進行加工處理的離散化的圖像則稱爲數字圖像。數字圖像用I (r, c)來表示,其中:r=row爲行,c = col爲列,表示空間離散點的座標,I表示離散化的圖像f。I, r, c都是整數。實際中仍習慣用f (x, y)表示數字圖像。圖像存儲畫面的形式爲柵格結構:即將圖像劃分爲均勻分佈的柵格(像素),顯式的記錄每一像素的亮度和顏色;而將像素的座標值規則地隱含起來,其位置排列規則,通常爲矩形排列。

3.2 圖像的格式

組成數字圖像的基本單位稱爲像素(Pixel),把像素按不同的方式進行組織和存儲,就得到不同的圖像格式;把圖像數據存爲文件就得到圖像文件。圖像文件按其格式的不同一般具有不同的擴展名。常用的圖像文件格式有位圖文件、JPEG文件、GIF文件、PNG文件等。每一種格式都有它的特點和用途,在選擇輸出的圖像文件格式時,應考慮圖像的應用目的以及圖像文件格式對圖像數據類型的要求。下面我們介紹幾種常用的圖像文件格式及其特點。

3.2.1 BMP圖像格式

這是一種DOS和Windows兼容計算機系統的標準圖像格式。BMP格式支持索引色、灰度等色彩模式。圖像存儲爲BMP格式時,每一個像素所佔的位數可以是1位、4位、8位或32位,相對應的顏色數也從黑白一直到真彩色。對於使用Windows格式的4位和8位圖 像,可以指定採用RLE壓縮。BMP圖像文件含文件頭、調色板數據和圖像數據三個層次。其中文件頭由定義文件標識、大小即圖像數據偏移量的BITMAPF工LEHEADER以及指定BMP圖像自身的若干參數的BITMAPINFOHEADER兩部分組成。這種格式在PC機上應用非常普遍。

3.2.2 JPEG圖像格式

JPEG是由聯合照片專家組(JiontPhotographic Experts Group)開發的一種圖像文件格式。它採用有損壓縮方式去除冗餘的圖像和彩色數據,在獲取極高的壓縮率的同時也能展現十分豐富生動的圖像。也就是說,可以用較少的磁盤空間得到較好的圖像質。另外,JPEG還是一種比較靈活的格式,當將圖像保存爲JPEG格式時,允許用戶用不同的壓縮比例對文件進行壓縮,就是可以指定圖像的品質和壓縮級別。

3.2.3 TIFF圖像格式

TIFF文件主要由三部份組成,包括文件頭、標識信息區和圖像數據區。T工FF文件的圖像數據區以行掃描的方式存取圖像,存儲圖像前先將圖像分割成若干部分,壓縮後再存儲。存儲時,單色圖像一個字節存儲8個點,16色圖像一個字節2個點,而256色圖像就是一個字節存儲一個點。TIFF圖像格式是一種應用非常廣泛的位圖圖像格式,幾乎被所有繪畫、圖像編輯和頁面排版應用程序所支持。TIFF格式常常用於在應用程序之間和平臺之間交換文件。

3.2.4 GIF圖像格式

CIF是Graphics Interchange Format(圖形交換格式)的縮寫,是由ComputerServe公司推出的一種圖像格式。該種圖像格式的特點是壓縮比高,可以極大地節省存儲空間。最初的GIF只是簡單的用來存儲單幅靜止圖像,後來可以同時存儲若干幅靜止圖像從而形成連續的動畫;同時,GIF格式支持透明背景,可以較好地與網頁背景融合在一起。因此,GIF常常用於保存作爲網頁數據進行傳輸的圖像文件,成爲網絡和BBS上使用頻率較高的一種圖像文件格式。但是GIF最多隻能處理256種色彩,不能用於存儲真彩色的圖像文件。

3.2.5 PNG圖像格式

這種格式稱爲可移植網絡圖像文件格式(Portable Network Graphics),由Thomas Boutell, Tom Lan。等人提出並設計。其特點是:①支持48位真彩色圖像、16位灰度圖像和顏色索引數據圖像;②主要面向網絡圖像傳輸和圖像編輯,其提供的二維交叉存儲機制使用戶在圖像網絡傳輸過程中能更快的觀察到接近真實的近似圖像;③對用戶完全透明且無專利限制,用戶可以從Internet上隨時下載與PNG文件格式配套的圖像數據壓縮算法源程序代碼:④ 具有比GIF高5-20%的壓縮效率;⑤ 具有可擴展性。

作爲目前最不失真的圖像格式, PNG格式圖像吸取了GIF和JPEG二者的優點。它可以把文件壓縮到極限以利於網絡傳輸,但由於採用無損壓縮方式來減少文件大小,PNG格式能保留所有與圖像品質有關的信息。同時,PNG支持圖像背景透明,顯示速度快。

本文的所有圖像的處理都是對由JPG格式圖像通過圖像格式轉化得來的Bmp格式的索引色圖像進行的,其具體轉換程序參見附錄[一]。

第四章  圖像分割 4.1 圖像分割算法的定義與分類

在圖像的研究和應用中,人們往往只對一幅圖像中的某些部分感興趣,這些感興趣的部分一般對應圖像中特定的、具有特殊性質的區域(可以對應單個區域,也可以對應多個區域),稱之爲目標或前景;而其它部分稱爲圖像的背景。爲了辨識和分析目標,需要把目標從一幅圖像中孤立出來,這就是圖像分割要研究的問題。所謂圖像分割,從廣義上來講,是根據圖像的某些特徵或特徵集合(包括灰度、顏色、紋理等)的相似性準則對圖像象素進行分組聚類,把圖像平面劃分成若干個具有某些一致性的不重疊區域。這使得同一區域中的象素特徵是類似的,即具有一致性;而不同區域間象素的特徵存在突變,即具有非一致性。從集合的角度出發,圖像分割定義如下:

設整個圖像空間爲一集合R 。根據選定的一致性準則P ,R 被劃分爲互不重疊的非空子集(或子區域):{R1, R2,L, Rn},這些子集必須滿足下述條件:

(1) R =

(2) 對於所有的i和j ,當i ≠ j, =空集

(3) P(Ri) = True ,對所有的i

(4) 所有i ≠ j;Ri ,Rj相鄰,P(Ri U Rj) = False

(5) 對i =1,2,L,n, Ri是連通區域

其中:P(Ri)爲作用於Ri 中所有象素的形似性謂詞,i, j =1,2,L,…n。上述條件

(1)指出分割後的全部子區域的總和應包含圖像中的所有元素,或者說分割應將圖像中每個象素都分進一個子區域中。

(2)指出各個子區域相互不重疊。

(3)指出分割後得到的屬於同一區域中的元素應該具有某種相同特性。

(4)指出對於分割後得到的屬於相鄰兩個區域中的元素具有某種不同的特性。(5)要求同一個子區域內的元素應當是連通的。

其中分割準則P 適用於所有象素,由它來確定各區域元素的相同特性。上述條件說明了圖像分割算法的一些特點,凡不符合以上特點的圖像處理算法則不能稱爲圖像分割算法。

目前,在己提出的多種類型的分割算法中,大致可以分爲基於邊緣檢測的方法和基於區域的方法。而在實際應用中,這些方法主要又可劃分爲三種類型: 邊緣檢測型、閾值型和區域跟蹤型。本文的討論 /I; P2=S2/J

F(k)=I*J*(P1-P2)* (P1-P2)/(256*256)

作爲適應度函數對個體進行適應度計算。式中,F(k)爲適應度函數;I爲目標圖像的像素數J爲背景圖像的像素數;S1 爲目標圖像的像素和,S2爲背景圖像的像素和。(函數源代碼參見附錄[四])

3) 選擇::

與標準遺傳算法略有不同,本例未採用輪盤賭方法進行選擇操作,而是以Matlab中的高級函數select作爲選擇程序。在這種方法中,需要設定代溝,即整個種羣在每一代中沒有完全被複制,有部分剩餘。本例設代溝GGAP=0.9,即每次遺傳後子代數量爲父代的90%。(函數源代碼參見附錄[五])。

4)   交叉:

在Matlab中使用高級函數recombin實現。即在當前種羣中每次選取兩個個體按設定的交叉概率(0.7)進行交叉操作,生成新的一代種羣; (函數源代碼參見附錄[六])。

5)  變異:

在Matlab中使用函數mut實現。即根據一定的變異概率Pm,選取當前種羣的每一行對應一個個體並用概率Pm變異每一個元素,從而形成新一代羣體。(函數源代碼參見附錄[七])

6)  終止

本程序中選擇指定代數(50代)作爲尋優循環跳出的判斷條件。判斷跳出條件是否滿足,若不滿足,則以新生成的羣體作爲第一代羣體,轉到步驟3繼續尋優,否則轉到步驟7。

7)  將最後一代羣體中適應度最大的個體作爲最優結果,將其反編碼(採用bs2rv函數),即爲所求的最佳分割閾值。

6.3  實驗結果與效果對比圖

爲了驗證算法的效果,選用一幅SHE的JPG圖像進行實驗,原始圖像顯示:

圖6.1

原始圖像

對上圖進行灰度變化後的灰度圖像如下: 

 

圖6.2

灰度圖象

在對灰度圖像轉化爲索引圖像並將其數據類型轉化爲雙精度型之後的圖片如下:

圖6.3

索引圖像

此時,就可對上圖進行基於遺傳算法的最大類間方差分割法進行處理了。設定初始羣體的數目N=40,交叉概率P c=0. 9,代溝爲0.9,變異率爲Pm採用默認值。最大迭代數G=50。實驗結果及數據如下:

通過50次迭代尋優後,找到最優化閾值M=162:

圖6.4

                   基於遺傳算法的最大類間方差法分割後圖像

圖6.5

直方圖雙峯法分割後的圖像

6.4實驗結論

 本文所討論的基於遺傳算法的圖像分割算法,採用標準遺傳算法作爲計算流程,但對其中的選擇算子進行了改變,用高級選擇函數select代替了傳統的單一選擇算子,使得在每次選擇運算後所得的父輩更爲健壯,更好的保持了第一代父輩的表現型,使得分割更加精確。通過設計變異概率,使得每次迭代遺傳運算後,子代的表現型略有改變,從而更以獲得最優的表現型(即最優閾值),減少了迭代尋優次數,降低了程序運行時間。同時考慮到過多迭代不利於降低程序運行時間,以及在尋優過程中的最佳值收斂問題,指定迭代次數爲50次時即跳出整個程序,通過反編碼求得最優閾值,並通過變量調用,直接應用於下面的分割程序,達到了整個算法的自動完成。

相對於灰度直方圖雙峯法,本方法對圖像的先驗信息要求不高,不需要像灰度直方圖法那樣,先通過獲得圖像的灰度直方圖取得分割閾值後再對圖像處理,整個程序的自動化程度高,且對於那些灰度直方圖不呈雙峯分佈的圖像,本算法程序一樣可以處理,這就擴大了本算法程序的靈活性,從而更具有實際意義。而且,由於灰度直方圖雙峯法的閾值是通過人眼觀察獲得,其誤差必然大於機器迭代運算所取得的最優閾值,而普通的閾值分割法,如ostu法,雖然實現了閾值的自動選擇,但其運算時間與本算法相比偏長,實時性差於本算法。因此,在圖像分割算法中,基於遺傳算法的圖像分割算法更優於其它傳統的圖像分割算法。

通過上述討論,以及兩種方法的處理結果圖片的對比,基於遺傳算法的最大類間方差法分割後圖像與直方圖雙峯法分割後的圖像像比,效果更明顯,且無須事先測量圖像的灰度直方圖,更加靈活,更加精確。

其相關試驗結論列於下表:

基於遺傳算法的圖象分割實驗結論總表:

參   考   文   獻

[1]張兆禮,趙春暉,梅曉丹.現代圖像處理技術及MAThAB實現.北京:人民郵電出版社,2001.1

[2]陳傳波,金先級.數字圖像處理[M].北京:出版社,2004.

[3]夏德深,傅德勝等.現代圖象處理技術與應用[M].南京:東南大學出版社,1997.

[4]章毓晉.圖象工程(上冊)圖象處理和分析.北京:清華大學出版社,1999.

[5]王小平,曹立明.遺傳算法理論、應用與軟件實現.西安:西安交大出版社,2002.

[6]徐立中,數字圖像的智能信息處理。北京:國防工業出版社,2001

[7]王耀南,李樹濤,毛建旭,圖像處理與識別技術,北京:高等出版社,2001

[8]雷英傑,張善文,李緒武,周創明AB遺傳算法工具箱及應用,西安:西安科技大學出版社

[9]何新貴.模糊知識處理的理論與計算, 國防出版社,1999

[10]徐建華.圖像處理與分析,北京:科學出版,1992.

[11]阮秋琦.數字圖象處,工業出版社,2001

[12]王博等.圖像平滑與邊緣檢測的模糊向量描述,小型微型統,Vol. 20(3), 1999

[13]吳謹,李娟,劉成雲,基於最大熵的灰度閾值選取方法,武漢科技大學學報(自然科學版),Vol. 27, No. 1, Mar, 2004

[14]李鑑慶,左坤隆,圖像閾值選取的一種快速算法.計算機與現代化,2001年第6期

[15]魏寶剛,魯東明,潘雲鶴等.多顏色空間上的互式圖像分割[J].計算機學報,2001, 24 (7):770-775

[16]杜亞勤,基於模糊集的圖像邊緣檢測技術研究:[碩士學位論文].西安:西安工業學院,2004年4月

[17]王保平,基於模糊技術的圖像處理方法研究[博士學位論文],西安:西安電子科技大學,2004, 9

[18]杜亞娟,潘泉,周德龍等,圖像多級灰度非線性模糊增強算法研究,數據採集與處Vo1.14 No.2

[19]Russ J C, The image processing handbook. New York:CRC Press,1994

[20]L A y Sets[J]rmation and Contro1,1965, (8):338-353

[21]Lotfi h,A fuzzy-set-theoretic interpretation of linguistic hedges, Journal of Cybernetic, 1972, 64(2):4-34

[22]S. K. Pal, R. A. King. Image Enhancement Using Fuzzy Sets. Electron. Let t.,1980 16 (9):376-378.

[23]S. K. PaI, R. :A. King, On Edge Detection of R-Ray Images Using Fuzzy Sets. IEEE . Anal and MachineIntell.1983,PAMI-5 (1):69-77.

[24]Otsu N. A Threshold Selection Method From Gray Level Histograms. IEEE Trans on Syst Man Cybernet, 1979, SMC-9:62-66

附 錄 附錄 一

灰度直方圖雙峯法分割源代碼

clear, close all

B=imread('2.jpg');                                            %讀入原始jpg格式圖像

figure(1);

imshow(B),title('原始jpg格式圖像');

I1=rgb2gray(B);                                                 %將原圖像轉化爲灰度圖象

figure(2);

imshow(I1),title('灰度格式圖像');

[I1,map1]=gray2ind(I1,255);                                     %將灰度圖像轉化爲索引圖像

figure(3), imhist(I1)                                           %畫出灰度直方圖,以判斷域值

 I1=double(I1);                                                  %將unit8數組轉化爲double型數組

 Z=I1                                                           %將double型數組I1轉存到Z中

[m, n]=size(Z);

for i=1:m

    for j=1:n

        if Z(i,j)>240                                          %灰度值大於域值時是白色

            Z(i,j)=256;

        end

    end

end

figure(4)                                                      %畫出分割後目標圖像

image(Z),title('分割後圖像');colormap(map1);

圖像I圖像格式轉化及灰度直方圖雙峯法分割源代碼

clear, close all

B=imread('she.jpg');                                       %讀入原始jpg格式圖像she

figure(1);

imshow(B),title('原始jpg格式圖像');

I1=rgb2gray(B);                                          %將原圖像轉化爲灰度圖象

figure(2);

imshow(I1),title('灰度格式圖像');

[I1,map1]=gray2ind(I1,255);                              %將灰度圖像轉化爲索引圖像

figure(3), imhist(I1)                                    %畫出灰度直方圖,以判斷域值

 I1=double(I1);                                    %將unit8數組轉化爲double型數組

 Z=I1                                             %將double型數組I1轉存到Z中

[m, n]=size(Z);

for i=1:m

    for j=1:n

        if Z(i,j)>240                                     %灰度值大於域值時是白色

            Z(i,j)=256;

        end

    end

end

figure(4)                                                    %畫出分割後目標圖像

image(Z),title('分割後圖像');colormap(map1);

圖像II圖像格式轉化及灰度直方圖雙峯法分割源代碼

clear, close all

B=imread('she.jpg');                                      %讀入原始jpg格式圖像月亮

figure(1);

imshow(B),title('原始jpg格式圖像');

I1=rgb2gray(B);                                          %將原圖像轉化爲灰度圖象

figure(2);

imshow(I1),title('灰度格式圖像');

[I1,map1]=gray2ind(I1,255);                              %將灰度圖像轉化爲索引圖像

figure(3), imhist(I1)                                    %畫出灰度直方圖,以判斷域值

 I1=double(I1);                                    %將unit8數組轉化爲double型數組

 Z=I1                                             %將double型數組I1轉存到Z中

[m, n]=size(Z);

for i=1:m

    for j=1:n

        if Z(i,j)>240                                     %灰度值大於域值時是白色

            Z(i,j)=256;

        end

    end

end

figure(4)                                                    %畫出分割後目標圖像

image(Z),title('分割後圖像');colormap(map1);

附錄 二

Crtbp 函數源代碼:(由謝菲爾德大學Andrew Chipperfield編寫)

% CRTBP.m - Create an initial population%

% This function creates a binary population of given size and structure.

%

% Syntax: [Chrom Lind BaseV] = crtbp(Nind, Lind, Base)

%

% Input Parameters:

%

%           Nind       - Either a scalar containing the number of individuals

%                    in the new population or a row vector of length two

%                    containing the number of individuals and their length.

%

%           Lind     - A scalar containing the length of the individual

%                    chromosomes.

%

%           Base    - A scalar containing the base of the chromosome

%                    elements or a row vector containing the base(s)

%                    of the loci of the chromosomes.

%

% Output Parameter

%    RecOpt    - (optional) Scalar containing the probability of

%                recombination/crossover occurring between pairs

%                of individuals.

%                if omitted or NaN, 1 is assumed

%    SUBPOP    - (optional) Number of subpopulations

%                if omitted or NaN, 1 subpopulation is assumed

%

% Output parameter:

%    NewChrom  - Matrix containing the chromosomes of the population

%                after recombination in the same format as OldChrom.

%  Author:    Hartmut Pohlheim

%  History:   18.03.94     file created

function NewChrom = recombin(REC_F, Chrom, RecOpt, SUBPOP);

% Check parameter consistency

   if nargin < 2, error('Not enough input parameter'); end

   % Identify the population size (Nind)

   [Nind,Nvar] = size(Chrom);

 

   if nargin < 4, SUBPOP = 1; end

   if nargin > 3,

      if isempty(SUBPOP), SUBPOP = 1;

      elseif isnan(SUBPOP), SUBPOP = 1;

      elseif length(SUBPOP) ~= 1, error('SUBPOP must be a scalar'); end

   end

   if (Nind/SUBPOP) ~= fix(Nind/SUBPOP), error('Chrom and SUBPOP disagree'); end

   Nind = Nind/SUBPOP;  % Compute number of individuals per subpopulation

   if nargin < 3, RecOpt = 0.7; end

   if nargin > 2,

      if isempty(RecOpt), RecOpt = 0.7;

      elseif isnan(RecOpt), RecOpt = 0.7;

      elseif length(RecOpt) ~= 1, error('RecOpt must be a scalar');

      elseif (RecOpt < 0 | RecOpt > 1), error('RecOpt must be a scalar in [0, 1]'); end

   end

% Select individuals of one subpopulation and call low level function

   NewChrom = [];

   for irun = 1:SUBPOP,

      ChromSub = Chrom((irun-1)*Nind+1:irun*Nind,:); 

      NewChromSub = feval(REC_F, ChromSub, RecOpt);

      NewChrom=[NewChrom; NewChromSub];

   end

% End of function

附錄 七

變異函數mut源代碼 :(由謝菲爾德大學Andrew Chipperfield編寫)

% MUT.m

%

% This function takes the representation of the current population,

% mutates each element with given probability and returns the resulting

% population.

%

% Syntax:       NewChrom = mut(OldChrom,Pm,BaseV)

%

% Input parameters:

%

%           OldChrom - A matrix containing the chromosomes of the

%                     current population. Each row corresponds to

%                     an individuals string representation.

%

%           Pm  - Mutation probability (scalar). Default value

%                     of Pm = 0.7/Lind, where Lind is the chromosome

%                     length is assumed if omitted.

%

%           BaseV     - Optional row vector of the same length as the

%                     chromosome structure defining the base of the

%                     individual elements of the chromosome. Binary

%                     representation is assumed if omitted.

%

% Output parameter:

%

%           NewChrom - A Matrix containing a mutated version of

%                     OldChrom.

%

% Author: Andrew Chipperfield

% Date: 25-Jan-94

function NewChrom = mut(OldChrom,Pm,BaseV)

% get population size (Nind) and chromosome length (Lind)

[Nind, Lind] = size(OldChrom) ;

% check input parameters

if nargin < 2, Pm = 0.7/Lind ; end

if isnan(Pm), Pm = 0.7/Lind; end

if (nargin < 3), BaseV = crtbase(Lind);  end

if (isnan(BaseV)), BaseV = crtbase(Lind);  end

if (isempty(BaseV)), BaseV = crtbase(Lind);  end

if (nargin == 3) & (Lind ~= length(BaseV))

   error('OldChrom and BaseV are incompatible'), end

% create mutation mask matrix

BaseM = BaseV(ones(Nind,1),:) ;

% perform mutation on chromosome structure

NewChrom = rem(OldChrom+(rand(Nind,Lind)<Pm).*ceil(rand(Nind,Lind).*(BaseM-1)),BaseM);

附錄 八

基於遺傳算法的最大類間方差法對JPG格式圖像分割的程序源代碼:

clear, close all

B=imread('she.jpg');                                          %讀入原始jpg格式圖像

figure(1);

imshow(B),title('原始jpg格式圖像');

I1=rgb2gray(B);                                          %將原圖像轉化爲灰度圖象

figure(2);

imshow(I1),title('灰度格式圖像');

BW1 = edge(I1,'sobel');

BW2 = edge(I1,'canny');

figure(6),imshow(BW1),title('邊緣檢測1');                                 %邊緣檢測

figure(5), imshow(BW2),title('邊緣檢測2');

[I1,map1]=gray2ind(I1,255);                              %將灰度圖像轉化爲索引圖像

I1=double(I1);                                     %將unit8數組轉化爲double型數組

 Z=I1                                             %將double型數組I1轉存到Z中

figure(3)                                              %畫出未進行分割的原始圖像

image(Z),title('未進行分割的原始圖像');colormap(map1);        

NIND=40;                                         %個體