C语言实现矩阵卷积运算

article/2025/10/23 10:26:51

直观的说卷积操作可以理解为——每次透过一个较小的“窗口”去覆盖被输入进来的大窗口中的某一部分所得出的结果。每次得出结果后小窗口就会根据步长滑动至下一个位置并重复这一计算过程,最终得到卷积后的输出矩阵结果。

卷积的计算过程可由下图直观说明。
在这里插入图片描述
必须注意的是,根据卷积的数学原理,上图中的3*3矩阵实际上是真正卷积核矩阵经逆时针旋转180度所得到的矩阵。再举一详细示例加以说明。
假设卷积核为:
在这里插入图片描述
待处理矩阵为:
在这里插入图片描述
则首先应该将卷积核逆时针旋转180度得到如下矩阵:
在这里插入图片描述
再将卷积核h的中心对准x的第一个元素,然后h和x重叠的元素相乘,h中不与x重叠的地方x用0代替,再将相乘后h对应的元素相加,得到结果矩阵中Y的第一个元素。比如结果矩阵中第一个数字即为下图所示的矩阵运算得出,结果为16。
在这里插入图片描述
值得注意的是矩阵卷积运算实际上分为三种不同的计算情况,将会导致卷积后的输出矩阵大小不同。说明如下。
1、same mode:即如上面所举例子中的重合方法,将卷积核的中心从输入矩阵左上角的第一个数字开始重合,再依次与每一个位置重合。对于输入中外围本不存在的部分需要用0填充。
在这里插入图片描述
2、full mode:以卷积核右下角的数字与输入矩阵左上角的第一个数字开始重合,再依次计算。填充方法相同。
在这里插入图片描述
3、valid mode:卷积核整个在输入图像的内部进行重合计算。

在这里插入图片描述
综上所述代码实现卷积操作时我们需要完成矩阵旋转后再进行矩阵相乘操作,并对不同计算情况做出相应计算方法。
首先对矩阵做出定义。
typedef struct Mat2DSize{
int c; // 列(宽)
int r; // 行(高)
}nSize;
然后编写矩阵旋转180函数。
在这里插入图片描述
再来是矩阵扩充函数。
在这里插入图片描述

然后根据三种不同情况进行矩阵对应位置相乘再累加操作如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后卷积函数如下:
在这里插入图片描述
主函数调用上述函数进行卷积运算,如下图。

在这里插入图片描述
运算结果如下,经验证正确。
在这里插入图片描述


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

相关文章

卷积神经网络互相关运算和卷积运算原理

卷积神经网络用的其实不是卷积运算,实际用的是互相关运算;互相关运算和卷积运算的区别在于对输入结果所加的权重系数的顺序不同而已,但由于神经网络本身就是训练参数的,所以两者的输出结果其实是一样的,而互相关运算相…

全网最全的卷积运算过程

卷积运算 1.卷积核的通道(也叫滤波器)的个数得与被卷积的图片通道数相同 eg:输入图片是102410243,即通道数为3,那么每个卷积核得有3个通道 2.卷积核做的是线性运算,核上的每个值与它滑动到的对应位置上的值相乘&…

多维卷积运算

多维卷积运算 如果输入的图片是灰度图,每个像素点的值是一个整数,只需使用2D卷积运算。 但如果输入的图片是彩色的,每个像素点的值是1个由3个整数组成的组,例如(R,G,B)(155,23,222). 对于这样多维的输入图片,需要使用…

信号与系统 - 卷积运算

信号的时域分解 卷积积分 卷积定义 卷积积分的图解法 举例1 举例2 总结 卷积的性质 交换律 分配律 结合律 奇异函数的卷积性质 普通函数与冲激函数的卷积 普通函数与阶跃函数的卷积 普通函数和冲击偶函数卷积 举例 卷积的微积分分特性 卷积的微分特性 卷积的积分特性 卷积的…

【15】opencv卷积运算

参考: 【OpenCV学习笔记】之卷积及卷积算子(convolution)_点滴成海~的博客-CSDN博客_卷积算子(关于卷积运算) opencv RNG函数 - 0MrMKG - 博客园(对于RNG函数的解答) (一&#xf…

机器学习4:卷积运算简介

机器学习4:卷积运算简介【旧笔记整理】 (1)卷积运算简介: 卷积即在卷积核滑动过程中,矩阵与卷积核对应位置的数据相乘最后乘积求和的计算过程。 (2)卷积运算的特性: ①稀疏连接&…

【OpenCV 例程200篇】52. 图像的相关与卷积运算

【OpenCV 例程200篇】52. 图像的相关与卷积运算 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 滤波通常是指对图像中特定频率的分量进行过滤或抑制。图像滤波是在尽可能保留图像细节特征的条件…

Python遥感图像处理应用篇(五):python如何使用numpy对遥感图像做卷积运算

本篇接着上一篇(Python遥感图像处理应用篇(四):python如何使用numpy读取遥感图像光谱值)继续深入,对遥感图像做卷积运算处理 1.基本思路 1.1 设置卷积核 这里就用3*3大小的卷积核吧,可以根据需求任意设置卷积核数据达到图像均衡化、锐化、边缘增强等不同效果。 1.2 中心…

求助:MATLAB中实现卷积运算和理论分析中的卷积运算有什么区别?

MATLAB中实现卷积运算和理论分析中的卷积运算有什么区别。 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 …

通过具体的例子说明一维和二维的相关运算、卷积运算究竟是怎么做的。

在图像处理中,大量的算法中用到的运算其实都是相关运算和卷积运算。 所以,我们很有必要知道相关运算、卷积运算究竟是怎么做的。 本篇博文通过具体而简单的例子向大家说明相关运算、卷积运算究竟是怎么做的。 01-一维相关运算 下图显示了一维序列n与窗口…

卷积运算与互相关运算

在卷积神经网络中,虽然卷积层得名于卷积(convolution)运算,但我们通常在卷积层中使用更加直观的互相关运算(cross-correlation)运算。 卷积运算与互相关运算的联系 卷积运算与互相关运算类似。为了得到卷积运算的输出,只需将核数组左右翻转…

卷积运算(CNN卷积神经网络)

文章目录 图像卷积互相关运算卷积层图像中目标的边缘检测学习卷积核小结 图像卷积 最近学习到了卷积深度网络,有些本质概念太深暂时还没有理解透彻,现在主要记录下卷积神经网络中的一些计算。 以下介绍与计算均出自李沐老师的《动手学深度学习》&#…

java 怎么做卷积运算,入门教程之算法系列(二):卷积运算与模糊操作

卷积在信号处理领域有极其广泛的应用,也有严格的物理和数学定义。 OpenCV中对图像进行模糊操作,其背后的原理就是卷积运算,可是究竟卷积运算是什么,模糊的卷积算法又是如何实现的呢?本文将进行讨论。考虑到大部分读者的非专业性,本人将尽量不使用专业术语,而使用通俗易懂…

python实现卷积运算

一、卷积定义与朴素计算方法: 图1 卷积定义与计算方法 二、 Python代码实现 结合伪代码实现python代码如下(因为我是先写的代码,后才发现上面的伪代码,所以循环次序略有不同): import torch.nn as nn im…

卷积运算

卷积层 卷积的本质是用卷积核的参数来提取数据的特征,通过矩阵点乘运算与求和运算来得到结果。 下面给出一个基本的二维卷积的运算过程,即 y ω x b y \omega x b yωxb 特征图 ( x x x) 的大小为 1 x 5 x 5, 输入的通道数为 1.卷积核 ( ω \omeg…

深入浅出理解卷积运算

提起卷积运算相信大家都不陌生,这是一种很常见的运算。我们在学习《信号与系统》时就一直在和卷积打交道,在后来的一些课程中也有卷积运算的身影,比如《自动控制原理现代部分》中的卷积定理等。 在学习《信号与系统》时我们知道了卷积的定义&…

卷积计算——1. 关于卷积的基本概念

文章目录 卷积的基本概念卷积运算公式交换律分配律结合律数乘结合律 卷积核代码的基本框架 卷积的基本概念 卷积,是一个强有力的数学工具,在计算机领域中有很多非常不错的运用,能产生很多意想不到的效果和输出。 数学上,其连续函…

数(3)相关运算和卷积运算

目录 相关运算 卷积运算 连续信号 离散信号 卷积性质 卷积定理 (参考其他多篇博客,学习自用,侵删) 相关运算 相关运算是两个序列的相似性比较的一种数学运算。 公式里面的序列,可能是实数,可能是复数…

各种卷积方式的最全讲解

文章目录 一:卷积的定义二:标准卷积1.1D卷积Ⅰ:一维Full卷积Ⅱ:一维Same卷积Ⅲ:一维Valid卷积Ⅳ:三种一维卷积的相互关系 2.2D卷积3.3D卷积 三:转置卷积四:Separable卷积五&#xff…

深度学习(一):卷积运算

一、卷积核与池化: 1.1 卷积核(Convolutional): 将输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核(滤波器)。 一般可以看作对某个局部的…