如何将几条靠得很近的直线融合成一条直线?

2024-10-08 19:32:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力完成项目中的一项任务。
我的任务是在无人机拍摄的图像中检测太阳能电池板的边界,以进一步检测太阳能电池板本身。因此,首先,我尝试使用HoughP从图像中绘制所有水平线,条件是斜率~0,这是结果(找到的线显示为红色):

horizontal lines detected using HoughP

正如你所看到的,有几条假线。从这一点开始,我需要过滤掉所有这些伪线,并得到表示这些太阳能电池板边界的唯一线,如下所示:

lines indicate border of solar panel

事实上,我正在阅读一份研究文件,其中告诉我他们使用了分层聚类算法在一定距离内将所有的线紧密地融合在一起d
我了解了这种分层聚类算法,但问题是我不知道如何将这种算法应用于线性线,以及如何实际“融合”几条紧密相连的线成一条线?
谁能给我点化一下吗


Tags: 项目图像算法分层绘制聚类条件边界
1条回答
网友
1楼 · 发布于 2024-10-08 19:32:44

要应用任何聚类算法,需要在要聚类的对象上定义一些距离度量。对于线段,我能想到的最明显的距离是两个线段任意一对点之间的最小距离,即:

def line_distance(line1, line2):
    return min( point_distance(point1, point2) for point1 in line1 for point2 in line2 )

然后,可以对得到的线集应用层次聚类,使用此距离度量和一些阈值距离d合并两条线

不过,我觉得最好在将图像传递给边缘检测器之前对其进行二值化,因为面板及其边框的颜色对比度很强,仅此一点就可以减少许多伪线

相关问题 更多 >

    热门问题