2017-03-07 134 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