public ColorHistogram(int[] pixelsOrig, bool modify)
{
int N = pixelsOrig.Length;
//int[] pixelsOrig = (int[])pixelsOrig.Clone();// new int[N];
Array.Sort(pixelsOrig);
// count unique colors:
int k = -1; // current color index
int curColor = -1;
for (int i = 0; i < pixelsOrig.Length; i++)
{
if (pixelsOrig[i] != curColor)
{
k++;
curColor = pixelsOrig[i];
}
}
int nColors = k + 1;
// tabulate and count unique colors:
colorArray = new int[nColors];
countArray = new int[nColors];
k = -1; // current color index
curColor = -1;
for (int i = 0; i < pixelsOrig.Length; i++)
{
if (pixelsOrig[i] != curColor)
{ // new color
k++;
curColor = pixelsOrig[i];
colorArray[k] = curColor;
countArray[k] = 1;
}
else
{
countArray[k]++;
}
}
pixelsOrig = null;
GC.Collect();
}