主要内容

变换

变换数据存储

描述

例子

dsnew=变换(ds1, ds2,…,dsN@fcn使用转换函数转换一个或多个输入数据存储fcn并返回转换后的数据存储dsnewfcn的调用中的所有输入数据存储之前或之后都可以设置变换函数。

dsnew=变换(ds1, ds2,…,dsN@fcn“IncludeInfo”,IncludeInfo使用变换函数的另一种定义fcn.方法返回的附加信息是可选的定义数据存储的功能。

例子

全部折叠

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

创建一个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类型的对象。

输入参数

全部折叠

输入数据存储。有关内置数据存储的完整列表,请参见“文件格式”或“应用程序”选择“数据存储”.还可以指定自定义数据存储。

转换数据的函数,指定为函数句柄。函数接受数据作为输入,并根据中定义的转换返回转换后的数据fcn

变换函数必须有这个签名和ds1_data、ds2_data…dsN_data必须与使用?返回的数据的形式相同函数。

函数dataOut = transformFcn (ds1_data ds2_data,...dsN_data)..结束

或者,你可以定义你的变换函数fcn控件返回的数据的附加信息函数。要使用这个替代定义,必须指定的值IncludeInfo真正的.在这种情况下,转换函数必须具有这个签名。

函数[dataOut, infoOut] = transformFcn (ds1_data ds2_data,...dsN_data、ds1_info ds2_info…dsN_info)..结束

例子:@transformFcn

数据类型:function_handle

包含的信息函数,指定为either真正的.的函数中提取的数据的相关信息信息结构体。有关更多信息,请参见功能页面。

的值时IncludeInfo真正的,您必须为转换函数使用替代签名fcn

输出参数

全部折叠

具有转换数据的新数据存储,返回为TransformedDatastore对象。

扩展功能

版本历史

介绍了R2019a

Baidu
map