imageDataAugmenter()是MATLAB自带的图像增强选项,返回的是一组设置(options),比如要不要反转,或者随机缩放多少之类的,而不是直接返回增强后的图像。
用法:aug = imageDataAugmenter(Name,Value)
可以看到,输入是一系列的键值对
直接看一个示例会更直观
>> aug = imageDataAugmenter( ...
'RandXTranslation',[-2 2], ...
'RandYTranslation',[-2 2], ...
'RandXScale',[0.9 1.1], ...
'RandYScale',[0.9 1.1]);
>> aug
aug =
imageDataAugmenter - 属性:
FillValue: 0
RandXReflection: 0
RandYReflection: 0
RandRotation: [0 0]
RandScale: [1 1]
RandXScale: [0.9000 1.1000]
RandYScale: [0.9000 1.1000]
RandXShear: [0 0]
RandYShear: [0 0]
RandXTranslation: [-2 2]
RandYTranslation: [-2 2]
imageDataAugmenter 有很多属性,这些都涉及图像如何进行增强,
- FillValue:我也没看懂这个填充是啥意思…
- RandXReflection:在水平方向随机翻转,
若设置为1,则图像增强时有50%的几率进行翻转,默认为0,即不翻转 - RandYReflection:在垂直方向随机翻转,同上
- RandRotation:随机旋转,如:[-30 30],默认为[0 0]
- RandScale:随机缩放,如:[0.7 2],默认[0 0]
- RandXScale:对水平方向随机缩放
- RandYScale:对垂直方向随机缩放
注:若RandScale不为[0 0],则RandXScale和RandYScale不起作用 - RandXShear:水平裁剪,默认为[0 0]
- RandYShear:垂直裁剪,默认为[0 0]
- RandXTranslation:水平方向随机平移
- RandYTranslation:垂直方向随机平移
以上只是有了一个图像增强的策略,还需要与augmentedImageDatastore连用才能完成图像增强。
augimdsTrain = augmentedImageDatastore([28,28],imds_train, ...
'DataAugmentation',imageAugmenter);
上面,[28,28]为输出图像大小,imds_train为数据集,是一个ImageDatastore对象