一种光伏屋顶及光伏障碍物自动识别算法制造技术

技术编号:20843634 阅读:39 留言:0更新日期:2019-04-13 08:51
本发明专利技术涉及一种光伏屋顶及光伏障碍物自动识别算法,结合高程图和正射影图两种图像的信息,对屋顶轮廓定位,在图像识别的每个屋顶的轮廓内,采用最小二乘拟合和种子填充算法,找到屋顶平面内的点,拟合得到一个平面,求出对应的平面方程,并修正屋顶轮廓范围,对全图的屋顶进行识别后,在屋顶识别基础上分别屋顶内障碍物信息进行搜索和识别,可自动识别屋顶的同时识别各种光伏障碍物。大大提高了设计工作效率和识别精度,减少了人为操作所花费的时间和精力。

【技术实现步骤摘要】
一种光伏屋顶及光伏障碍物自动识别算法
本专利技术涉及一种光伏设计技术,特别涉及一种基于正射图像和高程信息的光伏屋顶及光伏障碍物自动识别算法。
技术介绍
目前光伏行业设计屋顶光伏项目时,光伏组件的排布位置需要避开屋顶上的光伏障碍物。光伏障碍物包括气楼、女儿墙、排风设备、空调外机、水箱和采光带等。普通障碍物和屋顶平面具有一定的高度差,而采光带为屋顶透光需要,和屋顶平面没有明显的高度差,但是可以从视觉上进行区分。传统方法进行方案设计时,需要在正射影像上,手动框选屋顶及相关的光伏障碍物,存在费时、容易遗漏的问题。
技术实现思路
本专利技术是针对光伏障碍物影响光伏项目设计时间和准确率的问题,提出了一种光伏屋顶及光伏障碍物自动识别算法,可自动识别屋顶的同时识别光伏障碍物。本专利技术的技术方案为:一种光伏屋顶自动识别算法,具体包括如下步骤:1)数据采集及处理:采集一片实际目标区域的三维地理模型,利用自动处理软件,导出得到完整的正射图和数字表面高程图,正射图中每个像素点包含区域的RGB信息,数字表面高程图中每个像素点包含对应的高度信息,两幅图片的大小、分辨率以及左上角的地理位置都相同;找到每个像素点Pi(xi,yi)对应的RGB值(ri,gi,bi)和高程值zi,每个像素点的位置和对应实际的地理坐标位置;相邻像素点的地理位置之间有一个固定的采样距离d米;2)屋顶轮廓定位:基于目标区域的正射RGB图像信息,利用训练好的图像识别框架,识别得到每个屋顶的大致范围;并通过求凸包络算法,得到每个屋顶的大致轮廓坐标集合Im,m为屋顶的个数;3)屋顶信息识别:对图像识别的每个屋顶的轮廓内,采用最小二乘拟合和种子填充算法,找到屋顶平面内的点,拟合得到一个平面,求出对应的平面方程,并修正屋顶轮廓范围:具体实现步骤如下:3A)对图像识别得到的任意一个屋顶轮廓坐标集合I,找到其中位置坐标的极大和极小值,从而得到一个包围屋顶的矩形窗口,四个角点的像素坐标分别为(xmin,ymin),(xmax,ymin),(xmax,ymax),(xmin,ymax);3B)在对应的数字表面高程图中,利用GDAL包提供的方法读取四个角点包围的矩形区域点集,记为M;如果屋顶范围内像素点过多,则进行适当的预处理,对原始数据进行降采样;得到新的像素点集M';同时,将对应的多边形轮廓坐标I中每个点的坐标转化为降采样后的近似坐标I’;3C)在多边形I’轮廓范围内,以设定步长,筛选出多个候选点作为初始种子像素,用于搜索屋顶平面:在筛选的种子像素中选择一个像素点P0(x0,y0)作为初始种子,根据初始像素点及其周围四个点P01(x0-1,y0),P02(x0+1,y0),P03(x0,y0-1)和P04(x0,y0+1),及像素点对应的高程值z0、z01~z04得到一个平面点集L,采用最小二乘法,拟合得到一个(x,y,z)空间内的初始平面,并计算得到平面方程A0x+B0y+C0z+D0=0;3C-1):从种子像素P0出发,根据填充算法,在像素点集M'内依次向周围搜索下一个点,搜索到平面方程内的点,则将新点加入平面中重新拟合平面方程式;如当前点为Pj(xj,yj),当前点所在平面方程为Akx+Bky+Ckz+Dk=0,则接下去待搜索的点为Pj周围的四个点为(xj-1,yj),(xj+1,yj),(xj,yj-1),(xj,yj+1);依次判断这四个坐标对应点的位置是否在点集M’内,如果是则按步骤3C-2)进行4个新点是否在当前平面上的判断;3C-2):检查搜索的新点是否为新的点,即是否已经判断过,有记录,已经有记录,则继续判断下一个点;如没有记录,将该点坐标(xj-1,yj)带入平面方程Akx+Bky+Ckz+Dk=0,得到该点与平面的高度差为|(Ak(xj-1)+Bkyj+Dk)/Ck-zj|,判断高度差是否在阈值允许的高度差范围内;如果在范围中,则将该点加入平面点集L,并重新拟合得到一个新的平面方程Ak+1x+Bk+1y+Ck+1z+Dk+1=0,并且将点(xj-1,yj)作为当前种子,对周围四个点进行搜索和判断;如果不在范围中,说明该点不在平面内,将此点加入平面外点集CM’Li,记录后,按前一个有效点平面方程继续检查下一点;3C-3):执行以上的搜索和判断点,直到搜索到该平面点集L的边界,即L内的点都用做种子判断过,且周围找不到新的高程值在平面范围内的点,根据搜索到的最后一点重新拟合的平面方程ALx+BLy+CLz+DL=0即为该平面的最终方程;3C-4):对平面内的所有经过搜索和判断的点集L,拟合得到一个外包络多边形H’,将多边形H’坐标转换到降采样前的坐标H。根据图像识别得到的轮廓I和识别屋顶平面得到的轮廓H分别得到包围的多边形区域SI和SH,求两个区域交集得到重叠部分区域SIH,并得到其外轮廓,即为修正后的屋顶轮廓;3C-5):计算重叠部分区域SIH的面积,如果面积小于设定面积阈值,说明初始点选择错误,此时重新选择初始种子,并回到3C-1)步再次进行屋顶轮廓识别;如果面积大于设定面积阈值,此时再计算重叠部分区域SIH占图像识别得到的屋顶区域SI的比重SIH/SI,如果该值小于设定比重阈值,说明图像识别得到的不只是一个屋顶;从SI中去除SIH区域,继续在剩下的区域中利用DSM图像中的高程信息识别得到屋顶区域并和图像识别区域SI求交集得到SIH2;如此重复,直到识别出的屋顶区域SIH1、SIH2…SIHm总合占SI的比值达到规定的阈值,即认为图像识别区域SI中所有屋顶区域均被识别。一种光伏障碍物自动识别算法,根据所述光伏屋顶自动识别算法识别出屋顶区域的基础上对障碍物进行识别:在屋顶轮廓范围内,以平面方程为参考,基于高程信息找出不在误差范围内的障碍物,得到对应的轮廓坐标和高度;步骤A:A-1:在屋顶区域SI中,根据每个点Pj(xj,yj)到屋顶平面方程ALx+BLy+CLz+DL=0的距离,利用跨平台计算机视觉库中Imgproc.threshold方法筛选出超过阈值的点,即为障碍物上的点;然后用Imgproc.findContours方法,将障碍物点进行分类,相邻的点为同一个障碍物,并得到每个障碍物的外轮廓点集;障碍物上每个点相对屋顶的高度,通过计算点到屋顶平面方程距离的方式得到;A-2:对每个识别得到的障碍物轮廓,利用轮廓简化算法筛选,得到几个关键点组成的轮廓;算法步骤:从轮廓点集中选出一个初始点Pn,及其下一点Pn+1和下下一点Pn+2;计算角度∠PnPn+1Pn+2,如果该角度与180°的差值小于一个阈值,则认为这三个点在同一条直线上,因此将点Pn+1从轮廓点集中删除,并继续以点Pn+2为起始,判断∠Pn+2Pn+3Pn+4;如果差值大于阈值,则认为Pn+1为关键点,保留在轮廓点集中,继续以点Pn+1为起始,判断∠Pn+1Pn+2Pn+3;直到所有点都遍历完,剩下的即简化后的障碍物轮廓;步骤B:B-1:对障碍物点集进行筛选:根据障碍物外轮廓的位置,去除屋顶外的障碍物;根据障碍物包含的点集数量,去除过小的障碍物;B-2:将剩余障碍物的外轮廓坐标,转化为步骤1)中数据采集的DSM图中的像素位置。一种光伏障碍物自动识别算法,根据所述光伏屋顶自动识别算法识别出屋顶区域的本文档来自技高网...

【技术保护点】
1.一种光伏屋顶自动识别算法,其特征在于,具体包括如下步骤:1)数据采集及处理:采集一片实际目标区域的三维地理模型,利用自动处理软件,导出得到完整的正射图和数字表面高程图,正射图中每个像素点包含区域的RGB信息,数字表面高程图中每个像素点包含对应的高度信息,两幅图片的大小、分辨率以及左上角的地理位置都相同;找到每个像素点Pi(xi,yi)对应的RGB值(ri,gi,bi)和高程值zi,每个像素点的位置和对应实际的地理坐标位置;相邻像素点的地理位置之间有一个固定的采样距离d米;2)屋顶轮廓定位:基于目标区域的正射RGB图像信息,利用训练好的图像识别框架,识别得到每个屋顶的大致范围;并通过求凸包络算法,得到每个屋顶的大致轮廓坐标集合Im,m为屋顶的个数;3)屋顶信息识别:对图像识别的每个屋顶的轮廓内,采用最小二乘拟合和种子填充算法,找到屋顶平面内的点,拟合得到一个平面,求出对应的平面方程,并修正屋顶轮廓范围:具体实现步骤如下:3A)对图像识别得到的任意一个屋顶轮廓坐标集合I,找到其中位置坐标的极大和极小值,从而得到一个包围屋顶的矩形窗口,四个角点的像素坐标分别为(xmin,ymin),(xmax,ymin),(xmax,ymax),(xmin,ymax);3B)在对应的数字表面高程图中,利用GDAL包提供的方法读取四个角点包围的矩形区域点集,记为M;如果屋顶范围内像素点过多,则进行适当的预处理,对原始数据进行降采样;得到新的像素点集M';同时,将对应的多边形轮廓坐标I中每个点的坐标转化为降采样后的近似坐标I’;3C)在多边形I’轮廓范围内,以设定步长,筛选出多个候选点作为初始种子像素,用于搜索屋顶平面:在筛选的种子像素中选择一个像素点P0(x0,y0)作为初始种子,根据初始像素点及其周围四个点P01(x0‑1,y0),P02(x0+1,y0),P03(x0,y0‑1)和P04(x0,y0+1),及像素点对应的高程值z0、z01~z04得到一个平面点集L,采用最小二乘法,拟合得到一个(x,y,z)空间内的初始平面,并计算得到平面方程A0x+B0y+C0z+D0=0;3C‑1):从种子像素P0出发,根据填充算法,在像素点集M'内依次向周围搜索下一个点,搜索到平面方程内的点,则将新点加入平面中重新拟合平面方程式;如当前点为Pj(xj,yj),当前点所在平面方程为Akx+Bky+Ckz+Dk=0,则接下去待搜索的点为Pj周围的四个点为(xj‑1,yj),(xj+1,yj),(xj,yj‑1),(xj,yj+1);依次判断这四个坐标对应点的位置是否在点集M’内,如果是则按步骤3C‑2)进行4个新点是否在当前平面上的判断;3C‑2):检查搜索的新点是否为新的点,即是否已经判断过,有记录,已经有记录,则继续判断下一个点;如没有记录,将该点坐标(xj‑1,yj)带入平面方程Akx+Bky+Ckz+Dk=0,得到该点与平面的高度差为|(Ak(xj‑1)+Bkyj+Dk)/Ck‑zj|,判断高度差是否在阈值允许的高度差范围内;如果在范围中,则将该点加入平面点集L,并重新拟合得到一个新的平面方程Ak+1x+Bk+1y+Ck+1z+Dk+1=0,并且将点(xj‑1,yj)作为当前种子,对周围四个点进行搜索和判断;如果不在范围中,说明该点不在平面内,将此点加入平面外点集CM’Li,记录后,按前一个有效点平面方程继续检查下一点;3C‑3):执行以上的搜索和判断点,直到搜索到该平面点集L的边界,即L内的点都用做种子判断过,且周围找不到新的高程值在平面范围内的点,根据搜索到的最后一点重新拟合的平面方程ALx+BLy+CLz+DL=0即为该平面的最终方程;3C‑4):对平面内的所有经过搜索和判断的点集L,拟合得到一个外包络多边形H’,将多边形H’坐标转换到降采样前的坐标H;根据图像识别得到的轮廓I和识别屋顶平面得到的轮廓H分别得到包围的多边形区域SI和SH,求两个区域交集得到重叠部分区域SIH,并得到其外轮廓,即为修正后的屋顶轮廓;3C‑5):计算重叠部分区域SIH的面积,如果面积小于设定面积阈值,说明初始点选择错误,此时重新选择初始种子,并回到3C‑1)步再次进行屋顶轮廓识别;如果面积大于设定面积阈值,此时再计算重叠部分区域SIH占图像识别得到的屋顶区域SI的比重SIH/SI,如果该值小于设定比重阈值,说明图像识别得到的不只是一个屋顶;从SI中去除SIH区域,继续在剩下的区域中利用DSM图像中的高程信息识别得到屋顶区域并和图像识别区域SI求交集得到SIH2;如此重复,直到识别出的屋顶区域SIH1、SIH2…SIHm总合占SI的比值达到规定的阈值,即认为图像识别区域SI中所有屋顶区域均被识别。...

【技术特征摘要】
1.一种光伏屋顶自动识别算法,其特征在于,具体包括如下步骤:1)数据采集及处理:采集一片实际目标区域的三维地理模型,利用自动处理软件,导出得到完整的正射图和数字表面高程图,正射图中每个像素点包含区域的RGB信息,数字表面高程图中每个像素点包含对应的高度信息,两幅图片的大小、分辨率以及左上角的地理位置都相同;找到每个像素点Pi(xi,yi)对应的RGB值(ri,gi,bi)和高程值zi,每个像素点的位置和对应实际的地理坐标位置;相邻像素点的地理位置之间有一个固定的采样距离d米;2)屋顶轮廓定位:基于目标区域的正射RGB图像信息,利用训练好的图像识别框架,识别得到每个屋顶的大致范围;并通过求凸包络算法,得到每个屋顶的大致轮廓坐标集合Im,m为屋顶的个数;3)屋顶信息识别:对图像识别的每个屋顶的轮廓内,采用最小二乘拟合和种子填充算法,找到屋顶平面内的点,拟合得到一个平面,求出对应的平面方程,并修正屋顶轮廓范围:具体实现步骤如下:3A)对图像识别得到的任意一个屋顶轮廓坐标集合I,找到其中位置坐标的极大和极小值,从而得到一个包围屋顶的矩形窗口,四个角点的像素坐标分别为(xmin,ymin),(xmax,ymin),(xmax,ymax),(xmin,ymax);3B)在对应的数字表面高程图中,利用GDAL包提供的方法读取四个角点包围的矩形区域点集,记为M;如果屋顶范围内像素点过多,则进行适当的预处理,对原始数据进行降采样;得到新的像素点集M';同时,将对应的多边形轮廓坐标I中每个点的坐标转化为降采样后的近似坐标I’;3C)在多边形I’轮廓范围内,以设定步长,筛选出多个候选点作为初始种子像素,用于搜索屋顶平面:在筛选的种子像素中选择一个像素点P0(x0,y0)作为初始种子,根据初始像素点及其周围四个点P01(x0-1,y0),P02(x0+1,y0),P03(x0,y0-1)和P04(x0,y0+1),及像素点对应的高程值z0、z01~z04得到一个平面点集L,采用最小二乘法,拟合得到一个(x,y,z)空间内的初始平面,并计算得到平面方程A0x+B0y+C0z+D0=0;3C-1):从种子像素P0出发,根据填充算法,在像素点集M'内依次向周围搜索下一个点,搜索到平面方程内的点,则将新点加入平面中重新拟合平面方程式;如当前点为Pj(xj,yj),当前点所在平面方程为Akx+Bky+Ckz+Dk=0,则接下去待搜索的点为Pj周围的四个点为(xj-1,yj),(xj+1,yj),(xj,yj-1),(xj,yj+1);依次判断这四个坐标对应点的位置是否在点集M’内,如果是则按步骤3C-2)进行4个新点是否在当前平面上的判断;3C-2):检查搜索的新点是否为新的点,即是否已经判断过,有记录,已经有记录,则继续判断下一个点;如没有记录,将该点坐标(xj-1,yj)带入平面方程Akx+Bky+Ckz+Dk=0,得到该点与平面的高度差为|(Ak(xj-1)+Bkyj+Dk)/Ck-zj|,判断高度差是否在阈值允许的高度差范围内;如果在范围中,则将该点加入平面点集L,并重新拟合得到一个新的平面方程Ak+1x+Bk+1y+Ck+1z+Dk+1=0,并且将点(xj-1,yj)作为当前种子,对周围四个点进行搜索和判断;如果不在范围中,说明该点不在平面内,将此点加入平面外点集CM’Li,记录后,按前一个有效点平面方程继续检查下一点;3C-3):执行以上的搜索和判断点,直到搜索到该平面点集L的边界,即L内的点都用做种子判断过,且周围找不到新的高程值在平面范围内的点,根据搜索到的最后一点重新拟合的平面方程ALx+BLy+CLz+DL=0即为该平面的最终方程;3C-4):对平面内...

【专利技术属性】
技术研发人员:胡燚杰郑天民张晨宋强徐宁江秀张勋祥
申请(专利权)人:远景能源南京软件技术有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1