小波變換壓縮編碼實現程序
『壹』 一維,二維小波變換過程是怎樣的分別求其C,C++編寫的程序
http://sourceforge.net/projects/wavelet/
或者
http://search.codesoso.com/Search?q=%e5%b0%8f%e6%b3%a2%e5%8f%98%e6%8d%a2+c%e8%af%ad%e8%a8%80&start=81
『貳』 MATLAB實現小波變換壓縮編碼 程序哪裡放要壓縮的圖片名
把第一行 load wbarb
改成 clear
a=imread('圖片的位置')
subplot(1,2,1);
imshow(a);
title('原始圖象');
『叄』 誰會用matlab實現小波變換對圖片的壓縮處理要代碼
算了給你一些代碼吧:
unction Example38(trueImg,Cnum)
trueImg=double(trueImg)/255;
figure;
imshow(trueImg);
title('原始圖象');
dctm=dctmtx(8);
imageDCT=blkproc(trueImg,[8 8],'P1*x*P2',dctm,dctm.');
DCTvar=im2col(imageDCT,[8 8],'distinct').';
n=size(DCTvar,1);
DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).^2)/n;
[m,order]=sort(DCTvar);
Cnum=64-Cnum;
mask=ones(8,8);
mask(order(1:Cnum))=zeros(1,Cnum);
im8x8=zeros(9,9);
im8x8(1:8,1:8)=mask;
im128x128=kron(im8x8(1:8,1:8),ones(16));
figure;
imshow(im128x128);
dctm=dctmtx(8);
newImage=blkproc(imageDCT,[8 8],'P1*(x.*P2)*P3',dctm.',mask(1:8,1:8),dctm);
figure;
imshow(newImage);
title('重構圖像');
figure;
imshow(trueImg-newImage+0.45);
title('誤差圖象');
error=(trueImg.^2-newImage.^2);
MSE=sum(error(:))/prod(size(trueImg));
『肆』 【求助】求matlab小波變換圖像處理實現程序~
%這個是2D-DWT的函數,是haar小波
%c是圖像像素矩陣steps是變換的階數
functiondwtc=dwt_haar(c,steps)
%DWTC=CWT_HARR(C)-
%
%MDPlumbleyNov2003
N=length(c)-1;%Maxindexforfilter:0..N
%Ifnostepstodo,orthesequenceisasinglesample,theDWTisitself
if(0==N|steps==0)
dwtc=c;
return
end
%CheckthatN+1isdivisibleby2
if(mod(N+1,2)~=0)
disp(['Notdivisible2:'num2str(N+1)]);
return
end
%SettheHaaranalysisfilter
h0=[1/21/2];%HaarLow-passfilter
h1=[-1/21/2];%HaarHigh-passfilter
%Filterthesignal
lowpass_c=conv(h0,c);
hipass_c=conv(h1,c);
%Subsamplebyfactorof2andscale
c1=sqrt(2)*lowpass_c(2:2:end);
d1=sqrt(2)*hipass_c(2:2:end);
%Recursivelycalldwt_haaronthelow-passpart,with1fewersteps
dwtc1=dwt_haar(c1,steps-1);
%ConstructtheDWTfromc1andd1
dwtc=[dwtc1d1];
%Done
return
--------------------------分割線--------------------------
調用這個函數的例子下面的東西放在另一個文檔里
讀入一個圖像『lena』應該是個最基礎的圖像了~
之後分別作0階和1階2D-DWT的變換
改變階數可以做更高階的
clearall
im=imreadreal('lena.bmp');%readimagedata
%Plot
figure
dwt2_step0=dwt2_haar(im,0);%2DDWTstep=0
imagesc(dwt2_step0);
colormapgray;
axisimage;
figure
dwt2_step1=dwt2_haar(im,1);%2DDWTstep=1
imagesc(dwt2_step1);
colormapgray;
axisimage;
---------------------分割線---------------------
結果如下1階的結果
這是我的一個實驗希望有所幫助
『伍』 怎樣用MATLAB程序實現小波變換
[YC,YS]=wavedec2(Y,2,'db1');
Y為要分解的圖像矩陣,2為分解的層數,『db1'為採用的小波基
返回兩個矩陣YC和YS。Yh2=detcoef2('h',YC,YS,2);這是提取出圖像2層分解後的水平分量,h改v是垂直分量,h該d是對角分量。細節分量用另外一個方法提取。
『陸』 急急急跪求高手幫助編寫小波變換應用於圖像壓縮的Matlab程序 只有20分都給了
h.color=[1 1 1]
load wmandril
figure(h)
subplot(1,2,1)
nbc=size(map,1)
colormap(gray(nbc))
image(wcodemat(X,nbc))
title('original image')
axis square
[C,S]=wavedec2(X,2,'db4')
thr=20
[Xcompress1,cmd,lxd,PERF0,PERFL2]=...
wdencmp('gbl',C,S,'db4',2,thr,'h',1)
subplot(1,2,2)
image(wcodemat(Xcompress1,nbc))
title(['compressed image threshold=',num2str(thr)])
axis square
disp('小波系數中設置0的系數個數百分比')
PERFL2
disp('壓縮後圖像剩餘百分比')
PERF0
第二種
h.color=[1 1 1]
load wmandril
figure(h)
subplot(1,2,1)
nbc=size(map,1)
colormap(gray(nbc))
image(wcodemat(X,nbc))
title('original image')
axis square
[C,S]=wavedec2(X,2,'db4')
thr=20
[Xcompress1,cmd,lxd,PERF0,PERFL2]=...
wdencmp('gbl',C,S,'db4',2,thr,'h',1)
subplot(1,2,2)
image(wcodemat(Xcompress1,nbc))
title(['compressed image threshold=',num2str(thr)])
axis square
disp('小波系數中設置0的系數個數百分比')
PERFL2
disp('壓縮後圖像剩餘百分比')
PERF0
『柒』 基於小波變換的圖像壓縮方法(求程序啊)
看圖片~~
『捌』 基於小波變換的信號壓縮MATLAB程序,求解,求支招
基於小波變換的信號壓縮MATLAB程序我好些
可以的.