




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第頁1緒論1.1研究目的及意義在當今的信息時代,數字圖像的應用已經非常普遍。盡管技術的進步極大地提高了處理器的速度和傳輸網絡的性能,人們還是希望更有效地捕獲和存儲信息。在數字圖像壓縮領域,對更高的壓縮比和更好的壓縮質量的要求從未停止過。從傳輸和存儲的角度來看,數據壓縮的重要性不言而喻。如果壓縮技術沒有達到一定的水平,很多相關的技術勢必會受到極大的阻礙,如無線傳輸、實時傳輸與接收、海量數據庫等。目前常用的圖像壓縮方法有筆畫編碼、字典編碼、霍夫曼編碼、算術編碼、炮編碼、變換編碼、預測編碼、小波技術等。近年來,矢量量化理論的提出和發展,為人們研究圖像壓縮提供了新的啟示。量化作為一種有損數據壓縮技術,在圖像壓縮中起著重要作用,它包含有記憶量化和無記憶量化兩種。其中,有記憶量化即標量量化,無記憶量化包含序列量化和矢量量化兩種。雖然標量量化和矢量量化均可通過不同的方式對數據進行壓縮,但前者針對一維數據,而后者則是針對多維數據,可以說前者是后者的一種特殊情況。與其它兩種量化相比,標量量化較為簡單,每次對數據進行量化處理時僅針對一個采樣數據,且其對所要采樣的數據均使用相同特性的量化器進行獨立量化,而其它兩種量化則是以采樣數據之間的相關性為基礎進行量化的。矢量量化指的是利用系統輸出的一組最佳數據的索引來代替一組采樣數據進行傳輸的過程,能夠巧妙地利用采樣數據之間所存在的各種關系最大限度地去除采樣數據之間的冗余,從而達到數據壓縮的目的。1.2國內外發展現狀在矢量量化的整個過程中,無論是碼字搜索還是碼字索引分配均需要碼書,因此碼書的質量高低會對矢量量化最終的質量以及有效性產生影響,故碼書設計是整個矢量量化過程最核心的技術。20世紀80年代,Linda、Gray等學者給出了經典的LBG算法,該算法呈現了構造矢量量化器的實現過程。LBG算法的理論較為嚴謹且算法簡單、直觀,已經被廣泛應用,是碼書設計各種算法的研究基礎。但LBG算法存在三個問題,一是每一次迭代過程中利用最近鄰條件求取每一個訓練矢量的最近鄰碼字時需要較高的計算量,同時還需要充足的存儲空間保存結果;二是一旦所選擇的初始碼書存在一定的偏差,極有可能對碼書收斂的快慢以及碼書的性能造成影響;三是碼書自適應能力不強。針對第一個問題,通常情況下采取快速搜索的方法,但這有可能導致碼書質量下降,故在接下來的研究中,學者們對上述問題進行分析,并提出了一系列的改進算法。1.3本課題主要工作本文章首先介紹了研究的背景和意義,了解國內外研究現狀的分析,然后系統使用的相關技術和開發工具環境闡述,其次是系統的分析,包括功能需求、系統和系統開發環境的可行性進行了分析,在分析的基礎上進行了系統設計,包括體系結構設計、功能設計、過程設計等,通過設計編碼來實現系統的各個功能,本系統采用MATLAB語言開發,研究矢量量化圖像壓縮方法,構建了一個基于矢量量化的圖像壓縮系統。最后,對系統功能進行整合和測試。2相關技術簡介2.1MATLAB簡介MATLAB是由美國mathwork公司發布的,主要是從事數學商業計算的軟件,它包含了matrix&laboratory兩個詞的組合,英文翻譯過來為矩陣工廠。它既是一種開發語言也是一種開發環境。主要作用即為科學計算和可視化。它把把很多的功能集成在一個好用的視窗環境中,包含了矩陣的計算、數值的分析、數據的可視化,還包括了非線性動態系統建模、系統仿真等等。它提供了科學的解決方案可以用于科學研究或者是工程設計等項目。比傳統的非交互式語言(c或者Fortran等)更加易用,是目前非常流行的有關數學計算方面的開發環境。1.matlab的界面左上角,home標簽下,找到layout進行設置/復位,可以設置各板塊的顯示與隱藏。其中有幾個部分,請務必要顯示
①CurrentFolder:中文一般翻譯成工作路徑,一般設置成一個自己建立的、有讀寫權限的文件夾,例如我的文檔下建立一個matlab文件夾
②CommandWindow:字面意思是命令窗口,用來運行代碼,所有的代碼都是在這里輸入
③Workspace:字面意思是工作空間,其實就是暫存所有運行結果的地方,“暫”的具體含義是:關閉matlab后丟失
2.函數
matlab之所以強大,就是因為提供大量的函數,你也可以建立自定義函數,方法是:Home->New->function。自定義函數一般保存在工作路徑下。函數文件的特征是:擴展名m,內容的第一行以function開頭,后續內容是“輸出變量=函數名(輸入變量)”。且函數名和文件名相同。
每個函數在CommandWindow中運行,用來完成特定的計算任務,運行方式是輸入“輸出變量=函數名(輸入變量)”,然后按回車。例如有個系統自帶的函數是用來求絕對值的,函數名abs,所以在CommandWindow里輸入“a=abs(-1)”,就會顯示運算結果為“a=1”。且運算結果會在Workspace里出現一個變量a,雙擊后可看到a的值是1。
3腳本
可以理解為特殊的函數,這種函數內容的開頭沒有function那行,因此沒有輸入、輸出變量,也沒有函數名。文件擴展名和函數一樣是m,也需要在CommandWindow里運行。腳本都是用戶建立的,方法是:Home->NewScript。一般保存在工作路徑下。腳本的功能就是完成用戶需要的、復雜的計算任務,通常腳本里會調用很多函數。
4GUI
一般翻譯為界面,就是人機交互界面的意思。寫腳本處理問題的方法有點麻煩,讓人看起來更像是碼農,所以現在很多問題可以通過界面點點鼠標解決。這時候就需要打開界面,打開方法是:在APPS標簽里可以找到所有已安裝的GUI工具,單擊即可。注意右邊有個小三角可以點開。和函數一樣,用戶也可以自己建立自定義GUI,這部分較為復雜,對新手而言有點遙遠。
toolbox
一般翻譯成工具箱,matlab將功能相近或者應用上自成體系的一組函數和GUI打包成一個toolbox。正版的matlab在購買時,幾乎每一個toolbox都是要單獨收費的,所以toolbox也可以理解為matlab產品的模塊,一個工具箱就是一個產品/商品。
simulink
一般用matlab解決問題的過程是:用戶自定義腳本,在CommandWindow里運行腳本。而腳本的運行邏輯是順序執行,和一般的編程一樣。simulink則提供另一種思路,圖形化編程,有點像labview,這種方法很適合于物理模型的仿真,因此有時用“matlab編程”和“simulink仿真”強調。使用方法是在home標簽下點擊simulink。
4獲得幫助
常用的獲得幫助有四種方法
①home標簽里,有個Help標志,點開后可以獲得各工具箱/產品的完整幫助文檔。新版本中默認使用在線,改用本地幫助的辦法是在home標簽里,Preferences下的matlab/Help里選擇installedlocally
②官網上找到支持,然后可以獲得教程。這種方法獲得的幫助文檔和第一種方法一樣。
③在CommandWindow里輸入doc+函數名來獲得幫助。比如輸入"docfft"可以獲得離散傅里葉變換函數fft的幫助和范例。這種方法獲得的文檔是前兩種方法文檔中的部分。當然,前提是你要知道函數名,才能找到幫助。這種方法適合于獲得系統自帶函數的使用說明。
④使用GUI時,通常界面的角落里有Help,點開可以獲得幫助。這種方法獲得的文檔是第一和第二種方法文檔中的部分。這種方法適合于獲得系統自帶GUI的使用說明。
這幾種方法中,最常用的是第三種,只要知道自己需要的函數名,就可以用這種方式獲得說明和范例。而實際使用中,一般常用的系統自帶函數,也并不是非常多,大概幾十個?真正需要牢記使用方法的可能就幾個,通常都是知道函數名,要用的時候doc一下。2.2圖像壓縮技術數字圖像壓縮是將原始圖像信息存儲在一個相對較小的空間內,分為有損壓縮和無損壓縮。數字圖像壓縮的方法是通過一定的算法消除圖像信息的冗余,使用戶能夠更有效地存儲和傳輸大量的數字圖像。2.2.1圖像壓縮理論基礎數字圖像壓縮的理論基礎是信息論。在信息論中,數據壓縮就是盡可能多地去除信息中的冗余,保留不確定信息。所謂的冗余作為識別信息被刪除。在數字圖像中,必須存在數據冗余。同時,在數字圖像中,每個部分、每個部分與整體之間總是存在著一種相關性。因此,當我們去除數字圖像內部的數據冗余時,圖像的質量(即有效信息)不應受到盡可能大的損害。因此,有必要對數字圖像中的數據冗余進行研究。2.2.2圖像壓縮類型在數字圖像壓縮方法中,將數字圖像的壓縮過程稱為圖像編碼,將壓縮數據的解壓過程稱為圖像解碼。根據解碼后的圖像與原始圖像是否完全一致,數字圖像壓縮方法可分為無損壓縮編碼方法和有損壓縮編碼方法。無損壓縮編碼是指對壓縮后的圖像進行解碼,其數據與壓縮前的圖像是完全相同的編碼方法。在壓縮期間,數據被當作完全無用的數據丟棄。無損壓縮編碼通常用于需要數據存儲或傳輸的一致性和穩定性的情況。目前常用的無損壓縮編碼方法可以達到1倍的壓縮比,具體的壓縮比與圖像的內容有關。這也證明了在實際應用中,未經處理的數字圖像具有相當大的數據冗余。常用的無損壓縮代碼如下:筆畫編碼,熵編碼,字典編碼,算術編碼。無損壓縮編碼在壓縮過程中可以保持圖像的質量,但與有損壓縮編碼相比,無損壓縮編碼的壓縮比過低。有損壓縮編碼是指對數據和原始圖像采用不同的解碼和編碼方法。在無損壓縮編碼不影響人們對原始圖像理解的前提下,大量的原始圖像冗余信息被丟棄。盡管有損壓縮會損害圖像質量,但從更高的壓縮比來看,有損壓縮編碼仍具有廣泛的應用前景。常見的有損壓縮代碼如下:色度采樣法,變換編碼,矢量量化編碼。2.3矢量量化矢量量化的定義,其實質是一個映射,即將k維的矢量空間Rk映射到其中的一個含有有限個矢量的集合C的過程,且集合C是矢量空間Rk的一個子集,可表示為:上式中,C表示碼書,y,表示C中的碼字,N表示C的尺寸大小,k表示R'中訓練矢量的維度。對于R'中任意訓練矢量,均滿足映射,并滿足:式中,碼字表示訓練矢量x與碼書中碼字y,之間產生的失真。也就是說,Rk中任意的訓練矢量x,都能在碼書C中搜尋到與其失真最小的碼字。對于任意的矢量空間,經過矢量量化器Q量化后均可被劃分為N個相互無任何重疊的子空間,R,表示k維矢量空間中所有映射為碼字y;的訓練矢量的集合,即N個子空間滿足下列條件:矢量量化器的編碼和解碼兩個過程如下圖2.1所示:矢量量化器的編碼過程指的是在給出一定失真條件和一定尺寸碼書的情況下,從中搜尋出距離與輸入矢量量化器的訓練矢量最近的碼字,即二者之間失真最小的碼字。在信道整個傳輸的過程中,并不傳輸真正的碼字而是傳輸與其相對應的索引值。而矢量量化器的解碼過程指的是在接收端和輸入端存儲相同碼書的前提下,將接收到的索引值與碼書中的碼字相匹配,并將匹配后的碼字看作輸入端輸入的訓練矢量重構后的矢量。
3系統分析所謂系統分析,就是要求人員通過與客戶的溝通,獲取信息,然后通過信息需求的方式向用戶和開發人員展示。在軟件功能發展的歷史,很長一段時間,特別是在一開始,需求分析的重要性沒有被人認出,比如IBM英國電信公司在美國開發的一套信息管理系統,需求不明確的條件下開始發展,最初的時期是一年,需求不清楚導致月經推遲了半年多,造成巨大的損失。這也是我們很多軟件公司的情況,他們在開發的時候直接復制同類型的項目來進行變更,甚至沒有與客戶進行清晰的溝通,導致系統接受、重新變更,造成了巨大的人力和物力的浪費。導致所有這些后果的原因是需求不及時,不明確,不全面。3.1系統功能需求系統主要是通過研究分析矢量量化壓縮算法,使用此算法進行圖像的壓縮。3.2可行性分析系統的目的是對圖像進行壓縮。在確定了目標后,我們從以下四方面對能否實現本系統目標進行可行性分析。3.2.1技術可行性基于矢量量化的圖像壓縮系統主要采用MATLAB技術,通過使用矢量量化理論來進行圖像的壓縮。可以看出,該系統技術是沒有問題的。3.2.2操作可行性基于矢量量化的圖像壓縮系統的界面簡單易于操作,用戶只要平時使用過電腦都能進行訪問操作。此系統的開發采用MATLAB語言開發,這些開發環境使系統更加完善。本系統具有易操作、易管理、交互性好的特點,在操作上是非常簡單的。因此本系統可以進行開發。3.2.3經濟可行性由于本系統是面向用戶提供圖像壓縮,而且是針對調用相關庫來實現,在系統開發上并不是很大,整個系統是不是非常大,耗用的時間也不太長,所以開發成本不會太高。在整個發展過程是由自己獨立完成,只需一臺電腦和多種上面提到的軟件,就可以實現所有的發展的任務?;谑噶苛炕膱D像壓縮系統所要求的硬件和軟件環境,市場上都很容易購買,程序開發主要是管理系統的開發和維護。所以程序在開發人力、財力上要求不高,而且此系統不是很復雜,開發周期短,在經濟方面具有較高的可行性。綜上所述,基于矢量量化的圖像壓縮系統在技術、經濟、操作和都具有很高的可行性,開發此程序是可行的。3.3開發環境分析(1)開發硬件平臺:CPU:酷睿I7及以上內存:4G以上硬盤:320G以上顯卡:獨立顯卡(2)開發軟件平臺:操作系統:Windows7開發語言:MATLAB3.4系統性能分析一個系統的性能的好壞,直接決定了用戶的體驗度。而性能的好壞又取決于系統的架構的好與壞。一個優秀的系統架構一般包含以下幾個方面:1模塊化設計明確。一個大的系統,分為很多小的模塊,每個模塊的劃分清晰明確,每個模塊的功能明確,且模塊之間可以靈活的調用,實現低耦合高內聚。2模塊的劃分,分為很多種類,要保證通用模塊實現靈活的調用,特殊模塊,可以隨時根據系統功能等的變更及時進行更改。讓系統的靈活性更高。3穩定、安全、高效的數據建模。數據是整個系統的倉庫,只有一個穩定、安全、高效的倉庫,才能為系統提供好的數據存取和變更。4整體結構穩定而又靈活。系統的整體架構在初期部署的時候,一定要有高度,不但結構清晰,運行穩定,當運行出現問題的時候,能夠提供快速的解決方案。
4系統設計與實現4.1設計目標及原則系統的設計是系統開發的關鍵節點,系統設計是系統的上層架構,設計的好壞決定了系統后期是否能開發完成,及系統完成后的性能優劣。只有設計達到這一目標的系統才能有更好的擴展空間來適應系統未來的發展。在整個系統的設計中,系統必須滿足以下要求:(1)數據安全性系統的開發涉及到很多數據,包括用戶數據或者是系統數據等,無論需要什么樣的數據來保證數據的安全性,在系統設計中都必須采取安全防范措施來解決潛在的安全問題。(2)易用性系統最終會交付給客戶,用戶通過其權限進行系統的使用,能不能用,以及是否好用,都決定了客戶對系統甚至是開發公司的印象。好用的系統能夠大大提高操作員的工作效率,從而提升用戶的好感度和忠誠度。(3)柔軟性柔軟性包含范圍較廣,主要是能夠處理各種突發的情況,也就是我們所說的應急能力。由于任何人都無法保證系統的絕對安全,當系統出現錯誤時,能夠及時的進行補救。(4)擴展性隨著基于矢量量化的圖像壓縮系統需求的不斷變化,系統必然會涉及業務的更新和擴展,這就要求在設計之初就考慮一個良好的可擴展性方案。4.2系統流程設計基于矢量量化的圖像壓縮系統開發時,首先進行需求分析,進而對系統進行總體的設計規劃,設計系統功能模塊等,本系統的開發流程如圖4.2所示圖4.2系統開發流程圖4.4系統實現4.4.1系統實現步驟LBG算法的主要思想為首先通過一定的方法從訓練矢量中獲取初始碼書,然后以獲取的初始碼書為準對訓練矢量進行聚類操作,同時根據選定的目標函數對聚類的結果進行判定,通過判定的結果決定LBG算法迭代的次數,從而獲取較優的碼書。設訓練矢量集其中訓練矢量的維數為k,碼書的大小為N,那么LBG算法的步驟如下:步驟1:初始化操作。利用某種算法對給定的訓練矢量集進行處理,獲取初始碼書,設迭代次數n的初始值為0,固定失真閾值為總的平均失真為。步驟2:最佳劃分。首先將每一次迭代獲取的碼書Yn中的每一個碼字均看作質心,接著將訓練矢量集X中的每一個訓練矢量均按照上述所提的最佳劃分原則進行胞腔的劃分,從而獲得N個胞腔,即且要滿足步驟3:總的平均失真的計算。如果兩個相鄰的總的平均失真的相對誤差滿足下列不等式或者當該算法的迭代次數恰好和所設定的值相等時,終止該算法,否則轉到步驟4。根據公式(2.20)可獲得N個新的質心,這些新的質心組成新的碼書,然后將n設置為n+1,接著轉入步驟2。LBG算法的流程圖如下所示:圖4.3LBG流程圖4.4.2系統運行效果運行系統,可以在選擇圖片進行壓縮。效果如圖4.4所示。圖4.4系統壓縮效果圖4.4.3系統核心代碼核心代碼見附錄。5軟件測試與分析系統開發的最后一個步驟就是系統測試,系統測試也是整個系統十分重要的一個環節,測試的好壞關系到產品的發展。客戶對軟件的質量、性能和可靠性等需求就要通過測試來實現。測試過程要必須遵循嚴謹性、完善性、規范性的原則,測試的主要目的就是看看在系統運行中,是否會出現bug,然后對出現的bug進行調試,直到程序完美運行。但是軟件的測試只能盡可能的減少bug,理論上來說是無法達到消除bug。但是bug越少,系統出錯的幾率就越低,用戶使用起來也更方便、更安全。系統測試包括很多種,一般來說有功能測試,安全測試,可用性測試,性能測試和兼容性測試等。5.1測試環境與測試條件處理器:因特爾酷睿處理器I5內存:4GB硬盤:80G以上操作系統:Win7-10或windowsXP5.2功能測試功能測試包括很多種,通常有五個方面,分別為:安全性、依從性、適用性、準確性以及可操作性行。本系統功能測試如表5-1所示:表5-1系統功能測試5.3性能測試性能測試主要是通過模擬系統的運行環境來測試系統的性能是否滿足客戶的需求。性能測試的重要技術指標是:系統運行速度、系統響應時間。1)系統運行速度:系統運行在不同的計算機上,沒有任何的暫?;蜓舆t。2)系統響應時間:系統響應時間主要包括三個方面:一是系統最小響應時間;系統的平均響應時間;三是系統最大響應時間這三個參數。經過測試,在正常情況下,響應時間的三個數值分別為:0.2/0.5/0.8s,速度非???,用戶滿意。5.4系統運行情況綜上所述,系統已經通過了功能測試和性能測試。在規定的時間內,系統完成了系統分析時確定的系統開發目標,達到了設計要求,達到了良好的壓縮效果。投入使用以后,也能夠為用戶節省大量的人力、物力和財力資源,大大提高科學管理水平。結論本系統通過對MATLAB和矢量量化理論等技術的簡介,從硬件和軟件兩反面說明了基于矢量量化的圖像壓縮系統的可行性,本文結論及研究成果如下:實現了基于MATLAB的基于矢量量化的圖像壓縮系統,通過本次系統的研究與實現,我感觸到學習一門新技術,最重要的是實踐,只有多動手才能盡快掌握它,一個系統的開發,經驗是最重要的,經驗不足,就難免會有許多考慮不周之處。由于在此之前對于MATLAB及矢量量化理論等知識沒有深入了解,所以從一開始就碰到許多困難,例如一開始的算法的無法調用,圖像無法顯示、無法實現參數的傳遞等等,不過通過在網上尋找有關資料以及同學的幫助下最后都得到了解決,在此過程中,我不僅學到了很多知識,也提高了自己解決問題的能力,尤其是學會如何從大量的信息中篩選出所需有用的信息,同時我更加深刻的體會到了,雖然書本上的大部分知識都是有價值,正確的,但實際上每個人編程的思路和對數據處理的方法、思想都是不同的,這就要求我們一定要通過實踐才能找到解決問題的方案。在此次畢業設計活動中,我不斷的提高了自己,也得到了寶貴的經驗,我相信這些對我以后的發展都會有很大幫助。通過這次系統的開發,我參考了很多相關系統的例子,取長補短,吸取了其他系統的長處,逐步對該系統進行了完善,但是該系統還是有很多的不足之處,有待以后進一步學習。參考文獻[1]滕佳東.圖像基于矢量量化的圖像壓縮系統[M].東北財經大學出版社.2018.2.[2]B.B.Mandelbrot.Thefractalgeometryofnature[M].Freeman,NewYork,2013.[3]李后強,汪富泉.矢量量化理論及其發展歷程[J].自然辯證法研究,2012(11):20-23.[4]徐冰.國外星上數據壓縮算法發展研究[J].國際太空,2014(1).[5]法爾科內(英).矢量量化幾何--數學基礎及其應用(第2版)[M].人民郵電出版社,2017.[6]FernándezE,JelinekHF.Useoffractaltheoryinneuroscience:methods,advantages,andpotentialproblems.[J].Methods,2001,24(4):309-321.[7]JacobsEW,FisherY,BossRD.Imagecompression:Astudyoftheiteratedtransformmethod[J].SignalProcessing,1992,29(3):251-263.[8]彭立國.圖像無損壓縮傳輸技術研究[J].科技致富向導,2015(18):316-316.[9]JacobsEW,FisherY,BossRD.Imagecompression:Astudyoftheiteratedtransformmethod[J].SignalProcessing,1992,29(3):251-263.[10]陳颙,陳凌.矢量量化幾何學[M].地震出版社,1998.[11]BastaniV,HelfroushMS,KasiriK.Imagecompressionbasedonspatialredundancyremovalandimageinpainting[J].FrontiersofInformationTechnology&ElectronicEngineering,2010,11(2):92-100.[12]JacquinAE.Imagecodingbasedonafractaltheoryofiteratedcontractiveimagetransformations[J].IEEETransactionsonImageProcessing,1992,1(1):18.[13]王曙光.矢量量化圖像壓縮編碼的原理與發展趨勢[J].福建電腦,2014(9):9-10.[14]Ching-ChungYin;Tzu-KueiWen.ESPIsolutionfordefectdetectionincrystallinephotovoltaiccells[J].SeventhInternationalSymposiumonPrecisionEngineeringMeasurementsandInstrumentation.Yunnan,China,7-11Aug.2011.[15]SchajerG.S.Quan,C.PhaseretrievalinESPIfromadensephasefringepattern:ProceedingsofSPIE-TheInternationalSocietyforOpticalEngineering,Brussels,APR13-16,2010.[16]王志芳.基于傅立葉變換的電子散斑干涉信息提取方法研究及應用[D].天津大學,2014.[17]齊浩.電子散斑干涉測量技術在微結構測試中的應用研究[D].天津大學,2017.[18]LoweD.Distinctiveimagefeaturesfromscale-invariantkeypoints[J].InternationalJournalofComputerVision,2004,60(2):91-110.[19]賈洪哲.降維算法的改進與應用[D].北京:北京師范大學,2014.[20]董洛丞,陳張平.基于改進的卷積神經網絡的人臉識別算法[J].杭州電子科技大學學報(自然科學版),2018,38(05):59-63+101.
附錄系統主要代碼:function[Codebook,ClosestMatch_Index,row,col]=LBG(Image)[row_src,col_src]=size(Image);Pixels=2;row_pad=ceil(row_src/Pixels)*Pixels;col_pad=ceil(col_src/Pixels)*Pixels;tmp_img=zeros(row_pad,col_pad,'uint8');tmp_img(1:row_src,1:col_src)=Image;Image=tmp_img;[row,col]=size(Image);%NumberofpixelsTotalPixels=row*col;%8*8PixelspersetSetPixels=Pixels*Pixels;%NumberofSetNum_Set=TotalPixels/SetPixels;%CodeBookSizeCodebook_Size=256;%ArrayofSetsTotal_Sets=zeros(Num_Set,SetPixels);value_index=1;set_index=1;tic;%AllocatingSetsValuefori=1:Pixels:row%outerforj=1:Pixels:colfora=i:1:i+Pixels-1%Subsetforb=j:1:j+Pixels-1Total_Sets(set_index,value_index)=Image(a,b);value_index=value_index+1;endendvalue_index=1;set_index=set_index+1;endendRandomNums=randi(Num_Set,1,Codebook_Size);Codebook=zeros(Codebook_Size,SetPixels);%InitialCodebookfori=1:1:Codebook_Sizeforj=1:1:SetPixelsCodebook(i,j)=Total_Sets(RandomNums(1,i),j);endend%Part2Processesy=1;dist=1;dist_prev=1;error=1;iterations=0;%TrainingSamplesT_Size=Num_Set;Training=zeros(T_Size,SetPixels);Training=Total_Sets;whileerror>0.0005dist_prev=dist;%TrainingvsCodeBookValuediff=zeros(T_Size,Codebook_Size);fori=1:1:T_Sizefora=1:1:Codebook_Sizeforb=1:1:SetPixelsValuediff(i,a)=Valuediff(i,a)+((Training(i,b)-Codebook(a,b))^2);%SumofDistancefor64codebookendendendClosestDistV=zeros(T_Size,1);%ClosestValueforeachTrainingSetsfori=1:1:T_SizeClosestDistV(i,1)=min(Valuediff(i,:));end%GettingTheCodebook_IndexoftheclosestMatch(checked)ClosestMatch_Index=zeros(T_Size,1);fori=1:1:T_Sizeforj=1:1:Codebook_Sizeif(Valuediff(i,j)==ClosestDistV(i,1))ClosestMatch_Index(i,1)=ClosestMatch_Index(i,1)+1;break;elseClosestMatch_Index(i,1)=ClosestMatch_Index(i,1)+1;endendend%LengthForAveraging(checked)ClosestMatch_Length=zeros(Codebook_Size,1);Counter=0;fori=1:1:Codebook_SizeCounter=Counter+1;forj=1:1:T_SizeifCounter==ClosestMatch_Index(j,1)ClosestMatch_Length(i,1)=ClosestMatch_Length(i,1)+1;endendend%GeneratingNewCodeBookCodebookNew_Sum=zeros(Codebook_Size,SetPixels);fori=1:1:Codebook_Sizefora=1:1:T_SizeifClosestMatch_Index(a,1)==iforj=1:1:SetPixelsCodebookNew_Sum(i,j)=CodebookNew_Sum(i,j)+Training(a,j);endendendendCodebookNew=zeros(Codebook_Size,SetPixels);fori=1:1:Codebook_Sizeforj=1:1:SetPixelsifClosestMatch_Length(i,1)==0CodebookNew(i,j)=Codebook(i,j);elseCodebookNew(i,j)=CodebookNew_Sum(i,j)/ClosestMatch_Length(i,1);endendend%CorrectCodebook=CodebookNew;%Part4CalculatingDistortiondist=sum(sum(Valuediff))/(Codebook_Size*SetPixels);error=abs(dist_prev-dist);error=error/dist_prev;iterations=iterations+1;disp(['error=',num2str(error),'iterations=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商場店鋪租賃合同標準范本
- 2025工程分包合同標準范本
- 2025設備采購合同示范文本GF
- 2025商業銀行保安服務合同
- 養殖魚塘轉租合同樣本
- 材料采購議標方案范本
- 媒體產業品牌宣傳方案計劃
- 借貸合同 投資合同樣本
- 出電子合同樣本
- 農村房屋爭議合同標準文本
- 常見職業病危害和預防基礎知識
- DB64-T 1973-2024 鋼渣瀝青路面應用技術規范
- 綠化工程售后服務方案
- 抗凝劑皮下注射技術臨床實踐指南與臨床應用
- 2022新教材蘇教版科學5五年級下冊全冊教學設計
- 干部履歷表填寫范本(中共中央組織部1999年)
- 2024年電力市場居間服務合同模板
- 鐵路技規(全-上傳)
- 《學術規范與論文寫作》課程教學大綱(本科)
- 2024年海南省國有資本運營有限公司招聘筆試沖刺題(帶答案解析)
- 大棚包工包料施工合同范本
評論
0/150
提交評論