畢業(yè)論文-基于聚類的圖像分割系統(tǒng) -分割算法模塊_第1頁
畢業(yè)論文-基于聚類的圖像分割系統(tǒng) -分割算法模塊_第2頁
畢業(yè)論文-基于聚類的圖像分割系統(tǒng) -分割算法模塊_第3頁
畢業(yè)論文-基于聚類的圖像分割系統(tǒng) -分割算法模塊_第4頁
畢業(yè)論文-基于聚類的圖像分割系統(tǒng) -分割算法模塊_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

河北農(nóng)業(yè)大學(xué)現(xiàn)代科技學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 題目:—學(xué)部:工程技術(shù)學(xué)部專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)0903學(xué)號(hào):學(xué)生姓名:指導(dǎo)教師姓名:指導(dǎo)教師職稱:講師2013年5月30日摘要圖像分割的算法研究已有很多年的歷史,一直以來都得到了人們的高度重視。關(guān)于圖像分割的原理和方法世界各國均有不少的論文發(fā)表,但一直以來沒有一種一般的分割方法能夠適用于所有圖像分割處理。傳統(tǒng)的圖像分割方法的劣勢在于不能滿足人們的要求,為后續(xù)的圖像分析和理解帶來了困難。隨著計(jì)算機(jī)技術(shù)以及計(jì)算機(jī)性能的迅猛發(fā)展,及其相關(guān)技術(shù)的發(fā)展和成熟,結(jié)合色彩處理,圖像增強(qiáng)等技術(shù),個(gè)人計(jì)算機(jī)上就能夠?qū)崿F(xiàn)圖像分割處理。圖像處理技術(shù)有很多種,如圖像分析,顏色轉(zhuǎn)換,去噪等,但其中最主要的圖像處理技術(shù)是圖像分割技術(shù),從圖像中將某個(gè)特定區(qū)域與其它部分進(jìn)行分離并提取出來的部分進(jìn)行檢測,變換,識(shí)別等處理操作。圖像的分割是實(shí)現(xiàn)圖形理解的基礎(chǔ),也是計(jì)算機(jī)圖形學(xué)中的一個(gè)基本問題,并且在其他很多領(lǐng)域得到了應(yīng)用。由于圖像的格式和色彩形狀不同,要實(shí)現(xiàn)通用且快速的圖像分割仍然是一個(gè)難題。圖像分割的主要研究內(nèi)容有:建立可靠有效的分割模型,減少分割算法的運(yùn)算量,降低分割算法的復(fù)雜度,提高分割算法的通用性及抗噪性等。但是因?yàn)榉指钅P偷牟煌?各種分割方法在不同的分割模型表現(xiàn)出不同的優(yōu)缺點(diǎn)。有閾值分割方法,邊界分割方法,區(qū)域提取方法,結(jié)合特定理論工具的分割方法等。本文只對(duì)這些方法做簡單的介紹。本文中著重介紹的是,基于聚類的分割算法,聚類分析是一種無監(jiān)督分類法,它通過歸類相似性質(zhì)(結(jié)構(gòu)色彩)的樣本實(shí)現(xiàn)分類。在缺少相關(guān)知識(shí)時(shí),圖像分割可以通過聚類分析完成?;诰垲惙治龅膱D像分割算法的通用性好,并且對(duì)樣本空間的約束小。無論是灰度圖像、彩色圖像分還是紋理圖像,都可以應(yīng)用聚類分析方法完成分割。但是基于聚類分析的分割方法也有缺點(diǎn),主要就是因?yàn)榫垲惙治龇指钏惴ㄓ?jì)算量大,有可能出現(xiàn)極值問題并且對(duì)噪聲樣本比較敏感。本文分析了當(dāng)今圖像分割的研究成果以及面臨的主要問題,針對(duì)聚類算法用于圖像分割的特點(diǎn),著重對(duì)聚類算法進(jìn)行了算法實(shí)現(xiàn),并能用圖片的形式呈現(xiàn)出來。通過對(duì)聚類算法的是實(shí)現(xiàn),本文在其基礎(chǔ)上還對(duì)分割后的圖片進(jìn)行重新合并的操作,合并操作通過比對(duì),計(jì)算圖片碎片的相似度進(jìn)行實(shí)現(xiàn)。關(guān)鍵詞:圖像分割,復(fù)雜度,樣本空間,聚類分割,合并,相似度ABSTRACTImagesegmentationalgorithmhasseveraldecadesofhistory,hasbeensubjecttopeople'sattention.Ontheprinciplesandmethodsofimagesegmentationandabroadhavebeenmanypaperspublished,buthasbeenwithoutasegmentationmethodappliedtoimagesegmentationprocessing.Thetraditionalimagesegmentationmethodthereisalackof,cannotmeettherequirementsofthepeople,whichmakesitdifficultforfurtherimageanalysisandunderstanding.Withtherapiddevelopmentofcomputertechnology,andrelatedtechnologydevelopmentandmaturation,combinedwithtechnologiessuchasimageenhancement,imagesegmentationcanbeimplementedonacomputer.Theimageprocessingtechnologytherearemany,suchasimageanalysis,colorconversion,denoising,etc.,butthemostimportantimageprocessingtechniquesisimagesegmentationtechniquesfromaparticularregionoftheimagewillbecarriedoutwiththeremainingportionwasseparatedandextractedportiondetection,transform,identification,andprocessingoperation.Imagesegmentationisthebasisofvisualunderstanding,abasicproblemincomputervision,andhasbeenappliedinmanyfields.Duetothestructureandcontentoftheimagetype,toachieverapidgenericsegmentationremainsachallenge.Themaincontentsoftheimagesegmentation:establishaneffectivesegmentationmodel,reducingthecomplexityofthesegmentationalgorithm,andsegmentationalgorithmtoimprovethenoiseimmunityandversatility.Duetothesplitofthedifferentmodels,avarietyofsegmentationmethodshavedifferentadvantagesanddisadvantages.Thresholdingmethod,boundarysegmentationmethods,regionextractionmethod,combinedwithspecifictheoreticaltoolssegmentationmethod.Thisarticlepresentsabriefintroductionofthesemethods.Highlightedinthisarticle,clusteranalysisisanunsupervisedclassification,classificationbyclassifiedsamplesofsimilarnature.Intheabsenceofpriorknowledge,imagesegmentationcanbedonebyclusteranalysis.Imagesegmentationmethodbasedonclusteranalysisofthesamplespaceconstraintscommongoodsegmentationalgorithm.However,clusteranalysis-basedsegmentationmethodisnotperfect,mainlyduetoclusteranalysisofalargeamountoftheextremevalueproblemsandsensitivetonoisesamples.Thispaperanalyzesthetheimagesegmentationcurrentresearchandthemainproblemsfacingtheclusteringalgorithmforimagesegmentationfeatures,focusonclusteringalgorithmforimagesegmentationstudy.Byclusteringalgorithmisrealized,basedonthedividedpicturetore-mergeoperation,mergeoperationbycomparison,thecalculationofthesimilarityofthepiecesontoachieve.Keywords:imagesegmentation,thecomplexityofthesamplespace,clusteringsplit,merge,similarity目錄1.緒論 .緒論本畢業(yè)設(shè)計(jì)及畢業(yè)論文是在MicrosoftVisualStudio2008開發(fā)環(huán)境中,基于C++語言中的MFC類庫實(shí)現(xiàn)的。什么是MFC?MFC(MicrosoftFoundationClasses),是一個(gè)微軟公司提供的類庫(classlibraries),以C++類的形式封裝了Windows的API,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。其中包含的類包含大量Windows句柄封裝類和很多Windows的內(nèi)建控件和組件的封裝類。1.1開發(fā)環(huán)境概述1.1.1VisualStudio2008簡介MicrosoftVisualStudio2008是面向WindowsVista、Office2007、Web2.0的下一代開發(fā)工具,代號(hào)“Orcas”,是對(duì)VisualStudio2005一次及時(shí)、全面的升級(jí)。VisualStudio2008提供了高級(jí)開發(fā)工具、調(diào)試功能、數(shù)據(jù)庫功能和創(chuàng)新功能,幫助在各種平臺(tái)上快速創(chuàng)建當(dāng)前最先進(jìn)的應(yīng)用程序。VisualStudio2008包括各種增強(qiáng)功能,例如可視化設(shè)計(jì)器(使用.NETFramework3.5加速開發(fā))、對(duì)Web開發(fā)工具的大量改進(jìn),以及能夠加速開發(fā)和處理所有類型數(shù)據(jù)的語言增強(qiáng)功能。VisualStudio2008為開發(fā)人員提供了所有相關(guān)的工具和框架支持,幫助創(chuàng)建引人注目的、令人印象深刻并支持AJAX的Web應(yīng)用程序。開發(fā)人員能夠利用這些豐富的客戶端和服務(wù)器端框架輕松構(gòu)建以客戶為中心的Web應(yīng)用程序,這些應(yīng)用程序可以集成任何后端數(shù)據(jù)提供程序、在任何當(dāng)前瀏覽器內(nèi)運(yùn)行并完全訪問ASPNET應(yīng)用程序服務(wù)和Microsoft平臺(tái)。改進(jìn)1:快速的程序開發(fā)為了幫助開發(fā)人員迅速創(chuàng)建先進(jìn)的軟件,VisualStudio2008提供了改進(jìn)的語言和數(shù)據(jù)功能,例如語言集成的查詢(LINQ),各個(gè)編程人員可以利用這些功能更輕松地構(gòu)建解決方案以分析和處理信息。VisualStudio2008還使開發(fā)人員能夠從同一開發(fā)環(huán)境內(nèi)創(chuàng)建面向多個(gè).NETFramework版本的應(yīng)用程序。開發(fā)人員能夠構(gòu)建面向.NETFramework2.0、3.0或3.5的應(yīng)用程序,意味他們可以在同一環(huán)境中支持各種各樣的項(xiàng)目。改進(jìn)2:突破性體驗(yàn)VisualStudio2008為開發(fā)人員提供了在最新平臺(tái)上加速創(chuàng)建緊密聯(lián)系的應(yīng)用程序的新工具,這些平臺(tái)包括Web、WindowsVista、Office2007、SQLServer2008和WindowsServer2008。對(duì)于Web,ASPNETAJAX及其他新技術(shù)使開發(fā)人員能夠迅速創(chuàng)建更高效、交互式更強(qiáng)和更個(gè)性化的新一代Web體驗(yàn)。改進(jìn)3:高效的團(tuán)隊(duì)協(xié)作VisualStudio2008提供了幫助開發(fā)團(tuán)隊(duì)改進(jìn)協(xié)作的擴(kuò)展的和改進(jìn)的服務(wù)項(xiàng)目,包括幫助將數(shù)據(jù)庫專業(yè)人員和圖形設(shè)計(jì)人員加入到開發(fā)流程的工具。1.2開發(fā)語言概述1.2.1C++簡介在C基礎(chǔ)上,一九八三年又由貝爾實(shí)驗(yàn)室的BjarneStrou-strup推出了C++。C++進(jìn)一步擴(kuò)充和完善了C語言,成為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。C++目前流行的編譯器最新版本是BorlandC++4.5,SymantecC++6.1,和MicrosoftVisualC++2012。C++提出了一些更為深入的概念,它所支持的這些面向?qū)ο蟮母拍钊菀讓栴}空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計(jì)不同的思維方式和編程方法。因而也增加了整個(gè)語言的復(fù)雜性,掌握起來有一定難度。C++由美國AT&T貝爾實(shí)驗(yàn)室的本賈尼·斯特勞斯特盧普博士在20世紀(jì)80年代初期發(fā)明并實(shí)現(xiàn)(最初這種語言被稱作“CwithClasses”帶類的C)。開始,C++是作為C語言的增強(qiáng)版出現(xiàn)的,從給C語言增加類開始,不斷的增加新特性。虛函數(shù)(virtualfunction)、運(yùn)算符重載(operatoroverloading)、多重繼承(multipleinheritance)、模板(template)、異常(exception)、RTTI、命名空間[1](namespace)逐漸被加入標(biāo)準(zhǔn)。1998年國際標(biāo)準(zhǔn)組織(internationalstandardorganization,ISO)頒布了C++程序設(shè)計(jì)語言的國[3]際標(biāo)準(zhǔn)ISO/IEC1988-1998。C++是具有國際標(biāo)準(zhǔn)的編程語言,通常稱作ANSI/ISOC++。1.2.2C++優(yōu)點(diǎn)?C++設(shè)計(jì)成靜態(tài)類型、和C同樣高效且可移植的多用途程序設(shè)計(jì)語言。?C++設(shè)計(jì)成直接的和廣泛的支持多種程序設(shè)計(jì)風(fēng)格(程序化程序設(shè)計(jì)、資料抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì))。?C++設(shè)計(jì)成盡可能與C兼容,借此提供一個(gè)從C到C++的平滑過渡。?C++避免平臺(tái)限定或沒有普遍用途的特性。?C++不使用會(huì)帶來額外開銷的特性。?C++設(shè)計(jì)成無需復(fù)雜的程序設(shè)計(jì)環(huán)境。出于保證語言的簡潔和運(yùn)行高效等方面的考慮,C++的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身里。關(guān)于此類話題,BjarneStroustrup的《C++語言的設(shè)計(jì)和演化》(1994)里做了詳盡的陳述。C++在一定程度上可以和C語言很好的結(jié)合,甚至目前大多數(shù)C語言程序是在C++的集成開發(fā)環(huán)境中完成的。C++相對(duì)眾多的面向?qū)ο蟮恼Z言,具有相當(dāng)高的性能。C++引入了面向?qū)ο蟮母拍?,使得開發(fā)人機(jī)交互類型的應(yīng)用程序更為簡單、快捷。很多優(yōu)秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。人們一般認(rèn)為,使用Java或C#的開發(fā)成本比C++低。但是,如果充分分析C++和這些語言的差別,會(huì)發(fā)現(xiàn)這句話的成立是有條件的。這個(gè)條件就是:軟件規(guī)模和復(fù)雜度都比較小。如果不超過3萬行有效代碼(不包括生成器產(chǎn)生的代碼),這句話基本上還能成立。否則,隨著代碼量和復(fù)雜度的增加,C++的優(yōu)勢將會(huì)越來越明顯。造成這種差別的就是C++的軟件工程性。1.2.3C++缺點(diǎn)C++由于語言本身過度復(fù)雜,這甚至使人類難于理解其語義。更為糟糕的是C++的編譯系統(tǒng)受到C++的復(fù)雜性的影響,非常難于編寫,即使能夠使用的編譯器也存在了大量的問題,這些問題大多難于被發(fā)現(xiàn)。由于本身的復(fù)雜性,復(fù)雜的C++程序的正確性相當(dāng)難于保證。也有人提出不支持多線程的原語等缺陷。不過有如此多的知名人士提出了如此多的缺陷,正說明C++被廣泛使用和成功。c++語言由于過度的復(fù)雜性,以及與unix的文化相抵觸,在unix/linux領(lǐng)域受到很多著名人士(比如Linux之父linustorvalds與著名黑客EricS.Raymond)的強(qiáng)烈批評(píng)與抵制。2.圖像分割簡介要了解圖像分割,我們首先不得不來解釋一下什么是圖像分割。圖像分割就是指把圖像分成各具特征的區(qū)域,并把我們感興趣的目標(biāo)提取出來的一門技術(shù)。對(duì)于一幅圖像我們肯定有感興趣和不感興趣的地方,而圖像分割就能夠把我們感興趣的那一部分分割出來呈現(xiàn)在我們面前在實(shí)際圖像處理中,一般情況下我們只是注意到圖像中那些我們感興趣的目標(biāo),因?yàn)橹挥羞@部分也就是我們注意到的有用的目標(biāo)物才能為我們提供高效、有用的信息。而這些目標(biāo)一般又都對(duì)應(yīng)著圖像中某些特定的、具有獨(dú)特性質(zhì)的區(qū)域。為了把這些有用的區(qū)域提取出來供我們?nèi)祟愂褂茫瑘D像分割這門技術(shù)也就應(yīng)運(yùn)而生了。我們通常情況下所說的圖像分割就是指把圖像劃分成若干個(gè)有意義的區(qū)域的過程,每個(gè)區(qū)域都是具有相近特性的像素的連通集合,一般情況下我們所關(guān)注到的那些有用的目標(biāo)物就存在與這些區(qū)域中。2.1圖像分割概述從上個(gè)世紀(jì)六十年代初算起,圖像分割算法的研究工作就已經(jīng)起步,算起來也已經(jīng)有了幾十年的歷史,但是雖然提出來的分割算法及其繁多,在圖像分割算法上也做了大量的工作,但是分割算法至今仍然沒有得到一個(gè)相對(duì)通用的算法,即使是這樣多年來從事圖像分割算法研究的學(xué)者們的工作熱情還是沒有減弱,他們?nèi)匀痪瞎M瘁的奮斗在實(shí)驗(yàn)臺(tái)前,為了研究出一種通用的分割算法而努力著。2.1.1圖像分割的意義圖像分割在圖像工程中有著很重要地地位和影響。一方面它是圖像目標(biāo)表達(dá)的基礎(chǔ),另一方面它能夠?qū)⒛繕?biāo)表達(dá)、特征點(diǎn)提取和參數(shù)測量等原始圖像分別的裝化為更抽象的形式。一方面,圖像分割以及基于圖像分割的目標(biāo)表達(dá)、特征點(diǎn)提取和參數(shù)的測量等這一系列技術(shù)環(huán)節(jié)可以將原始圖像轉(zhuǎn)化為更抽象、更緊湊的形式,使得更高層的圖像分析和理解成為可能。另一方面,圖像分割是圖像前景目標(biāo)表達(dá)的基礎(chǔ),對(duì)特征點(diǎn)的提取和測量有著重要的影響,在實(shí)際得生產(chǎn)生活中,圖像分割的應(yīng)用也很廣泛,幾乎出現(xiàn)在和圖像處理有關(guān)系的所有領(lǐng)域,從腦部MR圖像處理分析到衛(wèi)星云圖的處理,從交通管理中對(duì)違章車輛區(qū)域的分割到面向?qū)ο笾袌D像壓縮以及基于內(nèi)容的圖像檢索中特征區(qū)域點(diǎn)的提取。在這些應(yīng)用中,圖像分割通常都是對(duì)圖像進(jìn)行進(jìn)一步的分析、識(shí)別、壓縮編碼等處理,區(qū)域特征點(diǎn)的提取的準(zhǔn)確性將直接影響到后繼任務(wù)的執(zhí)行的有效性和準(zhǔn)確性,因此圖像分割的方法和精確程度是至關(guān)重要的。2.1.2圖像分割的現(xiàn)狀及未來圖像分割在很多領(lǐng)域(包括工業(yè),精密儀器,農(nóng)業(yè),醫(yī)學(xué)醫(yī)療)都有著非常廣泛的應(yīng)用。多年來,對(duì)圖像分割的研究也一直是圖像技術(shù)研究中的熱點(diǎn)和焦點(diǎn),只要我們需要對(duì)圖像目標(biāo)進(jìn)行分析,測量那么我們就離不開圖像分割,因此圖像分割也就成了研究計(jì)算機(jī)視覺系統(tǒng)、字符識(shí)別和目標(biāo)自動(dòng)獲取等圖像識(shí)別和理解系統(tǒng)首先要解決的問題。對(duì)圖像分割算法的研究已有幾十年的歷史,借助各種理論至今已提出了上千種各種類型的分割算法。盡管人們?cè)趫D像分割方面做了許多研究工作。但由于尚無通用分割理論,因此現(xiàn)已提出的分割算法大都是針對(duì)具體問題的,并沒有一種適合于所有圖像的通用的分割算法。但是可以看出,圖像分割方法正朝著更快速、更精確的方向發(fā)展,通過各種新理論和新技術(shù)結(jié)合將不斷取得突破和進(jìn)展。2.2圖像分割技術(shù)多年來人們對(duì)圖像提出了不同的解釋和表達(dá),借助集合概念對(duì)圖像分割可給出如下定義:令集合R代表整個(gè)圖像區(qū)域,對(duì)R的分割可看作將R分成N個(gè)滿足下列五個(gè)條件的非空子集(子區(qū)域)

R1

,

R2

,

…,

RN

:(1)

分割成的所有子區(qū)域的并應(yīng)能構(gòu)成原來的區(qū)域R(2)

對(duì)所有的i和j

,

i≠j,有Ri∩Rj

=?;(3)

對(duì)i=1,2,

…,N

,

有P(Ri)=True;(4)

對(duì)i≠j,有P(Ri∪Rj)=False;

(5)

對(duì)i=1,2,…,N,有Ri是連通的區(qū)域。

其中P(Ri)是對(duì)所有在集合Ri中元素的邏輯謂詞,?代表空集好的圖像分割應(yīng)具有以下特征:(1)分割出來的各區(qū)域?qū)δ撤N性質(zhì)(例如灰度,紋理)而言具有相似性,區(qū)域內(nèi)部是連通的且沒有過多小孔。(2)相鄰區(qū)域?qū)Ψ指钏罁?jù)的性質(zhì)有明顯的差異。(3)區(qū)域邊界是明確的2.2.1圖像分割方法及其特點(diǎn)閾值分割圖像閾值化分割是一種傳統(tǒng)的最常用的圖像分割方法,因其實(shí)現(xiàn)簡單、計(jì)算量小、性能較穩(wěn)定而成為圖像分割中最基本和應(yīng)用最廣泛的分割技術(shù)。它特別適用于目標(biāo)和背景占據(jù)不同灰度級(jí)范圍的圖像。它不僅可以極大的壓縮數(shù)據(jù)量,而且也大大簡化了分析和處理步驟,因此在很多情況下,是進(jìn)行圖像分析、特征提取與模式識(shí)別之前的必要的圖像預(yù)處理過程。圖像閾值化的目的是要按照灰度級(jí),對(duì)像素集合進(jìn)行一個(gè)劃分,得到的每個(gè)子集形成一個(gè)與現(xiàn)實(shí)景物相對(duì)應(yīng)的區(qū)域,各個(gè)區(qū)域內(nèi)部具有一致的屬性,而相鄰區(qū)域布局有這種一致屬性。這樣的劃分可以通過從灰度級(jí)出發(fā)選取一個(gè)或多個(gè)閾值來實(shí)現(xiàn)。閾值分割的優(yōu)點(diǎn)是計(jì)算簡單、運(yùn)算效率較高、速度快。在重視運(yùn)算效率的應(yīng)用場合(如用于硬件實(shí)現(xiàn)),它得到了廣泛應(yīng)用。區(qū)域分割區(qū)域生長和分裂合并法是兩種典型的串行區(qū)域技術(shù),其分割過程后續(xù)步驟的處理要根據(jù)前面步驟的結(jié)果進(jìn)行判斷而確定。區(qū)域生長的基本思想是將具有相似性質(zhì)的像素集合起來構(gòu)成區(qū)域。具體先對(duì)每個(gè)需要分割的區(qū)域找一個(gè)種子像素作為生長的起點(diǎn),然后將種子像素周圍鄰域中與種子像素有相同或相似性質(zhì)的像素(根據(jù)某種事先確定的生長或相似準(zhǔn)則來判定)合并到種子像素所在的區(qū)域中。將這些新像素當(dāng)作新的種子像素繼續(xù)進(jìn)行上面的過程,直到再?zèng)]有滿足條件的像素可被包括進(jìn)來。這樣一個(gè)區(qū)域就長成了。區(qū)域生長是從某個(gè)或者某些像素點(diǎn)出發(fā),最后得到整個(gè)區(qū)域,進(jìn)而實(shí)現(xiàn)目標(biāo)提取。分裂合并差不多是區(qū)域生長的逆過程:從整個(gè)圖像出發(fā),不斷分裂得到各個(gè)子區(qū)域,然后再把前景區(qū)域合并,實(shí)現(xiàn)目標(biāo)提取。分裂合并的假設(shè)是對(duì)于一幅圖像,前景區(qū)域由一些相互連通的像素組成的,因此,如果把一幅圖像分裂到像素級(jí),那么就可以判定該像素是否為前景像素。當(dāng)所有像素點(diǎn)或者子區(qū)域完成判斷以后,把前景區(qū)域或者像素合并就可得到前景目標(biāo)邊緣分割圖像分割的一種重要途徑是通過邊緣檢測,即檢測灰度級(jí)或者結(jié)構(gòu)具有突變的地方,表明一個(gè)區(qū)域的終結(jié),也是另一個(gè)區(qū)域開始的地方。這種不連續(xù)性稱為邊緣。不同的圖像灰度不同,邊界處一般有明顯的邊緣,利用此特征可以分割圖像。圖像中邊緣處像素的灰度值不連續(xù),這種不連續(xù)性可通過求導(dǎo)數(shù)來檢測到。對(duì)于階躍狀邊緣,其位置對(duì)應(yīng)一階導(dǎo)數(shù)的極值點(diǎn),對(duì)應(yīng)二階導(dǎo)數(shù)的過零點(diǎn)(零交叉點(diǎn))。因此常用微分算子進(jìn)行邊緣檢測。常用的一階微分算子有Roberts算子、Prewitt算子和Sobel算子,二階微分算子有Laplace算子和Kirsh算子等。在實(shí)際中各種微分算子常用小區(qū)域模板來表示,微分運(yùn)算是利用模板和圖像卷積來實(shí)現(xiàn)。這些算子對(duì)噪聲敏感,只適合于噪聲較小不太復(fù)雜的圖像。聚類分析特征空間聚類法進(jìn)行圖像分割是將圖像空間中的像素用對(duì)應(yīng)的特征空間點(diǎn)表示,根據(jù)它們?cè)谔卣骺臻g的聚集對(duì)特征空間進(jìn)行分割,然后將它們映射回原圖像空間,得到分割結(jié)果。其中,K均值、模糊C均值聚類(FCM)算法是最常用的聚類算法。K均值算法先選K個(gè)初始類均值,然后將每個(gè)像素歸入均值離它最近的類并計(jì)算新的類均值。迭代執(zhí)行前面的步驟直到新舊類均值之差小于某一閾值。模糊C均值算法是在模糊數(shù)學(xué)基礎(chǔ)上對(duì)K均值算法的推廣,是通過最優(yōu)化一個(gè)模糊目標(biāo)函數(shù)實(shí)現(xiàn)聚類,它不像K均值聚類那樣認(rèn)為每個(gè)點(diǎn)只能屬于某一類,而是賦予每個(gè)點(diǎn)一個(gè)對(duì)各類的隸屬度,用隸屬度更好地描述邊緣像素亦此亦彼的特點(diǎn),適合處理事物內(nèi)在的不確定性。利用模糊C均值(FCM)非監(jiān)督模糊聚類標(biāo)定的特點(diǎn)進(jìn)行圖像分割,可以減少人為的干預(yù),且較適合圖像中存在不確定性和模糊性的特點(diǎn)。FCM算法對(duì)初始參數(shù)極為敏感,有時(shí)需要人工干預(yù)參數(shù)的初始化以接近全局最優(yōu)解,提高分割速度。另外,傳統(tǒng)FCM算法沒有考慮空間信息,對(duì)噪聲和灰度不均勻敏感。3.圖像分割系統(tǒng)功能簡介實(shí)現(xiàn)基本的圖片聚類分割算法,并予以展現(xiàn)。將分割后的圖片再合并起來,并展現(xiàn)合并過程。技術(shù)參數(shù):開發(fā)環(huán)境:MicrosoftVisualStudio2008開發(fā)語言:C++語言分割圖片格式:jpg,bmp分辨率:無限制圖片大?。簾o限制相關(guān)定義:歐氏距離(EuclidDistance)也稱歐幾里得度量、歐幾里得距離,是一個(gè)通常采用的距離定義,它是在m維空間中兩個(gè)點(diǎn)之間的真實(shí)距離。分割類:圖像經(jīng)過聚類分割計(jì)算后,生成的圖像碎片就是分割類。樣本向量:多個(gè)像素的色彩信息組成的向量樣本容量:樣本向量獲取像素的個(gè)數(shù)相似度=樣本向量j*樣本向量k/(樣本向量j的長度*樣本向量k的長度)步長:確定首次聚類中心間隔的長度以及聚類中心計(jì)算范圍的值。系統(tǒng)流程圖:圖像預(yù)處理LAB轉(zhuǎn)換讀取并獲取圖像緩存圖像預(yù)處理LAB轉(zhuǎn)換讀取并獲取圖像緩存開始聚類分割開始聚類分割給分割后的圖片畫上邊界線優(yōu)化分割圖片,去除冗余圖片碎片給分割后的圖片畫上邊界線優(yōu)化分割圖片,去除冗余圖片碎片獲取未畫邊界線的圖像緩存分割結(jié)束獲取未畫邊界線的圖像緩存分割結(jié)束圖像預(yù)處理RGB轉(zhuǎn)換圖像預(yù)處理RGB轉(zhuǎn)換開始合并獲取圖片碎片的樣本向量得到相似度最大的兩個(gè)碎片并合并獲取圖片碎片的樣本向量得到相似度最大的兩個(gè)碎片并合并完成合并完成合并 3-1圖像系統(tǒng)分割流程圖3.1圖像獲取 既然我們要做的是圖像分割,我們首先要讓用戶選擇一張圖片,獲取該路徑,然后通過該路徑該圖片讀入到內(nèi)存中去,并將該內(nèi)存地址獲取到,交給下一步圖像預(yù)處理,進(jìn)行進(jìn)一步的處理。同時(shí)再分割及合并完成后,為了方便向用戶演示結(jié)果,我們也應(yīng)將內(nèi)存中分割或合并后的結(jié)果保存成文件,方便用戶查看,所以我們也需要用戶進(jìn)行選擇,分割或合并完成后分割后的圖片以及合并后的圖片的保存路徑。具體實(shí)現(xiàn):為了獲取圖片的路徑,我選擇創(chuàng)建了一個(gè)CFileDialog類的對(duì)象,并調(diào)用該對(duì)象的DoModal()顯示對(duì)話框并使用戶可以進(jìn)行選擇,通過修改該對(duì)象m_ofnWindowsOPENFILENAME結(jié)構(gòu)來設(shè)置對(duì)話框的基本參數(shù),通過調(diào)用GetPathName()方法,返回選定文件的完整路徑。圖片預(yù)覽(以上圖片僅供參考,可能會(huì)隨系統(tǒng)不同效果略有不同):3-2打開圖片對(duì)話框通過以上操作,我們獲得了圖片文件的絕對(duì)路徑,現(xiàn)在我們要做的是將其讀入到內(nèi)存中,并獲取到其內(nèi)存地址。3.2圖像保存為了獲取用戶選擇的保存路徑,我選擇調(diào)用SHBrowseForFolder()方法來顯示一個(gè)選擇對(duì)話框,通過修改其結(jié)構(gòu)參數(shù)BROWSEINFO里的各成員,來修改對(duì)話框的各個(gè)屬性,最后通過SHGetPathFromIDList(LPITEMIDLIST,Buffer)方法來獲取保存文件的文件路徑,并將其保存到Buffer中。3-3選擇保存路徑對(duì)話框 通過創(chuàng)建一個(gè)bitmap類型的對(duì)象,將圖片緩存?zhèn)魅?,并設(shè)置圖片的格式及其他參數(shù),調(diào)用bitmap對(duì)象的save()方法就可以實(shí)現(xiàn)圖片的保存。 3.3圖像預(yù)處理 圖像預(yù)處理指的是在圖像分割前和圖像合并前,將圖片的色彩信息進(jìn)行相應(yīng)的轉(zhuǎn)換,方便在分割時(shí),和合并時(shí),對(duì)其顏色信息進(jìn)行計(jì)算和比較。本系統(tǒng)中,分割時(shí)采用LAB色彩模型,合并時(shí)采用RGB色彩模型。以下是詳細(xì)信息。3.3.1Lab色彩模型 Lab色彩模型是由亮度(L)和有關(guān)色彩的a,b三個(gè)要素組成。L表示亮度(Luminosity),a表示從洋紅色至綠色的范圍,b表示從黃色至藍(lán)色的范圍。L的值域由0到100,L=50時(shí),就相當(dāng)于50%的黑;a和b的值域都是由+127至-128,其中+127a就是洋紅色,漸漸過渡到-128a的時(shí)候就變成綠色;同樣原理,+127b是黃色,-128b是藍(lán)色。所有的顏色就以這三個(gè)值交互變化所組成。例如,一塊色彩的Lab值是L=100,a=30,b=0,這塊色彩就是粉紅色。優(yōu)點(diǎn):Lab色彩模型除了上述不依賴于設(shè)備的優(yōu)點(diǎn)外,還具有它自身的優(yōu)勢:色域?qū)掗煛K粌H包含了RGB,CMYK的所有色域,還能表現(xiàn)它們不能表現(xiàn)的色彩。人的肉眼能感知的色彩,都能通過Lab模型表現(xiàn)出來。另外,Lab色彩模型的絕妙之處還在于它彌補(bǔ)了RGB色彩模型色彩分布不均的不足,因?yàn)镽GB模型在藍(lán)色到綠色之間的過渡色彩過多,而在綠色到紅色之間又缺少黃色和其他色彩。如果我們想在數(shù)字圖形的處理中保留盡量寬闊的色域和豐富的色彩,最好選擇Lab。代碼實(shí)現(xiàn):由于計(jì)算機(jī)中存儲(chǔ)的圖像信息采用的是RGB模型,而并沒有RGB直接到Lab模型的方法,所以選擇將RGB先轉(zhuǎn)化為XYZ顏色空間(1931年CIE在RGB系統(tǒng)基礎(chǔ)上,改用三個(gè)假想的原色X、Y、Z建立了一個(gè)新的色度系統(tǒng)。將它匹配等能光譜的三刺激值,定名為"CIE1931標(biāo)準(zhǔn)色度觀察者光譜三刺激值",簡稱為"CIE1931標(biāo)準(zhǔn)色度觀察者"。這一系統(tǒng)叫做"CIE1931標(biāo)準(zhǔn)色度系統(tǒng)"或稱為"2°視場XYZ色度系統(tǒng)"),XYZ顏色空間再轉(zhuǎn)化到Lab。3.3.2RGB色彩模型RGB模型也稱為加色法混色模型。它是以RGB三色光互相疊加來實(shí)現(xiàn)混色的方法,因而適合于顯示器等發(fā)光體的顯示。其混色規(guī)律是:以等量的紅、綠、藍(lán)基色光混合時(shí)。其配色方程描述:F(物體顏色)=R(紅色的百分比)+G(綠色的百分比)+B(藍(lán)色的百分比)RGB色彩空間根據(jù)實(shí)際使用設(shè)備系統(tǒng)能力的不同,有各種不同的實(shí)現(xiàn)方法。截至2006年,最常用的是24-位實(shí)現(xiàn)方法,也就是紅綠藍(lán)每個(gè)通道有8位或者256色級(jí)。基于這樣的24-位RGB模型的色彩空間可以表現(xiàn)256×256×256≈1670萬色。一些實(shí)現(xiàn)方法采用每原色16位,能在相同范圍內(nèi)實(shí)現(xiàn)更高更精確的色彩密度。這在寬域色彩空間中尤其重要,因?yàn)榇蟛糠滞ǔJ褂玫念伾帕械南鄬?duì)更緊密。 代碼實(shí)現(xiàn):由于計(jì)算機(jī)存儲(chǔ)像素信息采用的就是RGB模型,直接獲取像素的信息,取最高的8位,中間8位,最低8位就是相應(yīng)的R、G、B的信息。3.4聚類圖像分割聚類分割的原理就是比較圖像中的像素信息與聚類中心的像素信息哪個(gè)更為相似,則將該像素置于那個(gè)與其最相似的聚類中心之下,將圖像的全部像素進(jìn)行數(shù)次聚類收斂后,聚類分割就完成了,這個(gè)過程也就叫聚類圖像分割。聚類算法的一般步驟:從n個(gè)數(shù)據(jù)對(duì)象任意選擇k個(gè)對(duì)象作為初始聚類中心;循環(huán)(3)到(4)直到每個(gè)聚類不再發(fā)生變化為止;根據(jù)每個(gè)聚類對(duì)象的均值(中心對(duì)象),計(jì)算每個(gè)對(duì)象與這些中心對(duì)象的距離;并根據(jù)最小距離重新對(duì)相應(yīng)對(duì)象進(jìn)行劃分;重新計(jì)算每個(gè)(有變化)聚類的均值(中心對(duì)象)。3.4.1首次確定聚類中心要完成聚類分割,首先要找的就是聚類中心,有了聚類中心我們才能確定,圖像的每個(gè)像素歸屬到哪?不同的聚類中心,就把圖像分成了不同的圖像碎片。而在確定聚類中心之前,我們還需要確定步長。什么是步長?圖中的黑點(diǎn)為聚類中心,兩個(gè)黑點(diǎn)之間的距離就是步長。3-4圖像分割中的聚類中心步長直接確定了聚類中心之間的間隔,以及聚類中心的位置。那步長又是什么決定的?步長是由用戶輸入的第一個(gè)值, 3-5用戶輸入?yún)?shù)實(shí)例來決定的。具體是intSTEP=sqrt(double(height*width/superpixelsize))+0.5;確定之后也就確定了聚類中心的個(gè)數(shù)以及位置,前面我們已經(jīng)獲取了圖像的Lab顏色信息以及圖像大小等信息?,F(xiàn)在我們通過聚類中心的位置,可以獲取到聚類中心的顏色信息,我們將聚類中心的顏色和位置信息存取到準(zhǔn)備好的容器(vector)中去,為后面的聚類計(jì)算做好準(zhǔn)備。實(shí)現(xiàn)代碼:voidSLIC::GetLABXYSeeds_ForGivenStepSize( vector<double>& kseedsl, vector<double>& kseedsa, vector<double>& kseedsb, vector<double>& kseedsx, vector<double>& kseedsy,constint& STEP,constbool& perturbseeds,constvector<double>&edgemag){ intnumseeds(0); intn(0); intxstrips=(0.5+double(m_width)/double(STEP)); //一行能容納多少個(gè)步長 intystrips=(0.5+double(m_height)/double(STEP)); //一列能容納多少個(gè)步長numseeds=xstrips*ystrips; //一共有多少個(gè)步長區(qū)域intxerr=m_width-STEP*xstrips;if(xerr<0){xstrips--;xerr=m_width-STEP*xstrips;}intyerr=m_height-STEP*ystrips;if(yerr<0){ystrips--;yerr=m_height-STEP*ystrips;} doublexerrperstrip=double(xerr)/double(xstrips); doubleyerrperstrip=double(yerr)/double(ystrips); intxoff=STEP/2; //偏移信息 intyoff=STEP/2; //偏移信息 kseedsl.resize(numseeds); kseedsa.resize(numseeds); kseedsb.resize(numseeds); kseedsx.resize(numseeds); kseedsy.resize(numseeds); for(inty=0;y<ystrips;y++) { intye=y*yerrperstrip; for(intx=0;x<xstrips;x++) { intxe=x*xerrperstrip;intseedx=(x*STEP+xoff+xe); //聚類中心的位置信息intseedy=(y*STEP+yoff+ye); //聚類中心的位置信息inti=seedy*m_width+seedx; kseedsl[n]=m_lvec[i]; //聚類中心的色彩信息 kseedsa[n]=m_avec[i]; //聚類中心的色彩信息 kseedsb[n]=m_bvec[i]; //聚類中心的色彩信息kseedsx[n]=seedx;kseedsy[n]=seedy; n++; } }}3.4.2聚類計(jì)算確定聚類計(jì)算區(qū)域在聚類計(jì)算之前,我們首先要確定聚類中心附近距離為多少的像素要對(duì)其進(jìn)行聚類計(jì)算。由于我們之前已經(jīng)根據(jù)用書的輸入,得到了步長。在這里我們規(guī)定每個(gè)聚類中心計(jì)算區(qū)域?yàn)橐栽摼垲愔行臑橹行囊?個(gè)步長為邊長的正方形區(qū)域。以聚類中心1和2舉例,如下圖:3-6聚類中心計(jì)算區(qū)域示例圖對(duì)應(yīng)到具體圖片上:3-7聚類中心計(jì)算實(shí)例圖計(jì)算距離我們這里所說的距離指的是歐氏距離,在二維空間中的歐氏距離就是兩點(diǎn)之間的直線段距離。在這里我們要計(jì)算兩點(diǎn)之間的兩個(gè)歐氏距離,一個(gè)是Lab顏色空間的歐氏距離,另一個(gè)是在圖像中的兩點(diǎn)之間位置的歐氏距離。為什么我們要計(jì)算兩個(gè)距離,因?yàn)槲覀兎指顖D像時(shí),不僅要關(guān)注兩點(diǎn)之間的色彩差距,還要關(guān)注兩點(diǎn)之間的位置差距。從某種意義上講,色彩上的距離更重要,因?yàn)榉指畹氖巧噬嫌泄残缘膮^(qū)域。因此我們最終判斷的距離是色彩的歐氏距離加上位置上的歐氏距離再乘以一個(gè)權(quán)重。這個(gè)權(quán)重跟用戶輸入的第二個(gè)值3-8用戶輸入?yún)?shù)二實(shí)例圖還有步長有關(guān)。具體來說權(quán)重=1.0/((STEP/compactness)*(STEP/compactness));最終距離=色彩歐氏距離+位置歐氏距離*權(quán)重; 計(jì)算時(shí),計(jì)算每個(gè)像素所能夠?qū)?yīng)的聚類中心,找到那個(gè)距離最短的聚類中心,說明該像素與該聚類中心是一類,分割時(shí)應(yīng)分割到一個(gè)圖片碎片中去。這樣就把該像素從原有圖像中分割出來了。 代碼實(shí)現(xiàn):for(intn=0;n<numk;n++){doubleinvwt=1.0/((STEP/M)*(STEP/M)); //權(quán)重y1=max(0.0, kseedsy[n]-offset); //聚類區(qū)域范圍y2=min((double)m_height, kseedsy[n]+offset);x1=max(0.0, kseedsx[n]-offset);x2=min((double)m_width, kseedsx[n]+offset); for(inty=y1;y<y2;y++) { for(intx=x1;x<x2;x++) { inti=y*m_width+x;//像素 l=m_lvec[i]; a=m_avec[i]; b=m_bvec[i]; dist= (l-kseedsl[n])*(l-kseedsl[n])+ (a-kseedsa[n])*(a-kseedsa[n])+ (b-kseedsb[n])*(b-kseedsb[n]); //色彩距離 distxy= (x-kseedsx[n])*(x-kseedsx[n])+ (y-kseedsy[n])*(y-kseedsy[n]); //位置距離 dist+=distxy*invwt;//最終距離 if(dist<distvec[i]) { distvec[i]=dist; klabels[i]=n; //i像素屬于第N個(gè)分割類 } } } }3.4.3重新計(jì)算聚類中心再次計(jì)算聚類中心時(shí)和第一次就有所不同了,這一次計(jì)算是根據(jù)上面聚類計(jì)算完成后,對(duì)每個(gè)分割類,進(jìn)行色彩和距離上的平均,這個(gè)均值不對(duì)應(yīng)任何一個(gè)像素,即使位置信息可以對(duì)的上,其顏色信息也不一定對(duì)的上。下圖黃色選中區(qū)域?yàn)榉指铑?,它的新聚類中心不對(duì)應(yīng)它里的任何一個(gè)像素,而是屬于分割類1的所有像素的色彩信息和位置信息的平均,即所有信息之和除以像素個(gè)數(shù)。下圖為一次聚類計(jì)算后的圖片:3-9第一次聚類計(jì)算后的圖片效果代碼實(shí)現(xiàn) for(intr=0;r<m_height;r++) { for(intc=0;c<m_width;c++) { sigmal[klabels[ind]]+=m_lvec[ind]; /該分割類的色彩信息求和 sigmaa[klabels[ind]]+=m_avec[ind]; sigmab[klabels[ind]]+=m_bvec[ind]; sigmax[klabels[ind]]+=c; //該分割類的位置信息求和 sigmay[klabels[ind]]+=r; clustersize[klabels[ind]]+=1.0; //該分割類像素個(gè)數(shù) ind++; } } } {for(intk=0;k<numk;k++) { if(clustersize[k]<=0)clustersize[k]=1; inv[k]=1.0/clustersize[k]; //該分割類像素個(gè)數(shù)的倒數(shù) }} {for(intk=0;k<numk;k++) //求平均結(jié)果即為新的聚類中心 { kseedsl[k]=sigmal[k]*inv[k]; kseedsa[k]=sigmaa[k]*inv[k]; kseedsb[k]=sigmab[k]*inv[k]; kseedsx[k]=sigmax[k]*inv[k]; kseedsy[k]=sigmay[k]*inv[k]; }}3.4.4聚類分割后的優(yōu)化通過多次的聚類分割計(jì)算和重新計(jì)算聚類中心,我們的圖像分割大體已經(jīng)完成。但是還存在個(gè)問題。如下圖:3-10未使用優(yōu)化函數(shù)的分割效果圖圖中區(qū)域,四周都被同一分割類包圍(包括小點(diǎn)),按照標(biāo)準(zhǔn)來說該分割類應(yīng)該屬于包圍著它的分割類。為了解決該問題在分割后加入一個(gè)優(yōu)化檢測函數(shù),檢測每個(gè)分割類是否被同一個(gè)分割類包圍,若是則將此分割類的全部像素歸入到包圍它的那個(gè)分割類,同時(shí)取消這個(gè)分割類。使用優(yōu)化函數(shù)后如下對(duì)比圖所示,原有的分割類消失,并入到外部的分割類。3-11未使用與使用優(yōu)化函數(shù)的對(duì)比圖3.4.5畫邊界線完成分割這最后一步只需要將每個(gè)分割類的最外部的像素,將其顏色信息改變成統(tǒng)一的白色,就像為圖片加上了邊界線。代碼實(shí)現(xiàn)上只需要檢測,每個(gè)像素上下左右四個(gè)方向的像素是否同它屬于同一分割類,若屬于則不用改變,若不屬于則將其顏色屬性置成白色。該步完成后我們的圖像分割也就算完成了。3.4.6分割結(jié)果展示 superpixelsize=49 superpixelsize=49 compactness=10 compactness=40 superpixelsize=200 superpixelsize=200 compactness=10 compactness=403-12分割效果展示3.5圖像合并 這里所說的圖像合并并不是將不同的圖片進(jìn)行合并,而是將分割后的圖片進(jìn)行合并,合并操作的最終結(jié)果就是將分割后的圖片還原到未分割前的狀態(tài)。合并操作可以更好的幫我們理解分割的意義,同時(shí)可以將有效的緩解圖像過分割的狀態(tài)。3.5.1合并操作的基本步驟1.獲取未添加邊界線的圖像緩存,減少邊界線的色彩信息造成的合并誤差,并取得它們?cè)赗,G,B三個(gè)分量上的值。相關(guān)代碼: m_rvec=newdouble[sz];m_gvec=newdouble[sz];m_bvec=newdouble[sz];for(i=0;i<sz;i++){m_rvec[i]=ubuff[i]>>16&0xff;m_gvec[i]=ubuff[i]>>8&0xff;m_bvec[i]=ubuff[i]&0xff;}2.確定分割類的數(shù)量,要完成合并,就先要確定有多少分割類來參與合并,遍歷每個(gè)像素,來確定分割類的數(shù)量。 vector<int>::iteratorit; for(i=0;i<sz;i++) { it=find(m_kindsvec.begin(),m_kindsvec.end(),labels[i]); if(it==m_kindsvec.end()) m_kindsvec.push_back(labels[i]); //m_kindsvec } kinds=m_kindsvec.size(); //分割類個(gè)數(shù)3.將像素分類存儲(chǔ),為了快速的取到每個(gè)分割類的第N個(gè)像素,我們將像素按所屬分割類進(jìn)行分類,同一分割類的像素,放到同一個(gè)容器(vector)中去。vector<vector<int>>m_labelsvec(kinds); //用vector嵌套vector模擬動(dòng)態(tài)二維數(shù)組for(i=0;i<sz;i++){ m_labelsvec[labels[i]].push_back(i); }4.確定每個(gè)分割類附近的分割類,由于合并操作是針對(duì)相鄰的分割類進(jìn)行的操作,所以我們要檢測每個(gè)分割類相鄰的分割類有哪些并把它們記錄下來,放入專門的容器中去。vector<vector<int>>m_adjlabelvec(kinds);for(i=0;i<kinds;i++) { if(i%width!=0) if(labels[i]!=labels[i-1]) { if(SLIC::search1(m_adjlabelvec[labels[i]],labels[i-1])) m_adjlabelvec[labels[i]].push_back(labels[i-1]); } if(i%width!=width-1) if(labels[i]!=labels[i+1]) { if(SLIC::search1(m_adjlabelvec[labels[i]],labels[i+1])) m_adjlabelvec[labels[i]].push_back(labels[i+1]); } if(i/width!=0) if(labels[i]!=labels[i-height]) { if(SLIC::search1(m_adjlabelvec[labels[i]],labels[i-height])) m_adjlabelvec[labels[i]].push_back(labels[i-height]); } if(i/width!=height-1) if(labels[i]!=labels[i+height]) { if(SLIC::search1(m_adjlabelvec[labels[i]],labels[i+height])) m_adjlabelvec[labels[i]].push_back(labels[i+height]); } }5.確定樣本向量,為了找到最相似的兩個(gè)分割類,我們要對(duì)每個(gè)分割類進(jìn)行取樣,取樣就是在每個(gè)分割類中均勻的取出N個(gè)像素,并將它們的RGB色彩信息提取出來,組成樣本向量,樣本向量的大小決定了合并算法的計(jì)算量,以及合并算法的準(zhǔn)確程度。同時(shí)加入判斷如果樣本容量大于某一分割類的像素?cái)?shù)量,則選擇的分割類像素個(gè)數(shù)最小的作為樣本容量,防止發(fā)生樣本向量長度不等。 intsample=samples; for(i=0;i<kinds;i++) { if(sample>m_labelsvec[i].size()) sample=m_labelsvec[i].size(); //確定樣本向量容量 } for(i=0;i<kinds;i++) { num=m_labelsvec[i].size()/sample-1; j=0; for(k=0;k<sample;k++) { m_examplevec[i].push_back(m_labelsvec[i][j]); //確定樣本向量 j=j+num; } } doublesum=0,temp=0; vector<double>m_lengthvec; for(i=0;i<kinds;i++) { for(j=0;j<m_examplevec[i].size();j++) { sum=sum+m_lvec[m_examplevec[i][j]]*m_lvec[m_examplevec[i][j]]; sum=sum+m_avec[m_examplevec[i][j]]*m_avec[m_examplevec[i][j]]; sum=sum+m_bvec[m_examplevec[i][j]]*m_bvec[m_examplevec[i][j]]; } m_lengthvec.push_back(sqrt(sum)); //確定每個(gè)樣本向量的長度 }6.計(jì)算每個(gè)分割類與其相鄰分割類的相似度,根據(jù)上面獲取到的每個(gè)分割類的相鄰分割類,對(duì)每個(gè)分割類與其相鄰的分割類進(jìn)行相似度的比較,同時(shí)記錄相似度最大的兩個(gè)向量。并修改其中一個(gè)分割類,使其所屬的像素全部劃歸到另一個(gè)分割類中去,這樣我們就完成了兩個(gè)分割類的合并。 for(i=0;i<kinds;i++) { for(j=0;j<m_adjlabelvec[i].size();j++) { k=(m_adjlabelvec[i][j]); sum=0; for(intl=0;l<sample;l++) { sum=sum+m_lvec[m_examplevec[i][l]]*m_lvec[m_examplevec[k][l]]; sum=sum+m_avec[m_examplevec[i][l]]*m_lvec[m_examplevec[k][l]]; sum=sum+m_bvec[m_examplevec[i][l]]*m_lvec[m_examplevec[k][l]]; } likely=sum/(m_lengthvec[i]+m_lengthvec[k]); if(likely>max) { max=likely; //記錄相似度最大的兩個(gè)分割類 ml1=i; ml2=k; } } }7.繼續(xù)執(zhí)行合并操作,分割類的數(shù)量,像素分類,分割類的附近類,樣本向量,都隨著合并進(jìn)行了改變,一般來說我們按照這個(gè)順序進(jìn)行多次運(yùn)算,最終肯定會(huì)得到最終的合并結(jié)果,但是其運(yùn)算量異常的大。8.改進(jìn)后的合并操作,為了改進(jìn)上面的狀況,去除冗余的操作,我們只需針對(duì)容器中的變化的分割類進(jìn)行重新運(yùn)算,這樣就大大減少了運(yùn)算量,縮短了合并所

溫馨提示

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

評(píng)論

0/150

提交評(píng)論