发明内容
有鉴于此,本发明提供一种在天空图像中提取云图形的方法,以提高云图形提取的适应性和准确性。
本发明的在天空图像中提取云图形的方法包括:
获取天空图像;
将所述天空图像转换为灰度图像;
对所述灰度图像进行对比度增强,获取增强后的灰度图像;
对于每一个可能的二值化阈值,根据所述二值化阈值对所述增强后的灰度图像的像素进行分类,并计算分类后的像素的灰度级的类间方差,获取类间方差最大的二值化阈值;
根据所述类间方差最大的二值化阈值对所述增强后的灰度图像进行二值化,以获得天空图像中的云图形。
优选地,对所述灰度图像进行对比度增强,获取增强后的灰度图像包括:
获取所述灰度图像中像素灰度级的聚集区间,占总像素数量预定比例的像素的灰度级位于所述聚集区间内;
对于像素灰度级位于所述聚集区间内的像素,根据如下公式进行灰度变换:
其中,x为像素原灰度级,y为增强后的灰度级,a为所述聚集区间下限,b为所述聚集区间上限,T为灰度级的最大值;
对于灰度级小于所述聚集区间下限的像素,将像素的增强后的灰度级设置为0;
对于灰度级大于所述聚集区间上限的像素,将像素的增强后的灰度级设置为灰度级的最大值。
优选地,所述类间方差根据如下公式计算:
δ2(t)=ω0(μ-μ0)2+ω1(μ-μ1)2,
其中,
其中,δ2(t)为所述类间方差,t为所述二值化阈值,T为灰度级的最大值,M×N为所述灰度图像的分辨率,μ为所述增强后的灰度图像的平均灰度,μ0为根据二值化阈值分类为天空图形的像素的平均灰度,μ1为根据二值化阈值分类为云图形的像素的平均灰度,fi为所述增强后的灰度图像中灰度级为i的像素的数量。若灰度图像周围存在非有效区域,将非有效区域灰度值设置为空值,进行对比度增强。
优选地,所述增强后的灰度图像的平均灰度根据如下公式计算:
所述根据二值化阈值分类为天空图形的像素的平均灰度根据如下公式计算:
所述根据二值化阈值分类为云图形的像素的平均灰度根据如下公式计算:
其中,p(i)为灰度级为i的像素点在所述增强后的灰度图像中的出现概率。
优选地,所述预定比例为98%。
优选地,所述灰度级最大值为255。
优选地,所述方法所涉及的数据范围仅包含原始图像文件中的圆形天空图像区域。
通过将天空图像转换为灰度图像,进而将灰度图像增强后基于最大类间方差法获取最优的二值化阈值,基于该二值化阈值对增强后的灰度图像进行二值化以获得区分天空图形和云图形的二值化图像。本发明的方法动态获取二值化阈值,具有较好的适应性和准确性。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是本发明实施例的在天空图像中提取云图形的方法的流程图。
如图1所示,所述在天空图像中提取云图像的方法包括如下步骤:
步骤S100、获取天空图像。
所述天空图像可以根据地基观测设备(例如全天空成像仪)实时拍摄获得。在本实施例中,所述天空图像为采用RGB色彩模式的图像。应理解,天空图像也可以为HIS色彩模式或YUV色彩模式的图像。
步骤S200、将所述天空图像转换为灰度图像。
通过色彩变化,可以将每个像素的属性由RGB空间变换到灰度空间,从而获得灰度图像。灰度图像可用灰度级矩阵表示。图2是本发明实施例的天空图像对应的灰度图像。可以看出,虽然通过人眼容易区分云图形,但是,由于光线变化,云图形内部的灰度存在变化。
步骤S300、对所述灰度图像进行对比度增强,获取增强后的灰度图像。图2周围存在非有效黑色区域,将黑色区域灰度值设置为空值,进行对比度增强。
对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小。本发明采用灰度变换的方法增强对比度。灰度变换增强不改变原图像中像素的位置,只改变像素点的灰度值,并逐点进行,和周围其他的像素点无关。对比度增强的原理如下:设一幅比较模糊图像的灰度值主要集中在[a,b]之间,若能将[a,b]之间的灰度值均匀的分布在0~255之间,图像会变得更清晰。同时将小于a的灰度值赋值为0;大于b的灰度值赋值为255。对灰度图像进行对比度增强,可以使得灰度图像中作为背景的天空图形和作为前景的云图形更加容易区分。
具体地,步骤S300包括:
步骤S310、获取所述灰度图像中像素灰度级的聚集区间,占像素总数量预定比例像素的灰度级位于所述聚集区间内。
例如,可以将预定比例设置为98%,则,本步骤需要寻找容纳有98%的像素的灰度聚集区间。对于图2所示的图像,其98%的像素灰度值落入[0.3804,1],转化为256级灰度的灰度级,所述聚集区间为[97,255]。也即,聚集区间[a,b]中a=97,b=255。
更具体地,可以采用如下方式获取所述聚集区间:
步骤S311、对所有像素按照灰度级或灰度值排序。
步骤S312、获取灰度级最小的占总数第一比例的像素集合中的最大灰度级作为所述聚集区间的下限。
步骤S313、获取灰度级最大的占总数第二比例的像素集合中的最小灰度级作为所述聚集区间的上限。其中,第一比例和第二比例与所述预定比例三者的和为1。
例如,对于图2所示的图像,对所有像素按灰度值排序后,灰度级最小的占总数1%的像素集合中最大的灰度级为97,因此,将97作为聚集区间的下限。灰度级最大的占总数1%的像素集合中,其灰度级均为255,因此,将255作为所述聚集区间的上限。
步骤S320、对不同灰度级的像素进行不同的灰度变换。
对于像素灰度级位于所述聚集区间内的像素,根据如下公式进行灰度变换:
其中,x为像素原灰度级,y为对比度增强后的灰度级,a为所述聚集区间下限,b为所述聚集区间上限,T为灰度级的最大值。
对于像素灰度级小于所述聚集区间下限的像素,将像素的增强后的灰度级设置为0。
对于像素灰度级大于所述聚集区间上限的像素,将像素的增强后的灰度级设置为灰度级的最大值。
具体地,对于图2所示的图像,对灰度级落入聚集区间[97,255]的像素按上述方式进行对比度增强,修改对应像素的灰度级。
对于灰度级小于97的像素,将其灰度级设置为0(即黑色)。由于不存在灰度级大于255的像素,因此对此不做进一步处理。
由此,可以获得对比度增强的增强后的灰度图像。所述增强后的灰度图像如图3所示。
步骤S400、对于每一个可能的二值化阈值,根据所述二值化阈值对所述增强后的灰度图像的像素进行分类,并计算分类后的像素的灰度级的类间方差,获取类间方差最大的二值化阈值。
在步骤S400,通过遍历所有可能的二值化阈值,获得一个最优的二值化阈值以使得按该二值化阈值分类后的像素的灰度级的类间方差最大。
其中,将二值化阈值记为t,则基于该二值化阈值进行分类可以将根据灰度级将增强后的灰度图像中的像素分为背景(灰度级在[0,t-1]的像素)和前景(灰度级在[t,255]的像素,以图2为256级灰度图像为例)。
具体地,所述类间方差根据如下公式计算:
δ2(t)=ω0(μ-μ0)2+ω1(μ-μ1)2,
其中,
其中,δ2(t)为所述类间方差,t为所述二值化阈值,T为灰度级的最大值,M×N为所述灰度图像的分辨率,μ为所述增强后的灰度图像的平均灰度,μ0为根据二值化阈值分类为天空图形的像素的平均灰度,μ1为根据二值化阈值分类为云图形的像素的平均灰度,fi为所述增强后的灰度图像中灰度级为i的像素的数量。
具体地,可以通过如下方式计算不同的平均灰度:
令p(i)为灰度级为i的像素点在所述天空图像中的出现概率,也即,
其中,n为增强后的灰度图像中灰度级为i的像素数量。
所述增强后的灰度图像的平均灰度根据如下公式计算:
所述根据二值化阈值分类为天空图形的像素的平均灰度根据如下公式计算:
所述根据二值化阈值分类为云图形的像素的平均灰度根据如下公式计算:
在图2所示的图像中,T等于255。
由此,通过遍历0到T中所有的灰度级,可以获得最优的二值化阈值。
步骤S500、根据所述类间方差最大的二值化阈值对所述增强后的灰度图像进行二值化,以获得天空图像中的云图形。
如图4所示,步骤S500后获得的二值化的图像天空为黑色,云为白色。由此,将天空和云进行了分离。
步骤S400和步骤S500基于最大类间方差法(OTSU)自适应地计算最优的二值化阈值,通过对比度的增强使天空和云的反差增强,最大类间方差法对于不同类型云保证了较好的提取效果。自适应阈值较固定阈值具有更好的通用性。
通过将天空图像转换为灰度图像,进而将灰度图像增强后基于最大类间方差法获取最优的二值化阈值,基于该二值化阈值对增强后的灰度图像进行二值化以获得区分天空图形和云图形的二值化图像。本发明的方法动态获取二值化阈值,具有较好的适应性和准确性。
应理解,此具体实施方式中描述的方法可以通过计算机系统执行,所涉及的数据结构和代码通常存储在计算机可读存储介质上,其可以是能够存储供计算机系统使用的代码和/或数据的任何设备或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁性和光学存储设备,例如磁盘驱动器、磁带、CD(光盘)、DVD(数字多功能光盘或数字视频光盘)、或现在已知或以后开发的能够存储代码和/或数据的其他介质。
可以将具体实施方式部分描述的方法和过程具体化为代码和/或数据,该代码和/或数据可存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行计算机可读存储介质上存储的代码和/或数据时,计算机系统执行具体化为数据结构和代码并存储于计算机可读存储介质内的方法和过程。
此外,可以将本文描述的方法和过程包括在硬件模块或装置中。这些模块或装置可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定软件模块或一段代码的专用或共享处理器和/或其他现在已知或以后开发的可编程逻辑设备。当激活硬件模块或装置时,它们执行包括在其中的方法和过程。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。