Вычитание режима наложения с помощью ColorMatrixFilter в Android?
Я столкнулся с проблемой при работе с ColorMatrixFilter. У меня есть следующий ColorMatrix, но я хочу использовать его в качестве маски для режима смешивания Subtract, а не применять его напрямую. Как можно это реализовать?
Вот мой ColorMatrix:
colorMatrix[
0.393, 0.7689999, 0.18899999, 0, 0,
0.349, 0.6859999, 0.16799999, 0, 0,
0.272, 0.5339999, 0.13099999, 0, 0,
0, 0, 0, 1, 0
];
Буду признателен за любые советы или примеры кода!
1 ответ(ов)
Не являюсь экспертом в области компьютерной графики, но, предположительно, вам нужно пройти через каждый пиксель изображения, которое вы хотите смешать, центрировать свою colorMatrix
на каждом пикселе, рассчитать среднее значение, используя окружающие пиксели, с которыми соприкасается ваша матрица, а затем применить это среднее к вашему пикселю. Очевидно, что вам нужно будет как-то обработать крайние пиксели.
Пример: предположим, у вас есть изображение 5x4 с пиксельными значениями, как показано ниже:
1 2 3 4 5
1 1000 1000 1000 1000 1000
2 1000 1000 1000 1000 1000
3 1000 1000 1000 1000 1000
4 1000 1000 1000 1000 1000
(1) Берем пиксель на позиции (3,3)
и применяем к нему вашу матрицу преобразования - т.е. умножаем пиксель изображения (i,j)
на позицию матрицы (i,j)
. В результате получаем:
1 2 3 4 5
1 393 769 189 0 0
2 349 686 168 0 0
3 272 534 131 0 0
4 0 0 0 1000 0
(2) Теперь находя среднее значение этого преобразования, т.е. суммируя все числа и деля на 20, мы получаем 224.5 или примерно 225. Таким образом, наше новое преобразованное изображение будет выглядеть следующим образом:
1 2 3 4 5
1 1000 1000 1000 1000 1000
2 1000 1000 1000 1000 1000
3 1000 1000 225 1000 1000
4 1000 1000 1000 1000 1000
Чтобы получить полное смешивание с вычитанием, выполните это для каждого пикселя.
ПРАВКА: на самом деле, мне кажется, что вышеописанное может быть гауссовым размытием.
Ошибка «Необходимо переопределить метод суперкласса» после импорта проекта в Eclipse
Использование контекста в фрагменте
Как заставить Android-устройство вибрировать с разной частотой?
Room - Директория экспорта схемы не указана аннотационному процессору, не удается экспортировать схему
Как сгенерировать уникальный хеш-код для строкового ввода в Android?