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

news/2024/7/21 5:15:40 标签: python, 计算机视觉, 图像处理

第五章 深度学习

三、计算机视觉基本理论

请添加图片描述

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.niftyadmin.cn/n/5480087.html

相关文章

高质量数据赋能大模型应用落地,景联文科技提供海量AI大模型数据

随着人工智能技术的迅猛进步,AI算法持续创新突破,模型的复杂度不断攀升,呈现出爆炸性的增长态势。数据的重要性愈发凸显,已然成为AI大模型竞争的核心要素。 Dimensional Research的全球调研报告显示,72%的受访者认为&a…

C语言流程控制

程序三大结构:顺序,选择,循环 NS图,流程图,工具Dia 简单结构与复杂结构:自然流程 goto跳转 无条件跳转,可以跳转代码到指定的位置(慎用,无条件跳转,不能…

simulink的硬件支持下,串口发送的模型,stm32f407的串口程序调试错误

串口调试助手能接收到数据,为何是8个数据?如之奈何? 参考文章: STM32CubeMxMATLAB Simulink串口输出实验_用stm32cubemx生成的串口都是输出-CSDN博客根据 该文章发送字符串 hello,发送数量为5,接收也是he…

rancher踩坑日志-删除rancher接入后创建namespace失败(还继续走rancher的逻辑)

创建新的命名空间报错 [haimaKS-STAG-NODE01 ~]$ kubectl create namespace test01 Error from server (InternalError): Internal error occurred: failed calling webhook "rancher.cattle.io.namespaces.create-non-kubesystem": Post "https://rancher-web…

linux查看硬盘空间使用情况

df (1)查看磁盘空间的占用情况 -h是给大小带上单位 df -h 总空间不一定等于已用未用,系统可能留出来一点空间另做他用 (2)查看INode的使用情况 df -idu du命令比df命令复杂一点,是查看文件和目录占用的…

java的flatMap和map的区别

在Java中&#xff0c;flatMap是Stream API的一个中间操作&#xff0c;它可以将一个流中的每个元素转换成另一个流&#xff0c;然后将所有新生成的流连接成一个单一的流。这个操作通常用于处理嵌套的集合结构&#xff0c;比如List<List<T>>或类似的复杂结构&#xf…

linux中使用java NativeMemoryTracking

默认情况下&#xff0c;NMT是处于关闭状态的&#xff0c;我们可以通过设置 JVM 启动参数来开启&#xff1a;-XX:NativeMemoryTracking[off | summary | detail] 注意参数位置 java -XX:NativeMemoryTrackingdetail -jar xxxxx.jar summary&#xff1a;概要信息 detail&…

Anaconda 安装pytorch 问题

问题 clobbererror: this transaction has incompatible packages due to a shared path. packages: nvidia/win-64::cuda-cupti-11.8.87-0, nvidia/win-64::cuda-nvtx-11.8.86-0 path: ‘metadata_conda_debug.yaml’ 打开 cmd 输入 nvida-smi &#xff0c;可以看见本机的NI…