① 圖像壓縮編碼論文
數字圖像壓縮技術的研究及進展
摘要:數字圖像壓縮技術對於數字圖像信息在網路上實現快速傳輸和實時處理具有重要的意義。本文介紹了當前幾種最為重要的圖像壓縮演算法:JPEG、JPEG2000、分形圖像壓縮和小波變換圖像壓縮,總結了它們的優缺點及發展前景。然後簡介了任意形狀可視對象編碼演算法的研究現狀,並指出此演算法是一種產生高壓縮比的圖像壓縮演算法。關鍵詞:JPEG;JPEG2000;分形圖像壓縮;小波變換;任意形狀可視對象編碼一 引 言 隨著多媒體技術和通訊技術的不斷發展,多媒體娛樂、信息高速公路等不斷對信息數據的存儲和傳輸提出了更高的要求,也給現有的有限帶寬以嚴峻的考驗,特別是具有龐大數據量的數字圖像通信,更難以傳輸和存儲,極大地制約了圖像通信的發展,因此圖像壓縮技術受到了越來越多的關注。圖像壓縮的目的就是把原來較大的圖像用盡量少的位元組表示和傳輸,並且要求復原圖像有較好的質量。利用圖像壓縮,可以減輕圖像存儲和傳輸的負擔,使圖像在網路上實現快速傳輸和實時處理。 圖像壓縮編碼技術可以追溯到1948年提出的電視信號數字化,到今天已經有50多年的歷史了[1]。在此期間出現了很多種圖像壓縮編碼方法,特別是到了80年代後期以後,由於小波變換理論,分形理論,人工神經網路理論,視覺模擬理論的建立,圖像壓縮技術得到了前所未有的發展,其中分形圖像壓縮和小波圖像壓縮是當前研究的熱點。本文對當前最為廣泛使用的圖像壓縮演算法進行綜述,討論了它們的優缺點以及發展前景。二 JPEG壓縮 負責開發靜止圖像壓縮標準的「聯合圖片專家組」(Joint Photographic Expert Group,簡稱JPEG),於1989年1月形成了基於自適應DCT的JPEG技術規范的第一個草案,其後多次修改,至1991年形成ISO10918國際標准草案,並在一年後成為國際標准,簡稱JPEG標准。1.JPEG壓縮原理及特點 JPEG演算法中首先對圖像進行分塊處理,一般分成互不重疊的 大小的塊,再對每一塊進行二維離散餘弦變換(DCT)。變換後的系數基本不相關,且系數矩陣的能量集中在低頻區,根據量化表進行量化,量化的結果保留了低頻部分的系數,去掉了高頻部分的系數。量化後的系數按zigzag掃描重新組織,然後進行哈夫曼編碼。JPEG的特點優點:(1)形成了國際標准;(2)具有中端和高端比特率上的良好圖像質量。缺點:(1)由於對圖像進行分塊,在高壓縮比時產生嚴重的方塊效應;(2)系數進行量化,是有損壓縮;(3)壓縮比不高,小於50。 JPEG壓縮圖像出現方塊效應的原因是:一般情況下圖像信號是高度非平穩的,很難用Gauss過程來刻畫,並且圖像中的一些突變結構例如邊緣信息遠比圖像平穩性重要,用餘弦基作圖像信號的非線性逼近其結果不是最優的。2. JPEG壓縮的研究狀況及其前景 針對JPEG在高壓縮比情況下,產生方塊效應,解壓圖像較差,近年來提出了不少改進方法,最有效的是下面的兩種方法:(1)DCT零樹編碼 DCT零樹編碼把 DCT塊中的系數組成log2N個子帶,然後用零樹編碼方案進行編碼。在相同壓縮比的情況下,其PSNR的值比 EZW高。但在高壓縮比的情況下,方塊效應仍是DCT零樹編碼的致命弱點。(2)層式DCT零樹編碼 此演算法對圖像作 的DCT變換,將低頻 塊集中起來,做 反DCT變換;對新得到的圖像做相同變換,如此下去,直到滿足要求為止。然後對層式DCT變換及零樹排列過的系數進行零樹編碼。 JPEG壓縮的一個最大問題就是在高壓縮比時產生嚴重的方塊效應,因此在今後的研究中,應重點解決 DCT變換產生的方塊效應,同時考慮與人眼視覺特性相結合進行壓縮。三 JEPG2000壓縮 JPEG2000是由ISO/IEC JTCISC29標准化小組負責制定的全新靜止圖像壓縮標准。一個最大改進是它採用小波變換代替了餘弦變換。2000年3月的東京會議,確定了彩色靜態圖像的新一代編碼方式—JPEG2000圖像壓縮標準的編碼演算法。1.JPEG2000壓縮原理及特點 JPEG2000編解碼系統的編碼器和解碼器的框圖如圖1所示。編碼過程主要分為以下幾個過程:預處理、核心處理和位流組織。預處理部分包括對圖像分片、直流電平(DC)位移和分量變換。核心處理部分由離散小波變換、量化和熵編碼組成。位流組織部分則包括區域劃分、碼塊、層和包的組織。 JPEG2000格式的圖像壓縮比,可在現在的JPEG基礎上再提高10%~30%,而且壓縮後的圖像顯得更加細膩平滑。對於目前的JPEG標准,在同一個壓縮碼流中不能同時提供有損和無損壓縮,而在JPEG2000系統中,通過選擇參數,能夠對圖像進行有損和無損壓縮。現在網路上的JPEG圖像下載時是按「塊」傳輸的,而JPEG2000格式的圖像支持漸進傳輸,這使用戶不必接收整個圖像的壓縮碼流。由於JPEG2000採用小波技術,可隨機獲取某些感興趣的圖像區域(ROI)的壓縮碼流,對壓縮的圖像數據進行傳輸、濾波等操作。2.JPEG2000壓縮的前景 JPEG2000標准適用於各種圖像的壓縮編碼。其應用領域將包括Internet、傳真、列印、遙感、移動通信、醫療、數字圖書館和電子商務等。JPEG2000圖像壓縮標准將成為21世紀的主流靜態圖像壓縮標准。四 小波變換圖像壓縮1.小波變換圖像壓縮原理小波變換用於圖像編碼的基本思想就是把圖像根據Mallat塔式快速小波變換演算法進行多解析度分解。其具體過程為:首先對圖像進行多級小波分解,然後對每層的小波系數進行量化,再對量化後的系數進行編碼。小波圖像壓縮是當前圖像壓縮的熱點之一,已經形成了基於小波變換的國際壓縮標准,如MPEG-4標准,及如上所述的JPEG2000標准 。2.小波變換圖像壓縮的發展現狀及前景 目前3個最高等級的小波圖像編碼分別是嵌入式小波零樹圖像編碼(EZW),分層樹中分配樣本圖像編碼(SPIHT)和可擴展圖像壓縮編碼(EBCOT)。(1)EZW編碼器 1993年,Shapiro引入了小波「零樹」的概念,通過定義POS、NEG、IZ和ZTR四種符號進行空間小波樹遞歸編碼,有效地剔除了對高頻系數的編碼,極大地提高了小波系數的編碼效率。此演算法採用漸進式量化和嵌入式編碼模式,演算法復雜度低。EZW演算法打破了信息處理領域長期篤信的准則:高效的壓縮編碼器必須通過高復雜度的演算法才能獲得,因此EZW編碼器在數據壓縮史上具有里程碑意義。(2)SPIHT編碼器 由Said和Pearlman提出的分層小波樹集合分割演算法(SPIHT)則利用空間樹分層分割方法,有效地減小了比特面上編碼符號集的規模。同EZW相比,SPIHT演算法構造了兩種不同類型的空間零樹,更好地利用了小波系數的幅值衰減規律。同EZW編碼器一樣,SPIHT編碼器的演算法復雜度低,產生的也是嵌入式比特流,但編碼器的性能較EZW有很大的提高。(3)EBCOT編碼器優化截斷點的嵌入塊編碼方法(EBCOT)首先將小波分解的每個子帶分成一個個相對獨立的碼塊,然後使用優化的分層截斷演算法對這些碼塊進行編碼,產生壓縮碼流,結果圖像的壓縮碼流不僅具有SNR可擴展而且具有解析度可擴展,還可以支持圖像的隨機存儲。比較而言,EBCOT演算法的復雜度較EZW和SPIHT有所提高,其壓縮性能比SPIHT略有提高。
小波圖像壓縮被認為是當前最有發展前途的圖像壓縮演算法之一。小波圖像壓縮的研究集中在對小波系數的編碼問題上。在以後的工作中,應充分考慮人眼視覺特性,進一步提高壓縮比,改善圖像質量。並且考慮將小波變換與其他壓縮方法相結合。例如與分形圖像壓縮相結合是當前的一個研究熱點。
五 分形圖像壓縮 1988年,Barnsley通過實驗證明分形圖像壓縮可以得到比經典圖像編碼技術高幾個數量級的壓縮比。1990年,Barnsley的學生A.E.Jacquin提出局部迭代函數系統理論後,使分形用於圖像壓縮在計算機上自動實現成為可能。1. 分形圖像壓縮的原理 分形壓縮主要利用自相似的特點,通過迭代函數系統(Iterated Function System, IFS)實現。其理論基礎是迭代函數系統定理和拼貼定理。 分形圖像壓縮把原始圖像分割成若干個子圖像,然後每一個子圖像對應一個迭代函數,子圖像以迭代函數存儲,迭代函數越簡單,壓縮比也就越大。同樣解碼時只要調出每一個子圖像對應的迭代函數反復迭代,就可以恢復出原來的子圖像,從而得到原始圖像。2.幾種主要分形圖像編碼技術 隨著分形圖像壓縮技術的發展,越來越多的演算法被提出,基於分形的不同特徵,可以分成以下幾種主要的分形圖像編碼方法。(1)尺碼編碼方法 尺碼編碼方法是基於分形幾何中利用小尺度度量不規則曲線長度的方法,類似於傳統的亞取樣和內插方法,其主要不同之處在於尺度編碼方法中引入了分形的思想,尺度 隨著圖像各個組成部分復雜性的不同而改變。(2)迭代函數系統方法 迭代函數系統方法是目前研究最多、應用最廣泛的一種分形壓縮技術,它是一種人機交互的拼貼技術,它基於自然界圖像中普遍存在的整體和局部自相關的特點,尋找這種自相關映射關系的表達式,即仿射變換,並通過存儲比原圖像數據量小的仿射系數,來達到壓縮的目的。如果尋得的仿射變換簡單而有效,那麼迭代函數系統就可以達到極高的壓縮比。(3)A-E-Jacquin的分形方案 A-E-Jacquin的分形方案是一種全自動的基於塊的分形圖像壓縮方案,它也是一個尋找映射關系的過程,但尋找的對象域是將圖像分割成塊之後的局部與局部的關系。在此方案中還有一部分冗餘度可以去除,而且其解碼圖像中存在著明顯的方塊效應。3.分形圖像壓縮的前景 雖然分形圖像壓縮在圖像壓縮領域還不佔主導地位,但是分形圖像壓縮既考慮局部與局部,又考慮局部與整體的相關性,適合於自相似或自仿射的圖像壓縮,而自然界中存在大量的自相似或自仿射的幾何形狀,因此它的適用范圍很廣。六 其它壓縮演算法 除了以上幾種常用的圖像壓縮方法以外,還有:NNT(數論變換)壓縮、基於神經網路的壓縮方法、Hibert掃描圖像壓縮方法、自適應多相子帶壓縮方法等,在此不作贅述。下面簡單介紹近年來任意形狀紋理編碼的幾種演算法[10]~ [13]。(1)形狀自適應DCT(SA-DCT)演算法 SA-DCT把一個任意形狀可視對象分成 的圖像塊,對每塊進行DCT變換,它實現了一個類似於形狀自適應Gilge DCT[10][11]變換的有效變換,但它比Gilge DCT變換的復雜度要低。可是,SA-DCT也有缺點,它把像素推到與矩形邊框的一個側邊相平齊,因此一些空域相關性可能丟失,這樣再進行列DCT變換,就有較大的失真了[11][14][15]。(2)Egger方法 Egger等人[16][17]提出了一個應用於任意形狀對象的小波變換方案。在此方案中,首先將可視對象的行像素推到與邊界框的右邊界相平齊的位置,然後對每行的有用像素進行小波變換,接下來再進行另一方向的小波變換。此方案,充分利用了小波變換的局域特性。然而這一方案也有它的問題,例如可能引起重要的高頻部分同邊界部分合並,不能保證分布系數彼此之間有正確的相同相位,以及可能引起第二個方向小波分解的不連續等。(3)形狀自適應離散小波變換(SA-DWT) Li等人提出了一種新穎的任意形狀對象編碼,SA-DWT編碼[18]~[22]。這項技術包括SA-DWT和零樹熵編碼的擴展(ZTE),以及嵌入式小波編碼(EZW)。SA-DWT的特點是:經過SA-DWT之後的系數個數,同原任意形狀可視對象的像素個數相同;小波變換的空域相關性、區域屬性以及子帶之間的自相似性,在SA-DWT中都能很好表現出來;對於矩形區域,SA-DWT與傳統的小波變換一樣。SA-DWT編碼技術的實現已經被新的多媒體編碼標准MPEG-4的對於任意形狀靜態紋理的編碼所採用。 在今後的工作中,可以充分地利用人類視覺系統對圖像邊緣部分較敏感的特性,嘗試將圖像中感興趣的對象分割出來,對其邊緣部分、內部紋理部分和對象之外的背景部分按不同的壓縮比進行壓縮,這樣可以使壓縮圖像達到更大的壓縮比,更加便於傳輸。七 總結 圖像壓縮技術研究了幾十年,取得了很大的成績,但還有許多不足,值得我們進一步研究。小波圖像壓縮和分形圖像壓縮是當前研究的熱點,但二者也有各自的缺點,在今後工作中,應與人眼視覺特性相結合。總之,圖像壓縮是一個非常有發展前途的研究領域,這一領域的突破對於我們的信息生活和通信事業的發展具有深遠的影響。
參考文獻:[1] 田青. 圖像壓縮技術[J]. 警察技術, 2002, (1):30-31.[2] 張海燕, 王東木等. 圖像壓縮技術[J]. 系統模擬學報, 2002, 14(7):831-835.[3] 張宗平, 劉貴忠. 基於小波的視頻圖像壓縮研究進展[J]. 電子學報, 2002, 30(6):883-889.
[4] 周寧, 湯曉軍, 徐維朴. JPEG2000圖像壓縮標准及其關鍵演算法[J]. 現代電子技術, 2002, (12):1-5.[5] 吳永輝, 俞建新. JPEG2000圖像壓縮演算法概述及網路應用前景[J]. 計算機工程, 2003, 29(3):7-10.[6] J M Shaprio. Embedded image coding using zerotree of wavelet coefficients[J]. IEEE Trans. on Signal Processing, 1993, 41(12): 3445-3462.[7] A Said, W A Pearlman. A new fast and efficient image codec based on set partitioning in hierarchical trees[J]. IEEE Trans. on Circuits and Systems for Video Tech. 1996, 6(3): 243-250.[8] D Taubman. High performance scalable image compression with EBCOT[J]. IEEE Transactions on Image Processing, 2000, 9(7): 1158–1170.[9] 徐林靜, 孟利民, 朱建軍. 小波與分行在圖像壓縮中的比較及應用. 中國有線電視, 2003, 03/04:26-29.[10] M Gilge, T Engelhardt, R Mehlan. Coding of arbitrarily shaped image segments based on a generalized orthogonal transform[J]. Signal Processing: Image Commun., 1989, 1(10): 153–180.[11] T Sikora, B Makai. Shape-adaptive DCT for generic coding of video[J]. IEEE Trans. Circuits Syst. Video Technol., 1995, 5(1): 59–62.[12] T Sikora, S Bauer, B Makai. Efficiency of shape-adaptive 2-D transforms for coding of arbitrarily shaped image segments[J]. IEEE Trans. Circuits Syst. Video Technol., 1995, 5(3): 254–258.[13]鄧家先 康耀紅 編著 《資訊理論與編碼》
② 圖像數字化過程包括三個步驟
圖像的數字化過程主要分采樣、量化與編碼三個步驟。
1、采樣的實質就是要用多少點來描述一幅圖像,采樣結果質量的高低就是用前面所說的圖像解析度來衡量。
2、量化是指要使用多大范圍的數值來表示圖像采樣之後的每一個點。量化的結果是圖像能夠容納的顏色總數,它反映了采樣的質量。
3、數字化後得到的圖像數據量十分巨大,必須採用編碼技術來壓縮其信息量。在一定意義上講,編碼壓縮技術是實現圖像傳輸與儲存的關鍵。已有許多成熟的編碼演算法應用於圖像壓縮。常見的有圖像的預測編碼、變換編碼、分形編碼、小波變換圖像壓縮編碼等。
(2)圖像的分形壓縮編碼擴展閱讀:
圖像數字化的對象:
1、模擬圖像:空間上連續/不分割、信號值不分等級的圖像。
2、數字圖像:空間上被分割成離散像素,信號值分為有限個等級、用數碼0和1表示的圖像。
圖像數字化的意義:
圖像數字化是將模擬圖像轉換為數字圖像。圖像數字化是進行數字圖像處理的前提。圖像數字化必須以圖像的電子化作為基礎,把模擬圖像轉變成電子信號,隨後才將其轉換成數字圖像信號。
圖像數字化應用:遙感學
遙感科學與技術,所屬一級學科為測繪科學與技術,是在測繪科學、空間科學、電子科學、地球科學、計算機科學以及其學科交叉滲透、相互融合的基礎上發展起來的一門新興交叉學科。
它利用非接觸感測器來獲取有關目標的時空信息,不僅著眼於解決傳統目標的幾何定位,更為重要的是對利用外層空間感測器獲取的影像和非影像信息進行語義和非語義解譯,提取客觀世界中各種目標對象的幾何與物理特徵信息。
③ 請大家談談你對數據壓縮原理的認識
數據壓縮技術就是對原始數據進行數據編碼或壓縮編碼。
目前常用的壓縮編碼有:冗餘壓縮法(無損壓縮法、熵編碼)和熵壓縮法(有損壓縮法)兩類。
無損壓縮是可逆的;有損壓縮是不可逆的。
變長編碼
使用長度可變的代碼來對以不同頻率出現的樣本進行編碼。
1·Huffman編碼
Huffman編碼又稱最佳編碼。
Huffman編碼過程是:
*將信源符號按概率遞減順序排列;
*把兩個最小的概率加起來,作為新符號的概率;
*重復上述兩步驟,直到概率的和達到1為止;
*在每次合並消息時,將被合並的消息賦予1和0或賦予0和1;
*尋找從每一信源符號到概率為1的路經,記錄下路經上的1和0;
*對每一符號寫出從碼樹的根到終結點1、0序列。
例:對信源
[X1,X2,X3,X4,X5,X6]=[0.25,0.25,0.20,0.15,0.10,0.05]
進行Huffman編碼。
其中:X1=01;X2=10;X3=11;X4=000;X5=0010;X6=0011。
2·算術編碼
算術編碼是一種二元編碼。
這種編碼方法是在不考慮信源統計的情況下,只要監視一小段時間內碼字出現的頻率,不管統計是平穩的或非平穩的,編碼的碼率總能趨近於信源熵值,每次迭代的編碼演算法只處理一個數據符號,並且只有算術運算。
對二進制編碼來說,信源符號只有兩個。在算術編碼的初級階段,可設一個大概率Pe和小概率Qe,然後對被編碼比特流符號進行判斷。
模型編碼
模型編碼是指採用模型的方法對傳輸的圖像進行參數估測。
模型編碼有:隨機馬爾可夫場和分形圖像編碼。
1·分形的概念
分形的含義是其組成部分以某種方式與整體相似的形(一類無規則、混亂而復雜),其局部與整體有相似性的體系,即:自相似性體系。
2·分形編碼
*基本原理:分形的方法是把一幅數字圖像,通過一些圖像處理技術將原始圖像分成一些子圖像,然後在分形集中查找這樣的子圖像。分形集存儲許多迭代函數,通過迭代函數的反復迭代,可以恢復原來的子圖像。
分形編碼壓縮的步驟:
第一步:把圖像劃分為互不重疊的、任意大小的的D分區;
第二步:劃定一些可以相互重疊的、比D分區大的R分區;
第三步:為每個D分區選定仿射變換表。
分形編碼解壓步驟:
首先從文件中讀取D分區劃分方式的信息和仿射變換系數等數據;
然後劃定兩個同樣大小的緩沖區給D圖像和R圖像,並把R初始化到任一初始階段;
根據仿射變換系數把其相應的R分區做仿射變換,並用變換後的數據取代該D分區的原有數據;
對D中所有的D分區都進行上述操作,全部完成後就形成一個新的D圖像;
再把新D圖像的內容拷貝到R中,把新R當作D,D當作R,重復操作(迭代)。
。分形編碼的特點:
壓縮比高,壓縮後的文件容量與圖像像素數無關,在壓縮時時間長但解壓縮速度快
④ 分形編碼的分形編解碼過程
分形編碼壓縮的步驟: 第一步:把圖像劃分為互不重疊的、任意大小的的D分區; 第二步:劃定一些可以相互重疊的、比D分區大的R分區; 第三步:為每個D分區選定仿射變換表。 分形編碼解壓步驟: 首先從文件中讀取D分區劃分方式的信息和仿射變換系數等數據; 然後劃定兩個同樣大小的緩沖區給D圖像和R圖像,並把R初始化到任一初始階段; 根據仿射變換系數把其相應的R分區做仿射變換,並用變換後的數據取代該D分區的原有數據; 對D中所有的D分區都進行上述操作,全部完成後就形成一個新的D圖像; 再把新D圖像的內容拷貝到R中,把新R當作D,D當作R,重復操作(迭代)。
⑤ 數字圖像壓縮技術
⑥ 圖像壓縮的圖像壓縮原理
1.圖像壓縮的概念
減少表示數字圖像時需要的數據量
2.圖像壓縮的基本原理
圖像數據之所以能被壓縮,就是因為數據中存在著冗餘。圖像數據的冗餘主要表現為:圖像中相鄰像素間的相關性引起的空間冗餘;圖像序列中不同幀之間存在相關性引起的時間冗餘;不同彩色平面或頻譜帶的相關性引起的頻譜冗餘。數據壓縮的目的就是通過去除這些數據冗餘來減少表示數據所需的比特數。由於圖像數據量的龐大,在存儲、傳輸、處理時非常困難,因此圖像數據的壓縮就顯得非常重要。
信息時代帶來了「信息爆炸」,使數據量大增,因此,無論傳輸或存儲都需要對數據進行有效的壓縮。在遙感技術中,各種航天探測器採用壓縮編碼技術,將獲取的巨大信息送回地面。
圖像壓縮是數據壓縮技術在數字圖像上的應用,它的目的是減少圖像數據中的冗餘信息從而用更加高效的格式存儲和傳輸數據。
3。圖像壓縮基本方法
圖像壓縮可以是有損數據壓縮也可以是無損數據壓縮。對於如繪制的技術圖、圖表或者漫畫優先使用無損壓縮,這是因為有損壓縮方法,尤其是在低的位速條件下將會帶來壓縮失真。如醫療圖像或者用於存檔的掃描圖像等這些有價值的內容的壓縮也盡量選擇無損壓縮方法。有損方法非常適合於自然的圖像,例如一些應用中圖像的微小損失是可以接受的(有時是無法感知的),這樣就可以大幅度地減小位速。
無損圖像壓縮方法有:
行程長度編碼
熵編碼法
如 LZW 這樣的自適應字典演算法
有損壓縮方法有:
將色彩空間化減到圖像中常用的顏色。所選擇的顏色定義在壓縮圖像頭的調色板中,圖像中的每個像素都用調色板中顏色索引表示。這種方法可以與 抖動(en:dithering)一起使用以模糊顏色邊界。
色度抽樣,這利用了人眼對於亮度變化的敏感性遠大於顏色變化,這樣就可以將圖像中的顏色信息減少一半甚至更多。
變換編碼,這是最常用的方法。首先使用如離散餘弦變換(DCT)或者小波變換這樣的傅立葉相關變換,然後進行量化和用熵編碼法壓縮。
分形壓縮(en:Fractal compression)。
4.圖像壓縮的主要目標就是在給定位速(bit-rate)或者壓縮比下實現最好的圖像質量。但是,還有一些其它的圖像壓縮機制的重要特性:
可擴展編碼 (en:Scalability) 通常表示操作位流和文件產生的質量下降(沒有解壓縮和再壓縮)。可擴展編碼的其它一些叫法有 漸進編碼(en:progressive coding)或者嵌入式位流(en:embedded bitstreams)。盡管具有不同的特性,在無損編碼中也有可擴展編碼,它通常是使用粗糙到精細像素掃描的格式。尤其是在下載時預覽圖像(如瀏覽器中)或者提供不同的圖像質量訪問時(如在資料庫中)可擴展編碼非常有用 有幾種不同類型的可擴展性:
質量漸進(en:Quality progressive)或者層漸進(en:layer progressive):位流漸進更新重建的圖像。
解析度漸進(en:Resolution progressive):首先在低解析度編碼圖像,然後編碼與高解析度之間的差別。
成分漸進(en:Component progressive):首先編碼灰度數據,然後編碼彩色數據。
感興趣區域編碼,圖像某些部分的編碼質量要高於其它部分,這種方法可以與可擴展編碼組合在一起(首先編碼這些部分,然後編碼其它部分)。
元數據信息,壓縮數據可以包含關於圖像的信息用來分類、查詢或者瀏覽圖像。這些信息可以包括顏色、紋理統計信息、小預覽圖像以及作者和版權信息。
5.圖像壓縮目前的標准
經典的視頻壓縮演算法已漸形成一系列的國際標准體系,如H.26x系列建議,H.320系列建議以及MPEG系列建議等。
6.圖像壓縮效果的評估
壓縮方法的質量經常使用峰值信噪比來衡量,峰值信噪比用來表示圖象有損壓縮帶來的雜訊。但是,觀察者的主觀判斷也認為是一個重要的、或許是最重要的衡量標准。
⑦ 求教高人,用MATLAB軟體怎樣的實現圖像的分形壓縮
分形編碼的基本思路是:先採用一種合適的初級壓縮方法對圖像進行壓縮,得到一組壓縮編碼,然後解碼這組編碼,得到一幅解壓縮圖像.對解碼圖像與原始圖像求差值,得到一差值圖像,然後對該差值圖像進行適當的編碼.對差值圖像的編碼與初級編碼共同構成對原始圖像的編碼.這種方法需要選擇合適的初級編碼方法與差值編碼方法,使得這兩者相結合,可以得到一種綜合性能較好的編碼方法。
其定義如圖。
%%%%%%%%%%%%%%
clear
tic
%Image1=imread('piccameraman.tif');
xianshi;
number=input('inputthenumber:');
Image1=suoxiao('piccameraman.tif',number);
[imagemimagen]=size(Image1);
Sr=4;Sd=8;
Rnum=(imagem/Sr)*(imagen/Sr);
Dnum=(imagem/Sd)*(imagen/Sd);
Image2=zeros(Dnum,Sr,Sr);
Image2=blkproc(Image1,[Sd/Sr,Sd/Sr],'mean(mean(x))');
%壓縮image1為原來1/2
%
RBlocks=zeros(Rnum,Sr,Sr);
DBlocks=zeros(Dnum,Sd,Sd);
DBlocksRece=zeros(Dnum*8,Sr,Sr);
%%取R塊,K記標號----------------------------------
fori=1:imagem/Sr
forj=1:imagen/Sr
k=(i-1)*imagen/Sr+j;
RBlocks(k,:,:)=Image1((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);
end
end
%取R塊,K記標號----------------------------------
fori=1:imagem/Sd
forj=1:imagen/Sd
k=(i-1)*imagen/Sd+j;
m=Sr;n=Sr;
DBlocksRece(k,:,:)=Image2((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);
DBlocksRece(k+Dnum,:,:)=DBlocksRece(k,m:-1:1,:);%行上下翻轉===(x軸對稱)
DBlocksRece(k+2*Dnum,:,:)=DBlocksRece(k,:,n:-1:1);%列左右翻轉====y軸對稱
DBlocksRece(k+3*Dnum,:,:)=DBlocksRece(k,m:-1:1,n:-1:1);%先行翻,再列翻旋轉180度
DBlocksRece(k+4*Dnum,:,:)=reshape(DBlocksRece(k,:,:),Sr,Sr)';%關於y=-x對稱
A=reshape(DBlocksRece(k+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(k+5*Dnum,:,:)=A(:,n:-1:1);%關於y=x對稱
DBlocksRece(k+6*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),90);%逆時針旋轉90度
DBlocksRece(k+7*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),270);%逆時針旋轉270度
DBlocks(k,:,:)=Image1((i-1)*Sd+1:i*Sd,(j-1)*Sd+1:j*Sd);
end
end
RandDbest=zeros(Rnum,1)+256^3;
RandDbests=zeros(Rnum,1);
RandDbesto=zeros(Rnum,1);
RandDbestj=zeros(Rnum,1);
fori=1:Rnum
x=reshape(RBlocks(i,:,:),Sr*Sr,1);
meanx=mean(x);
forj=1:Dnum*8
y=reshape(DBlocksRece(j,:,:),Sr*Sr,1);
meany=mean(y);
s=(x-meanx)'*(y-meany)/((y-meany)'*(y-meany));%計算s
o=(meanx-s*meany);%計算o
c=(x-s*y-o)'*(x-s*y-o);%距離
if(RandDbest(i)>c)&(abs(s)<1)
RandDbest(i)=c;
RandDbests(i)=s;
RandDbesto(i)=o;
RandDbestj(i)=j;%可以找到對應變換和D塊
end
end
end
%iterationlimit
toc
tic
m=8;%解碼迭代次數
e=mean(mean(Image1));
Image3=e*ones(imagem,imagen);%解碼初始圖象
forL=1:m
Image4=blkproc(Image3,[Sd/Sr,Sd/Sr],'mean(mean(x))');
fori=1:imagem/Sr
forj=1:imagen/Sr
m=Sr;n=Sr;
k=(i-1)*imagen/Sr+j;
l=RandDbestj(k);
k1=mod(l-1,Dnum)+1;%第幾個D
l1=(l-k1)/Dnum+1;%變換號
%R對應D在Image4的起始點
j1=mod(k1-1,imagen/Sd)+1;
i1=(k1-j1)/(imagen/Sd)+1;
%變換------------------------------------------------------------------------
DBlocksRece(k1,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
switchl1-1
case0
DBlocksRece(l,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
case1
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,:);
case2
DBlocksRece(l,:,:)=DBlocksRece(k1,:,n:-1:1);
case3
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
case4
DBlocksRece(l,:,:)=reshape(DBlocksRece(k1,:,:),Sr,Sr)';
case5
DBlocksRece(k1+3*Dnum,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
A=reshape(DBlocksRece(k1+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(l,:,:)=A(:,n:-1:1);
case6
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),90);
case7
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),270);
end
%變換結束--------------------------------------------------------------------
RBlocks(k,:,:)=RandDbests(k)*DBlocksRece(l,:,:)+RandDbesto(k);
%生成R---------------------------
Image3((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr)=reshape(RBlocks(k,:,:),Sr,Sr);%更新迭代圖象
end
end
wucha=double(Image1)-Image3;%誤差圖
Ps1(L)=20*log10(255/(sqrt(mean(mean(wucha.^2)))))
PSNR=psnr(wucha)
figure
imshow(uint8(Image3))
end
toc
figure
wucha=uint8(wucha);
imshow(wucha)
figure
imshow(uint8(Image1)),title('原圖');
save('sa.mat')
fangtu(wucha);%%%%分形主函數
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
子函數:1:
functionb=suoxiao(filename,bili)
a=imread(filename);
a=double(a);
[m,n]=size(a);
i=1;
whilei=m/bili
j=1;
whilej=n/bili
k=mean(mean(a(bili*(i-1)+1:bili*(i-1)+bili,bili*(j-1)+1:bili*(j-1)+bili)));
b(i,j)=k;
j=j+1;
end
i=i+1;
end
%b=uint8(b);
size(b)
%imshow(b)
子函數2:
%clc
functionfangtu(a)
J=a;
%計算灰度圖象的直方圖數據,a為如象數組
L=256;%灰度級
Ps=zeros(L,1);%統計直方圖結果數據
nk=zeros(L,1);
[row,col]=size(a);
n=row*col;%總像素個數
fori=1:row
forj=1:col
num=double(a(i,j))+1;%獲取像素點灰度級
nk(num)=nk(num)+1;%統計nk
end
end
%計算直方圖概率估計
fori=1:L
Ps(i)=nk(i)/n;
end
figure;
subplot(3,1,1);imshow(J),title('誤差圖');
subplot(3,1,2),plot(nk),title('直方圖(nk)');
subplot(3,1,3),plot(Ps),title('直方圖(Ps)');
子函數3:
functionPSNR=psnr(a)
[m,n]=size(a);
a=uint8(a);
a=double(a);
imagesize=m*n;
MSE=sum(dot(a,a))/imagesize;
PSNR=10*log10(255^2/MSE);
%%%%%%%%%%%%%%%%%%%%%%
說明:
1、因為本程序時間長,FX中先選擇圖片的大小
2、編碼與解碼
3、做誤差圖和只方圖
4:畫出每次迭代的解碼圖象