一、鱼眼图像

1 鱼眼图像研究
随着信号处理和图像处理技术的发展,基于鱼眼全景监控摄像头的视觉处理技术得到快速发展,中国已于2013年底发射“嫦娥三号”,搭载的“玉兔号”月球车所配备的就是全景摄像头,拍摄的全景图和展开图如图1所示。另外,鱼眼镜头还广泛应用于全景安全监控、地铁走廊监控等长距离和大场地空间,相较一般的摄像头,其视场角接近于180°甚至超过180°,所以相比普通镜头,鱼眼镜头能够拍摄到更大场景画面,获取到更多的空间信息。为了捕获更多的信息,目前高清鱼眼镜头也得到了广泛应用,它所获得的图像对校正有着更高的要求,图2是1 080p高清鱼眼镜头所拍摄的鱼眼图像, 分辨率达到1 920×1 280,单帧图像像素点数目高达250万。 当镜头的视场角由几十度提高到180°时,图像将产生严重畸变[,所以对校正的时间复杂度和计算量有很大的挑战。

针对鱼眼大广角畸变图像的校正研究,目前也已经相当成熟,鱼眼图像校正的关键在于准确提取出鱼眼图像的有效区域, 同时确定出有效区域的中心和半径。本文主要研究针对高清鱼眼镜头的实时视频监控,提出的算法可以在不降低提取精度的图1玉兔号拍摄的全景图及校正图同时,显著降低鱼眼图像有效区域提取的时间复杂度和计算量, 将以往算法[2,3,4,5,6]的200万计算量降低到万量级以下。

2 鱼眼图像校正原理
针对鱼眼图像校正模型的研究,主要有基于经度坐标的校正模型、等距投影校正模型、球面透视投影模型和基于内容的校正模型,但是对于超过180°的超大广角鱼眼镜头,一般目前应用最多的是球面透视投影模型,文献[2]提出一种透视投影模型,空间点到鱼眼图像点的坐标变换不是简单的线性转换,且给出如下流程[2]:第一步,建立空间点P与球面中心圆点的关系,即向量OP;第二步,通过向量OP得到空间点P与球面模型映射点的关系;第三步,通过模型计算得到球面点与投影点的关系。

如图3所示,球面上的点与投影点保持一一映射的关系, 这种投影关系可以由m=D§来表示;反之,为了逆向得到校正输出点,通过p=D-1(m)即可得到,通过这种映射关系,就可以实现对畸变图像的校正。


图3 鱼眼校正模型

3 鱼眼图像的有效区域提取
3.1 算法原理

根据鱼眼图像的特征,相比较黑色像素部分,有效区域基本占据了整幅鱼眼图像的大部分区域,目前对于鱼眼畸变图像的有效提取主要有4种算法:最小二乘拟合算法[3]、面积统计算法[4]、区域生长算法[5]和逐行逐列扫描线[6]算法。其中最小二乘拟合算法和面积统计算法由于是对整幅鱼眼畸变图像的所有像素点进行扫描判断,因此其时间复杂度和空间复杂度都要比逐行逐列扫描线算法要高,故在实际应用中, 应用最广的也是算法最成熟的是逐行逐列扫描线算法。当对高清图像进行处理时,单帧像素点数目高达250万,即使是应用最多的逐行逐列扫描线算法,有效计算量一般也在百万次以上,计算量相当大。为了减少计算量和复杂度,本文提出的算法思路是首先划定一特定水平分割线,由此寻找最接近边界线的范围区域,减少不必要像素点的检测,然后再在此区域内精确寻找有效区域边界线。

3.2 算法具体实现过程
鱼眼图像有效区域的左右边界线的确定流程如图4所示。

图4 有效区域左右边界线提取流程

步骤1:首先在鱼眼图像的水平中间线上进行边界点的扫描,如图5所示。P1P2所在直线为水平分割线,其位置是鱼眼图像高度的1/2,先如向右箭头方向扫描。

图5 分割线扫描算法
步骤2:由式(1)计算出当前点的像素亮度值
I=0.59R+0.11G+0.3B(1)
将该点像素亮度值I与下一点的像素亮度值Incxt进行比较,由式(2)判断其差值是否满足条件

式中:T为预设阈值,如果当前点满足上述条件,则将该点设为临时边界点,在图5中标为P1点;如果不满足上述条件,则继续下一点的比较。同理,如向左箭头方向扫描,计算该点像素亮度值是否满足式(2),如果满足条件,则将该点设为临时右边界点,图中标为P2点;如果不满足上述条件,则继续下一点的比较。其中P1和P2点并不一定恰好是鱼眼图像有效区域的边缘,这是由于鱼眼图像中可能存在的黑色像素导致的,如果鱼眼图像中边缘有黑色物体,单纯地由水平分割线上的点的关系无法实现准确的有效区域边缘识别,所以进行如下计算。

步骤3:以P1点为起点,作P1P2线的垂线段,此垂线段的高度为鱼眼图像高度的1/2,如图2所示的鱼眼图像,鱼眼图像的有效区域基本位于整幅鱼眼图像的中间位置,因此为减少不必要的计算量,垂线段的高度为鱼眼图像的1/2即可达到提取目标,这也通过实验证实了其可行性,然后向鱼眼图像边缘方向移动,由式(1)计算此垂线段上的每个点的像素亮度值,并由式(3)求得最大亮度值与最小亮度值之差,即极限亮度值之差

式中:Δ 为极限亮度值之差。再由式(4)判断极限亮度值之差是否满足条件

式中:Δnext为下一个扫描线段的极限亮度值之差。

如果满足上述条件,则将下一点所在的纵向直线设为鱼眼图像有效区域的左边界线;如果不满足上述条件,则继续下一点所在垂线上的极限亮度值之差的比较。

步骤4:与步骤3原理相同,以P2点为起点,作P1P2线的垂线段,此垂线段的高度为鱼眼图像高度的1/2,并向鱼眼图像边缘方向移动,计算此垂线上所有点的极限亮度值之差是否满足式(4),如果满足此条件,则将下一点所在的纵向直线设为鱼眼图像有效区域的右边界线;如果不满足,则继续下一点所在垂线上的极限亮度值之差的比较。

鱼眼图像有效区域的上下边界线的提取流程如图6所示。

步骤5:确定出鱼眼图像有效区域的左右边界线之后,以P1P2的中点作P1P2的垂线Q1Q2,从此垂线交于鱼眼图像的上边缘点开始向内移动,如图5所示,由式(1)计算当前点的像素亮度值,并判断是否与下一点的亮度值之差满足式(2),如果满足此条件,则将下一点设为临时上边界点,在图中标为Q1点;如果不满足上述条件,则继续下一点像素亮度值的比较。同理,从此垂线交于鱼眼图像的下边缘点开始向内移动,由式(1)计算当前点的像素亮度值与前一点的亮度值之差是否满足式(2),如果满足此条件,则将下一点设为临时下边界点,在图中标为Q2点;如果不满足上述条件,则继续下一点像素亮度值的比较。其中Q1和Q2点并不一定恰好是鱼眼图像有效区域的边缘,这与P1和P2点也不恰好是边缘点的原因一样,这都是由鱼眼图像中可能存在的黑色像素导致的。

图6 有效区域上下边界线提取过程

步骤6:同样为了减小鱼眼图像有效区域中的黑色像素带来的检测误差,对上下边界线的确定进行如下处理,以临时上边界点Q1为起点,作Q1Q2的垂线段,此垂线段的长度为鱼眼图像宽度的1/2,并向鱼眼图像的边缘移动,由式(3)求得此垂线段上的最大亮度值与最小亮度值之差,即极限亮度值之差,然后判断极限亮度值之差是否满足式(4),如果满足此条件,则将下一点所在的水平直线设为鱼眼图像有效区域的上边界线;如果不满足此条件,则继续下一点所在垂线上的极限亮度值之差的比较。

步骤7:同步骤6原理相同,以临时下边界点Q2为起点, 作Q1Q2的垂线段,此垂线段的长度为鱼眼图像宽度的1/2,并向鱼眼图像的边缘移动,判断极限亮度值之差是否满足式(4),如果满足此条件,则将下一点所在的水平直线设为鱼眼图像有效区域的下边界线;如果不满足上述条件,则继续下一点所在垂线上的极限亮度值之差的比较。

3.3 有效区域中心与半径的确定
如果鱼眼图像有效区域为标准圆形,其圆心坐标和半径即可简单表示为

式中:xL,xR,yT和yB分别为有效区域左分界线横坐标、右边界线横坐标、上分界线纵坐标和下分界线纵坐标;x ,y和R分别为所求鱼眼图像的中心坐标和半径;Rm为有效区域水平半径;Rn为有效区域竖直半径。如果Rm= Rn,则有效区域为非标准圆形,则必有Rm≠Rn,由于本算法是基于水平分割线和竖直分割线进行的边界确定,因此为了能够更加准确地获取到鱼眼图像有效区域的中心和半径。本文将对原鱼眼图像进行一特定θ角度的旋转[7],基于不同的水平分割线和竖直分割线进行中心点坐标和半径大小的提取,然后将每次得到的一组半径Ri和中心坐标 (xi,yi)求取算术平均值

二、部分源代码

clear all;
clc;
global threshold;
threshold=30;
m=imread(‘fisheye.jpg’);
%figure(‘king’);
figure(‘NumberTitle’, ‘off’, ‘Name’, ‘原始图片’);
imshow(m);
r=m(:,:,1);
g=m(:,:,2);
b=m(:,:,3);
r1=r;
g1=g;
b1=b;
[x,y,z]=size(m);
flag=0;
l(8)=[0];
%上边界___________________
for i=1:x
for j=1:y
if flag==0
t1=0.59r(i,j)+0.11g(i,j)+0.3b(i,j);
if t1>threshold
t2=0.59
r(i+1,j)+0.11g(i+1,j)+0.3b(i+1,j);
if t2>threshold
disp(‘hello world!:上边界’);
l(1)=i;
l(2)=j;
r(i,:) = 255;
g(i,:) = 0;
b(i,:) = 0;
flag=1;
end
end
end
end

三、运行结果



四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 程德强,刘洋,柳雪,赵国,张佳琳.分割线扫描鱼眼图像有效区域提取算法[J].电视技术. 2015,39(06)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

【图像提取】基于matlab鱼眼图像有效区域提取【含Matlab源码 2186期】相关推荐

  1. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  2. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  3. 【Matlab语音隐写】DCT+DWT音频数字水印嵌入提取【含GUI源码 836期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DCT+DWT音频数字水印嵌入提取[含GUI源码 836期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  4. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  5. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  6. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  7. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  8. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  9. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  10. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

最新文章

  1. 嵌入式Web服务器移植
  2. w3wp进程发生死锁ISAPI aspnet
  3. ALEIDoc EDI(4)--change point02
  4. Apache 与tomcat实现分布式应用部署
  5. 7.1.2 定义改进的Sales_date类
  6. SAP UI5应用访问OData metadata的url和Destination
  7. Java命令行界面(第22部分):argparser
  8. java通过POI技术将html转成word
  9. 随机抽样java_实现随机抽样【随机数生成问题】
  10. Retrofit2 的简单使用
  11. java返回链表的中间结点_876. 链表的中间结点
  12. 微服务——最热门的架构
  13. PHP5.3版本安装
  14. MYSQL查询语句大全集锦
  15. VCPU shutdown request
  16. tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复的一种方法
  17. Laraval-admin 自定义form组件
  18. chuangkouguanyuwangyeyuan
  19. 手机显示主服务器连接异常怎么办,手机主服务器连接配置异常
  20. 计算机更新时按了关机6,电脑关机后在安装更新怎么办

热门文章

  1. 如何自建微信外卖平台_打造微信外卖平台,就是这么简单!
  2. 520如何用Python向心爱的女孩表白呢?
  3. robotframework:log日志输出现中文乱码如xC4xE3
  4. 1、小兔鲜icon图标制作
  5. 【算法设计zxd】第2章 主定理
  6. 如何使VMware虚拟机下的虚拟机可以相互连接又可以访问外网
  7. CET4汉译英part
  8. excel将一个工作表根据条件拆分成多个工作表
  9. Java程序设计 北京大学 Week3互评作业
  10. 从那些高调注销人人又回来的货们,来分析一下微博和人人的区别……