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

第五章 深度学习

三、计算机视觉基本理论

请添加图片描述

1. 计算机视觉概览

1.1 什么是计算机视觉

计算机视觉在广义上是和图像相关的技术总称。包括图像的采集获取,图像的压缩编码,图像的存储和传输,图像的合成,三维图像重建,图像增强,图像修复,图像的分类和识别,目标的检测、跟踪、表达和描述,特征提取,图像的显示和输出等等。

随着计算机视觉在各种场景的应用和发展,已有的图像技术也在不断的更新和扩展。

1.2 计算机视觉的应用

计算机视觉技术已经在许多领域得到了广泛的应用,以下是一些典型的例子:

  • 公安安防:人脸识别,指纹识别,场景监控,环境建模。
  • 生物医学:染色体分析,X 光、CT 图像分析,显微医学操作。
  • 文字处理:文字识别,文档修复,办公自动化,垃圾邮件分类。
  • 国防军事:资源探测,军事侦察,导弹路径规划。
  • 智能交通:公路交通管理,电子警察执法抓拍系统,自动驾驶车辆。
  • 休闲娱乐:电影特效,视频编辑,人像美颜,体感游戏,VR。
1.3 计算机视觉相关学科

计算机视觉是一门研究图像理论、技术和应用的交叉学科。计算机视觉不仅和传统的数学、物理学、生理学、心理学、计算机科学、电子工程等学科相关。并且还涉及到计算机图形学、图像模式识别、图像工程等专业技术,这几个技术名词相互关联,经常混合使用,在许多情况下他们只是专业背景不同的人习惯使用的不同称呼术语。

在这里插入图片描述

1.4 计算机视觉与人工智能

计算机视觉中的大部分理论运用了人工智能的技术。人工智能的发展离不开计算机视觉,计算机视觉中的很多应用问题给人工智能技术提供了研究方向。

人工智能在计算机视觉中最成熟的技术方向是图像识别,它实现了如何让机器理解图像中的内容。

请添加图片描述

2. 数字图像处理基础

2.1 人眼成像原理

人的眼睛近似为一个球体。物体的光线通过角膜和晶状体的折射,在视网膜上成倒立缩小的实像。

视网膜上分布光线接收的神经细胞,分为锥状体和杆状体。每只眼睛有 600 万- 700 万个锥状体,其对颜色灵敏度很高,负责亮光视觉。有 7500 万- 15000 万杆状体,杆状体没有颜色感觉,负责暗视觉。

在这里插入图片描述

2.2 计算机成像原理

数字图像的采集过程类似人眼,使用大量的光敏传感器构成的阵列获取图像。成像的质量由传感器的单元数,尺寸和传感性能决定。

多数传感器的输出是连续的电压波形,图像数字化就是将一副画面的数据转换为计算机能够处理的数字形式。

图像数字化包括两种处理过程:采样和量化。

请添加图片描述

2.3 图像采样与分辨率

将空间上连续的图像变换成离散点的操作称为采样。

采样是按照某种时间间隔或空间间隔,采集模拟信号的过程,即空间离散化。

图像数字化的采样过程是将空间上连续的图像变化为离散的点。

采样的效果由传感器的采样间隔和采样孔径决定,采样间隔和采样孔径的大小是两个很重要的参数。

采样后得到离散图像的尺寸称为图像分辨率。分辨率是数字图像可辨别的最小细节。

分辨率由宽(width)和高(height)两个参数构成。宽表示水平方向的细节数,高表示垂直方向的细节数。

例如:

  • 一副 640*480 分辨率的图像,表示这幅图像是由 640*480=307200 个点组成。
  • 一副 1920*1080 分辨率的图像,表示这幅图像是由 1920*1080= 2073600 个点组成。

采样间隔越小,所得图像像素数越多,空间分辨率高,图像质量好,但数据量大。

下图展示了 lena 图的分辨率从 512x512 依次降低到 8x8 的图像效果。

在这里插入图片描述

2.4 灰度级与灰度图像

灰度级(depth)表征了每个采样点的传感器输出中可分辨的最小变化。

灰度级通常是 2 的整数次幂。我们用 m 级或者 n 位来表示灰度级。图像数据的灰度级越多视觉效果就越好。计算机中最常用的是 8 位图像。

例如:

  • 一副 8 位的图像,表示每个采样点有 2^8=256 级。从最暗到最亮,可以分辨 256 个级别。
  • 一副 32 级的灰度图像,每个采样点从最暗到最亮,可以分辨 32 个级别。

量化等级越多,所得图像层次越丰富,灰度分辨率高,图像质量好,但数据量大。下图展示了 lena 图的灰度级从 256 级依次降低到 4 级的图像效果。

在这里插入图片描述
单通道的数字图像被称为灰度图。通常,单通道记录了采样点的亮度信息,例如 8 位的图像,0 表示最暗(黑色),255 表示最亮(白色)。

请添加图片描述

2.5 彩色图像与色彩空间

为了表征彩色图像,我们需要使用多通道数字图像。最普遍的方式是使用 RGB 颜色空间。RGB 颜色空间中每个像素点有三个维度,分别记录在红(Red)、绿(Green)、蓝(Blue)三原色的分量上的亮度。

请添加图片描述
另一种常用的颜色空间是 HSV,该颜色空间可以用一个圆锥来表示。

  • HSV 表示色相(hue)、饱和度(saturation)和亮度
    (value)。
  • H 表示颜色的相位角(hue) ,取值范围是 0—360;
  • S 表示颜色的饱和度(saturation) ,范围从 0 到 1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率;
  • V 表示色彩的明亮程度(value) ,范围从 0 到 1。
    在这里插入图片描述

YUV:亮度信号 Y 和两个色差信号 R-Y、B-Y,最后发送端将亮度和色差三个信号分别进行编码。采用 YUV 色彩空间的重要性是它的亮度信号 Y 和色度信号 U、V 是分离的。如果只有 Y 信号分量而没有 U、V 分量,那么这样表示的图就是黑白灰度图。

YUV(亦称 YCrCb)是被欧洲电视系统所采用的一种颜色编码方法。YUV 色彩空间正是为了用亮度信号 Y 解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。与 RGB 视频信号传输相比,YUV 只需占用极少的频宽。

CMYK :CMYK 颜色空间应用于印刷工业,印刷业通过青(C)、品(M)、黄(Y)、黑(BK)四色油墨的不同网点面积率的叠印来表现丰富多彩的颜色和阶调。

Lab:Lab 的色彩空间要比 RGB 模式和 CMYK 模式的色彩空间大,自然界中任何一点色都可以在 Lab 空间中表达出来。

2.6 颜色空间变换

在计算机视觉中,尤其是颜色识别相关的算法设计中,各种颜色空间混合使用是常见的方法。RGB,HSV,YUV 等常见颜色空间可以通过计算公式实现相互转化,这个过程叫做颜色空间变化。颜色变换的计算公式比较复杂,通常图像处理库会提供颜色空间变化的 API 给用户调用。

2.7 常用图像处理技术
2.7.1 色彩处理
  • 灰度化:将彩色图像转换为灰度图像
  • 值化/反二值化:将灰度图像转换为只有两种颜色的图像
  • 色彩提取:提取指定的颜色
  • 直方图均衡化:调节图像统计直方图分布
  • 亮度、饱和度、色调调整
2.7.2 形态相关操作
  • 仿射变换:旋转、平移
  • 缩放、裁剪
  • 图像相加、相减
  • 透视变换
  • 图像腐蚀、膨胀、形态学梯度
2.7.3 色彩梯度
  • 模糊
  • 锐化
  • 边沿检测
2.7.4 轮廓处理
  • 轮廓查找、绘制
  • 绘制矩形、圆型、椭圆包围
  • 多边形拟合

请添加图片描述

3. 图像色彩调整

3.1 亮度调整

对 HSV 空间的 V 分量进行处理可以实现对图像亮度的增强。

直接将彩色图像灰度化,也可以得到代表图像亮度的灰度图进行图像处理,计算量比 HSV 颜色空间变化低。但在 HSV 空间中进行处理可以得到增强后的彩色图像。

请添加图片描述

3.2 饱和度调整

对 HSV 空间的 S 分量进行处理可以实现对图像饱和度的增强。

饱和度的调整通常是在 S 原始值上乘以一个修正系数。

修正系数大于 1,会增加饱和度,使图像的色彩更鲜明;

修正系数小于 1,会减小饱和度,使图像看起来比较平淡。

请添加图片描述

3.3 色调调整

对 HSV 空间的 H 分量进行处理可以实现对图像色调的增强。

色相 H 的值对应的是一个角度,并且在色相环上循环。所以色相的修正可能会造成颜色的失真。

色相的调整通常在 H 原始值上加上一个小的偏移量,使其在色相环上有小角度的调整。调整后,图像的色调会变为冷色或者暖色。

请添加图片描述

4. 图像灰度化

4.1 什么是图像灰度化

在 RGB 模型中,如果 R=G=B 时,则彩色表示一种灰度颜色,其中 R=G=B 的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为 0-255。将 RGB 图像转换为灰度图像的过程称为图像灰度化处理。

请添加图片描述

4.2 如何进行图像灰度化

灰度化处理方法包括:

  • 分量法。将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。
  • 最大值法。将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。
  • 将彩色图像中的三分量亮度求平均得到一个灰度值。
  • 根据重要性及其它指标,将三个分量以不同的权值进行加权平均。例如,由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对 RGB 三分量进行加权平均能得到较合理的
    灰度图像。如:
    f ( i , j ) = 0 . 3 0 R ( i , j ) + 0 . 5 9 G ( i , j ) + 0 . 1 1 B ( i , j )

5. 二值化与反二值化

5.1 二值化

二值化阈值处理是将原始图像处理为仅有两个值的二值图像,对于灰度值大于阈值 t 的像素点,将其灰度值设定为最大值。对于灰度值小于或等于阈值的像素点,将其灰度值设定为 0。
在这里插入图片描述

5.2 反二值化

反二值化阈值处理的结果也是仅有两个值的二值图像,对于灰度值大于阈值的像素点,将其值设定为 0;对于灰度值小于或等于阈值的像素点,将其值设定为 255。

在这里插入图片描述

6. 直方图均衡化处理

6.1 图像直方图

灰度直方图反映的是一幅图像中各灰度级像素出现的频率。以灰度级为横坐标,纵坐标为灰度级的频率,绘制频率同灰度级的关系图就是灰度直方图。它是图像的一个重要特征,反映了图像灰度分布的情况。

使用直方图进行图像变换是一种基于概率论的处理方法,通过改变图像的直方图,修改图像中各像素的灰度值,达到增强图像视觉效果的目的。

相对于灰度变化只针对单独的像素点操作,直方图变化综合考虑了全图的灰度值分布。

  • 下面是两幅灰度图像的直方图,直方图的形状能反映图像的视觉效果。
    请添加图片描述
  • 对于彩色图像,可以对不同的通道分别统计直方图。
    请添加图片描述
6.2 直方图均衡化

直方图均衡化将原始图像的直方图,即灰度概率分布图,进行调整,使之变化为均衡分布的样式,达到灰度级均衡的效果,可以有效增强图像的整体对比度。

直方图均衡化能够自动的计算变化函数,通过该方法自适应得产生有均衡直方图的输出图像。能够对图像过暗、过亮和细节不清晰的图像得到有效的增强。

在常用的图像处理库中,直方图操作都有 API 直接调用实现。

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java快速入门系列-9(Spring框架与Spring Boot —— 深度探索及实践指南)

第九章:Spring框架与Spring Boot —— 深度探索及实践指南 9.1 Spring框架概述9.2 Spring IoC容器9.3 Spring AOP9.4 Spring MVC9.5 Spring Data JPA/Hibernate9.6 Spring Boot快速入门与核心特性9.7 Spring Boot的自动配置与启动流程详解9.8 创建RESTful服务与数据库交互实践…

学习云计算HCIE选择誉天有什么优势?

誉天云计算课程优势实战性强 课程注重实践操作,通过实际案例和实验操作,让学员深入了解云计算的应用场景和实际操作技能。课程内容全面 涵盖所有云计算涉及的IT基础知识、服务器、存储、网络等方面的基础知识,开源操作系统Linux,开…

12-pyspark的RDD算子注意事项总结

目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第…

学习R语言第二天

R语言可以做什么 1.数据分析 R语言如何使用 1. 请看我的操作方式 2. 如何获取当前路径 -- 获取当前路径 > getwd() [1] "E:/R/RWorkSpace/day01" -- 修改当前路径 > setwd(dir "E:/R") > getwd() [1] "E:/R" 3.查看当下数据值的信…

集合系列(十九) -List与数组互转操作介绍

一、数组转List 方式一 通过 Arrays.asList(strArray) 方式,将数组转换List,但不能对List增删,只能查改,否则抛异常,例子如下: public static void main(String[] args) {//创建一个字符串数组String[] …

EFcore 6 连接oracle19 WinForm vs2022

用EFcore访问Oracle,终于不需要Oracle的什么安装包了,直接在VS2022中就可以轻松搞定。在csdn上看到一哥们的帖子,测试了一下,发现很方便。使用的场景是:VS2022中EFcore6。经过测试,同 Navicat Premium 16比…

ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

目录 ES6概念ECMAScript6简介ECMAScript 和 JavaScript 的关系ES6 与 ECMAScript 2015 的关系 1、let 、 const 、var 区别2、变量解构赋值1、数组解构赋值2、对象解构赋值3、字符串的解构赋值 3、展开剩余运算符1、**展开运算符(...)**2、**剩余运算符(...)** 4、函数的拓展函…

Windows终端添加git bash

环境:windows11 终端:windows terminal git bash默认的界面不太好看,添加到终端会比较好用 步骤 打开 windows terminal,在向下箭头 点击 设置左侧栏 点击 “添加新配置文件”,如下图配置,主要修改项&…

牛客2024【牛客赛文X】春招冲刺ONT61 每日温度【hard 单调栈 Java、Go、PHP】

题目 题目链接: https://www.nowcoder.com/practice/1f54e163e6944cc7b8759cc09e9c78d8 思路 单调栈最直接的应用就是获取数组中每个位置i,i的左边第一个比i大或者小的位置/数以及,i的右边第一个比i大或者小的位置/数不懂的同学看这里https://blog.csdn.net/Borsl…

docker完美安装分布式任务调度平台XXL-JOB

分布式任务调度平台XXL-JOB 1、官方文档 自己看 https://www.xuxueli.com/xxl-job/#1.1%20%E6%A6%82%E8%BF%B0 2、使用docker部署 本人使用的腾讯云,安装docker暴露一下端口,就很舒服的安装这个服务了。 docker pull xuxueli/xxl-job-admin:2.4.03…

使用Docker部署Node.js

第一步:在Node.js项目的根目录中新建Dockerfile文件 # 使用官方 Node.js 镜像作为基础镜像 FROM node:latest# 设置工作目录 WORKDIR /usr/src/app# 将项目文件复制到容器中 COPY . .# 将npm源设置为淘宝镜像 RUN npm config set registry https://registry.npmmir…

大数据深度学习:基于Tensorflow深度学习的神经网络CNN算法垃圾分类识别系统

文章目录 大数据深度学习:基于Tensorflow深度学习的神经网络CNN算法垃圾分类识别系统一、项目概述二、深度学习卷积神经网络(Convolutional Neural Networks,简称CNN)三、部分数据库架构四、系统实现系统模型部分核心代码模型训练…