OpenCV如何将相机失真应用于图像

问题描述 投票:1回答:1

我有一个渲染的图像。我想对从opencv获得的图像应用径向和切向畸变系数。即使有不失真功能,也没有失真功能。如何使用失真系数使图像失真?

enter image description here

opencv image-processing distortion
1个回答
0
投票
首先,您需要使用焦距和中心对图像点进行归一化

rpt(0)=(pt_x-cx)/ fx

rpt(1)=(pt_y-cy)/ fy

然后扭曲归一化的图像点

double x = rpt(0), y = rpt(1); //determining the radial distortion double r2 = x*x + y*y; double icdist = 1 / (1 - ((D.at<double>(4) * r2 + D.at<double>(1))*r2 + D.at<double>(0))*r2); //determining the tangential distortion double deltaX = 2 * D.at<double>(2) * x*y + D.at<double>(3) * (r2 + 2 * x*x); double deltaY = D.at<double>(2) * (r2 + 2 * y*y) + 2 * D.at<double>(3) * x*y; x = (x + deltaX)*icdist; y = (y + deltaY)*icdist;

然后您可以使用投影的中心和焦距来平移和缩放点

© www.soinside.com 2019 - 2024. All rights reserved.