Я пытаюсь реализовать средний фильтр для цветного изображения для приложения для Android. Когда я применяю фильтр на выбранном изображении.Что я делаю неправильно с этим средним фильтром 3x3?
Исходное изображение:
Отфильтрованного изображение
Я пытаюсь реализовать средний фильтр для цветного изображения для приложения для Android. Когда я применяю фильтр на выбранном изображении.Что я делаю неправильно с этим средним фильтром 3x3?
Исходное изображение:
Отфильтрованного изображение
В каждом пикселе вы читаете значение цвета из pixels[index]
, но переменная индекс является индексом для отфильтрованного массива, а не оригинал изображения , Вы должны прочитать данные пикселя по индексу x+filterX+width*(y+filterY)
и будьте осторожны по краям изображения.
Большая проблема заключается в том, что суммы красного, зеленого и синего никогда не будут сброшены на 0, а это означает, что они будут продолжать накапливать значения пикселей. Это должно объяснить обесцвечивание. Добавить:
sumR = 0;
sumG = 0;
sumB = 0;
for (int i = 0; i < RArray.length; i++) {
sumR += RArray[i];
sumG += GArray[i];
sumB += BArray[i];
}
Как вы думаете, что не так с цветовым пространством? – User1204501
Я думал, что обесцвечивание может быть вызвано проблемой цветового пространства, но это, вероятно, другое дело (не сбрасывая суммы для красного, зеленого и синего на ноль) – Joni
программа по какой-то причине сменила часть пикселей [index], а также сброс sumR/G/B. – User1204501
возможно дубликат [ArrayIndexOutOfBoundsException при расчете Mean/Средние значения из массива пикселов] (http://stackoverflow.com/questions/18074678/arrayindexoutofboundsexception-while-calculating-mean-average-values-from -arra) – User1204501