geometricTransform2dで画像変換する際にでるエラーの意味がわかりません
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
のイメージ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);
お願いいたします。
1 Kommentar
Hiroyuki Hishida
am 22 Mär. 2021
エラーメッセージ(ワーニングメッセージ)の読み方をですが、下から順に読んでください。
「エラー: image_trns (line 14)」が最初のメッセージで、記述されたコードの14行目に問題があると示唆しております。
通常、エラーはどこかの関数に紐付いてでるのですが、その関数で使用されている関数の中で使用されている関数の中で使用されている・・・・とさかのぼっていくと、一番上のエラーメッセージに到達します。今回の場合、それは、「エラー: imref2d yWorldは実数にする必要があります。」になります。
今回の場合、yWorldに実数以外のナニモノカが入っていることがエラーの要因だとでておりますので、imref2dの関数の仕様について確認していただくのが良いかと思います。
いかがでしょうか
菱田
Antworten (0)
Siehe auch
Kategorien
Mehr zu 汎用的な幾何学的変換 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!