24.7.27学习笔记

(按照老师发的学习计划走)

先学习数字图像处理:

1.单色图像 0-255 黑到白

2.彩色图像:红绿蓝三元组的二维矩阵 0-255

 像元(Pixel,图像元素的简称)是数字图像中最小的单元,代表图像中的一个点。每个像元都有一个特定的颜色和亮度值,组合在一起形成完整的图像。以下是关于像元的一些关键点:

 定义:像元是构成数字图像的基本单元。每个像元通常由多个颜色通道(如红色、绿色和蓝色)组成

  • 每个像元的颜色通常用数字表示,这些数字对应于颜色空间中的值。例如,在 RGB 颜色空间中,每个像元可以用三个值(R、G、B)来表示,其中每个值的范围通常是 0 到 255。
  • 例如,一个像元的 RGB 值为 (255, 0, 0) 表示该像元是红色

 分辨率

  • 图像的分辨率是指图像中像元的数量,通常以宽度 x 高度的形式表示。例如,1920x1080 的分辨率表示图像有 1920 列像元和 1080 行像元。
  • 分辨率越高,图像中包含的像元数量越多,图像的细节和清晰度通常也越高。
  • RGB 图像波段数为 3(红色、绿色、蓝色)。

自己实现了两张图片的重叠(代码如下图)

# 导入所需的库
from PIL import Image  # 导入PIL库中的Image模块,用于图像处理
import numpy as np  # 导入NumPy库,用于数组操作

# 读取第一张图像并转换为NumPy数组
im1 = np.array(Image.open(r'D:\study pic\down.jpg'))  # 使用PIL打开图像并转换为NumPy数组

# 将NumPy数组转换回图像对象
im_v = Image.fromarray(im1.astype('uint8'))  # 将数组转换为uint8类型的图像对象
# im_v.show()  # 显示图像(注释掉了)

# 读取第二张图像并转换为NumPy数组
im2 = np.array(Image.open(r'D:\study pic\下载.jpg'))  # 同样的方式读取第二张图像

# 将第二张图像的NumPy数组转换回图像对象
im_v = Image.fromarray(im2.astype('uint8'))  # 将第二张图像的数组转换为uint8类型的图像对象
# im_v.show()  # 显示图像(注释掉了)

# 对两张图像进行简单的平均处理
# np.clip用于确保结果在0到255之间
im_t = np.clip(im1 / 2 + im2 / 2, 0, 255)  # 将两张图像的像素值相加并取平均,确保结果在0到255之间

# 将处理后的数组转换回图像对象
im_v = Image.fromarray(im_t.astype('uint8'))  # 将处理后的数组转换为uint8类型的图像对象

# 显示最终的图像
im_v.show()  # 显示合成后的图像


实现了查看图片的参数,并且进行下采样显示(如下图)

from skimage import io,data ,color
import numpy as np
import matplotlib.pyplot as plt
  1. from skimage import io, data, color

    • io: 提供了读取和写入图像的功能,比如从文件中读取图像或将图像保存到文件
    • data: 包含一些示例图像,可以方便地用于测试和演示。
    • color: 提供了图像颜色空间转换的功能,比如将 RGB 图像转换为灰度图像等。
  2. import numpy as np

    • NumPy 是一个用于高效计算的库,特别是处理数组和矩阵。它在图像处理中的应用非常广泛,因为图像通常可以用多维数组来表示
  3. import matplotlib.pyplot as plt

    • Matplotlib 是一个用于绘制图形的库,pyplot 是其中一个模块,提供了类似 MATLAB 的绘图接口。它常用于可视化数据和图像。

# 读取图像

img = io.imread(r'D:\study pic\down.jpg')

# 显示图像(只显示一次)

plt.figure()  # 创建一个新的图形窗口
plt.imshow(img)  # 这行代码将图像img显示在当前的图形窗口中,并不会直接显示
plt.axis('off')  # 关闭坐标轴的显示
plt.show()  # 显示图形窗口中的内容(显示图像

# 打印图像信息

print(f'type: {type(img)}')  # 打印图像类型

print(f'shape: {img.shape}')  # 打印图像形状

print(f'width: {img.shape[1]}')  # 图像宽度

print(f'height: {img.shape[0]}')  # 图像高度

print(f'bands: {img.shape[2] if img.ndim == 3 else 1}')  # 图像通道数(如果是灰度图,则为1)

print(f'size: {img.size}')  # 图像总像素数

print(f'maxValue: {img.max()}')  # 最大像素值

print(f'minValue: {img.min()}')  # 最小像素值

print(f'meanValue: {img.mean()}')  # 平均像素值

# 获取特定像素值

pixel = img[203, 1]  # 注意:这里的索引应为 [y, x]

print(f'pixelValue: {pixel}')  # 打印特定像素值

print(f'type(pixel): {type(pixel)}')  # 打印像素值类型

# 进行图像切片并显示,会显示三次,第一次原图,第二次第三次都会变矮

for step in [0, 1, 2]:

    r = img[::step + 1]  # 这里使用 step + 1 以避免除以零的错误。暂时还不理解

    plt.figure()

    plt.imshow(r, cmap='gray')  # 使用灰度色图显示

    plt.axis('off')  # 关闭坐标轴

    plt.show()  #显示图像

背了六级单词

你可能感兴趣的:(学习,笔记)