(深度学习快速入门)第四章第一节:基础图像处理知识

news2024/11/17 11:40:03

文章目录

  • 一:位图和矢量图
  • 二:图像分辨率
  • 三:颜色模式
    • (1)RGB
    • (2)HSB
    • (2)灰度图
  • 四:通道
  • 五:亮度、对比度和饱和度
  • 六:图像平滑和锐化
    • (1)图像平滑
    • (2)图像锐化
  • 七:图像边缘提取
  • 八:形态学运算

一:位图和矢量图

  • 位图:由基本单位像素(pixel)构成,像素可以进行不同的排列和染色以构成图样,放大位图时本质是在增大单个像素,所以会使得图像呈现锯齿状。PhotoShop是一款图像处理软件
  • 矢量图:是用一系列计算指令来表示的图,本质是多个数学表达式,矢量图只能靠软件生成,放大不会模糊,因为它和分辨率没有关系。Adobe Illustraotr是一款矢量绘图软件

在这里插入图片描述

二:图像分辨率

图像分辨率:是指每英寸图像内的的像素点数,单位为ppi。分辨率越大图像就会越清晰,当然文件也会越大

在这里插入图片描述

三:颜色模式

颜色模式:每一种颜色在计算机中都对应一种颜色编码,编码方式不同,会形成各种各样的颜色模式,主要有

  • RGB(重点) 分别表示红色®、绿色(G)、蓝(B),屏幕显示时最佳模式,属于加色模式(颜色越多越亮)
  • CMYK C代表青色,M代表洋红色,Y代表黄色,K代表黑色,RGB不适合打印,所以CMYK主要用于印刷,属于减色模式(颜色越少越暗)
  • lab Lab模式弥补了RGB和CMYK两种色彩模式的不足。Lab模式由三个通道组成,但不是R、G、B通道。它的一个通道是亮度,即L。另外两个是色彩通道,用A和B来表示。A通道包括的颜色是从深绿色(底亮度值)到灰色(中亮度值)再到亮粉红色(高亮度值);B通道则是从亮蓝色(底亮度值)到灰色(中亮度值)再到黄色(高亮度值)。因此,这种色彩混合后将产生明亮的色彩
  • HSB H表示色相,S表示饱和度,B表示亮度
  • 灰度图
    在这里插入图片描述

在这里插入图片描述

(1)RGB

RGB:为光的三原色,分别表示红色®、绿色(G)、蓝(B),三种色彩叠加形成了其它的色彩

  • 每种颜色都有256个亮度水平级,所以三种色彩叠加就形成1670万种颜色了
  • 所有显示器、投影设备以及电视机等等许多设备都依赖于这种加色模式来实现
  • RGB模式并不适合于打印,因为RGB模式所提供的有些色彩已经超出了打印的范围之外,因此在打印一幅真彩色的图象时,就必然会损失一部分亮度,并且比较鲜艳的色彩肯定会失真的

在这里插入图片描述

(2)HSB

HSB:H表示色相,S表示饱和度,B表示亮度

  • 色相:是纯色,即组成可见光谱的单色。红色在0度,绿色在120度,蓝色在240度。它基本上是RGB模式全色度的饼状图
  • 饱和度:表示色彩的纯度,为0时为会色。白、黑和其他灰色色彩都没有饱和度的。在最大饱和度时,每一色相具有最纯的色光
  • 亮度:是色彩的明亮度

在这里插入图片描述

在这里插入图片描述

(2)灰度图

灰度图:当需要关注图像纹理信息而不需要关注颜色信息时,可以使用灰度图。灰度图实际上就是把C变成了1,形成了一个H×W的矩阵,使用0代表黑色,1、255或65635代表白色,将一张RGB图像转为灰度图像时有如下方法

  • 心理学公式:R×0.299 + G×0.587 + B×0.114
  • 平均值:(R+G+B) / 3
  • 取任意:Gray = G (取绿色通道)
    在这里插入图片描述

在这里插入图片描述

例如,使用OpenCV操作

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np

# 读入图像
image = cv.imread('./image/fruit.jpg')
# OpenCV是按照B G R读入的,所以这里转为R G B
RGB = cv.cvtColor(image, cv.COLOR_BGR2RGB)
print("H×W×C:", RGB.shape)
print(RGB.dtype)

# 将三个通道分开
(R, G, B) = cv.split(RGB)

#  乘以相应比例
R = R * 0.299
G = G * 0.587
B = B * 0.114

# 重新组装
new_RGB = np.zeros((RGB.shape[0], RGB.shape[1]))  # 注意类型为float64
new_RGB = (R + G + B) 
new_RGB = new_RGB / 255

plt.figure(figsize=(8, 8))
plt.subplot(1, 2, 1)
plt.title('Orgin Image')
plt.imshow(RGB)
plt.axis("off")
plt.subplot(1, 2, 2)
plt.title('Gray Image')
plt.imshow(new_RGB, cmap='gray')
plt.axis("off")

结果如下

H×W×C: (2534, 3670, 3)
uint8

Out[2]:

(-0.5, 3669.5, 2533.5, -0.5)

在这里插入图片描述

四:通道

通道:通道用来存储一张图像的颜色信息,或者说颜色代码。例如RGB模式,计算机内部在显式图像时,会将其分为三个通道,每个通道记录对应的灰度信息,然后交给计算机处理,最终显示出颜色

在这里插入图片描述

一张图像在给出时,除了必要高(H)宽(W)信息外,还会有一个通道信息(C),在处理图像时我们拿到的实际上是一个三维tensor,格式为H×W×C,对于RGB图像来说,这里的C就是3,所以说它实际上是3个H×W的图像进行堆叠

  • 注意:在进行图像显示时C的含义很明确,就是3,分别表示三个通道颜色信息,而在CNN中,这里的C数目就不一定了,有可能会比3大很多,它是一个抽象的概念,在经过卷积后,所表示的含义十分抽象,不是我们能够理解的

在这里插入图片描述

如下,利用OpenCV拿到三个通道的tensor

import cv2 as cv
import matplotlib.pyplot as plt

image = cv.imread('./image/fruit.jpg')
RGB = cv.cvtColor(image, cv.COLOR_BGR2RGB)
print("H×W×C:", RGB.shape)

R = RGB.copy()  # 红色
G = RGB.copy()  # 绿色
B = RGB.copy()  # 蓝色

# 只显示红色通道
R = R[:, :, 0]
# 只显示绿色通道
G = G [:, :, 1]
# 只显示蓝色通道
B = B [:, :, 2]


# 或者这样写
#  (R, G, B) = cv.split(RGB)

plt.figure(figsize=(8, 8))
plt.subplot(2, 2, 1)
plt.title('Orgin Image')
plt.imshow(RGB)
plt.axis("off")
plt.subplot(2, 2, 2)
plt.title('Red')
plt.imshow(R, cmap='gray')
plt.axis("off")
plt.subplot(2, 2, 3)
plt.title('Green')
plt.imshow(G, cmap='gray')
plt.axis("off")
plt.subplot(2, 2, 4)
plt.title('Blue')
plt.imshow(B, cmap='gray')
plt.axis("off")

结果如下

H×W×C: (2534, 3670, 3)

Out[3]:

(-0.5, 3669.5, 2533.5, -0.5)

在这里插入图片描述

五:亮度、对比度和饱和度

  • 亮度:表示图像的明亮程度,在灰度图中,最高值对应白色,最低值对应黑色
  • 对比度:表示亮和暗的差距,也即图像最大灰度级和最小灰度级之间的差值,这个差值越大对比就越大
  • 饱和度:表示图像颜色种类的多少,饱和度越高颜色种类越多,图像也就越鲜艳

在这里插入图片描述

在这里插入图片描述

六:图像平滑和锐化

(1)图像平滑

图像平滑:图像平滑是指抑制高频部分(噪声),保留低频部分(连续色块),使图像亮度平缓渐变,减小突变梯度,改善图像质量

  • 均值滤波:输出像素值是核窗口内像素值的 均值 ( 所有像素加权系数相等)
  • 高斯滤波:最有用的滤波器 (尽管不是最快的)。 高斯滤波是将输入数组的每一个像素点与 高斯内核 卷积将卷积和当作输出像素值
  • 中值滤波:基本原理是把图像或序列中心点位置的值用该域的中值替代,具有运算简单、速度快、除噪效果好等优点,曾被认为是非线性滤波的代表
  • 双边滤波:目前我们了解的滤波器都是为了 平滑 图像, 问题是有些时候这些滤波器不仅仅削弱了噪声, 连带着把边缘也给磨掉了。 为避免这样的情形 (至少在一定程度上 ), 我们可以使用双边滤波

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2)图像锐化

图像锐化:与图像平滑相反,图像锐化会增强高频部分,减少模糊,但同时噪声也会被增强,使轮廓和边缘变得明显,增强灰度方差,便于后期识别和处理

  • 微分法
  • 高通滤波法

在这里插入图片描述

在这里插入图片描述

七:图像边缘提取

图像边缘提取:图像边缘是图像的最基本特征,所谓边缘指的是图像局部特性的不连续性,例如灰度的突变、颜色的突变或纹理结构的突变等等,边缘时一个区域的结束,也是另一个区域的开始

在这里插入图片描述

在计算图像边缘时,可以利用梯度的方法,要得到一副图像的梯度,则要求在每个像素点位置处计算偏导数

∂ f ( x , y ) ∂ x = lim ⁡ x → 0 f ( x + ϵ ) − f ( x , y ) ϵ \frac{ \partial f(x, y) }{ \partial x } = \mathop{}\lim_{ x \to 0 } \frac{f(x+\epsilon)-f(x,y)}{\epsilon} xf(x,y)=x0limϵf(x+ϵ)f(x,y)

∂ f ( x , y ) ∂ x = lim ⁡ x → 0 f ( x + ϵ ) − f ( x , y ) ϵ \frac{ \partial f(x, y) }{ \partial x } = \mathop{}\lim_{ x \to 0 } \frac{f(x+\epsilon)-f(x,y)}{\epsilon} xf(x,y)=x0limϵf(x+ϵ)f(x,y)

基于上述思想,就有如下集中边缘提取算子

  • sobel算子:1.Sobel算子原理解析
  • Perwitt算子
  • Roberts算子
  • Canny算子
  • Laplacian算子

在这里插入图片描述

八:形态学运算

形态学运算:形态学运算是针对二值图像依据数学形态学的集合论方法发展起来的图像处理方法

  • 腐蚀:腐蚀的效果是把图片”变瘦”,其原理是在原图的小区域内取局部最小值
  • 膨胀: 膨胀与腐蚀相反,取的是局部最大值,效果是把图片”变胖
  • 开运算:先腐蚀后膨胀(因为先腐蚀会分开物体,这样容易记住),可以分离物体消除小区域
  • 闭运算:先膨胀后腐蚀(先膨胀会使白色的部分扩张,以至于消除/“闭合”物体里面的小黑洞)
  • 形态学梯度:膨胀图减去腐蚀图,得到轮廓图
  • 顶帽:原图减去开运算后的图
  • 黑帽:闭运算后的图减去原图

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

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

相关文章

D3股权穿透图

前言:最近做了一个项目,主要就是实现各种类似企查查的各种图谱,欢迎交流。后期将完成的谱图全部链接上,目前已大致实现了: 【企业关系图谱】、【企业构成图谱】、【股权穿透图】、【股权结构图】、【关联方认定图】 准…

【蓝桥杯基础题】2018年省赛—日志统计

👑专栏内容:蓝桥杯刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录一、题目描述1.问题描述2.输入格式3.输出格式4.一个例子二、题目分析1、暴力法2、双指针三、代码汇总1、暴力代码汇总2、双…

【Mysql第一期 数据库概述】

文章目录1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库特点2.3SQL优点3.常见的数据库介绍1.Oracle2.SQL Server3.MySQL4.Access5.DB26.PostgreSQL7.SQLite8.informix4. MySQL介绍4.1Mysql重大历史事件4.2 关于MySQL 8.04.3 Why choose MySQL?…

linux内核读文件代码分析

linux下“一切皆文件”,所有设备都可以被抽象成文件,用户态可以通过open、read、write、llseek等api操作一个文件,通过系统调用进入内核态,最终访问到pagecache/磁盘上的数据,然后返回给用户态。 kernel version:v6.2-rc4 社区master主干 用户态应用程序调用read接口,通…

【转载】车载传感器与云端数据交换标准SensorIS的理解与使用

原文 https://zhuanlan.zhihu.com/p/386277784 1、什么是SensorIS?SensorIS全称是Sensor Interface Specification,翻译为中文就是传感器接口规范,是由来自全球汽车行业的主机厂、地图和数据提供商、传感器制造商和电信运营商共同组成的开放团体发布的一…

JavaEE day10 初识SpringMVC

JSON简介 JSON :JavaScript Object Notation JS对象表示法 是轻量级的文本数据交换格式,但是JSON仍然独立于语言和平台。其解析器和库支持许多不同的编程语言。目前非常多的动态编程语言(java,PHP)都支持JSON。JSON…

禅道好用吗?优缺点及类似10大项目管理系统介绍

类似禅道的十大项目管理软件:1、一站式研发项目管理软件PingCode;2、通用型项目协作工具Worktile;3、开源项目管理软件Redmine;4、免费项目管理软件Trello;5、无代码项目管理软件Monday;6、IT项目追踪管理工…

面试宝典-数据库基础

数据库基础前言一、数据库1.1 sql练习题1.2 sql语句执行顺序1.3 sql语句编写前言 本文主要记录B站视频视频链接的内容,做到知识梳理和总结的作用,项目git地址。 一、数据库 1.1 sql练习题 user表数据: idusername1张三2李四3王五4小刘 user_role表数…

CrackQL:一款功能强大的图形化密码爆破和模糊测试工具

关于CrackQL CrackQL是一款功能强大的图形化密码爆破和模糊测试工具,在该工具的帮助下,广大研究人员可以针对密码安全和应用程序安全进行渗透测试。 除此之外,CrackQL同时也是一款通用的GraphQL渗透测试工具,它可以控制速率限制…

垃圾分类智能分析系统 yolov7

垃圾分类智能分析系统应用pythonyolov7网络模型深度学习识别技术,自动识别违规投放行为并现场进行语音提示实时预警。如垃圾满溢抓拍预警、人脸识别、工服识别、厨余垃圾混投未破袋识别预警、垃圾落地识别预警、人来扔垃圾语音提醒等。我们选择当下YOLO最新的卷积神…

数组去重的七种方法

数组去重的七种方法1. 双重for循环2. forindexOf3.es6 set4.filter5.includes6.创建一个新的object7.new Map()1. 双重for循环 第1种是定义一个新的空数组,再执行嵌套双循环,监测空数组中如果没有的元素,push进空数组中。这个方法考察了conti…

AcWing - 寒假每日一题2023(DAY 16——DAY 20)

文章目录一、AcWing 4455. 出行计划(简单)1. 实现思路2. 实现代码二、AcWing 4510. 寻宝!大冒险!(简单)1. 实现思路2. 实现代码三、AcWing 3422. 左孩子右兄弟(中等)1. 实现思路2. 实…

【MySQL】过年没有回老家,在出租屋里整理了一些思维导图

Xmind导图知识点Mysql知识点SQL知识点Mybatis知识点面试题分享MySQL部分Mybatis部分Mysql知识点 通过下面的图片可以看出,MySQL基础语法分为四部分:连接数据库,对数据库的操作,对表中的数据操作,对表操作等等。 SQL…

python exe程序注册为window系统服务

1、使用pyinstaller将py打包成exe 1、安装 pip install pyinstaller2、打包成exe可执行文件 pyinstaller -F packTest.py #packTest.py为待打包的py文件打包成功后会在同级目录中生成两个文件夹和一个文件,分别为dist和build文件夹,以及一份与.py文件同…

Java——最大子数组和

题目链接 leetcode在线oj题——最大子数组和 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 题目示例 输入:…

Vulnhub DC-4靶机渗透

环境准备DC-4靶机 ip:???????kali攻击机 ip:192.168.153.128一、信息收集kali攻击机中,使用 arp-scan -l 扫描c段(-l为扫描c段)确定靶…

自动驾驶——智能配电

一、汽车配电 汽车配电(Power Distrubition Unit,PDU)分为低压配电与高压配电,即低压PDU与高压PDU。 二、传统控制方式——PCB式电器盒 传统配电盒(机电器件): (1)继…

为什么要做黑盒测试?黑盒测试有什么作用?

对于软件测试的从业者来说,黑盒测试是十分重要的测试方式,它可以弥补白盒测试检查不到的部分。可能刚刚入门的测试小白,对于为什么要做黑盒测试?黑盒测试有什么作用?仍然抱有很大的疑问。下面小编就来从黑盒测试的概念…

QT入门Buttons之QPushButton

目录 一、界面布局介绍 1、布局器中的位置及使用 2、控件的界面属性 3、常用基本属性介绍 3.1控件名称 3.2控件大小属性 3.3按钮上的文字设置 3.4设置按钮的样式 二、属性功能介绍 1、常用方法介绍 2、基本信号介绍 三、Demo展示 一、界面布局介绍 1、布局器中的位…

丰田埃尔法商务租车价格是多少,它的性能到底有多好呢

丰田埃尔法作为MPV之王。埃尔法的高腰线和深色玻璃也使内部更具神秘感,惹眼闪烁的进气格栅,类似盔甲一般的全镀铬饰条构成的霸道前脸和富于设计感的车身曲线,细节处采用36颗闪亮镀铬装饰点缀,有着很高的辨识性。保持了典型的MPV风…