• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

图像卷积、相关以及在MATLAB中的操作

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

图像卷积、相关以及在MATLAB中的操作

2016年7月11日 20:34:35, By ChrisZZ

区分卷积和相关

图像处理中常常需要用一个滤波器空间滤波操作。空间滤波操作有时候也被叫做卷积滤波,或者干脆叫卷积(离散的卷积,不是微积分里连续的卷积);滤波器也有很多名字:卷积模版、卷积核、掩模、窗口等。

空间滤波可以分为线性滤波和非线性滤波。非线性滤波常见的有中值滤波、最大值滤波等,相当于自定义一个函数,在数学上由于不满足线性变换因此叫做非线性滤波。这里不细研究它。

线性滤波则通常是:将模版覆盖区域内的元素,以模版中对应位置元素为权值,进行累加。看起来挺简单的,但是要区分相关(cross-correlation)卷积(convolution)两种模式。为什么呢?因为在MATLAB里是有所区分的,而且不少中文书里面把它们混淆了。

我们最容易的理解是:将模版中元素从左到右、从上到下,作为使用顺序,那么卷积操作的结果,就是模版第一个元素乘以它覆盖的元素,加上模版第二个元素乘以它覆盖的元素,再加上模版第三个元素乘以它覆盖的元素,...,一直加到模版最后一个元素乘以它覆盖的元素。好吧,其实就是:模版覆盖区域内,元素逐一相乘然后累加,此时的对应位置就是上下投影后被覆盖的位置。

上面这个理解确实是看起来最容易理解的,因而很多中文书把它叫做"卷积"。然而这个概念其实叫做相关,而卷积则相当于:将同样的模版旋转180°后,再做"相关"操作。当然,如果模版是180°对称的那么卷积和相关是相同的。但是并不是所有的模版都对称。因此,我建议,在滑窗操作、计算图像梯度等场合,不要使用“卷积”,而要使用“滤波”或者“相关”。因为,我们通常讲的卷积,其实是相关,那就不要用卷积这个词以免引起混淆。

MATLAB下的操作

在MATLAB中用imfilter来实现线性空间滤波:

imfilter(f, w, filtering_mode, boundary_options, size_options)
f:图像
w:滤波模版
filtering_mode:滤波模式
    \'corr\':相关滤波。[默认值]
    \'conv\':卷积滤波。
boundary_options:边界选项
    P:(没有引号)边界外围补充0。[默认值]
    \'replicate\':边界外围复制边界值
    \'symmetric\':边界外围使用边界镜像
    \'circular\':图像的大小通过讲图像处理为二维周期函数的一个周期来扩展(这是什么?)
size_options:大小选项
    \'same\':输出大小与输入图像f大小相同。[默认值]
    \'full\':输出与扩展(填充)后的图像大小相同。

最常用的是这句:

imfilter(f, w, \'replicate\') %相关滤波,边界外围填充0,输出大小与输入图像f相同

当然,如果硬要做真正的卷积滤波,除了指定imfilter中的的conv参数,也可以先将模版旋转180°:

rotated_filter=flipud(fliplr(filter))

总结

说了这么多废话,总结起来就是3句话:

  1. 很多中文书里(数字图象处理一类)讲的卷积过滤其实应当叫做相关过滤
  2. 平时滤波最常用的是相关滤波,也就是“覆盖位相乘,然后累加”
  3. MATLAB中的写法为imfilter(f, w, \'replicate\')

ref

https://www.zhihu.com/question/29121110


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
DelphiTAdvStringGrid的回车换格功能发布时间:2022-07-18
下一篇:
C#生成COM组件,Delphi调用发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap