数据建模-数据集特征获取

undefined数据建模-数据集特征获取


以下内容均按照作者的个人思路去编排,如果有更好的想法等,则以自己的优先


undefined一、过滤图像数据集

待更新……

undefined二、按类别求图像(集)的均值、方差

  • 求图像的均值、方差
  1. import cv2
  2. img1 = cv2.imread("D:/Source Code/Python/Conda/AI/data/seg_data/seg_train/seg_train/forest/8.jpg",1)
  3. print (img1[0][0])#输出原始图像的通道值
  4. mean_image = np.mean(img1, axis=0)#对图像求均值
  5. var_image = np.var(img1, axis=0)#对图像求方差
  6. print ("-----------------------------------------------")
  7. print ("mean_image的形状以及数值")
  8. print (mean_image.shape)
  9. print (mean_image[0])
  10. print ("var_image的形状以及数值")
  11. print (var_image.shape)
  12. print (var_image[0])
  13. print ("-----------------------------------------------")

结果:(与之类似即可)

数据建模-数据集特征获取 - 图1

  1. 求图像集的均值、方差
  1. import os
  2. from PIL import Image #加载图像
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. from imageio import imread #读取图像
  6. filepath = r'D:/Source Code/Python/Conda/AI/data/seg_data/seg_train/seg_train/forest'#载入数据集目录
  7. pathDir = os.listdir(filepath)#返回指定的文件夹包含的文件或文件夹的名字的列表给pathDir
  8. R_channel = 0#R通道=0
  9. G_channel = 0#G通道=0
  10. B_channel = 0#B通道=0
  11. for idx in range(len(pathDir)):#将索引指定为循环体为0~pathDir的长度-1
  12. filename = pathDir[idx]#将包含索引的pathDir赋给filename
  13. img = imread(os.path.join(filepath, filename)) / 255.0#将'filepath'与'filename'拼接在一起并归一化,之后赋给img
  14. R_channel = R_channel + np.sum(img[:, :, 0])#获取读取到的img中,单通道0的像素值并求和,之后与R通道的值合并在一起
  15. G_channel = G_channel + np.sum(img[:, :, 1])#获取读取到的img中,单通道1的像素值并求和,之后与G通道的值合并在一起
  16. B_channel = B_channel + np.sum(img[:, :, 2])#获取读取到的img中,单通道2的像素值并求和,之后与B通道的值合并在一起
  17. #一张RGB图像可以看成一个三维的矩阵,矩阵中的每一个数表示了图像上不同位置,不同颜色的亮度。
  18. num = len(pathDir) * 155 * 155 #这里(155*155)是每幅图片的大小,所有图片尺寸必须都一样,将pathDir的个数*155*155赋给num
  19. R_mean = R_channel / num#R的均值为'R通道的值÷num'
  20. G_mean = G_channel / num#G的均值为'G通道的值÷num'
  21. B_mean = B_channel / num#B的均值为'B通道的值÷num'
  22. R_channel = 0
  23. G_channel = 0
  24. B_channel = 0
  25. for idx in range(len(pathDir)):
  26. filename = pathDir[idx]
  27. img = imread(os.path.join(filepath, filename)) / 255.0
  28. #获取读取到的img中,单通道0的像素值并求和,之后减去R的均值,再将得到的值平方,然后与R通道的值合并在一起赋给R_channel
  29. R_channel = R_channel + np.sum((img[:, :, 0] - R_mean) ** 2)
  30. #获取读取到的img中,单通道1的像素值并求和,之后减去G的均值,再将得到的值平方,然后与G通道的值合并在一起赋给G_channel
  31. G_channel = G_channel + np.sum((img[:, :, 1] - G_mean) ** 2)
  32. #获取读取到的img中,单通道2的像素值并求和,之后减去B的均值,再将得到的值平方,然后与B通道的值合并在一起赋给B_channel
  33. B_channel = B_channel + np.sum((img[:, :, 2] - B_mean) ** 2)
  34. R_var = np.sqrt(R_channel / num)#R的方差为'R通道的值÷num再开方'
  35. G_var = np.sqrt(G_channel / num)#G的方差为'G通道的值÷num再开方'
  36. B_var = np.sqrt(B_channel / num)#B的方差为'B通道的值÷num再开方'
  37. print("R_mean is %f, G_mean is %f, B_mean is %f" % (R_mean, G_mean, B_mean))
  38. print("R_var is %f, G_var is %f, B_var is %f" % (R_var, G_var, B_var))

结果:(与之类似即可)

数据建模-数据集特征获取 - 图2

  • 拓展学习(统一图片尺寸):
  1. from PIL import Image
  2. import os
  3. def image_resize(image_path, new_path): # 统一图片尺寸
  4. print('============>>修改图片尺寸')
  5. for img_name in os.listdir(image_path):
  6. img_path = image_path + "/" + img_name # 获取该图片全称
  7. image = Image.open(img_path) # 打开特定一张图片
  8. image = image.resize((512, 512)) # 设置需要转换的图片大小
  9. image.save(new_path + '/'+ img_name) # 按照原图像名称保存图像至新路径
  10. print("end the processing!")
  11. if __name__ == '__main__':
  12. print("ready for :::::::: ")
  13. ori_path = r"Z:\pycharm_projects\ssd\VOC2007\JPEGImages" # 输入图片的文件夹路径
  14. new_path = 'Z:/pycharm_projects/ssd/VOC2007/reshape' # 转换之后的文件夹路径,注意反斜杠
  15. image_resize(ori_path, new_path)