主要内容

TransformedDatastore

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

描述

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

创建

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

属性

全部展开

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

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

数据类型:细胞

包含的信息函数,指定为逻辑向量。的每一个值IncludeInfo这是真正的,转换后的数据存储使用对应转换函数的备选签名transformSet

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

数据类型:逻辑

此属性是只读的。

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

对象的功能

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

例子

全部折叠

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

创建一个ImageDatastore有两个图片。

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

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

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

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

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

读取图像并显示它们的大小。

imgReSz1 =阅读(imdsReSz);imgReSz2 =阅读(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的Axes对象2包含一个类型为image的对象。

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

创建一个ImageDatastore用一个形象。

imds1 = imageDatastore ({“ngc6543a.jpg”})
imds1 = ImageDatastore具有以下属性:Files:{'…/dev /bat/Bdoc22b/build/matlab/toolbox/matlab/demos/ngc6543 .jpg'}文件夹:{'/mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/matlab/demos'} AlternateFileSystemRoots: {} ReadSize: 1 label: {} SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage . txt: {

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

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 =阅读(imds1);img_red =阅读(imdsR);img_green =阅读(imdsG);img_blue =阅读(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]);瓦=阅读(tds1);

显示平铺图像。

imshow(瓷砖)

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

版本历史

介绍了R2019a

Baidu
map