数字图像基础

数字图像基本概念

位图:通过记录每一个像素的颜色值,来存储和表达图像。

  1. 灰度图像(Gray Image)
    每个像素使用1字节表示,位深度为8,可以表示256种级别的灰度。
    0表示黑色,255表示白色。

  2. 彩色图像(RGB)
    每个像素都有红(R)、绿(g)、蓝(B)三个分量
    1一个像素点使用3个字节,位深度为24位。
    可以表示256256256=16777216种颜色。
    24位真色彩
    在这里插入图片描述

  3. RGBA图像
    RGB图像+8位透明度信息Alpha(Alpha=255完全不透明,Alpha=0完全透明)
    32位真彩色:1个像素点使用4个字节,位深度为32位。

  4. 256色彩色图像
    每个像素用8位二进制表示,是调色板中的索引值
    对于不同的图像,所对应的256种
    在这里插入图片描述

  5. 图像格式
    BMP格式:占用存储空间大,不支持文件压缩,不适用于网页。

  6. 图像压缩
    适当降低图像质量来减小它所占用的空间。
    不同的图像压缩算法,对应不同的图像格式。

  7. JPEG格式
    有损压缩
    压缩率高,所占空间小
    适合色彩丰富、细节清晰细腻的大图像
    不适合所含颜色较少,具有大块颜色相近的区域,或亮度差异十分明显的简单图片
    每次编辑都会降低图像质量,不适合需要进行多次编辑的情况。

  8. PNG格式(Portable Network Graphics,PNG)
    无损压缩
    适合于有规律渐变色彩的图像

  9. GIF格式(Graphics Interchange Format)
    支持静态格式和动态格式
    动态图片由多幅图片保存为一个图片,循环显示,形成动画效果
    只支持256色,适用于色彩简单、颜色较少的小图像。

  10. TIFF格式(Tag Image File Format)

  • 定义了4类不同类型的格式
    二值图像(TIFF-B)
    黑白灰度图像(TIFF-G)
    带调色板的彩色图像(TIFF-P)
    RGB真彩图像(TIFF-R)

支持RGB、JPEG等多种编码方法
具有非常好的扩展性、方便些、可改性、是印刷行业中最常用的格式
Web浏览器不支持TIFF格式

  1. 色彩模式
    二值图像、灰度图像、RGB图像、RGBA图像
    CMYK——印刷四分色。C:Cyan=青色;M:Magenta=洋红色;Y:Yellow=黄色;K:blank=黑色
    YCbCr——Y:亮度;Cb:蓝色色度;Cr:红色色度;
    HSI——H:色调;S:饱和度;I:亮度
图像类型
  1. 序列图像:时间上有一定顺序和间隔、内容上相关的一组图像。
    其中的每幅图像,称为帧图像
    帧图像之间的时间间隔是固定的。
    视频就是一种特殊的序列图像。
  2. 深度图像(Depth Map):
    是一种三维场景信息的表达方式
    每个像素点的取值,代表这个点离摄像机的距离
    采用灰度图表示,每个像素点由一个字节表示。
    深度图像中,像素点的取值并不代表实际的距离,颜色的深浅只是代表相对距离的远近。

Python图像处理库

在这里插入图片描述

pillow图像处理库
  • 打开图像Image.open()
    使用pillow的image.open(‘路径’)来打开图像文件

  • 保存图片save
    图片对象.save(‘文件路径’)
    改变文件名后缀就可以改变图片格式。

图像对象的主要属性
在这里插入图片描述

显示图像
在这里插入图片描述
在这里插入图片描述

转换图像的色彩模式
在这里插入图片描述
在这里插入图片描述
图像对象还可以用np.array(图像对象)转换为三维数组。
(512,512,3)前两维是像素维度,第三维是RGB通道。

对图像的缩放、旋转和镜像
  1. 图像缩放
    在这里插入图片描述
    返回缩放后的新对象。

在这里插入图片描述
直接对原图片进行缩放,返回值是None

  1. 旋转
    在这里插入图片描述
裁剪图像

裁剪图像:在图像上指定的位置裁剪出一个矩形区域

返回裁剪的图片对象
在这里插入图片描述

在这里插入图片描述
需要下载数据集mnist.npz

import numpy as np
import matplotlib.pyplot as plt


mnist = np.load('mnist.npz')
train_x = mnist['x_train']
train_y = mnist['y_train']
for i in range(4):
    num = np.random.randint(1,50000)

    plt.subplot(2,2,i+1)
    plt.axis('off') # 不显示坐标轴
    plt.imshow(train_x[num],cmap='gray')
    plt.title(train_y[num])
plt.show()

显示结果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值