【问题标题】:Get all the image pixels with certain pixel values with K-nearest neighbor用 K 近邻获取具有特定像素值的所有图像像素
【发布时间】:2014-12-23 05:03:10
【问题描述】:

我想获取图像中像素值最接近图像中某些像素的所有像素。例如,我有一张图像,它可以看到海洋(深蓝色)、晴朗的天空(浅蓝色)、海滩和房屋。我想找到最接近深蓝色的所有像素,以便将其归类为水。我的问题是天空也被归类为水。有人建议使用K最近邻算法,但是网上很少有使用旧C风格的例子。任何人都可以为我提供使用 OpenCv C++ 的 K-NN 示例吗?

【问题讨论】:

  • 如果您共享有问题的图像,以及得到错误分类的代码......并将您的结果与您认为更好分类的现实目标进行对比,那会更好。跨度>
  • 是什么样的图像?有红外线通道吗?

标签: c++ opencv image-processing


【解决方案1】:

“将其分类为水”和“获取图像中像素值最接近图像中某些像素的所有像素”不是同一个任务。颜色属性不足以进行您描述的分类。在水和天空中,您将始终有许多相同颜色的点。所以你必须使用更详细的分析。例如,如果您知道您的对象是自连接的,您可以使用类似水碎片的东西来填充该区域,并忽略天空中与水颜色相同的遥远且未连接的区域(假设您将成功地通过边缘检测器地平线检测到 -分割水和天空的线)。

您还可以使用有关要选择的对象的更多信息,例如结构:计算其熵等。然后您还可以在多维空间中使用 K-最近邻算法,其中第 3 维是颜色,第 4 维是熵等。但是您也可以使用简单的欧几里德度量简单地检查每个图像像素是否位于选定像素区域的 epsilon 邻域(我的意思是颜色熵 4D 空间,颜色的 3 维 + 熵的 1 维)——它非常快并且可以通过 GPU 加速。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 2014-02-26
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2019-10-09
    • 2010-11-28
    • 1970-01-01
    相关资源
    最近更新 更多