卷积神经网络 —— 图像卷积

2023-11-11

卷积神经网络是最具代表性的深度学习算法之一,目前已经被大范围的应用与计算机视觉等领域,并且取得了众多突破性的进展,在学习卷积神经网络之前,我们需要学习图像卷积运算。

图像卷积运算的作用

图像卷积运算是一种图像处理算法。通过它可以实现很多不同的效果。例如,模糊图像中的细节。
在这里插入图片描述
提取图像中的边缘和轮廓。
在这里插入图片描述
甚至把其变成浮雕效果。
在这里插入图片描述
那如何实现图像的卷积运算呢?

图像卷积运算的计算方法

数字图像在计算机中保存为一个矩阵,矩阵中每一个像素点的值就是图像中对应像素点的灰度值,对数字图像做卷积运算,
在这里插入图片描述
就是对图像中的每一个像素点,用它周围像素点的灰度值加权求和,从而调整这个点的灰度值。

首先,定义一个卷积核,卷积核也被称为卷积模板或卷积窗口。
在这里插入图片描述
卷积核是一个 n x n 的矩阵,卷积核的尺寸决定了卷积运算的范围。它应该是一个奇数,这样才有一个中心点。卷积核中的数字就是这个点和它周围点的权值。

例如,在上图这个 3 x 3 的卷积核中,中心点的权值是 1 ,周围点的权值都是 0。

在这里插入图片描述
说明图像中这个中心点的灰度值不受周围像素点的影响。卷积运算之后的灰度值仍然是它本身。

下图为一个 5 x 5 的卷积核,
在这里插入图片描述
说明图像中每个点的像素值受到它周围两圈像素值的影响。
在这里插入图片描述
卷积核中所有的权值都是 1/25 , 表明所有点的贡献都一样。
在这里插入图片描述
图像的卷积运算需要多层嵌套实现,运算速度比较慢。因此,一般采用比较小的卷积核。例如,3x3、5x5 或者 7x7 的。

进行图像卷积运算时,首先要卷积核与图像中的像素点一一对应,然后加权求和。
在这里插入图片描述
接着把得到的结果作为中心像素点的新的灰度值。

然后将卷积核从左向右,从上到下滑动。
在这里插入图片描述
就可以依次计算出每个像素点的取值,完成对整个图像的卷积运算。

可以发现,使用 3 x 3 的卷积核,卷积运算得到的新图像会比原图像稍微小一些。例如,这里的 12 x 12 的原图像,使用 3 x 3 的卷积核,卷积之后的输出图像是 10 x 10 的。
在这里插入图片描述
这是因为对于图像边界上的点,它们外面已经没有像素了,因此无法进行卷积运算。

使用 5 x 5 的卷积核时,最外面两层像素都无法进行卷积运算,得到的新图像会更小。
在这里插入图片描述
如果希望卷积运算得到的图像与原图的大小一致,可以在卷积运算之前,在图像周围填充一圈数字,如下图所示。
在这里插入图片描述
这样就可以计算图像边界处的卷积了。填充的数字不仅仅可以是0,还可以是 255 或者其他值。

例如,还可以将图像边界处的像素值直接向外延展,
在这里插入图片描述
如果使用 5 x 5 的卷积核,那么就需要向外填充两层。
在这里插入图片描述
卷积核在从左向右、从上到下滑动的过程中,一次移动的像素数称为卷积运算的步长。在前面的例子中,水平和垂直方向滑动的步长都是1,当步长为 2 时,每次移动的卷积核会跳过 2 个像素点。

显然,这时的输出图像会变的更小。
在这里插入图片描述

最极端的情况下,如果步长等于卷积核的边长 n ,那么就相当于对图像缩小了 n 倍。

例如,对于 12 x 12 的图像来说,使用 3 x 3 的卷积核,步长为 3 时,只能够计算下图中框出的这些像素的卷积。
在这里插入图片描述
因此,输出的图片是 4 x 4 的。

要注意的是,在信号处理领域中,卷积有着严格的数学定义,并且有着更加广泛的意义。 在这门课中,我们只要了解图像卷积运算的方法即可。

总结:卷积运算用(当前通道)图片中某个像素点周围的像素的灰度值加权求和来调整这个点的灰度值,卷积核的尺寸决定了周围像素的范围,卷积核中的数值表明了它们的权值,采用不同的卷积核能够产生不同的效果。

在这里插入图片描述

图像卷积

输出原图

在下图中,卷积核采用 3 x 3 的卷积核,这个卷积核只有中心点的权值为 1 ,其余点都是 0,表明图像中每个像素点的取值不会受到周围像素点的影响,卷积运算输出的结果就是原图。
在这里插入图片描述

均值模糊

下图这个卷积核,
在这里插入图片描述
将当前像素和它上下左右相邻的四个像素点一起求平均值,称为 4 邻域平均法。它使得图像变的模糊,一般来说,卷积核中所有元素之和应该等于 1 ,因为这样经过卷积运算之后,图像的亮度保持不变。

下图这个卷积核,
在这里插入图片描述
将当前像素和它相邻的八个像素点一起求平均值,称为 8 邻域平均法。它使得图像变的更模糊。

如果想要更强的模糊效果,可以加大卷积核的尺寸。下图为使用 5 x 5 的卷积核,均值模糊后的结果。
在这里插入图片描述
通过卷积运算,对图像进行模糊后,可以将图像中的高频噪声给过滤掉。因此,对图像的卷积运算也称为平滑或者滤波。卷积核也称为滤波器。

下图为对一张图片进行不同卷积核均值模糊后的结果。
在这里插入图片描述可以看到卷积核的尺寸越大,图像就越模糊。

由于均值模糊是对窗口中所有像素点求平均值,在图像的边缘或者纹理丰富的地方也会变得模糊。为了尽可能的保留图像中的边缘信息,可以给不同位置的像素点赋以不同的权值。距离中心点越近的像素,权值越大,而远离中心点的像素,权值也逐渐减少。

高斯模糊

在这里插入图片描述

高斯分布就是正态分布,下图为一维高斯函数。
在这里插入图片描述
下图为二维高斯函数。
在这里插入图片描述
取二维高斯函数的值作为卷积核

(详细操作过程可看该文章:https://blog.csdn.net/u013066730/article/details/123112159)

这是 3 x 3 的高斯卷积核,
在这里插入图片描述
下图为 5 x 5 的高斯卷积核,
在这里插入图片描述
可以看到,距离中心越近,权值越大。

对于下图,是分别进行均值模糊和高斯模糊之后的结果。
在这里插入图片描述
可以看到,高斯模糊在平滑物体表面的同时,能够更好的保持图像的边缘和轮廓。

边缘检测

图像边缘是图像中颜色、灰度或者亮度发生极具变化的区域边界,是图像最基本的、也是最重要的特征之一。
在这里插入图片描述
边缘检测实质上是计算当前点和周围点灰度的差别。

例如,有这样一张图片,
在这里插入图片描述
这是其中每个像素点的灰度值,
在这里插入图片描述
可以使用这样的卷积核来找到它的数值边缘。这个卷积核的作用就是用中心点右边的像素值减去其左边的像素值。
在这里插入图片描述
下图为卷积之后的结果。
在这里插入图片描述
可以看到,如果左右两边的灰度值一样,那么差值等于 0 ,也就是黑色。而在图案的边缘,灰度值差距比较大 ,就会得到一个高亮度的区域,差值越大,亮度越高。
在这里插入图片描述
因此,通过这个卷积核就可以找到垂直的边缘。

在这个卷积核中,所有的权值之和等于 0 ,运算之后的图像整体很暗,只有边缘的地方是有亮度的。

如果要检测水平的边缘,可以使用下图这个卷积核。
在这里插入图片描述
在这里插入图片描述
将以上两种卷积组合起来,就可以得到完整的边缘。这种卷积核被称为 Prewitt 算子。
在这里插入图片描述
除此之外,还有其他一些边缘检测算子。
在这里插入图片描述
它能够比较好的检测到 45° 角方向的边缘。
在这里插入图片描述
它在 Prewitt 算子的基础之上,增加了权重的概念,认为上下左右直线方向的距离大于斜线方向的距离。因此,它们(左右直线方向)的权值更大。
在这里插入图片描述
拉普拉斯算子,它通过对邻域中心像素的四方向或者八方向求梯度,再将梯度相加起来,从而判断中心像素灰度与邻域内其他像素灰度的关系。
在这里插入图片描述
它将高斯和拉普拉斯算子相结合,综合考虑了对噪声的抑制和边缘检测,它的抗干扰能力强。边界定位精度高。边缘连续性也更好。而且能够有效提取对比度弱的边界。在图像处理领域中,得到了广泛的应用。

下图为对 Lena 图像使用不同的边缘检测算子得到的结果。
在这里插入图片描述
在图像的边缘中,存在着有关图像的大量丰富的信息。

人类在看到物体时,视觉系统首先把图像边缘和背景分离出来,然后才辨认物体中的细节。在计算机视觉系统中,图像分析和理解的第一步常常就是边缘检测。通过边缘检测可以大幅度的减少数据量,在保留重要结构属性的同时,剔除掉不重要的弱相关的信息。

例如,下图所示,在使用淘宝的拍立淘功能时,
在这里插入图片描述
在搜索时,我们主要关心的是款式,而对于腰带、纽扣的细节可能并不是那么敏感。而衣服的款式信息更多的蕴含在衣服的外形、轮廓中。也就是说,我们希望保留衣服的边缘信息。而把颜色、商标之类的细节当作噪声过滤掉,显然,可以通过边缘提取和细节模糊的卷积核完成上述操作。

下图为使用 sobel 算子得到的女装边缘,
在这里插入图片描述
通过它可以快速的区分服装的类型。

举例:
在这里插入图片描述
在每一组图中,左上角加红色边框的是输入图片,其他是搜索得到的结果。

提取特征

图像的卷积运算可以看做是一种提取图像特征的方式,使用不同的卷积核就可以抽取出不同的图像特征。

例如,我们希望在输入图片中寻找到这样的一个线条特征,
在这里插入图片描述
只要为它量身定做一个这样的卷积核就可以了。
在这里插入图片描述
假设这是输入图像,使用卷积核扫描整个图像
在这里插入图片描述
在不匹配的区域内,卷积运算的输出值很小,当卷积窗口到达下图所示区域时,
在这里插入图片描述
会得到很大输出,就识别出了指定的线条特征。

在下面的这些图中,
在这里插入图片描述
虽然红色框中的线条稍有不同,但是使用这个卷积核仍然可以得到一个比较大的结果,而在图中的其他部分,卷积的计算结果都会非常小。甚至接近于 0 ,因此,仍然能够在一定程度上识别出指定的特征。

如果还需要识别出苹果的其他特征,那么就需要再设计其他的卷积核。
在这里插入图片描述
如果一幅图中同时满足了多个苹果的特征,我们就能够识别出简笔画中的苹果了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

卷积神经网络 —— 图像卷积 的相关文章

  • Docker如何安装seafile

    SQLite 方式 要在 Docker 中安装 Seafile 您可以按照以下步骤进行操作 安装 Docker 确保您的系统上已经安装了 Docker 您可以根据您的操作系统类型 在官方网站上找到适合您系统的 Docker 版本并进行安装
  • 数字化转型的趋势、挑战与战略【一】

    在全球经济进入数字化转型时期 数字化转型已成为传统企业必须付诸行动的必选题 企业为什么要进行数字化转型 如何把握数字化转型的时机 近日 在大华南IT高管共赢圈 大华南IT培训学院联合举办的 企业数据化转型的战略与规划 培训会上 IDC中国副
  • PyTorch:梯度计算之反向传播函数backward()

    一 计算图 计算图 是一种用来描述计算的有向无环图 我们假设一个计算过程 其中 X 1 mathbf X 1 X1 W 1
  • cmd更换主题配色

    cmd更换主题配色 去github下载colortool 地址 使用管理员打开cmd进入解压后的文件夹 执行命令 colortool exe b solarized light itermcolors 其他可选方案在schemes下 更换效

随机推荐

  • java反射基础巩固

    反射机制是在运行状态中 对于任意一个类 都能够知道这个类的所有属性和方法 对于任意一个对象 都能够调用它的任意一个方法和属性 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 一直以来反射技术都是Java中的闪亮点
  • 反射和多线程基础

    一 今日内容 1 1 课程回顾 1 2 反射是啥 1 3 进程和线程 1 4 线程的创建方式 1 5 线程的状态 1 6 线程的常用方法 二 课程回顾 Java的基本语法 1 数据类型 基本 引用 2 运算符 算术 逻辑 比较 赋值 位 三
  • 掌握的几种禁止转换八进制,十进制,十六进制

    1 十进制 除表示正负的符号外 以1 9开头 由0 9组成 如 128 234 278 2 八进制 以0开头 由0 7组成的数 如 0126 050000 3 十六进制 以0X或0x开头 由0 9 A F或a f 组成 如 0x12A 0x
  • 实训周笔记

    主机信息收集技术 基础知识 主要收集目标主机的相关信息 主要包括端口 服务 漏洞等信息 信息收集手段多样 可借助工具也多种多样 端口扫描 Nmap 主机信息收集技术 Nmap namp 192 168 1 1 namp A T4 v 192
  • proteus 问题--解决创建项目、打开项目:Error opening VSM Studio project STM32F401VE,无法查看Source Code,无法创建硬件项目

    问题描述 原因 安装软件的路径有中文 删掉所有东西后 重新下载即可 创建新项目 点击New Project 选择GCC for ARM这个配置项 也可以进入后在配置
  • qt如何触发点击事件_PyQt5事件处理机制(一)

    基于窗体的应用程序都是事件 event 驱动的 鼠标单击 按下某个按键 重绘某个组件 最小化窗口都会产生相应的事件 应用程序对这些事件作出相应的处理以实现程序的功能 常用的特定事件处理函数及方法示例代码 from PyQt5 Qt impo
  • 解读 Q_D, Q_Q 指针

    见 qglog h文件定义 define Q D Class Class Private const d d func define Q Q Class Class const q q func d指针是在主类中使用的 来获取私有子类成员指
  • STM32HAL库软件模拟SPI驱动0.96OLED屏幕,F1、F4系列通用,6pin和7pin模块通用

    本实验通过网上搜集的资料 整理出HAL库的SPI驱动 为了方便移植 选择采用软件模拟SPI通信来驱动OLED 本实验使用的OLED为7pin 默认通信模式为SPI 可以更改板上电阻更换为IIC模式 屏幕驱动芯片为SSD1306 模块简介 6
  • 代码流星雨

    什么是html html就是前端可以理解成为网页界面 不会但是想玩 可以在电脑桌面上建一个记事本然后把代码复制后粘贴在记事本里面 然后保存最后吧记事本 新建文本文档 tx 的后缀 就是重命名 改成html 新建文本文档 html 来自htm
  • 阀门与压力表同步代码

    using System Collections using System Collections Generic using UnityEngine public class Mmmmmm MonoBehaviour float sum
  • Elasticsearch 写入和查询优化底层原理

    一 Elasticsearch 写入原理 1 每个index 是由多个shard组成 默认是5个 每个shard有一个主节点和多个副本节点 分散在不同的物理节点上 2 写入数据的时候 先根据routing参数 以那个字段的值作为路由key
  • 入门级题解:704. 二分查找

    题目 给定一个 n 个元素有序的 升序 整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target 如果目标值存在返回下标 否则返回 1 暴力查找 直接找 遍历 直接尝试二分查找 递归应该要用 中间的值 a
  • 1_simulink简单入门_simulink仿真PID控制

    1 simulink简单入门 simulink仿真PID控制 2 simulink搭建RCL 电阻电感电容模块 毕业前想去做物联网还是或者linux 结果玩了一年多的电机控制 早就深知matlab simulink绕不过的 拖到现在 下班晚
  • attention机制(SE-Net、CBAM及Triplet)

    简介 注意力机制 Attention Mechanism 源于人类视觉的研究 在认知科学中 人类会选择性地关注所有信息的一部分 而忽略其他可见信息 为了合理利用有限的资源 就需要选择视觉区域的特定部分 并重点关注它 在神经网络中 atten
  • RabbitMQ 几种模式

    普通模式 一个生产者 一个交换机 一个队列 一个消费者 生产者 public class Send private final static String QUEUE NAME hello public static void main S
  • “csproj文件究竟是做什么用的”

    csproj文件大家应该不会陌生 那就是C 项目文件的扩展名 它是 C Sharp Project 的缩写 那么它究竟是给谁用的呢 那是给开发工具用的 例如我们在熟悉不过的Visual Studio 以及大家可以没有接触过 但是应该都听说过
  • adobe 软件(PS AI)占用内存过大问题

    adobe 软件 PS AI 占用内存过大问题 电脑是通过数据的交换来进行工作 CPU是处理数据交换的硬件 内存是暂时存储这些数据的硬件 电脑内存 RAM 容量越大你的数据交换能力就越强 就越能够完成复杂的任务 查看设备配置 操作系统 内存
  • 毕业设计-基于机器视觉的木材表面缺陷检测-OpenCV

    目录 前言 课题背景和意义 实现技术思路 一 表面缺陷分析及检测方案设计 二 表面缺陷图像识别 三 系统识别性能测试 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业
  • 【python】天平最少砝码设计

    题目 有一架天平 砝码的种类和个数要你来设计 给定一个整数n 则待称重的物品的重量可能是 1 n 之间的整数 砝码可以放在左盘也可以放在右盘 要能称出所有 1 n 重量的物品 请问如何设计砝码的种类和个数 使得这一套砝码的总个数最少 比如
  • 卷积神经网络 —— 图像卷积

    卷积神经网络是最具代表性的深度学习算法之一 目前已经被大范围的应用与计算机视觉等领域 并且取得了众多突破性的进展 在学习卷积神经网络之前 我们需要学习图像卷积运算 图像卷积运算的作用 图像卷积运算是一种图像处理算法 通过它可以实现很多不同的