1. 引言
天空视域因子(Sky View Factor,简称SVF)是一个无量纲参数,其定义为从某地面位置观测上半球空间内可见天空的占比,是城市街道峡谷建筑物和植被遮蔽程度的定量表征 [1] 。SVF的数值介于0~1之间。城市空间越开阔,SVF越大;建筑物的密度越大,SVF越小 [2] [3] 。作为衡量城市几何特征的参数之一 [4] ,科学家们将SVF广泛运用在城市气候学、森林气候学等方面的研究中 [5] [6] [7] 。
目前在城市环境研究领域,SVF的测量主要有五种方法,分别是几何法 [7] [8] 、GPS法 [9] 、三维建模分析法 [10] 、街景图像大数据法 [11] [12] 和鱼眼摄影法。其中,鱼眼摄影法利用鱼眼镜头成像的畸变特性,将视域180˚内的半球空间投影生成一张圆形照片,然后根据鱼眼成像的投影模型计算SVF [13] [14] 。该方法操作简单、移动方便,较其他方法具有明显优势,是目前城市热环境研究中最常用的方法。
Steyn于1980年提出的分环计算法,是鱼眼摄影法测量SVF一直沿用的方法 [15] 。基于这一方法,已有许多研究者开发了自动计算天空视域因子的软件。Matzarakis等人提出的Rayman模型 [16] ,在计算天空视域因子的同时,还能计算平均辐射温度。Chapman等人开发了一种全自动的图像处理技术Sky View软件 [17] ,能够从鱼眼图像中计算SVF值,通过与Steyn算法进行对比,验证了该技术的有效性。Honjo等人将全景相机拍摄的矩形图像通过R程序转换为圆形鱼眼图像 [18] ,并计算SVF值,与Rayman作比较,证实该方法的准确性。
虽然软件的开发节省了大量的计算时间,但Steyn算法要求使用基于等距投影模型且视角恰好为180˚的鱼眼照片。而现实情况是,目前市面上的鱼眼镜头虽种类繁多,但并无统一的参数标准,常用的经典鱼眼模型有五种之多,镜头视角也从140˚至240˚不等。目前并不明确其中哪些产品恰好能满足Steyn算法的要求。即便是在现有文献中被广泛使用的尼康FC-E8鱼眼镜头 [19] ,也从未经过投影模型和视角准确性的严格校验,这无疑增加了SVF测量结果的不确定性。特别是这款镜头价格昂贵且已停产多年,这进一步制约了SVF测量的实施。
本研究设计了对鱼眼镜头真实投影模型和视角进行快速校验的实验方法,并在此基础上提出了利用投影模型的数学关系转换对鱼眼照片进行等距化畸变修正,使各种鱼眼照片均满足Steyn算法的要求。本研究随机采购两款不同价位、不同投影模型的鱼眼镜头进行室外现场SVF实测,通过比较二者在室外不同开阔度条件下的SVF测量结果,验证了上述理论方法的有效性。本研究提出的鱼眼镜头校验方法和等距化修正可使SVF计算摆脱对等距投影模型镜头及视角的严格依赖,简化了SVF采集过程的硬件需求,提高了SVF测量的经济性和精度,有助于城市热环境研究领域现场测量计算的发展。
2. 方法
2.1. 鱼眼镜头和其投影模型
本文所用的两款国产镜头分别为标称视角为180˚的工业鱼眼镜头(镜头A)以及品牌为“七工匠”的4 mm f/2.8标称视角为240˚的圆周鱼眼镜头(镜头B)搭配相机Canon M10。镜头A不需要配备相机,因为它具有独立成像的镜头模组,只需用USB接口连接电子设备即可拍摄鱼眼图像。两组鱼眼成像设备的总价均大幅低于既有文献中提到的任何其他鱼眼成像设备,镜头A及其模组价格更低,约为镜头B组合的1/14。
鱼眼镜头投影模型的数学表达式可直接向生产厂家咨询,也可采用Clark等人提出的方法 [20] ,标定镜头的光学中心和投影模型参数。
本研究进行畸变修正的参数公式为等距投影函数:
(1)
其中,θ代表入射角,f代表焦距,r代表成像高度。
为了便于计算,本文将镜头的投影模型统一拟合成如下形式:
(2)
其中,x指入射角,y指像点距圆心的半径与入射角为90˚时的半径的比值。
以该形式表达的等距投影模型如公式(3)所示:
(3)
公式(2)和公式(3)将用于2.2节的图像畸变修正。
2.2. 图像获取及等距化畸变修正
在实地拍摄鱼眼照片时,在同一地点,分别用镜头A和镜头B拍摄鱼眼图像。首先将相机离地1.5 m固定在三脚架上,镜头朝向天顶方向,用气泡水平仪将相机的底面设置水平。移动相机至水平线上的另一点拍摄,以此获得多种鱼眼图像。
实地拍摄的鱼眼图像要经过简单的预处理,作为计算天空视域因子的准备工作。我们利用图像处理软件,提高对比度,使建筑物和天空的分界线更加明晰,并对边缘进行细化处理,然后通过二值化处理将图像转化成黑白。
鱼眼照片等距化畸变修正包括以下步骤。将拍摄的图像截取出180˚的视角范围,处理成黑白照片后,在天空和建筑之间明显的分界线即为天际线,如图1所示的红色线。我们利用CAD测量天际线像素点在实拍图中距圆心的距离r1,将r1代入该镜头的投影函数,确定其所对应的入射角θ1。将θ1代入等距投影的函数公式内,求出该像素点在等距投影中的位置
,如图1(b)所示。依次计算选取的所有像素点,将调整后的像素点以平滑的曲线连接起来,这样便将天际线调整到等距图像应该呈现的位置,如图1所示的蓝色线。修正后的鱼眼照片,建筑物的面积由图1中的灰色部分变成斜线填充部分。
Figure 1. Hand-drawn virtual fisheye image and image point equidistant distortion correction diagram. The red line represents the original boundary; the blue line represents the corrected boundary. (a) Virtual fisheye image; (b) Detailed correction process
图1. 手工绘制的虚拟鱼眼图像以及像点等距畸变修正示意图。红色线代表原始天际线;蓝色线代表修正后的天际线。(a) 虚拟鱼眼图像;(b) 详细修正过程
2.3. SVF的Steyn算法
Steyn在1980年引入了同心圆环法计算等距投影图像的天空视域因子 [15] 。他分两步计算SVF值,首先将圆形鱼眼图像划分为一系列等宽的同心圆环,然后将每个圆环中天空所占的比率相加,即为天空视域因子的值。Steyn计算天空视域因子的公式如下:
(4)
Johnson等人改进了Steyn算法,并提出在不重绘天际线的情况下,利用每个墙端的极坐标来计算每个墙壁的墙视图因子(Wall View Factor) [8] ,这两种方法都需要一定程度的人工干预。他们提出的圆环法的修正公式如下:
(5)
其中,n是指划分的环总数,i是指环指数,αi代表第i环中天空所占的角宽度。
本文将鱼眼照片按照2.2节所述方法进行等距化畸变修正后,采用Steyn算法计算SVF。
3. 结果与讨论
3.1. 鱼眼镜头真实投影模型及视域校验
针对实验方法所需,我们对两组镜头的鱼眼镜头量角器校验图像进行分析。图2是用Clark等人提出的方法 [20] 拍下的鱼眼镜头校验图像。
从图2中可以看出,市面上的镜头的视角不够准确。镜头A的官方视角为180˚,但经过校验其实际视角为172˚,镜头B的官方视角为225˚,其实际视角为218˚,这说明鱼眼镜头在使用之前,校验过程必不可少。
在鱼眼镜头的成像范围内,畸变程度并不是固定不变的。从图中可以看出,越靠近图像中心的标记钉分布得越等距、均匀,越靠近视域极限处,畸变量越大,以至于前后两组标记钉并不能很好地对齐,存在图像失真。我们发现镜头A和镜头B都略有偏心误差,其中A的偏差较大。本文以视域较大一侧为准,测量拟合投影模型。
Figure 2. Calibration image taken with fisheye lens: (a) Lens A; (b) Lens B
图2. 用鱼眼镜头拍摄的校验图像:(a) 镜头A;(b) 镜头B
将图2导入电脑,用图片处理软件测量r和r0的值,获得在某一入射角下所对应投影成像相对位置r/r0,其中r0为入射角为90˚时的成像半径。根据所得数据绘制镜头A与镜头B的相对成像位置r/r0与入射角θ的曲线图(图3)。
Figure 3. Comparison of projection model of lenses A and B with equidistant projection model
图3. 镜头A、B的投影模型与等距投影模型的比较
从图中可知,等距投影的相对投影位置和入射角呈线性关系,呈现为45˚倾斜直线。经过检验,实验所用的两组镜头都不是基于等距投影而设计的。镜头B与等距投影最接近,二者投影位置的相对误差达到7.9%。镜头A与等距投影最远,并且它在视野边缘处的畸变程度最大。
对镜头A和镜头B的投影模型曲线进行拟合,得到的拟合公式见表1。
由图3和表1可知,镜头A基于正交投影模型设计,镜头B基于等立体角投影模型设计,因此二者拍摄的鱼眼照片都不能直接使用Steyn算法计算SVF。
Table 1. Projection model fitting formula of lenses A and B
表1. 镜头A与B的投影模型拟合公式
注:式中x指入射角,y指像点距圆心的半径与入射角为90˚时的半径的比值。
已知等距投影的标准投影函数为
,与上述拟合得到的投影公式一起,将应用于实拍图的等距化畸变修正过程。
3.2. SVF室外实测精度
我们共选取了8个拍摄地点,这些地点的建筑物、植被分布比较均匀,从而能尽可能缩小图像处理过程中带来的误差。在同一个地点,镜头A和镜头B的实拍图中天际线的位置相差较大(见图4),导致计算出的SVF值具有较大离散度。按照实验方法,对镜头A和镜头B的实拍图进行等距化畸变修正,将二者都修正为等距投影图像,图像修正后如图4所示。其中,镜头B除了需要进行等距化畸变修正外,还需要进行入射角90˚截取,截取位置如图4(b)的白线所示。
Figure 4. Diagram of the correction of a fisheye image. The blue boundary shows the position of the image after equidistant distortion correction. (a) Lens A; (b) Lens B
图4. 鱼眼照片的修正示意图。蓝色边界所示为图像经等距化畸变修正后的位置。(a) 镜头A;(b) 镜头B
将经等距化畸变修正后的图像导入MATLAB程序,利用Steyn算法进行计算。表2是修正后的两组镜头所拍图像的SVF值及二者差值,图5为8个地点在畸变修正前后的SVF值对比图。
从实验结果可以看出,畸变修正的方法具有较高的精度和可行性。如表2所示,两组镜头经过修正后的图像的SVF值比较接近,二者的误差在0.007以内,可以满足实测的精度需要。
从图5可以更明显地看出修正过程给SVF计算值带来的影响。修正之前,镜头A和镜头B的偏差较大,修正后的数据点沿着对角线分布。实验结果表明,本文提出的等距化畸变修正方法可将任意鱼眼镜头所拍摄的图像修正为等距投影图像,得到相对准确的SVF值。
Table 2. SVF values of outdoor real photos after equidistant distortion correction
表2. 室外实拍图经等距化畸变修正后的SVF值
Figure 5. Comparison of SVF results before and after distortion correction: (a) Before correction; (b) After correction
图5. 畸变修正前后SVF结果比较图:(a) 修正之前;(b) 修正之后
4. 结论
针对SVF的测量存在的一些问题,本研究提出了基于等距化畸变修正计算SVF的方法。该方法首先获取鱼眼镜头的真实投影模型数学表达式,然后将室外实拍的鱼眼图像利用该镜头的投影公式和等距投影的函数公式,将天际线修正到合适的位置,最后将修正后的鱼眼图像用Steyn算法计算。本研究随机检验了两组基于不同投影模型设计的鱼眼镜头,并用它们得到了详尽的天空视域因子计算结果,证明了等距化畸变修正的可行性。
本论文所提出的方法与传统的鱼眼镜头法相比,具有很高的经济性、实用性。我们的方法打破了等距投影的约束,将天空视域因子的测量扩展到任意投影的鱼眼镜头;我们的研究方法的成本更低廉且能得到精确的结果,说明镜头的价格与天空视域因子的计算精度之间没有必然的联系,提高了SVF测量硬件的经济性,推荐城市热环境领域研究者及城市规划人员使用。
基金项目
烟台大学大学生创新创业训练计划(X202211066099)。
NOTES
*通讯作者。