このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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: { ' .../devel/bat/Bdoc23a/build/matlab/toolbox/matlab/demos/street1.jpg'; ' .../devel/bat/Bdoc23a/build/matlab/toolbox/matlab/imagesci/peppers.png' } Folders: { '/mathworks/devel/bat/Bdoc23a/build/matlab/toolbox/matlab/demos'; '/mathworks/devel/bat/Bdoc23a/build/matlab/toolbox/matlab/imagesci' } 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: { ' .../devel/bat/Bdoc23a/build/matlab/toolbox/matlab/demos/ngc6543a.jpg' } Folders: { '/mathworks/devel/bat/Bdoc23a/build/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)
入力引数
ds1,ds2,...,dsN
— 入力データストア
datastore オブジェクト
入力データストア。組み込みデータストアの完全な一覧については、ファイル形式またはアプリケーション用のデータ ストアの選択を参照してください。カスタム データストアも指定できます。
@fcn
— データを変換する関数
関数ハンドル
データを変換する関数。関数ハンドルとして指定します。関数はデータを入力として受け取り、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
IncludeInfo
— 関数 read
からの情報を含めるかどうか
true
| false
関数 read
からの情報を含めるかどうか。true
または false
として指定します。関数 read
は、抽出されたデータに関する情報を info
struct に返します。詳細については、関数 read
のページを参照してください。
IncludeInfo
の値を true
に設定した場合は、変換関数 fcn
の代替シグネチャを使用しなければなりません。
出力引数
dsnew
— 変換後のデータを含む新しいデータストア
TransformedDatastore
オブジェクト
変換後のデータを含む新しいデータストア。TransformedDatastore
オブジェクトとして返されます。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
使用上の注意事項および制限事項:
スレッドベースの環境では、次のデータストアでのみ
transform
を使用できます。ImageDatastore
オブジェクトcombine
またはtransform
を使用してImageDatastore
オブジェクトから作成するCombinedDatastore
、SequentialDatastore
、またはTransformedDatastore
オブジェクト
Parallel Computing Toolbox™ がある場合は、他のデータストアで
transform
を使用できます。これを行うには、backgroundPool
またはThreadPool
を使用する代わりに、プロセスベースの並列プールを使用して関数を実行します (ProcessPool
またはClusterPool
を使用します)。
詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2019a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)