transform()
Matlab 给出的解释是:Transform datastore,也就是转换数据存储区。
Introduced in R2019a 是最新添加的一个函数。
语法
dsnew = transform(ds,@fcn)
dsnew = transform(ds,@fcn,'IncludeInfo',IncludeInfo)
说明
dsnew = transform(ds,@fcn)
transforms an input datastore ds using the transformation function fcn and returns the transformed datastore dsnew.
使用转换函数fcn转换输入数据存储区ds并返回转换后的数据存储区dsnew。
dsnew = transform(ds,@fcn,'IncludeInfo',IncludeInfo)
uses an alternative definition of the transform function fcn. The alternative definition enables you to use the additional information returned by the read function of the datastore.
使用转换函数fcn的替代定义。替代定义使您可以使用数据存储区的读取功能返回的其他信息。
示例
将转换函数应用于收集图像
Apply Transformation to Collection of Images
为一组图像创建数据存储,并将相同的转换应用于数据存储中的所有图像。例如,将集合中的所有图像调整为指定的目标大小。
Create an ImageDatastore with two images.
创建一个包含两张图片的图片数据存储库(ImageDatastore)
imds = imageDatastore({'street1.jpg','peppers.png'})
imds =
ImageDatastore - 属性:
Files: {
'D:\Program Files\Matlab2019\R2019a\toolbox\matlab\demos\street1.jpg';
' ...\Matlab2019\R2019a\examples\deeplearning_shared\peppers.png'
}
AlternateFileSystemRoots: {}
ReadSize: 1
Labels: {}
ReadFcn: @readDatastoreImage
阅读所有图像。请注意,数据存储区包含不同大小的图像。
img1 = read(imds); % reads the first image
img2 = read(imds); % reads the next image
whos img1 img2
whos: MATLAB函数, 按字母顺序列出当前活动工作区中所有变量的名称,大小和类型。
Name Size Bytes Class Attributes
img1 480x640x3 921600 uint8
img2 384x512x3 589824 uint8
将datastroe中的所有图像转换为指定的目标大小。
targetSize = [224,224];
imdsReSz = transform(imds,@(x) imresize(x,targetSize));
读取图像并显示尺寸。
imgReSz1 = read(imdsReSz);
imgReSz2 = read(imdsReSz);
whos imgReSz1 imgReSz2
Name Size Bytes Class Attributes
imgReSz1 224x224x3 150528 uint8
imgReSz2 224x224x3 150528 uint8
显示已经调整大小的图像。
subplot(121); imshow(imgReSz1); axis on; title('Resized Street1.jpg');
subplot(122); imshow(imgReSz2); axis on; title('Resized peppers.png');
输入参数
ds — Input datastore格式:datastroe 输入数据存储
输入数据存储区。有关内置数据存储的完整列表,请参阅选择文件格式或应用程序的数据存储( Select Datastore for File Format or Application)。您还可以指定自定义数据存储。
@fcn 格式:function handle(函数句柄) 转换数据的函数
转换数据的函数,指定为函数句柄。该函数将数据作为输入,并根据fcn中定义的转换返回转换后的数据。
函数句柄 函数句柄是一种存储函数关联项的数据类型。例如,您可以使用函数句柄构造匿名函数或指定回调函数。此外,也可以使用函数句柄将一个函数传递给另一个函数,或者从主函数外部调用局部函数。
transform函数必须具有此签名,dataIn必须与使用read函数返回的数据具有相同的格式。
function dataOut = transformFcn(dataIn)
..
end
或者,您可以定义转换函数fcn以使用由read函数返回的数据的其他信息。要使用此替代定义,必须将IncludeInfo的值指定为true。在这种情况下,转换函数必须具有此签名。
function [dataOut,infoOut] = transformFcn(dataIn,infoIn)
..
end
Example: @transformFcn
Data Types: function_handle
IncludeInfo 格式:true | false 包含来自read函数的信息
包含来自read函数的信息,指定为true或false。read函数以info strcut返回有关提取数据的信息。有关更多信息,请参read功能页面。
将IncludeInfo的值设置为true时,必须使用替换签名作为转换函数fcn。
输出参数
dsnew 格式:TransformedDatastore object 包含转换数据的新的数据储存
具有转换数据的新数据存储区,作为TransformedDatastore对象返回。