transform

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

Описание

пример

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/BR2019bd/build/matlab/toolbox/matlab/demos/street1.jpg';
                              ' .../devel/bat/BR2019bd/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 функция возвращает информацию об извлеченных данных в info struct (). Для получения дополнительной информации смотрите read функциональная страница.

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

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

свернуть все

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

Введенный в R2019a