Я действительно смущен этой техникой. Я знаю, что гистограмма - это частота для каждого значения (я работаю над изображениями на сером фоне), и я произвел способ сделать это:Точечная обработка изображения - выравнивание гистограммы (обработка)
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?
Кроме того, еще одна вещь, которую я смущает, заключается в том, что даже после нормализации гистограммы, как я смогу воссоздать изображение со значениями пикселей с расширением?