2015-10-27 5 views
25

У меня есть следующий ColorMatrixFilter. Но я хочу использовать его в качестве маски для режима Subtract-Blend, а не использовать его напрямую. Как мне добиться этого?Вычитайте режим смешивания с помощью ColorMatrixFilter в Android?

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 
      ]; 

ответ

0

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

Чтобы получить полную композицию вычитания, сделайте это для каждого пикселя.

EDIT: на самом деле я думаю, что вышеизложенное может быть размытием по Гауссу.

+0

Я не думаю, что у вас есть правильная идея о матрицах. Чтобы узнать больше, проверьте [this] (http://math.stackexchange.com/a/532974) ответ. – RobCo

Смежные вопросы