舒旭

摘 要: 针对鱼眼图像的校正提出了一种有效区域提取算法,并在鱼眼图像的球面物投影平面展开时与目标半立方体的校正平面建立线性映射。实验结果表明,该算法能有效地提取鱼眼图像轮廓的有效区域,同时半立方体校正平面极大地减少了校正图像需插值的像素点数量,提高了校正速度。

关键词: 鱼眼图像; 等距投影; 畸变校正; 轮廓提取

中图分类号:TP751 文献标志码:A 文章编号:1006-8228(2017)06-51-04

A simple and accurate fisheye image correction algorithm

Shu Xu

(XiangNan Preschool Education College, Chenzhou, Hunan 423000, China)

Abstract: This paper presents an effective region extraction algorithm for fish eye image correction, and establishes a linear mapping between semi-spherical surface projection plane and semi-cube projection plane in the process of fisheye image correction. The experimental results show that the algorithm can effectively extract the effective contour region of the fish eye image, and at the same time, the semi-cube correction plane can greatly reduce the number of pixels that need to be interpolated, which improve the correction speed.

Key words: fisheye image; equidistant projection; distortion correction; contour extraction

0 引言

人们对“看的更广”的要求日益提高,低成本的、具有广角或鱼眼镜头的大视场摄像系统备受市场青睐。然而采用大视场摄像系统采集信息时,因镜头成像面大小固定,采集过程中为获得更多的拍摄信息使得采集的图像变形较严重,所以必须对畸变的图像进行校正以适合人眼观看。

目前,具有代表性的鱼眼图像校正算法有以下几类:经纬映射法、多项式坐标变换法、球面透视投影约束法。杨玲和成运使用经纬映射来校正鱼眼图像[1]。该算法认为鱼眼图像中扭曲的场景可以用地球仪经度线来表示,利用同一经度上的像素点在校正后的图像中应具有相同纵坐标的特点,把经纬度网格点上的像素值映射到校正平面上与之对应的位置。这种直接根据比例建立相应投影关系来实现图像校正的算法虽较容易实现,但校正后的图像存在一定的失真,校正图像质量有待提高。廖士中和高培焕等提出的多项式坐标变换算法[2]是根据鱼眼图像的像素点位置通过最小二乘发拟合误差平方最小以计算校正后图像对应点,该方法对于鱼眼镜头产生的径向畸变非线性失真,实验证明往往需要使用5阶二元多项式,需要N个控制点,计算量非常巨大,很难应用于实际操作应用中。英向华和胡占义提出的球面透视投影约束校正算法[3]思想是在球面成像投影模型下,利用空间直线的球面透视投影为大圆这一约束来恢复鱼眼变形校正,该算法在选取理想的采样点后效果较好,但建立目标函数时,为权衡精度和速度同样需要计算5阶二元多项式,且采样点的合理选取也是一个很难把握的地方,因该算法不能自适应自动选取采样点,所有采样点需手动选取,选取的结果直接关系到目标函数的拟合计算次数和图像校正的效果,不具有普遍性。

通过以上分析,本文旨在寻求一种不需要对鱼眼镜头进行参数标定,算法结构简单易于实现、具有较大的普适性,且校正效果较好的畸变图像校正算法。提出以等距投影相关理论为基础,在精确提取鱼眼图像轮廓的前提下,运用球面等距投影校正算法能够兼顾算法速度和图像校正效果。

1 鱼眼图像轮廓的提取及圆心的确定

目前,提取鱼眼图像轮廓的常用算法有两种。

第一种是面积统计法,该算法的原理是事先确定一个阈值T,求出图像中像素值大于阈值的像素点个数和sum,并同時统计出像素值大于或等于阈值T的横坐标和∑X、纵坐标和∑Y。计算圆心(x0,y0)和半径R的公式如下:

该算法的缺点是只适应于鱼眼图像圆形区域内像素值较小的像素点个数少的情况,当圆形区域内有较多黑像素点时,该算法提取出来的图像轮廓误差较大。

第二种是逐行逐列扫描法[4-5]。该算法的原理是首先确定一个阈值T,分别从四周开始向中心逐行逐列扫描。如果逐行扫描时存在像素点的亮度值大于阈值T,则该像素点的横坐标为有效图像区域的边界,同理确定出纵坐标边界。该算法的缺点是只适应于图像圆形有效区域的亮度值远大于圆形区域之外的情况,如圆形区域外存在一些亮度值较大的噪声干扰点,则该算法提取的图像轮廓误差较大。

基于以上分析,本文进行了一些改进。提出一种自适应扫描线逼近法,具体算法步骤如下。

⑴ 为突出边缘信息,将采集的鱼眼图像做锐化处理,并计算出平均阈值T。

⑵ 将锐化后的图像从上到下按水平方向扫描,如果像素点(i,j)值小于T,则继续扫描。

⑶ 如果像素点(i,j)的值大于或等于阈值T,则判断以改点为中心的3×3领域内其他像素点的值是否存在全为零的情况。

⑷ 如果存在,则改点为干扰点,故继续扫描;否则y=j为图像的上水平切线top。

⑸ 同理,重复步骤⑵至步骤⑷,分别确定图像的下水平切线bottom,以及左垂直切线left、右垂直切线right。

⑹ 计算半径R和圆心坐标(x0,y0)。

2 球面等距投影校正及展开模型

球面等距投影[6-8]是一种非线性投影,其描述的是球面物与平面像的映射关系。其投影原理是,球面物上的像素点如果具有相同的视场角,那么其在平面像上对应相等的径向距离r'。即用公式表示为:

设XOY平面为鱼眼图像的成像平面,那么将该像平面上的每一个像素点P1校正为空间上的点P3需分成三步:第一步,首先将像平面点非线性的逆投影到球面上,而这一过程必须满足等距投影逆变化的约束;第二步,每一个球面点P2被映射为连接P2与球心O的射线OP2;第三步,将射线OP2线性的映射到校正平面上。

具体算法步骤如下。

⑴ 计算鱼眼图像上的点到图像圆心的距离。设点P1为鱼眼图像的像素点,其坐标为P1=(x,y),求出点P1到圆心的距离r并归一化。

⑵ 计算球平面任一点P2的方位角和仰角。根据等距投影成像原理,那么等距投影校正模型就是其成像原理的逆推过程。

P2为鱼眼像平面的点P1映射到半球面上的点,其坐标用表示(θ为方位角,为俯仰角),其计算公式如下:

⑶ 将球面上的任意像素点,线性地投影到校正平面上。每一个球面上的点P2被映射为连接圆心0与P2的射线OP2交立方体面于点P3,如图1所示。

取Z=1作为校正目标平面时,那么球面上像素点投影到目标平面上点的坐标步骤如下:

首先,计算点P3到目标平面中心的距离 。

其次,计算的坐标。;。

当仰角较大时,较大,特别是近似90?时,趋于∞,即校正目标平面趋于无穷大。为改进这一不足,基于投影物球面建立一个以球心为中心的正切立方体,将球面上的像素点投影到立方体的上、前、后、左、右五个面上,如图2所示。

本文取=45?作为临界点。仰角∈[0,45?]、方位角θ∈[-180?,180?]区间内的球面像素点投影到Z=1的平面上;仰角∈[45?,90?]、方位角θ∈[-180?,180?]区间内的球面像素点分别投影到立方体四周的投影面上。

3 实验结果展示及结论

本文在matlab平台下,采集180?左右格式为.gif的鱼眼图像(如图3所示)后首先提取其有效区域,接着对有效区域做归一化处理,然后通过等距投影逆推原理将有效区域的鱼眼原始图像投影到单位为1的半球面,最后将半球面的像素点一一映射到校正平面上,完成图像校正。图4为提取的鱼眼轮廓图像。图5为采集该图像0?~90?部分并对其校正后的图像,图6为该图像0?~180?的校正展开图像。

从实验结果看,第一,本文提出的扫描算法对鱼眼图像有效区域的提取有较高的抗干擾能力;第二,鱼眼图像0?~90?部分校正效果较好,随着视场的增大,当视场接近180?时,略微出现畸变情况。

相对于多项式鱼眼图像畸变校正算法,本文的算法优势是不需要多项式计算,算法复杂度简单,运行速度快且效果较好,比较适应于在硬件平台转化为工程算法。在接下来的研究中,如果进一步改善图像视觉质量和提高算法在视场接近180?时曲线校正精度是工作重点之一。

参考文献(References):

[1] 杨玲,成运.应用经纬映射的鱼眼图像校正设计方法[J].工程

图学学报,2010.31(6):19-22

[2] 廖士中,高培焕,苏艺,王大鹏.一种光学镜头摄像机图像几何

畸变的修正方法[J].中国图像图形学报,2000.5(7):593-596

[3] 英向华,胡占义.一种基于球面透视投影约束的鱼眼镜头校

正方法[J].计算机学报,2003.26(12):1702-1708

[4] 王大宇,崔汉国,陈军.鱼眼图像轮廓提取及校正研究[J].计算

机工程与设计,2007.28(12):2878-2880

[5] 张军,王志舟,杨正瓴.单幅圆形鱼眼图像校正[J]. 计算机应

用,2015.35(5):1444-1448

[6] 杨秋慧,玉昊昕,李陶深,玉振明.一种大视场镜头的畸变校正

方法[J].计算机应用与软件,2015.32(09):136-140

[7] 孟灵.等距投影的鱼眼图像校正算法设计[J].数字技术与应

用,2016.7(6):125-126

[8] 吴桂平,吴魏,王成,毕昆.基于双线性插值鱼眼图像校正算法[J].

计算机应用与软件,2012.29(2):122-124

鱼眼校正c语言算法,一种简单而精确的鱼眼图像校正算法研究相关推荐

  1. 英文字典设计c语言代码,一种简单的英文词典排版系统

    <一种简单的英文词典排版系统>由会员分享,可在线阅读,更多相关<一种简单的英文词典排版系统(20页珍藏版)>请在人人文库网上搜索. 1.中国地质大学(武汉)C语言课程设计论文学 ...

  2. 字母的加密变换 c语言,有一种简单的对英文字母加密的变换方法是将字母的ASIIC编码自动加5,为了保证变更后的数值仍处于英文字母...

    有一种简单的对英文字母加密的变换方法是将字母的ASIIC编码自动加5,为了保证变更后的数值仍处于英文字母0 有一种简单的对英文字母加密的变换方法是将字母的ASIIC编码自动加5,为了保证变更后的数值仍 ...

  3. 图像算法研究---一种简单的YUV转RGB的优化算法

    YUV与RGB的相互转换一直以来都是非常常用的基础算法,如何才能最高效的转换,成为一个难点问题,尤其是目前视频直播火热的时候,这些算法的优化也越发重要. 今天我结合自己的一些经验,给大家介绍一个简单的 ...

  4. Java 阶乘算法 三种简单实现

    阶乘算法: Java 方法(一) package 第一章; import java.util.Scanner; import java.util.Arrays; public class fact1 ...

  5. C语言实现一种简单的应用服务器内部数据结构的思路(三)

    2019独角兽企业重金招聘Python工程师标准>>> 在上文中实现了最基本key->value的内部接口,也能满足一般的需求了.但这个有一个局限,就是一个key就是对应一个值 ...

  6. c语言自制服务器之间调用文件夹,C语言实现一种简单的应用服务器内部数据结构的思路(三)...

    在上文中实现了最基本key->value的内部接口,也能满足一般的需求了.但这个有一个局限,就是一个key就是对应一个值类型,而平常的应用中,很有可能要保存一组相同的数组,类似数组或者List类 ...

  7. 图像降噪算法——Variance Stabilizing Transform / Generalization Anscombe Transform算法

    图像降噪算法--Variance Stabilizing Transform / Generalization Anscombe Transform算法 图像降噪算法--Variance Stabil ...

  8. 【图像配准】基于互信息的图像配准算法:MI、EMI、ECC算法

    简介:         基于互信息的图像配准算法以其较高的配准精度和广泛的适用性而成为图像配准领域研究的热点之一,而基于互信息的医学图像配准方法被认为是最好的配准方法之一.基于此,本文将介绍简单的基于 ...

  9. 图像降噪算法——低秩聚类:WNNM算法

    图像降噪算法--低秩聚类:WNNM算法 图像降噪算法--低秩聚类:WNNM算法 1. 基本原理 2. matlab代码 3. 结论 图像降噪算法--低秩聚类:WNNM算法 同样是为了完善自己知识版图的 ...

最新文章

  1. Meson:支持Netflix的机器学习工作流
  2. redis 数据操作命令汇总(string hash list set zset)
  3. python协程编程实例_Python异步编程之协程任务的调度操作实例分析
  4. boost::python::detail::result相关的测试程序
  5. OpenGL RGTC Compressor压缩实例
  6. sockaddr_in中sin_zero的意义,以及sockaddr_in sockaddr in_addr区别联系
  7. 【熊猫多模式站群开发日志】流程总览
  8. Jeff Dean谈2020年机器学习趋势:多任务和多模态会有大进展
  9. Codechef August Challenge 2018 : Coordinate Compression
  10. AD采样的平均值滤波
  11. linux中的TC(TrafficControl)详细说明
  12. 《统计学习方法》—— 感知机对偶算法、推导以及python3代码实现(二)
  13. Docker安装vi命令
  14. 芯片架构分类 - CISC 和 RISC
  15. box-sizing:boder-box原理
  16. 寓教于乐:12个学习编程的游戏化平台
  17. Linux的iio数据流程,Linux 工业输入输出IIO子系统框架.doc
  18. 抢占式实例在小博无线的应用
  19. Sniper模拟器的安装
  20. SQL Developer | MySQL

热门文章

  1. 一个淘宝店主真实的开店经历
  2. 8、Oracle:group by用法
  3. 世界上最神奇的数字 算法求解
  4. 安卓巴士Android开发者门户
  5. ITUNE清理“其他”的内容
  6. 西安80坐标系转换工具
  7. 「 神器 」绝不简单的截图神器
  8. 吉林教育杂志吉林教育杂志社吉林教育编辑部2022年第28期目录
  9. 温度场有限容积法程序入门之六:后处理.花絮.Contour Plotter and 3D Function Grapher Together - the Applet and the Souce Co
  10. 工信部发布《移动互联网应用程序个人信息保护管理暂行规定(征求意见稿)》