数据扩充(多种方法)

一.目的

当数据集构造的过程中,发现负样本和正样本之间数量差异过大,因此需要对数据集进行扩充,使数据集中正负样本差距不大。

二.方法

(1)水平旋转,垂直翻转,水平垂直翻转
flip()函数中-1,0,1三个依次设置

import cv2
import os
import numpy as np

#image_size = 224  # 设定尺寸
source_path = "D:/datasets/yc/"  # 源文件路径
target_path = "D:/datasets/"  # 输出目标文件路径

if not os.path.exists(target_path):
    os.makedirs(target_path)

image_list = os.listdir(source_path)  # 获得文件名

i = 0
for file in image_list:
    i = i + 1

    image_source = cv2.imread(source_path + file)  # 读取图片
    print(image_source.shape)
    img_height = image_source.shape[0]  #1024 高度
    img_width = image_source.shape[1]   #3200 宽度
    img_channels = image_source.shape[2]
    #发现小数点前个数
    image = file.rfind('.')
    #print(image)
    if image > 0:
        image_one = file[:image]
        print(image_one)


    #
    image_save = cv2.flip(image_source,-1)  # 修改尺寸

    cv2.imwrite(target_path + str(image_one) +".tif", image_save)  # 重命名并且保存
print("批量处理完成")

采集的数据:
在这里插入图片描述
进行旋转后的数据(水平旋转,垂直翻转,水平垂直翻转):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)加入高斯噪声和椒盐噪声
高斯噪声就是给图片添加一个服从高斯分布的噪声,可以通过调节高斯分布标准差(sigma)的大小来控制添加噪声程度,sigma越大添加的噪声越多图片损坏的越厉害

import cv2
import os
import numpy as np

#image_size = 224 # 设定尺寸
source_path = "img/" # 源文件路径
target_path = "ld/" # 输出目标文件路径

if not os.path.exists(target_path):
os.makedirs(target_path)

image_list = os.listdir(source_path) # 获得文件名

i = 0
for file in image_list:
i = i + 1

image_source = cv2.imread(source_path + file) # 读取图片
print(image_source.shape)
img_height = image_source.shape[0] #1024 高度
img_width = image_source.shape[1] #3200 宽度
img_channels = image_source.shape[2]
#发现小数点前个数
image = file.rfind('.')
#print(image)
if image > 0:
image_one = file[:image]
print(image_one)

# 设置高斯分布的均值和方差
mean = 0
# 设置高斯分布的标准差
sigma = 25
# 根据均值和标准差生成符合高斯分布的噪声
gauss = np.random.normal(mean, sigma, (img_height, img_width, img_channels))
# 给图片添加高斯噪声
noisy_img = image_source + gauss
# 设置图片添加高斯噪声之后的像素值的范围
noisy_img = np.clip(noisy_img, a_min=0, a_max=255)
image_save = cv2.flip(image_source,-1) # 修改尺寸
cv2.imwrite(target_path + str(image_one) + "_four"+".bmp", noisy_img) # 重命名并且保存
print("批量处理完成")

在这里插入图片描述
椒盐噪声就是给图片添加黑白噪点,椒指的是黑色的噪点(0,0,0)盐指的是白色的噪点(255,255,255),通过设置amount来控制添加噪声的比例,值越大添加的噪声越多,图像损坏的更加严重。

import cv2
import os
import numpy as np

#image_size = 224 # 设定尺寸
source_path = "D:/datasets/yc/" # 源文件路径
target_path = "D:/datasets/" # 输出目标文件路径

if not os.path.exists(target_path):
os.makedirs(target_path)

image_list = os.listdir(source_path) # 获得文件名

i = 0
for file in image_list:
i = i + 1

image_source = cv2.imread(source_path + file) # 读取图片
print(image_source.shape)
img_height = image_source.shape[0] #1024 高度
img_width = image_source.shape[1] #3200 宽度
img_channels = image_source.shape[2]
#发现小数点前个数
image = file.rfind('.')
#print(image)
if image > 0:
image_one = file[:image]
print(image_one)

s_vs_p = 0.5
# 设置添加噪声图像像素的数目
amount = 0.04
noisy_img = np.copy(image_source)
# 添加salt噪声
num_salt = np.ceil(amount * image_source.size * s_vs_p)
# 设置添加噪声的坐标位置
coords = [np.random.randint(0, i - 1, int(num_salt)) for i in image_source.shape]
noisy_img[coords[0], coords[1], :] = [255, 255, 255]
# 添加pepper噪声
num_pepper = np.ceil(amount * image_source.size * (1. - s_vs_p))
# 设置添加噪声的坐标位置
coords = [np.random.randint(0, i - 1, int(num_pepper)) for i in image_source.shape]
noisy_img[coords[0], coords[1], :] = [0, 0, 0]
#
# #image_save = cv2.flip(image_source,-1) # 修改尺寸

cv2.imwrite(target_path + str(image_one) +".tif", image_source) # 重命名并且保存
print("批量处理完成")```
![在这里插入图片描述](https://img-blog.csdnimg.cn/b704455b3213406baf1f8ef08c866fba.png)

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值