내 결과가 예상대로 나오지 않기 때문에 Renderscript 내재적으로 colormatrix를 적용하는 방법을 오해해야한다고 생각합니다.Renderscript Colormatrix intrinsic - 이해 도와주세요
OpenCV Mat을 "오버레이"하는 Renderscript에 대한 할당량은 기본적으로 모든 픽셀에 RGBA (빨강, 녹색, 파랑, 알파) 값이있는 픽셀로 가득 찬 3 차원 배열로 상상해보십시오.
그래서 나는이 같은 모든 픽셀에 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'에 대해서도 같은 동작입니다. A는 항상 동일하게 유지됩니다. 내 결과가
그래서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을 사용하고 싶습니다,하지만 :
코드 그것은 다음과 같습니다 일반적으로 이상한 것입니다. 예를 들어,이 매트릭스는 빨강, 녹색 및 그 조합 이외의 다른 요소에 영향을 주어서는 안됩니다 (예 : 빨강은 회색/갈색의 어두운 음영이되고 녹색은 진흙처럼 황색이되고 보라색은 빨강 + 파랑이됩니다. 보라색 만 파란색이되고 심지어 흰 종이는 녹색을 띄게됩니다).
는 또한 Renderscript 만 비트 맵의 정보를 저장 통해 카메라로부터 직접 공급 스트리밍했지만, 그 결과는 동일 끝낸다.
도움이 될 것입니다. :-)
당신은 생명의 은인이다! – AllBecomesGood