鱼眼相机图像处理_鱼眼相机图像矫正 - CSDN
  • 图像处理--鱼眼图像

    2018-07-04 10:23:10
    鱼眼镜头--最开始(1919)是源于摄影的需求--因为鱼眼图像存在几何畸变>>>鱼眼校正的需求优点:视角大,用于安防监视--降低成本

    鱼眼镜头--最开始(1919)是源于摄影的需求--因为鱼眼图像存在几何畸变>>>鱼眼校正的需求

    发展: 装满水的针孔摄像机>>>半球形玻璃>>>在半球形玻璃前增加一个负弯月形透镜(希尔天文物镜)


    图1-3这种凸面镜可以将大范围的景物汇聚在一起,普通镜头只需拍摄由凸面镜汇聚起来的景物即可

    优点:视角大,用于安防监视--降低成本(一个鱼眼镜头可以代替多个普通镜头)

    对鱼眼图像去失真的过程称为鱼眼图像的校正,经过校正后一幅大视角的鱼眼图片可以转化为用若干幅普通图片来观看,这种图片从不同视角覆盖了鱼眼图片的视野,一般认为鱼眼图像只发生几何形变,不失真

    鱼眼校正---本质是图像处理的空间变换(几何变换,几何运算)>>>仅将图像上的点进行复制而不修改

                空间变换---看成是将图像点在图像内移动,即鱼眼图像上的点A(u,v)---->校正图像上的点A*(x,y)

    向后映射(应用较多)---相似填充法---由校正图像的坐标经过映射变换求出对应的鱼眼图像坐标后,将鱼眼图像坐标处的图像分量复制到校正图像坐标处由像素坐标点(校正图像)求亚像素坐标点(鱼眼图像)的图像分量

    向前映射---由鱼眼图像坐标,经过映射变换得到校正图像坐标后,将鱼眼图像坐标的图像分量复制到校正图像坐标处  亚像素坐标点---->像素坐标点

     在数字图像的处理中,映射的输入都是像素坐标(整数坐标),输出为亚像素坐标(非整数坐标)

    需要两个算法:一个是----定义空间变换的坐标映射关系(用来描述鱼眼图像上的每一个点映射到校正图像上的点,或反过来);一个是----像素插值,因为变换前后图像的位置坐标一般不是整数向量,对于非整数坐标,必须用插值的方法来获得图像分量信息。

    应用:群组可视会议、安防监控、智能交通、全景浏览、球面电影

    鱼眼图像校正

    -----本质是鱼眼镜头的光学成像模型------


        (R.W.Wood充水针孔摄像机)由入射角θ与深度求得r

    只考虑径向畸变,切向畸变忽略

    鱼眼校正模型就是反应鱼眼图像点与校正图像点或入射光线之间的关系的映射

    镜头设计模型

    --f 镜头的焦距; θ 入射角;r是鱼眼图像上,像点与镜头主轴之间的距离--

    1. 等距投影模型

    间距相同的 入射光线 其投影点的间距 也对应 相同;

    -----对入射角没有限制,用来初步校正

    2. 正交投影模型

    畸变很大,180°周边及以后的情况无法描述,适用于广角摄影镜头

    3.等立体角模型

    相等立体角的入射面会产生相等面积的像;畸变程度介于等距模型与正交模型之间

    4. 体视模型

    畸变最小

    5. 透视模型

      ----透视模型用来拍摄正常图像,即小孔成像

    2D校正模型--将鱼眼图像平面映射到校正平面--建立的是r和ρ之间的关系,ρ是校正图像上的点与主轴的距离

    优点:变换直接,在模型的表达式确定后,校正即可直接进行

    缺点:仅能在鱼眼图像与校正图像之间直接映射,很明显的局限性,180°视角校正时已不能适用,只对中心区域图像的校正


    3D校正模型---建立像高r和入射角θ之间关系,根据需要在空间中放置投影平面,由入射光线反投影到投影平面上获得校正图像

    (多校正面投影)

    ---3D模型的基本形式

    内容的校正----根据景物中的具体物体进行校正,对图像中的具体物体进行基于内容的校正----基于用户输入的校正系统>>>需要用户指出图片中可用来校正的信息,然后该系统就会根据用户提供的信息进行校正

    模型约束---求解模型都需要一定的约束作为条件--约束建立了模型参数与鱼眼图片信息之间的联系>>>根据校正信息求出模型的参数----约束要有视角不变性

    1.保线性约束--保线性指景物中的直线在校正后仍为直线的约束--使鱼眼图像中主观的直线变为校正图像上的实际直线---对每条直线上的点列共线方程组

    ---->

    2.极点约束---对同一景物的两个不同投影点,共三个点均在同一坐标系下

    3.单应型约束---同一景物的两个不同投影点(x1,y1),(x2,y2)有如下关系:H为单应形矩阵,

    带参模型求解三要素----模型形式+模型约束+图像信息

    先找一个较简单的接近实际的模型,对该模型求解;图像信息指的是拍摄图像中已知的信息。

    拍摄标定板是一种有效获得已知数据的方法;识别出图案后,加上预知的图案的相对位置关系,软件就能够根据这些信息进行校正

    鱼眼图像校正系统方案

    HDTV@60fps精确校正

    圆形鱼眼&对角鱼眼图像(圆形图像校正包含了对象图像的校正)

    >>>圆形鱼眼图像是将所拍视野全部放入照片范围内的图像----对角鱼眼图像仅在照片的对角处达到了最大视野,是全部图像的一部分

    鱼眼图像的校正瓶颈---1.坐标运算量较大带来的速度瓶颈。2.图像质量问题。由于校正图像在源图像上的不同位置的采样密度不同那么输出图像上的不同位置的图像质量不同。--所以采样密度大的位置,图像质量较好,采样密度小的位置反之。

    坐标计算---利用模块计算图像坐标。---向后映射中,输入是校正图像坐标,输出是鱼眼图像坐标。

    ---向前映射中,输入输出相反。--坐标计算的结果特点:计算具有重复性,计算结果数据量较大

    重复性---当镜头安装好以后,鱼眼图像与校正平面相对位置关系不变的情况下,坐标计算过程与结果对于每一帧是完全一样的。

    图像插值

    -----由于计算出的鱼眼图像坐标 不是 整数坐标,故必须由插值算法 从周围像素信息中 恢复出坐标处的 分量信息。

    常用的插值算法:1.邻近插值法---直接用离坐标处最近的点作为插值结果>>>改进:将邻近点进行细分,然后再进行邻近插值


    2. 双线性插值法

    ----假设任意坐标的图像分量是周围像素分量的线性组合,线性加权系数与该坐标与附近像素点的垂直和水平距离成反比。

    3. 双三次插值法

    ----高次插值法。 复杂度最高,插值效果最好。

    插值子模块设计---接收到1组插值信息>>>插值坐标+其周围的四个像素点


                                       

                    




      

    展开全文
  • 鱼眼相机矫正原理

    2016-07-31 09:35:58
    在平面透视投影情况下,透视投影图像必须满 足平面透视投影约束,即空间直线的透视投影必须 为图像平面上的直线.对于视场为100。左右的广角 镜头的校正,已有的方法是利用平面透视投影约束, 通过变形校正模型将...

    对于鱼眼矫正(180度以上)

    原文文档下载地址:http://download.csdn.net/detail/qq_15807167/9590824

    下载链接

    写鱼眼矫正好的博文地址推荐


    这里写图片描述

    在平面透视投影情况下,透视投影图像必须满 足平面透视投影约束,即空间直线的透视投影必须 为图像平面上的直线.对于视场为100。左右的广角 镜头的校正,已有的方法是利用平面透视投影约束, 通过变形校正模型将空间直线的投影曲线映射为图 像平面上的直线.达到对变形图像的校正,这些方法的共同点是不使用任何标定块,直接 使用场景中的直线,且这些直线的位置和方向是任 意的,不要求这些直线之间相互平行或垂直,这与利 用已知空间点的三维坐标或利用多幅图像之间 的对应关系的校正方法不同.而对于视场大于 180。的鱼眼镜头,由于它能拍摄到与光轴夹角为90。 的光线,如果利用平面透视投影模型来表示完整的 校正图像,则校正后的图像大小将为无穷大.也就是说,所使用的方法不能直接应用在视场 大于180。鱼跟镜头的校正.对于视场为180。左右的 鱼眼图像,我们觉得采用球面透视投影模型来表示 完整的校正图像是比较合适的,此时,整幅鱼眼图像 将被映射到一个单位球面上.与平面透视投影的情 况不同,在球面透视投影情况下,空间直线不再投影 成图像平面直线,而是球面上的大圆. 本文探讨在球面透视投影模型下,利用空间直 线的球面透视投影为大圆这一球面透视投影约束来 恢复鱼跟变形校正参数的方法.由于在场景直线的 鱼眼投影曲线上选取采样点时,不能保证所有采样 点都严格位于曲线上,因此,在将这些采样点通过变 形校正模型映射为球面点后,需要对这些点进行大 圆拟合.本文采用的目标函数是最小化对应于同一条空间直线的球面点到相应拟合大圆的球面距离的平方和.因此,在鱼眼镜头校止中,需要使用参数来方便地描述大圆,以及定义球面点到大圆的球面距离等.本文将球面几何引入到鱼眼镜头校正中来,给出了大圆的球面坐标的概念以及球面点到大圆的球面距离计算公式等.上述理论使得空问直线的球面透视投影必为球面上大圆这一约束得以在鱼眼变形校正中实现。

    球面透视投影模型

    透视投影也叫线性投影.我们可以将透视投影图像的形成过程分为两步:第l步。将每一个空间点P映射为连结P与投影中心。的射线OP;第2步,将射线OP线性地映射为图像点.第2步中的映射是可逆的,因为每一条通过投影中心。的射线对应于图像上的唯一一点,而图像上的每一点对应于唯一一条过投影中心。的射线.图像可以被认为是对通过投影中心O的射线的参数化.在文献中.有两种标准的参数化图像的方法.第一种方法是用一个在投影中心附近但不过投影中心的平面与这些通过投影中心。的射线相交,此即为平面透视投影模型.第二种方法是使用球心在。点的单位球面与
    这些通过投影中心的射线相交,此即为球面透视投影模型.平面透视投影模型如图2(a)所示,在投影中心。处建立摄像机坐标系,oZ为主轴(光轴)方向.则有
    这里写图片描述
    当摄像机具有较大视场时,可以采用单位球面代替投影平面,也就是采用球面透视投影模型,如图2(b)所示.三维空间点P在球面上的透视投影p的三维直角坐标为
    这里写图片描述
    这里写图片描述
    在平面投影模型下,空间直线L在图像平面上的投影z为L与投影中心0确定的平面与投影平面的交线.而在球面投影模型下,空间直线L在球面上的透视投影为大圆g,此大圆g是由L与投影中心。确定的平面与投影球面的交线.在已知球面投影图像后,将其转化为平面投影图像是很方便的.由于球面点对应唯一一条过投影中心的射线,我们首先将所有的球面点映射为过投影中心的射线,然后,再将这砦过投影中心的射线透视投影到一个平面上去,这样就得到了平面透视投影图像.关于投影平面的方向、投影中心到投影平面的距离以及平面图像的大小等都可以根据需要指定.

    鱼眼变形矫正模型

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    展开全文
  • 利用上述参数,可以对鱼眼相机获取的原始畸变图像做畸变校正。 1.畸变校正原理 简单回顾下鱼眼相机成像模型,上图中相机坐标系的X轴垂直屏幕向外;且成像平面位于投影中心前方以便于分析。对于相机坐标系中的...

    0.前言

    有关鱼眼相机成像模型相关知识,参考我的这篇文章。通过对鱼眼相机做内参标定,可以得到相机的内参$[{f_x},{f_y},{c_x},{c_y}]$和畸变参数$[{k_0},{k_1},{k_2},{k_3}]$。利用上述参数,可以对鱼眼相机获取的原始畸变图像做畸变校正。

    1.畸变校正原理

    简单回顾下鱼眼相机成像模型,上图中相机坐标系的X轴垂直屏幕向外;且成像平面位于投影中心前方以便于分析。对于相机坐标系中的一点$P(X,Y,Z)$,根据鱼眼成像模型其投影至点$P''$;如果使用小孔成像模型,则会投影至点$M$,这里可直观地看出前者相比于后者可以获取更加宽广的视野。同时根据这张图可以得到小孔成像模型的映射点$M$到鱼眼相机成像模型映射点$P''$的映射关系,这就是鱼眼相机图像畸变校正的基础原理。由于映射关系为$M \to P''$,得到的图像视野范围一般会小于原图。

    鱼眼相机图像畸变校正具体流程如下:

    1)对于目标图像中每个像素点$(u,v)$,利用内参信息计算得到对应的归一化成像平面映射点$M(x,y,1)$

    $$\left\{ {\begin{array}{*{20}{c}} {x = (u - {c_x})/{f_x}}\\ {y = (v - {c_y})/{f_y}} \end{array}} \right.$$

    2)利用鱼眼相机内参和畸变参数计算点$M(x,y,1)$对应的映射点$P''(u',v')$

    $$\left\{ \begin{array}{l} \theta = \arctan (\sqrt {{x^2} + {y^2}} )\\ {\theta _d} = \theta + {k_0}{\theta ^3} + {k_1}{\theta ^5} + {k_2}{\theta ^7} + {k_3}{\theta ^9}\\ x' = {f_x}^\prime {\theta _d}x/\sqrt {{x^2} + {y^2}} \\ y' = {f_y}^\prime {\theta _d}y/\sqrt {{x^2} + {y^2}} \\ u' = x' + {c_x}^\prime \\ v' = y' + {c_y}^\prime \end{array} \right.$$

    3)一般求得的$(u',v')$为小数,使用插值算法得到其像素值

    注意:步骤1)和2)中的内参,可以相同也可以不同,因为并未要求目标图像的成像模型参数和原始鱼眼相机相同

    2.畸变校正代码实现

    首先自己手写实现

    void MyFisheyeImageUndistortion()
    {
    	cv::Mat img, undistortImg;
    	cv::Matx33d K, P;
    	cv::Vec4d D;
    	cv::Mat mapX, mapY;
    	img = cv::imread("img.bmp");
    	undistortImg.create(img.size(), img.type());
    
    	K(0, 0) = 348.52; K(0, 1) = 0; K(0, 2) = 640.19;
    	K(1, 0) = 0; K(1, 1) = 348.52; K(1, 2) = 358.56;
    	K(2, 0) = 0; K(2, 1) = 0; K(2, 2) = 1;
    
    	D(0) = 0.066258;
    	D(1) = 0.039769;
    	D(2) = -0.026906;
    	D(3) = 0.003342;
    
    	P = K;
    	P(0, 0) /= 1.5;
    	P(1, 1) /= 1.5;// 一般另P=K,这里减小了小孔成像模型中的f,得到的畸变校正后的图像视野会扩大
    
    	float x, y, theta, theta_d, r, x_origin, y_origin;
    	for (int v = 0; v < undistortImg.rows; v++)
    	{
    		for (int u = 0; u < undistortImg.cols; u++)
    		{
    			float r, g, b;
    			x = (u - P(0, 2)) / P(0, 0);
    			y = (v - P(1, 2)) / P(1, 1);
    			theta = atan(sqrt(x*x + y*y));
    			float theta_2 = theta * theta;
    			theta_d = theta*(1 + D(0)*theta_2 + D(1)*theta_2 * theta_2
    				+ D(2)*theta_2*theta_2*theta_2 +
    				D(3)*theta_2*theta_2*theta_2*theta_2);
    			x_origin = K(0, 0)*theta_d*x / (sqrt(x*x + y*y)) + K(0, 2);
    			y_origin = K(1, 1)*theta_d*y / (sqrt(x*x + y*y)) + K(1, 2);
    			if (x_origin < 0 || x_origin > img.cols - 1
    				|| y_origin < 0 || y_origin > img.rows - 1)
    			{
    				undistortImg.at<cv::Vec3b>(v, u) = cv::Vec3b(0, 0, 0);
    			}
    			else// 只是为了验证畸变校正流程,为方便这里用了最近邻差值
    			{
    				undistortImg.at<cv::Vec3b>(v, u) = img.at<cv::Vec3b>((int)y_origin, (int)x_origin);
    			}
    		}
    	}
    	cv::imshow("src", img);
    	cv::imshow("corrected", undistortImg);
    	cv::imwrite("my_corrected.bmp", undistortImg);
    	cv::waitKey();
    
    }
    

            

    运行效果如上图所示,左方为原始图像,右方为畸变校正后的图像;由于手动减小了小孔成像模型中的f,结果图像在竖直方向的视野会部分超出原图,导致产生黑色填充区域。

    之后调用OpenCV接口实现畸变校正,代码如下。

    void OpenCVFisheyeImageUndistortion()
    {
    	cv::Mat img, undistortImg;
    	cv::Matx33d K, P;
    	cv::Vec4d D;
    	cv::Mat mapX, mapY;
    	img = cv::imread("img.bmp");
    	
    	K(0, 0) = 348.52; K(0, 1) = 0; K(0, 2) = 640.19;
    	K(1, 0) = 0; K(1, 1) = 348.52; K(1, 2) = 358.56;
    	K(2, 0) = 0; K(2, 1) = 0; K(2, 2) = 1;
    
    	D(0) = 0.066258;
    	D(1) = 0.039769;
    	D(2) = -0.026906;
    	D(3) = 0.003342;
    
    	P = K;
    	P(0, 0) /= 1.5;
    	P(1, 1) /= 1.5;
    
    	cv::fisheye::initUndistortRectifyMap(K, D, cv::Matx33d::eye(),
    		P, cv::Size(img.cols, img.rows), CV_16SC2, mapX, mapY);
    
    	cv::remap(img, undistortImg, mapX, mapY, CV_INTER_LINEAR);
    	cv::imshow("src", img);
    	cv::imshow("corrected", undistortImg);
    	cv::imwrite("corrected3.bmp", undistortImg);
    	cv::waitKey();
    }

    运行结果如下图所示。

    3.原始图像向畸变校正后图像映射

    上面给出了畸变校正后图像向原始图像的映射计算,不过有时候我们需要反向计算原始图像中某点对应的畸变校正后的像素坐标。譬如在原始图像中计算得到一个特征点,之后需要在畸变校正后的图像中进一步计算其精确位置,就需要先得到特征点在畸变校正后图像的坐标点。由原图中点(u',v')映射至畸变校正后图像中的(u,v),推导过程如下。

    首先为了简化推导过程,假设鱼眼相机内参中${f_x}^\prime = {f_y}^\prime = f'$,之后

    $$\left\{ \begin{array}{l} x' = u' - {c_x}^\prime \\ y' = v' - {c_y}^\prime \\ {\theta _d} = {{\sqrt {{{x'}^2} + {{y'}^2}} } \mathord{\left/ {\vphantom {{\sqrt {{{x'}^2} + {{y'}^2}} } {f'}}} \right. \kern-\nulldelimiterspace} {f'}}\\ {\theta _d} \to \theta \\ x = {{\tan (\theta )} \mathord{\left/ {\vphantom {{\tan (\theta )} {\sqrt {{{x'}^2} + {{y'}^2}} * x'}}} \right. \kern-\nulldelimiterspace} {\sqrt {{{x'}^2} + {{y'}^2}} * x'}}\\ y = {{\tan (\theta )} \mathord{\left/ {\vphantom {{\tan (\theta )} {\sqrt {{{x'}^2} + {{y'}^2}} * y'}}} \right. \kern-\nulldelimiterspace} {\sqrt {{{x'}^2} + {{y'}^2}} * y'}}\\ u = {f_x} * x + {c_x}\\ v = {f_y} * y + {c_y} \end{array} \right.$$

    其中存在一个从${\theta _d}$计算得到${\theta }$的过程;另$f(\theta ) = \theta + {k_0}{\theta ^3} + {k_1}{\theta ^5} + {k_2}{\theta ^7} + {k_3}{\theta ^9} - {\theta _d}$,问题转换为计算$f(\theta ) = 0}$的解。可以使用二分法进行解的近似求解。

    这里给出实现代码,在原图(601,249)位置手动添加一个红圈,计算其在畸变校正后图像中的坐标,得到的位置为(613,284);在畸变校正后的图像中确认该结果正确。

    void ProjectPointFromOriginToUndistorted(cv::Point2f input, cv::Point2f& output)
    {
    	cv::Matx33d K, P;
    	cv::Vec4d D;
    	float x, y, theta, theta_d, r, x_origin, y_origin;
    	float theta_cal[2], d_theta;
    
    	K(0, 0) = 348.52; K(0, 1) = 0; K(0, 2) = 640.19;
    	K(1, 0) = 0; K(1, 1) = 348.52; K(1, 2) = 358.56;
    	K(2, 0) = 0; K(2, 1) = 0; K(2, 2) = 1;
    
    	D(0) = 0.066258;
    	D(1) = 0.039769;
    	D(2) = -0.026906;
    	D(3) = 0.003342;
    
    	P = K;
    	P(0, 0) /= 1.5;
    	P(1, 1) /= 1.5;// 一般另P=K,这里减小了小孔成像模型中的f,得到的畸变校正后的图像视野会扩大
    
    	x_origin = input.x - K(0, 2);
    	y_origin = input.y - K(1, 2);
    	theta_d = sqrt(x_origin*x_origin + y_origin*y_origin)
    		/ K(0, 0);
    	theta_cal[0] = 0;
    	theta_cal[1] = CV_PI / 2;
    	d_theta = fabs(theta_cal[1] - theta_cal[0]);
    	while (d_theta > 0.01)
    	{
    		float val[3];
    		float middle_theta_cal = 0.5 * (theta_cal[1] + theta_cal[0]);
    
    		val[0] = theta_cal[0] + D(0)*pow(theta_cal[0], 3)
    			+ D(1)*pow(theta_cal[0], 5) + D(2)*pow(theta_cal[0], 7)
    			+ D(3)*pow(theta_cal[0], 9) - theta_d;
    
    		val[1] = theta_cal[1] + D(0)*pow(theta_cal[1], 3)
    			+ D(1)*pow(theta_cal[1], 5) + D(2)*pow(theta_cal[1], 7)
    			+ D(3)*pow(theta_cal[1], 9) - theta_d;
    
    		val[2] = middle_theta_cal + D(0)*pow(middle_theta_cal, 3)
    			+ D(1)*pow(middle_theta_cal, 5) + D(2)*pow(middle_theta_cal, 7)
    			+ D(3)*pow(middle_theta_cal, 9) - theta_d;
    
    		if (fabs(val[2]) < 1e-6)
    		{
    			break;
    		}
    		if (val[0] * val[2] > 0)
    		{
    			theta_cal[0] = middle_theta_cal;
    		}
    		else
    		{
    			theta_cal[1] = middle_theta_cal;
    		}
    		d_theta = theta_cal[1] - theta_cal[0];
    	}
    
    	theta = 0.5 * (theta_cal[1] + theta_cal[0]);
    	x = tan(theta) / sqrt(x_origin*x_origin + y_origin*y_origin) * x_origin;
    	y = tan(theta) / sqrt(x_origin*x_origin + y_origin*y_origin) * y_origin;
    	output.x = x*P(0, 0) + P(0, 2);
    	output.y = y*P(1, 1) + P(1, 2);
    }

     

    展开全文
  • 下图表示出了鱼眼相机的一般组成结构。最前面的两个镜头发生折射,使入射角减小,其余的镜头相当于一个成像镜头,这种多元件的构造结构使对鱼眼相机的折射关系的分析变得相当复杂。本文的研究对鱼眼镜头的成像模型...

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    参考文献

    [1] sylvester0510.鱼眼相机成像模型[EB/OL]. https://blog.csdn.net/u010128736/article/details/52864024[2016-10-19]
    [2] 刘海毅. 鱼眼镜头的发展概况及应用[EB/OL]. https://wenku.baidu.com/view/6c72174cbed5b9f3f90f1cb1.html[2014-05-17]
    [3] 李崇辉,杜兰,韩建等.圆形目标的鱼眼相机成像模型推导[J].河南科学, 2013, 31(7): 975-979.
    [4] Kannala J, Brandt S S. A generic camera model and calibration method for conventional,wide-angle,and fish-eye lenses[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2006, 28(8): 1335-1340.
    [5] 曹丽业. 基于鱼眼镜头的全方位视觉系统参数标定方法研究[D]. 天津理工大学, 2012.
    [6] 宋涛. 基于鱼眼镜头的立体视觉系统研究[D]. 燕山大学, 2017.
    [7] 刘亿静,苗长云,杨彦利. 基于经纬映射的径向畸变快速校正算法的研究[J]. 激光杂志, 2015,36(1):1-4.
    [8] 汪丹,刘辉,李可.一种不断重定位圆心的鱼眼图像校正方法[J]. 电脑与信息技术, 2016, 24(2):30-33.
    [9] Mundhenk T N, Rivett M J, Liao X Q,et al. Techniques for fisheye lens calibration using a minimal number of measurements. In: Proceedings of SPIE, 2000, 4197: 181-190.
    [10] 林小竹. 关于鱼眼镜头展图开的一些研究[EB/OL]. https://blog.csdn.net/u010607947/article/details/77163243?tdsourcetag=s_pctim_aiomsg[2017-08-14]
    [11] EasyPano.Panorama stitching software.[EB/OL]. http://ww
    w.easypano.com/panorama-stitching-software.html
    [12] 王琳. 鱼眼相机成像、校准和拼接(笔记)[EB/OL]. http://blog.sciencenet.cn/blog-465130-1052526.html [2017-05-02]
    [13] Wikipedia.Mercator projection[EB/OL]. https://en.wikipe- dia.org /wiki/Mercator_projection[2020-01-07]
    [14] 汪丹,刘辉,李可.一种不断重定位圆心的鱼眼图像校正方法[J].电脑与信息技术,2016,24(02):30-33.

    展开全文
  • 之前的学习中已经完成了基于鱼眼相机内参进行图像畸变校正,和相机坐标系与像素坐标系之间的转换。这一次将引入相机外参,进行外参的标定计算和基于外参+内参的鱼眼相机透视变换。 1.相机外参的定义 世界坐标系...
  • 本文作者是计算机视觉life公众号成员蔡量力,由于格式问题部分内容显示可能有问题,更好的阅读体验,请查看原文链接:代码解读 | VINS_Mono中的鱼眼相机模型 VINS_Mono中的鱼眼相机模型 VINS_Mono代码支持的相机包括...
  • 本文分为两部分,一部分是介绍鱼眼相机畸变校正的原理,一部分是手撕OpenCV相机矫正代码。 文章主要结构如下图所示: 介绍鱼眼相机的原理 什么是鱼眼相机 相机内参标定 相机内外参标定 畸变矫正 径向畸变 枕型畸变 ...
  • 最近在弄鱼眼相机,找了一些方法对鱼眼相机进行畸变矫正,主要有:固定内外径法 ,径向展开法,改良版双经度法,经纬映射法,opencv法 这几种方法都可以点击下载,希望能帮助到各位(这些代码大多也是楼主自己收集的...
  • 原地址:OpenCV实现鱼眼图像径向展开 #include &lt;iostream&gt; #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgcodecs/...
  • 鱼眼相机标定校正+批量加载多张标定图像+批量处理多张测试图像+角点坐标输出+相机参数输出
  • 鱼眼图像拼接

    2020-01-06 23:11:55
    大家都知道VR,能够看到360度全景图像,即每帧图像记录了360度的景色。而工业界是怎样拍摄这样的图像的呢?目前博主了解的主要有两种做法: A.使用多个正常摄像头,每个摄像头拍摄固定角度的图像,然后再拼接,博主2年前曾...
  • 图像鱼眼,去畸变

    2019-05-31 09:48:52
    使用opencv对图像进行去畸变: 1,先拍一组带有格子的图片,如下图 使用一下代码对图像进行标定和畸变参数计算: #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/...
  • 一、成像原理 ...最前面的两个镜头发生折射,使入射角减小,其余的镜头相当于一个成像镜头,这种多元件的构造结构使对鱼眼相机的折射关系的分析变得相当复杂。 研究表明鱼眼相机成像时遵循的模型可以...
  • 鱼眼镜头相比传统的镜头,视角更广,采集的图像信息更加丰富,但是如果要对图像进行处理,就需要对其进行展开的操作,理论部分在很多论文中都已经有所提及,已经有比较成熟的方案,也不是什么比较新鲜的事情,笔者在...
  • 鱼眼镜头拍摄的图像还是挺好玩的,当时做这个特效时,下载了很多应用一一体验,但是发现苹果应用商店或者安卓应用市场上很多鱼眼镜头相关应用,很多都是按照图像变形做的,与真正鱼眼镜头拍摄的效果相差较远。
  • 鱼眼图像畸变校正_V

    2017-12-03 16:48:39
    鱼眼图像即便校正这个专题已经写到了第5版了,本次博客需要探讨的是关于在鱼眼图像畸变校正中的畸变半径的确定问题。同时结束鱼眼图像畸变校正的专题,在此做一个总结。并给出具体的解决方案。 鱼眼图像畸变半径的...
  • 鱼眼全景图像拼接

    2020-01-06 11:23:48
    大家都知道VR,能够看到360度全景图像,即每帧图像记录了360度的景色。而工业界是怎样拍摄这样的图像的呢?目前博主了解的主要有两种做法: A.使用多个正常摄像头,每个摄像头拍摄固定角度的图像,然后再拼接,博主2年前曾...
  • 利用opencv棋盘格标定法对鱼眼图像校正分析 一、开发环境 PC端、vs2013+opencv3.0、摄像头为淘宝购置的鱼眼摄像头外设+iphone6 二、镜头标定 1. 输入畸变的棋盘格图以及棋盘格的size(横纵坐标上的角点个数...
  • 理论是根据《应用经纬映射的鱼眼图像校正设计方法》作者由畸变鱼眼图上像素点(i,j)得到了经纬度坐标  然后我根据这个编出来效果不对 出来是个全黑屏的figure 然后我又看了另几篇关于经纬度校正的论文 将得到的...
  • 鱼眼镜头校正和普通相机校正,在matlab工具箱中有所区别 一 工具箱操作 二 用标定结果参数 校正其他图像用 用undistortFisheyeImage函数 %利用matlab工具箱标定鱼眼之后,导出标定参数到工作区,然后...
1 2 3 4 5 ... 20
收藏数 1,001
精华内容 400
关键字:

鱼眼相机图像处理