如何通过逻辑计算直方图中3个最高值的平均值

本文关键字:3个 最高值 平均值 直方图 何通过 计算 | 更新日期: 2023-09-27 18:22:40

不是在C#中,而是通过思考。

例如,我有一个bimtap,它是4X4像素,这意味着直方图大小将是16。

现在我有例如从0到9 的10种颜色

比方说,一旦位图图像是黑色的,那么0颜色上的所有像素都是0,那么我就有16个像素。

关于颜色0的第二个例子,我在颜色1上有三个像素,在颜色2上有一个像素。我在颜色4上有四个像素。在颜色5上有两个像素。

现在我该如何计算最高的三个值。如果我在纸上画的时候看一下,很明显,0、2和5是最高的三种颜色。

但我如何用算法简单地计算它呢?

或者,如果所有像素都是0色,那么计算会如何?如果有三个最高值,结果会是什么?

其思想是使用位图4x4示例的直方图来计算三个最高值。

由于直方图已经可以按正确的顺序固定它们,因此使用它来计算三个最高值应该很容易。

另一件事:

如果我做对了。直方图大小总是位图大小的宽度*高度?

例如,如果我有4x4像素的位图,那么直方图大小将为16。

如果是5x6,则直方图大小为30。

如何通过逻辑计算直方图中3个最高值的平均值

这样的东西怎么样:

int[] Histogram = new int[10];
foreach(pixel p in bitmap)
{
    histogram[p.color]++;
}
Array.Sort(Histogram);
Console.WriteLine(Histogram[0]);
Console.WriteLine(Histogram[1]);
Console.WriteLine(Histogram[2]);