utilising imwarp and affine2d for transformation on dataset

2 ビュー (過去 30 日間)
Matpar
Matpar 2020 年 2 月 9 日
回答済み: Divya Gaddipati 2020 年 2 月 13 日
Hi Professionals,
I am trying to perform tranformations on a small dataset of 40 images, is there a method to pass all of the images into the function so that it transform all the images
simultaneously?
I am interested in the affine2d random method and the imwarp!!
I lack the knowledge of how to code this!
ERROR: everytime I try my to pass in my data set the system prompts with an error!!
Error using imwarp>parseInputs (line 342)
The value of 'InputImage' is invalid. Expected input number 1, A, to be one of these types:
logical, uint8, uint16, uint32, int8, int16, int32, single, double
Instead its type was table.
Error in imwarp (line 190)
parsedInputs = parseInputs(varargin{:});
Error in test15 (line 85)
augimdsTrainwarp = imwarp(SgTruth,tform1)
>>
Can a professional assist me with gaining the knowledge on how to go about coding this example?
I have tried the singe image and it worked! what i am trying to do is get the function to accpet all 40 images and present them in their new transformed state!!
SgTruth is my data set of 40 images!!!
pixelRange = [-30 30];
[imdsTrain,imdsValidation] = digitTrain4DArrayData;
imageAugmenter = imageDataAugmenter('RandRotation',[-180 180],...
'RandXReflection',true,...
'RandYReflection',true,...
'RandXShear',pixelRange,...
'RandYShear',pixelRange,...
'RandXTranslation',pixelRange, ...
'RandYTranslation',pixelRange)
%% imageSize = [227 227 3];
augimdsTrain = augmentedImageSource(inputSize(1:2),imdsTrain,imdsValidation,...
'DataAugmentation',imageAugmenter)
augimdsTrain.MiniBatchSize = 16
augimdsTrain.reset()
% tform1 = affine2d([2 0.33 0; 0 1 0; 0 0 1])
%
% augimdsTrainwarp = imwarp(SgTruth,tform1)

回答 (1 件)

Divya Gaddipati
Divya Gaddipati 2020 年 2 月 13 日
You can concatenate all the images in a matrix of size m x n x c x t where
m = width, n = height, c = number of channels, t = total number of images.
Use randomAffine2d to define the transformation and then use imwarp on the concatenated matrix
For example:
tform = randomAffine2d('Scale',[0.95,1.05],'Rotation',[-30 30]);
res = imwarp(im_3d, tform);
For more information on randomAffine2d, you can refer to the following link:
Hope this helps!

カテゴリ

Help Center および File ExchangeImage Data Workflows についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by