有人能解释一下gpu::meanshiftFiltering和gpu::meanShiftSegmentation之间的区别吗?
文档没有真正的帮助。
也许这是一个不同的问题,但我的目标是提取对象的边界,如果有人能帮我,那就太好了。
TL;DR
mean shift 滤波是为了降低噪声和提高图像质量而设计的,它返回一个"cleaner";的形象。
另一方面,mean shift segmentation将图像分割成颜色大致相同的区域。它返回每个像素到其相应段的映射。
如果你想要对象边界,你应该使用mean shift 分割。
请参阅Comaniciu和Meer的开创性工作 Mean shift: A robust approach to feature space analysis (PAMI 2002),描述了"Mean shift"。过程。
"意味着shift"是一个数值过程,用于搜索通过样本定义的分布的模式("集中点")。用更简单的话来说,在图像处理的上下文中:您可以将图像的所有像素视为RGB-XY空间中的样本。一个"red"图像中的区域可以看作是一个"高概率"区域。在该区域的XY坐标中具有红色的像素。因此,您可以将图像视为定义该空间中的分布的RGB-XY样本的集合。
"mean-shift"程序设计用于在RGB-XY空间中以高概率("模式")寻找区域。=局部最大分布点)。
为什么这个透视图有用?你可能会问自己。嗯,考虑一个有噪声的图像,噪声使像素远离RGB-XY空间中原始分布的模式。如果你能"转移"每个像素从其当前的(有噪声的)颜色走向一个模式的分布,就有可能降低噪声。
因此,mean shift 滤波会改变像素的颜色,使其与附近最主要的颜色相似。
更进一步,你可以问自己"每个像素属于哪一种模式?"因此,如果您有m
模式(在RGB-XY空间中),您可以将每个像素分配给这些m
模式之一,有效地将图像分割为m
段。这个过程叫做mean shift segmentation