【matlab知识补充】conv2、filter2、imfilter函数原理

原文地址:http://www.ilovematlab.cn/thread-293710-1-1.html

-------------------------------------conv2函数----------------------------------------

1、用法

  1. C=conv2(A,B,shape);        %卷积滤波
复制代码
A:输入图像,B:卷积核
       假设输入图像A大小为ma x na,卷积核B大小为mb x nb,则
       当shape=full时,返回全部二维卷积结果,即返回C的大小为(ma+mb-1)x(na+nb-1)
      shape=same时,返回与A同样大小的卷积中心部分
       shape=valid时,不考虑边界补零,即只要有边界补出的零参与运算的都舍去,返回C的大小为(ma-mb+1)x(na-nb+1)


2、实现步骤
    假设输入图像A大小为ma x na,卷积核大小为mb x nb,则MATLAB的conv2函数实现流程如下:
        a、对输入图像补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意conv2不支持其他的边界补充选项,函数内部对输入总是补零)。
        b、关于卷积核的中心,旋转卷积核180度。
        c、滑动卷积核,将卷积核的中心位于图像矩阵的每一个元素。
        d、将旋转后的卷积核乘以对应的矩阵元素再求和。

3、实现过程展示
     假设有图像A=[4 3 1 2;0 1 1 3;5 2 0 0],卷积核B=[1 2 3;0 -1 2;1 1 0]
         a、首先是按照上面的步骤进行补零,如下图外圈红色的为补出的零

 b、将卷积核旋转180度


 c、将旋转后的核在A上进行滑动,然后对应位置相乘,最后相加,下面分别是shape=full,same,valid时取输出图像大小的情况,位置1表示输出图像的值从当前核的计算值开始(对应输出图像左上角),位置2表示到该位置结束(对应输出图像右下) 

                 

-------------------------------------filter2函数----------------------------------------
1、用法

  1. B = filter2(h,A,shape) ;        %相关(correlation)滤波
复制代码
A:输入图像,h:相关核
       假设输入图像A大小为ma x na,相关核h大小为mb x nb,则
       当shape=full时,返回全部二维卷积结果,即返回B的大小为(ma+mb-1)x(na+nb-1)
      shape=same时,返回与A同样大小的卷积中心部分
       shape=valid时,不考虑边界补零,即只要有边界补出的零参与运算的都舍去,返回B的大小为(ma-mb+1)x(na-nb+1)

2、实现步骤
假设输入图像A大小为ma x na,相关核h大小为mb x nb,MATLAB的filter2的实现流程如下
a、对输入图像补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意filter2不支持其他的边界补充选项,函数内部对输入总是补零)。
b、滑动相关核,将相关核的中心位于图像矩阵的每一个元素。
c、将相关核乘以对应的矩阵元素再求和
注意filter2不对核进行180°旋转,直接对应相乘再相加,这一点与filter2不同,下面有两者计算结果对比可看出这一点。

3、conv2(卷积滤波)和filter2(相关滤波)的结果比较
        A=[    3     1     2; 0     1     1     3; 5     2     0     0],卷积核 B=[     2      3;    -1     2; 1      1      0]

         

 

-------------------------------------imfilter----------------------------------------
1、用法

  1. B=imfilter(A,H,option1,option2,option3);
复制代码
A:输入图像,H:滤波核
       option1:边界选项,可选的有:补充固定的值X(默认都补零),symmetric,replicate,circular
       option2:输出图像大小选项,可选的有same(默认),full
       option3:决定采用与filter2相同的相关滤波还是与conv2相同的卷积滤波



------------------------------------- 最后总结 ----------------------------------------
1、  filter2、conv2将输入转换为double类型,输出也是double的,输入总是补零(zero padded), 不支持其他的边界补充选项。
2、  imfilter:不将输入转换为double,输出只与输入同类型,有灵活的边界补充选项

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

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

相关文章

显示mnist手写数字

前言 可视化什么的,总是好的 方法一 其实也就是用到了Ruslan Salakhutdinov and Geoff Hinton提供的工具包 % Version 1.000 % % Code provided by Ruslan Salakhutdinov and Geoff Hinton % % Permission is granted for anyone to copy, use, modify, or distr…

【caffe-Windows】mnist实例编译之model的使用-classification

仿照cifar10的模型使用,本文对mnist的训练方式做了部分修改 【注】本文caffe安装路径为E:\CaffeDev-GPU\caffe-master。请自行参考并修改相关路径(debug以及release参考你编译caffe时候采用的模式) 第一步 按照前面的model生成方法的前两步骤制作数据集&#xff…

误差error,偏置bias,方差variance的见解

更新日志:2020-3-10 谢谢ProQianXiao的指正。偏差-方差的确是在测试集中进行的。 之前的误解是,偏差和方差的计算是同一个模型对不同样本的预测结果的偏差和方差;而实际上是不同模型对同一个样本的预测结果的偏差和方差。 这时候就要祭出网…

【caffe-Windows】以mnist为例lmdb格式数据

前言 前面介绍的案例都是leveldb的格式,但是比较流行和实用的格式是lmdb,原因从此网站摘取 它们都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库。虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比level…

【caffe-Windows】mnist实例编译之model的使用-matlab

前言 针对上一个caffe文章留下的matlab手写数字识别的问题,感谢caffe中文社区的 ghgzh 的提示,原文请看:caffe中文社区 第一步 手写图片的制作方法我就不说了,直接把我自己画的几个数字放到云盘先: 三通道图像以及…

【caffe-Windows】训练自己数据——数据集格式转换

前言 看了mnist和cifar的实例,是不是想我们现实中一般都是一张张的图片,和实例里面都不一样呢?那么如何来进行训练呢?为了能够简便点,我们就不自己去采集数据集了,因为第一自己采集的数据集量可能不够&…

【caffe-windows】Linux至Windows平台的caffe移植

1、前言 主要参考两篇博客以及很多论坛解决细节问题: http://www.cnblogs.com/trantor/p/4570097.html https://initialneil.wordpress.com/2015/01/11/build-caffe-in-windows-with-visual-studio-2013-cuda-6-5-opencv-2-4-9/ 移植环境:Windows7…

【caffe-matlab】权重以及特征图的可视化

前言 移植了各种caffe,是时候进行下一步操作了,先拿可视化下手吧。大部分内容可能跟网上的方法不一样,大家看完我的博客最好去网上看看大牛们的博客,万一被我误导了,就罪过了o(╯□╰)o,开更.............…

【caffe-matlab】使用matlab训练caffe及绘制loss

前言 此博客主要介绍如何利用matlab一步一步训练caffe模型,类似使用caffe.exe 的train命令。 国际惯例,参考博客: http://caffe.berkeleyvision.org/tutorial/interfaces.html http://www.cnblogs.com/denny402/p/5110204.html 抱怨一…

【caffe-matlab】目标检测R-FCN算法于Windows下配置

前言 首先谢谢好友推荐的这篇论文及代码,前面学习的caffe可能比较浅显,想要深入caffe就可以从这个代码下手了,配置方法还是挺简单的,但是可能会出现部分问题。在作者的论文中有github的地址。注意,本文只介绍如何配置…

【写作】Texlive和Texmaker学习

前言 最近要看一些论文做一下笔记,所以准备使用一下比较流行的Texlive和Texmaker写一下。其实CSDN的Markdown也是不错滴。 首先国际惯例,贴几个地址: Texlive镜像下载地址:http://mirror.lzu.edu.cn/CTAN/systems/texlive/Imag…

《Neural Networks for Machine Learning》学习一

前言 最近报了一下Hinton大牛的coursera的神经网络课程,奈何比较懒,一直没看,还是写个博客督促自己比较好 贴一下课程地址:https://www.coursera.org/learn/neural-networks/home/week/1 第一讲主题是为何需要机器学习&#xf…

《Neural Networks for Machine Learning》学习二

前言 课程地址:https://www.coursera.org/learn/neural-networks/home/week/1‘’ 【Lecture 2】百度云下载地址:链接:http://pan.baidu.com/s/1nvMynhR 密码:ru3y 神经网络架构概览 前馈神经网络(Feed-Forward neural network)…

入门 | 初学者必读:解读14个深度学习关键词

作者:Matthew Mayo 机器之心编译 参与:Xuwen Wang、Chen Chen 微信公众号:(almosthuman2014)授权转载,禁止二次转载,点此为原文链接 本文介绍了包括 LSTM、ANNS、生物神经元、反向传播、多元感知…

深度 | 一篇文章带你进入无监督学习:从基本概念到四种实现模型(附论文)

作者:Eugenio Culurciello 机器之心编译 参与:李亚洲、武竞 微信公众号:(almosthuman2014)授权转载,禁止二次转载,点此为原文链接 这是今年 6 月份普渡大学副教授 Eugenio Culurciello 写的一篇…

【caffe-Windows】微软官方caffe之 Python接口配置及图片生成实例

前言 发现许多代码还是用python写的,所以还是配置一下接口吧,虽然博主不会Python,咳咳。在这里使用的python安装包是anaconda2,注意使用Python2.7版本的那个安装包。 官网地址:https://www.continuum.io/downloads …

判别模型的玻尔兹曼机论文源码解读

前言 三号要去参加CAD/CG会议,投了一篇关于使用生成模型和判别模型的RBM做运动捕捉数据风格识别的论文。这段时间一直搞卷积RBM了,差点把原来的实验内容都忘记了,这里复习一下判别式玻尔兹曼机的训练流程。 国际惯例,贴几个链接…

Jacobian矩阵和Hessian矩阵

原文转自:http://jacoxu.com/?p146 1. Jacobian 在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式. 还有, 在代数几何中, 代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群, 曲线可以嵌入其中. 它们全部都…

为什么梯度下降法对于非线性可分数据有效

前言 晚上逛微博看到的,顺便拿过来翻译一下,做做笔记 国际惯例,来个原文链接: 原文地址:Why is gradient descent robust to non-linearly separable data? PDF拷贝:http://download.csdn.net/detail/…

卷积RBM源码解读

前言 卷积RBM相对RBM来说具有很多优势,详细的我也不说了,看文章就行。主要还是为了加深自己对细节部分的理解吧。 国际惯例,贴几个链接 卷积RBM的创始人Honglak Lee:http://web.eecs.umich.edu/~honglak/hl_publications.html#…