Ректификация объектива «рыбий глаз» на плоскость

У меня есть линза типа «рыбий глаз», для которой я знаю главную точку C= (x_0,y_0) и отношение между r (искаженное радиальное расстояние) и Theta (угол между оптической осью и входящим лучом), которое соответствует эквидистантной модели r(Theta)= f*Theta

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

1- shift the origin to the principal point

2- append to each point in the image plane  1 for the z coordinate 
(which corresponds to a focal length equal to 1): {x,y}  ==> {x,y,1}

3- calculate the angle Thea between {x, y, 1} and the point {0,0,1}

4- calculate the angle Beta in the image plane Beta = ArcTan(y/x)

5- calculate the image rectified coordinates:

      x_rec = x_0 +[ Cos(Beta) * r(Theta)]

     y_rec = y_0 +[ Sin(Beta) * r(Theta)]

person Lolette    schedule 22.12.2017    source источник
comment
Верхний ответ на этой страницы может содержать то, что вам нужно.   -  person meowgoesthedog    schedule 24.12.2017


Ответы (1)


Вы не можете исправить это искажение вслепую, не зная отношения. Вам нужно откалибровать.

Сфотографируйте шахматную доску или линейку и нарисуйте соотношение между расстоянием до центра на изображении и в реальном мире.

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

person Yves Daoust    schedule 22.12.2017
comment
на самом деле я уже откалибровал камеру, так как у меня есть связь между r и Theta, я хочу использовать эту связь для проецирования на плоскую плоскость - person Lolette; 22.12.2017
comment
Я просто говорю вам, что между ро и тета нет никакой связи, так как нет тангенциального искажения. - person Yves Daoust; 22.12.2017
comment
извините, я не понимаю, r (Theta) соответствует отношению, существующему между расстоянием между главной точкой на плоскости изображения и точкой проекции и углом Theta, который образует трехмерную точку в мире с оптической осью - person Lolette; 22.12.2017
comment
@Lolette: твоя модель r(Theta)= f*Theta совершенно невозможна. Это описывает спирали Архимеда. - person Yves Daoust; 22.12.2017
comment
эквидистантная модель r = fTheta, моя полиномиальная функция соответствует этой модели, поэтому моя камера более или менее равноудалена, но я не использую r=fTheta, я использую полином пятой степени порядка функция - person Lolette; 22.12.2017
comment
@Lolette: r = P (тета) также бессмысленно. Ваша запись ложная. Я не думаю, что ты это понимаешь. - person Yves Daoust; 22.12.2017
comment
Я не понимаю, что вы подразумеваете под r = P (тета). Модель проекции для эквидистантного рыбьего глаза: радиальное расстояние = фокусное расстояние * угол падающего луча. У меня есть это соотношение между радиальным расстоянием и углом входящего луча (для каждого пикселя изображения я знаю соответствующий угол между 3D-точкой и оптической осью) - person Lolette; 23.12.2017