文档库 最新最全的文档下载
当前位置:文档库 › 程序2

程序2

clear;clc;
I=imread('hat.jpg');
I=double(I);a=I(:,:,1);
%卷积性
c=a(1:128,1:128);
d=a(21:148,21:148); %从原图中生成两个矩阵
m=conv2(c,d); %两矩阵时域卷积
c(383,383)=0;
d(383,383)=0; %对两个矩阵扩展补零
m1=ifft2((fft2(c).*fft2(d))); %两矩阵频域相乘后的傅立叶反变换
m1=real(m1); %取实数部分
m1=m1(1:255,1:255); 取反变换后的部分图像(与时域部分m大小匹配)
figure(1)
subplot(121)
imshow(log(m),[]); title('时域卷积')
subplot(122)
imshow(log(m1),[]); title('频域相乘后反变换')
%旋转性
aa=imrotate(a,45,'bilinear','loose'); %matlab内部函数
b=zeros(313);
b(47:266,47:266)=a; %原图各边补零
afft=fftshift(abs(fft2(aa)));
bfft=fftshift(abs(fft2(b))); %原图旋转图依次求傅立叶变换
figure(2)
subplot(222)
imshow(aa,[]);title('原图);
subplot(221)
imshow(b,[]);title('旋转45度')
subplot(224)
imshow(log(afft),[]);title('原频域')
subplot(223)
imshow(log(bfft),[]);title('旋转45度频域')
%离散性
ax=fft(a); %对矩阵各列求傅立叶变换
ay=fft(ax'); %对矩阵各行求傅立叶变换
ay=ay'; %矩阵转置
ay=fftshift(abs(ay));
af=fftshift(abs(fft2(a)));
figure(3)
subplot(121)
imshow(log(af),[]);title('原频谱');
subplot(122)
imshow(log(ay),[]);title('离散性频谱');
%平移性
k1=fft2(a);
for m=1:220
for n=1:220
a(m,n)=a(m,n)*(-1)^(m+n); %各个像素点乘以-1的m+n次幂
end
end
k2=fft2(a);
figure(4)
subplot(121)
imshow(log(abs(k1)),[]);title('原图傅立叶变换');
subplot(122)
imshow(log(abs(k2)),[]);title('原图乘以指数项后的傅立叶变换');

相关文档