Рассчитать новую позицию координат с NumPy - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть набор данных изображений для обнаружения ключевых точек. Каждое изображение помечено одной ключевой точкой (x | y).

Я использую numpy, чтобы переворачивать изображения для увеличения данных.

Я переворачиваю изображение по горизонтали с этим кодом:

img = img[:, ::-1]

И вертикаль с этим кодом

 img = img[::-1]

Пока все хорошо. Но я также должен пересчитать ключевые точки (метки) ([85 35]) Я знаю его основную математику, но я не могу найти решение.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Если вы перевернете изображение по горизонтали, то пиксель, который был в 85 единицах слева, будет в 85 единицах справа. То же самое касается вертикального сальто, 35 единиц сверху будет 35 единиц снизу.

Так что теперь вы можете либо рассчитать местоположение с помощью размера img.shape вашего изображения, либо использовать тот факт, что вы можете получить доступ к изображению с отрицательными индексами. Таким образом, точка [85 35] будет точкой [-85 35] или [width_of_image-85 35]

0 голосов
/ 03 сентября 2018

Если вы переворачиваете на 180 градусов (по вертикали или по горизонтали), матрица вращения не требуется. Просто получите форму вашего изображения.

X = img.shape[1]
y = img.shape[0]

Пересчитать X-Position при переворачивании по горизонтали.

X_Position_New = X - X_Position_Old

Пересчитать Y-положение при переворачивании по вертикали.

Y_Position_New = Y - Y_Position_Old
0 голосов
/ 03 сентября 2018

Использовать матрицу вращения:

x_new = x_old * np.cos(alpha) - y_old * np.sin(alpha)
y_new = x_old * np.sin(alpha) + y_old * np.cos(alpha)

Альфа - это угол поворота в радианах, но я не знаю, что дает img = img[:, ::-1])))

...