У меня есть следующий ColorMatrixFilter. Но я хочу использовать его как маску для режима Subtract-Blend, а не использовать его напрямую. Как мне добиться этого?
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 ];
Я не эксперт в компьютерной графике, но я предполагаю, что вы хотите итерации через каждый пиксель изображения, который хотите смешать, colorMatrix
свою colorMatrix
на каждом пикселе, colorMatrix
среднее значение, используя окружающие пиксели, с colorMatrix
ваша матрица контактирует, Затем примените это среднее значение к вашему пикселю. Очевидно, вам нужно будет обработать крайние пиксели.
Пример: предположим, что у вас есть 5×4 изображение с пиксельными значениями
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
Чтобы получить полную композицию вычитания, сделайте это для каждого пикселя.
EDIT: на самом деле я думаю, что вышеизложенное может быть гауссовским размытием.