181118图片增强

一、调整图片亮度

运用函数:

f(x)= contrast * g(x) + brightness

并与for循环函数嵌套使用将图片分成三层,达到对图片每一个“点”进行遍历的效果

for i in range(pic.shape[0]):
 for j in range(pic.shape[1]):
        for k in range(pic.shape[2]):
            if (pic[i][j][k] * contrast+ brightness<=255):
             pic[i][j][k] = pic[i][j][k] * contrast+ brightness
            else:
                pic[i][j][k] = 255

其中,contrast(对比度)与brightness(亮度)的值可以自己设定以达到不同的效果。

二、在图片中插入噪点

for i in range(1000):
    pic[random.randint(0, pic.shape[0]-1)][random.randint(0,pic.shape[1]-1)][:]=255

运用该函数可以在图片中随机插入噪点

三、高斯模糊

cv2.GaussianBlur()函数

output = cv2.GaussianBlur(img, (5, 5), 1.5)
  • img:为要进行操作的图片
  • (5,5):指高斯矩阵的尺寸
  • 1.5:指标准差(越大越模糊)

四、中值滤波

cv2.medianBlur()函数

output = cv2.medianBlur(img, n)
  • img:为要进行操作的图片
  • n:对像素的中心值及其n*n邻域组成了一个数值集,对其进行处理计算,当前像素被其中值替换掉。

五、在原有图片基础上通过随机变换生成新的图片,以拓展图片资源

keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
    samplewise_center=False,
    featurewise_std_normalization=False,
    samplewise_std_normalization=False,
    zca_whitening=False,
    zca_epsilon=1e-6,
    rotation_range=0.,
    width_shift_range=0.,
    height_shift_range=0.,
    shear_range=0.,
    zoom_range=0.,
    channel_shift_range=0.,
    fill_mode='nearest',
    cval=0.,
    horizontal_flip=False,
    vertical_flip=False,
    rescale=None,
    preprocessing_function=None,
    data_format=K.image_data_format())

参数解析:
详情可见:keras图片预处理

  • featurewise_center:
    布尔值,使输入数据集去中心化(均值为0), 按feature执行
  • samplewise_center:
    布尔值,使输入数据的每个样本均值为0
  • featurewise_std_normalization:
    布尔值,将输入除以数据集的标准差以完成标准化, 按feature执行
  • samplewise_std_normalization:
    布尔值,将输入的每个样本除以其自身的标准差
  • zca_whitening:
    布尔值,对输入数据施加ZCA白化
  • zca_epsilon:
    ZCA使用的eposilon,默认1e-6
  • rotation_range:
    整数,数据提升时图片随机转动的角度
  • width_shift_range:
    浮点数,图片宽度的某个比例,数据提升时图片水平偏移的幅度
  • height_shift_range:
    浮点数,图片高度的某个比例,数据提升时图片竖直偏移的幅度
  • shear_range:
    浮点数,剪切强度(逆时针方向的剪切变换角度)
  • zoom_range:
    浮点数或形如[lower,upper]的列表,随机缩放的幅度,若为浮点数,则相当于[lower,upper] = [1 - zoom_range, 1+zoom_range]
  • channel_shift_range:
    浮点数,随机通道偏移的幅度
  • fill_mode:;
    ‘constant’,‘nearest’,‘reflect’或‘wrap’之一,当进行变换时超出边界的点将根据本参数给定的方法进行处理
  • cval:
    浮点数或整数,当fill_mode=constant时,指定要向超出边界的点填充的值
  • horizontal_flip:
    布尔值,进行随机水平翻转
  • vertical_flip:
    布尔值,进行随机竖直翻转
  • rescale:
    重放缩因子,默认为None. 如果为None或0则不进行放缩,否则会将该数值乘到数据上(在应用其他变换之前)
  • preprocessing_function:
    将被应用于每个输入的函数。该函数将在图片缩放和数据提升之后运行。该函数接受一个参数,为一张图片(秩为3的numpy array),并且输出一个具有相同shape的numpy array
  • data_format:
    字符串,“channel_first”或“channel_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channel_last”对应原本的“tf”,“channel_first”对应原本的“th”。以128x128的RGB图像为例,“channel_first”应将数据组织为(3,128,128),而“channel_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channel_last”

六、数据集扩充

扩充思路:

  1. 运用上节课的内容对文件进行遍历(os模块)
  2. 引用上述第五点,对图片进行随机处理(keras.preprocessing.image模块)
  3. 生成图片,并将其保存到指定文件夹下(flow方法)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值