谁能解释一下 gpu::meanshiftFiltering 之间的区别吗?和 gpu::meanShiftSegmentation ?
文档并没有真正帮助。
也许这是一个不同的问题,但我的目标是提取对象的边界,如果有人能帮助我,那就太好了。
最佳答案
长话短说
mean shift 过滤旨在降低噪声并提高图像质量,它返回“更干净”的图像。
另一方面,均值偏移分割将图像分割成颜色大致相同的区域。它返回每个像素与其对应段的映射。
如果你想要对象边界,你应该使用均值偏移分割。
请参阅Comaniciu 和Meer 的开创性工作Mean shift: A robust approach toward feature space analysis (PAMI 2002) 描述了“均值偏移”程序。
“均值偏移”是一种数字程序,旨在搜索通过样本定义的分布模式(“集中点”)。在图像处理的上下文中用更简单的话来说:您可以将图像的所有像素视为 RGB-XY 空间中的样本。图像中的“红色”区域可以被视为在该区域的 XY 坐标中具有红色的像素的“高概率”。
因此,您可以将图像视为定义此空间中分布的 RGB-XY 样本的集合。
“均值偏移”程序旨在以高概率在 RGB-XY 空间中找到区域("mode" = 分布的局部最大点)。
为什么这个观点有用?您可能会问自己。好吧,考虑一个有噪声的图像,噪声使像素远离 RGB-XY 空间中的原始分布模式。如果您可以将每个像素从其当前(嘈杂的)颜色“转移”到一种分布模式,您可能会减少噪声。
因此,均值偏移过滤会改变像素的颜色,使其与附近最主要的颜色相似。
向前迈出一步,您可以问自己“每个像素属于哪一种模式?”。因此,如果您有 m
模式(在 RGB-XY 空间中),您可以将每个像素分配给这些 m
模式之一,从而有效地将图像分割成 m
段。此过程称为均值偏移分割。
关于c++ - OpenCV 中 meanShiftFiltering 和 meanShiftSegmentation 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31429342/