Я думаю, что я должен не понимать, как работает Renderscript для применения colormatrix, потому что мои результаты не получаются так, как я ожидаю.Renderscript Colormatrix intrinsic - Помогите мне разобраться
Итак, у меня есть распределение для Renderscript, которое «накладывает» на OpenCV Mat, в основном представляя его как трехмерный массив, полный пикселей, где каждый пиксель имеет значения RGBA (красный, зеленый, синий, альфа).
Так что я хочу, чтобы применить ColorMatrix к каждому пикселю, как это:
Vector R times Matrix 0.152286f, 1.052583f, -0.204868f, 0f,
G 0.114503f, 0.786281f, 0.099216f, 0f,
B -0.003882f, -0.048116f, 1.051998f, 0f,
A 0.000000f, 0.000000f, 0.000000f, 1f
Так что я ожидаю, чтобы это произошло, что новый вектор R'G'B'A»будет выглядеть следующим образом:
R' = R * 0.152286f + G * 1.052583f + B * -0.204868f + A * 0f
G' = as above
B' = as above
A' = R * 0 + G * 0 + B * 0 + A * 1
Таким образом, новое значение R будет представлять собой комбинацию старых значений RGB, A не влияет на RGB. Такое же поведение для G 'и B'. А всегда будет оставаться прежним.
В кодексе это выглядит следующим образом:
Matrix4f mProtan = new Matrix4f(new float[]{
0.152286f, 1.052583f, -0.204868f, 0f,
0.114503f, 0.786281f, 0.099216f, 0f,
-0.003882f, -0.048116f, 1.051998f, 0f,
0.000f, 0.000f, 0.000f, 1f
});
scriptIntrinsicColorMatrix.setColorMatrix(mProtan);
scriptIntrinsicColorMatrix.forEach(inputAllocation, outputAllocation);
Так что я уже делаю это с OpenCV, и он работает, как ожидалось, но это своего рода медленно, поэтому я хотел бы использовать Renderscript, но мой результат обычно такая странная, например, эта матрица не должна влиять ни на что иное, кроме красного, зеленого и их комбинаций (например, красный цвет становится темным оттенком серого/коричневого цвета, зеленый становится грязно-желтым, а фиолетовый - красным + синим, поэтому красный цвет исчезает и пурпурный становится только синим. Даже белая бумага получает зеленоватый оттенок).
Я также попытался прямой потоковой передачи из канала камеры только через и хранение информации в Bitmaps Renderscript, но результаты в конечном итоге то же самое.
Любая помощь была бы принята с благодарностью! :-)
Вы спасатель! – AllBecomesGood