2009-07-12 6 views
0

getPositionから返される値について質問があります。以下は私のコードです。座標のX部分は675となることを意味する、私は[675.000 538.000]のような結果を得る画像上の点を設定するために起動するMATLAB:getPositionの不規則な振る舞いを実装する

figure ,imshow(im); 
colorArray=['y','m','c','r','g','b','w','k','y','m','c']; 
pointArray = cell(1,10); 
% Construct boundary constraint function 
fcn = makeConstrainToRectFcn('impoint',get(gca,'XLim'),get(gca,'YLim')); 
for i = 1:10 
    p = impoint(gca); 
    % Enforce boundary constraint function using setPositionConstraintFcn 
    setPositionConstraintFcn(p,fcn); 
    setColor(p,colorArray(1,i)); 
    pointArray{i}=p; 
    getPosition(p) 
end 

:これは、ユーザが所与の画像上で10ポイントを設定することができy部分は538です、そうですか?これはMATLABのドキュメントに記載されていますが、イメージは576 * 120(ウィンドウに表示されている)なのでこれは論理的ではありません。

どうやら、getPositionはy座標を最初に返します。私はこれについていくつかの説明が必要です。ヘルプ

答えて

2

私は、MATLAB 7.8.0(R2009a)でコードを実行しようとしましたが、576 x 120または120 x 576の画像サイズに問題はありませんでした。画像の中をクリックしたままにすると、新しい可動点が配置されます。画像の外側にポイントを置くことはできませんでした。私が見つけた

一つの小さなバグがまだダウン左ボタンを押しながら、あなたがあればで画像をを左クリックしていること、それは画像の外側可動ポイントを配置します、外の画像をマウスポインタをドラッグしていたし、軸の矩形にクリップされていない座標のセットが表示されます。

私はあなたの問題になるかどうかはわかりません。おそらく、使用しているMATLABのバージョンに関係なく、バグです。 MATLABを再起動するか、ワークスペースからすべての変数をクリアすることをお勧めします(画像データimを除く)。

0

ため

おかげであなたのコードは私が持っていない画像処理ツールボックスを使用していますので、これは憶測です。座標系はおそらく画像ではなく、Figureウィンドウ(または多分画面)に設定されています。

これをテストするには、画像の外側の点をクリックして、原点を見つけることができるかどうかを確認してください。

1

使用しているレンダラー(PainterまたはOpenGL)を確認する価値があるかもしれませんが、同僚はPainterレンダラーを使用したときに消えたOpenGLレンダラーを使用すると、ポイントピッキングでいくつかの奇妙な動作を示しました。