преобразовать

Преобразуйте datastore

Синтаксис

dsnew = transform(ds,@fcn)
dsnew = transform(ds,@fcn,'IncludeInfo',IncludeInfo)

Описание

пример

dsnew = transform(ds,@fcn) преобразовывает входной datastore ds с помощью функции преобразования fcn и возвращает преобразованный datastore dsnew.

dsnew = transform(ds,@fcn,'IncludeInfo',IncludeInfo) использует альтернативное определение функции преобразования fcn. Альтернативное определение позволяет вам использовать дополнительную информацию, возвращенную функцией read datastore.

Примеры

свернуть все

Создайте datastore для набора изображений и примените то же преобразование ко всем изображениям в datastore. Например, измените размер всех изображений в наборе к заданному целевому размеру.

Создайте ImageDatastore с двумя изображениями.

imds = imageDatastore({'street1.jpg','peppers.png'})
imds = 
  ImageDatastore with properties:

                       Files: {
                              ' .../devel/bat/BR2019ad/build/matlab/toolbox/matlab/demos/street1.jpg';
                              ' .../devel/bat/BR2019ad/build/matlab/toolbox/matlab/imagesci/peppers.png'
                              }
    AlternateFileSystemRoots: {}
                    ReadSize: 1
                      Labels: {}
                     ReadFcn: @readDatastoreImage

Считайте все изображения. Заметьте, что datastore содержит изображения различных размеров.

img1 = read(imds); % reads the first image
img2 = read(imds); % reads the next image
whos img1 img2
  Name        Size                Bytes  Class    Attributes

  img1      480x640x3            921600  uint8              
  img2      384x512x3            589824  uint8              

Преобразуйте все изображения в datastore к заданному целевому размеру.

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

Считайте изображения и отобразите их размеры.

imgReSz1 = read(imdsReSz);
imgReSz2 = read(imdsReSz);
whos imgReSz1 imgReSz2
  Name            Size                Bytes  Class    Attributes

  imgReSz1      224x224x3            150528  uint8              
  imgReSz2      224x224x3            150528  uint8              

Отобразите измененные изображения.

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

Входные параметры

свернуть все

Введите datastore. Для полного списка встроенных хранилищ данных смотрите, Выбирают Datastore for File Format или Application. Можно также задать пользовательский datastore.

Функция, которая преобразовывает данные, заданные как указатель на функцию. Функция берет данные в качестве входа и возвращает преобразованные данные, на основе преобразований, заданных в fcn.

Функция преобразования должна иметь эту подпись, и dataIn должен иметь ту же форму как данные, которые возвращены при помощи функции read.

function dataOut = transformFcn(dataIn)
..
end

Также можно задать функцию преобразования fcn, чтобы использовать дополнительную информацию о данных, возвращенных функцией read. Чтобы использовать это альтернативное определение, необходимо задать значение IncludeInfo, чтобы быть true. В этом случае функция преобразования должна иметь эту подпись.

function [dataOut,infoOut] = transformFcn(dataIn,infoIn)
..
end

Пример: @transformFcn

Типы данных: function_handle

Включайте информацию от функции read, заданной или как true или как false. Функция read возвращает информацию об извлеченных данных в struct info. Для получения дополнительной информации смотрите, что read функционирует страница.

Когда вы устанавливаете значение IncludeInfo к true, необходимо использовать альтернативную подпись для функции преобразования fcn.

Выходные аргументы

свернуть все

Новый datastore с преобразованными данными, возвращенными как объект TransformedDatastore.

Введенный в R2019a