主要内容

TransformedDatastore

用于转换底层数据存储的数据存储

描述

使用一个TransformedDatastore对象转换或处理从底层数据存储中读取的数据。

创建

您可以创建TransformedDatastore对象使用变换函数。例如,dsnew = transform(ds1_data,ds2_data,…dsN_data,@fcn)创建用于转换一个或多个数据存储的数据存储ds1_data、ds2_data…dsN_data使用变换函数fcn

属性

全部展开

底层数据存储,作为数据存储对象的单元格数组返回。

转换函数集,指定为函数句柄的单元格数组。

数据类型:细胞

包括来自函数,指定为逻辑向量。对于每一个值IncludeInfo这是真正的,转换后的数据存储使用中对应转换函数的替代签名transformSet

函数中提取的数据的信息信息结构体。有关更多信息,请参见功能页面。

数据类型:逻辑

此属性是只读的。

支持写入的格式,金宝app作为字符串的行向量返回。此属性指定使用时可能的输出格式writeall从数据存储写入输出文件。

对象的功能

结合 组合来自多个数据存储的数据
hasdata 确定是否有数据可以读取
预览 预览数据存储中的数据子集
读取数据存储中的数据
readall 读取数据存储中的所有数据
writeall 将数据存储写入文件
重置 将数据存储重置为初始状态
变换 变换数据存储
numpartitions 数据存储分区数
分区 对数据存储进行分区
洗牌 打乱数据存储中的所有数据
isPartitionable 确定数据存储是否可分区
isSubsettable 确定数据存储是否可子集
isShuffleable 确定数据存储是否可洗牌

例子

全部折叠

为图像集合创建一个数据存储,并对该数据存储中的所有图像应用相同的转换。例如,将集合中的所有图像调整为指定的目标大小。

创建一个ImageDatastore有两个图像。

imds = imageDatastore({“street1.jpg”“peppers.png”})
imds = ImageDatastore属性:Files:{'…/devel/bat/Bdoc22b/build/matlab/toolbox/matlab/demos/street1.jpg';文件夹:{'/mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/matlab/ imagesci/椒椒水.png';'/mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/matlab/imagesci'} AlternateFileSystemRoots: {} ReadSize: 1 Labels: {} S金宝appupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage

阅读所有图片。注意,数据存储包含不同大小的映像。

Img1 = read(imds);%读取第一个图像Img2 = read(imds);%读取下一个图像img1img2
名称大小字节类型属性img1 480x640x3 921600 uint8 img2 384x512x3 589824 uint8

将数据存储中的所有图像转换为指定的目标大小。

targetSize = [224,224];imdsReSz = transform(imds,@(x) imresize(x,targetSize));

读取图像并显示其大小。

imgReSz1 = read(imdsReSz);imgReSz2 = read(imdsReSz);谁imgReSz1imgReSz2
名称大小字节类属性imgReSz1 224x224x3 150528 uint8 imgReSz2 224x224x3 150528 uint8

显示调整大小的图像。

tiledlayout(1、2);nexttile imshow (imgReSz1);轴;标题(“调整大小Street1.jpg”nexttile imshow(imgReSz2);轴;标题(“调整大小peppers.png”

图中包含2个轴对象。标题为Resized Street1.jpg的Axes对象1包含一个image类型的对象。标题为Resized peppers.png的坐标轴对象2包含一个image类型的对象。

创建多个数据存储对象,并对所有数据存储应用相同的转换。例如,将多个图像组合成一个矩形平铺图像。

创建一个ImageDatastore只用一张图片。

imds1 = imageDatastore({“ngc6543a.jpg”})
imds1 = ImageDatastore与属性:文件:{'…/devel/bat/ build/matlab/toolbox/matlab/demos/ngc6543a.jpg'}文件夹:{'/mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/matlab/demos'} AlternateFileSystemRoots: {} ReadSize: 1标签:{}SupportedOutputFormats: ["png" "jpg" "jpeg" "金宝apptif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage

将图像读入工作区,以从原始图像中的每个颜色通道创建图像文件。

rgbImage = imread(“ngc6543a.jpg”);imwrite (rgbImage (:,: 1),“nebula_red.jpg”);imwrite (rgbImage (:,:, 2),“nebula_green.jpg”);imwrite (rgbImage (:: 3),“nebula_blue.jpg”);

创建一个ImageDatastore对象用于每个单通道图像。

imdsR = imageDatastore({“nebula_red.jpg”});imdsG = imageDatastore({“nebula_green.jpg”});imdsB = imageDatastore({“nebula_blue.jpg”});

读取存储在每个数据存储中的映像并显示它们的大小。

imOriginal = read(imds1);img_red = read(imdsR);img_green = read(imdsG);img_blue = read(imdsB);谁img1img_redimg_greenimg_blue
名称大小字节分类属性img_blue 650x600 390000 uint8 img_green 650x600 390000 uint8 img_red 650x600 390000 uint8

通过将所有图像组合成一个矩形平铺图像来转换所有数据存储。将彩色图像转换为imds1调整为灰度,使其尺寸与其他图像相匹配。

tds1 = transform(imds1,imdsR,imdsG,imdsB, @(x1,x2,x3,x4) [rgb2gray(x1),x2;x3,x4]);Tile = read(tds1);

显示平铺图像。

imshow(瓷砖)

图中包含一个轴对象。axis对象包含一个image类型的对象。

版本历史

在R2019a中引入