2016-03-12 5 views
9

Моя проблема заключается в следующем:Линейный сдвиг между 2 наборами координат

Для моей работы мне нужно сравнить изображения отсканированных фотопластинок с каталогом образца известных звезд в пределах общей площади неба пластины (я называю это основным каталогом). С этой целью я извлекаю информацию, такую ​​как яркость изображения и положение на небе, объектов в изображениях и сохраняю их в таблицах. Затем я использую python для создания полиномиального соответствия для калибровки величины звезд на изображении. Это работает до определенной точности довольно хорошо, но, к сожалению, недостаточно хорошо, так как есть небольшой сдвиг между координатами, которые объект имеет на фотографических пластинках и в главном каталоге.

Здесь зеленые кружки обозначают позиции (центр круга) объектов в главном каталоге. Как вы можете видеть, фактические звезды всегда расположены в верхнем левом углу объектов в главном каталоге.

Я немного посмотрел на сравнение изображений (то есть How to detect a shift between images), но сейчас я немного в затруднении, потому что на самом деле я не сравниваю изображения, а массивы с координатами объектов. Еще одна проблема заключается в том, что (как вы можете видеть на изображении) есть объекты в главном каталоге, которые не видны на пластинах, а не все плиты имеют одинаковую глубину (что означает, что некоторые показывают больше звезд, чем другие).

Что я хотел бы знать, это способ найти и исправить линейный сдвиг между двумя массивами разного размера координат в python. Не должно быть никаких поворотов, поэтому это просто сдвиг в направлениях x и y. Массивы - это обычные числовые повторы.

ответ

1

Я бы немного изменил предложение OphirYoktan. У вас есть эти круги. Я предполагаю, что вы знаете радиус, и у вас есть значение радиуса по какой-либо причине.

Вместо случайного выбора точек отфильтруйте основной каталог для x, y в радиусе вашего образца. Затем вычислите, сколько же векторов вам нужно вычислить для всех возможных записей основного каталога в пределах диапазона вашего образца. Повторите одно и то же, затем соберите гистограмму векторов. Предположительно небольшое число будет происходить повторно, это вероятные истинные переводы. (В идеале «небольшое число» == 1.)

+0

Радиус круга - это радиус поиска для алгоритма, который просматривает мой основной каталог, чтобы найти возможные совпадения между каталогом и изображением. Итак, я извлек все возможные совпадения и вычислил различия между ними, как вы предлагали, и, похоже, это работает. Гистограммы не идеальны, но после их сглаживания я получаю максимум, который я могу использовать для перевода. благодаря –

1

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

Оригинальное решение (кросс-корреляции) может быть адаптирована к текущей структуре данных, и должны работать

считают, что RANSAC будет лучше в вашем случае в основном это означает: создать модель, основанную на небольшом числе точек данных (минимальное число, которые необходимы для определения соответствующей модели) и проверьте это правильность с использованием полного набора данных.

специально, если у вас есть только перевод рассмотреть (и не масштабировать):

  1. выбрать одну из точек
  2. матч его случайной точки в каталоге [Вы можете сделать «обоснованные предположения» , если у вас есть некоторые до о том, что перевод более вероятно]
  3. это соответствие дает перевод
  4. проверить этот перевод совпадает с остальной частью ваших точек
  5. повторить до тех пор, пока не найдете липкий d соответствует
1

Я предполагаю, что объекты не обязательно находятся в том же порядке как на фотопластине, так и на главном каталоге.

Рассмотрите набор векторов положения, A, объектов на фотопластине и набор векторов положения, B, объектов в главном каталоге.Вы ищете вектор, v, что для каждого в А, + v примерно некоторый элемент б.

Наиболее очевидный алгоритм для меня было бы сказать, для каждого в для каждого б, пусть v = б - . Теперь для каждого элемента из A убедитесь, что в B есть соответствующий элемент в B, достаточно близкий (на некотором расстоянии e, который вы выберете) к этому элементу + v. Как только вы найдете v, который соответствует этому условию, v - ваша смена.

 Смежные вопросы

  • Нет связанных вопросов^_^