我真的对这种技术感到困惑。我知道直方图是每个值的频率(我正在处理灰度图像)并且我已经制作了一种方法来做到这一点:
int[] populateHist (PImage x)
{
x.loadPixels();
int[] out = new int[256];
for (int i = 0; i < x.pixels.length; i++)
{
out[(int)red(x.pixels[i])]++;
}
return out;
}
以及累积数组的扩展函数:
int[] spreadFunc (int[] a)
{
int[] out = new int[256];
for (int i = 0; i < a.length; i++)
{
if (i == 0)
{
out[i] = (a[i]);
}
else
out[i] = (a[i]) + (a[i-1]);
}
return out;
}
下一步是对这些值进行归一化,那么取最大值并将所有值除以相同的某个数字,这样最大值现在是 255 是否正确?
另外,我感到困惑的另一件事是,即使在对直方图进行归一化之后,我如何才能使用散布像素值重新创建图像?