Main Content

transform

Transform datastore

Description

example

dsnew= transform(ds1,ds2,...,dsN,@fcn)transforms one or more input datastores using the transformation functionfcnand returns the transformed datastoredsnew.fcncan be placed before or after all of the input datastores in the call to thetransformfunction.

dsnew= transform(ds1,ds2,...,dsN,@fcn,'IncludeInfo',IncludeInfo)uses an alternative definition of the transform functionfcn. The alternative definition enables you to use the additional information returned by thereadfunction of the datastore.

Examples

崩溃了ll

Create a datastore for a collection of images and apply the same transformation to all the images in the datastore. For instance, resize all the images in a collection to a specified target size.

Create anImageDatastorewith two images.

imd =成像atastore({'street1.jpg','peppers.png'})
imds = ImageDatastore with properties: Files: { ' .../devel/bat/Bdoc22a/build/matlab/toolbox/matlab/demos/street1.jpg'; ' .../devel/bat/Bdoc22a/build/matlab/toolbox/matlab/imagesci/peppers.png' } Folders: { '/mathworks/devel/bat/Bdoc22a/build/matlab/toolbox/matlab/demos'; '/mathworks/devel/bat/Bdoc22a/build/matlab/toolbox/matlab/imagesci' } AlternateFileSystemRoots: {} ReadSize: 1 Labels: {} SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage

Read all the images. Notice that the datastore contains images of different sizes.

img1 = read(imds);% reads the first imageimg2 = read(imds);% reads the next imagewhosimg1img2
Name Size Bytes Class Attributes img1 480x640x3 921600 uint8 img2 384x512x3 589824 uint8

Transform all the images in the datastore to a specified target size.

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

Read the images and display their sizes.

imgReSz1 = read(imdsReSz); imgReSz2 = read(imdsReSz); whosimgReSz1imgReSz2
Name Size Bytes Class Attributes imgReSz1 224x224x3 150528 uint8 imgReSz2 224x224x3 150528 uint8

Display the resized images.

subplot(121); imshow(imgReSz1); axison; title('Resized Street1.jpg'); subplot(122); imshow(imgReSz2); axison; title('Resized peppers.png');

Figure contains 2 axes objects. Axes object 1 with title Resized Street1.jpg contains an object of type image. Axes object 2 with title Resized peppers.png contains an object of type image.

Create multiple datastore objects and apply the same transformation to all the datastores. For instance, combine multiple images into one rectangular tiled image.

Create anImageDatastorewith one image.

imds1 = imageDatastore({'ngc6543a.jpg'})
imds1 = ImageDatastore with properties: Files: { ' .../devel/bat/Bdoc22a/build/matlab/toolbox/matlab/demos/ngc6543a.jpg' } Folders: { '/mathworks/devel/bat/Bdoc22a/build/matlab/toolbox/matlab/demos' } AlternateFileSystemRoots: {} ReadSize: 1 Labels: {} SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage

Read the image into the workspace to create an image file from each color channel in the original image.

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

Create anImageDatastoreobject for each single-channel image.

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

Read the image stored in each datastore and display their sizes.

imOriginal = read(imds1); img_red = read(imdsR); img_green = read(imdsG); img_blue = read(imdsB); whosimg1img_redimg_greenimg_blue
Name Size Bytes Class Attributes img_blue 650x600 390000 uint8 img_green 650x600 390000 uint8 img_red 650x600 390000 uint8

Transform all of the datastores by combining all the images into one rectangular tiled image. Convert the color image inimds1to grayscale so that its dimensions match those of the other images.

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

Display the tiled image.

imshow(tile)

Figure contains an axes object. The axes object contains an object of type image.

Input Arguments

崩溃了ll

Input datastores. For a complete list of built-in datastores, seeSelect Datastore for File Format or Application. You also can specify a custom datastore.

Function that transforms the data, specified as a function handle. The function takes data as an input and returns the transformed data, based on the transformations defined infcn.

The transform function must have this signature andds1_data,ds2_data,...dsN_datamust be of the same form as the data that is returned by using thereadfunction.

functiondataOut = transformFcn(ds1_data,ds2_data,...dsN_data)..end

Alternatively, you can define your transform functionfcnto use additional information about the data returned by thereadfunction. To use this alternative definition, you must specify the value ofIncludeInfoto betrue. In this case, the transformation function must have this signature.

function[dataOut,infoOut] = transformFcn(ds1_data,ds2_data,...dsN_data,ds1_info,ds2_info...dsN_info)..end

Example:@transformFcn

Data Types:function_handle

Include information fromreadfunction, specified as eithertrueorfalse. Thereadfunction returns information about the extracted data in aninfostruct. For more information, see thereadfunction page.

When you set the value ofIncludeInfototrue, you must use the alternative signature for your transform functionfcn.

Output Arguments

崩溃了ll

New datastore with transformed data, returned as aTransformedDatastoreobject.

Extended Capabilities

Version History

Introduced in R2019a