零基础入门卷积运算:计算机视觉的数学基础

卷积的理解、卷积公式的推导以及计算 卷积)是通过两个函数f和g生成第三个函数的一种数学运算,其本质是一种特殊的积分变换,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。(源于:百度百科)卷积是一种数学运算。既然卷积是一种数学运算,那么肯定有公式吧。我以信号与系统里的卷积公式来解释。连续LTI系统下的卷积公式为:离散LTI系统下的卷积公式为:看到这里依然云里雾里的,接下来我们一步步解释。LTI系统也叫线性时不变系统。 阅读详情

引言

在计算机视觉领域,卷积运算就像是一把神奇的钥匙,能够帮助我们打开图像特征提取的大门。它是许多强大的计算机视觉模型,如卷积神经网络(CNN)的核心组成部分。对于零基础的初学者来说,理解卷积运算的原理和应用是迈向计算机视觉领域的重要一步。

卷积运算

什么是卷积运算

数学定义

在数学中,卷积是一种通过两个函数生成第三个函数的数学运算。对于离散的一维信号 ( f[n] ) 和 ( g[n] ),它们的卷积 ( (f * g)[n] ) 定义为:

[ (f * g)[n] = \sum_{k = -\infty}^{\infty} f[k] g[n - k] ]

在计算机视觉中,我们通常处理的是二维图像,因此会用到二维卷积。对于二维图像 ( I(x,y) ) 和卷积核 ( K(u,v) ),二维卷积的定义为:

[ (I * K)(x,y) = \sum_{u = -\infty}^{\infty} \sum_{v = -\infty}^{\infty} I(u,v) K(x - u, y - v) ]

直观理解

可以将卷积运算想象成一个过滤器在图像上滑动,计算每个位置的加权和。卷积核是一个小的矩阵,它包含了一组权重。当卷积核在图像上滑动时,它会与图像的局部区域进行逐元素相乘,然后将这些乘积相加,得到一个新的值,这个值就是卷积结果在该位置的值。

卷积运算的步骤

1. 定义卷积核

卷积核是一个小的矩阵,它的大小通常是奇数,例如 ( 3\times3 ) 或 ( 5\times5 )。卷积核的元素值决定了它对图像的滤波效果。以下是一个简单的 ( 3\times3 ) 卷积核的示例:

import numpy as np

# 定义一个 3x3 的卷积核
kernel = np.array([[1, 0, -1],
                   [1, 0, -1],
                   [1, 0, -1]])
2. 填充(Padding)

为了避免在卷积过程中图像的边界信息丢失,我们可以对图像进行填充。常见的填充方式有零填充(Zero Padding),即在图像的边界周围填充零值。以下是一个使用零填充的示例:

# 定义一个简单的图像
image = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])

# 进行零填充
padded_image = np.pad(image, ((1, 1), (1, 1)), mode='constant', constant_values=0)
3. 卷积操作

将卷积核在填充后的图像上滑动,计算每个位置的卷积结果。以下是一个简单的二维卷积的实现:

def convolve2D(image, kernel, padding=0, strides=1):
    # 获取图像和卷积核的尺寸
    image_height, image_width = image.shape
    kernel_height, kernel_width = kernel.shape

    # 计算输出图像的尺寸
    output_height = int((image_height + 2 * padding - kernel_height) / strides) + 1
    output_width = int((image_width + 2 * padding - kernel_width) / strides) + 1

    # 对图像进行填充
    padded_image = np.pad(image, ((padding, padding), (padding, padding)), mode='constant', constant_values=0)

    # 初始化输出图像
    output = np.zeros((output_height, output_width))

    # 进行卷积操作
    for y in range(0, output_height):
        for x in range(0, output_width):
            # 提取当前卷积区域
            image_region = padded_image[y * strides:y * strides + kernel_height, x * strides:x * strides + kernel_width]
            # 计算卷积结果
            output[y, x] = np.sum(image_region * kernel)

    return output

# 进行卷积操作
result = convolve2D(image, kernel, padding=1, strides=1)

卷积运算的应用

图像滤波

卷积运算可以用于图像滤波,例如边缘检测、模糊等。不同的卷积核可以实现不同的滤波效果。以下是一些常见的卷积核及其应用:

卷积核名称卷积核矩阵应用
边缘检测(Sobel 算子)( \begin{bmatrix} -1 & 0 & 1 \ -2 & 0 & 2 \ -1 & 0 & 1 \end{bmatrix} )检测图像中的边缘
模糊(均值滤波)( \frac{1}{9} \begin{bmatrix} 1 & 1 & 1 \ 1 & 1 & 1 \ 1 & 1 & 1 \end{bmatrix} )对图像进行模糊处理
锐化( \begin{bmatrix} 0 & -1 & 0 \ -1 & 5 & -1 \ 0 & -1 & 0 \end{bmatrix} )增强图像的边缘和细节

以下是一个使用 Sobel 算子进行边缘检测的示例:

# 定义 Sobel 算子的卷积核
sobel_x = np.array([[-1, 0, 1],
                    [-2, 0, 2],
                    [-1, 0, 1]])

sobel_y = np.array([[-1, -2, -1],
                    [0, 0, 0],
                    [1, 2, 1]])

# 进行卷积操作
edge_x = convolve2D(image, sobel_x, padding=1, strides=1)
edge_y = convolve2D(image, sobel_y, padding=1, strides=1)

# 计算边缘强度
edge_strength = np.sqrt(edge_x**2 + edge_y**2)
特征提取

在卷积神经网络中,卷积层通过卷积运算提取图像的特征。不同的卷积核可以提取不同类型的特征,例如纹理、形状等。通过多层卷积层的堆叠,可以逐渐提取出更高级的特征。

卷积运算的参数

卷积核大小

卷积核的大小决定了它对图像的局部感受野。较大的卷积核可以捕捉更广泛的图像信息,但计算量也会相应增加。常见的卷积核大小有 ( 3\times3 )、( 5\times5 ) 等。

步长(Stride)

步长决定了卷积核在图像上滑动的间隔。较大的步长可以减少输出特征图的尺寸,但可能会丢失一些信息。例如,当步长为 2 时,卷积核每次滑动 2 个像素。

填充(Padding)

填充可以控制卷积后输出特征图的尺寸。零填充可以使输出特征图的尺寸与输入图像的尺寸相同,而不进行填充则会使输出特征图的尺寸变小。

总结

卷积运算是计算机视觉中的重要数学基础,它通过卷积核在图像上的滑动计算,实现了图像滤波、特征提取等功能。本文介绍了卷积运算的数学定义、步骤、应用以及相关参数。通过学习和实践卷积运算,你可以更好地理解计算机视觉模型的工作原理,并为进一步学习卷积神经网络打下坚实的基础。

希望这篇文章能够帮助你零基础入门卷积运算,开启计算机视觉的学习之旅!

卷积计算过程详解(含图示和代码) 卷积是一种数学运算,通过两个函数f和g生成第三个函数,其本质是一种特殊的积分变换,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。卷积在泛函分析中扮演重要角色,可以被看作是“滑动平均”的推广。在信号处理和图像处理等领域,卷积常用于描述一个动态过程,用简单的数学形式描述过去作用对当前的影响。在卷积神经网络中,卷积层的实现方式实际上是数学中定义的互相关 (cross-correlation)运算,与数学分析中的卷积定义有所不同。 阅读详情

相关推荐

全网最全的卷积运算过程

卷积运算 1.卷积核的通道(也叫滤波器)的个数得与被卷积的图片通道数相同 eg:输入图片是1024×1024×3,即通道数为3,那么每个卷积核得有3个通道 2.卷积核做的是线性运算,核上的每个值与它滑动到的对应位置上的值相乘,然后把这些值相加。 eg:默认滑动步长为1 用右边的9个格放到原图上,9个9个的不重复的走 先从左向右滑: 输出的第一个值为 2×1+8×0+9×2+1×1+2×0+8×1+7×3+7×0+2×0=50 输出的第二个值为 8×1+9×0+1×2+2×1+8×0+3×1+7×3+2×0+

Lucinda6的博客 3万+

(pytorch-深度学习系列)卷积神经网络中的填充(padding)和步幅(stride)

卷积神经网络中的填充(padding)和步幅(stride) 之前写过一篇blog,描述CNN网络层的输入和输入尺寸的计算关系,但是并没有描述的很全面,这里全面描述了影响输出尺寸的两个超参数padding和stride,查阅了相关资料,编码理解了pytorch中CNN网络的输入输出关系。 对于CNN网络,一般来说,假设输入形状是nh×nwn_h\times n_wnh​×nw​,卷积核窗口形状是kh×kwk_h\times k_wkh​×kw​,那么输出形状将会是 (nh−kh+1)×(nw−kw+1).(

我亦是行人 6599

计算机视觉 - 理论 - 从卷积到识别

结合数学公式以及实例,简明讲解计算机视觉中八类基础操作:卷积、边缘检测、拟合、角点检测、Blob、纹理、分割、识别。

buptsd的博客 2985

卷积、去卷积

1,离散卷积 2个空间A和B,把其中的元素按照位置一一对应,相乘,所有的乘积的和就是A和B的卷积 2,积分卷积 对于二维甚至多维空间的积分卷积,定义同理。 实际上,离散卷积和积分卷积的本质是一样的,可以轻松互相转化。 3,高斯卷积 如果指定g为高斯函数,那么卷积h就是f的高斯卷积。 常见的就是一维和二维的高斯函数,即一维和二维的正态分布。 离散化: 如5*5的高斯卷积 4,高斯模糊 利用高斯卷积,每个像素值都变成原图的加权平均值,得到的就是高斯模糊之后的图片。 ..

nameofcsdn的博客 1万+

计算机视觉学习路线图:从入门到专家

计算机视觉学习路线图:从入门到专家​ ,人工智能,计算机视觉,大模型,AI,计算机视觉学习路线图从七方面展开。先强调数学基础,含线性代数、概率统计和微积分;接着介绍 Python、OpenCV 等编程语言与工具;涵盖边缘检测、特征提取等经典算法;阐述深度学习中 CNN 结构、经典模型及实现;涉及目标检测、图像分割等高级专题;包含图像分类、目标检测和人脸识别等项目实战;最后提及科研进阶的论文阅读、项目参与和论文发表,助学习者从入门到专家。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

计算机视觉所需要的数学基础

计算机视觉领域中使用的数学知识广泛而深入,以下是一些关键知识点及其在计算机视觉中的应用:

计算机视觉之光 2193

卷积神经网络算法原理(卷积层,卷积运算,填充,步幅,经过卷积运算后的特征图大小,池化层,最大池化,平均池化,经过池化层运算后的特征图大小)

深度学习三大领域:大数据与数据挖掘、计算机视觉、自然语言处理;在计算机视觉中,卷积神经网络(CNN)扮演着重要角色,用来提取图像的特征;卷积神经网络是深度学习中极其重要的神经网络模型,在此基础上发展成计算机视觉领域,目前计算机神经有图像分类、目标检测、图像分割等分支,其落地项目也很多。其中大部分算法都是在卷积神经网络的基础上进行改进而成,想学习好卷积神经网络需要配合各种网络模型图去理解。

每一个不曾起舞的日子,都是对生命的辜负 2957

微生物测序分析LEfSe

LEfse分析定义 LEfse分析即LDA Effect Size分析,可以实现多个分组之间的比较,还进行分组比较的内部进行亚组比较分析,从而找到组间在丰度上有显著差异的物种(即biomaker);

宁生信 5万+

零基础小白,如何入门计算机视觉?

计算机视觉是一门研究如何使机器“看”的科学,具体来说是利用摄像机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。它旨在建立能够从图像或者多维数据中获取“信息”的人工智能系统,这些信息可以用来帮助做出决策。计算机视觉是人工智能领域的一个重要部分,它涉及图像处理技术、信号处理技术、概率统计分析、计算几何、神经网络、机器学习理论和计算机信息处理技术等多个方面。

a910247的博客 3012

浪涌电流测试仪的工作原理

浪涌电流脉冲形成的开始由同步电路 13 确定,该同步电路 13 发送命令以打开和第二开关 10 和 11,向发生器 14 发送控制命令以生成被测半导体器件 5 的控制信号和参考信号整形器 9 的触发脉冲。电流源的功率输出并联连接,以对流经被测半导体样品的电流求和。此外,使用数字控制扩展了测试仪的功能,能够产生各种形状的电流脉冲,例如梯形电流脉冲,以估计被测晶闸管的导通状态扩展时间。由于晶体管3的栅极是连接的,并且平衡电阻4包含在晶体管3的源中,因此通过每个晶体管3的电流脉冲大致相同,并重复参考信号的形状。

Jesse0257的博客 1255

更改训练好的yolo模型中的class类名,无需重新训练

本文介绍了如何在不重新训练YOLO模型的情况下修改其类名的技巧。关键点在于理解YOLO类名存储逻辑:类名列表(names)存储在配置文件中(.yaml),而非权重文件(.pt)。通过修改配置文件的类名列表(保持类别数量nc不变),即可实现类名更新。具体步骤包括:1)准备修改后的配置文件;2)加载模型并更新类名;3)验证推理结果。该方法适用于YOLOv5/YOLOv8等版本,能有效节省开发时间,适用于类名表述调整、多场景复用等需求。注意:增减类别需重新训练,仅修改类名时需确保类别数量一致。

yolo模型训练找我,AI游戏合作找我 880

【计算机视觉】万字长文详解:卷积神经网络

如果输入层和隐藏层和之前一样都是采用全连接网络,参数过多会导致过拟合问题,其次这么多的参数存储下来对计算机的内存要求也是很高的解决这一问题,就需要用到——卷积神经网络这是一种理解卷积的角度(至少在吴恩达老师这个教学视频中是),也是我之前没有想到的。其实在该刚开始接受卷积神经网络时,我一直很想弄清卷积的真正含义,为此也学习了一些,后续有打算写一个博客专门讲卷积的含义,敬请期待!需要注意两点池化层的超参数是人工设定的,不需要通过训练从而学习得到。

Yaoyao2024的博客 9761

基于STM32单片机设计的智能水温控制系统

本项目研究并实现了一种基于STM32单片机的智能水温控制系统。系统以STM32F103RCT6作为主控制器,通过DS18B20温度传感器实时采集水温数据,利用PID控制算法精确调节5V直流防水型70W加热棒的功率输出,确保水温恒定在设定范围内。此外,采用OLED显示屏显示当前水温和预设上限阀值,并集成ESP8266-WiFi模块与自研Android手机APP进行远程通信和控制。用户可通过本地按键或手机APP设置温度阀值,实现实时监控与智能化管理。整个系统设计旨在提高水资源利用效率,提升生活及工业用水环境的舒

8790

深度学习基础—卷积运算

在计算机视觉领域,卷积运算撑起了半边天,因此在学习计算机视觉前,首先来了解一下卷积运算是如何运算的。假设正在进行边缘检测,垂直边缘检测会把图片中接近垂直的边缘提取出来,即人的侧边、栏杆等。而水平边缘检测会把图片中接近水平的边缘提取出来,即横杆、自行车轮的上侧等。现在以垂直边缘检测为例,解释一下卷积运算是如何进行的?卷积运算用*符号表示,一张图片表示的矩阵*一个过滤器(或被称为核,在图像处理领域又被称为滤波器)=新的图片表示的矩阵。

sniper_fandc的博客 2114

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 368

三维重建(十三)——多视角重建

本文综述了多视角三维重建技术,涵盖静态和动态场景的重建方法。介绍了从图像获取到纹理映射的SFM流程,以及非刚性重建(NRSFM)的挑战和解决方案。重点探讨了基于可微渲染的重建方法,以及数据采集策略、相机标定和同步技术。文章还讨论了如何用单视角相机模拟多视角重建,总结了关键技术和未来研究方向。

河海大学研究生在读的学习笔记 1058

卷积神经网络与计算机视觉:从数学基础到实战应用

本文深入解析卷积神经网络(CNN)的核心原理及其在计算机视觉中的应用。首先介绍卷积与互相关的数学定义及在神经网络中的实际应用差异,接着从系统设计视角分析卷积的线性代数表示(托普利兹矩阵与双块循环矩阵)。

2501_90186640的博客 1465

华为OD机试真题 新系统 2026-09-06 Python&JS【仓储货物有序出库】

某仓储中心有一个货物堆放区,货物编号按乱序堆叠存放,只能从顶部取货,管理员需要将货物按编号从小到大取出。

MISAYAONE的博客 114

卷积神经网络 - 卷积运算篇

在探索深度学习尤其是计算机视觉领域的奥秘时,卷积神经网络(Convolutional Neural Networks, CNNs)无疑占据了核心地位。而卷积运算,作为CNN中最基础也是最关键的组成部分,更是其能够高效提取图像特征、实现卓越性能的关键所在。卷积运算不仅深刻影响了CNN的架构设计,也为我们理解图像数据、构建更加智能的视觉系统提供了有力的工具。

绎岚科技的博客 3194

ZYNQ BRAM实现PS与PL数据交互

有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现此要求。本章通过Zynq的GP Master接口读写PL端的BRAM,实现与PL的交互。在本实验中加入了自定义的FPGA程序,并利用AXI4总线进行配置,通知其何时读写BRAM。以下为本实验原理图,CPU通过AXI BRAM Controller读取BRAM数据,CPU仅配置自定义的PL BRAM Controller 的寄存器,不通过它读写数据。

baidu_34971492的博客 2276

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机视觉入门与调优

大家好啊,我是董董灿。在 优快云 上写文章写了有一段时间了,期间不少小伙伴私信我,咨询如何自学入门AI,或者咨询一些AI算法。90%的问题我都回复了,但有时确实因为太忙,没顾得过来。在这个过程中,我发现很多小伙伴问的问题都类似:比如如何入门计算机视觉,某某算法是做什么的,有什么作用。之前写的文章由于过于分散,不成体系,很多知识点没有串联起来。然后依托Resnet50这一经典图像分类网络,将涉及到的算法都剖析和实现一遍,最后亲自完成该神经网络的搭建,并带你完成任意图像的识别。

通俗易懂的 AI 技术 2357

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

计算机视觉入门 2)卷积和ReLU

介绍在计算机视觉中卷积和激活函数的概念及应用。

WHYbeHERE的博客 1269

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

卷积神经网络之计算机视觉应用(一)

卷积神经网络之计算机视觉应用(一) 一 引言 21世纪开始,卷积神经网络就被成功的大量用于检测、分割、物体识别以及图像的各个领域。值得一提的是,图像可以在像素级别进行打标签,这样就可以应用在比如自动电话接听机器人、自动驾驶汽车等技术中。尽管卷积神经网络应用的很成功,但是它被计算机视觉以及机器学习团队开始重视是在2012年的ImageNet竞赛。在该竞赛中,深度卷积神经网络被用在上百万张网

m0_38031488的博客 1万+

计算机视觉需要哪些数学基础?如何高效学习线性代数和概率论?

大家好,我是唐宇迪,人工智能在线教育机构资深AI讲师和学习规划师,专注计算机视觉(CV)和AI教学多年。带过无数零基础学员转行CV算法岗、工程岗,帮他们从数学小白到能独立做项目、拿offer。今天,我们来聊聊一个很多人转行CV时最头疼的问题——数学基础。如果你是零基础想转行CV的学员,可能正纠结:“我数学底子差,高数都忘光了,还能学CV吗?”或者“我需要从头啃大学数学书吗?那得花几年啊!”别慌,我告诉你实话:CV确实需要数学,但远没有你想象中那么恐怖。

tangyudi001的博客 716

零基础入门:计算机视觉需要哪些数学基础?如何高效学习线性代数和概率论?

img=np.array([[100,150],[200,250]])# 简单2x2图像transform=np.array([[0,-1],[1,0]])# 旋转矩阵new_img=np.dot(transform,img)# 矩阵乘法print(new_img)周3-4:线性变换、逆矩阵。1. 几何变换(矩阵乘法、逆矩阵):用处:图像旋转、缩放、仿射变换(手机美颜、AR试妆)。我见过太多学员:文科生、程序员转行、甚至中年职场人,一开始怕公式如怕虎,但跟着正确路线,结合代码和图像实践,很快就爱上数学了。

2601_95542738的博客 47

计算机视觉入门到实战系列(一)卷积

本文介绍了卷积神经网络中的一维和二维卷积原理及其应用。一维卷积处理序列数据(如音频、文本),通过一维滑动窗口提取局部特征;二维卷积处理网格数据(如图像),通过二维滑动提取空间特征。文章详细解释了两种卷积的计算过程、输出形状公式及典型应用场景,并提供了直观类比帮助理解。最后通过Python代码实现了一维卷积的示例,展示了输入信号与卷积核的交互过程。两种卷积的核心区别在于处理数据结构的维度不同,分别适用于时序模式和空间模式的提取任务。

echo的博客 1213
上一篇: 线性回归的数学原理:从公式到代码实现
下一篇: AI数学不用愁:这5个工具帮你轻松搞定公式推导
小棠师姐
博客等级 码龄2年 28粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值