splitEachLabel
按比例拆分 ImageDatastore 标签
语法
说明
[
可将 imds1,imds2
] = splitEachLabel(imds
,p
)imds
中的图像文件拆分为两个新的数据存储,imds1
和 imds2
。新的数据存储 imds1
包含每个标签的前 p
的文件,imds2
包含每个标签的其余文件。p
可以是 0 到 1 之间的数字,指明每个标签分配给 imds1
的文件百分比;也可以是一个整数,指明每个标签分配给 imds1
的绝对文件数。
[
将数据存储拆分为 imds1,...,imdsM
] = splitEachLabel(imds
,p1,...,pN
)N+1
个新的数据存储。第一个新的数据存储 imds1
包含每个标签的前 p1
的文件,下一个新的数据存储 imds2
包含接下来的 p2
的文件,以此类推。如果 p1,...,pN
代表文件数量,则它们的总和不能超过原始数据存储 imds
中最小标签的文件数量。
___ = splitEachLabel(___,'randomized')
将每个标签的指定比例的文件随机分配给新的数据存储。
___ = splitEachLabel(___,
使用一个或多个名称-值对组参量指定新数据存储的属性。例如,您可以通过 Name,Value
)'Include','labelname'
指定要拆分的标签。
示例
创建一个 ImageDatastore
对象,并根据每个图像所在文件夹的名称为其添加标签。生成的标签名称为 demos
和 imagesci
。
imds = imageDatastore(fullfile(matlabroot, 'toolbox', 'matlab', {'demos','imagesci'}),... 'LabelSource', 'foldernames', 'FileExtensions', {'.jpg', '.png', '.tif'}); imds.Labels
ans = demos demos demos demos demos demos imagesci imagesci
用 imds
中的文件创建两个新的数据存储。第一个数据存储 imds60
包含前 60% 的带有 demos
标签的文件以及前 60% 的带有 imagesci
标签的文件。第二个数据存储 imds40
包含每个标签上其余 40% 的文件。如果对标签应用百分比后得出的文件数不是整数,splitEachLabel
会向下舍入到最接近的整数。
[imds60,imds40] = splitEachLabel(imds,0.6)
imds60 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\cloudCombined.jpg'; ' ...\matlab\toolbox\matlab\demos\example.tif'; ' ...\matlab\toolbox\matlab\demos\landOcean.jpg' ... and 2 more } Labels: [demos; demos; demos ... and 2 more categorical] ReadFcn: @readDatastoreImage imds40 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\street1.jpg'; ' ...\matlab\toolbox\matlab\demos\street2.jpg'; ' ...\matlab\toolbox\matlab\imagesci\peppers.png' } Labels: [demos; demos; imagesci] ReadFcn: @readDatastoreImage
创建一个 ImageDatastore
对象,并根据每个图像所在文件夹的名称为其添加标签。生成的标签名称为 demos
和 imagesci
。
imds = imageDatastore(fullfile(matlabroot, 'toolbox', 'matlab', {'demos','imagesci'}),... 'LabelSource', 'foldernames', 'FileExtensions', {'.jpg', '.png', '.tif'}); imds.Labels
ans = demos demos demos demos demos demos imagesci imagesci
用 imds
中的文件创建两个新的数据存储。第一个数据存储 imds1
包含第一个带有 demos
标签的文件以及第一个带有 imagesci
标签的文件。第二个数据存储 imds2
包含每个标签上剩余的文件。
[imds1,imds2] = splitEachLabel(imds,1)
imds1 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\cloudCombined.jpg'; ' ...\matlab\toolbox\matlab\imagesci\corn.tif' } Labels: [demos; imagesci] ReadFcn: @readDatastoreImage imds2 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\example.tif'; ' ...\matlab\toolbox\matlab\demos\landOcean.jpg'; ' ...\matlab\toolbox\matlab\demos\ngc6543a.jpg' ... and 3 more } Labels: [demos; demos; demos ... and 3 more categorical] ReadFcn: @readDatastoreImage
创建一个 ImageDatastore
对象,并根据每个图像所在文件夹的名称为其添加标签。生成的标签名称为 demos
和 imagesci
。
imds = imageDatastore(fullfile(matlabroot, 'toolbox', 'matlab', {'demos','imagesci'}),... 'LabelSource', 'foldernames', 'FileExtensions', {'.jpg', '.png', '.tif'}); imds.Labels
ans = demos demos demos demos demos demos imagesci imagesci
用 imds
中的文件创建三个新的数据存储。第一个数据存储 imds60
包含前 60% 的带有 demos
标签的文件以及前 60% 的带有 imagesci
标签的文件。第二个数据存储 imds10
包含每个标签上接下来的 10% 的文件。第三个数据存储 imds30
包含每个标签上其余 30% 的文件。如果对标签应用百分比后得出的文件数不是整数,splitEachLabel
会向下舍入到最接近的整数。
[imds60, imds10, imds30] = splitEachLabel(imds,0.6,0.1)
imds60 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\cloudCombined.jpg'; ' ...\matlab\toolbox\matlab\demos\example.tif'; ' ...\matlab\toolbox\matlab\demos\landOcean.jpg' ... and 2 more } Labels: [demos; demos; demos ... and 2 more categorical] ReadFcn: @readDatastoreImage imds10 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\street1.jpg' } Labels: demos ReadFcn: @readDatastoreImage imds30 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\street2.jpg'; ' ...\matlab\toolbox\matlab\imagesci\peppers.png' } Labels: [demos; imagesci] ReadFcn: @readDatastoreImage
创建一个 ImageDatastore
对象,并根据每个图像所在文件夹的名称为其添加标签。生成的标签名称为 demos
和 imagesci
。
imds = imageDatastore(fullfile(matlabroot, 'toolbox', 'matlab', {'demos','imagesci'}),... 'LabelSource', 'foldernames', 'FileExtensions', {'.jpg', '.png', '.tif'}); imds.Labels
ans = demos demos demos demos demos demos imagesci imagesci
用 imds
中的文件创建三个新的数据存储。第一个数据存储 imds1
包含第一个带有 demos
标签的文件以及第一个带有 imagesci
标签的文件。第二个数据存储 imds2
包含每个标签的下一个文件。第三个数据存储 imds3
包含每个标签上剩余的文件。
[imds1, imds2, imds3] = splitEachLabel(imds,1,1)
imds1 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\cloudCombined.jpg'; ' ...\matlab\toolbox\matlab\imagesci\corn.tif' } Labels: [demos; imagesci] ReadFcn: @readDatastoreImage imds2 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\example.tif'; ' ...\matlab\toolbox\matlab\imagesci\peppers.png' } Labels: [demos; imagesci] ReadFcn: @readDatastoreImage imds3 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\landOcean.jpg'; ' ...\matlab\toolbox\matlab\demos\ngc6543a.jpg'; ' ...\matlab\toolbox\matlab\demos\street1.jpg' ... and 1 more } Labels: [demos; demos; demos ... and 1 more categorical] ReadFcn: @readDatastoreImage
创建一个 ImageDatastore
对象,并根据每个图像所在文件夹的名称为其添加标签。生成的标签名称为 demos
和 imagesci
。
imds = imageDatastore(fullfile(matlabroot, 'toolbox', 'matlab', {'demos','imagesci'}),... 'LabelSource', 'foldernames', 'FileExtensions', {'.jpg', '.png', '.tif'}); imds.Labels
ans = demos demos demos demos demos demos imagesci imagesci
通过从每个标签上随机抽取,用 imds
中的文件创建两个新的数据存储。第一个数据存储 imds1
包含一个带有 demos
标签的随机文件以及一个带有 imagesci
标签的随机文件。第二个数据存储 imds2
包含每个标签上剩余的文件。
[imds1, imds2] = splitEachLabel(imds,1,'randomized')
imds1 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\street2.jpg'; ' ...\matlab\toolbox\matlab\imagesci\corn.tif' } Labels: [demos; imagesci] ReadFcn: @readDatastoreImage imds2 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\cloudCombined.jpg'; ' ...\matlab\toolbox\matlab\demos\example.tif'; ' ...\matlab\toolbox\matlab\demos\landOcean.jpg' ... and 3 more } Labels: [demos; demos; demos ... and 3 more categorical] ReadFcn: @readDatastoreImage
创建一个 ImageDatastore
对象,并根据每个图像所在文件夹的名称为其添加标签。生成的标签名称为 demos
和 imagesci
。
imds = imageDatastore(fullfile(matlabroot, 'toolbox', 'matlab', {'demos','imagesci'}),... 'LabelSource', 'foldernames', 'FileExtensions', {'.jpg', '.png', '.tif'}); imds.Labels
ans = demos demos demos demos demos demos imagesci imagesci
用 imds
中的文件创建两个新的数据存储,其中只包括带有 demos
标签的文件。第一个数据存储 imds60
包含前 60% 的带有 demos
标签的文件,第二个数据存储 imds40
包含带有 demos
标签的其余 40% 的文件。
[imds60, imds40] = splitEachLabel(imds,0.6,'Include','demos')
imds60 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\cloudCombined.jpg'; ' ...\matlab\toolbox\matlab\demos\example.tif'; ' ...\matlab\toolbox\matlab\demos\landOcean.jpg' ... and 1 more } Labels: [demos; demos; demos ... and 1 more categorical] ReadFcn: @readDatastoreImage imds40 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\street1.jpg'; ' ...\matlab\toolbox\matlab\demos\street2.jpg' } Labels: [demos; demos] ReadFcn: @readDatastoreImage
同样,可以通过排除 imagesci
标签,只拆分 demos
标签。
[imds60, imds40] = splitEachLabel(imds,0.6,'Exclude','imagesci')
imds60 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\cloudCombined.jpg'; ' ...\matlab\toolbox\matlab\demos\example.tif'; ' ...\matlab\toolbox\matlab\demos\landOcean.jpg' ... and 1 more } Labels: [demos; demos; demos ... and 1 more categorical] ReadFcn: @readDatastoreImage imds40 = ImageDatastore with properties: Files: { ' ...\matlab\toolbox\matlab\demos\street1.jpg'; ' ...\matlab\toolbox\matlab\demos\street2.jpg' } Labels: [demos; demos] ReadFcn: @readDatastoreImage
输入参数
输入数据存储,指定为 ImageDatastore
对象。要根据图像数据创建 ImageDatstore
,请使用 imageDatastore
函数。
要拆分的文件的比例,指定为区间 (0,1) 中的标量或正整数标量。
如果
p
在区间 (0,1) 内,则它表示每个标签上要分配给imds1
的文件百分比。如果p
得出的文件数不是整数,则splitEachLabel
会向下舍入到最接近的整数。如果
p
是一个整数,则它表示每个标签上要分配给imds1
的绝对文件数。必须至少有p
个文件与每个标签关联。
数据类型: double
比例列表,指定为区间 (0,1) 中的标量或正整数标量。如果比例在区间 (0,1) 内,则这些比例表示每个标签上要分配给输出数据存储的文件百分比。如果比例是整数,则这些比例表示每个标签上要分配给输出数据存储的绝对文件数。当比例表示百分比时,它们的总和不能超过 1。当比例表示文件数时,必须有足够的文件与每个标签关联,以满足每个比例。
数据类型: double
名称-值参数
以 Name1=Value1,...,NameN=ValueN
的形式指定可选参量对组,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: [imds1 imds2] = splitEachLabel(imds,0.5,'Exclude','demos')
要包括的标签,指定为以逗号分隔的对组,其中包含 'Include'
和一个标签名称向量、元胞数组或字符串,标签名称的类型与 Labels
属性相同。每个名称必须与数据存储的 Labels
属性中的一个标签相匹配。
数据类型: char
| cell
| string
要排除的标签,指定为以逗号分隔的对组,其中包含 'Exclude'
和一个标签名称向量、元胞数组或字符串,标签名称的类型与 Labels
属性相同。每个名称定义一个与数据存储关联的标签,而且必须与 Labels
中的名称相匹配。此选项不能与 'Include'
选项一起使用。
数据类型: char
| cell
| string
输出参量
输出数据存储,以 ImageDatastore
对象形式返回。imds1
包含 imds
中每个标签的指定比例的文件,imds2
包含其余文件。
输出数据存储的列表,以 ImageDatastore
对象形式返回。列表中的元素数比列出的比例数多一。每个新的数据存储包含 imds
中每个标签上由 p1,...,pN
定义的比例。剩下的所有文件都分配给 Mth 数据存储。
扩展功能
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2016a 中推出
另请参阅
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)