彩色图片进行傅里叶变换小波变换、重构

  • 格式:pdf
  • 大小:4.90 MB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

找一张彩色图片,进行傅里叶、小波分解和重构。

操作过程:

1.傅里叶变换

[X,map]=imread('c:\10.jpg','jpg'); %读入原图

>> imshow(X); %显示原图

>> title('original pic'); %命名原图

>> r=X(:,:,1); %提取red原色

>> g=X(:,:,2); %提取green原色

>> b=X(:,:,3); %提取blue原色

>> fr=fft2(r); %对red原色进行傅里叶变换

>> fg=fft2(g); %对green原色进行傅里叶变换

>> fb=fft2(b); %对blue原色进行傅里叶变换

>> sfr=fftshift(fr); %将red原色的直流分量移到频谱中心>> sfg=fftshift(fg); %将green原色的直流分量移到频谱中心>> sfb=fftshift(fb); %将blue原色的直流分量移到频谱中心

>> RRr=real(sfr); %取red原色的傅里叶变换实部>> RRg=real(sfg); %取green原色的傅里叶变换实部>> RRb=real(sfb); %取blue原色的傅里叶变换实部

>> IIr=imag(sfr); %取red原色的傅里叶变换虚部>> IIg=imag(sfg); %取green原色的傅里叶变换虚部>> IIb=imag(sfb); %取blue原色的傅里叶变换虚部

>> Ar=sqrt(RRr.^2+IIr.^2); %计算red原色的频谱幅值

>> Ag=sqrt(RRg.^2+IIg.^2); %计算green原色的频谱幅值

>> Ab=sqrt(RRb.^2+IIb.^2); %计算blue原色的频谱幅值

>> Ar=(Ar-min(min(Ar)))/(max(max(Ar))-min(min(Ar)))*225; %归一化>> Ag=(Ag-min(min(Ag)))/(max(max(Ag))-min(min(Ag)))*225; %归一化>> Ab=(Ab-min(min(Ab)))/(max(max(Ab))-min(min(Ab)))*225; %归一化

>> figure; %设定窗口

>> imshow(Ar); %显示red原色图像频谱

>> axis square; %显示为正方形

>> figure; %设定窗口

>> imshow(Ag); %显示green原色图像频谱

>> axis square; %显示为正方形

>> figure; %设定窗口

>> imshow(Ab); %显示blue原色图像频谱

>> axis square; %显示为正方形

>> or=ifft2(fr); %对red原色进行傅里叶逆变换>> og=ifft2(fg); %对green原色进行傅里叶逆变换>> ob=ifft2(fb); %对blue原色进行傅里叶逆变换

>> out(:,:,1)=real(or); >> out(:,:,2)=real(og); >> out(:,:,3)=real(ob); >> out = uint8(out);

>> imshow(out); %显示原图

2.小波函数

换成灰色图像再进行小波变换

[X,map]=imread('c:\10.jpg','jpg'); %读入原图

subplot(221);image(X);colormap(map); %显示原图

title('original pic'); %命名原图

global X; %设全局变量X

L=X; %将X赋给L

L=double(L); %强制转换L为double格式

Xrgb=0.2990*L(:,:,1)+0.5870*L(:,:,2)+0.1140*L(:,:,3); Nbcolors=255;

W=wcodemat(Xrgb,Nbcolors);

map1=gray(Nbcolors);

subplot(222);image(W);colormap(map1); %显示灰度转换图

[c,s]=wavedec2(W,2,'sym4'); %对灰度图进行2层小波分解sizec=size(c);

for i=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'); %对灰度图像处理后的系数进行重构

subplot(223);image(xx); %显示重构后灰度图像

结果显示如下: