2017-03-07 136 views
0

我有一个嘉洛斯使用HTML画布来过滤图像:ImageMagick的转换彩色矩阵

matrix = [ 
         0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123, 
         0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591, 
         0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296, 
         0, 0, 0, 1, 0 
     ] 

使用相同的矩阵我尝试使用ImageMagick转换工具来过滤图像。 如果我使用3x3矩阵都很好,但是使用这个矩阵是行不通的。请帮助

命令在命令行:

convert test.jpg -color-matrix 
    "0.5997023498159715 0.34553243048391263 -0.2708298674538042 0  
    47.43192855600873 -0.037703249837783157 0.8609577587992641 
    0.15059552388459913 0 -36.96841498319127 0.24113635128153335 
    -0.07441037908422492 0.44972182064877153 0 -7.562075277591283 0 0 0 1 0" 
test2.jpg 
+0

如果您明智地设置了问题的格式并解释您正在尝试做什么,那么您可能会得到更好的答复!它看起来像一个20像素的矩阵,对我来说看起来不是很方便?鉴于这些组件是红色,绿色,蓝色,黑色,阿尔法和一个常量,看起来很奇怪的是,您将为没有透明度的JPEG图像乘以Alpha值。请改善你的问题! –

回答

1

您提供的色彩矩阵是无效的。对于RGB图像,没有太多理由超过3x3,因为它们映射到颜色通道。

red' = 1 * red + 0 * green + 0 * blue 
green' = 0 * red + 1 * green + 0 * blue 
blue' = 0 * red + 0 * green + 1 * blue 

ImageMagick可以支持任何形式的自定义矩阵高达6x6。 但是您将负责在通道阵列之前对矩阵大小进行原型设计。 e.g ...

-color-matrix '6x2: 1 0 0 0 0 1 
        0 1 0 0 0 1' 

一些例子(复制数据从你的问题随机)

rose: -color-matrix '0.599 0.3455 -0.2708 
        0  47.4319 -0.0377 
        0.8609 0.1505 0' rose_3x3.png 

rose_3x3.png

convert rose: -color-matrix '4x1: 0 -36.9684 0.2411 -0.07441' rose_4x1.png 

rose_4x1.png

convert rose: -color-matrix '6x6: -7.5620 0  0  0  1  0 
            0.1505 0  -36.9684 0.2411 -0.0744 0.4497 
            -7.5620 0  0  0  1  0 
            0.5997 0.3455 -0.2708 0  47.4319 -0.0377 
            0  1  0  0.1505 0  -36.9684 
            -0.2708 0  47.4319 -0.0377 0.8609 0.1505' rose_6x6.png 

rose_6x6.png