Undefined function 'findScaleTransform' for input arguments of type 'double'. How to solve it?

3 views (last 30 days)
%%Rescale replacment video frame
% Load replacment video frame
videoFrame = step(video);
% Get replacement and reference dimensions
repDims = size(videoFrame(:,:,1));
refDims = size(referenceImage);
% Find transformation that scales video frame to replacmente image size, preserving aspect ratio
scaleTransform = findScaleTransform(refDims,repDims);
outputView = imref2d(size(referenceImage));
videoFrameScaled = imwarp(videoFrame, scaleTransform, 'OutputView', outputView);
figure(1)
imshowpair(referenceImage, videoFrameScaled, 'Montage');
i got this problem at this section, when i'm doing this tutorial:
any help will be appreciated.
thank you
  3 Comments
dinesh92x
dinesh92x on 29 Mar 2017
Oh!! I have the same problem.If any body find solution please provide me. Why "findScaleTransform" is not working.??
jingshuig
jingshuig on 14 Dec 2018
HI,
I think "findScaleTransform" is a private function in the example.
I'v find a solution . May be useful.
function [scaleTransform ]= findScaleTransform(refDims,repDims)
scaleTransform=affine2d([repDims(1)/refDims(1) 0 0 ; 0 repDims(2)/refDims(2) 0 ;0 0 1]);
end
Add this function in the dir,and named "findScaleTransform.m"

Sign in to comment.

Answers (2)

S. Muhammad Hossein Mousavi
Please I have the same too.

jingshuig
jingshuig on 14 Dec 2018
HI,
I think "findScaleTransform" is a private function in the example.
I'v find a solution . May be useful.
function [scaleTransform ]= findScaleTransform(refDims,repDims)
scaleTransform=affine2d([repDims(1)/refDims(1) 0 0 ; 0 repDims(2)/refDims(2) 0 ;0 0 1]);
end
Add this function in the dir,and named "findScaleTransform.m"
  2 Comments
jingshuig
jingshuig on 2 Jan 2019
add some new:
% 2019 01 02
%find transform
function [scaleTransform ]= findScaleTransform(refDims,repDims)
if (repDims(1)/repDims(2) > 1) && (refDims(2)/refDims(2) > 1) % When the ratio of length to width is the same
scaleTransform=affine2d([1/(repDims(1)/refDims(1)) 0 0 ; 0 1/(repDims(2)/refDims(2)) 0 ;0 0 1]);
else % When the ratio of length to width is different
scaleTransform=affine2d([0 1/(repDims(2)/refDims(1)) 0 ; 1/(repDims(1)/refDims(2)) 0 0 ;0 0 1]);
end
end
Dmytro
Dmytro on 19 Apr 2023
I think You have at least one mistake in the condition because Your (refDims(2)/refDims(2) > 1) always is false and You go to else case

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!