按颜色权重选择图像部分上的点

时间:2010-11-19 11:18:59

标签: c# image-processing opencv emgucv

需要在图像上选择指定数量的点(实际上是该图像的一部分)。图像的较暗部分更重要。

最简单的方法是随机选择它们。但即使丢弃使用的点通常也会在某些点与其他点相距太近的情况下完成,特别是在尊重重量时。

也许在选择点之后,应该动态减少重量?没试过。

我注意到原始图像有太多不同的颜色,所以我想要平滑它以切断相似的颜色。然而,转换为灰度还不够 我使用Emgu CV(OpenCV包装器)函数来二值化图像。比我试图计算分水岭但计算区域不是那么容易分开。通常,分水岭是检测较暗地方的非“直观”方法。

简单地说:我想在图像上从较暗的部分开始标记点 - 这些部分应该比打火机更频繁地标记。积分应该分散在一组相似的颜色上,避免在附近堆积。

算法不一定准确。它可以在下一次迭代中给出不同的结果。点数从10到150-200不会很大。

如何计算从较暗区域开始分散在图像上的指定点数?

想象我的意思,请看下面的图片。它包含选定的点(数量~20)。选择大多数较暗的部分。下一次迭代后,这些点不必出现在相同的位置。但我想要的是在较轻的区域上选择点数会更高。

当然,对于不同的图像,跳出黑暗所需的点数会有所不同。

Picture after points selection

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你需要一张图像上的点列表。该列表必须包含来自黑色区域的几个点和来自白色区域的几个点。

一种简单的方法 - 遍历每个像素。将当前像素的值存储在变量's'中,然后:

if(s < 64) // Darker
    if(rand() % 5 == 1)
        // Add to list
else      // White
    if(rand() % 25 == 1)
        // Add to list