OpenCV --- 基于 OpenCV 的百度路况研究记录 (三)
背景
本篇研究的内容有:
分析得到的大量拥堵点抽稀处理
拥堵区域骨架提取
部分优化算法和性能
抽稀处理
根据之前的处理得到一张瓦片的一块拥堵区域时,需要对其进行结构化数据的分析:将坐标转化为百度坐标系的坐标,坐标转经纬度,拥堵距离计算,
但是一块区域有很多的拥堵点,如果要对每个点进行操作计算的话,会导致性能问题,而且对于密集的点来说
意义不大,没有必要这么做,如果说能够给这些点进行稀释处理,仅仅分析稀释后点,那么既能保证数据的正确性,又能提升算法的性能
算法的基本思想: 连接起点 A 和终点 B, 找出某一点到线段 AB 距离 S 最大的点 P, 如果 S 小于手动设置的阈值 H, 则舍弃其他点,直接连接 A B, 抽稀完成
如 S > H , 则以 P 为终点, 分别计算 2 端 AP 和 PB 上点到相应线段的最大距离,再重复上述步骤, 直到所有的距离均小于 S , 抽稀完成
抽稀结果示例:
上图中,已经将上面的拥堵部分大量点稀释的只剩下 3 个点了,这三个点还是位于原来的轨迹上, 可能看的不太清楚,放大了看
示例 2 :
对于抽稀最大直观效果,我通过下面 2 张动图来演示:
抽稀前:
抽稀后:
骨架提取
骨架提取是指从原来的图中层层剥离点,最后仍然要保持原来的形状
算法基本思想:
效果示例:
我以这张拥堵瓦片图来看, 我提取出左上角的拥堵部分来处理
轮廓提取:
填充内部:
上述 2 中图进行加运算, 得到整个拥堵部分,再进行骨架提取:
已经得到最小化的骨架了,基本上都是 1 像素值,这对后续的处理很有利,再放大点看:
最后,我录了个视频,以展示目前的演示效果: