矩阵卷积

article/2025/9/12 9:20:05
1. 矩阵的卷积运算主要用在图像处理中,假设输入信号为x[m,n],激活响应为h[m,n],则其卷积定义为:

卷积矩阵及其运算实例

2.如果矩阵的中心在边缘就要将原矩阵进行扩展,例如补0

3.卷积的计算步骤: 

  (1)      卷积核绕自己的核心元素顺时针旋转180度(这个千万不要忘了)
(2)   移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
(3)   在旋转后的卷积核中,将输入图像的像素值作为权重相乘
(4)   第三步各结果的和做为该输入像素对应的输出像素

same 是用旋转后的核的中心对应输入的矩阵。算出和输入大小相同的矩阵。

full 是用旋转后的核的从角开始对应。

MATALB仿真结果

a = 


        1    3     1
        2    1     2
        1    3     2
        3    1     2

b = 
        1    1
        1    1
        1    1
same:
c = 
       10   10     7
       16   16    12
    10   15    17   11
       11   12     8
full:
d = 
        3    6       4    1
        6   10    10    7    3
        9   16    16   12    5
       10   15    17   11    6
        7   11    12    8    4
        4    5       3    2



4 卷积在具体学科中的应用

图像处理:用一个模板和一幅图像进行卷积,对于图像上的一个点,让模板的原点和该点重合,然后模板上的点和图像上对应的点相乘,然后各点的积相加,就得到了该点的卷积值。对图像上的每个点都这样处理。由于大多数模板都是对称的,所以模板不旋转。卷积是一种积分运算,用来求两个曲线重叠区域面积。可以看作加权求和,可以用来消除噪声、特征增强。

把一个点的像素值用它周围的点的像素值的加权平均代替。

卷积是一种线性运算,图像处理中常见的mask运算都是卷积,广泛应用于图像滤波。

卷积在数据处理中用来平滑,卷积有平滑效应和展宽效应.

电路学:卷积法的原理是根据线性定常电路的性质(齐次性、叠加性、时不变性、积分性等),借助电路的单位冲激响应h(t),求解系统响应的工具,系统的激励一般都可以表示为冲击函数和激励的函数的卷积,而卷积为高等数学中的积分概念。概念中冲击函数的幅度是由每个矩形微元的面积决定的。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

信号处理:

1)卷积实质上是对信号进行滤波;

2)卷积就是用冲击函数表示激励函数,然后根据冲击响应求解系统的零状态响应。

卷积是求和(积分)。对于线性时不变的系统,输入可以分解成很多强度不同的冲激的和的形式(对于时域就是积分),那么输出也就是这些冲激分别作用到系统产生的响应的和(或者积分)。所以卷积的物理意义就是表达了时域中输入,系统冲激响应,以及输出之间的关系。

信号角度:卷积代表了线性系统对输入信号的响应方式,其输出就等于系统冲击函数和信号输入的卷积,只有符合叠加原理的系统,才有系统冲击函数的概念,从而卷积成为系统对输入在数学上运算的必然形式,冲击函数实际上是该问题的格林函数解。点激励源作为强加激励,求解某个线性问题的解,得到的格林函数即是系统冲击响应.所以在线性系统中,系统冲击响应与卷积存在着必然的联系。

数学:来说卷积就是定义两个函数的一种乘法,或者是一种反映两个序列或函数之间的运算方法。对离散序列来说就是两个多项式的乘法。物理意义就是冲激响应的线性叠加,所谓冲激响应可以看作是一个函数,另一个函数按冲激信号正交展开。

在现实中:卷积代表的是将一种信号搬移到另一频率中,比如调制,这是频率卷。

物理:卷积可代表某种系统对某个物理量或输入的调制或污染。

在现实中:卷积代表的是将一种信号搬移到另一频率中,比如调制,这是频率卷。

形象比喻:卷积我觉得就象一把锉刀,它主要是把一些非光滑的函数或算子光滑化。

信号处理的任务就是寻找和信号集合对应的一个集合,然后在另外一个集合中分析信号,Fourier变换就是一种,它建立了时域中每个信号函数与频域中的每个频谱函数的一一对应关系,这是元素之间的对应。那么运算之间的对应呢,在时域的加法对应频域中的加法,这就是FT线性性的体现;那么时域的乘法对应什么呢,最后得到的那个表达式我们就把它叫卷积,就是对应的频域的卷积。

简单来说,卷积是一种重叠关系,也就是说,所得到的结果反映了两个卷积函数的重叠部分。所以,用一个已知频段的函数卷积另一个频段很宽的函数,也就是对后者进行了滤波,后者跟前者重叠的频段才能很好地通过这个filter.

5 卷积与多项式

信号处理中的一个重要运算是卷积.初学卷积的时候,往往是在连续的情形,两个函数f(x),g(x)的卷积,是∫f(u)g(x-u)du。当然,证明卷积的一些性质并不困难,比如交换,结合等等,但是对于卷积运算的来处,初学者就不甚了了。

其实,从离散的情形看卷积,或许更加清楚,对于两个序列f[n],g[n],一般可以将其卷积定义为s[x]= ∑f[k]g[x-k]。

卷积的一个典型例子,其实就是初中就学过的多项式相乘的运算。

比如(x*x+3*x+2)(2*x+5)一般计算顺序如下:

(x*x+3*x+2)(2*x+5)

= (x*x+3*x+2)*2*x+(x*x+3*x+2)*5
= 2*x*x*x+3*2*x*x+2*2*x+ 5*x*x+3*5*x+10
然后合并同类项的系数,

2x*x*x

3*2+1*5x*x

2*2+3*5x

2*5
2*x*x*x+11*x*x+19*x+10

实际上,从线性代数可以知道,多项式构成一个向量空间,其基底可选为{1,x,x*x,x*x*x,...}如此,则任何多项式均可与无穷维空间中的一个坐标向量相对应,如,(x*x+3*x+2)对应于(1 3 2),(2*x+5)对应于(2,5)。线性空间中没有定义两个向量间的卷积运算,而只有加法、数乘两种运算,而实际上,多项式的乘法,就无法在线性空间中说明,可见线性空间的理论多么局限了。但如果按照我们上面对向量卷积的定义来处理坐标向量,(1 3 2)*(2 5)则有(1 3 2)*(2 5)=(2 11 19 10)。

回到多项式的表示上来,(x*x+3*x+2)(2*x+5)=2*x*x*x+11*x*x+19*x+10,结果跟我们用传统办法得到的是完全一样的.换句话,多项式相乘,相当于系数向量的卷积.其实道理也很简单,卷积运算实际上是分别求 x*x*x ,x*x,x,1的系数,也就是说,他把加法和求和杂合在一起做了。(传统的办法是先做乘法,然后在合并同类项的时候才作加法)以x*x的系数为例,得到x*x,或者是用x*x乘5,或者是用3x乘2x,也就是

2 3 1
_ 2 5
6+5=11

其实,这正是向量的内积.如此则,卷积运算,可以看作是一串内积运算.既然是一串内积运算,则我们可以试图用矩阵表示上述过程。
[ 2 3 1 0 0 0]
[ 0 2 3 1 0 0]==A
[ 0 0 2 3 1 0]
[ 0 0 0 2 3 1]
[0 0 2 5 0 0]' == x
b= Ax=[ 2 11 19 10]'

采用行的观点看Ax,则b的每行都是一个内积。A的每一行都是序列[23 1]的一个移动位置。显然,在这个特定的背景下,我们知道,卷积满足交换,结合等定律,因为,众所周知的,多项式的乘法满足交换律,结合律.在一般情形下,其实也成立.

在这里,我们发现多项式,除了构成特定的线性空间外,基与基之间还存在某种特殊的联系,正是这种联系,给予多项式空间以特殊的性质.

在学向量的时候,一般都会举这个例子,甲有三个苹果,5个橘子,乙有5个苹果,三个橘子,则共有几个苹果,橘子。老师反复告诫,橘子就是橘子,苹果就是苹果,可不能混在一起。所以有(3,5)+(5,3)=(8,8).是的,橘子和苹果无论怎么加,都不会出什么问题的,但是,如果考虑橘子乘橘子,或者橘子乘苹果,这问题就不大容易说清了。

又如复数,如果仅仅定义复数为数对(a,b),仅仅在线性空间的层面看待C2,那就未免太简单了。实际上,只要加上一条(a,b)*(c,d)=(ac-bd,ad+bc)。则情况马上改观,复变函数的内容多么丰富多彩,是众所周知的。另外,回想信号处理里面的一条基本定理,频率域的乘积,相当于时域或空域信号的卷积.恰好和这里的情形完全对等.这后面存在什么样的隐态联系,需要继续参详.

从这里看,高等的卷积运算其实不过是一种初等的运算的抽象而已.中学学过的数学里面,其实还蕴涵着许多高深的内容(比如交换代数)。温故而知新,斯言不谬.其实这道理一点也不复杂,人类繁衍了多少万年了,但过去n多年,人们只知道男女媾精,乃能繁衍后代。精子,卵子的发现,生殖机制的研究,也就是最近多少年的事情。

孔子说,道在人伦日用中,看来我们应该多用审视的眼光看待周围,乃至自身,才能知其然,而知其所以然。



http://chatgpt.dhexx.cn/article/uU6E4hY2.shtml

相关文章

隐马尔可夫模型(HMM)及Viterbi算法

HMM简介 对于算法爱好者来说,隐马尔可夫模型的大名那是如雷贯耳。那么,这个模型到底长什么样?具体的原理又是什么呢?有什么具体的应用场景呢?本文将会解答这些疑惑。   本文将通过具体形象的例子来引入该模型&#x…

viterbi算法实例及python实现

Python中hmmlearn给出了三种HMM模型:MultiomialHMM,GaussianHMM,GMMHMM。本文以MultiomialHMM为例,使用《从机器学习到深度学习》中第六章的活动/天气模型进行推算。 假设有这样一个问题,远在另一个城市上大学的儿子每天通过邮件向你汇报他今…

在HMM中实际应用Viterbi算法的例子

在HMM中实际应用Viterbi算法的例子 Viterbi概念动态规划使用HMM的Viterbi算法参考Viterbi概念 本质:动态规划算法 维特比算法是多步骤每步多选择模型的最优选择问题。 其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价…

HMM和viterbi算法初步实践-----中文分词

马尔科夫性质:当一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态。换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的(也就是没有任何的…

HMM和Viterbi算法

一、隐马尔可夫模型(Hidden Markov Model) 1、简介 隐含马尔可夫模型并不是俄罗斯数学家马尔可夫发明的,而是美国数学家鲍姆提出的,隐含马尔可夫模型的训练方法(鲍姆-韦尔奇算法)也是以他名字命名的。隐含马…

基于Hmm模型和Viterbi算法的中文分词和词性标注

使用 python 实现基于Hmm模型和Viterbi算法的中文分词及词性标注;使用 最大概率算法 进行优化。最终效果:人民日报语料:分词(F1:96.189%);词性标注(F1:97.934%) 完整代码和数据,参见本实验的 github地址:h…

【生信算法】利用HMM纠正测序错误(Viterbi算法的python实现)

利用HMM纠正测序错误(Viterbi算法的python实现) 问题背景 对两个纯系个体M和Z的二倍体后代进行约~0.05x的低覆盖度测序,以期获得后代个体的基因型,即后代中哪些片段分别来源于M和Z。已知: 后代中基因型为MM、MZ&…

Viterbi算法实现中文分词和词性标注

Viterbi算法 目标过程词典分词统计分词词性标注 附录附录二附录三 源码地址 目标 实现基于词典的分词方法和统计分词方法对分词结果进行词性标注对分词及词性标注结果进行评价,包括4个指标:正确率、召回率、F1值和效率 过程 词典分词 基于词典的分词…

viterbi 算法与python实现

Viterbi算法 (部分内容转自知乎:《如何通俗地讲解 viterbi 算法?》) 1、问题描述 如下如所示,如何快速找到从 S 到 E 的最短路径? 一:遍历穷举法,可行,但速度太慢&am…

维特比算法(viterbi)原理以及简单实现

维特比算法 看一下维基百科的解释,维特比算法(Viterbi algorithm)是一种动态规划算法。它用于寻找最有可能产生观测事件序列的维特比路径——隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。 通俗易懂的解释知乎…

flask中jsonify遇到的坑

1.jsonify可以将字典转换成json对象传入前端 data {"movie": movie_list,"page": page,"dic_list": dic,"total_page": total_page}>>坑1 字典的值不能为range(x,x),上图dic就是像range(x,x),会报错 …

flask中的jsonify返回的是乱码

用flask返回json时遇到了返回字符串支持中文显示的问题,在web端显示的是utf-8的编码如图; 虽然不影响接口的读取,但是可读性太差,于是研究了一下怎么直接显示成中文。最后找到了解决方案如下,在配置中加入下面一行代码就OK了。 …

request jsonify

python的flask框架为用户提供了直接返回包含json格式数据响应的方法,即jsonify,在开发中会经常用到。如下一段简单的flask后端代码,服务端视图函数根据请求参数返回json格式的数据到客户端。 转载于:https://www.cnblogs.com/daqingzi/p/9018…

Flask使用json或jsonify返回响应的数据

前言 在做网站前后端数据交互的时候,我们经常需要使用Ajax等方法向后端发送请求来获取响应的数据,而我们经常需要的就是json格式的响应数据,它实际上就是一个字符串。要知道Flask如何返回json响应数据,首先就需要知道如何将字典di…

Flask 学习-8. jsonify返回中文没正常显示问题

前言 Flask 接口返回的json 格式数据有中文的时候,默认是以ASCII码 返回的,没正常显示中文。 jsonify 返回 json 数据 函数直接返回dict 数据 或返回jsonfy() 函数处理的数据,都是以json格式返回的 from flask import Flask, jsonify fro…

flask jsonify之序列化时的default函数、jsonify序列化自定义对象

目录 1.看源码 2、重写默认的default函数,实现自己的序列化机制 3、把对象转化成字典 3.1 __dict__的方式 3.2、定义keys和__getitem__的方式 4、最终的代码实现 5、关于default函数的其他知识 1.看源码 打开site-package,flask,json…

Flask | 解决jsonify返回中文乱码问题

在采用 return jsonify(data) 返回内容中含有中文时,前端接收数据出现中文乱码问题,乱码格式如下(仅中文为ASCII码): 故在此记录下该问题的解决方式,以作后期参考: 在定义Flask app时&#xff…

jsonify返回中文编码的问题

app.config[JSON_AS_ASCII]Flase 在它下面加上上面的代码就欧克了 没加之前或者为True: 加了之后:

flask学习二(jsonify)

示例一: 实现动态路由,代码如下 # coding:utf-8 from flask import Flask from flask import jsonify # 创建对象 app Flask(__name__)users_list {"1001":["123","张三",19],"1002":["234","…

flask中jsonify和json区别

一 JSON数据结构 要把json与字典区分开来 dumps(字典转换成Json) loads(Json转换成字典) Python 的字典是一种数据结构,JSON 是一种数据格式。 json 就是一个根据某种约定格式编写的纯字符串,不具备任何数据结构的特征。而 python 的字典…