Как подогнать непрямоугольную сетку к выборке координат x и y?Python

Программы на Python
Anonymous
Как подогнать непрямоугольную сетку к выборке координат x и y?

Сообщение Anonymous »

Я хотел бы создать справочную таблицу для устранения деформации данного изображения, проецируемого на внутреннюю часть купола. Выглядит аппарат примерно так, но меньшего размера (для мышки). Я собрал набор точек, которые определяют сетку равномерно расположенных точек низкого разрешения внутри купола.
Вот координаты:
[(744, 498),
(721, 526),
(686, 541),
(649, 543),
(598, 537),(561, 519),
(546, 495),
(479, 541),
(436, 600),
(442, 654),(500, 682),
(577, 701),
(639, 708),
(694, 707),
(786, 684),(844, 659),
(854, 596),
(813, 538),
(520, 566),
(485, 627),(582, 589),
(569, 652),
(644, 593),
(643, 659),
(702, 591),(711, 653),
(750, 569),
(774, 633)]
Вот как выглядит сетка:
Изображение

Я' Мне хотелось бы создать сетку того же размера, что и реальный дисплей (720 x 1280), соответствующую координатам, которые я собрал. Есть ли способ «подогнать» непрямоугольную сетку к такому набору точек, и если да, то как этот подход можно реализовать с помощью Python?
Изменить:
Благодаря @bogovicj мне удалось решить эту проблему (думаю). Решение ниже.

Код: Выделить всё

# image transformation
from skimage import transform as tf
src = 
dst = 
tform =tf.estimate_transform(ttype='piecewise-affine', src=src, dst=dst)
base_image = 
warped_image = tf.warp(base_image, inverse_map=tform.inverse)

# plot the results
from matplotlib import pylab as plt
fig, (ax1, ax2) = plt.subplots(ncols=2)
ax1.imshow(base_image, cmap='gray')
ax1.scatter(src[:,0], src[:,1], color='r', marker='+', s=100)
ax2.imshow(warped_image, cmap='gray')
ax2.scatter(dst[:,0], dst[:,1], color='r', marker='+', s=100)
Изображение

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


Подробнее здесь: https://stackoverflow.com/questions/641 ... oordinates

Вернуться в «Python»