Обзор: < /strong> < /p>
Я попытался пропустить отрицание Параметры искажения: < /p>
Код: Выделить всё
# _, mat, distortion, _, _ = cv2.calibrateCamera(...)
# undistorted_image = cv2.undistort(with distortion)
# redistorted_image = cv2.undistort(with np.negative(distortion))
фактический метод, который я использую: < /strong> < /p>
Код: Выделить всё
def save_undistorted_images(image, matrix, distortion):
test_image_su = cv.imread(image)
height, width = test_image_su.shape[:2]
new_camera_mtx, roi = cv.getOptimalNewCameraMatrix(matrix, distortion, (width, height), 1, (width, height))
distortion_u = np.negative(distortion)
# unsure if this line helps
new_camera_mtx_inv, roi = cv.getOptimalNewCameraMatrix(matrix, distortion_u, (width, height), 1, (width, height))
# undistort the image
undistorted_image = cv.undistort(test_image_su, matrix, distortion, None, new_camera_mtx)
cv.imwrite('undistorted_frame.png', undistorted_image)
# redistort trying to get something like original image (image_test_su)
distorted_image = cv.undistort(undistorted_image, matrix, distortion_u, None, new_camera_mtx_inv)
cv.imwrite('redistorted_frame.png', distorted_image)
(слева [/b]: Origin ). "src =" https://i.sstatic.net/dtr6b.png "/>
(слева c : искажено с использованием np.negative (искажение) ) (справа d : неискаженное изображение re искажено с помощью np.negative (искажение) )
< /p>
Изображение D Здесь в основном C выполняется на B, что, как я ожидал, было бы похоже на < /p>
Почему b < /strong> здесь подавляет эффект c < /strong>? < /P>
Другой способ расчета Обратно, что я попробовал:
Ниже приведен моя реализация Python в этой статье
Код: Выделить всё
distortion_u = distortion
k1 = distortion_u[0][0]
k2 = distortion_u[0][1]
k3 = distortion_u[0][4]
b1 = -1 * k1
b2 = 3 * (k1 * k1) - k2
b3 = (8 * k1 * k2) + (-1 * (12 * (k1 * k1 * k1))) - k3
# radial:
distortion_u[0][0] = b1
distortion_u[0][1] = b2
distortion_u[0][4] = b3
# tangential:
#distortion_u[0][2] = -1 * distortion_u[0][2]
#distortion_u[0][3] = -1 * distortion_u[0][3]
Итак, это подводит нас к следующему:
Почему эффект нормального искажения всегда подавляет np.negative(distortion) или что-то еще?
Все ли искажения работают таким образом? (отрицательные значения не соответствуют противоположному эффекту)
Как получить фактически противоположные параметры искажения?
Подробнее здесь: https://stackoverflow.com/questions/670 ... parameters
Мобильная версия