基于畸变图像本身的径向畸变矫正(无需镜头标定)

        最近在研究畸变图像的畸变矫正问题。网上关于畸变矫正的方法多是采用OpenCV镜头标定的方法,标定出畸变模型参数和镜头内参,再根据参数后向映射得到矫正图像。但是存在这样一种情况:当我们手上只有畸变的图像,没有广角镜头可标定,或者是镜头没法拍到标定板图像。这时候需要考虑能否直接从畸变图像本身得到参数,然后畸变矫正呢?

        在IPOL网站上,有大神提供了只根据畸变图像中原本为直线,经过镜头畸变后变为曲线,然后根据曲线上的点计算出畸变参数。根据文献,算法采用HOUGH变换思想进行畸变参数的计算,IPOL上提供了文献和source code,源码依赖libpng实现图像的读取和写入。在这里我将libpng配置编译成一个VS solution,在solution基础上添加畸变参数计算和矫正代码,成为一个project。代码直接clone下来即可编译运行。下图是代码运行结果。

输入图像:

基于畸变图像本身的径向畸变矫正(无需镜头标定)_第1张图片

输出图像:

基于畸变图像本身的径向畸变矫正(无需镜头标定)_第2张图片

GitHub地址:https://github.com/tuuzhang/lens-undistortion-with-automatic-method

Tips:

1、libpng库采用的是以图像左下角作为图像坐标原图,这一点需要特别注意。

2、当图像的畸变程度较为轻微时,模型选择需要注意一下,可以选择div模型且畸变参数值选择2(实际上只有一个参数)

你可能感兴趣的:(畸变矫正)