如何通过逻辑计算直方图中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。
这样的东西怎么样:
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]);