Matlab Регулировка координат - PullRequest
1 голос
/ 20 июля 2010

У меня есть изображение размером 600 * 600, которое отображалось на экране размером 800 * 800 пикселей.Координата x, y, в которой пользователь смотрит на экран, была записана в массиве:

x =[250,300,390,750,760];
y =[120,550,250,130,420]; 

В другой программе я хочу построить координату x, y на изображении 600 * 600.Проблема в том, что некоторые из графиков x, y были вне изображения (, как показано на рисунке ниже ), поскольку координата была больше максимального размера изображения (600 * 600).

РЕДАКТИРОВАНИЕ: Как преобразовать / отрегулировать координату большего изображения (800 * 800) в меньшее изображение (600 * 600), чтобы все координаты x, y были внутри меньшего изображения(600 * 600)?

Допустим, например, что координата верхнего левого изображения 600 * 600 внутри изображения 800 * 800 составляет, например, x = -10, y = 3.

Спасибо.


альтернативный текст http://img9.imageshack.us/img9/8836/e47184420f.jpg

Ответы [ 2 ]

0 голосов
/ 20 июля 2010

Чтобы получить пиксели в координатах изображения, вам нужно знать, где нижний левый и верхний правый углы вашего изображения были размещены на экране.Исходя из этого, вы можете рассчитать смещение и масштаб изображения.

%# define some parameters
imageSize = [600 600];
topLeftPixScreen = [200,100]; %# position of the top left image corner in screen pixels
bottomRightPixScreen = [800,750]; %# position of the bottom right image corner in screen pixels

%# transform coordinates
oldX =[250,300,390,750];
oldY =[120,550,250,130,420];

newX = (oldX - topLeftPixScreen(1))/(bottomRightPixScreen(1) - topLeftPixScreen(1) + 1);
newY = (oldY - topLeftPixScreen(2))/(bottomRightPixScreen(2) - topLeftPixScreen(2) + 1);

Сказав это, я бы предложил использовать ginput для выбора точек с помощью Matlab, поскольку эта функция напрямую возвращаетпиксели изображения.


РЕДАКТИРОВАТЬ

Если у вас есть только верхний левый угол, вы должны надеяться, что масштабирования не было, иначеВы не сможете преобразовать точки.

Только со смещением, приведенное выше упрощается до

% #, определяя некоторые параметры imageSize = [600 600];topLeftPixScreen = [200,100];% # позиция левого верхнего угла изображения в пикселях экрана

%# transform coordinates
oldX =[250,300,390,750];
oldY =[120,550,250,130,420];

newX = oldX - topLeftPixScreen(1);
newY = oldY - topLeftPixScreen(2);
0 голосов
/ 20 июля 2010

Похоже, что простая настройка координат по соотношению площади экрана и размера изображения сделает:

newX = x.*(600/800)
newY = y.*(600/800)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...