Python 全栈体系【四阶】(二十五)

news2024/11/25 20:56:17

第五章 深度学习

三、计算机视觉基本理论

请添加图片描述

11. 图像梯度处理

11.1 什么是图像梯度

图像梯度计算的是图像变化的速度。对于图像的边缘部分,其灰度值变化较大,梯度值也较大;相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小。一般情况下,图像梯度计算的是图像的边缘信息。

11.2 模板运算

模板(滤波器)是一个尺寸为 n*n 的小图像 W(n 一般取奇数,称为模板尺寸),每个位置上的值 w 被称为权重。在进行计算时,将模板的中心和像素 P 对齐,选取原始图像中和模板相同范围的邻域 N 的像素值作为输入。

模板卷积的计算是将对齐后的对应位置像素相乘,再进行累加作为像素 P 位置的输出值。记原始图像的像素灰度值为 s, 计算后的值为 d, 则 P 点的输出值 d = ∑ w i s i ∑ w i d = \frac{\sum w_i s_i}{\sum w_i} d=wiwisi

模板排序的计算时将邻域 N 的像素值进行排序,选择特定次序的灰度值,作为像素 P 位置的输出值,如最大值、最小值、中位数等。

11.3 均值滤波

均值滤波指模板权重都为 1 的滤波器。它将像素的邻域平均值作为输出结果,均值滤波可以起到图像平滑的效果,可以去除噪声,但随着模板尺寸的增加图像会变得更为模糊。经常被作为模糊化使用。

请添加图片描述

11.4 高斯滤波

为了减少模板尺寸增加对图像的模糊化,可以使用高斯滤波器,高斯滤波的模板根据高斯分布来确定模板系数,接近中心的权重比边缘的大。5 的高斯滤波器如下所示:
请添加图片描述

11.5 中值滤波

中值滤波属于模板排序运算的滤波器。中值滤波器将邻域内像素排序后的中位数值输出代替原像素值。它在实现降噪操作的同时,保留了原始图像的锐度,不会修改原始图像的灰度值。

中值滤波的使用非常普遍,它对椒盐噪声的抑制效果很好,在抑制随机噪声的同时能有效保护边缘少受模糊。但中值滤波是一种非线性变化,它可能会破坏图像中线性关系,对于点、线等细节较多的图像和高精度的图像处理任务中并不太合适。

请添加图片描述

11.6 边沿检测

通过梯度计算可以获取图像中细节的边缘。为在锐化边缘的同时减少噪声的影响,通过改进梯度法发展出了不同的边缘检测算子:

  • 一阶梯度:Prewitt 梯度算子、Sobel 梯度算子
  • 二阶梯度:Laplacian 梯度算子
    请添加图片描述

边沿检测效果
请添加图片描述

11.7 锐化

图像锐化与图像平滑是相反的操作,锐化是通过增强高频分量来减少图像中的模糊,增强图像细节边缘和轮廓,增强灰度反差,便于后期对目标的识别和处理。锐化处理在增强图像边缘的同时也增加了图像的噪声。

将求取的边缘按照一定系数比例叠加到原始图像上,即可实现对图像的锐化操作。例如使用 Laplacian 梯度算子进行锐化操作的模板,其中 A 是大于等于 1 的系数。

请添加图片描述

请添加图片描述

12. 图像轮廓

12.1 什么是图像轮廓

边缘检测虽然能够检测出边缘,但边缘是不连续的,检测到的边缘并不是一个整体。

图像轮廓是指将边缘连接起来形成的一个整体,用于后续的计算。

图像轮廓是图像中非常重要的一个特征信息,通过对图像轮廓的操作,我们能够获取目标图像的大小、位置、方向等信息。

图像轮廓操作包括:查找轮廓、绘制轮廓、轮廓拟合等。

12.2 查找和绘制轮廓

一个轮廓对应着一系列的点,这些点以某种方式表示图像中的一条曲线,将这些点绘制成不同样式的线条,就是轮廓查找与绘制。

在这里插入图片描述

12.3 轮廓拟合

在计算轮廓时,可能并不需要实际的轮廓,而仅需要一个接近于轮廓的近似多边形,绘制这个近似多边形称之为轮廓拟合。

12.4 矩形包围框

在这里插入图片描述

12.5 最小包围圆形

在这里插入图片描述

12.6 最优拟合椭圆

在这里插入图片描述

12.7 逼近多边形

在这里插入图片描述

13. 综合案例

请添加图片描述

13.1 任务描述

我们对图像中的目标进行分析和检测时,目标往往具有一定的倾斜角度,自然条件下拍摄的图像,完全平正是很少的。因此,需要将倾斜的目标“扶正”的过程就就叫做图像矫正。该案例中使用的原始图像如下图所示。
在这里插入图片描述

13.2 代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13.3 校正效果

在这里插入图片描述

14. 图像预处理在 AI 中的应用

14.1 图像预处理在 AI 中的应用

图像预处理的目的,是让图像数据更适合 AI 模型进行处理,例如调整大小、颜色。

通过图像预处理技术,实现数据集的扩充,这种方法称为数据增强。数据增强主要方法有:缩放,拉伸,加入噪点,翻转,旋转,平移,剪切,对比度调整,通道变化。

14.2 图像数据增强

请添加图片描述

14.3 纯图像技术的缺陷

到目前为止,我们使用的基本是纯图像技术,对图像大小、颜色、形状、轮廓、边沿进行变换和处理,但这些技术都有一个共同的缺点,即无法理解图像内容和场景,要实现这个目标,必须借助于深度学习技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1582783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯复习笔记

文章目录 gridflexhtml表格合并单元格 表单表单元素input类型 select h5文件上传拖拽apiweb Storage css块元素和行内元素转换positionfloat溢出显示隐藏外边距过渡和动画动画变形选择器属性选择伪类选择器 css3边框圆角边框阴影渐变text-overflow与word-wrap jsdom操作documen…

一键下载安装并自动绑定,Xinstall让您的应用推广更高效

在如今的移动互联网时代,应用的下载安装与绑定是用户体验的关键一环。然而,繁琐的操作步骤和复杂的绑定流程往往让用户望而却步,降低了应用的下载和使用率。为了解决这一难题,Xinstall应运而生,为用户提供了一种全新的…

gradio简单搭建——关键词匹配筛选

gradio简单搭建——关键词匹配筛选 界面搭建数据处理过程执行效果展示 上一节使用DataFrame中的apply方法提升了表格数据的筛选效率,本节使用gradio结合apply方法搭建一个关键词匹配筛选的交互界面。 界面搭建 import gradio as gr import pandas as pd from file…

C语言指针—二级指针和指针数组

二级指针和指针数组 二级指针 指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里? 这就是二级指针 。 int main() {int a 10;int* pa &a;//pa是一个指针变量,同时也是一个一级指针变量*pa 20;//此时解引用pa…

021——搭建TCP网络通信环境(c服务器python客户端)

目录 前言 服务器程序 服务器程序验证过程 客户端程序 前言 驱动开发暂时告一段落了。后面在研究一下OLED和GPS的驱动开发,并且优化前面已经移植过来的这些驱动,我的理念是在封装个逻辑处理层来处理这些驱动程序。server直接操作逻辑处理层的程序。 …

统信UOS(Linux)安装nvm node管理工具

整篇看完再操作,有坑!! 官网 nvm官网 按照官网方式安装,一直报 错 经过不断研究,正确步骤如下 1、下载安装包 可能因为网络安全不能访问github,我是链接热点下载的 wget https://github.com/nvm-sh/…

基于springboot+vue+Mysql的职称评审管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Mac安装配置ElasticSearch和Kibana 8.13.2

系统环境:Mac M1 (MacOS Sonoma 14.3.1) 一、准备 从Elasticsearch:官方分布式搜索和分析引擎 | Elastic上下载ElasticSearch和Kibana 笔者下载的是 elasticsearch-8.13.2-darwin-aarch64.tar.gz kibana-8.13.2-darwin-aarch64.tar.gz 并放置到个人…

序列化、反序列化:将对象以字节流的方式,进行写入或读取

序列化:将指定对象,以"字节流"的方式写入一个文件或网络中。 反序列化:从一个文件或网络中,以"字节流"的方式读取到对象。 package com.ztt.Demo01;import java.io.FileNotFoundException; import java.io.Fi…

C++的stack和queue类(一):适配器模式、双端队列与优先级队列

目录 基本概念 适配器模式 stack.h test.cpp 双端队列-deque 仿函数 优先级队列 基本概念 1、stack和queue不是容器是容器适配器,它们没有迭代器 2、stack的quque的默认容器是deque,因为: stack和queue不需要遍历&#xff0…

基于SSM+Jsp+Mysql的农产品供销服务系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

0基础想进入IT行业,可以从这个框架入手

行业现状 IT、AI都是很多年来的热门话题,以至于时至今日,哪怕IT行业已经卷成狗,依然有无数的人想要挤进这个行业。 大模型、云原生、react等等,无数的技术、概念应运而生。那么作为一个没有基础的人,该如何进入这个行…

第十四届蓝桥杯模拟考试II_物联网设计

还是要稳妥啊,写A板的时候感觉很简单所以将模块都混在一起了,结果不出意外就出BUG了又得从头开始查BUG,多简单的题模块最好都分块写写完就检查,这样一步一个脚印多稳 这个模块出了俩BUG第一个是要检查有没有数据进入if语句,不然标…

Kubernetes(k8s)监控与报警(qq邮箱+钉钉):Prometheus + Grafana + Alertmanager(超详细)

Kubernetes(k8s)监控与报警(qq邮箱钉钉):Prometheus Grafana Alertmanager(超详细) 1、部署环境2、基本概念简介2.1、Prometheus简介2.2、Grafana简介2.3、Alertmanager简介2.4、Prometheus …

OpenCV | 图像读取与显示

OpenCV 对图像进行处理时,常用API如下: API描述cv.imread根据给定的磁盘路径加载对应的图像,默认使用BGR方式加载cv.imshow展示图像cv.imwrite将图像保存到磁盘中cv.waitKey暂停一段时间,接受键盘输出后,继续执行程序…

力扣面试150 分发糖果 分步贪心

Problem: 135. 分发糖果 思路 👨‍🏫 参考:代码随想录 一次是从左到右遍历,只比较右边孩子评分比左边大的情况。一次是从右到左遍历,只比较左边孩子评分比右边大的情况。 复杂度 时间复杂度: O ( n ) O(n) O(n) …

代码随想录算法训练营第三十六天| LeetCode 435. 无重叠区间、763.划分字母区间、56. 合并区间

一、LeetCode 435. 无重叠区间 题目链接/文章讲解/视频讲解:https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html 状态:已解决 1.思路 本题的局部最优是尽量移除与某个区间重叠的其他区间,全局最优是移除的…

构建强健身体的未来:健身管理平台微服务架构解析

在现代社会,人们越来越关注健康和身体素质的提升。健身管理平台应运而生,为用户提供个性化的健身计划、监测和管理工具。微服务架构作为一种灵活且可扩展的系统设计方法,为健身管理平台提供了高效、可靠的基础。 1. 概述健身管理平台微服务架…

Open CASCADE学习|统计形状拓扑数量

边界表示法(Boundary Representation,简称B-Rep)是几何造型中最成熟、无二义的表示法。它主要用于描述物体的几何信息和拓扑信息。在边界表示法中,一个实体(Solid)由一组封闭的面(Face&#xff…

创建大量栅格文件并分别写入像元数据:C++ GDAL代码实现

本文介绍基于C语言GDAL库,批量创建大量栅格遥感影像文件,并将数据批量写入其中的方法。 首先,我们来明确一下本文所需实现的需求。已知我们对大量遥感影像进行了批量读取与数据处理操作——具体过程可以参考文章C GDAL提取多时相遥感影像中像…