のイメージ7を参考に、斜め45度方向から撮影した円筒の側面を平面に変換するように楕円の方程式x^2/a^2+y^2/b^2=1からyについて式を導出して計算させようとしています。
以下のコードを作成したのですが、実行時に関数内の別関数のエラーが出ているようで、困っています。
対処方法か解決のヒントとなるエラー原因について教えて下さい。
<コード>
I=imread('test1.jpg');
nrows = size(I,1);
ncols = size(I,2);
fill = 0.3;
a=1;
b=1/sqrt(2);
ifcn = @(xy) [xy(:,1), xy(:,2) + b*sqrt(1-(xy(:,1)-nrows/2).^2/a^2)];
tform = geometricTransform2d(ifcn);
I_trans= imwarp(I,tform,'FillValues',fill);
<メッセージ>
エラー: imref2d
yWorldは実数にする必要があります。
エラー: imref2d>iValidateXYPoints (line 500)
validateattributes(Y,{'numeric'},{'real','nonsparse'},'imref2d',yName);
エラー: imref2d/worldToIntrinsic (line 272)
iValidateXYPoints(xWorld,yWorld,'xWorld','yWorld');
エラー: imwarp>remapAndResampleGeneric2d (line 596)
[srcXIntrinsic,srcYIntrinsic] = R_A.worldToIntrinsic(srcXWorld,srcYWorld);
エラー: imwarp>remapPointsAndResample (line 251)
outputImage = remapAndResampleGeneric2d(inputImage,R_A,tform,outputRef,method,fillValues,
SmoothEdges);
エラー: imwarp (line 232)
outputImage = remapPointsAndResample(parsedInputs.InputImage,R_A,tform,outputRef,method,fillValues,
SmoothEdges);
エラー: image_trns (line 14)
I_trans= imwarp(I,tform,'FillValues',fill);
お願いいたします。