可能重复:
如何在航拍图像中找到网球场
我正在尝试检测航拍图像中存在的网球场..
我有以下图像:
我尝试了彩色图像分割,但没有成功,结果很糟糕:
我应该应用什么技术请建议我认为可以使用霍夫变换或分水岭但是分水岭导致过度分割并且我得到的结果并不令人满意
尝试使用自适应阈值:
我尝试过的其他一些事情 Connected components :
输出:
可能重复:
如何在航拍图像中找到网球场
我正在尝试检测航拍图像中存在的网球场..
我有以下图像:
我尝试了彩色图像分割,但没有成功,结果很糟糕:
我应该应用什么技术请建议我认为可以使用霍夫变换或分水岭但是分水岭导致过度分割并且我得到的结果并不令人满意
尝试使用自适应阈值:
我尝试过的其他一些事情 Connected components :
输出:
由于您正在尝试发现图像中的结构,因此最好在灰度中工作。
这是一个非常好的案例,球场看起来是一个漂亮的矩形,但总的来说,球场可能有不同的大小和方向。此外,绿色背景上的白线不是一般规则,例如Roland Garos。
话虽如此,您可以尝试对图像进行阈值处理(您可能必须为此使用自适应阈值处理)以获得如下结果:
然后,您可以通过图像创建4 或 8 个连接的像素链
由于您正在寻找线条,因此您可以获取每个链条并为其安装一条线。
此时,图像中的“有趣像素”已转换为一组线模型,其中一些将相交。您现在可以应用简单的规则来发现哪些线组相交(这是一个很好的示例)。
要发现组成网球场的相交线集,您将搜索(这是一个示例)“一组 9 条线,其中 4 条以直角相交,另外两条平行于以 1/8 相交的长线场地宽度的一半,另外两个平行于短边,距离球场起点约 1/5,第三个位于球场中间,与两个较短的边相交”......换句话说,您必须将网球场表示为一组具有相对位置的相交线(这样您的表达就不受绝对尺寸的影响)。
对于上述技术的一个很好的应用,你可以看看这篇论文,它概述了图像中镜头代码的识别。
有关这些技术的理论背景和更多信息,您可以参考优秀的“使用 Matlab 进行数字图像处理” ,特别是与您的问题最相关的第 10-13 章
我希望这有帮助。
你想检测(找出它们的存在)还是分割它们(找出它们的精确轮廓)?这是两个截然不同的问题。
如果您只想进行检测,我会考虑使用 SIFT 等图像特征。您可以使用 OpenCV 轻松尝试这些方法。
分割是一个完全不同的话题。假设您已经使用 SIFT 粗略地检测到球场,您可以使用简单的基于配准的方法来更准确地找出球场所在的位置(通过将模板网球场图像配准到您的图像)。然后你可以使用任何局部细化技术来改进你的分割。
我认为我会至少分两个步骤来做到这一点。
首先,寻找与网球场长度相匹配的线组。
其次,在这些线的边界内,寻找横跨球场宽度的线。
如果您愿意,您可以假设所有网球场在绿色背景上都有白线,但我不确定这是一个好的假设。
编辑
实际上,我建议 3 个步骤。第一个是对图像进行二值化,我认为我从未见过在浅色背景上有暗线的网球场,因此您可以将问题限制为寻找白线。
我认为霍夫变换是这里的方法,如果你可以假设球场总是有相同类型的线标记。首先在图像上运行边缘检测器。然后运行霍夫变换来检测直线。然后看看哪些线相互平行或垂直,看看哪些线形成了正确纵横比的矩形。为此,您可能希望通过图像中的空间接近度对平行线和垂直线进行排序。然后检查矩形内的适当线条。
但是,如果相机没有直视下方,您可能会遇到问题,因为那样您将无法获得正确的角度。