彩色图片matlab傅里叶小波变换.docx
《彩色图片matlab傅里叶小波变换.docx》由会员分享,可在线阅读,更多相关《彩色图片matlab傅里叶小波变换.docx(12页珍藏版)》请在冰豆网上搜索。
彩色图片matlab傅里叶小波变换
彩色图片傅里叶变换、小波变换
傅里叶变换
x=imread('1.jpg','jpg');%读取1.jpg彩色图片,并赋值给x
r(:
:
)=x(:
:
1);%将三维矩阵中代表R的二维矩阵赋值给r
g(:
:
)=x(:
:
2);%将三维矩阵中代表G的二维矩阵赋值给g
b(:
:
)=x(:
:
3);%将三维矩阵中代表B的二维矩阵赋值给b
对r、g、b二维矩阵进行傅里叶变换
fftr=fft2(r);%二维离散傅立叶变换
fftg=fft2(g);%二维离散傅立叶变换
fftb=fft2(b);%二维离散傅立叶变换
sfftr=fftshift(fftr);%直流分量移到频谱中心
sfftg=fftshift(fftg);%直流分量移到频谱中心
sfftb=fftshift(fftb);%直流分量移到频谱中心
%计算频谱幅值
A=sqrt(real(sfftr).^2+imag(sfftr).^2);
B=sqrt(real(sfftg).^2+imag(sfftg).^2);
C=sqrt(real(sfftb).^2+imag(sfftb).^2);
%归一化,其中乘以225或255是为了在图灰度范围内显示频谱
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;
B=(B-min(min(B)))/(max(max(B))-min(min(B)))*225;
C=(C-min(min(C)))/(max(max(C))-min(min(C)))*225;
figure
(1);%设定窗口1
imshow(A);%显示图像的频谱
title('Rfftgraphic')%添加标题
figure
(2);%设定窗口2
imshow(B);%显示图像的频谱
title('Bfftgraphic');%添加标题
figure(3);%设定窗口3
imshow(C);%显示图像的频谱
title('Gfftgraphic');%添加标题
jpg转为灰度图像的傅里叶变换
dd=rgb2gray(x);%RGB转为灰度图像
figure(4);
sfftdd=fftshift(fft2(dd));
DD=sqrt(real(sfftdd).^2+imag(sfftdd).^2);
DD=(DD-min(min(DD)))/(max(max(DD))-min(min(DD)))*225;
mshow(DD);
title('jpg2grayfftgraphic');
小波变换,注释略
x=imread('1.jpg','jpg');%读取1.jpg彩色图片,并赋值给x
r(:
:
)=x(:
:
1);%将三维矩阵中代表R的二维矩阵赋值给r
g(:
:
)=x(:
:
2);%将三维矩阵中代表G的二维矩阵赋值给g
b(:
:
)=x(:
:
3);%将三维矩阵中代表B的二维矩阵赋值给b
%对R进行小波变换重构
[c,s]=wavedec2(r,2,'sym4');
sizec=size(c);
fori=1:
sizec
(2)
if(c(i)>350)
c(i)=2*c(i);
else
c(i)=0.5*c(i);
end
end
xx=waverec2(c,s,'sym4');
%对G进行小波变换重构
[c,s]=wavedec2(g,2,'sym4');
sizec=size(c);
fori=1:
sizec
(2)
if(c(i)>350)
c(i)=2*c(i);
else
c(i)=0.5*c(i);
end
end
yy=waverec2(c,s,'sym4');
%对B进行小波变换重构
[c,s]=wavedec2(b,2,'sym4');
sizec=size(c);
fori=1:
sizec
(2)
if(c(i)>350)
c(i)=2*c(i);
else
c(i)=0.5*c(i);
end
end
zz=waverec2(c,s,'sym4');
figure
(1);image(xx);title('enhancedR');%设置窗口,绘制小波处理后的R图像
figure
(2);image(r);title('origionalR');%设置窗口,绘制小波处理前的R图像
figure
(1);image(yy);title('enhancedG');%设置窗口,绘制小波处理后的G图像
figure
(2);image(g);title('origionalG');%设置窗口,绘制小波处理前的G图像
figure
(1);image(zz);title('enhancedB');%设置窗口,绘制小波处理后的B图像
figure
(2);image(b);title('origionalB');%设置窗口,绘制小波处理前的B图像
%将小波处理后的二维矩阵重新赋值给三维矩阵
hh(1:
size(xx,1),1:
size(xx,2),1)=xx;
hh(1:
size(yy,1),1:
size(yy,2),2)=yy;
hh(1:
size(zz,1),1:
size(zz,2),3)=zz;
%将hhdouble型三维矩阵转变为uint8型,以便绘制彩色图像
HH=uint8(hh);
figure
(1);image(HH);title('enhancedjpggraphic');axissquare;
figure
(2);image(x);title('originaljpggraphic');axissquare;