Ручка x,y
в качестве параметра для кубической интерполяции
, если xs,ys
является целевым разрешение изображения, то:
u=(3.0*x)/xs
v=(3.0*y)/ys
Теперь кубическая интерполяция обычно делается по параметру t=<0.0,1.0)
так
если u=<0.0,1.0>
использования t=u
и контрольные точек 0,1,2,3
.
если u=<1.0,2.0)
использование t=u-1.0
и контрольные точки 1,2,3,4
, если u=<2.0,3.0>
использование t=u-2.0
и контрольные точки 2,3,4,5
То же самое для вертикальных контуров и v
. Вычислить xi,yi
как би-кубическую интерполяцию (u,v)
. И копия пиксель:
dst(x,y)=src(xi,yi);
Это только ближайший сосед, но вы также можете использовать билинейный для этого ... Как кубических кривого Я хотел бы использовать эту polynomial.
Идея би-кубической интерполяции проста. точка вычисления, соответствующая параметру u
на 4 горизонтальных контурах. Это даст вам 4 контрольных точки для окончательной кубической интерполяции в вертикальном направлении и v
в качестве параметра. Результирующая координата - это позиция вашего исходного пикселя.
http://docs.opencv.org/trunk/da/d6e/tutorial_py_geometric_transformations.html –
см. [OpenCV Birdseye view без потери данных] (http : //stackoverflow.com/a/39316776/2521214), так что найдите граничные точки и используйте билинейную или бикубическую интерполяцию, чтобы выровнять изображение – Spektre
, которое было так над моей головой, визуально я могу сказать, что происходит, но довольно потеряно. Любая книга, которую вы порекомендуете, даст мне скорость. –