精华内容
下载资源
问答
  • 鱼眼图像校正

    2014-10-15 22:10:00
    鱼眼图像的参数标定和畸变校正,希望对大家有帮助,对学习鱼眼镜头摄像机很有帮助
  • 鱼眼图像校正算法研究 鱼眼图像校正算法研究 鱼眼图像校正算法研究
  • 针对目前使用FPGA实现鱼眼校正算法时占用资源多以及延时长等问题,本文提出并设计了一种基于FPGA的鱼眼图像校正系统。鱼眼校正算法采用球面等距投影法,使用查表的方式在FPGA中实现。通过读写片外SDRAM的方式来实现...
  • 这两天在做鱼眼图像校正,也就是鱼眼镜头拍摄的照片的校正。首先,先贴两张图,学学siggraph,哈哈哈。开玩笑。梦寐以求的图形学年会啊!这里采用的方法,是从鱼眼图像成像的原理入手,反投影到平面图像,所以,很...

    这两天在做鱼眼图像的校正,也就是鱼眼镜头拍摄的照片的校正。

    首先,先贴两张图,学学siggraph,哈哈哈。开玩笑。梦寐以求的图形学年会啊!

    8f87cb77e6d5185acc1de708cc03dfed.png

    b2c6bf9a577d3d4af7bfa75ff0f6d0d2.png

    e0326691426a94a958179e091baacf8d.png

    0a0bf67ebe2b2e466d3fe04ef89063d7.png

    这里采用的方法,是从鱼眼图像成像的原理入手,反投影到平面图像,所以,很简单。而且景深可以调节,调节景深,可以看到不同的方位的图像。注意,可以发现,校正后的图像,似乎缺少了很多原图的信息。是的。因为,从成像的原理入手,那么,原来视角有200多度的鱼眼图像,校正到平面图像,肯定会有一些景物,在平面图像上是显示不出来的。但是,我们可以调节景深,从而可以达到看到更多景物的目的。所以,要从根本上理解成像的原理,才可以理解。也正应了那句老话,理论是最根本的,数学是最根本的。

    调节景深,可以得到如下的结果图:

    5a41b33fcc27647908c8290718dfd4c2.png

    4b7e17ef43f4c808661c7fc075b9fbcb.png

    可以看到,发生了变化。所以,从理论上讲,就很容易理解。

    这个方法,与一般的校正不一样,尤其是采用多项式的图像校正,那些完全是基于图像,而与图像的内容以及畸变的机理压根没有关系,没有思考。

    不过,话说回来,这里还是有一些问题的,因为投影面,我假设为球,所以,还有很多值得思考,和去完善。

    下一步工作:

    1. 如果有时间,采用GPU加速,并达到实时,还可以调节窗口。

    2. 基于鱼眼图像的三维重建。

    \(^o^)/ 欧耶!

    再来两张图吧,

    6680c8e734c31a62ed40bbaaed6dc3af.png

    047b5502711faeb82ddd7d6d882b7ee2.png

    b545b75ac01d627638a8db1ea831baa4.png

    29a9eaedb83f7c4aba0892150852f2ac.png

    eb0a9cb61546e50bde358f1a123e983c.png

    c1302f50d1a1cd0d4f5ee465e134ed1d.png

    aac4ac52018d690cedf986c460cc623a.png

    5448140138cdfe4d3cc893b05259e6d6.png

    1103aa4330d41b07ef94c93bb8f1b741.png

    4cf298d9f677e2f59094b3407396adb5.png

    展开全文
  • Chebyshev插值算法的实时鱼眼图像校正,比较难,需要再下载
  • 利用opencv棋盘格标定法对鱼眼图像校正分析

    万次阅读 多人点赞 2016-09-28 15:27:01
    利用opencv棋盘格标定法对鱼眼图像校正分析 一、开发环境 PC端、vs2013+opencv3.0、摄像头为淘宝购置的鱼眼摄像头外设+iphone6 二、镜头标定 1. 输入畸变的棋盘格图以及棋盘格的size(横纵坐标上的角点个数...
    利用opencv棋盘格标定法对鱼眼图像校正分析
    一、开发环境

    PC端、vs2013+opencv3.0、摄像头为淘宝购置的鱼眼摄像头外设+iphone6

     

    二、镜头标定

     

    1.  输入畸变的棋盘格图以及棋盘格的size(横纵坐标上的角点个数)

    该图片中棋盘格的size为(15,10)

     

    2.  提取棋盘格角点 findChessboardCorners

     

    §   二值化

    将输入的图像从color转化为gray的灰度图。

     

    §   CheckChessboard

     

    判断图片中是否有chessboard。具体方法是将输入图像经过腐蚀Erode和膨胀Dilate操作,分别检测黑色以及

    白色正方形格子的数量是否为棋盘格width/2*height/2,如果符合,那么就能简单的确认输入图片是一 张带有棋盘

    格的图像。

    §   GenerateQuads

    生成方格轮廓contour。对于输入图像,先做dilate膨胀操作。之后做findcontour操作,遍历每一个轮廓,如果

    该轮廓为方格并且其两个对边的长度都相近,那么将这个方格push到结果中,这些方格即是棋盘格中的小正方形。

    §   FindQuadNeighbors

    寻找方格的相邻方格。将前一步生成的方格输入,对于每一个方格,都遍历所有的方格,计算相邻的方格定点

    的距离,并且找到最近距离的方格,将该方格记做是当前方格的相邻方格。经过了膨胀之后原来相邻的点从一个变

    成了两个,现在将这两个点用一个点来替代,这个点就是膨胀之前的两个方格的公共交点。

    §   FindConnectedQuads

    寻找相互连接的方格。遍历所有的方格,如果该方格有相邻的方格并且它还没有被归类,则将这个方格归在一

    个新的group中,之后再考察当前方格的相邻方格,如果相邻方格的相邻方格没有被归类,那么再将新的方格加入

    group中,最终,group中包含了所有互相连接的方格。

    §   OrderFoundConnectedQuads

    将方格排序。将所有的相互连接的方格进行排序,考察每一个方格的相邻方格的个数,并且通过角点的坐标是

    否在一直线上,可以考察每一个方格位于哪一列哪一行,返回的方格序列以左上角的为首,顺时针排序。

    §   CleanFoundConnectedQuads

    剔除多余的方格。如果发现上一步排序后的方格数量超过了我们输入的棋盘格size的width*height,那么就需要

    将一些不符合要求的方格剔除。我们需要找到的是最小的方格,如果当前四个角点组成的方格可以用更小的四个角

    点组成的方格替代,那就将大的那个方格剔除。一直循环直到方格的数量等于我们提供的棋盘格size中方格的数量。

    §   CheckQuadGroup

    检查最终的方格。从一个只有一个相邻方格的方格开始检查,将所有的方格相连的角点位置进行一个更加精确

    的确定。

    §   CheckBoardMonotony

    检查方格是否水平平齐。对于每一行和每一列中所有的角点,考察该角点是否投影在该行或者该列的首位点所

    形成的线段上,以最终确保棋盘格方格提取的正确性。

    §   FindCornerSubPix

    找出亚像素角点。对于最终提取出来的方格,找到其亚像素的精确角点,返回这些角点。

    上图为标出角点之后的图像

     

    3.  鱼眼标定

    鱼眼相机的内参数采用Matx33d保存,具体矩阵形式如下:

    鱼眼相机的畸变系数是一个四维的向量,用Vec4d保存,具体形式如下:

                                {k1,k2,k3,k4}

    利用calibrate标定函数,即可以将上述的鱼眼相机内参数以及畸变系数都求出来。

    标定分为三个步骤:

        外部参数标定CalibrateExtrinsics

    优化Optimization

    确认Validation

     

    §  外部参数标定CalibrateExtrinsics

    首先初始化外部参数值InitExtrinsics,紧接着计算这些外部参数的值ComputeExtrinsicRefine(利用雅克比矩阵

    不断迭代运算,最终得到平移矩阵,旋转矩阵和旋转向量)。

    §  优化Optimization

    反复调用外部参数标定CalibrateExtrinsics,直到所有的参数都达到最优化。

    §  确认Validation

    利用不确定性评估EstimateUncertainties,得到误差参数,如果误差参数控制在一定的范围内,则确认通过。

    最终返回Matx33d表示鱼眼相机内参数和Vec4d表示畸变系数。

     

     

    三、畸变校正

    1.  初始化未畸变的校正图initUndistortRectifyMap。

     

    上述公式为透镜畸变前后图像坐标变换的公式。

         initUndistortRectifyMap完成了畸变前后的对应关系:

    1. 由图像坐标系反变换到相机坐标系中

    2. 然后,校正反变换R-1,一般无校正变换的相机,默认为单位矩阵

    3. 归一化,并进行相机透镜畸变处理

    4. 由相机坐标转换到图像坐标。

    由此,得到由图像模型到透镜畸变模型相互变换的对应关系u <->mapx, v <-> mapy。

        在相机标定过程中的Matx33d表示鱼眼相机内参数和Vec4d表示畸变系数与公式中对应。

    2.  校正remap

    利用上一步得到的mapx和mapy的对应关系,将鱼眼畸变图形通过remap校正回正常的图片。

     

     

    四、校正流程框图

     

    五、校正效果测试

     

     

    源码链接:https://share.weiyun.com/5YV5eSV

    展开全文
  • 资源包含了基于等距模型的鱼眼图像校正算法的Matlab实现,同时代码中给出了Matlab实现的线性插值和双线性插值。下载后添加图片直接运行即可。(适当调节rows1,cols1的数值,改变映射图像的效果,最好效果建议rows1=...
  • 鱼眼图像校正(球面等距投影模型)

    万次阅读 多人点赞 2017-10-29 17:10:17
    为了真正的理清鱼眼图像校正的原理,查阅了很多的资料,本文主要从以下几个方面详细阐述基于球面透视投影等距模型的鱼眼图像校正算法。 1,鱼眼相机的构造原理。 2,透视投影。 3,等距投影算法鱼眼相机的构造...

    为了真正的理清鱼眼图像校正的原理,查阅了很多的资料,本文主要从以下几个方面详细阐述基于球面透视投影等距模型的鱼眼图像校正算法。
    1,鱼眼相机的构造原理。
    2,透视投影。
    3,等距投影算法

    鱼眼相机的构造

    成像模型的不同,鱼眼相机的成像原理不同于一般的小孔成像模型。对于一般的小孔成像模型其成像的示意图如下所示:
    小孔成像模型
    小孔成像视角原理图
    我们先展示了小孔成像的相关知识,不同于小孔成像 鱼眼图像由于为了获得更加宽广的视角,因此允许了图像畸变的存在。其成像也就不同于小孔成像的线性模型。对于鱼眼相机,我们一般将其成像模型用球面,抛物面模型来代替。下面先来看看鱼眼相机的成像光路图:
    这里写图片描述

    从图中可以看出,鱼眼相机的成像路径是完全不同于一般的小孔成像的相机。一般的鱼眼相机由以下几个部分组成:
    这里写图片描述
    为了更好的描述,鱼眼相机的成像原理,以及其成像过程,通常根据应用场景的不同将鱼眼相机等效为以下的几种模型:
    这里写图片描述
    图中的等距投影模型就是本文算法所采用的模型,对于实际的理解,我们可以认为相机的成像模型实际上表征的是成像的像高与入射角之间的关系。以等距投影模型为例来说明,公式中r表示的是传感器上成像的像高。f表示的是相机的焦距。theta表示的是入射角的大小。成像模型实际上是为了用来描述入射角与成像像高之间的映射关系,等距投影是以线性关系来定义,等立体角投影模型是用正弦函数来定义,立体视觉投影是以正切函数来定义的。那么如何来理解所谓的等距投影呢?先来看看等距投影的示意图:
    这里写图片描述
    从图中可以看出以相同增量的入射角theta来进行投影,等距投影模型将这些相同增量位置的像素投影到成像面上的时候所得到的像高是相等的。其实这个关系从等距投影的r的表达式上也可以看出来。
    明白了等距投影的概念时候,下一个需要理解的概念就是图像畸变。图像的畸变分为径向畸变和切向畸变。所谓的径向畸变意思就是沿着成像半径方向的图像位置的偏移,切向畸变表示的是沿着成像点切线方向图像像素点位置的偏移。可以借助于下面这张图来理解下图像畸变的概念。
    这里写图片描述
    根据成像形状的不同可以将鱼眼相机分为普通鱼眼相机和对角型。不同的相机模型所采用的原理是不同的,这对我们选择图像的校正方案是很重要的。
    鱼眼相机模型

    透视投影

    关于透视投影的相关知识可以参考下面这篇博客,作者详细的讲解了透视投影的相关知识。
    http://www.cnblogs.com/graphics/archive/2012/07/25/2582119.html

    等距投影算法

    这里写图片描述
    (考虑到我们项目的鱼眼相机实际上是属于壁挂式的安装方式,采用球面模型等距投影算法相比于经纬度法会更好一点。)

    算法说明:
    如图中所示将鱼眼成像模型等效为一个半球面,
    P(x,y,z):为现实空间(CCS)中的一点;
    P1(x1,y1,z1):为P点与虚拟成像光心连线交成像半球面的一点。
    P2(u,v):过点P1作XOY平面垂线,交XOY平面一点P2。(注意在实际的成像过程中XOY平面并非实际的成像面,这里画出来只是为了方便理解。真实的成像面实际上是上图中最下方的xoy平面。)
    r:不同角度的景物通过鱼眼相机的投影在传感器上的像高。r的不同表达式代表着不同的成像模型,本次算法由于采用等距投影模型故r的表达式为r = f*arg(入射);

    公式的推导:
    鱼眼图像的等距投影模型:r = f* ,其中f表示的是摄像机的焦距。 表示的是光线的入射角。
    设鱼眼图像上的像素的坐标为(x,y)。目标图像的平面即为上图中P(X,Y,Z)所在的平面。一般我们取Z=R,其中R为鱼眼图像的半径。由上图的示意图可得到:
    这里写图片描述
    平面的投影。同时也是实际成像面中像高r与实际图像坐标x轴之间的夹角。具体理解可参考上图。当得到了theta ,alpha , 这两个值之后,实际上也就得到了球面上一点P1(x1,y1,z1)的极坐标的表达式。2维的平面坐标实际上是通过极坐标这个桥梁映射到三维坐标系中的。此时P1可用极坐标表示出来。P1( theta,alpha ).
    由空间一点的极坐标转化为空间点的三维坐标:
    P1点的三维坐标为:
    这里写图片描述
    在得到空间的点的三维坐标之后,下一步就是要将这个空间点进行球面透视变换。将虚拟球面上的点P1,映射到目标图像平面。根据相似三角形的关系,考虑图中三角形OPP3,OP3P3’,与 可知:
    这里写图片描述
    实际上我们校正后的目标图像的平面就是Z = R平面。因此假设校正后的目标图像的坐标为(u,v)。可以得到鱼眼图像的源图像(x,y)和目标图像之间的映射关系。
    这里写图片描述
    根据变换之后的鱼眼图像的效果,调整鱼眼图像半径以达到最好效果。同时编程时建议采用矩阵运算的形式进行,减少循环迭代次数,提高算法运行效率。
    当然,对于最后的推到公式实际上有许多的方法,除了使用空间三角形的相似定理之外。还可以使用两个具有相同夹角的三角形,其相同角的三角函数值相同。再结合球面模型的空间表达式x2+y2+z2=R2,以及抛物面的空间表达式来求解目标图像与源图像之间的像素映射关系。

    展开全文
  • DSP鱼眼图像校正

    2017-07-23 22:15:31
    打开一张BMP格式图像鱼眼矫正算法处理
  • 鱼眼图像校正及拼接的研究与实现,球面透视投影模型
  • 为消除鱼眼镜头带来的形变,本文提出一种应用经纬映射的鱼眼图像校正方法,推导了消除变形的数学依据,总结出一种不需要任何标定数据,快速的纠正等角鱼眼变形的算法。
  • 鱼眼图像校正算法 2017.11.6 前面讲了关于鱼眼图像等距投影模型的原理。下面先来看看几个算法的仿真效果。 本周主要在上周的基础上完成鱼眼图像校正算法的仿真,上周提出的是基于等距模型的球面投影校正算法。...

    鱼眼图像校正算法
    2017.11.6
    前面讲了关于鱼眼图像等距投影模型的原理。下面先来看看几个算法的仿真效果。
    本周主要在上周的基础上完成鱼眼图像校正算法的仿真,上周提出的是基于等距模型的球面投影校正算法。为了完成仿真的任务,先实现了球面透视投影的校正算法,因为等距模型的投影算法本质上实际就是将球面投影的坐标计算换成了可以根据等距模型替代的公式。
    为了直观的说明算法的优劣下面分别给出经纬度校正算法,球面投影模型校正算法,以及等距模型球面透视投影算法的方正代码及效果。
    说明:为了实现完整图像校正算法。(圆形区域提取,坐标变换,插值),我写了线性和双线插值函数 ,圆形区域提取参考了网上的代码,但是实际效果不好,在水平方向的圆形区域查找上效果比较差。
    圆形区域提取效果:


    SouthEast
    SouthEast

    上图中左边是原始图像,右边是圆形区域提取之后的图像。从图中可以看出目前的方法对垂直方向的边界确定效果比较好,但是水平方向的边界确定效果较差。之后圆形区域提取这部分还需要修正。目前只是为了算法完整性先用来测试坐标变换效果。
    经纬校正算法:

    SouthEast


    从上图中可以看出经纬校正算法对于圆形图像中心部分的校正效果还不错,保持了图像的垂直特性。但是此方法并不能很好校正圆形图像的边缘部分。(实际上可以结合仿射变换对校正之后的图像进行一下修正,但是这样可能会影响后续重叠区域的计算。)
    球面模型透视投影算法:


    SouthEast

    从图中可以看出相比于经纬度校正算法对于边缘图像的校正效果要好一点,但是从上图中也看出一个问题,那就是球面投影之后的图像的大小确定的问题。与经纬度校正算法相比,球面透视投影算法的目标图像是需要扩大的。后续会完善这一部分的代码。同时我们也可以看到球面透视投影算法虽然在一定程度上解决了鱼眼图像边缘弯曲的问题,但是校正效果,也不是很好。还需要进一步改进。同时算法对圆形图像半径的求解依赖很高。不同的半径对校正效果的影响比较大。
    等距模型球面投影算法:

    SouthEast

    上图是初步的算法仿真图,此算法是基于球面投影算法修改的,但是忽略了图像坐标中心变换的问题,以及坐标映射时候的坐标系一致性问题使得校正未完成。但是从校正出来的部分图像可以看出此校正算法可以将边缘的弯曲的部分较好的校正。图中的马赛克是由于对目标图像的大小设定问题导致的。后续将继续改进这部分的代码。
    总结:通过这三种算法的初步对比,可以看出等距模型球面投影算法还是可行的。个人建议可以继续完善这部分的算法。看看完整的校正效果。后续将会贴上各种算法的Matlab代码。未完待续。。

    展开全文
  • 鱼眼图像校正(球面等距投影模型)_|||

    千次阅读 热门讨论 2017-11-11 15:33:02
    解决了上周实现鱼眼图像校正时的以下几个问题: 1, 图像坐标中心位移问题。 2, 目标图像映射大小问题。 3, 图像插值问题。 对于鱼眼图像的校正问题来讲,首先我们需要明确等距模型只是给出了入射角和相机...
  • 实验室工作汇报,这里留作保存
  • Avisonic推出的芯片AVS7110, 这款IC除了180°鱼眼镜头畸变校正 还提供:鸟瞰,2或3节分割视图,局部画面移动和缩放,画中画,静态和动态停车引导轨迹线等定制的汽车摄像功能。
  • 全景鱼眼图像校正测试算法

    热门讨论 2013-04-09 09:12:04
    对于球面鱼眼镜头有很大的校正效果,绝对可靠,已经验证过,内附matlab代码,检查标定代码。学习研究很有必要
  • 基于上周的仿真情况,通过调整校正后目标图像的大小,实现了对映射之后鱼眼图像的完整映射: 可以看到由于采用的是球面透视投影的算法,因此,校正之后的图像的具有保形性。若追求图像的完整视场,则校正的质量会...
  • 转载于:https://www.cnblogs.com/guochen/p/6339732.html
  • 鱼眼算法的资料,提供一种资料,提供给大家参考。
  • 这是根据2013一个期刊上的小论文《基于几何成像模型的鱼眼镜头图像校正算法和技术研究》中的校正原理式(11)和式(12)编写的,其实这两个式子给出的是二维的校正方法,就跟之前的经度坐标校正差不多都是平面校正,所以...
  • 利用MATLAB实现鱼眼大视场角拍摄的图像的展开,将鱼眼畸变图像展开为矩形图,所依据的就是文章《应用经纬映射的鱼眼图像校正设计方法》杨玲,能够读取到图像之后,进行经纬校正,最终显示原图以及校正之后的图,效果...
  • 针对煤矿井下视频监控系统中鱼眼图像的畸变问题,根据理想球面透视投影模型的保线性约束条件,提出一种面向内容的校正参数自动获取方法,即通过对鱼眼畸变图像进行数学形态学和随机霍夫变换预处理得到所需的图像边缘...
  • 《单幅圆形鱼眼图像校正》程序

    千次阅读 热门讨论 2015-09-11 16:47:01
    理论部分来自《单幅圆形鱼眼图像的校正》 其实他是在《应用经纬映射的鱼眼图像校正设计方法》得到经纬度后 再采用柱面压缩 把经纬度变换到一个图像平面即可 这篇其实我早就看了 只是之前经纬度校正程序编出来是一个...
  • 鱼眼图像畸变校正

    千次阅读 2018-10-12 16:36:29
    鱼眼图像畸变校正:https://blog.csdn.net/qq_15947787/article/details/51441031

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 153
精华内容 61
关键字:

鱼眼图像校正