计算机视觉-边缘检测

embedded/2024/12/22 12:26:43/

图片分类

一张图片中可能有多个需要识别的物体,会用方框标注他们的位置和类别
例:
给出一张照片,计算机需要从中识别出这是一只猫
在这里插入图片描述
一张图片的计算量是较大的,这张图片的尺寸虽然是6464,因为每张图片有3个颜色通道,所以实际的计算量是6464*3=12288。如果处理更大的照片,计算量会更大,特征向量的维度会更大。

风格迁移

神经网络画一张新的图片,轮廓是第一张图片的,风格采用第二张图片。
在这里插入图片描述

边缘检测

卷积如何计算
前几层的可能检测到图片的局部内容,再往后几层检测到图片更大的一部分内容,最后几层可能检测到图片的完整物体
在这里插入图片描述
例:
想让计算机识别图片中的物体
在这里插入图片描述
1.检测图片中的垂直边缘,比如图片中的栏杆和行人。页可以检测横向边缘
在这里插入图片描述
垂直边缘
横向边缘
横向边缘

计算机如何检测

下面是一张6*6的灰度图片
在这里插入图片描述
构造3×3的矩阵(过滤器),有的会称为核。
对6×6的图片进行卷积计算,与3×3矩阵卷积,会得到4×4的矩阵。(卷积一般用 * 号表示)
在这里插入图片描述
4×4矩阵的第一个格子是把3×3矩阵覆盖在6×6的左上角上,如下图。

(1,1)=3×1
(2,1)=1×1
(3,1)=2×1
用同样的方法得出覆盖处的每一个位置的值,并且把所有值相加,即
3×1+1×1+1+2×1+0×0+5×0+7×0+1×-1+8×-1+2×-1=-5
把-5填到 4×4的第一个位置
在这里插入图片描述
4×4的第二个方格
把3×3的矩阵往右移动一个单位。用上面的方法相加得到-4.
在这里插入图片描述
4×4 (另外一张图片)后面的数用同样的方法

  • 3×3往右移(如果是计算4×4的(2,1)则将左上角的3×3的矩阵往下移一个单位)
  • 计算6×6覆盖后的每一个方格的值
  • 将每个方格的值相加 得到4×4当前位置的数
    python中用conv_forward
    在这里插入图片描述

可以做垂直边缘检测的原因

例:
下面图片的左侧是10,代表相对比较亮的像素,右侧是0,代表相对比较暗的像素
在这张图片的垂直线在10到0的正中间
在这里插入图片描述
在这里插入图片描述
用3×3过滤矩阵卷积后,会得到下面的图片,其中30是由10+10+10得到的

在这里插入图片描述
如果把4×4矩阵转为图片是下面的样子,则会显示出中间的垂直边缘。因为这张图片较小,所以垂直边缘明显,如果是大的图片,垂直边缘会更窄

在这里插入图片描述
用3×3矩阵卷积,左侧是亮的(1,1,1),中间(0,0,0)不考虑,右边(-1,-1,-1)为灰色

区分正边和负边

下面图片把上面的图片翻转了,左边暗,右边亮。如果用同样的3×3矩阵过滤会得到中间是-30,即由暗转亮的边缘线
在这里插入图片描述

其他过滤器

这个矩阵上边亮,下面暗
在这里插入图片描述
例:
下面的矩阵通过水平过滤器得到下面的4×4矩阵
其中,橙色框的30是由6×6矩阵的橙色框得到的,可以看到上面亮,下面暗,所以是正值
而4×4矩阵的绿色框中的-30是由6×6矩阵的绿色框矩阵计算得到的,可以看到6×6绿色框中上面暗下面亮,所以是负值
在这里插入图片描述
如果图片尺寸大,中的边值会比较小,没有10那么大。
可以使用其他过滤器
在这里插入图片描述
优点:增加了中间的权值

在这里插入图片描述
可以用于垂直边缘检测,如果反过来可以得到水平边缘检测
在这里插入图片描述
矩阵中的所有值都设成参数,让神经网络去学习。可以检测任何角度的边缘


http://www.ppmy.cn/embedded/147816.html

相关文章

Java中正则表达式的介绍、使用场景及示例代码

一、前言 Java中的正则表达式是一种强大的文本处理工具,它允许你通过特定的模式来匹配、查找、替换或验证字符串。Java的正则表达式功能通过java.util.regex包提供,其中Pattern类表示编译后的正则表达式,而Matcher类则用于对输入字符串进行匹…

设计模式——原型模式

设计模式——原型模式 目录 设计模式——原型模式介绍实现总结 介绍 原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制现有的实例来创建新的对象,而不是通过 new 操作符来创建对象。原型模式的核心思想是通过“复制”…

String.prototype.padStart() 方法来实现日不足两位时补充零

你可以使用 String.prototype.padStart() 方法来实现日不足两位时补充零,这样代码更简洁。padStart() 会在字符串的前面填充指定的字符,直到字符串达到给定的长度。对于你的需求,padStart(2, 0) 会将 day 补充成两位数(如果 day 是…

在 Ubuntu 上安装 Nginx 的详细指南

在Ubuntu系统中从源码安装Nginx可以让您自定义Nginx的编译选项和模块,以满足特定需求。以下是详细的步骤指南: 前提条件 更新系统包列表 sudo apt update sudo apt upgrade -y安装必要的依赖包 sudo apt install -y build-essential libpcre3 libpcre3-…

抽象之诗:C++模板的灵魂与边界

引言 在计算机科学的浩瀚长河中,C模板如同一颗璀璨的星辰,以其独特的泛型编程方式为程序设计注入了灵魂。它是抽象的艺术,是类型的舞蹈,是效率与灵活性的交响乐。模板不仅是一种技术工具,更是一种哲学思考&#xff0c…

电商数据采集电商,行业数据分析,平台数据获取|稳定的API接口数据

电商数据采集可以通过多种方式完成,其中包括人工采集、使用电商平台提供的API接口、以及利用爬虫技术等自动化工具。以下是一些常用的电商数据采集方法: 人工采集:人工采集主要是通过基本的“复制粘贴”的方式在电商平台上进行数据的收集&am…

在 Ubuntu 上安装 Muduo 网络库的详细指南

在 Ubuntu 上安装 Muduo 网络库的详细指南 首先一份好的安装教程是非常重要的 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 像这篇文章就和shit一样,安装到2%一定会卡住,如果你不幸用了这个那真是遭老罪了 环境&#xf…

分布式专题(6)之MongoDB复制(副本)集实战及其原理分析

一、MongoDB复制集结构 在生产环境中,不建议使用单机版的MongoDB服务器。原因如下: 单机版的MongoDB无法保证可靠性,一旦进程发生故障或是服务器宕机,业务将直接不可用。一旦服务器上的磁盘损坏,数据会直接丢失&#x…