图片数据增强库(imgaug)的标准用法_续

    这一篇接上一篇,介绍下常用的方法,目的是为了方便以后调用。后面附上常用方法的结果图。

#coding:utf-8
import imgaug as ia
from imgaug import augmenters as iaa
import numpy as np
import cv2
images = cv2.imread('./origin.jpg',1)
images = np.expand_dims(images,axis=0)

sometimes = lambda aug: iaa.Sometimes(p=0.5, then_list=aug)
####定义一个lambda表达式,可以以p的概率去执行sometimes传递的图像增强
seq = iaa.Sequential(
    [
        sometimes(iaa.Crop(percent=(0, 0.1),keep_size=True)),####以p=0.5的概率去执行图片裁剪
        sometimes(iaa.Affine(
            scale={"x": (0.8, 1.2), "y": (0.8, 1.2)},
            translate_percent={"x": (-0.2, 0.2), "y": (-0.2, 0.2)},
            rotate=(-45, 45),
            shear=(-16, 16),
            order=[0, 1],
            cval=(0, 255),
            mode=ia.ALL
        )),######order = 0 最临近插值 =1双线性插值
        ####mode取值 * "constant" -> cv2.BORDER_CONSTANT
             #* "edge" -> cv2.BORDER_REPLICATE
            #* "symmetric" -> cv2.BORDER_REFLECT
            #* "reflect" -> cv2.BORDER_REFLECT_101
            #* "wrap" -> cv2.BORDER_WRAP
        ########If ia.ALL, a value from the discrete range [0 .. 255] will be sampled per image。cval图像变化后padding的值
        iaa.SomeOf((0, 5),     ####从下列序列中挑选0-5个图像增强的方法 相当与random.choice,下面可以放些自认为不太重要的方法
            [
                sometimes(
                    iaa.Superpixels(
                        p_replace=(0, 1.0),
                        n_segments=(20, 200)
                    )
                ),#######执行 SLIC 超像素分割算法,对于每副图片p_replace=0-1的概率替换像素值。生成n_segments个超像素值
                ######iaa.OneOf  ==  iaa.SomeOf(1,1)  下面3个方法选一个
                iaa.OneOf([
                    iaa.GaussianBlur((0, 3.0)),
                    iaa.AverageBlur(k=(2, 7)),
                    iaa.MedianBlur(k=(3, 11)),
                ]),
                ####用于锐化图像并将结果与原始图像叠加
                iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),
                # 浮雕图像并将结果与原始图像叠加。
                iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)),
                ######边缘检测和方向边缘检测与原图相加
                sometimes(iaa.OneOf([
                    iaa.EdgeDetect(alpha=(0, 0.7)),
                    iaa.DirectedEdgeDetect(
                        alpha=(0, 0.7), direction=(0.0, 1.0)
                    ),
                ])),
                iaa.OneOf([
                    iaa.Dropout((0.01, 0.1), per_channel=0.5), ####丢掉1%-10%的像素信息
                    iaa.CoarseDropout(
                        (0.03, 0.15), size_percent=(0.02, 0.05),
                        per_channel=0.2
                    ),   #####丢掉矩形块内的像素信息
                ]),
                ####5%的概率进行255-像素值进行图像反化
                iaa.Invert(0.05, per_channel=True),
                # 每个像素加上一个-10到10的值
                iaa.Add((-10, 10), per_channel=0.5),
                ####灰度图  cv2图片通道顺序BGR
                iaa.Grayscale(alpha=(0.0, 1.0),from_colorspace='BGR'),
                ######通过使用位移场在局部移动像素来转换图像。
                #论文Simard, Steinkraus and Platt Best Practices for Convolutional Neural Networks applied to Visual Document Analysis in Proc. of the International Conference on Document Analysis and Recognition, 2003
                sometimes(
                    iaa.ElasticTransformation(alpha=(0.5, 3.5), sigma=0.25)
                ),
                #####图像上设置规则网格,并通过仿射变换随机移动这些点的邻域进行图片局部扭曲。
                sometimes(iaa.PiecewiseAffine(scale=(0.01, 0.05)))
            ],
            # do all of the above augmentations in random order
            random_order=True
        )
    ],
    # do all of the above augmentations in random order
    random_order=True
)

images_aug = seq.augment_images(images)
print images_aug.shape
images_aug = np.squeeze(images_aug,axis=0)
cv2.imwrite('./all.jpg',images_aug)

图片数据增强库(imgaug)的标准用法_续_第1张图片图片数据增强库(imgaug)的标准用法_续_第2张图片图片数据增强库(imgaug)的标准用法_续_第3张图片

                    原图                                                 Add方法                                              Affine方法

图片数据增强库(imgaug)的标准用法_续_第4张图片图片数据增强库(imgaug)的标准用法_续_第5张图片图片数据增强库(imgaug)的标准用法_续_第6张图片

                 CoarseDropout                              DirectedEdgeDetect                              Dropout

图片数据增强库(imgaug)的标准用法_续_第7张图片图片数据增强库(imgaug)的标准用法_续_第8张图片图片数据增强库(imgaug)的标准用法_续_第9张图片

                EdgeDetect                                     ElasticTransformation                           Emboss

图片数据增强库(imgaug)的标准用法_续_第10张图片图片数据增强库(imgaug)的标准用法_续_第11张图片图片数据增强库(imgaug)的标准用法_续_第12张图片

                   Grayscale                                           Invert                                              PiecewiseAffine

图片数据增强库(imgaug)的标准用法_续_第13张图片图片数据增强库(imgaug)的标准用法_续_第14张图片图片数据增强库(imgaug)的标准用法_续_第15张图片

                   Sharpen                                                 Superpixels                                     all

你可能感兴趣的:(python)