小波变换压缩编码实现程序
『壹』 一维,二维小波变换过程是怎样的分别求其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程序我好些
可以的.