数字图像处理频域滤波实现低通与高通滤波(包含matlab代码)

低通滤波器

理想低通滤波

  • 作用:保留频谱图中圆内低频分量,截断频谱图中圆外高频分量
  • 函数表示:

img

  • 假设频谱中心在 (M/2,N/2)处,则任意频谱成分(u,v) 到中心(原点)的距离D(u,v) 定义为:

image-20210406100637135

  • D0为低通滤波器截止频率

  • 图像表示:

  • 从左到右分别是一个理想低通滤波器变换函数的透视图、以图像形式显示的滤波器和滤波器径向横截面。

    image-20210406101159292

  • 说明:在半径为D0的圆内,所有频率没有衰减地通过滤波器,而在此半径的圆之外的所有频率完全被衰减掉

  • matlab代码:

%理想低通
I = imread('aaa.tif');
figure(1);
subplot(221),imshow(I);
title('原图像');
I=im2double(I);
s=fftshift(fft2(I));%傅里叶变换,直流分量搬移到频谱中心
subplot(222), imshow(log(abs(s)+1),[]); 
title('图像傅里叶变换取对数所得频谱');
[a,b]=size(s);
h=zeros(a,b);%滤波器函数
res=zeros(a,b);%保存结果
a0=round(a/2);
b0=round(b/2);
d=40;
for i=1:a for j=1:b distance=sqrt((i-a0)^2+(j-b0)^2);if distance<=dh(i,j)=1;elseh(i,j)=0;endend
end
res=s.*h;
res=real(ifft2(ifftshift(res)));
subplot(223),imshow(res);
title('理想低通滤波所得图像'); 
subplot(224),imshow(h);
title("理想低通滤波器图象");
  • 运行结果:

    image-20210406104625281

高斯低通滤波

  • 二维高斯低通滤波器定义如下:

    image-20210406102139999

  • image-20210406102243245 是关于频谱中心的扩展度的度量

  • image-20210406102243245 =D0,则二维高斯低通滤波器表示为:

image-20210406102417607

  • D0为截止频率距原点的距离,D(u,v)是点(u,v)距原点的距离

  • 图像表示:

    从左到右分别是一个理想低通滤波器变换函数的透视图、以图像形式显示的滤波器和滤波器径向横截面。

    image-20210406102700251

  • matlab代码:

%高斯低通
I=imread('aaa.tif');
subplot(221),imshow(I);
title('原图像');
Y=fft2(im2double(I));%傅里叶变换
Y=fftshift(Y);%频谱搬移,直流分量搬移到频谱中心
subplot(222), imshow(log(abs(Y)+1),[]); 
title('图像傅里叶变换取对数所得频谱');
[M,N]=size(Y);%获得图像的高度和宽度
h=zeros(M,N);%滤波器函数
%图像中心点
M0=M/2;
N0=N/2;
%截至频率距离圆点的距离,delta表示高斯曲线的扩散程度
D0=40;
delta=D0;
for x=1:Mfor y=1:N%计算点(x,y)到中心点的距离d2=(x-M0)^2+(y-N0)^2;%计算高斯滤波器h(x,y)=exp(-d2/(2*delta^2));end
end
%滤波后结果
res=h.*Y;
res=real(ifft2(ifftshift(res)));
subplot(223),imshow(res);
title('高斯低通滤波所得图像'); 
subplot(224),imshow(h);
title("高斯低通滤波器图象");
  • 运行结果:

    image-20210406104721771

巴特沃斯低通滤波

  • n阶巴特沃思低通滤波器定义如下:

    image-20210406101708332

  • D0为截止频率与原点的距离,D(u,v)是点(u,v)与原点的距离

  • 图像表示:

image-20210406101810054

  • 不同于ILPF,BLPF在通带与被滤除的频率之间没有明显的截断

  • 当D(u,v)=D0时,H(u,v)=0.5;当D(u,v)=0时,滤波器取最大值1

  • 巴特沃斯滤波器阶数越高,越趋近于理想低通滤波器

  • matlab代码:

%巴特沃斯低通
figure(3);
I=imread('aaa.tif');
subplot(221),imshow(I);
title('原始图像');
Y=fft2(im2double(I));%傅里叶变换
Y=fftshift(Y);%频谱搬移,直流分量搬移到频谱中心
subplot(222), imshow(log(abs(Y)+1),[]); 
title('图像傅里叶变换取对数所得频谱');
[M,N]=size(Y);%获得图像的高度和宽度
h=zeros(M,N);%滤波器函数
%图像中心点
M0=M/2;
N0=N/2;
d0=40;
%巴特沃斯滤波器的阶数
n_0=2;
for x=1:Mfor y=1:Ndistance=sqrt((x-M0)^2+(y-N0)^2);h(x,y)=1/(1+(distance/d0)^(2*n_0));end
end
%滤波后结果
res=h.*Y;
res=real(ifft2(ifftshift(res)));
subplot(223),imshow(res);
title('巴特沃斯低通滤波所得图像'); 
subplot(224),imshow(h);
title("巴特沃斯低通滤波器图象");
  • 运行结果:

    image-20210406104813832

低通滤波器用途

  • 低通滤波器的应用实例:模糊、平滑等

    • 字符识别:通过模糊图像,桥接断裂字符的裂缝

      image-20210406103059459

    • 印刷和出版业:从一幅尖锐的原始图像产生平滑、柔和的外观,如人脸,减少皮肤细纹的锐化程度和小斑点

      image-20210406103131084

    • 处理卫星和航空图像:尽可能模糊细节,从而保留大的可识别特征(低通滤波通过消除不重要的特征来简化感兴趣特征的分析)

      image-20210406103201361

高通滤波

理想高通滤波

  • 作用:保留频谱图中圆外高频分量,截断频谱图中圆内低频分量

  • 截止频率距原点的距离为 D0 的 IHPF 定义为:

    image-20210406103438592

  • D0为截止频率距原点的距离,D(u,v)是点(u,v)距原点的距离

  • 图像表示:

    image-20210406103515216

  • matlab代码:

%理想高通
I = imread('aaa.tif');
figure(1);
subplot(221),imshow(I);
title('原图像');
I=im2double(I);
s=fftshift(fft2(I));%傅里叶变换,直流分量搬移到频谱中心
subplot(222), imshow(log(abs(s)+1),[]); 
title('图像傅里叶变换取对数所得频谱');
[a,b]=size(s);
h=zeros(a,b);%滤波器函数
res=zeros(a,b);%保存结果
a0=round(a/2);
b0=round(b/2);
d=40;
for i=1:a for j=1:b distance=sqrt((i-a0)^2+(j-b0)^2);if distance<dh(i,j)=0;elseh(i,j)=1;endend
end
res=s.*h;
res=real(ifft2(ifftshift(res)));
subplot(223),imshow(res);
title('理想高通滤波所得图像'); 
subplot(224),imshow(h);
title('理想高通滤波器图像'); 
  • image-20210406104909349

高斯高通滤波

  • 截止频率距原点的距离原点为D0的 GHPF 定义为:

    image-20210406103911395

  • D0为截止频率距原点的距离,D(u,v)是点(u,v)距原点的距离

  • 图象表示:

    image-20210406104009076

  • matlab代码:

%高斯高通
I=imread('aaa.tif');
subplot(221),imshow(I);
title('原图像');
Y=fft2(im2double(I));%傅里叶变换
Y=fftshift(Y);%频谱搬移,直流分量搬移到频谱中心
subplot(222), imshow(log(abs(Y)+1),[]); 
title('图像傅里叶变换取对数所得频谱');
[M,N]=size(Y);%获得图像的高度和宽度
h=zeros(M,N);%滤波器函数
%图像中心点
M0=M/2;
N0=N/2;
%截至频率距离圆点的距离,delta表示高斯曲线的扩散程度
D0=40;
delta=D0;
for x=1:Mfor y=1:N%计算点(x,y)到中心点的距离d2=(x-M0)^2+(y-N0)^2;%计算高斯滤波器h(x,y)=1-exp(-d2/(2*delta^2));end
end
%滤波后结果
res=h.*Y;
res=real(ifft2(ifftshift(res)));
subplot(223),imshow(res);
title('高斯高通滤波所得图像'); 
subplot(224),imshow(h);
title("高斯高通滤波器图象");
  • 运行结果

image-20210408120848226

巴特沃斯高通滤波

  • n阶且截止频率距原点的距离为 D0 的 BHPF 定义为:

    image-20210406103635569

  • D0为截止频率距原点的距离,D(u,v)是点(u,v)距原点的距离

  • 函数图像表示:

image-20210406103719125

  • matlab代码:
%巴特沃斯高通
figure(3);
I=imread('aaa.tif');
subplot(221),imshow(I);
title('原始图像');
Y=fft2(im2double(I));%傅里叶变换
Y=fftshift(Y);%频谱搬移,直流分量搬移到频谱中心
subplot(222), imshow(log(abs(Y)+1),[]); 
title('图像傅里叶变换取对数所得频谱');
[M,N]=size(Y);%获得图像的高度和宽度
h=zeros(M,N);%滤波器函数
%图像中心点
M0=M/2;
N0=N/2;
d0=40;
%巴特沃斯滤波器的阶数
n_0=2;
for x=1:Mfor y=1:Ndistance=sqrt((x-M0)^2+(y-N0)^2);h(x,y)=1/(1+(d0/distance)^(2*n_0));end
end
%滤波后结果
res=h.*Y;
res=real(ifft2(ifftshift(res)));
subplot(223),imshow(res);
title('巴特沃斯高通滤波所得图像'); 
subplot(224),imshow(h);
title("巴特沃斯高通滤波器图象");
  • 运行结果:

image-20210408123152357

高通滤波器与低通滤波器之间的关系

  • 高通滤波器与低通滤波器的关系

    image-20210406104223673

  • HLP(u,v) :低通滤波器函数

  • HHP(u,v):高通滤波器函数

  • image-20210406104317714

  • 结论:被低通滤波器衰减的频率成分能通过高通滤波器,反之亦然

高通滤波器与低通滤波器总结比较

低通滤波器

低通滤波器性能比较
理想低通滤波器理想低通滤波器产生模糊和振铃现象,且模糊和振铃现象反比于截断频率(即半径D0)
巴特沃斯低通滤波器随着滤波器半径(截止频率)的增大,模糊越来越减弱;低阶滤波器没有明显振铃现象(滤波器在低频和高频之间平滑过渡)
高斯低通滤波器随着截止频率的增大,模糊越来越减弱;平滑效果稍差于相同截止频率的二阶BLPF;没有出现振铃现象,优于BLPF

理想低通滤波器

image-20210408122445402

巴特沃斯低通

image-20210408123244153

高斯低通

image-20210408123356675

高通滤波器

高通滤波器性能比较
理想高通滤波器振铃现象明显
巴特沃斯高通滤波器BHPF 的结果比 IHPF 的结果尖锐得多,边缘失真也小得多
高斯高通滤波器GHPF 的结果比 BHBF 和 IHPF 的结果更尖锐,即使是对微小物体 ; 和细线条的滤波也是较清晰的

理想高通滤波器

image-20210408124146424

巴特沃斯高通滤波器

image-20210408124209838

高斯高通滤波器

image-20210408124310756

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery以Post方式发送请求并获取返回的文件供下载!

用ajax请求文件下载当然是可以的&#xff0c;不用有返回值&#xff0c;代码差不多是这样&#xff1a; try{string FileName ".//doc//[大家网]Beginning.ASP.NET.2.0.E-Commerce.in.C#.2005.From.Novice.to.Professional[www.TopSage.com].pdf";FileName ".//…

数字图像处理同态滤波(matlab)

定义 一幅图像可看成由两部分组成&#xff0c;即 fi代表随空间位置不同的亮度&#xff08;Illumination&#xff09;分量&#xff0c;其特点是缓慢变化&#xff0c;集中在图像的低频部分。fr代表景物反射到人眼的反射&#xff08;Reflectance&#xff09;分量&#xff0c;其特…

Java并发编程-ReentrantLock源码分析

一、前言 在分析了 AbstractQueuedSynchronier 源码后&#xff0c;接着分析ReentrantLock源码&#xff0c;其实在 AbstractQueuedSynchronizer 的分析中&#xff0c;已经提到过ReentrantLock&#xff0c;ReentrantLock表示下面具体分析ReentrantLock源码。 二、ReentrantLock数…

绿色vmware 安装后看不到虚拟的网卡

绿色vmware 安装后看不到虚拟的网卡&#xff0c;按下面方法就可以添加。 1. 到Vmware 安装目录&#xff0c;运行 vmnetcfg,运行后出现虚拟网络编辑器 2. 转到主机虚拟适配器&#xff0c;单击添加 3. 转到网络连接就可以看到新增的vmware 虚拟网卡 转载于:https://www.cnblogs.c…

C语言strtok函数的用法

strtok是字符串切割函数 定义 参数一&#xff1a;待切割字符串参数二&#xff1a;分隔符集合首次调用时传递参数为&#xff1a; strtok(str,seps);之后再次调用时传递参数为: strtok(NULL,seps);​ 若可以切割&#xff0c;函数返回值为字符指针&#xff0c;各段切割好的字符串…

51单片机C语言led流水灯及数码管实现秒表

51单片机C语言练习题 单片机型号 普中科技的 led练习题 led小灯闪烁 #include<reg52.h> sbit LED P0^0; void main() {unsigned int i0;while(1){LED 1;for(i0;i<60000;i);LED 0;for(i0;i<60000;i);} }led流水灯 #include<reg52.h>void main() {un…

内聚和耦合(自己的理解)

网上对于内聚和耦合的资料太多&#xff0c;这里结合我的感受和其他人的答案http://blog.csdn.net/zhiquan/article/details/4255161谈谈自己的理解 以下是我对内聚和耦合的理解&#xff08;例子来源于生活&#xff09;。 1.内聚&#xff1a; i.偶然内聚&#xff1a;如果一个模块…

(转)交换机攻击方法描述

利用交换机漏洞的攻击方法如下&#xff1a;一、生成树攻击生成树协议(STP)可以防止冗余的交换环境出现回路。要是网络有回路&#xff0c;就会变得拥塞不堪&#xff0c;从而出现广播风暴&#xff0c;引起MAC表不一致&#xff0c;最终使网络崩溃。使用STP的所有交换机都通过网桥协…

无用的设计模式之装饰者模式

为什么80%的码农都做不了架构师&#xff1f;>>> 前言 装饰者设计模式本来是很常用的模式&#xff0c;常用到随处可见&#xff0c;jdk的bio设计都是遵循这个模式的&#xff0c;偶然的机会发现&#xff0c;貌似jdk中bio的装饰者模式和设计模式中的装饰者设计模式却有…

转-HTC 手机生产日期,产地查询 以及 SN码 IMEI码 查询等问题汇总

问&#xff1a;什么是IMEI码&#xff1f;什么是SN码&#xff1f; 答&#xff1a;IMEI码&#xff0c;国际移动装备辨识码&#xff08;International Mobile Equipment Identity number&#xff0c;IMEI&#xff09;。SN码即Serial Number&#xff0c;产品序列号。 问&#xff1a…

C#生成带Logo二维码

1.下载ThoughtWorks.QRCode引用并添加在工程中 2.在实现类QRCodeEncoderDemo中引入Dll&#xff0c;添加方法 using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Web;using ThoughtWorks.QRC…

51单片机实现三位十进制数加减乘除运算

51单片机实现三位十进制数加减乘除运算 一.题目 51单片机IO接口作业 请将附件给出的Proteus图用51单片机完成一个计算器功能。 1、显示采用动态分时8位共阳数码管输出。 2、采用4*4矩阵键盘输入&#xff0c;键盘上已经标识对应键。 3、完成三位十进制数的加、减、乘、除运…

未能加载文件或程序集“Microsoft.Office.Interop.Owc11, Version=11.0.0.0, ...”或它的某一个依赖项~[解决方案]...

配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误信息: 未能加载文件或程序集“Microsoft.Office.Interop.Owc11, Version11.0.0.0, Cultureneutral, PublicKeyToken71e9bce111e9429c”或它的某一个…

方法javaJVM学习笔记-内存处理

本文是一篇关于方法java的帖子 大多数JVM将内存区域分离为Method Area&#xff08;Non-Heap&#xff09;&#xff0c;Heap&#xff0c;Program Counter Register&#xff0c;Java Method Statck&#xff0c;Native Method Stack和Direct Memomry&#xff08;备注&#xff1a;Di…

数据结构单向不循环链表实现多项式合并

多项式合并 思路 多项式合并 P1 5 2x 8x ^8 3x^16 P2 6x 16x^6 - 8x^8 P P1 P2 5 8x 16x^6 3x^16 使用带头结点的单向不循环链表 每个节点分为三个部分&#xff0c;系数项&#xff0c;指数项&#xff0c;指针域 结构体表示为 struct node_st {int exponent;int …

下 终端_Linux/UNIX 下终端复用利器 tmux

tmux 是一个终端复用器(terminal multiplexer)。简介tmux 是一个终端复用器类自由软件&#xff0c;功能类似 GNU Screen&#xff0c;但使用 BSD 许可发布。用户可以通过 tmux 在一个终端内管理多个分离的会话&#xff0c;窗口及面板&#xff0c;对于同时使用多个命令行&#xf…

消失的字符串——c语言函数中的数据存储方式以及字符串实现

2019独角兽企业重金招聘Python工程师标准>>> 事情是这样的&#xff0c;最近在学习翁老师的Mooc之C语言程序设计&#xff0c;插一句&#xff0c;真的是好老师&#xff0c;讲的真的太好了&#xff0c;在c里的字符串这里&#xff0c;翁老师演示了一个小程序&#xff0c…

JQuery 文本框高亮显示插件

以前使用Mootools Js框架&#xff0c;文本框有个$(id).highlight()高亮方法&#xff0c;使其高亮显示&#xff0c;效果如下&#xff1a; JQuery 中没有这个方法&#xff0c;自己今天写了一个Plugin&#xff0c;把代码贴出来分享一下&#xff1b; 代码如下&#xff1a; jquery-h…

链方法[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链

最近研究链方法&#xff0c;稍微总结一下&#xff0c;以后继续补充&#xff1a; 弁言&#xff1a; 上一专题分析了下编译器是如何来翻译委托的&#xff0c;从中间语言的角度去看委托&#xff0c;希望可以帮助大家进一步的理解委托&#xff0c;然而之前的分析都是委托只是封装一…

51单片机lcd1602的简单实用

基础知识准备 lcd1602简介 图片来自b站斌哥单片机 需要关注的有以下几点&#xff1a; RS : 高数据低命令&#xff1b;RS 1时&#xff0c;lcd1602读写数据&#xff0c;RS0时&#xff0c;lcd1602读写命令R/W&#xff1a;高读低写&#xff1b;RW1时&#xff0c;单片机读取lcd160…