0

次の画像があります。

ここに画像の説明を入力

この画像から魚眼レンズの歪みを取り除きたいので、次のコードを使用しました。

[X,map] = imread('Foam_Image.jpg');  % Read the indexed image
options = [size(X,1) size(X,2) 1];   % An array containing the columns, rows and exponent
tf = maketform('custom',2,2,[],...   % Make the transformation structure
               @fisheye_inverse,options);
newImage = imtransform(X,tf); 
imshow(newImage);                    % show image

しかし、次のエラーが表示されます。

Error using imtransform>parse_inputs (line 438)
XData and YData could not be automatically determined.  Try specifying XData and YData explicitly in the call to
IMTRANSFORM.

Error in imtransform (line 265)
args = parse_inputs(varargin{:});

imwarpの代わりにも使用しましたがimtransform、それでもエラーが発生します。このエラーが発生する理由と修正方法を知っている人はいますか?

4

1 に答える 1

1

メッセージにあるように、Name-Property 引数構文を使用して を呼び出す際に、 プロパティXDataとプロパティを手動で指定する必要があります。YDataimtransform

docsによると、たとえば XData は次のとおりです。

'YData' と組み合わせると、2 次元出力空間 XY 内の出力イメージ B の空間位置を指定する 2 要素の実数ベクトル。'XData' の 2 つの要素は、それぞれ B の最初と最後の列の x 座標 (水平) を示します。

についても同様ですYData。したがって、次のように呼び出しを変更できますimtransform

newImage = imtransform(X,tf,'XData',[1 col],'YData',[1 row]);

ここでcol、 とrowは、前に計算したサイズ関数の出力です。

それが役立つことを願っています!

于 2015-06-29T12:35:56.217 に答える