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
输入参数
imds
— 输入数据存储
ImageDatastore
对象
输入数据存储,指定为 ImageDatastore
对象。要根据图像数据创建 ImageDatstore
,请使用 imageDatastore
函数。
p
— 要拆分的文件的比例
区间 (0,1) 中的标量 | 正整数标量
要拆分的文件的比例,指定为区间 (0,1) 中的标量或正整数标量。
如果
p
在区间 (0,1) 内,则它表示每个标签上要分配给imds1
的文件百分比。如果p
得出的文件数不是整数,则splitEachLabel
会向下舍入到最接近的整数。如果
p
是一个整数,则它表示每个标签上要分配给imds1
的绝对文件数。必须至少有p
个文件与每个标签关联。
数据类型: double
p1,...,pN
— 比例列表
区间 (0,1) 中的标量 | 正整数标量
比例列表,指定为区间 (0,1) 中的标量或正整数标量。如果比例在区间 (0,1) 内,则这些比例表示每个标签上要分配给输出数据存储的文件百分比。如果比例是整数,则这些比例表示每个标签上要分配给输出数据存储的绝对文件数。当比例表示百分比时,它们的总和不能超过 1。当比例表示文件数时,必须有足够的文件与每个标签关联,以满足每个比例。
数据类型: double
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: [imds1 imds2] = splitEachLabel(imds,0.5,'Exclude','demos')
Include
— 要包括的标签
分类、逻辑或数值向量 | 字符向量元胞数组 | 字符串数组
要包括的标签,指定为以逗号分隔的对组,其中包含 'Include'
和一个标签名称向量、元胞数组或字符串,标签名称的类型与 Labels
属性相同。每个名称必须与数据存储的 Labels
属性中的一个标签相匹配。
数据类型: char
| cell
| string
Exclude
— 要排除的标签
分类、逻辑或数值向量 | 字符向量元胞数组 | 字符串数组
要排除的标签,指定为以逗号分隔的对组,其中包含 'Exclude'
和一个标签名称向量、元胞数组或字符串,标签名称的类型与 Labels
属性相同。每个名称定义一个与数据存储关联的标签,而且必须与 Labels
中的名称相匹配。此选项不能与 'Include'
选项一起使用。
数据类型: char
| cell
| string
输出参量
imds1,imds2
— 输出数据存储
ImageDatastore
对象
输出数据存储,以 ImageDatastore
对象形式返回。imds1
包含 imds
中每个标签的指定比例的文件,imds2
包含其余文件。
imds1,...,imdsM
— 输出数据存储的列表
ImageDatastore
对象
输出数据存储的列表,以 ImageDatastore
对象形式返回。列表中的元素数比列出的比例数多一。每个新的数据存储包含 imds
中每个标签上由 p1,...,pN
定义的比例。剩下的所有文件都分配给 Mth 数据存储。
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2016a 中推出
另请参阅
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)