c++ - 通过鱼眼畸变功能扭曲直线并在图像中正确绘制

标签 c++ opencv computer-vision fisheye

我在世界坐标中有一条线并将其投影到图像上(如本问题 math.stackexchange 中所述)。这会在图像空间中生成一个简单的直线方程,因此我可以使用 OpenCV 在图像中轻松打印它。

现在我想将线转换到鱼眼相机图像中。因为我有一个相应的非线性失真函数,所以我可以很容易地扭曲点。现在天真的方法是通过这个函数扭曲生成的线中的每个点。但这会导致多个线段和未设置的像素(通常属于扭曲线)。

我想知道有什么聪明的方法可以得到正确的扭曲线。也许还需要以不同的方式处理线投影?我可以更频繁地对直线进行采样(即使用亚像素坐标),但我认为这并不能保证我得到正确的解决方案。

编辑:

我的失真函数是一个简单的多项式

r(a) = k1*a+k2*a^2+k3*a^3+k4*a^4

其中 a 是未失真的入射光线与光轴的角度,r 是失真图像中像素的半径。您可以阅读更多相关信息 here .

最佳答案

简单的解决方案确实是提高线路分辨率。 如果你添加更多的像素(子像素更好),那么在失真后你会得到更好看的图像。

我认为更正确的方法是向后映射。找到从失真 图像中的每个像素(正方形,整数)到未失真 图像中的像素(四边形,实数)的映射。 这将确保您的扭曲线中不会有任何漏洞。

enter image description here

关于c++ - 通过鱼眼畸变功能扭曲直线并在图像中正确绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37687377/

相关文章:

C++ : overflow in implicit constant conversion [-Woverflow]

c++ - 返回从字符串文字创建的静态 string_view 是否安全?

c++ - move 赋值运算符和 `if (this != &rhs)`

opencv - opencv编程中的函数

opencv - 构建 opencv_contrib opencv 3.0 时出错

c++从.txt文件中删除行

c++ - CvSVM 回归只预测整数

Tensorflow freeze_graph索引错误: list index out of range

python - 如何在OpenCv视频上放置度数符号(º)?

opencv - 具有SIFT功能的物体识别