Я пытался применить лапласианский фильтр в java.
int red = 8 * red - imageOne.getRed(i - 1, j - 1)
- imageOne.getRed(i, j - 1)
- imageOne.getRed(i + 1, j - 1)
- imageOne.getRed(i - 1, j) - imageOne.getRed(i, j)
- imageOne.getRed(i + 1, j)
- imageOne.getRed(i - 1, j + 1)
- imageOne.getRed(i, j + 1)
- imageOne.getRed(i + 1, j + 1);
значения зеленого и синего рассчитываются одинаково.
После вычисления значений RGB есть очень большие значения или отрицательные значения. диапазон [- 255*8 ... 255*8]
Я попытался масштабировать его, используя
red = (int) (red / 16) + 128;
green = (int) (green / 16) + 128;
blue = (int) (blue / 16) + 128;
Я также попытался ограничить его между [0 - 255] следующим кодом
red = Math.min(255, Math.max(0, red));
но изображение по-прежнему не отображается должным образом.
Как правильно обрабатывать значения RGB ???
Спасибо
red = (red + 8 * 255) / 16
и т. д. - person Roger Rowland   schedule 19.11.2013red = -2040
, и вы получите0
с правильным масштабированием и0.5
с вашим масштабированием — они не совпадают, возможно, из-за какой-то целочисленной арифметики. - person Roger Rowland   schedule 19.11.2013