鱼眼图像矫正之——柱面模型投影公式推导

在研究鱼眼矫正时,发现了这篇好博文,按照其思路我也针对自己的课题做了公式推导,大致效果一样,因此我就直接引用他的博文内容好了。
引自: 柱面投影解析
还有一篇较好的博客,主要针对柱面投影后的图像做拼接: 柱面投影+模板匹配+渐入渐出融合

【Octave】柱面投影简析

========================我是分割线==========================

在做全景拼接的时候,为了保持图片中的空间约束与视觉的一致性,需要做一定的预处理,可以是球面投影,柱面投影等。

如果仅仅是做水平方向的拼接,则做柱状投影就好了

一. 原理

  把平面图像投影到圆柱的曲面上。

  如下图,四边形GHEF表示待处理原图,投影之后,变成曲面JDILCK(黄色点标注)

  

  俯视图如下,DCE为待处理图像平面,FCG为投影所得曲面。

    

      

   设,原图像宽W,高H,角度FOG为相机视场角度α(一般为45°,即PI/4),圆形半径(焦距)f 有tan 1/2α = W / (2 * f), 则有f = W / (2 * tan(α/2))

      依次推算出,目标图像的宽(曲线FCG长)W‘ = f * α, 目标图像高H’不变, H‘ = H

     第一种推算:以图像像素原始坐标计算(即,左上角为原点)

   

     公式如下:

   

   第二种推算:设置图像原点为(W/2, H/2),用以简化计算步骤

  

二. Octave实现

I = imread('images/doge.bmp');
[height, width, depth] = size(I);
A = I;
centerX = width / 2;
centerY = height / 2;
% alpha = pi / 4;
f = width / (2 * tan(pi/4/2));
for i = 1 : width,
	for j = 1 : height,
		theta = asin((i - centerX) / f);
		pointX = int32(f * tan((i - centerX) / f) + centerX);
		pointY = int32((j - centerY) / cos(theta) + centerY);
		for k = 1 : depth,
			if pointX >= 1 && pointX <= width && pointY >= 1 && pointY <= height,
				A(j, i, k) = I(pointY, pointX, k);
			else
				A(j, i, k) = 0;
			end;
		end;
	end;
end;
subplot(1, 2, 1);
imshow(I);
subplot(1, 2, 2);
imshow(A);

Octave & Matlab代码

三. 效果

大致的公式没啥问题,本人按照思路复现了代码结果。
全景图像拼接是将多幅有重叠区域的图像拼接成全视角360o的平面图像。全景图像拼接技术是一种基于图像绘制技术、图像处理及计算机几何学等多领域的综合技术,由于对硬件要求低,真实感较好等优点,是目前虚拟现实、三维重建等的重点研究方向。鱼眼图像是通过在相机上安装超广视角的鱼眼镜头所拍摄,具有视域广,一次成像为非线性图像的特点,比普通视觉图像拼接所需的原图像少,效率高,但拼接难度大。 本文介绍了鱼眼图像拼接技术的研究背景、应用领域。重点研究了图像拼接技术中的鱼眼桶形畸变校正、投影变换理论、SIFT匹配以及图像融合等技术,对比分析了它们的理论基础、实现方式、运算性能以及还有的不足。 鱼眼图像形变严重,首先需要校正为符合人类视觉的线性图像。针对传统的经纬度校正法还存在一定拱形失真的问题,本文提出了渐进方程校正法,此方法不考虑用镜头参数来构建复杂的投影模型,完成鱼眼图像的校正,单帧图像视觉效果较好且更利于拼接;针对多帧图像的拼接问题,考虑到鱼眼图像的特点,只截取每帧图像的部分区域进行定位匹配,在此区域进行SIFT特征的全景图像拼接,运算量比全局SIFT算法大幅减少,耗时相应降低;为生成实际景物连贯的全景图像,本文采用柱面投影变换,为了解决投影变换后图像产生阶梯现象,文中对比了几种常用算法,并采用双线性插值算法有效解决该问题;在图像融合过程中,分析比较了几种经典算法,选择渐入渐出融合算法对待拼接的图像进行处理,使得拼接后图像重叠区域过渡平滑,基本实现无缝拼接,在图像处理的速度和效果达到一定的均衡。 最后,为了便于全景图像的理解和观察,本文还设计了全景柱形环绕浏览人机交互界面,实现了垂直180o,水平360o空间的动态环绕视觉观察。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值