700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 全景成像技术(3)—鱼眼全景成像

全景成像技术(3)—鱼眼全景成像

时间:2023-06-12 19:03:16

相关推荐

全景成像技术(3)—鱼眼全景成像

目录

1.1鱼眼镜头

1.2成像投影模型

​1.3鱼眼图像的矫正方法

鱼眼全景成像是利用超广角镜头来实现全 成像的 种成像技术,这里的超广角镜头 通常指的就是鱼眼镜头。

1.1鱼眼镜头

鱼眼镜头其实是一种焦距极短并且视角接近或等于 180度 的超广角镜头,之所以称为 "鱼眼镜头",是因为它的镜片结构与真实鱼眼的结构颇为相似。

鱼眼镜头具有相当长的景深,有利于表现图像的长景深效果。鱼眼镜头有两种,一种像其他镜头一样,成像充满画面,另一种成像为圆形。

1.2成像投影模型

普通的光学镜头都遵守"相似"成像准则,即像与物总是相似的,理想的像高公式为:式中为光学镜头的焦距 ;w 为物方 半视场角 对于鱼眼成像而言,其目的就是要将半球空间中的景物成像在有限的像面上,即 趋近于 90 度 ,此时 将趋近于无穷大, 即对于接近半球面的物面,像面将变得无穷 ,这 是不可能实现的 ,而且 将半球面成 像为平面本身也违反了"相似"成像准则 。 为了实现鱼眼成像,即将半球物面成像在有限像面上, 需要选择适当的理想成像公 式来满足鱼眼镜头的成像要求, 一般有如下 几种投 影公式可以将半球视场或大于半球视 场的 空域投影在有限的像面上。目前,市场上的大部分鱼眼镜头采 用的是式 等距投影模型:

图8.23

1.3鱼眼图像的矫正方法

在讨论鱼眼图像的校正方法之前,先证明理想鱼眼镜头的一个性质。如图8 -24 示,在照相机坐标系 中,以视点为球心,以照相机焦距/为球半径的球面上有 个点P(x,y,z),点P在xz平面上的投影点,为Q(u,0,w),设

代码:

from PIL import Imageimport mathdef fish_eye_dis(img):"fish eye distortion"width_in, height_in = img.size;im_out = Image.new("RGB",(width_in,height_in));radius = max(width_in, height_in)/2;#assume the fov is 180#R = f*thetalens = radius*2/math.pi;for i in range(width_in):for j in range(height_in):#offset to centerx = i - width_in/2;y = j - height_in/2;r = math.sqrt(x*x + y*y);theta = math.atan(r/radius);if theta<0.00001:k = 1;else:k = lens*theta/r;src_x = x*k;src_y = y*k;src_x = src_x+width_in/2;src_y = src_y+height_in/2;pixel = im.getpixel((src_x,src_y));im_out.putpixel((i,j),pixel);return im_out;if __name__=="__main__":input_name = "image0.jpg";output_name = "image_dis.jpg";im = Image.open(input_name);img_out = fish_eye_dis(im);img_out.save(output_name);print "fish eye distortion completely, save image to %s" % output_name

代码来源:/smallflyingpig/article/details/56687436

仅作学习,详情请参考《计算摄影学基础》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。