我想使用 GPUImageColorMatrixFilter 实现带通滤波器。基本上,蓝色将等于 floor(blue - (k*red)) 并且红色和绿色最终都为零。我在哪里可以找到说明矩阵的列和行的含义的文档?
我的直觉表明 4x4 矩阵遵循标准的 RGBA 顺序,并通过示例(参见例如GPUImageSepiaFilter)判断它看起来我是对的。
例如,这是身份 GPUMatrix4x4
R G B A
| 1 0 0 0 | red
| 0 1 0 0 | green
| 0 0 1 0 | blue
| 0 0 0 1 | alpha
Run Code Online (Sandbox Code Playgroud)
让我们为每个系数命名
R G B A
| a b c d | red
| e f g h | green
| i j k l | blue
| m n o p | alpha
Run Code Online (Sandbox Code Playgroud)
将矩阵应用于 RGBA 颜色将产生以下 R'G'B'A' 颜色,其中分量计算为
R' = a*R + b*G + c*B + d*A
G' = e*R + f*G + g*B + h*A
B' = i*R + j*G + k*B + l*A
A' = m*R + n*G + o*B + p*A
Run Code Online (Sandbox Code Playgroud)
这只不过是以下矩阵乘法
| a b c d | |R| |R'|
| e f g h | x |G| = |G'|
| i j k l | |B| |B'|
| m n o p | |A| |A'|
Run Code Online (Sandbox Code Playgroud)