transform
データストアの変換
構文
説明
は、変換関数 dsnew = transform(ds1,ds2,...,dsN,@fcn)fcn を使用して 1 つ以上の入力データストアを変換し、変更されたデータストア dsnew を返します。fcn は、関数 transform への呼び出しのすべての入力データストアの前または後に配置できます。
は、変換関数 dsnew = transform(ds1,ds2,...,dsN,@fcn,'IncludeInfo',IncludeInfo)fcn の代替定義を使用します。代替定義により、関数 read で返されたデータストアの追加情報を使用できるようになります。
例
イメージの集合用のデータストアを作成し、そのデータストア内のすべてのイメージに同じ変換を適用します。たとえば、集合内のすべてのイメージを、指定したターゲット サイズに変更します。
2 つのイメージを含む ImageDatastore を作成します。
imds = imageDatastore({'street1.jpg','peppers.png'})imds =
ImageDatastore with properties:
Files: {
' .../build/runnable/matlab/toolbox/matlab/demos/street1.jpg';
' .../build/runnable/matlab/toolbox/matlab/matlab_images/png/peppers.png'
}
Folders: {
' .../Bdoc25b.2988451/build/runnable/matlab/toolbox/matlab/demos';
' .../build/runnable/matlab/toolbox/matlab/matlab_images/png'
}
AlternateFileSystemRoots: {}
ReadSize: 1
Labels: {}
SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"]
DefaultOutputFormat: "png"
ReadFcn: @readDatastoreImage
すべてのイメージを読み取ります。データストアには異なるサイズのイメージが含まれていることがわかります。
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
データストア内のすべてのイメージを、指定したターゲット サイズに変換します。
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
サイズ変更後のイメージを表示します。
tiledlayout(1,2); nexttile imshow(imgReSz1); axis on; title('Resized Street1.jpg') nexttile imshow(imgReSz2); axis on; title('Resized peppers.png')

複数の datastore オブジェクトを作成し、同じ変換をすべてのデータストアに適用します。たとえば、複数のイメージを 1 つの四角形内の整列イメージとして結合します。
1 つのイメージをもつ ImageDatastore を作成します。
imds1 = imageDatastore({'ngc6543a.jpg'})imds1 =
ImageDatastore with properties:
Files: {
' .../build/runnable/matlab/toolbox/matlab/demos/ngc6543a.jpg'
}
Folders: {
' .../Bdoc25b.2988451/build/runnable/matlab/toolbox/matlab/demos'
}
AlternateFileSystemRoots: {}
ReadSize: 1
Labels: {}
SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"]
DefaultOutputFormat: "png"
ReadFcn: @readDatastoreImage
イメージをワークスペースに読み取り、元のイメージの各カラー チャネルからイメージ ファイルを作成します。
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 = read(imds1); img_red = read(imdsR); img_green = read(imdsG); img_blue = read(imdsB); whos img1 img_red img_green img_blue
Name Size Bytes Class Attributes img_blue 650x600 390000 uint8 img_green 650x600 390000 uint8 img_red 650x600 390000 uint8
すべてのイメージを 1 つの四角形内の整列イメージに結合して、すべてのデータストアを変換します。imds1 のカラー イメージをグレースケールに変換して、その次元を他のイメージの次元と一致させます。
tds1 = transform(imds1,imdsR,imdsG,imdsB, @(x1,x2,x3,x4) [rgb2gray(x1),x2;x3,x4]); tile = read(tds1);
タイル イメージを表示します。
imshow(tile)

入力引数
入力データストア。組み込みデータストアの完全な一覧については、ファイル形式またはアプリケーション用のデータストアの選択を参照してください。カスタム データストアも指定できます。
データを変換する関数。関数ハンドルとして指定します。関数はデータを入力として受け取り、fcn に定義された変換に基づいて変換したデータを返します。
変換関数には次のシグネチャが必要であり、ds1_data,ds2_data,...dsN_data は、関数 read を使用して返されるデータと同じ形式でなければなりません。
function dataOut = transformFcn(ds1_data,ds2_data,...dsN_data) .. end
あるいは、関数 read で返されるデータに関する追加情報を使用するように、変換関数 fcn を定義できます。この代替定義を使用するには、IncludeInfo の値を true に指定しなければなりません。この場合、変換関数には次のシグネチャが必要です。
function [dataOut,infoOut] = transformFcn(ds1_data,ds2_data,...dsN_data,ds1_info,ds2_info...dsN_info) .. end
例: @transformFcn
データ型: function_handle
関数 read からの情報を含めるかどうか。true または false として指定します。関数 read は、抽出されたデータに関する情報を info struct に返します。詳細については、関数 read のページを参照してください。
IncludeInfo の値を true に設定した場合は、変換関数 fcn の代替シグネチャを使用しなければなりません。
出力引数
変換後のデータを含む新しいデータストア。TransformedDatastore オブジェクトとして返されます。
拡張機能
使用上の注意および制限:
スレッドベースの環境では、次のデータストアでのみ
transformを使用できます。ImageDatastoreオブジェクトcombineまたはtransformを使用してImageDatastoreオブジェクトから作成するCombinedDatastore、SequentialDatastore、またはTransformedDatastoreオブジェクト
Parallel Computing Toolbox™ がある場合は、他のデータストアで
transformを使用できます。これを行うには、backgroundPoolまたはThreadPoolを使用する代わりに、プロセスベースの並列プールを使用して関数を実行します (ProcessPoolまたはClusterPoolを使用します)。
詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2019a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)