第一步我认为最有价值,直接在原始数据判断天空不是很好做,作者观察到天空部分整体来说是比较平滑的,也就是相邻像素之间变化不大,因此用梯度来表示则更容易识别,梯度值越小则表明图像那一块越光滑。
第二步则设定一个阈值来初步判断某处是否属于天空,这个阈值作者取的是0.02,量化到unsigned char范围则基本对应5。
第三步对初步的边界进行下小范围的扩展。
第四步对分割后的图的每个联通区域统计其原始图像在对应位置的像素的平均亮度,如果大于阈值T则保留,T这里作者取0.81,对应整数205左右。
第五步取符合第四步条件的最大的联通区域作为识别的天空区域。
第六步是为了防止一些漏检点,把在天空区域周边的一些像素在进一步进行识别,符合条件的则加到天空区域中。
第七步是一些被完整包含在天空中还未被认为是天空的小区域添加到天空中。
1、将图像转换为灰度:这里为保留更多的边缘信息,可以考虑使用具有对比度保留功能或显著性保留功能的一些去色算法。
2、求灰度图像的梯度信息(其实就可以用常用的一些边缘检测算子实现);
3、对梯度信息进行适当的去噪和滤波;
4、按照设定梯度阈值和亮度阈值对梯度信息进行区分;
5、对区分后的图进行高斯羽化处理(可选的)。
ref
https://blog.csdn.net/Real_Myth/article/details/44217377