梁仕雄,侯北平
(浙江科技学院 自动化与电气工程学院,杭州 310023)
随着光伏发电的普及和光伏并网容量的增加,短期发电功率波动对电网产生冲击的问题日益凸显,这给电力系统规划和运营商带来了巨大的挑战。云团运动将导致太阳辐照度快速变化,而太阳辐照度变化是干扰光伏发电系统输出的主要因素。光伏发电系统输出功率变化会对电网产生一定冲击,而目前电网运营商对其变化控制能力有限[1-2]。通过研究太阳辐照度对光伏发电的影响,可以缓解太阳能普及带来的运行问题[3]。短期太阳辐照度预测模型通常以云团运动速度作为主要参考因素,因此云团运动预测越来越受到关注[4-5]。
短期太阳辐照度与云团结构变化、运动方向和运动速度息息相关[6]。传统获取云团运动矢量的方法需要先确定云团的图像特征,如亮度梯度、角点信息或温度梯度[7],假设云团特征在短时间内没有显著变化,则使用应用于连续图像的模式匹配技术来计算云团运动矢量。随后假设云团的速度、大小和形状在一段时间内保持不变,通过运动外推来估计未来的云团运动情况[8]。然而,这些方法不能在较短的时间或空间尺度上进行云团运动估计。考虑到空气和云团的高度可变性,为满足实际应用需求,高分辨率参数在算法中不可或缺,如小时、分钟和实时云信息。因此,高分辨率的成像系统和能跟上云团快速变化的工具和算法[9]对云团跟踪的研究很重要。
长期以来卫星图像在云团运动估计和跟踪中被广泛使用,但由于卫星图像覆盖范围广、局部分辨率低等问题,目前对特定区域云团运动的研究往往采用TSI(totalskyimager,全天空成像仪)图像即地基云图,其优点是局部信息量大、图像分辨率高、图像采样率可调,因此地基云图在云团检测、短期运动跟踪和估计方面被广泛运用。Yang等[10]采用互相关方法获得整个云场的云团运动平均矢量值,通过将云团沿相应的矢量方向移动来预测短期云团位置,类似非刚性配准技术的云团运动估计。文献[11]和文献[12]分别使用两种不同的图像处理算法在连续视频帧上检测云团,并跟踪云团的运动;然后在获取云团的运动方向和速度后,估计出了云团在短时间内的位置;最后将估算的云位置信息纳入估算过程,对短期内的太阳辐照度进行预测。天空图像特征的加入提升了辐照度预测的准确性。
针对现有方法中视频帧处理存在的云团识别率低、云团边缘信息丢失、跟踪算法速度慢等问题,本研究提出了一种融合中值滤波与光流算法的云团跟踪算法,并通过对比试验验证了算法的可行性。
地基云图反映局部区域的云团信息及底层云的信息,更容易观测到局部区域内云团分布、运动和变化情况。因为观测到了云底部信息,就能更有效地判断云团的形状、高度,从而为局部区域内的气象预测提供有力的支撑。
地基云图数据采用高分辨率相机采集得到,并且未对太阳进行遮挡,采集的地基云图见图1。图像视角为180°,能获取全景天空的所有图像特征信息。该采集系统采集图像的速率为10 s/帧,1 min可以采集6帧。将采集到的图像合成视频集作为研究的数据。云团跟踪主要针对积云和卷云的跟踪,并且云量(即云团总量占视野范围内天空的比值)低于70%以内。积云与卷云的运动对太阳辐照度的变化影响明显,当云团运动到太阳位置处,太阳辐照度大小急剧下降;当云团由遮挡太阳到离开太阳位置时,太阳辐照度快速上升;当一些云层较薄的云团遮挡太阳时,太阳辐照度变化波动较小。
图1 地基云图Fig.1 Ground-based sky images
采用红蓝比阈值分割法对地基云图进行分割,分割出的云层区域用255像素值替换,背景天空区域及其他区域用0替换。由于分割出的图像上存在噪点,且云团的边缘信息不明确,因此需进行滤波处理。
首先对太阳的位置定位,太阳高度角α和方位角β计算公式分别如下:
(1)
式(1)中:δ为当天的旋转角度;φ为采集系统所处的纬度;γ为一天中某一个时间的角度;n为一年中的第n天;T为采集图像的时刻。
传统的中值滤波算法[13-14]虽然在图像降噪方面性能较好,但部分图像细节信息容易丢失,对图像边缘部分判别能力较低,边缘还原度不能达到预期效果。
为解决上述问题,本研究首先将图像灰度化[15],对检索框内的元素与特定点的像素值作差求均值,通过给定阈值来判断是否进行中值替换。试验中检索框的大小为5×5。定义当前像素值为Iij,以Iij为中心的检索框内像素值定义为Fxy,x、y为框内对应像素点的坐标值,当前像素值与检索框内像素值的差的平均值L定义如下:
(2)
式(2)中:N为检索框内的像素点个数。平均距离的值可以反映当前像素点和框内其他像素点之间的相关性,当平均距离L大于设定阈值T时,用框内像素点的中值替换当前像素点;当平均距离L小于设定阈值时,框内中间像素值保持不变。
为了得到较好的云团分割效果,根据云量的不同确定阈值。通过多次试验对比得出,当云量低于25%时,T值取20;当云量超过25%且低于70%时,T值取32。
视频帧通过上述操作处理后,可以将光流算法应用于已处理的视频序列。光流算法假设亮度强度在运动场中位移像素的邻域不变,对应光流约束方程描述如下:
I(x,y,t)=I(x+Δx,y+Δy,t+Δt)。
(3)
式(3)中:I(x,y,t)为第t帧(x,y)处像素梯度。用泰勒级数展开式(3)的右侧如下:
I(x+Δx,y+Δy,t+Δt)≈I(x,y,t)+IxΔx+IyΔy+ItΔt。
(4)
由式(3)式(4)可得:
Ixu+Iyv+It≈0。
(5)
式(5)中:u、v是光流速度。为了加快计算速度,假设相邻像素点在5×5的领域内具有相同的运动,则
(6)
式(5)中需求解Ix、Iy和It。其中,Ix和Iy通过卷积掩码求解,It为两帧的时间差。
在没有干扰的情况下式(5)成立。式(5)左边表示误差与理想值的接近程度,因此将误差项L(u,v)定义如下:
L(u,v)=∑(Ixu+Iyv+It)2。
(7)
优化目标变为
(8)
式(8)中:O为优化目标;p为某一像素点。对u和v分别求导,结果如下:
(9)
令式(9)中两式都等于0,得
(10)
为计算式(7)的最小值,由式(10)得
(11)
则
(12)
算法流程如图2所示,主要步骤包括读取视频帧序列、处理视频的图像序列和图像上标定跟踪效果。其中图像帧处理和跟踪是核心步骤,图像帧处理步骤分为太阳位置定位,第k帧与k+1帧做云团滤波、分割处理,随后进行云团边缘检测及定位,最后通过光流算法计算出云团速度。
图2 算法流程Fig.2 Proposed algorithm flow
采用Ubuntu18.04作为试验平台,CPU为双路E5-2670v4,显卡型号为RTX3090 24 GB,内存为128 GB,固态硬盘容量为1 TB。
本研究算法云跟踪效果图见图3。图3(a)为视频原始帧,上面是前一帧,下面是后一帧;图3(b)为图3(a)对应的云团检测帧;图3(c)为跟踪效果展示。由图3可知,无论是云团检测还是太阳位置定位,都能达到预期目标,可以清晰地分出云团块,准确定位云团块,这为对云团跟踪分析提供前提条件。
图3 云跟踪效果图Fig.3 Cloud tracking renderings
为了验证本文算法的有效性,使用云量在0%~20%、>20%~50%、>50%~70%的云视频序列进行试验,当检测云量超过70%后停止跟踪。不同算法在不同云量下的跟踪效果图见图4。当云量在0%~20%时,几种算法都能准确识别云团位置和实时跟踪。当云量在>20%~50%时,从跟踪结果可以看出,本文算法能准确检测出云团边缘的轮廓,其效果明显优于ViBe(visual background extractor,视图背景提取)算法[16]和块匹配算法[17],并且在云团块的位置定位上也明显优于前两种算法。当云量高于50%时,可以看到前两种算法跟踪的云团块和实际云团块有明显偏差,而本文算法对云团块的识别和跟踪依然保持较高的稳定性。
图4 不同算法在不同云量下的跟踪效果图Fig.4 Tracking renderings of different algorithms under different cloud cover
不同算法对云团跟踪的准确率如图5所示,由图可知,随着云量的增多,几种算法的准确率都呈下降趋势,当云量超过40%后,块匹配算法的准确率下降尤为明显。本研究算法相比其他算法准确率更高、稳定性更强,鲁棒性好。
图5 不同算法对云团跟踪的准确率Fig.5 Accuracy of different algorithms for cloud tracking
几种算法的试验对比结果见表1,由表可知,本研究算法在跟踪数量与跟踪效率两方面都优于其他3种算法,跟踪效率比其他3种算法的平均值提升了约6.32百分点。
表1 试验对比结果
通过对云团跟踪算法的研究,我们提出了采用优化的中值滤波对分割后的图像进行滤波处理,在滤除噪点的同时能保持图像边缘信息的完整性。本文算法在云团边缘检测和云团实时跟踪上表现优越,目标跟踪速率上相比传统算法有明显的提升,解决了传统稠密光流算法跟踪速率慢的问题。