news 2026/4/27 18:46:23

Day06-06.图像相关知识介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day06-06.图像相关知识介绍

一、图像基本概念

图像是由像素点组成的,每个像素点的取值范围为: [0, 255] 。像素值越接近于0,颜色越暗,接近于黑色;像素值越接近于255,颜色越亮,接近于白色。

在深度学习中,我们使用的图像大多是彩色图,彩色图由RGB3个通道组成,如下图所示:

1、二值图像

一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

2、灰度图像

灰度图像矩阵元素的取值范围通常为[0,255]。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。二值图像可以看成是灰度图像的一个特例。

3、索引图像

索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0,255],则MAP矩阵的大小为256Ⅹ3,用MAP=[RGB]表示MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的[RGB]组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。

4、真彩色RGB图像

RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个M x N的二维矩阵分别表示各个像素的R、G、B三个颜色分量。RGB图像的数据类型一般为8位无符号整形。注意:通道的顺序是 BGR 而不是 RGB。

""" 案例: 演示基础的图像操作. 图像分类: 二值图: 1通道, 每个像素点由0, 1组成 灰度图: 1通道, 每个像素点的范围: [0, 255] 索引图: 1通道, 每个像素点的范围: [0, 255], 像素点表示颜色表的索引 RGB真彩图: 3通道, Red, Green, Blue, 红绿蓝. 涉及到的API: imshow() 基于HWC, 展示图像 imread() 读取图像, 获取HWC imsave() 基于HWC, 保存图片. """ # 导包 import numpy as np import matplotlib.pyplot as plt import torch # 1. 定义函数, 绘制: 全黑, 全白图. def dm01(): # 1. 定义全黑图片: 像素点越接近0越黑, 越接近255越白. # HWC: H: 高度, W: 宽度, C: 通道. img1 = np.zeros((200, 200, 3)) # print(f'img1: {img1}') # 2. 绘制图片. plt.imshow(img1) # plt.axis('off') plt.show() # 2. 定义全白图片. img2 = torch.full(size=(200, 200, 3), fill_value=255) # print(f'img2: {img2}') plt.imshow(img2) # plt.axis('off') plt.show() # 2. 定义函数, 加载图片. def dm02(): # 1. 加载图片. img1 = plt.imread('./data/img.jpg') # print(f'img1: {img1}') # print(f'img1.shape: {img1.shape}') # (640, 640, 3), HWC # 2. 保存图像. plt.imsave('./data/img_copy.png', img1) # 3. 展示图像. plt.imshow(img1) plt.show() # 3. 测试 if __name__ == '__main__': dm01() dm02()

二、总结

1、图像的构成 由像素点构成,【0-255】,RGB,【HWC】

2、图像的加载方法 Plt.imread() Plt.imshow()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 18:45:23

三步解锁惠普OMEN游戏本隐藏性能:OmenSuperHub终极控制方案实测

三步解锁惠普OMEN游戏本隐藏性能:OmenSuperHub终极控制方案实测 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 对于追求极致性能的惠普OMEN游…

作者头像 李华
网站建设 2026/4/27 18:39:05

3分钟实现文化自适应:用Pixelle-Video打造全球受众喜爱的AI视频

3分钟实现文化自适应:用Pixelle-Video打造全球受众喜爱的AI视频 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video 你是否曾经面…

作者头像 李华
网站建设 2026/4/27 18:38:48

导电泡棉工程化应用

在高频电子系统快速发展的背景下,电磁干扰(EMI)问题已从“可优化项”转变为“必须解决项”。作为结构级电磁屏蔽与接地的重要材料,导电泡棉凭借其柔性导电连接能力,成为消费电子、通信设备及工业电子中不可替代的关键器件。 一、材料结构与导电机理 导电泡棉本质上是一种…

作者头像 李华
网站建设 2026/4/27 18:38:47

从项目代码出发,梳理 Java 基础:单例、枚举、接口、抽象类

前言 1.博客仅作为个人梳理学习内容的方式 2.从代码出发学习知识点 3.初学java,表达不当处望谅解 1.为什么需要这些机制? 在实际开发中,我们常会遇到几个问题: 如何保证某个类只有一个实例? 如何避免“魔法值”&#x…

作者头像 李华
网站建设 2026/4/27 18:37:24

Xdotool实战指南:Linux桌面自动化的高效解决方案

Xdotool实战指南:Linux桌面自动化的高效解决方案 【免费下载链接】xdotool fake keyboard/mouse input, window management, and more 项目地址: https://gitcode.com/gh_mirrors/xd/xdotool 你是否厌倦了每天重复点击相同的按钮?是否想要让电脑…

作者头像 李华