Сравните координаты двух изображений разного размера - PullRequest
0 голосов
/ 08 июня 2019

Я работаю с python, и мне нужно вычислить пересечение по объединению, принимая во внимание основную правду и якорную ячейку (в общем случае два прямоугольника). Проблема в том, что я генерирую свои якоря на изображении размером 53x64, в то время как у меня есть координаты относительно истинности относительно изображения размером 424x512. У меня есть информация:

  • Якоря: [x1, y1, x2, y2] относительно изображения 53x64;
  • GT: [x1, y1, x2, y2] относительно изображения 424x512;

В частности, это координаты двух противоположных углов прямоугольника. Таким образом, проблема заключается в том, что расстояния и площади таким образом не пропорциональны. Итак, вопрос в том, как я могу правильно сравнить эти два элемента?

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Учитывая информацию, которую вы имеете, вы можете преобразовать точки, указанные в якорных координаты изображения в эквивалент на изображении основной истины.Это можно сделать с помощью линейной интерполяции , как показано ниже.Аналогичная математика может быть использована для вычисления обратного преобразования (земля-правда ⇒ якорь).

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

anchor_height, anchor_width = 53, 64
gt_height, gt_width = 424, 512

def transform(x, y):
    return x/anchor_width * gt_width, y/anchor_height * gt_height

print(transform(0, 0))      # - > (0.0, 0.0)
print(transform(32, 26.5))  # - > (256.0, 212.0)
print(transform(64, 53))    # - > (512.0, 424.0)```
0 голосов
/ 08 июня 2019

Вот мой ответ. Надеюсь, я правильно понял, что вы хотели.

Coordinates = {"x1" : 3, "x2" : 11, "y1" : 7, "y2" : 13}
NewCoords = {}
for key, value in Coordinates:
    NewCoords[key] = (value*8)
print(NewCoords)
# {"x1" : 24, "x2" : 88, "y1" : 56, "y2" : 104}
...