当前位置: 首页 > news >正文

深度学习:PyTorch卷积神经网络(CNN)之图像入门

本文目录:

  • 一、二值图像
  • 二、**灰度图像*
  • 三、**索引图像**
  • 四、**真彩色RGB图像**
  • **星空图**

前言:这篇文章开始讲解CNN,此前讲解的人工神经网络(ANN)如果有小伙伴还不清楚,一定要多看,多练习,继续一起努力前进吧!

CNN(Convolutional Neural Network,卷积神经网络)是一种专门用于处理网格结构数据(如图像、音频、文本序列)的深度学习模型。它在计算机视觉(CV)和自然语言处理(NLP)中广泛应用,尤其在图像分类、目标检测、语义分割等任务中表现优异。

在介绍CNN之前,我们需要先对图像有一个认识。

简单来说,图像一般分为二值图像、灰度图像、索引图像和真彩色RGB图像。

一、二值图像

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

黑白图:
在这里插入图片描述
PyTorch代码实现:

import numpy as np
import matplotlib.pyplot as plt#绘制黑色图像
plt.imshow(np.zeros((100,100)),cmap='gray')
plt.show()

二、*灰度图像

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

灰图:
在这里插入图片描述
PyTorch代码实现:

import random# 创建灰度图像数组(单通道)
# 值范围0-255,dtype=np.uint8
gray_image = np.random.randint(0, 255, (height, width), dtype=np.uint8)# 显示图像
plt.imshow(gray_image, cmap='gray')  # 必须指定cmap='gray'
plt.axis('off')
plt.show()

三、索引图像

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

索引图:
在这里插入图片描述
PyTorch代码实现:

# 设置图像大小和颜色数量
height, width = 256, 256
num_colors = 16# 生成随机索引矩阵
random_indices = np.random.randint(0, num_colors, (height, width))# 使用Matplotlib内置的colormap
plt.imshow(random_indices, cmap='viridis', vmin=0, vmax=num_colors-1)
plt.colorbar(label='Color Index')
plt.axis('off')
plt.show()

四、真彩色RGB图像

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

RGB彩图:

PyTorch代码实现:

plt.imshow(plt.imread(r'D:\深度学习\04_数据集\data\img.jpg'))
plt.show()

最后,分享一段代码,生成一片星空,送给大家:

# 创建全蓝图像
blue_img = np.zeros((200, 200, 3))  # 初始化全黑图像
blue_img[:, :, 2] = 1  #  # RGB通道:蓝色=1.0(Matplotlib取值范围0~1for _ in range(num_points):y = np.random.randint(0, 200)  # 随机行坐标x = np.random.randint(0, 200)  # 随机列坐标blue_img[y, x] = [1, 1, 1]    # 设为白色radius = np.random.randint(0, 2)  # 随机半径0~2像素draw_circle(blue_img, y, x, radius=radius)
plt.imshow(blue_img)  #渲染
plt.axis('off')  # 关闭坐标轴
plt.show()  #显示图像

星空图

星空
晚安。

今天的分享到此结束。

http://www.lryc.cn/news/574228.html

相关文章:

  • 记录MySQL中功能强大的函数使用
  • 构建高性能网络服务:从Reactor模式到现代服务器架构设计
  • 【实时Linux实战系列】实时任务优先级的设置
  • leetcode83.删除排序链表中的重复元素
  • js逻辑:【增量更新机制】
  • STM32 串口通信②:蓝牙模块HC-05控制单片机
  • 国产免费的k8s管理平台
  • 相机标定与3D重建技术通俗讲解
  • springboot开发项目 SLF4J+Logback日志框架集成【最终篇】
  • 用 EXCEL/WPS 实现聚类分析:赋能智能客服场景的最佳实践
  • Linux笔记---线程控制
  • 用安卓手机,怎样远程管理孩子iPhone屏幕使用时间?
  • 新高考需求之一
  • uniapp+vue3做小程序,获取容器高度
  • 世赛背景下,高职物联网应用开发赛项实训解决方案
  • 2025年小程序地图打车的5大技术革新:实时路况预测与智能调度升级
  • 【Docker基础】Docker容器管理:docker pause详解
  • 【文件】Linux 内核优化实战 - fs.inotify.max_user_watches
  • 用DeepSeek完成实际生产编程完整项目
  • 树莓派超全系列教程文档--(66)rpicam-apps可用选项介绍之视频选项
  • [论文阅读] 人工智能 + 软件工程 | AI 驱动工具在软件质量保证中的革新:挑战与未来之路
  • 物联网的全球布局与未来趋势
  • 【Golang玩转MCP】-实现一个加减乘除MCP服务
  • 1 Studying《Systems.Performance》7-13
  • 数据赋能(313)——合作共享——跨界融合
  • Modbus TCP转Profibus DP网关与JF - 600MT称重变送器在STEP 7快速配置
  • 计算机操作系统(十六)进程同步
  • DMDRS部署实施手册(ORACLE=》DM)
  • Long类型返回给前端精度丢失问题(解决方案)
  • AWS S3服务器访问日志启用