220
2007, 43( 6)
Computer Engineering and Applications 计算机工程与应用
鱼眼照片生成全景图算法的研究与实现
程菊明 1, 刘连芳 2, 3, 陈 山 3
CHENG Ju- ming1, LIU Lian- fang2, 3, CHEN Shan3
1.许昌学院 计算机科学技术学院, 河南 许昌 461000
2.广西大学 计算机与电子信息学院, 南宁 530004
3.南宁平方软件公司, 南宁 530004
1.Dept. of Computer Science&Technology, College of Xuchang, Xuchang, Henan 461000, China
2.College of Computer&Electronics, Guangxi University, Nanning 530004, China
3.Company of Nanning Pingsoft, Nanning 530004, China
E- mail: juming@zy165.com
CHENG J u - ming, LIU Lian - fang, CHEN Shan.Resear ch and pr actice of fisheye- photo’s distor tion cor r ection .Computer
Engineer ing and Applications, 2007, 43( 6) : 220- 222.
Abstr act: First we compare the differences of two algorithms about distortion of fisheye - photo, then, in order
fisheye- photo’s distorted photos, we improve the similar- curve based algorithm.At
seams of the mosaiced- photo.
Key wor ds:
fisheye photo; sphere- anchor; longitude and latitude projection; image stitching
to mosaic the
the last, we give the methods of eliminate the
摘 要: 首先比较了校正鱼眼图片的两种算法所得结果的差异, 然后针对鱼眼展开图的拼接过程将基于特征曲线匹配算法加以改
进, 并在最后提出消除接缝的方法, 实验得到了较理想的结果。
关键词: 鱼眼照片; 球面定标; 经纬映射; 图像拼接
文章编号: 1002- 8331( 2007) 06- 0220- 03 文献标识码: A 中图分类号: TP391
1 引言
全 景 拼 图( Panorama Mosaic) 是 一 种 应 用 较 广 的 基 于 图 像
的绘制技术( Image Based Rendering) 。在虚拟现实领域中, 利
用全景图像表示实景可代替复杂的 3D 场景建模和绘制。通常
有三种全景 模 式: 圆 柱 形 全 景 模 式, 球 形 全 景 模 式 和 立 方 体 全
景模式。
柱面全景模式是讨论最多也是相对较成熟的技术, 但是在
这种投影模式下, 只能环顾四周, 不能向上或向下进行查看。采
用立方 体 全 景 模 式 和 球 形 全 景 模 式 可 以 得 到 更 多 的 观 察 自 由
度。但是对于立方体全景模式, 进行映射时需要对立方体的 6
个面分别映 射, 而 且 获 取 照 片 相 对 困 难, 另 外 在 映 射 时 不 仅 有
水平方 向 上 的 对 齐, 还 要 有 上 下 方 向 的 照 片 同 四 周 照 片 的 对
齐, 所以拼接起来也相对较困难。
目 前 还 有 一 种 方 法 是 采 用 视 角 为 183°的 鱼 眼 镜 头 拍 摄 ,
这样只需两张鱼眼照片就可以获取整个场景的信息, 将这两张
照片处理后投射在球体或立方体上, 就可以得到在任意角度观
察的效果。这种方法用户使用起来简便快捷, 所以也是目前采
用较多 的 方 法 。 对 于 这 种 方 法 需 要 解 决 的 问 题 主 要 有 3 个 方
面: 首先需 要 将 得 到 的 鱼 眼 照 片 进 行 校 正 得 到 展 开 图; 其 次 要
对展开图进行拼接; 最后要对拼接的结果进行平滑处理。
下面第二部分比较两种鱼眼图片展开的算法, 第三部分讨
论鱼眼展开图的拼接的方法, 第四部分讲述了本文对拼接得到
的全景图进行平滑的方法。
2 鱼眼图片的展开方法
鱼 眼 照 片 是 一 张 圆 形 图 ( 如 图 1) , 不 能 直 接 用 于 拼 接 , 需
要 将 其 展 开 成 方 形 图 才 能 拼 接 在 一 起 。 所 以 首 先 需 要 将 其 展
开, 采用下面方法完成。
2.1 提取鱼眼圆形图
在将鱼眼图片展开为方形图之前, 首先需要提取出相应的
鱼眼图片轮廓, 采用判断灰度值跳变的方法完成。由于鱼眼照
片除掉中间的圆形以外其余部分都是黑色的, 所以可以采用下
面的步骤实现:
( 1) 在垂直方向上, 先从上至下扫描整幅鱼眼照片, 在每次
的扫描循环中记录发生第一次有灰度值跳变的点的坐标值, 记
录为圆 形 图 的 起 始 位 置, 得 到 一 组 数 据, 取 这 一 组 数 据 的 中 点
作为圆形图的最上面一点 T;
( 2) 从反向以与步骤( 1) 相同的方法进行扫描, 同样得到一
组点, 取中点作为圆形图的最下端一点 B;
( 3) 在 水 平 方 向 上 重 复 步 骤( 1) 和( 2) , 分 别 记 录 为 圆 形 图
基金项目: 广西科技厅科技攻关项目( No.0424009- 1) 。
作者简介: 程菊明( 1975- ) , 女, 讲师, 主要研究方向为虚拟现实技术; 刘连芳( 1946- ) , 女, 研究员, 主要从事数据库、中文信息搜索 、虚 拟 现 实 等 方
面的理论和应用技术研究; 陈山( 1979- ) , 男, 主要从事计算机应用技术研究与开发。
程菊明, 刘连芳, 陈 山: 鱼眼照片生成全景图算法的研究与实现
2007, 43( 6)
221
的最左一点 L 和最右一点 R;
( 4) 分 别 计 算 直 线 LR 和 TB 的 长 度 , 如 果 两 者 不 等 , 则 按
照它们的比值将原图进行压缩或拉伸, 使得圆形图变为标准的
圆形;
( 5) 将 标 准 的 圆 形 鱼 眼 图 像 按 照 第( 4) 步 得 到 的 直 径 和 圆
心把轮廓勾勒出来, 如图 1 所示。
2.2 校正算法
得到 标 准 圆 形 鱼 眼 图 后, 对 其 校 正 主 要 有 两 种 算 法, 一 种
是用球面坐标定位法, 另一种是经纬映射法[3]。
( 1) 球面坐标定位法[1, 4]。
这 种 方 法 是 将 球 面 上 具 有 相 同 纬 度 的 点 映 射 为 相 同 的 垂
直直线, 原理如图 2 所示。图中的 k 点和 h 点映射到平面上位
于水平坐标为 χh 的垂直直线上。
( 2) 经纬映射法[2, 3]。
假设在球面上的任意一点 P, 它的经度映射为矩形的水平
坐标, 纬度 映 射 为 矩 形 的 垂 直 坐 标, 这 样 整 个 球 面 映 射 得 到 的
平 面 图 是 一 张 2: 1 的 矩 形 图 , 半 球 面 就 是 一 张 方 形 图 , 如 图 3
所示。经纬映射法的步骤如下:
x=f θcos #
y=f θsin!
#
x′=f β
!
y′=f( π/2- a
sin θ=sin α×sin β
)
#
%
%
%
%
$
%
%
%
%
&
( 1)
( 2)
( 3)
①首先根据鱼眼的等距成像模型[5]计算鱼眼图片上任意一
点 ( x, y) 在 单 位 球 面 上 的 坐 标 , 它 们 的 关 系 如 式 ( 1) , 其 中 f 为
焦距, 在实践中取单位球半径作为 f 值, θ和 # 为球面坐标;
"
( sin α) 2 ( sin β) 2 +( cos α) 2
sin ’=( sin α×sin β) /
cos ’=cos α/
②建 立 经 纬 映 射 图 上 的 坐 标 点 P( x′, y′) 和 它 在 球 面 上 对
应的球面坐标。可以用关系式( 2) 来计算, 其中 f 与式( 1) 相同,
α和 β为 P 对应的球面坐标;
( sin α) 2 ( sin β) 2 +( cos α) 2
"
③最 后 以 球 面 坐 标 为 中 介 建 立 起 鱼 眼 照 片 和 经 纬 映 射 图
之间的关系。采用式( 3) 将( θ, ’) 和( α, β) 进行相互转换。它们
的关系如图 4 所示。
经过以上的变换, 就可以将鱼眼图片校正为方形图。
经过实验比较发现, 采用经纬映射方法得到的展开图的展
开程度明显比球面定标方法得到的展开图的展开程度高。它们
的结果比较如图 5 所示。
3 鱼眼展开图的拼接
将两幅 183°鱼眼照片按 照 上 述 方 法 分 别 展 开 后, 需 要 将
它们拼接在一起才能构成全景图。
将两幅有重叠区域的图片进行拼接的算法有很多, 它们大
体可分为两类, 即特征无关的方法和基于特征的方法。基于相
位相关度[7, 8]方法属于特征无关的方法, 它是基于互功率谱的相
位估计, 直接计算出这两幅图像简单的平移关系。基于特征匹
配方法比较多, 比如基于特征轮廓的匹配[6]、基于特征模板的匹
配以及基于特征曲线的匹配等等。
但是以上这些方法都是针对于柱面全景图而言的, 柱面全
景图两幅待拼接的图像重叠区域较大, 所以采用上述方法往往
能取得较好的效果, 但是对于两 幅 183°鱼 眼 图 片 展 开 图, 它 们
的 重 叠 区 域 非 常 小, 从 视 域 范 围 可 知, 每 幅 图 像 仅 有 两 侧 各
1.5°的范围属于重叠区域, 如果简 单 采 用 上 述 方 法 的 任 何 一 种
都不能得到希望的效果。所以在实践过程中将基于相似曲线的
匹配方法加以改进, 经过验证证明可以达到满意的效果。
3.1 基于相似曲线匹配的原理
设 有 两 幅 待 拼 接 的 左 右 图 像, 它 们 的 高 和 宽 相 同, 基 于 相
似曲线匹配的原理按照下面的步骤进行:
( 1) 对 每 一 幅 图 像 从 左 至 右 计 算 每 一 列 中 梯 度 最 大 的 点 ,
将该点的坐标记录下来。梯度最大是指该点相对于其周围的点
而言灰度的跳变值最大。所以就要将彩色的图像先取出其每一
点的灰度值。灰度值的计算方法采用将 RGB 转换为 YIQ 色度
空间的方法, 其中 Y 表 示 亮 度 值 也 就 是 灰 度, 所 以 只 需 计 算 Y
的值即可。采用下面的公式完成:
Y=0.299R+0.587G+0.114B
得 到 每 一 点 的 灰 度 值 之 后 就 可 以 计 算 对 应 于 该 点 的 梯 度
值了。梯度值的计算方法采用下式完成:
Mag( i, j) =
(
I( i+1, j) - I( i- 1, j)
2
) 2 +(
I( i, j+1) - I( i, j- 1)
2
) 2
"
其 中 ( i, j) 表 示 图 中 任 意 一 点 的 坐 标 , Mag( i, j) 表 示 梯 度 值 , 这
样按照下述规则很容易求出每一列中梯度最大的点, 并将其坐
222
2007, 43( 6)
Computer Engineering and Applications 计算机工程与应用
标值记录下来。
以需要对接缝处进行平滑处理。
求每列梯度的最大点时所遵循原则为:
①当该列中梯度最大的点有两个或两个以上时, 取距离图
像水平中线距离最近的点作为该列的梯度最大点;
②当两个点距离图像水平中线相等时, 取上方的点作为该
列梯度最大点。
( 2) 按照上述方法, 将所求得的梯度最大点的坐标描出来,
可以在左右两幅图像上分别得到两条曲线。如果两幅图像具有
重叠的公共部分, 就意味着这两条曲线中的某一段具有很好的
( 1) 首先消除明暗差异, 由于鱼眼展开图的重叠范围确定,
所以本文采用灰度渐变的方法。计算两幅图像接缝两侧的灰度
差值 IM=IR- IL, 然后从接缝开始向左向右均分该差值。
如 IM>0 表示左侧比右侧图像亮, 则左侧图像从接 缝 开 始
向左每一列灰 度 值 IL=IL- IM×i, i 从 1 到 0 渐 变; 右 侧 图 像 从 接
缝开始向右每一列灰度值 IR=IR+IM×i, i 从 0 到 1 渐变。
( 2) 对 于 微 小 错 位 情 况 , 采 用 邻 域 平 均 法 对 图 像 进 行
平 滑 。使 用 3×3 邻 域 [9]进 行 平 滑 , 则 处 理 后 的 图 像 g( x, y) =
相似性。
比较 这 两 条 曲 线 , 从 中 找 出 最 相 似 的 一 段 曲 线, 这 段 相 似
曲线的起始位置即为得到的重叠区域的起始坐标。寻找最佳匹
配位置的方法如下:
在 步 骤 1 中 求 出 的 两 幅 图 像 的 最 大 梯 度 数 组 中 分 别 取 长
度为 M 的子数列 Sl 和 Sr, 它们的相似程度可以采用方差来计
算, 即:
1
8
8
i=1!f( xi, yi) 。
5 实验结果及结束语
M
SimilM( Sl、Sr) =
i=1![( Sl[i]- Sr[i]) - mean]2
M
mean=
i=1!
Sl[i]- Sr[i]
M
SimilM( Sl、Sr) 越 小 则 Sl 和 Sr 越 相 似, 从 而 就 可 以 得 到 匹 配
的位置。
3.2 将匹配的图像重叠区域分段
从上述方法可知, 在寻找相似曲线的时候以一段固定长度
M 作 为 查 找 窗 口 , M 必 须 具 有 足 够 的 长 度 才 能 正 确 找 到 匹 配
曲 线 , 但 是 对 于 两 幅 183°鱼 眼 照 片 , 重 叠 的 区 域 很 小 , 所 以 不
能保证 M 能取到足够的长度, 采用以上方法误配的可能性非
常大。
通过实验发现, 如果按照正常的方法通过鱼眼镜头拍摄得
到的两张照 片 , 它 的 垂 直 偏 移 相 差 不 是 很 大, 所 以 本 文 提 出 采
用下面的改进方法:
( 1) 将 重 叠 区 域 分 成 若 干 段, 然 后 在 每 一 子 段 内 使 用 特 征
曲线匹配的 方 法 找 到 局 部 匹 配 位 置, 如 图 6 所 示, 这 样 就 得 到
n 对匹配位置, n 为分段的个数;
( 2) 然 后 在 以 上 n 对 匹 配 中 选 择 SimilM( Sl, Sr) 差 值 最 小 的
那一对作为两幅图像的最佳匹配位置。
4 接缝的平滑
两幅图像由于在拍摄时光照存在差异, 所以往往会出现明
暗不同, 另 外 对 于 相 接 的 部 分, 由 于 只 是 选 中 了 一 段 区 域 的 特
征线作为匹配位置, 所以在其它段还会有细微的错位发生, 所
图 7 是通过以上方法 将 两 幅 183°鱼 眼 照 片 展 开 然 后 拼 合
得到的全景图。从实验过程来看, 当拍摄照片垂直方向旋转角
较小时, 能 得 到 很 好 的 结 果, 但 是 如 果 在 拍 摄 时 出 现 两 幅 照 片
垂直方向有较大旋转时, 就会出现误配现象。所以对拍摄的经
度要有一定的要求。但是在实际应用中, 采用专门的设备往往
可以较好的避免垂直旋转量过大的情况出现。
( 收稿日期: 2006 年 7 月)
参考文献:
[1] Mundhenk T N, Michael J R, Liao Xiao- qun, et al.Techniques for
fisheye lens calibration using a minimal number of measurements[C]//
Proc of
and Computer Vision
Conference, Boston, Massachusetts, 2000( 11) : 8- 9.
the SPIE Intelligent Robotics
[2] 王俊杰, 徐小刚.鱼眼投影在虚拟实景中的应用研究[J].小型微型计
算机系统, 2004, 25( 2) : 287- 290.
[3] 张茂军.虚拟现实系统[M].北京: 科学出版社, 2001.
[4] 陈明伟, 徐丹.球面坐标定位校正鱼眼图片并合成全景图的方法[J].
云南民族大学学报: 自然科学版, 2004, 13( 3) : 214- 217.
[6] 钟力, 胡晓峰.重叠图像拼接算法[J].中国图象图形学报, 1998, 3( 5) :
367- 369.
[7] Reddy B S, Chatterji B N.An FFT- based technique for
transla-
image registration[J].IEEE Trans
tion, rotation and scale- invariant
Image Processing, 1996, 5( 8) : 1266- 1271.
[8] Xie Hong- jie.Automatic image registration based on FFT algorithm
and IDL/ENVI[C]//International Conference on Remote Sensing and
GIS/GPS2ICORG, 2001.
[9] 傅德胜, 寿益禾.图形图像处理学[M].南京: 东南大学出版社, 2002.