图像二维采样(3)

代码来自钱晓凡《信息光学数字实验室》

这个太厉害了,我建议直接看书。书上有详细解析。

fxy=cos(peaks(256).*2+pi)+1;            %构建连续带限函数
[rr,cc]=size(fxy);                      %计算连续函数的大小
figure,imshow(fxy,[])                   %显示连续函数
F=fftshift(fft2(fxy));                  %计算连续函数的频谱
figure,plot(abs(F(round(rr/2)+1,:))),   %观察带宽
figure,plot(abs(F(:,round(cc/2)+1))),   %观察带宽
figure,surfl(abs(F)),shading interp,colormap(gray);   %频谱3D图
combxy=zeros(rr,cc);                    %开始生成comb函数
X=4;Y=4;                                %抽样间隔
for n=1:Y:rr
   for m=1:X:cc
   combxy(n,m)=1;
   end
end
figure,imshow(combxy,[]);               %显示comb函数
C=fftshift(fft2(combxy));               %计算comb函数的频谱
figure,surfl(abs(C)),shading interp,colormap(gray); % 频谱3D图
gxy=zeros(rr,cc);                       %开始生成抽样函数
gxy=fxy.*combxy;                        %生成抽样函数
figure,imshow(gxy,[]);                  %显示抽样函数
Gs=fftshift(fft2(gxy));                 %计算抽样函数的频率
figure,surfl(abs(Gs)),shading interp,colormap(gray); %频谱3D图
figure,plot(abs(Gs(:,cc/2+1))),         %观察频谱是否有重叠
By=round(rr/2/Y);Bx=round(cc/2/X);      %二维矩函数滤波器的宽度
H=zeros(rr,cc);                         %开始生成二维矩函数滤波器
H(round(rr/2)+1-By:round(rr/2)+1+By-1,round(cc/2)+1-Bx:round(cc/2)+1+Bx-1)=1;   
figure,imshow(H,[])                     %显示二维矩函数滤波器
Gsyp=H.*Gs;                             %滤波计算原函数频谱
figure,surfl(abs(Gsyp)),shading interp,colormap(gray);
gxyyp=X*Y.*abs(ifft2(Gsyp));            %逆傅里叶变换计算原函数
figure,imshow(gxyyp,[])                 %显示还原的原函数
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值