Matlab中imfilter()函数的用法

功能:对任意类型数组或多维图像进行滤波。

用法:B = imfilter(A,H)

B = imfilter(A,H,option1,option2,...)

或写作g = imfilter(f, w, filtering_mode, boundary_options, size_options)

其中,f为输入图像,w为滤波掩模,g为滤波后图像。filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确定。具体参数选项见下表:

选项

描述

filtering_mode

‘corr’

通过使用相关来完成,该值为默认。

‘conv’

通过使用卷积来完成

boundary_options

‘X’

输入图像的边界通过用值X(无引号)来填充扩展

其默认值为0

‘replicate’

图像大小通过复制外边界的值来扩展

‘symmetric’

图像大小通过镜像反射其边界来扩展

‘circular’

图像大小通过将图像看成是一个二维周期函数的一个周期来扩展

size_options

‘full’

输出图像的大小与被扩展图像的大小相同

‘same’

输出图像的大小与输入图像的大小相同。这可通过将滤波掩模的中心点的偏移限制到原图像中包含的点来实现,该值为默认值。

举例:

例1:

originalRGB = imread('peppers.png');

imshow(originalRGB)

h = fspecial('motion', 50, 45);%创建一个滤波器

filteredRGB = imfilter(originalRGB, h);

figure, imshow(filteredRGB)

例2:

%生成一个8x8的均值滤波器

originalRGB = imread('peppers.png');

imshow(originalRGB)

w = fspecial('average',8);

filteredRGB = imfilter(originalRGB, w);

figure, imshow(filteredRGB)

例3:

单色图像的平滑:

单色图像(如灰度图像)平滑的过程:定义一个系数为1的模板,用这个空间模板的系数去乘以所有像素的值,并将结果除以模板中元素的总数。

彩色图像的平滑:

1、抽取图像:I(R、G、B)三幅分量。

>>fR = I(:,:,1);

>>fG = I(:,:,2);

>>fB = I(:,:,3);

2、 (1): 分别对(R、G、B)这三幅图像分量进行滤波。例如:平均滤波器 w = fspecial('average', 25); 来进行平滑处理。

>>fR_filtered = imfilter(fR, w, 'replicate');

>>fG_filtered = imfilter(fG, w, 'replicate');

>>fB_filtered = imfilter(fB, w, 'replicate');

(2):也可以对(R、G、B)这三个图像分量一起处理,不用进行第三步。

>>fc_filtered = imfilter(I, w, 'replicate');

3、重建滤波后的 RGB 的图像。

>>fc_filtered = cat(3, fR_filtered, fG_filtered, fB_filtered)

例子程序:

close all

clear all

clc

I = imread('olivian.jpg');      %读取一张噪声图像

%提取图像的三个(R、G、B)分量图像

R = I(:,:,1);

G = I(:,:,2);

B = I(:,:,3);

%生成一个8x8的均值滤波器

w = fspecial('average',8);

fR = imfilter(R,w,'replicate');

fG = imfilter(G,w,'replicate');

fB = imfilter(B,w,'replicate');

fc_filtered = cat(3,fR,fG,fB);   %将这四个句子可以改为:fc_filtered = imfilter(I, w, 'replicate');

figure

subplot(121);

imshow(I);title('彩色噪声图像');

subplot(122);

imshow(fc_filtered,'Border','tight');title('彩色图像平滑处理');

一维相关与卷积

图1(a)显示了一维函数f和模板w。假设f的原点定为最左侧的点。为执行两个函数的相关,可移动w使其最右侧的点与f的原点重合,如图1(b)所示。需要注意的是,这两个函数之间有一些点未重叠。为处理该问题,最普遍的方法是在f中填充足够多的0(对应表1-1中边界选项boundary_options的默认值P),以保证在w通过f的整个过程中,始终存在对应的点。如图1(c)所示。

现在准备执行相关操作。相关操作结果第一个值是在图1(c)所示位置上两个函数对应位置乘积的累加和。接着将w向右移动一个位置并重复上述过程,如图1(d)所示。经过4次移动后,如图1(e)所示。以此类推,直至w全部通过f,最终得到如图1(f)所示。得到的w与f的相关如图1(g)所示。

在图1(g)所示的相关中,符号’full’是由MATLAB图像处理工具箱使用的标记,用来指示相关操作按上述方式计算时使用了经过充零后的图像。同样,工具箱还提供了另一个’same’选项,可以产生大小与f相同的相关。这种计算同样也使用经过充零后的图像,但开始位置位于与f的原点对准的模板的中线点。最后的计算时使f的最后一个点与模板的中心点对准。

图1 一维相关操作说明

图2 一维卷积操作说明

为了执行卷积,将w旋转180度,使其最右侧的点与f的原点重叠,如图2(b)所示。然后重复在相关操作中使用的滑动计算过程,如图2(c)到图2(f)所示。’full’和’same’卷积结果分别如图2(g)和图2-2(h)所示。

二维相关与卷积

上述情况很容易推广到二维图像中,如图3所示。原点位于图像f(x,y)的左上角。为了执行相关计算,设置w(x,y)的最右下角点,使之与f(x,y)的原点重合,如图3(c)所示。与一维情况类似,这里我们使用了零填充。然后在所有可能的位置上移动w(x,y),使得它的至少一个像素会与原始图像f(x,y)中的某个像素重叠。这个’full’相关的结果如图3(d)所示。为得到图3(e)中所示的’same’相关,我们要求w(x,y)的所有偏移都能实现中心像素覆盖原始的f(x,y)。

图3 二维相关操作示例

对于卷积,我们将w(x,y)旋转180度,其他处理方式与相关操作相同,参见图4(a)到图4(c)。

图4二维卷积操作示例

matlab imfilter函数,Matlab中imfilter()函数的用法相关推荐

  1. html中text函数,Excel中text函数的使用方法

    说到Excel,相信大家都再熟悉不过了,但说到Excel中text函数的使用方法,可能很多人都不太熟悉,下面随学习啦小编一起看看吧. Excel中text函数的使用方法 首先解释一下text函数的基本 ...

  2. 函数参数中带省略号的用法

     [转]函数参数中带省略号的用法 本文摘自CDSN<可变参数学习笔记>,原帖链接:http://topic.csdn.net/t/20041124/09/3582660.html 前言 ...

  3. linux 内核 fget,fgets函数 linux中fgets函数怎么用

    一个函数该如何使用?我们最先要了解的就是这个函数的语法以及具体的含义是什么,所以今天我们就来看一看fgets函数在实际的运用过程当中是如何使用的,希望能给大家带来一定的帮助. fgets函数--lin ...

  4. mysql中sign函数_Oracle中sign函数和decode函数的使用

    在逻辑编程中,经常用到If ndash; Then ndash;Else 进行逻辑判断.在DECODE的语法中,实际上就是这样的逻辑处理过程.它的语法 1.比较大小函数SIGN sign(x)或者Si ...

  5. matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数

    Matlab中的inline函数 1.有时为了描述某个数学函数的方便,可以用inline()函数来直接编写该函数,形式相当于M-函数,但无编写一个真正的MATLAB文件,就可以描述出某种数学关系.其调 ...

  6. matlab中的count函数,Excel 中COUNT函数的使用详解,详情介绍

    COUNT在英文上是"统计"的意思,在数学上是"计数"的意思.下面,我们来看看Excel中COUNT函数怎么用吧. 操作方法 01 随便输入数字 在Excel中 ...

  7. matlab函数im2bw_MATLAB中imfill()函数

    函数功能: 该函数用于填充bai图像区域和"空洞". 语法格式: BW2 = imfill(BW) 这种du格式将一张二值图像显示在屏zhi幕上, 允许用户使用鼠标在图像上点几个点 ...

  8. python中exp函数_Python3中exp()函数用法分析

    python中虚数函数exp怎么表示 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型 虚数函数exp用math是不行的要用cmat ...

  9. python local函数_python中的函数

    函数 一.函数的定义 def是可执行的代码.def创建了一个对象并将其赋值给某一变量名.def语句是实时执行的,即:def在运行时才进行评估,而在def之中的代码在函数调用后才会评估.函数本身就是一个 ...

  10. mysql算法函数_mysql中的函数总结

    mysql中常用日期时间函数 MySQL服务器中的三种时区设置: ①系统时区---保存在系统变量system_time_zone ②服务器时区---保存在全局系统变量global.time_zone ...

最新文章

  1. 新浪是如何分析处理32亿条实时日志的?
  2. SAP Spartacus Title 下拉菜单列表数据的读取逻辑
  3. 哈啰单车涨价:起步价1元/15分钟 仅限北京地区
  4. jQuery Easy UI Panel(面板)组件
  5. Oracle Certified Master For Java EE 5/6 Comes
  6. event.target
  7. Windows2008+MyEclipse10+Android开发环境搭配
  8. 2017.4.16 java 获取当前时间及年月日时分秒
  9. Geotools解析shp文件
  10. 水星无线网卡配置AP模式连接无线信号上不了网,怎么办?
  11. 30 个 Python 编程实用技巧
  12. 新手安装arch安装界面wifi-menu连接不了wifi
  13. 理论力学判断自由度的问题
  14. 关键词优化推广需要怎么做?有哪些方法和技巧
  15. 手机微信群控源码二次开发
  16. /deep/深度作用域选择器
  17. oracle vitu,Podnikové servery | Oracle Česká Republika
  18. 《笑傲江湖》一共有几个版本? -- 影评
  19. NCTF 南京邮电大学网络攻防训练平台 WriteUp
  20. OpenGL ES3.1使用计算着色器(Compute Shader)

热门文章

  1. kafka启用Kerberos认证
  2. POJ2528-Mayor's posters
  3. 益盟服务器地址配置文件,益盟服务器地址配置文件
  4. 触动精灵:零基础小白学触动15-16
  5. 使用嵌套循环产生下列图案 $ $$ $$$ $$$$
  6. Derby--jdk自带数据库的使用
  7. 基于Python爬虫的垂直搜索引擎设计与实现
  8. Gentoo的安装全过程
  9. FSM序列机Verilog
  10. JasperReport不分页