不是在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。
答案 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]);