2013-11-12 3 views
0

У меня есть графический интерфейс, который отображает 2D-изображение. Однако я не могу точно восстановить данные, используя координаты мыши. Это связано с тем, что я не могу правильно преобразовать координаты изображения в массивные индексы.Matlab: Как преобразовать координату изображения в индексы массива

Я использую ginput для получения координат мыши.

Любая помощь будет оценена по достоинству. С уважением Dushyant

+0

вы можете быть немного более ясно, как к тому, что вы пробовали? как вы получаете координаты мыши? Вызовы? используя 'ginput'? – Shai

+0

Прочитайте это: http://www.mathworks.co.uk/help/images/image-coordinate-systems.html –

ответ

0

При отображении изображения в MATLAB, ваше происхождение (для изображения) сидит в левом верхнем углу изображения, х-ось увеличения в направлении вниз и увеличения у оси в направлении вправо, в то время как с помощью мыши вы получаете сотрудничество -ордантами с осью X, увеличивающейся вправо и по оси y вверх (таким образом, поворот +90 градусов по координатам изображения плюс перевод), поэтому вам нужно преобразовать одну из ваших координат в другой, чтобы получить правильные значения, например, если ваш источник фигурного окна находится в верхнем левом углу и изображение охватывает весь кадр, то ,,,

x_image = -y_mouse и
y_image = x_mouse.

+0

* увеличение оси x в направлении вниз и увеличение оси y вправо * Вы уверены? Это сделало бы Matlab единственной системой во вселенной, которая не использует * x-ось *, чтобы означать одну параллель с горизонтом, а * ось y * означает ту, которая параллельна вертикали. –

+0

в случае изображений ,, да, я уверен ,,, вы можете применить масштабирование вдоль x_axis на изображении и увидеть масштабируемое изображение по вертикали ,, –

+0

Вы, кажется, знаете лучше, чем Mathworks: http: // www. mathworks.co.uk/help/images/image-coordinate-systems.html –

0

Попробуйте это:

fig=figure, imshow(myfigure); 
[x, y] = getpts(fig);