matalb 图像处理 低通滤波和高通滤波 (理想,巴特沃斯,高斯 含代码)

这篇具有很好参考价值的文章主要介绍了matalb 图像处理 低通滤波和高通滤波 (理想,巴特沃斯,高斯 含代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主要类型和公式

1.低通滤波
主要分为理想低通滤波,巴特沃斯低通滤波,高斯低通滤波
理想低通滤波:
matlab高通滤波函数,图像处理,人工智能,算法
其中:对于大小为M*N的图像,频率点(u,v)与频域中心的距离为D(u,v),其表达式为:
matlab高通滤波函数,图像处理,人工智能,算法
下列的D(u,v)都相同

巴特沃斯低通滤波:
matlab高通滤波函数,图像处理,人工智能,算法

高斯低通滤波:
matlab高通滤波函数,图像处理,人工智能,算法

2.高通滤波
理想高通滤波:
matlab高通滤波函数,图像处理,人工智能,算法

巴特沃斯高通滤波:
matlab高通滤波函数,图像处理,人工智能,算法

高斯高通滤波:
matlab高通滤波函数,图像处理,人工智能,算法

主要效果图

带傅里叶谱:
matlab高通滤波函数,图像处理,人工智能,算法
不带傅里叶谱:
matlab高通滤波函数,图像处理,人工智能,算法

各类型的函数代码

理想低通滤波:

function out = imidealflpf(I, freq)
% imidealflpf函数	构造理想的频域低通滤波器
% 参数:I			输入的灰度图像
% 参数:freq			低通滤波器的截止频率
% 返回值:out        指定的理想低通滤波器

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        if (sqrt(((i-M/2)^2+(j-N/2)^2))>freq)
            out(i,j)=0;
        end
    end
end

理想高通滤波:

function out = imidealflpf1(I, freq)
% imidealflpf函数	构造理想的频域低通滤波器
% 参数:I			输入的灰度图像
% 参数:freq			低通滤波器的截止频率
% 返回值:out        指定的理想低通滤波器

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        if (sqrt(((i-M/2)^2+(j-N/2)^2))<freq)
            out(i,j)=0;
        end
    end
end

巴特沃尔低通滤波:

function out = imgaussflpf4(I,sigma,x)
% imgaussflpf函数   	构造频域高斯低通滤波器
% 参数:I				输入的灰度图像
% 参数:sigma			限制图像D0参数
% 参数:x				巴特沃尔的阶数

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        distance=sqrt((i-M/2)^2+(j-N/2)^2);
        out(i,j) = 1/(1+(distance/sigma).^(2.*x));
    end
end

巴特沃尔高通滤波:

function out = imgaussflpf5(I, sigma,n)
% imgaussflpf函数   	构造频域高斯低通滤波器
% 参数:I				输入的灰度图像
% 参数:sigma			高斯函数的Sigma参数

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        out(i,j) = 1/(1+((sigma/((i-M/2).^2+(j-N/2).^2))).^(2.*n));
    end
end

高斯低通滤波:

function out = imgaussflpf2(I, sigma)
% imgaussflpf函数   	构造频域高斯低通滤波器
% 参数:I				输入的灰度图像
% 参数:sigma			高斯函数的Sigma参数

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        out(i,j) = exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
    end
end

高斯高通滤波:

function out = imgaussflpf3(I, sigma)
% imgaussflpf函数   	构造频域高斯低通滤波器
% 参数:I				输入的灰度图像
% 参数:sigma			高斯函数的Sigma参数

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        out(i,j) = 1-exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
    end
end

对图像进行对应并输出的函数:文章来源地址https://www.toymoban.com/news/detail-714231.html

function out = imfreqfilt(I, ff)
% imfreqfilt函数		对灰度图像进行频域滤波
% 参数:I				输入的空域图像
% 参数:ff				应用的与原图像等大的频域滤波
% 返回值:out           反变换回空域后的图像

if (ndims(I)==3) && (size(I,3)==3)   % RGB图像
    I = rgb2gray(I);
    I = double(I);
end

if (size(I) ~= size(ff))
    msg1 = sprintf('%s: 滤镜与原图像不等大,检查输入', mfilename);
    msg2 = sprintf('%s: 滤波操作已经取消', mfilename);
    eid = sprintf('Images:%s:ImageSizeNotEqual',mfilename);
    error(eid,'%s %s',msg1,msg2);
end

% 快速傅立叶变换
f = fft2(double(I));

% 移动原点
s = fftshift(f);

% 应用滤镜及反变换
out = s .* ff; %对应元素相乘实现频域滤波
out = ifftshift(out);
out = ifft2(out);

% 求模值
out = abs(out);

% 归一化以便显示
out = out/max(out(:));

最终比较代码

%低通|高通频率域滤波
f=imread('8.jpeg');%原图
f=im2double(f);
f1=rgb2gray(f);
%低通理想滤波
dt_L=imidealflpf(f1,40);%低通 理想40滤波器
dtL=imfreqfilt(f1,dt_L);%带入滤波器输出
dtL1=fft2(dtL);%傅里叶变换
sdtL=fftshift(log(1+abs(dtL1)));% 绘制傅里叶变换对数谱并将零点移到中心
%高通理想滤波
gt_L=imidealflpf1(f1,60);%高通 理想60滤波器
gtL=imfreqfilt(f1,gt_L);%带入滤波器输出
gtL1=fft2(gtL);%傅里叶变换
sgtL=fftshift(log(1+abs(gtL1)));% 绘制傅里叶变换对数谱并将零点移到中心
%低通巴特沃斯
dt_B=imgaussflpf4(f1,40,2);%巴特沃斯
dtB=imfreqfilt(f1,dt_B);%带入滤波器输出
dtB1=fft2(dtB);%傅里叶变换
sdtB=fftshift(log(1+abs(dtB1)));% 绘制傅里叶变换对数谱并将零点移到中心
%高通巴特沃斯
gt_B=imgaussflpf5(f1,60,2);%巴特沃斯
gtB=imfreqfilt(f1,gt_B);%带入滤波器输出
gtB1=fft2(gtB);%傅里叶变换
sgtB=fftshift(log(1+abs(gtB1)));% 绘制傅里叶变换对数谱并将零点移到中心
%低通高斯滤波
dt_G=imgaussflpf2(f1,40);
dtG=imfreqfilt(f1,dt_G);%带入滤波器输出
dtG1=fft2(dtG);%傅里叶变换
sdtG=fftshift(log(1+abs(dtG1)));% 绘制傅里叶变换对数谱并将零点移到中心
%高通高斯滤波
gt_G=imgaussflpf3(f1,60);
gtG=imfreqfilt(f1,gt_G);%带入滤波器输出
gtG1=fft2(gtG);%傅里叶变换
sgtG=fftshift(log(1+abs(gtG1)));% 绘制傅里叶变换对数谱并将零点移到中心
%输出不带傅里叶谱
% subplot(3,3,1);imshow(f1);title('原图');
% subplot(3,3,4);imshow(dtL);title('低通理想滤波处理后 D0=40');
% subplot(3,3,5);imshow(dtB);title('低通巴特沃斯滤波处理后 D0=40 二阶');
% subplot(3,3,6);imshow(dtG);title('低通高斯滤波处理后 D0=40 ');
% subplot(3,3,7);imshow(gtL);title('高通理想滤波处理后 D0=60');
% subplot(3,3,8);imshow(gtB);title('高通巴特沃斯滤波处理后 D0=60 二阶');
% subplot(3,3,9);imshow(gtG);title('高通高斯滤波处理后 D0=60');
%输出带傅里叶谱
subplot(5,3,1);imshow(f1);title('原图');
subplot(5,3,4);imshow(dtL);title('低通理想滤波处理后 D0=40');
subplot(5,3,5);imshow(dtB);title('低通巴特沃斯滤波处理后 D0=40 二阶');
subplot(5,3,6);imshow(dtG);title('低通高斯滤波处理后 D0=40 ');
subplot(5,3,7);imshow(sdtL,[]);title('低通理想滤波处理后 D0=40 傅里叶谱');
subplot(5,3,8);imshow(sdtB,[]);title('低通巴特沃斯滤波处理后 D0=40 二阶 傅里叶谱');
subplot(5,3,9);imshow(sdtG,[]);title('低通高斯滤波处理后 D0=40 傅里叶谱');
subplot(5,3,10);imshow(gtL);title('高通理想滤波处理后 D0=60');
subplot(5,3,11);imshow(gtB);title('高通巴特沃斯滤波处理后 D0=60 二阶');
subplot(5,3,12);imshow(gtG);title('高通高斯滤波处理后 D0=60');
subplot(5,3,13);imshow(sgtL,[]);title('高通理想滤波处理后 D0=60 傅里叶谱');
subplot(5,3,14);imshow(sgtB,[]);title('高通巴特沃斯滤波处理后 D0=60 二阶 傅里叶谱');
subplot(5,3,15);imshow(sgtG,[]);title('高通高斯滤波处理后 D0=60 傅里叶谱');

到了这里,关于matalb 图像处理 低通滤波和高通滤波 (理想,巴特沃斯,高斯 含代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包