Matlab imfilter函数

Matlab imfilter函数imfilter 函数 imfilter 函数是对图像进行滤波的函数 matlab 语句格式为 B imfilter A h 使用多维滤波器 hhh 对多维数组 AAA 进行滤波 并在 BBB 中返回结果 B imfilter A h options 根据一个或多个指定的选项进行多维滤波 options 控制滤波运算的选项有 选项说明填充选项数值标量 xxx 边界之外的输入数组值被赋予值 xxx 默认值为 0 symmetric 边界之外的输入数组值是通过沿数组边界对数

imfilter函数
imfilter函数是对图像进行滤波的函数,matlab语句格式为:
B = imfilter(A,h),使用多维滤波器 h h h对多维数组 A A A进行滤波,并在 B B B中返回结果。B = imfilter(A,h,options,…)根据一个或多个指定的选项进行多维滤波。

options 控制滤波运算的选项有:

选项 说明
填充选项
数值标量, x x x 边界之外的输入数组值被赋予值 x x x 默认值为0
‘symmetric’ 边界之外的输入数组值是通过沿数组边界对数组进行镜面反射得到
‘replicate’ 边界之外的输入数组值假定为等于最近的数组边界值
‘circular’ 边界之外的输入数组值是通过隐式假设输入数组具有周期性来计算的。
输出大小
‘same’ 默认选项。输出数组与输入数组大小相同
‘full’ 输出数组是完全滤波后的结果
相关性和卷积选项
‘corr’ 默认选项。使用相关性执行多维滤波,这与filter2执行滤波的方式相同
‘conv’ 使用卷积执行多维滤波

A = [ 1 2 3 4 5 6 7 8 9 ] A = \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{matrix} \right] A=147258369为例,设 h = [ − 1 0 1 ] h = \left[ \begin{matrix} -1 & 0 & 1 \end{matrix} \right] h=[101],计算B = imfilter(A,h)

  1. 首先确定options无特殊说明,那么输出 B B B大小与 A A A相同,边界外补零,默认使用相关性进行滤波
  2. A A A补零得到:
    A ′ = [ 0 1 2 3 0 0 4 5 6 0 0 7 8 9 0 ] A’ = \left[ \begin{matrix} 0 & 1 & 2 & 3 & 0 \\ 0 & 4 & 5 & 6 & 0 \\ 0 & 7 & 8 & 9 & 0 \\ \end{matrix} \right] A=000147258369000
  3. 将滤波核 h h h的中心依次与 A A A相应元素对齐做滤波操作
    以第一个元素 a 1 , 1 = 1 a_{1,1} = 1 a1,1=1为例,有
    ( − 1 0 1 ) \left( \begin{matrix} -1 & 0 & 1 \end{matrix} \right) (101) ( 0 1 2 ) \left( \begin{matrix} 0 & 1 & 2 \end{matrix} \right) (012)做相关
    结果为 ( − 1 ) ∗ 0 + 0 ∗ 1 + 1 ∗ 2 = 2 (-1)*0+0*1+1*2 = 2 (1)0+01+12=2
    其他元素同理:
    ( − 1 ) ∗ 1 + 0 ∗ 2 + 1 ∗ 3 = 2 (-1)*1+0*2+1*3 = 2 (1)1+02+13=2 ( − 1 ) ∗ 2 + 0 ∗ 3 + 1 ∗ 0 = − 2 (-1)*2+0*3+1*0 = -2 (1)2+03+10=2
    ( − 1 ) ∗ 0 + 0 ∗ 4 + 1 ∗ 5 = 5 (-1)*0+0*4+1*5 = 5 (1)0+04+15=5 ( − 1 ) ∗ 4 + 0 ∗ 5 + 1 ∗ 6 = 2 (-1)*4+0*5+1*6 = 2 (1)4+05+16=2 ( − 1 ) ∗ 5 + 0 ∗ 6 + 1 ∗ 0 = − 5 (-1)*5+0*6+1*0 = -5 (1)5+06+10=5
    ( − 1 ) ∗ 0 + 0 ∗ 7 + 1 ∗ 8 = 8 (-1)*0+0*7+1*8 = 8 (1)0+07+18=8 ( − 1 ) ∗ 7 + 0 ∗ 8 + 1 ∗ 9 = 2 (-1)*7+0*8+1*9 = 2 (1)7+08+19=2 ( − 1 ) ∗ 8 + 0 ∗ 9 + 1 ∗ 0 = − 8 (-1)*8+0*9+1*0 = -8 (1)8+09+10=8






  4. 最终得到滤波结果为:
    A = [ 2 2 − 2 5 2 − 5 8 2 − 8 ] A = \left[ \begin{matrix} 2 & 2 & -2 \\ 5 & 2 & -5 \\ 8 & 2 & -8 \\ \end{matrix} \right] A=258222258
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217037.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:29
下一篇 2026年3月18日 上午10:30


相关推荐

  • 傅里叶变换的意义和理解(通俗易懂)

    傅里叶变换的意义和理解(通俗易懂)傅里叶变换的意义和理解(通俗易懂)这篇文章的核心思想就是:要让读者在不看任何数学公式的情况下理解傅里叶分析。傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课程,不得不归咎于编教材的人实在是太严肃了。(您把教材写得好玩一点会…

    2022年7月17日
    18
  • NTKO使用说明

    NTKO使用说明1 文件更新及布署 a 增加文件 Poral Ajax SheetInfo ashx 主要用于获取流程表单的信息 可自己扩展 b Portal Office 文件夹完整替换 测试环境 Office1 为原来的文件夹 c 增加 JS 文件 NTKO 套用模块 印章的方法 Portal WFRes Scripts MVCSheet SheetOfficeN jsd 修改 Sheet

    2026年3月16日
    2
  • docker 导入导出镜像_docker拉取镜像到本地

    docker 导入导出镜像_docker拉取镜像到本地docker导入导出镜像文件:把某个docker镜像保存到本地文件,命令如下dockersave-o镜像名.tar原始镜像名(REPOSITORY项)导出$dockersave-o/root/images/jenkins_image.tarjenkins/jenkins:latest导入$dockerload</root/images/jenkins_image.tar导出镜像如果要存出镜像到本地文件,可以使用dockersave命令。例如,存出本地的ubu

    2025年9月17日
    11
  • 电容分类—等级划分「建议收藏」

    电容分类—等级划分「建议收藏」电容等级,越高越好,目前MKP电容,是最好的。

    2022年8月22日
    9
  • 批处理文件for循环_批处理循环语句

    批处理文件for循环_批处理循环语句命令格式:for{%variable|%%variable}in(集合)docommand[options]%variable|%%variable:代表可替换参数。使用%variable通过命令提示符执行for命令。使用%%variable在批处理文件中执行for命令;这个变量可以是26个英文字母任意一个,也可以是其他;这些变量会区分大小写,%%x和%%X代表

    2022年10月12日
    6
  • 解决项目中java heap space的问题[通俗易懂]

    解决项目中java heap space的问题[通俗易懂]起因 17年的一个项目出了OOM(javaheapspace)问题,眼下有个问题:法院项目,不能外网,一连接外网高院会直接定位到计算机,发出警报(档案的机密性啊)不能远程,那只能视频教他们怎么做了,全程和一个文员说代码,真的很累==! 过程 这个过程对一个不太了解内存的问题的开发无疑是艰难的,搜了一下,知道了是内存溢出导致的,于是着手解决 网上大多数都说调整运行…

    2022年7月8日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号