導航:首頁 > 源碼編譯 > matlab壓縮演算法效率比較

matlab壓縮演算法效率比較

發布時間:2025-04-11 16:50:30

① MATLAB程序優化(2)——循環的替代

本文針對 MATLAB 程序優化中的循環替代策略進行探討,適合對 MATLAB 有一定了解的開發者,旨在提升程序運行效率。首先,MATLAB 是一種針對矢量和矩陣運算設計的矩陣語言,因此,優化程序時可以考慮使用向量化演算法,將 for 和 while 循環轉換為等效的矩陣運算,從而提升性能。然而,對於初學者來說,優先熟悉 MATLAB 的各種函數和基本操作更為重要,實現功能後,再逐步關注性能優化。

MATLAB 是「矩陣實驗室」的縮寫,其優勢在於高效處理矩陣和向量運算,但循環處理是其相對薄弱的環節。減少循環使用可以顯著提升程序執行速度。此外,直接使用 MATLAB 的內置函數而非手動編寫循環,通常能獲得更好的性能。

解決循環問題時,可以考慮使用函數指針,如使用 `func = @sin` 替代 `func = 'sin'`,這可以避免每次循環時 MATLAB 需要搜索函數路徑的問題。同時,選擇適用於實數的函數版本,例如 `reallog()`, `realpow()`, `realsqrt()` 等,能進一步提高程序效率。

針對循環優化,還有多個實用技巧可供參考。例如,在必須使用多重循環時,根據循環次數調整內外層循環的順序,可以顯著提升程序速度。使用 `any()`, `size()`, `find()`, `cumsum()`, `sum()` 等函數代替循環操作,或利用 `bsxfun()`, `arrayfun()`, `cellfun()`, `spfun()`, `structfun()` 等內置函數,簡化代碼結構,提高執行效率。

另外,高級輸入輸出操作,如 `load()` 和 `save()`,通常比低級操作 `fread()` 和 `fwrite()` 更快。針對矩陣元素與列均值的偏差計算,MATLAB R2016b 及更高版本提供了更高效的內置方法,簡化了操作步驟。

對於識別和優化程序中資源佔用較多的部分,可以利用 MATLAB 內置的性能分析工具。使用 `tic` 和 `toc` 方法可以獲取程序運行時間,了解運行時受計算機負載影響的「wall clock」時間。通過不斷壓縮計時范圍,可以定位程序執行最慢的位置。此外,MATLAB 的代碼分析器功能強大,通過 `profile on` 和 `profile viewer` 命令,可以生成詳細的性能分析報告,包括函數名、調用次數、CPU 使用時間等信息,幫助開發者進行代碼優化。

總結,優化 MATLAB 程序時,應根據具體情況選擇合適的策略,如向量化、函數指針、選擇高效函數、優化循環結構等,並利用 MATLAB 的性能分析工具輔助定位和解決性能瓶頸。通過這些方法,可以顯著提升 MATLAB 程序的運行效率。

② 大哥您好,我是上次向您求助怎樣用分形進行圖像壓縮的,我是做這個畢設的。。。

A METHOD OF IMAGE COMPRESSION BASED ON FRACTAL DIMENTION

WUZiwen
(Department of computer science, Fujian Teachers UniversityFuzhou 350007)

WUPenghuiZHENGBaoyu
(Nanjing University of Post and CommunicationNanjing 210003)

AbstractIn this paper, we put forward a new method of image compression based on fractal dimension and combined DCT with fractal encoding. Experiments show that compared to basic automatic fractal coding approach, the new method can get higher compression ratio、higher PSNR and quicker computation speed.
Key wordsFractalFractal dimensionIFS DCT

1引言

在計算機圖形學領域中關於曲線和曲面的研究已相對成熟,人們先後提出了象B樣條曲線/曲面、Bezier曲線/曲面等既有堅實理論基礎又有實用價值的圖形、圖象處理方法.然而,這些幾何模型在處理大自然為數眾多的景象,如海岸線、地貌、 雲、樹木等方面時,卻顯得不盡人意,乃至無能為力,這主要的原因是因為計算幾何學研究的是「規則」的幾何形體,或近似幾何形體.法國數學家Benoit B. Mandelbort 以不規則圖形為研究對象,於一九七五年提出了分形幾何的概念,創立了分形幾何學理論.他提出了用分形維數這一度量概念來描述自然現象的不規則程度.而圖象的最終目的是供人去觀察的,考慮到人的視覺系統的固有特性,比如對某些頻率分量比對其他的敏感些,因此,對不敏感部分可以粗略編碼,重構的解碼圖象也不會有接受不了的質量損失,所以在編碼系統中考慮到人的視覺特性將有利於提高壓縮比.基於分割的圖象編碼就是這樣一種技術,它根據視覺特徵,使用一些分割方法把圖象分成若干類區域,對不同類的區域採用不同的編碼策略.本文採用基於分形維數的方法進行圖象分割,把圖象分成具有明顯分形特徵和分形特徵相對不明顯的兩類區域,對具有明顯分形特徵的區域使用基於迭代函數系統(IFS)的分形圖象壓縮編碼方法,而分形特徵相對不明顯的區域施以DCT壓縮編碼.這種基於視覺特性的分形維數分割的圖象壓縮方法可以獲得相當高的壓縮比.

2分形維數
分形的本質是「自相似」.分形表示無規則、非規整現象,但絕不是絕對的無規則,而是具有自相似性.實際的自然景物一般不具嚴格的自相似性,而通常具有統計意義上的自相似性,Pentland 證明了自然界的大多數表面是空間各向同性的分形,且這些表面所映射成的灰度強度分布場也具有分形特徵.這樣,我們可以通過對表面的圖象數據分析得出自然界存在的物體的分形特性.
分形維數是分數維,是對分形的一種描述和量度.即是對「不規整」的、支離破碎的片斷集合的定量描述.
分數維的產生,拓寬了數學維數的領域.以往用整數維的傳統方法難以測定和描述的某些自然界的景物,可以用分數維來定量描述.當然,自然界千姿百態,並非一切復雜的自然現象都可以用分數維這一個尺度來量度,正如一切自然現象絕不可能都是分形結構一樣,但是,由於分形維數直觀上與物體表面的粗糙程度相吻合,而自然界中的不同紋理粗糙度有很大的差別,因此,分形維數可以作為區別不同圖象區域的分形特性的有效參數,從而可依據分形維數將圖象區域分類,進而對不同類別的圖象區域採用不同的壓縮編碼方案.

3圖象中分數維的提取
維數在數學上可用多種方法來定義.Hausdorff利用集的復蓋來定義測度的思想,定義了以他名字命名的測度和維數,盡管Hausdorff維數對任何集都有定義,然而這種維數在理論上的意義遠大於實際應用,對於一個分形集合,計算其Hausdorff 維數一般是相當困難的.實際上我們最為常用的分數維定義有自相似維、Holomogrov容量維、盒子維等.
雖然一個真實空間中的分形表面映射到圖象的灰值表示的過程從數學上說還沒有完全解決,但是圖象的灰值表面最終總可以用相關於分形表面法線上及入射光之間角度的一個函數表示,所以,美國的A.P.Pentland假定,如果一個物體的表面是分形的,則由它產生的圖象灰度表面也具有分形的性質,反之亦然.因此,我們可以從灰值圖象中提取分數維.
本文採用盒子維的方法從圖象中提取分數維——分形維數.盒子維是迄今在各學科領域中應用得最為廣泛的一種維數.這主要是因為它非常容易由計算機求得.
盒子維方法是把二維平面中的方格推廣到小立方體時得到的.令N(r)表示邊長為r×r×r的包含所要估計的圖象區域的最少立方體個數,在這里可以把灰值圖象想像成一個在三維空間中的分形曲面.所要估計的圖象區域的分數維D將由下式決定:
N(r)*rD=C
其中C為常數,兩邊同取對數有:
logN(r)=-Dlogr+logC
設某個圖象區域的面積為A,r×r為一個單位面積,r可變大小,令

其中Ii(i=1,2,3,4)表示相應點的灰值大小,int表示取整.n(r)即是包含該單位面積上灰度所要的r×r×r的立方體個數.
區域A中的每個單位面積,均做同樣的計算,可以得到n1(r),n2(r),…,求其均值,以E(n(r))表示,則有:

現在改變r的大小,可以求出相應的各個N(r),再用線性回歸等求出logN(r)相對於logr的斜率,也就是該圖象區域的分數維——盒子維.
我們在對圖象提取盒子維時,一般是按圖象分塊進行的,即設定一個窗口,尺寸大小一般選成8×8或16×16等,提取的是窗口區域的分數維,窗口的移動是從左到右,從上而下,每次移動的步長取窗口的邊長.

4基本的自動分形圖象壓縮演算法

由Jacquin於1990年提出的基於迭代函數系統(IFS)的分塊分形圖象壓縮演算法首先實現了基本的自動分形圖象編碼方法.編碼時,首先將原始圖象分割成互不重疊的小方塊Range塊(調節小方塊的大小可改變壓縮比及重建圖象的質量),分形編碼的過程就是在同一圖象內找到能夠最佳匹配每一個Range塊的大一些的方塊Domain塊,Domain塊與Range塊的尺度比稱為尺度壓縮因子,一般說來,Range塊小,則壓縮比小,但重建圖象的信噪比高,Range塊大,則相反.匹配的過程包括幾何變換和灰度變換.
對原始圖象分割的每一Range 塊,求出它的最佳匹配塊,記錄Domain塊的起始位置代碼、灰度變換系數以及幾何對稱變換矩陣的序號,即得到所求的壓縮編碼.
解碼時,以任一圖象為初始圖象,根據所有記錄的每一Range塊所對應的Domain 塊的起始位置代碼、灰度變換系數以及幾何對稱變換矩陣的序號,作相應的映射,迭代收斂的結果即為重建圖象.〔5〕

5基於分形維數的圖象壓縮編碼

Mandelbrot 曾定義:若一個集合的Hausdorff維數嚴格地大於它的拓撲維數,那麼該集合就稱為分形集.Hausdorff維是一種分數維,當然,從今天看這種定義有不令人滿意的地方,它排除一些明顯應當是分形的集合.但是,把Hausdorff維數嚴格大於拓撲維數作為分形集的充分條件,則是沒有爭辨的.當我們在同一圖象的不同區域求得分數維以後,就可以基於此進行分類.有時可能在某些區域得到的分數維會低於相應的拓撲維等.這在物理上是不可能成立的,它說明了分形的模型在這些處是不合適的,而此處一般是多類物質的交界處,即圖象的邊緣分界處.本文對把圖象表面看作三維空間的曲面,對相應的灰值圖象進行分塊提取分形維數——盒子維,當盒子維嚴格大於拓撲維數3時,則認為這些圖象塊具有較典型的分形特徵,採用基於分形的圖象壓縮編碼,即採用基於迭代函數系統(IFS)的分塊圖象壓縮編碼,盡可能提高壓縮比.而對盒子維小於或等於拓撲維數3的圖象塊,則認為這些塊的分形特徵不明顯或不具有分形特徵,即分形模型在這類塊是不合適的,因而採用DCT變換壓縮編碼方案,以保證圖象的壓縮質量.編碼部分具體步驟如下:
* 將原圖象分割成16×16大小的方塊,用上面介紹的方法計算每個方塊的分形維數.
* 經實驗表明,設定閥值t = 3,將每一個方塊的分形維數與t相比較,若嚴格大則認為該塊具備較明顯的分形特徵,適合採用基於分形的圖象壓縮方法,採用前面介紹的基本分形圖象壓縮演算法,並將其標志為1.否則就認為該塊所具備的分形特徵不明顯,在這里我們採用基於DCT(離散餘弦變換)的JPEG壓縮方法,即將圖象方塊經過DCT變換,再量化,最後進行無失真的熵編碼(這里我們採用Huffman編碼),並將其標志為0.
* 經過圖象方塊的分類,得到原圖象的方塊分類標志點陣圖,連同得到的IFS代碼、JPEG壓縮代碼合成最後的壓縮數據流.
解碼部分的具體步驟如下:
任意給定一幅圖象,根據方塊分類標志點陣圖,對標志為1的方塊,用相應的IFS 代碼進行迭代得到最終的收斂塊,將之覆蓋原圖象的相應塊.對標志為0的方塊,用相應的JPEG壓縮代碼經過JPEG解壓縮演算法進行解碼,得到的解碼塊覆蓋原圖象的相應塊.

6實驗結果

表1實驗結果的比較

編碼方法 壓縮比 峰值信噪比
PSNR(db) 運算時間(h)
基本的自動分形
圖象壓縮方法 20.51 27.4 2.5
基於分形維數的
圖象壓縮方法 45.36 29.7 0.8

* 福建省自然科學基金資助項目.吳子文,副教授,主要研究方向為計算幾何和計算機輔助設計等.吳鵬暉,碩士研究生,研究方向為數字信號處理及傳輸技術、多媒體信息處理技術等.鄭寶玉,教授、博士生導師,主要研究方向為數字信號處理及傳輸技術、多媒體信息處理技術等.

作者單位:吳子文福建師范大學計算機科學系福州 350007
吳鵬暉鄭寶玉南京郵電學院信息工程系南京 210003

參考文獻

〔1〕Barnsley.M F.Hurd I.P. Fractal image compression.Wellesley:AK Peters,1992
〔2〕Jacquin A E.Fractal image coding based on a theory of iterated contractive image transformations.In:Proc SPIE's Visual Communications and Image Processing,1990
〔3〕曾文曲等.分形理論與分形的計算機模擬.沈陽.東北大學出版社.1993
〔4〕王東生等.混沌、分形及其應用.合肥.中國科學技術大學出版社.1995
〔5〕吳子文等.一種雙二次插值與IFS相結合的圖象壓縮新方法.小型微型計算機系統.1998,4

③ matlab壓縮圖片大小-matlab如何將圖像縮放到指定像素大小的函數

怎麼用matlab把壓縮成tiff

1.用matlab實現圖像壓縮時,如何將圖片模擬

圖像壓縮是當今信息時代迫切需求的一門圖像處理技術,它極大的減少了圖像的數據量,為圖像的存儲,傳輸提供了方便。

小波變換,是一種廣泛用於圖像壓縮的方法。它能讓圖像按不同的解析度分析。

根據Mallat演算法的思想,圖像能分解成一個輪廓信號(低頻子圖)和水平,垂直,對角線三個方向上的細節信號(高頻子圖)。而輪廓信號又可以進一步分解。

而圖像的主要能量部分是低頻部分,而且人眼視覺系統對低頻部分更為敏感,所以可以對低頻部分採用較低壓縮比;對高頻部分採用較大壓縮比來進行壓縮。本文提出的是一種結合小波變換,DCT變換和矢量量化的壓縮方法。

根據人眼的視覺特性,首先對圖像進行小波分解,然後,對低頻分量進行壓縮比不大的DCT變換;對不同方向不同解析度的高頻分量進行不同碼字大小的矢量量化編碼,然後對反變換和解碼後的系數進行小波重構。矢量量化過程中的碼書設計採用的是LBG演算法。

這樣,根據對圖像質量的不同要求,我們可以改變小波分解的層數,來得到不同壓縮比的圖像。本篇論文只對小波分解一層和兩層後壓縮進行了模擬和分析,表明該方案結合了各種壓縮方法的優點,在滿足圖像質量的同時能得到較大的壓縮比。

目前,在包裝裝潢設計中常用的圖形處理軟體有Pho-toshop,CorelDraw,AutoCAD等。但是這些軟體中很少涉及到對圖像進行壓縮處理,以滿足圖像進行傳輸和儲存的需要。

基於這一點考慮,在此嘗試著用MATLAB編程來處理包裝裝潢圖像的壓縮,實現包裝與計算機的緊密結合。1MATLABMATLAB是MathWorks公司推出的一套高性能的數值計算和可視化軟體,它集數值分析、矩陣運算、信號處理和圖像顯示於一體,它附帶的小波分析工具箱功能強大,可以完成小波分析的絕大部分工作。

MATLAB工具箱的出現避免了程序設計中的重復性勞動,縮短了開發周期,降低了成本,因而受到工科院校師生和研究人員的青睞。在介紹利用MATLAB小波工具壓縮圖像的文獻中,總是將真彩色RGB圖像轉換為灰度級索引圖像進行處理.經過這種處理以後,圖像的存儲數據能得到一定的壓縮,但由壓縮後的數據難以恢復成理想的彩色圖像。

文中用MATLAB中有關函數處理圖像壓縮,而且由壓縮後的數據可以還原出圖像.實驗結果表明,還原出的圖像效果是理想的。文中主要以lena圖像的處理為例,對它進行二進小波多層分解後,將低頻和高頻近似的系數矩陣作相應的處理,來研究用MATLAB中的小波工具箱壓縮圖像的方法。

2圖像壓縮方法在實際應用中,首先需要從圖像文件中讀取圖像數據.MATLAB使用imreed()函數完這一任務.例如,在電腦D盤中有一彩色圖像文件,則可由下述語句讀取:X=imread(′D:picl.′);MATLAB圖像處理工具箱支持4種基本圖像類型:索引圖像、灰度圖像、二進制圖像和RGB圖像.MATLAB直接從圖像文件中讀取的圖像為RGB圖像.它存儲在三維數組中。這個三維數組有3個面,依次對應子紅(Red)、綠(Green)、藍(Blue)3種顏色,而面中的數據則分別是這3種顏色的強度值,面中的元素對應於圖像中的像素點。

索引圖像數據包括圖像矩陣X與顏色圖數組map,其中顏色圖map是按圖像中顏色值進行排序後的數組。對於每個像素,圖像矩陣X包含一個值,這個值就是顏色圖數組map中的索引。

顏色圖map為m*3雙精度矩陣,各行分別指定紅、綠、藍(R、G、B)單色值,map=〔RGB〕,R、C、B為值域為〔0,1〕的實數值,m為索引圖像包含的像素個數.然後可根據情況採用不同的小波函數,進行索引圖像的分解壓縮。這里對上面產生的索引圖像X用dbl小波進行2層分解。

〔c,l〕=wavedec2(X,2,′dbl′)。在這里,一個索引圖像作小波分解後,可得到一系列不同解析度的子圖像,不同解析度的子圖像對應的頻率是不相同的.高解析度(即高頻細節)子圖像上大部分點的數值接近於0,越是高頻這種現象越明顯.對一個圖像來說,表現一個圖像最主要的部分是低頻(即近似)部分。

多層小波分解的所有成分系數均保存在向量c中,低頻近似與高頻細節的系數需從向量C中提取。MATLAB分別使用appcoet2()和detcoef2()函數來完成這一工作。

這種方法是對低頻和高頻部分進行處理,因而提取低頻和高頻近似系數。cAl=appcoef2(c,1,′dbl,′1);cH1=detcoef2(′h′,c,1,1);cDl=detcoef2(′d′,c,l,1);cVl=detcoef2(′v′,c,l,1)。

matlab實現離散餘弦變換壓縮(JPEG壓縮原理)JPEG圖像壓縮演算法:輸入圖像被分成8*8或16*16的小塊,然後對每一小塊進行二維DCT(離散餘弦變換)變換,變換後的系數量化、編碼並傳輸;JPEG文件解碼量化了的DCT系數,對每一塊計算二維逆DCT變換,最後把結果塊拼接成一個完整的圖像。在DCT變換後舍棄那些不嚴重影響圖像重構的接近0的系數。

DCT變換的特點是變換後圖像大部分能量集中在左上角,因為左上放映原圖像低頻部分數據,右下反映原圖像高頻部分數據。而圖像的能量通常集中在低頻部分。

實常式序:functionJpegI=imread('D:MATLAB7 oolboximagesimdemos');%該圖片在安裝matlab的目錄中找,原圖為灰度圖象。

2.使用MATLAB圖像壓縮怎麼做

I=imread('');%輸入圖像

I=im2double(I);%數據類型轉換

T=dctmtx(8);%計算二維離散DCT矩陣

dct=@(x)T*x*T'%設置函數句柄

B=blkproc(I,[88],dct);%圖像塊處理

mask=[11110000%掩膜

11100000

11000000

10000000

00000000

00000000

00000000

00000000];

B2=blkproc(B,[88],@(x)mask.*x);%圖像塊處理

invdct=@(x)T'*x*T;%設置函數句柄

I2=blkproc(B2,[88],invdct);%圖像塊處理

imshow(I),figure,imshow(I2)%顯示原始圖像和壓縮重構圖像

3.用matlab把11張tif圖片做成一個連續動畫

使用如下代碼方式可以達到你想要的效果。

clear;

clc;

fori=2:50

c=strcat('a',num2str(i));%這里可以根據自己圖片名字兒作相應的修改

c=strcat(c,'.bmp');

I=imread(c);

%I=rgb2gray(I)

figure(1);

imshow(I);

end

圖片的保存方式如:,這樣可以實現你的汽車動畫。如果想要使用你的汽車圖片做的話,請把汽車圖片發給我,我幫你看看。

如何用MATLAB進行圖像壓縮

I=imread('');%輸入圖像

I=im2double(I);%數據類型轉換

T=dctmtx(8);%計算二維離散DCT矩陣

dct=@(x)T*x*T'%設置函數句柄

B=blkproc(I,[88],dct);%圖像塊處理

mask=[11110000%掩膜

11100000

11000000

10000000

00000000

00000000

00000000

00000000];

B2=blkproc(B,[88],@(x)mask.*x);%圖像塊處理

invdct=@(x)T'*x*T;%設置函數句柄

I2=blkproc(B2,[88],invdct);%圖像塊處理

imshow(I),figure,imshow(I2)%顯示原始圖像和壓縮重構圖像

matlab如何將圖像縮放到指定像素大小的函數

1、首先打開電腦,然後在電腦中找到並打開matlab軟體主界面,如圖所示。

2、然後在編輯器界面下,找到並單擊運行程序,如圖所示。

3、點擊運行程序後,繪制一元

函數圖像

,如圖所示。

4、然後編輯程序,繪制一元多次函數,效果如圖所示。

5、最後根據自己需要進行編輯程序,這里繪制

分段函數

,效果如圖所示,就完成了。

④ matlab 圖像壓縮問題

通常進行小波壓縮重構後的圖像是與原圖像相同尺寸的,除非你將其它高頻系數都刪去不用。壓縮後的圖像如果是xcomp的話,直接用size就行了吧。
據我所知xcomp應該不是重構後的圖像,只是去噪後的圖像,還得進行重構才能得到真正重構的圖像。

那可能是我孤陋寡聞了,不過要評價是否被壓縮了不是看圖像的大小變了沒有,而是看壓縮後的圖像佔多少空間,即所佔位元組數,與原圖所佔空間相比,這樣可以算出被壓縮了多少了

那這樣的話我看你要修改一下你的參數了,比如thr等應該是閾值吧。如果他里邊的數據都成片的相同,應該說已經閾值分割了呀。那我就不太了解了。

閱讀全文

與matlab壓縮演算法效率比較相關的資料

熱點內容
迅雷把文件分解加密 瀏覽:83
好玩友app怎麼查找游戲 瀏覽:861
互聯網公司java 瀏覽:520
為什麼能上網卻提示找不到伺服器 瀏覽:579
基於單片機的多功能門鈴 瀏覽:939
南昌微型往復活塞空氣壓縮機 瀏覽:143
syuu伺服器什麼時候開服的 瀏覽:395
ted文件夾 瀏覽:700
二戰pdf 瀏覽:232
有什麼類似得物的app 瀏覽:547
stc單片機外接有源時鍾 瀏覽:747
為什麼安卓手機老是會跳出廣告 瀏覽:559
eclipse導入android工程 瀏覽:61
二手房解壓款多少錢 瀏覽:55
c專家編程c陷阱 瀏覽:289
澳客app怎麼授權 瀏覽:767
雲伺服器多個賬號同時登錄 瀏覽:689
車床m10x15螺紋編程 瀏覽:807
呼蘭程序員公司 瀏覽:2
javaurlrewrite 瀏覽:14