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/BR2020ad/build/matlab/toolbox/matlab/demos/street1.jpg';
                              ' .../devel/bat/BR2020ad/build/matlab/toolbox/matlab/imagesci/peppers.png'
                              }
                     Folders: {
                              '/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/matlab/demos';
                              '/mathworks/devel/bat/BR2020ad/build/matlab/toolbox/matlab/imagesci'
                              }
    AlternateFileSystemRoots: {}
                    ReadSize: 1
                      Labels: {}
      SupportedOutputFormats: ["png"    "jpg"    "jpeg"    "tif"    "tiff"]
         DefaultOutputFormat: "png"
                     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