如何按逻辑计算直方图中平均3个最高值?

时间:2012-02-06 22:52:27

标签: c#

不是在C#中而是在思考。

例如我有一个4X4像素的bimtap意味着直方图大小为16。

现在我有10种颜色,从0到9

并且假设一旦位图图像为黑色,所以0颜色上的所有像素都是0,所以我将有16个像素。

关于颜色0的第二个例子我有三个像素颜色1我有一个像素颜色2我有4个像素颜色4两个像素颜色五个三个像素颜色6,7和9每个我有一个像素

现在我如何计算最高的三个值。如果我只是在纸上画它,我就清楚地看到颜色0,2和5是最高的。

但我如何通过算法简单计算呢?

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

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

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

另一件事:

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

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

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

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

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]);